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.
- package/AGENTS.md +726 -0
- package/LICENSE +45 -0
- package/NOTICE +86 -0
- package/README.md +46 -0
- package/examples/README.md +36 -0
- package/examples/art-first-workflow/README.md +205 -0
- package/examples/atari2600/main.asm +143 -0
- package/examples/atari2600/templates/default.asm +183 -0
- package/examples/atari2600/templates/mini_invaders.asm +381 -0
- package/examples/atari2600/templates/music_demo.asm +322 -0
- package/examples/atari2600/templates/paddle.asm +345 -0
- package/examples/atari2600/templates/single_screen.asm +242 -0
- package/examples/atari7800/main.c +88 -0
- package/examples/atari7800/templates/default.c +183 -0
- package/examples/atari7800/templates/hello_sprite.c +141 -0
- package/examples/atari7800/templates/music_demo.c +123 -0
- package/examples/atari7800/templates/platformer.c +159 -0
- package/examples/atari7800/templates/puzzle.c +164 -0
- package/examples/atari7800/templates/racing.c +139 -0
- package/examples/atari7800/templates/shmup.c +148 -0
- package/examples/atari7800/templates/sports.c +207 -0
- package/examples/c64/main.c +63 -0
- package/examples/c64/templates/hello_sprite.c +117 -0
- package/examples/c64/templates/music_demo.c +131 -0
- package/examples/c64/templates/platformer.c +194 -0
- package/examples/c64/templates/puzzle.c +178 -0
- package/examples/c64/templates/racing.c +140 -0
- package/examples/c64/templates/shmup.c +201 -0
- package/examples/c64/templates/sports.c +109 -0
- package/examples/c64/templates/tile_engine.c +174 -0
- package/examples/gb/main.asm +106 -0
- package/examples/gb/main.c +49 -0
- package/examples/gb/templates/default.c +58 -0
- package/examples/gb/templates/hello_sprite.c +130 -0
- package/examples/gb/templates/music_demo.c +52 -0
- package/examples/gb/templates/platformer.c +178 -0
- package/examples/gb/templates/puzzle.c +217 -0
- package/examples/gb/templates/racing.c +158 -0
- package/examples/gb/templates/shmup.c +172 -0
- package/examples/gb/templates/sports.c +136 -0
- package/examples/gb/templates/tile_engine.c +280 -0
- package/examples/gba/templates/gba_hello.c +64 -0
- package/examples/gba/templates/maxmod_demo.c +105 -0
- package/examples/gba/templates/platformer.c +215 -0
- package/examples/gba/templates/puzzle.c +237 -0
- package/examples/gba/templates/racing.c +175 -0
- package/examples/gba/templates/shmup.c +197 -0
- package/examples/gba/templates/sports.c +177 -0
- package/examples/gba/templates/tonc_hello.c +72 -0
- package/examples/gba/templates/tonc_hello_sprite.c +109 -0
- package/examples/gbc/main.asm +123 -0
- package/examples/gbc/templates/default.c +61 -0
- package/examples/gbc/templates/hello_sprite.c +140 -0
- package/examples/gbc/templates/music_demo.c +63 -0
- package/examples/gbc/templates/platformer.c +181 -0
- package/examples/gbc/templates/puzzle.c +217 -0
- package/examples/gbc/templates/racing.c +164 -0
- package/examples/gbc/templates/shmup.c +188 -0
- package/examples/gbc/templates/sports.c +142 -0
- package/examples/gbc/templates/tile_engine.c +280 -0
- package/examples/genesis/main.s +161 -0
- package/examples/genesis/templates/hello_sprite.c +75 -0
- package/examples/genesis/templates/platformer.c +166 -0
- package/examples/genesis/templates/puzzle.c +240 -0
- package/examples/genesis/templates/racing.c +170 -0
- package/examples/genesis/templates/sgdk_hello.c +41 -0
- package/examples/genesis/templates/shmup.c +188 -0
- package/examples/genesis/templates/shmup_2p.c +244 -0
- package/examples/genesis/templates/sports.c +172 -0
- package/examples/genesis/templates/tile_engine.c +135 -0
- package/examples/genesis/templates/xgm2_demo.c +53 -0
- package/examples/genesis/templates/xgm2_demo_data.s +27 -0
- package/examples/gg/main.c +10 -0
- package/examples/gg/templates/default.c +156 -0
- package/examples/gg/templates/hello_sprite.c +90 -0
- package/examples/gg/templates/music_demo.c +156 -0
- package/examples/gg/templates/platformer.c +220 -0
- package/examples/gg/templates/puzzle.c +204 -0
- package/examples/gg/templates/racing.c +161 -0
- package/examples/gg/templates/shmup.c +188 -0
- package/examples/gg/templates/sports.c +137 -0
- package/examples/gg/templates/tile_engine.c +137 -0
- package/examples/lynx/main.c +4 -0
- package/examples/lynx/templates/default.c +41 -0
- package/examples/lynx/templates/hello_sprite.c +39 -0
- package/examples/lynx/templates/music_demo.c +37 -0
- package/examples/lynx/templates/platformer.c +72 -0
- package/examples/lynx/templates/puzzle.c +142 -0
- package/examples/lynx/templates/racing.c +94 -0
- package/examples/lynx/templates/shmup.c +132 -0
- package/examples/lynx/templates/sports.c +59 -0
- package/examples/nes/main.c +143 -0
- package/examples/nes/space-shooter/README.md +68 -0
- package/examples/nes/space-shooter/main.c +441 -0
- package/examples/nes/space-shooter/nes_runtime.c +347 -0
- package/examples/nes/space-shooter/nes_runtime.h +141 -0
- package/examples/nes/templates/default.c +41 -0
- package/examples/nes/templates/hello_sprite.c +104 -0
- package/examples/nes/templates/music_demo.c +80 -0
- package/examples/nes/templates/platformer.c +171 -0
- package/examples/nes/templates/puzzle.c +232 -0
- package/examples/nes/templates/racing.c +203 -0
- package/examples/nes/templates/shmup.c +228 -0
- package/examples/nes/templates/sports.c +205 -0
- package/examples/nes/templates/tile_engine.c +224 -0
- package/examples/porting-across-platforms/README.md +59 -0
- package/examples/sms/main.c +129 -0
- package/examples/sms/templates/default.c +110 -0
- package/examples/sms/templates/hello_sprite.c +90 -0
- package/examples/sms/templates/music_demo.c +151 -0
- package/examples/sms/templates/platformer.c +215 -0
- package/examples/sms/templates/puzzle.c +204 -0
- package/examples/sms/templates/racing.c +161 -0
- package/examples/sms/templates/shmup.c +167 -0
- package/examples/sms/templates/shmup_2p.c +219 -0
- package/examples/sms/templates/sports.c +147 -0
- package/examples/sms/templates/tile_engine.c +137 -0
- package/examples/snes/main.asm +70 -0
- package/examples/snes/templates/c-hello-data.asm +28 -0
- package/examples/snes/templates/c-hello.c +71 -0
- package/examples/snes/templates/default-data.asm +36 -0
- package/examples/snes/templates/default.c +74 -0
- package/examples/snes/templates/hello_sprite-data.asm +45 -0
- package/examples/snes/templates/hello_sprite.c +76 -0
- package/examples/snes/templates/music_demo-data.asm +20 -0
- package/examples/snes/templates/music_demo.c +83 -0
- package/examples/snes/templates/platformer-data.asm +27 -0
- package/examples/snes/templates/platformer.c +142 -0
- package/examples/snes/templates/puzzle-data.asm +14 -0
- package/examples/snes/templates/puzzle.c +199 -0
- package/examples/snes/templates/racing-data.asm +33 -0
- package/examples/snes/templates/racing.c +146 -0
- package/examples/snes/templates/shmup-data.asm +61 -0
- package/examples/snes/templates/shmup.c +199 -0
- package/examples/snes/templates/sports-data.asm +28 -0
- package/examples/snes/templates/sports.c +144 -0
- package/package.json +83 -0
- package/src/cli/smoke.js +283 -0
- package/src/cores/registry.js +95 -0
- package/src/host/LibretroHost.js +502 -0
- package/src/host/callbacks.js +444 -0
- package/src/host/chafa-render.js +170 -0
- package/src/host/coreLoader.js +57 -0
- package/src/host/cpu-state.js +422 -0
- package/src/host/dsp-state.js +188 -0
- package/src/host/framebuffer.js +115 -0
- package/src/host/gpgx-state.js +309 -0
- package/src/host/index.js +4 -0
- package/src/host/retroConstants.js +72 -0
- package/src/host/snes9x-state.js +35 -0
- package/src/host/types.js +280 -0
- package/src/mcp/disclosure.js +250 -0
- package/src/mcp/log.js +87 -0
- package/src/mcp/server.js +433 -0
- package/src/mcp/state.js +83 -0
- package/src/mcp/tools/address-to-symbol.js +151 -0
- package/src/mcp/tools/art-loaders.js +740 -0
- package/src/mcp/tools/assets.js +89 -0
- package/src/mcp/tools/audio.js +173 -0
- package/src/mcp/tools/cart-parts.js +649 -0
- package/src/mcp/tools/diff-roms.js +412 -0
- package/src/mcp/tools/disasm.js +980 -0
- package/src/mcp/tools/find-references.js +361 -0
- package/src/mcp/tools/font-map.js +353 -0
- package/src/mcp/tools/frame.js +249 -0
- package/src/mcp/tools/free-space.js +95 -0
- package/src/mcp/tools/index.js +351 -0
- package/src/mcp/tools/input-layout.js +215 -0
- package/src/mcp/tools/input.js +142 -0
- package/src/mcp/tools/lifecycle.js +110 -0
- package/src/mcp/tools/lospec.js +156 -0
- package/src/mcp/tools/memory.js +169 -0
- package/src/mcp/tools/metasprite-tools.js +261 -0
- package/src/mcp/tools/platform-docs.js +102 -0
- package/src/mcp/tools/platform-tools.js +1063 -0
- package/src/mcp/tools/platforms.js +86 -0
- package/src/mcp/tools/playtest.js +280 -0
- package/src/mcp/tools/preview-tile.js +360 -0
- package/src/mcp/tools/project.js +1885 -0
- package/src/mcp/tools/record.js +131 -0
- package/src/mcp/tools/rendering-context.js +700 -0
- package/src/mcp/tools/rom-id.js +256 -0
- package/src/mcp/tools/run-until.js +173 -0
- package/src/mcp/tools/snippets.js +235 -0
- package/src/mcp/tools/splice-chr.js +215 -0
- package/src/mcp/tools/sprite-pipeline.js +614 -0
- package/src/mcp/tools/state.js +99 -0
- package/src/mcp/tools/symbols.js +277 -0
- package/src/mcp/tools/tile-inspect.js +206 -0
- package/src/mcp/tools/toolchain.js +680 -0
- package/src/mcp/tools/watch-memory.js +212 -0
- package/src/mcp/tools/which-tiles.js +193 -0
- package/src/mcp/util.js +85 -0
- package/src/observer/bus.js +127 -0
- package/src/observer/livestream.html +589 -0
- package/src/observer/server.js +66 -0
- package/src/observer/tool-wrap.js +115 -0
- package/src/platforms/atari2600/MENTAL_MODEL.md +185 -0
- package/src/platforms/atari2600/TROUBLESHOOTING.md +155 -0
- package/src/platforms/atari2600/UPSTREAM_SOURCES.md +49 -0
- package/src/platforms/atari2600/lib/README.md +67 -0
- package/src/platforms/atari2600/lib/cc65-src/crt0.s +49 -0
- package/src/platforms/atari2600/lib/cc65-src/ctype.s +5 -0
- package/src/platforms/atari2600/lib/kernel_skeleton.asm +85 -0
- package/src/platforms/atari2600/lib/player_kernel.asm +87 -0
- package/src/platforms/atari2600/lib/playfield_kernel.asm +63 -0
- package/src/platforms/atari2600/lib/read_joystick.asm +76 -0
- package/src/platforms/atari2600/lib/score_kernel.asm +141 -0
- package/src/platforms/atari2600/lib/vcs_constants.h +97 -0
- package/src/platforms/atari2600/lib/vectors.asm +16 -0
- package/src/platforms/atari2600/tia.js +355 -0
- package/src/platforms/atari7800/MENTAL_MODEL.md +306 -0
- package/src/platforms/atari7800/TROUBLESHOOTING.md +195 -0
- package/src/platforms/atari7800/UPSTREAM_SOURCES.md +43 -0
- package/src/platforms/atari7800/lib/README.md +45 -0
- package/src/platforms/atari7800/lib/c/atari7800_music.c +215 -0
- package/src/platforms/atari7800/lib/c/atari7800_music.h +33 -0
- package/src/platforms/atari7800/lib/c/atari7800_sfx.c +74 -0
- package/src/platforms/atari7800/lib/c/atari7800_sfx.h +45 -0
- package/src/platforms/atari7800/lib/cc65-src/clock.s +69 -0
- package/src/platforms/atari7800/lib/cc65-src/clocks_per_sec.s +34 -0
- package/src/platforms/atari7800/lib/cc65-src/clrscr.s +27 -0
- package/src/platforms/atari7800/lib/cc65-src/conio.s +226 -0
- package/src/platforms/atari7800/lib/cc65-src/conio_font.s +278 -0
- package/src/platforms/atari7800/lib/cc65-src/cputc.s +139 -0
- package/src/platforms/atari7800/lib/cc65-src/crt0.s +71 -0
- package/src/platforms/atari7800/lib/cc65-src/ctype.s +5 -0
- package/src/platforms/atari7800/lib/cc65-src/exehdr.s +46 -0
- package/src/platforms/atari7800/lib/cc65-src/extra/mono.s +28 -0
- package/src/platforms/atari7800/lib/cc65-src/extzp.inc +15 -0
- package/src/platforms/atari7800/lib/cc65-src/extzp.s +15 -0
- package/src/platforms/atari7800/lib/cc65-src/get_tv.s +65 -0
- package/src/platforms/atari7800/lib/cc65-src/irq.s +36 -0
- package/src/platforms/atari7800/lib/cc65-src/joy/atari7800-stdjoy.s +197 -0
- package/src/platforms/atari7800/lib/cc65-src/joy_stat_stddrv.s +14 -0
- package/src/platforms/atari7800/lib/cc65-src/libref.s +8 -0
- package/src/platforms/atari7800/lib/cc65-src/mono_clrscr.s +27 -0
- package/src/platforms/atari7800/lib/cc65-src/mono_conio.s +231 -0
- package/src/platforms/atari7800/lib/cc65-src/mono_cputc.s +102 -0
- package/src/platforms/atari7800/lib/cc65-src/mono_font.s +2065 -0
- package/src/platforms/atari7800/lib/cc65-src/mono_setcursor.s +214 -0
- package/src/platforms/atari7800/lib/cc65-src/setcursor.s +214 -0
- package/src/platforms/atari7800/lib/cc65-src/textcolor.s +53 -0
- package/src/platforms/atari7800/lib/cc65-src/wherex.s +19 -0
- package/src/platforms/atari7800/lib/cc65-src/wherey.s +19 -0
- package/src/platforms/atari7800/lib/display_list.asm +53 -0
- package/src/platforms/atari7800/lib/maria_init.asm +48 -0
- package/src/platforms/atari7800/lib/maria_registers.h +61 -0
- package/src/platforms/atari7800/lib/palette_load.asm +53 -0
- package/src/platforms/atari7800/lib/read_pad.asm +57 -0
- package/src/platforms/atari7800/lib/vblank_wait.asm +16 -0
- package/src/platforms/atari7800/maria.js +220 -0
- package/src/platforms/c64/MENTAL_MODEL.md +175 -0
- package/src/platforms/c64/TROUBLESHOOTING.md +130 -0
- package/src/platforms/c64/UPSTREAM_SOURCES.md +35 -0
- package/src/platforms/c64/image-to-tilemap.js +190 -0
- package/src/platforms/c64/lib/README.md +52 -0
- package/src/platforms/c64/lib/basic_stub.s +25 -0
- package/src/platforms/c64/lib/c/c64_music.c +248 -0
- package/src/platforms/c64/lib/c/c64_music.h +36 -0
- package/src/platforms/c64/lib/c/c64_sfx.c +94 -0
- package/src/platforms/c64/lib/c/c64_sfx.h +37 -0
- package/src/platforms/c64/lib/c64_registers.h +108 -0
- package/src/platforms/c64/lib/cc65-src/_scrsize.s +12 -0
- package/src/platforms/c64/lib/cc65-src/acc_c128_speed.s +5 -0
- package/src/platforms/c64/lib/cc65-src/acc_c64dtv_speed.s +64 -0
- package/src/platforms/c64/lib/cc65-src/acc_c65_speed.s +69 -0
- package/src/platforms/c64/lib/cc65-src/acc_chameleon_speed.s +100 -0
- package/src/platforms/c64/lib/cc65-src/acc_detect_c128.s +33 -0
- package/src/platforms/c64/lib/cc65-src/acc_detect_c64dtv.s +44 -0
- package/src/platforms/c64/lib/cc65-src/acc_detect_c65.s +55 -0
- package/src/platforms/c64/lib/cc65-src/acc_detect_chameleon.s +39 -0
- package/src/platforms/c64/lib/cc65-src/acc_detect_scpu.s +34 -0
- package/src/platforms/c64/lib/cc65-src/acc_detect_turbomaster.s +45 -0
- package/src/platforms/c64/lib/cc65-src/acc_scpu_speed.s +59 -0
- package/src/platforms/c64/lib/cc65-src/acc_turbomaster_speed.s +56 -0
- package/src/platforms/c64/lib/cc65-src/bordercolor.s +17 -0
- package/src/platforms/c64/lib/cc65-src/break.s +108 -0
- package/src/platforms/c64/lib/cc65-src/cgetc.s +62 -0
- package/src/platforms/c64/lib/cc65-src/clrscr.s +11 -0
- package/src/platforms/c64/lib/cc65-src/color.s +24 -0
- package/src/platforms/c64/lib/cc65-src/conio.s +10 -0
- package/src/platforms/c64/lib/cc65-src/cputc.s +105 -0
- package/src/platforms/c64/lib/cc65-src/crt0.s +117 -0
- package/src/platforms/c64/lib/cc65-src/devnum.s +7 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-65816.s +377 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-c256k.s +508 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-dqbb.s +447 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-georam.s +355 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-isepic.s +276 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-kerberos.s +281 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-ram.s +270 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-ramcart.s +297 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-reu.s +286 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-rrr.s +363 -0
- package/src/platforms/c64/lib/cc65-src/emd/c64-vdc.s +405 -0
- package/src/platforms/c64/lib/cc65-src/emd/dtv-himem.s +251 -0
- package/src/platforms/c64/lib/cc65-src/extra/soft80.s +71 -0
- package/src/platforms/c64/lib/cc65-src/extra/soft80mono.s +74 -0
- package/src/platforms/c64/lib/cc65-src/extra/tgimousedata.s +21 -0
- package/src/platforms/c64/lib/cc65-src/get_ostype.s +43 -0
- package/src/platforms/c64/lib/cc65-src/get_tv.s +20 -0
- package/src/platforms/c64/lib/cc65-src/gettime.s +83 -0
- package/src/platforms/c64/lib/cc65-src/irq.s +49 -0
- package/src/platforms/c64/lib/cc65-src/joy/c64-hitjoy.s +218 -0
- package/src/platforms/c64/lib/cc65-src/joy/c64-numpad.s +155 -0
- package/src/platforms/c64/lib/cc65-src/joy/c64-ptvjoy.s +146 -0
- package/src/platforms/c64/lib/cc65-src/joy/c64-stdjoy.s +111 -0
- package/src/platforms/c64/lib/cc65-src/joy_stat_stddrv.s +14 -0
- package/src/platforms/c64/lib/cc65-src/joy_stddrv.s +14 -0
- package/src/platforms/c64/lib/cc65-src/kbhit.s +23 -0
- package/src/platforms/c64/lib/cc65-src/kbrepeat.s +14 -0
- package/src/platforms/c64/lib/cc65-src/kernal.s +53 -0
- package/src/platforms/c64/lib/cc65-src/kplot.s +22 -0
- package/src/platforms/c64/lib/cc65-src/libref.s +16 -0
- package/src/platforms/c64/lib/cc65-src/mainargs.s +137 -0
- package/src/platforms/c64/lib/cc65-src/mcbdefault.s +146 -0
- package/src/platforms/c64/lib/cc65-src/mcbspritedata.s +4 -0
- package/src/platforms/c64/lib/cc65-src/mou/c64-1351.s +467 -0
- package/src/platforms/c64/lib/cc65-src/mou/c64-inkwell.s +446 -0
- package/src/platforms/c64/lib/cc65-src/mou/c64-joy.s +451 -0
- package/src/platforms/c64/lib/cc65-src/mou/c64-pot.s +409 -0
- package/src/platforms/c64/lib/cc65-src/mouse_stat_stddrv.s +14 -0
- package/src/platforms/c64/lib/cc65-src/mouse_stddrv.s +14 -0
- package/src/platforms/c64/lib/cc65-src/mouseref.s +23 -0
- package/src/platforms/c64/lib/cc65-src/pencalib.c +94 -0
- package/src/platforms/c64/lib/cc65-src/randomize.s +18 -0
- package/src/platforms/c64/lib/cc65-src/revers.s +27 -0
- package/src/platforms/c64/lib/cc65-src/ser/c64-swlink.s +484 -0
- package/src/platforms/c64/lib/cc65-src/ser_stat_stddrv.s +14 -0
- package/src/platforms/c64/lib/cc65-src/ser_stddrv.s +13 -0
- package/src/platforms/c64/lib/cc65-src/settime.s +84 -0
- package/src/platforms/c64/lib/cc65-src/soft80.inc +46 -0
- package/src/platforms/c64/lib/cc65-src/soft80_cgetc.s +85 -0
- package/src/platforms/c64/lib/cc65-src/soft80_charset.s +182 -0
- package/src/platforms/c64/lib/cc65-src/soft80_color.s +159 -0
- package/src/platforms/c64/lib/cc65-src/soft80_conio.s +157 -0
- package/src/platforms/c64/lib/cc65-src/soft80_cpeekc.s +148 -0
- package/src/platforms/c64/lib/cc65-src/soft80_cpeekcolor.s +19 -0
- package/src/platforms/c64/lib/cc65-src/soft80_cpeekrevers.s +15 -0
- package/src/platforms/c64/lib/cc65-src/soft80_cpeeks.s +71 -0
- package/src/platforms/c64/lib/cc65-src/soft80_cputc.s +521 -0
- package/src/platforms/c64/lib/cc65-src/soft80_kclrscr.s +76 -0
- package/src/platforms/c64/lib/cc65-src/soft80_kplot.s +63 -0
- package/src/platforms/c64/lib/cc65-src/soft80_scrsize.s +14 -0
- package/src/platforms/c64/lib/cc65-src/soft80mono_cgetc.s +67 -0
- package/src/platforms/c64/lib/cc65-src/soft80mono_color.s +65 -0
- package/src/platforms/c64/lib/cc65-src/soft80mono_conio.s +168 -0
- package/src/platforms/c64/lib/cc65-src/soft80mono_cpeekcolor.s +17 -0
- package/src/platforms/c64/lib/cc65-src/soft80mono_cputc.s +204 -0
- package/src/platforms/c64/lib/cc65-src/soft80mono_kclrscr.s +63 -0
- package/src/platforms/c64/lib/cc65-src/soft80mono_kplot.s +52 -0
- package/src/platforms/c64/lib/cc65-src/status.s +15 -0
- package/src/platforms/c64/lib/cc65-src/sysuname.s +37 -0
- package/src/platforms/c64/lib/cc65-src/tgi/c64-hi.s +881 -0
- package/src/platforms/c64/lib/cc65-src/tgi_stat_stddrv.s +14 -0
- package/src/platforms/c64/lib/cc65-src/tgi_stddrv.s +13 -0
- package/src/platforms/c64/lib/cc65-src/tmcommon.s +67 -0
- package/src/platforms/c64/lib/cc65-src/waitvsync.s +18 -0
- package/src/platforms/c64/lib/read_joystick.s +28 -0
- package/src/platforms/c64/lib/sid_play.s +48 -0
- package/src/platforms/c64/lib/sprite_table.s +73 -0
- package/src/platforms/c64/lib/vic_init.s +47 -0
- package/src/platforms/c64/sid.js +128 -0
- package/src/platforms/c64/vic.js +273 -0
- package/src/platforms/common/default-palette.js +139 -0
- package/src/platforms/common/image-to-tiles.js +407 -0
- package/src/platforms/common/intent.js +111 -0
- package/src/platforms/common/metasprite-adapters.js +279 -0
- package/src/platforms/common/metasprite-codegen.js +192 -0
- package/src/platforms/common/metasprite-core.js +201 -0
- package/src/platforms/common/metasprite.js +89 -0
- package/src/platforms/common/platform-palette.js +137 -0
- package/src/platforms/common/registers.js +329 -0
- package/src/platforms/common/render-tiles.js +86 -0
- package/src/platforms/common/screenshot-sprite.js +153 -0
- package/src/platforms/common/tile-decode.js +149 -0
- package/src/platforms/gb/MENTAL_MODEL.md +252 -0
- package/src/platforms/gb/TROUBLESHOOTING.md +221 -0
- package/src/platforms/gb/UPSTREAM_SOURCES.md +43 -0
- package/src/platforms/gb/image-to-tilemap.js +173 -0
- package/src/platforms/gb/lib/README.md +115 -0
- package/src/platforms/gb/lib/c/LICENSE-HUGEDRIVER +25 -0
- package/src/platforms/gb/lib/c/README.md +120 -0
- package/src/platforms/gb/lib/c/SDCC_GOTCHAS.md +189 -0
- package/src/platforms/gb/lib/c/gb_crt0.s +163 -0
- package/src/platforms/gb/lib/c/gb_hardware.h +113 -0
- package/src/platforms/gb/lib/c/gb_runtime.c +284 -0
- package/src/platforms/gb/lib/c/gb_runtime.h +145 -0
- package/src/platforms/gb/lib/c/hUGEDriver.c +191 -0
- package/src/platforms/gb/lib/c/hUGEDriver.h +95 -0
- package/src/platforms/gb/lib/c/hUGEDriver.upstream.asm +1908 -0
- package/src/platforms/gb/lib/c/lcd_init.c +19 -0
- package/src/platforms/gb/lib/c/patch-header.js +154 -0
- package/src/platforms/gb/lib/c/song_data.c +88 -0
- package/src/platforms/gb/lib/c/unroll.h +52 -0
- package/src/platforms/gb/lib/c/wait_vblank.c +14 -0
- package/src/platforms/gb/lib/dma_oam.asm +51 -0
- package/src/platforms/gb/lib/header.asm +56 -0
- package/src/platforms/gb/lib/joypad_read.asm +47 -0
- package/src/platforms/gb/lib/lcd_init.asm +44 -0
- package/src/platforms/gb/lib/load_palette.asm +25 -0
- package/src/platforms/gb/lib/load_tiles.asm +29 -0
- package/src/platforms/gb/lib/vblank_wait.asm +31 -0
- package/src/platforms/gb/ppu.js +574 -0
- package/src/platforms/gba/MENTAL_MODEL.md +203 -0
- package/src/platforms/gba/TROUBLESHOOTING.md +250 -0
- package/src/platforms/gba/UPSTREAM_SOURCES.md +41 -0
- package/src/platforms/gba/lib/arm-archives/libc.a +0 -0
- package/src/platforms/gba/lib/arm-archives/libgcc.a +0 -0
- package/src/platforms/gba/lib/arm-archives/libnosys.a +0 -0
- package/src/platforms/gba/lib/c/gba_sfx.c +81 -0
- package/src/platforms/gba/lib/c/gba_sfx.h +48 -0
- package/src/platforms/gba/lib/libgba/crtbegin.o +0 -0
- package/src/platforms/gba/lib/libgba/crtend.o +0 -0
- package/src/platforms/gba/lib/libgba/crti.o +0 -0
- package/src/platforms/gba/lib/libgba/crtn.o +0 -0
- package/src/platforms/gba/lib/libgba/gba_cart.ld +319 -0
- package/src/platforms/gba/lib/libgba/gba_crt0.s +258 -0
- package/src/platforms/gba/lib/libgba/include/BoyScout.h +128 -0
- package/src/platforms/gba/lib/libgba/include/disc.h +36 -0
- package/src/platforms/gba/lib/libgba/include/disc_io.h +64 -0
- package/src/platforms/gba/lib/libgba/include/dldi.h +112 -0
- package/src/platforms/gba/lib/libgba/include/erapi.h +195 -0
- package/src/platforms/gba/lib/libgba/include/fade.h +76 -0
- package/src/platforms/gba/lib/libgba/include/gba.h +47 -0
- package/src/platforms/gba/lib/libgba/include/gba_affine.h +83 -0
- package/src/platforms/gba/lib/libgba/include/gba_base.h +122 -0
- package/src/platforms/gba/lib/libgba/include/gba_compression.h +66 -0
- package/src/platforms/gba/lib/libgba/include/gba_console.h +55 -0
- package/src/platforms/gba/lib/libgba/include/gba_dma.h +100 -0
- package/src/platforms/gba/lib/libgba/include/gba_input.h +127 -0
- package/src/platforms/gba/lib/libgba/include/gba_interrupt.h +146 -0
- package/src/platforms/gba/lib/libgba/include/gba_multiboot.h +72 -0
- package/src/platforms/gba/lib/libgba/include/gba_sio.h +124 -0
- package/src/platforms/gba/lib/libgba/include/gba_sound.h +356 -0
- package/src/platforms/gba/lib/libgba/include/gba_sprites.h +195 -0
- package/src/platforms/gba/lib/libgba/include/gba_systemcalls.h +194 -0
- package/src/platforms/gba/lib/libgba/include/gba_timers.h +63 -0
- package/src/platforms/gba/lib/libgba/include/gba_types.h +60 -0
- package/src/platforms/gba/lib/libgba/include/gba_video.h +307 -0
- package/src/platforms/gba/lib/libgba/include/mappy.h +72 -0
- package/src/platforms/gba/lib/libgba/include/mbv2.h +90 -0
- package/src/platforms/gba/lib/libgba/include/xcomms.h +93 -0
- package/src/platforms/gba/lib/libgba/include/xcomms_cmd.h +53 -0
- package/src/platforms/gba/lib/libgba/libgba.seed.a +0 -0
- package/src/platforms/gba/lib/libgba/libgba.seed.hash +1 -0
- package/src/platforms/gba/lib/libgba/src/AffineSet.c +42 -0
- package/src/platforms/gba/lib/libgba/src/ArcTan.s +41 -0
- package/src/platforms/gba/lib/libgba/src/BoyScout/BoyScout.c +1242 -0
- package/src/platforms/gba/lib/libgba/src/BoyScout/GBASoundRegs.h +200 -0
- package/src/platforms/gba/lib/libgba/src/Compression.c +84 -0
- package/src/platforms/gba/lib/libgba/src/CpuSet.c +41 -0
- package/src/platforms/gba/lib/libgba/src/Div.s +58 -0
- package/src/platforms/gba/lib/libgba/src/DivArm.s +50 -0
- package/src/platforms/gba/lib/libgba/src/InterruptDispatcher.s +113 -0
- package/src/platforms/gba/lib/libgba/src/IntrWait.c +35 -0
- package/src/platforms/gba/lib/libgba/src/MultiBoot.s +33 -0
- package/src/platforms/gba/lib/libgba/src/Reset.s +49 -0
- package/src/platforms/gba/lib/libgba/src/Sound.s +48 -0
- package/src/platforms/gba/lib/libgba/src/Sqrt.s +34 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/disc.c +58 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/dldi.c +189 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/dldi_stub.s +78 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_cf_common.c +260 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_cf_common.h +72 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_m3_common.c +60 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_m3_common.h +48 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_m3cf.c +83 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_m3cf.h +45 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_m3sd.c +508 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_m3sd.h +45 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_mpcf.c +87 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_mpcf.h +42 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_sc_common.c +47 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_sc_common.h +43 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_sccf.c +83 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_sccf.h +45 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd.c +385 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd.h +48 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_scsd_s.s +139 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_sd_common.c +203 -0
- package/src/platforms/gba/lib/libgba/src/disc_io/io_sd_common.h +108 -0
- package/src/platforms/gba/lib/libgba/src/fade.c +185 -0
- package/src/platforms/gba/lib/libgba/src/input.c +127 -0
- package/src/platforms/gba/lib/libgba/src/interrupt.c +116 -0
- package/src/platforms/gba/lib/libgba/src/mappy_print.c +74 -0
- package/src/platforms/gba/lib/libgba/src/mb2print.c +69 -0
- package/src/platforms/gba/lib/libgba/src/mbv2.c +230 -0
- package/src/platforms/gba/lib/libgba/src/mbv2.txt +119 -0
- package/src/platforms/gba/lib/libgba/src/xcomms.c +203 -0
- package/src/platforms/gba/lib/libgba/src/xcomms_print.c +56 -0
- package/src/platforms/gba/lib/libgba/sysinclude/_ansi.h +82 -0
- package/src/platforms/gba/lib/libgba/sysinclude/_newlib_version.h +11 -0
- package/src/platforms/gba/lib/libgba/sysinclude/_syslist.h +41 -0
- package/src/platforms/gba/lib/libgba/sysinclude/alloca.h +21 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ar.h +65 -0
- package/src/platforms/gba/lib/libgba/sysinclude/argz.h +33 -0
- package/src/platforms/gba/lib/libgba/sysinclude/assert.h +50 -0
- package/src/platforms/gba/lib/libgba/sysinclude/complex.h +150 -0
- package/src/platforms/gba/lib/libgba/sysinclude/cpio.h +30 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ctype.h +183 -0
- package/src/platforms/gba/lib/libgba/sysinclude/devctl.h +78 -0
- package/src/platforms/gba/lib/libgba/sysinclude/dirent.h +85 -0
- package/src/platforms/gba/lib/libgba/sysinclude/elf.h +3147 -0
- package/src/platforms/gba/lib/libgba/sysinclude/envlock.h +15 -0
- package/src/platforms/gba/lib/libgba/sysinclude/envz.h +16 -0
- package/src/platforms/gba/lib/libgba/sysinclude/errno.h +11 -0
- package/src/platforms/gba/lib/libgba/sysinclude/fastmath.h +13 -0
- package/src/platforms/gba/lib/libgba/sysinclude/fcntl.h +1 -0
- package/src/platforms/gba/lib/libgba/sysinclude/fenv.h +42 -0
- package/src/platforms/gba/lib/libgba/sysinclude/float.h +631 -0
- package/src/platforms/gba/lib/libgba/sysinclude/fnmatch.h +55 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ftw.h +66 -0
- package/src/platforms/gba/lib/libgba/sysinclude/getopt.h +185 -0
- package/src/platforms/gba/lib/libgba/sysinclude/glob.h +90 -0
- package/src/platforms/gba/lib/libgba/sysinclude/grp.h +86 -0
- package/src/platforms/gba/lib/libgba/sysinclude/iconv.h +63 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ieeefp.h +295 -0
- package/src/platforms/gba/lib/libgba/sysinclude/inttypes.h +345 -0
- package/src/platforms/gba/lib/libgba/sysinclude/iso646.h +45 -0
- package/src/platforms/gba/lib/libgba/sysinclude/langinfo.h +332 -0
- package/src/platforms/gba/lib/libgba/sysinclude/libgen.h +37 -0
- package/src/platforms/gba/lib/libgba/sysinclude/limits.h +168 -0
- package/src/platforms/gba/lib/libgba/sysinclude/locale.h +96 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/_arc4random.h +1 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/_default_types.h +250 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/_endian.h +39 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/_time.h +3 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/_types.h +8 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/ansi.h +1 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/endian.h +69 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/fastmath.h +98 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/ieee.h +127 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/ieeefp.h +533 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/malloc.h +8 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/param.h +8 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/setjmp-dj.h +43 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/setjmp.h +524 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/stdlib.h +8 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/termios.h +1 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/time.h +15 -0
- package/src/platforms/gba/lib/libgba/sysinclude/machine/types.h +13 -0
- package/src/platforms/gba/lib/libgba/sysinclude/malloc.h +173 -0
- package/src/platforms/gba/lib/libgba/sysinclude/math.h +645 -0
- package/src/platforms/gba/lib/libgba/sysinclude/memory.h +4 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ndbm.h +91 -0
- package/src/platforms/gba/lib/libgba/sysinclude/newlib.h +427 -0
- package/src/platforms/gba/lib/libgba/sysinclude/paths.h +9 -0
- package/src/platforms/gba/lib/libgba/sysinclude/pthread.h +456 -0
- package/src/platforms/gba/lib/libgba/sysinclude/pwd.h +83 -0
- package/src/platforms/gba/lib/libgba/sysinclude/reent.h +190 -0
- package/src/platforms/gba/lib/libgba/sysinclude/regdef.h +7 -0
- package/src/platforms/gba/lib/libgba/sysinclude/regex.h +103 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sched.h +112 -0
- package/src/platforms/gba/lib/libgba/sysinclude/search.h +64 -0
- package/src/platforms/gba/lib/libgba/sysinclude/setjmp.h +25 -0
- package/src/platforms/gba/lib/libgba/sysinclude/signal.h +35 -0
- package/src/platforms/gba/lib/libgba/sysinclude/spawn.h +111 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ssp/ssp.h +76 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ssp/stdio.h +101 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ssp/stdlib.h +30 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ssp/string.h +115 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ssp/strings.h +55 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ssp/unistd.h +93 -0
- package/src/platforms/gba/lib/libgba/sysinclude/ssp/wchar.h +97 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stdarg.h +135 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stdatomic.h +409 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stdbool.h +51 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stddef.h +463 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stdint.h +466 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stdio.h +807 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stdio_ext.h +79 -0
- package/src/platforms/gba/lib/libgba/sysinclude/stdlib.h +345 -0
- package/src/platforms/gba/lib/libgba/sysinclude/string.h +183 -0
- package/src/platforms/gba/lib/libgba/sysinclude/strings.h +80 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_default_fcntl.h +241 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_intsup.h +199 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_locale.h +12 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_pthreadtypes.h +233 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_sigset.h +43 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_stdint.h +90 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_timespec.h +52 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_timeval.h +60 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_types.h +228 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/_tz_structs.h +24 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/cdefs.h +754 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/config.h +314 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/custom_file.h +2 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/dir.h +10 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/dirent.h +13 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/endian.h +207 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/errno.h +198 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/fcntl.h +12 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/features.h +551 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/fenv.h +90 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/file.h +2 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/iconvnls.h +77 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/iosupport.h +143 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/lock.h +75 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/param.h +35 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/queue.h +919 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/reent.h +913 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/resource.h +24 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/sched.h +69 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/select.h +94 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/signal.h +388 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/stat.h +179 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/statvfs.h +41 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/stdio.h +27 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/string.h +2 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/syslimits.h +61 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/time.h +448 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/timeb.h +40 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/times.h +32 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/timespec.h +63 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/tree.h +864 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/types.h +228 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/unistd.h +591 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/utime.h +22 -0
- package/src/platforms/gba/lib/libgba/sysinclude/sys/wait.h +44 -0
- package/src/platforms/gba/lib/libgba/sysinclude/tar.h +43 -0
- package/src/platforms/gba/lib/libgba/sysinclude/termios.h +7 -0
- package/src/platforms/gba/lib/libgba/sysinclude/tgmath.h +127 -0
- package/src/platforms/gba/lib/libgba/sysinclude/threads.h +93 -0
- package/src/platforms/gba/lib/libgba/sysinclude/time.h +313 -0
- package/src/platforms/gba/lib/libgba/sysinclude/unctrl.h +42 -0
- package/src/platforms/gba/lib/libgba/sysinclude/unistd.h +6 -0
- package/src/platforms/gba/lib/libgba/sysinclude/utime.h +12 -0
- package/src/platforms/gba/lib/libgba/sysinclude/utmp.h +8 -0
- package/src/platforms/gba/lib/libgba/sysinclude/varargs.h +7 -0
- package/src/platforms/gba/lib/libgba/sysinclude/wchar.h +339 -0
- package/src/platforms/gba/lib/libgba/sysinclude/wctype.h +74 -0
- package/src/platforms/gba/lib/libgba/sysinclude/wordexp.h +53 -0
- package/src/platforms/gba/lib/libtonc/crtbegin.o +0 -0
- package/src/platforms/gba/lib/libtonc/crtend.o +0 -0
- package/src/platforms/gba/lib/libtonc/crti.o +0 -0
- package/src/platforms/gba/lib/libtonc/crtn.o +0 -0
- package/src/platforms/gba/lib/libtonc/gba_cart.ld +319 -0
- package/src/platforms/gba/lib/libtonc/gba_crt0.s +258 -0
- package/src/platforms/gba/lib/libtonc/include/tonc.h +72 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_asminc.h +132 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_bios.h +555 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_core.h +573 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_input.h +184 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_irq.h +121 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_legacy.h +481 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_libgba.h +537 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_math.h +692 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_memdef.h +962 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_memmap.h +583 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_nocash.h +51 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_oam.h +186 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_surface.h +461 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_text.h +270 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_tte.h +748 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_types.h +376 -0
- package/src/platforms/gba/lib/libtonc/include/tonc_video.h +615 -0
- package/src/platforms/gba/lib/libtonc/libtonc.seed.a +0 -0
- package/src/platforms/gba/lib/libtonc/libtonc.seed.hash +1 -0
- package/src/platforms/gba/lib/libtonc/src/asm/clr_blend_fast.s +72 -0
- package/src/platforms/gba/lib/libtonc/src/asm/clr_fade_fast.s +74 -0
- package/src/platforms/gba/lib/libtonc/src/asm/div_lut.s +54 -0
- package/src/platforms/gba/lib/libtonc/src/asm/sin_lut.s +90 -0
- package/src/platforms/gba/lib/libtonc/src/asm/tonc_bios.s +289 -0
- package/src/platforms/gba/lib/libtonc/src/asm/tonc_bios_ex.s +97 -0
- package/src/platforms/gba/lib/libtonc/src/asm/tonc_isr_master.s +92 -0
- package/src/platforms/gba/lib/libtonc/src/asm/tonc_isr_nest.s +98 -0
- package/src/platforms/gba/lib/libtonc/src/asm/tonc_memcpy.s +126 -0
- package/src/platforms/gba/lib/libtonc/src/asm/tonc_memset.s +123 -0
- package/src/platforms/gba/lib/libtonc/src/asm/tonc_nocash.s +73 -0
- package/src/platforms/gba/lib/libtonc/src/font/sys8.png +0 -0
- package/src/platforms/gba/lib/libtonc/src/font/sys8.s +46 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana10.png +0 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana10.s +293 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9.png +0 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9.s +167 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9_b4.png +0 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9_b4.s +545 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9b.png +0 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9b.s +167 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9i.png +0 -0
- package/src/platforms/gba/lib/libtonc/src/font/verdana9i.s +167 -0
- package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_bitmap.c +289 -0
- package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text.c +81 -0
- package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_bm.c +244 -0
- package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_map.c +122 -0
- package/src/platforms/gba/lib/libtonc/src/pre1.3/tonc_text_oam.c +113 -0
- package/src/platforms/gba/lib/libtonc/src/pre1.3/toncfont.s +43 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_bg.c +61 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_bg_affine.c +112 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_bmp16.c +240 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_bmp8.c +314 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_color.c +368 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_core.c +237 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_input.c +118 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_irq.c +271 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_math.c +54 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_oam.c +76 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_obj_affine.c +146 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_sbmp16.c +369 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_sbmp8.c +405 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_schr4c.c +588 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_schr4r.c +462 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_surface.c +105 -0
- package/src/platforms/gba/lib/libtonc/src/tonc_video.c +33 -0
- package/src/platforms/gba/lib/libtonc/src/tte/ase_drawg.c +83 -0
- package/src/platforms/gba/lib/libtonc/src/tte/bmp16_drawg.c +72 -0
- package/src/platforms/gba/lib/libtonc/src/tte/bmp16_drawg_b1cs.c +92 -0
- package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg.c +71 -0
- package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg_b1cs.c +104 -0
- package/src/platforms/gba/lib/libtonc/src/tte/bmp8_drawg_b1cts_fast.s +115 -0
- package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b1cts.c +76 -0
- package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b1cts_fast.s +128 -0
- package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b4cts.c +67 -0
- package/src/platforms/gba/lib/libtonc/src/tte/chr4c_drawg_b4cts_fast.s +127 -0
- package/src/platforms/gba/lib/libtonc/src/tte/chr4r_drawg_b1cts.c +80 -0
- package/src/platforms/gba/lib/libtonc/src/tte/chr4r_drawg_b1cts_fast.s +145 -0
- package/src/platforms/gba/lib/libtonc/src/tte/obj_drawg.c +61 -0
- package/src/platforms/gba/lib/libtonc/src/tte/se_drawg.c +110 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_init_ase.c +87 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_init_bmp.c +118 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_init_chr4c.c +86 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_init_chr4r.c +87 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_init_obj.c +84 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_init_se.c +96 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_iohook.c +264 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_main.c +756 -0
- package/src/platforms/gba/lib/libtonc/src/tte/tte_types.s +119 -0
- package/src/platforms/gba/lib/maxmod/LICENSE-MAXMOD +23 -0
- package/src/platforms/gba/lib/maxmod/asm_include/mp_defs.inc +117 -0
- package/src/platforms/gba/lib/maxmod/asm_include/mp_format_mas.inc +108 -0
- package/src/platforms/gba/lib/maxmod/asm_include/mp_macros.inc +195 -0
- package/src/platforms/gba/lib/maxmod/asm_include/mp_mas.inc +40 -0
- package/src/platforms/gba/lib/maxmod/asm_include/mp_mas_structs.inc +189 -0
- package/src/platforms/gba/lib/maxmod/asm_include/mp_mixer_ds.inc +46 -0
- package/src/platforms/gba/lib/maxmod/asm_include/mp_mixer_gba.inc +42 -0
- package/src/platforms/gba/lib/maxmod/asm_include/swi_gba.inc +23 -0
- package/src/platforms/gba/lib/maxmod/include/maxmod.h +412 -0
- package/src/platforms/gba/lib/maxmod/include/mm_types.h +333 -0
- package/src/platforms/gba/lib/maxmod/maxmod.seed.a +0 -0
- package/src/platforms/gba/lib/maxmod/maxmod.seed.hash +1 -0
- package/src/platforms/gba/lib/maxmod/music/chiptune.xm +0 -0
- package/src/platforms/gba/lib/maxmod/music/chiptune_soundbank.bin +0 -0
- package/src/platforms/gba/lib/maxmod/music/chiptune_soundbank.h +4 -0
- package/src/platforms/gba/lib/maxmod/music/make_chiptune_xm.js +203 -0
- package/src/platforms/gba/lib/maxmod/source/mm_effect.s +767 -0
- package/src/platforms/gba/lib/maxmod/source/mm_main.s +115 -0
- package/src/platforms/gba/lib/maxmod/source/mm_mas.s +4990 -0
- package/src/platforms/gba/lib/maxmod/source/mm_mas_arm.s +612 -0
- package/src/platforms/gba/lib/maxmod/source_gba/mm_init_default.s +98 -0
- package/src/platforms/gba/lib/maxmod/source_gba/mm_main_gba.s +292 -0
- package/src/platforms/gba/lib/maxmod/source_gba/mm_mixer_gba.s +1367 -0
- package/src/platforms/gba/lib/sysbase/gba_iosupport.c +138 -0
- package/src/platforms/gbc/MENTAL_MODEL.md +165 -0
- package/src/platforms/gbc/TROUBLESHOOTING.md +142 -0
- package/src/platforms/gbc/UPSTREAM_SOURCES.md +60 -0
- package/src/platforms/gbc/lib/c/LICENSE-HUGEDRIVER +25 -0
- package/src/platforms/gbc/lib/c/README.md +120 -0
- package/src/platforms/gbc/lib/c/SDCC_GOTCHAS.md +189 -0
- package/src/platforms/gbc/lib/c/gb_crt0.s +163 -0
- package/src/platforms/gbc/lib/c/gb_hardware.h +113 -0
- package/src/platforms/gbc/lib/c/gb_runtime.c +284 -0
- package/src/platforms/gbc/lib/c/gb_runtime.h +145 -0
- package/src/platforms/gbc/lib/c/hUGEDriver.c +191 -0
- package/src/platforms/gbc/lib/c/hUGEDriver.h +95 -0
- package/src/platforms/gbc/lib/c/hUGEDriver.upstream.asm +1908 -0
- package/src/platforms/gbc/lib/c/lcd_init.c +19 -0
- package/src/platforms/gbc/lib/c/patch-header.js +154 -0
- package/src/platforms/gbc/lib/c/song_data.c +88 -0
- package/src/platforms/gbc/lib/c/unroll.h +52 -0
- package/src/platforms/gbc/lib/c/wait_vblank.c +14 -0
- package/src/platforms/genesis/MENTAL_MODEL.md +223 -0
- package/src/platforms/genesis/TROUBLESHOOTING.md +193 -0
- package/src/platforms/genesis/UPSTREAM_SOURCES.md +52 -0
- package/src/platforms/genesis/image-to-tilemap.js +333 -0
- package/src/platforms/genesis/lib/README.md +157 -0
- package/src/platforms/genesis/lib/c/crtbegin.o +0 -0
- package/src/platforms/genesis/lib/c/crtend.o +0 -0
- package/src/platforms/genesis/lib/c/genesis.ld +44 -0
- package/src/platforms/genesis/lib/c/genesis_sfx.c +51 -0
- package/src/platforms/genesis/lib/c/genesis_sfx.h +49 -0
- package/src/platforms/genesis/lib/c/libc.a +0 -0
- package/src/platforms/genesis/lib/c/libgcc.a +0 -0
- package/src/platforms/genesis/lib/c/libm.a +0 -0
- package/src/platforms/genesis/lib/c/sega.s +71 -0
- package/src/platforms/genesis/lib/header.s +96 -0
- package/src/platforms/genesis/lib/nmi_safe.s +79 -0
- package/src/platforms/genesis/lib/pad_read.s +104 -0
- package/src/platforms/genesis/lib/sgdk/COPYING.RUNTIME +73 -0
- package/src/platforms/genesis/lib/sgdk/LICENSE +12 -0
- package/src/platforms/genesis/lib/sgdk/include/asm.h +52 -0
- package/src/platforms/genesis/lib/sgdk/include/asm_mac.i +9 -0
- package/src/platforms/genesis/lib/sgdk/include/bmp.h +690 -0
- package/src/platforms/genesis/lib/sgdk/include/config.h +208 -0
- package/src/platforms/genesis/lib/sgdk/include/dma.h +542 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/console.h +387 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/everdrive.h +116 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/fat16.h +84 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/flash-save/flash.h +164 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/flash-save/saveman.h +177 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/link_cable.h +316 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/minimusic/minimus.h +29 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/16c550.h +221 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/comm.h +93 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/gamejolt.h +541 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/jsmn.h +471 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/json.h +122 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/lsd.h +172 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/megawifi.h +984 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/mw-msg.h +392 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/ssf_ed_pro.h +38 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/mw/ssf_ed_x7.h +73 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/serial/buffer.h +8 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/serial/serial.h +133 -0
- package/src/platforms/genesis/lib/sgdk/include/ext/stb/stb_sprintf.h +1864 -0
- package/src/platforms/genesis/lib/sgdk/include/genesis.h +92 -0
- package/src/platforms/genesis/lib/sgdk/include/joy.h +482 -0
- package/src/platforms/genesis/lib/sgdk/include/kdebug.h +21 -0
- package/src/platforms/genesis/lib/sgdk/include/map.h +409 -0
- package/src/platforms/genesis/lib/sgdk/include/mapper.h +186 -0
- package/src/platforms/genesis/lib/sgdk/include/maths.h +1071 -0
- package/src/platforms/genesis/lib/sgdk/include/maths3D.h +480 -0
- package/src/platforms/genesis/lib/sgdk/include/memory.h +346 -0
- package/src/platforms/genesis/lib/sgdk/include/memory_base.h +37 -0
- package/src/platforms/genesis/lib/sgdk/include/object.h +171 -0
- package/src/platforms/genesis/lib/sgdk/include/pal.h +500 -0
- package/src/platforms/genesis/lib/sgdk/include/pool.h +171 -0
- package/src/platforms/genesis/lib/sgdk/include/psg.h +153 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_dpcm2.h +79 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_pcm.h +98 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/pcm/snd_pcm4.h +125 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/pcm/tab_vol.h +6 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/smp_null.h +6 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/smp_null_dpcm.h +6 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/sound.h +70 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/xgm.h +399 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/xgm2.h +389 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/z80_def.i80 +41 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/z80_fct.i80 +83 -0
- package/src/platforms/genesis/lib/sgdk/include/snd/z80_mac.i80 +1476 -0
- package/src/platforms/genesis/lib/sgdk/include/sprite_eng.h +1095 -0
- package/src/platforms/genesis/lib/sgdk/include/sprite_eng_legacy.h +1030 -0
- package/src/platforms/genesis/lib/sgdk/include/sram.h +110 -0
- package/src/platforms/genesis/lib/sgdk/include/string.h +349 -0
- package/src/platforms/genesis/lib/sgdk/include/sys.h +511 -0
- package/src/platforms/genesis/lib/sgdk/include/tab_cnv.h +19 -0
- package/src/platforms/genesis/lib/sgdk/include/task.h +77 -0
- package/src/platforms/genesis/lib/sgdk/include/task_cst.h +33 -0
- package/src/platforms/genesis/lib/sgdk/include/timer.h +132 -0
- package/src/platforms/genesis/lib/sgdk/include/tools.h +450 -0
- package/src/platforms/genesis/lib/sgdk/include/types.h +320 -0
- package/src/platforms/genesis/lib/sgdk/include/vdp.h +1150 -0
- package/src/platforms/genesis/lib/sgdk/include/vdp_bg.h +723 -0
- package/src/platforms/genesis/lib/sgdk/include/vdp_pal.h +101 -0
- package/src/platforms/genesis/lib/sgdk/include/vdp_spr.h +448 -0
- package/src/platforms/genesis/lib/sgdk/include/vdp_tile.h +1136 -0
- package/src/platforms/genesis/lib/sgdk/include/vram.h +270 -0
- package/src/platforms/genesis/lib/sgdk/include/ym2612.h +87 -0
- package/src/platforms/genesis/lib/sgdk/include/z80_ctrl.h +420 -0
- package/src/platforms/genesis/lib/sgdk/libmd.seed.a +0 -0
- package/src/platforms/genesis/lib/sgdk/libmd.seed.hash +1 -0
- package/src/platforms/genesis/lib/sgdk/md.ld +120 -0
- package/src/platforms/genesis/lib/sgdk/music/demo.vgm +0 -0
- package/src/platforms/genesis/lib/sgdk/music/demo.xgc +0 -0
- package/src/platforms/genesis/lib/sgdk/music/demo.xgm +0 -0
- package/src/platforms/genesis/lib/sgdk/res/image/font_default.png +0 -0
- package/src/platforms/genesis/lib/sgdk/res/image/sgdk_logo.png +0 -0
- package/src/platforms/genesis/lib/sgdk/res/libres.h +10 -0
- package/src/platforms/genesis/lib/sgdk/res/libres.res +5 -0
- package/src/platforms/genesis/lib/sgdk/res/libres.s +166 -0
- package/src/platforms/genesis/lib/sgdk/res/sound/stop_xgm.bin +0 -0
- package/src/platforms/genesis/lib/sgdk/rom_header.c +33 -0
- package/src/platforms/genesis/lib/sgdk/sega.preprocessed.s +364 -0
- package/src/platforms/genesis/lib/sgdk/sega.s +365 -0
- package/src/platforms/genesis/lib/sgdk/src/bmp.c +1539 -0
- package/src/platforms/genesis/lib/sgdk/src/bmp_a.s +3477 -0
- package/src/platforms/genesis/lib/sgdk/src/boot/rom_header.c +33 -0
- package/src/platforms/genesis/lib/sgdk/src/boot/sega.s +365 -0
- package/src/platforms/genesis/lib/sgdk/src/dma.c +782 -0
- package/src/platforms/genesis/lib/sgdk/src/dma_a.s +23 -0
- package/src/platforms/genesis/lib/sgdk/src/error_a.s +376 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/console.c +490 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/everdrive.c +285 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/fat16.c +610 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/README.md +112 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/flash.c +300 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/flash-save/saveman.c +641 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/link_cable.c +1758 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/CHANGELOG.md +31 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/LICENSE.txt +17 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/README.md +18 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/data.z80 +148 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/define.z80 +173 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/api-c.md +80 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/format.md +132 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/doc/teradrive.md +33 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/fm.z80 +363 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/main.z80 +433 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/minimus.c +129 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/minimus_drv.s80 +17 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/psg.z80 +231 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/track.z80 +398 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/minimusic/util.z80 +98 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/16c550.c +84 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/README.md +849 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/comm.c +141 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/gamejolt.c +758 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/json.c +153 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/lsd.c +364 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/megawifi.c +1501 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/ssf_ed_pro.c +98 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/mw/ssf_ed_x7.c +67 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/serial/buffer.c +69 -0
- package/src/platforms/genesis/lib/sgdk/src/ext/serial/serial.c +158 -0
- package/src/platforms/genesis/lib/sgdk/src/joy.c +1361 -0
- package/src/platforms/genesis/lib/sgdk/src/kdebug.s +109 -0
- package/src/platforms/genesis/lib/sgdk/src/map.c +1915 -0
- package/src/platforms/genesis/lib/sgdk/src/mapper.c +280 -0
- package/src/platforms/genesis/lib/sgdk/src/maths.c +878 -0
- package/src/platforms/genesis/lib/sgdk/src/maths3D.c +480 -0
- package/src/platforms/genesis/lib/sgdk/src/maths3D_a.s +205 -0
- package/src/platforms/genesis/lib/sgdk/src/memory.c +760 -0
- package/src/platforms/genesis/lib/sgdk/src/memory_a.s +306 -0
- package/src/platforms/genesis/lib/sgdk/src/object.c +111 -0
- package/src/platforms/genesis/lib/sgdk/src/pal.c +484 -0
- package/src/platforms/genesis/lib/sgdk/src/pool.c +234 -0
- package/src/platforms/genesis/lib/sgdk/src/psg.c +82 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/drv_null.s80 +27 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/drv_xgm.s80 +3037 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_dpcm2.s80 +984 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_pcm.s80 +592 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/pcm/drv_pcm4.s80 +699 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_dpcm2.c +172 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_pcm.c +152 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/pcm/snd_pcm4.c +213 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/pcm/tab_vol.c +277 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/smp_null.s +22 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/smp_null_dpcm.s +15 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/sound.c +33 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm.c +683 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2.s80 +993 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_fct.i80 +611 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_mac.i80 +133 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_pcm_fct.i80 +114 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_pcm_mac.i80 +1444 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_psg_fct.i80 +491 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_psg_mac.i80 +43 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_ym_fct.i80 +1664 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2/drv_xgm2_ym_mac.i80 +295 -0
- package/src/platforms/genesis/lib/sgdk/src/snd/xgm2.c +1083 -0
- package/src/platforms/genesis/lib/sgdk/src/sprite_eng.c +2256 -0
- package/src/platforms/genesis/lib/sgdk/src/sprite_eng_legacy.c +2309 -0
- package/src/platforms/genesis/lib/sgdk/src/sram.c +30 -0
- package/src/platforms/genesis/lib/sgdk/src/sram_a.s +41 -0
- package/src/platforms/genesis/lib/sgdk/src/string.c +720 -0
- package/src/platforms/genesis/lib/sgdk/src/sys.c +1053 -0
- package/src/platforms/genesis/lib/sgdk/src/sys_a.s +74 -0
- package/src/platforms/genesis/lib/sgdk/src/tab_cnv.c +129 -0
- package/src/platforms/genesis/lib/sgdk/src/tab_log10.c +8201 -0
- package/src/platforms/genesis/lib/sgdk/src/tab_log2.c +8201 -0
- package/src/platforms/genesis/lib/sgdk/src/tab_sin.c +2058 -0
- package/src/platforms/genesis/lib/sgdk/src/tab_sqrt.c +8201 -0
- package/src/platforms/genesis/lib/sgdk/src/task.s +148 -0
- package/src/platforms/genesis/lib/sgdk/src/timer.c +201 -0
- package/src/platforms/genesis/lib/sgdk/src/tools.c +1299 -0
- package/src/platforms/genesis/lib/sgdk/src/tools_a.s +979 -0
- package/src/platforms/genesis/lib/sgdk/src/types.c +18 -0
- package/src/platforms/genesis/lib/sgdk/src/vdp.c +1060 -0
- package/src/platforms/genesis/lib/sgdk/src/vdp_bg.c +511 -0
- package/src/platforms/genesis/lib/sgdk/src/vdp_spr.c +322 -0
- package/src/platforms/genesis/lib/sgdk/src/vdp_tile.c +1011 -0
- package/src/platforms/genesis/lib/sgdk/src/vdp_tile_a.s +68 -0
- package/src/platforms/genesis/lib/sgdk/src/vram.c +273 -0
- package/src/platforms/genesis/lib/sgdk/src/ym2612.c +175 -0
- package/src/platforms/genesis/lib/sgdk/src/z80_ctrl.c +334 -0
- package/src/platforms/genesis/lib/sprite_table.s +129 -0
- package/src/platforms/genesis/lib/vblank_wait.s +73 -0
- package/src/platforms/genesis/lib/vdp_init.s +85 -0
- package/src/platforms/genesis/lib/wram.s +88 -0
- package/src/platforms/genesis/lib/z80_bootstrap.s +102 -0
- package/src/platforms/genesis/vdp.js +495 -0
- package/src/platforms/gg/MENTAL_MODEL.md +155 -0
- package/src/platforms/gg/TROUBLESHOOTING.md +91 -0
- package/src/platforms/gg/UPSTREAM_SOURCES.md +36 -0
- package/src/platforms/gg/lib/c/gg_crt0.s +112 -0
- package/src/platforms/gg/lib/c/gg_hw.h +62 -0
- package/src/platforms/gg/lib/c/gg_music.c +155 -0
- package/src/platforms/gg/lib/c/gg_music.h +89 -0
- package/src/platforms/gg/lib/c/gg_sfx.c +82 -0
- package/src/platforms/gg/lib/c/gg_sfx.h +40 -0
- package/src/platforms/gg/lib/c/joypad_read.c +22 -0
- package/src/platforms/gg/lib/c/load_palette.c +20 -0
- package/src/platforms/gg/lib/c/load_tiles.c +32 -0
- package/src/platforms/gg/lib/c/sprite_table.c +60 -0
- package/src/platforms/gg/lib/c/vblank_wait.c +10 -0
- package/src/platforms/gg/lib/c/vdp_init.c +58 -0
- package/src/platforms/index.js +7 -0
- package/src/platforms/lynx/MENTAL_MODEL.md +231 -0
- package/src/platforms/lynx/TROUBLESHOOTING.md +105 -0
- package/src/platforms/lynx/UPSTREAM_SOURCES.md +66 -0
- package/src/platforms/lynx/lib/c/lynx_music.c +63 -0
- package/src/platforms/lynx/lib/c/lynx_music.h +16 -0
- package/src/platforms/lynx/lib/c/lynx_sfx.c +147 -0
- package/src/platforms/lynx/lib/c/lynx_sfx.h +59 -0
- package/src/platforms/lynx/lib/cc65-src/bllhdr.s +18 -0
- package/src/platforms/lynx/lib/cc65-src/bootldr.s +195 -0
- package/src/platforms/lynx/lib/cc65-src/cgetc.s +69 -0
- package/src/platforms/lynx/lib/cc65-src/clock.s +87 -0
- package/src/platforms/lynx/lib/cc65-src/crt0.s +135 -0
- package/src/platforms/lynx/lib/cc65-src/defdir.s +29 -0
- package/src/platforms/lynx/lib/cc65-src/eeprom.s +255 -0
- package/src/platforms/lynx/lib/cc65-src/eeprom46.s +204 -0
- package/src/platforms/lynx/lib/cc65-src/eeprom66.s +227 -0
- package/src/platforms/lynx/lib/cc65-src/eeprom86.s +236 -0
- package/src/platforms/lynx/lib/cc65-src/exec.s +34 -0
- package/src/platforms/lynx/lib/cc65-src/exehdr.s +27 -0
- package/src/platforms/lynx/lib/cc65-src/extzp.inc +23 -0
- package/src/platforms/lynx/lib/cc65-src/extzp.s +30 -0
- package/src/platforms/lynx/lib/cc65-src/irq.s +45 -0
- package/src/platforms/lynx/lib/cc65-src/joy/lynx-stdjoy.s +93 -0
- package/src/platforms/lynx/lib/cc65-src/joy_stat_stddrv.s +14 -0
- package/src/platforms/lynx/lib/cc65-src/kbhit.s +56 -0
- package/src/platforms/lynx/lib/cc65-src/libref.s +9 -0
- package/src/platforms/lynx/lib/cc65-src/load.s +41 -0
- package/src/platforms/lynx/lib/cc65-src/lseek.s +58 -0
- package/src/platforms/lynx/lib/cc65-src/lynx-cart.s +98 -0
- package/src/platforms/lynx/lib/cc65-src/lynx-snd.s +1270 -0
- package/src/platforms/lynx/lib/cc65-src/mainargs.s +24 -0
- package/src/platforms/lynx/lib/cc65-src/open.s +136 -0
- package/src/platforms/lynx/lib/cc65-src/oserror.s +14 -0
- package/src/platforms/lynx/lib/cc65-src/read.s +44 -0
- package/src/platforms/lynx/lib/cc65-src/ser/lynx-comlynx.s +404 -0
- package/src/platforms/lynx/lib/cc65-src/ser_stat_stddrv.s +14 -0
- package/src/platforms/lynx/lib/cc65-src/sysuname.s +39 -0
- package/src/platforms/lynx/lib/cc65-src/tgi/lynx-160-102-16.s +1075 -0
- package/src/platforms/lynx/lib/cc65-src/tgi_colors.s +9 -0
- package/src/platforms/lynx/lib/cc65-src/tgi_irq.s +11 -0
- package/src/platforms/lynx/lib/cc65-src/tgi_stat_stddrv.s +14 -0
- package/src/platforms/lynx/lib/cc65-src/tgi_stddrv.s +13 -0
- package/src/platforms/lynx/lib/cc65-src/uploader.s +81 -0
- package/src/platforms/nes/MENTAL_MODEL.md +301 -0
- package/src/platforms/nes/TROUBLESHOOTING.md +321 -0
- package/src/platforms/nes/UPSTREAM_SOURCES.md +31 -0
- package/src/platforms/nes/image-to-chr.js +195 -0
- package/src/platforms/nes/image-to-tilemap.js +415 -0
- package/src/platforms/nes/lib/README.md +40 -0
- package/src/platforms/nes/lib/asm/LICENSE-FAMITONE +40 -0
- package/src/platforms/nes/lib/asm/chr_ram_header.s +32 -0
- package/src/platforms/nes/lib/asm/famitone2.s +1258 -0
- package/src/platforms/nes/lib/asm/famitone_bridge.s +50 -0
- package/src/platforms/nes/lib/asm/music_data.s +238 -0
- package/src/platforms/nes/lib/c/chr_ram_runtime_hello_sprite.c +81 -0
- package/src/platforms/nes/lib/c/chr_ram_runtime_hud_row.c +101 -0
- package/src/platforms/nes/lib/c/nes_runtime.c +347 -0
- package/src/platforms/nes/lib/c/nes_runtime.h +153 -0
- package/src/platforms/nes/lib/c/nmi_handler.c +51 -0
- package/src/platforms/nes/lib/c/nmi_trampoline.s +25 -0
- package/src/platforms/nes/lib/cc65-src/Makefile.inc +9 -0
- package/src/platforms/nes/lib/cc65-src/_scrsize.s +24 -0
- package/src/platforms/nes/lib/cc65-src/cclear.s +29 -0
- package/src/platforms/nes/lib/cc65-src/chline.s +31 -0
- package/src/platforms/nes/lib/cc65-src/clock.s +31 -0
- package/src/platforms/nes/lib/cc65-src/clrscr.s +72 -0
- package/src/platforms/nes/lib/cc65-src/color.s +68 -0
- package/src/platforms/nes/lib/cc65-src/cpeekc.s +37 -0
- package/src/platforms/nes/lib/cc65-src/cpeekcolor.s +8 -0
- package/src/platforms/nes/lib/cc65-src/cpeekrevers.s +37 -0
- package/src/platforms/nes/lib/cc65-src/cputc.s +95 -0
- package/src/platforms/nes/lib/cc65-src/crt0.s +180 -0
- package/src/platforms/nes/lib/cc65-src/cvline.s +31 -0
- package/src/platforms/nes/lib/cc65-src/get_tv.s +37 -0
- package/src/platforms/nes/lib/cc65-src/gotox.s +21 -0
- package/src/platforms/nes/lib/cc65-src/gotoxy.s +22 -0
- package/src/platforms/nes/lib/cc65-src/gotoy.s +22 -0
- package/src/platforms/nes/lib/cc65-src/irq.s +19 -0
- package/src/platforms/nes/lib/cc65-src/joy/nes-stdjoy.s +102 -0
- package/src/platforms/nes/lib/cc65-src/joy_stat_stddrv.s +14 -0
- package/src/platforms/nes/lib/cc65-src/libref.s +9 -0
- package/src/platforms/nes/lib/cc65-src/mainargs.s +24 -0
- package/src/platforms/nes/lib/cc65-src/neschar.s +4616 -0
- package/src/platforms/nes/lib/cc65-src/ppu.s +158 -0
- package/src/platforms/nes/lib/cc65-src/ppubuf.s +117 -0
- package/src/platforms/nes/lib/cc65-src/randomize.s +18 -0
- package/src/platforms/nes/lib/cc65-src/revers.s +27 -0
- package/src/platforms/nes/lib/cc65-src/setcursor.s +37 -0
- package/src/platforms/nes/lib/cc65-src/sysuname.s +39 -0
- package/src/platforms/nes/lib/cc65-src/tgi/nes-64-56-2.s +480 -0
- package/src/platforms/nes/lib/cc65-src/tgi_stat_stddrv.s +14 -0
- package/src/platforms/nes/lib/cc65-src/tgi_stddrv.s +13 -0
- package/src/platforms/nes/lib/cc65-src/waitvsync.s +18 -0
- package/src/platforms/nes/lib/cc65-src/wherex.s +19 -0
- package/src/platforms/nes/lib/cc65-src/wherey.s +19 -0
- package/src/platforms/nes/lib/clear_nametable.s +38 -0
- package/src/platforms/nes/lib/clear_oam.s +18 -0
- package/src/platforms/nes/lib/load_palette.s +31 -0
- package/src/platforms/nes/lib/nmi_safe.s +65 -0
- package/src/platforms/nes/lib/oam_dma.s +16 -0
- package/src/platforms/nes/lib/read_pad.s +46 -0
- package/src/platforms/nes/lib/reset.s +46 -0
- package/src/platforms/nes/lib/sprite_table_populate.s +75 -0
- package/src/platforms/nes/lib/wait_vblank.s +12 -0
- package/src/platforms/nes/palette.js +39 -0
- package/src/platforms/nes/ppu.js +372 -0
- package/src/platforms/sms/MENTAL_MODEL.md +267 -0
- package/src/platforms/sms/TROUBLESHOOTING.md +124 -0
- package/src/platforms/sms/UPSTREAM_SOURCES.md +29 -0
- package/src/platforms/sms/image-to-tilemap.js +260 -0
- package/src/platforms/sms/lib/README.md +117 -0
- package/src/platforms/sms/lib/c/joypad_read.c +33 -0
- package/src/platforms/sms/lib/c/load_palette.c +24 -0
- package/src/platforms/sms/lib/c/load_tiles.c +32 -0
- package/src/platforms/sms/lib/c/sms_crt0.s +101 -0
- package/src/platforms/sms/lib/c/sms_hw.h +53 -0
- package/src/platforms/sms/lib/c/sms_music.c +178 -0
- package/src/platforms/sms/lib/c/sms_music.h +50 -0
- package/src/platforms/sms/lib/c/sms_sfx.c +82 -0
- package/src/platforms/sms/lib/c/sms_sfx.h +40 -0
- package/src/platforms/sms/lib/c/sprite_table.c +60 -0
- package/src/platforms/sms/lib/c/vblank_wait.c +10 -0
- package/src/platforms/sms/lib/c/vdp_init.c +58 -0
- package/src/platforms/sms/lib/header.s +33 -0
- package/src/platforms/sms/lib/joypad_read.s +40 -0
- package/src/platforms/sms/lib/load_palette.s +30 -0
- package/src/platforms/sms/lib/load_tiles.s +50 -0
- package/src/platforms/sms/lib/sprite_table.s +44 -0
- package/src/platforms/sms/lib/vblank_wait.s +36 -0
- package/src/platforms/sms/lib/vdp_init.s +47 -0
- package/src/platforms/sms/vdp.js +530 -0
- package/src/platforms/snes/MENTAL_MODEL.md +275 -0
- package/src/platforms/snes/TROUBLESHOOTING.md +208 -0
- package/src/platforms/snes/UPSTREAM_SOURCES.md +50 -0
- package/src/platforms/snes/brr.js +208 -0
- package/src/platforms/snes/image-to-tilemap.js +227 -0
- package/src/platforms/snes/lib/audio/apu_blob.asm +228 -0
- package/src/platforms/snes/lib/audio/apu_blob.bin +0 -0
- package/src/platforms/snes/lib/audio/explosion.brr +0 -0
- package/src/platforms/snes/lib/audio/sample_bank.bin +0 -0
- package/src/platforms/snes/lib/audio/shoot.brr +0 -0
- package/src/platforms/snes/lib/audio/spc_driver.asm +241 -0
- package/src/platforms/snes/lib/audio_pipeline.asm +62 -0
- package/src/platforms/snes/lib/c/crt0.asm +125 -0
- package/src/platforms/snes/lib/c/hdr.asm +50 -0
- package/src/platforms/snes/lib/c/snes_sfx.c +116 -0
- package/src/platforms/snes/lib/c/snes_sfx.h +96 -0
- package/src/platforms/snes/lib/c/snes_sfx_data.asm +25 -0
- package/src/platforms/snes/lib/cgram_upload.asm +43 -0
- package/src/platforms/snes/lib/lorom_header.asm +47 -0
- package/src/platforms/snes/lib/lorom_multibank.asm +66 -0
- package/src/platforms/snes/lib/nmi_safe.asm +77 -0
- package/src/platforms/snes/lib/oam_upload.asm +45 -0
- package/src/platforms/snes/lib/pad_read.asm +64 -0
- package/src/platforms/snes/lib/pvsneslib/LICENSE +21 -0
- package/src/platforms/snes/lib/pvsneslib/include/ctype.h +6 -0
- package/src/platforms/snes/lib/pvsneslib/include/float.h +4 -0
- package/src/platforms/snes/lib/pvsneslib/include/hdr.asm +47 -0
- package/src/platforms/snes/lib/pvsneslib/include/limits.h +13 -0
- package/src/platforms/snes/lib/pvsneslib/include/math.h +10 -0
- package/src/platforms/snes/lib/pvsneslib/include/setjmp.h +4 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/background.h +396 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/console.h +188 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/dma.h +381 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/input.h +289 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/interrupt.h +264 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/libversion.h +10 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/lzss.h +43 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/map.h +113 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/object.h +234 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/pixel.h +53 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/scores.h +66 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/snestypes.h +65 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/sound.h +245 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/sprite.h +456 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes/video.h +465 -0
- package/src/platforms/snes/lib/pvsneslib/include/snes.h +190 -0
- package/src/platforms/snes/lib/pvsneslib/include/stdarg.h +28 -0
- package/src/platforms/snes/lib/pvsneslib/include/stdbool.h +53 -0
- package/src/platforms/snes/lib/pvsneslib/include/stddef.h +27 -0
- package/src/platforms/snes/lib/pvsneslib/include/stdint.h +7 -0
- package/src/platforms/snes/lib/pvsneslib/include/stdio.h +9 -0
- package/src/platforms/snes/lib/pvsneslib/include/stdlib.h +13 -0
- package/src/platforms/snes/lib/pvsneslib/include/string.h +19 -0
- package/src/platforms/snes/lib/pvsneslib/include/strings.h +5 -0
- package/src/platforms/snes/lib/pvsneslib/source/Makefile +87 -0
- package/src/platforms/snes/lib/pvsneslib/source/backgrounds.asm +834 -0
- package/src/platforms/snes/lib/pvsneslib/source/consoles.asm +1028 -0
- package/src/platforms/snes/lib/pvsneslib/source/crt0_snes.asm +329 -0
- package/src/platforms/snes/lib/pvsneslib/source/dmas.asm +1275 -0
- package/src/platforms/snes/lib/pvsneslib/source/hdr.asm +56 -0
- package/src/platforms/snes/lib/pvsneslib/source/input.asm +445 -0
- package/src/platforms/snes/lib/pvsneslib/source/libc.asm +485 -0
- package/src/platforms/snes/lib/pvsneslib/source/libc_c.c +1214 -0
- package/src/platforms/snes/lib/pvsneslib/source/libm.asm +510 -0
- package/src/platforms/snes/lib/pvsneslib/source/libtcc.asm +374 -0
- package/src/platforms/snes/lib/pvsneslib/source/lzsss.asm +256 -0
- package/src/platforms/snes/lib/pvsneslib/source/maps.asm +1078 -0
- package/src/platforms/snes/lib/pvsneslib/source/objects.asm +2881 -0
- package/src/platforms/snes/lib/pvsneslib/source/scores.asm +226 -0
- package/src/platforms/snes/lib/pvsneslib/source/sm_spc.asm +187 -0
- package/src/platforms/snes/lib/pvsneslib/source/snesmodwla.asm +1186 -0
- package/src/platforms/snes/lib/pvsneslib/source/sounds.asm +273 -0
- package/src/platforms/snes/lib/pvsneslib/source/sprites.asm +3946 -0
- package/src/platforms/snes/lib/pvsneslib/source/vblank.asm +917 -0
- package/src/platforms/snes/lib/pvsneslib/source/videos.asm +1137 -0
- package/src/platforms/snes/lib/reset_init.asm +31 -0
- package/src/platforms/snes/lib/sprite_table_populate.asm +122 -0
- package/src/platforms/snes/lib/vram_dma_upload.asm +42 -0
- package/src/platforms/snes/ppu.js +606 -0
- package/src/playtest/playtest.js +612 -0
- package/src/rom-id/identifier.js +421 -0
- package/src/rom-id/patch.js +217 -0
- package/src/toolchains/_worker/pool.js +253 -0
- package/src/toolchains/_worker/run.js +78 -0
- package/src/toolchains/_worker/wasm-worker.js +233 -0
- package/src/toolchains/arm-none-eabi-gcc/gcc.js +208 -0
- package/src/toolchains/asar/asar.js +542 -0
- package/src/toolchains/assemble-snippet.js +256 -0
- package/src/toolchains/cc65/cc65.js +395 -0
- package/src/toolchains/cc65/da65.js +119 -0
- package/src/toolchains/cc65/dbgparse.js +274 -0
- package/src/toolchains/cc65/preset-resolver.js +59 -0
- package/src/toolchains/cc65/presets/nes/chr-ram-runtime.cfg +79 -0
- package/src/toolchains/cc65/presets/nes/chr-ram-runtime.crt0.s +178 -0
- package/src/toolchains/cc65/presets/nes/chr-ram.cfg +76 -0
- package/src/toolchains/cc65/presets/nes/chr-ram.crt0.s +106 -0
- package/src/toolchains/common/ar.js +121 -0
- package/src/toolchains/common/sdk-cache.js +116 -0
- package/src/toolchains/common/symbols.js +139 -0
- package/src/toolchains/dasm/dasm.js +96 -0
- package/src/toolchains/gba-c/gba-c.js +832 -0
- package/src/toolchains/genesis-c/README.md +61 -0
- package/src/toolchains/genesis-c/genesis-c.js +598 -0
- package/src/toolchains/index.js +727 -0
- package/src/toolchains/m68k-elf-gcc/gcc.js +220 -0
- package/src/toolchains/m68kdasm.js +438 -0
- package/src/toolchains/parse-errors.js +258 -0
- package/src/toolchains/registry.js +67 -0
- package/src/toolchains/rgbds/rgbds.js +144 -0
- package/src/toolchains/sdcc/preflight-lint.js +295 -0
- package/src/toolchains/sdcc/sdcc.js +519 -0
- package/src/toolchains/sjasm/sjasm.js +85 -0
- package/src/toolchains/sm83dasm.js +194 -0
- package/src/toolchains/snes-c/snes-c.js +409 -0
- package/src/toolchains/tcc816/tcc816.js +79 -0
- package/src/toolchains/vasm68k/vasm68k.js +138 -0
- package/src/toolchains/wladx/wladx.js +120 -0
- package/src/toolchains/z80dasm.js +303 -0
|
@@ -0,0 +1,727 @@
|
|
|
1
|
+
// Toolchain dispatcher: build a project for a given platform using the right
|
|
2
|
+
// bundled assembler/compiler.
|
|
3
|
+
|
|
4
|
+
import { runDasm } from "./dasm/dasm.js";
|
|
5
|
+
import { buildC, buildAsm } from "./cc65/cc65.js";
|
|
6
|
+
import { runAsar } from "./asar/asar.js";
|
|
7
|
+
import { runVasm68k } from "./vasm68k/vasm68k.js";
|
|
8
|
+
import { finalizeGenesisRom } from "./genesis-c/genesis-c.js";
|
|
9
|
+
import { buildGB, runRgbfix } from "./rgbds/rgbds.js";
|
|
10
|
+
import { buildZ80C, SDCC_PORTS } from "./sdcc/sdcc.js";
|
|
11
|
+
import { parseBuildLog } from "./parse-errors.js";
|
|
12
|
+
|
|
13
|
+
/** Map our platform ids to cc65 target ids. */
|
|
14
|
+
const CC65_TARGET = {
|
|
15
|
+
nes: "nes",
|
|
16
|
+
c64: "c64",
|
|
17
|
+
atari7800: "atari7800",
|
|
18
|
+
lynx: "lynx",
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* (platform, language) → toolchain dispatch.
|
|
23
|
+
*
|
|
24
|
+
* `language` is optional on buildSource; each platform has a documented
|
|
25
|
+
* default (see PLATFORM_DEFAULT_LANGUAGE). Defaults reflect the best
|
|
26
|
+
* choice for vibe-coding: smallest toolchain footprint, fastest build,
|
|
27
|
+
* highest LLM fluency. Picky users override via `language: "c"` etc.
|
|
28
|
+
*
|
|
29
|
+
* Adding a new language for a platform = add a row here + ship the
|
|
30
|
+
* toolchain wasm. The `available: false` entries declare future
|
|
31
|
+
* intent but don't yet ship a toolchain — listPlatforms surfaces them
|
|
32
|
+
* so the discoverability story is honest.
|
|
33
|
+
*
|
|
34
|
+
* @type {Record<string, Record<string, { toolchain: string, available: boolean, note?: string }>>}
|
|
35
|
+
*/
|
|
36
|
+
const LANGUAGE_TOOLCHAIN = {
|
|
37
|
+
atari2600: {
|
|
38
|
+
asm: { toolchain: "dasm", available: true },
|
|
39
|
+
basic: { toolchain: "batariBasic", available: false, note: "BASIC for 2600 via batariBasic — not bundled. bB's transpiler is written in Perl, which we don't ship as WASM. A port to C or JS would be a multi-day project. For now, write 2600 games in 6507 asm via dasm — the bundled scaffolds (default, paddle, single_screen) show the canonical race-the-beam pattern, and an LLM agent writes 2600 asm fluently." },
|
|
40
|
+
},
|
|
41
|
+
nes: {
|
|
42
|
+
asm: { toolchain: "cc65", available: true },
|
|
43
|
+
c: { toolchain: "cc65", available: true },
|
|
44
|
+
},
|
|
45
|
+
c64: {
|
|
46
|
+
c: { toolchain: "cc65", available: true },
|
|
47
|
+
asm: { toolchain: "cc65", available: true },
|
|
48
|
+
},
|
|
49
|
+
atari7800: {
|
|
50
|
+
c: { toolchain: "cc65", available: true },
|
|
51
|
+
asm: { toolchain: "cc65", available: true },
|
|
52
|
+
},
|
|
53
|
+
lynx: {
|
|
54
|
+
c: { toolchain: "cc65", available: true },
|
|
55
|
+
asm: { toolchain: "cc65", available: true },
|
|
56
|
+
},
|
|
57
|
+
gb: {
|
|
58
|
+
asm: { toolchain: "rgbds", available: true },
|
|
59
|
+
c: { toolchain: "sdcc", available: true, note: "C for GB via SDCC's sm83 port (GBDK-style)" },
|
|
60
|
+
},
|
|
61
|
+
gbc: {
|
|
62
|
+
asm: { toolchain: "rgbds", available: true },
|
|
63
|
+
c: { toolchain: "sdcc", available: true, note: "C for GBC via SDCC's sm83 port (GBDK-style)" },
|
|
64
|
+
},
|
|
65
|
+
snes: {
|
|
66
|
+
asm: { toolchain: "asar", available: true },
|
|
67
|
+
c: { toolchain: "tcc816+wladx", available: true, note: "C for SNES via tcc-65816 + wla-65816 + wlalink (R15). Minimum-viable runtime — bare main() compiles. No PVSnesLib helpers (console, sprites) bundled yet." },
|
|
68
|
+
},
|
|
69
|
+
genesis: {
|
|
70
|
+
asm: { toolchain: "vasm68k", available: true },
|
|
71
|
+
c: { toolchain: "m68k-elf-gcc", available: true, note: "C for Genesis via gcc 14.2.0 + binutils + newlib, all compiled to WASM (R20). Minimum-viable runtime — bare main() works. SGDK helpers (sprite engine, VDP, sound) pending bundling." },
|
|
72
|
+
},
|
|
73
|
+
gba: {
|
|
74
|
+
c: { toolchain: "arm-none-eabi-gcc", available: true, note: "C for GBA via gcc 14.2.0 + binutils + newlib + libtonc 1.4.5 (default) OR libgba 0.5.4 (opt-in via runtime:\"libgba\"), all compiled to WASM (R24 + R28). #include <tonc.h> + tte_write/tte_printf works out of the box — that's the canonical Tonc-tutorial API every published GBA C resource uses. Caveat: tte_iohook (libtonc) and console.c (libgba) — the libsysbase-backed iprintf bridges — are NOT bundled. Use tte_printf directly, which is what the Tonc tutorial actually does." },
|
|
75
|
+
},
|
|
76
|
+
sms: { c: { toolchain: "sdcc", available: true }, asm: { toolchain: "sdcc", available: true } },
|
|
77
|
+
gg: { c: { toolchain: "sdcc", available: true }, asm: { toolchain: "sdcc", available: true } },
|
|
78
|
+
spc700: { asm: { toolchain: "asar", available: true } },
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Default language per platform. The choice reflects what's fastest /
|
|
83
|
+
* smallest / best-matched to LLM fluency, NOT "what's friendliest to
|
|
84
|
+
* humans." Most platforms default to asm because LLMs write retro asm
|
|
85
|
+
* fluently and the resulting binaries are smaller + faster to build.
|
|
86
|
+
* cc65-targeted platforms default to C because cc65 was originally a
|
|
87
|
+
* C compiler and the C path is the canonical workflow there.
|
|
88
|
+
*
|
|
89
|
+
* @type {Record<string, string>}
|
|
90
|
+
*/
|
|
91
|
+
const PLATFORM_DEFAULT_LANGUAGE = {
|
|
92
|
+
atari2600: "asm",
|
|
93
|
+
nes: "c",
|
|
94
|
+
c64: "c",
|
|
95
|
+
atari7800: "c",
|
|
96
|
+
lynx: "c",
|
|
97
|
+
gb: "c",
|
|
98
|
+
gbc: "c",
|
|
99
|
+
snes: "asm",
|
|
100
|
+
genesis: "asm",
|
|
101
|
+
gba: "c",
|
|
102
|
+
sms: "c",
|
|
103
|
+
gg: "c",
|
|
104
|
+
spc700: "asm",
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Public API for the platforms tool to discover the language matrix.
|
|
109
|
+
* Returns `{defaultLanguage, languages: [{language, toolchain, available, note?}]}`.
|
|
110
|
+
* Returns null for platforms with no language entries (shouldn't
|
|
111
|
+
* happen for any supported platform — fallback safety).
|
|
112
|
+
*/
|
|
113
|
+
export function getLanguageOptions(platform) {
|
|
114
|
+
const langs = LANGUAGE_TOOLCHAIN[platform];
|
|
115
|
+
if (!langs) return null;
|
|
116
|
+
return {
|
|
117
|
+
defaultLanguage: PLATFORM_DEFAULT_LANGUAGE[platform] ?? Object.keys(langs)[0],
|
|
118
|
+
languages: Object.entries(langs).map(([language, info]) => ({
|
|
119
|
+
language,
|
|
120
|
+
...info,
|
|
121
|
+
})),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Per-platform ROM size for Z80 (SDCC) targets. Cores expect the binary
|
|
127
|
+
* padded to a specific size; agents shouldn't have to know this.
|
|
128
|
+
* @type {Record<string, number>}
|
|
129
|
+
*/
|
|
130
|
+
const SDCC_ROM_SIZE = {
|
|
131
|
+
sms: 32 * 1024, // Master System min cartridge size
|
|
132
|
+
gg: 32 * 1024, // Game Gear same
|
|
133
|
+
gb: 32 * 1024, // Game Boy 32 KB ROM (no MBC needed)
|
|
134
|
+
gbc: 32 * 1024,
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* @typedef {Object} BuildArgs
|
|
139
|
+
* @property {string} platform target platform id
|
|
140
|
+
* @property {string} [language] optional language override (e.g. "c", "asm", "basic"). Each platform has a documented default; only pass this when you specifically want a non-default language. Use listPlatforms() to see the matrix.
|
|
141
|
+
* @property {string} [source] main source contents (single-file shortcut)
|
|
142
|
+
* @property {Record<string, string>} [sources] multi-file project: {name: contents}.
|
|
143
|
+
* For cc65, each entry becomes its own translation unit (ca65 .o or cc65→ca65→.o).
|
|
144
|
+
* Files with .s/.asm extensions go straight to ca65; others are treated as C.
|
|
145
|
+
* @property {Record<string, string>} [includes] virtual filename → contents (for `.include`d files)
|
|
146
|
+
* @property {string[]} [options] extra toolchain flags
|
|
147
|
+
* @property {string} [linkerConfig] custom ld65 .cfg (cc65-targets only)
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* @typedef {Object} BuildResult
|
|
152
|
+
* @property {boolean} ok
|
|
153
|
+
* @property {Uint8Array | null} binary the assembled ROM (or null on failure)
|
|
154
|
+
* @property {string} listing optional listing file content
|
|
155
|
+
* @property {string} symbols optional symbol table
|
|
156
|
+
* @property {string} log compiler log (stdout+stderr merged)
|
|
157
|
+
* @property {number} exitCode
|
|
158
|
+
* @property {string} toolchain
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Fill the SNES internal checksum ($FFDE) + complement ($FFDC). The SNES
|
|
163
|
+
* has no boot-ROM gate, so this isn't needed to run on bare hardware — but
|
|
164
|
+
* emulators and flashcarts read it (some flashcarts use it to tell LoROM
|
|
165
|
+
* from HiROM), so a zeroed checksum can cause RetroArch / flashcart load
|
|
166
|
+
* failures or mapper mis-detection. Mirrors pvsneslib's snestools algorithm.
|
|
167
|
+
*
|
|
168
|
+
* Detect LoROM vs HiROM from the map-mode byte at header+$15 (bit0 set =
|
|
169
|
+
* HiROM). Header is at file $7FC0 (LoROM) or $FFC0 (HiROM); checksum fields
|
|
170
|
+
* are at header+$1C (complement) and header+$1E (checksum). Sum every byte
|
|
171
|
+
* but treat the 4 checksum bytes as $FF,$FF,$00,$00 (= the +$1FE constant),
|
|
172
|
+
* which is their value once complement=$FFFF and checksum=$0000. Assumes a
|
|
173
|
+
* power-of-2 ROM (asar/pvsneslib pad to 32KB+); skips finalize otherwise.
|
|
174
|
+
*
|
|
175
|
+
* @param {Uint8Array} bin
|
|
176
|
+
* @returns {{ bin: Uint8Array, note: string }}
|
|
177
|
+
*/
|
|
178
|
+
function finalizeSnesRom(bin) {
|
|
179
|
+
// Need at least a 32KB LoROM to have a header.
|
|
180
|
+
if (!bin || bin.length < 0x8000) return { bin, note: "too small for a SNES header — checksum skipped" };
|
|
181
|
+
// Pad to the next power of two (min 32KB). asar already pads; pvsneslib's
|
|
182
|
+
// C output does NOT (e.g. 35136 bytes), and flashcarts/emulators expect a
|
|
183
|
+
// power-of-2 image — and the simple sum-all-bytes checksum below is only
|
|
184
|
+
// correct for power-of-2 sizes. So pad first, then checksum.
|
|
185
|
+
let padNote = "";
|
|
186
|
+
if ((bin.length & (bin.length - 1)) !== 0) {
|
|
187
|
+
let target = 0x8000;
|
|
188
|
+
while (target < bin.length) target <<= 1;
|
|
189
|
+
const padded = new Uint8Array(target); // zero-filled
|
|
190
|
+
padded.set(bin);
|
|
191
|
+
padNote = ` (padded ${bin.length}→${target})`;
|
|
192
|
+
bin = padded;
|
|
193
|
+
}
|
|
194
|
+
const loHdr = 0x7FC0, hiHdr = 0xFFC0;
|
|
195
|
+
// Map-mode byte sits at header+$15. Prefer LoROM detection: read both
|
|
196
|
+
// candidates; bit0 set = HiROM. Default to LoROM (asar/pvsneslib default).
|
|
197
|
+
let hdr = loHdr;
|
|
198
|
+
const loMode = bin[loHdr + 0x15];
|
|
199
|
+
const hiMode = bin.length > hiHdr + 0x15 ? bin[hiHdr + 0x15] : undefined;
|
|
200
|
+
// If the LoROM map byte doesn't look like a valid mode (0x20/0x30) but the
|
|
201
|
+
// HiROM one does (0x21/0x31), treat as HiROM.
|
|
202
|
+
const looksLo = (loMode & 0x0F) === 0x00 || loMode === 0x20 || loMode === 0x30;
|
|
203
|
+
if (hiMode !== undefined && ((hiMode & 0x01) === 1) && !((loMode & 0x01) === 0 && looksLo)) {
|
|
204
|
+
hdr = hiHdr;
|
|
205
|
+
} else if ((loMode & 0x01) === 1) {
|
|
206
|
+
hdr = hiHdr;
|
|
207
|
+
}
|
|
208
|
+
const compOff = hdr + 0x1C; // $FFDC / $7FDC
|
|
209
|
+
const sumOff = hdr + 0x1E; // $FFDE / $7FDE
|
|
210
|
+
// Sum all bytes, counting the 4 checksum bytes as their finalized values
|
|
211
|
+
// ($FF,$FF,$00,$00) regardless of what's there now.
|
|
212
|
+
let sum = 0;
|
|
213
|
+
for (let i = 0; i < bin.length; i++) {
|
|
214
|
+
if (i >= compOff && i < compOff + 4) continue; // skip the 4 cksum bytes
|
|
215
|
+
sum = (sum + bin[i]) & 0xFFFF;
|
|
216
|
+
}
|
|
217
|
+
sum = (sum + 0x1FE) & 0xFFFF; // = 0xFF+0xFF+0x00+0x00 for the skipped bytes
|
|
218
|
+
const comp = sum ^ 0xFFFF;
|
|
219
|
+
bin[compOff] = comp & 0xFF;
|
|
220
|
+
bin[compOff + 1] = (comp >> 8) & 0xFF;
|
|
221
|
+
bin[sumOff] = sum & 0xFF;
|
|
222
|
+
bin[sumOff + 1] = (sum >> 8) & 0xFF;
|
|
223
|
+
return { bin, note: `SNES checksum ${sum.toString(16).toUpperCase().padStart(4,"0")} written (${hdr === hiHdr ? "HiROM" : "LoROM"} header @ $${hdr.toString(16).toUpperCase()})${padNote}` };
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* @param {BuildArgs} args
|
|
228
|
+
* @returns {Promise<BuildResult>}
|
|
229
|
+
*/
|
|
230
|
+
export async function buildForPlatform(args) {
|
|
231
|
+
// ---- language axis: validate before dispatching to toolchain ----
|
|
232
|
+
// Optional. When omitted, falls through to the existing per-platform
|
|
233
|
+
// dispatch (which has its own source-content heuristic for cc65).
|
|
234
|
+
// When specified, we check that the (platform, language) pair is
|
|
235
|
+
// supported AND available; reject with a structured error if not.
|
|
236
|
+
if (args.language) {
|
|
237
|
+
const langs = LANGUAGE_TOOLCHAIN[args.platform];
|
|
238
|
+
const entry = langs?.[args.language];
|
|
239
|
+
if (!entry) {
|
|
240
|
+
const available = langs ? Object.keys(langs) : [];
|
|
241
|
+
throw new Error(
|
|
242
|
+
`language '${args.language}' not supported for platform '${args.platform}'. ` +
|
|
243
|
+
`Supported: ${available.join(", ") || "(none)"}. ` +
|
|
244
|
+
`Call listPlatforms() to see the full matrix.`
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
if (!entry.available) {
|
|
248
|
+
throw new Error(
|
|
249
|
+
`language '${args.language}' for platform '${args.platform}' is planned but not yet bundled. ` +
|
|
250
|
+
`${entry.note ?? ""} ` +
|
|
251
|
+
`Default for this platform is '${PLATFORM_DEFAULT_LANGUAGE[args.platform]}'; omit the language parameter to use it.`
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
// entry.available === true — continue with existing dispatch.
|
|
255
|
+
// The dispatch is keyed on platform alone today; future expansion
|
|
256
|
+
// would route within a platform by language. For now the asserted
|
|
257
|
+
// language matches what the platform's single toolchain produces,
|
|
258
|
+
// so we proceed unchanged.
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if (args.platform === "atari2600") {
|
|
262
|
+
const r = await runDasm({
|
|
263
|
+
source: args.source,
|
|
264
|
+
includes: args.includes,
|
|
265
|
+
options: args.options,
|
|
266
|
+
outputFormat: "f3",
|
|
267
|
+
});
|
|
268
|
+
return {
|
|
269
|
+
ok: r.exitCode === 0 && r.binary !== null,
|
|
270
|
+
binary: r.binary,
|
|
271
|
+
listing: r.listing,
|
|
272
|
+
symbols: r.symbols,
|
|
273
|
+
log: r.log,
|
|
274
|
+
issues: parseBuildLog(r.log),
|
|
275
|
+
exitCode: r.exitCode,
|
|
276
|
+
toolchain: "dasm",
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const cc65Target = CC65_TARGET[args.platform];
|
|
281
|
+
if (cc65Target) {
|
|
282
|
+
// For multi-file projects, route by extension. If even one source has a
|
|
283
|
+
// C-looking name (.c / .h) we use buildC (which can mix .c and .s files);
|
|
284
|
+
// otherwise everything goes through buildAsm.
|
|
285
|
+
/** @type {Record<string, string>} */
|
|
286
|
+
let sources = args.sources;
|
|
287
|
+
if (!sources) {
|
|
288
|
+
// single-source: route by heuristic on the contents
|
|
289
|
+
const looksLikeAsm = /^\s*\.(segment|proc|byte|word|repeat|res|setcpu|export|import|zeropage|code|macro|include)\b/m.test(args.source);
|
|
290
|
+
const looksLikeC = !looksLikeAsm && /\b(int|void|return|#include|main\s*\()/.test(args.source);
|
|
291
|
+
sources = { [looksLikeC ? "main.c" : "main.s"]: args.source };
|
|
292
|
+
}
|
|
293
|
+
const anyC = Object.keys(sources).some((n) => /\.(c|h)$/i.test(n));
|
|
294
|
+
|
|
295
|
+
// Resolve preset linkerConfig (e.g. "chr-ram") into the actual .cfg
|
|
296
|
+
// contents + any companion support sources (custom crt0, etc.).
|
|
297
|
+
// Caller passes either a preset name or the .cfg contents directly;
|
|
298
|
+
// the build pipeline does NOT auto-select presets based on source
|
|
299
|
+
// contents — every byte that compiles must be visible to the caller.
|
|
300
|
+
const { resolveLinkerConfig } = await import("./cc65/preset-resolver.js");
|
|
301
|
+
const { cfg, supportSources } = await resolveLinkerConfig(args.platform, args.linkerConfig);
|
|
302
|
+
|
|
303
|
+
// Splice in any preset support sources (crt0, etc.). User sources win
|
|
304
|
+
// if there's a name collision, but the preset uses `_preset_*` so it
|
|
305
|
+
// wouldn't normally collide.
|
|
306
|
+
sources = { ...supportSources, ...sources };
|
|
307
|
+
|
|
308
|
+
const builder = anyC ? buildC : buildAsm;
|
|
309
|
+
const r = await builder({
|
|
310
|
+
sources,
|
|
311
|
+
target: cc65Target,
|
|
312
|
+
[anyC ? "headers" : "includes"]: args.includes,
|
|
313
|
+
binaryIncludes: args.binaryIncludes,
|
|
314
|
+
linkerConfig: cfg,
|
|
315
|
+
});
|
|
316
|
+
return {
|
|
317
|
+
ok: r.exitCode === 0 && r.binary !== null,
|
|
318
|
+
binary: r.binary,
|
|
319
|
+
listing: "",
|
|
320
|
+
symbols: "",
|
|
321
|
+
log: r.log,
|
|
322
|
+
issues: parseBuildLog(r.log),
|
|
323
|
+
exitCode: r.exitCode,
|
|
324
|
+
toolchain: anyC ? "cc65" : "ca65+ld65",
|
|
325
|
+
...(r.ramUsage ? { ramUsage: r.ramUsage } : {}),
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if (args.platform === "gb" || args.platform === "gbc") {
|
|
330
|
+
// Default is C (sdcc sm83 port) — matches how LLMs naturally think
|
|
331
|
+
// about game logic, same default we use on NES/SMS. Pass
|
|
332
|
+
// `language:"asm"` to route through RGBDS for hand-tuned binaries.
|
|
333
|
+
// C-mode requires the sm83 SDCC port libs (share/sdcc/lib/sm83/*)
|
|
334
|
+
// — built by scripts/build-sdcc.sh.
|
|
335
|
+
if (args.language === "asm") {
|
|
336
|
+
const r = await buildGB({
|
|
337
|
+
source: args.source,
|
|
338
|
+
includes: args.includes,
|
|
339
|
+
});
|
|
340
|
+
return {
|
|
341
|
+
ok: r.exitCode === 0 && r.binary !== null,
|
|
342
|
+
binary: r.binary,
|
|
343
|
+
listing: "",
|
|
344
|
+
symbols: "",
|
|
345
|
+
log: r.log,
|
|
346
|
+
issues: parseBuildLog(r.log),
|
|
347
|
+
exitCode: r.exitCode,
|
|
348
|
+
toolchain: "rgbds",
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
// language === "c" or undefined → fall through to the sdcc dispatch
|
|
352
|
+
// below (SDCC_PORTS["gb"] = sm83 port).
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
if (args.platform === "gba") {
|
|
356
|
+
// R24 + R28: language:"c" routes through the arm-none-eabi gcc +
|
|
357
|
+
// binutils WASM toolchain (cc1-arm → as → ld → objcopy). Three
|
|
358
|
+
// runtime modes:
|
|
359
|
+
// - "libtonc" (default) — Tonc tutorial-aligned. `#include <tonc.h>`,
|
|
360
|
+
// TTE for text, tonccpy/toncset, OBJ_ATTR sprite API.
|
|
361
|
+
// - "libgba" — devkitPro's official SDK. `#include <gba.h>`.
|
|
362
|
+
// - "none" — bare gcc + newlib only.
|
|
363
|
+
// Legacy `libgba: true|false` flag still accepted for R24 callers.
|
|
364
|
+
// language defaults to "c" since no asm path is wired yet — saves
|
|
365
|
+
// every caller from having to spell it out.
|
|
366
|
+
if (args.language === "c" || args.language == null) {
|
|
367
|
+
const { buildGbaC } = await import("./gba-c/gba-c.js");
|
|
368
|
+
const r = await buildGbaC({
|
|
369
|
+
source: args.source,
|
|
370
|
+
sources: args.sources,
|
|
371
|
+
headers: args.includes,
|
|
372
|
+
binaryIncludes: args.binaryIncludes, // R34 — soundbank.bin et al.
|
|
373
|
+
runtime: args.runtime, // explicit wins
|
|
374
|
+
libgba: args.libgba, // legacy R24 flag (undef passes through)
|
|
375
|
+
maxmod: args.maxmod, // R33 — opt-in maxmod music link
|
|
376
|
+
rebuildSdk: args.rebuildSdk, // compile SDK from source vs seed
|
|
377
|
+
});
|
|
378
|
+
return {
|
|
379
|
+
ok: r.ok,
|
|
380
|
+
binary: r.binary,
|
|
381
|
+
listing: "",
|
|
382
|
+
symbols: "",
|
|
383
|
+
log: r.log,
|
|
384
|
+
issues: parseBuildLog(r.log),
|
|
385
|
+
exitCode: r.exitCode,
|
|
386
|
+
toolchain: "arm-none-eabi-gcc",
|
|
387
|
+
stage: r.stage,
|
|
388
|
+
...(r.crash ? { crash: r.crash } : {}),
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
// GBA without language:"c" — no asm fallback yet; surface the error
|
|
392
|
+
throw new Error("gba: only language:\"c\" supported today; asm path not yet wired");
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
if (args.platform === "genesis") {
|
|
396
|
+
// R20: language:"c" routes through the m68k-elf gcc + binutils WASM
|
|
397
|
+
// toolchain (cc1 → as → ld → objcopy) with our minimum-viable sega.s
|
|
398
|
+
// crt0 + genesis.ld linker script. Bare `int main(void)` produces a
|
|
399
|
+
// runnable Genesis ROM. SGDK runtime helpers (sprite engine, VDP,
|
|
400
|
+
// sound) follow in stage 3 of R20.
|
|
401
|
+
if (args.language === "c") {
|
|
402
|
+
const { buildGenesisC } = await import("./genesis-c/genesis-c.js");
|
|
403
|
+
const r = await buildGenesisC({
|
|
404
|
+
source: args.source,
|
|
405
|
+
sources: args.sources,
|
|
406
|
+
headers: args.includes,
|
|
407
|
+
// R42: binaryIncludes lets data.s siblings .incbin music/sample
|
|
408
|
+
// blobs (e.g. demo.xgc for XGM2) without going through rescomp.
|
|
409
|
+
binaryIncludes: args.binaryIncludes,
|
|
410
|
+
// Default: link against bundled SGDK runtime. Pass sgdk:false in
|
|
411
|
+
// `options` for the bare-gcc minimum-viable path.
|
|
412
|
+
sgdk: args.sgdk !== false,
|
|
413
|
+
rebuildSdk: args.rebuildSdk, // compile SGDK from source vs seed
|
|
414
|
+
});
|
|
415
|
+
return {
|
|
416
|
+
ok: r.ok,
|
|
417
|
+
// Finalize like SGDK's makefile (pad to 128KB boundary, min 512KB,
|
|
418
|
+
// fix the $18E checksum) so the ROM loads on strict cores
|
|
419
|
+
// (RetroArch Genesis Plus GX / BlastEm) and flashcarts.
|
|
420
|
+
binary: r.ok && r.binary ? finalizeGenesisRom(r.binary) : r.binary,
|
|
421
|
+
listing: "",
|
|
422
|
+
symbols: "",
|
|
423
|
+
log: r.log,
|
|
424
|
+
issues: parseBuildLog(r.log),
|
|
425
|
+
exitCode: r.exitCode,
|
|
426
|
+
toolchain: "m68k-elf-gcc",
|
|
427
|
+
stage: r.stage,
|
|
428
|
+
...(r.crash ? { crash: r.crash } : {}),
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// Default (language:"asm" or undefined): vasm68k path.
|
|
433
|
+
// vasm68k is single-source. Accept either `source` (preferred) or
|
|
434
|
+
// `sources` (multi-file shortcut) — when given the latter, pick a
|
|
435
|
+
// canonical entry-point and write the rest into includes so the
|
|
436
|
+
// entry can `incsrc "other.s"` them.
|
|
437
|
+
//
|
|
438
|
+
// Without this resolution, passing `sources` left args.source as
|
|
439
|
+
// undefined, which crashed Emscripten with "Unsupported data type"
|
|
440
|
+
// when MEMFS.writeFile got handed undefined.
|
|
441
|
+
let source = args.source;
|
|
442
|
+
let extraIncludes = {};
|
|
443
|
+
if (!source && args.sources) {
|
|
444
|
+
const entries = Object.entries(args.sources);
|
|
445
|
+
if (entries.length === 0) throw new Error("vasm68k: sources is empty");
|
|
446
|
+
// Pick main.s if present, else first key.
|
|
447
|
+
const mainKey = args.sources["main.s"] != null ? "main.s" : entries[0][0];
|
|
448
|
+
source = args.sources[mainKey];
|
|
449
|
+
// Stage the others as text includes so the agent can `incsrc` them.
|
|
450
|
+
for (const [name, content] of entries) {
|
|
451
|
+
if (name !== mainKey) extraIncludes[name] = content;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
if (!source) {
|
|
455
|
+
throw new Error("vasm68k requires `source` or `sources` with at least one entry");
|
|
456
|
+
}
|
|
457
|
+
const r = await runVasm68k({
|
|
458
|
+
source,
|
|
459
|
+
includes: { ...(args.includes ?? {}), ...extraIncludes },
|
|
460
|
+
binaryIncludes: args.binaryIncludes,
|
|
461
|
+
options: args.options,
|
|
462
|
+
});
|
|
463
|
+
const vasmOk = r.exitCode === 0 && r.binary !== null;
|
|
464
|
+
return {
|
|
465
|
+
ok: vasmOk,
|
|
466
|
+
// Same SGDK-style finalize (pad + $18E checksum) for hand-written
|
|
467
|
+
// asm ROMs — they hit the exact same strict-core load failure.
|
|
468
|
+
binary: vasmOk && r.binary ? finalizeGenesisRom(r.binary) : r.binary,
|
|
469
|
+
listing: "",
|
|
470
|
+
symbols: "",
|
|
471
|
+
log: r.log,
|
|
472
|
+
issues: parseBuildLog(r.log),
|
|
473
|
+
exitCode: r.exitCode,
|
|
474
|
+
toolchain: "vasm68k",
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
// SPC700: same asar WASM, but produce a flat raw binary (no SNES header,
|
|
479
|
+
// no 256KB ROM padding). Lets agents author standalone SPC programs as
|
|
480
|
+
// separate inputs that get .incbin'd into a SNES main.asm.
|
|
481
|
+
if (args.platform === "spc700") {
|
|
482
|
+
const r = await runAsar({
|
|
483
|
+
source: args.source,
|
|
484
|
+
includes: args.includes,
|
|
485
|
+
binaryIncludes: args.binaryIncludes,
|
|
486
|
+
options: args.options,
|
|
487
|
+
flatBinary: true,
|
|
488
|
+
});
|
|
489
|
+
const ok = r.exitCode === 0 && r.binary !== null && r.binary.length > 0;
|
|
490
|
+
let issues = parseBuildLog(r.log);
|
|
491
|
+
if (!ok && issues.length === 0) {
|
|
492
|
+
issues = [{
|
|
493
|
+
severity: "error",
|
|
494
|
+
stage: "asar",
|
|
495
|
+
message: r.log.trim() ||
|
|
496
|
+
`asar (spc700 mode) failed with exit code ${r.exitCode} and no diagnostic. ` +
|
|
497
|
+
`Make sure your source starts with \`arch spc700\` and an \`org $XXXX\` directive.`,
|
|
498
|
+
}];
|
|
499
|
+
}
|
|
500
|
+
return {
|
|
501
|
+
ok,
|
|
502
|
+
binary: r.binary,
|
|
503
|
+
listing: "",
|
|
504
|
+
symbols: "",
|
|
505
|
+
log: r.log,
|
|
506
|
+
issues,
|
|
507
|
+
exitCode: r.exitCode,
|
|
508
|
+
toolchain: "asar-spc700",
|
|
509
|
+
flatStartOffset: r.flatStartOffset ?? 0,
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
if (args.platform === "snes") {
|
|
514
|
+
// R15: language:"c" routes through the tcc-65816 + wla-65816 + wlalink
|
|
515
|
+
// pipeline, with our minimum-viable crt0 + hdr.asm bundled. Bare
|
|
516
|
+
// `int main(void) { ... }` produces a runnable 32 KB LoROM. Anything
|
|
517
|
+
// beyond that (graphics, sound, console helpers) the agent writes in
|
|
518
|
+
// C against direct SNES hardware addresses or in a sibling .asm file.
|
|
519
|
+
if (args.language === "c") {
|
|
520
|
+
const { buildSnesC } = await import("./snes-c/snes-c.js");
|
|
521
|
+
const r = await buildSnesC({
|
|
522
|
+
source: args.source,
|
|
523
|
+
sources: args.sources,
|
|
524
|
+
headers: args.includes,
|
|
525
|
+
binaryIncludes: args.binaryIncludes,
|
|
526
|
+
});
|
|
527
|
+
let snesLog = r.log;
|
|
528
|
+
let snesBin = r.binary;
|
|
529
|
+
if (r.ok && snesBin) {
|
|
530
|
+
const fin = finalizeSnesRom(snesBin);
|
|
531
|
+
snesBin = fin.bin;
|
|
532
|
+
snesLog += "\n--- " + fin.note + " ---";
|
|
533
|
+
}
|
|
534
|
+
return {
|
|
535
|
+
ok: r.ok,
|
|
536
|
+
binary: snesBin,
|
|
537
|
+
listing: "",
|
|
538
|
+
symbols: "",
|
|
539
|
+
log: snesLog,
|
|
540
|
+
issues: parseBuildLog(r.log),
|
|
541
|
+
exitCode: r.exitCode,
|
|
542
|
+
toolchain: "tcc816+wladx",
|
|
543
|
+
stage: r.stage,
|
|
544
|
+
...(r.crash ? { crash: r.crash } : {}),
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
const r = await runAsar({
|
|
548
|
+
source: args.source,
|
|
549
|
+
includes: args.includes,
|
|
550
|
+
binaryIncludes: args.binaryIncludes,
|
|
551
|
+
options: args.options,
|
|
552
|
+
});
|
|
553
|
+
const ok = r.exitCode === 0 && r.binary !== null;
|
|
554
|
+
let issues = parseBuildLog(r.log);
|
|
555
|
+
// If asar failed but we couldn't parse anything useful, synthesize a
|
|
556
|
+
// catch-all issue so the caller never sees `{ok:false, issues:[]}` and
|
|
557
|
+
// has SOMETHING to act on. (asar's WASM build sometimes throws C++
|
|
558
|
+
// exceptions without writing diagnostics; see asar wrapper for detail.)
|
|
559
|
+
if (!ok && issues.length === 0) {
|
|
560
|
+
issues = [{
|
|
561
|
+
severity: "error",
|
|
562
|
+
stage: "asar",
|
|
563
|
+
message: r.log.trim() ||
|
|
564
|
+
`asar failed with exit code ${r.exitCode} but produced no diagnostic output. ` +
|
|
565
|
+
`This usually means a C++ exception (bank border, section overlap, ROM size) ` +
|
|
566
|
+
`escaped silently. Reduce the source size or move data to a different bank, ` +
|
|
567
|
+
`then bisect to isolate the offending directive.`,
|
|
568
|
+
}];
|
|
569
|
+
}
|
|
570
|
+
let asarBin = r.binary;
|
|
571
|
+
let asarLog = r.log;
|
|
572
|
+
if (ok && asarBin) {
|
|
573
|
+
const fin = finalizeSnesRom(asarBin);
|
|
574
|
+
asarBin = fin.bin;
|
|
575
|
+
asarLog += "\n--- " + fin.note + " ---";
|
|
576
|
+
}
|
|
577
|
+
return {
|
|
578
|
+
ok,
|
|
579
|
+
binary: asarBin,
|
|
580
|
+
listing: "",
|
|
581
|
+
symbols: r.symbols ?? "",
|
|
582
|
+
log: asarLog,
|
|
583
|
+
issues,
|
|
584
|
+
exitCode: r.exitCode,
|
|
585
|
+
toolchain: "asar",
|
|
586
|
+
layout: r.layout ?? null,
|
|
587
|
+
includes: r.includes ?? {},
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
// Z80 family (SMS, GG) — sdcc.
|
|
592
|
+
const sdccPort = SDCC_PORTS[args.platform];
|
|
593
|
+
if (sdccPort) {
|
|
594
|
+
const sources = args.sources ?? { "main.c": args.source };
|
|
595
|
+
// GB/GBC: _CODE goes at $0150 — the area $0000-$014F is reserved for
|
|
596
|
+
// the cartridge header + reset vectors which the custom crt0 provides.
|
|
597
|
+
const codeLoc = args.codeLoc ?? 0x0000;
|
|
598
|
+
const romSize = SDCC_ROM_SIZE[args.platform] ?? 32 * 1024;
|
|
599
|
+
|
|
600
|
+
// crt0 + headers + sources come straight from the caller. The build
|
|
601
|
+
// pipeline does NOT auto-inject platform runtimes, custom crt0s,
|
|
602
|
+
// or post-link header patches. Every byte that compiles is visible
|
|
603
|
+
// to the caller's repo. Use `createProject({platform, template})`
|
|
604
|
+
// to scaffold a self-contained project with the runtime files
|
|
605
|
+
// copied in, or call `getStarterSnippet` / `getAllStarterSnippets`
|
|
606
|
+
// to fetch individual pieces.
|
|
607
|
+
const crt0 = args.crt0;
|
|
608
|
+
|
|
609
|
+
// Pre-flight lint: scan the C sources for known SDCC C89 violations
|
|
610
|
+
// so agents see actionable warnings before SDCC's misleading parser
|
|
611
|
+
// errors. See src/platforms/gb/lib/c/SDCC_GOTCHAS.md.
|
|
612
|
+
//
|
|
613
|
+
// Pass `port` so message text says the right port — SDCC sm83 on GB/GBC,
|
|
614
|
+
// SDCC z80 on SMS/GG. Pre-r26 it always said
|
|
615
|
+
// "SDCC sm83" regardless of the actual port (a copy-paste bug).
|
|
616
|
+
const { lintSources } = await import("./sdcc/preflight-lint.js");
|
|
617
|
+
const lintIssues = lintSources(sources, { port: sdccPort.marg });
|
|
618
|
+
|
|
619
|
+
const r = await buildZ80C({
|
|
620
|
+
sources,
|
|
621
|
+
port: sdccPort.marg,
|
|
622
|
+
romSize,
|
|
623
|
+
headers: args.includes,
|
|
624
|
+
codeLoc,
|
|
625
|
+
dataLoc: args.dataLoc,
|
|
626
|
+
libraries: args.libraries,
|
|
627
|
+
crt0,
|
|
628
|
+
});
|
|
629
|
+
let binary = r.binary;
|
|
630
|
+
// GB/GBC via SDCC: the C path produces a raw .gb with an UNPATCHED
|
|
631
|
+
// header — no Nintendo logo at $0104, no header checksum at $014D. The
|
|
632
|
+
// boot ROM on real Game Boy hardware (and strict emulators) LOCKS UP on
|
|
633
|
+
// that. The asm path runs rgbfix; the C path didn't, so a C-built GB ROM
|
|
634
|
+
// ran fine in our lenient WASM gambatte but white-screened / hung on
|
|
635
|
+
// hardware. Run rgbfix here so buildSource always returns a bootable ROM.
|
|
636
|
+
// (-v = valid logo + header/global checksums; -p 0xFF = pad; -C marks a
|
|
637
|
+
// CGB-only ROM so .gbc builds set the $0143 CGB flag correctly.)
|
|
638
|
+
if (binary && r.exitCode === 0 && (args.platform === "gb" || args.platform === "gbc")) {
|
|
639
|
+
// -v: valid logo + header/global checksums. -p 0xFF: pad. -C: CGB-only
|
|
640
|
+
// ($0143=$C0) for .gbc. CRITICAL: also set the cartridge-type ($0147)
|
|
641
|
+
// and RAM-size ($0149) bytes — without -m/-r, -v leaves them at the
|
|
642
|
+
// linker's garbage pad (e.g. type $3C), and emulators/hardware reject
|
|
643
|
+
// an unknown MBC type with "retro_load_game failed". -m 0x00 = ROM ONLY
|
|
644
|
+
// (no mapper), -r 0x00 = no cart RAM — correct for these 32KB scaffolds.
|
|
645
|
+
const fixOpts = args.platform === "gbc"
|
|
646
|
+
? ["-v", "-p", "0xFF", "-C", "-m", "0x00", "-r", "0x00"]
|
|
647
|
+
: ["-v", "-p", "0xFF", "-m", "0x00", "-r", "0x00"];
|
|
648
|
+
const fix = await runRgbfix({ rom: binary, options: fixOpts });
|
|
649
|
+
if (fix.exitCode === 0 && fix.binary) {
|
|
650
|
+
binary = fix.binary;
|
|
651
|
+
// rgbfix has no "force DMG" flag — without -c/-C it leaves $0143 at
|
|
652
|
+
// whatever the linker padded ($FF here). $FF has bit 7 set, so a
|
|
653
|
+
// DMG (.gb) ROM would wrongly trip CGB mode → BGP/OBP writes ignored
|
|
654
|
+
// → white screen on a CGB-capable emulator. Force $0143 = $00 for
|
|
655
|
+
// .gb. (.gbc already got $C0 from -C.)
|
|
656
|
+
if (args.platform === "gb" && binary.length > 0x143) {
|
|
657
|
+
binary[0x143] = 0x00;
|
|
658
|
+
// $0143 is inside the header-checksum range ($0134..$014C), so
|
|
659
|
+
// recompute that 8-bit checksum at $014D after editing it.
|
|
660
|
+
let x = 0;
|
|
661
|
+
for (let i = 0x134; i <= 0x14C; i++) x = (x - binary[i] - 1) & 0xFF;
|
|
662
|
+
binary[0x14D] = x;
|
|
663
|
+
}
|
|
664
|
+
r.log += "\n--- rgbfix (auto header fix) ---\n" + (fix.log || "(ok)");
|
|
665
|
+
} else {
|
|
666
|
+
r.log += "\n--- rgbfix FAILED (header left unpatched — may not boot on hardware) ---\n" + (fix.log || "");
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
// SMS/GG: if the ROM carries a "TMR SEGA" header at $7FF0, fill its
|
|
670
|
+
// checksum word at $7FFA. The export (US/EU) SMS BIOS verifies it and
|
|
671
|
+
// shows "SOFTWARE ERROR" if it's wrong — our header.s ships a $00,$00
|
|
672
|
+
// placeholder, so a real Master System (and RetroDECK with the SMS BIOS)
|
|
673
|
+
// rejected it. Checksum = sum of bytes $0000..$7FEF (everything before
|
|
674
|
+
// the header), stored little-endian. GG BIOS doesn't check, but writing
|
|
675
|
+
// it is harmless. Only touches ROMs that actually have the header.
|
|
676
|
+
if (binary && r.exitCode === 0 && (args.platform === "sms" || args.platform === "gg") && binary.length >= 0x8000) {
|
|
677
|
+
const hdr = 0x7FF0;
|
|
678
|
+
const hasHeader = String.fromCharCode(...binary.slice(hdr, hdr + 8)) === "TMR SEGA";
|
|
679
|
+
if (!hasHeader) {
|
|
680
|
+
// No header emitted by the crt0 → write a complete TMR SEGA header
|
|
681
|
+
// into the last 16 bytes of bank 0 ($7FF0-$7FFF). Without this the
|
|
682
|
+
// export (US/EU) SMS BIOS shows "SOFTWARE ERROR" and refuses to run.
|
|
683
|
+
// $7FF0-$7FF7 "TMR SEGA"; $7FF8-$7FF9 reserved ($00); $7FFA-$7FFB
|
|
684
|
+
// checksum (filled below); $7FFC-$7FFE product code/version (zeros
|
|
685
|
+
// ok for homebrew); $7FFF region+size = $4C (region 4 = export,
|
|
686
|
+
// size $C = 32KB, the checksum range that covers $0000-$7FEF).
|
|
687
|
+
const TMR = [0x54,0x4D,0x52,0x20,0x53,0x45,0x47,0x41]; // "TMR SEGA"
|
|
688
|
+
for (let i = 0; i < 8; i++) binary[hdr + i] = TMR[i];
|
|
689
|
+
binary[hdr + 8] = 0x00; binary[hdr + 9] = 0x00; // reserved
|
|
690
|
+
binary[hdr + 12] = 0x00; binary[hdr + 13] = 0x00; // product code lo
|
|
691
|
+
binary[hdr + 14] = 0x00; // product/version
|
|
692
|
+
binary[hdr + 15] = 0x4C; // region 4 (export) + size $C (32KB)
|
|
693
|
+
}
|
|
694
|
+
// Checksum = sum of bytes $0000..$7FEF (everything before the header),
|
|
695
|
+
// stored little-endian at $7FFA. Region/size $4C declares the 32KB
|
|
696
|
+
// range, so the BIOS checksums $0000-$7FEF.
|
|
697
|
+
let sum = 0;
|
|
698
|
+
for (let i = 0; i < 0x7FF0; i++) sum = (sum + binary[i]) & 0xFFFF;
|
|
699
|
+
binary[0x7FFA] = sum & 0xFF;
|
|
700
|
+
binary[0x7FFB] = (sum >> 8) & 0xFF;
|
|
701
|
+
r.log += `\n--- SMS header ${hasHeader ? "checksum fixed" : "written + checksummed"} ($7FFA=${sum.toString(16).toUpperCase().padStart(4,"0")}, region/size=$4C) ---`;
|
|
702
|
+
}
|
|
703
|
+
// Combine lint warnings with parsed build log. Lint comes first so
|
|
704
|
+
// agents see them at the top of the issues array.
|
|
705
|
+
const buildIssues = parseBuildLog(r.log);
|
|
706
|
+
const issues = [...lintIssues, ...buildIssues];
|
|
707
|
+
return {
|
|
708
|
+
ok: r.exitCode === 0 && binary !== null,
|
|
709
|
+
binary,
|
|
710
|
+
listing: "",
|
|
711
|
+
symbols: r.map ?? "",
|
|
712
|
+
log: r.log,
|
|
713
|
+
issues,
|
|
714
|
+
exitCode: r.exitCode,
|
|
715
|
+
toolchain: "sdcc",
|
|
716
|
+
stage: r.stage,
|
|
717
|
+
failedTU: r.failedTU, // which .c/.s file killed the build (if any)
|
|
718
|
+
compiledOK: r.compiledOK, // ordered list of TUs that DID compile
|
|
719
|
+
};
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
throw new Error(
|
|
723
|
+
`no bundled toolchain for platform '${args.platform}' yet. v1 supports: atari2600 (dasm), nes/c64/atari7800/lynx (cc65), snes (asar), genesis (vasm68k), gb/gbc (rgbds), sms/gg (sdcc).`,
|
|
724
|
+
);
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
export { runDasm, buildC, buildAsm, runAsar, runVasm68k, buildGB };
|