diff options
| author | Daniel Harding <33dannye@gmail.com> | 2021-02-18 15:33:25 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-18 15:33:25 -0600 |
| commit | 9183d47cdb013347a5b178d4fbc93201554599cb (patch) | |
| tree | 66690db82e4c23a9527c85201e9feda1d09255fb /src/engine | |
| parent | 8522988917b7ddb35d2bd13576d99da4906de97c (diff) | |
| parent | 4f69ff28ca7c3ef6b8890d66edd625de9b062f51 (diff) | |
Merge pull request #99 from ElectroDeoxys/master
Decompression stuff
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/bank03.asm | 48 | ||||
| -rw-r--r-- | src/engine/bank04.asm | 2 | ||||
| -rw-r--r-- | src/engine/bank05.asm | 3 | ||||
| -rw-r--r-- | src/engine/bank1c.asm | 116 | ||||
| -rw-r--r-- | src/engine/bank20.asm | 778 | ||||
| -rw-r--r-- | src/engine/home.asm | 121 |
6 files changed, 593 insertions, 475 deletions
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index 3657fb5..c29f75a 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -468,58 +468,67 @@ Func_c36a: ; c36a (3:436a) .asm_c379 ret -Func_c37a: ; c37a (3:437a) +; loads in wPermissionMap the permissions +; of the map, which has its compressed permission data +; pointed by wBGMapPermissionDataPtr +LoadPermissionMap: ; c37a (3:437a) push hl push bc - ld hl, wBoosterViableCardList + ld hl, wPermissionMap push hl - ld a, $80 + ld a, $80 ; impassable and untalkable ld c, $00 -.asm_c384 +.loop_map ld [hli], a dec c - jr nz, .asm_c384 + jr nz, .loop_map pop hl - call Func_c38f + call DecompressPermissionMap pop bc pop hl ret -Func_c38f: ; c38f (3:438f) +; decompresses permission data pointed by wBGMapPermissionDataPtr +; hl = address to write to +DecompressPermissionMap: ; c38f (3:438f) push hl push bc - ld a, [wd23a] + ld a, [wBGMapPermissionDataPtr] ld e, a - ld a, [wd23a + 1] + ld a, [wBGMapPermissionDataPtr + 1] ld d, a or e jr z, .skip +; permissions are applied to 2x2 square tiles +; so the data is half the width and height +; of the actual tile map push hl - ld b, HIGH(wc000) + ld b, HIGH(wDecompressionSecondaryBuffer) call InitDataDecompression ld a, [wd23d] ld [wTempPointerBank], a ld a, [wBGMapHeight] inc a srl a - ld b, a + ld b, a ; (height + 1) / 2 ld a, [wBGMapWidth] inc a srl a - ld c, a + ld c, a ; (width + 1) / 2 pop de -.asm_c3b7 + +.loop push bc - ld b, $00 + ld b, 0 ; one row (with width in c) call DecompressDataFromBank - ld hl, $10 + ld hl, $10 ; next row add hl, de ld d, h ld e, l pop bc dec b - jr nz, .asm_c3b7 + jr nz, .loop .skip pop bc @@ -596,11 +605,12 @@ Func_c41c: ; c41c (3:441c) ret Func_c430: ; c430 (3:4430) +; update wSCXBuffer push bc ld a, [wd237] sla a sla a - sla a + sla a ; *8 ld b, a ld a, [wSCXBuffer] cp $b1 @@ -613,10 +623,12 @@ Func_c430: ; c430 (3:4430) ld a, b .asm_c449 ld [wSCXBuffer], a + +; update wSCYBuffer ld a, [wd238] sla a sla a - sla a + sla a ; *8 ld b, a ld a, [wSCYBuffer] cp $b9 diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index ccde0ac..90f04c3 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -2990,7 +2990,7 @@ _LoadScene: ; 12c7f (4:6c7f) ld [wCurTilemap], a pop bc push bc - farcall Func_8007e ; load tilemap + farcall LoadTilemap_ToVRAM pop bc ; base x,y call LoadScene_LoadSGBPacket ld a, [hli] diff --git a/src/engine/bank05.asm b/src/engine/bank05.asm index 81964a9..e22a88c 100644 --- a/src/engine/bank05.asm +++ b/src/engine/bank05.asm @@ -7279,6 +7279,3 @@ HandleLegendaryArticunoEnergyScoring: ; 175bd (5:75bd) .articuno_deck call ScoreLegendaryArticunoCards ret - -Func_175c9: ; 175c9 (5:75c9) - INCROM $175c9, $18000 diff --git a/src/engine/bank1c.asm b/src/engine/bank1c.asm index 1408f18..2207d2e 100644 --- a/src/engine/bank1c.asm +++ b/src/engine/bank1c.asm @@ -260,7 +260,7 @@ Func_701e9: ; 701e9 (1c:41e9) push bc ld e, l ld d, h - ld b, HIGH(wc000) + ld b, HIGH(wDecompressionSecondaryBuffer) call InitDataDecompression pop bc pop de @@ -377,17 +377,17 @@ SetSGB2AndSGB3MapPalette: ; 7036a (1c:436a) ret .pal_data_pointers - dw $722f ; unused - dw $722f ; MAP_SGB_PALETTE_1 - dw $7253 ; MAP_SGB_PALETTE_2 - dw $7277 ; MAP_SGB_PALETTE_3 - dw $729a ; MAP_SGB_PALETTE_4 - dw $72bd ; MAP_SGB_PALETTE_5 - dw $72e0 ; MAP_SGB_PALETTE_6 - dw $7304 ; MAP_SGB_PALETTE_7 - dw $7328 ; MAP_SGB_PALETTE_8 - dw $734b ; MAP_SGB_PALETTE_9 - dw $736f ; MAP_SGB_PALETTE_10 + dw SGBData_MapPals1 ; unused + dw SGBData_MapPals1 ; MAP_SGB_PALS_1 + dw SGBData_MapPals2 ; MAP_SGB_PALS_2 + dw SGBData_MapPals3 ; MAP_SGB_PALS_3 + dw SGBData_MapPals4 ; MAP_SGB_PALS_4 + dw SGBData_MapPals5 ; MAP_SGB_PALS_5 + dw SGBData_MapPals6 ; MAP_SGB_PALS_6 + dw SGBData_MapPals7 ; MAP_SGB_PALS_7 + dw SGBData_MapPals8 ; MAP_SGB_PALS_8 + dw SGBData_MapPals9 ; MAP_SGB_PALS_9 + dw SGBData_MapPals10 ; MAP_SGB_PALS_10 ; 0x703cb Func_703cb: ; 703cb (1c:43cb) @@ -429,7 +429,7 @@ DecompressSGBPalette: ; 70403 (1c:4403) push bc ld e, l ld d, h - ld b, HIGH(wc000) + ld b, HIGH(wDecompressionSecondaryBuffer) call InitDataDecompression pop bc ld de, wDecompressionBuffer @@ -502,48 +502,92 @@ Func_704c7: ; 704c7 (1c:44c7) ret ; 0x704d3 - INCROM $704d3, $73393 + INCROM $704d3, $7322f + +SGBData_MapPals1: ; 7322f (1c:722f) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_1.bin" + +SGBData_MapPals2: ; 73253 (1c:7253) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_2.bin" + +SGBData_MapPals3: ; 73277 (1c:7277) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_3.bin" + +SGBData_MapPals4: ; 7329a (1c:729a) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_4.bin" + +SGBData_MapPals5: ; 732bd (1c:72bd) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_5.bin" + +SGBData_MapPals6: ; 732e0 (1c:72e0) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_6.bin" + +SGBData_MapPals7: ; 73304 (1c:7304) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_7.bin" + +SGBData_MapPals8: ; 73328 (1c:7328) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_8.bin" + +SGBData_MapPals9: ; 7334b (1c:734b) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_9.bin" + +SGBData_MapPals10: ; 7336f (1c:736f) + dw $20 ; length + INCBIN "data/sgb_data/map_pals_10.bin" SGBData_CharizardIntro: ; 73393 (1c:7393) - dw $20 ; width - INCROM $73395, $733b8 + dw $20 ; length + INCBIN "data/sgb_data/charizard_intro_pals.bin" SGBData_ScytherIntro: ; 733b8 (1c:73b8) - dw $20 ; width - INCROM $733ba, $733dd + dw $20 ; length + INCBIN "data/sgb_data/scyther_intro_pals.bin" SGBData_AerodactylIntro: ; 733dd (1c:73dd) - dw $20 ; width - INCROM $733df, $73402 + dw $20 ; length + INCBIN "data/sgb_data/aerodactyl_intro_pals.bin" SGBData_ColosseumBooster: ; 73402 (1c:7402) - dw $20 ; width - INCROM $73404, $73427 + dw $20 ; length + INCBIN "data/sgb_data/colosseum_booster_pals.bin" SGBData_EvolutionBooster: ; 73427 (1c:7427) - dw $20 ; width - INCROM $73429, $7344c + dw $20 ; length + INCBIN "data/sgb_data/evolution_booster_pals.bin" SGBData_MysteryBooster: ; 7344c (1c:744c) - dw $20 ; width - INCROM $7344e, $73471 + dw $20 ; length + INCBIN "data/sgb_data/mystery_booster_pals.bin" SGBData_LaboratoryBooster: ; 73471 (1c:7471) - dw $20 ; width - INCROM $73473, $73aa8 + dw $20 ; length + INCBIN "data/sgb_data/laboratory_booster_pals.bin" + + INCROM $73496, $73aa8 SGBData_GameBoyLink: ; 73aa8 (1c:7aa8) - dw $40 ; width - INCROM $73aaa, $73ad8 + dw $40 ; length + INCBIN "data/sgb_data/gameboy_link_pals.bin" SGBData_CardPop: ; 73ad8 (1c:7ad8) - dw $40 ; width - INCROM $73ada, $73b05 + dw $40 ; length + INCBIN "data/sgb_data/card_pop_pals.bin" SGBData_GameBoyPrinter: ; 73b05 (1c:7b05) - dw $40 ; width - INCROM $73b07, $73b33 + dw $40 ; length + INCBIN "data/sgb_data/gameboy_printer_pals.bin" SGBData_TitleScreen: ; 73b33 (1c:7b33) - dw $40 ; width - INCROM $73b35, $74000 + dw $40 ; length + INCBIN "data/sgb_data/title_screen_pals.bin" + + INCROM $73b63, $74000 diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm index 0d79171..8460836 100644 --- a/src/engine/bank20.asm +++ b/src/engine/bank20.asm @@ -3,9 +3,9 @@ Func_80000: ; 80000 (20:4000) xor a ld [wTextBoxFrameType], a call Func_8003d - farcall Func_c37a + farcall LoadPermissionMap farcall Func_c9c7 - call Func_801a1 + call SafelyCopyBGMapFromSRAMToVRAM farcall Func_c3ff ld a, [wCurMap] cp OVERWORLD_MAP @@ -18,9 +18,9 @@ Func_80000: ; 80000 (20:4000) Func_80028: ; 80028 (20:4028) call ClearSRAMBGMaps ld bc, $0000 - call Func_80077 + call LoadTilemap_ToSRAM farcall Func_c9c7 - call Func_801a1 + call SafelyCopyBGMapFromSRAMToVRAM farcall Func_c3ee ret ; 0x8003d @@ -28,15 +28,18 @@ Func_80028: ; 80028 (20:4028) Func_8003d: ; 8003d (20:403d) farcall LoadMapHeader farcall SetSGB2AndSGB3MapPalette - ld bc, $0 - call Func_80077 - ld a, $80 - ld [wd4ca], a - xor a + + lb bc, 0, 0 + call LoadTilemap_ToSRAM + + ld a, LOW(v0Tiles1 / TILE_SIZE) + ld [wVRAMTileOffset], a + xor a ; VRAM0 ld [wd4cb], a call LoadTilesetGfx - xor a - ld [wd4ca], a + + xor a ; LOW(v0Tiles2 / TILE_SIZE) + ld [wVRAMTileOffset], a ld a, [wd291] ld [wd4cb], a ld a, [wd28f] @@ -51,17 +54,21 @@ Func_8003d: ; 8003d (20:403d) ret ; 0x80077 -Func_80077: ; 80077 (20:4077) +LoadTilemap_ToSRAM: ; 80077 (20:4077) ld a, TRUE ld [wWriteBGMapToSRAM], a - jr Func_80082 + jr LoadTilemap -Func_8007e: ; 8007e (20:407e) - xor a +LoadTilemap_ToVRAM: ; 8007e (20:407e) + xor a ; FALSE ld [wWriteBGMapToSRAM], a ; fallthrough -Func_80082: ; 80082 (20:4082) +; loads the BG map corresponding to wCurTilemap +; either loads them in VRAM or SRAM, +; depending on wWriteBGMapToSRAM +; bc = starting coordinates +LoadTilemap: ; 80082 (20:4082) push hl push bc push de @@ -78,7 +85,7 @@ Func_80082: ; 80082 (20:4082) ; store header data ld de, wDecompressionBuffer - ld bc, $0006 ; header + 1st instruction + ld bc, $6 ; header + 1st instruction call CopyBankedDataToDE ld l, e ld h, d @@ -87,52 +94,59 @@ Func_80082: ; 80082 (20:4082) ld a, [hli] ld [wBGMapHeight], a ld a, [hli] - ld [wd23a], a + ld [wBGMapPermissionDataPtr], a ld a, [hli] - ld [wd23a + 1], a + ld [wBGMapPermissionDataPtr + 1], a ld a, [hli] - ld [wd23c], a - - call Func_800bd + ld [wBGMapCGBMode], a + call .InitAndDecompressBGMap pop de pop bc pop hl ret -Func_800bd: ; 800bd (20:40bd) +; prepares the pointers for decompressing BG Map +; and calls InitDataDecompression +; then decompresses the data +.InitAndDecompressBGMap ; 800bd (20:40bd) push hl push bc push de ld a, [wTempPointer] - add $05 + add $5 ; header ld e, a ld a, [wTempPointer + 1] - adc $00 + adc 0 ld d, a - ld b, HIGH(wc000) + ld b, HIGH(wDecompressionSecondaryBuffer) call InitDataDecompression ld a, [wVRAMPointer] ld e, a ld a, [wVRAMPointer + 1] ld d, a - call Func_800e0 + call .Decompress pop de pop bc pop hl ret -Func_800e0: ; 800e0 (20:40e0) -; if wd23c != 0, then use double wBGMapWidth +; wTempBank:wTempPointer = source of compressed data +; wVRAMPointer = destination of decompressed data +.Decompress ; 800e0 (20:40e0) +; if wBGMapCGBMode is true, then use double wBGMapWidth +; since one "width" length goes to VRAM0 +; and the other "width" length goes to VRAM1 push hl ld hl, wd28e ld a, [wBGMapWidth] ld [hl], a - ld a, [wd23c] + ld a, [wBGMapCGBMode] or a - jr z, .asm_800f0 + jr z, .skip_doubling_width sla [hl] -.asm_800f0 +.skip_doubling_width +; clear wDecompressionBuffer ld c, $40 ld hl, wDecompressionBuffer xor a @@ -153,6 +167,7 @@ Func_800e0: ; 800e0 (20:40e0) ld de, wDecompressionBuffer call DecompressDataFromBank + ; copy to VRAM0 ld a, [wBGMapWidth] ld b, a pop de @@ -164,17 +179,18 @@ Func_800e0: ; 800e0 (20:40e0) jr nz, .next_row ; cgb only + ; copy the second "half" to VRAM1 call BankswitchVRAM1 ld a, [wBGMapWidth] ld c, a - ld b, $00 + ld b, $0 ld hl, wDecompressionBuffer add hl, bc pop de push de ld a, [wBGMapWidth] ld b, a - call Func_80148 + call Func_80148 ; adds some wd291 offset to tiles call CopyBGDataToVRAMOrSRAM call BankswitchVRAM0 @@ -195,7 +211,7 @@ Func_80148: ; 80148 (20:4148) ld a, [wd291] or a ret z - ld a, [wd23c] + ld a, [wBGMapCGBMode] or a jr z, .asm_80162 @@ -231,7 +247,7 @@ Func_80148: ; 80148 (20:4148) ; to either VRAM or SRAM, depending on wWriteBGMapToSRAM ; de is the target address in VRAM, ; if SRAM is the target address to copy, -; copies data to s0BGMap or s1BGMap +; copies data to sBGMap0 or sBGMap1 ; for VRAM0 or VRAM1 respectively CopyBGDataToVRAMOrSRAM: ; 8016e (20:416e) ld a, [wWriteBGMapToSRAM] @@ -247,11 +263,11 @@ CopyBGDataToVRAMOrSRAM: ; 8016e (20:416e) ld a, BANK("SRAM1") call BankswitchSRAM push hl - ld hl, s0BGMap - v0BGMap0 + ld hl, sBGMap0 - v0BGMap0 ldh a, [hBankVRAM] or a jr z, .got_pointer - ld hl, s1BGMap - v1BGMap0 + ld hl, sBGMap1 - v1BGMap0 .got_pointer add hl, de ld e, l @@ -271,18 +287,21 @@ CopyBGDataToVRAMOrSRAM: ; 8016e (20:416e) pop hl ret -Func_801a1: ; 801a1 (20:41a1) +; safely copies $20 bytes at a time +; sBGMap0 -> v0BGMap0 +; sBGMap1 -> v0BGMap1 (if in CGB) +SafelyCopyBGMapFromSRAMToVRAM: ; 801a1 (20:41a1) push hl push bc push de ldh a, [hBankSRAM] push af - ld a, $1 + ld a, BANK("SRAM1") call BankswitchSRAM - ld hl, v0End + ld hl, sBGMap0 ld de, v0BGMap0 ld c, $20 -.asm_801b4 +.loop push bc push hl push de @@ -290,30 +309,30 @@ Func_801a1: ; 801a1 (20:41a1) call SafeCopyDataHLtoDE ld a, [wConsole] cp CONSOLE_CGB - jr nz, .asm_801d6 + jr nz, .skip_vram1 pop de pop hl push hl push de - ld bc, $0400 + ld bc, sBGMap1 - sBGMap0 ; $400 add hl, bc call BankswitchVRAM1 ld b, $20 call SafeCopyDataHLtoDE call BankswitchVRAM0 +.skip_vram1 -.asm_801d6 pop hl - ld de, $0020 + ld de, $20 add hl, de ld e, l ld d, h pop hl - ld bc, $0020 + ld bc, $20 add hl, bc pop bc dec c - jr nz, .asm_801b4 + jr nz, .loop pop af call BankswitchSRAM call DisableSRAM @@ -322,16 +341,16 @@ Func_801a1: ; 801a1 (20:41a1) pop hl ret -; clears s0BGMap and s1BGMap +; clears sBGMap0 and sBGMap1 ClearSRAMBGMaps: ; 801f1 (20:41f1) push hl push bc ldh a, [hBankSRAM] push af - ld a, BANK(s0BGMap) ; SRAM 1 + ld a, BANK(sBGMap0) ; SRAM 1 call BankswitchSRAM - ld hl, s0BGMap - ld bc, $800 ; s0BGMap + s1BGMap + ld hl, sBGMap0 + ld bc, $800 ; sBGMap0 + sBGMap1 xor a call FillMemoryWithA pop af @@ -651,28 +670,30 @@ Func_803b9: ; 803b9 (20:43b9) ret ; 0x803c9 +; a = palette index to load Func_803c9: ; 803c9 (20:43c9) push hl push bc push de - call CopyPaletteDataToBuffer + call LoadPaletteDataToBuffer ld hl, wLoadedPalData ld a, [hli] or a - jr z, .asm_803dc + jr z, .skip_bgp ld a, [hli] push hl call SetBGP pop hl -.asm_803dc +.skip_bgp + ld a, [hli] or a - jr z, .asm_803e8 + jr z, .skip_pal ld c, a ld a, [wd4cb] ld b, a call LoadPaletteDataFromHL -.asm_803e8 +.skip_pal pop de pop bc pop hl @@ -733,7 +754,7 @@ LoadPaletteData: ; 80418 (20:4418) push hl push bc push de - call CopyPaletteDataToBuffer + call LoadPaletteDataToBuffer ld hl, wLoadedPalData ld a, [hli] ; number palettes @@ -786,7 +807,7 @@ LoadPaletteData: ; 80418 (20:4418) ; 0x80456 ; copies palette data of index in a to wLoadedPalData -CopyPaletteDataToBuffer: ; 80456 (20:4456) +LoadPaletteDataToBuffer: ; 80456 (20:4456) push hl push bc push de @@ -1161,9 +1182,9 @@ Func_80baa: ; 80baa (20:4baa) push af ld a, [wBGMapHeight] push af - ld a, [wd23a] + ld a, [wBGMapPermissionDataPtr] push af - ld a, [wd23a + 1] + ld a, [wBGMapPermissionDataPtr + 1] push af ld b, $0 @@ -1194,7 +1215,7 @@ Func_80baa: ; 80baa (20:4baa) ld a, [hl] ld [wCurTilemap], a push bc - farcall Func_80082 ; unnecessary farcall + farcall LoadTilemap ; unnecessary farcall pop bc srl b ld a, c @@ -1204,13 +1225,13 @@ Func_80baa: ; 80baa (20:4baa) add b ld c, a ld b, $0 - ld hl, wBoosterViableCardList + ld hl, wPermissionMap add hl, bc - farcall Func_c38f + farcall DecompressPermissionMap pop af - ld [wd23a + 1], a + ld [wBGMapPermissionDataPtr + 1], a pop af - ld [wd23a], a + ld [wBGMapPermissionDataPtr], a pop af ld [wBGMapHeight], a pop af @@ -1238,27 +1259,27 @@ Func_80baa: ; 80baa (20:4baa) dw .data_11 .data_1 - db $16, $00, TILEMAP_UNUSED_5, TILEMAP_UNUSED_6 + db $16, $00, TILEMAP_UNKNOWN_3, TILEMAP_UNKNOWN_3_CGB .data_2 - db $0e, $00, TILEMAP_UNUSED_7, TILEMAP_UNUSED_8 + db $0e, $00, TILEMAP_UNKNOWN_4, TILEMAP_UNKNOWN_4_CGB .data_3 - db $06, $02, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $06, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_4 - db $0a, $02, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $0a, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_5 - db $0e, $02, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $0e, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_6 - db $12, $02, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $12, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_7 - db $0e, $0a, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $0e, $0a, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_8 - db $12, $0a, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $12, $0a, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_9 - db $0e, $12, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $0e, $12, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_10 - db $12, $12, TILEMAP_UNUSED_3, TILEMAP_UNUSED_4 + db $12, $12, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB .data_11 - db $0a, $00, TILEMAP_UNUSED_1, TILEMAP_UNUSED_2 + db $0a, $00, TILEMAP_UNKNOWN_1, TILEMAP_UNKNOWN_1_CGB INCROM $80c63, $80e5a @@ -1284,112 +1305,112 @@ tilemap: MACRO ENDM Tilemaps: ; 80e67 (20:4e67) - tilemap OverworldMapTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP - tilemap OverworldMapCGBTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP_CGB - tilemap MasonLaboratoryTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY - tilemap MasonLaboratoryCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY_CGB - tilemap Unused1Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_1 - tilemap Unused2Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_2 - tilemap DeckMachineRoomTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM - tilemap DeckMachineRoomCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM_CGB - tilemap Unused3Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_3 - tilemap Unused4Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNUSED_4 - tilemap IshiharaTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA - tilemap IshiharaCGBTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA_CGB - tilemap FightingClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE - tilemap FightingClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE_CGB - tilemap RockClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE - tilemap RockClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE_CGB - tilemap WaterClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE - tilemap WaterClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE_CGB - tilemap LightningClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE - tilemap LightningClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE_CGB - tilemap GrassClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE - tilemap GrassClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE_CGB - tilemap PsychicClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE - tilemap PsychicClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE_CGB - tilemap ScienceClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE - tilemap ScienceClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE_CGB - tilemap FireClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE - tilemap FireClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE_CGB - tilemap ChallengeHallEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE - tilemap ChallengeHallEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE_CGB - tilemap ClubLobbyTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY - tilemap ClubLobbyCGBTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY_CGB - tilemap FightingClubTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB - tilemap FightingClubCGBTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB_CGB - tilemap RockClubTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB - tilemap RockClubCGBTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB_CGB - tilemap WaterClubTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB - tilemap WaterClubCGBTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB_CGB - tilemap LightningClubTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB - tilemap LightningClubCGBTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB_CGB - tilemap GrassClubTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB - tilemap GrassClubCGBTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB_CGB - tilemap PsychicClubTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB - tilemap PsychicClubCGBTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB_CGB - tilemap ScienceClubTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB - tilemap ScienceClubCGBTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB_CGB - tilemap FireClubTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB - tilemap FireClubCGBTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB_CGB - tilemap ChallengeHallTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL - tilemap ChallengeHallCGBTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL_CGB - tilemap PokemonDomeEntranceTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE - tilemap PokemonDomeEntranceCGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE_CGB - tilemap Unused5Tilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNUSED_5 - tilemap Unused6Tilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNUSED_6 - tilemap PokemonDomeTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME - tilemap PokemonDomeGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME_CGB - tilemap Unused7Tilemap, TILESET_POKEMON_DOME ; TILEMAP_UNUSED_7 - tilemap Unused8Tilemap, TILESET_POKEMON_DOME ; TILEMAP_UNUSED_8 - tilemap HallOfHonorTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR - tilemap HallOfHonorCGBTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR_CGB - tilemap CardPopCGBTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP_CGB - tilemap CardPopTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP - tilemap GrassMedalTilemap, TILESET_MEDAL ; TILEMAP_GRASS_MEDAL - tilemap ScienceMedalTilemap, TILESET_MEDAL ; TILEMAP_SCIENCE_MEDAL - tilemap FireMedalTilemap, TILESET_MEDAL ; TILEMAP_FIRE_MEDAL - tilemap WaterMedalTilemap, TILESET_MEDAL ; TILEMAP_WATER_MEDAL - tilemap LightningMedalTilemap, TILESET_MEDAL ; TILEMAP_LIGHTNING_MEDAL - tilemap FightingMedalTilemap, TILESET_MEDAL ; TILEMAP_FIGHTING_MEDAL - tilemap RockMedalTilemap, TILESET_MEDAL ; TILEMAP_ROCK_MEDAL - tilemap PsychicMedalTilemap, TILESET_MEDAL ; TILEMAP_PSYCHIC_MEDAL - tilemap GameBoyLinkCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CGB - tilemap GameBoyLinkTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK - tilemap GameBoyLinkConnectingCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING_CGB - tilemap GameBoyLinkConnectingTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING - tilemap GameBoyPrinterCGBTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER_CGB - tilemap GameBoyPrinterTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER - tilemap ColosseumTilemap, TILESET_COLOSSEUM_1 ; TILEMAP_COLOSSEUM - tilemap ColosseumCGBTilemap, TILESET_COLOSSEUM_2 ; TILEMAP_COLOSSEUM_CGB - tilemap EvolutionTilemap, TILESET_EVOLUTION_1 ; TILEMAP_EVOLUTION - tilemap EvolutionCGBTilemap, TILESET_EVOLUTION_2 ; TILEMAP_EVOLUTION_CGB - tilemap MysteryTilemap, TILESET_MYSTERY_1 ; TILEMAP_MYSTERY - tilemap MysteryCGBTilemap, TILESET_MYSTERY_2 ; TILEMAP_MYSTERY_CGB - tilemap LaboratoryTilemap, TILESET_LABORATORY_1 ; TILEMAP_LABORATORY - tilemap LaboratoryCGBTilemap, TILESET_LABORATORY_2 ; TILEMAP_LABORATORY_CGB - tilemap CharizardIntroTilemap, TILESET_CHARIZARD_INTRO_1 ; TILEMAP_CHARIZARD_INTRO - tilemap CharizardIntroCGBTilemap, TILESET_CHARIZARD_INTRO_2 ; TILEMAP_CHARIZARD_INTRO_CGB - tilemap ScytherIntroTilemap, TILESET_SCYTHER_INTRO_1 ; TILEMAP_SCYTHER_INTRO - tilemap ScytherIntroCGBTilemap, TILESET_SCYTHER_INTRO_2 ; TILEMAP_SCYTHER_INTRO_CGB - tilemap AerodactylIntroTilemap, TILESET_AERODACTYL_INTRO_1 ; TILEMAP_AERODACTYL_INTRO - tilemap AerodactylIntroCGBTilemap, TILESET_AERODACTYL_INTRO_2 ; TILEMAP_AERODACTYL_INTRO_CGB - tilemap TitleScreen1Tilemap, TILESET_TITLE_SCREEN_1 ; TILEMAP_JAPANESE_TITLE_SCREEN - tilemap TitleScreen2Tilemap, TILESET_TITLE_SCREEN_2 ; TILEMAP_JAPANESE_TITLE_SCREEN_CGB - tilemap SolidTiles1Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_1 - tilemap SolidTiles2Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_2 - tilemap SolidTiles3Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_3 - tilemap TitleScreen3Tilemap, TILESET_TITLE_SCREEN_3 ; TILEMAP_JAPANESE_TITLE_SCREEN_2 - tilemap TitleScreen4Tilemap, TILESET_TITLE_SCREEN_4 ; TILEMAP_JAPANESE_TITLE_SCREEN_2_CGB - tilemap SolidTiles4Tilemap, TILESET_SOLID_TILES_2 ; TILEMAP_SOLID_TILES_4 - tilemap PlayerTilemap, TILESET_PLAYER ; TILEMAP_PLAYER - tilemap OpponentTilemap, TILESET_RONALD ; TILEMAP_OPPONENT - tilemap TitleScreen5Tilemap, TILESET_TITLE_SCREEN_5 ; TILEMAP_TITLE_SCREEN - tilemap TitleScreen6Tilemap, TILESET_TITLE_SCREEN_6 ; TILEMAP_TITLE_SCREEN_CGB - tilemap CopyrightTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT - tilemap CopyrightCGBTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT_CGB - tilemap NintendoTilemap, TILESET_NINTENDO ; TILEMAP_NINTENDO - tilemap CompaniesTilemap, TILESET_COMPANIES ; TILEMAP_COMPANIES + tilemap OverworldMapTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP + tilemap OverworldMapCGBTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP_CGB + tilemap MasonLaboratoryTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY + tilemap MasonLaboratoryCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY_CGB + tilemap Unknown1Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_1 + tilemap Unknown1CGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_1_CGB + tilemap DeckMachineRoomTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM + tilemap DeckMachineRoomCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM_CGB + tilemap Unknown2Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_2 + tilemap Unknown2CGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_2_CGB + tilemap IshiharaTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA + tilemap IshiharaCGBTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA_CGB + tilemap FightingClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE + tilemap FightingClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE_CGB + tilemap RockClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE + tilemap RockClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE_CGB + tilemap WaterClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE + tilemap WaterClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE_CGB + tilemap LightningClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE + tilemap LightningClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE_CGB + tilemap GrassClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE + tilemap GrassClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE_CGB + tilemap PsychicClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE + tilemap PsychicClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE_CGB + tilemap ScienceClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE + tilemap ScienceClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE_CGB + tilemap FireClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE + tilemap FireClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE_CGB + tilemap ChallengeHallEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE + tilemap ChallengeHallEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE_CGB + tilemap ClubLobbyTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY + tilemap ClubLobbyCGBTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY_CGB + tilemap FightingClubTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB + tilemap FightingClubCGBTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB_CGB + tilemap RockClubTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB + tilemap RockClubCGBTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB_CGB + tilemap WaterClubTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB + tilemap WaterClubCGBTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB_CGB + tilemap LightningClubTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB + tilemap LightningClubCGBTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB_CGB + tilemap GrassClubTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB + tilemap GrassClubCGBTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB_CGB + tilemap PsychicClubTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB + tilemap PsychicClubCGBTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB_CGB + tilemap ScienceClubTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB + tilemap ScienceClubCGBTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB_CGB + tilemap FireClubTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB + tilemap FireClubCGBTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB_CGB + tilemap ChallengeHallTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL + tilemap ChallengeHallCGBTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL_CGB + tilemap PokemonDomeEntranceTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE + tilemap PokemonDomeEntranceCGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE_CGB + tilemap Unknown3Tilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNKNOWN_3 + tilemap Unknown3CGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNKNOWN_3_CGB + tilemap PokemonDomeTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME + tilemap PokemonDomeCGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME_CGB + tilemap Unknown4Tilemap, TILESET_POKEMON_DOME ; TILEMAP_UNKNOWN_4 + tilemap Unknown4CGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_UNKNOWN_4_CGB + tilemap HallOfHonorTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR + tilemap HallOfHonorCGBTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR_CGB + tilemap CardPopCGBTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP_CGB + tilemap CardPopTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP + tilemap GrassMedalTilemap, TILESET_MEDAL ; TILEMAP_GRASS_MEDAL + tilemap ScienceMedalTilemap, TILESET_MEDAL ; TILEMAP_SCIENCE_MEDAL + tilemap FireMedalTilemap, TILESET_MEDAL ; TILEMAP_FIRE_MEDAL + tilemap WaterMedalTilemap, TILESET_MEDAL ; TILEMAP_WATER_MEDAL + tilemap LightningMedalTilemap, TILESET_MEDAL ; TILEMAP_LIGHTNING_MEDAL + tilemap FightingMedalTilemap, TILESET_MEDAL ; TILEMAP_FIGHTING_MEDAL + tilemap RockMedalTilemap, TILESET_MEDAL ; TILEMAP_ROCK_MEDAL + tilemap PsychicMedalTilemap, TILESET_MEDAL ; TILEMAP_PSYCHIC_MEDAL + tilemap GameBoyLinkCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CGB + tilemap GameBoyLinkTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK + tilemap GameBoyLinkConnectingCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING_CGB + tilemap GameBoyLinkConnectingTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING + tilemap GameBoyPrinterCGBTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER_CGB + tilemap GameBoyPrinterTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER + tilemap ColosseumTilemap, TILESET_COLOSSEUM_1 ; TILEMAP_COLOSSEUM + tilemap ColosseumCGBTilemap, TILESET_COLOSSEUM_2 ; TILEMAP_COLOSSEUM_CGB + tilemap EvolutionTilemap, TILESET_EVOLUTION_1 ; TILEMAP_EVOLUTION + tilemap EvolutionCGBTilemap, TILESET_EVOLUTION_2 ; TILEMAP_EVOLUTION_CGB + tilemap MysteryTilemap, TILESET_MYSTERY_1 ; TILEMAP_MYSTERY + tilemap MysteryCGBTilemap, TILESET_MYSTERY_2 ; TILEMAP_MYSTERY_CGB + tilemap LaboratoryTilemap, TILESET_LABORATORY_1 ; TILEMAP_LABORATORY + tilemap LaboratoryCGBTilemap, TILESET_LABORATORY_2 ; TILEMAP_LABORATORY_CGB + tilemap CharizardIntroTilemap, TILESET_CHARIZARD_INTRO_1 ; TILEMAP_CHARIZARD_INTRO + tilemap CharizardIntroCGBTilemap, TILESET_CHARIZARD_INTRO_2 ; TILEMAP_CHARIZARD_INTRO_CGB + tilemap ScytherIntroTilemap, TILESET_SCYTHER_INTRO_1 ; TILEMAP_SCYTHER_INTRO + tilemap ScytherIntroCGBTilemap, TILESET_SCYTHER_INTRO_2 ; TILEMAP_SCYTHER_INTRO_CGB + tilemap AerodactylIntroTilemap, TILESET_AERODACTYL_INTRO_1 ; TILEMAP_AERODACTYL_INTRO + tilemap AerodactylIntroCGBTilemap, TILESET_AERODACTYL_INTRO_2 ; TILEMAP_AERODACTYL_INTRO_CGB + tilemap JapaneseTitleScreenTilemap, TILESET_JAPANESE_TITLE_SCREEN ; TILEMAP_JAPANESE_TITLE_SCREEN + tilemap JapaneseTitleScreenCGBTilemap, TILESET_JAPANESE_TITLE_SCREEN_CGB ; TILEMAP_JAPANESE_TITLE_SCREEN_CGB + tilemap SolidTiles1Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_1 + tilemap SolidTiles2Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_2 + tilemap SolidTiles3Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_3 + tilemap JapaneseTitleScreen2Tilemap, TILESET_JAPANESE_TITLE_SCREEN_2 ; TILEMAP_JAPANESE_TITLE_SCREEN_2 + tilemap JapaneseTitleScreen2CGBTilemap, TILESET_JAPANESE_TITLE_SCREEN_2_CGB ; TILEMAP_JAPANESE_TITLE_SCREEN_2_CGB + tilemap SolidTiles4Tilemap, TILESET_SOLID_TILES_2 ; TILEMAP_SOLID_TILES_4 + tilemap PlayerTilemap, TILESET_PLAYER ; TILEMAP_PLAYER + tilemap OpponentTilemap, TILESET_RONALD ; TILEMAP_OPPONENT + tilemap TitleScreenTilemap, TILESET_TITLE_SCREEN ; TILEMAP_TITLE_SCREEN + tilemap TitleScreenCGBTilemap, TILESET_TITLE_SCREEN_CGB ; TILEMAP_TITLE_SCREEN_CGB + tilemap CopyrightTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT + tilemap CopyrightCGBTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT_CGB + tilemap NintendoTilemap, TILESET_NINTENDO ; TILEMAP_NINTENDO + tilemap CompaniesTilemap, TILESET_COMPANIES ; TILEMAP_COMPANIES ; \1 = pointer ; \2 = number of tiles @@ -1434,16 +1455,16 @@ Tilesets: ; 8100f (20:500f) tileset ScytherIntro2Gfx, 96 ; TILESET_SCYTHER_INTRO_2 tileset AerodactylIntro1Gfx, 96 ; TILESET_AERODACTYL_INTRO_1 tileset AerodactylIntro2Gfx, 96 ; TILESET_AERODACTYL_INTRO_2 - tileset Titlescreen1Gfx, 97 ; TILESET_TITLE_SCREEN_1 - tileset Titlescreen2Gfx, 97 ; TILESET_TITLE_SCREEN_2 + tileset JapaneseTitleScreenGfx, 97 ; TILESET_JAPANESE_TITLE_SCREEN + tileset JapaneseTitleScreenCGBGfx, 97 ; TILESET_JAPANESE_TITLE_SCREEN_CGB tileset SolidTiles1, 4 ; TILESET_SOLID_TILES_1 - tileset Titlescreen3Gfx, 244 ; TILESET_TITLE_SCREEN_3 - tileset Titlescreen4Gfx, 59 ; TILESET_TITLE_SCREEN_4 + tileset JapaneseTitleScreen2Gfx, 244 ; TILESET_JAPANESE_TITLE_SCREEN_2 + tileset JapaneseTitleScreen2CGBGfx, 59 ; TILESET_JAPANESE_TITLE_SCREEN_2_CGB tileset SolidTiles2, 4 ; TILESET_SOLID_TILES_2 tileset PlayerGfx, 36 ; TILESET_PLAYER tileset RonaldGfx, 36 ; TILESET_RONALD - tileset Titlescreen5Gfx, 220 ; TILESET_TITLE_SCREEN_5 - tileset Titlescreen6Gfx, 212 ; TILESET_TITLE_SCREEN_6 + tileset TitleScreenGfx, 220 ; TILESET_TITLE_SCREEN + tileset TitleScreenCGBGfx, 212 ; TILESET_TITLE_SCREEN_CGB tileset CopyrightGfx, 36 ; TILESET_COPYRIGHT tileset NintendoGfx, 24 ; TILESET_NINTENDO tileset CompaniesGfx, 49 ; TILESET_COMPANIES @@ -2009,330 +2030,365 @@ MapDataPointers_81697: ; 81697 (20:5697) OverworldMapTilemap:: ; 8191b (20:591b) db $14 ; width db $12 ; height - dw $0000 - db $00 - - INCBIN "data/maps/map0.bin" + dw NULL + db FALSE ; cgb mode + INCBIN "data/maps/tiles/overworld_map.bin" OverworldMapCGBTilemap:: ; 81a22 (20:5a22) db $14 ; width db $12 ; height - dw $0000 - db $01 - - INCBIN "data/maps/map1.bin" + dw NULL + db TRUE ; cgb mode + INCBIN "data/maps/tiles/overworld_map_cgb.bin" MasonLaboratoryTilemap:: ; 81c13 (20:5c13) db $1c ; width db $1e ; height - dw $5d11 - db $00 - - INCBIN "data/maps/map2.bin" + dw MasonLaboratoryPermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/mason_laboratory.bin" +MasonLaboratoryPermissions: + INCBIN "data/maps/permissions/mason_laboratory.bin" MasonLaboratoryCGBTilemap:: ; 81d2e (20:5d2e) db $1c ; width db $1e ; height - dw $5eb4 - db $01 + dw MasonLaboratoryCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/mason_laboratory_cgb.bin" +MasonLaboratoryCGBPermissions: + INCBIN "data/maps/permissions/mason_laboratory_cgb.bin" - INCBIN "data/maps/map3.bin" - -Unused1Tilemap:: ; 81ed1 (20:5ed1) +Unknown1Tilemap:: ; 81ed1 (20:5ed1) db $04 ; width db $06 ; height - dw $5ef0 - db $00 - - INCBIN "data/maps/map4.bin" + dw Unknown1Permissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/unknown1.bin" +Unknown1Permissions: + INCBIN "data/maps/permissions/unknown1.bin" -Unused2Tilemap:: ; 81ef5 (20:5ef5) +Unknown1CGBTilemap:: ; 81ef5 (20:5ef5) db $04 ; width db $06 ; height - dw $5f21 - db $01 - - INCBIN "data/maps/map5.bin" + dw Unknown1CGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/unknown1_cgb.bin" +Unknown1CGBPermissions: + INCBIN "data/maps/permissions/unknown1_cgb.bin" DeckMachineRoomTilemap:: ; 81f26 (20:5f26) db $18 ; width db $1e ; height - dw $5fd3 - db $00 - - INCBIN "data/maps/map6.bin" + dw DeckMachineRoomPermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/deck_machine_room.bin" +DeckMachineRoomPermissions: + INCBIN "data/maps/permissions/deck_machine_room.bin" DeckMachineRoomCGBTilemap:: ; 81feb (20:5feb) db $18 ; width db $1e ; height - dw $612b - db $01 + dw DeckMachineRoomCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/deck_machine_room_cgb.bin" +DeckMachineRoomCGBPermissions: + INCBIN "data/maps/permissions/deck_machine_room_cgb.bin" - INCBIN "data/maps/map7.bin" - -Unused3Tilemap:: ; 82143 (20:6143) +Unknown2Tilemap:: ; 82143 (20:6143) db $04 ; width db $01 ; height - dw $614d - db $00 - - INCBIN "data/maps/map8.bin" + dw Unknown2Permissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/unknown_2.bin" +Unknown2Permissions: + INCBIN "data/maps/permissions/unknown_2.bin" -Unused4Tilemap:: ; 82150 (20:6150) +Unknown2CGBTilemap:: ; 82150 (20:6150) db $04 ; width db $01 ; height - dw $615d - db $01 - - INCBIN "data/maps/map9.bin" + dw Unknown2CGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/unknown_2_cgb.bin" +Unknown2CGBPermissions: + INCBIN "data/maps/permissions/unknown_2_cgb.bin" IshiharaTilemap:: ; 82160 (20:6160) db $14 ; width db $18 ; height - dw $620e - db $00 - - INCBIN "data/maps/map10.bin" + dw IshiharaPermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/ishihara.bin" +IshiharaPermissions: + INCBIN "data/maps/permissions/ishihara.bin" IshiharaCGBTilemap:: ; 82222 (20:6222) db $14 ; width db $18 ; height - dw $6322 - db $01 - - INCBIN "data/maps/map11.bin" + dw IshiharaCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/ishihara_cgb.bin" +IshiharaCGBPermissions: + INCBIN "data/maps/permissions/ishihara_cgb.bin" FightingClubEntranceTilemap:: ; 82336 (20:6336) db $14 ; width db $12 ; height - dw $63ec - db $00 - - INCBIN "data/maps/map12.bin" + dw FightingClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/fighting_club_entrance.bin" +FightingClubEntrancePermissions: + INCBIN "data/maps/permissions/fighting_club_entrance.bin" FightingClubEntranceCGBTilemap:: ; 82400 (20:6400) db $14 ; width db $12 ; height - dw $6509 - db $01 - - INCBIN "data/maps/map13.bin" + dw FightingClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/fighting_club_entrance_cgb.bin" +FightingClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/fighting_club_entrance_cgb.bin" RockClubEntranceTilemap:: ; 8251d (20:651d) db $14 ; width db $12 ; height - dw $65d3 - db $00 - - INCBIN "data/maps/map14.bin" + dw RockClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/rock_club_entrance.bin" +RockClubEntrancePermissions: + INCBIN "data/maps/permissions/rock_club_entrance.bin" RockClubEntranceCGBTilemap:: ; 825e7 (20:65e7) db $14 ; width db $12 ; height - dw $66f0 - db $01 - - INCBIN "data/maps/map15.bin" + dw RockClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/rock_club_entrance_cgb.bin" +RockClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/rock_club_entrance_cgb.bin" WaterClubEntranceTilemap:: ; 82704 (20:6704) db $14 ; width db $12 ; height - dw $67ba - db $00 - - INCBIN "data/maps/map16.bin" + dw WaterClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/water_club_entrance.bin" +WaterClubEntrancePermissions: + INCBIN "data/maps/permissions/water_club_entrance.bin" WaterClubEntranceCGBTilemap:: ; 827ce (20:67ce) db $14 ; width db $12 ; height - dw $68d7 - db $01 - - INCBIN "data/maps/map17.bin" + dw WaterClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/water_club_entrance_cgb.bin" +WaterClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/water_club_entrance_cgb.bin" LightningClubEntranceTilemap:: ; 828eb (20:68eb) db $14 ; width db $12 ; height - dw $69a1 - db $00 - - INCBIN "data/maps/map18.bin" + dw LightningClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/lightning_club_entrance.bin" +LightningClubEntrancePermissions: + INCBIN "data/maps/permissions/lightning_club_entrance.bin" LightningClubEntranceCGBTilemap:: ; 829b5 (20:69b5) db $14 ; width db $12 ; height - dw $6abe - db $01 - - INCBIN "data/maps/map19.bin" + dw LightningClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/lightning_club_entrance_cgb.bin" +LightningClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/lightning_club_entrance_cgb.bin" GrassClubEntranceTilemap:: ; 82ad2 (20:6ad2) db $14 ; width db $12 ; height - dw $6b88 - db $00 - - INCBIN "data/maps/map20.bin" + dw GrassClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/grass_club_entrance.bin" +GrassClubEntrancePermissions: + INCBIN "data/maps/permissions/grass_club_entrance.bin" GrassClubEntranceCGBTilemap:: ; 82b9c (20:6b9c) db $14 ; width db $12 ; height - dw $6ca5 - db $01 - - INCBIN "data/maps/map21.bin" + dw GrassClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/grass_club_entrance_cgb.bin" +GrassClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/grass_club_entrance_cgb.bin" PsychicClubEntranceTilemap:: ; 82cb9 (20:6cb9) db $14 ; width db $12 ; height - dw $6d6f - db $00 - - INCBIN "data/maps/map22.bin" + dw PsychicClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/psychic_club_entrance.bin" +PsychicClubEntrancePermissions: + INCBIN "data/maps/permissions/psychic_club_entrance.bin" PsychicClubEntranceCGBTilemap:: ; 82d83 (20:6d83) db $14 ; width db $12 ; height - dw $6e8c - db $01 - - INCBIN "data/maps/map23.bin" + dw PsychicClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/psychic_club_entrance_cgb.bin" +PsychicClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/psychic_club_entrance_cgb.bin" ScienceClubEntranceTilemap:: ; 82ea0 (20:6ea0) db $14 ; width db $12 ; height - dw $6f56 - db $00 - - INCBIN "data/maps/map24.bin" + dw ScienceClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/science_club_entrance.bin" +ScienceClubEntrancePermissions: + INCBIN "data/maps/permissions/science_club_entrance.bin" ScienceClubEntranceCGBTilemap:: ; 82f6a (20:6f6a) db $14 ; width db $12 ; height - dw $7073 - db $01 - - INCBIN "data/maps/map25.bin" + dw ScienceClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/science_club_entrance_cgb.bin" +ScienceClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/science_club_entrance_cgb.bin" FireClubEntranceTilemap:: ; 83087 (20:7087) db $14 ; width db $12 ; height - dw $713d - db $00 - - INCBIN "data/maps/map26.bin" + dw FireClubEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/fire_club_entrance.bin" +FireClubEntrancePermissions: + INCBIN "data/maps/permissions/fire_club_entrance.bin" FireClubEntranceCGBTilemap:: ; 83151 (20:7151) db $14 ; width db $12 ; height - dw $725a - db $01 - - INCBIN "data/maps/map27.bin" + dw FireClubEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/fire_club_entrance_cgb.bin" +FireClubEntranceCGBPermissions: + INCBIN "data/maps/permissions/fire_club_entrance_cgb.bin" ChallengeHallEntranceTilemap:: ; 8326e (20:726e) db $14 ; width db $12 ; height - dw $730d - db $00 - - INCBIN "data/maps/map28.bin" + dw ChallengeHallEntrancePermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/challenge_hall_entrance.bin" +ChallengeHallEntrancePermissions: + INCBIN "data/maps/permissions/challenge_hall_entrance.bin" ChallengeHallEntranceCGBTilemap:: ; 83321 (20:7321) db $14 ; width db $12 ; height - dw $7410 - db $01 - - INCBIN "data/maps/map29.bin" + dw ChallengeHallEntranceCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/challenge_hall_entrance_cgb.bin" +ChallengeHallEntranceCGBPermissions: + INCBIN "data/maps/permissions/challenge_hall_entrance_cgb.bin" ClubLobbyTilemap:: ; 83424 (20:7424) db $1c ; width db $1a ; height - dw $7529 - db $00 - - INCBIN "data/maps/map30.bin" + dw ClubLobbyPermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/club_lobby.bin" +ClubLobbyPermissions: + INCBIN "data/maps/permissions/club_lobby.bin" ClubLobbyCGBTilemap:: ; 83545 (20:7545) db $1c ; width db $1a ; height - dw $76bf - db $01 - - INCBIN "data/maps/map31.bin" + dw ClubLobbyCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/club_lobby_cgb.bin" +ClubLobbyCGBPermissions: + INCBIN "data/maps/permissions/club_lobby_cgb.bin" FightingClubTilemap:: ; 836db (20:76db) db $18 ; width db $12 ; height - dw $777b - db $00 - - INCBIN "data/maps/map32.bin" + dw FightingClubPermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/fighting_club.bin" +FightingClubPermissions: + INCBIN "data/maps/permissions/fighting_club.bin" FightingClubCGBTilemap:: ; 8378c (20:778c) db $18 ; width db $12 ; height - dw $787c - db $01 - - INCBIN "data/maps/map33.bin" + dw FightingClubCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/fighting_club_cgb.bin" +FightingClubCGBPermissions: + INCBIN "data/maps/permissions/fighting_club_cgb.bin" RockClubTilemap:: ; 8388d (20:788d) db $1c ; width db $1e ; height - dw $79b5 - db $00 - - INCBIN "data/maps/map34.bin" + dw RockClubPermissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/rock_club.bin" +RockClubPermissions: + INCBIN "data/maps/permissions/rock_club.bin" RockClubCGBTilemap:: ; 839d6 (20:79d6) db $1c ; width db $1e ; height - dw $7bd0 - db $01 - - INCBIN "data/maps/map35.bin" + dw RockClubCGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/rock_club_cgb.bin" +RockClubCGBPermissions: + INCBIN "data/maps/permissions/rock_club_cgb.bin" -Unused5Tilemap:: ; 83bf1 (20:7bf1) +Unknown3Tilemap:: ; 83bf1 (20:7bf1) db $04 ; width db $03 ; height - dw $7c00 - db $00 + dw Unknown3Permissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/unknown_3.bin" +Unknown3Permissions: + INCBIN "data/maps/permissions/unknown_3.bin" - INCBIN "data/maps/map52.bin" - -Unused6Tilemap:: ; 83c03 (20:7c03) +Unknown3CGBTilemap:: ; 83c03 (20:7c03) db $04 ; width db $03 ; height - dw $7c17 - db $01 - - INCBIN "data/maps/map53.bin" + dw Unknown3CGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/unknown_3_cgb.bin" +Unknown3CGBPermissions: + INCBIN "data/maps/permissions/unknown_3_cgb.bin" -Unused7Tilemap:: ; 83c1a (20:7c1a) +Unknown4Tilemap:: ; 83c1a (20:7c1a) db $04 ; width db $03 ; height - dw $7c23 - db $00 + dw Unknown4Permissions + db FALSE ; cgb mode + INCBIN "data/maps/tiles/unknown_4.bin" +Unknown4Permissions: + INCBIN "data/maps/permissions/unknown_4.bin" - INCBIN "data/maps/map56.bin" - -Unused8Tilemap:: ; 83c26 (20:7c26) +Unknown4CGBTilemap:: ; 83c26 (20:7c26) db $04 ; width db $03 ; height - dw $7c33 - db $01 - - INCBIN "data/maps/map57.bin" + dw Unknown4CGBPermissions + db TRUE ; cgb mode + INCBIN "data/maps/tiles/unknown_4_cgb.bin" +Unknown4CGBPermissions: + INCBIN "data/maps/permissions/unknown_4_cgb.bin" GrassMedalTilemap:: ; 83c36 (20:7c36) db $03 ; width db $03 ; height - dw $0000 - db $01 - - INCBIN "data/maps/map62.bin" + dw NULL + db TRUE ; cgb mode + INCBIN "data/maps/tiles/grass_medal.bin" AnimData1:: ; 83c4c (20:7c4c) frame_table AnimFrameTable0 diff --git a/src/engine/home.asm b/src/engine/home.asm index c23b544..5a8c822 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -1534,33 +1534,31 @@ UpdateRNGSources: ; 089b (0:089b) pop hl ret -; initilizes variables used to decompress -; data in DecompressData -; de points to the source of compressed data -; b is used as the HIGH byte of the -; WRAM address to write to ($100 bytes of buffer space) +; initilizes variables used to decompress data in DecompressData +; de = source of compressed data +; b = HIGH byte of secondary buffer ($100 bytes of buffer space) ; also clears this $100 byte space InitDataDecompression: ; 08bf (0:08bf) - ld hl, wcad6 + ld hl, wDecompSourcePosPtr ld [hl], e inc hl ld [hl], d - ld hl, wcad8 - ld [hl], $1 + ld hl, wDecompNumCommandBitsLeft + ld [hl], 1 inc hl xor a - ld [hli], a ; wcad9 - ld [hli], a ; wcada - ld [hli], a ; wcadb - ld [hli], a ; wcadc - ld [hl], b ; wcadd + ld [hli], a ; wDecompCommandByte + ld [hli], a ; wDecompRepeatModeToggle + ld [hli], a ; wDecompRepeatLengths + ld [hli], a ; wDecompNumBytesToRepeat + ld [hl], b ; wDecompSecondaryBufferPtrHigh inc hl - ld [hli], a ; wcade - ld [hl], $ef ; wcadf + ld [hli], a ; wDecompRepeatSeqOffset + ld [hl], LOW(wDecompressionSecondaryBufferStart) ; wDecompSecondaryBufferPtrLow ; clear buffer ld h, b - ld l, LOW(wc000) + ld l, LOW(wDecompressionSecondaryBuffer) xor a .loop ld [hl], a @@ -1570,7 +1568,7 @@ InitDataDecompression: ; 08bf (0:08bf) ; decompresses data ; uses values initialized by InitDataDecompression -; wcad6 holds the pointer for compressed source +; wDecompSourcePosPtr holds the pointer for compressed source ; input: ; bc = row width ; de = buffer to place decompressed data @@ -1591,99 +1589,110 @@ DecompressData: ; 08de (0:08de) pop hl ret -; instructions start with a byte stored in wcad9 -; its bits are read from higher to lower bit -; wcad8 stores the current bit being read -; bit set: -; - 1 byte read and copied literally -; bit not set: -; - 2 bytes read WW XY ZZ, byte in pos WW -; copied (X + 1) times, then in pos ZZ -; copied (Y + 1) times +; decompression works as follows: +; first a command byte is read that will dictate how the +; following bytes will be copied +; the position will then move to the next byte (0xXY), and +; the command byte's bits are read from higher to lower bit +; - if command bit is set, then copy 0xXY to buffer; +; - if command bit is not set, then decompression enters "repeat mode," +; which means it stores 0xXY in memory as number of bytes to repeat +; from a given offset. This offset is in the next byte in the data, +; 0xZZ, which tells the offset to start repeating. A toggle is switched +; each time the algorithm hits "repeat mode": +; - if off -> on it reads 0xXY and stores it, +; then repeats (0x0X + 2) bytes from the offset starting at 0xZZ; +; - if on -> off, then the data only provides the offset, +; and the previous byte read for number of bytes to repeat, 0xXY, is reused +; in which case (0x0Y + 2) bytes are repeated starting from the offset. .Decompress: ; 08ef (0:08ef) - ld hl, wcadc + ld hl, wDecompNumBytesToRepeat ld a, [hl] or a - jr z, .read_instruction + jr z, .read_command -; still repeating byte +; still repeating sequence dec [hl] inc hl .repeat_byte - ld b, [hl] ; wcadd + ld b, [hl] ; wDecompSecondaryBufferPtrHigh inc hl - ld c, [hl] ; wcade + ld c, [hl] ; wDecompRepeatSeqOffset inc [hl] inc hl ld a, [bc] - ld c, [hl] ; wcadf + ld c, [hl] ; wDecompSecondaryBufferPtrLow inc [hl] ld [bc], a ret -.read_instruction - ld hl, wcad6 +.read_command + ld hl, wDecompSourcePosPtr ld c, [hl] inc hl ld b, [hl] - inc hl ; wcad8 + inc hl ; wDecompNumCommandBitsLeft dec [hl] - inc hl ; wcad9 - jr nz, .asm_914 - dec hl ; wcad8 - ld [hl], $8 ; number of bits - inc hl ; wcad9 + inc hl ; wDecompCommandByte + jr nz, .read_command_bit + dec hl ; wDecompNumCommandBitsLeft + ld [hl], 8 ; number of bits + inc hl ; wDecompCommandByte ld a, [bc] inc bc ld [hl], a -.asm_914 +.read_command_bit rl [hl] ld a, [bc] inc bc - jr nc, .asm_92a + jr nc, .repeat_command ; copy 1 byte literally - ld hl, wcad6 + ld hl, wDecompSourcePosPtr ld [hl], c inc hl ld [hl], b - ld hl, wcadd + ld hl, wDecompSecondaryBufferPtrHigh ld b, [hl] inc hl inc hl - ld c, [hl] ; wcadf + ld c, [hl] ; wDecompSecondaryBufferPtrLow inc [hl] ld [bc], a ret -.asm_92a - ld [wcade], a - ld hl, wcada +.repeat_command + ld [wDecompRepeatSeqOffset], a ; save the offset to repeat from + ld hl, wDecompRepeatModeToggle bit 0, [hl] - jr nz, .asm_94a + jr nz, .repeat_mode_toggle_on set 0, [hl] inc hl +; read byte for num of bytes to read +; and use its higher nybble ld a, [bc] inc bc - ld [hli], a ; wcadb + ld [hli], a ; wDecompRepeatLengths swap a -.asm_93c +.get_sequence_len and $f inc a ; number of times to repeat - ld [hli], a ; wcadc + ld [hli], a ; wDecompNumBytesToRepeat push hl - ld hl, wcad6 + ld hl, wDecompSourcePosPtr ld [hl], c inc hl ld [hl], b pop hl jr .repeat_byte -.asm_94a +.repeat_mode_toggle_on +; get the previous byte (num of bytes to repeat) +; and use its lower nybble res 0, [hl] inc hl - ld a, [hli] ; wcadb - jr .asm_93c + ld a, [hli] ; wDecompRepeatLengths + jr .get_sequence_len ; set attributes for [hl] sprites starting from wOAM + [wOAMOffset] / 4 ; return carry if reached end of wOAM before finishing |
