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,1095 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* \file sprite_eng.h
|
|
3
|
+
* \brief Sprite engine
|
|
4
|
+
* \author Stephane Dallongeville
|
|
5
|
+
* \date 10/2013
|
|
6
|
+
*
|
|
7
|
+
* Sprite engine providing advanced sprites manipulation and operations.<br>
|
|
8
|
+
* This unit use both the vram memory manager (see vram.h file for more info)<br>
|
|
9
|
+
* and the Sega Genesis VDP sprite capabilities (see vdp_spr.h file for more info).
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
#if !LEGACY_SPRITE_ENGINE
|
|
13
|
+
|
|
14
|
+
#ifndef _SPRITE_ENG_H_
|
|
15
|
+
#define _SPRITE_ENG_H_
|
|
16
|
+
|
|
17
|
+
#include "vdp_tile.h"
|
|
18
|
+
#include "vdp_spr.h"
|
|
19
|
+
#include "pal.h"
|
|
20
|
+
#include "pool.h"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* \brief
|
|
25
|
+
* No collision type
|
|
26
|
+
*/
|
|
27
|
+
#define COLLISION_TYPE_NONE 0
|
|
28
|
+
/**
|
|
29
|
+
* \brief
|
|
30
|
+
* Bouding box collision type (Box structure)
|
|
31
|
+
*/
|
|
32
|
+
#define COLLISION_TYPE_BOX 1
|
|
33
|
+
/**
|
|
34
|
+
* \brief
|
|
35
|
+
* Round circle collision type (Circle structure)
|
|
36
|
+
*/
|
|
37
|
+
#define COLLISION_TYPE_CIRCLE 2
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* \brief
|
|
41
|
+
* Special flag to indicate that we want to add the sprite at position 0 (head / top) in the list<br>
|
|
42
|
+
* instead of adding it in last / bottom position (default)
|
|
43
|
+
*/
|
|
44
|
+
#define SPR_FLAG_INSERT_HEAD 0x4000
|
|
45
|
+
/**
|
|
46
|
+
* \brief
|
|
47
|
+
* Disable animation auto loop.<br>
|
|
48
|
+
* By default animation always restart after the last frame has been played.
|
|
49
|
+
* This flag prevent the animation to restart and so the animation end on the last frame forever (see #SPR_getAnimationDone(..))
|
|
50
|
+
*/
|
|
51
|
+
#define SPR_FLAG_DISABLE_ANIMATION_LOOP 0x2000
|
|
52
|
+
/**
|
|
53
|
+
* \brief
|
|
54
|
+
* Disable delaying of frame update when we are running out of DMA capacity.<br>
|
|
55
|
+
* By default we delay the frame update when DMA is already full so the frame update happen as soon we have enough DMA capacity to do it.
|
|
56
|
+
* This flag forces frame update to always happen immediately but that may cause graphical glitches.
|
|
57
|
+
*/
|
|
58
|
+
#define SPR_FLAG_DISABLE_DELAYED_FRAME_UPDATE 0x1000
|
|
59
|
+
/**
|
|
60
|
+
* \brief
|
|
61
|
+
* Enable automatic VRAM allocation
|
|
62
|
+
*/
|
|
63
|
+
#define SPR_FLAG_AUTO_VRAM_ALLOC 0x0800
|
|
64
|
+
/**
|
|
65
|
+
* \brief
|
|
66
|
+
* Enable automatic upload of sprite tiles data into VRAM
|
|
67
|
+
*/
|
|
68
|
+
#define SPR_FLAG_AUTO_TILE_UPLOAD 0x0400
|
|
69
|
+
/**
|
|
70
|
+
* \brief
|
|
71
|
+
* Enable automatic visibility calculation
|
|
72
|
+
*/
|
|
73
|
+
#define SPR_FLAG_AUTO_VISIBILITY 0x0200
|
|
74
|
+
/**
|
|
75
|
+
* \brief
|
|
76
|
+
* Enable fast visibility calculation (only meaningful if SPR_FLAG_AUTO_VISIBILITY is used).<br>
|
|
77
|
+
* If you set this flag the automatic visibility calculation will be done globally for the (meta) sprite and not per internal
|
|
78
|
+
* hardware sprite. This result in faster visibility computation at the expense of using extra (wasting) hardware sprites.
|
|
79
|
+
*/
|
|
80
|
+
#define SPR_FLAG_FAST_AUTO_VISIBILITY 0x0100
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* \brief
|
|
84
|
+
* Mask for sprite flag
|
|
85
|
+
*/
|
|
86
|
+
#define SPR_FLAG_MASK (SPR_FLAG_INSERT_HEAD | SPR_FLAG_DISABLE_DELAYED_FRAME_UPDATE | SPR_FLAG_AUTO_VRAM_ALLOC | SPR_FLAG_AUTO_TILE_UPLOAD | SPR_FLAG_AUTO_VISIBILITY | SPR_FLAG_FAST_AUTO_VISIBILITY)
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* \brief
|
|
90
|
+
* Minimum depth for a sprite (always above others sprites)
|
|
91
|
+
*/
|
|
92
|
+
#define SPR_MIN_DEPTH (-0x8000)
|
|
93
|
+
/**
|
|
94
|
+
* \brief
|
|
95
|
+
* Maximum depth for a sprite (always below others sprites)
|
|
96
|
+
*/
|
|
97
|
+
#define SPR_MAX_DEPTH 0x7FFF
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* \brief
|
|
101
|
+
* Sprite visibility enumeration
|
|
102
|
+
*/
|
|
103
|
+
typedef enum
|
|
104
|
+
{
|
|
105
|
+
VISIBLE, /**< Sprite is visible (no computation needed) */
|
|
106
|
+
HIDDEN, /**< Sprite is hidden (no computation needed) */
|
|
107
|
+
AUTO_FAST, /**< Automatic visibility calculation - FAST (computation made on global meta sprite) */
|
|
108
|
+
AUTO_SLOW, /**< Automatic visibility calculation - SLOW (computation made per hardware sprite) */
|
|
109
|
+
} SpriteVisibility;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* \brief
|
|
113
|
+
* Simple Box structure for collision
|
|
114
|
+
*
|
|
115
|
+
* \param x
|
|
116
|
+
* X position (left)
|
|
117
|
+
* \param y
|
|
118
|
+
* Y position (top)
|
|
119
|
+
* \param w
|
|
120
|
+
* width
|
|
121
|
+
* \param h
|
|
122
|
+
* heigth
|
|
123
|
+
*/
|
|
124
|
+
typedef struct
|
|
125
|
+
{
|
|
126
|
+
s8 x;
|
|
127
|
+
s8 y;
|
|
128
|
+
u8 w;
|
|
129
|
+
u8 h;
|
|
130
|
+
} BoxCollision;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* \brief
|
|
134
|
+
* Simple Circle structure (can be used for collision detection)
|
|
135
|
+
*
|
|
136
|
+
* \param x
|
|
137
|
+
* X center position
|
|
138
|
+
* \param y
|
|
139
|
+
* Y center position
|
|
140
|
+
* \param ray
|
|
141
|
+
* circle ray
|
|
142
|
+
*/
|
|
143
|
+
typedef struct
|
|
144
|
+
{
|
|
145
|
+
s8 x;
|
|
146
|
+
s8 y;
|
|
147
|
+
u16 ray;
|
|
148
|
+
} CircleCollision;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* \struct Collision
|
|
152
|
+
* \brief
|
|
153
|
+
* Collision definition union.
|
|
154
|
+
*
|
|
155
|
+
* \param typeHit
|
|
156
|
+
* Collision type for hit collision:<br>
|
|
157
|
+
* Allowed values are #COLLISION_TYPE_BOX or #COLLISION_TYPE_CIRCLE.
|
|
158
|
+
* \param typeAttack
|
|
159
|
+
* Collision type for attack collision (can be used as alternative hit collision):<br>
|
|
160
|
+
* Allowed values are #COLLISION_TYPE_BOX or #COLLISION_TYPE_CIRCLE.
|
|
161
|
+
* \param box
|
|
162
|
+
* BoxCollision definition if type = #COLLISION_TYPE_BOX
|
|
163
|
+
* \param circle
|
|
164
|
+
* CircleCollision definition if type = #COLLISION_TYPE_CIRCLE
|
|
165
|
+
* \param inner
|
|
166
|
+
* if current collision is verified then we test inner for more precise collision if needed
|
|
167
|
+
* \param next
|
|
168
|
+
* if current collision is not verified then we test next for next collision if needed
|
|
169
|
+
*/
|
|
170
|
+
typedef struct _collision
|
|
171
|
+
{
|
|
172
|
+
u8 typeHit;
|
|
173
|
+
u8 typeAttack;
|
|
174
|
+
union
|
|
175
|
+
{
|
|
176
|
+
BoxCollision box;
|
|
177
|
+
CircleCollision circle;
|
|
178
|
+
} hit;
|
|
179
|
+
union
|
|
180
|
+
{
|
|
181
|
+
BoxCollision box;
|
|
182
|
+
CircleCollision circle;
|
|
183
|
+
} attack;
|
|
184
|
+
} Collision;
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* \brief
|
|
188
|
+
* Single VDP sprite info structure for sprite animation frame.
|
|
189
|
+
*
|
|
190
|
+
* \param offsetY
|
|
191
|
+
* Y offset for this VDP sprite relative to global Sprite position
|
|
192
|
+
* \param offsetYFlip
|
|
193
|
+
* Y offset (flip version) for this VDP sprite relative to global Sprite position
|
|
194
|
+
* \param size
|
|
195
|
+
* sprite size (see SPRITE_SIZE macro)
|
|
196
|
+
* \param offsetX
|
|
197
|
+
* X offset for this VDP sprite relative to global Sprite position
|
|
198
|
+
* \param offsetXFlip
|
|
199
|
+
* X offset (flip version) for this VDP sprite relative to global Sprite position
|
|
200
|
+
* \param numTile
|
|
201
|
+
* number of tile for this VDP sprite (should be coherent with the given size field)
|
|
202
|
+
*/
|
|
203
|
+
typedef struct
|
|
204
|
+
{
|
|
205
|
+
u8 offsetY; // respect VDP sprite field order, may help
|
|
206
|
+
u8 offsetYFlip;
|
|
207
|
+
u8 size;
|
|
208
|
+
u8 offsetX;
|
|
209
|
+
u8 offsetXFlip;
|
|
210
|
+
u8 numTile;
|
|
211
|
+
} FrameVDPSprite;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* \brief
|
|
215
|
+
* Sprite animation frame structure.
|
|
216
|
+
*
|
|
217
|
+
* \param numSprite
|
|
218
|
+
* number of VDP sprite which compose this frame.
|
|
219
|
+
* bit 7 is used as a special flag for the sprite engine so always use 'numSprite & 0x7F' to just retrieve the number of sprite
|
|
220
|
+
* \param timer
|
|
221
|
+
* active time for this frame (in 1/60 of second)
|
|
222
|
+
* \param tileset
|
|
223
|
+
* tileset containing tiles for this animation frame (ordered for sprite)
|
|
224
|
+
* \param collision
|
|
225
|
+
* collision structure (not used currently)
|
|
226
|
+
* \param frameSprites
|
|
227
|
+
* array of VDP sprites info composing the frame
|
|
228
|
+
*/
|
|
229
|
+
typedef struct
|
|
230
|
+
{
|
|
231
|
+
s8 numSprite;
|
|
232
|
+
u8 timer;
|
|
233
|
+
TileSet* tileset; // TODO: have a tileset per VDP sprite --> probably not a good idea performance wise
|
|
234
|
+
Collision* collision; // Require many DMA queue operations and fast DMA flush as well, also bring extra computing in calculating delayed update
|
|
235
|
+
FrameVDPSprite frameVDPSprites[];
|
|
236
|
+
} AnimationFrame;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* \brief
|
|
240
|
+
* Sprite animation structure.
|
|
241
|
+
*
|
|
242
|
+
* \param numFrame
|
|
243
|
+
* number of different frame for this animation (max = 255)
|
|
244
|
+
* \param loop
|
|
245
|
+
* frame index for loop (last index if no loop)
|
|
246
|
+
* \param frames
|
|
247
|
+
* frames composing the animation
|
|
248
|
+
*/
|
|
249
|
+
typedef struct
|
|
250
|
+
{
|
|
251
|
+
u8 numFrame;
|
|
252
|
+
u8 loop;
|
|
253
|
+
AnimationFrame** frames;
|
|
254
|
+
} Animation;
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* \brief
|
|
258
|
+
* Sprite definition structure.
|
|
259
|
+
*
|
|
260
|
+
* \param w
|
|
261
|
+
* frame cell width in pixel
|
|
262
|
+
* \param h
|
|
263
|
+
* frame cell height in pixel
|
|
264
|
+
* \param palette
|
|
265
|
+
* default palette data
|
|
266
|
+
* \param numAnimation
|
|
267
|
+
* number of animation for this sprite
|
|
268
|
+
* \param animations
|
|
269
|
+
* animation definitions
|
|
270
|
+
* \param maxNumTile
|
|
271
|
+
* maximum number of tile used by a single animation frame (used for VRAM tile space allocation)
|
|
272
|
+
* \param maxNumSprite
|
|
273
|
+
* maximum number of VDP sprite used by a single animation frame (used for VDP sprite allocation)
|
|
274
|
+
*
|
|
275
|
+
* Contains all animations for a Sprite and internal informations.
|
|
276
|
+
*/
|
|
277
|
+
typedef struct
|
|
278
|
+
{
|
|
279
|
+
u16 w;
|
|
280
|
+
u16 h;
|
|
281
|
+
Palette* palette;
|
|
282
|
+
u16 numAnimation;
|
|
283
|
+
Animation** animations;
|
|
284
|
+
u16 maxNumTile;
|
|
285
|
+
u16 maxNumSprite;
|
|
286
|
+
} SpriteDefinition;
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* \brief
|
|
290
|
+
* Sprite structure used by the Sprite Engine to store state for a sprite.<br>
|
|
291
|
+
* WARNING: always use the #SPR_addSprite(..) method to allocate Sprite object.<br>
|
|
292
|
+
*
|
|
293
|
+
* \param status
|
|
294
|
+
* Internal state and automatic allocation information (internal)
|
|
295
|
+
* \param visibility
|
|
296
|
+
* visibility information of current frame for each VDP sprite (max = 16)
|
|
297
|
+
* \param spriteDef
|
|
298
|
+
* Sprite definition pointer
|
|
299
|
+
* \param onFrameChange
|
|
300
|
+
* Custom callback on frame change event (see #SPR_setFrameChangeCallback(..) method)
|
|
301
|
+
* \param animation
|
|
302
|
+
* Animation pointer cache (internal)
|
|
303
|
+
* \param frame
|
|
304
|
+
* AnimationFrame pointer cache (internal)
|
|
305
|
+
* \param animInd
|
|
306
|
+
* current animation index (internal)
|
|
307
|
+
* \param frameInd
|
|
308
|
+
* current frame animation index (internal)
|
|
309
|
+
* \param timer
|
|
310
|
+
* timer for current frame (internal)
|
|
311
|
+
* \param x
|
|
312
|
+
* current sprite X position on screen offseted by 0x80 (internal VDP position)
|
|
313
|
+
* \param y
|
|
314
|
+
* current sprite Y position on screen offseted by 0x80 (internal VDP position)
|
|
315
|
+
* \param depth
|
|
316
|
+
* current sprite depth (Z) position used for Z sorting
|
|
317
|
+
* \param attribut
|
|
318
|
+
* sprite specific attribut and allocated VRAM tile index (see TILE_ATTR_FULL() macro)
|
|
319
|
+
* \param data
|
|
320
|
+
* this is a free field for user data, use it for whatever you want (flags, pointer...)
|
|
321
|
+
* \param prev
|
|
322
|
+
* pointer on previous Sprite in list
|
|
323
|
+
* \param next
|
|
324
|
+
* pointer on next Sprite in list
|
|
325
|
+
*
|
|
326
|
+
* Used to manage an active sprite in game condition.
|
|
327
|
+
*/
|
|
328
|
+
typedef struct Sprite
|
|
329
|
+
{
|
|
330
|
+
u16 status;
|
|
331
|
+
u16 visibility;
|
|
332
|
+
const SpriteDefinition* definition;
|
|
333
|
+
void (*onFrameChange)(struct Sprite* sprite);
|
|
334
|
+
Animation* animation;
|
|
335
|
+
AnimationFrame* frame;
|
|
336
|
+
s16 animInd;
|
|
337
|
+
s16 frameInd;
|
|
338
|
+
s16 timer;
|
|
339
|
+
s16 x;
|
|
340
|
+
s16 y;
|
|
341
|
+
s16 depth;
|
|
342
|
+
u16 attribut;
|
|
343
|
+
u32 data;
|
|
344
|
+
struct Sprite* prev;
|
|
345
|
+
struct Sprite* next;
|
|
346
|
+
} Sprite;
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* \brief
|
|
350
|
+
* Sprite frame change event callback.<br>
|
|
351
|
+
*
|
|
352
|
+
* \param sprite
|
|
353
|
+
* The sprite for which frame just changed.
|
|
354
|
+
*
|
|
355
|
+
* This event occurs onframe change process during #SPR_update() call (CAUTION: sprite->status field is not up to date at this point).<br>
|
|
356
|
+
* It let opportunity to the developer to apply special behavior or process when sprite frame just changed:<br>
|
|
357
|
+
* for instance we can disable animation looping by setting sprite->timer to 0 when we meet the last animation frame.
|
|
358
|
+
*/
|
|
359
|
+
typedef void FrameChangeCallback(Sprite* sprite);
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Sprites object pool for the sprite engine
|
|
363
|
+
*/
|
|
364
|
+
extern Pool* spritesPool;
|
|
365
|
+
/**
|
|
366
|
+
* First allocated sprite (NULL if no sprite allocated)
|
|
367
|
+
*/
|
|
368
|
+
extern Sprite* firstSprite;
|
|
369
|
+
/**
|
|
370
|
+
* Last allocated sprite (NULL if no sprite allocated)
|
|
371
|
+
*/
|
|
372
|
+
extern Sprite* lastSprite;
|
|
373
|
+
/**
|
|
374
|
+
* Allocated VRAM (in tile) for Sprite Engine
|
|
375
|
+
*/
|
|
376
|
+
extern u16 spriteVramSize;
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* \brief
|
|
381
|
+
* Initialize the Sprite engine with default parameters.
|
|
382
|
+
*
|
|
383
|
+
* Initialize the sprite engine using default parameters (420 reserved tiles in VRAM).<br>
|
|
384
|
+
* This also initialize the hardware sprite allocation system.
|
|
385
|
+
*
|
|
386
|
+
* \see SPR_initEx(void)
|
|
387
|
+
* \see SPR_end(void)
|
|
388
|
+
*/
|
|
389
|
+
void SPR_init(void);
|
|
390
|
+
/**
|
|
391
|
+
* \brief
|
|
392
|
+
* Init the Sprite engine with specified advanced parameters (VRAM allocation size and decompression buffer size).
|
|
393
|
+
*
|
|
394
|
+
* \param vramSize
|
|
395
|
+
* size (in tile) of the VRAM region for the automatic VRAM tile allocation.<br>
|
|
396
|
+
* If set to 0 the default size is used (420 tiles)
|
|
397
|
+
*
|
|
398
|
+
* Initialize the sprite engine.<br>
|
|
399
|
+
* This allocates a VRAM region for sprite tiles and initialize hardware sprite allocation system.
|
|
400
|
+
*
|
|
401
|
+
* \see SPR_init(void)
|
|
402
|
+
* \see SPR_end(void)
|
|
403
|
+
*/
|
|
404
|
+
void SPR_initEx(u16 vramSize);
|
|
405
|
+
/**
|
|
406
|
+
* \brief
|
|
407
|
+
* End the Sprite engine.
|
|
408
|
+
*
|
|
409
|
+
* End the sprite engine and release attached resources.<br>
|
|
410
|
+
* This releases the allocated VRAM region and hardware sprites.
|
|
411
|
+
*/
|
|
412
|
+
void SPR_end(void);
|
|
413
|
+
/**
|
|
414
|
+
* \brief
|
|
415
|
+
* FALSE if sprite cache engine is not initialized, TRUE otherwise.
|
|
416
|
+
*/
|
|
417
|
+
bool SPR_isInitialized(void);
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* \brief
|
|
421
|
+
* Reset the Sprite engine.<br>
|
|
422
|
+
*
|
|
423
|
+
* This method releases all allocated sprites and their resources.
|
|
424
|
+
*/
|
|
425
|
+
void SPR_reset(void);
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* \brief
|
|
429
|
+
* Adds a new sprite with specified parameters and returns it.
|
|
430
|
+
*
|
|
431
|
+
* \param spriteDef
|
|
432
|
+
* the SpriteDefinition data to assign to this sprite.
|
|
433
|
+
* \param x
|
|
434
|
+
* default X position.
|
|
435
|
+
* \param y
|
|
436
|
+
* default Y position.
|
|
437
|
+
* \param attribut
|
|
438
|
+
* sprite attribut (see TILE_ATTR() macro).
|
|
439
|
+
* \param flag
|
|
440
|
+
* specific settings for this sprite:<br>
|
|
441
|
+
* #SPR_FLAG_DISABLE_DELAYED_FRAME_UPDATE = Disable delaying of frame update when we are running out of DMA capacity.<br>
|
|
442
|
+
* If you set this flag then sprite frame update always happen immediately but may lead to some graphical glitches (tiles data and sprite table data not synchronized).
|
|
443
|
+
* You can use SPR_setDelayedFrameUpdate(..) method to change this setting.<br>
|
|
444
|
+
* #SPR_FLAG_AUTO_VISIBILITY = Enable automatic sprite visibility calculation (you can also use SPR_setVisibility(..) method).<br>
|
|
445
|
+
* #SPR_FLAG_FAST_AUTO_VISIBILITY = Enable fast computation for the automatic visibility calculation (disabled by default)<br>
|
|
446
|
+
* If you set this flag the automatic visibility calculation will be done globally for the (meta) sprite and not per internal
|
|
447
|
+
* hardware sprite. This result in faster visibility computation at the expense of some waste of hardware sprite.
|
|
448
|
+
* You can set the automatic visibility computation by using SPR_setVisibility(..) method.<br>
|
|
449
|
+
* #SPR_FLAG_AUTO_VRAM_ALLOC = Enable automatic VRAM allocation (enabled by default)<br>
|
|
450
|
+
* If you don't set this flag you will have to manually define VRAM tile index position for this sprite with the <i>attribut</i> parameter or by using the #SPR_setVRAMTileIndex(..) method<br>
|
|
451
|
+
* #SPR_FLAG_AUTO_TILE_UPLOAD = Enable automatic upload of sprite tiles data into VRAM (enabled by default)<br>
|
|
452
|
+
* If you don't set this flag you will have to manually upload tiles data of sprite into the VRAM (you can change this setting using #SPR_setAutoTileUpload(..) method).<br>
|
|
453
|
+
* #SPR_FLAG_INSERT_HEAD = Allow to insert the sprite at the start/head of the list.<br>
|
|
454
|
+
* When you use this flag the sprite will be inserted at the head of the list making it top most (equivalent to #SPR_setDepth(#SPR_MIN_DEPTH))<br>
|
|
455
|
+
* while default insertion position is at the end of the list (equivalent to #SPR_setDepth(#SPR_MAX_DEPTH))<br>
|
|
456
|
+
* <br>
|
|
457
|
+
* It's recommended to use the following default settings:<br>
|
|
458
|
+
* SPR_FLAG_AUTO_VISIBILITY | SPR_FLAG_AUTO_VRAM_ALLOC | SPR_FLAG_AUTO_TILE_UPLOAD<br>
|
|
459
|
+
* \return the new sprite or <i>NULL</i> if the operation failed (some logs can be generated in the KMod console in this case)
|
|
460
|
+
*
|
|
461
|
+
* By default the sprite uses the provided flag setting for automatic resources allocation and sprite visibility computation.<br>
|
|
462
|
+
* If auto visibility is not enabled then sprite is considered as not visible by default (see SPR_setVisibility(..) method).<br>
|
|
463
|
+
* You can release all sprite resources by using SPR_releaseSprite(..) or SPR_reset(..).<br>
|
|
464
|
+
* IMPORTANT NOTE: sprite allocation can fail (return NULL) when you are using auto VRAM allocation (SPR_FLAG_AUTO_VRAM_ALLOC) even if there is enough VRAM available,<br>
|
|
465
|
+
* this can happen because of the VRAM fragmentation. You can use #SPR_addSpriteExSafe(..) method instead so it take care about VRAM fragmentation.
|
|
466
|
+
*
|
|
467
|
+
* \see SPR_addSprite(..)
|
|
468
|
+
* \see SPR_addSpriteExSafe(..)
|
|
469
|
+
* \see SPR_releaseSprite(..)
|
|
470
|
+
*/
|
|
471
|
+
Sprite* SPR_addSpriteEx(const SpriteDefinition* spriteDef, s16 x, s16 y, u16 attribut, u16 flag);
|
|
472
|
+
/**
|
|
473
|
+
* \brief
|
|
474
|
+
* Adds a new sprite with auto resource allocation enabled and returns it.
|
|
475
|
+
*
|
|
476
|
+
* \param spriteDef
|
|
477
|
+
* the SpriteDefinition data to assign to this sprite.
|
|
478
|
+
* \param x
|
|
479
|
+
* default X position.
|
|
480
|
+
* \param y
|
|
481
|
+
* default Y position.
|
|
482
|
+
* \param attribut
|
|
483
|
+
* sprite attribut (see TILE_ATTR() macro).
|
|
484
|
+
* \return the new sprite or <i>NULL</i> if the operation failed (some logs can be generated in the KMod console in this case)
|
|
485
|
+
*
|
|
486
|
+
* By default the sprite uses automatic resources allocation (VRAM and hardware sprite) and visibility is set to ON.<br>
|
|
487
|
+
* You can change these defaults settings later by calling SPR_setVRAMTileIndex(..), SPR_setAutoTileUpload(..) and SPR_setVisibility(..) methods.<br>
|
|
488
|
+
* You can release all sprite resources by using SPR_releaseSprite(..) or SPR_reset(..).<br>
|
|
489
|
+
* IMPORTANT NOTE: sprite allocation can fail (return NULL) because of automatic VRAM allocation even if there is enough VRAM available,
|
|
490
|
+
* this can happen because of the VRAM fragmentation.<br> You can use #SPR_addSpriteSafe(..) method instead so it take care about VRAM fragmentation.
|
|
491
|
+
*
|
|
492
|
+
* \see SPR_addSpriteEx(..)
|
|
493
|
+
* \see SPR_addSpriteSafe(..)
|
|
494
|
+
* \see SPR_releaseSprite(..)
|
|
495
|
+
*/
|
|
496
|
+
Sprite* SPR_addSprite(const SpriteDefinition* spriteDef, s16 x, s16 y, u16 attribut);
|
|
497
|
+
/**
|
|
498
|
+
* \brief
|
|
499
|
+
* Adds a new sprite with specified parameters and returns it.
|
|
500
|
+
*
|
|
501
|
+
* \param spriteDef
|
|
502
|
+
* the SpriteDefinition data to assign to this sprite.
|
|
503
|
+
* \param x
|
|
504
|
+
* default X position.
|
|
505
|
+
* \param y
|
|
506
|
+
* default Y position.
|
|
507
|
+
* \param attribut
|
|
508
|
+
* sprite attribut (see TILE_ATTR() macro).
|
|
509
|
+
* \param flag
|
|
510
|
+
* specific settings for this sprite:<br>
|
|
511
|
+
* #SPR_FLAG_DISABLE_DELAYED_FRAME_UPDATE = Disable delaying of frame update when we are running out of DMA capacity.<br>
|
|
512
|
+
* If you set this flag then sprite frame update always happen immediately but may lead to some graphical glitches (tiles data and sprite table data not synchronized).
|
|
513
|
+
* You can use SPR_setDelayedFrameUpdate(..) method to change this setting.<br>
|
|
514
|
+
* #SPR_FLAG_AUTO_VISIBILITY = Enable automatic sprite visibility calculation (you can also use SPR_setVisibility(..) method).<br>
|
|
515
|
+
* #SPR_FLAG_FAST_AUTO_VISIBILITY = Enable fast computation for the automatic visibility calculation (disabled by default)<br>
|
|
516
|
+
* If you set this flag the automatic visibility calculation will be done globally for the (meta) sprite and not per internal
|
|
517
|
+
* hardware sprite. This result in faster visibility computation at the expense of some waste of hardware sprite (scanline limit).
|
|
518
|
+
* You can set the automatic visibility computation by using SPR_setVisibility(..) method.<br>
|
|
519
|
+
* #SPR_FLAG_AUTO_VRAM_ALLOC = Enable automatic VRAM allocation (enabled by default)<br>
|
|
520
|
+
* If you don't set this flag you will have to manually define VRAM tile index position for this sprite with the <i>attribut</i> parameter or by using the #SPR_setVRAMTileIndex(..) method<br>
|
|
521
|
+
* #SPR_FLAG_AUTO_TILE_UPLOAD = Enable automatic upload of sprite tiles data into VRAM (enabled by default)<br>
|
|
522
|
+
* If you don't set this flag you will have to manually upload tiles data of sprite into the VRAM (you can change this setting using #SPR_setAutoTileUpload(..) method).<br>
|
|
523
|
+
* #SPR_FLAG_INSERT_HEAD = Allow to insert the sprite at the start/head of the list.<br>
|
|
524
|
+
* When you use this flag the sprite will be inserted at the head of the list making it top most (equivalent to #SPR_setDepth(#SPR_MIN_DEPTH))<br>
|
|
525
|
+
* while default insertion position is at the end of the list (equivalent to #SPR_setDepth(#SPR_MAX_DEPTH))<br>
|
|
526
|
+
* <br>
|
|
527
|
+
* It's recommended to use the following default settings:<br>
|
|
528
|
+
* SPR_FLAG_AUTO_VISIBILITY | SPR_FLAG_AUTO_VRAM_ALLOC | SPR_FLAG_AUTO_TILE_UPLOAD<br>
|
|
529
|
+
* \return the new sprite or <i>NULL</i> if the operation failed (some logs can be generated in the KMod console in this case)
|
|
530
|
+
*
|
|
531
|
+
* By default the sprite uses the provided flag setting for automatic resources allocation and sprite visibility computation.<br>
|
|
532
|
+
* If auto visibility is not enabled then sprite is considered as not visible by default (see SPR_setVisibility(..) method).<br>
|
|
533
|
+
* You can release all sprite resources by using SPR_releaseSprite(..) or SPR_reset(..).
|
|
534
|
+
*
|
|
535
|
+
* \see SPR_addSpriteSafe(..)
|
|
536
|
+
* \see SPR_addSpriteEx(..)
|
|
537
|
+
* \see SPR_releaseSprite(..)
|
|
538
|
+
*/
|
|
539
|
+
Sprite* SPR_addSpriteExSafe(const SpriteDefinition* spriteDef, s16 x, s16 y, u16 attribut, u16 flag);
|
|
540
|
+
/**
|
|
541
|
+
* \brief
|
|
542
|
+
* Adds a new sprite with auto resource allocation enabled and returns it.
|
|
543
|
+
*
|
|
544
|
+
* \param spriteDef
|
|
545
|
+
* the SpriteDefinition data to assign to this sprite.
|
|
546
|
+
* \param x
|
|
547
|
+
* default X position.
|
|
548
|
+
* \param y
|
|
549
|
+
* default Y position.
|
|
550
|
+
* \param attribut
|
|
551
|
+
* sprite attribut (see TILE_ATTR() macro).
|
|
552
|
+
* \return the new sprite or <i>NULL</i> if the operation failed (some logs can be generated in the KMod console in this case)
|
|
553
|
+
*
|
|
554
|
+
* By default the sprite uses automatic resources allocation (VRAM and hardware sprite) and visibility is set to ON.<br>
|
|
555
|
+
* You can change these defaults settings later by calling SPR_setVRAMTileIndex(..), SPR_setAutoTileUpload(..) and SPR_setVisibility(..) methods.<br>
|
|
556
|
+
* You can release all sprite resources by using SPR_releaseSprite(..) or SPR_reset(..).<
|
|
557
|
+
*
|
|
558
|
+
* \see SPR_addSpriteSafeEx(..)
|
|
559
|
+
* \see SPR_addSprite(..)
|
|
560
|
+
* \see SPR_releaseSprite(..)
|
|
561
|
+
*/
|
|
562
|
+
Sprite* SPR_addSpriteSafe(const SpriteDefinition* spriteDef, s16 x, s16 y, u16 attribut);
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* \brief
|
|
566
|
+
* Release the specified sprite (no more visible and release its resources).
|
|
567
|
+
*
|
|
568
|
+
* \param sprite
|
|
569
|
+
* Sprite to release
|
|
570
|
+
*
|
|
571
|
+
* This method release resources for the specified Sprite object and remove it from the screen at next SPR_update() call.
|
|
572
|
+
*
|
|
573
|
+
* \see SPR_releasesSprite(..)
|
|
574
|
+
*/
|
|
575
|
+
void SPR_releaseSprite(Sprite* sprite);
|
|
576
|
+
/**
|
|
577
|
+
* \brief
|
|
578
|
+
* Returns the number of active sprite (number of sprite added with SPR_addSprite(..) or SPR_addSpriteEx(..) methods).
|
|
579
|
+
*/
|
|
580
|
+
u16 SPR_getNumActiveSprite(void);
|
|
581
|
+
/**
|
|
582
|
+
* \brief
|
|
583
|
+
* Returns the (maximum) number of used VDP sprite from current active sprites (sum of maximum hardware sprite usage from all active sprites).
|
|
584
|
+
*/
|
|
585
|
+
u16 SPR_getUsedVDPSprite(void);
|
|
586
|
+
/**
|
|
587
|
+
* \brief
|
|
588
|
+
* Returns the current remaining free VRAM (in tile) for the sprite engine.
|
|
589
|
+
*/
|
|
590
|
+
u16 SPR_getFreeVRAM(void);
|
|
591
|
+
/**
|
|
592
|
+
* \brief
|
|
593
|
+
* Return the current largest free VRAM block size (in tile) for the sprite engine.
|
|
594
|
+
*/
|
|
595
|
+
u16 SPR_getLargestFreeVRAMBlock(void);
|
|
596
|
+
|
|
597
|
+
/**
|
|
598
|
+
* \brief
|
|
599
|
+
* Indicate that we want to prevent adding a new sprite if there is possibly not enough hardware sprite to display it
|
|
600
|
+
* (counting the maximum hardware sprite usage from all active sprites) and so this ensures to always display all of them.<br>
|
|
601
|
+
* By default the sprite engine allow to add a new sprite even if we may run out of hardware sprite to display all of them,
|
|
602
|
+
* that can lead to some sprite disappearence in some situations but ultimately it allows to handle more active sprites at once.
|
|
603
|
+
*
|
|
604
|
+
* \see SPR_disableVDPSpriteChecking(..)
|
|
605
|
+
* \see SPR_getNumVDPSprite(..)
|
|
606
|
+
*/
|
|
607
|
+
void SPR_enableVDPSpriteChecking();
|
|
608
|
+
/**
|
|
609
|
+
* \brief
|
|
610
|
+
* Indicate that we allow the sprite engine to add a new sprite even if we may run out of hardware sprite to display all of them,
|
|
611
|
+
* that can lead to some sprite disappearence in some situation but ultimately it allows to handle more active sprites at once (default behavior).
|
|
612
|
+
*
|
|
613
|
+
* \see SPR_enableVDPSpriteChecking(..)
|
|
614
|
+
* \see SPR_getNumVDPSprite(..)
|
|
615
|
+
*/
|
|
616
|
+
void SPR_disableVDPSpriteChecking();
|
|
617
|
+
/**
|
|
618
|
+
* \brief
|
|
619
|
+
* Defragment allocated VRAM for sprites, that can help when sprite allocation fail (SPR_addSprite(..) or SPR_addSpriteEx(..) return <i>NULL</i>).
|
|
620
|
+
*/
|
|
621
|
+
void SPR_defragVRAM(void);
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* \brief
|
|
625
|
+
* Load all frames of SpriteDefinition using DMA at specified VRAM tile index and return the indexes table.<br>
|
|
626
|
+
* <b>WARNING: This function should be call at init/loading time as it can be quite long (several frames)</b>
|
|
627
|
+
*
|
|
628
|
+
* \param sprDef
|
|
629
|
+
* the SpriteDefinition we want to load frame data in VRAM.
|
|
630
|
+
* \param index
|
|
631
|
+
* the tile position in VRAM where we will upload all sprite frame tiles data.
|
|
632
|
+
* \param totalNumTile
|
|
633
|
+
* if not NULL then the function will store here the total number of tile used to load all animation frames.
|
|
634
|
+
* \param tm
|
|
635
|
+
* Transfer method to upload sprite frame data.<br>
|
|
636
|
+
* Accepted values are:<br>
|
|
637
|
+
* - CPU<br>
|
|
638
|
+
* - DMA<br>
|
|
639
|
+
* - DMA_QUEUE<br>
|
|
640
|
+
* - DMA_QUEUE_COPY<br>
|
|
641
|
+
*
|
|
642
|
+
* Load all frames of spriteDef at specified VRAM tile index and return the indexes table.<br>
|
|
643
|
+
* The returned index table is a dynamically allocated 2D table[anim][frame] so you need to release it using #MEM_free(..)
|
|
644
|
+
* when you don't need the table anymore.<br>
|
|
645
|
+
* You can use the frame change callback (see #SPR_setFrameChangeCallback(..)) to automatically update the VRAM index using the indexes table:<br>
|
|
646
|
+
* <code>frameIndexes = SPR_loadAllFrames(sprite->definition, ind);<br>
|
|
647
|
+
* SPR_setFrameChangeCallback(sprite, &frameChanged);<br>
|
|
648
|
+
* ....<br>
|
|
649
|
+
* void frameChanged(Sprite* sprite)<br>
|
|
650
|
+
* {<br>
|
|
651
|
+
* u16 tileIndex = frameIndexes[sprite->animInd][sprite->frameInd];<br>
|
|
652
|
+
* SPR_setVRAMTileIndex(sprite, tileIndex);<br>
|
|
653
|
+
* }</code>
|
|
654
|
+
*
|
|
655
|
+
* \return the 2D indexes table or NULL if there is not enough memory to allocate the table.
|
|
656
|
+
* \see SPR_setFrameChangeCallback(...);
|
|
657
|
+
*/
|
|
658
|
+
u16** SPR_loadAllFramesEx(const SpriteDefinition* sprDef, u16 index, u16* totalNumTile, TransferMethod tm);
|
|
659
|
+
/**
|
|
660
|
+
* \brief
|
|
661
|
+
* Same as all frames of SpriteDefinition at specified VRAM tile index and return the indexes table.<br>
|
|
662
|
+
* <b>WARNING: This function should be call at init/loading time as it can be quite long (several frames)</b>
|
|
663
|
+
*
|
|
664
|
+
* \param sprDef
|
|
665
|
+
* the SpriteDefinition we want to load frame data in VRAM.
|
|
666
|
+
* \param index
|
|
667
|
+
* the tile position in VRAM where we will upload all sprite frame tiles data.
|
|
668
|
+
* \param totalNumTile
|
|
669
|
+
* if not NULL then the function will store here the total number of tile used to load all animation frames.
|
|
670
|
+
*
|
|
671
|
+
* Load all frames of spriteDef (using DMA) at specified VRAM tile index and return the indexes table.<br>
|
|
672
|
+
* The returned index table is a dynamically allocated 2D table[anim][frame] so you need to release it using #MEM_free(..)
|
|
673
|
+
* when you don't need the table anymore.<br>
|
|
674
|
+
* You can use the frame change callback (see #SPR_setFrameChangeCallback(..)) to automatically update the VRAM index using the indexes table:<br>
|
|
675
|
+
* <code>frameIndexes = SPR_loadAllFrames(sprite->definition, ind);<br>
|
|
676
|
+
* SPR_setFrameChangeCallback(sprite, &frameChanged);<br>
|
|
677
|
+
* ....<br>
|
|
678
|
+
* void frameChanged(Sprite* sprite)<br>
|
|
679
|
+
* {<br>
|
|
680
|
+
* u16 tileIndex = frameIndexes[sprite->animInd][sprite->frameInd];<br>
|
|
681
|
+
* SPR_setVRAMTileIndex(sprite, tileIndex);<br>
|
|
682
|
+
* }</code>
|
|
683
|
+
*
|
|
684
|
+
* \return the 2D indexes table or NULL if there is not enough memory to allocate the table.
|
|
685
|
+
* \see SPR_setFrameChangeCallback(...);
|
|
686
|
+
*/
|
|
687
|
+
u16** SPR_loadAllFrames(const SpriteDefinition* sprDef, u16 index, u16* totalNumTile);
|
|
688
|
+
/**
|
|
689
|
+
* \brief
|
|
690
|
+
* Same as #SPR_loadAllFrames(..) but only computes the indexes table without actually loading the Sprite frame data to VRAM (see #SPR_loadAllTiles(..) for that).
|
|
691
|
+
*
|
|
692
|
+
* \param sprDef
|
|
693
|
+
* the SpriteDefinition we want to compute the indexes table.
|
|
694
|
+
* \param index
|
|
695
|
+
* the tile position in VRAM where we want to upload all sprite frame data (note that VRAM data upload won't be done here).
|
|
696
|
+
* \param totalNumTile
|
|
697
|
+
* if not NULL then the function will store here the total number of tile used to load all animation frames.
|
|
698
|
+
*
|
|
699
|
+
* \return the 2D indexes table or NULL if there is not enough memory to allocate the table.
|
|
700
|
+
* \see SPR_loadAllFrames(...)
|
|
701
|
+
* \see SPR_loadAllTiles(...)
|
|
702
|
+
*/
|
|
703
|
+
u16** SPR_loadAllIndexes(const SpriteDefinition* sprDef, u16 index, u16* totalNumTile);
|
|
704
|
+
/**
|
|
705
|
+
* \brief
|
|
706
|
+
* Same as #SPR_loadAllFrames(..) but only perform the Sprite tile data upload process, SPR_loadAllIndexes(..) should be called first to compute the indexes table.
|
|
707
|
+
*
|
|
708
|
+
* \param sprDef
|
|
709
|
+
* the SpriteDefinition we want to load frame data in VRAM.
|
|
710
|
+
* \param index
|
|
711
|
+
* the tile position in VRAM where we will upload all sprite frame tiles data.
|
|
712
|
+
* \param index
|
|
713
|
+
* the 2D indexes table providing the tile index position in VRAM for each sprite frame (previously build using #SPR_loadAllIndexes(..) method).
|
|
714
|
+
* \param tm
|
|
715
|
+
* Transfer method to upload sprite frame data.<br>
|
|
716
|
+
* Accepted values are:<br>
|
|
717
|
+
* - CPU<br>
|
|
718
|
+
* - DMA<br>
|
|
719
|
+
* - DMA_QUEUE<br>
|
|
720
|
+
* - DMA_QUEUE_COPY<br>
|
|
721
|
+
*
|
|
722
|
+
* \return the number of tile uploaded to VRAM.
|
|
723
|
+
* \see SPR_loadAllFrames(...)
|
|
724
|
+
* \see SPR_loadAllIndexes(...)
|
|
725
|
+
*/
|
|
726
|
+
u16 SPR_loadAllTiles(const SpriteDefinition* sprDef, u16 index, u16** indexes, const TransferMethod tm);
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* \brief
|
|
730
|
+
* Set the Sprite Definition.
|
|
731
|
+
*
|
|
732
|
+
* \param sprite
|
|
733
|
+
* Sprite to set definition for.
|
|
734
|
+
* \param spriteDef
|
|
735
|
+
* the SpriteDefinition data to assign to this sprite.
|
|
736
|
+
*
|
|
737
|
+
* Set the Sprite Definition for this sprite.<br>
|
|
738
|
+
* By default the first frame of the first animation from Sprite Definition is loaded.
|
|
739
|
+
*
|
|
740
|
+
* \return FALSE if auto resource allocation failed, TRUE otherwise.
|
|
741
|
+
*/
|
|
742
|
+
bool SPR_setDefinition(Sprite* sprite, const SpriteDefinition* spriteDef);
|
|
743
|
+
/**
|
|
744
|
+
* \brief
|
|
745
|
+
* Get sprite position X.
|
|
746
|
+
*/
|
|
747
|
+
s16 SPR_getPositionX(Sprite* sprite);
|
|
748
|
+
/**
|
|
749
|
+
* \brief
|
|
750
|
+
* Get sprite position Y.
|
|
751
|
+
*/
|
|
752
|
+
s16 SPR_getPositionY(Sprite* sprite);
|
|
753
|
+
/**
|
|
754
|
+
* \brief
|
|
755
|
+
* Set sprite position.
|
|
756
|
+
*
|
|
757
|
+
* \param sprite
|
|
758
|
+
* Sprite to set position for
|
|
759
|
+
* \param x
|
|
760
|
+
* X position
|
|
761
|
+
* \param y
|
|
762
|
+
* Y position
|
|
763
|
+
*/
|
|
764
|
+
void SPR_setPosition(Sprite* sprite, s16 x, s16 y);
|
|
765
|
+
/**
|
|
766
|
+
* \brief
|
|
767
|
+
* Set sprite Horizontal Flip attribut.
|
|
768
|
+
*
|
|
769
|
+
* \param sprite
|
|
770
|
+
* Sprite to set attribut for
|
|
771
|
+
* \param value
|
|
772
|
+
* The horizontal flip attribut value (TRUE or FALSE)
|
|
773
|
+
*/
|
|
774
|
+
void SPR_setHFlip(Sprite* sprite, bool value);
|
|
775
|
+
/**
|
|
776
|
+
* \brief
|
|
777
|
+
* Set sprite Vertical Flip attribut.
|
|
778
|
+
*
|
|
779
|
+
* \param sprite
|
|
780
|
+
* Sprite to set attribut for
|
|
781
|
+
* \param value
|
|
782
|
+
* The vertical flip attribut value (TRUE or FALSE)
|
|
783
|
+
*/
|
|
784
|
+
void SPR_setVFlip(Sprite* sprite, bool value);
|
|
785
|
+
/**
|
|
786
|
+
* \brief
|
|
787
|
+
* Set sprite Palette index to use.
|
|
788
|
+
*
|
|
789
|
+
* \param sprite
|
|
790
|
+
* Sprite to set attribut for
|
|
791
|
+
* \param value
|
|
792
|
+
* The palette index to use for this sprite (PAL0, PAL1, PAL2 or PAL3)
|
|
793
|
+
*/
|
|
794
|
+
void SPR_setPalette(Sprite* sprite, u16 value);
|
|
795
|
+
/**
|
|
796
|
+
* \brief
|
|
797
|
+
* Set sprite Priority attribut.
|
|
798
|
+
*
|
|
799
|
+
* \param sprite
|
|
800
|
+
* Sprite to set attribut for
|
|
801
|
+
* \param value
|
|
802
|
+
* The priority attribut value (TRUE or FALSE)
|
|
803
|
+
*/
|
|
804
|
+
void SPR_setPriority(Sprite* sprite, bool value);
|
|
805
|
+
/**
|
|
806
|
+
* \deprecated
|
|
807
|
+
* Use #SPR_setPriority(..) instead
|
|
808
|
+
*/
|
|
809
|
+
#define SPR_setPriorityAttribut(sprite, value) _Pragma("GCC error \"This method is deprecated, use SPR_setPriority(..) instead.\"")
|
|
810
|
+
/**
|
|
811
|
+
* \brief
|
|
812
|
+
* Set sprite depth (for sprite display ordering)
|
|
813
|
+
*
|
|
814
|
+
* \param sprite
|
|
815
|
+
* Sprite to set depth for
|
|
816
|
+
* \param value
|
|
817
|
+
* The depth value (SPR_MIN_DEPTH to set always on top)
|
|
818
|
+
*
|
|
819
|
+
* Sprite having lower depth are display in front of sprite with higher depth.<br>
|
|
820
|
+
* The sprite is *immediately* sorted when its depth value is changed.
|
|
821
|
+
*/
|
|
822
|
+
void SPR_setDepth(Sprite* sprite, s16 value);
|
|
823
|
+
/**
|
|
824
|
+
* \brief
|
|
825
|
+
* Same as #SPR_setDepth(..)
|
|
826
|
+
*/
|
|
827
|
+
void SPR_setZ(Sprite* sprite, s16 value);
|
|
828
|
+
/**
|
|
829
|
+
* \brief
|
|
830
|
+
* Set sprite depth so it remains above others sprite - same as SPR_setDepth(SPR_MIN_DEPTH)
|
|
831
|
+
*
|
|
832
|
+
* \param sprite
|
|
833
|
+
* Sprite to change depth for
|
|
834
|
+
*
|
|
835
|
+
* \see SPR_setDepth(Sprite*)
|
|
836
|
+
*/
|
|
837
|
+
void SPR_setAlwaysOnTop(Sprite* sprite);
|
|
838
|
+
/**
|
|
839
|
+
* \brief
|
|
840
|
+
* Set sprite depth so it remains behind others sprite - same as SPR_setDepth(SPR_MAX_DEPTH)
|
|
841
|
+
*
|
|
842
|
+
* \param sprite
|
|
843
|
+
* Sprite to change depth for
|
|
844
|
+
*
|
|
845
|
+
* \see SPR_setDepth(Sprite*)
|
|
846
|
+
*/
|
|
847
|
+
void SPR_setAlwaysAtBottom(Sprite* sprite);
|
|
848
|
+
/**
|
|
849
|
+
* \brief
|
|
850
|
+
* Set current sprite animation and frame.
|
|
851
|
+
*
|
|
852
|
+
* \param sprite
|
|
853
|
+
* Sprite to set animation and frame for
|
|
854
|
+
* \param anim
|
|
855
|
+
* animation index to set
|
|
856
|
+
* \param frame
|
|
857
|
+
* frame index to set
|
|
858
|
+
*/
|
|
859
|
+
void SPR_setAnimAndFrame(Sprite* sprite, s16 anim, s16 frame);
|
|
860
|
+
/**
|
|
861
|
+
* \brief
|
|
862
|
+
* Set current sprite animation.
|
|
863
|
+
*
|
|
864
|
+
* \param sprite
|
|
865
|
+
* Sprite to set animation for
|
|
866
|
+
* \param anim
|
|
867
|
+
* animation index to set.
|
|
868
|
+
*/
|
|
869
|
+
void SPR_setAnim(Sprite* sprite, s16 anim);
|
|
870
|
+
/**
|
|
871
|
+
* \brief
|
|
872
|
+
* Set current sprite frame.
|
|
873
|
+
*
|
|
874
|
+
* \param sprite
|
|
875
|
+
* Sprite to set frame for
|
|
876
|
+
* \param frame
|
|
877
|
+
* frame index to set.
|
|
878
|
+
*/
|
|
879
|
+
void SPR_setFrame(Sprite* sprite, s16 frame);
|
|
880
|
+
/**
|
|
881
|
+
* \brief
|
|
882
|
+
* Pass to the next sprite frame.
|
|
883
|
+
*
|
|
884
|
+
* \param sprite
|
|
885
|
+
* Sprite to pass to next frame for
|
|
886
|
+
*/
|
|
887
|
+
void SPR_nextFrame(Sprite* sprite);
|
|
888
|
+
/**
|
|
889
|
+
* \brief
|
|
890
|
+
* Enable/disable auto animation for the current animation (default is on).<br>
|
|
891
|
+
*
|
|
892
|
+
* \param sprite
|
|
893
|
+
* Sprite we want to enable/disable auto animation.
|
|
894
|
+
* \param value
|
|
895
|
+
* TRUE to enable auto animation (default), FALSE otherwise
|
|
896
|
+
*
|
|
897
|
+
* \see #SPR_getAutoAnimation(Sprite*)
|
|
898
|
+
*/
|
|
899
|
+
void SPR_setAutoAnimation(Sprite* sprite, bool value);
|
|
900
|
+
/**
|
|
901
|
+
* \brief
|
|
902
|
+
* Return TRUE if auto animation is enabled, FALSE otherwise.
|
|
903
|
+
*
|
|
904
|
+
* \see #SPR_setAnimationLoop(Sprite*, bool)
|
|
905
|
+
*/
|
|
906
|
+
bool SPR_getAutoAnimation(Sprite* sprite);
|
|
907
|
+
/**
|
|
908
|
+
* \brief
|
|
909
|
+
* Enable/disable animation loop (default is on).<br>
|
|
910
|
+
* When disable the sprite will stay on the last animation frame when animation ended instead of restarting it.
|
|
911
|
+
*
|
|
912
|
+
* \param sprite
|
|
913
|
+
* Sprite we want to enable/disable animation loop for.
|
|
914
|
+
* \param value
|
|
915
|
+
* TRUE to enable animation loop (default), FALSE otherwise
|
|
916
|
+
*
|
|
917
|
+
* \see SPR_FLAG_DISABLE_ANIMATION_LOOP
|
|
918
|
+
* \see #SPR_getAnimationDone(Sprite*)
|
|
919
|
+
*/
|
|
920
|
+
void SPR_setAnimationLoop(Sprite* sprite, bool value);
|
|
921
|
+
/**
|
|
922
|
+
* \brief
|
|
923
|
+
* Returns TRUE if the sprite reached the end of the current animation.<br>
|
|
924
|
+
* When auto animation is enabled (see SPR_setAutoAnimation(..)) the function returns TRUE only when we reached
|
|
925
|
+
* the last *tick* of the last animation frame.<br>
|
|
926
|
+
* When auto animation is disabled the function returns TRUE as soon we are on last animation frame.
|
|
927
|
+
*
|
|
928
|
+
* \see #SPR_setAutoAnimation(Sprite*, bool)
|
|
929
|
+
*/
|
|
930
|
+
bool SPR_isAnimationDone(Sprite* sprite);
|
|
931
|
+
/**
|
|
932
|
+
* \brief
|
|
933
|
+
* Set the VRAM tile position reserved for this sprite.
|
|
934
|
+
*
|
|
935
|
+
* \param sprite
|
|
936
|
+
* Sprite to set the VRAM tile position for
|
|
937
|
+
* \param value
|
|
938
|
+
* the tile position in VRAM where we will upload the sprite tiles data.<br>
|
|
939
|
+
* Use <b>-1</b> for auto allocation.<br>
|
|
940
|
+
* \return FALSE if auto allocation failed (can happen only if sprite is currently active), TRUE otherwise
|
|
941
|
+
*
|
|
942
|
+
* By default the Sprite Engine auto allocate VRAM for sprites tiles but you can force
|
|
943
|
+
* manual allocation and fix the sprite tiles position in VRAM with this method.
|
|
944
|
+
*/
|
|
945
|
+
bool SPR_setVRAMTileIndex(Sprite* sprite, s16 value);
|
|
946
|
+
/**
|
|
947
|
+
* \brief
|
|
948
|
+
* Enable/disable the automatic upload of sprite tiles data into VRAM.
|
|
949
|
+
*
|
|
950
|
+
* \param sprite
|
|
951
|
+
* Sprite we want to enable/disable auto tile upload for
|
|
952
|
+
* \param value
|
|
953
|
+
* TRUE to enable the automatic upload of sprite tiles data into VRAM.<br>
|
|
954
|
+
* FALSE to disable it (mean you have to handle that on your own).<br>
|
|
955
|
+
*/
|
|
956
|
+
void SPR_setAutoTileUpload(Sprite* sprite, bool value);
|
|
957
|
+
/**
|
|
958
|
+
* \brief
|
|
959
|
+
* Enable/disable the delayed frame update.
|
|
960
|
+
*
|
|
961
|
+
* \param sprite
|
|
962
|
+
* Sprite we want to enable/disable delayed frame update
|
|
963
|
+
* \param value
|
|
964
|
+
* TRUE to enable the delayed frame update when DMA is running out of transfert capacity (default).<br>
|
|
965
|
+
* FALSE to disable it. In which case sprite frame is always updated immediately but that may cause graphical glitches (update during active display).<br>
|
|
966
|
+
*
|
|
967
|
+
* \see #SPR_FLAG_DISABLE_DELAYED_FRAME_UPDATE
|
|
968
|
+
*/
|
|
969
|
+
void SPR_setDelayedFrameUpdate(Sprite* sprite, bool value);
|
|
970
|
+
/**
|
|
971
|
+
* \brief
|
|
972
|
+
* Set the frame change event callback for this sprite.
|
|
973
|
+
*
|
|
974
|
+
* \param sprite
|
|
975
|
+
* Sprite we want to set the frame change callback
|
|
976
|
+
* \param callback
|
|
977
|
+
* the callback (function pointer) to call when we just changed the animation frame for this sprite.
|
|
978
|
+
*
|
|
979
|
+
* The callback (if not NULL) will be called on frame change process during #SPR_update() call (CAUTION: sprite->status field is not up to date at this point).<br>
|
|
980
|
+
* It let opportunity to the developer to apply special behavior or process when sprite frame just changed:<br>
|
|
981
|
+
* for instance we can disable animation looping by setting sprite->timer to 0 when we meet the last animation frame.
|
|
982
|
+
*
|
|
983
|
+
* \see #FrameChangeCallback
|
|
984
|
+
*/
|
|
985
|
+
void SPR_setFrameChangeCallback(Sprite* sprite, FrameChangeCallback* callback);
|
|
986
|
+
|
|
987
|
+
/**
|
|
988
|
+
* \brief
|
|
989
|
+
* Return the <i>visibility</i> state for this sprite.<br>
|
|
990
|
+
* WARNING: this is different from SPR_isVisible(..) method, possible value are:<br>
|
|
991
|
+
* SpriteVisibility.VISIBLE = sprite is visible<br>
|
|
992
|
+
* SpriteVisibility.HIDDEN = sprite is not visible<br>
|
|
993
|
+
* SpriteVisibility.AUTO_FAST = visibility is automatically computed - global visibility (only using sprite X position)<br>
|
|
994
|
+
* SpriteVisibility.AUTO_SLOW = visibility is automatically computed - per hardware sprite visibility (only using sprite X position)<br>
|
|
995
|
+
*
|
|
996
|
+
* \param sprite
|
|
997
|
+
* Sprite to return <i>visibility</i> state
|
|
998
|
+
*
|
|
999
|
+
* \return
|
|
1000
|
+
* the <i>visibility</i> state for this sprite.
|
|
1001
|
+
*
|
|
1002
|
+
* \see SPR_isVisible(...)
|
|
1003
|
+
* \see SPR_setVisibility(...)
|
|
1004
|
+
*/
|
|
1005
|
+
SpriteVisibility SPR_getVisibility(Sprite* sprite);
|
|
1006
|
+
/**
|
|
1007
|
+
* \brief
|
|
1008
|
+
* Return the visible state for this sprite (meaningful only if AUTO visibility is enabled, see #SPR_setVisibility(..) method).<br>
|
|
1009
|
+
*
|
|
1010
|
+
* \param sprite
|
|
1011
|
+
* Sprite to return <i>visible</i> state
|
|
1012
|
+
* \param recompute
|
|
1013
|
+
* Force visibility computation.<br>
|
|
1014
|
+
* Only required if SPR_update() wasn't called since last sprite position change (note that can force the frame update processing).
|
|
1015
|
+
*
|
|
1016
|
+
* Note that only the sprite X position is used to determine if it's visible (see #SPR_setVisibility(..) method for more information)
|
|
1017
|
+
|
|
1018
|
+
* \return
|
|
1019
|
+
* the <i>visible</i> state for this sprite.
|
|
1020
|
+
*
|
|
1021
|
+
* \see SPR_setVisibility(...)
|
|
1022
|
+
*/
|
|
1023
|
+
bool SPR_isVisible(Sprite* sprite, bool recompute);
|
|
1024
|
+
|
|
1025
|
+
/**
|
|
1026
|
+
* \brief
|
|
1027
|
+
* Set the <i>visibility</i> state for this sprite.
|
|
1028
|
+
*
|
|
1029
|
+
* \param sprite
|
|
1030
|
+
* Sprite to set the <i>visibility</i> information
|
|
1031
|
+
* \param value
|
|
1032
|
+
* Visibility value to set.<br>
|
|
1033
|
+
* SpriteVisibility.VISIBLE = sprite is visible<br>
|
|
1034
|
+
* SpriteVisibility.HIDDEN = sprite is not visible<br>
|
|
1035
|
+
* SpriteVisibility.AUTO_FAST = visibility is automatically computed - global visibility (only using sprite X position)<br>
|
|
1036
|
+
* SpriteVisibility.AUTO_SLOW = visibility is automatically computed - per hardware sprite visibility (only using sprite X position)<br>
|
|
1037
|
+
*
|
|
1038
|
+
* The only interest in having a sprite hidden / not visible is to avoid having it consuming scanline sprite budget:<br>
|
|
1039
|
+
* The VDP is limited to a maximum of 20 sprites or 320 pixels of sprite per scanline (16 sprites/256 px in H32 mode).<br>
|
|
1040
|
+
* If we reach this limit, following sprites won't be renderer so it's important to try to optimize the number of sprites on a single scanline.<br>
|
|
1041
|
+
* When a sprite is set to not visible (automatically or manually), its position is set offscreen *vertically* so it won't eat
|
|
1042
|
+
* anymore the scanline sprite rendering budget, only X position test is required for that so a sprite is determined not visible only using its X coordinate.
|
|
1043
|
+
*
|
|
1044
|
+
* \see SPR_computeVisibility(...)
|
|
1045
|
+
* \see SPR_getVisibility(...)
|
|
1046
|
+
* \see SPR_isVisible(...)
|
|
1047
|
+
*/
|
|
1048
|
+
void SPR_setVisibility(Sprite* sprite, SpriteVisibility value);
|
|
1049
|
+
/**
|
|
1050
|
+
* \deprecated Use #SPR_setVisibility(..) method instead.
|
|
1051
|
+
*/
|
|
1052
|
+
#define SPR_setAlwaysVisible(sprite, value) _Pragma("GCC error \"This method is deprecated, use SPR_setVisibility(..) instead.\"")
|
|
1053
|
+
/**
|
|
1054
|
+
* \deprecated Use #SPR_setVisibility(..) method instead.
|
|
1055
|
+
*/
|
|
1056
|
+
#define SPR_setNeverVisible(sprite, value) _Pragma("GCC error \"This method is deprecated, use SPR_setVisibility(..) instead.\"")
|
|
1057
|
+
/**
|
|
1058
|
+
* \deprecated Use SPR_isVisible(..) instead.
|
|
1059
|
+
*/
|
|
1060
|
+
#define SPR_computeVisibility(sprite) _Pragma("GCC error \"This method is deprecated, use SPR_isVisible(sprite, TRUE) instead.\"")
|
|
1061
|
+
|
|
1062
|
+
/**
|
|
1063
|
+
* \brief
|
|
1064
|
+
* Clear all displayed sprites.
|
|
1065
|
+
*
|
|
1066
|
+
* This method allow to quickly hide all sprites (without releasing their resources).<br>
|
|
1067
|
+
* Sprites can be displayed again just by calling SPR_update().
|
|
1068
|
+
*/
|
|
1069
|
+
void SPR_clear(void);
|
|
1070
|
+
/**
|
|
1071
|
+
* \brief
|
|
1072
|
+
* Update and display the active list of sprite.
|
|
1073
|
+
*
|
|
1074
|
+
* This actually updates all internal active sprites states and prepare the sprite list
|
|
1075
|
+
* cache to send it to the hardware (VDP) at Vint.
|
|
1076
|
+
*
|
|
1077
|
+
* \see #SPR_addSprite(..)
|
|
1078
|
+
*/
|
|
1079
|
+
void SPR_update(void);
|
|
1080
|
+
|
|
1081
|
+
/**
|
|
1082
|
+
* \brief
|
|
1083
|
+
* Log the profil informations (when enabled) in the KMod message window.
|
|
1084
|
+
*/
|
|
1085
|
+
void SPR_logProfil(void);
|
|
1086
|
+
/**
|
|
1087
|
+
* \brief
|
|
1088
|
+
* Log the sprites informations (when enabled) in the KMod message window.
|
|
1089
|
+
*/
|
|
1090
|
+
void SPR_logSprites(void);
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
#endif // _SPRITE_ENG_H_
|
|
1094
|
+
|
|
1095
|
+
#endif
|