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,89 @@
|
|
|
1
|
+
// Public meta-sprite entry points: capture from a live host, and re-render
|
|
2
|
+
// from saved files. All platform specifics live in metasprite-adapters.js
|
|
3
|
+
// (live decode) + the tile decoders below (saved-file decode).
|
|
4
|
+
|
|
5
|
+
import { buildAdapter } from "./metasprite-adapters.js";
|
|
6
|
+
import { captureFromAdapter, renderSavedMetaSprite, clusterSprites } from "./metasprite-core.js";
|
|
7
|
+
|
|
8
|
+
/** Capture a meta-sprite from the current frame on `host` for `platform`. */
|
|
9
|
+
export async function captureMetaSprite(host, platform, opts = {}) {
|
|
10
|
+
const adapter = await buildAdapter(host, platform);
|
|
11
|
+
return captureFromAdapter(adapter, opts);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Cluster the on-screen sprites into likely objects. */
|
|
15
|
+
export async function groupVisibleSprites(host, platform, opts = {}) {
|
|
16
|
+
const adapter = await buildAdapter(host, platform);
|
|
17
|
+
return clusterSprites(adapter.sprites, opts);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// ---- saved-file re-render ----
|
|
21
|
+
// Decode tiles.bin back into 8x8 index grids using the layout's platform +
|
|
22
|
+
// bpp (inverse of the encoders in metasprite-adapters.js), then re-render
|
|
23
|
+
// via the same core path used at capture time.
|
|
24
|
+
|
|
25
|
+
function decodeTilesBin(tiles, platform, bpp) {
|
|
26
|
+
const grids = [];
|
|
27
|
+
const tileBytes = bpp === 4 ? 32 : 16;
|
|
28
|
+
const count = Math.floor(tiles.length / tileBytes);
|
|
29
|
+
for (let t = 0; t < count; t++) {
|
|
30
|
+
const base = t * tileBytes;
|
|
31
|
+
const g = Array.from({ length: 8 }, () => new Array(8).fill(0));
|
|
32
|
+
if (platform === "nes") {
|
|
33
|
+
// 2bpp planar: plane0 bytes 0-7, plane1 bytes 8-15
|
|
34
|
+
for (let y = 0; y < 8; y++) { const p0 = tiles[base + y], p1 = tiles[base + 8 + y]; for (let x = 0; x < 8; x++) { const b = 7 - x; g[y][x] = ((p0 >> b) & 1) | (((p1 >> b) & 1) << 1); } }
|
|
35
|
+
} else if (platform === "gb" || platform === "gbc") {
|
|
36
|
+
// 2bpp interleaved: per row [lo,hi]
|
|
37
|
+
for (let y = 0; y < 8; y++) { const lo = tiles[base + y * 2], hi = tiles[base + y * 2 + 1]; for (let x = 0; x < 8; x++) { const b = 7 - x; g[y][x] = ((lo >> b) & 1) | (((hi >> b) & 1) << 1); } }
|
|
38
|
+
} else if (platform === "genesis") {
|
|
39
|
+
// 4bpp packed: high nibble = left pixel
|
|
40
|
+
for (let y = 0; y < 8; y++) for (let half = 0; half < 4; half++) { const byte = tiles[base + y * 4 + half]; g[y][half * 2] = (byte >> 4) & 0xF; g[y][half * 2 + 1] = byte & 0xF; }
|
|
41
|
+
} else if (platform === "sms" || platform === "gg") {
|
|
42
|
+
// 4bpp interleaved: per row [p0,p1,p2,p3]
|
|
43
|
+
for (let y = 0; y < 8; y++) { const p0 = tiles[base + y * 4], p1 = tiles[base + y * 4 + 1], p2 = tiles[base + y * 4 + 2], p3 = tiles[base + y * 4 + 3]; for (let x = 0; x < 8; x++) { const b = 7 - x; g[y][x] = ((p0 >> b) & 1) | (((p1 >> b) & 1) << 1) | (((p2 >> b) & 1) << 2) | (((p3 >> b) & 1) << 3); } }
|
|
44
|
+
} else { // snes: 4bpp planar-pairs
|
|
45
|
+
for (let y = 0; y < 8; y++) { const p0 = tiles[base + y * 2], p1 = tiles[base + y * 2 + 1], p2 = tiles[base + 16 + y * 2], p3 = tiles[base + 16 + y * 2 + 1]; for (let x = 0; x < 8; x++) { const b = 7 - x; g[y][x] = ((p0 >> b) & 1) | (((p1 >> b) & 1) << 1) | (((p2 >> b) & 1) << 2) | (((p3 >> b) & 1) << 3); } }
|
|
46
|
+
}
|
|
47
|
+
grids.push(g);
|
|
48
|
+
}
|
|
49
|
+
return grids;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Re-render a saved meta-sprite (tiles.bin + layout.json) to a PNG. The
|
|
54
|
+
* palette comes from the layout's `palettes` (hex strings), so palette.bin
|
|
55
|
+
* isn't strictly needed for the preview.
|
|
56
|
+
* @param {Uint8Array} tiles
|
|
57
|
+
* @param {object} layout
|
|
58
|
+
*/
|
|
59
|
+
export function renderSaved(tiles, layout) {
|
|
60
|
+
const bpp = layout.bpp ?? (["genesis", "snes", "sms", "gg"].includes(layout.platform) ? 4 : 2);
|
|
61
|
+
const exportTiles = decodeTilesBin(tiles, layout.platform, bpp);
|
|
62
|
+
// Palette: parse hex strings from layout.palettes into rgb arrays keyed by
|
|
63
|
+
// the same palette index the pieces reference.
|
|
64
|
+
const palMap = {};
|
|
65
|
+
for (const [k, hexes] of Object.entries(layout.palettes || {})) {
|
|
66
|
+
palMap[k] = hexes.map((h) => {
|
|
67
|
+
const m = /^#?([0-9a-fA-F]{6})$/.exec(h); if (!m) return [0, 0, 0];
|
|
68
|
+
const n = parseInt(m[1], 16); return [(n >> 16) & 0xFF, (n >> 8) & 0xFF, n & 0xFF];
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// A minimal adapter the core's renderer can use: cell order from layout +
|
|
72
|
+
// a palette lookup. Reuse the same cell-order rules.
|
|
73
|
+
const colMajor = !!layout.tileColumnMajor;
|
|
74
|
+
const order = colMajor
|
|
75
|
+
? (w, h) => { const o = []; for (let c = 0; c < w; c++) for (let r = 0; r < h; r++) o.push(c * h + r); return o; }
|
|
76
|
+
: (w, h) => { const o = []; for (let r = 0; r < h; r++) for (let c = 0; c < w; c++) o.push(r * w + c); return o; };
|
|
77
|
+
const pos = colMajor
|
|
78
|
+
? (w, h) => { const p = []; for (let c = 0; c < w; c++) for (let r = 0; r < h; r++) p.push({ col: c, row: r }); return p; }
|
|
79
|
+
: (w, h) => { const p = []; for (let r = 0; r < h; r++) for (let c = 0; c < w; c++) p.push({ col: c, row: r }); return p; };
|
|
80
|
+
const adapter = {
|
|
81
|
+
platform: layout.platform,
|
|
82
|
+
cellTileOrder: order,
|
|
83
|
+
cellGridPositions: pos,
|
|
84
|
+
getPaletteRgb: (p) => palMap[String(p)] || palMap[Object.keys(palMap)[0]] || [[0, 0, 0]],
|
|
85
|
+
};
|
|
86
|
+
return renderSavedMetaSprite({ adapter, layout, exportTiles });
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { emitMetaSpriteCode } from "./metasprite-codegen.js";
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// platform-palette.js — single accessor for every platform's master RGB palette.
|
|
2
|
+
//
|
|
3
|
+
// The per-platform palette PNG generators (nesPalettePng, snesPalettePng, ...)
|
|
4
|
+
// each hardcoded their RGB list inline. Lospec / hex / indexed-PNG validation
|
|
5
|
+
// all need that same list. Extracted here once.
|
|
6
|
+
//
|
|
7
|
+
// Returns an array of [r, g, b] (0..255 each). One entry per color the platform
|
|
8
|
+
// can actually display from its master palette.
|
|
9
|
+
|
|
10
|
+
import { NES_PALETTE, nesIndexToRgb } from "../nes/palette.js";
|
|
11
|
+
import { DMG_PALETTE } from "../gb/ppu.js";
|
|
12
|
+
import { C64_PALETTE } from "../c64/vic.js";
|
|
13
|
+
import { A78_PALETTE } from "../atari7800/maria.js";
|
|
14
|
+
import { NTSC_PALETTE } from "../atari2600/tia.js";
|
|
15
|
+
|
|
16
|
+
/* ── SNES master swatch — 16 well-spaced colors (matches snesPalettePng) ── */
|
|
17
|
+
const SNES_SWATCH = [
|
|
18
|
+
[0, 0, 0], [128, 128, 128], [255, 255, 255], [128, 0, 0],
|
|
19
|
+
[255, 0, 0], [255, 128, 0], [255, 255, 0], [0, 128, 0],
|
|
20
|
+
[0, 255, 0], [0, 128, 128], [0, 255, 255], [0, 0, 128],
|
|
21
|
+
[0, 0, 255], [128, 0, 128], [255, 0, 255], [128, 64, 0],
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
/* ── Genesis: full 9-bit VDP gamut (512 colors), 3 bits each channel ── */
|
|
25
|
+
function genesisRgb() {
|
|
26
|
+
const expand = (n3) => (n3 << 5) | (n3 << 2) | (n3 >> 1);
|
|
27
|
+
const out = [];
|
|
28
|
+
for (let i = 0; i < 512; i++) {
|
|
29
|
+
const r = expand(i & 0x7);
|
|
30
|
+
const g = expand((i >> 3) & 0x7);
|
|
31
|
+
const b = expand((i >> 6) & 0x7);
|
|
32
|
+
out.push([r, g, b]);
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* ── SMS: full 6-bit gamut (64 colors), 2 bits per channel ── */
|
|
38
|
+
function smsRgb() {
|
|
39
|
+
const out = [];
|
|
40
|
+
for (let i = 0; i < 64; i++) {
|
|
41
|
+
const r2 = i & 0x3;
|
|
42
|
+
const g2 = (i >> 2) & 0x3;
|
|
43
|
+
const b2 = (i >> 4) & 0x3;
|
|
44
|
+
// expand 2 bits → 8 bits: 0,85,170,255
|
|
45
|
+
const expand = (n2) => (n2 * 85);
|
|
46
|
+
out.push([expand(r2), expand(g2), expand(b2)]);
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* ── GG: full 12-bit gamut (4096 colors), 4 bits per channel ── */
|
|
52
|
+
function ggRgb() {
|
|
53
|
+
const out = [];
|
|
54
|
+
for (let i = 0; i < 4096; i++) {
|
|
55
|
+
const r4 = i & 0xF;
|
|
56
|
+
const g4 = (i >> 4) & 0xF;
|
|
57
|
+
const b4 = (i >> 8) & 0xF;
|
|
58
|
+
const expand = (n4) => (n4 << 4) | n4;
|
|
59
|
+
out.push([expand(r4), expand(g4), expand(b4)]);
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* ── NES: 53 usable colors (skipping the 11 "black duplicates") ── */
|
|
65
|
+
function nesRgb() {
|
|
66
|
+
const SKIP = new Set([0x0d, 0x0e, 0x1d, 0x1e, 0x1f, 0x2d, 0x2e, 0x2f, 0x3d, 0x3e, 0x3f]);
|
|
67
|
+
const out = [];
|
|
68
|
+
// Put canonical black ($0F) first to match nesPalettePng().
|
|
69
|
+
out.push(nesIndexToRgb(0x0f));
|
|
70
|
+
for (let i = 0; i < 64; i++) {
|
|
71
|
+
if (i === 0x0f || SKIP.has(i)) continue;
|
|
72
|
+
out.push(NES_PALETTE[i]);
|
|
73
|
+
}
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Return the platform's master RGB palette as an array of [r,g,b].
|
|
79
|
+
* The list is the same set of colors the platform's `*PalettePng()`
|
|
80
|
+
* generator produces (in the same order, so PLTE indices line up).
|
|
81
|
+
*
|
|
82
|
+
* @param {string} platform
|
|
83
|
+
* @returns {[number, number, number][]}
|
|
84
|
+
*/
|
|
85
|
+
export function getPlatformPaletteRgb(platform) {
|
|
86
|
+
switch (platform) {
|
|
87
|
+
case "nes": return nesRgb();
|
|
88
|
+
case "gb":
|
|
89
|
+
case "gbc": return [...DMG_PALETTE]; // 4 shades
|
|
90
|
+
case "snes": return SNES_SWATCH;
|
|
91
|
+
case "genesis": return genesisRgb();
|
|
92
|
+
case "sms": return smsRgb();
|
|
93
|
+
case "gg": return ggRgb();
|
|
94
|
+
case "c64": return [...C64_PALETTE]; // 16 colors
|
|
95
|
+
case "atari2600": return [...NTSC_PALETTE]; // 128 NTSC entries
|
|
96
|
+
case "atari7800": return [...A78_PALETTE]; // 256 entries
|
|
97
|
+
default:
|
|
98
|
+
throw new Error(`getPlatformPaletteRgb: no master palette defined for platform '${platform}'`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Check if a color is within tolerance of any palette entry.
|
|
104
|
+
* Used by indexed-PNG validation — sRGB gamma drift can shift exported
|
|
105
|
+
* pixels by 1-2 per channel even when the artist used the right swatch.
|
|
106
|
+
*
|
|
107
|
+
* @param {[number,number,number][]} palette
|
|
108
|
+
* @param {number} r @param {number} g @param {number} b
|
|
109
|
+
* @param {number} [tolerance=0] max per-channel delta
|
|
110
|
+
* @returns {boolean}
|
|
111
|
+
*/
|
|
112
|
+
export function paletteContains(palette, r, g, b, tolerance = 0) {
|
|
113
|
+
for (const [pr, pg, pb] of palette) {
|
|
114
|
+
if (Math.abs(pr - r) <= tolerance &&
|
|
115
|
+
Math.abs(pg - g) <= tolerance &&
|
|
116
|
+
Math.abs(pb - b) <= tolerance) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Format an RGB triple as "#RRGGBB" (uppercase hex with leading hash).
|
|
125
|
+
*/
|
|
126
|
+
export function rgbHex(r, g, b) {
|
|
127
|
+
const h = (n) => n.toString(16).toUpperCase().padStart(2, "0");
|
|
128
|
+
return `#${h(r)}${h(g)}${h(b)}`;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Format an RGB triple as "rrggbb" (lowercase hex, no hash) — Lospec style.
|
|
133
|
+
*/
|
|
134
|
+
export function rgbHexLospec(r, g, b) {
|
|
135
|
+
const h = (n) => n.toString(16).padStart(2, "0");
|
|
136
|
+
return `${h(r)}${h(g)}${h(b)}`;
|
|
137
|
+
}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
// Hardware register lookup tables for disassembly annotation.
|
|
2
|
+
//
|
|
3
|
+
// Each platform's table maps an address (16- or 24-bit, hex) to a register
|
|
4
|
+
// shorthand like "PPUCTRL". The disassembler walks asm output line-by-line
|
|
5
|
+
// and appends ` ; <REG>` whenever an operand resolves to one of these.
|
|
6
|
+
//
|
|
7
|
+
// Tables are intentionally compact — register *names* only, not full
|
|
8
|
+
// descriptions. Agents look up details via the existing input-layout /
|
|
9
|
+
// platform-tools when they need bit-level meaning.
|
|
10
|
+
|
|
11
|
+
/** @typedef {Record<number, string>} RegisterTable */
|
|
12
|
+
|
|
13
|
+
/** @type {RegisterTable} */
|
|
14
|
+
export const NES_REGISTERS = {
|
|
15
|
+
// PPU $2000-$2007 + open-bus mirrors.
|
|
16
|
+
0x2000: "PPUCTRL",
|
|
17
|
+
0x2001: "PPUMASK",
|
|
18
|
+
0x2002: "PPUSTATUS",
|
|
19
|
+
0x2003: "OAMADDR",
|
|
20
|
+
0x2004: "OAMDATA",
|
|
21
|
+
0x2005: "PPUSCROLL",
|
|
22
|
+
0x2006: "PPUADDR",
|
|
23
|
+
0x2007: "PPUDATA",
|
|
24
|
+
// APU $4000-$4017
|
|
25
|
+
0x4000: "SQ1_VOL",
|
|
26
|
+
0x4001: "SQ1_SWEEP",
|
|
27
|
+
0x4002: "SQ1_LO",
|
|
28
|
+
0x4003: "SQ1_HI",
|
|
29
|
+
0x4004: "SQ2_VOL",
|
|
30
|
+
0x4005: "SQ2_SWEEP",
|
|
31
|
+
0x4006: "SQ2_LO",
|
|
32
|
+
0x4007: "SQ2_HI",
|
|
33
|
+
0x4008: "TRI_LINEAR",
|
|
34
|
+
0x400A: "TRI_LO",
|
|
35
|
+
0x400B: "TRI_HI",
|
|
36
|
+
0x400C: "NOISE_VOL",
|
|
37
|
+
0x400E: "NOISE_LO",
|
|
38
|
+
0x400F: "NOISE_HI",
|
|
39
|
+
0x4010: "DMC_FREQ",
|
|
40
|
+
0x4011: "DMC_RAW",
|
|
41
|
+
0x4012: "DMC_START",
|
|
42
|
+
0x4013: "DMC_LEN",
|
|
43
|
+
0x4014: "OAMDMA",
|
|
44
|
+
0x4015: "SND_CHN",
|
|
45
|
+
0x4016: "JOY1",
|
|
46
|
+
0x4017: "JOY2",
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/** @type {RegisterTable} */
|
|
50
|
+
export const SNES_REGISTERS = {
|
|
51
|
+
// PPU regs $2100-$213F
|
|
52
|
+
0x2100: "INIDISP", 0x2101: "OBSEL", 0x2102: "OAMADDL", 0x2103: "OAMADDH",
|
|
53
|
+
0x2104: "OAMDATA", 0x2105: "BGMODE", 0x2106: "MOSAIC",
|
|
54
|
+
0x2107: "BG1SC", 0x2108: "BG2SC", 0x2109: "BG3SC", 0x210A: "BG4SC",
|
|
55
|
+
0x210B: "BG12NBA", 0x210C: "BG34NBA",
|
|
56
|
+
0x210D: "BG1HOFS", 0x210E: "BG1VOFS",
|
|
57
|
+
0x210F: "BG2HOFS", 0x2110: "BG2VOFS",
|
|
58
|
+
0x2111: "BG3HOFS", 0x2112: "BG3VOFS",
|
|
59
|
+
0x2113: "BG4HOFS", 0x2114: "BG4VOFS",
|
|
60
|
+
0x2115: "VMAIN", 0x2116: "VMADDL", 0x2117: "VMADDH",
|
|
61
|
+
0x2118: "VMDATAL", 0x2119: "VMDATAH",
|
|
62
|
+
0x211A: "M7SEL", 0x211B: "M7A", 0x211C: "M7B", 0x211D: "M7C", 0x211E: "M7D",
|
|
63
|
+
0x211F: "M7X", 0x2120: "M7Y",
|
|
64
|
+
0x2121: "CGADD", 0x2122: "CGDATA",
|
|
65
|
+
0x2123: "W12SEL", 0x2124: "W34SEL", 0x2125: "WOBJSEL",
|
|
66
|
+
0x2126: "WH0", 0x2127: "WH1", 0x2128: "WH2", 0x2129: "WH3",
|
|
67
|
+
0x212A: "WBGLOG", 0x212B: "WOBJLOG",
|
|
68
|
+
0x212C: "TM", 0x212D: "TS", 0x212E: "TMW", 0x212F: "TSW",
|
|
69
|
+
0x2130: "CGWSEL", 0x2131: "CGADSUB", 0x2132: "COLDATA", 0x2133: "SETINI",
|
|
70
|
+
0x2134: "MPYL", 0x2135: "MPYM", 0x2136: "MPYH",
|
|
71
|
+
0x2137: "SLHV", 0x2138: "OAMDATAREAD", 0x2139: "VMDATALREAD", 0x213A: "VMDATAHREAD",
|
|
72
|
+
0x213B: "CGDATAREAD", 0x213C: "OPHCT", 0x213D: "OPVCT",
|
|
73
|
+
0x213E: "STAT77", 0x213F: "STAT78",
|
|
74
|
+
// APU I/O
|
|
75
|
+
0x2140: "APUIO0", 0x2141: "APUIO1", 0x2142: "APUIO2", 0x2143: "APUIO3",
|
|
76
|
+
// WRAM access ports
|
|
77
|
+
0x2180: "WMDATA", 0x2181: "WMADDL", 0x2182: "WMADDM", 0x2183: "WMADDH",
|
|
78
|
+
// CPU regs $4200-$420D
|
|
79
|
+
0x4200: "NMITIMEN", 0x4201: "WRIO", 0x4202: "WRMPYA", 0x4203: "WRMPYB",
|
|
80
|
+
0x4204: "WRDIVL", 0x4205: "WRDIVH", 0x4206: "WRDIVB",
|
|
81
|
+
0x4207: "HTIMEL", 0x4208: "HTIMEH", 0x4209: "VTIMEL", 0x420A: "VTIMEH",
|
|
82
|
+
0x420B: "MDMAEN", 0x420C: "HDMAEN", 0x420D: "MEMSEL",
|
|
83
|
+
0x4210: "RDNMI", 0x4211: "TIMEUP", 0x4212: "HVBJOY", 0x4213: "RDIO",
|
|
84
|
+
0x4214: "RDDIVL", 0x4215: "RDDIVH", 0x4216: "RDMPYL", 0x4217: "RDMPYH",
|
|
85
|
+
0x4218: "JOY1L", 0x4219: "JOY1H", 0x421A: "JOY2L", 0x421B: "JOY2H",
|
|
86
|
+
0x421C: "JOY3L", 0x421D: "JOY3H", 0x421E: "JOY4L", 0x421F: "JOY4H",
|
|
87
|
+
// DMA channel registers $4300-$437F (8 channels × $10 each)
|
|
88
|
+
// We tag the channel-0 registers; agents who care about other channels
|
|
89
|
+
// will see "DMAPx" stride patterns and infer.
|
|
90
|
+
0x4300: "DMAP0", 0x4301: "BBAD0",
|
|
91
|
+
0x4302: "A1T0L", 0x4303: "A1T0H", 0x4304: "A1B0",
|
|
92
|
+
0x4305: "DAS0L", 0x4306: "DAS0H", 0x4307: "DAS0B",
|
|
93
|
+
0x4308: "A2A0L", 0x4309: "A2A0H", 0x430A: "NTRL0",
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/** @type {RegisterTable} */
|
|
97
|
+
export const GENESIS_REGISTERS = {
|
|
98
|
+
// VDP control / data ports
|
|
99
|
+
0xC00000: "VDP_DATA", 0xC00002: "VDP_DATA",
|
|
100
|
+
0xC00004: "VDP_CTRL", 0xC00006: "VDP_CTRL",
|
|
101
|
+
0xC00008: "VDP_HVCOUNTER",
|
|
102
|
+
0xC00011: "PSG_OUT",
|
|
103
|
+
// YM2612 (SN76489 PSG via $C00011; YM2612 at $A04000)
|
|
104
|
+
0xA04000: "YM2612_A0", 0xA04001: "YM2612_D0",
|
|
105
|
+
0xA04002: "YM2612_A1", 0xA04003: "YM2612_D1",
|
|
106
|
+
// I/O regs $A10000-$A1001F
|
|
107
|
+
0xA10001: "VERSION",
|
|
108
|
+
0xA10003: "DATA1", 0xA10005: "DATA2",
|
|
109
|
+
0xA10009: "CTRL1", 0xA1000B: "CTRL2",
|
|
110
|
+
// Z80 bus + reset
|
|
111
|
+
0xA11100: "Z80_BUSREQ",
|
|
112
|
+
0xA11200: "Z80_RESET",
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/** @type {RegisterTable} */
|
|
116
|
+
export const GB_REGISTERS = {
|
|
117
|
+
// CPU + system regs $FF00-$FF7F
|
|
118
|
+
0xFF00: "P1_JOYP",
|
|
119
|
+
0xFF01: "SB", 0xFF02: "SC",
|
|
120
|
+
0xFF04: "DIV", 0xFF05: "TIMA", 0xFF06: "TMA", 0xFF07: "TAC",
|
|
121
|
+
0xFF0F: "IF",
|
|
122
|
+
// APU
|
|
123
|
+
0xFF10: "NR10", 0xFF11: "NR11", 0xFF12: "NR12", 0xFF13: "NR13", 0xFF14: "NR14",
|
|
124
|
+
0xFF16: "NR21", 0xFF17: "NR22", 0xFF18: "NR23", 0xFF19: "NR24",
|
|
125
|
+
0xFF1A: "NR30", 0xFF1B: "NR31", 0xFF1C: "NR32", 0xFF1D: "NR33", 0xFF1E: "NR34",
|
|
126
|
+
0xFF20: "NR41", 0xFF21: "NR42", 0xFF22: "NR43", 0xFF23: "NR44",
|
|
127
|
+
0xFF24: "NR50", 0xFF25: "NR51", 0xFF26: "NR52",
|
|
128
|
+
// PPU
|
|
129
|
+
0xFF40: "LCDC", 0xFF41: "STAT",
|
|
130
|
+
0xFF42: "SCY", 0xFF43: "SCX",
|
|
131
|
+
0xFF44: "LY", 0xFF45: "LYC",
|
|
132
|
+
0xFF46: "DMA",
|
|
133
|
+
0xFF47: "BGP", 0xFF48: "OBP0", 0xFF49: "OBP1",
|
|
134
|
+
0xFF4A: "WY", 0xFF4B: "WX",
|
|
135
|
+
// GBC extras
|
|
136
|
+
0xFF4D: "KEY1", 0xFF4F: "VBK",
|
|
137
|
+
0xFF51: "HDMA1", 0xFF52: "HDMA2", 0xFF53: "HDMA3", 0xFF54: "HDMA4", 0xFF55: "HDMA5",
|
|
138
|
+
0xFF56: "RP",
|
|
139
|
+
0xFF68: "BCPS", 0xFF69: "BCPD", 0xFF6A: "OCPS", 0xFF6B: "OCPD",
|
|
140
|
+
0xFF70: "SVBK",
|
|
141
|
+
// Interrupt enable
|
|
142
|
+
0xFFFF: "IE",
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* SMS / Game Gear I/O ports + VDP. The Z80 sees these via IN/OUT
|
|
147
|
+
* instructions, not memory-mapped reads, but disassemblers commonly
|
|
148
|
+
* show the port number as an immediate — `out ($BE),a` etc — so
|
|
149
|
+
* annotating those operands is what helps.
|
|
150
|
+
*
|
|
151
|
+
* SMS uses 8-bit ports; we annotate on 8-bit hits. Code that does
|
|
152
|
+
* `out ($BE),a` should pick up `; VDP_DATA`.
|
|
153
|
+
*
|
|
154
|
+
* Key: SMS VDP register *numbers* (0-10) are NOT memory addresses —
|
|
155
|
+
* the agent writes them via VDP_CTRL. We annotate the VDP ports
|
|
156
|
+
* ($BE/$BF) and the I/O ports ($DC/$DD joypad, $3E/$3F memory control,
|
|
157
|
+
* $7E/$7F PSG/V-counter, $C0-$C1 GG-extras).
|
|
158
|
+
*
|
|
159
|
+
* @type {RegisterTable}
|
|
160
|
+
*/
|
|
161
|
+
export const SMS_REGISTERS = {
|
|
162
|
+
// VDP
|
|
163
|
+
0x00BE: "VDP_DATA",
|
|
164
|
+
0x00BF: "VDP_CTRL",
|
|
165
|
+
// PSG / V counter / H counter
|
|
166
|
+
0x007E: "V_COUNTER", // read
|
|
167
|
+
0x007F: "H_COUNTER", // read; same port writes PSG (overloaded)
|
|
168
|
+
// Joypad
|
|
169
|
+
0x00DC: "IO_PORT_A", // P1 buttons + P2 D-pad
|
|
170
|
+
0x00DD: "IO_PORT_B", // P2 buttons + reset/cart
|
|
171
|
+
// Memory + cartridge control
|
|
172
|
+
0x003E: "MEMORY_CTRL",
|
|
173
|
+
0x003F: "IO_CTRL",
|
|
174
|
+
// Game Gear extras ($00-$06 + $C0..)
|
|
175
|
+
0x0000: "GG_INPUT", // GG: start button + region
|
|
176
|
+
0x0001: "GG_OUTPUT",
|
|
177
|
+
0x0002: "GG_DATA_DIR",
|
|
178
|
+
0x0003: "GG_TX_DATA",
|
|
179
|
+
0x0004: "GG_RX_DATA",
|
|
180
|
+
0x0005: "GG_SERIAL_CTRL",
|
|
181
|
+
0x0006: "GG_PSG_STEREO",
|
|
182
|
+
// SMS BIOS / control mirrors (some games hit these)
|
|
183
|
+
0x00F2: "FM_DETECTION", // Japanese SMS only
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Atari 2600 (TIA + RIOT). Write-side TIA registers $00-$2C, read-side
|
|
188
|
+
* TIA registers $30-$3D, and RIOT registers $280-$297. Most popular
|
|
189
|
+
* names per the dasm convention.
|
|
190
|
+
*
|
|
191
|
+
* @type {RegisterTable}
|
|
192
|
+
*/
|
|
193
|
+
export const ATARI2600_REGISTERS = {
|
|
194
|
+
// TIA write regs $00-$2C
|
|
195
|
+
0x00: "VSYNC", 0x01: "VBLANK", 0x02: "WSYNC", 0x03: "RSYNC",
|
|
196
|
+
0x04: "NUSIZ0", 0x05: "NUSIZ1", 0x06: "COLUP0", 0x07: "COLUP1",
|
|
197
|
+
0x08: "COLUPF", 0x09: "COLUBK", 0x0A: "CTRLPF", 0x0B: "REFP0",
|
|
198
|
+
0x0C: "REFP1", 0x0D: "PF0", 0x0E: "PF1", 0x0F: "PF2",
|
|
199
|
+
0x10: "RESP0", 0x11: "RESP1", 0x12: "RESM0", 0x13: "RESM1",
|
|
200
|
+
0x14: "RESBL", 0x15: "AUDC0", 0x16: "AUDC1", 0x17: "AUDF0",
|
|
201
|
+
0x18: "AUDF1", 0x19: "AUDV0", 0x1A: "AUDV1", 0x1B: "GRP0",
|
|
202
|
+
0x1C: "GRP1", 0x1D: "ENAM0", 0x1E: "ENAM1", 0x1F: "ENABL",
|
|
203
|
+
0x20: "HMP0", 0x21: "HMP1", 0x22: "HMM0", 0x23: "HMM1",
|
|
204
|
+
0x24: "HMBL", 0x25: "VDELP0", 0x26: "VDELP1", 0x27: "VDELBL",
|
|
205
|
+
0x28: "RESMP0", 0x29: "RESMP1", 0x2A: "HMOVE", 0x2B: "HMCLR",
|
|
206
|
+
0x2C: "CXCLR",
|
|
207
|
+
// TIA read regs $30-$3D
|
|
208
|
+
0x30: "CXM0P", 0x31: "CXM1P", 0x32: "CXP0FB", 0x33: "CXP1FB",
|
|
209
|
+
0x34: "CXM0FB", 0x35: "CXM1FB", 0x36: "CXBLPF", 0x37: "CXPPMM",
|
|
210
|
+
0x38: "INPT0", 0x39: "INPT1", 0x3A: "INPT2", 0x3B: "INPT3",
|
|
211
|
+
0x3C: "INPT4", 0x3D: "INPT5",
|
|
212
|
+
// RIOT regs $280-$297
|
|
213
|
+
0x0280: "SWCHA", 0x0281: "SWACNT", 0x0282: "SWCHB", 0x0283: "SWBCNT",
|
|
214
|
+
0x0284: "INTIM", 0x0285: "INSTAT",
|
|
215
|
+
0x0294: "TIM1T", 0x0295: "TIM8T", 0x0296: "TIM64T", 0x0297: "T1024T",
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Atari 7800 (MARIA + TIA-audio + RIOT). Memory map differs from 2600 —
|
|
220
|
+
* registers live at the bottom of the 6502 address space.
|
|
221
|
+
*
|
|
222
|
+
* @type {RegisterTable}
|
|
223
|
+
*/
|
|
224
|
+
export const ATARI7800_REGISTERS = {
|
|
225
|
+
// TIA audio regs (subset, $15-$1A — overlap with 2600 names)
|
|
226
|
+
0x15: "AUDC0", 0x16: "AUDC1", 0x17: "AUDF0", 0x18: "AUDF1",
|
|
227
|
+
0x19: "AUDV0", 0x1A: "AUDV1",
|
|
228
|
+
// MARIA regs $20-$3F
|
|
229
|
+
0x20: "BACKGRND",
|
|
230
|
+
0x21: "P0C1", 0x22: "P0C2", 0x23: "P0C3",
|
|
231
|
+
0x25: "WSYNC",
|
|
232
|
+
0x26: "P1C1", 0x27: "P1C2", 0x28: "P1C3",
|
|
233
|
+
0x29: "MSTAT",
|
|
234
|
+
0x2A: "P2C1", 0x2B: "P2C2", 0x2C: "P2C3",
|
|
235
|
+
0x2E: "P3C1", 0x2F: "P3C2", 0x30: "P3C3",
|
|
236
|
+
0x32: "P4C1", 0x33: "P4C2", 0x34: "P4C3",
|
|
237
|
+
0x36: "P5C1", 0x37: "P5C2", 0x38: "P5C3",
|
|
238
|
+
0x3A: "P6C1", 0x3B: "P6C2", 0x3C: "P6C3",
|
|
239
|
+
0x3E: "P7C1", 0x3F: "P7C2", // P7C3 lives at $40 in some refs
|
|
240
|
+
// DPP (display-list pointer) lives at $84/$85
|
|
241
|
+
0x84: "DPPH", 0x85: "DPPL",
|
|
242
|
+
0x87: "CHARBASE",
|
|
243
|
+
0x88: "OFFSET",
|
|
244
|
+
// MARIA control reg
|
|
245
|
+
0x3C: "CTRL", // overlaps with P6C3 — convention varies; tag both
|
|
246
|
+
// RIOT (6532) regs at $280
|
|
247
|
+
0x0280: "SWCHA", 0x0281: "SWACNT", 0x0282: "SWCHB", 0x0283: "SWBCNT",
|
|
248
|
+
0x0284: "INTIM",
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Commodore 64 register table — VIC-II ($D000-$D02E), SID ($D400-$D41C),
|
|
253
|
+
* CIA1 ($DC00-$DC0F), CIA2 ($DD00-$DD0F), plus the 6510 IO ports at $00/$01.
|
|
254
|
+
* @type {RegisterTable}
|
|
255
|
+
*/
|
|
256
|
+
export const C64_REGISTERS = {
|
|
257
|
+
// 6510 internal I/O ports
|
|
258
|
+
0x0000: "D6510", 0x0001: "R6510",
|
|
259
|
+
// VIC-II $D000-$D02E
|
|
260
|
+
0xD000: "SP0X", 0xD001: "SP0Y", 0xD002: "SP1X", 0xD003: "SP1Y",
|
|
261
|
+
0xD004: "SP2X", 0xD005: "SP2Y", 0xD006: "SP3X", 0xD007: "SP3Y",
|
|
262
|
+
0xD008: "SP4X", 0xD009: "SP4Y", 0xD00A: "SP5X", 0xD00B: "SP5Y",
|
|
263
|
+
0xD00C: "SP6X", 0xD00D: "SP6Y", 0xD00E: "SP7X", 0xD00F: "SP7Y",
|
|
264
|
+
0xD010: "MSIGX", // sprite X bit-8s
|
|
265
|
+
0xD011: "SCROLY", // control reg 1
|
|
266
|
+
0xD012: "RASTER",
|
|
267
|
+
0xD013: "LPENX", 0xD014: "LPENY",
|
|
268
|
+
0xD015: "SPENA", // sprite enable
|
|
269
|
+
0xD016: "SCROLX", // control reg 2
|
|
270
|
+
0xD017: "YXPAND",
|
|
271
|
+
0xD018: "VMCSB", // memory pointers
|
|
272
|
+
0xD019: "VICIRQ",
|
|
273
|
+
0xD01A: "IRQMASK",
|
|
274
|
+
0xD01B: "SPBGPR", // sprite-bg priority
|
|
275
|
+
0xD01C: "SPMC", // sprite multicolor
|
|
276
|
+
0xD01D: "XXPAND",
|
|
277
|
+
0xD01E: "SPSPCL", // sprite-sprite collision
|
|
278
|
+
0xD01F: "SPBGCL", // sprite-data collision
|
|
279
|
+
0xD020: "EXTCOL", // border
|
|
280
|
+
0xD021: "BGCOL0", // background 0
|
|
281
|
+
0xD022: "BGCOL1", 0xD023: "BGCOL2", 0xD024: "BGCOL3",
|
|
282
|
+
0xD025: "SPMC0", 0xD026: "SPMC1",
|
|
283
|
+
0xD027: "SP0COL", 0xD028: "SP1COL", 0xD029: "SP2COL", 0xD02A: "SP3COL",
|
|
284
|
+
0xD02B: "SP4COL", 0xD02C: "SP5COL", 0xD02D: "SP6COL", 0xD02E: "SP7COL",
|
|
285
|
+
// SID $D400-$D41C
|
|
286
|
+
0xD400: "FRELO1", 0xD401: "FREHI1", 0xD402: "PWLO1", 0xD403: "PWHI1",
|
|
287
|
+
0xD404: "VCREG1", 0xD405: "ATDCY1", 0xD406: "SUREL1",
|
|
288
|
+
0xD407: "FRELO2", 0xD408: "FREHI2", 0xD409: "PWLO2", 0xD40A: "PWHI2",
|
|
289
|
+
0xD40B: "VCREG2", 0xD40C: "ATDCY2", 0xD40D: "SUREL2",
|
|
290
|
+
0xD40E: "FRELO3", 0xD40F: "FREHI3", 0xD410: "PWLO3", 0xD411: "PWHI3",
|
|
291
|
+
0xD412: "VCREG3", 0xD413: "ATDCY3", 0xD414: "SUREL3",
|
|
292
|
+
0xD415: "CUTLO", 0xD416: "CUTHI", 0xD417: "RESON", 0xD418: "SIGVOL",
|
|
293
|
+
0xD419: "POTX", 0xD41A: "POTY", 0xD41B: "RANDOM", 0xD41C: "ENV3",
|
|
294
|
+
// CIA1 $DC00-$DC0F (keyboard + joystick + timers + TOD)
|
|
295
|
+
0xDC00: "CIAPRA", 0xDC01: "CIAPRB", 0xDC02: "CIDDRA", 0xDC03: "CIDDRB",
|
|
296
|
+
0xDC04: "TIMALO", 0xDC05: "TIMAHI", 0xDC06: "TIMBLO", 0xDC07: "TIMBHI",
|
|
297
|
+
0xDC08: "TODTEN", 0xDC09: "TODSEC", 0xDC0A: "TODMIN", 0xDC0B: "TODHRS",
|
|
298
|
+
0xDC0C: "CIASDR", 0xDC0D: "CIAICR", 0xDC0E: "CIACRA", 0xDC0F: "CIACRB",
|
|
299
|
+
// CIA2 $DD00-$DD0F (serial bus + VIC bank select + RS232)
|
|
300
|
+
0xDD00: "CI2PRA", 0xDD01: "CI2PRB", 0xDD02: "C2DDRA", 0xDD03: "C2DDRB",
|
|
301
|
+
0xDD04: "TI2ALO", 0xDD05: "TI2AHI", 0xDD06: "TI2BLO", 0xDD07: "TI2BHI",
|
|
302
|
+
0xDD08: "TO2TEN", 0xDD09: "TO2SEC", 0xDD0A: "TO2MIN", 0xDD0B: "TO2HRS",
|
|
303
|
+
0xDD0C: "CI2SDR", 0xDD0D: "CI2ICR", 0xDD0E: "CI2CRA", 0xDD0F: "CI2CRB",
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Look up the register table for a platform id, or null.
|
|
308
|
+
* @param {string} platform
|
|
309
|
+
* @returns {RegisterTable | null}
|
|
310
|
+
*/
|
|
311
|
+
export function registersForPlatform(platform) {
|
|
312
|
+
switch (platform) {
|
|
313
|
+
case "nes": return NES_REGISTERS;
|
|
314
|
+
case "snes": return SNES_REGISTERS;
|
|
315
|
+
case "genesis":
|
|
316
|
+
case "megadrive":
|
|
317
|
+
case "md": return GENESIS_REGISTERS;
|
|
318
|
+
case "gb":
|
|
319
|
+
case "gbc": return GB_REGISTERS;
|
|
320
|
+
case "sms":
|
|
321
|
+
case "gg": return SMS_REGISTERS;
|
|
322
|
+
case "atari2600":
|
|
323
|
+
case "a2600": return ATARI2600_REGISTERS;
|
|
324
|
+
case "atari7800":
|
|
325
|
+
case "a7800": return ATARI7800_REGISTERS;
|
|
326
|
+
case "c64": return C64_REGISTERS;
|
|
327
|
+
default: return null;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Render a contiguous slice of tile bytes as a PNG grid.
|
|
2
|
+
//
|
|
3
|
+
// Works for any platform supported by the tile decoder. Picks a visualization
|
|
4
|
+
// palette based on the platform: NES uses a sample of the NES master palette,
|
|
5
|
+
// GB uses the DMG grays, others fall back to a generic ramp.
|
|
6
|
+
|
|
7
|
+
import { PNG } from "pngjs";
|
|
8
|
+
import { decodeTile } from "./tile-decode.js";
|
|
9
|
+
import { TILE_SPECS } from "./image-to-tiles.js";
|
|
10
|
+
import { NES_PALETTE } from "../nes/palette.js";
|
|
11
|
+
|
|
12
|
+
/** Visualization palette per platform. */
|
|
13
|
+
function vizPalette(platform, colors) {
|
|
14
|
+
if (platform === "nes") {
|
|
15
|
+
// Use a familiar mid-tone NES BG palette: dark blue/gray + 3 tones.
|
|
16
|
+
return [
|
|
17
|
+
NES_PALETTE[0x0f], // black
|
|
18
|
+
NES_PALETTE[0x00], // dark gray
|
|
19
|
+
NES_PALETTE[0x10], // light gray
|
|
20
|
+
NES_PALETTE[0x30], // white
|
|
21
|
+
];
|
|
22
|
+
}
|
|
23
|
+
if (platform === "gb" || platform === "gbc") {
|
|
24
|
+
return [
|
|
25
|
+
[224, 248, 208],
|
|
26
|
+
[136, 192, 112],
|
|
27
|
+
[ 52, 104, 86],
|
|
28
|
+
[ 8, 24, 32],
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
// Generic: linear grayscale ramp scaled to `colors` entries.
|
|
32
|
+
const out = [];
|
|
33
|
+
for (let i = 0; i < colors; i++) {
|
|
34
|
+
const v = Math.round((i / Math.max(1, colors - 1)) * 255);
|
|
35
|
+
out.push([v, v, v]);
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @param {Object} args
|
|
42
|
+
* @param {string} args.platform
|
|
43
|
+
* @param {Uint8Array} args.tileBytes contiguous tile data in platform format
|
|
44
|
+
* @param {number} [args.tilesPerRow]
|
|
45
|
+
* @param {Array<[number,number,number]>} [args.paletteOverride]
|
|
46
|
+
* Explicit RGB palette to use. Length must be >= spec.maxColors.
|
|
47
|
+
* When provided, replaces the default grayscale visualization palette.
|
|
48
|
+
* @returns {Buffer} PNG bytes
|
|
49
|
+
*/
|
|
50
|
+
export function renderTilesGrid(args) {
|
|
51
|
+
const { platform, tileBytes, paletteOverride } = args;
|
|
52
|
+
const tilesPerRow = args.tilesPerRow ?? 16;
|
|
53
|
+
const spec = TILE_SPECS[platform];
|
|
54
|
+
if (!spec) throw new Error(`unknown platform '${platform}'`);
|
|
55
|
+
const bytesPerTile = (8 * 8 * spec.bpp) / 8;
|
|
56
|
+
const totalTiles = Math.floor(tileBytes.length / bytesPerTile);
|
|
57
|
+
const rows = Math.ceil(totalTiles / tilesPerRow);
|
|
58
|
+
const width = tilesPerRow * 8;
|
|
59
|
+
const height = rows * 8;
|
|
60
|
+
|
|
61
|
+
const png = new PNG({ width, height });
|
|
62
|
+
const dst = png.data;
|
|
63
|
+
const palette = paletteOverride && paletteOverride.length >= spec.maxColors
|
|
64
|
+
? paletteOverride
|
|
65
|
+
: vizPalette(platform, spec.maxColors);
|
|
66
|
+
|
|
67
|
+
for (let t = 0; t < totalTiles; t++) {
|
|
68
|
+
const pixels = decodeTile(platform, tileBytes, t);
|
|
69
|
+
const tx = t % tilesPerRow;
|
|
70
|
+
const ty = Math.floor(t / tilesPerRow);
|
|
71
|
+
for (let y = 0; y < 8; y++) {
|
|
72
|
+
for (let x = 0; x < 8; x++) {
|
|
73
|
+
const idx = pixels[y * 8 + x];
|
|
74
|
+
const col = palette[idx] ?? palette[palette.length - 1];
|
|
75
|
+
const dx = tx * 8 + x;
|
|
76
|
+
const dy = ty * 8 + y;
|
|
77
|
+
const o = (dy * width + dx) * 4;
|
|
78
|
+
dst[o + 0] = col[0];
|
|
79
|
+
dst[o + 1] = col[1];
|
|
80
|
+
dst[o + 2] = col[2];
|
|
81
|
+
dst[o + 3] = 0xff;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return PNG.sync.write(png);
|
|
86
|
+
}
|