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,917 @@
|
|
|
1
|
+
;---------------------------------------------------------------------------------
|
|
2
|
+
;
|
|
3
|
+
; Copyright (C) 2013-2024
|
|
4
|
+
; Alekmaul - DigiDwrf
|
|
5
|
+
;
|
|
6
|
+
; This software is provided 'as-is', without any express or implied
|
|
7
|
+
; warranty. In no event will the authors be held liable for any
|
|
8
|
+
; damages arising from the use of this software.
|
|
9
|
+
;
|
|
10
|
+
; Permission is granted to anyone to use this software for any
|
|
11
|
+
; purpose, including commercial applications, and to alter it and
|
|
12
|
+
; redistribute it freely, subject to the following restrictions:
|
|
13
|
+
;
|
|
14
|
+
; 1. The origin of this software must not be misrepresented; you
|
|
15
|
+
; must not claim that you wrote the original software. If you use
|
|
16
|
+
; this software in a product, an acknowledgment in the product
|
|
17
|
+
; documentation would be appreciated but is not required.
|
|
18
|
+
; 2. Altered source versions must be plainly marked as such, and
|
|
19
|
+
; must not be misrepresented as being the original software.
|
|
20
|
+
; 3. This notice may not be removed or altered from any source
|
|
21
|
+
; distribution.
|
|
22
|
+
;
|
|
23
|
+
;---------------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
; Using lowram segment (Work-RAM address $0000-$1FFF) for VBlank variables so they can be accessed with a DB of $00.
|
|
27
|
+
.BASE $00
|
|
28
|
+
.RAMSECTION ".vblank_lowram" BANK 0 SLOT 1 PRIORITY 1
|
|
29
|
+
|
|
30
|
+
vblank_flag dsb 1
|
|
31
|
+
|
|
32
|
+
nmi_handler dsb 4
|
|
33
|
+
|
|
34
|
+
lag_frame_counter dsb 2 ; Number of lag frames encountered (can be externally modified)
|
|
35
|
+
|
|
36
|
+
snes_vblank_count dsb 2 ; Incremented every VBlank interrupt
|
|
37
|
+
|
|
38
|
+
.ENDS
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
; Needed to ensure VBlank ISR is in bank zero so the 65816 can access it when a NMI interrupt occurs.
|
|
42
|
+
.BASE BASE_0
|
|
43
|
+
.SECTION ".vblank_isr" SEMIFREE ORGA $8000 BASE BASE_0 BANK 0
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
;; Scan and read the joypads
|
|
47
|
+
;;
|
|
48
|
+
;; REQUIRES: Auto-Joypad enabled.
|
|
49
|
+
;; REQUIRES: REG_WRIO bit 7 set BEFORE Vblank starts if a Multitap/Mp5 is connected.
|
|
50
|
+
;;
|
|
51
|
+
;; REQUIRES: Auto-Joypad has finished reading the controllers.
|
|
52
|
+
;; (This macro DOES NOT contain a REG_HVBJOY test/spinloop.)
|
|
53
|
+
;;
|
|
54
|
+
;; ACCU 8
|
|
55
|
+
;; INDEX 16
|
|
56
|
+
;; DB = 0
|
|
57
|
+
;; D = tcc__registers_nmi_isr (NOT ZERO)
|
|
58
|
+
.MACRO _ScanPads
|
|
59
|
+
ldy pad_keys ; copy joy states #1&2
|
|
60
|
+
sty pad_keysold
|
|
61
|
+
ldy pad_keys+2
|
|
62
|
+
sty pad_keysold+2
|
|
63
|
+
|
|
64
|
+
; The code assumes Joypad Auto-Read is not active.
|
|
65
|
+
; This is enforced by a REG_HVBJOY spinloop in the VBlank ISR.
|
|
66
|
+
|
|
67
|
+
rep #$20
|
|
68
|
+
|
|
69
|
+
lda REG_JOY1L ; read joypad register #1
|
|
70
|
+
bit #$0F ; catch non-joypad input
|
|
71
|
+
beq + ; (bits 0-3 should be zero)
|
|
72
|
+
lda.w #$0
|
|
73
|
+
+
|
|
74
|
+
sta pad_keys ; store 'current' state
|
|
75
|
+
eor pad_keysold ; compute 'down' state from bits that
|
|
76
|
+
and pad_keys ; have changed from 0 to 1
|
|
77
|
+
sta pad_keysdown ;
|
|
78
|
+
|
|
79
|
+
lda REG_JOY2L ; read joypad register #2
|
|
80
|
+
bit #$0F ; catch non-joypad input
|
|
81
|
+
beq + ; (bits 0-3 should be zero)
|
|
82
|
+
lda.w #$0
|
|
83
|
+
+
|
|
84
|
+
sta pad_keys+2 ; store 'current' state
|
|
85
|
+
eor pad_keysold+2 ; compute 'down' state from bits that
|
|
86
|
+
and pad_keys+2 ; have changed from 0 to 1
|
|
87
|
+
sta pad_keysdown+2 ;
|
|
88
|
+
|
|
89
|
+
sep #$20
|
|
90
|
+
.ENDM
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
;---------------------------------------------------------------------------------
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
;; Scan and read the last 3 controllers on a Multitap or MP5 connected to Port 2.
|
|
97
|
+
;;
|
|
98
|
+
;; NOTE: Does not read pads 0 & 1. Use `ScanPads` to read pads 0 & 1.
|
|
99
|
+
;;
|
|
100
|
+
;; REQUIRES: Joypad Auto-Read enabled.
|
|
101
|
+
;; REQUIRES: REG_WRIO bit 7 set BEFORE Vblank starts.
|
|
102
|
+
;;
|
|
103
|
+
;; REQUIRES: Auto-Joypad has finished reading the controllers.
|
|
104
|
+
;; (This macro DOES NOT contain a REG_HVBJOY test/spinloop.)
|
|
105
|
+
;;
|
|
106
|
+
;; ACCU 8
|
|
107
|
+
;; INDEX 16
|
|
108
|
+
;; DB = 0
|
|
109
|
+
;; D = tcc__registers_nmi_isr (NOT ZERO)
|
|
110
|
+
.MACRO _ScanMPlay5
|
|
111
|
+
; Using the multitap reading protocol from the SNES Development Wiki
|
|
112
|
+
; https://snes.nesdev.org/wiki/Multitap
|
|
113
|
+
|
|
114
|
+
.function __pad_n(array, index) (array + index * 2)
|
|
115
|
+
|
|
116
|
+
; Save old pad state
|
|
117
|
+
; pads 0 & 1 are read by ScanPads.
|
|
118
|
+
ldy.w __pad_n(pad_keys, 2)
|
|
119
|
+
sty.w __pad_n(pad_keysold, 2)
|
|
120
|
+
|
|
121
|
+
ldy.w __pad_n(pad_keys, 3)
|
|
122
|
+
sty.w __pad_n(pad_keysold, 3)
|
|
123
|
+
|
|
124
|
+
ldy.w __pad_n(pad_keys, 4)
|
|
125
|
+
sty.w __pad_n(pad_keysold, 4)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
sep #$20
|
|
129
|
+
.ACCU 8
|
|
130
|
+
|
|
131
|
+
; The code assumes Joypad Auto-Read is not active.
|
|
132
|
+
; This is enforced by a REG_HVBJOY spinloop in the VBlank ISR.
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
; Pads 3 & 4 must be manually read using the REG_JOYB register.
|
|
136
|
+
;
|
|
137
|
+
; The strobe/latch pin does not need to be toggled.
|
|
138
|
+
; All 4 controllers on the mutlitap share the latch pin.
|
|
139
|
+
|
|
140
|
+
; Switch multitap to the second pair of controllers
|
|
141
|
+
stz.w REG_WRIO
|
|
142
|
+
|
|
143
|
+
; Initialise pad_keys to 1 so a `rol` outputs carry set after 8 `rol` instructions
|
|
144
|
+
; A = 1
|
|
145
|
+
sta.w __pad_n(pad_keys, 4)
|
|
146
|
+
sta.w __pad_n(pad_keys, 4) + 1
|
|
147
|
+
|
|
148
|
+
; Read high byte of pads 3/4
|
|
149
|
+
-
|
|
150
|
+
lda.w REG_JOYB
|
|
151
|
+
lsr
|
|
152
|
+
rol.w __pad_n(pad_keys, 3) + 1
|
|
153
|
+
lsr
|
|
154
|
+
rol.w __pad_n(pad_keys, 4) + 1
|
|
155
|
+
bcc -
|
|
156
|
+
|
|
157
|
+
; Read low byte of pads 3/4
|
|
158
|
+
-
|
|
159
|
+
lda.w REG_JOYB
|
|
160
|
+
lsr
|
|
161
|
+
rol.w __pad_n(pad_keys, 3)
|
|
162
|
+
lsr
|
|
163
|
+
rol.w __pad_n(pad_keys, 4)
|
|
164
|
+
bcc -
|
|
165
|
+
|
|
166
|
+
rep #$30
|
|
167
|
+
.ACCU 16
|
|
168
|
+
.INDEX 16
|
|
169
|
+
|
|
170
|
+
; Pads 0 & 1 are read by ScanPads.
|
|
171
|
+
|
|
172
|
+
; Read & process pad 2 from Auto-Joy
|
|
173
|
+
lda.w REG_JOY4L
|
|
174
|
+
bit.w #$0f
|
|
175
|
+
beq +
|
|
176
|
+
; Not a standard controller
|
|
177
|
+
lda.w #0
|
|
178
|
+
+
|
|
179
|
+
sta.w __pad_n(pad_keys, 2)
|
|
180
|
+
eor.w __pad_n(pad_keysold, 2)
|
|
181
|
+
and.w __pad_n(pad_keys, 2)
|
|
182
|
+
sta.w __pad_n(pad_keysdown, 2)
|
|
183
|
+
|
|
184
|
+
; Process pads 3 & 4
|
|
185
|
+
.REPEAT 2 INDEX _I
|
|
186
|
+
.REDEFINE @p = 3 + _I
|
|
187
|
+
.ASSERT @p < 5
|
|
188
|
+
|
|
189
|
+
lda.w __pad_n(pad_keys, @p)
|
|
190
|
+
bit.w #$0f
|
|
191
|
+
beq +
|
|
192
|
+
; Not a standard controller
|
|
193
|
+
lda.w #0
|
|
194
|
+
sta.w __pad_n(pad_keys, @p)
|
|
195
|
+
+
|
|
196
|
+
eor.w __pad_n(pad_keysold, @p)
|
|
197
|
+
and.w __pad_n(pad_keys, @p)
|
|
198
|
+
sta.w __pad_n(pad_keysdown, @p)
|
|
199
|
+
.ENDR
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
sep #$20
|
|
203
|
+
.ACCU 8
|
|
204
|
+
|
|
205
|
+
; Switch multitap back to the first pair of controllers
|
|
206
|
+
; Ensures Auto-Joy will read pads 2/3 on the next VBlank.
|
|
207
|
+
lda.b #$80
|
|
208
|
+
sta.w REG_WRIO
|
|
209
|
+
.ENDM
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
;---------------------------------------------------------------------------------
|
|
214
|
+
; Nintendo SHVC Scope BIOS version 1.00
|
|
215
|
+
; Quickly disassembled and commented by Revenant on 31 Jan 2013
|
|
216
|
+
;
|
|
217
|
+
; This assembly uses xkas v14 syntax. It probably also assembles with bass, if there's
|
|
218
|
+
; any such thing as good fortune in the universe.
|
|
219
|
+
;
|
|
220
|
+
; How to use the SHVC Super Scope BIOS:
|
|
221
|
+
; (all variables are two bytes)
|
|
222
|
+
;
|
|
223
|
+
; 1: Set "HoldDelay" and "RepDelay" for the button hold delay and repeat rate
|
|
224
|
+
;
|
|
225
|
+
; 2: "jsr GetScope" or "jsl GetScopeLong" once per frame
|
|
226
|
+
;
|
|
227
|
+
; 3: Read one of the following to get the scope input bits (see definitions below):
|
|
228
|
+
; - ScopeDown (for any flags that are currently true)
|
|
229
|
+
; - ScopeNow (for any flags that have become true this frame)
|
|
230
|
+
; - ScopeHeld (for any flags that have been true for a certain length of time)
|
|
231
|
+
; - ScopeLast (for any flags that were true on the previous frame)
|
|
232
|
+
;
|
|
233
|
+
; 3a: If the bits read from ScopeNow indicate a valid shot, or if the Cursor button
|
|
234
|
+
; is being pressed, then read "ShotH"/"ShotV" to adjust for aim, or read
|
|
235
|
+
; "ShotHRaw"/"ShotVRaw" for "pure" coordinates
|
|
236
|
+
;
|
|
237
|
+
; 3c: at some point, set "CenterH"/"CenterV" equal to "ShotHRaw"/"ShotVRaw"
|
|
238
|
+
; so that the aim-adjusted coordinates are "correct"
|
|
239
|
+
;---------------------------------------------------------------------------------
|
|
240
|
+
|
|
241
|
+
;; Read the SuperScope from controller port 2 and PPU counter.
|
|
242
|
+
;;
|
|
243
|
+
;; REQUIRES: Auto-Joypad enabled.
|
|
244
|
+
;; REQUIRES: Auto-Joypad has finished reading the controllers.
|
|
245
|
+
;; (This subroutine DOES NOT contain a REG_HVBJOY test/spinloop.)
|
|
246
|
+
;;
|
|
247
|
+
;; DB = 0
|
|
248
|
+
;; D = tcc__registers_nmi_isr (NOT ZERO)
|
|
249
|
+
.ACCU 8
|
|
250
|
+
.INDEX 16
|
|
251
|
+
_GetScope:
|
|
252
|
+
php
|
|
253
|
+
sep #$20
|
|
254
|
+
|
|
255
|
+
lda REG_STAT78 ; Has the PPU counter been latched?
|
|
256
|
+
and.b #$40 ; If not, don't get the scanline location
|
|
257
|
+
beq @NoShot
|
|
258
|
+
|
|
259
|
+
lda REG_OPHCT ; Get the horizontal scanline location (bits 0-7)
|
|
260
|
+
sta scope_shoth
|
|
261
|
+
sta scope_shothraw
|
|
262
|
+
|
|
263
|
+
lda REG_OPHCT ; Get the horizontal scanline location (bit 8)
|
|
264
|
+
and.b #$01
|
|
265
|
+
sta scope_shoth+1
|
|
266
|
+
sta scope_shothraw+1
|
|
267
|
+
|
|
268
|
+
lda REG_OPVCT ; Get the vertical scanline location (bits 0-7)
|
|
269
|
+
sta scope_shotv
|
|
270
|
+
sta scope_shotvraw
|
|
271
|
+
|
|
272
|
+
lda REG_OPVCT ; Get the vertical scanline location (bit 8)
|
|
273
|
+
and.b #$01
|
|
274
|
+
sta scope_shotv+1
|
|
275
|
+
sta scope_shotvraw+1
|
|
276
|
+
|
|
277
|
+
rep #$20
|
|
278
|
+
lda scope_centerh ; Factor in the horizontal offset factor
|
|
279
|
+
clc
|
|
280
|
+
adc scope_shoth
|
|
281
|
+
sta scope_shoth
|
|
282
|
+
|
|
283
|
+
lda scope_centerv ; Factor in the vertical offset factor
|
|
284
|
+
clc
|
|
285
|
+
adc scope_shotv
|
|
286
|
+
sta scope_shotv
|
|
287
|
+
|
|
288
|
+
stz scope_sinceshot ; update number of frames since last shot
|
|
289
|
+
bra @GetInput ; (what happens if 65536 frames elapse between shots?)
|
|
290
|
+
|
|
291
|
+
@NoShot:
|
|
292
|
+
inc scope_sinceshot
|
|
293
|
+
|
|
294
|
+
; Wait for valid joypad input
|
|
295
|
+
@GetInput:
|
|
296
|
+
; The code assumes Joypad Auto-Read is not active.
|
|
297
|
+
; This is enforced by a REG_HVBJOY spinloop in the VBlank ISR.
|
|
298
|
+
|
|
299
|
+
rep #$20
|
|
300
|
+
lda REG_JOY2L ; Get joypad 2 input
|
|
301
|
+
sta scope_port2down ; using a typical method to separate frame input / total input
|
|
302
|
+
eor scope_port2last
|
|
303
|
+
and scope_port2down
|
|
304
|
+
sta scope_port2now
|
|
305
|
+
lda scope_port2down
|
|
306
|
+
sta scope_port2last
|
|
307
|
+
|
|
308
|
+
lda scope_port2down ; Check if the controller in port 2 is a Super Scope.
|
|
309
|
+
and.w #$0CFF ; For a 16-bit auto joypad read, bits 0-7 should be always 1
|
|
310
|
+
cmp.w #$00FF ; and bits 10-11 should be always 0.
|
|
311
|
+
bne @NoScope
|
|
312
|
+
|
|
313
|
+
lda scope_sinceshot ; has a shot already happened this frame?
|
|
314
|
+
beq @GetButtons ; If so, then only pay attention to the pause button bit
|
|
315
|
+
|
|
316
|
+
lda scope_port2down ; Check which already-held buttons are still held
|
|
317
|
+
and scope_last
|
|
318
|
+
sta scope_last
|
|
319
|
+
|
|
320
|
+
lda scope_port2down ; Check pause button held status
|
|
321
|
+
and.w #$1000
|
|
322
|
+
sta scope_down
|
|
323
|
+
|
|
324
|
+
lda scope_port2now ; Check pause button pressed status
|
|
325
|
+
and.w #$1000
|
|
326
|
+
sta scope_now
|
|
327
|
+
|
|
328
|
+
plp ; return from input check
|
|
329
|
+
rts
|
|
330
|
+
|
|
331
|
+
@GetButtons:
|
|
332
|
+
lda scope_port2down ; Get button status when NOT paused
|
|
333
|
+
sta scope_down
|
|
334
|
+
eor scope_last
|
|
335
|
+
and scope_port2down
|
|
336
|
+
sta scope_now
|
|
337
|
+
sta scope_held
|
|
338
|
+
|
|
339
|
+
lda scope_port2down ; if no bits are set on port 2, don't check for "held buttons".
|
|
340
|
+
beq @NotHolding
|
|
341
|
+
|
|
342
|
+
cmp scope_last ; else if the bits aren't the same as last frame, don't check either.
|
|
343
|
+
bne @NotHolding
|
|
344
|
+
|
|
345
|
+
dec scope_tohold ; if a certain number of frames have elapsed with the same buttons
|
|
346
|
+
bne @NotHeld ; held down, consider them "officially held".
|
|
347
|
+
|
|
348
|
+
lda scope_port2down
|
|
349
|
+
sta scope_held
|
|
350
|
+
|
|
351
|
+
lda scope_repdelay ; set the remaining delay to the repeat value
|
|
352
|
+
sta scope_tohold
|
|
353
|
+
bra @NotHeld
|
|
354
|
+
|
|
355
|
+
@NotHolding:
|
|
356
|
+
lda scope_holddelay ; set the remaining delay to the normal value
|
|
357
|
+
sta scope_tohold
|
|
358
|
+
|
|
359
|
+
@NotHeld:
|
|
360
|
+
lda scope_port2down
|
|
361
|
+
sta scope_last
|
|
362
|
+
|
|
363
|
+
plp ; return from input check
|
|
364
|
+
rts
|
|
365
|
+
|
|
366
|
+
@NoScope:
|
|
367
|
+
stz scope_port2down ; If no scope is connected, zero out all inputs
|
|
368
|
+
stz scope_port2now
|
|
369
|
+
stz scope_down
|
|
370
|
+
stz scope_now
|
|
371
|
+
stz scope_held
|
|
372
|
+
stz snes_sscope ; and lib flag
|
|
373
|
+
|
|
374
|
+
plp ; return from input check
|
|
375
|
+
rts
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
;---------------------------------------------------------------------------------
|
|
380
|
+
; Mouse read
|
|
381
|
+
;---------------------------------------------------------------------------------
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
;; Read the mouse values
|
|
385
|
+
;;
|
|
386
|
+
;; REQUIRES: Auto-Joypad enabled.
|
|
387
|
+
;; REQUIRES: Auto-Joypad has finished reading the controllers.
|
|
388
|
+
;; (This subroutine DOES NOT contain a REG_HVBJOY test/spinloop.)
|
|
389
|
+
;;
|
|
390
|
+
;; DB = 0
|
|
391
|
+
;; D = tcc__registers_nmi_isr (NOT ZERO)
|
|
392
|
+
.ACCU 8
|
|
393
|
+
.INDEX 16
|
|
394
|
+
_MouseRead:
|
|
395
|
+
sep #$30
|
|
396
|
+
|
|
397
|
+
; The code assumes Joypad Auto-Read is not active.
|
|
398
|
+
; This is enforced by a REG_HVBJOY spinloop in the VBlank ISR.
|
|
399
|
+
|
|
400
|
+
ldx #1
|
|
401
|
+
lda REG_JOY2L
|
|
402
|
+
jsr _MouseData
|
|
403
|
+
|
|
404
|
+
ldx #0
|
|
405
|
+
lda REG_JOY1L
|
|
406
|
+
jsr _MouseData
|
|
407
|
+
|
|
408
|
+
rep #$10
|
|
409
|
+
rts
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
;; Read the mouse values from a single controller port.
|
|
413
|
+
;;
|
|
414
|
+
;; IN: A = REG_JOY1L or REG_JOY2L
|
|
415
|
+
;; IN: X = 0 or 1
|
|
416
|
+
;; KEEP: X
|
|
417
|
+
;;
|
|
418
|
+
;; DB = 0
|
|
419
|
+
;; D = tcc__registers_nmi_isr (NOT ZERO)
|
|
420
|
+
.accu 8
|
|
421
|
+
.index 8
|
|
422
|
+
_MouseData:
|
|
423
|
+
tay
|
|
424
|
+
|
|
425
|
+
; Test if a mouse is connected
|
|
426
|
+
and.b #$0f
|
|
427
|
+
cmp.b #$01
|
|
428
|
+
bne @NoMouseConnected
|
|
429
|
+
|
|
430
|
+
; Test if the mouse was connected on this frame
|
|
431
|
+
lda mouseConnect,x
|
|
432
|
+
beq @MouseConnectedThisFrame
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
; Update mouse button/pressed variables
|
|
436
|
+
lda mousePressed,x
|
|
437
|
+
sta mousePreviousPressed,x
|
|
438
|
+
|
|
439
|
+
tya
|
|
440
|
+
lsr a
|
|
441
|
+
lsr a
|
|
442
|
+
lsr a
|
|
443
|
+
lsr a
|
|
444
|
+
tay
|
|
445
|
+
and #3
|
|
446
|
+
sta mouseSensitivity,x
|
|
447
|
+
|
|
448
|
+
tya
|
|
449
|
+
lsr a
|
|
450
|
+
lsr a
|
|
451
|
+
sta mousePressed,x
|
|
452
|
+
|
|
453
|
+
eor mousePreviousPressed,x
|
|
454
|
+
and mousePressed,x
|
|
455
|
+
sta mouseButton,x
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
; Manually read the displacement bits from the controller port.
|
|
459
|
+
;
|
|
460
|
+
; According to https://snes.nesdev.org/wiki/Mouse the Hyperkin mouse had extra timing requirements:
|
|
461
|
+
; * At least 170 master cycles between bit reads
|
|
462
|
+
; * At least 336 master cycles between reading the 2nd and 3rd byte
|
|
463
|
+
;
|
|
464
|
+
; The second requirement is already met. Auto-Joypad read will read the first 16 bits and there
|
|
465
|
+
; is a significant delay between the end of Auto-Joypad read and the start of this read-loop.
|
|
466
|
+
;
|
|
467
|
+
; SlowROM: This loop is 190 m-cycles. No read-delay was required.
|
|
468
|
+
; FastROM: This loop is 188 m-cycles. 2 nop instructions were required.
|
|
469
|
+
;
|
|
470
|
+
; The delays were manually cycle counted and verified with Mesen's Debugger.
|
|
471
|
+
|
|
472
|
+
; Read 16 bits
|
|
473
|
+
ldy #16
|
|
474
|
+
-
|
|
475
|
+
lda.w REG_JOYA,x
|
|
476
|
+
|
|
477
|
+
lsr a
|
|
478
|
+
rol.w mouse_x,x
|
|
479
|
+
rol.w mouse_y,x
|
|
480
|
+
.ifdef FASTROM
|
|
481
|
+
nop ; Read delay for hyperkin mouse support.
|
|
482
|
+
nop ; 1 extra nop for safety (to match the SnesDev wiki)
|
|
483
|
+
.endif
|
|
484
|
+
dey
|
|
485
|
+
bne -
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
lda.w mouseRequestChangeSensitivity,x
|
|
489
|
+
bne @ChangeSensitivityRequest
|
|
490
|
+
|
|
491
|
+
rts
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
; The Nintendo Mouse has a bug where the reported sensitivity and the internal sensitivity do
|
|
495
|
+
; not match when the mouse is powered on.
|
|
496
|
+
;
|
|
497
|
+
; To fix this bug at a cycle-sensitivity command must be sent to the mouse when it is first
|
|
498
|
+
; connected to the console, even if the sensitivity bits are what the user wants.
|
|
499
|
+
;
|
|
500
|
+
@MouseConnectedThisFrame:
|
|
501
|
+
; Using `mouseSensitivity` so the sensitivity can be restored if the mouse is
|
|
502
|
+
; disconnected then reconnected to the console.
|
|
503
|
+
lda mouseSensitivity,x
|
|
504
|
+
and #3
|
|
505
|
+
jsr @SetMouseSensitvity
|
|
506
|
+
|
|
507
|
+
; Set mouse connected flag
|
|
508
|
+
lda #1
|
|
509
|
+
sta mouseConnect,x
|
|
510
|
+
|
|
511
|
+
; Clear stale or uninitialised request change sensitivity command.
|
|
512
|
+
stz mouseRequestChangeSensitivity,x
|
|
513
|
+
|
|
514
|
+
; Clear mouse variables, they might not be valid.
|
|
515
|
+
bra @ClearMouseState
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
@NoMouseConnected:
|
|
519
|
+
stz mouseConnect,x
|
|
520
|
+
|
|
521
|
+
@ClearMouseState:
|
|
522
|
+
; Not clearing mouseSensitivity.
|
|
523
|
+
; It is used to restore the sensitivity when the mouse is reconnected
|
|
524
|
+
stz mouseButton,x
|
|
525
|
+
stz mousePressed,x
|
|
526
|
+
stz mousePreviousPressed,x
|
|
527
|
+
stz mouse_x,x
|
|
528
|
+
stz mouse_y,x
|
|
529
|
+
rts
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
; A = mouseRequestChangeSensitivity
|
|
533
|
+
; negative flag = MSB of `mouseRequestChangeSensitivity`
|
|
534
|
+
@ChangeSensitivityRequest:
|
|
535
|
+
stz mouseRequestChangeSensitivity,x
|
|
536
|
+
|
|
537
|
+
bmi @RequestSpecificSensitivity
|
|
538
|
+
|
|
539
|
+
; Send one or two cycle-sensitivity commands to the mouse
|
|
540
|
+
ldy #$01
|
|
541
|
+
sty REG_JOYA
|
|
542
|
+
dec a
|
|
543
|
+
beq +
|
|
544
|
+
ldy REG_JOYA,x
|
|
545
|
+
+
|
|
546
|
+
ldy REG_JOYA,x
|
|
547
|
+
stz REG_JOYA
|
|
548
|
+
|
|
549
|
+
@Return:
|
|
550
|
+
rts
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
; A = mouseRequestChangeSensitivity
|
|
554
|
+
@RequestSpecificSensitivity:
|
|
555
|
+
and.b #3
|
|
556
|
+
cmp mouseSensitivity,x
|
|
557
|
+
beq @Return
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
; Repeatedly cycle through the mouse sensitivity until reported sensitivity matches the requested sensitivity.
|
|
561
|
+
; CAUTION: This code will always cycle the sensitivity at least once (required when mouse is connected to the console)
|
|
562
|
+
; A = requested sensitivity (0 - 2)
|
|
563
|
+
@SetMouseSensitvity:
|
|
564
|
+
tay
|
|
565
|
+
|
|
566
|
+
; Limit the number of cycle-sensitivity commands to send to the mouse.
|
|
567
|
+
; Done for 2 reasons:
|
|
568
|
+
; 1. Prevents an infinite loop if the mouse has been disconnected.
|
|
569
|
+
; 2. The Hyperkin mouse will always report a mouse sensitivity of 0.
|
|
570
|
+
lda #4
|
|
571
|
+
sta.b tcc__r0h
|
|
572
|
+
|
|
573
|
+
@CycleLoop:
|
|
574
|
+
; X = port
|
|
575
|
+
; Y = requested sensitivity
|
|
576
|
+
; tcc__r0h = decrementing loop counter
|
|
577
|
+
|
|
578
|
+
; Send a cycle-sensitivity command to the mouse
|
|
579
|
+
lda #$01
|
|
580
|
+
sta REG_JOYA
|
|
581
|
+
lda REG_JOYA,x
|
|
582
|
+
stz REG_JOYA
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
; Read sensitivity bits from mouse
|
|
586
|
+
;
|
|
587
|
+
; No Hyperkin mouse read delay is required as the Hyperkin mouse does not support
|
|
588
|
+
; cycle-sensitivity commands.
|
|
589
|
+
|
|
590
|
+
; Skip the first 10 bits
|
|
591
|
+
; Using A for loop counter so Y is unchanged
|
|
592
|
+
lda #10
|
|
593
|
+
-
|
|
594
|
+
bit REG_JOYA,x
|
|
595
|
+
dec a
|
|
596
|
+
bne -
|
|
597
|
+
|
|
598
|
+
; Read the 2 sensitivity bits
|
|
599
|
+
stz.b tcc__r0
|
|
600
|
+
|
|
601
|
+
lda REG_JOYA,x
|
|
602
|
+
lsr
|
|
603
|
+
rol.b tcc__r0
|
|
604
|
+
|
|
605
|
+
lda REG_JOYA,x
|
|
606
|
+
lsr
|
|
607
|
+
rol.b tcc__r0
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
; Return if read sensitivity == Y
|
|
611
|
+
cpy.b tcc__r0
|
|
612
|
+
beq @EndCycleLoop
|
|
613
|
+
|
|
614
|
+
dec.b tcc__r0h
|
|
615
|
+
bne @CycleLoop
|
|
616
|
+
|
|
617
|
+
@EndCycleLoop:
|
|
618
|
+
rts
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
;---------------------------------------------------------------------------------
|
|
622
|
+
|
|
623
|
+
.accu 16
|
|
624
|
+
.index 16
|
|
625
|
+
.16bit
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
;; Vertical Blank Interrupt Service Routine (NMI ISR)
|
|
629
|
+
;;
|
|
630
|
+
VBlank:
|
|
631
|
+
.ifdef FASTROM
|
|
632
|
+
jml FVBlank
|
|
633
|
+
|
|
634
|
+
FVBlank:
|
|
635
|
+
.endif
|
|
636
|
+
|
|
637
|
+
rep #$38 ; 16 bit A, 16 bit I, decimal mode disabled
|
|
638
|
+
|
|
639
|
+
; Push CPU registers to the stack.
|
|
640
|
+
; A/X/Y must be saved in 16-bit mode (**before** switching to an 8 bit index)
|
|
641
|
+
phb
|
|
642
|
+
phd
|
|
643
|
+
phx
|
|
644
|
+
phy
|
|
645
|
+
pha
|
|
646
|
+
|
|
647
|
+
; Direct Page and DB are unknown. Set them here.
|
|
648
|
+
|
|
649
|
+
; Using a different Direct Page Register value to prevent the `nmi_handler` call
|
|
650
|
+
; from clobbering tcc imaginary registers.
|
|
651
|
+
lda.w #tcc__registers_nmi_isr
|
|
652
|
+
tad
|
|
653
|
+
; D = tcc__registers_nmi_isr
|
|
654
|
+
|
|
655
|
+
pea $7e80
|
|
656
|
+
plb
|
|
657
|
+
; DB = $80
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
; Whenever this ISR is modified, the `VBlank ISR` section in `interrupt.h` MUST ALSO be updated.
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
; Using 16 bit A so the `stz $2102` below clears a 16-bit register.
|
|
664
|
+
sep #$10
|
|
665
|
+
.ACCU 16
|
|
666
|
+
.INDEX 8
|
|
667
|
+
|
|
668
|
+
ldx.w vblank_flag
|
|
669
|
+
beq +
|
|
670
|
+
; Transfer oamMemory to OAM
|
|
671
|
+
stz.w $2102 ; OAM address (word register)
|
|
672
|
+
|
|
673
|
+
lda.w #$0400
|
|
674
|
+
sta.w $4370 ; DMA type CPU -> PPU, auto inc, $2104 (OAM write)
|
|
675
|
+
|
|
676
|
+
lda.w #$0220
|
|
677
|
+
sta.w $4375 ; DMA size (0x220 = 128*4+32)
|
|
678
|
+
|
|
679
|
+
lda.w #oamMemory.w
|
|
680
|
+
sta.w $4372 ; DMA address = oam memory
|
|
681
|
+
|
|
682
|
+
ldx.b #:oamMemory
|
|
683
|
+
stx.w $4374 ; DMA address bank = oam memory
|
|
684
|
+
|
|
685
|
+
ldx.b #$80
|
|
686
|
+
stx.w $420b ; DMA channel 7 1xxx xxxx
|
|
687
|
+
+
|
|
688
|
+
|
|
689
|
+
rep #$30
|
|
690
|
+
.ACCU 16
|
|
691
|
+
.INDEX 16
|
|
692
|
+
plb
|
|
693
|
+
; DB = $7e
|
|
694
|
+
|
|
695
|
+
jsl __JumpTo_nmi_handler
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
; This marks the end of the Vertical Blanking Period critical code
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
; Count frame number
|
|
702
|
+
inc.w snes_vblank_count
|
|
703
|
+
|
|
704
|
+
; Refresh pad values
|
|
705
|
+
sep #$20
|
|
706
|
+
|
|
707
|
+
; Set Data Bank to access joypad registers and lowram
|
|
708
|
+
lda.b #0
|
|
709
|
+
pha
|
|
710
|
+
plb
|
|
711
|
+
; DB = 0
|
|
712
|
+
|
|
713
|
+
lda.w vblank_flag
|
|
714
|
+
bne @ReadInputs
|
|
715
|
+
; The VBlank interrupt occurred in a lag frame
|
|
716
|
+
; Do not read inputs.
|
|
717
|
+
|
|
718
|
+
ldx.w lag_frame_counter
|
|
719
|
+
inx
|
|
720
|
+
bne +
|
|
721
|
+
dex
|
|
722
|
+
+
|
|
723
|
+
stx.w lag_frame_counter
|
|
724
|
+
|
|
725
|
+
jmp @EndReadInputs
|
|
726
|
+
|
|
727
|
+
@ReadInputs:
|
|
728
|
+
; Not in a lag frame
|
|
729
|
+
; Read inputs
|
|
730
|
+
|
|
731
|
+
stz.w vblank_flag
|
|
732
|
+
|
|
733
|
+
; Wait until the Joypad Auto-Read has finished.
|
|
734
|
+
; (done here so HVBJOY is only tested in one spot)
|
|
735
|
+
lda.b #1
|
|
736
|
+
-
|
|
737
|
+
bit.w REG_HVBJOY
|
|
738
|
+
bne -
|
|
739
|
+
|
|
740
|
+
lda snes_mplay5
|
|
741
|
+
bne @ScanMp5
|
|
742
|
+
|
|
743
|
+
lda snes_mouse
|
|
744
|
+
beq +
|
|
745
|
+
jsr _MouseRead
|
|
746
|
+
|
|
747
|
+
; If both ports have a mouse plugged, it will skip pad controller reading
|
|
748
|
+
lda.w mouseConnect
|
|
749
|
+
and.w mouseConnect + 1
|
|
750
|
+
bne @EndReadInputs
|
|
751
|
+
+
|
|
752
|
+
lda snes_sscope
|
|
753
|
+
beq +
|
|
754
|
+
jsr _GetScope
|
|
755
|
+
bra @EndReadInputs
|
|
756
|
+
+
|
|
757
|
+
@ScanPads:
|
|
758
|
+
_ScanPads
|
|
759
|
+
|
|
760
|
+
@EndReadInputs:
|
|
761
|
+
|
|
762
|
+
; Restore CPU registers
|
|
763
|
+
rep #$30
|
|
764
|
+
|
|
765
|
+
pla
|
|
766
|
+
ply
|
|
767
|
+
plx
|
|
768
|
+
pld
|
|
769
|
+
plb
|
|
770
|
+
|
|
771
|
+
rti
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
@ScanMp5:
|
|
776
|
+
_ScanMPlay5
|
|
777
|
+
jmp @ScanPads
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
;; Long jump to `nmi_handler`
|
|
781
|
+
;;
|
|
782
|
+
;; ACCU 16
|
|
783
|
+
;; INDEX 16
|
|
784
|
+
;; DB = $7e
|
|
785
|
+
;; D = tcc__registers_nmi_isr
|
|
786
|
+
__JumpTo_nmi_handler:
|
|
787
|
+
; The `JML [addr]` instruction will always read the new program counter from Bank 0
|
|
788
|
+
jml [nmi_handler]
|
|
789
|
+
|
|
790
|
+
.ENDS
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
;---------------------------------------------------------------------------
|
|
794
|
+
|
|
795
|
+
.BASE BASE_0
|
|
796
|
+
.SECTION ".nmiSet_text" SUPERFREE
|
|
797
|
+
|
|
798
|
+
; void nmiSet(void (*vblankRoutine)(void));
|
|
799
|
+
;
|
|
800
|
+
; DB access lowram
|
|
801
|
+
nmiSet:
|
|
802
|
+
php
|
|
803
|
+
.DEFINE _stack_arg_offset 5
|
|
804
|
+
|
|
805
|
+
sep #$20
|
|
806
|
+
.ACCU 8
|
|
807
|
+
|
|
808
|
+
; Disable interrupts.
|
|
809
|
+
; Prevents a crash if a VBlank Interrupt occurs in the middle of the two `nmi_handler` writes.
|
|
810
|
+
lda #0
|
|
811
|
+
sta.l REG_NMITIMEN
|
|
812
|
+
|
|
813
|
+
rep #$20
|
|
814
|
+
.INDEX 16
|
|
815
|
+
lda _stack_arg_offset,s
|
|
816
|
+
sta.w nmi_handler
|
|
817
|
+
|
|
818
|
+
lda _stack_arg_offset + 2,s
|
|
819
|
+
sta.w nmi_handler + 2
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
sep #$20
|
|
823
|
+
.ACCU 8
|
|
824
|
+
; Reset the NMI flag.
|
|
825
|
+
; Prevents an NMI interrupt from erroneously activating on the REG_NMITIMEN write.
|
|
826
|
+
lda.l REG_RDNMI
|
|
827
|
+
|
|
828
|
+
; Enable VBlank Interrupts and Joypad Auto-Read.
|
|
829
|
+
lda #INT_VBLENABLE | INT_JOYPAD_ENABLE
|
|
830
|
+
sta.l REG_NMITIMEN
|
|
831
|
+
|
|
832
|
+
.UNDEFINE _stack_arg_offset
|
|
833
|
+
plp
|
|
834
|
+
rtl
|
|
835
|
+
|
|
836
|
+
.ENDS
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
;---------------------------------------------------------------------------
|
|
840
|
+
|
|
841
|
+
.BASE BASE_0
|
|
842
|
+
.SECTION ".waitforvblank_text" SUPERFREE
|
|
843
|
+
|
|
844
|
+
; WaitForVBlank(void);
|
|
845
|
+
;
|
|
846
|
+
; KEEP: A, X, Y (documented in interrupt.h)
|
|
847
|
+
; A unknown
|
|
848
|
+
; I unknown
|
|
849
|
+
; DB unknown
|
|
850
|
+
; D unknown
|
|
851
|
+
WaitForVBlank:
|
|
852
|
+
php
|
|
853
|
+
sep #$20
|
|
854
|
+
.ACCU 8
|
|
855
|
+
|
|
856
|
+
pha
|
|
857
|
+
|
|
858
|
+
; MUST NOT modify X, Y or high-byte of A
|
|
859
|
+
; This behaviour is documented in interrupt.h and used by `video.asm`.
|
|
860
|
+
|
|
861
|
+
lda #1
|
|
862
|
+
sta.l vblank_flag
|
|
863
|
+
|
|
864
|
+
-
|
|
865
|
+
wai
|
|
866
|
+
lda.l vblank_flag
|
|
867
|
+
bne -
|
|
868
|
+
|
|
869
|
+
pla
|
|
870
|
+
plp
|
|
871
|
+
rtl
|
|
872
|
+
|
|
873
|
+
.ENDS
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
.SECTION ".waitforthreevblanks_text" SUPERFREE
|
|
877
|
+
|
|
878
|
+
; WaitForVBlankTiles3(void);
|
|
879
|
+
;
|
|
880
|
+
; Used by `setMosaicEffect`.
|
|
881
|
+
;
|
|
882
|
+
; KEEP: A, X, Y
|
|
883
|
+
; A unknown
|
|
884
|
+
; I unknown
|
|
885
|
+
; DB unknown
|
|
886
|
+
; D unknown
|
|
887
|
+
WaitForThreeVBlanks:
|
|
888
|
+
; MUST NOT modify X, Y or A
|
|
889
|
+
jsl WaitForVBlank
|
|
890
|
+
jsl WaitForVBlank
|
|
891
|
+
jml WaitForVBlank
|
|
892
|
+
|
|
893
|
+
.ENDS
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
.SECTION ".waitnvblank_text" SUPERFREE
|
|
897
|
+
|
|
898
|
+
;---------------------------------------------------------------------------
|
|
899
|
+
; void WaitNVBlank(u16 ntime)
|
|
900
|
+
WaitNVBlank:
|
|
901
|
+
php
|
|
902
|
+
|
|
903
|
+
sep #$20
|
|
904
|
+
|
|
905
|
+
lda 5,s
|
|
906
|
+
-
|
|
907
|
+
pha
|
|
908
|
+
jsl WaitForVBlank
|
|
909
|
+
pla
|
|
910
|
+
dea
|
|
911
|
+
bne -
|
|
912
|
+
|
|
913
|
+
plp
|
|
914
|
+
rtl
|
|
915
|
+
|
|
916
|
+
.ENDS
|
|
917
|
+
|