romdevtools 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/AGENTS.md +21 -14
  2. package/CHANGELOG.md +125 -1
  3. package/README.md +13 -8
  4. package/examples/atari2600/main.asm +1 -1
  5. package/examples/atari2600/templates/default.asm +1 -1
  6. package/examples/atari2600/templates/paddle.asm +59 -47
  7. package/examples/atari7800/main.c +1 -1
  8. package/examples/atari7800/templates/default.c +1 -1
  9. package/examples/atari7800/templates/music_demo.c +1 -1
  10. package/examples/c64/main.c +1 -1
  11. package/examples/c64/templates/platformer.c +2 -2
  12. package/examples/c64/templates/puzzle.c +1 -1
  13. package/examples/c64/templates/racing.c +3 -3
  14. package/examples/c64/templates/shmup.c +6 -5
  15. package/examples/c64/templates/sports.c +4 -4
  16. package/examples/gb/main.asm +1 -1
  17. package/examples/gb/main.c +1 -1
  18. package/examples/gb/templates/puzzle.c +1 -1
  19. package/examples/gb/templates/racing.c +1 -1
  20. package/examples/gb/templates/shmup.c +1 -1
  21. package/examples/gba/templates/gba_hello.c +1 -1
  22. package/examples/gba/templates/maxmod_demo.c +1 -1
  23. package/examples/gba/templates/puzzle.c +17 -3
  24. package/examples/gba/templates/racing.c +16 -2
  25. package/examples/gba/templates/shmup.c +23 -4
  26. package/examples/gba/templates/tonc_hello.c +6 -4
  27. package/examples/gbc/main.asm +1 -1
  28. package/examples/gbc/templates/puzzle.c +1 -1
  29. package/examples/gbc/templates/racing.c +1 -1
  30. package/examples/gbc/templates/shmup.c +1 -1
  31. package/examples/genesis/main.s +1 -1
  32. package/examples/genesis/templates/puzzle.c +1 -1
  33. package/examples/genesis/templates/racing.c +45 -1
  34. package/examples/genesis/templates/shmup.c +12 -3
  35. package/examples/genesis/templates/shmup_2p.c +2 -2
  36. package/examples/genesis/templates/sports.c +39 -0
  37. package/examples/gg/templates/hello_sprite.c +38 -23
  38. package/examples/gg/templates/music_demo.c +11 -8
  39. package/examples/gg/templates/platformer.c +37 -15
  40. package/examples/gg/templates/racing.c +25 -12
  41. package/examples/gg/templates/shmup.c +12 -6
  42. package/examples/gg/templates/sports.c +30 -16
  43. package/examples/gg/templates/tile_engine.c +24 -10
  44. package/examples/lynx/templates/platformer.c +7 -1
  45. package/examples/lynx/templates/puzzle.c +8 -2
  46. package/examples/lynx/templates/racing.c +7 -1
  47. package/examples/lynx/templates/sports.c +7 -1
  48. package/examples/nes/main.c +2 -2
  49. package/examples/nes/space-shooter/nes_runtime.h +1 -1
  50. package/examples/nes/templates/default.c +4 -1
  51. package/examples/nes/templates/racing.c +50 -1
  52. package/examples/pce/main.c +1 -1
  53. package/examples/sms/templates/hello_sprite.c +1 -1
  54. package/examples/sms/templates/music_demo.c +1 -1
  55. package/examples/sms/templates/puzzle.c +1 -1
  56. package/examples/sms/templates/racing.c +1 -1
  57. package/examples/sms/templates/shmup.c +1 -1
  58. package/examples/sms/templates/shmup_2p.c +2 -2
  59. package/examples/snes/main.asm +1 -1
  60. package/examples/snes/templates/c-hello-data.asm +309 -14
  61. package/examples/snes/templates/c-hello.c +13 -2
  62. package/examples/snes/templates/default.c +1 -1
  63. package/examples/snes/templates/hello_sprite-data.asm +300 -2
  64. package/examples/snes/templates/hello_sprite.c +10 -1
  65. package/examples/snes/templates/music_demo-data.asm +300 -2
  66. package/examples/snes/templates/music_demo.c +10 -1
  67. package/examples/snes/templates/platformer-data.asm +300 -2
  68. package/examples/snes/templates/platformer.c +10 -1
  69. package/examples/snes/templates/puzzle-data.asm +300 -2
  70. package/examples/snes/templates/puzzle.c +11 -1
  71. package/examples/snes/templates/racing-data.asm +300 -2
  72. package/examples/snes/templates/racing.c +40 -4
  73. package/examples/snes/templates/shmup-data.asm +299 -6
  74. package/examples/snes/templates/shmup.c +11 -7
  75. package/examples/snes/templates/sports-data.asm +300 -2
  76. package/examples/snes/templates/sports.c +40 -5
  77. package/package.json +1 -1
  78. package/src/cheats/lookup.js +39 -18
  79. package/src/http/routes.js +58 -33
  80. package/src/http/skill-doc.js +10 -9
  81. package/src/http/swagger.js +1 -1
  82. package/src/http/tool-registry.js +72 -5
  83. package/src/mcp/server.js +6 -5
  84. package/src/mcp/state.js +8 -6
  85. package/src/mcp/tool-manifest.js +7 -7
  86. package/src/mcp/tools/cheats.js +4 -3
  87. package/src/mcp/tools/index.js +18 -2
  88. package/src/mcp/tools/playtest.js +48 -35
  89. package/src/mcp/tools/project.js +39 -73
  90. package/src/mcp/tools/rom-id.js +49 -4
  91. package/src/mcp/tools/tile-inspect.js +1 -1
  92. package/src/mcp/tools/toolchain.js +183 -19
  93. package/src/mcp/tools/trace-vram-source.js +3 -3
  94. package/src/mcp/tools/watch-memory.js +27 -46
  95. package/src/observer/livestream.html +41 -5
  96. package/src/platforms/_guides/ROMHACKING_PLAYBOOK.md +5 -5
  97. package/src/platforms/gb/MENTAL_MODEL.md +3 -3
  98. package/src/platforms/gb/TROUBLESHOOTING.md +1 -1
  99. package/src/platforms/gb/UPSTREAM_SOURCES.md +1 -1
  100. package/src/platforms/gb/lib/c/README.md +2 -2
  101. package/src/platforms/gb/lib/c/SDCC_GOTCHAS.md +1 -1
  102. package/src/platforms/gbc/MENTAL_MODEL.md +3 -3
  103. package/src/platforms/gbc/TROUBLESHOOTING.md +5 -5
  104. package/src/platforms/gbc/UPSTREAM_SOURCES.md +2 -2
  105. package/src/platforms/gbc/lib/c/README.md +2 -2
  106. package/src/platforms/gbc/lib/c/SDCC_GOTCHAS.md +1 -1
  107. package/src/platforms/gg/MENTAL_MODEL.md +14 -13
  108. package/src/platforms/gg/lib/c/vdp_init.c +10 -8
  109. package/src/platforms/msx/MENTAL_MODEL.md +1 -1
  110. package/src/platforms/nes/TROUBLESHOOTING.md +1 -1
  111. package/src/platforms/nes/lib/c/nes_runtime.c +28 -6
  112. package/src/platforms/pce/MENTAL_MODEL.md +1 -1
  113. package/src/platforms/pce/lib/c/pce_hw.h +1 -0
  114. package/src/platforms/pce/lib/c/pce_video.c +26 -0
  115. package/src/platforms/sms/MENTAL_MODEL.md +12 -12
  116. package/src/platforms/sms/lib/c/vdp_init.c +10 -8
  117. package/src/platforms/sms/lib/vdp_init.s +1 -1
  118. package/src/playtest/playtest.js +25 -0
  119. package/src/toolchains/cc65/presets/nes/chr-ram-runtime.cfg +1 -1
  120. package/src/toolchains/cc65/presets/nes/chr-ram.cfg +1 -1
  121. package/src/toolchains/cc65/presets/nes/chr-ram.crt0.s +1 -1
  122. package/src/toolchains/genesis-c/README.md +1 -1
  123. package/src/toolchains/sdcc/preflight-lint.js +47 -7
  124. package/src/toolchains/snes-c/snes-c.js +3 -7
@@ -16,10 +16,308 @@
16
16
  .section ".rodata1" superfree
17
17
 
18
18
  tilfont:
19
- .db 0, 0, 0, 0, 0, 0, 0, 0
19
+ ; 8x8 4bpp console font, 96 glyphs (ASCII 0x20-0x7F). consoleInitText
20
+ ; DMAs exactly 3072 bytes (96 tiles x 32 bytes, 4bpp) from here into
21
+ ; VRAM. Glyph index = (char - 0x20); only bitplane 0 carries pixels so
22
+ ; every set pixel uses palette colour 1. Public-domain font8x8 basic.
23
+ ; 0x20 '(space)'
24
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
25
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
26
+ ; 0x21 '!'
27
+ .db $18, $00, $3C, $00, $3C, $00, $18, $00, $18, $00, $00, $00, $18, $00, $00, $00
28
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
29
+ ; 0x22 '"'
30
+ .db $6C, $00, $6C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
31
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
32
+ ; 0x23 '#'
33
+ .db $6C, $00, $6C, $00, $FE, $00, $6C, $00, $FE, $00, $6C, $00, $6C, $00, $00, $00
34
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
35
+ ; 0x24 '$'
36
+ .db $30, $00, $7C, $00, $C0, $00, $78, $00, $0C, $00, $F8, $00, $30, $00, $00, $00
37
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
38
+ ; 0x25 '%'
39
+ .db $00, $00, $C6, $00, $CC, $00, $18, $00, $30, $00, $66, $00, $C6, $00, $00, $00
40
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
41
+ ; 0x26 '&'
42
+ .db $38, $00, $6C, $00, $38, $00, $76, $00, $DC, $00, $CC, $00, $76, $00, $00, $00
43
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
44
+ ; 0x27 '''
45
+ .db $60, $00, $60, $00, $C0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
46
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
47
+ ; 0x28 '('
48
+ .db $18, $00, $30, $00, $60, $00, $60, $00, $60, $00, $30, $00, $18, $00, $00, $00
49
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
50
+ ; 0x29 ')'
51
+ .db $60, $00, $30, $00, $18, $00, $18, $00, $18, $00, $30, $00, $60, $00, $00, $00
52
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
53
+ ; 0x2A '*'
54
+ .db $00, $00, $66, $00, $3C, $00, $FF, $00, $3C, $00, $66, $00, $00, $00, $00, $00
55
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
56
+ ; 0x2B '+'
57
+ .db $00, $00, $30, $00, $30, $00, $FC, $00, $30, $00, $30, $00, $00, $00, $00, $00
58
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
59
+ ; 0x2C ','
60
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $00, $30, $00, $60, $00
61
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
62
+ ; 0x2D '-'
63
+ .db $00, $00, $00, $00, $00, $00, $FC, $00, $00, $00, $00, $00, $00, $00, $00, $00
64
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
65
+ ; 0x2E '.'
66
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $00, $30, $00, $00, $00
67
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
68
+ ; 0x2F '/'
69
+ .db $06, $00, $0C, $00, $18, $00, $30, $00, $60, $00, $C0, $00, $80, $00, $00, $00
70
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
71
+ ; 0x30 '0'
72
+ .db $7C, $00, $C6, $00, $CE, $00, $DE, $00, $F6, $00, $E6, $00, $7C, $00, $00, $00
73
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
74
+ ; 0x31 '1'
75
+ .db $30, $00, $70, $00, $30, $00, $30, $00, $30, $00, $30, $00, $FC, $00, $00, $00
76
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
77
+ ; 0x32 '2'
78
+ .db $78, $00, $CC, $00, $0C, $00, $38, $00, $60, $00, $CC, $00, $FC, $00, $00, $00
79
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
80
+ ; 0x33 '3'
81
+ .db $78, $00, $CC, $00, $0C, $00, $38, $00, $0C, $00, $CC, $00, $78, $00, $00, $00
82
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
83
+ ; 0x34 '4'
84
+ .db $1C, $00, $3C, $00, $6C, $00, $CC, $00, $FE, $00, $0C, $00, $1E, $00, $00, $00
85
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
86
+ ; 0x35 '5'
87
+ .db $FC, $00, $C0, $00, $F8, $00, $0C, $00, $0C, $00, $CC, $00, $78, $00, $00, $00
88
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
89
+ ; 0x36 '6'
90
+ .db $38, $00, $60, $00, $C0, $00, $F8, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
91
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
92
+ ; 0x37 '7'
93
+ .db $FC, $00, $CC, $00, $0C, $00, $18, $00, $30, $00, $30, $00, $30, $00, $00, $00
94
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
95
+ ; 0x38 '8'
96
+ .db $78, $00, $CC, $00, $CC, $00, $78, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
97
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
98
+ ; 0x39 '9'
99
+ .db $78, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $18, $00, $70, $00, $00, $00
100
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
101
+ ; 0x3A ':'
102
+ .db $00, $00, $30, $00, $30, $00, $00, $00, $00, $00, $30, $00, $30, $00, $00, $00
103
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
104
+ ; 0x3B ';'
105
+ .db $00, $00, $30, $00, $30, $00, $00, $00, $00, $00, $30, $00, $30, $00, $60, $00
106
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
107
+ ; 0x3C '<'
108
+ .db $18, $00, $30, $00, $60, $00, $C0, $00, $60, $00, $30, $00, $18, $00, $00, $00
109
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
110
+ ; 0x3D '='
111
+ .db $00, $00, $00, $00, $FC, $00, $00, $00, $00, $00, $FC, $00, $00, $00, $00, $00
112
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
113
+ ; 0x3E '>'
114
+ .db $60, $00, $30, $00, $18, $00, $0C, $00, $18, $00, $30, $00, $60, $00, $00, $00
115
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
116
+ ; 0x3F '?'
117
+ .db $78, $00, $CC, $00, $0C, $00, $18, $00, $30, $00, $00, $00, $30, $00, $00, $00
118
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
119
+ ; 0x40 '@'
120
+ .db $7C, $00, $C6, $00, $DE, $00, $DE, $00, $DE, $00, $C0, $00, $78, $00, $00, $00
121
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
122
+ ; 0x41 'A'
123
+ .db $30, $00, $78, $00, $CC, $00, $CC, $00, $FC, $00, $CC, $00, $CC, $00, $00, $00
124
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
125
+ ; 0x42 'B'
126
+ .db $FC, $00, $66, $00, $66, $00, $7C, $00, $66, $00, $66, $00, $FC, $00, $00, $00
127
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
128
+ ; 0x43 'C'
129
+ .db $3C, $00, $66, $00, $C0, $00, $C0, $00, $C0, $00, $66, $00, $3C, $00, $00, $00
130
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
131
+ ; 0x44 'D'
132
+ .db $F8, $00, $6C, $00, $66, $00, $66, $00, $66, $00, $6C, $00, $F8, $00, $00, $00
133
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
134
+ ; 0x45 'E'
135
+ .db $FE, $00, $62, $00, $68, $00, $78, $00, $68, $00, $62, $00, $FE, $00, $00, $00
136
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
137
+ ; 0x46 'F'
138
+ .db $FE, $00, $62, $00, $68, $00, $78, $00, $68, $00, $60, $00, $F0, $00, $00, $00
139
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
140
+ ; 0x47 'G'
141
+ .db $3C, $00, $66, $00, $C0, $00, $C0, $00, $CE, $00, $66, $00, $3E, $00, $00, $00
142
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
143
+ ; 0x48 'H'
144
+ .db $CC, $00, $CC, $00, $CC, $00, $FC, $00, $CC, $00, $CC, $00, $CC, $00, $00, $00
145
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
146
+ ; 0x49 'I'
147
+ .db $78, $00, $30, $00, $30, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
148
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
149
+ ; 0x4A 'J'
150
+ .db $1E, $00, $0C, $00, $0C, $00, $0C, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
151
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
152
+ ; 0x4B 'K'
153
+ .db $E6, $00, $66, $00, $6C, $00, $78, $00, $6C, $00, $66, $00, $E6, $00, $00, $00
154
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
155
+ ; 0x4C 'L'
156
+ .db $F0, $00, $60, $00, $60, $00, $60, $00, $62, $00, $66, $00, $FE, $00, $00, $00
157
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
158
+ ; 0x4D 'M'
159
+ .db $C6, $00, $EE, $00, $FE, $00, $FE, $00, $D6, $00, $C6, $00, $C6, $00, $00, $00
160
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
161
+ ; 0x4E 'N'
162
+ .db $C6, $00, $E6, $00, $F6, $00, $DE, $00, $CE, $00, $C6, $00, $C6, $00, $00, $00
163
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
164
+ ; 0x4F 'O'
165
+ .db $38, $00, $6C, $00, $C6, $00, $C6, $00, $C6, $00, $6C, $00, $38, $00, $00, $00
166
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
167
+ ; 0x50 'P'
168
+ .db $FC, $00, $66, $00, $66, $00, $7C, $00, $60, $00, $60, $00, $F0, $00, $00, $00
169
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
170
+ ; 0x51 'Q'
171
+ .db $78, $00, $CC, $00, $CC, $00, $CC, $00, $DC, $00, $78, $00, $1C, $00, $00, $00
172
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
173
+ ; 0x52 'R'
174
+ .db $FC, $00, $66, $00, $66, $00, $7C, $00, $6C, $00, $66, $00, $E6, $00, $00, $00
175
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
176
+ ; 0x53 'S'
177
+ .db $78, $00, $CC, $00, $E0, $00, $70, $00, $1C, $00, $CC, $00, $78, $00, $00, $00
178
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
179
+ ; 0x54 'T'
180
+ .db $FC, $00, $B4, $00, $30, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
181
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
182
+ ; 0x55 'U'
183
+ .db $CC, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $FC, $00, $00, $00
184
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
185
+ ; 0x56 'V'
186
+ .db $CC, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $78, $00, $30, $00, $00, $00
187
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
188
+ ; 0x57 'W'
189
+ .db $C6, $00, $C6, $00, $C6, $00, $D6, $00, $FE, $00, $EE, $00, $C6, $00, $00, $00
190
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
191
+ ; 0x58 'X'
192
+ .db $C6, $00, $C6, $00, $6C, $00, $38, $00, $38, $00, $6C, $00, $C6, $00, $00, $00
193
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
194
+ ; 0x59 'Y'
195
+ .db $CC, $00, $CC, $00, $CC, $00, $78, $00, $30, $00, $30, $00, $78, $00, $00, $00
196
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
197
+ ; 0x5A 'Z'
198
+ .db $FE, $00, $C6, $00, $8C, $00, $18, $00, $32, $00, $66, $00, $FE, $00, $00, $00
199
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
200
+ ; 0x5B '['
201
+ .db $78, $00, $60, $00, $60, $00, $60, $00, $60, $00, $60, $00, $78, $00, $00, $00
202
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
203
+ ; 0x5C 'backslash'
204
+ .db $C0, $00, $60, $00, $30, $00, $18, $00, $0C, $00, $06, $00, $02, $00, $00, $00
205
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
206
+ ; 0x5D ']'
207
+ .db $78, $00, $18, $00, $18, $00, $18, $00, $18, $00, $18, $00, $78, $00, $00, $00
208
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
209
+ ; 0x5E '^'
210
+ .db $10, $00, $38, $00, $6C, $00, $C6, $00, $00, $00, $00, $00, $00, $00, $00, $00
211
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
212
+ ; 0x5F '_'
213
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $FF, $00
214
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
215
+ ; 0x60 '`'
216
+ .db $30, $00, $30, $00, $18, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
217
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
218
+ ; 0x61 'a'
219
+ .db $00, $00, $00, $00, $78, $00, $0C, $00, $7C, $00, $CC, $00, $76, $00, $00, $00
220
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
221
+ ; 0x62 'b'
222
+ .db $E0, $00, $60, $00, $60, $00, $7C, $00, $66, $00, $66, $00, $DC, $00, $00, $00
223
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
224
+ ; 0x63 'c'
225
+ .db $00, $00, $00, $00, $78, $00, $CC, $00, $C0, $00, $CC, $00, $78, $00, $00, $00
226
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
227
+ ; 0x64 'd'
228
+ .db $1C, $00, $0C, $00, $0C, $00, $7C, $00, $CC, $00, $CC, $00, $76, $00, $00, $00
229
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
230
+ ; 0x65 'e'
231
+ .db $00, $00, $00, $00, $78, $00, $CC, $00, $FC, $00, $C0, $00, $78, $00, $00, $00
232
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
233
+ ; 0x66 'f'
234
+ .db $38, $00, $6C, $00, $60, $00, $F0, $00, $60, $00, $60, $00, $F0, $00, $00, $00
235
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
236
+ ; 0x67 'g'
237
+ .db $00, $00, $00, $00, $76, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $F8, $00
238
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
239
+ ; 0x68 'h'
240
+ .db $E0, $00, $60, $00, $6C, $00, $76, $00, $66, $00, $66, $00, $E6, $00, $00, $00
241
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
242
+ ; 0x69 'i'
243
+ .db $30, $00, $00, $00, $70, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
244
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
245
+ ; 0x6A 'j'
246
+ .db $0C, $00, $00, $00, $0C, $00, $0C, $00, $0C, $00, $CC, $00, $CC, $00, $78, $00
247
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
248
+ ; 0x6B 'k'
249
+ .db $E0, $00, $60, $00, $66, $00, $6C, $00, $78, $00, $6C, $00, $E6, $00, $00, $00
250
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
251
+ ; 0x6C 'l'
252
+ .db $70, $00, $30, $00, $30, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
253
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
254
+ ; 0x6D 'm'
255
+ .db $00, $00, $00, $00, $CC, $00, $FE, $00, $FE, $00, $D6, $00, $C6, $00, $00, $00
256
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
257
+ ; 0x6E 'n'
258
+ .db $00, $00, $00, $00, $F8, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $00, $00
259
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
260
+ ; 0x6F 'o'
261
+ .db $00, $00, $00, $00, $78, $00, $CC, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
262
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
263
+ ; 0x70 'p'
264
+ .db $00, $00, $00, $00, $DC, $00, $66, $00, $66, $00, $7C, $00, $60, $00, $F0, $00
265
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
266
+ ; 0x71 'q'
267
+ .db $00, $00, $00, $00, $76, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $1E, $00
268
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
269
+ ; 0x72 'r'
270
+ .db $00, $00, $00, $00, $DC, $00, $76, $00, $66, $00, $60, $00, $F0, $00, $00, $00
271
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
272
+ ; 0x73 's'
273
+ .db $00, $00, $00, $00, $7C, $00, $C0, $00, $78, $00, $0C, $00, $F8, $00, $00, $00
274
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
275
+ ; 0x74 't'
276
+ .db $10, $00, $30, $00, $7C, $00, $30, $00, $30, $00, $34, $00, $18, $00, $00, $00
277
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
278
+ ; 0x75 'u'
279
+ .db $00, $00, $00, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $76, $00, $00, $00
280
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
281
+ ; 0x76 'v'
282
+ .db $00, $00, $00, $00, $CC, $00, $CC, $00, $CC, $00, $78, $00, $30, $00, $00, $00
283
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
284
+ ; 0x77 'w'
285
+ .db $00, $00, $00, $00, $C6, $00, $D6, $00, $FE, $00, $FE, $00, $6C, $00, $00, $00
286
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
287
+ ; 0x78 'x'
288
+ .db $00, $00, $00, $00, $C6, $00, $6C, $00, $38, $00, $6C, $00, $C6, $00, $00, $00
289
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
290
+ ; 0x79 'y'
291
+ .db $00, $00, $00, $00, $CC, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $F8, $00
292
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
293
+ ; 0x7A 'z'
294
+ .db $00, $00, $00, $00, $FC, $00, $98, $00, $30, $00, $64, $00, $FC, $00, $00, $00
295
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
296
+ ; 0x7B '{'
297
+ .db $1C, $00, $30, $00, $30, $00, $E0, $00, $30, $00, $30, $00, $1C, $00, $00, $00
298
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
299
+ ; 0x7C '|'
300
+ .db $18, $00, $18, $00, $18, $00, $00, $00, $18, $00, $18, $00, $18, $00, $00, $00
301
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
302
+ ; 0x7D '}'
303
+ .db $E0, $00, $30, $00, $30, $00, $1C, $00, $30, $00, $30, $00, $E0, $00, $00, $00
304
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
305
+ ; 0x7E '~'
306
+ .db $76, $00, $DC, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
307
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
308
+ ; 0x7F 'del'
309
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
310
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
20
311
 
21
312
  palfont:
22
- .db 0, 0, 0, 0, 0, 0, 0, 0
313
+ ; 16-colour text palette (32 bytes, BGR555): colour 0 transparent
314
+ ; (backdrop shows through), colour 1 white (the text colour).
315
+ .db $00, $00 ; 0 transparent
316
+ .db $FF, $7F ; 1 white
317
+ .db $00, $00, $00, $00, $00, $00, $00, $00
318
+ .db $00, $00, $00, $00, $00, $00, $00, $00
319
+ .db $00, $00, $00, $00, $00, $00, $00, $00
320
+ .db $00, $00
23
321
 
24
322
  tilsprite:
25
323
  ; Plane 0 — diamond shape (colour 1 where bits are set)
@@ -25,6 +25,10 @@
25
25
  extern char tilfont, palfont;
26
26
  extern char tilsprite, palsprite;
27
27
 
28
+ /* consoleVblank() copies the dirty text tilemap to VRAM during VBlank.
29
+ * No public prototype in console.h, so declare it; call once per frame. */
30
+ extern void consoleVblank(void);
31
+
28
32
  int main(void) {
29
33
  u16 x = 120, y = 100;
30
34
  u16 prev = 0;
@@ -32,10 +36,14 @@ int main(void) {
32
36
  /* Text setup — same layout as c-hello. */
33
37
  consoleSetTextMapPtr(0x6800);
34
38
  consoleSetTextGfxPtr(0x3000);
35
- consoleSetTextOffset(0x0100);
39
+ consoleSetTextOffset(0x0000); /* tile index = (char-0x20); font is at the BG char base */
36
40
  consoleInitText(0, 16 * 2, &tilfont, &palfont);
37
41
 
38
42
  setMode(BG_MODE1, 0);
43
+ /* consoleInitText DMAs the font but does NOT set the PPU BG base
44
+ * registers — point BG0 at the same font ($3000) + map ($6800). */
45
+ bgSetGfxPtr(0, 0x3000);
46
+ bgSetMapPtr(0, 0x6800, SC_32x32);
39
47
  bgSetDisable(1);
40
48
  bgSetDisable(2);
41
49
 
@@ -71,6 +79,7 @@ int main(void) {
71
79
  oamSetXY(0, x, y);
72
80
  oamUpdate();
73
81
  WaitForVBlank();
82
+ consoleVblank();
74
83
  }
75
84
  return 0;
76
85
  }
@@ -12,9 +12,307 @@
12
12
  .section ".rodata1" superfree
13
13
 
14
14
  tilfont:
15
- .db 0, 0, 0, 0, 0, 0, 0, 0
15
+ ; 8x8 4bpp console font, 96 glyphs (ASCII 0x20-0x7F). consoleInitText
16
+ ; DMAs exactly 3072 bytes (96 tiles x 32 bytes, 4bpp) from here into
17
+ ; VRAM. Glyph index = (char - 0x20); only bitplane 0 carries pixels so
18
+ ; every set pixel uses palette colour 1. Public-domain font8x8 basic.
19
+ ; 0x20 '(space)'
20
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
21
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
22
+ ; 0x21 '!'
23
+ .db $18, $00, $3C, $00, $3C, $00, $18, $00, $18, $00, $00, $00, $18, $00, $00, $00
24
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
25
+ ; 0x22 '"'
26
+ .db $6C, $00, $6C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
27
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
28
+ ; 0x23 '#'
29
+ .db $6C, $00, $6C, $00, $FE, $00, $6C, $00, $FE, $00, $6C, $00, $6C, $00, $00, $00
30
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
31
+ ; 0x24 '$'
32
+ .db $30, $00, $7C, $00, $C0, $00, $78, $00, $0C, $00, $F8, $00, $30, $00, $00, $00
33
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
34
+ ; 0x25 '%'
35
+ .db $00, $00, $C6, $00, $CC, $00, $18, $00, $30, $00, $66, $00, $C6, $00, $00, $00
36
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
37
+ ; 0x26 '&'
38
+ .db $38, $00, $6C, $00, $38, $00, $76, $00, $DC, $00, $CC, $00, $76, $00, $00, $00
39
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
40
+ ; 0x27 '''
41
+ .db $60, $00, $60, $00, $C0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
42
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
43
+ ; 0x28 '('
44
+ .db $18, $00, $30, $00, $60, $00, $60, $00, $60, $00, $30, $00, $18, $00, $00, $00
45
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
46
+ ; 0x29 ')'
47
+ .db $60, $00, $30, $00, $18, $00, $18, $00, $18, $00, $30, $00, $60, $00, $00, $00
48
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
49
+ ; 0x2A '*'
50
+ .db $00, $00, $66, $00, $3C, $00, $FF, $00, $3C, $00, $66, $00, $00, $00, $00, $00
51
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
52
+ ; 0x2B '+'
53
+ .db $00, $00, $30, $00, $30, $00, $FC, $00, $30, $00, $30, $00, $00, $00, $00, $00
54
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
55
+ ; 0x2C ','
56
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $00, $30, $00, $60, $00
57
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
58
+ ; 0x2D '-'
59
+ .db $00, $00, $00, $00, $00, $00, $FC, $00, $00, $00, $00, $00, $00, $00, $00, $00
60
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
61
+ ; 0x2E '.'
62
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $00, $30, $00, $00, $00
63
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
64
+ ; 0x2F '/'
65
+ .db $06, $00, $0C, $00, $18, $00, $30, $00, $60, $00, $C0, $00, $80, $00, $00, $00
66
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
67
+ ; 0x30 '0'
68
+ .db $7C, $00, $C6, $00, $CE, $00, $DE, $00, $F6, $00, $E6, $00, $7C, $00, $00, $00
69
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
70
+ ; 0x31 '1'
71
+ .db $30, $00, $70, $00, $30, $00, $30, $00, $30, $00, $30, $00, $FC, $00, $00, $00
72
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
73
+ ; 0x32 '2'
74
+ .db $78, $00, $CC, $00, $0C, $00, $38, $00, $60, $00, $CC, $00, $FC, $00, $00, $00
75
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
76
+ ; 0x33 '3'
77
+ .db $78, $00, $CC, $00, $0C, $00, $38, $00, $0C, $00, $CC, $00, $78, $00, $00, $00
78
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
79
+ ; 0x34 '4'
80
+ .db $1C, $00, $3C, $00, $6C, $00, $CC, $00, $FE, $00, $0C, $00, $1E, $00, $00, $00
81
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
82
+ ; 0x35 '5'
83
+ .db $FC, $00, $C0, $00, $F8, $00, $0C, $00, $0C, $00, $CC, $00, $78, $00, $00, $00
84
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
85
+ ; 0x36 '6'
86
+ .db $38, $00, $60, $00, $C0, $00, $F8, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
87
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
88
+ ; 0x37 '7'
89
+ .db $FC, $00, $CC, $00, $0C, $00, $18, $00, $30, $00, $30, $00, $30, $00, $00, $00
90
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
91
+ ; 0x38 '8'
92
+ .db $78, $00, $CC, $00, $CC, $00, $78, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
93
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
94
+ ; 0x39 '9'
95
+ .db $78, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $18, $00, $70, $00, $00, $00
96
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
97
+ ; 0x3A ':'
98
+ .db $00, $00, $30, $00, $30, $00, $00, $00, $00, $00, $30, $00, $30, $00, $00, $00
99
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
100
+ ; 0x3B ';'
101
+ .db $00, $00, $30, $00, $30, $00, $00, $00, $00, $00, $30, $00, $30, $00, $60, $00
102
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
103
+ ; 0x3C '<'
104
+ .db $18, $00, $30, $00, $60, $00, $C0, $00, $60, $00, $30, $00, $18, $00, $00, $00
105
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
106
+ ; 0x3D '='
107
+ .db $00, $00, $00, $00, $FC, $00, $00, $00, $00, $00, $FC, $00, $00, $00, $00, $00
108
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
109
+ ; 0x3E '>'
110
+ .db $60, $00, $30, $00, $18, $00, $0C, $00, $18, $00, $30, $00, $60, $00, $00, $00
111
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
112
+ ; 0x3F '?'
113
+ .db $78, $00, $CC, $00, $0C, $00, $18, $00, $30, $00, $00, $00, $30, $00, $00, $00
114
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
115
+ ; 0x40 '@'
116
+ .db $7C, $00, $C6, $00, $DE, $00, $DE, $00, $DE, $00, $C0, $00, $78, $00, $00, $00
117
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
118
+ ; 0x41 'A'
119
+ .db $30, $00, $78, $00, $CC, $00, $CC, $00, $FC, $00, $CC, $00, $CC, $00, $00, $00
120
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
121
+ ; 0x42 'B'
122
+ .db $FC, $00, $66, $00, $66, $00, $7C, $00, $66, $00, $66, $00, $FC, $00, $00, $00
123
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
124
+ ; 0x43 'C'
125
+ .db $3C, $00, $66, $00, $C0, $00, $C0, $00, $C0, $00, $66, $00, $3C, $00, $00, $00
126
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
127
+ ; 0x44 'D'
128
+ .db $F8, $00, $6C, $00, $66, $00, $66, $00, $66, $00, $6C, $00, $F8, $00, $00, $00
129
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
130
+ ; 0x45 'E'
131
+ .db $FE, $00, $62, $00, $68, $00, $78, $00, $68, $00, $62, $00, $FE, $00, $00, $00
132
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
133
+ ; 0x46 'F'
134
+ .db $FE, $00, $62, $00, $68, $00, $78, $00, $68, $00, $60, $00, $F0, $00, $00, $00
135
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
136
+ ; 0x47 'G'
137
+ .db $3C, $00, $66, $00, $C0, $00, $C0, $00, $CE, $00, $66, $00, $3E, $00, $00, $00
138
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
139
+ ; 0x48 'H'
140
+ .db $CC, $00, $CC, $00, $CC, $00, $FC, $00, $CC, $00, $CC, $00, $CC, $00, $00, $00
141
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
142
+ ; 0x49 'I'
143
+ .db $78, $00, $30, $00, $30, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
144
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
145
+ ; 0x4A 'J'
146
+ .db $1E, $00, $0C, $00, $0C, $00, $0C, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
147
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
148
+ ; 0x4B 'K'
149
+ .db $E6, $00, $66, $00, $6C, $00, $78, $00, $6C, $00, $66, $00, $E6, $00, $00, $00
150
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
151
+ ; 0x4C 'L'
152
+ .db $F0, $00, $60, $00, $60, $00, $60, $00, $62, $00, $66, $00, $FE, $00, $00, $00
153
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
154
+ ; 0x4D 'M'
155
+ .db $C6, $00, $EE, $00, $FE, $00, $FE, $00, $D6, $00, $C6, $00, $C6, $00, $00, $00
156
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
157
+ ; 0x4E 'N'
158
+ .db $C6, $00, $E6, $00, $F6, $00, $DE, $00, $CE, $00, $C6, $00, $C6, $00, $00, $00
159
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
160
+ ; 0x4F 'O'
161
+ .db $38, $00, $6C, $00, $C6, $00, $C6, $00, $C6, $00, $6C, $00, $38, $00, $00, $00
162
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
163
+ ; 0x50 'P'
164
+ .db $FC, $00, $66, $00, $66, $00, $7C, $00, $60, $00, $60, $00, $F0, $00, $00, $00
165
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
166
+ ; 0x51 'Q'
167
+ .db $78, $00, $CC, $00, $CC, $00, $CC, $00, $DC, $00, $78, $00, $1C, $00, $00, $00
168
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
169
+ ; 0x52 'R'
170
+ .db $FC, $00, $66, $00, $66, $00, $7C, $00, $6C, $00, $66, $00, $E6, $00, $00, $00
171
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
172
+ ; 0x53 'S'
173
+ .db $78, $00, $CC, $00, $E0, $00, $70, $00, $1C, $00, $CC, $00, $78, $00, $00, $00
174
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
175
+ ; 0x54 'T'
176
+ .db $FC, $00, $B4, $00, $30, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
177
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
178
+ ; 0x55 'U'
179
+ .db $CC, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $FC, $00, $00, $00
180
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
181
+ ; 0x56 'V'
182
+ .db $CC, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $78, $00, $30, $00, $00, $00
183
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
184
+ ; 0x57 'W'
185
+ .db $C6, $00, $C6, $00, $C6, $00, $D6, $00, $FE, $00, $EE, $00, $C6, $00, $00, $00
186
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
187
+ ; 0x58 'X'
188
+ .db $C6, $00, $C6, $00, $6C, $00, $38, $00, $38, $00, $6C, $00, $C6, $00, $00, $00
189
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
190
+ ; 0x59 'Y'
191
+ .db $CC, $00, $CC, $00, $CC, $00, $78, $00, $30, $00, $30, $00, $78, $00, $00, $00
192
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
193
+ ; 0x5A 'Z'
194
+ .db $FE, $00, $C6, $00, $8C, $00, $18, $00, $32, $00, $66, $00, $FE, $00, $00, $00
195
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
196
+ ; 0x5B '['
197
+ .db $78, $00, $60, $00, $60, $00, $60, $00, $60, $00, $60, $00, $78, $00, $00, $00
198
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
199
+ ; 0x5C 'backslash'
200
+ .db $C0, $00, $60, $00, $30, $00, $18, $00, $0C, $00, $06, $00, $02, $00, $00, $00
201
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
202
+ ; 0x5D ']'
203
+ .db $78, $00, $18, $00, $18, $00, $18, $00, $18, $00, $18, $00, $78, $00, $00, $00
204
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
205
+ ; 0x5E '^'
206
+ .db $10, $00, $38, $00, $6C, $00, $C6, $00, $00, $00, $00, $00, $00, $00, $00, $00
207
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
208
+ ; 0x5F '_'
209
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $FF, $00
210
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
211
+ ; 0x60 '`'
212
+ .db $30, $00, $30, $00, $18, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
213
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
214
+ ; 0x61 'a'
215
+ .db $00, $00, $00, $00, $78, $00, $0C, $00, $7C, $00, $CC, $00, $76, $00, $00, $00
216
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
217
+ ; 0x62 'b'
218
+ .db $E0, $00, $60, $00, $60, $00, $7C, $00, $66, $00, $66, $00, $DC, $00, $00, $00
219
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
220
+ ; 0x63 'c'
221
+ .db $00, $00, $00, $00, $78, $00, $CC, $00, $C0, $00, $CC, $00, $78, $00, $00, $00
222
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
223
+ ; 0x64 'd'
224
+ .db $1C, $00, $0C, $00, $0C, $00, $7C, $00, $CC, $00, $CC, $00, $76, $00, $00, $00
225
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
226
+ ; 0x65 'e'
227
+ .db $00, $00, $00, $00, $78, $00, $CC, $00, $FC, $00, $C0, $00, $78, $00, $00, $00
228
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
229
+ ; 0x66 'f'
230
+ .db $38, $00, $6C, $00, $60, $00, $F0, $00, $60, $00, $60, $00, $F0, $00, $00, $00
231
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
232
+ ; 0x67 'g'
233
+ .db $00, $00, $00, $00, $76, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $F8, $00
234
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
235
+ ; 0x68 'h'
236
+ .db $E0, $00, $60, $00, $6C, $00, $76, $00, $66, $00, $66, $00, $E6, $00, $00, $00
237
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
238
+ ; 0x69 'i'
239
+ .db $30, $00, $00, $00, $70, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
240
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
241
+ ; 0x6A 'j'
242
+ .db $0C, $00, $00, $00, $0C, $00, $0C, $00, $0C, $00, $CC, $00, $CC, $00, $78, $00
243
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
244
+ ; 0x6B 'k'
245
+ .db $E0, $00, $60, $00, $66, $00, $6C, $00, $78, $00, $6C, $00, $E6, $00, $00, $00
246
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
247
+ ; 0x6C 'l'
248
+ .db $70, $00, $30, $00, $30, $00, $30, $00, $30, $00, $30, $00, $78, $00, $00, $00
249
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
250
+ ; 0x6D 'm'
251
+ .db $00, $00, $00, $00, $CC, $00, $FE, $00, $FE, $00, $D6, $00, $C6, $00, $00, $00
252
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
253
+ ; 0x6E 'n'
254
+ .db $00, $00, $00, $00, $F8, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $00, $00
255
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
256
+ ; 0x6F 'o'
257
+ .db $00, $00, $00, $00, $78, $00, $CC, $00, $CC, $00, $CC, $00, $78, $00, $00, $00
258
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
259
+ ; 0x70 'p'
260
+ .db $00, $00, $00, $00, $DC, $00, $66, $00, $66, $00, $7C, $00, $60, $00, $F0, $00
261
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
262
+ ; 0x71 'q'
263
+ .db $00, $00, $00, $00, $76, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $1E, $00
264
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
265
+ ; 0x72 'r'
266
+ .db $00, $00, $00, $00, $DC, $00, $76, $00, $66, $00, $60, $00, $F0, $00, $00, $00
267
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
268
+ ; 0x73 's'
269
+ .db $00, $00, $00, $00, $7C, $00, $C0, $00, $78, $00, $0C, $00, $F8, $00, $00, $00
270
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
271
+ ; 0x74 't'
272
+ .db $10, $00, $30, $00, $7C, $00, $30, $00, $30, $00, $34, $00, $18, $00, $00, $00
273
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
274
+ ; 0x75 'u'
275
+ .db $00, $00, $00, $00, $CC, $00, $CC, $00, $CC, $00, $CC, $00, $76, $00, $00, $00
276
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
277
+ ; 0x76 'v'
278
+ .db $00, $00, $00, $00, $CC, $00, $CC, $00, $CC, $00, $78, $00, $30, $00, $00, $00
279
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
280
+ ; 0x77 'w'
281
+ .db $00, $00, $00, $00, $C6, $00, $D6, $00, $FE, $00, $FE, $00, $6C, $00, $00, $00
282
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
283
+ ; 0x78 'x'
284
+ .db $00, $00, $00, $00, $C6, $00, $6C, $00, $38, $00, $6C, $00, $C6, $00, $00, $00
285
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
286
+ ; 0x79 'y'
287
+ .db $00, $00, $00, $00, $CC, $00, $CC, $00, $CC, $00, $7C, $00, $0C, $00, $F8, $00
288
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
289
+ ; 0x7A 'z'
290
+ .db $00, $00, $00, $00, $FC, $00, $98, $00, $30, $00, $64, $00, $FC, $00, $00, $00
291
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
292
+ ; 0x7B '{'
293
+ .db $1C, $00, $30, $00, $30, $00, $E0, $00, $30, $00, $30, $00, $1C, $00, $00, $00
294
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
295
+ ; 0x7C '|'
296
+ .db $18, $00, $18, $00, $18, $00, $00, $00, $18, $00, $18, $00, $18, $00, $00, $00
297
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
298
+ ; 0x7D '}'
299
+ .db $E0, $00, $30, $00, $30, $00, $1C, $00, $30, $00, $30, $00, $E0, $00, $00, $00
300
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
301
+ ; 0x7E '~'
302
+ .db $76, $00, $DC, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
303
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
304
+ ; 0x7F 'del'
305
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
306
+ .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
16
307
 
17
308
  palfont:
18
- .db 0, 0, 0, 0, 0, 0, 0, 0
309
+ ; 16-colour text palette (32 bytes, BGR555): colour 0 transparent
310
+ ; (backdrop shows through), colour 1 white (the text colour).
311
+ .db $00, $00 ; 0 transparent
312
+ .db $FF, $7F ; 1 white
313
+ .db $00, $00, $00, $00, $00, $00, $00, $00
314
+ .db $00, $00, $00, $00, $00, $00, $00, $00
315
+ .db $00, $00, $00, $00, $00, $00, $00, $00
316
+ .db $00, $00
19
317
 
20
318
  .ends