├── .gitignore ├── INSTALL.md ├── Makefile ├── README.md ├── audio └── sfx │ ├── sgb_pauline_help_scream.brr │ ├── sgb_pauline_help_scream.wav │ └── sgb_pauline_help_scream_full.brr ├── bank_000.asm ├── bank_001.asm ├── bank_002.asm ├── bank_003.asm ├── bank_004.asm ├── bank_007.asm ├── bank_008.asm ├── bank_009.asm ├── bank_00a.asm ├── bank_00b.asm ├── bank_00c.asm ├── bank_00d.asm ├── bank_00e.asm ├── bank_00f.asm ├── bank_010.asm ├── bank_011.asm ├── bank_013.asm ├── bank_014.asm ├── bank_015.asm ├── bank_016.asm ├── bank_017.asm ├── bank_018.asm ├── bank_019.asm ├── bank_01a.asm ├── bank_01b.asm ├── bank_01c.asm ├── bank_01d.asm ├── bank_01e.asm ├── bank_01f.asm ├── charmap.asm ├── constants.asm ├── constants ├── hardware_constants.asm ├── misc_constants.asm └── sgb_constants.asm ├── data ├── bank_0c_5ddd.bin ├── bank_1b_table_data.asm ├── bank_1e_4c72.bin ├── graphics_data_headers.asm ├── level_data_1.asm ├── level_data_2.asm ├── level_data_3.asm ├── levels.asm ├── levels │ ├── level1.bin │ ├── level10.bin │ ├── level100.bin │ ├── level101.bin │ ├── level102.bin │ ├── level103.bin │ ├── level104.bin │ ├── level105.bin │ ├── level106.bin │ ├── level11.bin │ ├── level12.bin │ ├── level13.bin │ ├── level14.bin │ ├── level15.bin │ ├── level16.bin │ ├── level17.bin │ ├── level18.bin │ ├── level19.bin │ ├── level2.bin │ ├── level20.bin │ ├── level21.bin │ ├── level22.bin │ ├── level23.bin │ ├── level24.bin │ ├── level25.bin │ ├── level26.bin │ ├── level27.bin │ ├── level28.bin │ ├── level29.bin │ ├── level3.bin │ ├── level30.bin │ ├── level31.bin │ ├── level32.bin │ ├── level33.bin │ ├── level34.bin │ ├── level35.bin │ ├── level36.bin │ ├── level37.bin │ ├── level38.bin │ ├── level39.bin │ ├── level4.bin │ ├── level40.bin │ ├── level41.bin │ ├── level42.bin │ ├── level43.bin │ ├── level44.bin │ ├── level45.bin │ ├── level46.bin │ ├── level47.bin │ ├── level48.bin │ ├── level49.bin │ ├── level5.bin │ ├── level50.bin │ ├── level51.bin │ ├── level52.bin │ ├── level53.bin │ ├── level54.bin │ ├── level55.bin │ ├── level56.bin │ ├── level57.bin │ ├── level58.bin │ ├── level59.bin │ ├── level6.bin │ ├── level60.bin │ ├── level61.bin │ ├── level62.bin │ ├── level63.bin │ ├── level64.bin │ ├── level65.bin │ ├── level66.bin │ ├── level67.bin │ ├── level68.bin │ ├── level69.bin │ ├── level7.bin │ ├── level70.bin │ ├── level71.bin │ ├── level72.bin │ ├── level73.bin │ ├── level74.bin │ ├── level75.bin │ ├── level76.bin │ ├── level77.bin │ ├── level78.bin │ ├── level79.bin │ ├── level8.bin │ ├── level80.bin │ ├── level81.bin │ ├── level82.bin │ ├── level83.bin │ ├── level84.bin │ ├── level85.bin │ ├── level86.bin │ ├── level87.bin │ ├── level88.bin │ ├── level89.bin │ ├── level9.bin │ ├── level90.bin │ ├── level91.bin │ ├── level92.bin │ ├── level93.bin │ ├── level94.bin │ ├── level95.bin │ ├── level96.bin │ ├── level97.bin │ ├── level98.bin │ └── level99.bin ├── sgb_border_palette_data.bin └── sgb_packets.asm ├── gfx ├── bank11graphics.png ├── bank1a │ ├── bonus_game_graphics.bin │ ├── bonus_game_graphics.png │ ├── credits_graphics.bin │ ├── credits_graphics.png │ ├── delete_file_bomb.bin │ ├── delete_file_bomb.png │ ├── dk_menu_finger.bin │ ├── dk_menu_finger.png │ ├── file_select_screen_graphics.bin │ ├── file_select_screen_graphics.png │ ├── gameover_screen.bin │ ├── gameover_screen.png │ ├── introCutsceneGraphics.png │ ├── intro_level_screen_graphics.bin │ ├── intro_level_screen_graphics.png │ ├── mario_circus_demo_sprites.bin │ ├── mario_circus_demo_sprites.png │ ├── title_screen_graphics.bin │ ├── title_screen_graphics.png │ ├── ui1.bin │ └── ui1.png ├── bank1b │ ├── bank1b_4000.bin │ ├── bank1b_45b3.bin │ ├── bank1b_4689.bin │ ├── bank1b_49c7.bin │ ├── bank1b_49e8.bin │ ├── bank1b_49fc.bin │ ├── bank1b_4a0e.bin │ ├── bank1b_4b4d.bin │ ├── bank1b_4c18.bin │ ├── bank1b_4eeb.bin │ ├── bank1b_5104.bin │ ├── bank1b_52a1.bin │ ├── bank1b_544b.bin │ ├── bank1b_566f.bin │ ├── bank1b_572d.bin │ ├── bank1b_58c5.bin │ ├── bank1b_59b7.bin │ ├── bank1b_5af2.bin │ ├── bank1b_5bda.png │ ├── bank1b_5c1a.png │ ├── bank1b_5c5a.bin │ ├── bank1b_5d9e.bin │ ├── bank1b_5e91.png │ ├── bank1b_5eb1.bin │ ├── bank1b_5eee.bin │ ├── bank1b_5f78.bin │ ├── bank1b_6038.bin │ ├── bank1b_60f8.bin │ ├── bank1b_6120.bin │ ├── bank1b_61ec.bin │ ├── bank1b_62a3.bin │ ├── bank1b_62fc.bin │ ├── bank1b_63ee.bin │ ├── bank1b_6414.bin │ ├── bank1b_64cc.bin │ ├── bank1b_652e.bin │ ├── bank1b_657d.bin │ ├── bank1b_6593.bin │ ├── bank1b_65ce.bin │ ├── bank1b_65eb.bin │ ├── bank1b_6e83.bin │ ├── bank1b_6f53.bin │ └── bank1b_732b.bin ├── bank1e_graphics_6125.bin ├── bank4mariosprites.png ├── font.png ├── sgb_border_1.bin └── sgb_border_2.bin ├── home.asm ├── hram.asm ├── macros.asm ├── macros ├── code.asm ├── data.asm └── gfx.asm ├── main.asm ├── rom.sha1 ├── src ├── home │ └── copy_data.asm └── sgb_functions.asm ├── tools ├── Makefile ├── common.h ├── dkcompress.c ├── gfx.c ├── scan_includes.c └── unnamed.py └── wram.asm /.gitignore: -------------------------------------------------------------------------------- 1 | # build 2 | *.o 3 | *.gbc 4 | *.1bpp 5 | *.2bpp 6 | *.lz 7 | 8 | # bin 9 | Z80Dis 10 | DumpBanks 11 | 12 | # rgbasm extras 13 | *.sym 14 | *.map 15 | 16 | # precompiled python 17 | *.pyc 18 | 19 | # swap files 20 | *.swp 21 | 22 | # visual studio 23 | *.pdb 24 | *.exe 25 | *.ilk 26 | *.obj 27 | *.sln 28 | *.suo 29 | 30 | # macos files 31 | *.DS_Store 32 | 33 | # temporary editor backups 34 | *~ 35 | 36 | # save files 37 | *.sav 38 | *.ss* 39 | *.sn* -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | # Linux 2 | 3 | Dependencies: 4 | 5 | sudo apt-get install make gcc bison git 6 | sudo easy_install pip 7 | 8 | The assembler used is [**rgbds**](https://github.com/gbdev/rgbds). 9 | 10 | git clone https://github.com/gbdev/rgbds 11 | cd rgbds 12 | sudo mkdir -p /usr/local/man/man{1,7} 13 | sudo make install 14 | cd .. 15 | rm -rf rgbds 16 | 17 | Set up the repository. 18 | 19 | git clone https://github.com/CelestialAmber/DKGBDisasm 20 | cd DKGBDisasm 21 | 22 | To build `donkeykong.gb`: 23 | 24 | make 25 | 26 | This will take a few seconds the first time you build because it needs to process all of the graphics. 27 | 28 | To remove all generated files by the build process: 29 | 30 | make clean 31 | 32 | To compare the built `donkeykong.gb` to the original ROM: 33 | 34 | make compare 35 | 36 | 37 | # OS X 38 | 39 | In the shell, run: 40 | 41 | xcode-select --install 42 | 43 | Install [**Homebrew**](https://brew.sh/). Follow the official instructions. 44 | 45 | Then, run this command: 46 | 47 | brew install rgbds gcc git make 48 | 49 | Then set up the repository. In the **terminal**: 50 | 51 | git clone https://github.com/CelestialAmber/DKGBDisasm.git 52 | cd DKGBDisasm 53 | 54 | To build `donkeykong.gb`: 55 | 56 | make 57 | 58 | 59 | # Windows 60 | 61 | To build on Windows, install [**Cygwin**](http://cygwin.com/install.html) with the default settings. 62 | 63 | Dependencies are downloaded in the installer rather than the command line. 64 | Select the following packages: 65 | * make 66 | * git 67 | * gcc-core 68 | 69 | The latest compatible version of **rgbds** is [**0.5.2**](https://github.com/gbdev/rgbds/releases/download/v0.5.2/rgbds-0.5.2-win64.zip). To install, put each of the files in the download in `C:\cygwin\usr\local\bin`. 70 | 71 | Then set up the repository. In the **Cygwin terminal**: 72 | 73 | git clone https://github.com/CelestialAmber/DKGBDisasm.git 74 | cd DKGBDisasm 75 | 76 | To build `donkeykong.gb`: 77 | 78 | make 79 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ROM := donkeykong.gb 2 | OBJS := main.o wram.o 3 | 4 | 5 | 6 | ### Build tools 7 | 8 | ifeq (,$(shell which sha1sum)) 9 | SHA1 := shasum 10 | else 11 | SHA1 := sha1sum 12 | endif 13 | 14 | 15 | 16 | ### Build targets 17 | 18 | .SUFFIXES: 19 | .SECONDEXPANSION: 20 | .PRECIOUS: 21 | .SECONDARY: 22 | .PHONY: all tools compare clean tidy 23 | 24 | all: $(ROM) 25 | 26 | compare: $(ROM) 27 | @$(SHA1) -c rom.sha1 28 | tools/unnamed.py -r . donkeykong.sym 29 | 30 | tidy: 31 | rm -f $(ROM) $(OBJS) $(ROM:.gb=.sym) $(ROM:.gb=.map) 32 | $(MAKE) -C tools clean 33 | 34 | clean: tidy 35 | find . \( -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pcm' -o -iname '*.lz' \) -exec rm {} + 36 | 37 | tools: 38 | $(MAKE) -C tools/ 39 | 40 | 41 | 42 | ifeq (,$(filter clean tools,$(MAKECMDGOALS))) 43 | $(info $(shell $(MAKE) -C tools)) 44 | endif 45 | 46 | 47 | %.o: dep = $(shell tools/scan_includes $(@D)/$*.asm) 48 | %.o: %.asm $$(dep) 49 | rgbasm -h -o $@ $< 50 | 51 | $(ROM): $(OBJS) 52 | rgblink -n $(ROM:.gb=.sym) -m $(ROM:.gb=.map) -p 0xFF -o $@ $(OBJS) 53 | rgbfix -sv -k 01 -l 0x33 -m 0x03 -p 0xFF -r 02 -t "DONKEY KONG" $@ 54 | 55 | gfx/font.2bpp: tools/gfx += --trim-whitespace 56 | gfx/bank4mariosprites.2bpp: tools/gfx += --trim-whitespace 57 | gfx/bank11graphics.2bpp: tools/gfx += --trim-whitespace 58 | gfx/gameover_screen.2bpp: tools/gfx += -w 2 59 | #gfx/dk_menu_finger.2bpp: tools/gfx += --trim-whitespace 60 | 61 | %.2bpp.lz : %.2bpp 62 | $(if $(tools/dkcompress),\ 63 | tools/dkcompress $(tools/dkcompress) $< $@,\ 64 | tools/dkcompress $< $@) 65 | 66 | %.2bpp: %.png 67 | rgbgfx -o $@ $< 68 | $(if $(tools/gfx),\ 69 | tools/gfx $(tools/gfx) -o $@ $@) 70 | 71 | %.1bpp: %.png 72 | rgbgfx -d1 -o $@ $< 73 | $(if $(tools/gfx),\ 74 | tools/gfx $(tools/gfx) -d1 -o $@ $@) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Donkey Kong '94 2 | 3 | This is a disassembly of Donkey Kong '94. 4 | 5 | It builds the following ROM: 6 | 7 | * Donkey Kong (Japan, USA) (SGB Enhanced).gb `sha1: 6ed661bd1d6d8cdd48e1c10f8ca4e8dcba49128e` 8 | 9 | To set up the repository, see [**INSTALL.md**](INSTALL.md). 10 | 11 | # Credits 12 | 13 | - https://github.com/bailli/eDKit for the data compression code 14 | 15 | -------------------------------------------------------------------------------- /audio/sfx/sgb_pauline_help_scream.brr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/audio/sfx/sgb_pauline_help_scream.brr -------------------------------------------------------------------------------- /audio/sfx/sgb_pauline_help_scream.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/audio/sfx/sgb_pauline_help_scream.wav -------------------------------------------------------------------------------- /audio/sfx/sgb_pauline_help_scream_full.brr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/audio/sfx/sgb_pauline_help_scream_full.brr -------------------------------------------------------------------------------- /bank_004.asm: -------------------------------------------------------------------------------- 1 | ; Disassembly of "donkeykong.gb" 2 | ; This file was created with mgbdis v1.3 - Game Boy ROM disassembler by Matt Currie. 3 | ; https://github.com/mattcurrie/mgbdis 4 | 5 | SECTION "ROM Bank $004", ROMX[$4000], BANK[$4] 6 | 7 | FontGraphics:: 8 | INCBIN "gfx/font.2bpp" 9 | 10 | ds 16 11 | 12 | ;offset 46f0 (106f0) 13 | ;palette: 5500AAFF 14 | Bank4MarioGraphics:: 15 | INCBIN "gfx/bank4mariosprites.2bpp" -------------------------------------------------------------------------------- /bank_011.asm: -------------------------------------------------------------------------------- 1 | ; Disassembly of "donkeykong.gb" 2 | ; This file was created with mgbdis v1.3 - Game Boy ROM disassembler by Matt Currie. 3 | ; https://github.com/mattcurrie/mgbdis 4 | 5 | SECTION "ROM Bank $011", ROMX[$4000], BANK[$11] 6 | 7 | UnknownTable_11_4000:: 8 | dw $4070 9 | dw $4070 10 | dw $4530 11 | dw $4870 12 | dw $4d30 13 | dw $4070 14 | dw $4070 15 | dw $4070 16 | 17 | db $01,$00,$10,$51,$01,$00,$70,$59,$01,$00,$10,$51,$01,$00,$70,$59 18 | db $01,$00,$70,$59,$01,$00,$30,$65,$00,$00,$10,$51,$00,$00,$10,$51 19 | db $01,$00,$D0,$55,$01,$00,$30,$5E,$01,$00,$D0,$55,$01,$00,$30,$5E 20 | db $01,$00,$30,$5E,$01,$00,$D0,$55,$00,$00,$10,$51,$00,$00,$10,$51 21 | db $01,$00,$D0,$55,$01,$00,$30,$5E,$01,$00,$D0,$55,$01,$00,$30,$5E 22 | db $01,$00,$30,$5E,$01,$00,$D0,$55,$00,$00,$10,$51,$00,$00,$10,$51 23 | 24 | ;offset 44070 25 | INCBIN "gfx/bank11graphics.2bpp" -------------------------------------------------------------------------------- /bank_01a.asm: -------------------------------------------------------------------------------- 1 | ; Disassembly of "donkeykong.gb" 2 | ; This file was created with mgbdis v1.3 - Game Boy ROM disassembler by Matt Currie. 3 | ; https://github.com/mattcurrie/mgbdis 4 | 5 | SECTION "ROM Bank $01a", ROMX[$4000], BANK[$1a] 6 | 7 | ;the top two files aren't recompressed correctly, but match in 2bpp format 8 | GameOverScreenGraphics:: 9 | INCBIN "gfx/bank1a/gameover_screen.bin" 10 | ;46c1 11 | ;uses special tile format 12 | DKMenuFingerGraphics:: 13 | INCBIN "gfx/bank1a/dk_menu_finger.bin" 14 | ;47a2 15 | BonusGameGraphics:: 16 | INCBIN "gfx/bank1a/bonus_game_graphics.bin" 17 | 18 | UIGraphics1:: 19 | INCBIN "gfx/bank1a/ui1.bin" 20 | 21 | IntroLevelScreenGraphics:: 22 | INCBIN "gfx/bank1a/intro_level_screen_graphics.bin" 23 | 24 | FileSelectScreenGraphics:: 25 | INCBIN "gfx/bank1a/file_select_screen_graphics.bin" 26 | 27 | DeleteFileBombGraphics:: 28 | INCBIN "gfx/bank1a/delete_file_bomb.bin" 29 | 30 | IntroCutsceneGraphics:: 31 | INCBIN "gfx/bank1a/introCutsceneGraphics.2bpp.lz" 32 | 33 | TitleScreenGraphics:: 34 | INCBIN "gfx/bank1a/title_screen_graphics.bin" 35 | 36 | ;palette: 0123 37 | ;the portrait uses the special tile format 38 | CreditsGraphics:: 39 | INCBIN "gfx/bank1a/credits_graphics.bin" 40 | 41 | ;palette: 0213? 42 | ;uses special tile format 43 | ;the other mario/dk sprites also use the same palette? 44 | MarioCircusDemoSprites:: 45 | INCBIN "gfx/bank1a/mario_circus_demo_sprites.bin" -------------------------------------------------------------------------------- /bank_01b.asm: -------------------------------------------------------------------------------- 1 | ; Disassembly of "donkeykong.gb" 2 | ; This file was created with mgbdis v1.3 - Game Boy ROM disassembler by Matt Currie. 3 | ; https://github.com/mattcurrie/mgbdis 4 | 5 | SECTION "ROM Bank $01b", ROMX[$4000], BANK[$1b] 6 | 7 | Bank1B_Graphics_4000:: 8 | INCBIN "gfx/bank1b/bank1b_4000.bin" 9 | 10 | Bank1B_Graphics_45B3:: 11 | INCBIN "gfx/bank1b/bank1b_45b3.bin" 12 | 13 | Bank1B_Graphics_4689:: 14 | INCBIN "gfx/bank1b/bank1b_4689.bin" 15 | 16 | Bank1B_Graphics_49C7:: 17 | INCBIN "gfx/bank1b/bank1b_49c7.bin" 18 | 19 | Bank1B_Graphics_49E8:: 20 | INCBIN "gfx/bank1b/bank1b_49e8.bin" 21 | 22 | Bank1B_Graphics_49FC:: 23 | INCBIN "gfx/bank1b/bank1b_49fc.bin" 24 | 25 | Bank1B_Graphics_4A0E:: 26 | INCBIN "gfx/bank1b/bank1b_4a0e.bin" 27 | 28 | Bank1B_Graphics_4B4D:: 29 | INCBIN "gfx/bank1b/bank1b_4b4d.bin" 30 | 31 | Bank1B_Graphics_4C18:: 32 | INCBIN "gfx/bank1b/bank1b_4c18.bin" 33 | 34 | Bank1B_Graphics_4EEB:: 35 | INCBIN "gfx/bank1b/bank1b_4eeb.bin" 36 | 37 | Bank1B_Graphics_5104:: 38 | INCBIN "gfx/bank1b/bank1b_5104.bin" 39 | 40 | Bank1B_Graphics_52A1:: 41 | INCBIN "gfx/bank1b/bank1b_52a1.bin" 42 | 43 | Bank1B_Graphics_544B:: 44 | INCBIN "gfx/bank1b/bank1b_544b.bin" 45 | 46 | Bank1B_Graphics_566F:: 47 | INCBIN "gfx/bank1b/bank1b_566f.bin" 48 | 49 | Bank1B_Graphics_572D:: 50 | INCBIN "gfx/bank1b/bank1b_572d.bin" 51 | 52 | Bank1B_Graphics_58C5:: 53 | INCBIN "gfx/bank1b/bank1b_58c5.bin" 54 | 55 | Bank1B_Graphics_59B7:: 56 | INCBIN "gfx/bank1b/bank1b_59b7.bin" 57 | 58 | Bank1B_Graphics_5AF2:: 59 | INCBIN "gfx/bank1b/bank1b_5af2.bin" 60 | 61 | ;uncompressed 62 | Bank1B_Graphics_5BDA:: 63 | INCBIN "gfx/bank1b/bank1b_5bda.2bpp" 64 | 65 | Bank1B_Graphics_5C1A:: 66 | INCBIN "gfx/bank1b/bank1b_5c1a.2bpp" 67 | 68 | Bank1B_Graphics_5C5A:: 69 | INCBIN "gfx/bank1b/bank1b_5c5a.bin" 70 | 71 | Bank1B_Graphics_5D9E:: 72 | INCBIN "gfx/bank1b/bank1b_5d9e.bin" 73 | 74 | Bank1B_Graphics_5E91:: 75 | INCBIN "gfx/bank1b/bank1b_5e91.2bpp" 76 | 77 | Bank1B_Graphics_5EB1:: 78 | INCBIN "gfx/bank1b/bank1b_5eb1.bin" 79 | 80 | Bank1B_Graphics_5EEE:: 81 | INCBIN "gfx/bank1b/bank1b_5eee.bin" 82 | 83 | Bank1B_Graphics_5F78:: 84 | INCBIN "gfx/bank1b/bank1b_5f78.bin" 85 | 86 | Bank1B_Graphics_6038:: 87 | INCBIN "gfx/bank1b/bank1b_6038.bin" 88 | 89 | Bank1B_Graphics_60F8:: 90 | INCBIN "gfx/bank1b/bank1b_60f8.bin" 91 | 92 | Bank1B_Graphics_6120:: 93 | INCBIN "gfx/bank1b/bank1b_6120.bin" 94 | 95 | Bank1B_Graphics_61EC:: 96 | INCBIN "gfx/bank1b/bank1b_61ec.bin" 97 | 98 | Bank1B_Graphics_62A3:: 99 | INCBIN "gfx/bank1b/bank1b_62a3.bin" 100 | 101 | Bank1B_Graphics_62FC:: 102 | INCBIN "gfx/bank1b/bank1b_62fc.bin" 103 | 104 | Bank1B_Graphics_63EE:: 105 | INCBIN "gfx/bank1b/bank1b_63ee.bin" 106 | 107 | Bank1B_Graphics_6414:: 108 | INCBIN "gfx/bank1b/bank1b_6414.bin" 109 | 110 | Bank1B_Graphics_64CC:: 111 | INCBIN "gfx/bank1b/bank1b_64cc.bin" 112 | 113 | Bank1B_Graphics_652E:: 114 | INCBIN "gfx/bank1b/bank1b_652e.bin" 115 | 116 | Bank1B_Graphics_657D:: 117 | INCBIN "gfx/bank1b/bank1b_657d.bin" 118 | 119 | Bank1B_Graphics_6593:: 120 | INCBIN "gfx/bank1b/bank1b_6593.bin" 121 | 122 | Bank1B_Graphics_65CE:: 123 | INCBIN "gfx/bank1b/bank1b_65ce.bin" 124 | 125 | Bank1B_Graphics_65EB:: 126 | INCBIN "gfx/bank1b/bank1b_65eb.bin" 127 | 128 | Bank1B_Graphics_6E83:: 129 | INCBIN "gfx/bank1b/bank1b_6e83.bin" 130 | 131 | Bank1B_Graphics_6F53:: 132 | INCBIN "gfx/bank1b/bank1b_6f53.bin" 133 | 134 | Bank1B_Graphics_732B:: 135 | INCBIN "gfx/bank1b/bank1b_732b.bin" 136 | 137 | INCLUDE "data/bank_1b_table_data.asm" -------------------------------------------------------------------------------- /bank_01e.asm: -------------------------------------------------------------------------------- 1 | ; Disassembly of "donkeykong.gb" 2 | ; This file was created with mgbdis v1.3 - Game Boy ROM disassembler by Matt Currie. 3 | ; https://github.com/mattcurrie/mgbdis 4 | 5 | SECTION "ROM Bank $01e", ROMX[$4000], BANK[$1e] 6 | 7 | 8 | INCLUDE "data/sgb_packets.asm" 9 | 10 | ;46f0 11 | ;sgb border palette data 12 | SGBBorderPaletteData:: 13 | INCBIN "data/sgb_border_palette_data.bin" 14 | 15 | UnknownData_1E_4C72:: 16 | INCBIN "data/bank_1e_4c72.bin" 17 | 18 | SGBBorderGraphics1:: 19 | INCBIN "gfx/sgb_border_1.bin" 20 | 21 | SGBBorderGraphics2:: 22 | INCBIN "gfx/sgb_border_2.bin" 23 | 24 | Bank1E_Graphics_6125:: 25 | INCBIN "gfx/bank1e_graphics_6125.bin" 26 | 27 | ;offset 0x64c5 28 | UnknownData_1e_64c5:: 29 | db $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 30 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 31 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 32 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 33 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 34 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 35 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 36 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 37 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 38 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 39 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 40 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 41 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 42 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 43 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 44 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 45 | db $f1, $70, $f8, $ff, $00, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 46 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 47 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 48 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 49 | db $8f, $0e, $1f, $ff, $00, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 50 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 51 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 52 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 53 | db $8f, $0e, $1f, $ff, $00, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 54 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 55 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 56 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 57 | db $8f, $0e, $1f, $ff, $00, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 58 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 59 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 60 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 61 | db $8f, $0e, $1f, $ff, $00, $00, $00, $00, $00, $80, $80, $70, $f0, $2f, $7f, $00 62 | db $0c, $bb, $bb, $fe, $ff, $00, $00, $00, $00, $00, $00, $30, $30, $4e, $5e, $85 63 | db $8f, $00, $15, $77, $77, $00, $00, $00, $00, $06, $06, $09, $0b, $70, $70, $a0 64 | db $e6, $0e, $1f, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $01, $01, $8e 65 | db $8e, $74, $7c, $80, $99, $00, $00, $00, $00, $00, $00, $00, $00, $f1, $f1, $0e 66 | db $1e, $b0, $fd, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $e0, $e0, $5e 67 | db $5e, $01, $73, $76, $fe, $00, $00, $00, $00, $60, $60, $9c, $bc, $0b, $1b, $00 68 | db $64, $ee, $fe, $ff, $ff, $00, $00, $00, $00, $00, $00, $0c, $0c, $13, $13, $e1 69 | db $e1, $40, $4d, $1d, $df, $00, $00, $00, $00, $01, $01, $02, $02, $1c, $1c, $e8 70 | db $f9, $03, $6b, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $e3 71 | db $e3, $1d, $bd, $60, $7a, $00, $00, $00, $00, $00, $00, $c0, $c0, $bc, $bc, $03 72 | db $27, $ac, $fd, $ff, $ff, $00, $00, $00, $00, $00, $00, $c0, $c0, $38, $38, $17 73 | db $97, $00, $68, $dd, $ff, $00, $00, $00, $00, $18, $18, $27, $27, $c2, $ca, $80 74 | db $97, $13, $3f, $ff, $ff, $00, $00, $00, $00, $00, $00, $03, $03, $04, $04, $38 75 | db $38, $d0, $db, $07, $6f, $00, $00, $00, $00, $00, $00, $00, $00, $c7, $c7, $3a 76 | db $7a, $c0, $e5, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $80, $80, $78 77 | db $78, $07, $97, $d8, $fe, $00, $00, $00, $00, $01, $01, $02, $02, $1c, $1d, $e8 78 | db $e8, $03, $2f, $ce, $de, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $e3 79 | db $e3, $1d, $3d, $60, $79, $00, $00, $00, $00, $00, $00, $c0, $c0, $bc, $bc, $03 80 | db $67, $ec, $fe, $ff, $ff, $00, $00, $00, $00, $00, $00, $c0, $c0, $38, $38, $17 81 | db $5f, $00, $36, $dd, $ff, $00, $00, $00, $00, $18, $18, $27, $2f, $c2, $c6, $80 82 | db $99, $3b, $bf, $ff, $ff, $00, $00, $00, $00, $00, $00, $03, $03, $04, $04, $38 83 | db $3a, $d0, $d3, $07, $bf, $00, $00, $00, $00, $00, $00, $00, $00, $c7, $c7, $3a 84 | db $7b, $c0, $ec, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $80, $80, $78 85 | db $78, $07, $37, $d8, $fd, $00, $00, $00, $00, $80, $80, $70, $70, $2f, $2f, $00 86 | db $98, $bb, $ff, $ff, $ff, $00, $00, $00, $00, $00, $00, $30, $30, $4e, $5e, $85 87 | db $8d, $00, $3e, $77, $7f, $00, $00, $00, $00, $06, $06, $09, $09, $70, $72, $a0 88 | db $a7, $0e, $7f, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $01, $01, $8e 89 | db $8e, $74, $75, $81, $af, $00, $00, $00, $00, $00, $00, $00, $00, $f1, $f1, $0e 90 | db $6e, $b0, $bd, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $e0, $e0, $5e 91 | db $7e, $01, $3b, $76, $f6, $00, $00, $00, $00, $60, $60, $9c, $9c, $0b, $2b, $00 92 | db $7e, $ee, $ff, $ff, $ff, $00, $00, $00, $00, $00, $00, $0c, $0c, $13, $13, $e1 93 | db $e9, $40, $4e, $1d, $ff, $ff, $ff, $7e, $ff, $87, $f7, $e1, $fd, $ca, $ff, $70 94 | db $ff, $f9, $ff, $a7, $f7, $ff, $ff, $9f, $ff, $e1, $fd, $78, $7f, $b2, $ff, $1c 95 | db $ff, $7e, $ff, $e9, $fd, $ff, $ff, $e7, $ff, $78, $7f, $1e, $df, $ac, $ff, $07 96 | db $ff, $9f, $ff, $7a, $7f, $ff, $ff, $f9, $ff, $1e, $df, $87, $f7, $2b, $ff, $c1 97 | db $ff, $e7, $ff, $9e, $df, $ff, $ff, $7e, $ff, $87, $f7, $e1, $fd, $ca, $ff, $70 98 | db $ff, $f9, $ff, $a7, $f7, $ff, $ff, $9f, $ff, $e1, $fd, $78, $7f, $b2, $ff, $1c 99 | db $ff, $7e, $ff, $e9, $fd, $ff, $ff, $e7, $ff, $78, $7f, $1e, $df, $ac, $ff, $07 100 | db $ff, $9f, $ff, $7a, $7f, $ff, $ff, $f9, $ff, $1e, $df, $87, $f7, $2b, $ff, $c1 101 | db $ff, $e7, $ff, $9e, $df, $ff, $ff, $7e, $ff, $87, $f7, $e1, $fd, $ca, $ff, $70 102 | db $ff, $f9, $ff, $a7, $f7, $ff, $ff, $9f, $ff, $e1, $fd, $78, $7f, $b2, $ff, $1c 103 | db $ff, $7e, $ff, $e9, $fd, $ff, $ff, $e7, $ff, $78, $7f, $1e, $df, $ac, $ff, $07 104 | db $ff, $9f, $ff, $7a, $7f, $ff, $ff, $f9, $ff, $1e, $df, $87, $f7, $2b, $ff, $c1 105 | db $ff, $e7, $ff, $9e, $df, $ff, $ff, $7e, $ff, $87, $f7, $e1, $fd, $ca, $ff, $70 106 | db $ff, $f9, $ff, $a7, $f7, $ff, $ff, $9f, $ff, $e1, $fd, $78, $7f, $b2, $ff, $1c 107 | db $ff, $7e, $ff, $e9, $fd, $ff, $ff, $e7, $ff, $78, $7f, $1e, $df, $ac, $ff, $07 108 | db $ff, $9f, $ff, $7a, $7f, $ff, $ff, $f9, $ff, $1e, $df, $87, $f7, $2b, $ff, $c1 109 | db $ff, $e7, $ff, $9e, $df, $ff, $ff, $7e, $ff, $e1, $ef, $87, $bf, $53, $ff, $0e 110 | db $ff, $9f, $ff, $e5, $ef, $ff, $ff, $f9, $ff, $87, $bf, $1e, $fe, $4d, $ff, $38 111 | db $ff, $7e, $ff, $97, $bf, $ff, $ff, $e7, $ff, $1e, $fe, $78, $fb, $35, $ff, $e0 112 | db $ff, $f9, $ff, $5e, $fe, $ff, $ff, $9f, $ff, $78, $fb, $e1, $ef, $d4, $ff, $83 113 | db $ff, $e7, $ff, $79, $fb, $ff, $ff, $7e, $ff, $e1, $ef, $87, $bf, $53, $ff, $0e 114 | db $ff, $9f, $ff, $e5, $ef, $ff, $ff, $f9, $ff, $87, $bf, $1e, $fe, $4d, $ff, $38 115 | db $ff, $7e, $ff, $97, $bf, $ff, $ff, $e7, $ff, $1e, $fe, $78, $fb, $35, $ff, $e0 116 | db $ff, $f9, $ff, $5e, $fe, $ff, $ff, $9f, $ff, $78, $fb, $e1, $ef, $d4, $ff, $83 117 | db $ff, $e7, $ff, $79, $fb, $ff, $ff, $7e, $ff, $e1, $ef, $87, $bf, $53, $ff, $0e 118 | db $ff, $9f, $ff, $e5, $ef, $ff, $ff, $f9, $ff, $87, $bf, $1e, $fe, $4d, $ff, $38 119 | db $ff, $7e, $ff, $97, $bf, $ff, $ff, $e7, $ff, $1e, $fe, $78, $fb, $35, $ff, $e0 120 | db $ff, $f9, $ff, $5e, $fe, $ff, $ff, $9f, $ff, $78, $fb, $e1, $ef, $d4, $ff, $83 121 | db $ff, $e7, $ff, $79, $fb, $ff, $ff, $7e, $ff, $e1, $ef, $87, $bf, $53, $ff, $0e 122 | db $ff, $9f, $ff, $e5, $ef, $ff, $ff, $f9, $ff, $87, $bf, $1e, $fe, $4d, $ff, $38 123 | db $ff, $7e, $ff, $97, $bf, $ff, $ff, $e7, $ff, $1e, $fe, $78, $fb, $35, $ff, $e0 124 | db $ff, $f9, $ff, $5e, $fe, $ff, $ff, $9f, $ff, $78, $fb, $e1, $ef, $d4, $ff, $83 125 | db $ff, $e7, $ff, $79, $fb, $bb, $ff, $de, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1 126 | db $ff, $e9, $ef, $b3, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de, $ff, $d7, $ff, $c6 127 | db $ff, $ca, $de, $e1, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de 128 | db $ff, $d7, $ff, $c6, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3 129 | db $ff, $bb, $ff, $de, $ff, $bb, $ff, $de, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1 130 | db $ff, $e9, $ef, $b3, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de, $ff, $d7, $ff, $c6 131 | db $ff, $ca, $de, $e1, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de 132 | db $ff, $d7, $ff, $c6, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3 133 | db $ff, $bb, $ff, $de, $ff, $bb, $ff, $de, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1 134 | db $ff, $e9, $ef, $b3, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de, $ff, $d7, $ff, $c6 135 | db $ff, $ca, $de, $e1, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de 136 | db $ff, $d7, $ff, $c6, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3 137 | db $ff, $bb, $ff, $de, $ff, $bb, $ff, $de, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1 138 | db $ff, $e9, $ef, $b3, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de, $ff, $d7, $ff, $c6 139 | db $ff, $ca, $de, $e1, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3, $ff, $bb, $ff, $de 140 | db $ff, $d7, $ff, $c6, $ff, $d7, $ff, $c6, $ff, $ca, $de, $e1, $ff, $e9, $ef, $b3 141 | db $ff, $bb, $ff, $de, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca, $de, $c6, $ff, $d7 142 | db $ff, $de, $ff, $bb, $ff, $e1, $ff, $ca, $de, $c6, $ff, $d7, $ff, $de, $ff, $bb 143 | db $ff, $b3, $ff, $e9, $ef, $c6, $ff, $d7, $ff, $de, $ff, $bb, $ff, $b3, $ff, $e9 144 | db $ef, $e1, $ff, $ca, $de, $de, $ff, $bb, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca 145 | db $de, $c6, $ff, $d7, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca, $de, $c6, $ff, $d7 146 | db $ff, $de, $ff, $bb, $ff, $e1, $ff, $ca, $de, $c6, $ff, $d7, $ff, $de, $ff, $bb 147 | db $ff, $b3, $ff, $e9, $ef, $c6, $ff, $d7, $ff, $de, $ff, $bb, $ff, $b3, $ff, $e9 148 | db $ef, $e1, $ff, $ca, $de, $de, $ff, $bb, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca 149 | db $de, $c6, $ff, $d7, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca, $de, $c6, $ff, $d7 150 | db $ff, $de, $ff, $bb, $ff, $e1, $ff, $ca, $de, $c6, $ff, $d7, $ff, $de, $ff, $bb 151 | db $ff, $b3, $ff, $e9, $ef, $c6, $ff, $d7, $ff, $de, $ff, $bb, $ff, $b3, $ff, $e9 152 | db $ef, $e1, $ff, $ca, $de, $de, $ff, $bb, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca 153 | db $de, $c6, $ff, $d7, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca, $de, $c6, $ff, $d7 154 | db $ff, $de, $ff, $bb, $ff, $e1, $ff, $ca, $de, $c6, $ff, $d7, $ff, $de, $ff, $bb 155 | db $ff, $b3, $ff, $e9, $ef, $c6, $ff, $d7, $ff, $de, $ff, $bb, $ff, $b3, $ff, $e9 156 | db $ef, $e1, $ff, $ca, $de, $de, $ff, $bb, $ff, $b3, $ff, $e9, $ef, $e1, $ff, $ca 157 | db $de, $c6, $ff, $d7, $ff, $81, $91, $81, $d5, $c5, $ef, $c5, $ff, $91, $ff, $91 158 | db $bb, $81, $d5, $81, $c5, $81, $d5, $81, $c5, $81, $91, $81, $d5, $c5, $ef, $c5 159 | db $ff, $91, $ff, $91, $bb, $91, $ff, $91, $bb, $81, $d5, $81, $c5, $81, $91, $81 160 | db $d5, $c5, $ef, $c5, $ff, $c5, $ef, $c5, $ff, $91, $ff, $91, $bb, $81, $d5, $81 161 | db $c5, $81, $91, $81, $d5, $81, $91, $81, $d5, $c5, $ef, $c5, $ff, $91, $ff, $91 162 | db $bb, $81, $d5, $81, $c5, $81, $d5, $81, $c5, $81, $91, $81, $d5, $c5, $ef, $c5 163 | db $ff, $91, $ff, $91, $bb, $91, $ff, $91, $bb, $81, $d5, $81, $c5, $81, $91, $81 164 | db $d5, $c5, $ef, $c5, $ff, $c5, $ef, $c5, $ff, $91, $ff, $91, $bb, $81, $d5, $81 165 | db $c5, $81, $91, $81, $d5, $81, $91, $81, $d5, $c5, $ef, $c5, $ff, $91, $ff, $91 166 | db $bb, $81, $d5, $81, $c5, $81, $d5, $81, $c5, $81, $91, $81, $d5, $c5, $ef, $c5 167 | db $ff, $91, $ff, $91, $bb, $91, $ff, $91, $bb, $81, $d5, $81, $c5, $81, $91, $81 168 | db $d5, $c5, $ef, $c5, $ff, $c5, $ef, $c5, $ff, $91, $ff, $91, $bb, $81, $d5, $81 169 | db $c5, $81, $91, $81, $d5, $81, $91, $81, $d5, $c5, $ef, $c5, $ff, $91, $ff, $91 170 | db $bb, $81, $d5, $81, $c5, $81, $d5, $81, $c5, $81, $91, $81, $d5, $c5, $ef, $c5 171 | db $ff, $91, $ff, $91, $bb, $91, $ff, $91, $bb, $81, $d5, $81, $c5, $81, $91, $81 172 | db $d5, $c5, $ef, $c5, $ff, $c5, $ef, $c5, $ff, $91, $ff, $91, $bb, $81, $d5, $81 173 | db $c5, $81, $91, $81, $d5, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 174 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 175 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 176 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 177 | db $8f, $0e, $1f, $ff, $00, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 178 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 179 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 180 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 181 | db $8f, $0e, $1f, $ff, $00, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 182 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 183 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 184 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 185 | db $8f, $0e, $1f, $ff, $00, $ff, $00, $1c, $3e, $38, $7c, $ff, $00, $ff, $00, $1c 186 | db $3e, $38, $7c, $ff, $00, $ff, $00, $07, $8f, $0e, $1f, $ff, $00, $ff, $00, $70 187 | db $f8, $e0, $f1, $ff, $00, $ff, $00, $c1, $e3, $83, $c7, $ff, $00, $ff, $00, $c1 188 | db $e3, $83, $c7, $ff, $00, $ff, $00, $70, $f8, $e0, $f1, $ff, $00, $ff, $00, $07 189 | db $8f, $0e, $1f, $ff, $00, $00, $5d, $00, $49, $00, $20, $00, $22, $00, $a2, $00 190 | db $b6, $00, $14, $00, $1c, $00, $14, $00, $1c, $00, $5d, $00, $49, $00, $20, $00 191 | db $22, $00, $a2, $00, $b6, $00, $a2, $00, $b6, $00, $14, $00, $1c, $00, $5d, $00 192 | db $49, $00, $20, $00, $22, $00, $20, $00, $22, $00, $a2, $00, $b6, $00, $14, $00 193 | db $1c, $00, $5d, $00, $49, $00, $5d, $00, $49, $00, $20, $00, $22, $00, $a2, $00 194 | db $b6, $00, $14, $00, $1c, $00, $14, $00, $1c, $00, $5d, $00, $49, $00, $20, $00 195 | db $22, $00, $a2, $00, $b6, $00, $a2, $00, $b6, $00, $14, $00, $1c, $00, $5d, $00 196 | db $49, $00, $20, $00, $22, $00, $20, $00, $22, $00, $a2, $00, $b6, $00, $14, $00 197 | db $1c, $00, $5d, $00, $49, $00, $5d, $00, $49, $00, $20, $00, $22, $00, $a2, $00 198 | db $b6, $00, $14, $00, $1c, $00, $14, $00, $1c, $00, $5d, $00, $49, $00, $20, $00 199 | db $22, $00, $a2, $00, $b6, $00, $a2, $00, $b6, $00, $14, $00, $1c, $00, $5d, $00 200 | db $49, $00, $20, $00, $22, $00, $20, $00, $22, $00, $a2, $00, $b6, $00, $14, $00 201 | db $1c, $00, $5d, $00, $49, $00, $5d, $00, $49, $00, $20, $00, $22, $00, $a2, $00 202 | db $b6, $00, $14, $00, $1c, $00, $14, $00, $1c, $00, $5d, $00, $49, $00, $20, $00 203 | db $22, $00, $a2, $00, $b6, $00, $a2, $00, $b6, $00, $14, $00, $1c, $00, $5d, $00 204 | db $49, $00, $20, $00, $22, $00, $20, $00, $22, $00, $a2, $00, $b6, $00, $14, $00 205 | db $1c, $00, $5d, $00, $49, $00, $00, $67, $ff, $00, $ff, $22, $ff, $cc, $ff, $ff 206 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 207 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 208 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 209 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $67, $ff, $00, $ff, $22, $ff, $cc, $ff, $ff 210 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 211 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 212 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 213 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $67, $ff, $00, $ff, $22, $ff, $cc, $ff, $ff 214 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 215 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 216 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 217 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $67, $ff, $00, $ff, $22, $ff, $cc, $ff, $ff 218 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 219 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 220 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 221 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 222 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 223 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 224 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 225 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 226 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 227 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 228 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 229 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 230 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 231 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 232 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 233 | db $ff, $ff, $ff, $ff, $ff, $38, $38, $44, $4c, $ce, $df, $00, $ff, $11, $ff, $66 234 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 235 | db $ff, $ff, $ff, $ff, $ff, $dc, $ff, $00, $ff, $44, $ff, $99, $ff, $ff, $ff, $ff 236 | db $ff, $ff, $ff, $ff, $ff, $00, $00, $9d, $ff, $00, $ff, $88, $ff, $33, $ff, $ff 237 | db $ff, $ff, $ff, $ff, $ff, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 238 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 239 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 240 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 241 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 242 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 243 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 244 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 245 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 246 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 247 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 248 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 249 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 250 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 251 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 252 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 253 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 254 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 255 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 256 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 257 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 258 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 259 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 260 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 261 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 262 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 263 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 264 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 265 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 266 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 267 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 268 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 269 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 270 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 271 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 272 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 273 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 274 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 275 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 276 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 277 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 278 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 279 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 280 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 281 | db $f1, $70, $f8, $ff, $00, $ff, $00, $38, $7c, $1c, $3e, $ff, $00, $ff, $00, $38 282 | db $7c, $1c, $3e, $ff, $00, $ff, $00, $e0, $f1, $70, $f8, $ff, $00, $ff, $00, $0e 283 | db $1f, $07, $8f, $ff, $00, $ff, $00, $83, $c7, $c1, $e3, $ff, $00, $ff, $00, $83 284 | db $c7, $c1, $e3, $ff, $00, $ff, $00, $0e, $1f, $07, $8f, $ff, $00, $ff, $00, $e0 285 | db $f1, $70, $f8, $ff, $00 286 | 287 | ;0x74c5 288 | INCLUDE "data/graphics_data_headers.asm" -------------------------------------------------------------------------------- /charmap.asm: -------------------------------------------------------------------------------- 1 | charmap " ", $20 2 | charmap "0", $30 3 | charmap "1", $31 4 | charmap "2", $32 5 | charmap "3", $33 6 | charmap "4", $34 7 | charmap "5", $35 8 | charmap "6", $36 9 | charmap "7", $37 10 | charmap "8", $38 11 | charmap "9", $39 12 | charmap "A", $41 13 | charmap "B", $42 14 | charmap "C", $43 15 | charmap "D", $44 16 | charmap "E", $45 17 | charmap "F", $46 18 | charmap "G", $47 19 | charmap "H", $48 20 | charmap "I", $49 21 | charmap "J", $4A 22 | charmap "K", $4B 23 | charmap "L", $4C 24 | charmap "M", $4D 25 | charmap "N", $4E 26 | charmap "O", $4F 27 | charmap "P", $50 28 | charmap "Q", $51 29 | charmap "R", $52 30 | charmap "S", $53 31 | charmap "T", $54 32 | charmap "U", $55 33 | charmap "V", $56 34 | charmap "W", $57 35 | charmap "X", $58 36 | charmap "Y", $59 37 | charmap "Z", $5A 38 | charmap "©", $5F 39 | charmap ".", $60 40 | charmap "ō", $61 41 | charmap "-", $70 42 | 43 | ;charmap "1980", $5B,$5C,$5D,$62 44 | ;charmap "1981", $5B,$5C,$5D,$5B 45 | ;charmap "1983", $5B,$5C,$5D,$5E 46 | ;charmap "1994", $5B,$5C,$5C,$63 47 | -------------------------------------------------------------------------------- /constants.asm: -------------------------------------------------------------------------------- 1 | INCLUDE "charmap.asm" 2 | INCLUDE "macros.asm" 3 | 4 | INCLUDE "constants/hardware_constants.asm" 5 | INCLUDE "constants/misc_constants.asm" 6 | INCLUDE "constants/sgb_constants.asm" -------------------------------------------------------------------------------- /constants/hardware_constants.asm: -------------------------------------------------------------------------------- 1 | ; From http://nocash.emubase.de/pandocs.htm. 2 | 3 | GBC EQU $11 4 | 5 | ; memory map 6 | VRAM_Begin EQU $8000 7 | VRAM_End EQU $a000 8 | SRAM_Begin EQU $a000 9 | SRAM_End EQU $c000 10 | WRAM0_Begin EQU $c000 11 | WRAM0_End EQU $d000 12 | WRAM1_Begin EQU $d000 13 | WRAM1_End EQU $e000 14 | ; hardware registers $ff00-$ff80 (see below) 15 | HRAM_Begin EQU $ff80 16 | HRAM_End EQU $ffff 17 | 18 | ; MBC1 19 | MBC1SRamEnable EQU $0000 20 | MBC1RomBank EQU $2000 21 | MBC1SRamBank EQU $4000 22 | MBC1SRamBankingMode EQU $6000 23 | 24 | SRAM_DISABLE EQU $00 25 | SRAM_ENABLE EQU $0a 26 | 27 | NUM_SRAM_BANKS EQU 4 28 | 29 | ; interrupt flags 30 | VBLANK EQU 0 31 | LCD_STAT EQU 1 32 | TIMER EQU 2 33 | SERIAL EQU 3 34 | JOYPAD EQU 4 35 | 36 | LY_VBLANK EQU 145 37 | 38 | ; serial 39 | START_TRANSFER_EXTERNAL_CLOCK EQU $80 40 | START_TRANSFER_INTERNAL_CLOCK EQU $81 41 | 42 | ; Hardware registers 43 | rJOYP EQU $ff00 ; Joypad (R/W) 44 | rSB EQU $ff01 ; Serial transfer data (R/W) 45 | rSC EQU $ff02 ; Serial Transfer Control (R/W) 46 | rSC_ON EQU 7 47 | rSC_CGB EQU 1 48 | rSC_CLOCK EQU 0 49 | rDIV EQU $ff04 ; Divider Register (R/W) 50 | rTIMA EQU $ff05 ; Timer counter (R/W) 51 | rTMA EQU $ff06 ; Timer Modulo (R/W) 52 | rTAC EQU $ff07 ; Timer Control (R/W) 53 | rTAC_ON EQU 2 54 | rTAC_4096_HZ EQU 0 55 | rTAC_262144_HZ EQU 1 56 | rTAC_65536_HZ EQU 2 57 | rTAC_16384_HZ EQU 3 58 | rIF EQU $ff0f ; Interrupt Flag (R/W) 59 | rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W) 60 | rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W) 61 | rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W) 62 | rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only) 63 | rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W) 64 | rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W) 65 | rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W) 66 | rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W) 67 | rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W) 68 | rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W) 69 | rNR31 EQU $ff1b ; Channel 3 Sound Length 70 | rNR32 EQU $ff1c ; Channel 3 Select output level (R/W) 71 | rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W) 72 | rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W) 73 | rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W) 74 | rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W) 75 | rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W) 76 | rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Initial (R/W) 77 | rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W) 78 | rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W) 79 | rNR52 EQU $ff26 ; Sound on/off 80 | rWave_0 EQU $ff30 81 | rWave_1 EQU $ff31 82 | rWave_2 EQU $ff32 83 | rWave_3 EQU $ff33 84 | rWave_4 EQU $ff34 85 | rWave_5 EQU $ff35 86 | rWave_6 EQU $ff36 87 | rWave_7 EQU $ff37 88 | rWave_8 EQU $ff38 89 | rWave_9 EQU $ff39 90 | rWave_a EQU $ff3a 91 | rWave_b EQU $ff3b 92 | rWave_c EQU $ff3c 93 | rWave_d EQU $ff3d 94 | rWave_e EQU $ff3e 95 | rWave_f EQU $ff3f 96 | rLCDC EQU $ff40 ; LCD Control (R/W) 97 | rLCDC_ENABLE EQU 7 98 | rLCDC_ENABLE_MASK EQU 1 << rLCDC_ENABLE 99 | rSTAT EQU $ff41 ; LCDC Status (R/W) 100 | rSCY EQU $ff42 ; Scroll Y (R/W) 101 | rSCX EQU $ff43 ; Scroll X (R/W) 102 | rLY EQU $ff44 ; LCDC Y-Coordinate (R) 103 | rLYC EQU $ff45 ; LY Compare (R/W) 104 | rDMA EQU $ff46 ; DMA Transfer and Start Address (W) 105 | rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only 106 | rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only 107 | rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only 108 | rWY EQU $ff4a ; Window Y Position (R/W) 109 | rWX EQU $ff4b ; Window X Position minus 7 (R/W) 110 | rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch 111 | rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank 112 | rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High 113 | rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low 114 | rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High 115 | rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low 116 | rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start 117 | rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port 118 | rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index 119 | rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data 120 | rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index 121 | rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data 122 | rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only 123 | rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank 124 | rUNKNOWN2 EQU $ff72 ; (00h) - Bit 0-7 (Read/Write) 125 | rUNKNOWN3 EQU $ff73 ; (00h) - Bit 0-7 (Read/Write) 126 | rUNKNOWN4 EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only 127 | rUNKNOWN5 EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write) 128 | rUNKNOWN6 EQU $ff76 ; (00h) - Always 00h (Read Only) 129 | rUNKNOWN7 EQU $ff77 ; (00h) - Always 00h (Read Only) 130 | rIE EQU $ffff ; Interrupt Enable (R/W) 131 | -------------------------------------------------------------------------------- /constants/misc_constants.asm: -------------------------------------------------------------------------------- 1 | INCLUDE "hram.asm" 2 | 3 | ;Game State/Scene Values 4 | SceneIntroTitle equ $2 5 | SceneFileSelect equ $3 6 | SceneDKArcadeIntro equ $4 7 | SceneRecordMenu equ $8 8 | SceneStage equ $10 9 | ScenePauseScreen equ $11 10 | SceneStageMapScreen equ $14 11 | SceneBonusGameCircle equ $15 12 | SceneBonusGameSlots equ $16 13 | ScenePlaceObject equ $18 14 | SceneCredits equ $1a 15 | SceneGameOverScreen equ $1c 16 | SceneCutscene equ $1e 17 | 18 | ;Sprite ID Values? 19 | -------------------------------------------------------------------------------- /constants/sgb_constants.asm: -------------------------------------------------------------------------------- 1 | SGB_PACKET_SIZE EQU $10 ; bytes 2 | 3 | PAL01 EQU $00 ; Set SGB Palette 0,1 Data 4 | PAL23 EQU $01 ; Set SGB Palette 2,3 Data 5 | PAL03 EQU $02 ; Set SGB Palette 0,3 Data 6 | PAL12 EQU $03 ; Set SGB Palette 1,2 Data 7 | ATTR_BLK EQU $04 ; "Block" Area Designation Mode 8 | ATTR_LIN EQU $05 ; "Line" Area Designation Mode 9 | ATTR_DIV EQU $06 ; "Divide" Area Designation Mode 10 | ATTR_CHR EQU $07 ; "1CHR" Area Designation Mode 11 | SOUND EQU $08 ; Sound On/Off 12 | SOU_TRN EQU $09 ; Transfer Sound PRG/DATA 13 | PAL_SET EQU $0a ; Set SGB Palette Indirect 14 | PAL_TRN EQU $0b ; Set System Color Palette Data 15 | ATRC_EN EQU $0c ; Enable/disable Attraction Mode 16 | TEST_EN EQU $0d ; Speed Function 17 | ICON_EN EQU $0e ; SGB Function 18 | DATA_SND EQU $0f ; SUPER NES WRAM Transfer 1 19 | DATA_TRN EQU $10 ; SUPER NES WRAM Transfer 2 20 | MLT_REQ EQU $11 ; Controller 2 Request 21 | JUMP EQU $12 ; Set SNES Program Counter 22 | CHR_TRN EQU $13 ; Transfer Character Font Data 23 | PCT_TRN EQU $14 ; Set Screen Data Color Data 24 | ATTR_TRN EQU $15 ; Set Attribute from ATF 25 | ATTR_SET EQU $16 ; Set Data to ATF 26 | MASK_EN EQU $17 ; Game Boy Window Mask 27 | OBJ_TRN EQU $18 ; Super NES OBJ Mode 28 | PAL_PRI EQU $19 ; Palette Priority 29 | 30 | ATTR_BLK_CTRL_INSIDE EQU 1 31 | ATTR_BLK_CTRL_LINE EQU 2 32 | ATTR_BLK_CTRL_OUTSIDE EQU 4 33 | 34 | MLT_REQ_1_PLAYER EQU 0 35 | MLT_REQ_2_PLAYERS EQU 1 36 | MLT_REQ_4_PLAYERS EQU 3 37 | 38 | MASK_EN_CANCEL_MASK EQU 0 39 | MASK_EN_FREEZE_SCREEN EQU 1 40 | MASK_EN_BLANK_SCREEN_BLACK EQU 2 41 | MASK_EN_BLANK_SCREEN_COLOR_0 EQU 3 42 | -------------------------------------------------------------------------------- /data/bank_0c_5ddd.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/bank_0c_5ddd.bin -------------------------------------------------------------------------------- /data/bank_1b_table_data.asm: -------------------------------------------------------------------------------- 1 | ;offset 7918 2 | Table_1b_7918:: 3 | dw $7972 4 | dw $79a9 5 | dw $79c8 6 | dw $79e1 7 | dw $79fa 8 | dw $7a37 9 | dw $7a44 10 | dw $7a51 11 | dw $7a76 12 | dw $7a7d 13 | dw $7a84 14 | dw $7a9d 15 | dw $7ab6 16 | dw $7acf 17 | dw $7ad6 18 | dw $7b13 19 | dw $7b27 20 | dw $7b40 21 | dw $7b89 22 | dw $7bf1 23 | dw $7bc6 24 | dw $7c0a 25 | dw $7c1d 26 | dw $7c30 27 | dw $7c43 28 | dw $7c62 29 | dw $7c7b 30 | dw $7cac 31 | dw $7cc5 32 | dw $7cd8 33 | dw $7ce5 34 | dw $7d10 35 | dw $7d35 36 | dw $7d5a 37 | dw $7d7f 38 | dw $7d98 39 | dw $7dc9 40 | dw $7ddc 41 | dw $7dfb 42 | dw $7e0e 43 | dw $7e27 44 | dw $7e46 45 | dw $7e4d 46 | dw $7b20 47 | dw $7e6c 48 | 49 | ;7972 50 | db $09, $00, $01, $fe, $00, $28, $08, $01, $01, $ff, $00, $28, $10, $02 51 | db $01, $ff, $00, $38, $10, $03, $01, $ff, $00, $48, $10, $04, $01, $ff, $00, $58 52 | db $10, $05, $01, $ff, $00, $68, $10, $06, $01, $ff, $00, $78, $10, $07, $01, $ff 53 | db $00, $88, $10, $08, $01, $ff, $00, $98, $10 54 | ;79a9 55 | db $05, $00, $00, $fe, $00, $10, $18 56 | db $01, $00, $fe, $01, $10, $08, $02, $00, $fe, $02, $10, $08, $03, $00, $fe, $03 57 | db $10, $08, $04, $00, $fe, $04, $10, $08 58 | ;79c8 59 | db $04, $01, $01, $fe, $01, $10, $08, $02 60 | db $01, $fe, $02, $10, $08, $03, $01, $fe, $03, $10, $08, $04, $01, $fe, $04, $10 61 | db $08 62 | ;79e1 63 | db $04, $01, $01, $fe, $06, $10, $08, $02, $01, $fe, $07, $10, $08, $03, $01 64 | db $fe, $08, $10, $08, $04, $01, $fe, $09, $10, $08 65 | ;79fa 66 | db $0a, $00, $01, $fe, $00, $10 67 | db $08, $01, $01, $ff, $00, $10, $10, $02, $01, $ff, $00, $20, $10, $03, $01, $ff 68 | db $00, $30, $10, $04, $01, $ff, $00, $40, $10, $05, $01, $ff, $00, $50, $10, $06 69 | db $01, $ff, $00, $60, $10, $07, $01, $ff, $00, $70, $10, $08, $01, $ff, $00, $80 70 | db $10, $09, $01, $ff, $00, $90, $10, $02, $00, $01, $fe, $0d, $60, $22, $01, $00 71 | db $00, $00, $00, $00, $02, $00, $01, $fe, $20, $a0, $a0, $01, $01, $fe, $20, $2f 72 | db $6a, $06, $00, $01, $fe, $10, $80, $08, $01, $01, $fe, $26, $30, $40, $0a, $01 73 | db $fe, $26, $30, $70, $02, $00, $fe, $28, $80, $38, $03, $00, $fe, $27, $7f, $18 74 | db $04, $01, $fe, $29, $80, $98, $01, $03, $00, $02, $19, $85, $08, $01, $0a, $01 75 | db $fe, $0a, $60, $18, $04, $0b, $01, $fe, $3f, $60, $10, $0c, $00, $fe, $3f, $60 76 | db $20, $0d, $00, $fe, $3f, $70, $10, $0e, $00, $fe, $3f, $70, $20, $04, $0b, $01 77 | db $fe, $3f, $60, $40, $0c, $00, $fe, $3f, $60, $50, $0d, $00, $fe, $3f, $70, $40 78 | db $0e, $00, $fe, $3f, $70, $50, $04, $0b, $01, $fe, $3f, $60, $70, $0c, $00, $fe 79 | db $3f, $60, $80, $0d, $00, $fe, $3f, $70, $70, $0e, $00, $fe, $3f, $70, $80, $01 80 | db $00, $00, $ff, $06, $10, $08, $0a, $00, $00, $fe, $4f, $a0, $00, $01, $00, $fe 81 | db $4a, $30, $30, $02, $00, $fe, $4a, $30, $30, $03, $00, $fe, $4a, $30, $30, $04 82 | db $00, $fe, $4a, $30, $50, $05, $00, $fe, $4a, $30, $50, $06, $00, $fe, $4a, $30 83 | db $50, $07, $00, $fe, $4a, $30, $70, $08, $00, $fe, $4a, $30, $70, $09, $00, $fe 84 | db $4a, $30, $70, $02, $00, $01, $fe, $0e, $10, $b0, $01, $01, $fe, $0f, $90, $70 85 | db $01, $00, $01, $00, $00, $60, $f8, $04, $00, $01, $00, $00, $60, $f8, $01, $01 86 | db $02, $00, $50, $e8, $02, $01, $37, $00, $00, $60, $03, $01, $38, $00, $60, $8f 87 | db $0c, $00, $01, $80, $00, $50, $b1, $01, $01, $82, $00, $40, $c0, $02, $01, $84 88 | db $00, $00, $00, $03, $41, $39, $00, $60, $38, $04, $39, $39, $00, $60, $40, $05 89 | db $31, $39, $00, $60, $48, $06, $29, $39, $00, $60, $50, $07, $21, $39, $00, $60 90 | db $58, $08, $19, $39, $00, $60, $60, $09, $11, $39, $00, $60, $68, $0a, $09, $39 91 | db $00, $60, $70, $0b, $01, $39, $00, $00, $00, $0a, $00, $01, $00, $00, $50, $f8 92 | db $01, $01, $02, $00, $40, $e8, $02, $01, $04, $00, $48, $f8, $03, $31, $39, $08 93 | db $60, $38, $04, $29, $39, $08, $60, $40, $05, $21, $39, $08, $60, $48, $06, $19 94 | db $39, $08, $60, $50, $07, $11, $39, $08, $60, $58, $08, $09, $39, $08, $60, $60 95 | db $09, $01, $39, $08, $60, $68, $07, $00, $01, $00, $00, $60, $f8, $01, $01, $02 96 | db $00, $50, $e8, $02, $01, $04, $00, $00, $e0, $03, $01, $3a, $00, $00, $78, $04 97 | db $01, $3a, $00, $00, $78, $05, $01, $3a, $00, $00, $78, $06, $01, $3a, $00, $00 98 | db $78, $04, $00, $01, $80, $00, $40, $b0, $01, $01, $82, $00, $30, $c0, $02, $01 99 | db $84, $00, $00, $e0, $03, $01, $3b, $00, $00, $78, $03, $00, $01, $00, $00, $60 100 | db $f8, $01, $01, $02, $00, $50, $e8, $02, $01, $04, $00, $00, $e0, $03, $00, $01 101 | db $80, $00, $58, $b0, $01, $01, $82, $00, $48, $c0, $02, $01, $84, $00, $00, $e0 102 | db $03, $00, $01, $80, $00, $48, $b0, $01, $01, $82, $00, $38, $c0, $02, $01, $84 103 | db $00, $00, $e0, $05, $00, $01, $80, $00, $60, $b0, $01, $01, $82, $00, $50, $c0 104 | db $02, $01, $84, $00, $00, $e0, $03, $01, $bc, $00, $60, $c0, $04, $01, $ba, $00 105 | db $00, $20, $04, $00, $01, $18, $00, $60, $f8, $01, $01, $17, $00, $38, $80, $02 106 | db $01, $3c, $04, $48, $70, $03, $01, $3d, $00, $00, $78, $08, $00, $01, $00, $00 107 | db $60, $f8, $01, $01, $02, $00, $50, $e8, $02, $01, $3c, $00, $60, $e8, $03, $01 108 | db $3e, $00, $00, $36, $04, $01, $3e, $00, $00, $36, $05, $01, $3d, $00, $00, $36 109 | db $06, $01, $3e, $00, $00, $3e, $07, $01, $3e, $00, $00, $3e, $04, $00, $01, $00 110 | db $00, $60, $f8, $01, $01, $02, $00, $50, $e8, $02, $01, $3f, $00, $60, $a8, $03 111 | db $01, $3f, $00, $60, $a8, $03, $00, $01, $80, $00, $60, $b0, $01, $01, $82, $00 112 | db $50, $28, $02, $01, $84, $00, $00, $e0, $02, $00, $01, $00, $00, $60, $f8, $01 113 | db $01, $02, $00, $50, $e8, $07, $00, $01, $80, $00, $50, $b0, $01, $01, $9b, $00 114 | db $40, $20, $02, $01, $3a, $00, $00, $78, $03, $01, $3a, $00, $00, $78, $04, $01 115 | db $40, $00, $36, $40, $05, $01, $40, $00, $64, $90, $06, $01, $c0, $00, $70, $00 116 | db $06, $00, $01, $80, $00, $48, $b0, $01, $01, $82, $00, $38, $b8, $02, $01, $bc 117 | db $00, $48, $b0, $03, $01, $3f, $00, $48, $b0, $04, $01, $40, $00, $00, $00, $05 118 | db $01, $40, $00, $00, $00, $06, $00, $01, $80, $00, $44, $b0, $01, $01, $82, $00 119 | db $34, $b8, $02, $01, $42, $00, $66, $d0, $03, $01, $42, $00, $65, $08, $04, $01 120 | db $42, $00, $65, $40, $05, $01, $42, $00, $64, $78, $06, $00, $01, $80, $00, $60 121 | db $b0, $01, $01, $82, $06, $38, $28, $02, $01, $84, $00, $38, $10, $03, $01, $c3 122 | db $00, $50, $60, $04, $01, $c3, $00, $50, $58, $05, $01, $c3, $00, $50, $50, $04 123 | db $00, $01, $00, $00, $00, $00, $01, $01, $02, $00, $50, $20, $02, $01, $42, $00 124 | db $70, $f0, $03, $01, $42, $00, $70, $20, $08, $00, $01, $00, $00, $60, $f8, $01 125 | db $01, $02, $06, $38, $80, $02, $01, $04, $00, $38, $98, $03, $01, $44, $00, $18 126 | db $20, $04, $01, $44, $00, $14, $70, $05, $01, $44, $00, $16, $55, $06, $01, $00 127 | db $00, $00, $00, $07, $01, $3b, $00, $00, $80, $03, $00, $01, $80, $00, $60, $b0 128 | db $01, $01, $82, $00, $50, $28, $02, $01, $84, $00, $00, $e0, $05, $00, $01, $00 129 | db $00, $58, $f8, $01, $01, $02, $00, $48, $f0, $02, $01, $42, $00, $6a, $3d, $03 130 | db $01, $42, $00, $69, $63, $04, $01, $46, $00, $20, $f0, $03, $00, $01, $32, $00 131 | db $27, $50, $01, $01, $31, $00, $27, $50, $02, $01, $45, $00, $27, $50, $04, $00 132 | db $01, $80, $00, $60, $b0, $01, $01, $b3, $00, $40, $20, $02, $01, $ba, $00, $00 133 | db $e0, $03, $01, $ba, $00, $00, $e0, $05, $00, $01, $b6, $00, $50, $58, $01, $01 134 | db $b5, $00, $f0, $60, $02, $01, $c7, $00, $50, $78, $03, $01, $c9, $00, $00, $e0 135 | db $04, $01, $c8, $00, $00, $e0, $01, $00, $01, $00, $00, $78, $50, $05, $00, $01 136 | db $4b, $00, $e0, $48, $01, $01, $4c, $00, $f0, $46, $02, $01, $4c, $00, $f0, $72 137 | db $03, $01, $4c, $00, $f0, $22, $04, $01, $4c, $00, $f0, $5c, $0a, $00, $01, $00 138 | db $00, $38, $40, $01, $01, $0c, $0e, $30, $60, $02, $01, $0c, $12, $20, $50, $03 139 | db $01, $0c, $1a, $38, $18, $04, $01, $0c, $1c, $38, $20, $05, $01, $0c, $1a, $38 140 | db $88, $06, $01, $0c, $1c, $38, $90, $07, $01, $0c, $16, $40, $40, $08, $01, $0c 141 | db $18, $40, $68, $09, $01, $0c, $20, $10, $08, $ff, $ff, $ff, $ff, $ff, $ff, $ff 142 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 143 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 144 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 145 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 146 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 147 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 148 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 149 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 150 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 151 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 152 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 153 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 154 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 155 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 156 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 157 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 158 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 159 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 160 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 161 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 162 | db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff 163 | -------------------------------------------------------------------------------- /data/bank_1e_4c72.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/bank_1e_4c72.bin -------------------------------------------------------------------------------- /data/graphics_data_headers.asm: -------------------------------------------------------------------------------- 1 | ;graphics data headers(mostly for compressed graphics, but there may be some uncompressed ones) 2 | GraphicsDataHeaderTable:: 3 | dw GraphicsDataHeaders_7527 4 | dw GraphicsDataHeaders_7527 5 | dw GraphicsDataHeaders_7527 6 | dw GraphicsDataHeaders_7527 7 | dw GraphicsDataHeaders_7536 8 | dw GraphicsDataHeaders_754c 9 | dw GraphicsDataHeaders_7554 10 | dw GraphicsDataHeaders_7571 11 | dw GraphicsDataHeaders_7580 12 | dw GraphicsDataHeaders_758f 13 | dw GraphicsDataHeaders_759e 14 | dw IntroTitleGraphicsHeaders 15 | dw GraphicsDataHeaders_75df 16 | dw GraphicsDataHeaders_75ee 17 | dw GraphicsDataHeaders_760b 18 | dw GraphicsDataHeaders_7621 19 | dw GraphicsDataHeaders_767d 20 | dw GraphicsDataHeaders_76e0 21 | dw GraphicsDataHeaders_7735 22 | dw GraphicsDataHeaders_7799 23 | dw GraphicsDataHeaders_777c 24 | dw GraphicsDataHeaders_77e7 25 | dw GraphicsDataHeaders_7835 26 | dw GraphicsDataHeaders_7835 27 | dw GraphicsDataHeaders_7891 28 | dw GraphicsDataHeaders_78bc 29 | dw GraphicsDataHeaders_7903 30 | dw GraphicsDataHeaders_794a 31 | dw GraphicsDataHeaders_7967 32 | dw GraphicsDataHeaders_7967 33 | dw GraphicsDataHeaders_79df 34 | dw GraphicsDataHeaders_7a18 35 | dw GraphicsDataHeaders_7a3c 36 | dw GraphicsDataHeaders_7a75 37 | dw GraphicsDataHeaders_7aca 38 | dw GraphicsDataHeaders_7ae7 39 | dw GraphicsDataHeaders_7b3c 40 | dw GraphicsDataHeaders_7b9f 41 | dw GraphicsDataHeaders_7c09 42 | dw GraphicsDataHeaders_7c57 43 | dw GraphicsDataHeaders_7c90 44 | dw GraphicsDataHeaders_7c9f 45 | dw GraphicsDataHeaders_7cae 46 | dw GraphicsDataHeaders_7c90 47 | dw GraphicsDataHeaders_7c90 48 | dw GraphicsDataHeaders_7c90 49 | dw GraphicsDataHeaders_7c90 50 | dw GraphicsDataHeaders_7c90 51 | dw GraphicsDataHeaders_7ccb 52 | 53 | ;the first number is the number of entries 54 | ;entry format: bank number, bank data offset (2 bytes), 55 | ;vram copying start offset 56 | GraphicsDataHeaders_7527:: 57 | db 2 58 | gfxheader BANK(Bank1B_Graphics_4000),Bank1B_Graphics_4000,$8000,1 59 | gfxheader BANK(Bank1B_Graphics_45B3),Bank1B_Graphics_45B3,$8800,1 60 | GraphicsDataHeaders_7536:: 61 | db 3 62 | gfxheader $18,$4c3c,$9000,1 63 | gfxheader $18,$501f,$8080,1 64 | gfxheader $18,$50a3,$92b0,1 65 | GraphicsDataHeaders_754c:: 66 | db 1 67 | gfxheader BANK(IntroLevelScreenGraphics),IntroLevelScreenGraphics,$9000,1 68 | GraphicsDataHeaders_7554:: 69 | db 4 70 | gfxheader $04,$46f0,$8000,0,$300 71 | gfxheader $18,$4c3c,$9000,1 72 | gfxheader $04,$46d0,$82a0,0,$20 73 | gfxheader $04,$5f30,$8480,0,$80 74 | GraphicsDataHeaders_7571:: 75 | db 2 76 | gfxheader BANK(Bank1B_Graphics_732B),Bank1B_Graphics_732B,$86a0,2,$960 77 | gfxheader BANK(UIGraphics1),UIGraphics1,$9000,2,$170 78 | GraphicsDataHeaders_7580:: 79 | db 2 80 | gfxheader BANK(GameOverScreenGraphics),GameOverScreenGraphics,$8800,1 81 | gfxheader BANK(DKMenuFingerGraphics),DKMenuFingerGraphics,$8000,1 82 | GraphicsDataHeaders_758f:: 83 | db 2 84 | gfxheader BANK(BonusGameGraphics),BonusGameGraphics,$87e0,2,$820 85 | gfxheader BANK(UIGraphics1),UIGraphics1,$9000,2,$170 86 | GraphicsDataHeaders_759e:: 87 | db 7 88 | ;length: 0x874 89 | gfxheader BANK(FileSelectScreenGraphics),FileSelectScreenGraphics,$8800,1 90 | gfxheader BANK(DeleteFileBombGraphics),DeleteFileBombGraphics,$8400,1 91 | gfxheader $0e,$4f55,$8000,2,$2e0 92 | gfxheader $04,$4ef0,$8600,0,$1c0 93 | gfxheader $04,$46f0,$8300,0,$40 94 | gfxheader $04,$4bf0,$8340,0,$80 95 | gfxheader $04,$4730,$83c0,0,$40 96 | ;75d0 97 | IntroTitleGraphicsHeaders:: 98 | db 2 99 | ;title/intro graphics 1 header 100 | gfxheader BANK(IntroCutsceneGraphics),IntroCutsceneGraphics,$8000,1 101 | ;title/intro screen graphics 2 header 102 | gfxheader BANK(TitleScreenGraphics),TitleScreenGraphics,$8800,1 103 | 104 | ;75df 105 | GraphicsDataHeaders_75df:: 106 | db 2 107 | gfxheader $19,$6103,$8c00,1 108 | gfxheader $19,$642c,$9500,1 109 | ;75ee 110 | GraphicsDataHeaders_75ee:: 111 | db 4 112 | gfxheader $18,$4c3c,$9000,1 113 | gfxheader BANK(Bank1B_Graphics_4689),Bank1B_Graphics_4689,$8800,1 114 | gfxheader BANK(Bank1B_Graphics_49C7),Bank1B_Graphics_49C7,$8000,1 115 | gfxheader BANK(UIGraphics1),UIGraphics1,$9000,2,$170 116 | ;760b 117 | GraphicsDataHeaders_760b:: 118 | db 3 119 | gfxheader $18,$4c3c,$9000,1 120 | gfxheader BANK(Bank1B_Graphics_6E83),Bank1B_Graphics_6E83,$9500,1 121 | gfxheader BANK(Bank1B_Graphics_6F53),Bank1B_Graphics_6F53,$8800,1 122 | ;7621 123 | GraphicsDataHeaders_7621:: 124 | db 13 125 | gfxheader BANK(Bank1B_Graphics_49E8),Bank1B_Graphics_49E8,$8fe0,1 126 | gfxheader $18,$4c3c,$9000,1 127 | gfxheader BANK(Bank1B_Graphics_49FC),Bank1B_Graphics_49FC,$94c0,1 128 | gfxheader $0d,$506d,$8000,2,$460 129 | gfxheader $11,$4070,$80e0,0,$240 130 | gfxheader $11,$5110,$8320,0,$100 131 | gfxheader $11,$5590,$8420,0,$40 132 | gfxheader $11,$53f0,$8460,0,$80 133 | gfxheader $11,$5490,$84e0,0,$40 134 | gfxheader $11,$52d0,$8520,0,$120 135 | gfxheader $04,$46f0,$8640,0,$40 136 | gfxheader $04,$4bf0,$8680,0,$80 137 | gfxheader $04,$47b0,$8700,0,$40 138 | ;767d 139 | GraphicsDataHeaders_767d:: 140 | db 14 141 | gfxheader BANK(Bank1B_Graphics_4A0E),Bank1B_Graphics_4A0E,$94e0,1 142 | gfxheader $13,$58ef,$9740,2,$40 143 | gfxheader $04,$4ef0,$8740,0,$80 144 | gfxheader $04,$4fb0,$87c0,0,$100 145 | gfxheader $04,$5190,$88c0,0,$20 146 | gfxheader $04,$4e90,$88e0,0,$20 147 | gfxheader $11,$4070,$8a00,0,$4e0 148 | gfxheader $04,$53d0,$8900,0,$160 149 | gfxheader $14,$5722,$8a60,2,$40 150 | gfxheader $04,$55b0,$8b00,0,$100 151 | gfxheader $04,$5530,$8aa0,0,$80 152 | gfxheader BANK(Bank1B_Graphics_5BDA),Bank1B_Graphics_5BDA,$8ba0,0,$40 153 | gfxheader $11,$5870,$8c00,0,$40 154 | gfxheader $13,$5d0a,$8ec0,2,$60 155 | ;76e0 156 | GraphicsDataHeaders_76e0:: 157 | db 12 158 | gfxheader BANK(Bank1B_Graphics_4B4D),Bank1B_Graphics_4B4D,$94e0,1 159 | gfxheader $04,$47f0,$8740,0,$40 160 | gfxheader $04,$4c70,$8780,0,$40 161 | gfxheader BANK(Bank1B_Graphics_5C1A),Bank1B_Graphics_5C1A,$87c0,0,$40 162 | gfxheader $0d,$475a,$8800,2,$560 163 | gfxheader $11,$5870,$8800,0,$40 164 | gfxheader $11,$5830,$8840,0,$40 165 | gfxheader BANK(Bank1B_Graphics_5EB1),Bank1B_Graphics_5EB1,$8880,1 166 | gfxheader $04,$4990,$88c0,0,$20 167 | gfxheader $13,$47d0,$8c60,0,$10 168 | gfxheader $04,$4000,$8c70,0,$10 169 | gfxheader $1c,$6a23,$8c80,2,$e0 170 | ;7735 171 | GraphicsDataHeaders_7735:: 172 | db 10 173 | gfxheader BANK(Bank1B_Graphics_4C18),Bank1B_Graphics_4C18,$94e0,1 174 | gfxheader $04,$47f0,$8740,0,$40 175 | gfxheader $04,$4c70,$8780,0,$40 176 | gfxheader BANK(Bank1B_Graphics_5C1A),Bank1B_Graphics_5C1A,$87c0,0,$40 177 | gfxheader $0d,$506d,$8800,2,$460 178 | gfxheader $04,$50b0,$8800,0,$c0 179 | gfxheader $16,$5dd4,$8e00,2,$c0 180 | gfxheader $14,$4ac4,$8ec0,2,$80 181 | gfxheader $0e,$6124,$8f50,0,$20 182 | gfxheader $04,$4000,$8f70,0,$10 183 | ;777c 184 | GraphicsDataHeaders_777c:: 185 | db 4 186 | gfxheader BANK(Bank1B_Graphics_4C18),Bank1B_Graphics_4C18,$94e0,1 187 | gfxheader $0d,$4414,$8800,2,$4c0 188 | gfxheader $04,$5770,$8740,0,$180 189 | gfxheader $04,$4730,$88c0,0,$40 190 | ;7799 191 | GraphicsDataHeaders_7799:: 192 | db 11 193 | gfxheader BANK(Bank1B_Graphics_4C18),Bank1B_Graphics_4C18,$94e0,1 194 | gfxheader $04,$47f0,$8740,0,$40 195 | gfxheader $04,$58f0,$8780,0,$80 196 | gfxheader $04,$5970,$8800,0,$40 197 | gfxheader BANK(Bank1B_Graphics_5F78),Bank1B_Graphics_5F78,$8840,1 198 | gfxheader BANK(Bank1B_Graphics_5C5A),Bank1B_Graphics_5C5A,$8940,1 199 | gfxheader BANK(Bank1B_Graphics_5D9E),Bank1B_Graphics_5D9E,$8ae0,1 200 | gfxheader BANK(Bank1B_Graphics_5EEE),Bank1B_Graphics_5EEE,$8c40,1 201 | gfxheader BANK(Bank1B_Graphics_60F8),Bank1B_Graphics_60F8,$8d00,1 202 | gfxheader $04,$4e90,$8d40,0,$20 203 | gfxheader $04,$59f0,$8e00,0,$180 204 | ;77e7 205 | GraphicsDataHeaders_77e7:: 206 | db 11 207 | gfxheader BANK(Bank1B_Graphics_4C18),Bank1B_Graphics_4C18,$94e0,1 208 | gfxheader $04,$47f0,$8740,0,$40 209 | gfxheader $04,$4c70,$8780,0,$40 210 | gfxheader BANK(Bank1B_Graphics_5C1A),Bank1B_Graphics_5C1A,$87c0,0,$40 211 | gfxheader $11,$4870,$8800,0,$4c0 212 | gfxheader $11,$5870,$8800,0,$40 213 | gfxheader $04,$5210,$8840,0,$40 214 | gfxheader BANK(Bank1B_Graphics_5EB1),Bank1B_Graphics_5EB1,$8880,1 215 | gfxheader BANK(Bank1B_Graphics_5EEE),Bank1B_Graphics_5EEE,$88c0,1 216 | gfxheader $04,$5250,$8be0,0,$180 217 | gfxheader BANK(Bank1B_Graphics_6038),Bank1B_Graphics_6038,$8f00,1 218 | ;7835 219 | GraphicsDataHeaders_7835:: 220 | db 13 221 | gfxheader $0d,$475a,$8c00,2,$560 222 | gfxheader $11,$4870,$8800,0,$4c0 223 | gfxheader $04,$47f0,$8740,0,$40 224 | gfxheader $04,$4730,$8780,0,$40 225 | gfxheader $04,$5770,$87c0,0,$c0 226 | gfxheader $04,$58b0,$8880,0,$c0 227 | gfxheader $04,$5970,$8940,0,$80 228 | gfxheader BANK(Bank1B_Graphics_5EB1),Bank1B_Graphics_5EB1,$89c0,1 229 | gfxheader BANK(Bank1B_Graphics_5E91),Bank1B_Graphics_5E91,$8a00,0,$20 230 | gfxheader BANK(Bank1B_Graphics_49E8),Bank1B_Graphics_49E8,$8fe0,1 231 | gfxheader $18,$4c3c,$9000,1 232 | gfxheader BANK(Bank1B_Graphics_49FC),Bank1B_Graphics_49FC,$94c0,1 233 | gfxheader BANK(Bank1B_Graphics_4EEB),Bank1B_Graphics_4EEB,$94e0,1 234 | ;7891 235 | GraphicsDataHeaders_7891:: 236 | db 6 237 | gfxheader BANK(Bank1B_Graphics_5104),Bank1B_Graphics_5104,$94e0,1 238 | gfxheader $0d,$49df,$8800,2,$4e0 239 | gfxheader BANK(Bank1B_Graphics_6120),Bank1B_Graphics_6120,$8800,1 240 | gfxheader $04,$67b0,$8920,0,$40 241 | gfxheader $04,$6b70,$8960,0,$80 242 | gfxheader $04,$6870,$89e0,0,$40 243 | ;78bc 244 | GraphicsDataHeaders_78bc:: 245 | db 10 246 | gfxheader BANK(Bank1B_Graphics_5104),Bank1B_Graphics_5104,$94e0,1 247 | gfxheader BANK(Bank1B_Graphics_61EC),Bank1B_Graphics_61EC,$8740,1 248 | gfxheader $1c,$6106,$8800,2,$240 249 | gfxheader BANK(Bank1B_Graphics_62A3),Bank1B_Graphics_62A3,$8940,1 250 | gfxheader $04,$4770,$89a0,0,$40 251 | gfxheader $04,$4830,$89e0,0,$40 252 | gfxheader $04,$49b0,$8a20,0,$80 253 | gfxheader $0e,$4f55,$8aa0,2,$2e0 254 | gfxheader $1c,$609d,$8f20,2,$80 255 | gfxheader $0e,$652e,$8fa0,0,$10 256 | ;7903 257 | GraphicsDataHeaders_7903:: 258 | db 10 259 | gfxheader BANK(Bank1B_Graphics_5104),Bank1B_Graphics_5104,$94e0,1 260 | gfxheader BANK(Bank1B_Graphics_61EC),Bank1B_Graphics_61EC,$8740,1 261 | gfxheader $1c,$6106,$8800,2,$240 262 | gfxheader BANK(Bank1B_Graphics_62A3),Bank1B_Graphics_62A3,$8940,1 263 | gfxheader $04,$4770,$89a0,0,$40 264 | gfxheader $04,$4830,$89e0,0,$40 265 | gfxheader $04,$49b0,$8a20,0,$80 266 | gfxheader $0d,$59cd,$8aa0,2,$300 267 | gfxheader $1c,$609d,$8f20,2,$80 268 | gfxheader $0e,$652e,$8fa0,0,$10 269 | ;794a 270 | GraphicsDataHeaders_794a:: 271 | db 4 272 | gfxheader BANK(Bank1B_Graphics_52A1),Bank1B_Graphics_52A1,$94e0,1 273 | gfxheader BANK(Bank1B_Graphics_61EC),Bank1B_Graphics_61EC,$8740,1 274 | gfxheader $04,$4ef0,$8800,0,$1c0 275 | gfxheader $16,$75ee,$89c0,2,$80 276 | ;7967 277 | GraphicsDataHeaders_7967:: 278 | db 17 279 | gfxheader $0d,$475a,$8c00,2,$560 280 | gfxheader $11,$4870,$8800,0,$4c0 281 | gfxheader $04,$47f0,$8740,0,$40 282 | gfxheader $04,$4730,$8780,0,$40 283 | gfxheader $04,$5770,$87c0,0,$c0 284 | gfxheader $04,$58b0,$8880,0,$c0 285 | gfxheader $04,$5970,$8940,0,$80 286 | gfxheader BANK(Bank1B_Graphics_5EB1),Bank1B_Graphics_5EB1,$89c0,1 287 | gfxheader BANK(Bank1B_Graphics_5E91),Bank1B_Graphics_5E91,$8a00,0,$20 288 | gfxheader BANK(Bank1B_Graphics_5EEE),Bank1B_Graphics_5EEE,$8be0,1 289 | gfxheader $04,$67b0,$8e00,0,$40 290 | gfxheader $04,$6b70,$8e40,0,$80 291 | gfxheader $04,$6870,$8ec0,0,$40 292 | gfxheader BANK(Bank1B_Graphics_49E8),Bank1B_Graphics_49E8,$8fe0,1 293 | gfxheader $18,$4c3c,$9000,1 294 | gfxheader BANK(Bank1B_Graphics_49FC),Bank1B_Graphics_49FC,$94c0,1 295 | gfxheader BANK(Bank1B_Graphics_52A1),Bank1B_Graphics_52A1,$94e0,1 296 | ;79df 297 | GraphicsDataHeaders_79df:: 298 | db 8 299 | gfxheader BANK(Bank1B_Graphics_544B),Bank1B_Graphics_544B,$94e0,1 300 | gfxheader BANK(Bank1B_Graphics_61EC),Bank1B_Graphics_61EC,$8740,1 301 | gfxheader $04,$4ef0,$8800,0,$1c0 302 | gfxheader $16,$75ee,$89c0,2,$80 303 | gfxheader $04,$4730,$8a40,0,$40 304 | gfxheader $16,$7ade,$8f00,2,$60 305 | gfxheader $1c,$6864,$8f60,2,$60 306 | gfxheader $1c,$6887,$8fa0,2,$40 307 | ;7a18 308 | GraphicsDataHeaders_7a18:: 309 | db 5 310 | gfxheader BANK(Bank1B_Graphics_544B),Bank1B_Graphics_544B,$94e0,1 311 | gfxheader BANK(Bank1B_Graphics_61EC),Bank1B_Graphics_61EC,$8740,1 312 | gfxheader $1c,$6106,$8800,2,$240 313 | gfxheader $04,$4ef0,$8940,0,$20 314 | gfxheader $13,$70b7,$8960,2,$200 315 | ;7a3c 316 | GraphicsDataHeaders_7a3c:: 317 | db 8 318 | gfxheader BANK(Bank1B_Graphics_544B),Bank1B_Graphics_544B,$94e0,1 319 | gfxheader $04,$4870,$8740,0,$40 320 | gfxheader $04,$4af0,$8780,0,$40 321 | gfxheader $04,$4b70,$87c0,0,$40 322 | gfxheader $13,$7afe,$8800,2,$40 323 | gfxheader BANK(Bank1B_Graphics_62FC),Bank1B_Graphics_62FC,$8840,1 324 | gfxheader $0e,$5a58,$8a00,2,$140 325 | gfxheader BANK(Bank1B_Graphics_63EE),Bank1B_Graphics_63EE,$9780,1 326 | ;7a75 327 | GraphicsDataHeaders_7a75:: 328 | db 12 329 | gfxheader BANK(Bank1B_Graphics_566F),Bank1B_Graphics_566F,$94e0,1 330 | gfxheader $04,$47f0,$8740,0,$40 331 | gfxheader $04,$58f0,$8780,0,$80 332 | gfxheader $04,$5970,$8800,0,$40 333 | gfxheader BANK(Bank1B_Graphics_5F78),Bank1B_Graphics_5F78,$8840,1 334 | gfxheader BANK(Bank1B_Graphics_5C5A),Bank1B_Graphics_5C5A,$8940,1 335 | gfxheader BANK(Bank1B_Graphics_5D9E),Bank1B_Graphics_5D9E,$8ae0,1 336 | gfxheader BANK(Bank1B_Graphics_5EEE),Bank1B_Graphics_5EEE,$8c40,1 337 | gfxheader BANK(Bank1B_Graphics_60F8),Bank1B_Graphics_60F8,$8d00,1 338 | gfxheader $04,$4e90,$8d40,0,$20 339 | gfxheader $04,$59f0,$8e00,0,$180 340 | gfxheader $0d,$62ce,$8d60,2,$60 341 | ;7aca 342 | GraphicsDataHeaders_7aca:: 343 | db 4 344 | gfxheader BANK(Bank1B_Graphics_572D),Bank1B_Graphics_572D,$94e0,1 345 | gfxheader $13,$7afe,$8800,2,$40 346 | gfxheader BANK(Bank1B_Graphics_62FC),Bank1B_Graphics_62FC,$8840,1 347 | gfxheader $0e,$5a58,$8a00,2,$140 348 | ;7ae7 349 | GraphicsDataHeaders_7ae7:: 350 | db 12 351 | gfxheader BANK(Bank1B_Graphics_572D),Bank1B_Graphics_572D,$94e0,1 352 | gfxheader $04,$47f0,$8740,0,$40 353 | gfxheader $04,$58f0,$8780,0,$80 354 | gfxheader $04,$5970,$8800,0,$40 355 | gfxheader BANK(Bank1B_Graphics_5F78),Bank1B_Graphics_5F78,$8840,1 356 | gfxheader BANK(Bank1B_Graphics_5C5A),Bank1B_Graphics_5C5A,$8940,1 357 | gfxheader BANK(Bank1B_Graphics_5D9E),Bank1B_Graphics_5D9E,$8ae0,1 358 | gfxheader BANK(Bank1B_Graphics_5EEE),Bank1B_Graphics_5EEE,$8c40,1 359 | gfxheader BANK(Bank1B_Graphics_60F8),Bank1B_Graphics_60F8,$8d00,1 360 | gfxheader $04,$4e90,$8d40,0,$20 361 | gfxheader $04,$59f0,$8e00,0,$180 362 | gfxheader BANK(Bank1B_Graphics_6414),Bank1B_Graphics_6414,$8d60,1 363 | ;7b3c 364 | GraphicsDataHeaders_7b3c:: 365 | db 14 366 | gfxheader BANK(Bank1B_Graphics_572D),Bank1B_Graphics_572D,$94e0,1 367 | gfxheader $04,$47f0,$8740,0,$40 368 | gfxheader $04,$58f0,$8780,0,$80 369 | gfxheader $04,$5970,$8800,0,$40 370 | gfxheader BANK(Bank1B_Graphics_5F78),Bank1B_Graphics_5F78,$8840,1 371 | gfxheader BANK(Bank1B_Graphics_5C5A),Bank1B_Graphics_5C5A,$8940,1 372 | gfxheader BANK(Bank1B_Graphics_5D9E),Bank1B_Graphics_5D9E,$8ae0,1 373 | gfxheader BANK(Bank1B_Graphics_5EEE),Bank1B_Graphics_5EEE,$8c40,1 374 | gfxheader BANK(Bank1B_Graphics_60F8),Bank1B_Graphics_60F8,$8d00,1 375 | gfxheader $04,$4e90,$8d40,0,$20 376 | gfxheader $04,$59f0,$8e00,0,$180 377 | gfxheader $04,$4870,$8d60,0,$40 378 | gfxheader $04,$4af0,$8da0,0,$40 379 | gfxheader $04,$59f0,$8e00,0,$180 380 | ;7b9f 381 | GraphicsDataHeaders_7b9f:: 382 | db 15 383 | gfxheader BANK(Bank1B_Graphics_572D),Bank1B_Graphics_572D,$94e0,1 384 | gfxheader $04,$4ef0,$8740,0,$80 385 | gfxheader $04,$4fb0,$87c0,0,$100 386 | gfxheader $04,$5190,$88c0,0,$20 387 | gfxheader $04,$4e90,$88e0,0,$20 388 | gfxheader $11,$4070,$8a00,0,$4e0 389 | gfxheader $04,$53d0,$8900,0,$160 390 | gfxheader $14,$5722,$8a60,2,$40 391 | gfxheader $04,$55b0,$8b00,0,$100 392 | gfxheader $04,$5530,$8aa0,0,$80 393 | gfxheader BANK(Bank1B_Graphics_5BDA),Bank1B_Graphics_5BDA,$8ba0,0,$40 394 | gfxheader $11,$5870,$8c00,0,$40 395 | gfxheader $13,$5d0a,$8ec0,2,$60 396 | gfxheader BANK(Bank1B_Graphics_64CC),Bank1B_Graphics_64CC,$8f20,1 397 | gfxheader $13,$7b42,$8fa0,2,$40 398 | ;7c09 399 | GraphicsDataHeaders_7c09:: 400 | db 11 401 | gfxheader BANK(Bank1B_Graphics_58C5),Bank1B_Graphics_58C5,$94e0,1 402 | gfxheader BANK(Bank1B_Graphics_61EC),Bank1B_Graphics_61EC,$8740,1 403 | gfxheader $1c,$6106,$8800,2,$240 404 | gfxheader BANK(Bank1B_Graphics_62A3),Bank1B_Graphics_62A3,$8940,1 405 | gfxheader $04,$4770,$89a0,0,$40 406 | gfxheader $04,$4830,$89e0,0,$40 407 | gfxheader $04,$49b0,$8a20,0,$80 408 | gfxheader $0d,$59cd,$8aa0,2,$300 409 | gfxheader $1c,$609d,$8f20,2,$80 410 | gfxheader $0e,$652e,$8fa0,0,$10 411 | gfxheader BANK(Bank1B_Graphics_652E),Bank1B_Graphics_652E,$8da0,1 412 | ;7c57 413 | GraphicsDataHeaders_7c57:: 414 | db 8 415 | gfxheader BANK(Bank1B_Graphics_59B7),Bank1B_Graphics_59B7,$94e0,1 416 | gfxheader $0d,$4414,$8800,2,$4c0 417 | gfxheader $04,$5770,$8740,0,$180 418 | gfxheader $04,$4730,$88c0,0,$40 419 | gfxheader $04,$58f0,$8cc0,0,$80 420 | gfxheader $04,$4ef0,$8d40,0,$1c0 421 | gfxheader BANK(Bank1B_Graphics_657D),Bank1B_Graphics_657D,$8f00,1 422 | gfxheader BANK(Bank1B_Graphics_6593),Bank1B_Graphics_6593,$9690,1 423 | ;7c90 424 | GraphicsDataHeaders_7c90:: 425 | db 2 426 | gfxheader BANK(Bank1B_Graphics_5AF2),Bank1B_Graphics_5AF2,$9000,1 427 | gfxheader BANK(Bank1B_Graphics_65EB),Bank1B_Graphics_65EB,$8000,1 428 | ;7c9f 429 | GraphicsDataHeaders_7c9f:: 430 | db 2 431 | gfxheader $19,$65cc,$9000,1 432 | gfxheader BANK(MarioCircusDemoSprites),MarioCircusDemoSprites,$8000,1 433 | ;7cae 434 | GraphicsDataHeaders_7cae:: 435 | db 4 436 | gfxheader BANK(Bank1B_Graphics_59B7),Bank1B_Graphics_59B7,$94e0,1 437 | gfxheader $11,$5970,$8000,0,$4c0 438 | gfxheader $11,$5e30,$84c0,0,$700 439 | gfxheader BANK(Bank1B_Graphics_65CE),Bank1B_Graphics_65CE,$8bc0,1 440 | ;7ccb 441 | GraphicsDataHeaders_7ccb:: 442 | db 2 443 | gfxheader BANK(CreditsGraphics),CreditsGraphics,$8000,2,$800 444 | gfxheader BANK(CreditsGraphics),CreditsGraphics,$8f10,2,$800 -------------------------------------------------------------------------------- /data/level_data_1.asm: -------------------------------------------------------------------------------- 1 | Level1Data: 2 | INCBIN "data/levels/level1.bin" 3 | Level2Data: 4 | INCBIN "data/levels/level2.bin" 5 | Level3Data: 6 | INCBIN "data/levels/level3.bin" 7 | Level4Data: 8 | INCBIN "data/levels/level4.bin" 9 | Level5Data: 10 | INCBIN "data/levels/level5.bin" 11 | Level6Data: 12 | INCBIN "data/levels/level6.bin" 13 | Level7Data: 14 | INCBIN "data/levels/level7.bin" 15 | Level8Data: 16 | INCBIN "data/levels/level8.bin" 17 | Level9Data: 18 | INCBIN "data/levels/level9.bin" 19 | Level10Data: 20 | INCBIN "data/levels/level10.bin" 21 | Level11Data: 22 | INCBIN "data/levels/level11.bin" 23 | Level12Data: 24 | INCBIN "data/levels/level12.bin" 25 | Level13Data: 26 | INCBIN "data/levels/level13.bin" 27 | Level14Data: 28 | INCBIN "data/levels/level14.bin" 29 | Level15Data: 30 | INCBIN "data/levels/level15.bin" 31 | Level16Data: 32 | INCBIN "data/levels/level16.bin" 33 | Level17Data: 34 | INCBIN "data/levels/level17.bin" 35 | Level18Data: 36 | INCBIN "data/levels/level18.bin" 37 | Level19Data: 38 | INCBIN "data/levels/level19.bin" 39 | Level20Data: 40 | INCBIN "data/levels/level20.bin" 41 | Level21Data: 42 | INCBIN "data/levels/level21.bin" 43 | Level22Data: 44 | INCBIN "data/levels/level22.bin" 45 | Level23Data: 46 | INCBIN "data/levels/level23.bin" 47 | Level24Data: 48 | INCBIN "data/levels/level24.bin" 49 | Level25Data: 50 | INCBIN "data/levels/level25.bin" 51 | Level26Data: 52 | INCBIN "data/levels/level26.bin" 53 | Level27Data: 54 | INCBIN "data/levels/level27.bin" 55 | Level28Data: 56 | INCBIN "data/levels/level28.bin" 57 | Level29Data: 58 | INCBIN "data/levels/level29.bin" 59 | Level30Data: 60 | INCBIN "data/levels/level30.bin" 61 | Level31Data: 62 | INCBIN "data/levels/level31.bin" 63 | Level32Data: 64 | INCBIN "data/levels/level32.bin" 65 | Level33Data: 66 | INCBIN "data/levels/level33.bin" 67 | Level34Data: 68 | INCBIN "data/levels/level34.bin" 69 | Level35Data: 70 | INCBIN "data/levels/level35.bin" 71 | Level36Data: 72 | INCBIN "data/levels/level36.bin" 73 | Level37Data: 74 | INCBIN "data/levels/level37.bin" 75 | Level38Data: 76 | INCBIN "data/levels/level38.bin" 77 | Level39Data: 78 | INCBIN "data/levels/level39.bin" 79 | Level40Data: 80 | INCBIN "data/levels/level40.bin" 81 | Level41Data: 82 | INCBIN "data/levels/level41.bin" 83 | Level42Data: 84 | INCBIN "data/levels/level42.bin" 85 | Level43Data: 86 | INCBIN "data/levels/level43.bin" 87 | Level44Data: 88 | INCBIN "data/levels/level44.bin" 89 | Level45Data: 90 | INCBIN "data/levels/level45.bin" -------------------------------------------------------------------------------- /data/level_data_2.asm: -------------------------------------------------------------------------------- 1 | Level46Data: 2 | INCBIN "data/levels/level46.bin" 3 | Level47Data: 4 | INCBIN "data/levels/level47.bin" 5 | Level48Data: 6 | INCBIN "data/levels/level48.bin" 7 | Level49Data: 8 | INCBIN "data/levels/level49.bin" 9 | Level50Data: 10 | INCBIN "data/levels/level50.bin" 11 | Level51Data: 12 | INCBIN "data/levels/level51.bin" 13 | Level52Data: 14 | INCBIN "data/levels/level52.bin" 15 | Level53Data: 16 | INCBIN "data/levels/level53.bin" 17 | Level54Data: 18 | INCBIN "data/levels/level54.bin" 19 | Level55Data: 20 | INCBIN "data/levels/level55.bin" 21 | Level56Data: 22 | INCBIN "data/levels/level56.bin" 23 | Level57Data: 24 | INCBIN "data/levels/level57.bin" 25 | Level58Data: 26 | INCBIN "data/levels/level58.bin" 27 | Level59Data: 28 | INCBIN "data/levels/level59.bin" 29 | Level60Data: 30 | INCBIN "data/levels/level60.bin" 31 | Level61Data: 32 | INCBIN "data/levels/level61.bin" 33 | Level62Data: 34 | INCBIN "data/levels/level62.bin" 35 | Level63Data: 36 | INCBIN "data/levels/level63.bin" 37 | Level64Data: 38 | INCBIN "data/levels/level64.bin" 39 | Level65Data: 40 | INCBIN "data/levels/level65.bin" 41 | Level66Data: 42 | INCBIN "data/levels/level66.bin" 43 | Level67Data: 44 | INCBIN "data/levels/level67.bin" 45 | Level68Data: 46 | INCBIN "data/levels/level68.bin" 47 | Level69Data: 48 | INCBIN "data/levels/level69.bin" 49 | Level70Data: 50 | INCBIN "data/levels/level70.bin" 51 | Level71Data: 52 | INCBIN "data/levels/level71.bin" 53 | Level72Data: 54 | INCBIN "data/levels/level72.bin" 55 | Level73Data: 56 | INCBIN "data/levels/level73.bin" 57 | Level74Data: 58 | INCBIN "data/levels/level74.bin" 59 | Level75Data: 60 | INCBIN "data/levels/level75.bin" 61 | Level76Data: 62 | INCBIN "data/levels/level76.bin" 63 | Level77Data: 64 | INCBIN "data/levels/level77.bin" 65 | Level78Data: 66 | INCBIN "data/levels/level78.bin" 67 | Level79Data: 68 | INCBIN "data/levels/level79.bin" 69 | Level80Data: 70 | INCBIN "data/levels/level80.bin" -------------------------------------------------------------------------------- /data/level_data_3.asm: -------------------------------------------------------------------------------- 1 | Level81Data: 2 | INCBIN "data/levels/level81.bin" 3 | Level82Data: 4 | INCBIN "data/levels/level82.bin" 5 | Level83Data: 6 | INCBIN "data/levels/level83.bin" 7 | Level84Data: 8 | INCBIN "data/levels/level84.bin" 9 | Level85Data: 10 | INCBIN "data/levels/level85.bin" 11 | Level86Data: 12 | INCBIN "data/levels/level86.bin" 13 | Level87Data: 14 | INCBIN "data/levels/level87.bin" 15 | Level88Data: 16 | INCBIN "data/levels/level88.bin" 17 | Level89Data: 18 | INCBIN "data/levels/level89.bin" 19 | Level90Data: 20 | INCBIN "data/levels/level90.bin" 21 | Level91Data: 22 | INCBIN "data/levels/level91.bin" 23 | Level92Data: 24 | INCBIN "data/levels/level92.bin" 25 | Level93Data: 26 | INCBIN "data/levels/level93.bin" 27 | Level94Data: 28 | INCBIN "data/levels/level94.bin" 29 | Level95Data: 30 | INCBIN "data/levels/level95.bin" 31 | Level96Data: 32 | INCBIN "data/levels/level96.bin" 33 | Level97Data: 34 | INCBIN "data/levels/level97.bin" 35 | Level98Data: 36 | INCBIN "data/levels/level98.bin" 37 | Level99Data: 38 | INCBIN "data/levels/level99.bin" 39 | Level100Data: 40 | INCBIN "data/levels/level100.bin" 41 | Level101Data: 42 | INCBIN "data/levels/level101.bin" 43 | Level102Data: 44 | INCBIN "data/levels/level102.bin" 45 | Level103Data: 46 | INCBIN "data/levels/level103.bin" 47 | Level104Data: 48 | INCBIN "data/levels/level104.bin" 49 | Level105Data: 50 | INCBIN "data/levels/level105.bin" 51 | ;test level which all unused level table slots point to 52 | Level106Data: 53 | INCBIN "data/levels/level106.bin" -------------------------------------------------------------------------------- /data/levels.asm: -------------------------------------------------------------------------------- 1 | ;Level data format: 2 | ;0x00: tilemap size (0: 0x240 bytes for tilemap else 0x380 bytes) 3 | ;0x01: music id 4 | ;0x02: tileset id 5 | ;0x03-0x04: time 6 | ;0x05: switch data flag (0: no, otherwise yes) 7 | ; 8 | ;Switch data format (0xA1 bytes total): 9 | ;The switch data flag byte is the first byte of data 10 | ;The data starts with 16 raw bytes 11 | ;At the start of each loop, it first reads a byte, except the first time, which instead uses the last of the first 16 raw bytes 12 | ;If the value is more than 0x7f, it gets anded with 0x7f, and it copies the next n bytes directly, where n is the result 13 | ;otherwise, it copies n 00 bytes, where n is the value 14 | ; 15 | ;The next byte tells whether level has additional sprite data or not (0: no, otherwise yes) 16 | ;Additional sprite data is stored in the same way as for switch data (0x40 bytes total), 17 | ;except on the first loop it uses the flag byte as the first byte in the loop, and it doesn't start 18 | ;with raw bytes 19 | ; 20 | ;Compressed tilemap (no header, uses the size determined by the 1st byte) 21 | ;Sprite data (27 sprites max): 22 | ;Format: 0x00: sprite id, 0x01: ram position 23 | ;levelPos = ram position - 0xDA75; 24 | ;It keeps going until it hits a 00 byte 25 | ;Palette data format: 26 | ;0x00: id 27 | ;0x01: value 28 | 29 | ;the level data is split between 3 banks (banks 5, 6, 12) 30 | LevelDataTable:: 31 | dw Level1Data 32 | dw Level2Data 33 | dw Level3Data 34 | dw Level4Data 35 | dw Level5Data 36 | dw Level6Data 37 | dw Level7Data 38 | dw Level8Data 39 | dw Level9Data 40 | dw Level10Data 41 | dw Level11Data 42 | dw Level12Data 43 | dw Level13Data 44 | dw Level14Data 45 | dw Level15Data 46 | dw Level16Data 47 | dw Level17Data 48 | dw Level18Data 49 | dw Level19Data 50 | dw Level20Data 51 | dw Level21Data 52 | dw Level22Data 53 | dw Level23Data 54 | dw Level24Data 55 | dw Level25Data 56 | dw Level26Data 57 | dw Level27Data 58 | dw Level28Data 59 | dw Level29Data 60 | dw Level30Data 61 | dw Level31Data 62 | dw Level32Data 63 | dw Level33Data 64 | dw Level34Data 65 | dw Level35Data 66 | dw Level36Data 67 | dw Level37Data 68 | dw Level38Data 69 | dw Level39Data 70 | dw Level40Data 71 | dw Level41Data 72 | dw Level42Data 73 | dw Level43Data 74 | dw Level44Data 75 | dw Level45Data 76 | ;Bank 6 levels (starts at id 45) 77 | dw Level46Data 78 | dw Level47Data 79 | dw Level48Data 80 | dw Level49Data 81 | dw Level50Data 82 | dw Level51Data 83 | dw Level52Data 84 | dw Level53Data 85 | dw Level54Data 86 | dw Level55Data 87 | dw Level56Data 88 | dw Level57Data 89 | dw Level58Data 90 | dw Level59Data 91 | dw Level60Data 92 | dw Level61Data 93 | dw Level62Data 94 | dw Level63Data 95 | dw Level64Data 96 | dw Level65Data 97 | dw Level66Data 98 | dw Level67Data 99 | dw Level68Data 100 | dw Level69Data 101 | dw Level70Data 102 | dw Level71Data 103 | dw Level72Data 104 | dw Level73Data 105 | dw Level74Data 106 | dw Level75Data 107 | dw Level76Data 108 | dw Level77Data 109 | dw Level78Data 110 | dw Level79Data 111 | dw Level80Data 112 | ;Bank 12 levels (starts at id 80) 113 | dw Level81Data 114 | dw Level82Data 115 | dw Level83Data 116 | dw Level84Data 117 | dw Level85Data 118 | dw Level86Data 119 | dw Level87Data 120 | dw Level88Data 121 | dw Level89Data 122 | dw Level90Data 123 | dw Level91Data 124 | dw Level92Data 125 | dw Level93Data 126 | dw Level94Data 127 | dw Level95Data 128 | dw Level96Data 129 | dw Level97Data 130 | dw Level98Data 131 | dw Level99Data 132 | dw Level100Data 133 | dw Level101Data 134 | dw Level102Data 135 | dw Level103Data 136 | dw Level104Data 137 | dw Level105Data 138 | ;151 unused level entries 139 | REPT 151 140 | dw Level106Data 141 | ENDR -------------------------------------------------------------------------------- /data/levels/level1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level1.bin -------------------------------------------------------------------------------- /data/levels/level10.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level10.bin -------------------------------------------------------------------------------- /data/levels/level100.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level100.bin -------------------------------------------------------------------------------- /data/levels/level101.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level101.bin -------------------------------------------------------------------------------- /data/levels/level102.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level102.bin -------------------------------------------------------------------------------- /data/levels/level103.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level103.bin -------------------------------------------------------------------------------- /data/levels/level104.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level104.bin -------------------------------------------------------------------------------- /data/levels/level105.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level105.bin -------------------------------------------------------------------------------- /data/levels/level106.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level106.bin -------------------------------------------------------------------------------- /data/levels/level11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level11.bin -------------------------------------------------------------------------------- /data/levels/level12.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level12.bin -------------------------------------------------------------------------------- /data/levels/level13.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level13.bin -------------------------------------------------------------------------------- /data/levels/level14.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level14.bin -------------------------------------------------------------------------------- /data/levels/level15.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level15.bin -------------------------------------------------------------------------------- /data/levels/level16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level16.bin -------------------------------------------------------------------------------- /data/levels/level17.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level17.bin -------------------------------------------------------------------------------- /data/levels/level18.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level18.bin -------------------------------------------------------------------------------- /data/levels/level19.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level19.bin -------------------------------------------------------------------------------- /data/levels/level2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level2.bin -------------------------------------------------------------------------------- /data/levels/level20.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level20.bin -------------------------------------------------------------------------------- /data/levels/level21.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level21.bin -------------------------------------------------------------------------------- /data/levels/level22.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level22.bin -------------------------------------------------------------------------------- /data/levels/level23.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level23.bin -------------------------------------------------------------------------------- /data/levels/level24.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level24.bin -------------------------------------------------------------------------------- /data/levels/level25.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level25.bin -------------------------------------------------------------------------------- /data/levels/level26.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level26.bin -------------------------------------------------------------------------------- /data/levels/level27.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level27.bin -------------------------------------------------------------------------------- /data/levels/level28.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level28.bin -------------------------------------------------------------------------------- /data/levels/level29.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level29.bin -------------------------------------------------------------------------------- /data/levels/level3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level3.bin -------------------------------------------------------------------------------- /data/levels/level30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level30.bin -------------------------------------------------------------------------------- /data/levels/level31.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level31.bin -------------------------------------------------------------------------------- /data/levels/level32.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level32.bin -------------------------------------------------------------------------------- /data/levels/level33.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level33.bin -------------------------------------------------------------------------------- /data/levels/level34.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level34.bin -------------------------------------------------------------------------------- /data/levels/level35.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level35.bin -------------------------------------------------------------------------------- /data/levels/level36.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level36.bin -------------------------------------------------------------------------------- /data/levels/level37.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level37.bin -------------------------------------------------------------------------------- /data/levels/level38.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level38.bin -------------------------------------------------------------------------------- /data/levels/level39.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level39.bin -------------------------------------------------------------------------------- /data/levels/level4.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level4.bin -------------------------------------------------------------------------------- /data/levels/level40.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level40.bin -------------------------------------------------------------------------------- /data/levels/level41.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level41.bin -------------------------------------------------------------------------------- /data/levels/level42.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level42.bin -------------------------------------------------------------------------------- /data/levels/level43.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level43.bin -------------------------------------------------------------------------------- /data/levels/level44.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level44.bin -------------------------------------------------------------------------------- /data/levels/level45.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level45.bin -------------------------------------------------------------------------------- /data/levels/level46.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level46.bin -------------------------------------------------------------------------------- /data/levels/level47.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level47.bin -------------------------------------------------------------------------------- /data/levels/level48.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level48.bin -------------------------------------------------------------------------------- /data/levels/level49.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level49.bin -------------------------------------------------------------------------------- /data/levels/level5.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level5.bin -------------------------------------------------------------------------------- /data/levels/level50.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level50.bin -------------------------------------------------------------------------------- /data/levels/level51.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level51.bin -------------------------------------------------------------------------------- /data/levels/level52.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level52.bin -------------------------------------------------------------------------------- /data/levels/level53.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level53.bin -------------------------------------------------------------------------------- /data/levels/level54.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level54.bin -------------------------------------------------------------------------------- /data/levels/level55.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level55.bin -------------------------------------------------------------------------------- /data/levels/level56.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level56.bin -------------------------------------------------------------------------------- /data/levels/level57.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level57.bin -------------------------------------------------------------------------------- /data/levels/level58.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level58.bin -------------------------------------------------------------------------------- /data/levels/level59.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level59.bin -------------------------------------------------------------------------------- /data/levels/level6.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level6.bin -------------------------------------------------------------------------------- /data/levels/level60.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level60.bin -------------------------------------------------------------------------------- /data/levels/level61.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level61.bin -------------------------------------------------------------------------------- /data/levels/level62.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level62.bin -------------------------------------------------------------------------------- /data/levels/level63.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level63.bin -------------------------------------------------------------------------------- /data/levels/level64.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level64.bin -------------------------------------------------------------------------------- /data/levels/level65.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level65.bin -------------------------------------------------------------------------------- /data/levels/level66.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level66.bin -------------------------------------------------------------------------------- /data/levels/level67.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level67.bin -------------------------------------------------------------------------------- /data/levels/level68.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level68.bin -------------------------------------------------------------------------------- /data/levels/level69.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level69.bin -------------------------------------------------------------------------------- /data/levels/level7.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level7.bin -------------------------------------------------------------------------------- /data/levels/level70.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level70.bin -------------------------------------------------------------------------------- /data/levels/level71.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level71.bin -------------------------------------------------------------------------------- /data/levels/level72.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level72.bin -------------------------------------------------------------------------------- /data/levels/level73.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level73.bin -------------------------------------------------------------------------------- /data/levels/level74.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level74.bin -------------------------------------------------------------------------------- /data/levels/level75.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level75.bin -------------------------------------------------------------------------------- /data/levels/level76.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level76.bin -------------------------------------------------------------------------------- /data/levels/level77.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level77.bin -------------------------------------------------------------------------------- /data/levels/level78.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level78.bin -------------------------------------------------------------------------------- /data/levels/level79.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level79.bin -------------------------------------------------------------------------------- /data/levels/level8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level8.bin -------------------------------------------------------------------------------- /data/levels/level80.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level80.bin -------------------------------------------------------------------------------- /data/levels/level81.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level81.bin -------------------------------------------------------------------------------- /data/levels/level82.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level82.bin -------------------------------------------------------------------------------- /data/levels/level83.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level83.bin -------------------------------------------------------------------------------- /data/levels/level84.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level84.bin -------------------------------------------------------------------------------- /data/levels/level85.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level85.bin -------------------------------------------------------------------------------- /data/levels/level86.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level86.bin -------------------------------------------------------------------------------- /data/levels/level87.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level87.bin -------------------------------------------------------------------------------- /data/levels/level88.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level88.bin -------------------------------------------------------------------------------- /data/levels/level89.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level89.bin -------------------------------------------------------------------------------- /data/levels/level9.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level9.bin -------------------------------------------------------------------------------- /data/levels/level90.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level90.bin -------------------------------------------------------------------------------- /data/levels/level91.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level91.bin -------------------------------------------------------------------------------- /data/levels/level92.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level92.bin -------------------------------------------------------------------------------- /data/levels/level93.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level93.bin -------------------------------------------------------------------------------- /data/levels/level94.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level94.bin -------------------------------------------------------------------------------- /data/levels/level95.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level95.bin -------------------------------------------------------------------------------- /data/levels/level96.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level96.bin -------------------------------------------------------------------------------- /data/levels/level97.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level97.bin -------------------------------------------------------------------------------- /data/levels/level98.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level98.bin -------------------------------------------------------------------------------- /data/levels/level99.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/levels/level99.bin -------------------------------------------------------------------------------- /data/sgb_border_palette_data.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/data/sgb_border_palette_data.bin -------------------------------------------------------------------------------- /data/sgb_packets.asm: -------------------------------------------------------------------------------- 1 | ;SGB command macros, taken from pokegold, and using constant names from poketcg 2 | ;https://gbdev.io/pandocs/#sgb-functions 3 | 4 | attr_blk: MACRO 5 | db (ATTR_BLK << 3) + ((\1 * 6) / 16 + 1) 6 | db \1 7 | ENDM 8 | 9 | attr_blk_data: MACRO 10 | db \1 ; which regions are affected 11 | db \2 + (\3 << 2) + (\4 << 4) ; palette for each region 12 | db \5, \6, \7, \8 ; x1, y1, x2, y2 13 | ENDM 14 | 15 | attr_chr: MACRO 16 | db (ATTR_CHR << 3) + \1 17 | db \2 ;beginning x coordinate 18 | db \3 ;beginning y coordinate 19 | dw \4 ;number of data sets 20 | db \5 ;writing style 21 | ENDM 22 | 23 | attr_set: MACRO 24 | db (ATTR_SET << 3) + 1 25 | db \1 26 | ds 14 27 | ENDM 28 | 29 | sgb_pal_set: MACRO 30 | db (PAL_SET << 3) + 1 31 | dw \1, \2, \3, \4 32 | db \5 33 | ds 6, 0 34 | ENDM 35 | 36 | sgb_pal01: MACRO 37 | db (PAL01 << 3) + 1 38 | ENDM 39 | 40 | sgb_pal23: MACRO 41 | db (PAL23 << 3) + 1 42 | ENDM 43 | 44 | sgb_pal_trn: MACRO 45 | db (PAL_TRN << 3) + 1 46 | ds 15 47 | ENDM 48 | 49 | sgb_pal_pri: MACRO 50 | db (PAL_PRI << 3) + 1 51 | db \1 52 | ds 14 53 | ENDM 54 | 55 | sgb_attr_trn: MACRO 56 | db (ATTR_TRN << 3) + 1 57 | ds 15 58 | ENDM 59 | 60 | sgb_mlt_req: MACRO 61 | db (MLT_REQ << 3) + 1 62 | db \1 - 1 63 | ds 14 64 | ENDM 65 | 66 | sgb_chr_trn: MACRO 67 | db (CHR_TRN << 3) + 1 68 | db \1 + (\2 << 1) 69 | ds 14 70 | ENDM 71 | 72 | sgb_pct_trn: MACRO 73 | db (PCT_TRN << 3) + 1 74 | ds 15 75 | ENDM 76 | 77 | sgb_sou_trn: MACRO 78 | db (SOU_TRN << 3) + 1 79 | ds 15 80 | ENDM 81 | 82 | sgb_mask_en: MACRO 83 | db (MASK_EN << 3) + 1 84 | db \1 85 | ds 14 86 | ENDM 87 | 88 | sgb_data_snd: MACRO 89 | db (DATA_SND << 3) + 1 90 | dw \1 ; address 91 | db \2 ; bank 92 | db \3 ; length (1-11) 93 | ENDM 94 | 95 | sgb_sound: MACRO 96 | db (SOUND << 3) + 1 97 | db \1 98 | db \2 99 | db \3 + (\4 << 2) + (\5 << 4) + (\6 << 6) 100 | db \7 101 | ds 11 102 | ENDM 103 | 104 | sgb_atrc_en: MACRO 105 | db (ATRC_EN << 3) + 1 106 | db \1 107 | ds 14 108 | ENDM 109 | 110 | 111 | 112 | SGBPacketTable: 113 | dw Packet_0 ;index 0 114 | dw MaskEnBlankBlackPacket 115 | dw Packet_2 116 | dw Packet_3 117 | dw Packet_4 118 | dw PalPriPacket 119 | dw Packet_6 120 | dw MaskEnFreezePacket 121 | dw Packet_8 122 | dw MltReq1Packet 123 | dw MltReq2Packet ;index 10 124 | dw MaskEnCancelPacket 125 | dw Packet_12 126 | dw Packet_13 127 | dw Packet_14 128 | dw Packet_15 129 | dw PalTrnPacket 130 | dw AttrTrnPacket 131 | dw Packet_18 132 | dw Packet_18 133 | dw Packet_18 ;index 20 134 | dw Packet_18 135 | dw Packet_19 136 | dw Packet_20 137 | dw Packet_21 138 | dw Packet_22 139 | dw Packet_23 140 | dw Packet_24 141 | dw Packet_25 142 | dw Packet_26 143 | dw Packet_27 ;index 30 144 | dw Packet_28 145 | dw SouTrnPacket 146 | dw Packet_30 147 | dw Packet_31 148 | dw Packet_32 149 | dw Packet_33 150 | dw Packet_34 151 | dw Packet_32 152 | dw Packet_35 153 | dw Packet_36 ;index 40 154 | dw Packet_37 155 | dw Packet_38 156 | dw Packet_39 157 | dw Packet_40 158 | dw Packet_41 159 | dw Packet_42 160 | dw Packet_43 161 | dw Packet_44 162 | dw Packet_45 163 | dw Packet_46 ;index 50 164 | dw Packet_47 165 | dw Packet_48 166 | dw Packet_50 167 | dw Packet_49 168 | dw Packet_51 169 | dw Packet_52 170 | dw Packet_53 171 | dw Packet_54 172 | dw Packet_55 173 | dw Packet_56 ;index 60 174 | dw Packet_57 175 | dw Packet_57 176 | dw Packet_58 177 | dw Packet_59 178 | dw Packet_60 179 | dw Packet_61 180 | dw Packet_62 181 | dw Packet_63 182 | dw Packet_64 183 | dw Packet_65 ;index 70 184 | dw Packet_66 185 | dw Packet_67 186 | dw Packet_68 187 | dw Packet_69 188 | dw Packet_70 189 | dw Packet_71 190 | dw AttractionDisablePacket 191 | dw AttractionEnablePacket 192 | dw Packet_74 193 | dw Packet_75 ;index 80 194 | dw Packet_77 195 | dw Packet_78 196 | dw Packet_77 197 | dw Packet_78 198 | dw Packet_78 199 | dw Packet_77 200 | dw Packet_78 201 | dw Packet_79 202 | dw Packet_77 203 | dw Packet_79 ;index 90 204 | dw Packet_70 205 | dw Packet_70 206 | dw Packet_70 207 | dw Packet_70 208 | dw Packet_80 209 | dw Packet_85 210 | dw Packet_86 211 | dw Packet_87 212 | dw Packet_88 213 | dw Packet_81 ;index 100 214 | dw Packet_82 215 | dw Packet_83 216 | dw Packet_84 217 | dw SGBPatch1 218 | dw SGBPatch2 219 | dw SGBPatch3 220 | dw SGBPatch4 221 | dw SGBPatch5 222 | dw SGBPatch6 223 | dw SGBPatch7 ;index 110 224 | dw SGBPatch8 225 | 226 | ;offset 40e0 227 | Packet_0: 228 | sgb_pal_set $2C, $2D, $2C, $2D, 0 229 | MaskEnBlankBlackPacket: 230 | sgb_mask_en 2 231 | Packet_2: 232 | sgb_sound $0C, $00, 0, 2, 0, 2, 0 233 | Packet_3: 234 | attr_set $03 235 | Packet_4: 236 | attr_blk 1 237 | attr_blk_data 1, 0, 0, 0, 0, 0, $13, $11 238 | ds 8 239 | PalPriPacket: 240 | sgb_pal_pri 1 241 | Packet_6: 242 | sgb_pal_set $B0, $B1, $B2, $B3, $D1 243 | MaskEnFreezePacket: 244 | sgb_mask_en 1 245 | Packet_8: 246 | sgb_pal_set $B4, $B5, $B6, $B7, $D2 247 | MltReq1Packet: 248 | sgb_mlt_req 1 249 | MltReq2Packet: 250 | sgb_mlt_req 2 251 | MaskEnCancelPacket: 252 | sgb_mask_en 0 253 | Packet_12: 254 | sgb_pal_set $AC, $AD, $AE, $AF, $D0 255 | Packet_13: 256 | sgb_pal_set $AC, $AD, $AE, $E7, $D0 257 | Packet_14: 258 | attr_set $01 259 | Packet_15: 260 | attr_set $17 261 | PalTrnPacket: 262 | sgb_pal_trn 263 | AttrTrnPacket: 264 | sgb_attr_trn 265 | Packet_18: 266 | sgb_pal_set $04, $05, $06, $07, $C3 267 | Packet_19: 268 | sgb_pal_set $08, $09, $0A, $0B, $C7 269 | Packet_20: 270 | sgb_pal_set $0C, $0D, $0E, $0F, $C8 271 | Packet_21: 272 | sgb_pal_set $10, $11, $12, $13, $C9 273 | Packet_22: 274 | sgb_pal_set $14, $15, $16, $17, $CA 275 | Packet_23: 276 | sgb_pal_set $18, $19, $1A, $1B, $CB 277 | Packet_24: 278 | sgb_pal_set $1C, $1D, $1E, $1F, $CC 279 | Packet_25: 280 | sgb_pal_set $20, $21, $22, $23, $CD 281 | Packet_26: 282 | sgb_pal_set $24, $25, $26, $27, $CE 283 | Packet_27: 284 | sgb_pal_set $28, $29, $2A, $2B, $CF 285 | Packet_28: 286 | sgb_sound $80, $80, 0, 3, 0, 2, 0 287 | SouTrnPacket: 288 | sgb_sou_trn 289 | Packet_30: 290 | sgb_pal_set $00, $2D, $2E, $2F, $40 291 | Packet_31: 292 | sgb_pal_set $00, $01, $02, $03, $C2 293 | Packet_32: 294 | sgb_pal_set $B8, $B9, $BA, $BB, $C6 295 | Packet_33: 296 | sgb_pal_set $B8, $B9, $BA, $BB, $D3 297 | Packet_34: 298 | sgb_pal_set $B8, $B9, $BA, $BB, $D5 299 | Packet_35: 300 | sgb_chr_trn 0, 0 301 | Packet_36: 302 | sgb_pct_trn 303 | Packet_37: 304 | sgb_pal_set $BC, $BD, $BE, $BF, $D4 305 | Packet_38: 306 | sgb_chr_trn 1, 0 307 | Packet_39: 308 | sgb_pal_set $CC, $CD, $CE, $CF, $C4 309 | Packet_40: 310 | attr_set $18 311 | Packet_41: 312 | sgb_pal01 313 | REPT 7 314 | RGB 0,0,0 315 | ENDR 316 | db $00 317 | Packet_42: 318 | sgb_pal23 319 | REPT 7 320 | RGB 0,0,0 321 | ENDR 322 | db $00 323 | Packet_43: 324 | sgb_pal_set $0180, $0180, $0180, $0180, $D6 325 | Packet_44: 326 | sgb_pal_set $C4, $C5, $C6, $C7, $C0 327 | Packet_45: 328 | sgb_pal_set $2C, $2D, $2C, $2D, $40 329 | Packet_46: 330 | sgb_pal_set $E8, $E9, $EA, $EB, $DB 331 | Packet_47: 332 | sgb_pal_set $EC, $ED, $EE, $EF, $DC 333 | Packet_48: 334 | sgb_pal_set $F0, $F1, $F2, $F3, $DC 335 | Packet_49: 336 | sgb_pal_set $F0, $F1, $F2, $F3, $DD 337 | Packet_50: 338 | sgb_pal_set $F0, $F1, $F2, $F3, $DE 339 | Packet_51: 340 | sgb_pal_set $F0, $F1, $F2, $F3, $DF 341 | Packet_52: 342 | sgb_pal_set $F4, $F5, $F6, $F7, $E0 343 | Packet_53: 344 | sgb_pal_set $F8, $F9, $FA, $FB, $E1 345 | Packet_54: 346 | sgb_pal_set $FC, $FD, $FE, $FF, $DD 347 | Packet_55: 348 | sgb_pal_set $FC, $FD, $FE, $FF, $DD 349 | Packet_56: 350 | sgb_pal_set $FC, $FD, $FE, $FF, $DD 351 | Packet_57: 352 | sgb_pal_set $100, $101, $102, $103, $DF 353 | Packet_58: 354 | sgb_pal_set $100, $101, $102, $103, $E3 355 | Packet_59: 356 | sgb_pal_set $104, $105, $106, $107, $E4 357 | Packet_60: 358 | sgb_pal_set $104, $105, $106, $107, $E5 359 | Packet_61: 360 | sgb_pal_set $104, $105, $106, $107, $E6 361 | Packet_62: 362 | sgb_pal_set $104, $105, $106, $107, $E6 363 | Packet_63: 364 | sgb_pal_set $104, $105, $106, $107, $E7 365 | Packet_64: 366 | sgb_pal_set $108, $109, $10A, $10B, $E8 367 | Packet_65: 368 | sgb_pal_set $108, $109, $10A, $10B, $E9 369 | Packet_66: 370 | sgb_pal_set $114, $115, $116, $117, $EA 371 | Packet_67: 372 | sgb_pal_set $108, $109, $10A, $10B, $EB 373 | Packet_68: 374 | sgb_pal_set $108, $109, $10A, $10B, $EC 375 | Packet_69: 376 | sgb_pal_set $10C, $10D, $10E, $10F, $D9 377 | Packet_70: 378 | sgb_pal_set $C8, $C9, $CA, $CB, $C5 379 | Packet_71: 380 | sgb_pal_set $108, $109, $10A, $10B, $E2 381 | AttractionDisablePacket: 382 | sgb_atrc_en 0 383 | AttractionEnablePacket: 384 | sgb_atrc_en 1 385 | Packet_74: 386 | sgb_sound $00, $00, 0, 0, 0, 0, 3 387 | Packet_75: 388 | attr_blk 3 389 | attr_blk_data 1, 0, 0, 0, $0B, $04, $12, $09 390 | attr_blk_data 1, 0, 0, 0, $01, $0B, $08, $10 391 | attr_blk_data 1, 0, 0, 0, $0B, $0B, $12, $10 392 | ds 12 393 | Packet_77: 394 | attr_blk 2 395 | attr_blk_data 1, 0, 0, 0, $0B, $04, $12, $09 396 | attr_blk_data 1, 0, 0, 0, $01, $0B, $08, $10 397 | ds 2 398 | Packet_78: 399 | attr_blk 1 400 | attr_blk_data 1, 0, 0, 0, $0B, $0B, $12, $10 401 | ds 8 402 | Packet_79: 403 | sgb_pal_set $C0, $C1, $C2, $C3, $9A 404 | Packet_80: 405 | sgb_pal_set $1FF, $1FF, $1FF, $1FF, $C1 406 | Packet_81: 407 | attr_chr 1, $04, $0E, 3, 0 408 | db $3C 409 | ds 9 410 | Packet_82: 411 | attr_chr 1, $08, $0E, 3, 0 412 | db $3C 413 | ds 9 414 | Packet_83: 415 | attr_chr 1, $0C, $0E, 3, 0 416 | db $3C 417 | ds 9 418 | Packet_84: 419 | attr_chr 1, $10, $0E, 3, 0 420 | db $3C 421 | ds 9 422 | Packet_85: 423 | attr_chr 1, $04, $10, 3, 0 424 | db $FC 425 | ds 9 426 | Packet_86: 427 | attr_chr 1, $08, $10, 3, 0 428 | db $FC 429 | ds 9 430 | Packet_87: 431 | attr_chr 1, $0C, $10, 3, 0 432 | db $FC 433 | ds 9 434 | Packet_88: 435 | attr_chr 1, $10, $10, 3, 0 436 | db $FC 437 | ds 9 438 | 439 | ;These packets contain SNES code which patches the SGB's code 440 | ;by sending it to the SNES's RAM, which apparently fixes a bug. 441 | ;https://forums.nesdev.com/viewtopic.php?f=12&t=16610#p206526 442 | SGBPatch1: 443 | sgb_data_snd $85D, $00, $04 444 | db $8C ;used by last instruction of next packet 445 | db $D0, $F4 ;bne -0xC 446 | db $60 ;rts 447 | ds 7 448 | 449 | SGBPatch2: 450 | sgb_data_snd $852, $00, $0B 451 | db $A9, $E7 ;lda 0xE7 452 | db $9F, $01, $C0, $7E ;sta $7EC001,x 453 | db $E8 ;inx 454 | db $E8 ;inx 455 | db $E8 ;inx 456 | db $E8 ;inx 457 | db $E0 ;cpx 0x8C (uses first byte of the previous packet) 458 | 459 | SGBPatch3: 460 | sgb_data_snd $847, $00, $0B 461 | db $C4 462 | db $D0, $16 ;bne 0x16 463 | db $A5, $CB ;lda $CB 464 | db $C9, $05 ;cmp 5 465 | db $D0, $10 ;bne 0x10 466 | db $A2, $28 ;ldx 0x28 467 | 468 | SGBPatch4: 469 | sgb_data_snd $83C, $00, $0B 470 | db $F0, $12 ;beq 0x12 471 | db $A5, $C9 ;lda $C9 472 | db $C9, $C8 ;cmp 0xC9 473 | db $D0, $1C ;bne 0x1C 474 | db $A5, $CA ;lda $CA 475 | db $C9 ;cmp 0xC4 476 | 477 | SGBPatch5: 478 | sgb_data_snd $831, $00, $0B 479 | db $0C ;used by last instruction of next packet 480 | db $A5, $CA ;lda $CA 481 | db $C9, $7E ;cmp 0x7E 482 | db $D0, $06 ;bne 0x06 483 | db $A5, $CB ;lda $CB 484 | db $C9, $7E ;cmp 0x7E 485 | 486 | SGBPatch6: 487 | sgb_data_snd $826, $00, $0B 488 | db $39 ;used by last instruction of next packet 489 | db $CD, $48, $0C ;cmp $C48 490 | db $D0, $34 ;bne 0x34 491 | db $A5, $C9 ;lda $C9 492 | db $C9, $80 ;cmp 0x80 493 | db $D0 ;bne 0x0C (uses first byte of the previous packet) 494 | 495 | SGBPatch7: 496 | sgb_data_snd $81B, $00, $0B 497 | db $EA, $EA, $EA, $EA, $EA ;5 nop instructions 498 | db $A9, $01 ;0x820: lda 1 499 | db $CD, $4F, $0C ;cmp $C4f 500 | ;0x825 501 | db $D0 ;bne 0x39 (uses first byte of the previous packet) 502 | 503 | SGBPatch8: 504 | sgb_data_snd $810, $00, $0B 505 | db $4C, $20, $08 ;jmp $820 506 | db $EA, $EA, $EA, $EA, $EA ;5 nop instructions 507 | db $60 ;rts 508 | db $EA, $EA ;2 nop instructions 509 | -------------------------------------------------------------------------------- /gfx/bank11graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank11graphics.png -------------------------------------------------------------------------------- /gfx/bank1a/bonus_game_graphics.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/bonus_game_graphics.bin -------------------------------------------------------------------------------- /gfx/bank1a/bonus_game_graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/bonus_game_graphics.png -------------------------------------------------------------------------------- /gfx/bank1a/credits_graphics.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/credits_graphics.bin -------------------------------------------------------------------------------- /gfx/bank1a/credits_graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/credits_graphics.png -------------------------------------------------------------------------------- /gfx/bank1a/delete_file_bomb.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/delete_file_bomb.bin -------------------------------------------------------------------------------- /gfx/bank1a/delete_file_bomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/delete_file_bomb.png -------------------------------------------------------------------------------- /gfx/bank1a/dk_menu_finger.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/dk_menu_finger.bin -------------------------------------------------------------------------------- /gfx/bank1a/dk_menu_finger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/dk_menu_finger.png -------------------------------------------------------------------------------- /gfx/bank1a/file_select_screen_graphics.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/file_select_screen_graphics.bin -------------------------------------------------------------------------------- /gfx/bank1a/file_select_screen_graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/file_select_screen_graphics.png -------------------------------------------------------------------------------- /gfx/bank1a/gameover_screen.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/gameover_screen.bin -------------------------------------------------------------------------------- /gfx/bank1a/gameover_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/gameover_screen.png -------------------------------------------------------------------------------- /gfx/bank1a/introCutsceneGraphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/introCutsceneGraphics.png -------------------------------------------------------------------------------- /gfx/bank1a/intro_level_screen_graphics.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/intro_level_screen_graphics.bin -------------------------------------------------------------------------------- /gfx/bank1a/intro_level_screen_graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/intro_level_screen_graphics.png -------------------------------------------------------------------------------- /gfx/bank1a/mario_circus_demo_sprites.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/mario_circus_demo_sprites.bin -------------------------------------------------------------------------------- /gfx/bank1a/mario_circus_demo_sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/mario_circus_demo_sprites.png -------------------------------------------------------------------------------- /gfx/bank1a/title_screen_graphics.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/title_screen_graphics.bin -------------------------------------------------------------------------------- /gfx/bank1a/title_screen_graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/title_screen_graphics.png -------------------------------------------------------------------------------- /gfx/bank1a/ui1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/ui1.bin -------------------------------------------------------------------------------- /gfx/bank1a/ui1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1a/ui1.png -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_4000.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_4000.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_45b3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_45b3.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_4689.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_4689.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_49c7.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_49c7.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_49e8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_49e8.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_49fc.bin: -------------------------------------------------------------------------------- 1 | }"" -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_4a0e.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_4a0e.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_4b4d.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_4b4d.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_4c18.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_4c18.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_4eeb.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_4eeb.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5104.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5104.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_52a1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_52a1.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_544b.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_544b.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_566f.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_566f.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_572d.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_572d.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_58c5.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_58c5.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_59b7.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_59b7.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5af2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5af2.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5bda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5bda.png -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5c1a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5c1a.png -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5c5a.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5c5a.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5d9e.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5d9e.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5e91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5e91.png -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5eb1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5eb1.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5eee.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5eee.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_5f78.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_5f78.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_6038.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_6038.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_60f8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_60f8.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_6120.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_6120.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_61ec.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_61ec.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_62a3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_62a3.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_62fc.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_62fc.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_63ee.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_63ee.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_6414.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_6414.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_64cc.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_64cc.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_652e.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_652e.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_657d.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_657d.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_6593.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_6593.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_65ce.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_65ce.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_65eb.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_65eb.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_6e83.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_6e83.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_6f53.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_6f53.bin -------------------------------------------------------------------------------- /gfx/bank1b/bank1b_732b.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1b/bank1b_732b.bin -------------------------------------------------------------------------------- /gfx/bank1e_graphics_6125.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank1e_graphics_6125.bin -------------------------------------------------------------------------------- /gfx/bank4mariosprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/bank4mariosprites.png -------------------------------------------------------------------------------- /gfx/font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/font.png -------------------------------------------------------------------------------- /gfx/sgb_border_1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/sgb_border_1.bin -------------------------------------------------------------------------------- /gfx/sgb_border_2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CelestialAmber/DKGBDisasm/c6e29723edf53b00fb0f7587381bae972afa4b8f/gfx/sgb_border_2.bin -------------------------------------------------------------------------------- /home.asm: -------------------------------------------------------------------------------- 1 | SECTION "Home", ROM0[$0] 2 | 3 | SECTION "rst0", ROM0[$0000] 4 | RST_00:: 5 | ret 6 | rst $38 7 | rst $38 8 | rst $38 9 | rst $38 10 | rst $38 11 | rst $38 12 | rst $38 13 | 14 | SECTION "rst8", ROM0[$0008] 15 | ;calls JumpFunctionTable, which is used to jump to a specific address 16 | RST_08:: 17 | jp JumpFunctionTable 18 | rst $38 19 | rst $38 20 | rst $38 21 | rst $38 22 | rst $38 23 | 24 | SECTION "rst10", ROM0[$0010] 25 | ;switches the current bank to the bank number given by a 26 | BankswitchRST:: 27 | ldh [hCurrentBank], a 28 | ld [$2000], a 29 | ret 30 | rst $38 31 | rst $38 32 | 33 | SECTION "rst18", ROM0[$0018] 34 | RST_18:: 35 | ret 36 | rst $38 37 | rst $38 38 | rst $38 39 | rst $38 40 | rst $38 41 | rst $38 42 | rst $38 43 | 44 | SECTION "rst20", ROM0[$0020] 45 | RST_20:: 46 | ret 47 | rst $38 48 | rst $38 49 | rst $38 50 | rst $38 51 | rst $38 52 | rst $38 53 | rst $38 54 | 55 | SECTION "rst28", ROM0[$0028] 56 | RST_28:: 57 | ret 58 | rst $38 59 | rst $38 60 | rst $38 61 | rst $38 62 | rst $38 63 | rst $38 64 | rst $38 65 | 66 | SECTION "rst30", ROM0[$0030] 67 | RST_30:: 68 | ret 69 | rst $38 70 | rst $38 71 | rst $38 72 | rst $38 73 | rst $38 74 | rst $38 75 | rst $38 76 | 77 | SECTION "rst38", ROM0[$0038] 78 | RST_38:: 79 | ret 80 | rst $38 81 | rst $38 82 | rst $38 83 | rst $38 84 | rst $38 85 | rst $38 86 | rst $38 87 | 88 | SECTION "vblank", ROM0[$0040] 89 | VBlankInterrupt:: 90 | jp VBlankInterruptFunction 91 | rst $38 92 | rst $38 93 | rst $38 94 | rst $38 95 | rst $38 96 | 97 | SECTION "lcdc", ROM0[$0048] 98 | LCDCInterrupt:: 99 | jp LCDCInterruptFunction 100 | rst $38 101 | rst $38 102 | rst $38 103 | rst $38 104 | rst $38 105 | 106 | SECTION "timer", ROM0[$0050] 107 | TimerOverflowInterrupt:: 108 | jp TimerOverflowInterruptFunction 109 | rst $38 110 | rst $38 111 | rst $38 112 | rst $38 113 | rst $38 114 | 115 | SECTION "serial", ROM0[$0058] 116 | SerialTransferCompleteInterrupt:: 117 | reti 118 | rst $38 119 | rst $38 120 | rst $38 121 | rst $38 122 | rst $38 123 | rst $38 124 | rst $38 125 | 126 | SECTION "joypad", ROM0[$0060] 127 | JoypadTransitionInterrupt:: 128 | reti 129 | 130 | 131 | SECTION "Header", ROM0[$0100] 132 | 133 | Boot:: 134 | nop 135 | jp Start 136 | 137 | ; The Game Boy cartridge header data is patched over by rgbfix. 138 | ; This makes sure it doesn't get used for anything else. 139 | 140 | ds $0150 - @ -------------------------------------------------------------------------------- /hram.asm: -------------------------------------------------------------------------------- 1 | hOAMDMAFunction equ $FF80 2 | ;bit 0:a 3 | ;bit 1:b 4 | ;bit 2:select 5 | ;bit 3:start 6 | ;bit 4:right 7 | ;bit 5:left 8 | ;bit 6:up 9 | ;bit 7:down 10 | hJoypad equ $FF8A 11 | hCurrentBank equ $FF8C 12 | ;stores the current game scene/state(cutscene, in stage, title screen/intro cutscene, others) 13 | hCurrentScene equ $FF8E 14 | hFunctionTableIndex equ $FF90 -------------------------------------------------------------------------------- /macros.asm: -------------------------------------------------------------------------------- 1 | INCLUDE "macros/code.asm" 2 | INCLUDE "macros/data.asm" 3 | INCLUDE "macros/gfx.asm" -------------------------------------------------------------------------------- /macros/code.asm: -------------------------------------------------------------------------------- 1 | ld_long: MACRO 2 | IF STRLWR("\1") == "a" 3 | ; ld a, [$40] 4 | db $FA 5 | dw \2 6 | ELSE 7 | IF STRLWR("\2") == "a" 8 | ; ld [$40], a 9 | db $EA 10 | dw \1 11 | ENDC 12 | ENDC 13 | ENDM 14 | 15 | ;1:function to call 16 | switchcall: MACRO 17 | ld a, BANK(\1) 18 | rst BankswitchRST 19 | call \1 20 | ENDM -------------------------------------------------------------------------------- /macros/data.asm: -------------------------------------------------------------------------------- 1 | dbw: MACRO 2 | ENDM 3 | 4 | dwb: MACRO 5 | ENDM 6 | 7 | ;Level data header macro 8 | ;Format: 9 | ;1:tilemap size (0: 0x240 bytes, 0x380 bytes otherwise) 10 | ;2: music id 11 | ;3: tileset id 12 | ;4: time 13 | levelheader: MACRO 14 | db \1 15 | db \2 16 | db \3 17 | dw \4 18 | ENDM 19 | -------------------------------------------------------------------------------- /macros/gfx.asm: -------------------------------------------------------------------------------- 1 | assert_valid_rgb: MACRO 2 | rept _NARG 3 | assert 0 <= (\1) && (\1) <= 31, "RGB channel must be 0-31" 4 | shift 5 | endr 6 | ENDM 7 | 8 | RGB: MACRO 9 | rept _NARG / 3 10 | assert_valid_rgb \1, \2, \3 11 | dw palred (\1) + palgreen (\2) + palblue (\3) 12 | shift 3 13 | endr 14 | ENDM 15 | 16 | palred EQUS "(1 << 0) *" 17 | palgreen EQUS "(1 << 5) *" 18 | palblue EQUS "(1 << 10) *" 19 | 20 | ;Graphics data header macro 21 | ;Format: 22 | ;1:bank number 23 | ;2:bank data offset 24 | ;3:start vram address 25 | ;4:type(0: uncompressed, 1: compressed w/ header, 2: compressed no header) 26 | ;5:length (not needed if type is 1) 27 | gfxheader: MACRO 28 | db \1 29 | dw \2 30 | dw \3 31 | IF \4 == 1 32 | db 0 33 | ELSE 34 | db (\5 & $FF) 35 | ENDC 36 | IF \4 == 1 37 | db $80 38 | ELIF \4 == 2 39 | db $80 | (\5 >> 8) 40 | ELSE 41 | db (\5 >> 8) 42 | ENDC 43 | ENDM -------------------------------------------------------------------------------- /main.asm: -------------------------------------------------------------------------------- 1 | ; Disassembly of "donkeykong.gb" 2 | ; This file was created with mgbdis v1.3 - Game Boy ROM disassembler by Matt Currie. 3 | ; https://github.com/mattcurrie/mgbdis 4 | 5 | INCLUDE "constants.asm" 6 | INCLUDE "home.asm" 7 | 8 | INCLUDE "bank_000.asm" 9 | INCLUDE "src/sgb_functions.asm" 10 | 11 | INCLUDE "bank_001.asm" 12 | INCLUDE "bank_002.asm" 13 | INCLUDE "bank_003.asm" 14 | INCLUDE "bank_004.asm" 15 | 16 | ;Banks 5/6 (Level data) 17 | SECTION "ROM Bank $005", ROMX[$4000], BANK[$05] 18 | INCLUDE "data/levels.asm" 19 | INCLUDE "data/level_data_1.asm" 20 | 21 | SECTION "ROM Bank $006", ROMX[$4000], BANK[$06] 22 | INCLUDE "data/level_data_2.asm" 23 | 24 | 25 | INCLUDE "bank_007.asm" 26 | INCLUDE "bank_008.asm" 27 | INCLUDE "bank_009.asm" 28 | INCLUDE "bank_00a.asm" 29 | INCLUDE "bank_00b.asm" 30 | INCLUDE "bank_00c.asm" 31 | INCLUDE "bank_00d.asm" 32 | INCLUDE "bank_00e.asm" 33 | INCLUDE "bank_00f.asm" 34 | INCLUDE "bank_010.asm" 35 | INCLUDE "bank_011.asm" 36 | 37 | ;Bank 12 (Level data) 38 | SECTION "ROM Bank $012", ROMX[$4000], BANK[$12] 39 | INCLUDE "data/level_data_3.asm" 40 | 41 | 42 | INCLUDE "bank_013.asm" 43 | INCLUDE "bank_014.asm" 44 | INCLUDE "bank_015.asm" 45 | INCLUDE "bank_016.asm" 46 | INCLUDE "bank_017.asm" 47 | INCLUDE "bank_018.asm" 48 | INCLUDE "bank_019.asm" 49 | INCLUDE "bank_01a.asm" 50 | INCLUDE "bank_01b.asm" 51 | INCLUDE "bank_01c.asm" 52 | INCLUDE "bank_01d.asm" 53 | INCLUDE "bank_01e.asm" 54 | INCLUDE "bank_01f.asm" -------------------------------------------------------------------------------- /rom.sha1: -------------------------------------------------------------------------------- 1 | 6ed661bd1d6d8cdd48e1c10f8ca4e8dcba49128e *donkeykong.gb -------------------------------------------------------------------------------- /src/home/copy_data.asm: -------------------------------------------------------------------------------- 1 | ;used for filling memory if the number of bytes to fill is more than 256 (1 byte) 2 | ;fills bc bytes starting at address hl with the value in a 3 | FillMemory16: 4 | .loop 5 | ld [hl+], a 6 | ld d, a 7 | dec bc 8 | ld a, b 9 | or c 10 | ld a, d 11 | jr nz, .loop 12 | ret 13 | 14 | ;fills c bytes starting at address hl with the value in a 15 | FillMemory: 16 | .loop 17 | ld [hl+], a 18 | dec c 19 | jr nz, .loop 20 | ret 21 | 22 | ;hl = data to copy offset, de = destination offset, bc = number of bytes to copy 23 | CopyData16: 24 | .loop 25 | ld a, [hl+] 26 | ld [de], a 27 | inc de 28 | dec bc 29 | ld a, b 30 | or c 31 | jr nz, .loop 32 | ret 33 | 34 | ;hl = data to copy offset, de = destination offset, c = number of bytes to copy 35 | CopyData: 36 | .loop 37 | ld a, [hl+] 38 | ld [de], a 39 | inc de 40 | dec c 41 | jr nz, .loop 42 | ret 43 | -------------------------------------------------------------------------------- /src/sgb_functions.asm: -------------------------------------------------------------------------------- 1 | ;function for checking whether the game is running on Super Gameboy or not 2 | CheckIfOnSGB: 3 | ldh a, [rIE] 4 | set 0, a 5 | ei ;enable interrupts 6 | ld a, $0a 7 | call SendSGBPacketFromTableSkipSGBCheck 8 | ldh a, [rJOYP] 9 | cp $ff 10 | jr nz, .onSGB 11 | call CheckInputSGB 12 | ldh a, [rJOYP] 13 | cp $ff 14 | jr nz, .onSGB 15 | ld a, $09 16 | call SendSGBPacketFromTableSkipSGBCheck 17 | ld hl, wIsOnSGB 18 | res 7, [hl] ;set the bit 7 of wIsOnSGB to 0 if not running on sgb, otherwise set it to 1 19 | ld a, $cc ;if the game is not running on sgb, set da40(HUD text type) to cc, otherwise set it to 9c 20 | ld [wHUDTextType], a 21 | di ;disable interrupts 22 | ret ;return 23 | .onSGB 24 | ld hl, wIsOnSGB 25 | set 7, [hl] 26 | ld a, $9c 27 | ld [wHUDTextType], a 28 | ld a, $2d 29 | call SendSGBPacketFromTableDelay 30 | ld a, $1f 31 | call SendSGBPacketFromTableDelay 32 | di 33 | call InitRegistersSGBPacket 34 | ld a, $e4 35 | ldh [rBGP], a 36 | ld hl, $9800 37 | ld de, $000c 38 | ld a, $80 39 | ld b, $0d 40 | .loop1: 41 | ld c, $14 42 | .loop2: 43 | ld [hl+], a 44 | inc a 45 | dec c 46 | jr nz, .loop2 47 | add hl, de 48 | dec b 49 | jr nz, .loop1 50 | ld a, $1e ;switch to bank 1e, which contains alot of the sgb exclusive graphics 51 | rst BankswitchRST 52 | ;load the sgb border graphics 53 | ld hl, SGBBorderGraphics1 54 | ld de, $8800 ;vram offset to copy graphics to 55 | ld bc, $1000 ;uncompressed size 56 | call DecompressNoHeader 57 | ld a, $81 58 | ldh [rLCDC], a 59 | ld a, $27 60 | call SendSGBPacketFromTableDelay 61 | ei 62 | di 63 | call InitRegistersSGBPacket 64 | ld hl, SGBBorderGraphics2 65 | ld de, $8800 66 | ld bc, $06e0 67 | call DecompressNoHeader 68 | ld a, $81 69 | ldh [rLCDC], a 70 | ld a, $2a 71 | call SendSGBPacketFromTableDelay 72 | ei 73 | di 74 | call InitRegistersSGBPacket 75 | ld hl, Bank1E_Graphics_6125 ;this doesn't seem like graphics 76 | ld de, $8800 77 | ld bc, $0860 78 | call DecompressNoHeader 79 | ld a, $81 80 | ldh [rLCDC], a 81 | ld a, $28 82 | call SendSGBPacketFromTableDelay 83 | ei 84 | di 85 | call InitRegistersSGBPacket 86 | ld hl, SGBBorderPaletteData 87 | ld de, $8800 88 | ld bc, $1000 89 | call DecompressNoHeader 90 | ld a, $81 91 | ldh [rLCDC], a 92 | ld a, $10 93 | call SendSGBPacketFromTableDelay 94 | ei 95 | di 96 | call InitRegistersSGBPacket 97 | ld hl, UnknownData_1E_4C72 98 | ld de, $8800 99 | ld bc, $0fd2 100 | call DecompressNoHeader 101 | ld a, $81 102 | ldh [rLCDC], a 103 | ld a, $11 104 | call SendSGBPacketFromTableDelay 105 | ei 106 | di 107 | call InitRegistersSGBPacket 108 | ld a, $0c 109 | rst BankswitchRST ;switch to bank C 110 | ld hl, UnknownData_0c_5ddd 111 | ld de, $8800 112 | ld bc, $0680 113 | call CopyData16 114 | ld a, $81 115 | ldh [rLCDC], a 116 | ld a, $20 117 | call SendSGBPacketFromTableDelay 118 | ei 119 | di 120 | call InitRegistersSGBPacket 121 | ld hl, $6438 ;offset to the pauline help sfx in bank 0xC 122 | ld de, $8800 123 | ld bc, $0bca 124 | call CopyData16 125 | ld a, $81 126 | ldh [rLCDC], a 127 | ld a, $20 128 | call SendSGBPacketFromTableDelay 129 | ei 130 | ld a, $05 131 | call SendSGBPacketFromTable 132 | ld a, $09 133 | call SendSGBPacketFromTable 134 | jp SendSGBPatchPackets 135 | 136 | 137 | SendSGBPacketFromTableDelay: 138 | call SendSGBPacketFromTable 139 | ld b, 8 140 | jr DelayMainLoop 141 | 142 | ;Delays by ~70000 cycles (about 4 frames) 143 | Delay2: 144 | ld b, 4 145 | DelayMainLoop: 146 | ld de, 1750 ;Delay around 17500 cycles (1749*10 + 13 = 17503 cycles) 147 | call DelayLoop 148 | dec b 149 | jr nz, DelayMainLoop 150 | ret 151 | 152 | 153 | InitRegistersSGBPacket: 154 | ldh a, [rIE] 155 | ld [wIERegisterTemp], a 156 | res 0, a 157 | ldh [rIE], a 158 | .loop: 159 | ldh a, [rLY] 160 | cp $91 ;wait for vblank 161 | jr c, .loop 162 | ldh a, [rLCDC] 163 | and $7f ;and the lcdc register with 7f 164 | ldh [rLCDC], a 165 | ld a, [wIERegisterTemp] 166 | ldh [rIE], a ;set the IE register 167 | ret 168 | 169 | 170 | ;Delays by 10*de + 3 cycles 171 | DelayLoop: 172 | .loop 173 | nop 174 | nop 175 | nop 176 | dec de 177 | ld a, d 178 | or e 179 | jr nz, .loop 180 | ret 181 | 182 | SendSGBPacketFromTableSkipSGBCheck: 183 | ld b, a 184 | jr SendSGBPacketFromTable.skipSGBCheck 185 | 186 | ;a: pointer table index 187 | SendSGBPacketFromTable: 188 | ld b, a 189 | ld a, [wIsOnSGB] 190 | bit 7, a 191 | ret z ;return if the game is not running on sgb 192 | .skipSGBCheck: 193 | ldh a, [hCurrentBank] 194 | push af 195 | ld a, BANK(SGBPacketTable) ;load the bank with the table (bank 1e) 196 | rst BankswitchRST 197 | ld hl, SGBPacketTable 198 | ld a, b 199 | add a 200 | ld d, $00 201 | ld e, a 202 | add hl, de 203 | ld a, [hl+] 204 | ld h, [hl] 205 | ld l, a 206 | call SendSGBPacket 207 | call Delay2 208 | pop af 209 | rst BankswitchRST 210 | ret 211 | 212 | 213 | SendSGBPacketCheckSGB: 214 | ld a, [wIsOnSGB] 215 | bit 7, a 216 | ret z ;return if the game is not running on sgb 217 | call SendSGBPacket 218 | jp Delay2 219 | 220 | ;hl: offset to packet data 221 | SendSGBPacket: 222 | ld a, [hl] 223 | and $07 224 | ld b, a 225 | ld c, $00 226 | push bc 227 | .loop: 228 | xor a 229 | ;Set P14/P15 to 0 (reset signal) 230 | ld [c], a 231 | ld a, $30 232 | ;Set P14/P15 to 1 233 | ld [c], a 234 | ld b, $10 235 | .nextByte: 236 | ld e, $08 237 | ld a, [hl+] ;Get the next byte 238 | ld d, a 239 | .nextBit: 240 | bit 0, d 241 | ld a, $10 ;If the bit is 0, set P14/P15 to 0/1, otherwise set them to 1/0 242 | jr nz, .zeroBit 243 | ld a, $20 ;Set P14/P15 to 1/0 (bit is 1) 244 | .zeroBit: 245 | ld [c], a 246 | ;Set P14/P15 to 1 (must set between pulses) 247 | ld a, $30 248 | ld [c], a 249 | rr d ;go to the next bit 250 | dec e 251 | jr nz, .nextBit 252 | dec b 253 | jr nz, .nextByte 254 | ;Send bit 1 as a stop bit (end of parameter data) 255 | ld a, $20 256 | ld [c], a 257 | ;Set P14/P15 to 1 258 | ld a, $30 259 | ld [c], a 260 | pop bc 261 | dec b 262 | ret z ;return if there are no more packets 263 | push bc 264 | call Delay2 ;wait for 70000 cycles 265 | jr .loop 266 | 267 | CheckInputSGB: 268 | ld a, $20 269 | ldh [rJOYP], a 270 | ldh a, [rJOYP] 271 | ldh a, [rJOYP] 272 | cpl 273 | and $0f 274 | swap a 275 | ld b, a 276 | ld a, $30 277 | ldh [rJOYP], a 278 | ld a, $10 279 | ldh [rJOYP], a 280 | ldh a, [rJOYP] 281 | ldh a, [rJOYP] 282 | ldh a, [rJOYP] 283 | ldh a, [rJOYP] 284 | ldh a, [rJOYP] 285 | ldh a, [rJOYP] 286 | ld a, $30 287 | ldh [rJOYP], a 288 | ret 289 | 290 | ;Sends the 8 last data_snd packets in the table, which send a patch for the 291 | ;SGB's code to the SNES's RAM. 292 | SendSGBPatchPackets: 293 | ld c, $08 294 | ld a, $68 ;Set a to the index of the first data_snd packet 295 | .loop: 296 | push af 297 | push bc 298 | call SendSGBPacketFromTable 299 | pop bc 300 | pop af 301 | inc a 302 | dec c 303 | jr nz, .loop 304 | ret 305 | -------------------------------------------------------------------------------- /tools/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all clean 2 | 3 | CC := gcc 4 | CFLAGS := -O3 -std=c99 -Wall -Wextra -pedantic 5 | 6 | tools := scan_includes gfx dkcompress 7 | 8 | all: $(tools) 9 | @: 10 | 11 | clean: 12 | rm -f $(tools) 13 | 14 | gfx: common.h 15 | %: %.c 16 | $(CC) $(CFLAGS) -o $@ $< -------------------------------------------------------------------------------- /tools/common.h: -------------------------------------------------------------------------------- 1 | #ifndef GUARD_COMMON_H 2 | #define GUARD_COMMON_H 3 | 4 | int __getopt_long_i__; 5 | #define getopt_long(c, v, s, l) getopt_long(c, v, s, l, &__getopt_long_i__) 6 | 7 | FILE *fopen_verbose(char *filename, char *mode) { 8 | FILE *f = fopen(filename, mode); 9 | if (!f) { 10 | fprintf(stderr, "Could not open file: \"%s\"\n", filename); 11 | } 12 | return f; 13 | } 14 | 15 | uint8_t *read_u8(char *filename, int *size) { 16 | FILE *f = fopen_verbose(filename, "rb"); 17 | if (!f) { 18 | exit(1); 19 | } 20 | fseek(f, 0, SEEK_END); 21 | *size = ftell(f); 22 | rewind(f); 23 | uint8_t *data = malloc(*size); 24 | if (*size != (int)fread(data, 1, *size, f)) { 25 | fprintf(stderr, "Could not read file: \"%s\"\n", filename); 26 | exit(1); 27 | } 28 | fclose(f); 29 | return data; 30 | } 31 | 32 | void write_u8(char *filename, uint8_t *data, int size) { 33 | FILE *f = fopen_verbose(filename, "wb"); 34 | if (f) { 35 | fwrite(data, 1, size, f); 36 | fclose(f); 37 | } 38 | } 39 | 40 | #endif // GUARD_COMMON_H 41 | -------------------------------------------------------------------------------- /tools/dkcompress.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | uint8_t *compressed = NULL; 7 | int skipLengthBytes = 0; 8 | 9 | int compress(uint8_t *src,int filesize) { 10 | uint8_t flagByte, flagBit, byte; 11 | int srcPos, flagBytePos, matchLength, matchRelativePos, currentMatchLength, j, matchEnd; 12 | int index = 0; 13 | flagByte = 0x1; 14 | flagBytePos = 0; 15 | flagBit = 0x2; 16 | srcPos = 0; 17 | if(!skipLengthBytes){ 18 | compressed[index] = (uint8_t)(filesize & 0xFF); //the bytes are stored in little endian 19 | index++; 20 | compressed[index] = (uint8_t)(filesize >> 8); 21 | index++; 22 | flagBytePos = 2; 23 | } 24 | // add first flag byte (place holder) and add first raw data byte 25 | compressed[index] = flagByte; 26 | index++; 27 | compressed[index] = src[srcPos++]; 28 | index++; 29 | while (srcPos < filesize) 30 | { 31 | // find match in previous data 32 | // start max 4096 bytes back from current pos 33 | if (srcPos <= 4096) 34 | matchEnd = 0; 35 | else 36 | matchEnd = srcPos - 4096; 37 | 38 | matchLength = 0; 39 | 40 | // try from current position 41 | //for (int i = matchEnd; i < srcPos; i++) 42 | for (int i = srcPos - 1; i >= matchEnd; i--) 43 | { 44 | // start compare for every i 45 | j = 0; 46 | while (src[i + j] == src[srcPos + j]) 47 | { 48 | j++; 49 | // make sure to stay inside 4 bits (+3) and inside byte array 50 | if ((j >= 18) || (i + j >= filesize) || (srcPos + j >= filesize)) 51 | break; 52 | } 53 | 54 | // remember best match 55 | currentMatchLength = j; 56 | if (matchLength < currentMatchLength) 57 | { 58 | matchLength = currentMatchLength; 59 | matchRelativePos = (srcPos - i); 60 | } 61 | 62 | // no point in looking further if this is max length 63 | if (currentMatchLength == 18) 64 | break; 65 | } 66 | 67 | // check if it is long enough 68 | if (matchLength < 3) // too short 69 | { 70 | flagByte |= flagBit; // raw data - not compressed 71 | compressed[index] = src[srcPos++]; // add raw data byte 72 | index++; 73 | } 74 | else 75 | { 76 | // nothing to do with the flag byte 77 | 78 | // move srcPos after length 79 | srcPos += matchLength; 80 | 81 | // adjust length 82 | matchLength -= 3; 83 | 84 | // add relative start and length to copy 85 | if (matchRelativePos > 255) 86 | { 87 | byte = matchRelativePos % 0x100; 88 | compressed[index] = byte; 89 | index++; 90 | byte = matchLength + (0x10 * (matchRelativePos / 0x100)); 91 | compressed[index] = byte; 92 | index++; 93 | } 94 | else 95 | { 96 | compressed[index] = ((uint8_t)matchRelativePos); 97 | index++; 98 | compressed[index] = ((uint8_t)matchLength); 99 | index++; 100 | } 101 | } 102 | 103 | if (flagBit == 0x80) // flag byte fully populated 104 | { 105 | compressed[flagBytePos] = flagByte; // write correct flag byte back to original position 106 | 107 | // reset flag byte and counter bit 108 | flagByte = 0; 109 | flagBit = 0x1; 110 | 111 | // save new flag byte position 112 | flagBytePos = index; 113 | 114 | if (srcPos < filesize){ // make sure there is more data 115 | compressed[index] = 0x1D; // place holder for flag byte 116 | index++; 117 | } 118 | } 119 | else // shift flag bit 120 | flagBit <<= 1; 121 | } 122 | 123 | // write back last incomplete flag byte 124 | if (flagBit != 1) compressed[flagBytePos] = flagByte; 125 | 126 | return index; 127 | } 128 | 129 | 130 | int main(int argc, char *argv[]) { 131 | if (argc < 3) 132 | { 133 | fputs("Usage: dkcompress [--noheader] infile.bin outfile.bin.lz\n", stderr); 134 | return EXIT_FAILURE; 135 | } 136 | int argOffset = 0; 137 | if(!strcmp(argv[1], "--noheader")){ 138 | skipLengthBytes = 1; 139 | argOffset = 1; 140 | } 141 | 142 | char *infile = argv[1 + argOffset]; 143 | char *outfile = argv[2 + argOffset]; 144 | 145 | FILE *f = fopen(infile, "rb"); 146 | if (!f) { 147 | fprintf(stderr, "failed to open for reading: '%s'\n", infile); 148 | return EXIT_FAILURE; 149 | } 150 | fseek(f, 0, SEEK_END); 151 | int filesize = ftell(f); 152 | 153 | uint8_t *data = (uint8_t *)calloc(filesize, 1); 154 | fseek(f, 0, SEEK_SET); 155 | int size = fread(data, 1, filesize, f); 156 | fclose(f); 157 | if (size != filesize) { 158 | fprintf(stderr, "failed to read: '%s'\n", infile); 159 | return EXIT_FAILURE; 160 | } 161 | compressed = (uint8_t *)calloc(filesize, 1); 162 | int compressed_size = compress(data,filesize); 163 | 164 | free(data); 165 | 166 | f = fopen(outfile, "wb"); 167 | if (!f) { 168 | fprintf(stderr, "failed to open for writing: '%s'\n", outfile); 169 | return EXIT_FAILURE; 170 | } 171 | fwrite(compressed, 1, compressed_size, f); 172 | fclose(f); 173 | 174 | free(compressed); 175 | 176 | return EXIT_SUCCESS; 177 | } 178 | -------------------------------------------------------------------------------- /tools/gfx.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "common.h" 9 | 10 | static void usage(void) { 11 | fprintf(stderr, "Usage: gfx [--trim-whitespace] [--remove-whitespace] [--interleave] [--remove-duplicates [--keep-whitespace]] [--remove-xflip] [--remove-yflip] [--preserve indexes] [--png filename] [-d depth] [-h] [-o outfile] infile\n"); 12 | } 13 | 14 | static void error(char *message) { 15 | fputs(message, stderr); 16 | fputs("\n", stderr); 17 | } 18 | 19 | struct Options { 20 | int trim_whitespace; 21 | int remove_whitespace; 22 | int help; 23 | char *outfile; 24 | int depth; 25 | int interleave; 26 | int remove_duplicates; 27 | int keep_whitespace; 28 | int remove_xflip; 29 | int remove_yflip; 30 | int *preserved; 31 | int num_preserved; 32 | char *png_file; 33 | }; 34 | 35 | struct Options Options = { 36 | .depth = 2, 37 | }; 38 | 39 | void get_args(int argc, char *argv[]) { 40 | struct option long_options[] = { 41 | {"remove-whitespace", no_argument, &Options.remove_whitespace, 1}, 42 | {"trim-whitespace", no_argument, &Options.trim_whitespace, 1}, 43 | {"interleave", no_argument, &Options.interleave, 1}, 44 | {"remove-duplicates", no_argument, &Options.remove_duplicates, 1}, 45 | {"keep-whitespace", no_argument, &Options.keep_whitespace, 1}, 46 | {"remove-xflip", no_argument, &Options.remove_xflip, 1}, 47 | {"remove-yflip", no_argument, &Options.remove_yflip, 1}, 48 | {"preserve", required_argument, 0, 'r'}, 49 | {"png", required_argument, 0, 'p'}, 50 | {"depth", required_argument, 0, 'd'}, 51 | {"help", no_argument, 0, 'h'}, 52 | {0} 53 | }; 54 | char *token; 55 | for (int opt = 0; opt != -1;) { 56 | switch (opt = getopt_long(argc, argv, "ho:d:p:", long_options)) { 57 | case 'h': 58 | Options.help = true; 59 | break; 60 | case 'o': 61 | Options.outfile = optarg; 62 | break; 63 | case 'd': 64 | Options.depth = strtoul(optarg, NULL, 0); 65 | break; 66 | case 'r': 67 | token = strtok(optarg, ","); 68 | while (token) { 69 | Options.num_preserved++; 70 | Options.preserved = realloc(Options.preserved, Options.num_preserved * sizeof(int)); 71 | Options.preserved[Options.num_preserved-1] = strtoul(token, NULL, 0); 72 | token = strtok(NULL, ","); 73 | } 74 | break; 75 | case 'p': 76 | Options.png_file = optarg; 77 | break; 78 | case 0: 79 | case -1: 80 | break; 81 | default: 82 | usage(); 83 | exit(1); 84 | break; 85 | } 86 | } 87 | } 88 | 89 | bool is_preserved(int index) { 90 | for (int i = 0; i < Options.num_preserved; i++) { 91 | if (Options.preserved[i] == index) { 92 | return true; 93 | } 94 | } 95 | return false; 96 | } 97 | 98 | void shift_preserved(int removed_index) { 99 | for (int i = 0; i < Options.num_preserved; i++) { 100 | if (Options.preserved[i] >= removed_index) { 101 | Options.preserved[i]--; 102 | } 103 | } 104 | } 105 | 106 | struct Graphic { 107 | int size; 108 | uint8_t *data; 109 | }; 110 | 111 | bool is_whitespace(uint8_t *tile, int tile_size) { 112 | uint8_t WHITESPACE = 0; 113 | for (int i = 0; i < tile_size; i++) { 114 | if (tile[i] != WHITESPACE) { 115 | return false; 116 | } 117 | } 118 | return true; 119 | } 120 | 121 | void trim_whitespace(struct Graphic *graphic) { 122 | int tile_size = Options.depth * 8; 123 | for (int i = graphic->size - tile_size; i > 0; i -= tile_size) { 124 | if (is_whitespace(&graphic->data[i], tile_size) && !is_preserved(i / tile_size)) { 125 | graphic->size = i; 126 | } else { 127 | break; 128 | } 129 | } 130 | } 131 | 132 | void remove_whitespace(struct Graphic *graphic) { 133 | int tile_size = Options.depth * 8; 134 | if (Options.interleave) tile_size *= 2; 135 | 136 | // Make sure we have a whole number of tiles, round down if required 137 | graphic->size &= ~(tile_size - 1); 138 | 139 | int i = 0; 140 | for (int j = 0, d = 0; i < graphic->size && j < graphic->size; i += tile_size, j += tile_size) { 141 | while (j < graphic->size && is_whitespace(&graphic->data[j], tile_size) && !is_preserved(j / tile_size - d)) { 142 | shift_preserved(j / tile_size - d); 143 | d++; 144 | j += tile_size; 145 | } 146 | if (j >= graphic->size) { 147 | break; 148 | } 149 | if (j > i) { 150 | memcpy(&graphic->data[i], &graphic->data[j], tile_size); 151 | } 152 | } 153 | graphic->size = i; 154 | } 155 | 156 | bool tile_exists(uint8_t *tile, uint8_t *tiles, int tile_size, int num_tiles) { 157 | for (int i = 0; i < num_tiles; i++) { 158 | bool match = true; 159 | for (int j = 0; j < tile_size; j++) { 160 | if (tile[j] != tiles[i * tile_size + j]) { 161 | match = false; 162 | } 163 | } 164 | if (match) { 165 | return true; 166 | } 167 | } 168 | return false; 169 | } 170 | 171 | void remove_duplicates(struct Graphic *graphic) { 172 | int tile_size = Options.depth * 8; 173 | if (Options.interleave) tile_size *= 2; 174 | int num_tiles = 0; 175 | 176 | // Make sure we have a whole number of tiles, round down if required 177 | graphic->size &= ~(tile_size - 1); 178 | 179 | for (int i = 0, j = 0, d = 0; i < graphic->size && j < graphic->size; i += tile_size, j += tile_size) { 180 | while (j < graphic->size && tile_exists(&graphic->data[j], graphic->data, tile_size, num_tiles)) { 181 | if ((Options.keep_whitespace && is_whitespace(&graphic->data[j], tile_size)) || is_preserved(j / tile_size - d)) { 182 | break; 183 | } 184 | shift_preserved(j / tile_size - d); 185 | d++; 186 | j += tile_size; 187 | } 188 | if (j >= graphic->size) { 189 | break; 190 | } 191 | if (j > i) { 192 | memcpy(&graphic->data[i], &graphic->data[j], tile_size); 193 | } 194 | num_tiles++; 195 | } 196 | graphic->size = num_tiles * tile_size; 197 | } 198 | 199 | bool flip_exists(uint8_t *tile, uint8_t *tiles, int tile_size, int num_tiles, bool xflip, bool yflip) { 200 | uint8_t flip[tile_size]; 201 | memset(flip, 0, sizeof(flip)); 202 | int half_size = tile_size / 2; 203 | for (int i = 0; i < tile_size; i++) { 204 | int byte = i; 205 | if (yflip) { 206 | byte = tile_size - 1 - (i ^ 1); 207 | if (Options.interleave && i < half_size) { 208 | byte = half_size - 1 - (i ^ 1); 209 | } 210 | } 211 | if (xflip) { 212 | for (int bit = 0; bit < 8; bit++) { 213 | flip[byte] |= ((tile[i] >> bit) & 1) << (7 - bit); 214 | } 215 | } else { 216 | flip[byte] = tile[i]; 217 | } 218 | } 219 | if (tile_exists(flip, tiles, tile_size, num_tiles)) { 220 | return true; 221 | } 222 | return false; 223 | } 224 | 225 | void remove_flip(struct Graphic *graphic, bool xflip, bool yflip) { 226 | int tile_size = Options.depth * 8; 227 | if (Options.interleave) tile_size *= 2; 228 | int num_tiles = 0; 229 | 230 | // Make sure we have a whole number of tiles, round down if required 231 | graphic->size &= ~(tile_size - 1); 232 | 233 | for (int i = 0, j = 0, d = 0; i < graphic->size && j < graphic->size; i += tile_size, j += tile_size) { 234 | while (j < graphic->size && flip_exists(&graphic->data[j], graphic->data, tile_size, num_tiles, xflip, yflip)) { 235 | if ((Options.keep_whitespace && is_whitespace(&graphic->data[j], tile_size)) || is_preserved(j / tile_size - d)) { 236 | break; 237 | } 238 | shift_preserved(j / tile_size - d); 239 | d++; 240 | j += tile_size; 241 | } 242 | if (j >= graphic->size) { 243 | break; 244 | } 245 | if (j > i) { 246 | memcpy(&graphic->data[i], &graphic->data[j], tile_size); 247 | } 248 | num_tiles++; 249 | } 250 | graphic->size = num_tiles * tile_size; 251 | } 252 | 253 | void interleave(struct Graphic *graphic, int width) { 254 | int tile_size = Options.depth * 8; 255 | int width_tiles = width / 8; 256 | int num_tiles = graphic->size / tile_size; 257 | uint8_t *interleaved = malloc(graphic->size); 258 | for (int i = 0; i < num_tiles; i++) { 259 | int tile = i * 2; 260 | int row = i / width_tiles; 261 | tile -= width_tiles * row; 262 | if (row % 2) { 263 | tile -= width_tiles; 264 | tile += 1; 265 | } 266 | memcpy(&interleaved[tile * tile_size], &graphic->data[i * tile_size], tile_size); 267 | } 268 | graphic->size = num_tiles * tile_size; 269 | memcpy(graphic->data, interleaved, graphic->size); 270 | free(interleaved); 271 | } 272 | 273 | int png_get_width(char *filename) { 274 | FILE *f = fopen_verbose(filename, "rb"); 275 | if (!f) { 276 | exit(1); 277 | } 278 | 279 | const int OFFSET_WIDTH = 16; 280 | uint8_t bytes[4]; 281 | fseek(f, OFFSET_WIDTH, SEEK_SET); 282 | size_t size = 4; 283 | size_t result = fread(bytes, 1, size, f); 284 | fclose(f); 285 | if (result != size) { 286 | fprintf(stderr, "Could not read file at offset 0x%x: \"%s\"\n", OFFSET_WIDTH, filename); 287 | exit(1); 288 | } 289 | 290 | int width = 0; 291 | for (int i = 0; i < 4; i++) { 292 | width |= bytes[i] << (8 * (3 - i)); 293 | } 294 | return width; 295 | } 296 | 297 | 298 | int main(int argc, char *argv[]) { 299 | get_args(argc, argv); 300 | argc -= optind; 301 | argv += optind; 302 | if (Options.help) { 303 | usage(); 304 | return 0; 305 | } 306 | if (argc < 1) { 307 | usage(); 308 | exit(1); 309 | } 310 | char *infile = argv[0]; 311 | struct Graphic graphic; 312 | graphic.data = read_u8(infile, &graphic.size); 313 | if (Options.trim_whitespace) { 314 | trim_whitespace(&graphic); 315 | } 316 | if (Options.interleave) { 317 | if (!Options.png_file) { 318 | error("interleave: need --png to infer dimensions"); 319 | usage(); 320 | exit(1); 321 | } 322 | int width = png_get_width(Options.png_file); 323 | interleave(&graphic, width); 324 | } 325 | if (Options.remove_duplicates) { 326 | remove_duplicates(&graphic); 327 | } 328 | if (Options.remove_xflip) { 329 | remove_flip(&graphic, true, false); 330 | } 331 | if (Options.remove_yflip) { 332 | remove_flip(&graphic, false, true); 333 | } 334 | if (Options.remove_xflip && Options.remove_yflip) { 335 | remove_flip(&graphic, true, true); 336 | } 337 | if (Options.remove_whitespace) { 338 | remove_whitespace(&graphic); 339 | } 340 | if (Options.outfile) { 341 | write_u8(Options.outfile, graphic.data, graphic.size); 342 | } 343 | free(graphic.data); 344 | return 0; 345 | } 346 | -------------------------------------------------------------------------------- /tools/scan_includes.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | void usage(void) { 8 | printf("Usage: scan_includes [-h] [-s] filename\n" 9 | "-h, --help\n" 10 | " Print usage and exit\n" 11 | "-s, --strict\n" 12 | " Fail if a file cannot be read\n"); 13 | } 14 | 15 | struct Options { 16 | bool help; 17 | bool strict; 18 | }; 19 | 20 | struct Options Options = {0}; 21 | 22 | void scan_file(char* filename) { 23 | FILE *f = fopen(filename, "rb"); 24 | if (!f) { 25 | if (Options.strict) { 26 | fprintf(stderr, "Could not open file: '%s'\n", filename); 27 | exit(1); 28 | } else { 29 | return; 30 | } 31 | } 32 | 33 | fseek(f, 0, SEEK_END); 34 | long size = ftell(f); 35 | rewind(f); 36 | 37 | char *buffer = malloc(size + 1); 38 | char *orig = buffer; 39 | size = fread(buffer, 1, size, f); 40 | buffer[size] = '\0'; 41 | fclose(f); 42 | 43 | for (; buffer && (buffer - orig < size); buffer++) { 44 | bool is_include = false; 45 | bool is_incbin = false; 46 | switch (*buffer) { 47 | case ';': 48 | buffer = strchr(buffer, '\n'); 49 | if (!buffer) { 50 | fprintf(stderr, "%s: no newline at end of file\n", filename); 51 | break; 52 | } 53 | break; 54 | 55 | case '"': 56 | buffer++; 57 | buffer = strchr(buffer, '"'); 58 | if (!buffer) { 59 | fprintf(stderr, "%s: unterminated string\n", filename); 60 | break; 61 | } 62 | buffer++; 63 | break; 64 | 65 | case 'i': 66 | case 'I': 67 | if ((strncmp(buffer, "INCBIN", 6) == 0) || (strncmp(buffer, "incbin", 6) == 0)) { 68 | is_incbin = true; 69 | } else if ((strncmp(buffer, "INCLUDE", 7) == 0) || (strncmp(buffer, "include", 7) == 0)) { 70 | is_include = true; 71 | } 72 | if (is_incbin || is_include) { 73 | buffer = strchr(buffer, '"'); 74 | if (!buffer) { 75 | break; 76 | } 77 | buffer++; 78 | int length = strcspn(buffer, "\""); 79 | char *include = malloc(length + 1); 80 | strncpy(include, buffer, length); 81 | include[length] = '\0'; 82 | printf("%s ", include); 83 | if (is_include) { 84 | scan_file(include); 85 | } 86 | free(include); 87 | buffer = strchr(buffer, '"'); 88 | } 89 | break; 90 | 91 | } 92 | if (!buffer) { 93 | break; 94 | } 95 | 96 | } 97 | 98 | free(orig); 99 | } 100 | 101 | int main(int argc, char* argv[]) { 102 | int i = 0; 103 | struct option long_options[] = { 104 | {"strict", no_argument, 0, 's'}, 105 | {"help", no_argument, 0, 'h'}, 106 | {0} 107 | }; 108 | int opt = -1; 109 | while ((opt = getopt_long(argc, argv, "sh", long_options, &i)) != -1) { 110 | switch (opt) { 111 | case 's': 112 | Options.strict = true; 113 | break; 114 | case 'h': 115 | Options.help = true; 116 | break; 117 | default: 118 | usage(); 119 | exit(1); 120 | break; 121 | } 122 | } 123 | argc -= optind; 124 | argv += optind; 125 | if (Options.help) { 126 | usage(); 127 | return 0; 128 | } 129 | if (argc < 1) { 130 | usage(); 131 | exit(1); 132 | } 133 | scan_file(argv[0]); 134 | return 0; 135 | } 136 | -------------------------------------------------------------------------------- /tools/unnamed.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from sys import stderr, exit 4 | from subprocess import Popen, PIPE 5 | from struct import unpack, calcsize 6 | from enum import Enum 7 | 8 | class symtype(Enum): 9 | LOCAL = 0 10 | IMPORT = 1 11 | EXPORT = 2 12 | 13 | def unpack_file(fmt, file): 14 | size = calcsize(fmt) 15 | return unpack(fmt, file.read(size)) 16 | 17 | def read_string(file): 18 | buf = bytearray() 19 | while True: 20 | b = file.read(1) 21 | if b is None or b == b'\0': 22 | return buf.decode() 23 | else: 24 | buf += b 25 | 26 | 27 | # Fix broken pipe when using `head` 28 | from signal import signal, SIGPIPE, SIG_DFL 29 | signal(SIGPIPE,SIG_DFL) 30 | 31 | import argparse 32 | parser = argparse.ArgumentParser(description="Parse the symfile to find unnamed symbols") 33 | parser.add_argument('symfile', type=argparse.FileType('r'), help="the list of symbols") 34 | parser.add_argument('-r', '--rootdir', type=str, help="scan the output files to obtain a list of files with unnamed symbols (NOTE: will rebuild objects as necessary)") 35 | parser.add_argument('-l', '--list', type=int, default=0, help="output this many of each file's unnamed symbols (NOTE: requires -r)") 36 | args = parser.parse_args() 37 | 38 | # Get list of object files 39 | objects = None 40 | if args.rootdir: 41 | for line in Popen(["make", "-C", args.rootdir, "-s", "-p", "DEBUG=1"], 42 | stdout=PIPE).stdout.read().decode().split("\n"): 43 | if line.startswith("OBJS := "): 44 | objects = line[8:].strip().split() 45 | break 46 | else: 47 | print("Error: Object files not found!", file=stderr) 48 | exit(1) 49 | 50 | # Scan all unnamed symbols from the symfile 51 | symbols_total = 0 52 | symbols = set() 53 | for line in args.symfile: 54 | line = line.split(";")[0].strip() 55 | split = line.split(" ") 56 | if len(split) < 2: 57 | continue 58 | 59 | symbols_total += 1 60 | 61 | symbol = " ".join(split[1:]).strip() 62 | if symbol[-3:].lower() == split[0][-3:].lower(): 63 | symbols.add(symbol) 64 | 65 | # If no object files were provided, just print what we know and exit 66 | print("Unnamed donkeykong symbols: %d (%.2f%% complete)" % (len(symbols), 67 | (symbols_total - len(symbols)) / symbols_total * 100)) 68 | if not objects: 69 | for sym in symbols: 70 | print(sym) 71 | exit() 72 | 73 | # Count the amount of symbols in each file 74 | files = {} 75 | for objfile in objects: 76 | f = open(objfile, "rb") 77 | obj_ver = None 78 | 79 | magic = unpack_file("4s", f)[0] 80 | if magic == b'RGB6': 81 | obj_ver = 6 82 | elif magic == b'RGB9': 83 | obj_ver = 10 + unpack_file("