NESe (pronounced "Nessie") is a NES emulator based on the e6502 emulator, also written in C with a focus on speed and portability for use on embedded platforms, especially ARM.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 line
11KB

  1. static const char chars[] = "\x7f!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`{|}~";
  2. static const int char_w = 10U;
  3. static const int char_h = 10U;
  4. static const int charbit_size = (1U + ((char_w * char_h * 2) + 7) / 8);
  5. static const int char_count = (sizeof(chars) - 1);
  6. static const uint8_t charbits[1794] = {
  7. 0x09, 0x55, 0x55, 0x90, 0xaa, 0x16, 0x59, 0x69, 0x91, 0xa5, 0x16, 0x99, 0x66,
  8. 0x91, 0x5a, 0x16, 0x69, 0x65, 0x91, 0xaa, 0x16, 0x55, 0x55, 0x41, 0x55, 0x15,
  9. 0x07, 0x50, 0x05, 0x00, 0x69, 0x01, 0x94, 0x16, 0x40, 0x6a, 0x01, 0xa4, 0x15,
  10. 0x40, 0x5a, 0x01, 0x55, 0x05, 0x90, 0x56, 0x00, 0x55, 0x01, 0x40, 0x15, 0x00,
  11. 0x08, 0x55, 0x15, 0x90, 0xa6, 0x05, 0x69, 0x5a, 0x90, 0xa6, 0x05, 0x55, 0x55,
  12. 0x40, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13. 0x0a, 0x54, 0x55, 0x40, 0x9a, 0x16, 0xa5, 0x69, 0x91, 0xaa, 0x5a, 0xa5, 0x69,
  14. 0x95, 0xaa, 0x5a, 0xa5, 0x69, 0x45, 0x9a, 0x56, 0x54, 0x55, 0x01, 0x55, 0x15,
  15. 0x09, 0x50, 0x05, 0x40, 0x69, 0x05, 0xa5, 0x6a, 0x91, 0x56, 0x15, 0xa5, 0x5a,
  16. 0x51, 0x95, 0x16, 0xa9, 0x5a, 0x51, 0x69, 0x15, 0x54, 0x55, 0x00, 0x55, 0x01,
  17. 0x0a, 0x00, 0x00, 0x50, 0x45, 0x15, 0x69, 0xa5, 0x95, 0x96, 0x56, 0x55, 0x5a,
  18. 0x45, 0x69, 0x15, 0xa5, 0xa5, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  19. 0x0a, 0x50, 0x15, 0x40, 0xa9, 0x05, 0xa4, 0x69, 0x41, 0x9a, 0x16, 0xa5, 0x5a,
  20. 0x91, 0x96, 0x5a, 0x69, 0x6a, 0x55, 0x6a, 0x5a, 0x54, 0x55, 0x05, 0x55, 0x55,
  21. 0x05, 0x55, 0x00, 0x90, 0x16, 0x00, 0x69, 0x01, 0x90, 0x16, 0x00, 0x55, 0x01,
  22. 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  23. 0x06, 0x54, 0x01, 0x50, 0x5a, 0x00, 0x69, 0x05, 0x90, 0x56, 0x00, 0x69, 0x01,
  24. 0x90, 0x16, 0x00, 0x69, 0x01, 0x50, 0x5a, 0x00, 0x54, 0x05, 0x00, 0x55, 0x00,
  25. 0x06, 0x55, 0x00, 0x90, 0x16, 0x00, 0xa5, 0x05, 0x40, 0x5a, 0x00, 0xa4, 0x05,
  26. 0x40, 0x5a, 0x00, 0xa5, 0x05, 0x90, 0x56, 0x00, 0x55, 0x01, 0x40, 0x05, 0x00,
  27. 0x0a, 0x00, 0x00, 0x40, 0x55, 0x05, 0xa4, 0x69, 0x51, 0xa9, 0x15, 0xa9, 0xaa,
  28. 0x55, 0xa9, 0x55, 0xa4, 0x69, 0x45, 0x55, 0x15, 0x50, 0x55, 0x01, 0x00, 0x00,
  29. 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x50, 0x16, 0x00, 0xa9, 0x05,
  30. 0x50, 0x56, 0x00, 0x54, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  31. 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01,
  32. 0x40, 0x5a, 0x00, 0xa5, 0x05, 0x90, 0x56, 0x00, 0x55, 0x05, 0x40, 0x15, 0x00,
  33. 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0xa9, 0x05,
  34. 0x50, 0x55, 0x00, 0x54, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  35. 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  36. 0x40, 0x15, 0x00, 0xa4, 0x05, 0x40, 0x5a, 0x00, 0x54, 0x05, 0x00, 0x55, 0x00,
  37. 0x07, 0x50, 0x05, 0x00, 0x69, 0x01, 0x94, 0x16, 0x40, 0x5a, 0x01, 0xa4, 0x05,
  38. 0x50, 0x5a, 0x00, 0x69, 0x05, 0x90, 0x16, 0x00, 0x55, 0x01, 0x40, 0x15, 0x00,
  39. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x96, 0x5a, 0x69, 0xa6,
  40. 0x95, 0x5a, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  41. 0x09, 0x50, 0x05, 0x40, 0x69, 0x01, 0xa4, 0x16, 0x40, 0x69, 0x01, 0x90, 0x16,
  42. 0x00, 0x69, 0x01, 0x95, 0x56, 0x90, 0xaa, 0x16, 0x55, 0x55, 0x41, 0x55, 0x15,
  43. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x96, 0x5a, 0x55, 0x6a,
  44. 0x45, 0xa9, 0x55, 0xa5, 0x56, 0x91, 0xaa, 0x5a, 0x55, 0x55, 0x45, 0x55, 0x55,
  45. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x55, 0x55, 0x5a, 0x54, 0x6a,
  46. 0x55, 0x55, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  47. 0x0a, 0x00, 0x55, 0x00, 0x94, 0x16, 0x50, 0x6a, 0x41, 0xa9, 0x16, 0xa5, 0x69,
  48. 0x91, 0x96, 0x16, 0xa9, 0xaa, 0x55, 0x95, 0x56, 0x54, 0x55, 0x05, 0x40, 0x15,
  49. 0x0a, 0x55, 0x55, 0x95, 0xaa, 0x5a, 0x69, 0x55, 0x95, 0xaa, 0x56, 0x55, 0xa5,
  50. 0x55, 0x55, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  51. 0x0a, 0x50, 0x15, 0x40, 0xa9, 0x05, 0xa5, 0x55, 0x90, 0x56, 0x05, 0xa9, 0x6a,
  52. 0x91, 0x56, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  53. 0x0a, 0x55, 0x55, 0x91, 0xaa, 0x5a, 0x55, 0x69, 0x45, 0x95, 0x56, 0x40, 0x5a,
  54. 0x01, 0xa5, 0x15, 0x90, 0x56, 0x00, 0x69, 0x05, 0x50, 0x15, 0x00, 0x54, 0x01,
  55. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x5a, 0x5a, 0xa5, 0x6a,
  56. 0x95, 0x96, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  57. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0xa5, 0xaa,
  58. 0x45, 0x55, 0x5a, 0x50, 0x69, 0x05, 0xa9, 0x55, 0x50, 0x55, 0x01, 0x54, 0x05,
  59. 0x05, 0x00, 0x00, 0x50, 0x05, 0x00, 0x69, 0x01, 0x90, 0x16, 0x00, 0x55, 0x01,
  60. 0x90, 0x16, 0x00, 0x69, 0x01, 0x50, 0x15, 0x00, 0x54, 0x01, 0x00, 0x00, 0x00,
  61. 0x06, 0x00, 0x00, 0x40, 0x15, 0x00, 0xa4, 0x05, 0x40, 0x5a, 0x00, 0x54, 0x05,
  62. 0x40, 0x5a, 0x00, 0xa5, 0x05, 0x90, 0x56, 0x00, 0x55, 0x05, 0x40, 0x15, 0x00,
  63. 0x08, 0x40, 0x15, 0x00, 0xa5, 0x05, 0x94, 0x56, 0x50, 0x5a, 0x05, 0x69, 0x15,
  64. 0x50, 0x5a, 0x00, 0x94, 0x16, 0x00, 0xa5, 0x05, 0x40, 0x55, 0x00, 0x50, 0x05,
  65. 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x90, 0x5a, 0x00, 0x55, 0x05,
  66. 0x90, 0x5a, 0x00, 0x55, 0x05, 0x40, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  67. 0x08, 0x55, 0x00, 0x90, 0x16, 0x00, 0xa5, 0x05, 0x40, 0x69, 0x01, 0x50, 0x5a,
  68. 0x40, 0x69, 0x05, 0xa5, 0x55, 0x90, 0x56, 0x01, 0x55, 0x05, 0x40, 0x15, 0x00,
  69. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x55, 0x55, 0x5a, 0x54, 0x6a,
  70. 0x05, 0x69, 0x55, 0x50, 0x55, 0x01, 0x69, 0x01, 0x50, 0x15, 0x00, 0x54, 0x01,
  71. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0xa9, 0x59, 0x99, 0x99,
  72. 0x95, 0xa9, 0x5a, 0x69, 0x55, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x01, 0x55, 0x15,
  73. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x69, 0xa5,
  74. 0x95, 0xaa, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  75. 0x0a, 0x55, 0x55, 0x90, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0xa9, 0x6a,
  76. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0xaa, 0x56, 0x55, 0x55, 0x45, 0x55, 0x15,
  77. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x55, 0x69, 0x55,
  78. 0x95, 0x56, 0x15, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  79. 0x0a, 0x55, 0x15, 0x90, 0xaa, 0x05, 0x69, 0x69, 0x91, 0x56, 0x5a, 0x69, 0xa5,
  80. 0x95, 0x56, 0x5a, 0x69, 0x69, 0x95, 0xaa, 0x55, 0x55, 0x55, 0x41, 0x55, 0x05,
  81. 0x0a, 0x55, 0x55, 0x91, 0xaa, 0x5a, 0x69, 0x55, 0x95, 0x56, 0x55, 0xa9, 0x6a,
  82. 0x91, 0x56, 0x15, 0x69, 0x55, 0x91, 0xaa, 0x5a, 0x55, 0x55, 0x45, 0x55, 0x55,
  83. 0x0a, 0x55, 0x55, 0x91, 0xaa, 0x5a, 0x69, 0x55, 0x95, 0x56, 0x55, 0xa9, 0x6a,
  84. 0x91, 0x56, 0x15, 0x69, 0x55, 0x91, 0x16, 0x00, 0x55, 0x01, 0x40, 0x15, 0x00,
  85. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x55, 0x69, 0xa9,
  86. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x59, 0x54, 0x55, 0x05, 0x55, 0x55,
  87. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0xa9, 0xaa,
  88. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  89. 0x05, 0x55, 0x00, 0x90, 0x16, 0x00, 0x69, 0x01, 0x90, 0x16, 0x00, 0x69, 0x01,
  90. 0x90, 0x16, 0x00, 0x69, 0x01, 0x90, 0x16, 0x00, 0x55, 0x01, 0x40, 0x15, 0x00,
  91. 0x0a, 0x00, 0x54, 0x01, 0x40, 0x5a, 0x00, 0xa4, 0x05, 0x40, 0x5a, 0x55, 0xa5,
  92. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  93. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0x69, 0x69, 0x95, 0xa6, 0x55, 0xa9, 0x56,
  94. 0x91, 0xa6, 0x05, 0x69, 0x69, 0x91, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  95. 0x09, 0x55, 0x00, 0x90, 0x16, 0x00, 0x69, 0x01, 0x90, 0x16, 0x00, 0x69, 0x01,
  96. 0x90, 0x16, 0x00, 0x69, 0x55, 0x90, 0xaa, 0x16, 0x55, 0x55, 0x41, 0x55, 0x15,
  97. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0xa9, 0xa9, 0x95, 0xaa, 0x5a, 0x69, 0xa6,
  98. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  99. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0xa9, 0xa5, 0x95, 0x6a, 0x5a, 0x69, 0xaa,
  100. 0x95, 0x96, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  101. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x69, 0xa5,
  102. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  103. 0x0a, 0x55, 0x55, 0x90, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x69, 0xa5,
  104. 0x95, 0xaa, 0x56, 0x69, 0x55, 0x95, 0x56, 0x15, 0x55, 0x01, 0x40, 0x15, 0x00,
  105. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x69, 0xa5,
  106. 0x95, 0x56, 0x5a, 0x69, 0x69, 0x55, 0xaa, 0x5a, 0x54, 0x55, 0x05, 0x55, 0x55,
  107. 0x0a, 0x55, 0x55, 0x90, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0xa9, 0x6a,
  108. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  109. 0x0a, 0x54, 0x55, 0x50, 0xaa, 0x16, 0x69, 0xa5, 0x95, 0x56, 0x55, 0xa5, 0x6a,
  110. 0x55, 0x55, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  111. 0x09, 0x55, 0x55, 0x90, 0xaa, 0x16, 0x95, 0x56, 0x01, 0x69, 0x15, 0x90, 0x16,
  112. 0x00, 0x69, 0x01, 0x90, 0x16, 0x00, 0x69, 0x01, 0x50, 0x15, 0x00, 0x54, 0x01,
  113. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x69, 0xa5,
  114. 0x95, 0x56, 0x5a, 0x69, 0xa5, 0x55, 0xaa, 0x56, 0x54, 0x55, 0x05, 0x55, 0x15,
  115. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x69, 0xa5,
  116. 0x55, 0x9a, 0x56, 0x94, 0x5a, 0x05, 0x65, 0x15, 0x40, 0x55, 0x00, 0x50, 0x01,
  117. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0x69, 0xa5, 0x95, 0x56, 0x5a, 0x69, 0xa6,
  118. 0x95, 0xaa, 0x5a, 0xa9, 0xa9, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  119. 0x0a, 0x55, 0x54, 0x91, 0x56, 0x5a, 0xa9, 0xa9, 0x55, 0xaa, 0x56, 0x94, 0x5a,
  120. 0x55, 0xaa, 0x16, 0xa9, 0xa9, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x45, 0x15, 0x55,
  121. 0x09, 0x55, 0x55, 0x90, 0x96, 0x16, 0x69, 0x69, 0x91, 0x96, 0x16, 0xa5, 0x5a,
  122. 0x41, 0x69, 0x15, 0x90, 0x56, 0x00, 0x69, 0x01, 0x50, 0x15, 0x00, 0x54, 0x01,
  123. 0x0a, 0x55, 0x55, 0x91, 0xaa, 0x5a, 0x55, 0xa9, 0x05, 0xa5, 0x56, 0x94, 0x5a,
  124. 0x55, 0x6a, 0x15, 0xa9, 0x55, 0x91, 0xaa, 0x5a, 0x55, 0x55, 0x45, 0x55, 0x55,
  125. 0x06, 0x55, 0x01, 0x90, 0x5a, 0x00, 0x69, 0x05, 0x90, 0x56, 0x00, 0x69, 0x01,
  126. 0x90, 0x16, 0x00, 0x69, 0x01, 0x90, 0x5a, 0x00, 0x55, 0x05, 0x40, 0x55, 0x00,
  127. 0x07, 0x55, 0x00, 0x90, 0x16, 0x00, 0x69, 0x01, 0x50, 0x5a, 0x00, 0xa4, 0x05,
  128. 0x40, 0x5a, 0x00, 0x94, 0x16, 0x00, 0x69, 0x01, 0x50, 0x15, 0x00, 0x54, 0x01,
  129. 0x06, 0x55, 0x01, 0x90, 0x5a, 0x00, 0xa5, 0x05, 0x40, 0x5a, 0x00, 0xa4, 0x05,
  130. 0x40, 0x5a, 0x00, 0xa5, 0x05, 0x90, 0x5a, 0x00, 0x55, 0x05, 0x40, 0x55, 0x00,
  131. 0x08, 0x50, 0x01, 0x40, 0x59, 0x00, 0xa5, 0x16, 0x90, 0xa6, 0x05, 0x59, 0x59,
  132. 0x50, 0x55, 0x05, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  133. 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  134. 0x00, 0x00, 0x00, 0x55, 0x55, 0x91, 0xaa, 0x5a, 0x55, 0x55, 0x45, 0x55, 0x55,
  135. 0x07, 0x55, 0x00, 0x90, 0x16, 0x00, 0xa5, 0x05, 0x40, 0x69, 0x01, 0x50, 0x15,
  136. 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  137. 0x07, 0x50, 0x05, 0x40, 0x69, 0x01, 0xa4, 0x15, 0x50, 0x5a, 0x01, 0x69, 0x05,
  138. 0x50, 0x5a, 0x00, 0xa4, 0x05, 0x40, 0x69, 0x01, 0x50, 0x15, 0x00, 0x54, 0x01,
  139. 0x04, 0x15, 0x00, 0x90, 0x05, 0x00, 0x59, 0x00, 0x90, 0x05, 0x00, 0x59, 0x00,
  140. 0x90, 0x05, 0x00, 0x59, 0x00, 0x90, 0x05, 0x00, 0x55, 0x00, 0x40, 0x05, 0x00,
  141. 0x07, 0x55, 0x00, 0x90, 0x16, 0x00, 0xa5, 0x05, 0x40, 0x5a, 0x00, 0x94, 0x16,
  142. 0x40, 0x5a, 0x01, 0xa5, 0x15, 0x90, 0x56, 0x00, 0x55, 0x05, 0x40, 0x15, 0x00,
  143. 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x51, 0x6a, 0x5a, 0x69, 0x6a,
  144. 0x55, 0x55, 0x55, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  145. };