romdev-mcp 0.1.1

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 (1247) hide show
  1. package/AGENTS.md +726 -0
  2. package/LICENSE +45 -0
  3. package/NOTICE +86 -0
  4. package/README.md +46 -0
  5. package/examples/README.md +36 -0
  6. package/examples/art-first-workflow/README.md +205 -0
  7. package/examples/atari2600/main.asm +143 -0
  8. package/examples/atari2600/templates/default.asm +183 -0
  9. package/examples/atari2600/templates/mini_invaders.asm +381 -0
  10. package/examples/atari2600/templates/music_demo.asm +322 -0
  11. package/examples/atari2600/templates/paddle.asm +345 -0
  12. package/examples/atari2600/templates/single_screen.asm +242 -0
  13. package/examples/atari7800/main.c +88 -0
  14. package/examples/atari7800/templates/default.c +183 -0
  15. package/examples/atari7800/templates/hello_sprite.c +141 -0
  16. package/examples/atari7800/templates/music_demo.c +123 -0
  17. package/examples/atari7800/templates/platformer.c +159 -0
  18. package/examples/atari7800/templates/puzzle.c +164 -0
  19. package/examples/atari7800/templates/racing.c +139 -0
  20. package/examples/atari7800/templates/shmup.c +148 -0
  21. package/examples/atari7800/templates/sports.c +207 -0
  22. package/examples/c64/main.c +63 -0
  23. package/examples/c64/templates/hello_sprite.c +117 -0
  24. package/examples/c64/templates/music_demo.c +131 -0
  25. package/examples/c64/templates/platformer.c +194 -0
  26. package/examples/c64/templates/puzzle.c +178 -0
  27. package/examples/c64/templates/racing.c +140 -0
  28. package/examples/c64/templates/shmup.c +201 -0
  29. package/examples/c64/templates/sports.c +109 -0
  30. package/examples/c64/templates/tile_engine.c +174 -0
  31. package/examples/gb/main.asm +106 -0
  32. package/examples/gb/main.c +49 -0
  33. package/examples/gb/templates/default.c +58 -0
  34. package/examples/gb/templates/hello_sprite.c +130 -0
  35. package/examples/gb/templates/music_demo.c +52 -0
  36. package/examples/gb/templates/platformer.c +178 -0
  37. package/examples/gb/templates/puzzle.c +217 -0
  38. package/examples/gb/templates/racing.c +158 -0
  39. package/examples/gb/templates/shmup.c +172 -0
  40. package/examples/gb/templates/sports.c +136 -0
  41. package/examples/gb/templates/tile_engine.c +280 -0
  42. package/examples/gba/templates/gba_hello.c +64 -0
  43. package/examples/gba/templates/maxmod_demo.c +105 -0
  44. package/examples/gba/templates/platformer.c +215 -0
  45. package/examples/gba/templates/puzzle.c +237 -0
  46. package/examples/gba/templates/racing.c +175 -0
  47. package/examples/gba/templates/shmup.c +197 -0
  48. package/examples/gba/templates/sports.c +177 -0
  49. package/examples/gba/templates/tonc_hello.c +72 -0
  50. package/examples/gba/templates/tonc_hello_sprite.c +109 -0
  51. package/examples/gbc/main.asm +123 -0
  52. package/examples/gbc/templates/default.c +61 -0
  53. package/examples/gbc/templates/hello_sprite.c +140 -0
  54. package/examples/gbc/templates/music_demo.c +63 -0
  55. package/examples/gbc/templates/platformer.c +181 -0
  56. package/examples/gbc/templates/puzzle.c +217 -0
  57. package/examples/gbc/templates/racing.c +164 -0
  58. package/examples/gbc/templates/shmup.c +188 -0
  59. package/examples/gbc/templates/sports.c +142 -0
  60. package/examples/gbc/templates/tile_engine.c +280 -0
  61. package/examples/genesis/main.s +161 -0
  62. package/examples/genesis/templates/hello_sprite.c +75 -0
  63. package/examples/genesis/templates/platformer.c +166 -0
  64. package/examples/genesis/templates/puzzle.c +240 -0
  65. package/examples/genesis/templates/racing.c +170 -0
  66. package/examples/genesis/templates/sgdk_hello.c +41 -0
  67. package/examples/genesis/templates/shmup.c +188 -0
  68. package/examples/genesis/templates/shmup_2p.c +244 -0
  69. package/examples/genesis/templates/sports.c +172 -0
  70. package/examples/genesis/templates/tile_engine.c +135 -0
  71. package/examples/genesis/templates/xgm2_demo.c +53 -0
  72. package/examples/genesis/templates/xgm2_demo_data.s +27 -0
  73. package/examples/gg/main.c +10 -0
  74. package/examples/gg/templates/default.c +156 -0
  75. package/examples/gg/templates/hello_sprite.c +90 -0
  76. package/examples/gg/templates/music_demo.c +156 -0
  77. package/examples/gg/templates/platformer.c +220 -0
  78. package/examples/gg/templates/puzzle.c +204 -0
  79. package/examples/gg/templates/racing.c +161 -0
  80. package/examples/gg/templates/shmup.c +188 -0
  81. package/examples/gg/templates/sports.c +137 -0
  82. package/examples/gg/templates/tile_engine.c +137 -0
  83. package/examples/lynx/main.c +4 -0
  84. package/examples/lynx/templates/default.c +41 -0
  85. package/examples/lynx/templates/hello_sprite.c +39 -0
  86. package/examples/lynx/templates/music_demo.c +37 -0
  87. package/examples/lynx/templates/platformer.c +72 -0
  88. package/examples/lynx/templates/puzzle.c +142 -0
  89. package/examples/lynx/templates/racing.c +94 -0
  90. package/examples/lynx/templates/shmup.c +132 -0
  91. package/examples/lynx/templates/sports.c +59 -0
  92. package/examples/nes/main.c +143 -0
  93. package/examples/nes/space-shooter/README.md +68 -0
  94. package/examples/nes/space-shooter/main.c +441 -0
  95. package/examples/nes/space-shooter/nes_runtime.c +347 -0
  96. package/examples/nes/space-shooter/nes_runtime.h +141 -0
  97. package/examples/nes/templates/default.c +41 -0
  98. package/examples/nes/templates/hello_sprite.c +104 -0
  99. package/examples/nes/templates/music_demo.c +80 -0
  100. package/examples/nes/templates/platformer.c +171 -0
  101. package/examples/nes/templates/puzzle.c +232 -0
  102. package/examples/nes/templates/racing.c +203 -0
  103. package/examples/nes/templates/shmup.c +228 -0
  104. package/examples/nes/templates/sports.c +205 -0
  105. package/examples/nes/templates/tile_engine.c +224 -0
  106. package/examples/porting-across-platforms/README.md +59 -0
  107. package/examples/sms/main.c +129 -0
  108. package/examples/sms/templates/default.c +110 -0
  109. package/examples/sms/templates/hello_sprite.c +90 -0
  110. package/examples/sms/templates/music_demo.c +151 -0
  111. package/examples/sms/templates/platformer.c +215 -0
  112. package/examples/sms/templates/puzzle.c +204 -0
  113. package/examples/sms/templates/racing.c +161 -0
  114. package/examples/sms/templates/shmup.c +167 -0
  115. package/examples/sms/templates/shmup_2p.c +219 -0
  116. package/examples/sms/templates/sports.c +147 -0
  117. package/examples/sms/templates/tile_engine.c +137 -0
  118. package/examples/snes/main.asm +70 -0
  119. package/examples/snes/templates/c-hello-data.asm +28 -0
  120. package/examples/snes/templates/c-hello.c +71 -0
  121. package/examples/snes/templates/default-data.asm +36 -0
  122. package/examples/snes/templates/default.c +74 -0
  123. package/examples/snes/templates/hello_sprite-data.asm +45 -0
  124. package/examples/snes/templates/hello_sprite.c +76 -0
  125. package/examples/snes/templates/music_demo-data.asm +20 -0
  126. package/examples/snes/templates/music_demo.c +83 -0
  127. package/examples/snes/templates/platformer-data.asm +27 -0
  128. package/examples/snes/templates/platformer.c +142 -0
  129. package/examples/snes/templates/puzzle-data.asm +14 -0
  130. package/examples/snes/templates/puzzle.c +199 -0
  131. package/examples/snes/templates/racing-data.asm +33 -0
  132. package/examples/snes/templates/racing.c +146 -0
  133. package/examples/snes/templates/shmup-data.asm +61 -0
  134. package/examples/snes/templates/shmup.c +199 -0
  135. package/examples/snes/templates/sports-data.asm +28 -0
  136. package/examples/snes/templates/sports.c +144 -0
  137. package/package.json +83 -0
  138. package/src/cli/smoke.js +283 -0
  139. package/src/cores/registry.js +95 -0
  140. package/src/host/LibretroHost.js +502 -0
  141. package/src/host/callbacks.js +444 -0
  142. package/src/host/chafa-render.js +170 -0
  143. package/src/host/coreLoader.js +57 -0
  144. package/src/host/cpu-state.js +422 -0
  145. package/src/host/dsp-state.js +188 -0
  146. package/src/host/framebuffer.js +115 -0
  147. package/src/host/gpgx-state.js +309 -0
  148. package/src/host/index.js +4 -0
  149. package/src/host/retroConstants.js +72 -0
  150. package/src/host/snes9x-state.js +35 -0
  151. package/src/host/types.js +280 -0
  152. package/src/mcp/disclosure.js +250 -0
  153. package/src/mcp/log.js +87 -0
  154. package/src/mcp/server.js +433 -0
  155. package/src/mcp/state.js +83 -0
  156. package/src/mcp/tools/address-to-symbol.js +151 -0
  157. package/src/mcp/tools/art-loaders.js +740 -0
  158. package/src/mcp/tools/assets.js +89 -0
  159. package/src/mcp/tools/audio.js +173 -0
  160. package/src/mcp/tools/cart-parts.js +649 -0
  161. package/src/mcp/tools/diff-roms.js +412 -0
  162. package/src/mcp/tools/disasm.js +980 -0
  163. package/src/mcp/tools/find-references.js +361 -0
  164. package/src/mcp/tools/font-map.js +353 -0
  165. package/src/mcp/tools/frame.js +249 -0
  166. package/src/mcp/tools/free-space.js +95 -0
  167. package/src/mcp/tools/index.js +351 -0
  168. package/src/mcp/tools/input-layout.js +215 -0
  169. package/src/mcp/tools/input.js +142 -0
  170. package/src/mcp/tools/lifecycle.js +110 -0
  171. package/src/mcp/tools/lospec.js +156 -0
  172. package/src/mcp/tools/memory.js +169 -0
  173. package/src/mcp/tools/metasprite-tools.js +261 -0
  174. package/src/mcp/tools/platform-docs.js +102 -0
  175. package/src/mcp/tools/platform-tools.js +1063 -0
  176. package/src/mcp/tools/platforms.js +86 -0
  177. package/src/mcp/tools/playtest.js +280 -0
  178. package/src/mcp/tools/preview-tile.js +360 -0
  179. package/src/mcp/tools/project.js +1885 -0
  180. package/src/mcp/tools/record.js +131 -0
  181. package/src/mcp/tools/rendering-context.js +700 -0
  182. package/src/mcp/tools/rom-id.js +256 -0
  183. package/src/mcp/tools/run-until.js +173 -0
  184. package/src/mcp/tools/snippets.js +235 -0
  185. package/src/mcp/tools/splice-chr.js +215 -0
  186. package/src/mcp/tools/sprite-pipeline.js +614 -0
  187. package/src/mcp/tools/state.js +99 -0
  188. package/src/mcp/tools/symbols.js +277 -0
  189. package/src/mcp/tools/tile-inspect.js +206 -0
  190. package/src/mcp/tools/toolchain.js +680 -0
  191. package/src/mcp/tools/watch-memory.js +212 -0
  192. package/src/mcp/tools/which-tiles.js +193 -0
  193. package/src/mcp/util.js +85 -0
  194. package/src/observer/bus.js +127 -0
  195. package/src/observer/livestream.html +589 -0
  196. package/src/observer/server.js +66 -0
  197. package/src/observer/tool-wrap.js +115 -0
  198. package/src/platforms/atari2600/MENTAL_MODEL.md +185 -0
  199. package/src/platforms/atari2600/TROUBLESHOOTING.md +155 -0
  200. package/src/platforms/atari2600/UPSTREAM_SOURCES.md +49 -0
  201. package/src/platforms/atari2600/lib/README.md +67 -0
  202. package/src/platforms/atari2600/lib/cc65-src/crt0.s +49 -0
  203. package/src/platforms/atari2600/lib/cc65-src/ctype.s +5 -0
  204. package/src/platforms/atari2600/lib/kernel_skeleton.asm +85 -0
  205. package/src/platforms/atari2600/lib/player_kernel.asm +87 -0
  206. package/src/platforms/atari2600/lib/playfield_kernel.asm +63 -0
  207. package/src/platforms/atari2600/lib/read_joystick.asm +76 -0
  208. package/src/platforms/atari2600/lib/score_kernel.asm +141 -0
  209. package/src/platforms/atari2600/lib/vcs_constants.h +97 -0
  210. package/src/platforms/atari2600/lib/vectors.asm +16 -0
  211. package/src/platforms/atari2600/tia.js +355 -0
  212. package/src/platforms/atari7800/MENTAL_MODEL.md +306 -0
  213. package/src/platforms/atari7800/TROUBLESHOOTING.md +195 -0
  214. package/src/platforms/atari7800/UPSTREAM_SOURCES.md +43 -0
  215. package/src/platforms/atari7800/lib/README.md +45 -0
  216. package/src/platforms/atari7800/lib/c/atari7800_music.c +215 -0
  217. package/src/platforms/atari7800/lib/c/atari7800_music.h +33 -0
  218. package/src/platforms/atari7800/lib/c/atari7800_sfx.c +74 -0
  219. package/src/platforms/atari7800/lib/c/atari7800_sfx.h +45 -0
  220. package/src/platforms/atari7800/lib/cc65-src/clock.s +69 -0
  221. package/src/platforms/atari7800/lib/cc65-src/clocks_per_sec.s +34 -0
  222. package/src/platforms/atari7800/lib/cc65-src/clrscr.s +27 -0
  223. package/src/platforms/atari7800/lib/cc65-src/conio.s +226 -0
  224. package/src/platforms/atari7800/lib/cc65-src/conio_font.s +278 -0
  225. package/src/platforms/atari7800/lib/cc65-src/cputc.s +139 -0
  226. package/src/platforms/atari7800/lib/cc65-src/crt0.s +71 -0
  227. package/src/platforms/atari7800/lib/cc65-src/ctype.s +5 -0
  228. package/src/platforms/atari7800/lib/cc65-src/exehdr.s +46 -0
  229. package/src/platforms/atari7800/lib/cc65-src/extra/mono.s +28 -0
  230. package/src/platforms/atari7800/lib/cc65-src/extzp.inc +15 -0
  231. package/src/platforms/atari7800/lib/cc65-src/extzp.s +15 -0
  232. package/src/platforms/atari7800/lib/cc65-src/get_tv.s +65 -0
  233. package/src/platforms/atari7800/lib/cc65-src/irq.s +36 -0
  234. package/src/platforms/atari7800/lib/cc65-src/joy/atari7800-stdjoy.s +197 -0
  235. package/src/platforms/atari7800/lib/cc65-src/joy_stat_stddrv.s +14 -0
  236. package/src/platforms/atari7800/lib/cc65-src/libref.s +8 -0
  237. package/src/platforms/atari7800/lib/cc65-src/mono_clrscr.s +27 -0
  238. package/src/platforms/atari7800/lib/cc65-src/mono_conio.s +231 -0
  239. package/src/platforms/atari7800/lib/cc65-src/mono_cputc.s +102 -0
  240. package/src/platforms/atari7800/lib/cc65-src/mono_font.s +2065 -0
  241. package/src/platforms/atari7800/lib/cc65-src/mono_setcursor.s +214 -0
  242. package/src/platforms/atari7800/lib/cc65-src/setcursor.s +214 -0
  243. package/src/platforms/atari7800/lib/cc65-src/textcolor.s +53 -0
  244. package/src/platforms/atari7800/lib/cc65-src/wherex.s +19 -0
  245. package/src/platforms/atari7800/lib/cc65-src/wherey.s +19 -0
  246. package/src/platforms/atari7800/lib/display_list.asm +53 -0
  247. package/src/platforms/atari7800/lib/maria_init.asm +48 -0
  248. package/src/platforms/atari7800/lib/maria_registers.h +61 -0
  249. package/src/platforms/atari7800/lib/palette_load.asm +53 -0
  250. package/src/platforms/atari7800/lib/read_pad.asm +57 -0
  251. package/src/platforms/atari7800/lib/vblank_wait.asm +16 -0
  252. package/src/platforms/atari7800/maria.js +220 -0
  253. package/src/platforms/c64/MENTAL_MODEL.md +175 -0
  254. package/src/platforms/c64/TROUBLESHOOTING.md +130 -0
  255. package/src/platforms/c64/UPSTREAM_SOURCES.md +35 -0
  256. package/src/platforms/c64/image-to-tilemap.js +190 -0
  257. package/src/platforms/c64/lib/README.md +52 -0
  258. package/src/platforms/c64/lib/basic_stub.s +25 -0
  259. package/src/platforms/c64/lib/c/c64_music.c +248 -0
  260. package/src/platforms/c64/lib/c/c64_music.h +36 -0
  261. package/src/platforms/c64/lib/c/c64_sfx.c +94 -0
  262. package/src/platforms/c64/lib/c/c64_sfx.h +37 -0
  263. package/src/platforms/c64/lib/c64_registers.h +108 -0
  264. package/src/platforms/c64/lib/cc65-src/_scrsize.s +12 -0
  265. package/src/platforms/c64/lib/cc65-src/acc_c128_speed.s +5 -0
  266. package/src/platforms/c64/lib/cc65-src/acc_c64dtv_speed.s +64 -0
  267. package/src/platforms/c64/lib/cc65-src/acc_c65_speed.s +69 -0
  268. package/src/platforms/c64/lib/cc65-src/acc_chameleon_speed.s +100 -0
  269. package/src/platforms/c64/lib/cc65-src/acc_detect_c128.s +33 -0
  270. package/src/platforms/c64/lib/cc65-src/acc_detect_c64dtv.s +44 -0
  271. package/src/platforms/c64/lib/cc65-src/acc_detect_c65.s +55 -0
  272. package/src/platforms/c64/lib/cc65-src/acc_detect_chameleon.s +39 -0
  273. package/src/platforms/c64/lib/cc65-src/acc_detect_scpu.s +34 -0
  274. package/src/platforms/c64/lib/cc65-src/acc_detect_turbomaster.s +45 -0
  275. package/src/platforms/c64/lib/cc65-src/acc_scpu_speed.s +59 -0
  276. package/src/platforms/c64/lib/cc65-src/acc_turbomaster_speed.s +56 -0
  277. package/src/platforms/c64/lib/cc65-src/bordercolor.s +17 -0
  278. package/src/platforms/c64/lib/cc65-src/break.s +108 -0
  279. package/src/platforms/c64/lib/cc65-src/cgetc.s +62 -0
  280. package/src/platforms/c64/lib/cc65-src/clrscr.s +11 -0
  281. package/src/platforms/c64/lib/cc65-src/color.s +24 -0
  282. package/src/platforms/c64/lib/cc65-src/conio.s +10 -0
  283. package/src/platforms/c64/lib/cc65-src/cputc.s +105 -0
  284. package/src/platforms/c64/lib/cc65-src/crt0.s +117 -0
  285. package/src/platforms/c64/lib/cc65-src/devnum.s +7 -0
  286. package/src/platforms/c64/lib/cc65-src/emd/c64-65816.s +377 -0
  287. package/src/platforms/c64/lib/cc65-src/emd/c64-c256k.s +508 -0
  288. package/src/platforms/c64/lib/cc65-src/emd/c64-dqbb.s +447 -0
  289. package/src/platforms/c64/lib/cc65-src/emd/c64-georam.s +355 -0
  290. package/src/platforms/c64/lib/cc65-src/emd/c64-isepic.s +276 -0
  291. package/src/platforms/c64/lib/cc65-src/emd/c64-kerberos.s +281 -0
  292. package/src/platforms/c64/lib/cc65-src/emd/c64-ram.s +270 -0
  293. package/src/platforms/c64/lib/cc65-src/emd/c64-ramcart.s +297 -0
  294. package/src/platforms/c64/lib/cc65-src/emd/c64-reu.s +286 -0
  295. package/src/platforms/c64/lib/cc65-src/emd/c64-rrr.s +363 -0
  296. package/src/platforms/c64/lib/cc65-src/emd/c64-vdc.s +405 -0
  297. package/src/platforms/c64/lib/cc65-src/emd/dtv-himem.s +251 -0
  298. package/src/platforms/c64/lib/cc65-src/extra/soft80.s +71 -0
  299. package/src/platforms/c64/lib/cc65-src/extra/soft80mono.s +74 -0
  300. package/src/platforms/c64/lib/cc65-src/extra/tgimousedata.s +21 -0
  301. package/src/platforms/c64/lib/cc65-src/get_ostype.s +43 -0
  302. package/src/platforms/c64/lib/cc65-src/get_tv.s +20 -0
  303. package/src/platforms/c64/lib/cc65-src/gettime.s +83 -0
  304. package/src/platforms/c64/lib/cc65-src/irq.s +49 -0
  305. package/src/platforms/c64/lib/cc65-src/joy/c64-hitjoy.s +218 -0
  306. package/src/platforms/c64/lib/cc65-src/joy/c64-numpad.s +155 -0
  307. package/src/platforms/c64/lib/cc65-src/joy/c64-ptvjoy.s +146 -0
  308. package/src/platforms/c64/lib/cc65-src/joy/c64-stdjoy.s +111 -0
  309. package/src/platforms/c64/lib/cc65-src/joy_stat_stddrv.s +14 -0
  310. package/src/platforms/c64/lib/cc65-src/joy_stddrv.s +14 -0
  311. package/src/platforms/c64/lib/cc65-src/kbhit.s +23 -0
  312. package/src/platforms/c64/lib/cc65-src/kbrepeat.s +14 -0
  313. package/src/platforms/c64/lib/cc65-src/kernal.s +53 -0
  314. package/src/platforms/c64/lib/cc65-src/kplot.s +22 -0
  315. package/src/platforms/c64/lib/cc65-src/libref.s +16 -0
  316. package/src/platforms/c64/lib/cc65-src/mainargs.s +137 -0
  317. package/src/platforms/c64/lib/cc65-src/mcbdefault.s +146 -0
  318. package/src/platforms/c64/lib/cc65-src/mcbspritedata.s +4 -0
  319. package/src/platforms/c64/lib/cc65-src/mou/c64-1351.s +467 -0
  320. package/src/platforms/c64/lib/cc65-src/mou/c64-inkwell.s +446 -0
  321. package/src/platforms/c64/lib/cc65-src/mou/c64-joy.s +451 -0
  322. package/src/platforms/c64/lib/cc65-src/mou/c64-pot.s +409 -0
  323. package/src/platforms/c64/lib/cc65-src/mouse_stat_stddrv.s +14 -0
  324. package/src/platforms/c64/lib/cc65-src/mouse_stddrv.s +14 -0
  325. package/src/platforms/c64/lib/cc65-src/mouseref.s +23 -0
  326. package/src/platforms/c64/lib/cc65-src/pencalib.c +94 -0
  327. package/src/platforms/c64/lib/cc65-src/randomize.s +18 -0
  328. package/src/platforms/c64/lib/cc65-src/revers.s +27 -0
  329. package/src/platforms/c64/lib/cc65-src/ser/c64-swlink.s +484 -0
  330. package/src/platforms/c64/lib/cc65-src/ser_stat_stddrv.s +14 -0
  331. package/src/platforms/c64/lib/cc65-src/ser_stddrv.s +13 -0
  332. package/src/platforms/c64/lib/cc65-src/settime.s +84 -0
  333. package/src/platforms/c64/lib/cc65-src/soft80.inc +46 -0
  334. package/src/platforms/c64/lib/cc65-src/soft80_cgetc.s +85 -0
  335. package/src/platforms/c64/lib/cc65-src/soft80_charset.s +182 -0
  336. package/src/platforms/c64/lib/cc65-src/soft80_color.s +159 -0
  337. package/src/platforms/c64/lib/cc65-src/soft80_conio.s +157 -0
  338. package/src/platforms/c64/lib/cc65-src/soft80_cpeekc.s +148 -0
  339. package/src/platforms/c64/lib/cc65-src/soft80_cpeekcolor.s +19 -0
  340. package/src/platforms/c64/lib/cc65-src/soft80_cpeekrevers.s +15 -0
  341. package/src/platforms/c64/lib/cc65-src/soft80_cpeeks.s +71 -0
  342. package/src/platforms/c64/lib/cc65-src/soft80_cputc.s +521 -0
  343. package/src/platforms/c64/lib/cc65-src/soft80_kclrscr.s +76 -0
  344. package/src/platforms/c64/lib/cc65-src/soft80_kplot.s +63 -0
  345. package/src/platforms/c64/lib/cc65-src/soft80_scrsize.s +14 -0
  346. package/src/platforms/c64/lib/cc65-src/soft80mono_cgetc.s +67 -0
  347. package/src/platforms/c64/lib/cc65-src/soft80mono_color.s +65 -0
  348. package/src/platforms/c64/lib/cc65-src/soft80mono_conio.s +168 -0
  349. package/src/platforms/c64/lib/cc65-src/soft80mono_cpeekcolor.s +17 -0
  350. package/src/platforms/c64/lib/cc65-src/soft80mono_cputc.s +204 -0
  351. package/src/platforms/c64/lib/cc65-src/soft80mono_kclrscr.s +63 -0
  352. package/src/platforms/c64/lib/cc65-src/soft80mono_kplot.s +52 -0
  353. package/src/platforms/c64/lib/cc65-src/status.s +15 -0
  354. package/src/platforms/c64/lib/cc65-src/sysuname.s +37 -0
  355. package/src/platforms/c64/lib/cc65-src/tgi/c64-hi.s +881 -0
  356. package/src/platforms/c64/lib/cc65-src/tgi_stat_stddrv.s +14 -0
  357. package/src/platforms/c64/lib/cc65-src/tgi_stddrv.s +13 -0
  358. package/src/platforms/c64/lib/cc65-src/tmcommon.s +67 -0
  359. package/src/platforms/c64/lib/cc65-src/waitvsync.s +18 -0
  360. package/src/platforms/c64/lib/read_joystick.s +28 -0
  361. package/src/platforms/c64/lib/sid_play.s +48 -0
  362. package/src/platforms/c64/lib/sprite_table.s +73 -0
  363. package/src/platforms/c64/lib/vic_init.s +47 -0
  364. package/src/platforms/c64/sid.js +128 -0
  365. package/src/platforms/c64/vic.js +273 -0
  366. package/src/platforms/common/default-palette.js +139 -0
  367. package/src/platforms/common/image-to-tiles.js +407 -0
  368. package/src/platforms/common/intent.js +111 -0
  369. package/src/platforms/common/metasprite-adapters.js +279 -0
  370. package/src/platforms/common/metasprite-codegen.js +192 -0
  371. package/src/platforms/common/metasprite-core.js +201 -0
  372. package/src/platforms/common/metasprite.js +89 -0
  373. package/src/platforms/common/platform-palette.js +137 -0
  374. package/src/platforms/common/registers.js +329 -0
  375. package/src/platforms/common/render-tiles.js +86 -0
  376. package/src/platforms/common/screenshot-sprite.js +153 -0
  377. package/src/platforms/common/tile-decode.js +149 -0
  378. package/src/platforms/gb/MENTAL_MODEL.md +252 -0
  379. package/src/platforms/gb/TROUBLESHOOTING.md +221 -0
  380. package/src/platforms/gb/UPSTREAM_SOURCES.md +43 -0
  381. package/src/platforms/gb/image-to-tilemap.js +173 -0
  382. package/src/platforms/gb/lib/README.md +115 -0
  383. package/src/platforms/gb/lib/c/LICENSE-HUGEDRIVER +25 -0
  384. package/src/platforms/gb/lib/c/README.md +120 -0
  385. package/src/platforms/gb/lib/c/SDCC_GOTCHAS.md +189 -0
  386. package/src/platforms/gb/lib/c/gb_crt0.s +163 -0
  387. package/src/platforms/gb/lib/c/gb_hardware.h +113 -0
  388. package/src/platforms/gb/lib/c/gb_runtime.c +284 -0
  389. package/src/platforms/gb/lib/c/gb_runtime.h +145 -0
  390. package/src/platforms/gb/lib/c/hUGEDriver.c +191 -0
  391. package/src/platforms/gb/lib/c/hUGEDriver.h +95 -0
  392. package/src/platforms/gb/lib/c/hUGEDriver.upstream.asm +1908 -0
  393. package/src/platforms/gb/lib/c/lcd_init.c +19 -0
  394. package/src/platforms/gb/lib/c/patch-header.js +154 -0
  395. package/src/platforms/gb/lib/c/song_data.c +88 -0
  396. package/src/platforms/gb/lib/c/unroll.h +52 -0
  397. package/src/platforms/gb/lib/c/wait_vblank.c +14 -0
  398. package/src/platforms/gb/lib/dma_oam.asm +51 -0
  399. package/src/platforms/gb/lib/header.asm +56 -0
  400. package/src/platforms/gb/lib/joypad_read.asm +47 -0
  401. package/src/platforms/gb/lib/lcd_init.asm +44 -0
  402. package/src/platforms/gb/lib/load_palette.asm +25 -0
  403. package/src/platforms/gb/lib/load_tiles.asm +29 -0
  404. package/src/platforms/gb/lib/vblank_wait.asm +31 -0
  405. package/src/platforms/gb/ppu.js +574 -0
  406. package/src/platforms/gba/MENTAL_MODEL.md +203 -0
  407. package/src/platforms/gba/TROUBLESHOOTING.md +250 -0
  408. package/src/platforms/gba/UPSTREAM_SOURCES.md +41 -0
  409. package/src/platforms/gba/lib/arm-archives/libc.a +0 -0
  410. package/src/platforms/gba/lib/arm-archives/libgcc.a +0 -0
  411. package/src/platforms/gba/lib/arm-archives/libnosys.a +0 -0
  412. package/src/platforms/gba/lib/c/gba_sfx.c +81 -0
  413. package/src/platforms/gba/lib/c/gba_sfx.h +48 -0
  414. package/src/platforms/gba/lib/libgba/crtbegin.o +0 -0
  415. package/src/platforms/gba/lib/libgba/crtend.o +0 -0
  416. package/src/platforms/gba/lib/libgba/crti.o +0 -0
  417. package/src/platforms/gba/lib/libgba/crtn.o +0 -0
  418. package/src/platforms/gba/lib/libgba/gba_cart.ld +319 -0
  419. package/src/platforms/gba/lib/libgba/gba_crt0.s +258 -0
  420. package/src/platforms/gba/lib/libgba/include/BoyScout.h +128 -0
  421. package/src/platforms/gba/lib/libgba/include/disc.h +36 -0
  422. package/src/platforms/gba/lib/libgba/include/disc_io.h +64 -0
  423. package/src/platforms/gba/lib/libgba/include/dldi.h +112 -0
  424. package/src/platforms/gba/lib/libgba/include/erapi.h +195 -0
  425. package/src/platforms/gba/lib/libgba/include/fade.h +76 -0
  426. package/src/platforms/gba/lib/libgba/include/gba.h +47 -0
  427. package/src/platforms/gba/lib/libgba/include/gba_affine.h +83 -0
  428. package/src/platforms/gba/lib/libgba/include/gba_base.h +122 -0
  429. package/src/platforms/gba/lib/libgba/include/gba_compression.h +66 -0
  430. package/src/platforms/gba/lib/libgba/include/gba_console.h +55 -0
  431. package/src/platforms/gba/lib/libgba/include/gba_dma.h +100 -0
  432. package/src/platforms/gba/lib/libgba/include/gba_input.h +127 -0
  433. package/src/platforms/gba/lib/libgba/include/gba_interrupt.h +146 -0
  434. package/src/platforms/gba/lib/libgba/include/gba_multiboot.h +72 -0
  435. package/src/platforms/gba/lib/libgba/include/gba_sio.h +124 -0
  436. package/src/platforms/gba/lib/libgba/include/gba_sound.h +356 -0
  437. package/src/platforms/gba/lib/libgba/include/gba_sprites.h +195 -0
  438. package/src/platforms/gba/lib/libgba/include/gba_systemcalls.h +194 -0
  439. package/src/platforms/gba/lib/libgba/include/gba_timers.h +63 -0
  440. package/src/platforms/gba/lib/libgba/include/gba_types.h +60 -0
  441. package/src/platforms/gba/lib/libgba/include/gba_video.h +307 -0
  442. package/src/platforms/gba/lib/libgba/include/mappy.h +72 -0
  443. package/src/platforms/gba/lib/libgba/include/mbv2.h +90 -0
  444. package/src/platforms/gba/lib/libgba/include/xcomms.h +93 -0
  445. package/src/platforms/gba/lib/libgba/include/xcomms_cmd.h +53 -0
  446. package/src/platforms/gba/lib/libgba/libgba.seed.a +0 -0
  447. package/src/platforms/gba/lib/libgba/libgba.seed.hash +1 -0
  448. package/src/platforms/gba/lib/libgba/src/AffineSet.c +42 -0
  449. package/src/platforms/gba/lib/libgba/src/ArcTan.s +41 -0
  450. package/src/platforms/gba/lib/libgba/src/BoyScout/BoyScout.c +1242 -0
  451. package/src/platforms/gba/lib/libgba/src/BoyScout/GBASoundRegs.h +200 -0
  452. package/src/platforms/gba/lib/libgba/src/Compression.c +84 -0
  453. package/src/platforms/gba/lib/libgba/src/CpuSet.c +41 -0
  454. package/src/platforms/gba/lib/libgba/src/Div.s +58 -0
  455. package/src/platforms/gba/lib/libgba/src/DivArm.s +50 -0
  456. package/src/platforms/gba/lib/libgba/src/InterruptDispatcher.s +113 -0
  457. package/src/platforms/gba/lib/libgba/src/IntrWait.c +35 -0
  458. package/src/platforms/gba/lib/libgba/src/MultiBoot.s +33 -0
  459. package/src/platforms/gba/lib/libgba/src/Reset.s +49 -0
  460. package/src/platforms/gba/lib/libgba/src/Sound.s +48 -0
  461. package/src/platforms/gba/lib/libgba/src/Sqrt.s +34 -0
  462. package/src/platforms/gba/lib/libgba/src/disc_io/disc.c +58 -0
  463. package/src/platforms/gba/lib/libgba/src/disc_io/dldi.c +189 -0
  464. package/src/platforms/gba/lib/libgba/src/disc_io/dldi_stub.s +78 -0
  465. package/src/platforms/gba/lib/libgba/src/disc_io/io_cf_common.c +260 -0
  466. package/src/platforms/gba/lib/libgba/src/disc_io/io_cf_common.h +72 -0
  467. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3_common.c +60 -0
  468. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3_common.h +48 -0
  469. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3cf.c +83 -0
  470. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3cf.h +45 -0
  471. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3sd.c +508 -0
  472. package/src/platforms/gba/lib/libgba/src/disc_io/io_m3sd.h +45 -0
  473. package/src/platforms/gba/lib/libgba/src/disc_io/io_mpcf.c +87 -0
  474. package/src/platforms/gba/lib/libgba/src/disc_io/io_mpcf.h +42 -0
  475. package/src/platforms/gba/lib/libgba/src/disc_io/io_sc_common.c +47 -0
  476. package/src/platforms/gba/lib/libgba/src/disc_io/io_sc_common.h +43 -0
  477. package/src/platforms/gba/lib/libgba/src/disc_io/io_sccf.c +83 -0
  478. package/src/platforms/gba/lib/libgba/src/disc_io/io_sccf.h +45 -0
  479. package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd.c +385 -0
  480. package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd.h +48 -0
  481. package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd_s.s +139 -0
  482. package/src/platforms/gba/lib/libgba/src/disc_io/io_sd_common.c +203 -0
  483. package/src/platforms/gba/lib/libgba/src/disc_io/io_sd_common.h +108 -0
  484. package/src/platforms/gba/lib/libgba/src/fade.c +185 -0
  485. package/src/platforms/gba/lib/libgba/src/input.c +127 -0
  486. package/src/platforms/gba/lib/libgba/src/interrupt.c +116 -0
  487. package/src/platforms/gba/lib/libgba/src/mappy_print.c +74 -0
  488. package/src/platforms/gba/lib/libgba/src/mb2print.c +69 -0
  489. package/src/platforms/gba/lib/libgba/src/mbv2.c +230 -0
  490. package/src/platforms/gba/lib/libgba/src/mbv2.txt +119 -0
  491. package/src/platforms/gba/lib/libgba/src/xcomms.c +203 -0
  492. package/src/platforms/gba/lib/libgba/src/xcomms_print.c +56 -0
  493. package/src/platforms/gba/lib/libgba/sysinclude/_ansi.h +82 -0
  494. package/src/platforms/gba/lib/libgba/sysinclude/_newlib_version.h +11 -0
  495. package/src/platforms/gba/lib/libgba/sysinclude/_syslist.h +41 -0
  496. package/src/platforms/gba/lib/libgba/sysinclude/alloca.h +21 -0
  497. package/src/platforms/gba/lib/libgba/sysinclude/ar.h +65 -0
  498. package/src/platforms/gba/lib/libgba/sysinclude/argz.h +33 -0
  499. package/src/platforms/gba/lib/libgba/sysinclude/assert.h +50 -0
  500. package/src/platforms/gba/lib/libgba/sysinclude/complex.h +150 -0
  501. package/src/platforms/gba/lib/libgba/sysinclude/cpio.h +30 -0
  502. package/src/platforms/gba/lib/libgba/sysinclude/ctype.h +183 -0
  503. package/src/platforms/gba/lib/libgba/sysinclude/devctl.h +78 -0
  504. package/src/platforms/gba/lib/libgba/sysinclude/dirent.h +85 -0
  505. package/src/platforms/gba/lib/libgba/sysinclude/elf.h +3147 -0
  506. package/src/platforms/gba/lib/libgba/sysinclude/envlock.h +15 -0
  507. package/src/platforms/gba/lib/libgba/sysinclude/envz.h +16 -0
  508. package/src/platforms/gba/lib/libgba/sysinclude/errno.h +11 -0
  509. package/src/platforms/gba/lib/libgba/sysinclude/fastmath.h +13 -0
  510. package/src/platforms/gba/lib/libgba/sysinclude/fcntl.h +1 -0
  511. package/src/platforms/gba/lib/libgba/sysinclude/fenv.h +42 -0
  512. package/src/platforms/gba/lib/libgba/sysinclude/float.h +631 -0
  513. package/src/platforms/gba/lib/libgba/sysinclude/fnmatch.h +55 -0
  514. package/src/platforms/gba/lib/libgba/sysinclude/ftw.h +66 -0
  515. package/src/platforms/gba/lib/libgba/sysinclude/getopt.h +185 -0
  516. package/src/platforms/gba/lib/libgba/sysinclude/glob.h +90 -0
  517. package/src/platforms/gba/lib/libgba/sysinclude/grp.h +86 -0
  518. package/src/platforms/gba/lib/libgba/sysinclude/iconv.h +63 -0
  519. package/src/platforms/gba/lib/libgba/sysinclude/ieeefp.h +295 -0
  520. package/src/platforms/gba/lib/libgba/sysinclude/inttypes.h +345 -0
  521. package/src/platforms/gba/lib/libgba/sysinclude/iso646.h +45 -0
  522. package/src/platforms/gba/lib/libgba/sysinclude/langinfo.h +332 -0
  523. package/src/platforms/gba/lib/libgba/sysinclude/libgen.h +37 -0
  524. package/src/platforms/gba/lib/libgba/sysinclude/limits.h +168 -0
  525. package/src/platforms/gba/lib/libgba/sysinclude/locale.h +96 -0
  526. package/src/platforms/gba/lib/libgba/sysinclude/machine/_arc4random.h +1 -0
  527. package/src/platforms/gba/lib/libgba/sysinclude/machine/_default_types.h +250 -0
  528. package/src/platforms/gba/lib/libgba/sysinclude/machine/_endian.h +39 -0
  529. package/src/platforms/gba/lib/libgba/sysinclude/machine/_time.h +3 -0
  530. package/src/platforms/gba/lib/libgba/sysinclude/machine/_types.h +8 -0
  531. package/src/platforms/gba/lib/libgba/sysinclude/machine/ansi.h +1 -0
  532. package/src/platforms/gba/lib/libgba/sysinclude/machine/endian.h +69 -0
  533. package/src/platforms/gba/lib/libgba/sysinclude/machine/fastmath.h +98 -0
  534. package/src/platforms/gba/lib/libgba/sysinclude/machine/ieee.h +127 -0
  535. package/src/platforms/gba/lib/libgba/sysinclude/machine/ieeefp.h +533 -0
  536. package/src/platforms/gba/lib/libgba/sysinclude/machine/malloc.h +8 -0
  537. package/src/platforms/gba/lib/libgba/sysinclude/machine/param.h +8 -0
  538. package/src/platforms/gba/lib/libgba/sysinclude/machine/setjmp-dj.h +43 -0
  539. package/src/platforms/gba/lib/libgba/sysinclude/machine/setjmp.h +524 -0
  540. package/src/platforms/gba/lib/libgba/sysinclude/machine/stdlib.h +8 -0
  541. package/src/platforms/gba/lib/libgba/sysinclude/machine/termios.h +1 -0
  542. package/src/platforms/gba/lib/libgba/sysinclude/machine/time.h +15 -0
  543. package/src/platforms/gba/lib/libgba/sysinclude/machine/types.h +13 -0
  544. package/src/platforms/gba/lib/libgba/sysinclude/malloc.h +173 -0
  545. package/src/platforms/gba/lib/libgba/sysinclude/math.h +645 -0
  546. package/src/platforms/gba/lib/libgba/sysinclude/memory.h +4 -0
  547. package/src/platforms/gba/lib/libgba/sysinclude/ndbm.h +91 -0
  548. package/src/platforms/gba/lib/libgba/sysinclude/newlib.h +427 -0
  549. package/src/platforms/gba/lib/libgba/sysinclude/paths.h +9 -0
  550. package/src/platforms/gba/lib/libgba/sysinclude/pthread.h +456 -0
  551. package/src/platforms/gba/lib/libgba/sysinclude/pwd.h +83 -0
  552. package/src/platforms/gba/lib/libgba/sysinclude/reent.h +190 -0
  553. package/src/platforms/gba/lib/libgba/sysinclude/regdef.h +7 -0
  554. package/src/platforms/gba/lib/libgba/sysinclude/regex.h +103 -0
  555. package/src/platforms/gba/lib/libgba/sysinclude/sched.h +112 -0
  556. package/src/platforms/gba/lib/libgba/sysinclude/search.h +64 -0
  557. package/src/platforms/gba/lib/libgba/sysinclude/setjmp.h +25 -0
  558. package/src/platforms/gba/lib/libgba/sysinclude/signal.h +35 -0
  559. package/src/platforms/gba/lib/libgba/sysinclude/spawn.h +111 -0
  560. package/src/platforms/gba/lib/libgba/sysinclude/ssp/ssp.h +76 -0
  561. package/src/platforms/gba/lib/libgba/sysinclude/ssp/stdio.h +101 -0
  562. package/src/platforms/gba/lib/libgba/sysinclude/ssp/stdlib.h +30 -0
  563. package/src/platforms/gba/lib/libgba/sysinclude/ssp/string.h +115 -0
  564. package/src/platforms/gba/lib/libgba/sysinclude/ssp/strings.h +55 -0
  565. package/src/platforms/gba/lib/libgba/sysinclude/ssp/unistd.h +93 -0
  566. package/src/platforms/gba/lib/libgba/sysinclude/ssp/wchar.h +97 -0
  567. package/src/platforms/gba/lib/libgba/sysinclude/stdarg.h +135 -0
  568. package/src/platforms/gba/lib/libgba/sysinclude/stdatomic.h +409 -0
  569. package/src/platforms/gba/lib/libgba/sysinclude/stdbool.h +51 -0
  570. package/src/platforms/gba/lib/libgba/sysinclude/stddef.h +463 -0
  571. package/src/platforms/gba/lib/libgba/sysinclude/stdint.h +466 -0
  572. package/src/platforms/gba/lib/libgba/sysinclude/stdio.h +807 -0
  573. package/src/platforms/gba/lib/libgba/sysinclude/stdio_ext.h +79 -0
  574. package/src/platforms/gba/lib/libgba/sysinclude/stdlib.h +345 -0
  575. package/src/platforms/gba/lib/libgba/sysinclude/string.h +183 -0
  576. package/src/platforms/gba/lib/libgba/sysinclude/strings.h +80 -0
  577. package/src/platforms/gba/lib/libgba/sysinclude/sys/_default_fcntl.h +241 -0
  578. package/src/platforms/gba/lib/libgba/sysinclude/sys/_intsup.h +199 -0
  579. package/src/platforms/gba/lib/libgba/sysinclude/sys/_locale.h +12 -0
  580. package/src/platforms/gba/lib/libgba/sysinclude/sys/_pthreadtypes.h +233 -0
  581. package/src/platforms/gba/lib/libgba/sysinclude/sys/_sigset.h +43 -0
  582. package/src/platforms/gba/lib/libgba/sysinclude/sys/_stdint.h +90 -0
  583. package/src/platforms/gba/lib/libgba/sysinclude/sys/_timespec.h +52 -0
  584. package/src/platforms/gba/lib/libgba/sysinclude/sys/_timeval.h +60 -0
  585. package/src/platforms/gba/lib/libgba/sysinclude/sys/_types.h +228 -0
  586. package/src/platforms/gba/lib/libgba/sysinclude/sys/_tz_structs.h +24 -0
  587. package/src/platforms/gba/lib/libgba/sysinclude/sys/cdefs.h +754 -0
  588. package/src/platforms/gba/lib/libgba/sysinclude/sys/config.h +314 -0
  589. package/src/platforms/gba/lib/libgba/sysinclude/sys/custom_file.h +2 -0
  590. package/src/platforms/gba/lib/libgba/sysinclude/sys/dir.h +10 -0
  591. package/src/platforms/gba/lib/libgba/sysinclude/sys/dirent.h +13 -0
  592. package/src/platforms/gba/lib/libgba/sysinclude/sys/endian.h +207 -0
  593. package/src/platforms/gba/lib/libgba/sysinclude/sys/errno.h +198 -0
  594. package/src/platforms/gba/lib/libgba/sysinclude/sys/fcntl.h +12 -0
  595. package/src/platforms/gba/lib/libgba/sysinclude/sys/features.h +551 -0
  596. package/src/platforms/gba/lib/libgba/sysinclude/sys/fenv.h +90 -0
  597. package/src/platforms/gba/lib/libgba/sysinclude/sys/file.h +2 -0
  598. package/src/platforms/gba/lib/libgba/sysinclude/sys/iconvnls.h +77 -0
  599. package/src/platforms/gba/lib/libgba/sysinclude/sys/iosupport.h +143 -0
  600. package/src/platforms/gba/lib/libgba/sysinclude/sys/lock.h +75 -0
  601. package/src/platforms/gba/lib/libgba/sysinclude/sys/param.h +35 -0
  602. package/src/platforms/gba/lib/libgba/sysinclude/sys/queue.h +919 -0
  603. package/src/platforms/gba/lib/libgba/sysinclude/sys/reent.h +913 -0
  604. package/src/platforms/gba/lib/libgba/sysinclude/sys/resource.h +24 -0
  605. package/src/platforms/gba/lib/libgba/sysinclude/sys/sched.h +69 -0
  606. package/src/platforms/gba/lib/libgba/sysinclude/sys/select.h +94 -0
  607. package/src/platforms/gba/lib/libgba/sysinclude/sys/signal.h +388 -0
  608. package/src/platforms/gba/lib/libgba/sysinclude/sys/stat.h +179 -0
  609. package/src/platforms/gba/lib/libgba/sysinclude/sys/statvfs.h +41 -0
  610. package/src/platforms/gba/lib/libgba/sysinclude/sys/stdio.h +27 -0
  611. package/src/platforms/gba/lib/libgba/sysinclude/sys/string.h +2 -0
  612. package/src/platforms/gba/lib/libgba/sysinclude/sys/syslimits.h +61 -0
  613. package/src/platforms/gba/lib/libgba/sysinclude/sys/time.h +448 -0
  614. package/src/platforms/gba/lib/libgba/sysinclude/sys/timeb.h +40 -0
  615. package/src/platforms/gba/lib/libgba/sysinclude/sys/times.h +32 -0
  616. package/src/platforms/gba/lib/libgba/sysinclude/sys/timespec.h +63 -0
  617. package/src/platforms/gba/lib/libgba/sysinclude/sys/tree.h +864 -0
  618. package/src/platforms/gba/lib/libgba/sysinclude/sys/types.h +228 -0
  619. package/src/platforms/gba/lib/libgba/sysinclude/sys/unistd.h +591 -0
  620. package/src/platforms/gba/lib/libgba/sysinclude/sys/utime.h +22 -0
  621. package/src/platforms/gba/lib/libgba/sysinclude/sys/wait.h +44 -0
  622. package/src/platforms/gba/lib/libgba/sysinclude/tar.h +43 -0
  623. package/src/platforms/gba/lib/libgba/sysinclude/termios.h +7 -0
  624. package/src/platforms/gba/lib/libgba/sysinclude/tgmath.h +127 -0
  625. package/src/platforms/gba/lib/libgba/sysinclude/threads.h +93 -0
  626. package/src/platforms/gba/lib/libgba/sysinclude/time.h +313 -0
  627. package/src/platforms/gba/lib/libgba/sysinclude/unctrl.h +42 -0
  628. package/src/platforms/gba/lib/libgba/sysinclude/unistd.h +6 -0
  629. package/src/platforms/gba/lib/libgba/sysinclude/utime.h +12 -0
  630. package/src/platforms/gba/lib/libgba/sysinclude/utmp.h +8 -0
  631. package/src/platforms/gba/lib/libgba/sysinclude/varargs.h +7 -0
  632. package/src/platforms/gba/lib/libgba/sysinclude/wchar.h +339 -0
  633. package/src/platforms/gba/lib/libgba/sysinclude/wctype.h +74 -0
  634. package/src/platforms/gba/lib/libgba/sysinclude/wordexp.h +53 -0
  635. package/src/platforms/gba/lib/libtonc/crtbegin.o +0 -0
  636. package/src/platforms/gba/lib/libtonc/crtend.o +0 -0
  637. package/src/platforms/gba/lib/libtonc/crti.o +0 -0
  638. package/src/platforms/gba/lib/libtonc/crtn.o +0 -0
  639. package/src/platforms/gba/lib/libtonc/gba_cart.ld +319 -0
  640. package/src/platforms/gba/lib/libtonc/gba_crt0.s +258 -0
  641. package/src/platforms/gba/lib/libtonc/include/tonc.h +72 -0
  642. package/src/platforms/gba/lib/libtonc/include/tonc_asminc.h +132 -0
  643. package/src/platforms/gba/lib/libtonc/include/tonc_bios.h +555 -0
  644. package/src/platforms/gba/lib/libtonc/include/tonc_core.h +573 -0
  645. package/src/platforms/gba/lib/libtonc/include/tonc_input.h +184 -0
  646. package/src/platforms/gba/lib/libtonc/include/tonc_irq.h +121 -0
  647. package/src/platforms/gba/lib/libtonc/include/tonc_legacy.h +481 -0
  648. package/src/platforms/gba/lib/libtonc/include/tonc_libgba.h +537 -0
  649. package/src/platforms/gba/lib/libtonc/include/tonc_math.h +692 -0
  650. package/src/platforms/gba/lib/libtonc/include/tonc_memdef.h +962 -0
  651. package/src/platforms/gba/lib/libtonc/include/tonc_memmap.h +583 -0
  652. package/src/platforms/gba/lib/libtonc/include/tonc_nocash.h +51 -0
  653. package/src/platforms/gba/lib/libtonc/include/tonc_oam.h +186 -0
  654. package/src/platforms/gba/lib/libtonc/include/tonc_surface.h +461 -0
  655. package/src/platforms/gba/lib/libtonc/include/tonc_text.h +270 -0
  656. package/src/platforms/gba/lib/libtonc/include/tonc_tte.h +748 -0
  657. package/src/platforms/gba/lib/libtonc/include/tonc_types.h +376 -0
  658. package/src/platforms/gba/lib/libtonc/include/tonc_video.h +615 -0
  659. package/src/platforms/gba/lib/libtonc/libtonc.seed.a +0 -0
  660. package/src/platforms/gba/lib/libtonc/libtonc.seed.hash +1 -0
  661. package/src/platforms/gba/lib/libtonc/src/asm/clr_blend_fast.s +72 -0
  662. package/src/platforms/gba/lib/libtonc/src/asm/clr_fade_fast.s +74 -0
  663. package/src/platforms/gba/lib/libtonc/src/asm/div_lut.s +54 -0
  664. package/src/platforms/gba/lib/libtonc/src/asm/sin_lut.s +90 -0
  665. package/src/platforms/gba/lib/libtonc/src/asm/tonc_bios.s +289 -0
  666. package/src/platforms/gba/lib/libtonc/src/asm/tonc_bios_ex.s +97 -0
  667. package/src/platforms/gba/lib/libtonc/src/asm/tonc_isr_master.s +92 -0
  668. package/src/platforms/gba/lib/libtonc/src/asm/tonc_isr_nest.s +98 -0
  669. package/src/platforms/gba/lib/libtonc/src/asm/tonc_memcpy.s +126 -0
  670. package/src/platforms/gba/lib/libtonc/src/asm/tonc_memset.s +123 -0
  671. package/src/platforms/gba/lib/libtonc/src/asm/tonc_nocash.s +73 -0
  672. package/src/platforms/gba/lib/libtonc/src/font/sys8.png +0 -0
  673. package/src/platforms/gba/lib/libtonc/src/font/sys8.s +46 -0
  674. package/src/platforms/gba/lib/libtonc/src/font/verdana10.png +0 -0
  675. package/src/platforms/gba/lib/libtonc/src/font/verdana10.s +293 -0
  676. package/src/platforms/gba/lib/libtonc/src/font/verdana9.png +0 -0
  677. package/src/platforms/gba/lib/libtonc/src/font/verdana9.s +167 -0
  678. package/src/platforms/gba/lib/libtonc/src/font/verdana9_b4.png +0 -0
  679. package/src/platforms/gba/lib/libtonc/src/font/verdana9_b4.s +545 -0
  680. package/src/platforms/gba/lib/libtonc/src/font/verdana9b.png +0 -0
  681. package/src/platforms/gba/lib/libtonc/src/font/verdana9b.s +167 -0
  682. package/src/platforms/gba/lib/libtonc/src/font/verdana9i.png +0 -0
  683. package/src/platforms/gba/lib/libtonc/src/font/verdana9i.s +167 -0
  684. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_bitmap.c +289 -0
  685. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text.c +81 -0
  686. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_bm.c +244 -0
  687. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_map.c +122 -0
  688. package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_oam.c +113 -0
  689. package/src/platforms/gba/lib/libtonc/src/pre1.3/toncfont.s +43 -0
  690. package/src/platforms/gba/lib/libtonc/src/tonc_bg.c +61 -0
  691. package/src/platforms/gba/lib/libtonc/src/tonc_bg_affine.c +112 -0
  692. package/src/platforms/gba/lib/libtonc/src/tonc_bmp16.c +240 -0
  693. package/src/platforms/gba/lib/libtonc/src/tonc_bmp8.c +314 -0
  694. package/src/platforms/gba/lib/libtonc/src/tonc_color.c +368 -0
  695. package/src/platforms/gba/lib/libtonc/src/tonc_core.c +237 -0
  696. package/src/platforms/gba/lib/libtonc/src/tonc_input.c +118 -0
  697. package/src/platforms/gba/lib/libtonc/src/tonc_irq.c +271 -0
  698. package/src/platforms/gba/lib/libtonc/src/tonc_math.c +54 -0
  699. package/src/platforms/gba/lib/libtonc/src/tonc_oam.c +76 -0
  700. package/src/platforms/gba/lib/libtonc/src/tonc_obj_affine.c +146 -0
  701. package/src/platforms/gba/lib/libtonc/src/tonc_sbmp16.c +369 -0
  702. package/src/platforms/gba/lib/libtonc/src/tonc_sbmp8.c +405 -0
  703. package/src/platforms/gba/lib/libtonc/src/tonc_schr4c.c +588 -0
  704. package/src/platforms/gba/lib/libtonc/src/tonc_schr4r.c +462 -0
  705. package/src/platforms/gba/lib/libtonc/src/tonc_surface.c +105 -0
  706. package/src/platforms/gba/lib/libtonc/src/tonc_video.c +33 -0
  707. package/src/platforms/gba/lib/libtonc/src/tte/ase_drawg.c +83 -0
  708. package/src/platforms/gba/lib/libtonc/src/tte/bmp16_drawg.c +72 -0
  709. package/src/platforms/gba/lib/libtonc/src/tte/bmp16_drawg_b1cs.c +92 -0
  710. package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg.c +71 -0
  711. package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg_b1cs.c +104 -0
  712. package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg_b1cts_fast.s +115 -0
  713. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b1cts.c +76 -0
  714. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b1cts_fast.s +128 -0
  715. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b4cts.c +67 -0
  716. package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b4cts_fast.s +127 -0
  717. package/src/platforms/gba/lib/libtonc/src/tte/chr4r_drawg_b1cts.c +80 -0
  718. package/src/platforms/gba/lib/libtonc/src/tte/chr4r_drawg_b1cts_fast.s +145 -0
  719. package/src/platforms/gba/lib/libtonc/src/tte/obj_drawg.c +61 -0
  720. package/src/platforms/gba/lib/libtonc/src/tte/se_drawg.c +110 -0
  721. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_ase.c +87 -0
  722. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_bmp.c +118 -0
  723. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_chr4c.c +86 -0
  724. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_chr4r.c +87 -0
  725. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_obj.c +84 -0
  726. package/src/platforms/gba/lib/libtonc/src/tte/tte_init_se.c +96 -0
  727. package/src/platforms/gba/lib/libtonc/src/tte/tte_iohook.c +264 -0
  728. package/src/platforms/gba/lib/libtonc/src/tte/tte_main.c +756 -0
  729. package/src/platforms/gba/lib/libtonc/src/tte/tte_types.s +119 -0
  730. package/src/platforms/gba/lib/maxmod/LICENSE-MAXMOD +23 -0
  731. package/src/platforms/gba/lib/maxmod/asm_include/mp_defs.inc +117 -0
  732. package/src/platforms/gba/lib/maxmod/asm_include/mp_format_mas.inc +108 -0
  733. package/src/platforms/gba/lib/maxmod/asm_include/mp_macros.inc +195 -0
  734. package/src/platforms/gba/lib/maxmod/asm_include/mp_mas.inc +40 -0
  735. package/src/platforms/gba/lib/maxmod/asm_include/mp_mas_structs.inc +189 -0
  736. package/src/platforms/gba/lib/maxmod/asm_include/mp_mixer_ds.inc +46 -0
  737. package/src/platforms/gba/lib/maxmod/asm_include/mp_mixer_gba.inc +42 -0
  738. package/src/platforms/gba/lib/maxmod/asm_include/swi_gba.inc +23 -0
  739. package/src/platforms/gba/lib/maxmod/include/maxmod.h +412 -0
  740. package/src/platforms/gba/lib/maxmod/include/mm_types.h +333 -0
  741. package/src/platforms/gba/lib/maxmod/maxmod.seed.a +0 -0
  742. package/src/platforms/gba/lib/maxmod/maxmod.seed.hash +1 -0
  743. package/src/platforms/gba/lib/maxmod/music/chiptune.xm +0 -0
  744. package/src/platforms/gba/lib/maxmod/music/chiptune_soundbank.bin +0 -0
  745. package/src/platforms/gba/lib/maxmod/music/chiptune_soundbank.h +4 -0
  746. package/src/platforms/gba/lib/maxmod/music/make_chiptune_xm.js +203 -0
  747. package/src/platforms/gba/lib/maxmod/source/mm_effect.s +767 -0
  748. package/src/platforms/gba/lib/maxmod/source/mm_main.s +115 -0
  749. package/src/platforms/gba/lib/maxmod/source/mm_mas.s +4990 -0
  750. package/src/platforms/gba/lib/maxmod/source/mm_mas_arm.s +612 -0
  751. package/src/platforms/gba/lib/maxmod/source_gba/mm_init_default.s +98 -0
  752. package/src/platforms/gba/lib/maxmod/source_gba/mm_main_gba.s +292 -0
  753. package/src/platforms/gba/lib/maxmod/source_gba/mm_mixer_gba.s +1367 -0
  754. package/src/platforms/gba/lib/sysbase/gba_iosupport.c +138 -0
  755. package/src/platforms/gbc/MENTAL_MODEL.md +165 -0
  756. package/src/platforms/gbc/TROUBLESHOOTING.md +142 -0
  757. package/src/platforms/gbc/UPSTREAM_SOURCES.md +60 -0
  758. package/src/platforms/gbc/lib/c/LICENSE-HUGEDRIVER +25 -0
  759. package/src/platforms/gbc/lib/c/README.md +120 -0
  760. package/src/platforms/gbc/lib/c/SDCC_GOTCHAS.md +189 -0
  761. package/src/platforms/gbc/lib/c/gb_crt0.s +163 -0
  762. package/src/platforms/gbc/lib/c/gb_hardware.h +113 -0
  763. package/src/platforms/gbc/lib/c/gb_runtime.c +284 -0
  764. package/src/platforms/gbc/lib/c/gb_runtime.h +145 -0
  765. package/src/platforms/gbc/lib/c/hUGEDriver.c +191 -0
  766. package/src/platforms/gbc/lib/c/hUGEDriver.h +95 -0
  767. package/src/platforms/gbc/lib/c/hUGEDriver.upstream.asm +1908 -0
  768. package/src/platforms/gbc/lib/c/lcd_init.c +19 -0
  769. package/src/platforms/gbc/lib/c/patch-header.js +154 -0
  770. package/src/platforms/gbc/lib/c/song_data.c +88 -0
  771. package/src/platforms/gbc/lib/c/unroll.h +52 -0
  772. package/src/platforms/gbc/lib/c/wait_vblank.c +14 -0
  773. package/src/platforms/genesis/MENTAL_MODEL.md +223 -0
  774. package/src/platforms/genesis/TROUBLESHOOTING.md +193 -0
  775. package/src/platforms/genesis/UPSTREAM_SOURCES.md +52 -0
  776. package/src/platforms/genesis/image-to-tilemap.js +333 -0
  777. package/src/platforms/genesis/lib/README.md +157 -0
  778. package/src/platforms/genesis/lib/c/crtbegin.o +0 -0
  779. package/src/platforms/genesis/lib/c/crtend.o +0 -0
  780. package/src/platforms/genesis/lib/c/genesis.ld +44 -0
  781. package/src/platforms/genesis/lib/c/genesis_sfx.c +51 -0
  782. package/src/platforms/genesis/lib/c/genesis_sfx.h +49 -0
  783. package/src/platforms/genesis/lib/c/libc.a +0 -0
  784. package/src/platforms/genesis/lib/c/libgcc.a +0 -0
  785. package/src/platforms/genesis/lib/c/libm.a +0 -0
  786. package/src/platforms/genesis/lib/c/sega.s +71 -0
  787. package/src/platforms/genesis/lib/header.s +96 -0
  788. package/src/platforms/genesis/lib/nmi_safe.s +79 -0
  789. package/src/platforms/genesis/lib/pad_read.s +104 -0
  790. package/src/platforms/genesis/lib/sgdk/COPYING.RUNTIME +73 -0
  791. package/src/platforms/genesis/lib/sgdk/LICENSE +12 -0
  792. package/src/platforms/genesis/lib/sgdk/include/asm.h +52 -0
  793. package/src/platforms/genesis/lib/sgdk/include/asm_mac.i +9 -0
  794. package/src/platforms/genesis/lib/sgdk/include/bmp.h +690 -0
  795. package/src/platforms/genesis/lib/sgdk/include/config.h +208 -0
  796. package/src/platforms/genesis/lib/sgdk/include/dma.h +542 -0
  797. package/src/platforms/genesis/lib/sgdk/include/ext/console.h +387 -0
  798. package/src/platforms/genesis/lib/sgdk/include/ext/everdrive.h +116 -0
  799. package/src/platforms/genesis/lib/sgdk/include/ext/fat16.h +84 -0
  800. package/src/platforms/genesis/lib/sgdk/include/ext/flash-save/flash.h +164 -0
  801. package/src/platforms/genesis/lib/sgdk/include/ext/flash-save/saveman.h +177 -0
  802. package/src/platforms/genesis/lib/sgdk/include/ext/link_cable.h +316 -0
  803. package/src/platforms/genesis/lib/sgdk/include/ext/minimusic/minimus.h +29 -0
  804. package/src/platforms/genesis/lib/sgdk/include/ext/mw/16c550.h +221 -0
  805. package/src/platforms/genesis/lib/sgdk/include/ext/mw/comm.h +93 -0
  806. package/src/platforms/genesis/lib/sgdk/include/ext/mw/gamejolt.h +541 -0
  807. package/src/platforms/genesis/lib/sgdk/include/ext/mw/jsmn.h +471 -0
  808. package/src/platforms/genesis/lib/sgdk/include/ext/mw/json.h +122 -0
  809. package/src/platforms/genesis/lib/sgdk/include/ext/mw/lsd.h +172 -0
  810. package/src/platforms/genesis/lib/sgdk/include/ext/mw/megawifi.h +984 -0
  811. package/src/platforms/genesis/lib/sgdk/include/ext/mw/mw-msg.h +392 -0
  812. package/src/platforms/genesis/lib/sgdk/include/ext/mw/ssf_ed_pro.h +38 -0
  813. package/src/platforms/genesis/lib/sgdk/include/ext/mw/ssf_ed_x7.h +73 -0
  814. package/src/platforms/genesis/lib/sgdk/include/ext/serial/buffer.h +8 -0
  815. package/src/platforms/genesis/lib/sgdk/include/ext/serial/serial.h +133 -0
  816. package/src/platforms/genesis/lib/sgdk/include/ext/stb/stb_sprintf.h +1864 -0
  817. package/src/platforms/genesis/lib/sgdk/include/genesis.h +92 -0
  818. package/src/platforms/genesis/lib/sgdk/include/joy.h +482 -0
  819. package/src/platforms/genesis/lib/sgdk/include/kdebug.h +21 -0
  820. package/src/platforms/genesis/lib/sgdk/include/map.h +409 -0
  821. package/src/platforms/genesis/lib/sgdk/include/mapper.h +186 -0
  822. package/src/platforms/genesis/lib/sgdk/include/maths.h +1071 -0
  823. package/src/platforms/genesis/lib/sgdk/include/maths3D.h +480 -0
  824. package/src/platforms/genesis/lib/sgdk/include/memory.h +346 -0
  825. package/src/platforms/genesis/lib/sgdk/include/memory_base.h +37 -0
  826. package/src/platforms/genesis/lib/sgdk/include/object.h +171 -0
  827. package/src/platforms/genesis/lib/sgdk/include/pal.h +500 -0
  828. package/src/platforms/genesis/lib/sgdk/include/pool.h +171 -0
  829. package/src/platforms/genesis/lib/sgdk/include/psg.h +153 -0
  830. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_dpcm2.h +79 -0
  831. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_pcm.h +98 -0
  832. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_pcm4.h +125 -0
  833. package/src/platforms/genesis/lib/sgdk/include/snd/pcm/tab_vol.h +6 -0
  834. package/src/platforms/genesis/lib/sgdk/include/snd/smp_null.h +6 -0
  835. package/src/platforms/genesis/lib/sgdk/include/snd/smp_null_dpcm.h +6 -0
  836. package/src/platforms/genesis/lib/sgdk/include/snd/sound.h +70 -0
  837. package/src/platforms/genesis/lib/sgdk/include/snd/xgm.h +399 -0
  838. package/src/platforms/genesis/lib/sgdk/include/snd/xgm2.h +389 -0
  839. package/src/platforms/genesis/lib/sgdk/include/snd/z80_def.i80 +41 -0
  840. package/src/platforms/genesis/lib/sgdk/include/snd/z80_fct.i80 +83 -0
  841. package/src/platforms/genesis/lib/sgdk/include/snd/z80_mac.i80 +1476 -0
  842. package/src/platforms/genesis/lib/sgdk/include/sprite_eng.h +1095 -0
  843. package/src/platforms/genesis/lib/sgdk/include/sprite_eng_legacy.h +1030 -0
  844. package/src/platforms/genesis/lib/sgdk/include/sram.h +110 -0
  845. package/src/platforms/genesis/lib/sgdk/include/string.h +349 -0
  846. package/src/platforms/genesis/lib/sgdk/include/sys.h +511 -0
  847. package/src/platforms/genesis/lib/sgdk/include/tab_cnv.h +19 -0
  848. package/src/platforms/genesis/lib/sgdk/include/task.h +77 -0
  849. package/src/platforms/genesis/lib/sgdk/include/task_cst.h +33 -0
  850. package/src/platforms/genesis/lib/sgdk/include/timer.h +132 -0
  851. package/src/platforms/genesis/lib/sgdk/include/tools.h +450 -0
  852. package/src/platforms/genesis/lib/sgdk/include/types.h +320 -0
  853. package/src/platforms/genesis/lib/sgdk/include/vdp.h +1150 -0
  854. package/src/platforms/genesis/lib/sgdk/include/vdp_bg.h +723 -0
  855. package/src/platforms/genesis/lib/sgdk/include/vdp_pal.h +101 -0
  856. package/src/platforms/genesis/lib/sgdk/include/vdp_spr.h +448 -0
  857. package/src/platforms/genesis/lib/sgdk/include/vdp_tile.h +1136 -0
  858. package/src/platforms/genesis/lib/sgdk/include/vram.h +270 -0
  859. package/src/platforms/genesis/lib/sgdk/include/ym2612.h +87 -0
  860. package/src/platforms/genesis/lib/sgdk/include/z80_ctrl.h +420 -0
  861. package/src/platforms/genesis/lib/sgdk/libmd.seed.a +0 -0
  862. package/src/platforms/genesis/lib/sgdk/libmd.seed.hash +1 -0
  863. package/src/platforms/genesis/lib/sgdk/md.ld +120 -0
  864. package/src/platforms/genesis/lib/sgdk/music/demo.vgm +0 -0
  865. package/src/platforms/genesis/lib/sgdk/music/demo.xgc +0 -0
  866. package/src/platforms/genesis/lib/sgdk/music/demo.xgm +0 -0
  867. package/src/platforms/genesis/lib/sgdk/res/image/font_default.png +0 -0
  868. package/src/platforms/genesis/lib/sgdk/res/image/sgdk_logo.png +0 -0
  869. package/src/platforms/genesis/lib/sgdk/res/libres.h +10 -0
  870. package/src/platforms/genesis/lib/sgdk/res/libres.res +5 -0
  871. package/src/platforms/genesis/lib/sgdk/res/libres.s +166 -0
  872. package/src/platforms/genesis/lib/sgdk/res/sound/stop_xgm.bin +0 -0
  873. package/src/platforms/genesis/lib/sgdk/rom_header.c +33 -0
  874. package/src/platforms/genesis/lib/sgdk/sega.preprocessed.s +364 -0
  875. package/src/platforms/genesis/lib/sgdk/sega.s +365 -0
  876. package/src/platforms/genesis/lib/sgdk/src/bmp.c +1539 -0
  877. package/src/platforms/genesis/lib/sgdk/src/bmp_a.s +3477 -0
  878. package/src/platforms/genesis/lib/sgdk/src/boot/rom_header.c +33 -0
  879. package/src/platforms/genesis/lib/sgdk/src/boot/sega.s +365 -0
  880. package/src/platforms/genesis/lib/sgdk/src/dma.c +782 -0
  881. package/src/platforms/genesis/lib/sgdk/src/dma_a.s +23 -0
  882. package/src/platforms/genesis/lib/sgdk/src/error_a.s +376 -0
  883. package/src/platforms/genesis/lib/sgdk/src/ext/console.c +490 -0
  884. package/src/platforms/genesis/lib/sgdk/src/ext/everdrive.c +285 -0
  885. package/src/platforms/genesis/lib/sgdk/src/ext/fat16.c +610 -0
  886. package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/README.md +112 -0
  887. package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/flash.c +300 -0
  888. package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/saveman.c +641 -0
  889. package/src/platforms/genesis/lib/sgdk/src/ext/link_cable.c +1758 -0
  890. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/CHANGELOG.md +31 -0
  891. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/LICENSE.txt +17 -0
  892. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/README.md +18 -0
  893. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/data.z80 +148 -0
  894. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/define.z80 +173 -0
  895. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/api-c.md +80 -0
  896. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/format.md +132 -0
  897. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/teradrive.md +33 -0
  898. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/fm.z80 +363 -0
  899. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/main.z80 +433 -0
  900. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/minimus.c +129 -0
  901. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/minimus_drv.s80 +17 -0
  902. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/psg.z80 +231 -0
  903. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/track.z80 +398 -0
  904. package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/util.z80 +98 -0
  905. package/src/platforms/genesis/lib/sgdk/src/ext/mw/16c550.c +84 -0
  906. package/src/platforms/genesis/lib/sgdk/src/ext/mw/README.md +849 -0
  907. package/src/platforms/genesis/lib/sgdk/src/ext/mw/comm.c +141 -0
  908. package/src/platforms/genesis/lib/sgdk/src/ext/mw/gamejolt.c +758 -0
  909. package/src/platforms/genesis/lib/sgdk/src/ext/mw/json.c +153 -0
  910. package/src/platforms/genesis/lib/sgdk/src/ext/mw/lsd.c +364 -0
  911. package/src/platforms/genesis/lib/sgdk/src/ext/mw/megawifi.c +1501 -0
  912. package/src/platforms/genesis/lib/sgdk/src/ext/mw/ssf_ed_pro.c +98 -0
  913. package/src/platforms/genesis/lib/sgdk/src/ext/mw/ssf_ed_x7.c +67 -0
  914. package/src/platforms/genesis/lib/sgdk/src/ext/serial/buffer.c +69 -0
  915. package/src/platforms/genesis/lib/sgdk/src/ext/serial/serial.c +158 -0
  916. package/src/platforms/genesis/lib/sgdk/src/joy.c +1361 -0
  917. package/src/platforms/genesis/lib/sgdk/src/kdebug.s +109 -0
  918. package/src/platforms/genesis/lib/sgdk/src/map.c +1915 -0
  919. package/src/platforms/genesis/lib/sgdk/src/mapper.c +280 -0
  920. package/src/platforms/genesis/lib/sgdk/src/maths.c +878 -0
  921. package/src/platforms/genesis/lib/sgdk/src/maths3D.c +480 -0
  922. package/src/platforms/genesis/lib/sgdk/src/maths3D_a.s +205 -0
  923. package/src/platforms/genesis/lib/sgdk/src/memory.c +760 -0
  924. package/src/platforms/genesis/lib/sgdk/src/memory_a.s +306 -0
  925. package/src/platforms/genesis/lib/sgdk/src/object.c +111 -0
  926. package/src/platforms/genesis/lib/sgdk/src/pal.c +484 -0
  927. package/src/platforms/genesis/lib/sgdk/src/pool.c +234 -0
  928. package/src/platforms/genesis/lib/sgdk/src/psg.c +82 -0
  929. package/src/platforms/genesis/lib/sgdk/src/snd/drv_null.s80 +27 -0
  930. package/src/platforms/genesis/lib/sgdk/src/snd/drv_xgm.s80 +3037 -0
  931. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_dpcm2.s80 +984 -0
  932. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_pcm.s80 +592 -0
  933. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_pcm4.s80 +699 -0
  934. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_dpcm2.c +172 -0
  935. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_pcm.c +152 -0
  936. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_pcm4.c +213 -0
  937. package/src/platforms/genesis/lib/sgdk/src/snd/pcm/tab_vol.c +277 -0
  938. package/src/platforms/genesis/lib/sgdk/src/snd/smp_null.s +22 -0
  939. package/src/platforms/genesis/lib/sgdk/src/snd/smp_null_dpcm.s +15 -0
  940. package/src/platforms/genesis/lib/sgdk/src/snd/sound.c +33 -0
  941. package/src/platforms/genesis/lib/sgdk/src/snd/xgm.c +683 -0
  942. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2.s80 +993 -0
  943. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_fct.i80 +611 -0
  944. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_mac.i80 +133 -0
  945. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_pcm_fct.i80 +114 -0
  946. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_pcm_mac.i80 +1444 -0
  947. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_psg_fct.i80 +491 -0
  948. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_psg_mac.i80 +43 -0
  949. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_ym_fct.i80 +1664 -0
  950. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_ym_mac.i80 +295 -0
  951. package/src/platforms/genesis/lib/sgdk/src/snd/xgm2.c +1083 -0
  952. package/src/platforms/genesis/lib/sgdk/src/sprite_eng.c +2256 -0
  953. package/src/platforms/genesis/lib/sgdk/src/sprite_eng_legacy.c +2309 -0
  954. package/src/platforms/genesis/lib/sgdk/src/sram.c +30 -0
  955. package/src/platforms/genesis/lib/sgdk/src/sram_a.s +41 -0
  956. package/src/platforms/genesis/lib/sgdk/src/string.c +720 -0
  957. package/src/platforms/genesis/lib/sgdk/src/sys.c +1053 -0
  958. package/src/platforms/genesis/lib/sgdk/src/sys_a.s +74 -0
  959. package/src/platforms/genesis/lib/sgdk/src/tab_cnv.c +129 -0
  960. package/src/platforms/genesis/lib/sgdk/src/tab_log10.c +8201 -0
  961. package/src/platforms/genesis/lib/sgdk/src/tab_log2.c +8201 -0
  962. package/src/platforms/genesis/lib/sgdk/src/tab_sin.c +2058 -0
  963. package/src/platforms/genesis/lib/sgdk/src/tab_sqrt.c +8201 -0
  964. package/src/platforms/genesis/lib/sgdk/src/task.s +148 -0
  965. package/src/platforms/genesis/lib/sgdk/src/timer.c +201 -0
  966. package/src/platforms/genesis/lib/sgdk/src/tools.c +1299 -0
  967. package/src/platforms/genesis/lib/sgdk/src/tools_a.s +979 -0
  968. package/src/platforms/genesis/lib/sgdk/src/types.c +18 -0
  969. package/src/platforms/genesis/lib/sgdk/src/vdp.c +1060 -0
  970. package/src/platforms/genesis/lib/sgdk/src/vdp_bg.c +511 -0
  971. package/src/platforms/genesis/lib/sgdk/src/vdp_spr.c +322 -0
  972. package/src/platforms/genesis/lib/sgdk/src/vdp_tile.c +1011 -0
  973. package/src/platforms/genesis/lib/sgdk/src/vdp_tile_a.s +68 -0
  974. package/src/platforms/genesis/lib/sgdk/src/vram.c +273 -0
  975. package/src/platforms/genesis/lib/sgdk/src/ym2612.c +175 -0
  976. package/src/platforms/genesis/lib/sgdk/src/z80_ctrl.c +334 -0
  977. package/src/platforms/genesis/lib/sprite_table.s +129 -0
  978. package/src/platforms/genesis/lib/vblank_wait.s +73 -0
  979. package/src/platforms/genesis/lib/vdp_init.s +85 -0
  980. package/src/platforms/genesis/lib/wram.s +88 -0
  981. package/src/platforms/genesis/lib/z80_bootstrap.s +102 -0
  982. package/src/platforms/genesis/vdp.js +495 -0
  983. package/src/platforms/gg/MENTAL_MODEL.md +155 -0
  984. package/src/platforms/gg/TROUBLESHOOTING.md +91 -0
  985. package/src/platforms/gg/UPSTREAM_SOURCES.md +36 -0
  986. package/src/platforms/gg/lib/c/gg_crt0.s +112 -0
  987. package/src/platforms/gg/lib/c/gg_hw.h +62 -0
  988. package/src/platforms/gg/lib/c/gg_music.c +155 -0
  989. package/src/platforms/gg/lib/c/gg_music.h +89 -0
  990. package/src/platforms/gg/lib/c/gg_sfx.c +82 -0
  991. package/src/platforms/gg/lib/c/gg_sfx.h +40 -0
  992. package/src/platforms/gg/lib/c/joypad_read.c +22 -0
  993. package/src/platforms/gg/lib/c/load_palette.c +20 -0
  994. package/src/platforms/gg/lib/c/load_tiles.c +32 -0
  995. package/src/platforms/gg/lib/c/sprite_table.c +60 -0
  996. package/src/platforms/gg/lib/c/vblank_wait.c +10 -0
  997. package/src/platforms/gg/lib/c/vdp_init.c +58 -0
  998. package/src/platforms/index.js +7 -0
  999. package/src/platforms/lynx/MENTAL_MODEL.md +231 -0
  1000. package/src/platforms/lynx/TROUBLESHOOTING.md +105 -0
  1001. package/src/platforms/lynx/UPSTREAM_SOURCES.md +66 -0
  1002. package/src/platforms/lynx/lib/c/lynx_music.c +63 -0
  1003. package/src/platforms/lynx/lib/c/lynx_music.h +16 -0
  1004. package/src/platforms/lynx/lib/c/lynx_sfx.c +147 -0
  1005. package/src/platforms/lynx/lib/c/lynx_sfx.h +59 -0
  1006. package/src/platforms/lynx/lib/cc65-src/bllhdr.s +18 -0
  1007. package/src/platforms/lynx/lib/cc65-src/bootldr.s +195 -0
  1008. package/src/platforms/lynx/lib/cc65-src/cgetc.s +69 -0
  1009. package/src/platforms/lynx/lib/cc65-src/clock.s +87 -0
  1010. package/src/platforms/lynx/lib/cc65-src/crt0.s +135 -0
  1011. package/src/platforms/lynx/lib/cc65-src/defdir.s +29 -0
  1012. package/src/platforms/lynx/lib/cc65-src/eeprom.s +255 -0
  1013. package/src/platforms/lynx/lib/cc65-src/eeprom46.s +204 -0
  1014. package/src/platforms/lynx/lib/cc65-src/eeprom66.s +227 -0
  1015. package/src/platforms/lynx/lib/cc65-src/eeprom86.s +236 -0
  1016. package/src/platforms/lynx/lib/cc65-src/exec.s +34 -0
  1017. package/src/platforms/lynx/lib/cc65-src/exehdr.s +27 -0
  1018. package/src/platforms/lynx/lib/cc65-src/extzp.inc +23 -0
  1019. package/src/platforms/lynx/lib/cc65-src/extzp.s +30 -0
  1020. package/src/platforms/lynx/lib/cc65-src/irq.s +45 -0
  1021. package/src/platforms/lynx/lib/cc65-src/joy/lynx-stdjoy.s +93 -0
  1022. package/src/platforms/lynx/lib/cc65-src/joy_stat_stddrv.s +14 -0
  1023. package/src/platforms/lynx/lib/cc65-src/kbhit.s +56 -0
  1024. package/src/platforms/lynx/lib/cc65-src/libref.s +9 -0
  1025. package/src/platforms/lynx/lib/cc65-src/load.s +41 -0
  1026. package/src/platforms/lynx/lib/cc65-src/lseek.s +58 -0
  1027. package/src/platforms/lynx/lib/cc65-src/lynx-cart.s +98 -0
  1028. package/src/platforms/lynx/lib/cc65-src/lynx-snd.s +1270 -0
  1029. package/src/platforms/lynx/lib/cc65-src/mainargs.s +24 -0
  1030. package/src/platforms/lynx/lib/cc65-src/open.s +136 -0
  1031. package/src/platforms/lynx/lib/cc65-src/oserror.s +14 -0
  1032. package/src/platforms/lynx/lib/cc65-src/read.s +44 -0
  1033. package/src/platforms/lynx/lib/cc65-src/ser/lynx-comlynx.s +404 -0
  1034. package/src/platforms/lynx/lib/cc65-src/ser_stat_stddrv.s +14 -0
  1035. package/src/platforms/lynx/lib/cc65-src/sysuname.s +39 -0
  1036. package/src/platforms/lynx/lib/cc65-src/tgi/lynx-160-102-16.s +1075 -0
  1037. package/src/platforms/lynx/lib/cc65-src/tgi_colors.s +9 -0
  1038. package/src/platforms/lynx/lib/cc65-src/tgi_irq.s +11 -0
  1039. package/src/platforms/lynx/lib/cc65-src/tgi_stat_stddrv.s +14 -0
  1040. package/src/platforms/lynx/lib/cc65-src/tgi_stddrv.s +13 -0
  1041. package/src/platforms/lynx/lib/cc65-src/uploader.s +81 -0
  1042. package/src/platforms/nes/MENTAL_MODEL.md +301 -0
  1043. package/src/platforms/nes/TROUBLESHOOTING.md +321 -0
  1044. package/src/platforms/nes/UPSTREAM_SOURCES.md +31 -0
  1045. package/src/platforms/nes/image-to-chr.js +195 -0
  1046. package/src/platforms/nes/image-to-tilemap.js +415 -0
  1047. package/src/platforms/nes/lib/README.md +40 -0
  1048. package/src/platforms/nes/lib/asm/LICENSE-FAMITONE +40 -0
  1049. package/src/platforms/nes/lib/asm/chr_ram_header.s +32 -0
  1050. package/src/platforms/nes/lib/asm/famitone2.s +1258 -0
  1051. package/src/platforms/nes/lib/asm/famitone_bridge.s +50 -0
  1052. package/src/platforms/nes/lib/asm/music_data.s +238 -0
  1053. package/src/platforms/nes/lib/c/chr_ram_runtime_hello_sprite.c +81 -0
  1054. package/src/platforms/nes/lib/c/chr_ram_runtime_hud_row.c +101 -0
  1055. package/src/platforms/nes/lib/c/nes_runtime.c +347 -0
  1056. package/src/platforms/nes/lib/c/nes_runtime.h +153 -0
  1057. package/src/platforms/nes/lib/c/nmi_handler.c +51 -0
  1058. package/src/platforms/nes/lib/c/nmi_trampoline.s +25 -0
  1059. package/src/platforms/nes/lib/cc65-src/Makefile.inc +9 -0
  1060. package/src/platforms/nes/lib/cc65-src/_scrsize.s +24 -0
  1061. package/src/platforms/nes/lib/cc65-src/cclear.s +29 -0
  1062. package/src/platforms/nes/lib/cc65-src/chline.s +31 -0
  1063. package/src/platforms/nes/lib/cc65-src/clock.s +31 -0
  1064. package/src/platforms/nes/lib/cc65-src/clrscr.s +72 -0
  1065. package/src/platforms/nes/lib/cc65-src/color.s +68 -0
  1066. package/src/platforms/nes/lib/cc65-src/cpeekc.s +37 -0
  1067. package/src/platforms/nes/lib/cc65-src/cpeekcolor.s +8 -0
  1068. package/src/platforms/nes/lib/cc65-src/cpeekrevers.s +37 -0
  1069. package/src/platforms/nes/lib/cc65-src/cputc.s +95 -0
  1070. package/src/platforms/nes/lib/cc65-src/crt0.s +180 -0
  1071. package/src/platforms/nes/lib/cc65-src/cvline.s +31 -0
  1072. package/src/platforms/nes/lib/cc65-src/get_tv.s +37 -0
  1073. package/src/platforms/nes/lib/cc65-src/gotox.s +21 -0
  1074. package/src/platforms/nes/lib/cc65-src/gotoxy.s +22 -0
  1075. package/src/platforms/nes/lib/cc65-src/gotoy.s +22 -0
  1076. package/src/platforms/nes/lib/cc65-src/irq.s +19 -0
  1077. package/src/platforms/nes/lib/cc65-src/joy/nes-stdjoy.s +102 -0
  1078. package/src/platforms/nes/lib/cc65-src/joy_stat_stddrv.s +14 -0
  1079. package/src/platforms/nes/lib/cc65-src/libref.s +9 -0
  1080. package/src/platforms/nes/lib/cc65-src/mainargs.s +24 -0
  1081. package/src/platforms/nes/lib/cc65-src/neschar.s +4616 -0
  1082. package/src/platforms/nes/lib/cc65-src/ppu.s +158 -0
  1083. package/src/platforms/nes/lib/cc65-src/ppubuf.s +117 -0
  1084. package/src/platforms/nes/lib/cc65-src/randomize.s +18 -0
  1085. package/src/platforms/nes/lib/cc65-src/revers.s +27 -0
  1086. package/src/platforms/nes/lib/cc65-src/setcursor.s +37 -0
  1087. package/src/platforms/nes/lib/cc65-src/sysuname.s +39 -0
  1088. package/src/platforms/nes/lib/cc65-src/tgi/nes-64-56-2.s +480 -0
  1089. package/src/platforms/nes/lib/cc65-src/tgi_stat_stddrv.s +14 -0
  1090. package/src/platforms/nes/lib/cc65-src/tgi_stddrv.s +13 -0
  1091. package/src/platforms/nes/lib/cc65-src/waitvsync.s +18 -0
  1092. package/src/platforms/nes/lib/cc65-src/wherex.s +19 -0
  1093. package/src/platforms/nes/lib/cc65-src/wherey.s +19 -0
  1094. package/src/platforms/nes/lib/clear_nametable.s +38 -0
  1095. package/src/platforms/nes/lib/clear_oam.s +18 -0
  1096. package/src/platforms/nes/lib/load_palette.s +31 -0
  1097. package/src/platforms/nes/lib/nmi_safe.s +65 -0
  1098. package/src/platforms/nes/lib/oam_dma.s +16 -0
  1099. package/src/platforms/nes/lib/read_pad.s +46 -0
  1100. package/src/platforms/nes/lib/reset.s +46 -0
  1101. package/src/platforms/nes/lib/sprite_table_populate.s +75 -0
  1102. package/src/platforms/nes/lib/wait_vblank.s +12 -0
  1103. package/src/platforms/nes/palette.js +39 -0
  1104. package/src/platforms/nes/ppu.js +372 -0
  1105. package/src/platforms/sms/MENTAL_MODEL.md +267 -0
  1106. package/src/platforms/sms/TROUBLESHOOTING.md +124 -0
  1107. package/src/platforms/sms/UPSTREAM_SOURCES.md +29 -0
  1108. package/src/platforms/sms/image-to-tilemap.js +260 -0
  1109. package/src/platforms/sms/lib/README.md +117 -0
  1110. package/src/platforms/sms/lib/c/joypad_read.c +33 -0
  1111. package/src/platforms/sms/lib/c/load_palette.c +24 -0
  1112. package/src/platforms/sms/lib/c/load_tiles.c +32 -0
  1113. package/src/platforms/sms/lib/c/sms_crt0.s +101 -0
  1114. package/src/platforms/sms/lib/c/sms_hw.h +53 -0
  1115. package/src/platforms/sms/lib/c/sms_music.c +178 -0
  1116. package/src/platforms/sms/lib/c/sms_music.h +50 -0
  1117. package/src/platforms/sms/lib/c/sms_sfx.c +82 -0
  1118. package/src/platforms/sms/lib/c/sms_sfx.h +40 -0
  1119. package/src/platforms/sms/lib/c/sprite_table.c +60 -0
  1120. package/src/platforms/sms/lib/c/vblank_wait.c +10 -0
  1121. package/src/platforms/sms/lib/c/vdp_init.c +58 -0
  1122. package/src/platforms/sms/lib/header.s +33 -0
  1123. package/src/platforms/sms/lib/joypad_read.s +40 -0
  1124. package/src/platforms/sms/lib/load_palette.s +30 -0
  1125. package/src/platforms/sms/lib/load_tiles.s +50 -0
  1126. package/src/platforms/sms/lib/sprite_table.s +44 -0
  1127. package/src/platforms/sms/lib/vblank_wait.s +36 -0
  1128. package/src/platforms/sms/lib/vdp_init.s +47 -0
  1129. package/src/platforms/sms/vdp.js +530 -0
  1130. package/src/platforms/snes/MENTAL_MODEL.md +275 -0
  1131. package/src/platforms/snes/TROUBLESHOOTING.md +208 -0
  1132. package/src/platforms/snes/UPSTREAM_SOURCES.md +50 -0
  1133. package/src/platforms/snes/brr.js +208 -0
  1134. package/src/platforms/snes/image-to-tilemap.js +227 -0
  1135. package/src/platforms/snes/lib/audio/apu_blob.asm +228 -0
  1136. package/src/platforms/snes/lib/audio/apu_blob.bin +0 -0
  1137. package/src/platforms/snes/lib/audio/explosion.brr +0 -0
  1138. package/src/platforms/snes/lib/audio/sample_bank.bin +0 -0
  1139. package/src/platforms/snes/lib/audio/shoot.brr +0 -0
  1140. package/src/platforms/snes/lib/audio/spc_driver.asm +241 -0
  1141. package/src/platforms/snes/lib/audio_pipeline.asm +62 -0
  1142. package/src/platforms/snes/lib/c/crt0.asm +125 -0
  1143. package/src/platforms/snes/lib/c/hdr.asm +50 -0
  1144. package/src/platforms/snes/lib/c/snes_sfx.c +116 -0
  1145. package/src/platforms/snes/lib/c/snes_sfx.h +96 -0
  1146. package/src/platforms/snes/lib/c/snes_sfx_data.asm +25 -0
  1147. package/src/platforms/snes/lib/cgram_upload.asm +43 -0
  1148. package/src/platforms/snes/lib/lorom_header.asm +47 -0
  1149. package/src/platforms/snes/lib/lorom_multibank.asm +66 -0
  1150. package/src/platforms/snes/lib/nmi_safe.asm +77 -0
  1151. package/src/platforms/snes/lib/oam_upload.asm +45 -0
  1152. package/src/platforms/snes/lib/pad_read.asm +64 -0
  1153. package/src/platforms/snes/lib/pvsneslib/LICENSE +21 -0
  1154. package/src/platforms/snes/lib/pvsneslib/include/ctype.h +6 -0
  1155. package/src/platforms/snes/lib/pvsneslib/include/float.h +4 -0
  1156. package/src/platforms/snes/lib/pvsneslib/include/hdr.asm +47 -0
  1157. package/src/platforms/snes/lib/pvsneslib/include/limits.h +13 -0
  1158. package/src/platforms/snes/lib/pvsneslib/include/math.h +10 -0
  1159. package/src/platforms/snes/lib/pvsneslib/include/setjmp.h +4 -0
  1160. package/src/platforms/snes/lib/pvsneslib/include/snes/background.h +396 -0
  1161. package/src/platforms/snes/lib/pvsneslib/include/snes/console.h +188 -0
  1162. package/src/platforms/snes/lib/pvsneslib/include/snes/dma.h +381 -0
  1163. package/src/platforms/snes/lib/pvsneslib/include/snes/input.h +289 -0
  1164. package/src/platforms/snes/lib/pvsneslib/include/snes/interrupt.h +264 -0
  1165. package/src/platforms/snes/lib/pvsneslib/include/snes/libversion.h +10 -0
  1166. package/src/platforms/snes/lib/pvsneslib/include/snes/lzss.h +43 -0
  1167. package/src/platforms/snes/lib/pvsneslib/include/snes/map.h +113 -0
  1168. package/src/platforms/snes/lib/pvsneslib/include/snes/object.h +234 -0
  1169. package/src/platforms/snes/lib/pvsneslib/include/snes/pixel.h +53 -0
  1170. package/src/platforms/snes/lib/pvsneslib/include/snes/scores.h +66 -0
  1171. package/src/platforms/snes/lib/pvsneslib/include/snes/snestypes.h +65 -0
  1172. package/src/platforms/snes/lib/pvsneslib/include/snes/sound.h +245 -0
  1173. package/src/platforms/snes/lib/pvsneslib/include/snes/sprite.h +456 -0
  1174. package/src/platforms/snes/lib/pvsneslib/include/snes/video.h +465 -0
  1175. package/src/platforms/snes/lib/pvsneslib/include/snes.h +190 -0
  1176. package/src/platforms/snes/lib/pvsneslib/include/stdarg.h +28 -0
  1177. package/src/platforms/snes/lib/pvsneslib/include/stdbool.h +53 -0
  1178. package/src/platforms/snes/lib/pvsneslib/include/stddef.h +27 -0
  1179. package/src/platforms/snes/lib/pvsneslib/include/stdint.h +7 -0
  1180. package/src/platforms/snes/lib/pvsneslib/include/stdio.h +9 -0
  1181. package/src/platforms/snes/lib/pvsneslib/include/stdlib.h +13 -0
  1182. package/src/platforms/snes/lib/pvsneslib/include/string.h +19 -0
  1183. package/src/platforms/snes/lib/pvsneslib/include/strings.h +5 -0
  1184. package/src/platforms/snes/lib/pvsneslib/source/Makefile +87 -0
  1185. package/src/platforms/snes/lib/pvsneslib/source/backgrounds.asm +834 -0
  1186. package/src/platforms/snes/lib/pvsneslib/source/consoles.asm +1028 -0
  1187. package/src/platforms/snes/lib/pvsneslib/source/crt0_snes.asm +329 -0
  1188. package/src/platforms/snes/lib/pvsneslib/source/dmas.asm +1275 -0
  1189. package/src/platforms/snes/lib/pvsneslib/source/hdr.asm +56 -0
  1190. package/src/platforms/snes/lib/pvsneslib/source/input.asm +445 -0
  1191. package/src/platforms/snes/lib/pvsneslib/source/libc.asm +485 -0
  1192. package/src/platforms/snes/lib/pvsneslib/source/libc_c.c +1214 -0
  1193. package/src/platforms/snes/lib/pvsneslib/source/libm.asm +510 -0
  1194. package/src/platforms/snes/lib/pvsneslib/source/libtcc.asm +374 -0
  1195. package/src/platforms/snes/lib/pvsneslib/source/lzsss.asm +256 -0
  1196. package/src/platforms/snes/lib/pvsneslib/source/maps.asm +1078 -0
  1197. package/src/platforms/snes/lib/pvsneslib/source/objects.asm +2881 -0
  1198. package/src/platforms/snes/lib/pvsneslib/source/scores.asm +226 -0
  1199. package/src/platforms/snes/lib/pvsneslib/source/sm_spc.asm +187 -0
  1200. package/src/platforms/snes/lib/pvsneslib/source/snesmodwla.asm +1186 -0
  1201. package/src/platforms/snes/lib/pvsneslib/source/sounds.asm +273 -0
  1202. package/src/platforms/snes/lib/pvsneslib/source/sprites.asm +3946 -0
  1203. package/src/platforms/snes/lib/pvsneslib/source/vblank.asm +917 -0
  1204. package/src/platforms/snes/lib/pvsneslib/source/videos.asm +1137 -0
  1205. package/src/platforms/snes/lib/reset_init.asm +31 -0
  1206. package/src/platforms/snes/lib/sprite_table_populate.asm +122 -0
  1207. package/src/platforms/snes/lib/vram_dma_upload.asm +42 -0
  1208. package/src/platforms/snes/ppu.js +606 -0
  1209. package/src/playtest/playtest.js +612 -0
  1210. package/src/rom-id/identifier.js +421 -0
  1211. package/src/rom-id/patch.js +217 -0
  1212. package/src/toolchains/_worker/pool.js +253 -0
  1213. package/src/toolchains/_worker/run.js +78 -0
  1214. package/src/toolchains/_worker/wasm-worker.js +233 -0
  1215. package/src/toolchains/arm-none-eabi-gcc/gcc.js +208 -0
  1216. package/src/toolchains/asar/asar.js +542 -0
  1217. package/src/toolchains/assemble-snippet.js +256 -0
  1218. package/src/toolchains/cc65/cc65.js +395 -0
  1219. package/src/toolchains/cc65/da65.js +119 -0
  1220. package/src/toolchains/cc65/dbgparse.js +274 -0
  1221. package/src/toolchains/cc65/preset-resolver.js +59 -0
  1222. package/src/toolchains/cc65/presets/nes/chr-ram-runtime.cfg +79 -0
  1223. package/src/toolchains/cc65/presets/nes/chr-ram-runtime.crt0.s +178 -0
  1224. package/src/toolchains/cc65/presets/nes/chr-ram.cfg +76 -0
  1225. package/src/toolchains/cc65/presets/nes/chr-ram.crt0.s +106 -0
  1226. package/src/toolchains/common/ar.js +121 -0
  1227. package/src/toolchains/common/sdk-cache.js +116 -0
  1228. package/src/toolchains/common/symbols.js +139 -0
  1229. package/src/toolchains/dasm/dasm.js +96 -0
  1230. package/src/toolchains/gba-c/gba-c.js +832 -0
  1231. package/src/toolchains/genesis-c/README.md +61 -0
  1232. package/src/toolchains/genesis-c/genesis-c.js +598 -0
  1233. package/src/toolchains/index.js +727 -0
  1234. package/src/toolchains/m68k-elf-gcc/gcc.js +220 -0
  1235. package/src/toolchains/m68kdasm.js +438 -0
  1236. package/src/toolchains/parse-errors.js +258 -0
  1237. package/src/toolchains/registry.js +67 -0
  1238. package/src/toolchains/rgbds/rgbds.js +144 -0
  1239. package/src/toolchains/sdcc/preflight-lint.js +295 -0
  1240. package/src/toolchains/sdcc/sdcc.js +519 -0
  1241. package/src/toolchains/sjasm/sjasm.js +85 -0
  1242. package/src/toolchains/sm83dasm.js +194 -0
  1243. package/src/toolchains/snes-c/snes-c.js +409 -0
  1244. package/src/toolchains/tcc816/tcc816.js +79 -0
  1245. package/src/toolchains/vasm68k/vasm68k.js +138 -0
  1246. package/src/toolchains/wladx/wladx.js +120 -0
  1247. package/src/toolchains/z80dasm.js +303 -0
@@ -0,0 +1,1444 @@
1
+ ; ########################### macro ##############################
2
+
3
+
4
+ ; sampleOutputDirectFast
5
+ ; ----------------------
6
+ ; timer A res --> IXL
7
+ ; YMPORT0 --> HL'
8
+ ; YMPORT1 --> DE'
9
+ ; read buffer --> BC' --> read buffer
10
+ ;
11
+ ; Output a sample to the DAC
12
+ ; 11 cycles before writing YM
13
+ ;
14
+ ; = 36 cycles - ~233 cycles remaining for other tasks
15
+
16
+ macro sampleOutputDirectFast
17
+
18
+ EXX ; ' 4 | (4)
19
+
20
+ LD A, (BC) ; read sample from buffer ' 7 |
21
+ INC C ; increment read address ' 4 | 28 (32)
22
+ LD (HL), 0x2A ; DAC register ' 10 |
23
+ LD (DE), A ; play sample ' 7 |
24
+
25
+ EXX ; ' 4 | (36)
26
+
27
+ endm
28
+
29
+
30
+ ; sampleOutputNoIntDirectFast
31
+ ; ---------------------------
32
+ ; YMPORT0 --> HL'
33
+ ; YMPORT1 --> DE'
34
+ ; read buffer --> BC' --> read buffer
35
+ ;
36
+ ; wait until sample timer elapsed and output a sample to the DAC
37
+ ; 15 cycles before writing YM
38
+ ;
39
+ ; = 44 cycles - ~225 cycles remaining for others tasks
40
+
41
+ macro sampleOutputNoIntDirectFast
42
+
43
+ DI ; disable ints ' 4 |
44
+ EXX ; ' 4 | (8)
45
+
46
+ LD A, (BC) ; read sample from buffer ' 7 |
47
+ INC C ; increment read address ' 4 | 28 (36)
48
+ LD (HL), 0x2A ; DAC register ' 10 |
49
+ LD (DE), A ; play sample ' 7 |
50
+
51
+ EXX ; ' 4 | (44)
52
+ EI ; enable ints ' 4 |
53
+
54
+ endm
55
+
56
+
57
+ ; sampleOutputDirect
58
+ ; ------------------
59
+ ; timer A res --> IXL
60
+ ; YMPORT0 --> HL'
61
+ ; YMPORT1 --> DE'
62
+ ; read buffer --> BC' --> read buffer
63
+ ;
64
+ ; Output a sample to the DAC
65
+ ; 11 cycles before writing YM
66
+ ;
67
+ ; = 61 cycles - ~208 cycles remaining for other tasks
68
+
69
+ macro sampleOutputDirect
70
+
71
+ EXX ; ' 4 | (4)
72
+
73
+ LD A, IXL ; A = timer A res ' 8 |
74
+ LD (HL), 0x27 ; timer register ' 10 | 25 (29)
75
+ LD (DE), A ; reset timer A ' 7 |
76
+
77
+ LD A, (BC) ; read sample from buffer ' 7 |
78
+ INC C ; increment read address ' 4 | 28 (57)
79
+ LD (HL), 0x2A ; DAC register ' 10 |
80
+ LD (DE), A ; play sample ' 7 |
81
+
82
+ EXX ; ' 4 | (61)
83
+
84
+ endm
85
+
86
+
87
+ ; sampleOutputNoIntDirect
88
+ ; -----------------------
89
+ ; timer A res --> IXL
90
+ ; YMPORT0 --> HL'
91
+ ; YMPORT1 --> DE'
92
+ ; read buffer --> BC' --> read buffer
93
+ ;
94
+ ; wait until sample timer elapsed and output a sample to the DAC
95
+ ; 15 cycles before writing YM
96
+ ;
97
+ ; = 69 cycles - ~200 cycles remaining for others tasks
98
+
99
+ macro sampleOutputNoIntDirect
100
+
101
+ DI ; disable ints ' 4 |
102
+ EXX ; ' 4 | (8)
103
+
104
+ LD A, IXL ; A = timer A res ' 8 |
105
+ LD (HL), 0x27 ; timer register ' 10 | 25 (33)
106
+ LD (DE), A ; reset timer A ' 7 |
107
+
108
+ LD A, (BC) ; read sample from buffer ' 7 |
109
+ INC C ; increment read address ' 4 | 28 (61)
110
+ LD (HL), 0x2A ; DAC register ' 10 |
111
+ LD (DE), A ; play sample ' 7 |
112
+
113
+ EXX ; ' 4 | (69)
114
+ EI ; enable ints ' 4 |
115
+
116
+ endm
117
+
118
+
119
+ ; sampleOutput
120
+ ; ------------
121
+ ; timer A res --> IXL
122
+ ; YMPORT0 --> HL'
123
+ ; YMPORT1 --> DE'
124
+ ; read buffer --> BC' --> read buffer
125
+ ;
126
+ ; wait until sample timer elapsed and output a sample to the DAC
127
+ ; 19 cycles before writing YM
128
+ ;
129
+ ; = 80+ cycles - ~189 cycles remaining for others tasks
130
+
131
+ macro sampleOutput
132
+
133
+ EXX ; ' 4 | (4)
134
+
135
+ LD A, IXL ; A = timer A res ' 8 | (12)
136
+
137
+ .wait
138
+ BIT 0, (HL) ; timer A not yet elapsed ? ' 12 |
139
+ JR Z, .wait ; --> wait ' 7 | 19 (31)
140
+
141
+ LD (HL), 0x27 ; timer register ' 10 |
142
+ LD (DE), A ; reset timer A ' 7 | 17 (48)
143
+
144
+ LD A, (BC) ; read sample from buffer ' 7 |
145
+ LD (HL), 0x2A ; DAC register ' 10 |
146
+ INC C ; increment read address ' 4 | 28 (76)
147
+ LD (DE), A ; play sample ' 7 |
148
+
149
+ EXX ; ' 4 | (80)
150
+
151
+ endm
152
+
153
+
154
+ ; sampleOutputNoInt
155
+ ; -----------------
156
+ ; timer A res --> IXL
157
+ ; YMPORT0 --> HL'
158
+ ; YMPORT1 --> DE'
159
+ ; read buffer --> BC' --> read buffer
160
+ ;
161
+ ; wait until sample timer elapsed and output a sample to the DAC
162
+ ; 23 cycles before writing YM
163
+ ;
164
+ ; = 88+ cycles - ~181 cycles remaining for others tasks
165
+
166
+ macro sampleOutputNoInt
167
+
168
+ DI ; disable ints ' 4 |
169
+ EXX ; ' 4 | (8)
170
+
171
+ LD A, IXL ; A = timer A res ' 8 | (16)
172
+
173
+ .wait
174
+ BIT 0, (HL) ; timer A not yet elapsed ? ' 12 |
175
+ JR Z, .wait ; --> wait ' 7 | 19 (35)
176
+
177
+ LD (HL), 0x27 ; timer register ' 10 |
178
+ LD (DE), A ; reset timer A ' 7 | 17 (52)
179
+
180
+ LD A, (BC) ; read sample from buffer ' 7 |
181
+ LD (HL), 0x2A ; DAC register ' 10 |
182
+ INC C ; increment read address ' 4 | 28 (80)
183
+ LD (DE), A ; play sample ' 7 |
184
+
185
+ EXX ; ' 4 | (88)
186
+ EI ; enable ints ' 4 |
187
+
188
+ endm
189
+
190
+
191
+ ; sampleOutputNoIntSafe
192
+ ; ---------------------
193
+ ; timer A res --> IXL
194
+ ; YMPORT0 --> HL'
195
+ ; YMPORT1 --> DE'
196
+ ; read buffer --> BC' --> read buffer
197
+ ;
198
+ ; wait until sample timer elapsed and output a sample to the DAC
199
+ ; 39 cycles before writing YM
200
+ ;
201
+ ; = 93+ cycles - ~176 cycles remaining for others tasks
202
+
203
+ macro sampleOutputNoIntSafe
204
+
205
+ .wait
206
+ LD A, (YMPORT0) ; A = YM status ' 13 |
207
+ RRA ; timer A overflow ? ' 4 | (24)
208
+ JR NC, .wait ; ' 7 |
209
+
210
+ DI ; disable ints ' 4 |
211
+ EXX ; ' 4 | 8 (32)
212
+
213
+ LD A, IXL ; A = timer A res ' 8 |
214
+ LD (HL), 0x27 ; timer register ' 10 | 25 (57)
215
+ LD (DE), A ; reset timer A ' 7 |
216
+
217
+ LD A, (BC) ; read sample from buffer ' 7 |
218
+ INC C ; increment read address ' 4 | 28 (85)
219
+ LD (HL), 0x2A ; DAC register ' 10 |
220
+ LD (DE), A ; play sample ' 7 |
221
+
222
+ EXX ; ' 4 | (93)
223
+ EI ; enable ints ' 4 |
224
+
225
+ endm
226
+
227
+
228
+ ; getRemainingSample
229
+ ; ------------------
230
+ ; current read position --> D
231
+ ; A --> ?
232
+ ;
233
+ ; Get remaining sample in PCM buffer
234
+ ; = 17 cycles
235
+
236
+ macro getRemainingSample
237
+
238
+ LD A, (PCM_WRITE_POS) ; current PCM write pos ' 13 | 17
239
+ SUB D ; subtract curr read pos ' 4 |
240
+
241
+ endm
242
+
243
+
244
+ ; isPCMLessThan
245
+ ; -------------
246
+ ; current read position --> D
247
+ ; A --> ?
248
+ ;
249
+ ; Carry is set if less than <num> bytes of PCM sample remains in PCM buffer
250
+ ; = 24 cycles
251
+
252
+ macro isPCMLessThan num
253
+
254
+ getRemainingSample ; ' 17 | 24
255
+ CP num ; ' 7 |
256
+
257
+ endm
258
+
259
+
260
+ ; isPCMEmpty
261
+ ; ----------
262
+ ; current read position --> D
263
+ ; A --> ?
264
+ ;
265
+ ; Carry is set if less than 64 bytes of PCM sample remains in PCM buffer (empty)
266
+ ; = 24 cycles
267
+
268
+ macro isPCMEmpty
269
+
270
+ isPCMLessThan 64 ; ' 24
271
+
272
+ endm
273
+
274
+
275
+ ; isPCMNotFull
276
+ ; ------------
277
+ ; current read position --> D
278
+ ; A --> ?
279
+ ;
280
+ ; Carry is set if less than 192 bytes of PCM sample remains in PCM buffer (not full)
281
+ ; = 24 cycles
282
+
283
+ macro isPCMNotFull
284
+
285
+ isPCMLessThan 192 ; ' 24
286
+
287
+ endm
288
+
289
+
290
+ ; handlePCMCommand
291
+ ; ----------------
292
+ ; command --> B
293
+ ; status --> C --> status
294
+ ; HL --> ?
295
+ ; A --> ?
296
+ ;
297
+ ; handle PCM play/stop command
298
+ ; = 18 cycles / 1 sample
299
+
300
+ macro handlePCMCommand ch
301
+
302
+ BIT CMD_PCM_SFT+ch, B ; play PCM ch command ? ' 8 |
303
+ JP Z, .no_play ; ' 10 | (18)
304
+
305
+ LD A, (PCM_ARG+ch) ; ' 13 |
306
+ LD (PCM_PRIO_EXT+(ch*8)), A ; set PCM params ' 13 | 26 (44)
307
+
308
+ LD HL, (PCM_ADDR_ARG+(ch*4)) ; get PCM addr ' 16 |
309
+ LD A, H ; ' 4 |
310
+ OR L ; ' 4 | 31 (75)
311
+ JR NZ, .play ; not stop play ? ' 7 |
312
+
313
+ RES STAT_PCM_SFT+ch, C ; clear play status ' 8 | 20 (95)
314
+ JR .done ; done ' 12 |
315
+
316
+ .play ; ' 80
317
+ SET STAT_PCM_SFT+ch, C ; set play status ' 8 | (88)
318
+
319
+ XOR A ; ' 4 |
320
+ LD (PCM_ADDR+(ch*8)+0), A ; ' 13 | 33 (121)
321
+ LD (PCM_ADDR+(ch*8)+1), HL ; set sample address ' 16 |
322
+
323
+ LD HL, (PCM_LEN_ARG+(ch*4)) ; ' 16 |
324
+ LD (PCM_LEN+(ch*8)), HL ; set sample len ' 16 | 32 (153)
325
+
326
+ .done
327
+ SAMPLE_OUTPUT_FASTCALL
328
+
329
+ .no_play ; ' 18
330
+
331
+ endm
332
+
333
+
334
+ ; updatePCM
335
+ ; ---------
336
+ ; sample source.ML --> HL --> ?
337
+ ; sample source.H --> IXH
338
+ ; A --> ?
339
+ ;
340
+ ; update PCM vars after buffer fill
341
+ ; 1 or 2 samples
342
+
343
+ macro updatePCM ch
344
+
345
+ DI ; protect from ints ' 4 |
346
+ LD A, (PCM_PRIO_EXT+(ch*8)) ; A = PCM params ' 13 |
347
+ LD B, A ; B = PCM params ' 4 | (36)
348
+ AND $10 ; ' 8 |
349
+ JR NZ, .params_changed ; params changed ? ' 7 |
350
+
351
+ LD (PCM_ADDR+(ch*8)+0), HL ; store PCM src.ML ' 16 | (52)
352
+
353
+ LD HL, (PCM_LEN+(ch*8)) ; get remaining PCM len ' 16 |
354
+ DEC HL ; decrement it ' 6 | 22 (74)
355
+
356
+ LD A, H ; ' 4 |
357
+ OR L ; ' 4 | 15 (89)
358
+ JR NZ, .no_end ; end ? -> reset ' 7 |
359
+
360
+ .end
361
+ LD A, B ; B = PCM params ' 4 |
362
+ ADD A ; carry = loop ' 4 | 15 (104)
363
+ JR C, .loop ; loop ? ' 7 |
364
+
365
+ .no_loop
366
+ LD HL, STATUS ; ' 10 |
367
+ RES STAT_PCM_SFT+ch, (HL) ; clear play status ' 15 | 37 (141)
368
+ JR .done ; ' 12 |
369
+
370
+ .no_end ; ' 94
371
+ LD (PCM_LEN+(ch*8)), HL ; save len ' 16 |
372
+ LD A, IXH ; IXH = PCM src.H ' 8 |
373
+ LD (PCM_ADDR+(ch*8)+2), A ; store it ' 13 | 49 (143)
374
+ JR .done ; ' 12 |
375
+
376
+ .params_changed ; ' 41
377
+ LD A, B ; A = PCM params ' 4 |
378
+ AND $EF ; can remove flag ' 7 |
379
+ LD (PCM_PRIO_EXT+(ch*8)), A ; A = PCM params ' 13 | 36 (77)
380
+ JR .done ; don't update addr/len ' 12 |
381
+
382
+ .loop ; ' 109
383
+ EI ; ' 4 | (113)
384
+ CALL sampleOutputNoIntSafeFunc
385
+
386
+ NOP ; can interrupts here ' 4 |
387
+ DI ; disable ints ' 4 |
388
+ LD HL, ACCESS ; protect arg access ' 10 | (33)
389
+ SET ACCESS_PCM_ARG, (HL) ; access PCM args ' 15 |
390
+
391
+ LD HL, (PCM_ADDR_ARG+(ch*4)) ; --> reset PCM addr ' 16 | 32 (65)
392
+ LD (PCM_ADDR+(ch*8)+1), HL ; ' 16 |
393
+
394
+ LD HL, (PCM_LEN_ARG+(ch*4)) ; --> reset PCM len ' 16 |
395
+ LD (PCM_LEN+(ch*8)), HL ; ' 16 | 32 (97)
396
+
397
+ LD HL, ACCESS ; protect arg access ' 10 |
398
+ RES ACCESS_PCM_ARG, (HL) ; done access PCM args ' 15 | 25 (121)
399
+
400
+ XOR A ; --> reset PCM addr H ' 4 | 17 (139)
401
+ LD (PCM_ADDR+(ch*8)+0), A ; ' 13 |
402
+
403
+ .done ; ' 143
404
+ EI ; enable ints ' 4 | (147)
405
+ CALL sampleOutputNoIntSafeFunc
406
+
407
+ endm
408
+
409
+
410
+ ; clearPCM1
411
+ ; ---------
412
+ ; point to write buffer -> DE -> point to write buffer
413
+ ; $00 -> A
414
+ ;
415
+ ; clear 1 sample in output buffer
416
+ ; = 11 cycles
417
+
418
+ macro clearPCM1
419
+
420
+ LD (DE), A ; store it in write buffer ' 7 | (11)
421
+ INC E ; next (dest) ' 4 |
422
+
423
+ endm ; ' 11
424
+
425
+
426
+ ; clearPCM2
427
+ ; ---------
428
+ ; point to write buffer -> DE -> point to write buffer
429
+ ; $00 -> A
430
+ ;
431
+ ; clear 2 samples in output buffer
432
+ ; = 22 cycles
433
+
434
+ macro clearPCM2
435
+
436
+ clearPCM1 ; clear 2 samples ' 11
437
+ clearPCM1 ; ' 11
438
+
439
+ endm ; ' 22
440
+
441
+
442
+ ; clearPCM4
443
+ ; ---------
444
+ ; point to write buffer -> DE -> point to write buffer
445
+ ; $00 -> A
446
+ ;
447
+ ; clear 4 samples in output buffer
448
+ ; = 44 cycles
449
+
450
+ macro clearPCM4
451
+
452
+ clearPCM2 ; clear 4 samples ' 22
453
+ clearPCM2 ; ' 22
454
+
455
+ endm ; ' 44
456
+
457
+
458
+ ; clearPCM8
459
+ ; ----------
460
+ ; point to write buffer -> DE -> point to write buffer
461
+ ; $00 -> A
462
+ ;
463
+ ; clear 8 samples in output buffer
464
+ ; = 88 cycles
465
+
466
+ macro clearPCM8
467
+
468
+ clearPCM4 ; clear 8 samples ' 44
469
+ clearPCM4 ; ' 44
470
+
471
+ endm ; ' 88
472
+
473
+
474
+ ; unsignPCM1
475
+ ; ----------
476
+ ; point to write buffer -> DE -> point to write buffer
477
+ ; $80 -> C
478
+ ;
479
+ ; unsign 1 sample in output buffer
480
+ ; = 22 cycles
481
+
482
+ macro unsignPCM1
483
+
484
+ LD A, (DE) ; read 1 sample from write ' 7 |
485
+ ADD C ; unsign ' 4 |
486
+ LD (DE), A ; store it in write buffer ' 7 | (22)
487
+ INC E ; next (dest) ' 4 |
488
+
489
+ endm ; ' 22
490
+
491
+
492
+ ; unsignPCM2
493
+ ; ----------
494
+ ; point to write buffer -> DE -> point to write buffer
495
+ ; $80 -> C
496
+ ;
497
+ ; unsign 2 samples in output buffer
498
+ ; = 44 cycles
499
+
500
+ macro unsignPCM2
501
+
502
+ unsignPCM1 ; unsign 2 samples ' 22
503
+ unsignPCM1 ; ' 22
504
+
505
+ endm ; ' 44
506
+
507
+
508
+ ; unsignPCM4
509
+ ; ----------
510
+ ; point to write buffer -> DE -> point to write buffer
511
+ ; $80 -> C
512
+ ;
513
+ ; unsign 4 samples in output buffer
514
+ ; = 88 cycles
515
+
516
+ macro unsignPCM4
517
+
518
+ unsignPCM2 ; unsign 4 samples ' 44
519
+ unsignPCM2 ; ' 44
520
+
521
+ endm ; ' 88
522
+
523
+
524
+ ; writePCM1
525
+ ; ---------
526
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
527
+ ; point to write buffer -> DE -> point to write buffer
528
+ ; number of write remaining -> BC -> number of write remaining
529
+ ;
530
+ ; read 1 sample from rom and write them in output buffer
531
+ ; = 19 cycles
532
+
533
+ macro writePCM1
534
+
535
+ LDI ; write 1 sample ' 16+3 | (19)
536
+
537
+ endm
538
+
539
+
540
+ ; writePCM2
541
+ ; ---------
542
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
543
+ ; point to write buffer -> DE -> point to write buffer
544
+ ; number of write remaining -> BC -> number of write remaining
545
+ ;
546
+ ; read 2 sample from rom and write them in output buffer
547
+ ; = 38 cycles
548
+
549
+ macro writePCM2
550
+
551
+ writePCM1 ; write 2 samples ' 19
552
+ writePCM1 ; ' 19
553
+
554
+ endm
555
+
556
+
557
+ ; writePCM4
558
+ ; ---------
559
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
560
+ ; point to write buffer -> DE -> point to write buffer
561
+ ; number of write remaining -> BC -> number of write remaining
562
+ ;
563
+ ; read 4 samples from rom and write them in output buffer
564
+ ; = 76 cycles
565
+
566
+ macro writePCM4
567
+
568
+ writePCM2 ; write 4 samples ' 38
569
+ writePCM2 ; ' 38
570
+
571
+ endm
572
+
573
+
574
+ ; writePCM8
575
+ ; ---------
576
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
577
+ ; point to write buffer -> DE -> point to write buffer
578
+ ; number of write remaining -> BC -> number of write remaining
579
+ ;
580
+ ; read 4 samples from rom and write them in output buffer
581
+ ; = 152 cycles
582
+
583
+ macro writePCM8
584
+
585
+ writePCM4 ; write 8 samples ' 76
586
+ writePCM4 ; ' 76
587
+
588
+ endm
589
+
590
+
591
+ ; writePCM2HS
592
+ ; -----------
593
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
594
+ ; point to write buffer -> DE -> point to write buffer
595
+ ;
596
+ ; read 1 sample from rom and write it twice in output buffer (half speed playback speed)
597
+ ; = 36 cycles
598
+
599
+ macro writePCM2HS
600
+
601
+ LD A, (HL) ; read 1 sample from ROM ' 7+3 |
602
+ INC L ; ' 4 | (14)
603
+
604
+ LD (DE), A ; 1st write ' 7 |
605
+ INC E ; ' 4 |
606
+ LD (DE), A ; 2nd write ' 7 | 22 (36)
607
+ INC E ; ' 4 |
608
+
609
+ endm
610
+
611
+
612
+ ; writePCM4HS
613
+ ; -----------
614
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
615
+ ; point to write buffer -> DE -> point to write buffer
616
+ ;
617
+ ; read 2 samples from rom and write them twice in output buffer (half speed playback speed)
618
+ ; = 72 cycles
619
+
620
+ macro writePCM4HS
621
+
622
+ writePCM2HS ; write 4 samples ' 36
623
+ writePCM2HS ; ' 36
624
+
625
+ endm
626
+
627
+
628
+ ; writePCM8HS
629
+ ; -----------
630
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
631
+ ; point to write buffer -> DE -> point to write buffer
632
+ ;
633
+ ; read 4 samples from rom and write them twice in output buffer (half speed playback speed)
634
+ ; = 144 cycles
635
+
636
+ macro writePCM8HS
637
+
638
+ writePCM4HS ; write 8 samples ' 72
639
+ writePCM4HS ; ' 72
640
+
641
+ endm
642
+
643
+
644
+ ; mixPCM1
645
+ ; -------
646
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
647
+ ; point to write buffer -> DE -> point to write buffer
648
+ ; $7F -> C
649
+ ;
650
+ ; read 1 sample and mix it in output buffer
651
+ ; = 42 cycles (+8 when overflow)
652
+
653
+ macro mixPCM1
654
+
655
+ LD A, (DE) ; read 1 sample from write ' 7 |
656
+ ADD (HL) ; mix with sample source ' 7+3 | (27)
657
+ JP PO, .ok ; check overflow ' 10 |
658
+
659
+ SBC A ; fix overflow ' 4 |
660
+ XOR C ; A = $7F/$80 ' 4 | +8
661
+
662
+ .ok
663
+ LD (DE), A ; store it in write buffer ' 7 |
664
+ INC E ; next (dest) ' 4 | 15 (42)
665
+ INC L ; next (source) ' 4 |
666
+
667
+ endm ; ' 42 (+8)
668
+
669
+
670
+ ; mixPCM2
671
+ ; -------
672
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
673
+ ; point to write buffer -> DE -> point to write buffer
674
+ ; $7F -> C
675
+ ;
676
+ ; read 4 samples and mix them in output buffer
677
+ ; = 84 cycles (+16 max)
678
+
679
+ macro mixPCM2
680
+
681
+ mixPCM1 ; mix 2 samples ' 42
682
+ mixPCM1 ; ' 42
683
+
684
+ endm ; ' 84 (+16)
685
+
686
+
687
+ ; mixPCM4
688
+ ; -------
689
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
690
+ ; point to write buffer -> DE -> point to write buffer
691
+ ; $7F -> C
692
+ ;
693
+ ; read 4 samples and mix them in output buffer
694
+ ; = 168 cycles (+32 max)
695
+
696
+ macro mixPCM4
697
+
698
+ mixPCM2 ; mix 4 samples ' 84
699
+ mixPCM2 ; ' 84
700
+
701
+ endm ; ' 168 (+32)
702
+
703
+
704
+ ; mixFirstPCMHS
705
+ ; -------------
706
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
707
+ ; point to write buffer -> DE -> point to write buffer
708
+ ; $7F -> C
709
+ ;
710
+ ; read 1 sample and mix it in output buffer (half speed playback speed)
711
+ ; = 38 cycles (+8 when overflow)
712
+
713
+ macro mixFirstPCMHS
714
+
715
+ LD A, (DE) ; read 1 sample from write ' 7 |
716
+ ADD (HL) ; mix with sample source ' 7+3 | (27)
717
+ JP PO, .ok ; check overflow ' 10 |
718
+
719
+ SBC A ; fix overflow ' 4 |
720
+ XOR C ; A = $7F/$80 ' 4 | +8
721
+
722
+ .ok
723
+ LD (DE), A ; store it in write buffer ' 7 |
724
+ INC E ; next (dest) ' 4 | 11 (38)
725
+
726
+ endm ; ' 38 (+8)
727
+
728
+
729
+ ; mixSecondPCMHS
730
+ ; --------------
731
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
732
+ ; point to write buffer -> DE -> point to write buffer
733
+ ; $7F -> C
734
+ ;
735
+ ; read 1 sample and mix it in output buffer (half speed playback speed)
736
+ ; = 42 cycles (+8 when overflow)
737
+
738
+ macro mixSecondPCMHS
739
+
740
+ LD A, (DE) ; read 1 sample from write ' 7 |
741
+ ADD (HL) ; mix with sample source ' 7+3 | (27)
742
+ JP PO, .ok ; check overflow ' 10 |
743
+
744
+ SBC A ; fix overflow ' 4 |
745
+ XOR C ; A = $7F/$80 ' 4 | +8
746
+
747
+ .ok
748
+ LD (DE), A ; store it in write buffer ' 7 |
749
+ INC E ; next (dest) ' 4 | 11 (38)
750
+
751
+ INC L ; next (source) ' 4 | (42)
752
+
753
+ endm ; ' 42 (+16)
754
+
755
+
756
+ ; mixPCM2HS
757
+ ; ---------
758
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
759
+ ; point to write buffer -> DE -> point to write buffer
760
+ ; $7F -> C
761
+ ;
762
+ ; read 1 sample and mix it twice in output buffer (half speed playback speed)
763
+ ; = 80 cycles (+16 when overflow)
764
+
765
+ macro mixPCM2HS
766
+
767
+ mixFirstPCMHS ; mix first sample ' 38 |
768
+ mixSecondPCMHS ; mix second sample ' 42 | (80)
769
+
770
+ endm ; ' 80 (+16)
771
+
772
+
773
+ ; mixPCM4HS
774
+ ; ---------
775
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
776
+ ; point to write buffer -> DE -> point to write buffer
777
+ ; $7F -> C
778
+ ;
779
+ ; read 2 samples and mix them twice in output buffer (half speed playback speed)
780
+ ; = 160 cycles (+32 max)
781
+
782
+ macro mixPCM4HS
783
+
784
+ mixPCM2HS ; mix 4 samples (HalfSpeed) ' 80
785
+ mixPCM2HS ; ' 80
786
+
787
+ endm ; ' 160 (+44)
788
+
789
+
790
+ ; mixUnsignPCM1
791
+ ; -------------
792
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
793
+ ; point to write buffer -> DE -> point to write buffer
794
+ ; $807F -> BC
795
+ ;
796
+ ; read 1 sample and mix it with output buffer, then unsign it
797
+ ; = 46 (+8 when overflow)
798
+
799
+ macro mixUnsignPCM1
800
+
801
+ LD A, (DE) ; read 1 sample from write ' 7 |
802
+ ADD (HL) ; mix with sample source ' 7+3 | (27)
803
+ JP PO, .ok ; check overflow ' 10 |
804
+
805
+ SBC A ; fix overflow ' 4 |
806
+ XOR C ; A = $7F/$80 ' 4 | +8
807
+
808
+ .ok
809
+ ADD B ; unsign ' 4 |
810
+
811
+ LD (DE), A ; store it in write buffer ' 7 |
812
+ INC E ; next (dest) ' 4 | 19 (46)
813
+ INC L ; next (source) ' 4 |
814
+
815
+ endm ; ' 46 (+8)
816
+
817
+
818
+ ; mixUnsignPCM2
819
+ ; -------------
820
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
821
+ ; point to write buffer -> DE -> point to write buffer
822
+ ; $807F -> BC
823
+ ;
824
+ ; read 2 samples and mix them in output buffer, then unsign them
825
+ ; = 92 (+16 when overflow)
826
+
827
+ macro mixUnsignPCM2
828
+
829
+ mixUnsignPCM1 ; mix and unsign 2 samples ' 46
830
+ mixUnsignPCM1 ; ' 46
831
+
832
+ endm ; ' 92 (+16)
833
+
834
+
835
+ ; mixUnsignPCM3
836
+ ; -------------
837
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
838
+ ; point to write buffer -> DE -> point to write buffer
839
+ ; $807F -> BC
840
+ ;
841
+ ; read 3 samples and mix them in output buffer, then unsign them
842
+ ; = 138 (+24 when overflow)
843
+
844
+ macro mixUnsignPCM3
845
+
846
+ mixUnsignPCM2 ; mix and unsign 3 samples ' 92
847
+ mixUnsignPCM1 ; ' 46
848
+
849
+ endm ; ' 138 (+24)
850
+
851
+
852
+ ; mixUnsignPCM4
853
+ ; -------------
854
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
855
+ ; point to write buffer -> DE -> point to write buffer
856
+ ; $807F -> BC
857
+ ;
858
+ ; read 3 samples and mix them in output buffer, then unsign them
859
+ ; = 184 (+32 when overflow)
860
+
861
+ macro mixUnsignPCM4
862
+
863
+ mixUnsignPCM2 ; mix and unsign 4 samples ' 92
864
+ mixUnsignPCM2 ; ' 92
865
+
866
+ endm ; ' 184 (+32)
867
+
868
+
869
+ ; mixUnsignPCM2HS
870
+ ; ---------------
871
+ ; point to sample source (ROM) -> HL -> point to sample source (ROM)
872
+ ; point to write buffer -> DE -> point to write buffer
873
+ ; $807F -> BC
874
+ ;
875
+ ; read 1 sample and mix it twice in output buffer (half speed playback speed), then unsign it
876
+ ; = 88 cycles (+16 when overflow)
877
+
878
+ macro mixUnsignPCM2HS
879
+
880
+ LD A, (DE) ; read 1 sample from write ' 7 |
881
+ ADD (HL) ; mix with sample source ' 7+3 | (27)
882
+ JP PO, .ok1 ; check overflow ' 10 |
883
+
884
+ SBC A ; fix overflow ' 4 |
885
+ XOR C ; A = $7F/$80 ' 4 | +8
886
+
887
+ .ok1
888
+ ADD B ; unsign ' 4 |
889
+ LD (DE), A ; store it in write buffer ' 7 | 15 (42)
890
+ INC E ; next (dest) ' 4 |
891
+
892
+ LD A, (DE) ; read 1 sample from write ' 7 |
893
+ ADD (HL) ; mix with sample source ' 7+3 | 27 (69)
894
+ JP PO, .ok2 ; check overflow ' 10 |
895
+
896
+ SBC A ; fix overflow ' 4 |
897
+ XOR C ; A = $7F/$80 ' 4 | +8
898
+
899
+ .ok2
900
+ ADD B ; unsign ' 4 |
901
+ LD (DE), A ; store it in write buffer ' 7 | 15 (84)
902
+ INC E ; next (dest) ' 4 |
903
+
904
+ INC L ; next (source) ' 4 | (88)
905
+
906
+ endm ; ' 88 (+16)
907
+
908
+
909
+ ; mixUnsignPCM4HS
910
+ ; ---------------
911
+ ; point to sample source (ROM) -> DE -> point to sample source (ROM)
912
+ ; point to write buffer -> HL -> point to write buffer
913
+ ; $807F -> BC
914
+ ;
915
+ ; read 2 samples and mix them twice in output buffer (half speed playback speed), then unsign them
916
+ ; = 176 cycles (+44 max)
917
+
918
+ macro mixUnsignPCM4HS
919
+
920
+ mixUnsignPCM2HS ; mix and unsign 4 samples (HalfSpeed) ' 88
921
+ mixUnsignPCM2HS ; ' 88
922
+
923
+ endm ; ' 176 (+44)
924
+
925
+
926
+ ; clearPCMBuffer
927
+ ; --------------
928
+ ; dst --> DE --> dst
929
+ ; A --> ?
930
+ ; B --> ?
931
+ ;
932
+ ; clear 64 bytes of destination PCM buffer
933
+ ; 5 samples
934
+
935
+ macro clearPCMBuffer
936
+
937
+ LD B, 4 ; 4*16 = 64 bytes cleared ' 7 | (7)
938
+
939
+ CALL sampleOutputNoIntSafeFunc
940
+ JP .first
941
+
942
+ .loop
943
+ sampleOutputNoIntDirect
944
+
945
+ .first
946
+ XOR A ; A = 0 ' 4 |
947
+ clearPCM8 ; clear 16 bytes ' 88 | (180)
948
+ clearPCM8 ; ' 88 |
949
+
950
+ wait7 ; sync ' 7 |
951
+ DJNZ .loop ; ' 13 | 20 (200)
952
+
953
+ CALL sampleOutputNoIntDirectFunc
954
+
955
+ endm ; ' 0
956
+
957
+
958
+ ; unsignPCMBuffer
959
+ ; ---------------
960
+ ; dst --> DE --> dst
961
+ ; A --> ?
962
+ ; BC --> ?
963
+ ;
964
+ ; unsign 64 bytes of destination PCM buffer
965
+ ; 8 samples + 22 cycles
966
+
967
+ macro unsignPCMBuffer
968
+
969
+ LD BC, $0780 ; 7*9 = 63 bytes unsigned ' 10 | (10)
970
+
971
+ CALL sampleOutputNoIntSafeFunc
972
+ JP .first
973
+
974
+ .loop
975
+ sampleOutputNoIntDirectFast
976
+
977
+ .first
978
+ unsignPCM4 ; ' 88 |
979
+ unsignPCM4 ; ' 88 | (198)
980
+ unsignPCM1 ; ' 22 |
981
+
982
+ wait14 ; sync ' 14 |
983
+ DJNZ .loop ; ' 13 | 27 (225)
984
+
985
+ CALL sampleOutputNoIntDirectFunc
986
+ unsignPCM1 ; ' 22 |
987
+
988
+ endm ; ' 22
989
+
990
+
991
+ ; fillPCMBuffer
992
+ ; -------------
993
+ ; src.LM --> HL --> src.LM ; source buffer LM bytes (b15-b0)
994
+ ; src.H --> IXH --> src.H ; source buffer H byte (b23-b16)
995
+ ; dst --> DE --> dst ; destination PCM circular buffer
996
+ ; BC --> ?
997
+ ; A --> ?
998
+ ; A' --> ?
999
+ ;
1000
+ ; fill 64 bytes in destination PCM buffer from source ROM buffer
1001
+ ; 7 samples + 154 cycles
1002
+
1003
+ macro fillPCMBuffer
1004
+
1005
+ LD A, H ; A = bit 8-15 ' 4 |
1006
+ AND $80 ; A = bit 15 ' 7 | (15)
1007
+ EX AF, AF' ; save src.b15 in A' ' 4 |
1008
+
1009
+ LD A, H ; A = bit 8-15 ' 4 |
1010
+ RLA ; C flag = bit 15 ' 4 |
1011
+ LD A, IXH ; A = bit 16-23 ' 8 | 20 (37)
1012
+ RLA ; A = bit 15-22 ' 4 |
1013
+
1014
+ CALL setBankForPCM ; set bank for src ' 149 | (186)
1015
+ SET 7, H ; H |= $80 (bank access) ' 8 | (194)
1016
+
1017
+ LD BC, 60 ; 6x10=60 transfered bytes ' 10 | (204)
1018
+ ; (LDI instruction used)
1019
+
1020
+ .loop
1021
+ sampleOutputNoIntDirect
1022
+ writePCM8 ; copy 10 bytes ' 152 |
1023
+ writePCM2 ; ' 38 | (200)
1024
+ JP PE, .loop ; ' 10 |
1025
+
1026
+ .done
1027
+ CALL sampleOutputNoIntDirectFunc
1028
+
1029
+ writePCM4 ; missing 4 bytes ' 76 | (76)
1030
+
1031
+ LD A, E ; check if DE overflowed ' 4 |
1032
+ OR A ; E == 0 ? ' 4 | 15 (91)
1033
+ JR NZ, .de_ok ; --> decrement D ' 7 |
1034
+
1035
+ DEC D ; ' 4 | (95)
1036
+
1037
+ .de_ok ; ' 96
1038
+ LD A, H ; check if changing bank ' 4 |
1039
+ OR L ; (HL == 0) ? ' 4 | 18 (114)
1040
+ JP NZ, .same_bank ; --> change bank ' 10 |
1041
+
1042
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1043
+ ADD $80 ; change bank ' 7 | 18 (132)
1044
+ JR NZ, .reset_H ; (new src.b15 == 0) ? ' 7 |
1045
+
1046
+ INC IXH ; --> increment src.H ' 8 | (140)
1047
+
1048
+ .reset_H
1049
+ LD H, A ; new H ' 4 |
1050
+ JP .end ; done ' 10 | 14 (154)
1051
+
1052
+ .same_bank ; ' 114
1053
+ RES 7, H ; H &= $7F ' 8 |
1054
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1055
+ OR H ; A.b7 = src.b15 | H ' 4 | 20 (134)
1056
+ LD H, A ; restore H ' 4 |
1057
+
1058
+ .end
1059
+
1060
+ endm ; ' 154
1061
+
1062
+
1063
+ ; fillPCMBufferHS
1064
+ ; ---------------
1065
+ ; src.LM --> HL --> src.LM ; source buffer LM bytes (b15-b0)
1066
+ ; src.H --> IXH --> src.H ; source buffer H byte (b23-b16)
1067
+ ; dst --> DE --> dst ; destination PCM circular buffer
1068
+ ; B --> ?
1069
+ ; A --> ?
1070
+ ; A' --> ?
1071
+ ;
1072
+ ; fill 64 bytes in destination PCM buffer from source ROM buffer (hasf speed version)
1073
+ ; 7 samples + 150 cycles
1074
+
1075
+ macro fillPCMBufferHS
1076
+
1077
+ LD A, H ; A = bit 8-15 ' 4 |
1078
+ AND $80 ; A = bit 15 ' 7 | (15)
1079
+ EX AF, AF' ; save src.b15 in A' ' 4 |
1080
+
1081
+ LD A, H ; A = bit 8-15 ' 4 |
1082
+ RLA ; C flag = bit 15 ' 4 |
1083
+ LD A, IXH ; A = bit 16-23 ' 8 | 20 (37)
1084
+ RLA ; A = bit 15-22 ' 4 |
1085
+
1086
+ CALL setBankForPCM ; set bank for src ' 149 | (186)
1087
+ SET 7, H ; H |= $80 (bank access) ' 8 | (194)
1088
+
1089
+ LD B, 6 ; 6*10=60 transfered bytes ' 7 | (201)
1090
+
1091
+ .loop
1092
+ sampleOutputNoIntDirect
1093
+
1094
+ writePCM8HS ; copy 8 bytes ' 144 |
1095
+ writePCM2HS ; ' 36 |
1096
+ wait7 ; sync ' 7 | (200)
1097
+ DJNZ .loop ; ' 13 |
1098
+
1099
+ .done
1100
+ CALL sampleOutputNoIntDirectFunc
1101
+
1102
+ writePCM4HS ; ' 72 | (72)
1103
+
1104
+ LD A, L ; check if changing H ' 4 |
1105
+ OR A ; (L == 0) ? ' 4 | 15 (87)
1106
+ JR NZ, .same_H ; --> inc H ' 7 |
1107
+
1108
+ INC H ; inc H ' 4 | (91)
1109
+
1110
+ .same_H ; ' 92
1111
+ LD A, H ; check if changing bank ' 4 |
1112
+ OR L ; (HL == 0) ? ' 4 | 18 (110)
1113
+ JP NZ, .same_bank ; --> change bank ' 10 |
1114
+
1115
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1116
+ ADD $80 ; change bank ' 7 | 18 (128)
1117
+ JR NZ, .reset_H ; (new src.b15 == 0) ? ' 7 |
1118
+
1119
+ INC IXH ; --> increment src.H ' 8 | (136)
1120
+
1121
+ .reset_H
1122
+ LD H, A ; new H ' 4 |
1123
+ JP .end ; done ' 10 | 14 (150)
1124
+
1125
+ .same_bank ; ' 110
1126
+ RES 7, H ; H &= $7F ' 8 |
1127
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1128
+ OR H ; A.b7 = src.b15 | H ' 4 | 20 (130)
1129
+ LD H, A ; restore H ' 4 |
1130
+
1131
+ .end
1132
+
1133
+ endm ; ' 150
1134
+
1135
+
1136
+ ; mixPCMBuffer
1137
+ ; ------------
1138
+ ; src.LM --> HL --> src.LM ; source buffer LM bytes (b15-b0)
1139
+ ; src.H --> IXH --> src.H ; source buffer H byte (b23-b16)
1140
+ ; dst --> DE --> dst ; destination PCM circular buffer
1141
+ ; BC --> ?
1142
+ ; A --> ?
1143
+ ; A' --> ?
1144
+ ;
1145
+ ; mix 64 bytes in destination PCM buffer from source ROM buffer
1146
+ ; 14 samples + 78 cycles
1147
+
1148
+ macro mixPCMBuffer ; ' 139
1149
+
1150
+ LD A, H ; A = bit 8-15 ' 4 |
1151
+ AND $80 ; A = bit 15 ' 7 | 15 (154)
1152
+ EX AF, AF' ; save src.b15 in A' ' 4 |
1153
+
1154
+ SAMPLE_OUTPUT_NOINT_FASTCALL
1155
+
1156
+ LD A, H ; A = bit 8-15 ' 4 |
1157
+ RLA ; C flag = bit 15 ' 4 |
1158
+ LD A, IXH ; A = bit 16-23 ' 8 | (20)
1159
+ RLA ; A = bit 15-22 ' 4 |
1160
+
1161
+ CALL setBankForPCM ; set bank for src ' 149 | (169)
1162
+ SET 7, H ; H |= $80 (bank access) ' 8 | (177)
1163
+
1164
+ LD B, 12 ; 12*5=60 transfered bytes ' 7 |
1165
+ LD C, $7F ; ' 7 | 14 (191)
1166
+
1167
+ CALL wait27_func ; sync ' 27 | (218)
1168
+
1169
+ .loop
1170
+ sampleOutputNoIntDirectFast
1171
+
1172
+ mixPCM4 ; 5 bytes per loop ' 168 |
1173
+ mixPCM1 ; ' 42 |
1174
+ DJNZ .loop ; ' 13 | (223) -2 cycles here
1175
+
1176
+ .done
1177
+ sampleOutputNoIntDirectFast
1178
+
1179
+ mixPCM4 ; ' 168 |
1180
+
1181
+ SAMPLE_OUTPUT_NOINT_FASTCALL
1182
+
1183
+ LD A, L ; check if changing H ' 4 |
1184
+ OR A ; (L == 0) ? ' 4 | (15)
1185
+ JR NZ, .same_H ; --> inc H ' 7 |
1186
+
1187
+ INC H ; inc H ' 4 | (19)
1188
+
1189
+ .same_H ; ' 20
1190
+ LD A, H ; check if changing bank ' 4 |
1191
+ OR L ; (HL == 0) ? ' 4 | 18 (38)
1192
+ JP NZ, .same_bank ; --> change bank ' 10 |
1193
+
1194
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1195
+ ADD $80 ; change bank ' 7 | 18 (56)
1196
+ JR NZ, .reset_H ; (new src.b15 == 0) ? ' 7 |
1197
+
1198
+ INC IXH ; --> increment src.H ' 8 | (64)
1199
+
1200
+ .reset_H
1201
+ LD H, A ; new H ' 4 |
1202
+ JP .end ; done ' 10 | 14 (78)
1203
+
1204
+ .same_bank ; ' 38
1205
+ RES 7, H ; H &= $7F ' 8 |
1206
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1207
+ OR H ; A.b7 = src.b15 | H ' 4 | 20 (58)
1208
+ LD H, A ; restore H ' 4 |
1209
+
1210
+ .end
1211
+
1212
+ endm ; ' 78
1213
+
1214
+
1215
+ ; mixPCMBufferHS
1216
+ ; --------------
1217
+ ; src.LM --> HL --> src.LM ; source buffer LM bytes (b15-b0)
1218
+ ; src.H --> IXH --> src.H ; source buffer H byte (b23-b16)
1219
+ ; dst --> DE --> dst ; destination PCM circular buffer
1220
+ ; BC --> ?
1221
+ ; A --> ?
1222
+ ; A' --> ?
1223
+ ;
1224
+ ; mix 64 bytes in destination PCM buffer from source ROM buffer (half speed)
1225
+ ; 13 samples + 237 cycles (some cycles lost here)
1226
+
1227
+ macro mixPCMBufferHS ; ' 139
1228
+
1229
+ LD A, H ; A = bit 8-15 ' 4 |
1230
+ AND $80 ; A = bit 15 ' 7 | 15 (154)
1231
+ EX AF, AF' ; save src.b15 in A' ' 4 |
1232
+
1233
+ SAMPLE_OUTPUT_NOINT_FASTCALL
1234
+
1235
+ LD A, H ; A = bit 8-15 ' 4 |
1236
+ RLA ; C flag = bit 15 ' 4 |
1237
+ LD A, IXH ; A = bit 16-23 ' 8 | (20)
1238
+ RLA ; A = bit 15-22 ' 4 |
1239
+
1240
+ CALL setBankForPCM ; set bank for src ' 149 | (169)
1241
+ SET 7, H ; H |= $80 (bank access) ' 8 | (177)
1242
+
1243
+ LD BC, $067F ; 6*10=60 transfered bytes ' 10 | (187)
1244
+
1245
+ CALL wait27_func ; sync ' 27 | (214)
1246
+
1247
+ .loop
1248
+ CALL sampleOutputNoIntDirectFastFunc
1249
+
1250
+ mixPCM4HS ; ' 160 |
1251
+ mixFirstPCMHS ; ' 38 | (198)
1252
+
1253
+ sampleOutputNoIntDirectFast
1254
+
1255
+ mixSecondPCMHS ; ' 42 |
1256
+ mixPCM4HS ; ' 160 | (212)
1257
+ wait10 ; sync ' 10 |
1258
+
1259
+ DJNZ .loop ; ' 13 | (225)
1260
+
1261
+ .done
1262
+ sampleOutputNoIntDirectFast
1263
+
1264
+ mixPCM4HS ; ' 160 |
1265
+
1266
+ LD A, L ; check if changing H ' 4 |
1267
+ OR A ; (L == 0) ? ' 4 | 15 (175)
1268
+ JR NZ, .same_H ; --> inc H ' 7 |
1269
+
1270
+ INC H ; inc H ' 4 | (179)
1271
+
1272
+ .same_H ; ' 20
1273
+ LD A, H ; check if changing bank ' 4 |
1274
+ OR L ; (HL == 0) ? ' 4 | 18 (197)
1275
+ JP NZ, .same_bank ; --> change bank ' 10 |
1276
+
1277
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1278
+ ADD $80 ; change bank ' 7 | 18 (215)
1279
+ JR NZ, .reset_H ; (new src.b15 == 0) ? ' 7 |
1280
+
1281
+ INC IXH ; --> increment src.H ' 8 | (223)
1282
+
1283
+ .reset_H
1284
+ LD H, A ; new H ' 4 |
1285
+ JP .end ; done ' 10 | 14 (237)
1286
+
1287
+ .same_bank ; ' 197
1288
+ RES 7, H ; H &= $7F ' 8 |
1289
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1290
+ OR H ; A.b7 = src.b15 | H ' 4 | 20 (217)
1291
+ LD H, A ; restore H ' 4 |
1292
+
1293
+ .end
1294
+
1295
+ endm ; ' 237
1296
+
1297
+
1298
+ ; mixUnsignPCMBuffer
1299
+ ; ------------------
1300
+ ; src.LM --> HL --> src.LM ; source buffer LM bytes (b15-b0)
1301
+ ; src.H --> IXH --> src.H ; source buffer H byte (b23-b16)
1302
+ ; dst --> DE --> dst ; destination PCM circular buffer
1303
+ ; BC --> ?
1304
+ ; A --> ?
1305
+ ; IYL --> ?
1306
+ ; A' --> ?
1307
+ ;
1308
+ ; mix 64 bytes in destination PCM buffer from source ROM buffer
1309
+ ; 17 samples + 78 cycles
1310
+
1311
+ macro mixUnsignPCMBuffer ; ' 141
1312
+
1313
+ LD A, H ; A = bit 8-15 ' 4 |
1314
+ AND $80 ; A = bit 15 ' 7 | 15 (156)
1315
+ EX AF, AF' ; save src.b15 in A' ' 4 |
1316
+
1317
+ SAMPLE_OUTPUT_NOINT_FASTCALL
1318
+
1319
+ LD A, H ; A = bit 8-15 ' 4 |
1320
+ RLA ; C flag = bit 15 ' 4 |
1321
+ LD A, IXH ; A = bit 16-23 ' 8 | (20)
1322
+ RLA ; A = bit 15-22 ' 4 |
1323
+
1324
+ CALL setBankForPCM ; set bank for src ' 149 | (169)
1325
+ SET 7, H ; H |= $80 (bank access) ' 8 | (177)
1326
+
1327
+ LD BC, $807F ; for fast unsign ' 10 |
1328
+ LD IYL, 16 ; 16*4=64 bytes ' 10 | 20 (197)
1329
+
1330
+ .loop
1331
+ sampleOutputNoIntDirect
1332
+
1333
+ mixUnsignPCM4 ; ' 184 |
1334
+ DEC IYL ; ' 8 |
1335
+ JP NZ, .loop ; ' 10 | (202) +2 cycles per loop
1336
+
1337
+ .done
1338
+ CALL sampleOutputNoIntDirectFunc
1339
+
1340
+ LD A, L ; check if changing H ' 4 |
1341
+ OR A ; (L == 0) ? ' 4 | (15)
1342
+ JR NZ, .same_H ; --> inc H ' 7 |
1343
+
1344
+ INC H ; inc H ' 4 | (19)
1345
+
1346
+ .same_H ; ' 20
1347
+ LD A, H ; check if changing bank ' 4 |
1348
+ OR L ; (HL == 0) ? ' 4 | 18 (38)
1349
+ JP NZ, .same_bank ; --> change bank ' 10 |
1350
+
1351
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1352
+ ADD $80 ; change bank ' 7 | 18 (56)
1353
+ JR NZ, .reset_H ; (new src.b15 == 0) ? ' 7 |
1354
+
1355
+ INC IXH ; --> increment src.H ' 8 | (64)
1356
+
1357
+ .reset_H
1358
+ LD H, A ; new H ' 4 |
1359
+ JP .end ; done ' 10 | 14 (78)
1360
+
1361
+ .same_bank ; ' 38
1362
+ RES 7, H ; H &= $7F ' 8 |
1363
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1364
+ OR H ; A.b7 = src.b15 | H ' 4 | 20 (58)
1365
+ LD H, A ; restore H ' 4 |
1366
+
1367
+ .end
1368
+
1369
+ endm ; ' 124
1370
+
1371
+
1372
+ ; mixUnsignPCMBufferHS
1373
+ ; --------------------
1374
+ ; src.LM --> HL --> src.LM ; source buffer LM bytes (b15-b0)
1375
+ ; src.H --> IXH --> src.H ; source buffer H byte (b23-b16)
1376
+ ; dst --> DE --> dst ; destination PCM circular buffer
1377
+ ; BC --> ?
1378
+ ; A --> ?
1379
+ ; IYL --> ?
1380
+ ; A' --> ?
1381
+ ;
1382
+ ; mix 64 bytes in destination PCM buffer from source ROM buffer
1383
+ ; 17 samples + 78 cycles
1384
+
1385
+ macro mixUnsignPCMBufferHS ; ' 141
1386
+
1387
+ LD A, H ; A = bit 8-15 ' 4 |
1388
+ AND $80 ; A = bit 15 ' 7 | 15 (156)
1389
+ EX AF, AF' ; save src.b15 in A' ' 4 |
1390
+
1391
+ SAMPLE_OUTPUT_NOINT_FASTCALL
1392
+
1393
+ LD A, H ; A = bit 8-15 ' 4 |
1394
+ RLA ; C flag = bit 15 ' 4 |
1395
+ LD A, IXH ; A = bit 16-23 ' 8 | (20)
1396
+ RLA ; A = bit 15-22 ' 4 |
1397
+
1398
+ CALL setBankForPCM ; set bank for src ' 149 | (169)
1399
+ SET 7, H ; H |= $80 (bank access) ' 8 | (177)
1400
+
1401
+ LD BC, $807F ; for fast unsign ' 10 |
1402
+ LD IYL, 16 ; 16*4=64 bytes ' 10 | 20 (197)
1403
+
1404
+ .loop
1405
+ sampleOutputNoIntDirect
1406
+
1407
+ mixUnsignPCM4HS ; ' 176 |
1408
+ wait7 ; ' 7 |
1409
+ DEC IYL ; ' 8 |
1410
+ JP NZ, .loop ; ' 10 | (201) +1 cycle per loop here
1411
+
1412
+ .done
1413
+ CALL sampleOutputNoIntDirectFunc
1414
+
1415
+ LD A, L ; check if changing H ' 4 |
1416
+ OR A ; (L == 0) ? ' 4 | (15)
1417
+ JR NZ, .same_H ; --> inc H ' 7 |
1418
+
1419
+ INC H ; inc H ' 4 | (19)
1420
+
1421
+ .same_H ; ' 20
1422
+ LD A, H ; check if changing bank ' 4 |
1423
+ OR L ; (HL == 0) ? ' 4 | 18 (38)
1424
+ JP NZ, .same_bank ; --> change bank ' 10 |
1425
+
1426
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1427
+ ADD $80 ; change bank ' 7 | 18 (56)
1428
+ JR NZ, .reset_H ; (new src.b15 == 0) ? ' 7 |
1429
+
1430
+ INC IXH ; --> increment src.H ' 8 | (64)
1431
+
1432
+ .reset_H
1433
+ LD H, A ; new H ' 4 |
1434
+ JP .end ; done ' 10 | 14 (78)
1435
+
1436
+ .same_bank ; ' 38
1437
+ RES 7, H ; H &= $7F ' 8 |
1438
+ EX AF, AF' ; A.b7 = src.b15 ' 4 |
1439
+ OR H ; A.b7 = src.b15 | H ' 4 | 20 (58)
1440
+ LD H, A ; restore H ' 4 |
1441
+
1442
+ .end
1443
+
1444
+ endm ; ' 78