romdevtools 0.13.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 (1346) hide show
  1. package/AGENTS.md +1110 -0
  2. package/CHANGELOG.md +525 -0
  3. package/LICENSE +45 -0
  4. package/NOTICE +102 -0
  5. package/README.md +84 -0
  6. package/examples/README.md +36 -0
  7. package/examples/art-first-workflow/README.md +209 -0
  8. package/examples/atari2600/main.asm +143 -0
  9. package/examples/atari2600/templates/default.asm +183 -0
  10. package/examples/atari2600/templates/mini_invaders.asm +381 -0
  11. package/examples/atari2600/templates/music_demo.asm +322 -0
  12. package/examples/atari2600/templates/paddle.asm +345 -0
  13. package/examples/atari2600/templates/single_screen.asm +242 -0
  14. package/examples/atari7800/main.c +88 -0
  15. package/examples/atari7800/templates/default.c +183 -0
  16. package/examples/atari7800/templates/hello_sprite.c +141 -0
  17. package/examples/atari7800/templates/music_demo.c +123 -0
  18. package/examples/atari7800/templates/platformer.c +159 -0
  19. package/examples/atari7800/templates/puzzle.c +164 -0
  20. package/examples/atari7800/templates/racing.c +139 -0
  21. package/examples/atari7800/templates/shmup.c +148 -0
  22. package/examples/atari7800/templates/sports.c +207 -0
  23. package/examples/c64/main.c +63 -0
  24. package/examples/c64/templates/hello_sprite.c +117 -0
  25. package/examples/c64/templates/music_demo.c +131 -0
  26. package/examples/c64/templates/platformer.c +194 -0
  27. package/examples/c64/templates/puzzle.c +178 -0
  28. package/examples/c64/templates/racing.c +140 -0
  29. package/examples/c64/templates/shmup.c +201 -0
  30. package/examples/c64/templates/sports.c +109 -0
  31. package/examples/c64/templates/tile_engine.c +174 -0
  32. package/examples/gb/main.asm +106 -0
  33. package/examples/gb/main.c +49 -0
  34. package/examples/gb/templates/default.c +58 -0
  35. package/examples/gb/templates/hello_sprite.c +130 -0
  36. package/examples/gb/templates/music_demo.c +52 -0
  37. package/examples/gb/templates/platformer.c +178 -0
  38. package/examples/gb/templates/puzzle.c +217 -0
  39. package/examples/gb/templates/racing.c +158 -0
  40. package/examples/gb/templates/shmup.c +172 -0
  41. package/examples/gb/templates/sports.c +136 -0
  42. package/examples/gb/templates/tile_engine.c +280 -0
  43. package/examples/gba/templates/gba_hello.c +64 -0
  44. package/examples/gba/templates/maxmod_demo.c +105 -0
  45. package/examples/gba/templates/platformer.c +215 -0
  46. package/examples/gba/templates/puzzle.c +237 -0
  47. package/examples/gba/templates/racing.c +175 -0
  48. package/examples/gba/templates/shmup.c +197 -0
  49. package/examples/gba/templates/sports.c +177 -0
  50. package/examples/gba/templates/tonc_hello.c +72 -0
  51. package/examples/gba/templates/tonc_hello_sprite.c +109 -0
  52. package/examples/gbc/main.asm +123 -0
  53. package/examples/gbc/templates/default.c +61 -0
  54. package/examples/gbc/templates/hello_sprite.c +140 -0
  55. package/examples/gbc/templates/music_demo.c +63 -0
  56. package/examples/gbc/templates/platformer.c +181 -0
  57. package/examples/gbc/templates/puzzle.c +217 -0
  58. package/examples/gbc/templates/racing.c +164 -0
  59. package/examples/gbc/templates/shmup.c +188 -0
  60. package/examples/gbc/templates/sports.c +142 -0
  61. package/examples/gbc/templates/tile_engine.c +280 -0
  62. package/examples/genesis/main.s +161 -0
  63. package/examples/genesis/templates/hello_sprite.c +75 -0
  64. package/examples/genesis/templates/platformer.c +166 -0
  65. package/examples/genesis/templates/puzzle.c +240 -0
  66. package/examples/genesis/templates/racing.c +170 -0
  67. package/examples/genesis/templates/sgdk_hello.c +41 -0
  68. package/examples/genesis/templates/shmup.c +188 -0
  69. package/examples/genesis/templates/shmup_2p.c +244 -0
  70. package/examples/genesis/templates/sports.c +172 -0
  71. package/examples/genesis/templates/tile_engine.c +135 -0
  72. package/examples/genesis/templates/xgm2_demo.c +53 -0
  73. package/examples/genesis/templates/xgm2_demo_data.s +27 -0
  74. package/examples/gg/main.c +10 -0
  75. package/examples/gg/templates/default.c +156 -0
  76. package/examples/gg/templates/hello_sprite.c +90 -0
  77. package/examples/gg/templates/music_demo.c +156 -0
  78. package/examples/gg/templates/platformer.c +220 -0
  79. package/examples/gg/templates/puzzle.c +204 -0
  80. package/examples/gg/templates/racing.c +161 -0
  81. package/examples/gg/templates/shmup.c +188 -0
  82. package/examples/gg/templates/sports.c +137 -0
  83. package/examples/gg/templates/tile_engine.c +137 -0
  84. package/examples/lynx/main.c +4 -0
  85. package/examples/lynx/templates/default.c +41 -0
  86. package/examples/lynx/templates/hello_sprite.c +39 -0
  87. package/examples/lynx/templates/music_demo.c +37 -0
  88. package/examples/lynx/templates/platformer.c +72 -0
  89. package/examples/lynx/templates/puzzle.c +142 -0
  90. package/examples/lynx/templates/racing.c +94 -0
  91. package/examples/lynx/templates/shmup.c +132 -0
  92. package/examples/lynx/templates/sports.c +59 -0
  93. package/examples/msx/catch_game/README.md +75 -0
  94. package/examples/msx/catch_game/_verify.mjs +93 -0
  95. package/examples/msx/catch_game/main.c +249 -0
  96. package/examples/msx/catch_game/shot_after_left.png +0 -0
  97. package/examples/msx/catch_game/shot_after_right.png +0 -0
  98. package/examples/msx/catch_game/shot_before.png +0 -0
  99. package/examples/msx/catch_game/shot_scored.png +0 -0
  100. package/examples/msx/music_sfx/README.md +38 -0
  101. package/examples/msx/music_sfx/main.c +164 -0
  102. package/examples/msx/sprite_move/README.md +44 -0
  103. package/examples/msx/sprite_move/main.c +100 -0
  104. package/examples/nes/main.c +143 -0
  105. package/examples/nes/space-shooter/README.md +69 -0
  106. package/examples/nes/space-shooter/main.c +441 -0
  107. package/examples/nes/space-shooter/nes_runtime.c +347 -0
  108. package/examples/nes/space-shooter/nes_runtime.h +141 -0
  109. package/examples/nes/templates/default.c +41 -0
  110. package/examples/nes/templates/hello_sprite.c +104 -0
  111. package/examples/nes/templates/music_demo.c +80 -0
  112. package/examples/nes/templates/platformer.c +171 -0
  113. package/examples/nes/templates/puzzle.c +232 -0
  114. package/examples/nes/templates/racing.c +203 -0
  115. package/examples/nes/templates/shmup.c +228 -0
  116. package/examples/nes/templates/sports.c +205 -0
  117. package/examples/nes/templates/tile_engine.c +224 -0
  118. package/examples/pce/catch_game/README.md +8 -0
  119. package/examples/pce/catch_game/_verify.mjs +75 -0
  120. package/examples/pce/catch_game/main.c +327 -0
  121. package/examples/pce/catch_game/shot_after.png +0 -0
  122. package/examples/pce/catch_game/shot_before.png +0 -0
  123. package/examples/pce/main.c +37 -0
  124. package/examples/pce/music_sfx/README.md +8 -0
  125. package/examples/pce/music_sfx/main.c +154 -0
  126. package/examples/pce/sprite_move/README.md +19 -0
  127. package/examples/pce/sprite_move/main.c +155 -0
  128. package/examples/porting-across-platforms/README.md +59 -0
  129. package/examples/sms/main.c +129 -0
  130. package/examples/sms/templates/default.c +110 -0
  131. package/examples/sms/templates/hello_sprite.c +90 -0
  132. package/examples/sms/templates/music_demo.c +151 -0
  133. package/examples/sms/templates/platformer.c +215 -0
  134. package/examples/sms/templates/puzzle.c +204 -0
  135. package/examples/sms/templates/racing.c +161 -0
  136. package/examples/sms/templates/shmup.c +167 -0
  137. package/examples/sms/templates/shmup_2p.c +219 -0
  138. package/examples/sms/templates/sports.c +147 -0
  139. package/examples/sms/templates/tile_engine.c +137 -0
  140. package/examples/snes/main.asm +70 -0
  141. package/examples/snes/templates/c-hello-data.asm +28 -0
  142. package/examples/snes/templates/c-hello.c +71 -0
  143. package/examples/snes/templates/default-data.asm +36 -0
  144. package/examples/snes/templates/default.c +74 -0
  145. package/examples/snes/templates/hello_sprite-data.asm +45 -0
  146. package/examples/snes/templates/hello_sprite.c +76 -0
  147. package/examples/snes/templates/music_demo-data.asm +20 -0
  148. package/examples/snes/templates/music_demo.c +83 -0
  149. package/examples/snes/templates/platformer-data.asm +27 -0
  150. package/examples/snes/templates/platformer.c +142 -0
  151. package/examples/snes/templates/puzzle-data.asm +14 -0
  152. package/examples/snes/templates/puzzle.c +199 -0
  153. package/examples/snes/templates/racing-data.asm +33 -0
  154. package/examples/snes/templates/racing.c +146 -0
  155. package/examples/snes/templates/shmup-data.asm +61 -0
  156. package/examples/snes/templates/shmup.c +199 -0
  157. package/examples/snes/templates/sports-data.asm +28 -0
  158. package/examples/snes/templates/sports.c +144 -0
  159. package/package.json +97 -0
  160. package/src/cheats/gamegenie.js +506 -0
  161. package/src/cheats/lookup.js +262 -0
  162. package/src/cheats/parse-cht.js +92 -0
  163. package/src/cli/smoke.js +283 -0
  164. package/src/cores/registry.js +99 -0
  165. package/src/cores/wasm/bluemsx_libretro.js +2 -0
  166. package/src/cores/wasm/bluemsx_libretro.wasm +0 -0
  167. package/src/cores/wasm/fceumm_libretro.js +2 -0
  168. package/src/cores/wasm/fceumm_libretro.wasm +0 -0
  169. package/src/cores/wasm/gambatte_libretro.js +2 -0
  170. package/src/cores/wasm/gambatte_libretro.wasm +0 -0
  171. package/src/cores/wasm/geargrafx_libretro.js +2 -0
  172. package/src/cores/wasm/geargrafx_libretro.wasm +0 -0
  173. package/src/cores/wasm/genesis_plus_gx_libretro.js +2 -0
  174. package/src/cores/wasm/genesis_plus_gx_libretro.wasm +0 -0
  175. package/src/cores/wasm/handy_libretro.js +2 -0
  176. package/src/cores/wasm/handy_libretro.wasm +0 -0
  177. package/src/cores/wasm/mgba_libretro.js +2 -0
  178. package/src/cores/wasm/mgba_libretro.wasm +0 -0
  179. package/src/cores/wasm/prosystem_libretro.js +2 -0
  180. package/src/cores/wasm/prosystem_libretro.wasm +0 -0
  181. package/src/cores/wasm/snes9x_libretro.js +2 -0
  182. package/src/cores/wasm/snes9x_libretro.wasm +0 -0
  183. package/src/cores/wasm/stella2014_libretro.js +2 -0
  184. package/src/cores/wasm/stella2014_libretro.wasm +0 -0
  185. package/src/cores/wasm/vice_x64_libretro.js +2 -0
  186. package/src/cores/wasm/vice_x64_libretro.wasm +0 -0
  187. package/src/host/LibretroHost.js +1469 -0
  188. package/src/host/c64-sid-state.js +161 -0
  189. package/src/host/callbacks.js +444 -0
  190. package/src/host/chafa-render.js +170 -0
  191. package/src/host/coreLoader.js +57 -0
  192. package/src/host/cpu-state.js +543 -0
  193. package/src/host/dsp-state.js +188 -0
  194. package/src/host/framebuffer.js +115 -0
  195. package/src/host/gb-apu-state.js +321 -0
  196. package/src/host/gba-video-state.js +215 -0
  197. package/src/host/gpgx-state.js +320 -0
  198. package/src/host/index.js +4 -0
  199. package/src/host/lynx-mikey-state.js +226 -0
  200. package/src/host/msx-ay-state.js +78 -0
  201. package/src/host/nes-apu-state.js +194 -0
  202. package/src/host/pce-psg-state.js +82 -0
  203. package/src/host/retroConstants.js +72 -0
  204. package/src/host/snes9x-state.js +35 -0
  205. package/src/host/types.js +332 -0
  206. package/src/http/routes.js +182 -0
  207. package/src/http/skill-doc.js +176 -0
  208. package/src/http/swagger.js +84 -0
  209. package/src/http/tool-registry.js +142 -0
  210. package/src/install/postinstall.mjs +81 -0
  211. package/src/mcp/disclosure.js +250 -0
  212. package/src/mcp/log.js +87 -0
  213. package/src/mcp/server.js +498 -0
  214. package/src/mcp/state.js +88 -0
  215. package/src/mcp/tool-manifest.js +92 -0
  216. package/src/mcp/tools/address-to-symbol.js +145 -0
  217. package/src/mcp/tools/art-loaders.js +743 -0
  218. package/src/mcp/tools/assets.js +87 -0
  219. package/src/mcp/tools/audio.js +562 -0
  220. package/src/mcp/tools/cart-parts.js +651 -0
  221. package/src/mcp/tools/cheats.js +343 -0
  222. package/src/mcp/tools/classify-region.js +107 -0
  223. package/src/mcp/tools/diff-cluster.js +32 -0
  224. package/src/mcp/tools/diff-roms.js +394 -0
  225. package/src/mcp/tools/disasm.js +1410 -0
  226. package/src/mcp/tools/find-references.js +375 -0
  227. package/src/mcp/tools/font-map.js +563 -0
  228. package/src/mcp/tools/frame.js +293 -0
  229. package/src/mcp/tools/free-space.js +71 -0
  230. package/src/mcp/tools/index.js +339 -0
  231. package/src/mcp/tools/input-layout.js +231 -0
  232. package/src/mcp/tools/input.js +227 -0
  233. package/src/mcp/tools/lifecycle.js +132 -0
  234. package/src/mcp/tools/lospec.js +187 -0
  235. package/src/mcp/tools/memory.js +472 -0
  236. package/src/mcp/tools/metasprite-tools.js +256 -0
  237. package/src/mcp/tools/platform-docs.js +113 -0
  238. package/src/mcp/tools/platform-tools.js +1300 -0
  239. package/src/mcp/tools/platforms.js +139 -0
  240. package/src/mcp/tools/playtest.js +360 -0
  241. package/src/mcp/tools/preview-tile.js +478 -0
  242. package/src/mcp/tools/project.js +1939 -0
  243. package/src/mcp/tools/record.js +180 -0
  244. package/src/mcp/tools/reinject.js +732 -0
  245. package/src/mcp/tools/rendering-context.js +838 -0
  246. package/src/mcp/tools/rom-id.js +308 -0
  247. package/src/mcp/tools/run-until.js +176 -0
  248. package/src/mcp/tools/snippets.js +209 -0
  249. package/src/mcp/tools/splice-chr.js +190 -0
  250. package/src/mcp/tools/sprite-pipeline.js +626 -0
  251. package/src/mcp/tools/state.js +198 -0
  252. package/src/mcp/tools/symbols.js +400 -0
  253. package/src/mcp/tools/tile-inspect.js +293 -0
  254. package/src/mcp/tools/toolchain.js +720 -0
  255. package/src/mcp/tools/trace-vram-source.js +81 -0
  256. package/src/mcp/tools/watch-memory.js +1036 -0
  257. package/src/mcp/tools/which-tiles.js +180 -0
  258. package/src/mcp/util.js +355 -0
  259. package/src/observer/bus.js +127 -0
  260. package/src/observer/livestream.html +594 -0
  261. package/src/observer/server.js +78 -0
  262. package/src/observer/tool-wrap.js +142 -0
  263. package/src/platforms/_guides/MUSIC_SOURCING.md +104 -0
  264. package/src/platforms/_guides/ROMHACKING_PLAYBOOK.md +245 -0
  265. package/src/platforms/atari2600/MENTAL_MODEL.md +194 -0
  266. package/src/platforms/atari2600/TROUBLESHOOTING.md +155 -0
  267. package/src/platforms/atari2600/UPSTREAM_SOURCES.md +49 -0
  268. package/src/platforms/atari2600/lib/README.md +67 -0
  269. package/src/platforms/atari2600/lib/cc65-src/crt0.s +49 -0
  270. package/src/platforms/atari2600/lib/cc65-src/ctype.s +5 -0
  271. package/src/platforms/atari2600/lib/kernel_skeleton.asm +85 -0
  272. package/src/platforms/atari2600/lib/player_kernel.asm +87 -0
  273. package/src/platforms/atari2600/lib/playfield_kernel.asm +63 -0
  274. package/src/platforms/atari2600/lib/read_joystick.asm +76 -0
  275. package/src/platforms/atari2600/lib/score_kernel.asm +141 -0
  276. package/src/platforms/atari2600/lib/vcs_constants.h +97 -0
  277. package/src/platforms/atari2600/lib/vectors.asm +16 -0
  278. package/src/platforms/atari2600/tia.js +355 -0
  279. package/src/platforms/atari7800/MENTAL_MODEL.md +324 -0
  280. package/src/platforms/atari7800/TROUBLESHOOTING.md +195 -0
  281. package/src/platforms/atari7800/UPSTREAM_SOURCES.md +43 -0
  282. package/src/platforms/atari7800/lib/README.md +45 -0
  283. package/src/platforms/atari7800/lib/c/atari7800_music.c +215 -0
  284. package/src/platforms/atari7800/lib/c/atari7800_music.h +33 -0
  285. package/src/platforms/atari7800/lib/c/atari7800_sfx.c +74 -0
  286. package/src/platforms/atari7800/lib/c/atari7800_sfx.h +45 -0
  287. package/src/platforms/atari7800/lib/cc65-src/clock.s +69 -0
  288. package/src/platforms/atari7800/lib/cc65-src/clocks_per_sec.s +34 -0
  289. package/src/platforms/atari7800/lib/cc65-src/clrscr.s +27 -0
  290. package/src/platforms/atari7800/lib/cc65-src/conio.s +226 -0
  291. package/src/platforms/atari7800/lib/cc65-src/conio_font.s +278 -0
  292. package/src/platforms/atari7800/lib/cc65-src/cputc.s +139 -0
  293. package/src/platforms/atari7800/lib/cc65-src/crt0.s +71 -0
  294. package/src/platforms/atari7800/lib/cc65-src/ctype.s +5 -0
  295. package/src/platforms/atari7800/lib/cc65-src/exehdr.s +46 -0
  296. package/src/platforms/atari7800/lib/cc65-src/extra/mono.s +28 -0
  297. package/src/platforms/atari7800/lib/cc65-src/extzp.inc +15 -0
  298. package/src/platforms/atari7800/lib/cc65-src/extzp.s +15 -0
  299. package/src/platforms/atari7800/lib/cc65-src/get_tv.s +65 -0
  300. package/src/platforms/atari7800/lib/cc65-src/irq.s +36 -0
  301. package/src/platforms/atari7800/lib/cc65-src/joy/atari7800-stdjoy.s +197 -0
  302. package/src/platforms/atari7800/lib/cc65-src/joy_stat_stddrv.s +14 -0
  303. package/src/platforms/atari7800/lib/cc65-src/libref.s +8 -0
  304. package/src/platforms/atari7800/lib/cc65-src/mono_clrscr.s +27 -0
  305. package/src/platforms/atari7800/lib/cc65-src/mono_conio.s +231 -0
  306. package/src/platforms/atari7800/lib/cc65-src/mono_cputc.s +102 -0
  307. package/src/platforms/atari7800/lib/cc65-src/mono_font.s +2065 -0
  308. package/src/platforms/atari7800/lib/cc65-src/mono_setcursor.s +214 -0
  309. package/src/platforms/atari7800/lib/cc65-src/setcursor.s +214 -0
  310. package/src/platforms/atari7800/lib/cc65-src/textcolor.s +53 -0
  311. package/src/platforms/atari7800/lib/cc65-src/wherex.s +19 -0
  312. package/src/platforms/atari7800/lib/cc65-src/wherey.s +19 -0
  313. package/src/platforms/atari7800/lib/display_list.asm +53 -0
  314. package/src/platforms/atari7800/lib/maria_init.asm +48 -0
  315. package/src/platforms/atari7800/lib/maria_registers.h +61 -0
  316. package/src/platforms/atari7800/lib/palette_load.asm +53 -0
  317. package/src/platforms/atari7800/lib/read_pad.asm +57 -0
  318. package/src/platforms/atari7800/lib/vblank_wait.asm +16 -0
  319. package/src/platforms/atari7800/maria.js +220 -0
  320. package/src/platforms/atari7800/song.js +232 -0
  321. package/src/platforms/c64/MENTAL_MODEL.md +188 -0
  322. package/src/platforms/c64/TROUBLESHOOTING.md +130 -0
  323. package/src/platforms/c64/UPSTREAM_SOURCES.md +35 -0
  324. package/src/platforms/c64/image-to-tilemap.js +190 -0
  325. package/src/platforms/c64/lib/README.md +52 -0
  326. package/src/platforms/c64/lib/basic_stub.s +25 -0
  327. package/src/platforms/c64/lib/c/c64_music.c +248 -0
  328. package/src/platforms/c64/lib/c/c64_music.h +36 -0
  329. package/src/platforms/c64/lib/c/c64_sfx.c +94 -0
  330. package/src/platforms/c64/lib/c/c64_sfx.h +37 -0
  331. package/src/platforms/c64/lib/c64_registers.h +108 -0
  332. package/src/platforms/c64/lib/cc65-src/_scrsize.s +12 -0
  333. package/src/platforms/c64/lib/cc65-src/acc_c128_speed.s +5 -0
  334. package/src/platforms/c64/lib/cc65-src/acc_c64dtv_speed.s +64 -0
  335. package/src/platforms/c64/lib/cc65-src/acc_c65_speed.s +69 -0
  336. package/src/platforms/c64/lib/cc65-src/acc_chameleon_speed.s +100 -0
  337. package/src/platforms/c64/lib/cc65-src/acc_detect_c128.s +33 -0
  338. package/src/platforms/c64/lib/cc65-src/acc_detect_c64dtv.s +44 -0
  339. package/src/platforms/c64/lib/cc65-src/acc_detect_c65.s +55 -0
  340. package/src/platforms/c64/lib/cc65-src/acc_detect_chameleon.s +39 -0
  341. package/src/platforms/c64/lib/cc65-src/acc_detect_scpu.s +34 -0
  342. package/src/platforms/c64/lib/cc65-src/acc_detect_turbomaster.s +45 -0
  343. package/src/platforms/c64/lib/cc65-src/acc_scpu_speed.s +59 -0
  344. package/src/platforms/c64/lib/cc65-src/acc_turbomaster_speed.s +56 -0
  345. package/src/platforms/c64/lib/cc65-src/bordercolor.s +17 -0
  346. package/src/platforms/c64/lib/cc65-src/break.s +108 -0
  347. package/src/platforms/c64/lib/cc65-src/cgetc.s +62 -0
  348. package/src/platforms/c64/lib/cc65-src/clrscr.s +11 -0
  349. package/src/platforms/c64/lib/cc65-src/color.s +24 -0
  350. package/src/platforms/c64/lib/cc65-src/conio.s +10 -0
  351. package/src/platforms/c64/lib/cc65-src/cputc.s +105 -0
  352. package/src/platforms/c64/lib/cc65-src/crt0.s +117 -0
  353. package/src/platforms/c64/lib/cc65-src/devnum.s +7 -0
  354. package/src/platforms/c64/lib/cc65-src/emd/c64-65816.s +377 -0
  355. package/src/platforms/c64/lib/cc65-src/emd/c64-c256k.s +508 -0
  356. package/src/platforms/c64/lib/cc65-src/emd/c64-dqbb.s +447 -0
  357. package/src/platforms/c64/lib/cc65-src/emd/c64-georam.s +355 -0
  358. package/src/platforms/c64/lib/cc65-src/emd/c64-isepic.s +276 -0
  359. package/src/platforms/c64/lib/cc65-src/emd/c64-kerberos.s +281 -0
  360. package/src/platforms/c64/lib/cc65-src/emd/c64-ram.s +270 -0
  361. package/src/platforms/c64/lib/cc65-src/emd/c64-ramcart.s +297 -0
  362. package/src/platforms/c64/lib/cc65-src/emd/c64-reu.s +286 -0
  363. package/src/platforms/c64/lib/cc65-src/emd/c64-rrr.s +363 -0
  364. package/src/platforms/c64/lib/cc65-src/emd/c64-vdc.s +405 -0
  365. package/src/platforms/c64/lib/cc65-src/emd/dtv-himem.s +251 -0
  366. package/src/platforms/c64/lib/cc65-src/extra/soft80.s +71 -0
  367. package/src/platforms/c64/lib/cc65-src/extra/soft80mono.s +74 -0
  368. package/src/platforms/c64/lib/cc65-src/extra/tgimousedata.s +21 -0
  369. package/src/platforms/c64/lib/cc65-src/get_ostype.s +43 -0
  370. package/src/platforms/c64/lib/cc65-src/get_tv.s +20 -0
  371. package/src/platforms/c64/lib/cc65-src/gettime.s +83 -0
  372. package/src/platforms/c64/lib/cc65-src/irq.s +49 -0
  373. package/src/platforms/c64/lib/cc65-src/joy/c64-hitjoy.s +218 -0
  374. package/src/platforms/c64/lib/cc65-src/joy/c64-numpad.s +155 -0
  375. package/src/platforms/c64/lib/cc65-src/joy/c64-ptvjoy.s +146 -0
  376. package/src/platforms/c64/lib/cc65-src/joy/c64-stdjoy.s +111 -0
  377. package/src/platforms/c64/lib/cc65-src/joy_stat_stddrv.s +14 -0
  378. package/src/platforms/c64/lib/cc65-src/joy_stddrv.s +14 -0
  379. package/src/platforms/c64/lib/cc65-src/kbhit.s +23 -0
  380. package/src/platforms/c64/lib/cc65-src/kbrepeat.s +14 -0
  381. package/src/platforms/c64/lib/cc65-src/kernal.s +53 -0
  382. package/src/platforms/c64/lib/cc65-src/kplot.s +22 -0
  383. package/src/platforms/c64/lib/cc65-src/libref.s +16 -0
  384. package/src/platforms/c64/lib/cc65-src/mainargs.s +137 -0
  385. package/src/platforms/c64/lib/cc65-src/mcbdefault.s +146 -0
  386. package/src/platforms/c64/lib/cc65-src/mcbspritedata.s +4 -0
  387. package/src/platforms/c64/lib/cc65-src/mou/c64-1351.s +467 -0
  388. package/src/platforms/c64/lib/cc65-src/mou/c64-inkwell.s +446 -0
  389. package/src/platforms/c64/lib/cc65-src/mou/c64-joy.s +451 -0
  390. package/src/platforms/c64/lib/cc65-src/mou/c64-pot.s +409 -0
  391. package/src/platforms/c64/lib/cc65-src/mouse_stat_stddrv.s +14 -0
  392. package/src/platforms/c64/lib/cc65-src/mouse_stddrv.s +14 -0
  393. package/src/platforms/c64/lib/cc65-src/mouseref.s +23 -0
  394. package/src/platforms/c64/lib/cc65-src/pencalib.c +94 -0
  395. package/src/platforms/c64/lib/cc65-src/randomize.s +18 -0
  396. package/src/platforms/c64/lib/cc65-src/revers.s +27 -0
  397. package/src/platforms/c64/lib/cc65-src/ser/c64-swlink.s +484 -0
  398. package/src/platforms/c64/lib/cc65-src/ser_stat_stddrv.s +14 -0
  399. package/src/platforms/c64/lib/cc65-src/ser_stddrv.s +13 -0
  400. package/src/platforms/c64/lib/cc65-src/settime.s +84 -0
  401. package/src/platforms/c64/lib/cc65-src/soft80.inc +46 -0
  402. package/src/platforms/c64/lib/cc65-src/soft80_cgetc.s +85 -0
  403. package/src/platforms/c64/lib/cc65-src/soft80_charset.s +182 -0
  404. package/src/platforms/c64/lib/cc65-src/soft80_color.s +159 -0
  405. package/src/platforms/c64/lib/cc65-src/soft80_conio.s +157 -0
  406. package/src/platforms/c64/lib/cc65-src/soft80_cpeekc.s +148 -0
  407. package/src/platforms/c64/lib/cc65-src/soft80_cpeekcolor.s +19 -0
  408. package/src/platforms/c64/lib/cc65-src/soft80_cpeekrevers.s +15 -0
  409. package/src/platforms/c64/lib/cc65-src/soft80_cpeeks.s +71 -0
  410. package/src/platforms/c64/lib/cc65-src/soft80_cputc.s +521 -0
  411. package/src/platforms/c64/lib/cc65-src/soft80_kclrscr.s +76 -0
  412. package/src/platforms/c64/lib/cc65-src/soft80_kplot.s +63 -0
  413. package/src/platforms/c64/lib/cc65-src/soft80_scrsize.s +14 -0
  414. package/src/platforms/c64/lib/cc65-src/soft80mono_cgetc.s +67 -0
  415. package/src/platforms/c64/lib/cc65-src/soft80mono_color.s +65 -0
  416. package/src/platforms/c64/lib/cc65-src/soft80mono_conio.s +168 -0
  417. package/src/platforms/c64/lib/cc65-src/soft80mono_cpeekcolor.s +17 -0
  418. package/src/platforms/c64/lib/cc65-src/soft80mono_cputc.s +204 -0
  419. package/src/platforms/c64/lib/cc65-src/soft80mono_kclrscr.s +63 -0
  420. package/src/platforms/c64/lib/cc65-src/soft80mono_kplot.s +52 -0
  421. package/src/platforms/c64/lib/cc65-src/status.s +15 -0
  422. package/src/platforms/c64/lib/cc65-src/sysuname.s +37 -0
  423. package/src/platforms/c64/lib/cc65-src/tgi/c64-hi.s +881 -0
  424. package/src/platforms/c64/lib/cc65-src/tgi_stat_stddrv.s +14 -0
  425. package/src/platforms/c64/lib/cc65-src/tgi_stddrv.s +13 -0
  426. package/src/platforms/c64/lib/cc65-src/tmcommon.s +67 -0
  427. package/src/platforms/c64/lib/cc65-src/waitvsync.s +18 -0
  428. package/src/platforms/c64/lib/read_joystick.s +28 -0
  429. package/src/platforms/c64/lib/sid_play.s +48 -0
  430. package/src/platforms/c64/lib/sprite_table.s +73 -0
  431. package/src/platforms/c64/lib/vic_init.s +47 -0
  432. package/src/platforms/c64/sid.js +128 -0
  433. package/src/platforms/c64/song.js +262 -0
  434. package/src/platforms/c64/vic.js +273 -0
  435. package/src/platforms/common/default-palette.js +139 -0
  436. package/src/platforms/common/image-to-tiles.js +418 -0
  437. package/src/platforms/common/intent.js +111 -0
  438. package/src/platforms/common/metasprite-adapters.js +279 -0
  439. package/src/platforms/common/metasprite-codegen.js +192 -0
  440. package/src/platforms/common/metasprite-core.js +201 -0
  441. package/src/platforms/common/metasprite.js +89 -0
  442. package/src/platforms/common/platform-palette.js +137 -0
  443. package/src/platforms/common/registers.js +329 -0
  444. package/src/platforms/common/render-tiles.js +86 -0
  445. package/src/platforms/common/screenshot-sprite.js +153 -0
  446. package/src/platforms/common/tile-decode.js +149 -0
  447. package/src/platforms/gb/MENTAL_MODEL.md +262 -0
  448. package/src/platforms/gb/TROUBLESHOOTING.md +218 -0
  449. package/src/platforms/gb/UPSTREAM_SOURCES.md +43 -0
  450. package/src/platforms/gb/image-to-tilemap.js +173 -0
  451. package/src/platforms/gb/lib/README.md +115 -0
  452. package/src/platforms/gb/lib/c/LICENSE-HUGEDRIVER +25 -0
  453. package/src/platforms/gb/lib/c/README.md +122 -0
  454. package/src/platforms/gb/lib/c/SDCC_GOTCHAS.md +190 -0
  455. package/src/platforms/gb/lib/c/gb_crt0.s +163 -0
  456. package/src/platforms/gb/lib/c/gb_hardware.h +113 -0
  457. package/src/platforms/gb/lib/c/gb_runtime.c +284 -0
  458. package/src/platforms/gb/lib/c/gb_runtime.h +145 -0
  459. package/src/platforms/gb/lib/c/hUGEDriver.c +191 -0
  460. package/src/platforms/gb/lib/c/hUGEDriver.h +95 -0
  461. package/src/platforms/gb/lib/c/hUGEDriver.upstream.asm +1908 -0
  462. package/src/platforms/gb/lib/c/lcd_init.c +19 -0
  463. package/src/platforms/gb/lib/c/patch-header.js +154 -0
  464. package/src/platforms/gb/lib/c/song_data.c +88 -0
  465. package/src/platforms/gb/lib/c/unroll.h +52 -0
  466. package/src/platforms/gb/lib/c/wait_vblank.c +14 -0
  467. package/src/platforms/gb/lib/dma_oam.asm +51 -0
  468. package/src/platforms/gb/lib/header.asm +56 -0
  469. package/src/platforms/gb/lib/joypad_read.asm +47 -0
  470. package/src/platforms/gb/lib/lcd_init.asm +44 -0
  471. package/src/platforms/gb/lib/load_palette.asm +25 -0
  472. package/src/platforms/gb/lib/load_tiles.asm +29 -0
  473. package/src/platforms/gb/lib/vblank_wait.asm +31 -0
  474. package/src/platforms/gb/ppu.js +574 -0
  475. package/src/platforms/gb/song.js +140 -0
  476. package/src/platforms/gba/MENTAL_MODEL.md +216 -0
  477. package/src/platforms/gba/TROUBLESHOOTING.md +250 -0
  478. package/src/platforms/gba/UPSTREAM_SOURCES.md +41 -0
  479. package/src/platforms/gba/lib/arm-archives/libc.a +0 -0
  480. package/src/platforms/gba/lib/arm-archives/libgcc.a +0 -0
  481. package/src/platforms/gba/lib/arm-archives/libnosys.a +0 -0
  482. package/src/platforms/gba/lib/c/gba_sfx.c +81 -0
  483. package/src/platforms/gba/lib/c/gba_sfx.h +48 -0
  484. package/src/platforms/gba/lib/libgba/crtbegin.o +0 -0
  485. package/src/platforms/gba/lib/libgba/crtend.o +0 -0
  486. package/src/platforms/gba/lib/libgba/crti.o +0 -0
  487. package/src/platforms/gba/lib/libgba/crtn.o +0 -0
  488. package/src/platforms/gba/lib/libgba/gba_cart.ld +319 -0
  489. package/src/platforms/gba/lib/libgba/gba_crt0.s +258 -0
  490. package/src/platforms/gba/lib/libgba/include/BoyScout.h +128 -0
  491. package/src/platforms/gba/lib/libgba/include/disc.h +36 -0
  492. package/src/platforms/gba/lib/libgba/include/disc_io.h +64 -0
  493. package/src/platforms/gba/lib/libgba/include/dldi.h +112 -0
  494. package/src/platforms/gba/lib/libgba/include/erapi.h +195 -0
  495. package/src/platforms/gba/lib/libgba/include/fade.h +76 -0
  496. package/src/platforms/gba/lib/libgba/include/gba.h +47 -0
  497. package/src/platforms/gba/lib/libgba/include/gba_affine.h +83 -0
  498. package/src/platforms/gba/lib/libgba/include/gba_base.h +122 -0
  499. package/src/platforms/gba/lib/libgba/include/gba_compression.h +66 -0
  500. package/src/platforms/gba/lib/libgba/include/gba_console.h +55 -0
  501. package/src/platforms/gba/lib/libgba/include/gba_dma.h +100 -0
  502. package/src/platforms/gba/lib/libgba/include/gba_input.h +127 -0
  503. package/src/platforms/gba/lib/libgba/include/gba_interrupt.h +146 -0
  504. package/src/platforms/gba/lib/libgba/include/gba_multiboot.h +72 -0
  505. package/src/platforms/gba/lib/libgba/include/gba_sio.h +124 -0
  506. package/src/platforms/gba/lib/libgba/include/gba_sound.h +356 -0
  507. package/src/platforms/gba/lib/libgba/include/gba_sprites.h +195 -0
  508. package/src/platforms/gba/lib/libgba/include/gba_systemcalls.h +194 -0
  509. package/src/platforms/gba/lib/libgba/include/gba_timers.h +63 -0
  510. package/src/platforms/gba/lib/libgba/include/gba_types.h +60 -0
  511. package/src/platforms/gba/lib/libgba/include/gba_video.h +307 -0
  512. package/src/platforms/gba/lib/libgba/include/mappy.h +72 -0
  513. package/src/platforms/gba/lib/libgba/include/mbv2.h +90 -0
  514. package/src/platforms/gba/lib/libgba/include/xcomms.h +93 -0
  515. package/src/platforms/gba/lib/libgba/include/xcomms_cmd.h +53 -0
  516. package/src/platforms/gba/lib/libgba/libgba.seed.a +0 -0
  517. package/src/platforms/gba/lib/libgba/libgba.seed.hash +1 -0
  518. package/src/platforms/gba/lib/libgba/src/AffineSet.c +42 -0
  519. package/src/platforms/gba/lib/libgba/src/ArcTan.s +41 -0
  520. package/src/platforms/gba/lib/libgba/src/BoyScout/BoyScout.c +1242 -0
  521. package/src/platforms/gba/lib/libgba/src/BoyScout/GBASoundRegs.h +200 -0
  522. package/src/platforms/gba/lib/libgba/src/Compression.c +84 -0
  523. package/src/platforms/gba/lib/libgba/src/CpuSet.c +41 -0
  524. package/src/platforms/gba/lib/libgba/src/Div.s +58 -0
  525. package/src/platforms/gba/lib/libgba/src/DivArm.s +50 -0
  526. package/src/platforms/gba/lib/libgba/src/InterruptDispatcher.s +113 -0
  527. package/src/platforms/gba/lib/libgba/src/IntrWait.c +35 -0
  528. package/src/platforms/gba/lib/libgba/src/MultiBoot.s +33 -0
  529. package/src/platforms/gba/lib/libgba/src/Reset.s +49 -0
  530. package/src/platforms/gba/lib/libgba/src/Sound.s +48 -0
  531. package/src/platforms/gba/lib/libgba/src/Sqrt.s +34 -0
  532. package/src/platforms/gba/lib/libgba/src/disc_io/disc.c +58 -0
  533. package/src/platforms/gba/lib/libgba/src/disc_io/dldi.c +189 -0
  534. package/src/platforms/gba/lib/libgba/src/disc_io/dldi_stub.s +78 -0
  535. package/src/platforms/gba/lib/libgba/src/disc_io/io_cf_common.c +260 -0
  536. package/src/platforms/gba/lib/libgba/src/disc_io/io_cf_common.h +72 -0
  537. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3_common.c +60 -0
  538. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3_common.h +48 -0
  539. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3cf.c +83 -0
  540. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3cf.h +45 -0
  541. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3sd.c +508 -0
  542. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3sd.h +45 -0
  543. package/src/platforms/gba/lib/libgba/src/disc_io/io_mpcf.c +87 -0
  544. package/src/platforms/gba/lib/libgba/src/disc_io/io_mpcf.h +42 -0
  545. package/src/platforms/gba/lib/libgba/src/disc_io/io_sc_common.c +47 -0
  546. package/src/platforms/gba/lib/libgba/src/disc_io/io_sc_common.h +43 -0
  547. package/src/platforms/gba/lib/libgba/src/disc_io/io_sccf.c +83 -0
  548. package/src/platforms/gba/lib/libgba/src/disc_io/io_sccf.h +45 -0
  549. package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd.c +385 -0
  550. package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd.h +48 -0
  551. package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd_s.s +139 -0
  552. package/src/platforms/gba/lib/libgba/src/disc_io/io_sd_common.c +203 -0
  553. package/src/platforms/gba/lib/libgba/src/disc_io/io_sd_common.h +108 -0
  554. package/src/platforms/gba/lib/libgba/src/fade.c +185 -0
  555. package/src/platforms/gba/lib/libgba/src/input.c +127 -0
  556. package/src/platforms/gba/lib/libgba/src/interrupt.c +116 -0
  557. package/src/platforms/gba/lib/libgba/src/mappy_print.c +74 -0
  558. package/src/platforms/gba/lib/libgba/src/mb2print.c +69 -0
  559. package/src/platforms/gba/lib/libgba/src/mbv2.c +230 -0
  560. package/src/platforms/gba/lib/libgba/src/mbv2.txt +119 -0
  561. package/src/platforms/gba/lib/libgba/src/xcomms.c +203 -0
  562. package/src/platforms/gba/lib/libgba/src/xcomms_print.c +56 -0
  563. package/src/platforms/gba/lib/libgba/sysinclude/_ansi.h +82 -0
  564. package/src/platforms/gba/lib/libgba/sysinclude/_newlib_version.h +11 -0
  565. package/src/platforms/gba/lib/libgba/sysinclude/_syslist.h +41 -0
  566. package/src/platforms/gba/lib/libgba/sysinclude/alloca.h +21 -0
  567. package/src/platforms/gba/lib/libgba/sysinclude/ar.h +65 -0
  568. package/src/platforms/gba/lib/libgba/sysinclude/argz.h +33 -0
  569. package/src/platforms/gba/lib/libgba/sysinclude/assert.h +50 -0
  570. package/src/platforms/gba/lib/libgba/sysinclude/complex.h +150 -0
  571. package/src/platforms/gba/lib/libgba/sysinclude/cpio.h +30 -0
  572. package/src/platforms/gba/lib/libgba/sysinclude/ctype.h +183 -0
  573. package/src/platforms/gba/lib/libgba/sysinclude/devctl.h +78 -0
  574. package/src/platforms/gba/lib/libgba/sysinclude/dirent.h +85 -0
  575. package/src/platforms/gba/lib/libgba/sysinclude/elf.h +3147 -0
  576. package/src/platforms/gba/lib/libgba/sysinclude/envlock.h +15 -0
  577. package/src/platforms/gba/lib/libgba/sysinclude/envz.h +16 -0
  578. package/src/platforms/gba/lib/libgba/sysinclude/errno.h +11 -0
  579. package/src/platforms/gba/lib/libgba/sysinclude/fastmath.h +13 -0
  580. package/src/platforms/gba/lib/libgba/sysinclude/fcntl.h +1 -0
  581. package/src/platforms/gba/lib/libgba/sysinclude/fenv.h +42 -0
  582. package/src/platforms/gba/lib/libgba/sysinclude/float.h +631 -0
  583. package/src/platforms/gba/lib/libgba/sysinclude/fnmatch.h +55 -0
  584. package/src/platforms/gba/lib/libgba/sysinclude/ftw.h +66 -0
  585. package/src/platforms/gba/lib/libgba/sysinclude/getopt.h +185 -0
  586. package/src/platforms/gba/lib/libgba/sysinclude/glob.h +90 -0
  587. package/src/platforms/gba/lib/libgba/sysinclude/grp.h +86 -0
  588. package/src/platforms/gba/lib/libgba/sysinclude/iconv.h +63 -0
  589. package/src/platforms/gba/lib/libgba/sysinclude/ieeefp.h +295 -0
  590. package/src/platforms/gba/lib/libgba/sysinclude/inttypes.h +345 -0
  591. package/src/platforms/gba/lib/libgba/sysinclude/iso646.h +45 -0
  592. package/src/platforms/gba/lib/libgba/sysinclude/langinfo.h +332 -0
  593. package/src/platforms/gba/lib/libgba/sysinclude/libgen.h +37 -0
  594. package/src/platforms/gba/lib/libgba/sysinclude/limits.h +168 -0
  595. package/src/platforms/gba/lib/libgba/sysinclude/locale.h +96 -0
  596. package/src/platforms/gba/lib/libgba/sysinclude/machine/_arc4random.h +1 -0
  597. package/src/platforms/gba/lib/libgba/sysinclude/machine/_default_types.h +250 -0
  598. package/src/platforms/gba/lib/libgba/sysinclude/machine/_endian.h +39 -0
  599. package/src/platforms/gba/lib/libgba/sysinclude/machine/_time.h +3 -0
  600. package/src/platforms/gba/lib/libgba/sysinclude/machine/_types.h +8 -0
  601. package/src/platforms/gba/lib/libgba/sysinclude/machine/ansi.h +1 -0
  602. package/src/platforms/gba/lib/libgba/sysinclude/machine/endian.h +69 -0
  603. package/src/platforms/gba/lib/libgba/sysinclude/machine/fastmath.h +98 -0
  604. package/src/platforms/gba/lib/libgba/sysinclude/machine/ieee.h +127 -0
  605. package/src/platforms/gba/lib/libgba/sysinclude/machine/ieeefp.h +533 -0
  606. package/src/platforms/gba/lib/libgba/sysinclude/machine/malloc.h +8 -0
  607. package/src/platforms/gba/lib/libgba/sysinclude/machine/param.h +8 -0
  608. package/src/platforms/gba/lib/libgba/sysinclude/machine/setjmp-dj.h +43 -0
  609. package/src/platforms/gba/lib/libgba/sysinclude/machine/setjmp.h +524 -0
  610. package/src/platforms/gba/lib/libgba/sysinclude/machine/stdlib.h +8 -0
  611. package/src/platforms/gba/lib/libgba/sysinclude/machine/termios.h +1 -0
  612. package/src/platforms/gba/lib/libgba/sysinclude/machine/time.h +15 -0
  613. package/src/platforms/gba/lib/libgba/sysinclude/machine/types.h +13 -0
  614. package/src/platforms/gba/lib/libgba/sysinclude/malloc.h +173 -0
  615. package/src/platforms/gba/lib/libgba/sysinclude/math.h +645 -0
  616. package/src/platforms/gba/lib/libgba/sysinclude/memory.h +4 -0
  617. package/src/platforms/gba/lib/libgba/sysinclude/ndbm.h +91 -0
  618. package/src/platforms/gba/lib/libgba/sysinclude/newlib.h +427 -0
  619. package/src/platforms/gba/lib/libgba/sysinclude/paths.h +9 -0
  620. package/src/platforms/gba/lib/libgba/sysinclude/pthread.h +456 -0
  621. package/src/platforms/gba/lib/libgba/sysinclude/pwd.h +83 -0
  622. package/src/platforms/gba/lib/libgba/sysinclude/reent.h +190 -0
  623. package/src/platforms/gba/lib/libgba/sysinclude/regdef.h +7 -0
  624. package/src/platforms/gba/lib/libgba/sysinclude/regex.h +103 -0
  625. package/src/platforms/gba/lib/libgba/sysinclude/sched.h +112 -0
  626. package/src/platforms/gba/lib/libgba/sysinclude/search.h +64 -0
  627. package/src/platforms/gba/lib/libgba/sysinclude/setjmp.h +25 -0
  628. package/src/platforms/gba/lib/libgba/sysinclude/signal.h +35 -0
  629. package/src/platforms/gba/lib/libgba/sysinclude/spawn.h +111 -0
  630. package/src/platforms/gba/lib/libgba/sysinclude/ssp/ssp.h +76 -0
  631. package/src/platforms/gba/lib/libgba/sysinclude/ssp/stdio.h +101 -0
  632. package/src/platforms/gba/lib/libgba/sysinclude/ssp/stdlib.h +30 -0
  633. package/src/platforms/gba/lib/libgba/sysinclude/ssp/string.h +115 -0
  634. package/src/platforms/gba/lib/libgba/sysinclude/ssp/strings.h +55 -0
  635. package/src/platforms/gba/lib/libgba/sysinclude/ssp/unistd.h +93 -0
  636. package/src/platforms/gba/lib/libgba/sysinclude/ssp/wchar.h +97 -0
  637. package/src/platforms/gba/lib/libgba/sysinclude/stdarg.h +135 -0
  638. package/src/platforms/gba/lib/libgba/sysinclude/stdatomic.h +409 -0
  639. package/src/platforms/gba/lib/libgba/sysinclude/stdbool.h +51 -0
  640. package/src/platforms/gba/lib/libgba/sysinclude/stddef.h +463 -0
  641. package/src/platforms/gba/lib/libgba/sysinclude/stdint.h +466 -0
  642. package/src/platforms/gba/lib/libgba/sysinclude/stdio.h +807 -0
  643. package/src/platforms/gba/lib/libgba/sysinclude/stdio_ext.h +79 -0
  644. package/src/platforms/gba/lib/libgba/sysinclude/stdlib.h +345 -0
  645. package/src/platforms/gba/lib/libgba/sysinclude/string.h +183 -0
  646. package/src/platforms/gba/lib/libgba/sysinclude/strings.h +80 -0
  647. package/src/platforms/gba/lib/libgba/sysinclude/sys/_default_fcntl.h +241 -0
  648. package/src/platforms/gba/lib/libgba/sysinclude/sys/_intsup.h +199 -0
  649. package/src/platforms/gba/lib/libgba/sysinclude/sys/_locale.h +12 -0
  650. package/src/platforms/gba/lib/libgba/sysinclude/sys/_pthreadtypes.h +233 -0
  651. package/src/platforms/gba/lib/libgba/sysinclude/sys/_sigset.h +43 -0
  652. package/src/platforms/gba/lib/libgba/sysinclude/sys/_stdint.h +90 -0
  653. package/src/platforms/gba/lib/libgba/sysinclude/sys/_timespec.h +52 -0
  654. package/src/platforms/gba/lib/libgba/sysinclude/sys/_timeval.h +60 -0
  655. package/src/platforms/gba/lib/libgba/sysinclude/sys/_types.h +228 -0
  656. package/src/platforms/gba/lib/libgba/sysinclude/sys/_tz_structs.h +24 -0
  657. package/src/platforms/gba/lib/libgba/sysinclude/sys/cdefs.h +754 -0
  658. package/src/platforms/gba/lib/libgba/sysinclude/sys/config.h +314 -0
  659. package/src/platforms/gba/lib/libgba/sysinclude/sys/custom_file.h +2 -0
  660. package/src/platforms/gba/lib/libgba/sysinclude/sys/dir.h +10 -0
  661. package/src/platforms/gba/lib/libgba/sysinclude/sys/dirent.h +13 -0
  662. package/src/platforms/gba/lib/libgba/sysinclude/sys/endian.h +207 -0
  663. package/src/platforms/gba/lib/libgba/sysinclude/sys/errno.h +198 -0
  664. package/src/platforms/gba/lib/libgba/sysinclude/sys/fcntl.h +12 -0
  665. package/src/platforms/gba/lib/libgba/sysinclude/sys/features.h +551 -0
  666. package/src/platforms/gba/lib/libgba/sysinclude/sys/fenv.h +90 -0
  667. package/src/platforms/gba/lib/libgba/sysinclude/sys/file.h +2 -0
  668. package/src/platforms/gba/lib/libgba/sysinclude/sys/iconvnls.h +77 -0
  669. package/src/platforms/gba/lib/libgba/sysinclude/sys/iosupport.h +143 -0
  670. package/src/platforms/gba/lib/libgba/sysinclude/sys/lock.h +75 -0
  671. package/src/platforms/gba/lib/libgba/sysinclude/sys/param.h +35 -0
  672. package/src/platforms/gba/lib/libgba/sysinclude/sys/queue.h +919 -0
  673. package/src/platforms/gba/lib/libgba/sysinclude/sys/reent.h +913 -0
  674. package/src/platforms/gba/lib/libgba/sysinclude/sys/resource.h +24 -0
  675. package/src/platforms/gba/lib/libgba/sysinclude/sys/sched.h +69 -0
  676. package/src/platforms/gba/lib/libgba/sysinclude/sys/select.h +94 -0
  677. package/src/platforms/gba/lib/libgba/sysinclude/sys/signal.h +388 -0
  678. package/src/platforms/gba/lib/libgba/sysinclude/sys/stat.h +179 -0
  679. package/src/platforms/gba/lib/libgba/sysinclude/sys/statvfs.h +41 -0
  680. package/src/platforms/gba/lib/libgba/sysinclude/sys/stdio.h +27 -0
  681. package/src/platforms/gba/lib/libgba/sysinclude/sys/string.h +2 -0
  682. package/src/platforms/gba/lib/libgba/sysinclude/sys/syslimits.h +61 -0
  683. package/src/platforms/gba/lib/libgba/sysinclude/sys/time.h +448 -0
  684. package/src/platforms/gba/lib/libgba/sysinclude/sys/timeb.h +40 -0
  685. package/src/platforms/gba/lib/libgba/sysinclude/sys/times.h +32 -0
  686. package/src/platforms/gba/lib/libgba/sysinclude/sys/timespec.h +63 -0
  687. package/src/platforms/gba/lib/libgba/sysinclude/sys/tree.h +864 -0
  688. package/src/platforms/gba/lib/libgba/sysinclude/sys/types.h +228 -0
  689. package/src/platforms/gba/lib/libgba/sysinclude/sys/unistd.h +591 -0
  690. package/src/platforms/gba/lib/libgba/sysinclude/sys/utime.h +22 -0
  691. package/src/platforms/gba/lib/libgba/sysinclude/sys/wait.h +44 -0
  692. package/src/platforms/gba/lib/libgba/sysinclude/tar.h +43 -0
  693. package/src/platforms/gba/lib/libgba/sysinclude/termios.h +7 -0
  694. package/src/platforms/gba/lib/libgba/sysinclude/tgmath.h +127 -0
  695. package/src/platforms/gba/lib/libgba/sysinclude/threads.h +93 -0
  696. package/src/platforms/gba/lib/libgba/sysinclude/time.h +313 -0
  697. package/src/platforms/gba/lib/libgba/sysinclude/unctrl.h +42 -0
  698. package/src/platforms/gba/lib/libgba/sysinclude/unistd.h +6 -0
  699. package/src/platforms/gba/lib/libgba/sysinclude/utime.h +12 -0
  700. package/src/platforms/gba/lib/libgba/sysinclude/utmp.h +8 -0
  701. package/src/platforms/gba/lib/libgba/sysinclude/varargs.h +7 -0
  702. package/src/platforms/gba/lib/libgba/sysinclude/wchar.h +339 -0
  703. package/src/platforms/gba/lib/libgba/sysinclude/wctype.h +74 -0
  704. package/src/platforms/gba/lib/libgba/sysinclude/wordexp.h +53 -0
  705. package/src/platforms/gba/lib/libtonc/crtbegin.o +0 -0
  706. package/src/platforms/gba/lib/libtonc/crtend.o +0 -0
  707. package/src/platforms/gba/lib/libtonc/crti.o +0 -0
  708. package/src/platforms/gba/lib/libtonc/crtn.o +0 -0
  709. package/src/platforms/gba/lib/libtonc/gba_cart.ld +319 -0
  710. package/src/platforms/gba/lib/libtonc/gba_crt0.s +258 -0
  711. package/src/platforms/gba/lib/libtonc/include/tonc.h +72 -0
  712. package/src/platforms/gba/lib/libtonc/include/tonc_asminc.h +132 -0
  713. package/src/platforms/gba/lib/libtonc/include/tonc_bios.h +555 -0
  714. package/src/platforms/gba/lib/libtonc/include/tonc_core.h +573 -0
  715. package/src/platforms/gba/lib/libtonc/include/tonc_input.h +184 -0
  716. package/src/platforms/gba/lib/libtonc/include/tonc_irq.h +121 -0
  717. package/src/platforms/gba/lib/libtonc/include/tonc_legacy.h +481 -0
  718. package/src/platforms/gba/lib/libtonc/include/tonc_libgba.h +537 -0
  719. package/src/platforms/gba/lib/libtonc/include/tonc_math.h +692 -0
  720. package/src/platforms/gba/lib/libtonc/include/tonc_memdef.h +962 -0
  721. package/src/platforms/gba/lib/libtonc/include/tonc_memmap.h +583 -0
  722. package/src/platforms/gba/lib/libtonc/include/tonc_nocash.h +51 -0
  723. package/src/platforms/gba/lib/libtonc/include/tonc_oam.h +186 -0
  724. package/src/platforms/gba/lib/libtonc/include/tonc_surface.h +461 -0
  725. package/src/platforms/gba/lib/libtonc/include/tonc_text.h +270 -0
  726. package/src/platforms/gba/lib/libtonc/include/tonc_tte.h +748 -0
  727. package/src/platforms/gba/lib/libtonc/include/tonc_types.h +376 -0
  728. package/src/platforms/gba/lib/libtonc/include/tonc_video.h +615 -0
  729. package/src/platforms/gba/lib/libtonc/libtonc.seed.a +0 -0
  730. package/src/platforms/gba/lib/libtonc/libtonc.seed.hash +1 -0
  731. package/src/platforms/gba/lib/libtonc/src/asm/clr_blend_fast.s +72 -0
  732. package/src/platforms/gba/lib/libtonc/src/asm/clr_fade_fast.s +74 -0
  733. package/src/platforms/gba/lib/libtonc/src/asm/div_lut.s +54 -0
  734. package/src/platforms/gba/lib/libtonc/src/asm/sin_lut.s +90 -0
  735. package/src/platforms/gba/lib/libtonc/src/asm/tonc_bios.s +289 -0
  736. package/src/platforms/gba/lib/libtonc/src/asm/tonc_bios_ex.s +97 -0
  737. package/src/platforms/gba/lib/libtonc/src/asm/tonc_isr_master.s +92 -0
  738. package/src/platforms/gba/lib/libtonc/src/asm/tonc_isr_nest.s +98 -0
  739. package/src/platforms/gba/lib/libtonc/src/asm/tonc_memcpy.s +126 -0
  740. package/src/platforms/gba/lib/libtonc/src/asm/tonc_memset.s +123 -0
  741. package/src/platforms/gba/lib/libtonc/src/asm/tonc_nocash.s +73 -0
  742. package/src/platforms/gba/lib/libtonc/src/font/sys8.png +0 -0
  743. package/src/platforms/gba/lib/libtonc/src/font/sys8.s +46 -0
  744. package/src/platforms/gba/lib/libtonc/src/font/verdana10.png +0 -0
  745. package/src/platforms/gba/lib/libtonc/src/font/verdana10.s +293 -0
  746. package/src/platforms/gba/lib/libtonc/src/font/verdana9.png +0 -0
  747. package/src/platforms/gba/lib/libtonc/src/font/verdana9.s +167 -0
  748. package/src/platforms/gba/lib/libtonc/src/font/verdana9_b4.png +0 -0
  749. package/src/platforms/gba/lib/libtonc/src/font/verdana9_b4.s +545 -0
  750. package/src/platforms/gba/lib/libtonc/src/font/verdana9b.png +0 -0
  751. package/src/platforms/gba/lib/libtonc/src/font/verdana9b.s +167 -0
  752. package/src/platforms/gba/lib/libtonc/src/font/verdana9i.png +0 -0
  753. package/src/platforms/gba/lib/libtonc/src/font/verdana9i.s +167 -0
  754. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_bitmap.c +289 -0
  755. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text.c +81 -0
  756. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_bm.c +244 -0
  757. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_map.c +122 -0
  758. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_oam.c +113 -0
  759. package/src/platforms/gba/lib/libtonc/src/pre1.3/toncfont.s +43 -0
  760. package/src/platforms/gba/lib/libtonc/src/tonc_bg.c +61 -0
  761. package/src/platforms/gba/lib/libtonc/src/tonc_bg_affine.c +112 -0
  762. package/src/platforms/gba/lib/libtonc/src/tonc_bmp16.c +240 -0
  763. package/src/platforms/gba/lib/libtonc/src/tonc_bmp8.c +314 -0
  764. package/src/platforms/gba/lib/libtonc/src/tonc_color.c +368 -0
  765. package/src/platforms/gba/lib/libtonc/src/tonc_core.c +237 -0
  766. package/src/platforms/gba/lib/libtonc/src/tonc_input.c +118 -0
  767. package/src/platforms/gba/lib/libtonc/src/tonc_irq.c +271 -0
  768. package/src/platforms/gba/lib/libtonc/src/tonc_math.c +54 -0
  769. package/src/platforms/gba/lib/libtonc/src/tonc_oam.c +76 -0
  770. package/src/platforms/gba/lib/libtonc/src/tonc_obj_affine.c +146 -0
  771. package/src/platforms/gba/lib/libtonc/src/tonc_sbmp16.c +369 -0
  772. package/src/platforms/gba/lib/libtonc/src/tonc_sbmp8.c +405 -0
  773. package/src/platforms/gba/lib/libtonc/src/tonc_schr4c.c +588 -0
  774. package/src/platforms/gba/lib/libtonc/src/tonc_schr4r.c +462 -0
  775. package/src/platforms/gba/lib/libtonc/src/tonc_surface.c +105 -0
  776. package/src/platforms/gba/lib/libtonc/src/tonc_video.c +33 -0
  777. package/src/platforms/gba/lib/libtonc/src/tte/ase_drawg.c +83 -0
  778. package/src/platforms/gba/lib/libtonc/src/tte/bmp16_drawg.c +72 -0
  779. package/src/platforms/gba/lib/libtonc/src/tte/bmp16_drawg_b1cs.c +92 -0
  780. package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg.c +71 -0
  781. package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg_b1cs.c +104 -0
  782. package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg_b1cts_fast.s +115 -0
  783. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b1cts.c +76 -0
  784. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b1cts_fast.s +128 -0
  785. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b4cts.c +67 -0
  786. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b4cts_fast.s +127 -0
  787. package/src/platforms/gba/lib/libtonc/src/tte/chr4r_drawg_b1cts.c +80 -0
  788. package/src/platforms/gba/lib/libtonc/src/tte/chr4r_drawg_b1cts_fast.s +145 -0
  789. package/src/platforms/gba/lib/libtonc/src/tte/obj_drawg.c +61 -0
  790. package/src/platforms/gba/lib/libtonc/src/tte/se_drawg.c +110 -0
  791. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_ase.c +87 -0
  792. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_bmp.c +118 -0
  793. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_chr4c.c +86 -0
  794. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_chr4r.c +87 -0
  795. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_obj.c +84 -0
  796. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_se.c +96 -0
  797. package/src/platforms/gba/lib/libtonc/src/tte/tte_iohook.c +264 -0
  798. package/src/platforms/gba/lib/libtonc/src/tte/tte_main.c +756 -0
  799. package/src/platforms/gba/lib/libtonc/src/tte/tte_types.s +119 -0
  800. package/src/platforms/gba/lib/maxmod/LICENSE-MAXMOD +23 -0
  801. package/src/platforms/gba/lib/maxmod/asm_include/mp_defs.inc +117 -0
  802. package/src/platforms/gba/lib/maxmod/asm_include/mp_format_mas.inc +108 -0
  803. package/src/platforms/gba/lib/maxmod/asm_include/mp_macros.inc +195 -0
  804. package/src/platforms/gba/lib/maxmod/asm_include/mp_mas.inc +40 -0
  805. package/src/platforms/gba/lib/maxmod/asm_include/mp_mas_structs.inc +189 -0
  806. package/src/platforms/gba/lib/maxmod/asm_include/mp_mixer_ds.inc +46 -0
  807. package/src/platforms/gba/lib/maxmod/asm_include/mp_mixer_gba.inc +42 -0
  808. package/src/platforms/gba/lib/maxmod/asm_include/swi_gba.inc +23 -0
  809. package/src/platforms/gba/lib/maxmod/include/maxmod.h +412 -0
  810. package/src/platforms/gba/lib/maxmod/include/mm_types.h +333 -0
  811. package/src/platforms/gba/lib/maxmod/maxmod.seed.a +0 -0
  812. package/src/platforms/gba/lib/maxmod/maxmod.seed.hash +1 -0
  813. package/src/platforms/gba/lib/maxmod/music/chiptune.xm +0 -0
  814. package/src/platforms/gba/lib/maxmod/music/chiptune_soundbank.bin +0 -0
  815. package/src/platforms/gba/lib/maxmod/music/chiptune_soundbank.h +4 -0
  816. package/src/platforms/gba/lib/maxmod/music/make_chiptune_xm.js +203 -0
  817. package/src/platforms/gba/lib/maxmod/source/mm_effect.s +767 -0
  818. package/src/platforms/gba/lib/maxmod/source/mm_main.s +115 -0
  819. package/src/platforms/gba/lib/maxmod/source/mm_mas.s +4990 -0
  820. package/src/platforms/gba/lib/maxmod/source/mm_mas_arm.s +612 -0
  821. package/src/platforms/gba/lib/maxmod/source_gba/mm_init_default.s +98 -0
  822. package/src/platforms/gba/lib/maxmod/source_gba/mm_main_gba.s +292 -0
  823. package/src/platforms/gba/lib/maxmod/source_gba/mm_mixer_gba.s +1367 -0
  824. package/src/platforms/gba/lib/sysbase/gba_iosupport.c +138 -0
  825. package/src/platforms/gbc/MENTAL_MODEL.md +178 -0
  826. package/src/platforms/gbc/TROUBLESHOOTING.md +142 -0
  827. package/src/platforms/gbc/UPSTREAM_SOURCES.md +60 -0
  828. package/src/platforms/gbc/lib/c/LICENSE-HUGEDRIVER +25 -0
  829. package/src/platforms/gbc/lib/c/README.md +122 -0
  830. package/src/platforms/gbc/lib/c/SDCC_GOTCHAS.md +190 -0
  831. package/src/platforms/gbc/lib/c/gb_crt0.s +163 -0
  832. package/src/platforms/gbc/lib/c/gb_hardware.h +113 -0
  833. package/src/platforms/gbc/lib/c/gb_runtime.c +284 -0
  834. package/src/platforms/gbc/lib/c/gb_runtime.h +145 -0
  835. package/src/platforms/gbc/lib/c/hUGEDriver.c +191 -0
  836. package/src/platforms/gbc/lib/c/hUGEDriver.h +95 -0
  837. package/src/platforms/gbc/lib/c/hUGEDriver.upstream.asm +1908 -0
  838. package/src/platforms/gbc/lib/c/lcd_init.c +19 -0
  839. package/src/platforms/gbc/lib/c/patch-header.js +154 -0
  840. package/src/platforms/gbc/lib/c/song_data.c +88 -0
  841. package/src/platforms/gbc/lib/c/unroll.h +52 -0
  842. package/src/platforms/gbc/lib/c/wait_vblank.c +14 -0
  843. package/src/platforms/gbc/song.js +3 -0
  844. package/src/platforms/genesis/MENTAL_MODEL.md +306 -0
  845. package/src/platforms/genesis/TROUBLESHOOTING.md +226 -0
  846. package/src/platforms/genesis/UPSTREAM_SOURCES.md +53 -0
  847. package/src/platforms/genesis/image-to-tilemap.js +351 -0
  848. package/src/platforms/genesis/lib/README.md +160 -0
  849. package/src/platforms/genesis/lib/c/crtbegin.o +0 -0
  850. package/src/platforms/genesis/lib/c/crtend.o +0 -0
  851. package/src/platforms/genesis/lib/c/genesis.ld +44 -0
  852. package/src/platforms/genesis/lib/c/genesis_sfx.c +51 -0
  853. package/src/platforms/genesis/lib/c/genesis_sfx.h +49 -0
  854. package/src/platforms/genesis/lib/c/libc.a +0 -0
  855. package/src/platforms/genesis/lib/c/libgcc.a +0 -0
  856. package/src/platforms/genesis/lib/c/libm.a +0 -0
  857. package/src/platforms/genesis/lib/c/sega.s +71 -0
  858. package/src/platforms/genesis/lib/header.s +96 -0
  859. package/src/platforms/genesis/lib/nmi_safe.s +79 -0
  860. package/src/platforms/genesis/lib/pad_read.s +104 -0
  861. package/src/platforms/genesis/lib/sgdk/COPYING.RUNTIME +73 -0
  862. package/src/platforms/genesis/lib/sgdk/LICENSE +12 -0
  863. package/src/platforms/genesis/lib/sgdk/include/asm.h +52 -0
  864. package/src/platforms/genesis/lib/sgdk/include/asm_mac.i +9 -0
  865. package/src/platforms/genesis/lib/sgdk/include/bmp.h +690 -0
  866. package/src/platforms/genesis/lib/sgdk/include/config.h +208 -0
  867. package/src/platforms/genesis/lib/sgdk/include/dma.h +542 -0
  868. package/src/platforms/genesis/lib/sgdk/include/ext/console.h +387 -0
  869. package/src/platforms/genesis/lib/sgdk/include/ext/everdrive.h +116 -0
  870. package/src/platforms/genesis/lib/sgdk/include/ext/fat16.h +84 -0
  871. package/src/platforms/genesis/lib/sgdk/include/ext/flash-save/flash.h +164 -0
  872. package/src/platforms/genesis/lib/sgdk/include/ext/flash-save/saveman.h +177 -0
  873. package/src/platforms/genesis/lib/sgdk/include/ext/link_cable.h +316 -0
  874. package/src/platforms/genesis/lib/sgdk/include/ext/minimusic/minimus.h +29 -0
  875. package/src/platforms/genesis/lib/sgdk/include/ext/mw/16c550.h +221 -0
  876. package/src/platforms/genesis/lib/sgdk/include/ext/mw/comm.h +93 -0
  877. package/src/platforms/genesis/lib/sgdk/include/ext/mw/gamejolt.h +541 -0
  878. package/src/platforms/genesis/lib/sgdk/include/ext/mw/jsmn.h +471 -0
  879. package/src/platforms/genesis/lib/sgdk/include/ext/mw/json.h +122 -0
  880. package/src/platforms/genesis/lib/sgdk/include/ext/mw/lsd.h +172 -0
  881. package/src/platforms/genesis/lib/sgdk/include/ext/mw/megawifi.h +984 -0
  882. package/src/platforms/genesis/lib/sgdk/include/ext/mw/mw-msg.h +392 -0
  883. package/src/platforms/genesis/lib/sgdk/include/ext/mw/ssf_ed_pro.h +38 -0
  884. package/src/platforms/genesis/lib/sgdk/include/ext/mw/ssf_ed_x7.h +73 -0
  885. package/src/platforms/genesis/lib/sgdk/include/ext/serial/buffer.h +8 -0
  886. package/src/platforms/genesis/lib/sgdk/include/ext/serial/serial.h +133 -0
  887. package/src/platforms/genesis/lib/sgdk/include/ext/stb/stb_sprintf.h +1864 -0
  888. package/src/platforms/genesis/lib/sgdk/include/genesis.h +92 -0
  889. package/src/platforms/genesis/lib/sgdk/include/joy.h +482 -0
  890. package/src/platforms/genesis/lib/sgdk/include/kdebug.h +21 -0
  891. package/src/platforms/genesis/lib/sgdk/include/map.h +409 -0
  892. package/src/platforms/genesis/lib/sgdk/include/mapper.h +186 -0
  893. package/src/platforms/genesis/lib/sgdk/include/maths.h +1071 -0
  894. package/src/platforms/genesis/lib/sgdk/include/maths3D.h +480 -0
  895. package/src/platforms/genesis/lib/sgdk/include/memory.h +346 -0
  896. package/src/platforms/genesis/lib/sgdk/include/memory_base.h +37 -0
  897. package/src/platforms/genesis/lib/sgdk/include/object.h +171 -0
  898. package/src/platforms/genesis/lib/sgdk/include/pal.h +500 -0
  899. package/src/platforms/genesis/lib/sgdk/include/pool.h +171 -0
  900. package/src/platforms/genesis/lib/sgdk/include/psg.h +153 -0
  901. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_dpcm2.h +79 -0
  902. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_pcm.h +98 -0
  903. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_pcm4.h +125 -0
  904. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/tab_vol.h +6 -0
  905. package/src/platforms/genesis/lib/sgdk/include/snd/smp_null.h +6 -0
  906. package/src/platforms/genesis/lib/sgdk/include/snd/smp_null_dpcm.h +6 -0
  907. package/src/platforms/genesis/lib/sgdk/include/snd/sound.h +70 -0
  908. package/src/platforms/genesis/lib/sgdk/include/snd/xgm.h +399 -0
  909. package/src/platforms/genesis/lib/sgdk/include/snd/xgm2.h +389 -0
  910. package/src/platforms/genesis/lib/sgdk/include/snd/z80_def.i80 +41 -0
  911. package/src/platforms/genesis/lib/sgdk/include/snd/z80_fct.i80 +83 -0
  912. package/src/platforms/genesis/lib/sgdk/include/snd/z80_mac.i80 +1476 -0
  913. package/src/platforms/genesis/lib/sgdk/include/sprite_eng.h +1095 -0
  914. package/src/platforms/genesis/lib/sgdk/include/sprite_eng_legacy.h +1030 -0
  915. package/src/platforms/genesis/lib/sgdk/include/sram.h +110 -0
  916. package/src/platforms/genesis/lib/sgdk/include/string.h +349 -0
  917. package/src/platforms/genesis/lib/sgdk/include/sys.h +511 -0
  918. package/src/platforms/genesis/lib/sgdk/include/tab_cnv.h +19 -0
  919. package/src/platforms/genesis/lib/sgdk/include/task.h +77 -0
  920. package/src/platforms/genesis/lib/sgdk/include/task_cst.h +33 -0
  921. package/src/platforms/genesis/lib/sgdk/include/timer.h +132 -0
  922. package/src/platforms/genesis/lib/sgdk/include/tools.h +450 -0
  923. package/src/platforms/genesis/lib/sgdk/include/types.h +320 -0
  924. package/src/platforms/genesis/lib/sgdk/include/vdp.h +1150 -0
  925. package/src/platforms/genesis/lib/sgdk/include/vdp_bg.h +723 -0
  926. package/src/platforms/genesis/lib/sgdk/include/vdp_pal.h +101 -0
  927. package/src/platforms/genesis/lib/sgdk/include/vdp_spr.h +448 -0
  928. package/src/platforms/genesis/lib/sgdk/include/vdp_tile.h +1136 -0
  929. package/src/platforms/genesis/lib/sgdk/include/vram.h +270 -0
  930. package/src/platforms/genesis/lib/sgdk/include/ym2612.h +87 -0
  931. package/src/platforms/genesis/lib/sgdk/include/z80_ctrl.h +420 -0
  932. package/src/platforms/genesis/lib/sgdk/libmd.seed.a +0 -0
  933. package/src/platforms/genesis/lib/sgdk/libmd.seed.hash +1 -0
  934. package/src/platforms/genesis/lib/sgdk/md.ld +120 -0
  935. package/src/platforms/genesis/lib/sgdk/music/demo.vgm +0 -0
  936. package/src/platforms/genesis/lib/sgdk/music/demo.xgc +0 -0
  937. package/src/platforms/genesis/lib/sgdk/music/demo.xgm +0 -0
  938. package/src/platforms/genesis/lib/sgdk/res/image/font_default.png +0 -0
  939. package/src/platforms/genesis/lib/sgdk/res/image/sgdk_logo.png +0 -0
  940. package/src/platforms/genesis/lib/sgdk/res/libres.h +10 -0
  941. package/src/platforms/genesis/lib/sgdk/res/libres.res +5 -0
  942. package/src/platforms/genesis/lib/sgdk/res/libres.s +166 -0
  943. package/src/platforms/genesis/lib/sgdk/res/sound/stop_xgm.bin +0 -0
  944. package/src/platforms/genesis/lib/sgdk/rom_header.c +33 -0
  945. package/src/platforms/genesis/lib/sgdk/sega.preprocessed.s +364 -0
  946. package/src/platforms/genesis/lib/sgdk/sega.s +365 -0
  947. package/src/platforms/genesis/lib/sgdk/src/bmp.c +1539 -0
  948. package/src/platforms/genesis/lib/sgdk/src/bmp_a.s +3477 -0
  949. package/src/platforms/genesis/lib/sgdk/src/boot/rom_header.c +33 -0
  950. package/src/platforms/genesis/lib/sgdk/src/boot/sega.s +365 -0
  951. package/src/platforms/genesis/lib/sgdk/src/dma.c +782 -0
  952. package/src/platforms/genesis/lib/sgdk/src/dma_a.s +23 -0
  953. package/src/platforms/genesis/lib/sgdk/src/error_a.s +376 -0
  954. package/src/platforms/genesis/lib/sgdk/src/ext/console.c +490 -0
  955. package/src/platforms/genesis/lib/sgdk/src/ext/everdrive.c +285 -0
  956. package/src/platforms/genesis/lib/sgdk/src/ext/fat16.c +610 -0
  957. package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/README.md +112 -0
  958. package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/flash.c +300 -0
  959. package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/saveman.c +641 -0
  960. package/src/platforms/genesis/lib/sgdk/src/ext/link_cable.c +1758 -0
  961. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/CHANGELOG.md +31 -0
  962. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/LICENSE.txt +17 -0
  963. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/README.md +18 -0
  964. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/data.z80 +148 -0
  965. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/define.z80 +173 -0
  966. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/api-c.md +80 -0
  967. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/format.md +132 -0
  968. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/teradrive.md +33 -0
  969. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/fm.z80 +363 -0
  970. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/main.z80 +433 -0
  971. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/minimus.c +129 -0
  972. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/minimus_drv.s80 +17 -0
  973. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/psg.z80 +231 -0
  974. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/track.z80 +398 -0
  975. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/util.z80 +98 -0
  976. package/src/platforms/genesis/lib/sgdk/src/ext/mw/16c550.c +84 -0
  977. package/src/platforms/genesis/lib/sgdk/src/ext/mw/README.md +849 -0
  978. package/src/platforms/genesis/lib/sgdk/src/ext/mw/comm.c +141 -0
  979. package/src/platforms/genesis/lib/sgdk/src/ext/mw/gamejolt.c +758 -0
  980. package/src/platforms/genesis/lib/sgdk/src/ext/mw/json.c +153 -0
  981. package/src/platforms/genesis/lib/sgdk/src/ext/mw/lsd.c +364 -0
  982. package/src/platforms/genesis/lib/sgdk/src/ext/mw/megawifi.c +1501 -0
  983. package/src/platforms/genesis/lib/sgdk/src/ext/mw/ssf_ed_pro.c +98 -0
  984. package/src/platforms/genesis/lib/sgdk/src/ext/mw/ssf_ed_x7.c +67 -0
  985. package/src/platforms/genesis/lib/sgdk/src/ext/serial/buffer.c +69 -0
  986. package/src/platforms/genesis/lib/sgdk/src/ext/serial/serial.c +158 -0
  987. package/src/platforms/genesis/lib/sgdk/src/joy.c +1361 -0
  988. package/src/platforms/genesis/lib/sgdk/src/kdebug.s +109 -0
  989. package/src/platforms/genesis/lib/sgdk/src/map.c +1915 -0
  990. package/src/platforms/genesis/lib/sgdk/src/mapper.c +280 -0
  991. package/src/platforms/genesis/lib/sgdk/src/maths.c +878 -0
  992. package/src/platforms/genesis/lib/sgdk/src/maths3D.c +480 -0
  993. package/src/platforms/genesis/lib/sgdk/src/maths3D_a.s +205 -0
  994. package/src/platforms/genesis/lib/sgdk/src/memory.c +760 -0
  995. package/src/platforms/genesis/lib/sgdk/src/memory_a.s +306 -0
  996. package/src/platforms/genesis/lib/sgdk/src/object.c +111 -0
  997. package/src/platforms/genesis/lib/sgdk/src/pal.c +484 -0
  998. package/src/platforms/genesis/lib/sgdk/src/pool.c +234 -0
  999. package/src/platforms/genesis/lib/sgdk/src/psg.c +82 -0
  1000. package/src/platforms/genesis/lib/sgdk/src/snd/drv_null.s80 +27 -0
  1001. package/src/platforms/genesis/lib/sgdk/src/snd/drv_xgm.s80 +3037 -0
  1002. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_dpcm2.s80 +984 -0
  1003. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_pcm.s80 +592 -0
  1004. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_pcm4.s80 +699 -0
  1005. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_dpcm2.c +172 -0
  1006. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_pcm.c +152 -0
  1007. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_pcm4.c +213 -0
  1008. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/tab_vol.c +277 -0
  1009. package/src/platforms/genesis/lib/sgdk/src/snd/smp_null.s +22 -0
  1010. package/src/platforms/genesis/lib/sgdk/src/snd/smp_null_dpcm.s +15 -0
  1011. package/src/platforms/genesis/lib/sgdk/src/snd/sound.c +33 -0
  1012. package/src/platforms/genesis/lib/sgdk/src/snd/xgm.c +683 -0
  1013. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2.s80 +993 -0
  1014. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_fct.i80 +611 -0
  1015. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_mac.i80 +133 -0
  1016. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_pcm_fct.i80 +114 -0
  1017. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_pcm_mac.i80 +1444 -0
  1018. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_psg_fct.i80 +491 -0
  1019. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_psg_mac.i80 +43 -0
  1020. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_ym_fct.i80 +1664 -0
  1021. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_ym_mac.i80 +295 -0
  1022. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2.c +1083 -0
  1023. package/src/platforms/genesis/lib/sgdk/src/sprite_eng.c +2256 -0
  1024. package/src/platforms/genesis/lib/sgdk/src/sprite_eng_legacy.c +2309 -0
  1025. package/src/platforms/genesis/lib/sgdk/src/sram.c +30 -0
  1026. package/src/platforms/genesis/lib/sgdk/src/sram_a.s +41 -0
  1027. package/src/platforms/genesis/lib/sgdk/src/string.c +720 -0
  1028. package/src/platforms/genesis/lib/sgdk/src/sys.c +1053 -0
  1029. package/src/platforms/genesis/lib/sgdk/src/sys_a.s +74 -0
  1030. package/src/platforms/genesis/lib/sgdk/src/tab_cnv.c +129 -0
  1031. package/src/platforms/genesis/lib/sgdk/src/tab_log10.c +8201 -0
  1032. package/src/platforms/genesis/lib/sgdk/src/tab_log2.c +8201 -0
  1033. package/src/platforms/genesis/lib/sgdk/src/tab_sin.c +2058 -0
  1034. package/src/platforms/genesis/lib/sgdk/src/tab_sqrt.c +8201 -0
  1035. package/src/platforms/genesis/lib/sgdk/src/task.s +148 -0
  1036. package/src/platforms/genesis/lib/sgdk/src/timer.c +201 -0
  1037. package/src/platforms/genesis/lib/sgdk/src/tools.c +1299 -0
  1038. package/src/platforms/genesis/lib/sgdk/src/tools_a.s +979 -0
  1039. package/src/platforms/genesis/lib/sgdk/src/types.c +18 -0
  1040. package/src/platforms/genesis/lib/sgdk/src/vdp.c +1060 -0
  1041. package/src/platforms/genesis/lib/sgdk/src/vdp_bg.c +511 -0
  1042. package/src/platforms/genesis/lib/sgdk/src/vdp_spr.c +322 -0
  1043. package/src/platforms/genesis/lib/sgdk/src/vdp_tile.c +1011 -0
  1044. package/src/platforms/genesis/lib/sgdk/src/vdp_tile_a.s +68 -0
  1045. package/src/platforms/genesis/lib/sgdk/src/vram.c +273 -0
  1046. package/src/platforms/genesis/lib/sgdk/src/ym2612.c +175 -0
  1047. package/src/platforms/genesis/lib/sgdk/src/z80_ctrl.c +334 -0
  1048. package/src/platforms/genesis/lib/sprite_table.s +129 -0
  1049. package/src/platforms/genesis/lib/vblank_wait.s +73 -0
  1050. package/src/platforms/genesis/lib/vdp_init.s +85 -0
  1051. package/src/platforms/genesis/lib/wram.s +88 -0
  1052. package/src/platforms/genesis/lib/z80_bootstrap.s +102 -0
  1053. package/src/platforms/genesis/vdp.js +548 -0
  1054. package/src/platforms/genesis/xgm2-pcm.js +165 -0
  1055. package/src/platforms/gg/MENTAL_MODEL.md +174 -0
  1056. package/src/platforms/gg/TROUBLESHOOTING.md +105 -0
  1057. package/src/platforms/gg/UPSTREAM_SOURCES.md +36 -0
  1058. package/src/platforms/gg/lib/c/gg_crt0.s +112 -0
  1059. package/src/platforms/gg/lib/c/gg_hw.h +62 -0
  1060. package/src/platforms/gg/lib/c/gg_music.c +155 -0
  1061. package/src/platforms/gg/lib/c/gg_music.h +89 -0
  1062. package/src/platforms/gg/lib/c/gg_sfx.c +82 -0
  1063. package/src/platforms/gg/lib/c/gg_sfx.h +40 -0
  1064. package/src/platforms/gg/lib/c/joypad_read.c +22 -0
  1065. package/src/platforms/gg/lib/c/load_palette.c +20 -0
  1066. package/src/platforms/gg/lib/c/load_tiles.c +32 -0
  1067. package/src/platforms/gg/lib/c/sprite_table.c +60 -0
  1068. package/src/platforms/gg/lib/c/vblank_wait.c +10 -0
  1069. package/src/platforms/gg/lib/c/vdp_init.c +58 -0
  1070. package/src/platforms/gg/song.js +189 -0
  1071. package/src/platforms/index.js +7 -0
  1072. package/src/platforms/lynx/MENTAL_MODEL.md +248 -0
  1073. package/src/platforms/lynx/TROUBLESHOOTING.md +105 -0
  1074. package/src/platforms/lynx/UPSTREAM_SOURCES.md +66 -0
  1075. package/src/platforms/lynx/lib/c/lynx_music.c +63 -0
  1076. package/src/platforms/lynx/lib/c/lynx_music.h +16 -0
  1077. package/src/platforms/lynx/lib/c/lynx_sfx.c +147 -0
  1078. package/src/platforms/lynx/lib/c/lynx_sfx.h +59 -0
  1079. package/src/platforms/lynx/lib/cc65-src/bllhdr.s +18 -0
  1080. package/src/platforms/lynx/lib/cc65-src/bootldr.s +195 -0
  1081. package/src/platforms/lynx/lib/cc65-src/cgetc.s +69 -0
  1082. package/src/platforms/lynx/lib/cc65-src/clock.s +87 -0
  1083. package/src/platforms/lynx/lib/cc65-src/crt0.s +135 -0
  1084. package/src/platforms/lynx/lib/cc65-src/defdir.s +29 -0
  1085. package/src/platforms/lynx/lib/cc65-src/eeprom.s +255 -0
  1086. package/src/platforms/lynx/lib/cc65-src/eeprom46.s +204 -0
  1087. package/src/platforms/lynx/lib/cc65-src/eeprom66.s +227 -0
  1088. package/src/platforms/lynx/lib/cc65-src/eeprom86.s +236 -0
  1089. package/src/platforms/lynx/lib/cc65-src/exec.s +34 -0
  1090. package/src/platforms/lynx/lib/cc65-src/exehdr.s +27 -0
  1091. package/src/platforms/lynx/lib/cc65-src/extzp.inc +23 -0
  1092. package/src/platforms/lynx/lib/cc65-src/extzp.s +30 -0
  1093. package/src/platforms/lynx/lib/cc65-src/irq.s +45 -0
  1094. package/src/platforms/lynx/lib/cc65-src/joy/lynx-stdjoy.s +93 -0
  1095. package/src/platforms/lynx/lib/cc65-src/joy_stat_stddrv.s +14 -0
  1096. package/src/platforms/lynx/lib/cc65-src/kbhit.s +56 -0
  1097. package/src/platforms/lynx/lib/cc65-src/libref.s +9 -0
  1098. package/src/platforms/lynx/lib/cc65-src/load.s +41 -0
  1099. package/src/platforms/lynx/lib/cc65-src/lseek.s +58 -0
  1100. package/src/platforms/lynx/lib/cc65-src/lynx-cart.s +98 -0
  1101. package/src/platforms/lynx/lib/cc65-src/lynx-snd.s +1270 -0
  1102. package/src/platforms/lynx/lib/cc65-src/mainargs.s +24 -0
  1103. package/src/platforms/lynx/lib/cc65-src/open.s +136 -0
  1104. package/src/platforms/lynx/lib/cc65-src/oserror.s +14 -0
  1105. package/src/platforms/lynx/lib/cc65-src/read.s +44 -0
  1106. package/src/platforms/lynx/lib/cc65-src/ser/lynx-comlynx.s +404 -0
  1107. package/src/platforms/lynx/lib/cc65-src/ser_stat_stddrv.s +14 -0
  1108. package/src/platforms/lynx/lib/cc65-src/sysuname.s +39 -0
  1109. package/src/platforms/lynx/lib/cc65-src/tgi/lynx-160-102-16.s +1075 -0
  1110. package/src/platforms/lynx/lib/cc65-src/tgi_colors.s +9 -0
  1111. package/src/platforms/lynx/lib/cc65-src/tgi_irq.s +11 -0
  1112. package/src/platforms/lynx/lib/cc65-src/tgi_stat_stddrv.s +14 -0
  1113. package/src/platforms/lynx/lib/cc65-src/tgi_stddrv.s +13 -0
  1114. package/src/platforms/lynx/lib/cc65-src/uploader.s +81 -0
  1115. package/src/platforms/lynx/song.js +291 -0
  1116. package/src/platforms/msx/MENTAL_MODEL.md +115 -0
  1117. package/src/platforms/msx/TROUBLESHOOTING.md +62 -0
  1118. package/src/platforms/msx/UPSTREAM_SOURCES.md +46 -0
  1119. package/src/platforms/msx/image-to-tilemap.js +103 -0
  1120. package/src/platforms/msx/lib/c/hello_msx.c +51 -0
  1121. package/src/platforms/msx/lib/c/msx_crt0.s +74 -0
  1122. package/src/platforms/msx/lib/c/msx_hw.h +92 -0
  1123. package/src/platforms/msx/lib/c/msx_vdp.c +150 -0
  1124. package/src/platforms/msx/tiles.js +99 -0
  1125. package/src/platforms/msx/vdp.js +160 -0
  1126. package/src/platforms/nes/MENTAL_MODEL.md +323 -0
  1127. package/src/platforms/nes/TROUBLESHOOTING.md +319 -0
  1128. package/src/platforms/nes/UPSTREAM_SOURCES.md +31 -0
  1129. package/src/platforms/nes/image-to-chr.js +195 -0
  1130. package/src/platforms/nes/image-to-tilemap.js +415 -0
  1131. package/src/platforms/nes/lib/README.md +40 -0
  1132. package/src/platforms/nes/lib/asm/LICENSE-FAMITONE +40 -0
  1133. package/src/platforms/nes/lib/asm/chr_ram_header.s +32 -0
  1134. package/src/platforms/nes/lib/asm/famitone2.s +1258 -0
  1135. package/src/platforms/nes/lib/asm/famitone_bridge.s +50 -0
  1136. package/src/platforms/nes/lib/asm/music_data.s +238 -0
  1137. package/src/platforms/nes/lib/c/chr_ram_runtime_hello_sprite.c +81 -0
  1138. package/src/platforms/nes/lib/c/chr_ram_runtime_hud_row.c +101 -0
  1139. package/src/platforms/nes/lib/c/nes_runtime.c +347 -0
  1140. package/src/platforms/nes/lib/c/nes_runtime.h +153 -0
  1141. package/src/platforms/nes/lib/c/nmi_handler.c +51 -0
  1142. package/src/platforms/nes/lib/c/nmi_trampoline.s +25 -0
  1143. package/src/platforms/nes/lib/cc65-src/Makefile.inc +9 -0
  1144. package/src/platforms/nes/lib/cc65-src/_scrsize.s +24 -0
  1145. package/src/platforms/nes/lib/cc65-src/cclear.s +29 -0
  1146. package/src/platforms/nes/lib/cc65-src/chline.s +31 -0
  1147. package/src/platforms/nes/lib/cc65-src/clock.s +31 -0
  1148. package/src/platforms/nes/lib/cc65-src/clrscr.s +72 -0
  1149. package/src/platforms/nes/lib/cc65-src/color.s +68 -0
  1150. package/src/platforms/nes/lib/cc65-src/cpeekc.s +37 -0
  1151. package/src/platforms/nes/lib/cc65-src/cpeekcolor.s +8 -0
  1152. package/src/platforms/nes/lib/cc65-src/cpeekrevers.s +37 -0
  1153. package/src/platforms/nes/lib/cc65-src/cputc.s +95 -0
  1154. package/src/platforms/nes/lib/cc65-src/crt0.s +180 -0
  1155. package/src/platforms/nes/lib/cc65-src/cvline.s +31 -0
  1156. package/src/platforms/nes/lib/cc65-src/get_tv.s +37 -0
  1157. package/src/platforms/nes/lib/cc65-src/gotox.s +21 -0
  1158. package/src/platforms/nes/lib/cc65-src/gotoxy.s +22 -0
  1159. package/src/platforms/nes/lib/cc65-src/gotoy.s +22 -0
  1160. package/src/platforms/nes/lib/cc65-src/irq.s +19 -0
  1161. package/src/platforms/nes/lib/cc65-src/joy/nes-stdjoy.s +102 -0
  1162. package/src/platforms/nes/lib/cc65-src/joy_stat_stddrv.s +14 -0
  1163. package/src/platforms/nes/lib/cc65-src/libref.s +9 -0
  1164. package/src/platforms/nes/lib/cc65-src/mainargs.s +24 -0
  1165. package/src/platforms/nes/lib/cc65-src/neschar.s +4616 -0
  1166. package/src/platforms/nes/lib/cc65-src/ppu.s +158 -0
  1167. package/src/platforms/nes/lib/cc65-src/ppubuf.s +117 -0
  1168. package/src/platforms/nes/lib/cc65-src/randomize.s +18 -0
  1169. package/src/platforms/nes/lib/cc65-src/revers.s +27 -0
  1170. package/src/platforms/nes/lib/cc65-src/setcursor.s +37 -0
  1171. package/src/platforms/nes/lib/cc65-src/sysuname.s +39 -0
  1172. package/src/platforms/nes/lib/cc65-src/tgi/nes-64-56-2.s +480 -0
  1173. package/src/platforms/nes/lib/cc65-src/tgi_stat_stddrv.s +14 -0
  1174. package/src/platforms/nes/lib/cc65-src/tgi_stddrv.s +13 -0
  1175. package/src/platforms/nes/lib/cc65-src/waitvsync.s +18 -0
  1176. package/src/platforms/nes/lib/cc65-src/wherex.s +19 -0
  1177. package/src/platforms/nes/lib/cc65-src/wherey.s +19 -0
  1178. package/src/platforms/nes/lib/clear_nametable.s +38 -0
  1179. package/src/platforms/nes/lib/clear_oam.s +18 -0
  1180. package/src/platforms/nes/lib/load_palette.s +31 -0
  1181. package/src/platforms/nes/lib/nmi_safe.s +65 -0
  1182. package/src/platforms/nes/lib/oam_dma.s +16 -0
  1183. package/src/platforms/nes/lib/read_pad.s +46 -0
  1184. package/src/platforms/nes/lib/reset.s +46 -0
  1185. package/src/platforms/nes/lib/sprite_table_populate.s +75 -0
  1186. package/src/platforms/nes/lib/wait_vblank.s +12 -0
  1187. package/src/platforms/nes/palette.js +39 -0
  1188. package/src/platforms/nes/ppu.js +448 -0
  1189. package/src/platforms/pce/MENTAL_MODEL.md +98 -0
  1190. package/src/platforms/pce/TROUBLESHOOTING.md +54 -0
  1191. package/src/platforms/pce/UPSTREAM_SOURCES.md +38 -0
  1192. package/src/platforms/pce/image-to-tilemap.js +123 -0
  1193. package/src/platforms/pce/lib/c/hello_pce.c +37 -0
  1194. package/src/platforms/pce/lib/c/pce_hw.h +130 -0
  1195. package/src/platforms/pce/lib/c/pce_input.c +36 -0
  1196. package/src/platforms/pce/lib/c/pce_sound.c +53 -0
  1197. package/src/platforms/pce/lib/c/pce_video.c +113 -0
  1198. package/src/platforms/pce/tiles.js +92 -0
  1199. package/src/platforms/pce/vce.js +59 -0
  1200. package/src/platforms/pce/vdc.js +52 -0
  1201. package/src/platforms/sms/MENTAL_MODEL.md +286 -0
  1202. package/src/platforms/sms/TROUBLESHOOTING.md +140 -0
  1203. package/src/platforms/sms/UPSTREAM_SOURCES.md +29 -0
  1204. package/src/platforms/sms/image-to-tilemap.js +260 -0
  1205. package/src/platforms/sms/lib/README.md +117 -0
  1206. package/src/platforms/sms/lib/c/joypad_read.c +33 -0
  1207. package/src/platforms/sms/lib/c/load_palette.c +24 -0
  1208. package/src/platforms/sms/lib/c/load_tiles.c +32 -0
  1209. package/src/platforms/sms/lib/c/sms_crt0.s +101 -0
  1210. package/src/platforms/sms/lib/c/sms_hw.h +53 -0
  1211. package/src/platforms/sms/lib/c/sms_music.c +178 -0
  1212. package/src/platforms/sms/lib/c/sms_music.h +50 -0
  1213. package/src/platforms/sms/lib/c/sms_sfx.c +82 -0
  1214. package/src/platforms/sms/lib/c/sms_sfx.h +40 -0
  1215. package/src/platforms/sms/lib/c/sprite_table.c +60 -0
  1216. package/src/platforms/sms/lib/c/vblank_wait.c +10 -0
  1217. package/src/platforms/sms/lib/c/vdp_init.c +58 -0
  1218. package/src/platforms/sms/lib/header.s +33 -0
  1219. package/src/platforms/sms/lib/joypad_read.s +40 -0
  1220. package/src/platforms/sms/lib/load_palette.s +30 -0
  1221. package/src/platforms/sms/lib/load_tiles.s +50 -0
  1222. package/src/platforms/sms/lib/sprite_table.s +44 -0
  1223. package/src/platforms/sms/lib/vblank_wait.s +36 -0
  1224. package/src/platforms/sms/lib/vdp_init.s +47 -0
  1225. package/src/platforms/sms/song.js +217 -0
  1226. package/src/platforms/sms/vdp.js +530 -0
  1227. package/src/platforms/snes/MENTAL_MODEL.md +289 -0
  1228. package/src/platforms/snes/TROUBLESHOOTING.md +208 -0
  1229. package/src/platforms/snes/UPSTREAM_SOURCES.md +50 -0
  1230. package/src/platforms/snes/brr.js +208 -0
  1231. package/src/platforms/snes/image-to-tilemap.js +227 -0
  1232. package/src/platforms/snes/lib/audio/apu_blob.asm +228 -0
  1233. package/src/platforms/snes/lib/audio/apu_blob.bin +0 -0
  1234. package/src/platforms/snes/lib/audio/explosion.brr +0 -0
  1235. package/src/platforms/snes/lib/audio/sample_bank.bin +0 -0
  1236. package/src/platforms/snes/lib/audio/shoot.brr +0 -0
  1237. package/src/platforms/snes/lib/audio/spc_driver.asm +241 -0
  1238. package/src/platforms/snes/lib/audio_pipeline.asm +62 -0
  1239. package/src/platforms/snes/lib/c/crt0.asm +125 -0
  1240. package/src/platforms/snes/lib/c/hdr.asm +50 -0
  1241. package/src/platforms/snes/lib/c/snes_sfx.c +116 -0
  1242. package/src/platforms/snes/lib/c/snes_sfx.h +96 -0
  1243. package/src/platforms/snes/lib/c/snes_sfx_data.asm +25 -0
  1244. package/src/platforms/snes/lib/cgram_upload.asm +43 -0
  1245. package/src/platforms/snes/lib/lorom_header.asm +47 -0
  1246. package/src/platforms/snes/lib/lorom_multibank.asm +66 -0
  1247. package/src/platforms/snes/lib/nmi_safe.asm +77 -0
  1248. package/src/platforms/snes/lib/oam_upload.asm +45 -0
  1249. package/src/platforms/snes/lib/pad_read.asm +64 -0
  1250. package/src/platforms/snes/lib/pvsneslib/LICENSE +21 -0
  1251. package/src/platforms/snes/lib/pvsneslib/include/ctype.h +6 -0
  1252. package/src/platforms/snes/lib/pvsneslib/include/float.h +4 -0
  1253. package/src/platforms/snes/lib/pvsneslib/include/hdr.asm +47 -0
  1254. package/src/platforms/snes/lib/pvsneslib/include/limits.h +13 -0
  1255. package/src/platforms/snes/lib/pvsneslib/include/math.h +10 -0
  1256. package/src/platforms/snes/lib/pvsneslib/include/setjmp.h +4 -0
  1257. package/src/platforms/snes/lib/pvsneslib/include/snes/background.h +396 -0
  1258. package/src/platforms/snes/lib/pvsneslib/include/snes/console.h +188 -0
  1259. package/src/platforms/snes/lib/pvsneslib/include/snes/dma.h +381 -0
  1260. package/src/platforms/snes/lib/pvsneslib/include/snes/input.h +289 -0
  1261. package/src/platforms/snes/lib/pvsneslib/include/snes/interrupt.h +264 -0
  1262. package/src/platforms/snes/lib/pvsneslib/include/snes/libversion.h +10 -0
  1263. package/src/platforms/snes/lib/pvsneslib/include/snes/lzss.h +43 -0
  1264. package/src/platforms/snes/lib/pvsneslib/include/snes/map.h +113 -0
  1265. package/src/platforms/snes/lib/pvsneslib/include/snes/object.h +234 -0
  1266. package/src/platforms/snes/lib/pvsneslib/include/snes/pixel.h +53 -0
  1267. package/src/platforms/snes/lib/pvsneslib/include/snes/scores.h +66 -0
  1268. package/src/platforms/snes/lib/pvsneslib/include/snes/snestypes.h +65 -0
  1269. package/src/platforms/snes/lib/pvsneslib/include/snes/sound.h +245 -0
  1270. package/src/platforms/snes/lib/pvsneslib/include/snes/sprite.h +456 -0
  1271. package/src/platforms/snes/lib/pvsneslib/include/snes/video.h +465 -0
  1272. package/src/platforms/snes/lib/pvsneslib/include/snes.h +190 -0
  1273. package/src/platforms/snes/lib/pvsneslib/include/stdarg.h +28 -0
  1274. package/src/platforms/snes/lib/pvsneslib/include/stdbool.h +53 -0
  1275. package/src/platforms/snes/lib/pvsneslib/include/stddef.h +27 -0
  1276. package/src/platforms/snes/lib/pvsneslib/include/stdint.h +7 -0
  1277. package/src/platforms/snes/lib/pvsneslib/include/stdio.h +9 -0
  1278. package/src/platforms/snes/lib/pvsneslib/include/stdlib.h +13 -0
  1279. package/src/platforms/snes/lib/pvsneslib/include/string.h +19 -0
  1280. package/src/platforms/snes/lib/pvsneslib/include/strings.h +5 -0
  1281. package/src/platforms/snes/lib/pvsneslib/source/Makefile +87 -0
  1282. package/src/platforms/snes/lib/pvsneslib/source/backgrounds.asm +834 -0
  1283. package/src/platforms/snes/lib/pvsneslib/source/consoles.asm +1028 -0
  1284. package/src/platforms/snes/lib/pvsneslib/source/crt0_snes.asm +329 -0
  1285. package/src/platforms/snes/lib/pvsneslib/source/dmas.asm +1275 -0
  1286. package/src/platforms/snes/lib/pvsneslib/source/hdr.asm +56 -0
  1287. package/src/platforms/snes/lib/pvsneslib/source/input.asm +445 -0
  1288. package/src/platforms/snes/lib/pvsneslib/source/libc.asm +485 -0
  1289. package/src/platforms/snes/lib/pvsneslib/source/libc_c.c +1214 -0
  1290. package/src/platforms/snes/lib/pvsneslib/source/libm.asm +510 -0
  1291. package/src/platforms/snes/lib/pvsneslib/source/libtcc.asm +374 -0
  1292. package/src/platforms/snes/lib/pvsneslib/source/lzsss.asm +256 -0
  1293. package/src/platforms/snes/lib/pvsneslib/source/maps.asm +1078 -0
  1294. package/src/platforms/snes/lib/pvsneslib/source/objects.asm +2881 -0
  1295. package/src/platforms/snes/lib/pvsneslib/source/scores.asm +226 -0
  1296. package/src/platforms/snes/lib/pvsneslib/source/sm_spc.asm +187 -0
  1297. package/src/platforms/snes/lib/pvsneslib/source/snesmodwla.asm +1186 -0
  1298. package/src/platforms/snes/lib/pvsneslib/source/sounds.asm +273 -0
  1299. package/src/platforms/snes/lib/pvsneslib/source/sprites.asm +3946 -0
  1300. package/src/platforms/snes/lib/pvsneslib/source/vblank.asm +917 -0
  1301. package/src/platforms/snes/lib/pvsneslib/source/videos.asm +1137 -0
  1302. package/src/platforms/snes/lib/reset_init.asm +31 -0
  1303. package/src/platforms/snes/lib/sprite_table_populate.asm +122 -0
  1304. package/src/platforms/snes/lib/vram_dma_upload.asm +42 -0
  1305. package/src/platforms/snes/ppu.js +606 -0
  1306. package/src/platforms/snes/song.js +128 -0
  1307. package/src/playtest/playtest.js +841 -0
  1308. package/src/rom-id/identifier.js +421 -0
  1309. package/src/rom-id/patch.js +217 -0
  1310. package/src/toolchains/_worker/pool.js +253 -0
  1311. package/src/toolchains/_worker/run.js +78 -0
  1312. package/src/toolchains/_worker/wasm-worker.js +233 -0
  1313. package/src/toolchains/arm-none-eabi-gcc/gcc.js +216 -0
  1314. package/src/toolchains/asar/asar.js +542 -0
  1315. package/src/toolchains/assemble-snippet.js +256 -0
  1316. package/src/toolchains/cc65/cc65.js +395 -0
  1317. package/src/toolchains/cc65/da65.js +119 -0
  1318. package/src/toolchains/cc65/dbgparse.js +274 -0
  1319. package/src/toolchains/cc65/preset-resolver.js +59 -0
  1320. package/src/toolchains/cc65/presets/nes/chr-ram-runtime.cfg +79 -0
  1321. package/src/toolchains/cc65/presets/nes/chr-ram-runtime.crt0.s +178 -0
  1322. package/src/toolchains/cc65/presets/nes/chr-ram.cfg +76 -0
  1323. package/src/toolchains/cc65/presets/nes/chr-ram.crt0.s +106 -0
  1324. package/src/toolchains/common/ar.js +121 -0
  1325. package/src/toolchains/common/reassemble.js +353 -0
  1326. package/src/toolchains/common/sdk-cache.js +116 -0
  1327. package/src/toolchains/common/symbols.js +139 -0
  1328. package/src/toolchains/dasm/dasm.js +96 -0
  1329. package/src/toolchains/gba-c/gba-c.js +838 -0
  1330. package/src/toolchains/genesis-c/README.md +61 -0
  1331. package/src/toolchains/genesis-c/genesis-c.js +600 -0
  1332. package/src/toolchains/gnu-ld-map.js +86 -0
  1333. package/src/toolchains/index.js +862 -0
  1334. package/src/toolchains/m68k-elf-gcc/gcc.js +230 -0
  1335. package/src/toolchains/objdump.js +199 -0
  1336. package/src/toolchains/parse-errors.js +338 -0
  1337. package/src/toolchains/registry.js +67 -0
  1338. package/src/toolchains/rgbds/rgbds.js +144 -0
  1339. package/src/toolchains/sdcc/preflight-lint.js +295 -0
  1340. package/src/toolchains/sdcc/sdcc.js +540 -0
  1341. package/src/toolchains/sjasm/sjasm.js +85 -0
  1342. package/src/toolchains/snes-c/snes-c.js +409 -0
  1343. package/src/toolchains/tcc816/tcc816.js +79 -0
  1344. package/src/toolchains/vasm68k/vasm68k.js +138 -0
  1345. package/src/toolchains/wladx/wladx.js +120 -0
  1346. package/src/toolchains/z80/binutils.js +82 -0
@@ -0,0 +1,52 @@
1
+ // PC Engine HuC6270 VDC sprite-attribute-table (SATB) decoder.
2
+ //
3
+ // The SATB is a 64-sprite table (romdev region `pce_vdc_satb`, 256 u16 words =
4
+ // 4 words per sprite), mirrored from VRAM by the VDC's SATB-DMA. Per sprite:
5
+ // word0 = Y position + 64 (Y on screen = (w0 & 0x3FF) - 64)
6
+ // word1 = X position + 32 (X on screen = (w1 & 0x3FF) - 32)
7
+ // word2 = pattern code (pattern = (w2 >> 1) & 0x3FF; in 16×16 cells)
8
+ // word3 = flags: palette (bits 0-3), priority (bit 7), CGX width (bit 8),
9
+ // CGY height (bits 12-13), X-flip (bit 11), Y-flip (bit 15)
10
+ // Sprites are 16 or 32 wide (CGX) × 16/32/64 tall (CGY). Source: geargrafx
11
+ // huc6270.cpp:803-834 (the actual renderer) is canonical.
12
+
13
+ const SPRITE_WIDTH = [16, 32]; // CGX 0/1
14
+ const SPRITE_HEIGHT = [16, 32, 64, 64]; // CGY 0..3
15
+
16
+ /**
17
+ * Decode the 64-entry SATB into the generic sprite shape.
18
+ * @param {Uint8Array} satb 512 bytes = 256 u16 words (LE)
19
+ * @returns {Array<{slot:number, x:number, y:number, tile:number, palette:number, priority:number, flipH:boolean, flipV:boolean, size:{w:number,h:number}, visible:boolean, raw:object}>}
20
+ */
21
+ export function decodeSatb(satb) {
22
+ const u16 = (i) => satb[i * 2] | (satb[i * 2 + 1] << 8);
23
+ const sprites = [];
24
+ for (let i = 0; i < 64; i++) {
25
+ const base = i * 4;
26
+ const w0 = u16(base + 0);
27
+ const w1 = u16(base + 1);
28
+ const w2 = u16(base + 2);
29
+ const flags = u16(base + 3);
30
+ const y = (w0 & 0x3ff) - 64;
31
+ const x = (w1 & 0x3ff) - 32;
32
+ const cgx = (flags >> 8) & 0x01;
33
+ const cgy = (flags >> 12) & 0x03;
34
+ const w = SPRITE_WIDTH[cgx];
35
+ const h = SPRITE_HEIGHT[cgy];
36
+ // On-screen if any part overlaps the 256×... visible window (rough cull).
37
+ const visible = (x + w > 0) && (x < 512) && (y + h > 0) && (y < 256);
38
+ sprites.push({
39
+ slot: i,
40
+ x, y,
41
+ tile: (w2 >> 1) & 0x3ff,
42
+ palette: flags & 0x0f,
43
+ priority: (flags >> 7) & 0x01,
44
+ flipH: !!(flags & 0x0800),
45
+ flipV: !!(flags & 0x8000),
46
+ size: { w, h },
47
+ visible,
48
+ raw: { word0: w0, word1: w1, word2: w2, flags },
49
+ });
50
+ }
51
+ return sprites;
52
+ }
@@ -0,0 +1,286 @@
1
+ # Sega Master System / Game Gear — mental model
2
+
3
+ One page. Read once before you write your first SMS / GG game. The
4
+ TROUBLESHOOTING.md alongside this file is for when something's broken;
5
+ this is the "what's going on" version.
6
+
7
+ ## CPU memory map (Z80, 16-bit address space)
8
+
9
+ ```
10
+ $0000-$BFFF ROM (typical 48 KB; mapper extends to 4 MB)
11
+ $C000-$DFFF work RAM (8 KB, mirrored to $E000-$FFFF)
12
+ $DFF0+ stack (grows down) — sms_crt0 sets SP here
13
+ $FFFC-$FFFF mapper registers (Sega mapper, page select per slot)
14
+ ```
15
+
16
+ Cartridge is paged in 16 KB slots ($0000, $4000, $8000) via the Sega
17
+ mapper at $FFFC-$FFFF. Slot 0 (`$0000-$3FFF`) holds the boot ROM /
18
+ fixed bank with the interrupt vectors and the first chunk of code;
19
+ slots 1 and 2 are bank-switched on demand. Our minimal templates
20
+ fit in 32 KB so we never page.
21
+
22
+ The Z80 has separate **I/O port** address space (`in`/`out`
23
+ instructions). Game logic talks to the VDP and joypads via ports,
24
+ NOT via memory-mapped registers.
25
+
26
+ ## I/O ports
27
+
28
+ ```
29
+ $3E memory control (cartridge slot + RAM enable)
30
+ $3F I/O control (joypad direction polarity)
31
+ $7E V-counter (read) / PSG (write — sound)
32
+ $7F H-counter (read)
33
+ $BE VDP data port
34
+ $BF VDP control port
35
+ $DC P1 joypad + P2 dpad
36
+ $DD P2 buttons + reset / cart-detect
37
+ ```
38
+
39
+ In C with SDCC's `__sfr __at` declarations:
40
+
41
+ ```c
42
+ __sfr __at 0xBE PORT_VDP_DATA;
43
+ __sfr __at 0xBF PORT_VDP_CTRL;
44
+ __sfr __at 0xDC PORT_JOY_A;
45
+ ```
46
+
47
+ Reading the variable compiles to `in a,(port)`, writing to
48
+ `out (port),a`. See `src/platforms/sms/lib/c/sms_hw.h` for the full
49
+ set.
50
+
51
+ ## VDP (Video Display Processor)
52
+
53
+ The SMS VDP is a derivative of the TMS9918, with mode-4 (the SMS
54
+ graphics mode) doing most of the lifting. It has its own VRAM
55
+ (16 KB) and CRAM (32 bytes — palette).
56
+
57
+ ```
58
+ VRAM 16 KB tile patterns + name table + sprite attr table + sprite tile data
59
+ CRAM 32 B 32 palette entries × 1 byte (2-2-2 BGR)
60
+ ```
61
+
62
+ VRAM is reached through port $BE (data) + port $BF (control). To set
63
+ the destination address X for a write:
64
+
65
+ ```c
66
+ PORT_VDP_CTRL = X & 0xFF; /* low byte */
67
+ PORT_VDP_CTRL = ((X >> 8) & 0x3F) | 0x40; /* high byte + WRITE prefix */
68
+ ```
69
+
70
+ Then subsequent writes to PORT_VDP_DATA push bytes sequentially.
71
+
72
+ The 11 VDP registers ($00-$0A) control the display. Idiomatic
73
+ baseline (set by `sms_vdp_init()`):
74
+
75
+ ```
76
+ R0 = 0x36 Mode 4 + line-IRQ
77
+ R1 = 0x80 display OFF, vblank IRQ off, 192-line
78
+ R2 = 0xFF name table at $3800
79
+ R4 = 0xFF BG tile data at $0000
80
+ R5 = 0xFF sprite attr table at $3F00
81
+ R6 = 0xFB sprite tile data at $0000 (NOT $2000 — see footgun below)
82
+ R7 = 0x00 border colour
83
+ ```
84
+
85
+ Then later: `R1 = 0xE0` to enable display + vblank IRQ.
86
+
87
+ ## Tiles + name table
88
+
89
+ Tiles are 8×8 pixels, **4 bits per pixel** in **bitplane-interleaved
90
+ format**: 32 bytes per tile, 4 bytes per row (one byte per plane).
91
+ 512 tiles max in VRAM (256 BG + 256 sprite, by default config).
92
+
93
+ The BG name table at $3800 is 32 cols × 28 rows × 2 bytes/entry.
94
+ Each entry packs:
95
+
96
+ ```
97
+ byte 0: low 8 bits of tile index
98
+ byte 1: 0 0 0 priority palette vflip hflip tile_idx_bit9
99
+ ```
100
+
101
+ Where `palette = 0` → BG palette ($00-$0F in CRAM), `palette = 1` →
102
+ sprite palette ($10-$1F).
103
+
104
+ ## Sprites (sprite attribute table)
105
+
106
+ SAT at VRAM $3F00. 64 sprite slots × 4 bytes:
107
+
108
+ ```
109
+ $3F00-$3F3F: 64 Y bytes — Y = 0xD0 hides all subsequent sprites
110
+ $3F80-$3FFF: 64 (X, tile) pairs interleaved
111
+ ```
112
+
113
+ So Y bytes and X/tile pairs are split into TWO regions of the SAT.
114
+ `src/platforms/sms/lib/c/sprite_table.c` keeps a 256-byte shadow
115
+ buffer in WRAM and uploads it to the SAT each vblank.
116
+
117
+ ### Two footguns the bundled scaffolds keep hitting
118
+
119
+ 1. **8 sprites per scanline limit.** The VDP draws up to 8 sprites per
120
+ scanline; the 9th+ are silently dropped. If you draw a "CATCH THE
121
+ COIN" text using 14 sprite tiles on the same Y row, **only the
122
+ first 8 letters appear** and the rest vanish with no warning. Fix:
123
+ split text across multiple Y rows OR draw it via the BG name
124
+ table (which has no per-line limit).
125
+
126
+ 2. **SAT $D0 terminator.** The VDP treats Y=$D0 in any OAM Y byte as
127
+ a HARD terminator — it stops scanning further slots immediately.
128
+ Earlier rounds of `sms_sprite_init()` wrote $D0 to every Y byte
129
+ to "hide" sprites at boot, which caused the classic "I populated
130
+ slots 0..5 and slot 6 was still $D0 so the renderer halted at
131
+ slot 5" footgun.
132
+
133
+ **The runtime now initialises unused slots to $E0** (off-screen,
134
+ below the 192-line area, but NOT the terminator). Slots you
135
+ don't touch stay invisible AND don't kill the renderer. You only
136
+ have to worry about $D0 if you write it explicitly — e.g. as an
137
+ early-out optimisation.
138
+
139
+ If sprites past a certain slot are missing in `sprites({op:'inspect'})`,
140
+ check the live OAM Y bytes for $D0 in a slot before them.
141
+
142
+ `sprites({op:'inspect'})` shows the live OAM bytes + reports
143
+ `spriteTileDataBase` — trust it over comments when sprites misbehave.
144
+
145
+ ### R6 sprite-tile-base default: $0000, NOT $2000
146
+
147
+ `sms_vdp_init()` sets R6 = 0xFB. R6 bit 2 is the SA13 select for
148
+ sprite tile data — and bit 2 is **CLEAR** in 0xFB. That means
149
+ sprite tiles read from `$0000-$1FFF`, **sharing the bank with BG
150
+ tiles**. Many references (including older comments in our own
151
+ `vdp_init.c` and `load_tiles.c`, since fixed) say "R6=0xFB → sprite
152
+ tiles at $2000" — that's wrong.
153
+
154
+ If you want sprite tiles in their own bank at $2000, set
155
+ `vdp_write_reg(6, 0xFF)` AND upload tiles to VRAM $2000. Otherwise
156
+ upload sprite tiles to $0000 alongside BG tiles (just make sure
157
+ they don't collide).
158
+
159
+ ## Palette (CRAM)
160
+
161
+ 32 entries × 1 byte = 32 bytes. 2-2-2 BGR encoding:
162
+
163
+ ```
164
+ bit 0-1: red 0..3
165
+ bit 2-3: green 0..3
166
+ bit 4-5: blue 0..3
167
+ ```
168
+
169
+ Brightest white = `0x3F`. Entry $00 is the BG backdrop; $10 is the
170
+ sprite-palette colour 0 (transparent).
171
+
172
+ **Game Gear** uses 4-4-4 BGR (2 bytes per entry, 64 total bytes).
173
+ The runtime has both `sms_load_palette` (32 bytes) and
174
+ `gg_load_palette` (64 bytes).
175
+
176
+ ## Frame heartbeat
177
+
178
+ ```c
179
+ sms_vblank_wait(); /* poll VDP status byte bit 7 until set */
180
+ sms_sat_upload(); /* push shadow SAT to VRAM $3F00 */
181
+ /* update game state */
182
+ ```
183
+
184
+ The vblank poll is the heartbeat. There's also a vblank IRQ if you
185
+ need cycle-accurate timing, but for most games polling is fine.
186
+
187
+ ## Input
188
+
189
+ `sms_joypad_read()` returns a packed byte with the buttons inverted
190
+ (active high — pressed = 1). Bits:
191
+
192
+ ```
193
+ JOY_UP 0x01
194
+ JOY_DOWN 0x02
195
+ JOY_LEFT 0x04
196
+ JOY_RIGHT 0x08
197
+ JOY_B1 0x10
198
+ JOY_B2 0x20
199
+ ```
200
+
201
+ Edge-detect by AND'ing `pad & !prev`.
202
+
203
+ ### Driving input over MCP — the SMS button map is INVERTED ⚠
204
+
205
+ genesis_plus_gx (the SMS core) maps the two face buttons onto libretro the
206
+ *opposite* way you'd guess (verified live against the core):
207
+
208
+ | Physical button | `input({op:'set', …})` | spatial / native |
209
+ |-----------------|-------------------|------------------|
210
+ | Button 1 (TL, main fire) | `{ b: true }` | `{ west: true }` · `input({op:'press', button:'1'})` |
211
+ | Button 2 (TR) | `{ a: true }` | `{ east: true }` · `input({op:'press', button:'2'})` |
212
+
213
+ **The trap:** `input({op:'set', a: true})` presses **button 2**, not button 1. For
214
+ the main fire (button 1 / `JOY_B1`) use `{ b: true }` or the spatial
215
+ `{ west: true }`. The **spatial names** and `input({op:'press', button:'1'|'2'})`
216
+ resolve correctly — prefer them over raw a/b. `input({op:'layout', platform:'sms'})`
217
+ has the exact map. (Same genesis_plus_gx inversion as Genesis + Game Gear.)
218
+
219
+ ## Sound
220
+
221
+ PSG (SN76489) on port $7F. 4 channels: 3 square waves + 1 noise.
222
+ Writes are byte-wise; the high bit selects "latch register" vs
223
+ "continue previous register".
224
+
225
+ A full driver is beyond the scope of these scaffolds. For
226
+ playable SFX, manually pulse $7F with the latch-register byte
227
+ followed by data bytes. Real games ship a music driver in WRAM.
228
+
229
+ **Debugging sound:** `audioDebug({op:'inspect', chip:"psg"})` decodes the live SN76489 —
230
+ 3 tone + 1 noise channel state (the same gpgx PSG region serves SMS/GG/Genesis).
231
+
232
+ ## Cartridge layout
233
+
234
+ ```
235
+ $0000-$0037 reset + interrupt vectors (RST jumps)
236
+ $0038 interrupt handler entry (IM 1 mode)
237
+ $0066 NMI entry (pause button on SMS)
238
+ $7FF0-$7FFF ROM header — "TMR SEGA" trademark + checksum + region/size
239
+ ```
240
+
241
+ Our minimal templates don't bother with the header (real consoles
242
+ boot ROMs even without it; an emulator-side compatibility test
243
+ might flag them). `sms_crt0.s` provides the RST table + the IM 1
244
+ setup that lets vblank IRQs fire.
245
+
246
+ ## Build pipeline
247
+
248
+ When you call `build({output:'rom', platform:"sms", language:"c"})`:
249
+
250
+ 1. SDCC (z80 port) compiles each `.c` → `.rel` object.
251
+ 2. `sms_crt0.s` is auto-injected as the startup file (assembled to
252
+ `.rel`).
253
+ 3. `sdld` links all `.rel` + the z80 standard library → `.ihx`
254
+ Intel HEX.
255
+ 4. The IHX is converted to a flat 32 KB `.sms` ROM.
256
+
257
+ Loadable via genesis_plus_gx (`loadMedia`).
258
+
259
+ ## Game Gear differences
260
+
261
+ - Smaller screen: 160×144 visible (vs SMS 256×192). VDP is the
262
+ same; cropping happens in hardware.
263
+ - 12-bit CRAM (4 bits per channel). Use `gg_load_palette` (64 bytes
264
+ per palette).
265
+ - Start button on port $00 (separate from the SMS pause-via-NMI).
266
+ - ROM size cap is higher: GG games can go up to 1 MB.
267
+ - Game Gear-specific buttons add port $00 read (Start) and stereo
268
+ PSG control on port $06.
269
+
270
+ ## Horizontal scrolling (for side-scrollers)
271
+
272
+ The `platformer` scaffold is single-screen. To make it a side-scroller:
273
+
274
+ - **Hardware scroll:** write VDP register 8 (horizontal scroll) each frame =
275
+ `-camX & 0xFF` (the reg scrolls the screen; the name table is 32×28 and
276
+ wraps). This gives smooth scrolling through one name-table's worth.
277
+ - **Streaming:** for a world wider than 256 px, rewrite the name-table column
278
+ about to enter view each time `camX` crosses an 8-px boundary — write the
279
+ next world column's tile entries into the off-screen column. Do VDP writes
280
+ during vblank.
281
+ - **Fixed HUD / status bar:** VDP register 0 bit 6 ("horizontal scroll lock")
282
+ freezes the top two rows of the screen regardless of the scroll register —
283
+ use it for a fixed HUD band while the rest scrolls.
284
+
285
+ Track `camX` in pixels; actor screen-X = `worldX - camX`. (Game Gear is the
286
+ same VDP — only the visible window differs.)
@@ -0,0 +1,140 @@
1
+ # Sega Master System / Game Gear — troubleshooting
2
+
3
+ When something's broken. Read MENTAL_MODEL.md first for the
4
+ "what's going on" version (via `platform({op:'doc', platform:"sms", name:"mental_model"})`).
5
+
6
+ ## "I drive the game with setInput but the fire/action button doesn't fire"
7
+
8
+ The SMS/GG button map is **inverted** vs the libretro names. genesis_plus_gx
9
+ maps button 1 (TL, the main fire) onto libretro **b** and button 2 (TR) onto
10
+ libretro **a** — so `input({op:'set', a:true})` presses button **2**, not button 1
11
+ (`JOY_B1`).
12
+
13
+ Fix — press the button you actually mean:
14
+ - Button 1 (main fire, `JOY_B1`) → `input({op:'set', ports:[{b:true}]})` or `{west:true}`
15
+ - Button 2 (`JOY_B2`) → `{a:true}` / `{east:true}`
16
+
17
+ Prefer the spatial names or `input({op:'press', button:'1'|'2'})` (they resolve
18
+ correctly per platform). `input({op:'layout', platform:'sms'})` has the full map.
19
+ (Note: `input({op:'set'})` takes a `ports` array — `{ports:[{b:true}]}`, not a bare
20
+ `{b:true}`. Same inversion on Game Gear.)
21
+
22
+ ## "ROM builds but the screen is blank / black"
23
+
24
+ The VDP starts with display disabled (R1 bit 6 = 0). You have to
25
+ explicitly turn it on AFTER you've uploaded palette + tiles +
26
+ name table:
27
+
28
+ ```c
29
+ sms_vdp_init(); /* sets display OFF as a side effect */
30
+ sms_load_palette(...);
31
+ sms_load_tiles(...);
32
+ sms_set_tilemap_cell(...);
33
+ sms_vdp_display_on(); /* ← without this, blank forever */
34
+ ```
35
+
36
+ If you forget `sms_vdp_display_on()` your ROM boots and runs, but
37
+ the display register R1 keeps bit 6 clear and you see nothing.
38
+
39
+ ## "Sprites are invisible / stuck at top of screen"
40
+
41
+ Two common modes:
42
+
43
+ 1. **You forgot to call `sms_sat_upload()`.** The SAT shadow lives
44
+ in WRAM; `sms_sprite_set()` only updates the shadow.
45
+ `sms_sat_upload()` pushes the shadow to VRAM $3F00. Skip it →
46
+ the VDP draws whatever stale SAT it had from boot.
47
+ 2. **Y = 0xD0 anywhere in the SAT.** The SMS uses Y = 0xD0 as a
48
+ "stop renderer at this slot" marker. If your first sprite has
49
+ Y = 0xD0 (or you leave the default after `sms_sprite_init`), NO
50
+ sprites render. Always set Y to a real value before drawing.
51
+
52
+ ## "Colors look wrong / too dark"
53
+
54
+ SMS CRAM is **2 bits per channel** (4 levels: 0, 1, 2, 3 → encoded
55
+ as 0x00, 0x01, 0x02, 0x03 in the channel). So:
56
+
57
+ ```
58
+ 0x00 = black
59
+ 0x3F = white (red=3, green=3, blue=3 — all max)
60
+ 0x03 = pure red
61
+ 0x0C = pure green
62
+ 0x30 = pure blue
63
+ ```
64
+
65
+ If your colours look "washed out greenish," you may be passing
66
+ 6-bit-per-channel values that get truncated, or you may have the
67
+ Game Gear's 4-bit-per-channel encoding wrongly applied to SMS.
68
+ Run on a real SMS-mode emulator to confirm.
69
+
70
+ ## "SDCC crashes during compile (dbuf_append_str NULL / aopGet)"
71
+
72
+ R7-era SDCC sm83 had multiple register-allocator regressions
73
+ (see `feedback_sdcc_sm83_crashes.md`). Most are fixed in the
74
+ 4.4.0 we ship with the 8 MB stack patch (R12). If you still hit
75
+ one:
76
+
77
+ - Wrap aggressive `for (;;) { switch + __sfr write }` loops in
78
+ `do { ... } while (1)` (matches the bundled `default` template's
79
+ branchless update pattern).
80
+ - Split very-long functions into smaller ones.
81
+ - Avoid mid-block `uint8_t var = expr;` — hoist to function top
82
+ (SDCC z80 is C89-strict).
83
+
84
+ The full list of patterns and workarounds is in
85
+ `src/platforms/sms/lib/README.md` (look for the SMS-14 codegen
86
+ notes).
87
+
88
+ ## "Sound from PSG is silent / distorted"
89
+
90
+ Three things to check:
91
+
92
+ 1. **PSG writes are byte-wise on port $7F.** A `uint16_t` write
93
+ only sends the low byte; the high byte is dropped.
94
+ 2. **The latch-register byte must come first.** Each PSG channel
95
+ needs `0x80 | (chan << 5) | (vol & 0x0F)` etc., then the data
96
+ bytes. Random write order = silent or random noise.
97
+ 3. **Audio is disabled in some emulator save-state restores.** Try
98
+ `host({op:'reset'})` first before debugging.
99
+
100
+ ## "Game Gear ROM boots black / wrong colors"
101
+
102
+ GG ROMs need:
103
+
104
+ - 4-bit-per-channel palette (use `gg_load_palette`, not `sms_load_palette`)
105
+ - Lower-left 160×144 area of the 256×192 VDP framebuffer (it's
106
+ hardware-cropped on the GG screen — content outside that window
107
+ is invisible)
108
+ - Some GG-specific I/O (port $00 for Start, port $06 for stereo
109
+ PSG mute control)
110
+
111
+ If you ported an SMS ROM straight to `.gg` it'll boot and run, but
112
+ the colours will be very dark (2-bit values reinterpreted as 4-bit)
113
+ and the visible area is in the top-left corner.
114
+
115
+ ## "ROM > 32 KB doesn't run"
116
+
117
+ The default template is single-bank (32 KB). To use the Sega
118
+ mapper for larger ROMs, write `bank_n` to `$FFFE` (slot 1) or
119
+ `$FFFF` (slot 2) before reading from $4000-$7FFF / $8000-$BFFF
120
+ respectively. SDCC's default sm83/z80 link doesn't auto-page;
121
+ you write the bank-switch yourself in code, then `jp` into the
122
+ new bank.
123
+
124
+ For most agent-driven games, stay in 32 KB and the mapper never
125
+ matters.
126
+
127
+ ## "Save states don't restore VDP state"
128
+
129
+ genesis_plus_gx (which we use for SMS) snapshots VDP/CRAM/VRAM
130
+ fully. If you find a sprite missing after `state({op:'load'})`, the cause
131
+ is usually game-side: your shadow OAM lives in WRAM, which IS
132
+ snapshotted, but your `oam_dma_flush`/`sms_sat_upload`-equivalent
133
+ fires *next frame* — so the very first frame after load may show
134
+ stale SAT until your loop ticks once.
135
+
136
+ ## "First build is slow but later ones are fast"
137
+
138
+ Expected. SDCC z80 + sdasz80 + sdld cold-load takes ~1-2s for
139
+ the WASM mmap + class init. Steady-state builds are sub-second
140
+ thanks to the worker pool (R12).
@@ -0,0 +1,29 @@
1
+ # Master System — source you can read
2
+
3
+ Trust hierarchy:
4
+
5
+ 1. **Bundled examples** (`examples/sms/templates/*.c`).
6
+ 2. **Bundled runtime** — `src/platforms/sms/lib/c/sms_crt0.s`,
7
+ `vdp_init.c`, `joypad_read.c`, `sprite_table.c`, `sms_sfx.c`,
8
+ `sms_music.c`. All ~50-100 lines each, fully readable.
9
+ 3. **SDCC z80 port** — WASM compiler shipped, source not bundled.
10
+ 4. **Upstream GitHub**:
11
+
12
+ | What | Upstream |
13
+ |---|---|
14
+ | SDCC | http://sdcc.sourceforge.net/ |
15
+ | genesis_plus_gx libretro (handles SMS) | https://github.com/libretro/Genesis-Plus-GX |
16
+
17
+ ## SMS hardware docs
18
+
19
+ - **SMS Power!** (canonical homebrew dev hub): https://www.smspower.org/Development/Documents
20
+ - **SN76489 PSG ref**: https://www.smspower.org/Development/SN76489
21
+ - **VDP register reference**: https://www.smspower.org/Development/VDPRegisters
22
+ - **Z80 reference**: https://www.zilog.com/docs/z80/um0080.pdf
23
+
24
+ ## When to use what
25
+
26
+ - "How does my sprite SAT terminator work?" → MENTAL_MODEL § SAT $D0
27
+ - "SN76489 latch byte layout" → SMS Power PSG ref
28
+ - "VDP mode 4 specifics" → SMS Power VDP registers
29
+ - "genesis_plus_gx doesn't expose register X" → libretro GitHub