diff options
Diffstat (limited to 'engine/gfx')
-rwxr-xr-x | engine/gfx/crystal_layouts.asm | 2 | ||||
-rwxr-xr-x | engine/gfx/dma_transfer.asm | 626 | ||||
-rwxr-xr-x | engine/gfx/evolution_animation.asm | 368 | ||||
-rw-r--r-- | engine/gfx/gbc_only.asm | 149 | ||||
-rw-r--r-- | engine/gfx/loadpushoam.asm | 21 | ||||
-rw-r--r-- | engine/gfx/map_palettes.asm | 86 | ||||
-rw-r--r-- | engine/gfx/mapgroup_roofs.asm | 20 | ||||
-rw-r--r-- | engine/gfx/tileset_anims.asm | 1060 | ||||
-rw-r--r-- | engine/gfx/tileset_palettes.asm | 151 | ||||
-rw-r--r-- | engine/gfx/timeofdaypals.asm | 415 | ||||
-rwxr-xr-x | engine/gfx/trade_animation.asm | 1646 |
11 files changed, 648 insertions, 3896 deletions
diff --git a/engine/gfx/crystal_layouts.asm b/engine/gfx/crystal_layouts.asm index 0133916e5..71e2e4f56 100755 --- a/engine/gfx/crystal_layouts.asm +++ b/engine/gfx/crystal_layouts.asm @@ -203,7 +203,7 @@ Function49496: ; 49496 ret ; 494ac -INCLUDE "engine/gfx/tileset_palettes.asm" +INCLUDE "engine/tilesets/tileset_palettes.asm" MG_Mobile_Layout02: ; 49706 ld hl, .Palette_49732 diff --git a/engine/gfx/dma_transfer.asm b/engine/gfx/dma_transfer.asm new file mode 100755 index 000000000..e22adf69a --- /dev/null +++ b/engine/gfx/dma_transfer.asm @@ -0,0 +1,626 @@ +HDMATransferAttrMapAndTileMapToWRAMBank3:: ; 104000 + ld hl, .Function + jp CallInSafeGFXMode + +.Function: + decoord 0, 0, wAttrMap + ld hl, wScratchAttrMap + call PadAttrMapForHDMATransfer + decoord 0, 0 + ld hl, wScratchTileMap + call PadTilemapForHDMATransfer + ld a, $0 + ld [rVBK], a + ld hl, wScratchTileMap + call HDMATransferToWRAMBank3 + ld a, $1 + ld [rVBK], a + ld hl, wScratchAttrMap + call HDMATransferToWRAMBank3 + ret +; 10402d + +HDMATransferTileMapToWRAMBank3:: ; 10402d + ld hl, .Function + jp CallInSafeGFXMode + +.Function: + decoord 0, 0 + ld hl, wScratchTileMap + call PadTilemapForHDMATransfer + ld a, $0 + ld [rVBK], a + ld hl, wScratchTileMap + call HDMATransferToWRAMBank3 + ret +; 104047 + +HDMATransferAttrMapToWRAMBank3: ; 104047 + ld hl, .Function + jp CallInSafeGFXMode + +.Function: + decoord 0, 0, wAttrMap + ld hl, wScratchAttrMap + call PadAttrMapForHDMATransfer + ld a, $1 + ld [rVBK], a + ld hl, wScratchAttrMap + call HDMATransferToWRAMBank3 + ret +; 104061 + +ReloadMapPart:: ; 104061 + ld hl, .Function + jp CallInSafeGFXMode + +.Function: + decoord 0, 0, wAttrMap + ld hl, wScratchAttrMap + call PadAttrMapForHDMATransfer + decoord 0, 0 + ld hl, wScratchTileMap + call PadTilemapForHDMATransfer + call DelayFrame + + di + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, wScratchAttrMap + call HDMATransfer_Wait127Scanlines_toBGMap + ld a, $0 + ld [rVBK], a + ld hl, wScratchTileMap + call HDMATransfer_Wait127Scanlines_toBGMap + pop af + ld [rVBK], a + ei + + ret + +Mobile_ReloadMapPart: ; 104099 + ld hl, ReloadMapPart ; useless + ld hl, .Function + jp CallInSafeGFXMode + +.Function: + decoord 0, 0, wAttrMap + ld hl, wScratchAttrMap + call PadAttrMapForHDMATransfer + decoord 0, 0 + ld hl, wScratchTileMap + call PadTilemapForHDMATransfer + call DelayFrame + + di + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, wScratchAttrMap + call HDMATransfer_NoDI + ld a, $0 + ld [rVBK], a + ld hl, wScratchTileMap + call HDMATransfer_NoDI + pop af + ld [rVBK], a + ei + + ret +; 1040d4 + +; unused + ld hl, .unreferenced_1040da + jp CallInSafeGFXMode + +.unreferenced_1040da + ld a, $1 + ld [rVBK], a + ld a, BANK(w3_d800) + ld [rSVBK], a + ld de, w3_d800 + ld a, [hBGMapAddress + 1] + ld [rHDMA1], a + ld a, [hBGMapAddress] + ld [rHDMA2], a + ld a, d + ld [rHDMA3], a + ld a, e + ld [rHDMA4], a + ld a, $23 + ld [hDMATransfer], a + call WaitDMATransfer + ret +; 1040fb + +; unused + ld hl, .unreferenced_104101 + jp CallInSafeGFXMode + +.unreferenced_104101 + ld a, $1 + ld [rVBK], a + ld a, BANK(w3_d800) + ld [rSVBK], a + ld hl, w3_d800 + call HDMATransferToWRAMBank3 + ret +; 104110 + +OpenAndCloseMenu_HDMATransferTileMapAndAttrMap:: ; 104110 +; OpenText + ld hl, .Function + jp CallInSafeGFXMode + +.Function: + ; Transfer wAttrMap and Tilemap to BGMap + ; Fill vBGAttrs with $00 + ; Fill vBGTiles with " " + decoord 0, 0, wAttrMap + ld hl, wScratchAttrMap + call PadAttrMapForHDMATransfer + decoord 0, 0 + ld hl, wScratchTileMap + call PadTilemapForHDMATransfer + call DelayFrame + + di + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, wScratchAttrMap + call HDMATransfer_Wait123Scanlines_toBGMap + ld a, $0 + ld [rVBK], a + ld hl, wScratchTileMap + call HDMATransfer_Wait123Scanlines_toBGMap + pop af + ld [rVBK], a + ei + ret +; 104148 + +Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap: ; 104148 (41:4148) + ld hl, .Function + jp CallInSafeGFXMode + +.Function: + ; Transfer wAttrMap and Tilemap to BGMap + ; Fill vBGAttrs with $00 + ; Fill vBGTiles with $ff + decoord 0, 0, wAttrMap + ld hl, wScratchAttrMap + call PadAttrMapForHDMATransfer + ld c, $ff + decoord 0, 0 + ld hl, wScratchTileMap + call PadMapForHDMATransfer + + ld a, $1 + ld [rVBK], a + ld hl, wScratchAttrMap + call HDMATransfer_Wait127Scanlines_toBGMap + ld a, $0 + ld [rVBK], a + ld hl, wScratchTileMap + call HDMATransfer_Wait127Scanlines_toBGMap + ret +; 104177 + +CallInSafeGFXMode: ; 104177 + ld a, [hBGMapMode] + push af + ld a, [hMapAnims] + push af + xor a + ld [hBGMapMode], a + ld [hMapAnims], a + ld a, [rSVBK] + push af + ld a, BANK(wScratchTileMap) + ld [rSVBK], a + ld a, [rVBK] + push af + + call ._hl_ + + pop af + ld [rVBK], a + pop af + ld [rSVBK], a + pop af + ld [hMapAnims], a + pop af + ld [hBGMapMode], a + ret +; 10419c + +._hl_ ; 10419c + jp hl +; 10419d + + +HDMATransferToWRAMBank3: ; 10419d (41:419d) + call _LoadHDMAParameters + ld a, $23 + ld [hDMATransfer], a + +WaitDMATransfer: ; 104a14 +.loop + call DelayFrame + ld a, [hDMATransfer] + and a + jr nz, .loop + ret + +HDMATransfer_Wait127Scanlines_toBGMap: ; 1041ad (41:41ad) +; HDMA transfer from hl to [hBGMapAddress] +; hBGMapAddress -> de +; 2 * SCREEN_HEIGHT -> c + ld a, [hBGMapAddress + 1] + ld d, a + ld a, [hBGMapAddress] + ld e, a + ld c, 2 * SCREEN_HEIGHT + jr HDMATransfer_Wait127Scanlines + +HDMATransfer_Wait123Scanlines_toBGMap: ; 1041b7 (41:41b7) +; HDMA transfer from hl to [hBGMapAddress] +; hBGMapAddress -> de +; 2 * SCREEN_HEIGHT -> c +; $7b --> b + ld a, [hBGMapAddress + 1] + ld d, a + ld a, [hBGMapAddress] + ld e, a + ld c, 2 * SCREEN_HEIGHT + jr HDMATransfer_Wait123Scanlines +; 1041c1 (41:41c1) + +HDMATransfer_NoDI: ; 1041c1 +; HDMA transfer from hl to [hBGMapAddress] +; [hBGMapAddress] --> de +; 2 * SCREEN_HEIGHT --> c + ld a, [hBGMapAddress + 1] + ld d, a + ld a, [hBGMapAddress] + ld e, a + ld c, 2 * SCREEN_HEIGHT + + ; [rHDMA1, rHDMA2] = hl & $fff0 + ld a, h + ld [rHDMA1], a + ld a, l + and $f0 + ld [rHDMA2], a + ; [rHDMA3, rHDMA4] = de & $1ff0 + ld a, d + and $1f + ld [rHDMA3], a + ld a, e + and $f0 + ld [rHDMA4], a + ; b = c | %10000000 + ld a, c + dec c + or $80 + ld b, a + ; d = $7f - c + 1 + ld a, $7f + sub c + ld d, a + ; while [rLY] >= d: pass +.loop1 + ld a, [rLY] + cp d + jr nc, .loop1 + ; while not [rSTAT] & 3: pass +.loop2 + ld a, [rSTAT] + and $3 + jr z, .loop2 + ; load the 5th byte of HDMA + ld a, b + ld [rHDMA5], a + ; wait until rLY advances (c + 1) times + ld a, [rLY] + inc c + ld hl, rLY +.loop3 + cp [hl] + jr z, .loop3 + ld a, [hl] + dec c + jr nz, .loop3 + ld hl, rHDMA5 + res 7, [hl] + ret +; 104205 + +HDMATransfer_Wait123Scanlines: + ld b, $7b + jr _continue_HDMATransfer + + +HDMATransfer_Wait127Scanlines: + ld b, $7f +_continue_HDMATransfer: +; a lot of waiting around for hardware registers + ; [rHDMA1, rHDMA2] = hl & $fff0 + ld a, h + ld [rHDMA1], a + ld a, l + and $f0 ; high nybble + ld [rHDMA2], a + ; [rHDMA3, rHDMA4] = de & $1ff0 + ld a, d + and $1f ; lower 5 bits + ld [rHDMA3], a + ld a, e + and $f0 ; high nybble + ld [rHDMA4], a + ; e = c | %10000000 + ld a, c + dec c + or $80 + ld e, a + ; d = b - c + 1 + ld a, b + sub c + ld d, a + ; while [rLY] >= d: pass +.ly_loop + ld a, [rLY] + cp d + jr nc, .ly_loop + + di + ; while [rSTAT] & 3: pass +.rstat_loop_1 + ld a, [rSTAT] + and $3 + jr nz, .rstat_loop_1 + ; while not [rSTAT] & 3: pass +.rstat_loop_2 + ld a, [rSTAT] + and $3 + jr z, .rstat_loop_2 + ; load the 5th byte of HDMA + ld a, e + ld [rHDMA5], a + ; wait until rLY advances (c + 1) times + ld a, [rLY] + inc c + ld hl, rLY +.final_ly_loop + cp [hl] + jr z, .final_ly_loop + ld a, [hl] + dec c + jr nz, .final_ly_loop + ld hl, rHDMA5 + res 7, [hl] + ei + + ret +; 10424e + + +_LoadHDMAParameters: ; 10424e (41:424e) + ld a, h + ld [rHDMA1], a + ld a, l + ld [rHDMA2], a + ld a, [hBGMapAddress + 1] + and $1f + ld [rHDMA3], a + ld a, [hBGMapAddress] + ld [rHDMA4], a + ret + +PadTilemapForHDMATransfer: ; 10425f (41:425f) + ld c, " " + jr PadMapForHDMATransfer + +PadAttrMapForHDMATransfer: ; 104263 (41:4263) + ld c, $0 + +PadMapForHDMATransfer: ; 104265 (41:4265) +; pad a 20x18 map to 32x18 for HDMA transfer +; back up the padding value in c to hMapObjectIndexBuffer + ld a, [hMapObjectIndexBuffer] + push af + ld a, c + ld [hMapObjectIndexBuffer], a + +; for each row on the screen + ld c, SCREEN_HEIGHT +.loop1 +; for each tile in the row + ld b, SCREEN_WIDTH +.loop2 +; copy from de to hl + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .loop2 + +; load the original padding value of c into hl for 32 - 20 = 12 rows + ld a, [hMapObjectIndexBuffer] + ld b, BG_MAP_WIDTH - SCREEN_WIDTH +.loop3 + ld [hli], a + dec b + jr nz, .loop3 + + dec c + jr nz, .loop1 + +; restore the original value of hMapObjectIndexBuffer + pop af + ld [hMapObjectIndexBuffer], a + ret + + +_Get2bpp:: ; 104284 + ; 2bpp when [rLCDC] & $80 + ; switch to WRAM bank 6 + ld a, [rSVBK] + push af + ld a, BANK(wScratchTileMap) + ld [rSVBK], a + + push bc + push hl + + ; Copy c tiles of the 2bpp from b:de to wScratchTileMap + ld a, b ; bank + ld l, c ; number of tiles + ld h, $0 + ; multiply by 16 (16 bytes of a 2bpp = 8 x 8 tile) + add hl, hl + add hl, hl + add hl, hl + add hl, hl + ld b, h + ld c, l + ld h, d ; address + ld l, e + ld de, wScratchTileMap + call FarCopyBytes + + pop hl + pop bc + + push bc + call DelayFrame + pop bc + + ld d, h + ld e, l + ld hl, wScratchTileMap + call HDMATransfer_Wait127Scanlines + + ; restore the previous bank + pop af + ld [rSVBK], a + ret +; 1042b2 + +_Get1bpp:: ; 1042b2 + ; 1bpp when [rLCDC] & $80 +.loop + ld a, c + cp $10 + jp c, .bankswitch + jp z, .bankswitch + push bc + push hl + push de + ld c, $10 + call .bankswitch + pop de + ld hl, $80 + add hl, de + ld d, h + ld e, l + pop hl + lb bc, 1, 0 + add hl, bc + pop bc + ld a, c + sub $10 + ld c, a + jr .loop +; 1042d6 + +.bankswitch ; 1042d6 + ld a, [rSVBK] + push af + ld a, BANK(wScratchTileMap) + ld [rSVBK], a + + push bc + push hl + + ld a, b + ld l, c + ld h, $0 + add hl, hl ; multiply by 8 + add hl, hl ; multiply by 8 + add hl, hl ; multiply by 8 + ld c, l + ld b, h + ld h, d + ld l, e + ld de, wScratchTileMap + call FarCopyBytesDouble_DoubleBankSwitch + + pop hl + pop bc + + push bc + call DelayFrame + pop bc + + ld d, h + ld e, l + ld hl, wScratchTileMap + call HDMATransfer_Wait127Scanlines + + pop af + ld [rSVBK], a + ret +; 104303 + +HDMATransfer_OnlyTopFourRows: ; 104303 + ld hl, .Function + jp CallInSafeGFXMode +; 104309 + +.Function: + ld hl, wScratchTileMap + decoord 0, 0 + call .Copy + ld hl, wScratchTileMap + $80 + decoord 0, 0, wAttrMap + call .Copy + ld a, $1 + ld [rVBK], a + ld c, $8 + ld hl, wScratchTileMap + $80 + debgcoord 0, 0, vBGMap1 + call HDMATransfer_Wait127Scanlines + ld a, $0 + ld [rVBK], a + ld c, $8 + ld hl, wScratchTileMap + debgcoord 0, 0, vBGMap1 + call HDMATransfer_Wait127Scanlines + ret + +.Copy: ; 10433a (41:433a) + ld b, 4 +.outer_loop + ld c, SCREEN_WIDTH +.inner_loop + ld a, [de] + ld [hli], a + inc de + dec c + jr nz, .inner_loop + ld a, l + add BG_MAP_WIDTH - SCREEN_WIDTH + ld l, a + ld a, h + adc 0 + ld h, a + dec b + jr nz, .outer_loop + ret +; 104350 diff --git a/engine/gfx/evolution_animation.asm b/engine/gfx/evolution_animation.asm deleted file mode 100755 index 978f9e968..000000000 --- a/engine/gfx/evolution_animation.asm +++ /dev/null @@ -1,368 +0,0 @@ -EvolutionAnimation: ; 4e5e1 - push hl - push de - push bc - ld a, [wCurSpecies] - push af - ld a, [rOBP0] - push af - ld a, [wBaseDexNo] - push af - - call .EvolutionAnimation - - pop af - ld [wBaseDexNo], a - pop af - ld [rOBP0], a - pop af - ld [wCurSpecies], a - pop bc - pop de - pop hl - - ld a, [wEvolutionCanceled] - and a - ret z - - scf - ret -; 4e607 - -.EvolutionAnimation: ; 4e607 - ld a, %11100100 - ld [rOBP0], a - - ld de, MUSIC_NONE - call PlayMusic - - farcall ClearSpriteAnims - - ld de, .GFX - ld hl, vTiles0 - lb bc, BANK(.GFX), 8 - call Request2bpp - - xor a - ld [wLowHealthAlarm], a - call WaitBGMap - xor a - ld [hBGMapMode], a - ld a, [wEvolutionOldSpecies] - ld [wPlayerHPPal], a - - ld c, $0 - call .GetSGBLayout - ld a, [wEvolutionOldSpecies] - ld [wCurPartySpecies], a - ld [wCurSpecies], a - call .PlaceFrontpic - - ld de, vTiles2 - ld hl, vTiles2 tile $31 - ld bc, 7 * 7 - call Request2bpp - - ld a, 7 * 7 - ld [wEvolutionPicOffset], a - call .ReplaceFrontpic - ld a, [wEvolutionNewSpecies] - ld [wCurPartySpecies], a - ld [wCurSpecies], a - call .LoadFrontpic - ld a, [wEvolutionOldSpecies] - ld [wCurPartySpecies], a - ld [wCurSpecies], a - - ld a, $1 - ld [hBGMapMode], a - call .check_statused - jr c, .skip_cry - - ld a, [wEvolutionOldSpecies] - call PlayMonCry - -.skip_cry - ld de, MUSIC_EVOLUTION - call PlayMusic - - ld c, 80 - call DelayFrames - - ld c, $1 - call .GetSGBLayout - call .AnimationSequence - jr c, .cancel_evo - - ld a, -7 * 7 - ld [wEvolutionPicOffset], a - call .ReplaceFrontpic - xor a - ld [wEvolutionCanceled], a - - ld a, [wEvolutionNewSpecies] - ld [wPlayerHPPal], a - - ld c, $0 - call .GetSGBLayout - call .PlayEvolvedSFX - farcall ClearSpriteAnims - call .check_statused - jr c, .no_anim - - ld a, [wBoxAlignment] - push af - ld a, $1 - ld [wBoxAlignment], a - ld a, [wCurPartySpecies] - push af - - ld a, [wPlayerHPPal] - ld [wCurPartySpecies], a - hlcoord 7, 2 - ld d, $0 - ld e, ANIM_MON_EVOLVE - predef AnimateFrontpic - - pop af - ld [wCurPartySpecies], a - pop af - ld [wBoxAlignment], a - ret - -.no_anim - ret - -.cancel_evo - ld a, $1 - ld [wEvolutionCanceled], a - - ld a, [wEvolutionOldSpecies] - ld [wPlayerHPPal], a - - ld c, $0 - call .GetSGBLayout - call .PlayEvolvedSFX - farcall ClearSpriteAnims - call .check_statused - ret c - - ld a, [wPlayerHPPal] - call PlayMonCry - ret -; 4e703 - -.GetSGBLayout: ; 4e703 - ld b, SCGB_EVOLUTION - jp GetSGBLayout -; 4e708 - -.PlaceFrontpic: ; 4e708 - call GetBaseData - hlcoord 7, 2 - jp PrepMonFrontpic -; 4e711 - -.LoadFrontpic: ; 4e711 - call GetBaseData - ld a, $1 - ld [wBoxAlignment], a - ld de, vTiles2 - predef GetAnimatedFrontpic - xor a - ld [wBoxAlignment], a - ret -; 4e726 - -.AnimationSequence: ; 4e726 - call ClearJoypad - lb bc, 1, 2 * 7 ; flash b times, wait c frames in between -.loop - push bc - call .WaitFrames_CheckPressedB - pop bc - jr c, .exit_sequence - push bc - call .Flash - pop bc - inc b - dec c - dec c - jr nz, .loop - and a - ret - -.exit_sequence - scf - ret -; 4e741 - -.Flash: ; 4e741 - ld a, -7 * 7 ; new stage - ld [wEvolutionPicOffset], a - call .ReplaceFrontpic - ld a, 7 * 7 ; previous stage - ld [wEvolutionPicOffset], a - call .ReplaceFrontpic - dec b - jr nz, .Flash - ret -; 4e755 - -.ReplaceFrontpic: ; 4e755 - push bc - xor a - ld [hBGMapMode], a - hlcoord 7, 2 - lb bc, 7, 7 - ld de, SCREEN_WIDTH - 7 -.loop1 - push bc -.loop2 - ld a, [wEvolutionPicOffset] - add [hl] - ld [hli], a - dec c - jr nz, .loop2 - pop bc - add hl, de - dec b - jr nz, .loop1 - ld a, $1 - ld [hBGMapMode], a - call WaitBGMap - pop bc - ret -; 4e779 - -.WaitFrames_CheckPressedB: ; 4e779 - call DelayFrame - push bc - call JoyTextDelay - ld a, [hJoyDown] - pop bc - and B_BUTTON - jr nz, .pressed_b -.loop3 - dec c - jr nz, .WaitFrames_CheckPressedB - and a - ret - -.pressed_b - ld a, [wForceEvolution] - and a - jr nz, .loop3 - scf - ret -; 4e794 - -.check_statused ; 4e794 - ld a, [wCurPartyMon] - ld hl, wPartyMon1Species - call GetPartyLocation - ld b, h - ld c, l - farcall CheckFaintedFrzSlp - ret -; 4e7a6 - -.PlayEvolvedSFX: ; 4e7a6 - ld a, [wEvolutionCanceled] - and a - ret nz - ld de, SFX_EVOLVED - call PlaySFX - ld hl, wJumptableIndex - ld a, [hl] - push af - ld [hl], $0 -.loop4 - call .balls_of_light - jr nc, .done - call .AnimateBallsOfLight - jr .loop4 - -.done - ld c, 32 -.loop5 - call .AnimateBallsOfLight - dec c - jr nz, .loop5 - pop af - ld [wJumptableIndex], a - ret -; 4e7cf - -.balls_of_light ; 4e7cf - ld hl, wJumptableIndex - ld a, [hl] - cp 32 - ret nc - ld d, a - inc [hl] - and $1 - jr nz, .done_balls - ld e, $0 - call .GenerateBallOfLight - ld e, $10 - call .GenerateBallOfLight - -.done_balls - scf - ret -; 4e7e8 - -.GenerateBallOfLight: ; 4e7e8 - push de - depixel 9, 11 - ld a, SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT - call _InitSpriteAnimStruct - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - ld a, [wJumptableIndex] - and %1110 - sla a - pop de - add e - ld [hl], a - ld hl, SPRITEANIMSTRUCT_TILE_ID - add hl, bc - ld [hl], $0 - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld [hl], $10 - ret -; 4e80c - -.AnimateBallsOfLight: ; 4e80c - push bc - callfar PlaySpriteAnimations - ; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES - ld a, [hVBlankCounter] - and %1110 - srl a - inc a - inc a - and $7 - ld b, a - ld hl, wVirtualOAMSprite00Attributes - ld c, NUM_SPRITE_OAM_STRUCTS -.loop6 - ld a, [hl] - or b - ld [hli], a ; attributes -rept SPRITEOAMSTRUCT_LENGTH + -1 - inc hl -endr - dec c - jr nz, .loop6 - pop bc - call DelayFrame - ret -; 4e831 - - -.GFX: -INCBIN "gfx/evo/bubble_large.2bpp" -INCBIN "gfx/evo/bubble.2bpp" diff --git a/engine/gfx/gbc_only.asm b/engine/gfx/gbc_only.asm deleted file mode 100644 index badd953aa..000000000 --- a/engine/gfx/gbc_only.asm +++ /dev/null @@ -1,149 +0,0 @@ -GBCOnlyScreen: ; 4ea82 - - ld a, [hCGB] - and a - ret nz - - ld de, MUSIC_NONE - call PlayMusic - - call ClearTileMap - - ld hl, GBCOnlyGFX - ld de, wGBCOnlyDecompressBuffer - ld a, [rSVBK] - push af - ld a, 0 ; this has the same effect as selecting bank 1 - ld [rSVBK], a - call Decompress - pop af - ld [rSVBK], a - - ld de, wGBCOnlyDecompressBuffer - ld hl, vTiles2 - lb bc, BANK(GBCOnlyGFX), 84 - call Get2bpp - - ld de, Font - ld hl, vTiles1 - lb bc, BANK(Font), $80 - call Get1bpp - - call DrawGBCOnlyScreen - - call WaitBGMap - -; better luck next time -.loop - call DelayFrame - jr .loop -; 4eac5 - - -DrawGBCOnlyScreen: ; 4eac5 - - call DrawGBCOnlyBorder - - ; Pokemon - hlcoord 3, 2 - ld b, 14 - ld c, 4 - ld a, $8 - call DrawGBCOnlyGraphic - - ; Crystal - hlcoord 5, 6 - ld b, 10 - ld c, 2 - ld a, $40 - call DrawGBCOnlyGraphic - - ld de, GBCOnlyString - hlcoord 1, 10 - call PlaceString - - ret -; 4eaea - - -DrawGBCOnlyBorder: ; 4eaea - - hlcoord 0, 0 - ld [hl], 0 ; top-left - - inc hl - ld a, 1 ; top - call .FillRow - - ld [hl], 2 ; top-right - - hlcoord 0, 1 - ld a, 3 ; left - call .FillColumn - - hlcoord 19, 1 - ld a, 4 ; right - call .FillColumn - - hlcoord 0, 17 - ld [hl], 5 ; bottom-left - - inc hl - ld a, 6 ; bottom - call .FillRow - - ld [hl], 7 ; bottom-right - ret -; 4eb15 - -.FillRow: ; 4eb15 - ld c, SCREEN_WIDTH - 2 -.next_column - ld [hli], a - dec c - jr nz, .next_column - ret -; 4eb1c - -.FillColumn: ; 4eb1c - ld de, SCREEN_WIDTH - ld c, SCREEN_HEIGHT - 2 -.next_row - ld [hl], a - add hl, de - dec c - jr nz, .next_row - ret -; 4eb27 - - -DrawGBCOnlyGraphic: ; 4eb27 - ld de, SCREEN_WIDTH -.y - push bc - push hl -.x - ld [hli], a - inc a - dec b - jr nz, .x - pop hl - add hl, de - pop bc - dec c - jr nz, .y - ret -; 4eb38 - - -GBCOnlyString: ; 4eb38 - db "This Game Pak is" - next "designed only for" - next "use on the" - next "Game Boy Color.@" -; 4eb76 - - -GBCOnlyGFX: ; 4eb76 -INCBIN "gfx/sgb/gbc_only.2bpp.lz" -; 4f0bc diff --git a/engine/gfx/loadpushoam.asm b/engine/gfx/loadpushoam.asm new file mode 100644 index 000000000..95f67ff73 --- /dev/null +++ b/engine/gfx/loadpushoam.asm @@ -0,0 +1,21 @@ +WriteOAMDMACodeToHRAM:: ; 4031 + ld c, hTransferVirtualOAM - $ff00 + ld b, .PushOAMEnd - .PushOAM + ld hl, .PushOAM +.loop + ld a, [hli] + ld [$ff00+c], a + inc c + dec b + jr nz, .loop + ret + +.PushOAM: ; 403f + ld a, HIGH(wVirtualOAM) + ld [rDMA], a + ld a, NUM_SPRITE_OAM_STRUCTS +.pushoam_loop + dec a + jr nz, .pushoam_loop + ret +.PushOAMEnd diff --git a/engine/gfx/map_palettes.asm b/engine/gfx/map_palettes.asm deleted file mode 100644 index a9d2b382f..000000000 --- a/engine/gfx/map_palettes.asm +++ /dev/null @@ -1,86 +0,0 @@ -SwapTextboxPalettes:: ; 4c000 - hlcoord 0, 0 - decoord 0, 0, wAttrMap - ld b, SCREEN_HEIGHT -.loop - push bc - ld c, SCREEN_WIDTH -.innerloop - ld a, [hl] - push hl - srl a - jr c, .UpperNybble - ld hl, wTilesetPalettes - add [hl] - ld l, a - ld a, [wTilesetPalettes + 1] - adc 0 - ld h, a - ld a, [hl] - and $f - jr .next - -.UpperNybble: - ld hl, wTilesetPalettes - add [hl] - ld l, a - ld a, [wTilesetPalettes + 1] - adc 0 - ld h, a - ld a, [hl] - swap a - and $f - -.next - pop hl - ld [de], a - res 7, [hl] - inc hl - inc de - dec c - jr nz, .innerloop - pop bc - dec b - jr nz, .loop - ret - -ScrollBGMapPalettes:: ; 4c03f - ld hl, wBGMapBuffer - ld de, wBGMapPalBuffer -.loop - ld a, [hl] - push hl - srl a - jr c, .UpperNybble - -; .LowerNybble - ld hl, wTilesetPalettes - add [hl] - ld l, a - ld a, [wTilesetPalettes + 1] - adc 0 - ld h, a - ld a, [hl] - and $f - jr .next - -.UpperNybble: - ld hl, wTilesetPalettes - add [hl] - ld l, a - ld a, [wTilesetPalettes + 1] - adc 0 - ld h, a - ld a, [hl] - swap a - and $f - -.next - pop hl - ld [de], a - res 7, [hl] - inc hl - inc de - dec c - jr nz, .loop - ret diff --git a/engine/gfx/mapgroup_roofs.asm b/engine/gfx/mapgroup_roofs.asm deleted file mode 100644 index 58e5e7cfe..000000000 --- a/engine/gfx/mapgroup_roofs.asm +++ /dev/null @@ -1,20 +0,0 @@ -LoadMapGroupRoof:: ; 1c000 - ld a, [wMapGroup] - ld e, a - ld d, 0 - ld hl, MapGroupRoofs - add hl, de - ld a, [hl] - cp -1 - ret z - ld hl, Roofs - ld bc, 9 tiles - call AddNTimes - ld de, vTiles2 tile $0a - ld bc, 9 tiles - call CopyBytes - ret -; 1c021 - - -INCLUDE "data/maps/roofs.asm" diff --git a/engine/gfx/tileset_anims.asm b/engine/gfx/tileset_anims.asm deleted file mode 100644 index bf0037e65..000000000 --- a/engine/gfx/tileset_anims.asm +++ /dev/null @@ -1,1060 +0,0 @@ -_AnimateTileset:: ; fc000 -; Iterate over a given pointer array of -; animation functions (one per frame). - -; Typically in wra1, vra0 - - ld a, [wTilesetAnim] - ld e, a - ld a, [wTilesetAnim + 1] - ld d, a - - ld a, [hTileAnimFrame] - ld l, a - inc a - ld [hTileAnimFrame], a - - ld h, 0 - add hl, hl - add hl, hl - add hl, de - -; 2-byte parameter -; All functions take input de. - ld e, [hl] - inc hl - ld d, [hl] - inc hl - -; Function address - ld a, [hli] - ld h, [hl] - ld l, a - - jp hl -; fc01b - -Tileset0Anim: ; 0xfc01b -TilesetJohtoModernAnim: ; 0xfc01b -TilesetKantoAnim: ; 0xfc01b - dw vTiles2 tile $14, AnimateWaterTile - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, TileAnimationPalette - dw NULL, WaitTileAnimation - dw NULL, AnimateFlowerTile - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, StandingTileFrame8 - dw NULL, DoneTileAnimation -; 0xfc047 - -TilesetParkAnim: ; 0xfc047 - dw vTiles2 tile $14, AnimateWaterTile - dw NULL, WaitTileAnimation - dw vTiles2 tile $5f, AnimateFountain - dw NULL, WaitTileAnimation - dw NULL, TileAnimationPalette - dw NULL, WaitTileAnimation - dw NULL, AnimateFlowerTile - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, StandingTileFrame8 - dw NULL, DoneTileAnimation -; 0xfc073 - -TilesetForestAnim: ; 0xfc073 - dw NULL, ForestTreeLeftAnimation - dw NULL, ForestTreeRightAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, ForestTreeLeftAnimation2 - dw NULL, ForestTreeRightAnimation2 - dw NULL, AnimateFlowerTile - dw vTiles2 tile $14, AnimateWaterTile - dw NULL, TileAnimationPalette - dw NULL, StandingTileFrame8 - dw NULL, DoneTileAnimation -; 0xfc0a3 - -TilesetJohtoAnim: ; 0xfc0a3 - dw vTiles2 tile $14, AnimateWaterTile - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, TileAnimationPalette - dw NULL, WaitTileAnimation - dw NULL, AnimateFlowerTile - dw WhirlpoolFrames1, AnimateWhirlpoolTile - dw WhirlpoolFrames2, AnimateWhirlpoolTile - dw WhirlpoolFrames3, AnimateWhirlpoolTile - dw WhirlpoolFrames4, AnimateWhirlpoolTile - dw NULL, WaitTileAnimation - dw NULL, StandingTileFrame8 - dw NULL, DoneTileAnimation -; 0xfc0d7 - -UnusedTilesetAnim_fc0d7: ; 0xfc0d7 - dw vTiles2 tile $03, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileRightLeft - dw vTiles2 tile $03, WriteTileFromBuffer - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, AnimateFlowerTile - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, DoneTileAnimation -; 0xfc103 - -UnusedTilesetAnim_fc103: ; 0xfc103 - dw vTiles2 tile $14, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileRightLeft - dw vTiles2 tile $14, WriteTileFromBuffer - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, DoneTileAnimation -; 0xfc12f - -TilesetPortAnim: ; 0xfc12f - dw vTiles2 tile $14, AnimateWaterTile - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, TileAnimationPalette - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, StandingTileFrame8 - dw NULL, DoneTileAnimation -; 0xfc15f - -TilesetEliteFourRoomAnim: ; 0xfc15f - dw NULL, LavaBubbleAnim2 - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, LavaBubbleAnim1 - dw NULL, WaitTileAnimation - dw NULL, StandingTileFrame8 - dw NULL, DoneTileAnimation -; 0xfc17f - -UnusedTilesetAnim_fc17f: ; 0xfc17f - dw vTiles2 tile $53, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileDown - dw wTileAnimBuffer, ScrollTileDown - dw vTiles2 tile $53, WriteTileFromBuffer - dw vTiles2 tile $03, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileRightLeft - dw vTiles2 tile $03, WriteTileFromBuffer - dw vTiles2 tile $53, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileDown - dw wTileAnimBuffer, ScrollTileDown - dw vTiles2 tile $53, WriteTileFromBuffer - dw NULL, DoneTileAnimation -; 0xfc1af - -UnusedTilesetAnim_fc1af: ; 0xfc1af - dw vTiles2 tile $54, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileDown - dw wTileAnimBuffer, ScrollTileDown - dw vTiles2 tile $54, WriteTileFromBuffer - dw NULL, WaitTileAnimation - dw vTiles2 tile $03, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileRightLeft - dw vTiles2 tile $03, WriteTileFromBuffer - dw NULL, WaitTileAnimation - dw vTiles2 tile $54, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileDown - dw wTileAnimBuffer, ScrollTileDown - dw vTiles2 tile $54, WriteTileFromBuffer - dw NULL, DoneTileAnimation -; 0xfc1e7 - -TilesetCaveAnim: ; 0xfc1e7 -TilesetDarkCaveAnim: ; 0xfc1e7 - dw vTiles2 tile $14, WriteTileToBuffer - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileRightLeft - dw NULL, FlickeringCaveEntrancePalette - dw vTiles2 tile $14, WriteTileFromBuffer - dw NULL, FlickeringCaveEntrancePalette - dw NULL, TileAnimationPalette - dw NULL, FlickeringCaveEntrancePalette - dw vTiles2 tile $40, WriteTileToBuffer - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileDown - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileDown - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileDown - dw NULL, FlickeringCaveEntrancePalette - dw vTiles2 tile $40, WriteTileFromBuffer - dw NULL, FlickeringCaveEntrancePalette - dw NULL, DoneTileAnimation -; 0xfc233 - -TilesetIcePathAnim: ; 0xfc233 - dw vTiles2 tile $35, WriteTileToBuffer - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileRightLeft - dw NULL, FlickeringCaveEntrancePalette - dw vTiles2 tile $35, WriteTileFromBuffer - dw NULL, FlickeringCaveEntrancePalette - dw NULL, TileAnimationPalette - dw NULL, FlickeringCaveEntrancePalette - dw vTiles2 tile $31, WriteTileToBuffer - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileDown - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileDown - dw NULL, FlickeringCaveEntrancePalette - dw wTileAnimBuffer, ScrollTileDown - dw NULL, FlickeringCaveEntrancePalette - dw vTiles2 tile $31, WriteTileFromBuffer - dw NULL, FlickeringCaveEntrancePalette - dw NULL, DoneTileAnimation -; 0xfc27f - -TilesetTowerAnim: ; 0xfc27f - dw TowerPillarTilePointer9, AnimateTowerPillarTile - dw TowerPillarTilePointer10, AnimateTowerPillarTile - dw TowerPillarTilePointer7, AnimateTowerPillarTile - dw TowerPillarTilePointer8, AnimateTowerPillarTile - dw TowerPillarTilePointer5, AnimateTowerPillarTile - dw TowerPillarTilePointer6, AnimateTowerPillarTile - dw TowerPillarTilePointer3, AnimateTowerPillarTile - dw TowerPillarTilePointer4, AnimateTowerPillarTile - dw TowerPillarTilePointer1, AnimateTowerPillarTile - dw TowerPillarTilePointer2, AnimateTowerPillarTile - dw NULL, StandingTileFrame - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, DoneTileAnimation -; 0xfc2bf - -UnusedTilesetAnim_fc2bf: ; 0xfc2bf - dw vTiles2 tile $4f, WriteTileToBuffer - dw wTileAnimBuffer, ScrollTileRightLeft - dw vTiles2 tile $4f, WriteTileFromBuffer - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, DoneTileAnimation -; 0xfc2e7 - -TilesetBattleTowerOutsideAnim: ; 0xfc2e7 -TilesetHouseAnim: ; 0xfc2e7 -TilesetPlayersHouseAnim: ; 0xfc2e7 -TilesetPokecenterAnim: ; 0xfc2e7 -TilesetGateAnim: ; 0xfc2e7 -TilesetLabAnim: ; 0xfc2e7 -TilesetFacilityAnim: ; 0xfc2e7 -TilesetMartAnim: ; 0xfc2e7 -TilesetMansionAnim: ; 0xfc2e7 -TilesetGameCornerAnim: ; 0xfc2e7 -TilesetTraditionalHouseAnim: ; 0xfc2e7 -TilesetTrainStationAnim: ; 0xfc2e7 -TilesetChampionsRoomAnim: ; 0xfc2e7 -TilesetLighthouseAnim: ; 0xfc2e7 -TilesetPlayersRoomAnim: ; 0xfc2e7 -TilesetPokeComCenterAnim: ; 0xfc2e7 -TilesetBattleTowerAnim: ; 0xfc2e7 -TilesetRuinsOfAlphAnim: ; 0xfc2e7 -TilesetRadioTowerAnim: ; 0xfc2e7 -TilesetUndergroundAnim: ; 0xfc2e7 -TilesetBetaWordRoomAnim: ; 0xfc2e7 -TilesetHoOhWordRoomAnim: ; 0xfc2e7 -TilesetKabutoWordRoomAnim: ; 0xfc2e7 -TilesetOmanyteWordRoomAnim: ; 0xfc2e7 -TilesetAerodactylWordRoomAnim: ; 0xfc2e7 - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, WaitTileAnimation - dw NULL, DoneTileAnimation -; 0xfc2fb - -DoneTileAnimation: ; fc2fb -; Reset the animation command loop. - xor a - ld [hTileAnimFrame], a - -WaitTileAnimation: ; fc2fe -; Do nothing this frame. - ret -; fc2ff - -StandingTileFrame8: ; fc2ff - ld a, [wTileAnimationTimer] - inc a - and %111 - ld [wTileAnimationTimer], a - ret -; fc309 - - -ScrollTileRightLeft: ; fc309 -; Scroll right for 4 ticks, then left for 4 ticks. - ld a, [wTileAnimationTimer] - inc a - and %111 - ld [wTileAnimationTimer], a - and %100 - jr nz, ScrollTileLeft - jr ScrollTileRight -; fc318 - -ScrollTileUpDown: ; fc318 -; Scroll up for 4 ticks, then down for 4 ticks. - ld a, [wTileAnimationTimer] - inc a - and %111 - ld [wTileAnimationTimer], a - and %100 - jr nz, ScrollTileDown - jr ScrollTileUp -; fc327 - -ScrollTileLeft: ; fc327 - ld h, d - ld l, e - ld c, 4 -.loop -rept 4 - ld a, [hl] - rlca - ld [hli], a -endr - dec c - jr nz, .loop - ret -; fc33b - -ScrollTileRight: ; fc33b - ld h, d - ld l, e - ld c, 4 -.loop -rept 4 - ld a, [hl] - rrca - ld [hli], a -endr - dec c - jr nz, .loop - ret -; fc34f - -ScrollTileUp: ; fc34f - ld h, d - ld l, e - ld d, [hl] - inc hl - ld e, [hl] - ld bc, TILE_WIDTH * 2 - 2 - add hl, bc - ld a, TILE_WIDTH / 2 -.loop - ld c, [hl] - ld [hl], e - dec hl - ld b, [hl] - ld [hl], d - dec hl - ld e, [hl] - ld [hl], c - dec hl - ld d, [hl] - ld [hl], b - dec hl - dec a - jr nz, .loop - ret -; fc36a - -ScrollTileDown: ; fc36a - ld h, d - ld l, e - ld de, TILE_WIDTH * 2 - 2 - push hl - add hl, de - ld d, [hl] - inc hl - ld e, [hl] - pop hl - ld a, TILE_WIDTH / 2 -.loop - ld b, [hl] - ld [hl], d - inc hl - ld c, [hl] - ld [hl], e - inc hl - ld d, [hl] - ld [hl], b - inc hl - ld e, [hl] - ld [hl], c - inc hl - dec a - jr nz, .loop - ret -; fc387 - - -AnimateFountain: ; fc387 - ld hl, sp+0 - ld b, h - ld c, l - ld hl, .frames - ld a, [wTileAnimationTimer] - and %111 - add a - add l - ld l, a - jr nc, .okay - inc h -.okay - ld a, [hli] - ld h, [hl] - ld l, a - ld sp, hl - ld l, e - ld h, d - jp WriteTile - -.frames - dw .frame1 - dw .frame2 - dw .frame3 - dw .frame4 - dw .frame3 - dw .frame4 - dw .frame5 - dw .frame1 - -.frame1 INCBIN "gfx/tilesets/fountain/1.2bpp" -.frame2 INCBIN "gfx/tilesets/fountain/2.2bpp" -.frame3 INCBIN "gfx/tilesets/fountain/3.2bpp" -.frame4 INCBIN "gfx/tilesets/fountain/4.2bpp" -.frame5 INCBIN "gfx/tilesets/fountain/5.2bpp" -; fc402 - - -AnimateWaterTile: ; fc402 -; Draw a water tile for the current frame in VRAM tile at de. - -; Save sp in bc (see WriteTile). - ld hl, sp+0 - ld b, h - ld c, l - - ld a, [wTileAnimationTimer] - -; 4 tile graphics, updated every other frame. - and %110 - -; 2 x 8 = 16 bytes per tile - add a - add a - add a - - add LOW(WaterTileFrames) - ld l, a - ld a, 0 - adc HIGH(WaterTileFrames) - ld h, a - -; The stack now points to the start of the tile for this frame. - ld sp, hl - - ld l, e - ld h, d - - jp WriteTile -; fc41c - -WaterTileFrames: ; fc41c - INCBIN "gfx/tilesets/water/water.2bpp" -; fc45c - - -ForestTreeLeftAnimation: ; fc45c - ld hl, sp+0 - ld b, h - ld c, l - -; Only during the Celebi event. - ld a, [wCelebiEvent] - bit CELEBIEVENT_FOREST_IS_RESTLESS_F, a - jr nz, .asm_fc46c - ld hl, ForestTreeLeftFrames - jr .asm_fc47d - -.asm_fc46c - ld a, [wTileAnimationTimer] - call GetForestTreeFrame - add a - add a - add a - add LOW(ForestTreeLeftFrames) - ld l, a - ld a, 0 - adc HIGH(ForestTreeLeftFrames) - ld h, a - -.asm_fc47d - ld sp, hl - ld hl, vTiles2 tile $0c - jp WriteTile -; fc484 - - -ForestTreeLeftFrames: ; fc484 - INCBIN "gfx/tilesets/forest-tree/1.2bpp" - INCBIN "gfx/tilesets/forest-tree/2.2bpp" -; fc4a4 - -ForestTreeRightFrames: ; fc4a4 - INCBIN "gfx/tilesets/forest-tree/3.2bpp" - INCBIN "gfx/tilesets/forest-tree/4.2bpp" -; fc4c4 - - -ForestTreeRightAnimation: ; fc4c4 - ld hl, sp+0 - ld b, h - ld c, l - -; Only during the Celebi event. - ld a, [wCelebiEvent] - bit CELEBIEVENT_FOREST_IS_RESTLESS_F, a - jr nz, .asm_fc4d4 - ld hl, ForestTreeRightFrames - jr .asm_fc4eb - -.asm_fc4d4 - ld a, [wTileAnimationTimer] - call GetForestTreeFrame - add a - add a - add a - add LOW(ForestTreeLeftFrames) - ld l, a - ld a, 0 - adc HIGH(ForestTreeLeftFrames) - ld h, a - push bc - ld bc, ForestTreeRightFrames - ForestTreeLeftFrames - add hl, bc - pop bc - -.asm_fc4eb - ld sp, hl - ld hl, vTiles2 tile $0f - jp WriteTile -; fc4f2 - - -ForestTreeLeftAnimation2: ; fc4f2 - ld hl, sp+0 - ld b, h - ld c, l - -; Only during the Celebi event. - ld a, [wCelebiEvent] - bit CELEBIEVENT_FOREST_IS_RESTLESS_F, a - jr nz, .asm_fc502 - ld hl, ForestTreeLeftFrames - jr .asm_fc515 - -.asm_fc502 - ld a, [wTileAnimationTimer] - call GetForestTreeFrame - xor 2 - add a - add a - add a - add LOW(ForestTreeLeftFrames) - ld l, a - ld a, 0 - adc HIGH(ForestTreeLeftFrames) - ld h, a - -.asm_fc515 - ld sp, hl - ld hl, vTiles2 tile $0c - jp WriteTile -; fc51c - - -ForestTreeRightAnimation2: ; fc51c - ld hl, sp+0 - ld b, h - ld c, l - -; Only during the Celebi event. - ld a, [wCelebiEvent] - bit CELEBIEVENT_FOREST_IS_RESTLESS_F, a - jr nz, .asm_fc52c - ld hl, ForestTreeRightFrames - jr .asm_fc545 - -.asm_fc52c - ld a, [wTileAnimationTimer] - call GetForestTreeFrame - xor 2 - add a - add a - add a - add LOW(ForestTreeLeftFrames) - ld l, a - ld a, 0 - adc HIGH(ForestTreeLeftFrames) - ld h, a - push bc - ld bc, ForestTreeRightFrames - ForestTreeLeftFrames - add hl, bc - pop bc - -.asm_fc545 - ld sp, hl - ld hl, vTiles2 tile $0f - jp WriteTile -; fc54c - - -GetForestTreeFrame: ; fc54c -; Return 0 if a is even, or 2 if odd. - and a - jr z, .even - cp 1 - jr z, .odd - cp 2 - jr z, .even - cp 3 - jr z, .odd - cp 4 - jr z, .even - cp 5 - jr z, .odd - cp 6 - jr z, .even -.odd - ld a, 2 - scf - ret -.even - xor a - ret -; fc56d - - -AnimateFlowerTile: ; fc56d -; No parameters. - -; Save sp in bc (see WriteTile). - ld hl, sp+0 - ld b, h - ld c, l - -; Alternate tile graphic every other frame - ld a, [wTileAnimationTimer] - and %10 - ld e, a - -; CGB has different color mappings for flowers. - ld a, [hCGB] - and 1 - - add e - swap a - ld e, a - ld d, 0 - ld hl, FlowerTileFrames - add hl, de - ld sp, hl - - ld hl, vTiles2 tile $03 - - jp WriteTile -; fc58c - -FlowerTileFrames: ; fc58c - INCBIN "gfx/tilesets/flower/dmg_1.2bpp" - INCBIN "gfx/tilesets/flower/cgb_1.2bpp" - INCBIN "gfx/tilesets/flower/dmg_2.2bpp" - INCBIN "gfx/tilesets/flower/cgb_2.2bpp" -; fc5cc - - -LavaBubbleAnim1: ; fc5cc -; Splash in the bottom-right corner of the fountain. - ld hl, sp+0 - ld b, h - ld c, l - ld a, [wTileAnimationTimer] - and %110 - srl a - inc a - inc a - and %011 - swap a - ld e, a - ld d, 0 - ld hl, LavaBubbleFrames - add hl, de - ld sp, hl - ld hl, vTiles2 tile $5b - jp WriteTile -; fc5eb - - -LavaBubbleAnim2: ; fc5eb -; Splash in the top-left corner of the fountain. - ld hl, sp+0 - ld b, h - ld c, l - ld a, [wTileAnimationTimer] - and %110 - add a - add a - add a - ld e, a - ld d, 0 - ld hl, LavaBubbleFrames - add hl, de - ld sp, hl - ld hl, vTiles2 tile $38 - jp WriteTile -; fc605 - - -LavaBubbleFrames: ; fc605 - INCBIN "gfx/tilesets/lava/1.2bpp" - INCBIN "gfx/tilesets/lava/2.2bpp" - INCBIN "gfx/tilesets/lava/3.2bpp" - INCBIN "gfx/tilesets/lava/4.2bpp" -; fc645 - - -AnimateTowerPillarTile: ; fc645 -; Read from struct at de: -; Destination (VRAM) -; Address of the first tile in the frame array - - ld hl, sp+0 - ld b, h - ld c, l - - ld a, [wTileAnimationTimer] - and %111 - -; Get frame index a - ld hl, .frames - add l - ld l, a - ld a, 0 - adc h - ld h, a - ld a, [hl] - -; Destination - ld l, e - ld h, d - ld e, [hl] - inc hl - ld d, [hl] - inc hl - -; Add the frame index to the starting address - add [hl] - inc hl - ld h, [hl] - ld l, a - ld a, 0 - adc h - ld h, a - - ld sp, hl - ld l, e - ld h, d - jr WriteTile - -.frames - db $00, $10, $20, $30, $40, $30, $20, $10 -; fc673 - - -StandingTileFrame: ; fc673 - ld hl, wTileAnimationTimer - inc [hl] - ret -; fc678 - - -AnimateWhirlpoolTile: ; fc678 -; Update whirlpool tile using struct at de. - -; Struct: -; VRAM address -; Address of the first tile - -; Only does one of 4 tiles at a time. - -; Save sp in bc (see WriteTile). - ld hl, sp+0 - ld b, h - ld c, l - -; de = VRAM address - ld l, e - ld h, d - ld e, [hl] - inc hl - ld d, [hl] - inc hl -; Tile address is now at hl. - -; Get the tile for this frame. - ld a, [wTileAnimationTimer] - and %11 ; 4 frames x2 - swap a ; * 16 bytes per tile - - add [hl] - inc hl - ld h, [hl] - ld l, a - ld a, 0 - adc h - ld h, a - -; The stack now points to the desired frame. - ld sp, hl - - ld l, e - ld h, d - - jr WriteTile -; fc696 - - -WriteTileFromBuffer: ; fc696 -; Write tiledata at wTileAnimBuffer to de. -; wTileAnimBuffer is loaded to sp for WriteTile. - - ld hl, sp+0 - ld b, h - ld c, l - - ld hl, wTileAnimBuffer - ld sp, hl - - ld h, d - ld l, e - jr WriteTile -; fc6a2 - - -WriteTileToBuffer: ; fc6a2 -; Write tiledata de to wTileAnimBuffer. -; de is loaded to sp for WriteTile. - - ld hl, sp+0 - ld b, h - ld c, l - - ld h, d - ld l, e - ld sp, hl - - ld hl, wTileAnimBuffer - - ; fallthrough - -WriteTile: ; fc6ac -; Write one 8x8 tile ($10 bytes) from sp to hl. - -; Warning: sp is saved in bc so we can abuse pop. -; sp is restored to address bc. Save sp in bc before calling. - - pop de - ld [hl], e - inc hl - ld [hl], d - -rept 7 - pop de - inc hl - ld [hl], e - inc hl - ld [hl], d -endr - -; restore sp - ld h, b - ld l, c - ld sp, hl - ret -; fc6d7 - - -TileAnimationPalette: ; fc6d7 -; Transition between color values 0-2 for color 0 in palette 3. - -; No palette changes on DMG. - ld a, [hCGB] - and a - ret z - -; We don't want to mess with non-standard palettes. - ld a, [rBGP] ; BGP - cp %11100100 - ret nz - -; Only update on even frames. - ld a, [wTileAnimationTimer] - ld l, a - and 1 ; odd - ret nz - -; Ready for BGPD input... - - ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_WATER - ld [rBGPI], a - - ld a, [rSVBK] - push af - ld a, BANK(wBGPals1) - ld [rSVBK], a - -; Update color 0 in order 0 1 2 1 - ld a, l - and %110 ; frames 0 2 4 6 - jr z, .color0 - cp %100 ; frame 4 - jr z, .color2 - -.color1 - ld hl, wBGPals1 palette PAL_BG_WATER color 1 - ld a, [hli] - ld [rBGPD], a - ld a, [hli] - ld [rBGPD], a - jr .end - -.color0 - ld hl, wBGPals1 palette PAL_BG_WATER color 0 - ld a, [hli] - ld [rBGPD], a - ld a, [hli] - ld [rBGPD], a - jr .end - -.color2 - ld hl, wBGPals1 palette PAL_BG_WATER color 2 - ld a, [hli] - ld [rBGPD], a - ld a, [hli] - ld [rBGPD], a - -.end - pop af - ld [rSVBK], a - ret -; fc71e - - -FlickeringCaveEntrancePalette: ; fc71e -; No palette changes on DMG. - ld a, [hCGB] - and a - ret z -; We don't want to mess with non-standard palettes. - ld a, [rBGP] - cp %11100100 - ret nz -; We only want to be here if we're in a dark cave. - ld a, [wTimeOfDayPalset] - cp %11111111 ; 3,3,3,3 - ret nz - - ld a, [rSVBK] - push af - ld a, BANK(wBGPals1) - ld [rSVBK], a -; Ready for BGPD input... - ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_YELLOW - ld [rBGPI], a - ld a, [hVBlankCounter] - and %10 - jr nz, .bit1set - ld hl, wBGPals1 palette PAL_BG_YELLOW - jr .okay - -.bit1set - ld hl, wBGPals1 palette PAL_BG_YELLOW color 1 - -.okay - ld a, [hli] - ld [rBGPD], a - ld a, [hli] - ld [rBGPD], a - - pop af - ld [rSVBK], a - ret -; fc750 - - -TowerPillarTilePointer1: dw vTiles2 tile $2d, TowerPillarTile1 -TowerPillarTilePointer2: dw vTiles2 tile $2f, TowerPillarTile2 -TowerPillarTilePointer3: dw vTiles2 tile $3d, TowerPillarTile3 -TowerPillarTilePointer4: dw vTiles2 tile $3f, TowerPillarTile4 -TowerPillarTilePointer5: dw vTiles2 tile $3c, TowerPillarTile5 -TowerPillarTilePointer6: dw vTiles2 tile $2c, TowerPillarTile6 -TowerPillarTilePointer7: dw vTiles2 tile $4d, TowerPillarTile7 -TowerPillarTilePointer8: dw vTiles2 tile $4f, TowerPillarTile8 -TowerPillarTilePointer9: dw vTiles2 tile $5d, TowerPillarTile9 -TowerPillarTilePointer10: dw vTiles2 tile $5f, TowerPillarTile10 - -TowerPillarTile1: INCBIN "gfx/tilesets/tower-pillar/1.2bpp" -TowerPillarTile2: INCBIN "gfx/tilesets/tower-pillar/2.2bpp" -TowerPillarTile3: INCBIN "gfx/tilesets/tower-pillar/3.2bpp" -TowerPillarTile4: INCBIN "gfx/tilesets/tower-pillar/4.2bpp" -TowerPillarTile5: INCBIN "gfx/tilesets/tower-pillar/5.2bpp" -TowerPillarTile6: INCBIN "gfx/tilesets/tower-pillar/6.2bpp" -TowerPillarTile7: INCBIN "gfx/tilesets/tower-pillar/7.2bpp" -TowerPillarTile8: INCBIN "gfx/tilesets/tower-pillar/8.2bpp" -TowerPillarTile9: INCBIN "gfx/tilesets/tower-pillar/9.2bpp" -TowerPillarTile10: INCBIN "gfx/tilesets/tower-pillar/10.2bpp" -; fca98 - - -WhirlpoolFrames1: dw vTiles2 tile $32, WhirlpoolTiles1 -WhirlpoolFrames2: dw vTiles2 tile $33, WhirlpoolTiles2 -WhirlpoolFrames3: dw vTiles2 tile $42, WhirlpoolTiles3 -WhirlpoolFrames4: dw vTiles2 tile $43, WhirlpoolTiles4 -; fcaa8 - -WhirlpoolTiles1: INCBIN "gfx/tilesets/whirlpool/1.2bpp" -WhirlpoolTiles2: INCBIN "gfx/tilesets/whirlpool/2.2bpp" -WhirlpoolTiles3: INCBIN "gfx/tilesets/whirlpool/3.2bpp" -WhirlpoolTiles4: INCBIN "gfx/tilesets/whirlpool/4.2bpp" -; fcba8 diff --git a/engine/gfx/tileset_palettes.asm b/engine/gfx/tileset_palettes.asm deleted file mode 100644 index e2c39c0ab..000000000 --- a/engine/gfx/tileset_palettes.asm +++ /dev/null @@ -1,151 +0,0 @@ -LoadSpecialMapPalette: ; 494ac - ld a, [wMapTileset] - cp TILESET_POKECOM_CENTER - jr z, .pokecom_2f - cp TILESET_BATTLE_TOWER - jr z, .battle_tower - cp TILESET_ICE_PATH - jr z, .ice_path - cp TILESET_HOUSE - jr z, .house - cp TILESET_RADIO_TOWER - jr z, .radio_tower - cp TILESET_MANSION - jr z, .mansion_mobile - jr .do_nothing - -.pokecom_2f - call LoadPokeComPalette - scf - ret - -.battle_tower - call LoadBattleTowerPalette - scf - ret - -.ice_path - ld a, [wEnvironment] - and $7 - cp INDOOR ; Hall of Fame - jr z, .do_nothing - call LoadIcePathPalette - scf - ret - -.house - call LoadHousePalette - scf - ret - -.radio_tower - call LoadRadioTowerPalette - scf - ret - -.mansion_mobile - call LoadMansionPalette - scf - ret - -.do_nothing - and a - ret -; 494f2 - -LoadPokeComPalette: ; 494f2 - ld a, BANK(wBGPals1) - ld de, wBGPals1 - ld hl, PokeComPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 49501 - -PokeComPalette: ; 49501 -INCLUDE "gfx/tilesets/pokecom_center.pal" -; 49541 - -LoadBattleTowerPalette: ; 49541 - ld a, BANK(wBGPals1) - ld de, wBGPals1 - ld hl, BattleTowerPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 49550 - -BattleTowerPalette: ; 49550 -INCLUDE "gfx/tilesets/battle_tower.pal" -; 49590 - -LoadIcePathPalette: ; 49590 - ld a, BANK(wBGPals1) - ld de, wBGPals1 - ld hl, IcePathPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 4959f - -IcePathPalette: ; 4959f -INCLUDE "gfx/tilesets/ice_path.pal" -; 495df - -LoadHousePalette: ; 495df - ld a, BANK(wBGPals1) - ld de, wBGPals1 - ld hl, HousePalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 495ee - -HousePalette: ; 495ee -INCLUDE "gfx/tilesets/house.pal" -; 4962e - -LoadRadioTowerPalette: ; 4962e - ld a, BANK(wBGPals1) - ld de, wBGPals1 - ld hl, RadioTowerPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 4963d - -RadioTowerPalette: ; 4963d -INCLUDE "gfx/tilesets/radio_tower.pal" -; 4967d - -MansionPalette1: ; 4967d -INCLUDE "gfx/tilesets/mansion_1.pal" -; 496c5 - -LoadMansionPalette: ; 496c5 - ld a, BANK(wBGPals1) - ld de, wBGPals1 - ld hl, MansionPalette1 - ld bc, 8 palettes - call FarCopyWRAM - ld a, BANK(wBGPals1) - ld de, wBGPals1 palette PAL_BG_YELLOW - ld hl, MansionPalette2 - ld bc, 1 palettes - call FarCopyWRAM - ld a, BANK(wBGPals1) - ld de, wBGPals1 palette PAL_BG_WATER - ld hl, MansionPalette1 + 6 palettes - ld bc, 1 palettes - call FarCopyWRAM - ld a, BANK(wBGPals1) - ld de, wBGPals1 palette PAL_BG_ROOF - ld hl, MansionPalette1 + 8 palettes - ld bc, 1 palettes - call FarCopyWRAM - ret -; 496fe - -MansionPalette2: ; 496fe -INCLUDE "gfx/tilesets/mansion_2.pal" -; 49706 diff --git a/engine/gfx/timeofdaypals.asm b/engine/gfx/timeofdaypals.asm deleted file mode 100644 index b8d43d252..000000000 --- a/engine/gfx/timeofdaypals.asm +++ /dev/null @@ -1,415 +0,0 @@ -DummyPredef35: ; 8c000 -DummyPredef36: - ret - -UpdateTimeOfDayPal:: ; 8c001 - call UpdateTime - ld a, [wTimeOfDay] - ld [wCurTimeOfDay], a - call GetTimePalette - ld [wTimeOfDayPal], a - ret -; 8c011 - - -_TimeOfDayPals:: ; 8c011 -; return carry if pals are changed - -; forced pals? - ld hl, wTimeOfDayPalFlags - bit 7, [hl] - jr nz, .dontchange - -; do we need to bother updating? - ld a, [wTimeOfDay] - ld hl, wCurTimeOfDay - cp [hl] - jr z, .dontchange - -; if so, the time of day has changed - ld a, [wTimeOfDay] - ld [wCurTimeOfDay], a - -; get palette id - call GetTimePalette - -; same palette as before? - ld hl, wTimeOfDayPal - cp [hl] - jr z, .dontchange - -; update palette id - ld [wTimeOfDayPal], a - -; save bg palette 7 - ld hl, wBGPals1 palette PAL_BG_TEXT - -; save wram bank - ld a, [rSVBK] - ld b, a - - ld a, BANK(wBGPals1) - ld [rSVBK], a - -; push palette - ld c, NUM_PAL_COLORS -.push - ld d, [hl] - inc hl - ld e, [hl] - inc hl - push de - dec c - jr nz, .push - -; restore wram bank - ld a, b - ld [rSVBK], a - - -; update sgb pals - ld b, SCGB_MAPPALS - call GetSGBLayout - - -; restore bg palette 7 - ld hl, wOBPals1 - 1 ; last byte in wBGPals1 - -; save wram bank - ld a, [rSVBK] - ld d, a - - ld a, BANK(wOBPals1) - ld [rSVBK], a - -; pop palette - ld e, NUM_PAL_COLORS -.pop - pop bc - ld [hl], c - dec hl - ld [hl], b - dec hl - dec e - jr nz, .pop - -; restore wram bank - ld a, d - ld [rSVBK], a - -; update palettes - call _UpdateTimePals - call DelayFrame - -; successful change - scf - ret - -.dontchange -; no change occurred - and a - ret -; 8c070 - - -_UpdateTimePals:: ; 8c070 - ld c, $9 ; normal - call GetTimePalFade - call DmgToCgbTimePals - ret -; 8c079 - -FadeInPalettes:: ; 8c079 - ld c, $12 - call GetTimePalFade - ld b, $4 - call ConvertTimePalsDecHL - ret -; 8c084 - -FadeOutPalettes:: ; 8c084 - call FillWhiteBGColor - ld c, $9 - call GetTimePalFade - ld b, $4 - call ConvertTimePalsIncHL - ret -; 8c092 - -BattleTowerFade: ; 8c092 - call FillWhiteBGColor - ld c, $9 - call GetTimePalFade - ld b, $4 -.asm_8c09c - call DmgToCgbTimePals - inc hl - inc hl - inc hl - ld c, $7 - call DelayFrames - dec b - jr nz, .asm_8c09c - ret -; 8c0ab - -FadeInQuickly: ; 8c0ab - ld c, $0 - call GetTimePalFade - ld b, $4 - call ConvertTimePalsIncHL - ret -; 8c0b6 - -FadeBlackQuickly: ; 8c0b6 - ld c, $9 - call GetTimePalFade - ld b, $4 - call ConvertTimePalsDecHL - ret -; 8c0c1 - - -FillWhiteBGColor: ; 8c0c1 - ld a, [rSVBK] - push af - ld a, BANK(wBGPals1) - ld [rSVBK], a - - ld hl, wBGPals1 - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld hl, wBGPals1 + 1 palettes - ld c, 6 -.loop - ld a, e - ld [hli], a - ld a, d - ld [hli], a -rept 6 - inc hl -endr - dec c - jr nz, .loop - - pop af - ld [rSVBK], a - ret -; 8c0e5 - -ReplaceTimeOfDayPals: ; 8c0e5 - ld hl, .BrightnessLevels - ld a, [wMapTimeOfDay] - cp $4 ; Dark cave, needs Flash - jr z, .DarkCave - and $7 - add l - ld l, a - ld a, $0 - adc h - ld h, a - ld a, [hl] - ld [wTimeOfDayPalset], a - ret - -.DarkCave: - ld a, [wStatusFlags] - bit STATUSFLAGS_FLASH_F, a - jr nz, .UsedFlash - ld a, %11111111 ; 3, 3, 3, 3 - ld [wTimeOfDayPalset], a - ret - -.UsedFlash: - ld a, %10101010 ; 2, 2, 2, 2 - ld [wTimeOfDayPalset], a - ret -; 8c10f (23:410f) - -.BrightnessLevels: ; 8c10f - dc 3, 2, 1, 0 - dc 1, 1, 1, 1 - dc 2, 2, 2, 2 - dc 0, 0, 0, 0 - dc 3, 3, 3, 3 - dc 3, 2, 1, 0 - dc 3, 2, 1, 0 - dc 3, 2, 1, 0 -; 8c117 - -GetTimePalette: ; 8c117 - ld a, [wTimeOfDay] - ld e, a - ld d, 0 - ld hl, .TimePalettes - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 8c126 - -.TimePalettes: - dw .MorningPalette - dw .DayPalette - dw .NitePalette - dw .DarknessPalette - -.MorningPalette: - ld a, [wTimeOfDayPalset] - and %00000011 ; 0 - ret - -.DayPalette: - ld a, [wTimeOfDayPalset] - and %00001100 ; 1 - srl a - srl a - ret - -.NitePalette: - ld a, [wTimeOfDayPalset] - and %00110000 ; 2 - swap a - ret - -.DarknessPalette: - ld a, [wTimeOfDayPalset] - and %11000000 ; 3 - rlca - rlca - ret -; 8c14e - - -DmgToCgbTimePals: ; 8c14e - push hl - push de - ld a, [hli] - call DmgToCgbBGPals - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - call DmgToCgbObjPals - pop de - pop hl - ret -; 8c15e - -ConvertTimePalsIncHL: ; 8c15e -.loop - call DmgToCgbTimePals - inc hl - inc hl - inc hl - ld c, 2 - call DelayFrames - dec b - jr nz, .loop - ret -; 8c16d - -ConvertTimePalsDecHL: ; 8c16d -.loop - call DmgToCgbTimePals - dec hl - dec hl - dec hl - ld c, 2 - call DelayFrames - dec b - jr nz, .loop - ret -; 8c17c - - -GetTimePalFade: ; 8c17c -; check cgb - ld a, [hCGB] - and a - jr nz, .cgb - -; else: dmg - -; index - ld a, [wTimeOfDayPal] - and %11 - -; get fade table - push bc - ld c, a - ld b, $0 - ld hl, .dmgfades - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - pop bc - -; get place in fade table - ld b, $0 - add hl, bc - ret - -.cgb - ld hl, .cgbfade - ld b, $0 - add hl, bc - ret - -.dmgfades - dw .morn - dw .day - dw .nite - dw .darkness - -.morn - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11100100, %11100100 - db %11100100, %11010000, %11010000 - db %10010000, %10000000, %10000000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 - -.day - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11100100, %11100100 - db %11100100, %11010000, %11010000 - db %10010000, %10000000, %10000000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 - -.nite - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11100100, %11100100 - db %11101001, %11010000, %11010000 - db %10010000, %10000000, %10000000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 - -.darkness - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111111 - db %11111110, %11100100, %11111111 - db %11111101, %11010000, %11111111 - db %11111101, %10000000, %11111111 - db %00000000, %01000000, %00000000 - db %00000000, %00000000, %00000000 - -.cgbfade - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11111001, %11111001 - db %11100100, %11100100, %11100100 - db %10010000, %10010000, %10010000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 -; 8c20f diff --git a/engine/gfx/trade_animation.asm b/engine/gfx/trade_animation.asm deleted file mode 100755 index 04c31df80..000000000 --- a/engine/gfx/trade_animation.asm +++ /dev/null @@ -1,1646 +0,0 @@ -TRADEANIM_RIGHT_ARROW EQU $ed -TRADEANIM_LEFT_ARROW EQU $ee - -; TradeAnim_TubeAnimJumptable.Jumptable indexes - const_def - const TRADEANIMSTATE_0 ; 0 - const TRADEANIMSTATE_1 ; 1 - const TRADEANIMSTATE_2 ; 2 - const TRADEANIMSTATE_3 ; 3 -TRADEANIMJUMPTABLE_LENGTH EQU const_value - -TradeAnimation: ; 28f24 - xor a - ld [wcf66], a - ld hl, wPlayerTrademonSenderName - ld de, wOTTrademonSenderName - call LinkTradeAnim_LoadTradePlayerNames - ld hl, wPlayerTrademonSpecies - ld de, wOTTrademonSpecies - call LinkTradeAnim_LoadTradeMonSpecies - ld de, .script - jr RunTradeAnimScript - -.script - tradeanim_setup_givemon_scroll - tradeanim_show_givemon_data - tradeanim_do_givemon_scroll - tradeanim_wait_80 - tradeanim_wait_96 - tradeanim_poof - tradeanim_rocking_ball - tradeanim_enter_link_tube - tradeanim_wait_anim - tradeanim_bulge_through_tube - tradeanim_wait_anim - tradeanim_textbox_scroll - tradeanim_give_trademon_sfx - tradeanim_tube_to_ot - tradeanim_sent_to_ot_text - tradeanim_scroll_out_right - - tradeanim_ot_sends_text_1 - tradeanim_ot_bids_farewell - tradeanim_wait_40 - tradeanim_scroll_out_right - tradeanim_get_trademon_sfx - tradeanim_tube_to_player - tradeanim_enter_link_tube - tradeanim_drop_ball - tradeanim_exit_link_tube - tradeanim_wait_anim - tradeanim_show_getmon_data - tradeanim_poof - tradeanim_wait_anim - tradeanim_frontpic_scroll - tradeanim_animate_frontpic - tradeanim_wait_80_if_ot_egg - tradeanim_textbox_scroll - tradeanim_take_care_of_text - tradeanim_scroll_out_right - tradeanim_end - -TradeAnimationPlayer2: ; 28f63 - xor a - ld [wcf66], a - ld hl, wOTTrademonSenderName - ld de, wPlayerTrademonSenderName - call LinkTradeAnim_LoadTradePlayerNames - ld hl, wOTTrademonSpecies - ld de, wPlayerTrademonSpecies - call LinkTradeAnim_LoadTradeMonSpecies - ld de, .script - jr RunTradeAnimScript - -.script - tradeanim_ot_sends_text_2 - tradeanim_ot_bids_farewell - tradeanim_wait_40 - tradeanim_scroll_out_right - tradeanim_get_trademon_sfx - tradeanim_tube_to_ot - tradeanim_enter_link_tube - tradeanim_drop_ball - tradeanim_exit_link_tube - tradeanim_wait_anim - tradeanim_show_getmon_data - tradeanim_poof - tradeanim_wait_anim - tradeanim_frontpic_scroll - tradeanim_animate_frontpic - tradeanim_wait_180_if_ot_egg - tradeanim_textbox_scroll - tradeanim_take_care_of_text - tradeanim_scroll_out_right - - tradeanim_setup_givemon_scroll - tradeanim_show_givemon_data - tradeanim_do_givemon_scroll - tradeanim_wait_40 - tradeanim_poof - tradeanim_rocking_ball - tradeanim_enter_link_tube - tradeanim_wait_anim - tradeanim_bulge_through_tube - tradeanim_wait_anim - tradeanim_textbox_scroll - tradeanim_give_trademon_sfx - tradeanim_tube_to_player - tradeanim_sent_to_ot_text - tradeanim_scroll_out_right - tradeanim_end - -RunTradeAnimScript: ; 28fa1 - ld hl, wTradeAnimAddress - ld [hl], e - inc hl - ld [hl], d - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a - ld hl, wVramState - ld a, [hl] - push af - res 0, [hl] - ld hl, wOptions - ld a, [hl] - push af - set 4, [hl] - call .TradeAnimLayout - ld a, [wcf66] - and a - jr nz, .anim_loop - ld de, MUSIC_EVOLUTION - call PlayMusic2 -.anim_loop - call DoTradeAnimation - jr nc, .anim_loop - pop af - ld [wOptions], a - pop af - ld [wVramState], a - pop af - ld [hMapAnims], a - ret - -; 28fdb - -.TradeAnimLayout: ; 28fdb - xor a - ld [wJumptableIndex], a - call ClearBGPalettes - call ClearSprites - call ClearTileMap - call DisableLCD - call LoadFontsBattleExtra - callfar ClearSpriteAnims - ld a, [hCGB] - and a - jr z, .NotCGB - ld a, $1 - ld [rVBK], a - ld hl, vTiles0 - ld bc, sScratch - vTiles0 - xor a - call ByteFill - ld a, $0 - ld [rVBK], a - -.NotCGB: - hlbgcoord 0, 0 - ld bc, sScratch - vBGMap0 - ld a, " " - call ByteFill - ld hl, TradeGameBoyLZ - ld de, vTiles2 tile $31 - call Decompress - ld hl, TradeArrowGFX - ld de, vTiles0 tile TRADEANIM_RIGHT_ARROW - ld bc, 1 tiles - ld a, BANK(TradeArrowGFX) - call FarCopyBytes - ld hl, TradeArrowGFX + 1 tiles - ld de, vTiles0 tile TRADEANIM_LEFT_ARROW - ld bc, 1 tiles - ld a, BANK(TradeArrowGFX) - call FarCopyBytes - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - farcall GetTrademonFrontpic - call EnableLCD - call LoadTradeBallAndCableGFX - ld a, [wPlayerTrademonSpecies] - ld hl, wPlayerTrademonDVs - ld de, vTiles0 - call TradeAnim_GetFrontpic - ld a, [wOTTrademonSpecies] - ld hl, wOTTrademonDVs - ld de, vTiles0 tile $31 - call TradeAnim_GetFrontpic - ld a, [wPlayerTrademonSpecies] - ld de, wPlayerTrademonSpeciesName - call TradeAnim_GetNickname - ld a, [wOTTrademonSpecies] - ld de, wOTTrademonSpeciesName - call TradeAnim_GetNickname - call TradeAnim_NormalPals - ret - -; 29082 - -DoTradeAnimation: ; 29082 - ld a, [wJumptableIndex] - bit 7, a - jr nz, .finished - call .DoTradeAnimCommand - callfar PlaySpriteAnimations - ld hl, wcf65 - inc [hl] - call DelayFrame - and a - ret - -.finished - call LoadStandardFont - scf - ret - -; 290a0 - -.DoTradeAnimCommand: ; 290a0 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, .JumpTable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 290af - -.JumpTable: ; 290af -; entries correspond to macros/scripts/trade_anims.asm enumeration - dw TradeAnim_AdvanceScriptPointer ; 00 - dw TradeAnim_ShowGivemonData ; 01 - dw TradeAnim_ShowGetmonData ; 02 - dw TradeAnim_EnterLinkTube1 ; 03 - dw TradeAnim_EnterLinkTube2 ; 04 - dw TradeAnim_ExitLinkTube ; 05 - dw TradeAnim_TubeToOT1 ; 06 - dw TradeAnim_TubeToOT2 ; 07 - dw TradeAnim_TubeToOT3 ; 08 - dw TradeAnim_TubeToOT4 ; 09 - dw TradeAnim_TubeToOT5 ; 0a - dw TradeAnim_TubeToOT6 ; 0b - dw TradeAnim_TubeToOT7 ; 0c - dw TradeAnim_TubeToOT8 ; 0d - dw TradeAnim_TubeToPlayer1 ; 0e - dw TradeAnim_TubeToPlayer2 ; 0f - dw TradeAnim_TubeToPlayer3 ; 10 - dw TradeAnim_TubeToPlayer4 ; 11 - dw TradeAnim_TubeToPlayer5 ; 12 - dw TradeAnim_TubeToPlayer6 ; 13 - dw TradeAnim_TubeToPlayer7 ; 14 - dw TradeAnim_TubeToPlayer8 ; 15 - dw TradeAnim_SentToOTText ; 16 - dw TradeAnim_OTBidsFarewell ; 17 - dw TradeAnim_TakeCareOfText ; 18 - dw TradeAnim_OTSendsText1 ; 19 - dw TradeAnim_OTSendsText2 ; 1a - dw TradeAnim_SetupGivemonScroll ; 1b - dw TradeAnim_DoGivemonScroll ; 1c - dw TradeAnim_FrontpicScrollStart ; 1d - dw TradeAnim_TextboxScrollStart ; 1e - dw TradeAnim_ScrollOutRight ; 1f - dw TradeAnim_ScrollOutRight2 ; 20 - dw TraideAnim_Wait80 ; 21 - dw TraideAnim_Wait40 ; 22 - dw TradeAnim_RockingBall ; 23 - dw TradeAnim_DropBall ; 24 - dw TradeAnim_WaitAnim ; 25 - dw TradeAnim_WaitAnim2 ; 26 - dw TradeAnim_Poof ; 27 - dw TradeAnim_BulgeThroughTube ; 28 - dw TradeAnim_GiveTrademonSFX ; 29 - dw TradeAnim_GetTrademonSFX ; 2a - dw TradeAnim_End ; 2b - dw TradeAnim_AnimateFrontpic ; 2c - dw TraideAnim_Wait96 ; 2d - dw TraideAnim_Wait80IfOTEgg ; 2e - dw TraideAnim_Wait180IfOTEgg ; 2f -; 2910f - -TradeAnim_IncrementJumptableIndex: ; 2910f - ld hl, wJumptableIndex - inc [hl] - ret - -; 29114 - -TradeAnim_AdvanceScriptPointer: ; 29114 - ld hl, wTradeAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - ld a, [de] - ld [wJumptableIndex], a - inc de - ld [hl], d - dec hl - ld [hl], e - ret - -; 29123 - -TradeAnim_End: ; 29123 - ld hl, wJumptableIndex - set 7, [hl] - ret - -; 29129 - -TradeAnim_TubeToOT1: ; 29129 - ld a, TRADEANIM_RIGHT_ARROW - call TradeAnim_PlaceTrademonStatsOnTubeAnim - ld a, [wLinkTradeSendmonSpecies] - ld [wd265], a - xor a - depixel 5, 11, 4, 0 - ld b, $0 - jr TradeAnim_InitTubeAnim - -TradeAnim_TubeToPlayer1: ; 2913c - ld a, TRADEANIM_LEFT_ARROW - call TradeAnim_PlaceTrademonStatsOnTubeAnim - ld a, [wLinkTradeGetmonSpecies] - ld [wd265], a - ld a, TRADEANIMSTATE_2 - depixel 9, 18, 4, 4 - ld b, $4 -TradeAnim_InitTubeAnim: ; 2914e - push bc - push de - push bc - push de - - push af - call DisableLCD - callfar ClearSpriteAnims - hlbgcoord 20, 3 - ld bc, 12 - ld a, $60 - call ByteFill - pop af - - call TradeAnim_TubeAnimJumptable - - xor a - ld [hSCX], a - ld a, $7 - ld [hWX], a - ld a, $70 - ld [hWY], a - call EnableLCD - call LoadTradeBubbleGFX - - pop de - ld a, SPRITE_ANIM_INDEX_TRADEMON_ICON - call _InitSpriteAnimStruct - - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - pop bc - ld [hl], b - - pop de - ld a, SPRITE_ANIM_INDEX_TRADEMON_BUBBLE - call _InitSpriteAnimStruct - - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - pop bc - ld [hl], b - - call WaitBGMap - ld b, SCGB_TRADE_TUBE - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - ld a, %11010000 - call DmgToCgbObjPal0 - - call TradeAnim_IncrementJumptableIndex - ld a, 92 - ld [wFrameCounter], a - ret - -; 291af - -TradeAnim_TubeToOT2: ; 291af - call TradeAnim_FlashBGPals - ld a, [hSCX] - add $2 - ld [hSCX], a - cp $50 - ret nz - ld a, TRADEANIMSTATE_1 - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 291c4 - -TradeAnim_TubeToOT3: ; 291c4 - call TradeAnim_FlashBGPals - ld a, [hSCX] - add $2 - ld [hSCX], a - cp $a0 - ret nz - ld a, TRADEANIMSTATE_2 - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 291d9 - -TradeAnim_TubeToOT4: ; 291d9 - call TradeAnim_FlashBGPals - ld a, [hSCX] - add $2 - ld [hSCX], a - and a - ret nz - call TradeAnim_IncrementJumptableIndex - ret - -; 291e8 - -TradeAnim_TubeToPlayer3: ; 291e8 - call TradeAnim_FlashBGPals - ld a, [hSCX] - sub $2 - ld [hSCX], a - cp $b0 - ret nz - ld a, TRADEANIMSTATE_1 - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 291fd - -TradeAnim_TubeToPlayer4: ; 291fd - call TradeAnim_FlashBGPals - ld a, [hSCX] - sub $2 - ld [hSCX], a - cp $60 - ret nz - xor a ; TRADEANIMSTATE_0 - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 29211 - -TradeAnim_TubeToPlayer5: ; 29211 - call TradeAnim_FlashBGPals - ld a, [hSCX] - sub $2 - ld [hSCX], a - and a - ret nz - call TradeAnim_IncrementJumptableIndex - ret - -; 29220 - -TradeAnim_TubeToOT6: -TradeAnim_TubeToPlayer6: ; 29220 - ld a, 128 - ld [wFrameCounter], a - call TradeAnim_IncrementJumptableIndex - ret - -; 29229 - -TradeAnim_TubeToOT8: -TradeAnim_TubeToPlayer8: ; 29229 - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - callfar ClearSpriteAnims - hlbgcoord 0, 0 - ld bc, sScratch - vBGMap0 - ld a, " " - call ByteFill - xor a - ld [hSCX], a - ld a, $90 - ld [hWY], a - call EnableLCD - call LoadTradeBallAndCableGFX - call WaitBGMap - call TradeAnim_NormalPals - call TradeAnim_AdvanceScriptPointer - ret - -; 2925d - -TradeAnim_TubeToOT5: -TradeAnim_TubeToOT7: -TradeAnim_TubeToPlayer2: -TradeAnim_TubeToPlayer7: ; 2925d - call TradeAnim_FlashBGPals - ld hl, wFrameCounter - ld a, [hl] - and a - jr z, .done - dec [hl] - ret - -.done - call TradeAnim_IncrementJumptableIndex - ret - -; 2926d - -TradeAnim_GiveTrademonSFX: ; 2926d - call TradeAnim_AdvanceScriptPointer - ld de, SFX_GIVE_TRADEMON - call PlaySFX - ret - -; 29277 - -TradeAnim_GetTrademonSFX: ; 29277 - call TradeAnim_AdvanceScriptPointer - ld de, SFX_GET_TRADEMON - call PlaySFX - ret - -; 29281 - -TradeAnim_TubeAnimJumptable: ; 29281 - maskbits TRADEANIMJUMPTABLE_LENGTH - ld e, a - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 2928f - -.Jumptable: ; 2928f -; entries correspond to TRADEANIMSTATE_* constants - dw .Zero - dw .One - dw .Two - dw .Three -; 29297 - -.Zero: ; 29297 -.Three: ; 29297 - call TradeAnim_BlankTileMap - hlcoord 9, 3 - ld [hl], $5b - inc hl - ld bc, 10 - ld a, $60 - call ByteFill - hlcoord 3, 2 - call TradeAnim_CopyTradeGameBoyTilemap - ret - -; 292af - -.One: ; 292af - call TradeAnim_BlankTileMap - hlcoord 0, 3 - ld bc, SCREEN_WIDTH - ld a, $60 - call ByteFill - ret - -; 292be - -.Two: ; 292be - call TradeAnim_BlankTileMap - hlcoord 0, 3 - ld bc, $11 - ld a, $60 - call ByteFill - hlcoord 17, 3 - ld a, $5d - ld [hl], a - - ld a, $61 - ld de, SCREEN_WIDTH - ld c, $3 -.loop - add hl, de - ld [hl], a - dec c - jr nz, .loop - - add hl, de - ld a, $5f - ld [hld], a - ld a, $5b - ld [hl], a - hlcoord 10, 6 - call TradeAnim_CopyTradeGameBoyTilemap - ret - -; 292ec - -TradeAnim_CopyTradeGameBoyTilemap: ; 292ec - ld de, TradeGameBoyTilemap - lb bc, 8, 6 - call TradeAnim_CopyBoxFromDEtoHL - ret - -; 292f6 - -TradeAnim_PlaceTrademonStatsOnTubeAnim: ; 292f6 - push af - call ClearBGPalettes - call WaitTop - ld a, HIGH(vBGMap1) - ld [hBGMapAddress + 1], a - call ClearTileMap - hlcoord 0, 0 - ld bc, SCREEN_WIDTH - ld a, "─" - call ByteFill - hlcoord 0, 1 - ld de, wLinkPlayer1Name - call PlaceString - ld hl, wLinkPlayer2Name - ld de, 0 -.find_name_end_loop - ld a, [hli] - cp "@" - jr z, .done - dec de - jr .find_name_end_loop - -.done - hlcoord 0, 4 - add hl, de - ld de, wLinkPlayer2Name - call PlaceString - hlcoord 7, 2 - ld bc, 6 - pop af - call ByteFill - call WaitBGMap - call WaitTop - ld a, HIGH(vBGMap0) - ld [hBGMapAddress + 1], a - call ClearTileMap - ret - -; 29348 - -TradeAnim_EnterLinkTube1: ; 29348 - call ClearTileMap - call WaitTop - ld a, $a0 - ld [hSCX], a - call DelayFrame - hlcoord 8, 2 - ld de, TradeLinkTubeTilemap - lb bc, 3, 12 - call TradeAnim_CopyBoxFromDEtoHL - call WaitBGMap - ld b, SCGB_TRADE_TUBE - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0 - call DmgToCgbObjPals - ld de, SFX_POTION - call PlaySFX - call TradeAnim_IncrementJumptableIndex - ret - -; 2937e - -TradeAnim_EnterLinkTube2: ; 2937e - ld a, [hSCX] - and a - jr z, .done - add $4 - ld [hSCX], a - ret - -.done - ld c, 80 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 29391 - -TradeAnim_ExitLinkTube: ; 29391 - ld a, [hSCX] - cp $a0 - jr z, .done - sub $4 - ld [hSCX], a - ret - -.done - call ClearTileMap - xor a - ld [hSCX], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293a6 - -TradeAnim_SetupGivemonScroll: ; 293a6 - ld a, $8f - ld [hWX], a - ld a, $88 - ld [hSCX], a - ld a, $50 - ld [hWY], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293b6 - -TradeAnim_DoGivemonScroll: ; 293b6 - ld a, [hWX] - cp $7 - jr z, .done - sub $4 - ld [hWX], a - ld a, [hSCX] - sub $4 - ld [hSCX], a - ret - -.done - ld a, $7 - ld [hWX], a - xor a - ld [hSCX], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293d2 - -TradeAnim_FrontpicScrollStart: ; 293d2 - ld a, $7 - ld [hWX], a - ld a, $50 - ld [hWY], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293de - -TradeAnim_TextboxScrollStart: ; 293de - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293ea - -TradeAnim_ScrollOutRight: ; 293ea - call WaitTop - ld a, HIGH(vBGMap1) - ld [hBGMapAddress + 1], a - call WaitBGMap - ld a, $7 - ld [hWX], a - xor a - ld [hWY], a - call DelayFrame - call WaitTop - ld a, HIGH(vBGMap0) - ld [hBGMapAddress + 1], a - call ClearTileMap - call TradeAnim_IncrementJumptableIndex - ret - -; 2940c - -TradeAnim_ScrollOutRight2: ; 2940c - ld a, [hWX] - cp $a1 - jr nc, .done - add $4 - ld [hWX], a - ret - -.done - ld a, HIGH(vBGMap1) - ld [hBGMapAddress + 1], a - call WaitBGMap - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - ld a, HIGH(vBGMap0) - ld [hBGMapAddress + 1], a - call TradeAnim_AdvanceScriptPointer - ret - -; 2942e - -TradeAnim_ShowGivemonData: ; 2942e - call ShowPlayerTrademonStats - ld a, [wPlayerTrademonSpecies] - ld [wCurPartySpecies], a - ld a, [wPlayerTrademonDVs] - ld [wTempMonDVs], a - ld a, [wPlayerTrademonDVs + 1] - ld [wTempMonDVs + 1], a - ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - call TradeAnim_ShowGivemonFrontpic - - ld a, [wPlayerTrademonSpecies] - call GetCryIndex - jr c, .skip_cry - ld e, c - ld d, b - call PlayCry -.skip_cry - - call TradeAnim_AdvanceScriptPointer - ret - -; 29461 - -TradeAnim_ShowGetmonData: ; 29461 - call ShowOTTrademonStats - ld a, [wOTTrademonSpecies] - ld [wCurPartySpecies], a - ld a, [wOTTrademonDVs] - ld [wTempMonDVs], a - ld a, [wOTTrademonDVs + 1] - ld [wTempMonDVs + 1], a - ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - call TradeAnim_ShowGetmonFrontpic - call TradeAnim_AdvanceScriptPointer - ret - -; 29487 - -TradeAnim_AnimateFrontpic: ; 29487 - farcall AnimateTrademonFrontpic - call TradeAnim_AdvanceScriptPointer - ret - -; 29491 - -TradeAnim_GetFrontpic: ; 29491 - push de - push af - predef GetUnownLetter - pop af - ld [wCurPartySpecies], a - ld [wCurSpecies], a - call GetBaseData - pop de - predef GetMonFrontpic - ret - -; 294a9 - -TradeAnim_GetNickname: ; 294a9 - push de - ld [wd265], a - call GetPokemonName - ld hl, wStringBuffer1 - pop de - ld bc, NAME_LENGTH - call CopyBytes - ret - -; 294bb - -TradeAnim_ShowGivemonFrontpic: ; 294bb - ld de, vTiles0 - jr TradeAnim_ShowFrontpic - -TradeAnim_ShowGetmonFrontpic: ; 294c0 - ld de, vTiles0 tile $31 -TradeAnim_ShowFrontpic: ; 294c3 - call DelayFrame - ld hl, vTiles2 - lb bc, 10, $31 - call Request2bpp - call WaitTop - call TradeAnim_BlankTileMap - hlcoord 7, 2 - xor a - ld [hGraphicStartTile], a - lb bc, 7, 7 - predef PlaceGraphic - call WaitBGMap - ret - -; 294e7 - -TraideAnim_Wait80: ; 294e7 - ld c, 80 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 294f0 - -TraideAnim_Wait40: ; 294f0 - ld c, 40 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 294f9 - -TraideAnim_Wait96: ; 294f9 - ld c, 96 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 29502 - -TraideAnim_Wait80IfOTEgg: ; 29502 - call IsOTTrademonEgg - ret nz - ld c, 80 - call DelayFrames - ret - -; 2950c - -TraideAnim_Wait180IfOTEgg: ; 2950c - call IsOTTrademonEgg - ret nz - ld c, 180 - call DelayFrames - ret - -; 29516 - -IsOTTrademonEgg: ; 29516 - call TradeAnim_AdvanceScriptPointer - ld a, [wOTTrademonSpecies] - cp EGG - ret - -; 2951f -ShowPlayerTrademonStats: ; 2951f - ld de, wPlayerTrademonSpecies - ld a, [de] - cp EGG - jr z, TrademonStats_Egg - call TrademonStats_MonTemplate - ld de, wPlayerTrademonSpecies - call TrademonStats_PrintSpeciesNumber - ld de, wPlayerTrademonSpeciesName - call TrademonStats_PrintSpeciesName - ld a, [wPlayerTrademonCaughtData] - ld de, wPlayerTrademonOTName - call TrademonStats_PrintOTName - ld de, wPlayerTrademonID - call TrademonStats_PrintTrademonID - call TrademonStats_WaitBGMap - ret - -; 29549 - -ShowOTTrademonStats: ; 29549 - ld de, wOTTrademonSpecies - ld a, [de] - cp EGG - jr z, TrademonStats_Egg - call TrademonStats_MonTemplate - ld de, wOTTrademonSpecies - call TrademonStats_PrintSpeciesNumber - ld de, wOTTrademonSpeciesName - call TrademonStats_PrintSpeciesName - ld a, [wOTTrademonCaughtData] - ld de, wOTTrademonOTName - call TrademonStats_PrintOTName - ld de, wOTTrademonID - call TrademonStats_PrintTrademonID - call TrademonStats_WaitBGMap - ret - -; 29573 - -TrademonStats_MonTemplate: ; 29573 - call WaitTop - call TradeAnim_BlankTileMap - ld a, HIGH(vBGMap1) - ld [hBGMapAddress + 1], a - hlcoord 3, 0 - ld b, $6 - ld c, $d - call TextBox - hlcoord 4, 0 - ld de, .OTMonData - call PlaceString - ret - -; 29591 - -.OTMonData: ; 29591 - db "─── №." - next "" - next "OT/" - next "<ID>№.@" -; 295a1 - -TrademonStats_Egg: ; 295a1 - call WaitTop - call TradeAnim_BlankTileMap - ld a, HIGH(vBGMap1) - ld [hBGMapAddress + 1], a - hlcoord 3, 0 - ld b, 6 - ld c, 13 - call TextBox - hlcoord 4, 2 - ld de, .EggData - call PlaceString - call TrademonStats_WaitBGMap - ret - -; 295c2 - -.EggData: ; 295c2 - db "EGG" - next "OT/?????" - next "<ID>№.?????@" -; 295d8 - -TrademonStats_WaitBGMap: ; 295d8 - call WaitBGMap - call WaitTop - ld a, HIGH(vBGMap0) - ld [hBGMapAddress + 1], a - ret - -; 295e3 - -TrademonStats_PrintSpeciesNumber: ; 295e3 - hlcoord 10, 0 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - call PrintNum - ld [hl], " " - ret - -; 295ef - -TrademonStats_PrintSpeciesName: ; 295ef - hlcoord 4, 2 - call PlaceString - ret - -; 295f6 - -TrademonStats_PrintOTName: ; 295f6 - cp 3 - jr c, .caught_gender_okay - xor a -.caught_gender_okay - push af - hlcoord 7, 4 - call PlaceString - inc bc - pop af - ld hl, .Gender - ld d, 0 - ld e, a - add hl, de - ld a, [hl] - ld [bc], a - ret - -; 2960e - -.Gender: ; 2960e - db " ", "♂", "♀" -; 29611 - -TrademonStats_PrintTrademonID: ; 29611 - hlcoord 7, 6 - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - call PrintNum - ret - -; 2961b - -TradeAnim_RockingBall: ; 2961b - depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL - call _InitSpriteAnimStruct - call TradeAnim_AdvanceScriptPointer - ld a, 32 - ld [wFrameCounter], a - ret - -; 2962c - -TradeAnim_DropBall: ; 2962c - depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL - call _InitSpriteAnimStruct - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - ld [hl], $1 - ld hl, SPRITEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], $dc - call TradeAnim_AdvanceScriptPointer - ld a, 56 - ld [wFrameCounter], a - ret - -; 29649 - -TradeAnim_Poof: ; 29649 - depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_TRADE_POOF - call _InitSpriteAnimStruct - call TradeAnim_AdvanceScriptPointer - ld a, 16 - ld [wFrameCounter], a - ld de, SFX_BALL_POOF - call PlaySFX - ret - -; 29660 - -TradeAnim_BulgeThroughTube: ; 29660 - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbObjPal0 - depixel 5, 11 - ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE - call _InitSpriteAnimStruct - call TradeAnim_AdvanceScriptPointer - ld a, 64 - ld [wFrameCounter], a - ret - -; 29676 - -TradeAnim_AnimateTrademonInTube: ; 29676 (a:5676) - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 29686 - -.Jumptable: ; 29686 (a:5686) - dw .InitTimer - dw .WaitTimer1 - dw .MoveRight - dw .MoveDown - dw .MoveUp - dw .MoveLeft - dw .WaitTimer2 -; 2969a - -.JumptableNext: ; 29694 (a:5694) - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - inc [hl] - ret - -.InitTimer: ; 2969a (a:569a) - call .JumptableNext - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld [hl], $80 - ret - -.WaitTimer1: ; 296a4 (a:56a4) - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld a, [hl] - dec [hl] - and a - ret nz - call .JumptableNext - -.MoveRight: ; 296af (a:56af) - ld hl, SPRITEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $94 - jr nc, .done_move_right - inc [hl] - ret - -.done_move_right - call .JumptableNext - -.MoveDown: ; 296bd (a:56bd) - ld hl, SPRITEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $4c - jr nc, .done_move_down - inc [hl] - ret - -.done_move_down - ld hl, SPRITEANIMSTRUCT_INDEX - add hl, bc - ld [hl], $0 - ret - -.MoveUp: ; 296cf (a:56cf) - ld hl, SPRITEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $2c - jr z, .done_move_up - dec [hl] - ret - -.done_move_up - call .JumptableNext - -.MoveLeft: ; 296dd (a:56dd) - ld hl, SPRITEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $58 - jr z, .done_move_left - dec [hl] - ret - -.done_move_left - call .JumptableNext - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld [hl], $80 - ret - -.WaitTimer2: ; 296f2 (a:56f2) - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld a, [hl] - dec [hl] - and a - ret nz - ld hl, SPRITEANIMSTRUCT_INDEX - add hl, bc - ld [hl], $0 - ret - -; 29701 (a:5701) - -TradeAnim_SentToOTText: ; 29701 - ld a, [wLinkMode] - cp LINK_TIMECAPSULE - jr z, .time_capsule - ld hl, .Text_MonName - call PrintText - ld c, 189 - call DelayFrames - ld hl, .Text_WasSentTo - call PrintText - call TradeAnim_Wait80Frames - ld c, 128 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -.time_capsule - ld hl, .Text_WasSentTo - call PrintText - call TradeAnim_Wait80Frames - call TradeAnim_AdvanceScriptPointer - ret - -; 29732 - -.Text_WasSentTo: ; 0x29732 - ; was sent to @ . - text_jump UnknownText_0x1bc6e9 - db "@" -; 0x29737 - -.Text_MonName: ; 0x29737 - ; - text_jump UnknownText_0x1bc701 - db "@" -; 0x2973c - -TradeAnim_OTBidsFarewell: ; 2973c - ld hl, .Text_BidsFarewellToMon - call PrintText - call TradeAnim_Wait80Frames - ld hl, .Text_MonName - call PrintText - call TradeAnim_Wait80Frames - call TradeAnim_AdvanceScriptPointer - ret - -; 29752 - -.Text_BidsFarewellToMon: ; 0x29752 - ; bids farewell to - text_jump UnknownText_0x1bc703 - db "@" -; 0x29757 - -.Text_MonName: ; 0x29757 - ; . - text_jump UnknownText_0x1bc719 - db "@" -; 0x2975c - -TradeAnim_TakeCareOfText: ; 2975c - call WaitTop - hlcoord 0, 10 - ld bc, 8 * SCREEN_WIDTH - ld a, " " - call ByteFill - call WaitBGMap - ld hl, .Text_TakeGoodCareOfMon - call PrintText - call TradeAnim_Wait80Frames - call TradeAnim_AdvanceScriptPointer - ret - -; 2977a - -.Text_TakeGoodCareOfMon: ; 0x2977a - ; Take good care of @ . - text_jump UnknownText_0x1bc71f - db "@" -; 0x2977f - -TradeAnim_OTSendsText1: ; 2977f - ld hl, .Text_ForYourMon - call PrintText - call TradeAnim_Wait80Frames - ld hl, .Text_OTSends - call PrintText - call TradeAnim_Wait80Frames - ld c, 14 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 2979a - -.Text_ForYourMon: ; 0x2979a - ; For @ 's @ , - text_jump UnknownText_0x1bc739 - db "@" -; 0x2979f - -.Text_OTSends: ; 0x2979f - ; sends @ . - text_jump UnknownText_0x1bc74c - db "@" -; 0x297a4 - -TradeAnim_OTSendsText2: ; 297a4 - ld hl, .Text_WillTrade - call PrintText - call TradeAnim_Wait80Frames - ld hl, .Text_ForYourMon - call PrintText - call TradeAnim_Wait80Frames - ld c, 14 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 297bf - -.Text_WillTrade: ; 0x297bf - ; will trade @ @ - text_jump UnknownText_0x1bc75e - db "@" -; 0x297c4 - -.Text_ForYourMon: ; 0x297c4 - ; for @ 's @ . - text_jump UnknownText_0x1bc774 - db "@" -; 0x297c9 - -TradeAnim_Wait80Frames: ; 297c9 - ld c, 80 - call DelayFrames - ret - -; 297cf - -TradeAnim_BlankTileMap: ; 297cf - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - ret - -; 297db - -TradeAnim_CopyBoxFromDEtoHL: ; 297db -.row - push bc - push hl -.col - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .col - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .row - ret - -; 297ed - -TradeAnim_NormalPals: ; 297ed - ld a, [hSGB] - and a - ld a, %11100100 ; 3,2,1,0 - jr z, .not_sgb - ld a, $f0 - -.not_sgb - call DmgToCgbObjPal0 - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - ret - -; 297ff - -LinkTradeAnim_LoadTradePlayerNames: ; 297ff - push de - ld de, wLinkPlayer1Name - ld bc, NAME_LENGTH - call CopyBytes - pop hl - ld de, wLinkPlayer2Name - ld bc, NAME_LENGTH - call CopyBytes - ret - -; 29814 - -LinkTradeAnim_LoadTradeMonSpecies: ; 29814 - ld a, [hl] - ld [wLinkTradeSendmonSpecies], a - ld a, [de] - ld [wLinkTradeGetmonSpecies], a - ret - -; 2981d - -TradeAnim_FlashBGPals: ; 2981d - ld a, [wcf65] - and $7 - ret nz - ld a, [rBGP] - xor %00111100 - call DmgToCgbBGPals - ret - -; 2982b - -LoadTradeBallAndCableGFX: ; 2982b - call DelayFrame - ld de, TradeBallGFX - ld hl, vTiles0 tile $62 - lb bc, BANK(TradeBallGFX), 6 - call Request2bpp - ld de, TradePoofGFX - ld hl, vTiles0 tile $68 - lb bc, BANK(TradePoofGFX), 12 - call Request2bpp - ld de, TradeCableGFX - ld hl, vTiles0 tile $74 - lb bc, BANK(TradeCableGFX), 4 - call Request2bpp - xor a - ld hl, wSpriteAnimDict - ld [hli], a - ld [hl], $62 - ret - -; 2985a - -LoadTradeBubbleGFX: ; 2985a - call DelayFrame - ld e, $3 - callfar LoadMenuMonIcon - ld de, TradeBubbleGFX - ld hl, vTiles0 tile $72 - lb bc, BANK(TradeBubbleGFX), 4 - call Request2bpp - xor a - ld hl, wSpriteAnimDict - ld [hli], a - ld [hl], $62 - ret - -; 29879 - -TradeAnim_WaitAnim: ; 29879 - ld hl, wFrameCounter - ld a, [hl] - and a - jr z, .done - dec [hl] - ret - -.done - call TradeAnim_AdvanceScriptPointer - ret - -; 29886 - -TradeAnim_WaitAnim2: ; 29886 - ld hl, wFrameCounter - ld a, [hl] - and a - jr z, .done - dec [hl] - ret - -.done - call TradeAnim_AdvanceScriptPointer - ret - -; 29893 - - -Unreferenced_DebugTrade: ; 29893 -; This function is not referenced. -; It was meant for use in Japanese versions, so the -; constant used for copy length was changed by accident. - - ld hl, .DebugTradeData - - ld a, [hli] - ld [wPlayerTrademonSpecies], a - ld de, wPlayerTrademonSenderName - ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2 -.loop1 - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .loop1 - - ld a, [hli] - ld [wOTTrademonSpecies], a - ld de, wOTTrademonSenderName - ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2 -.loop2 - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .loop2 - ret - -; 298b5 - -debugtrade: MACRO -; species, ot name, ot id (?) - db \1, \2 - dw \3 -ENDM - -.DebugTradeData: ; 298b5 - debugtrade VENUSAUR, "ゲーフり@@", $0123 ; GAME FREAK - debugtrade CHARIZARD, "クりーチャ@", $0456 ; Creatures Inc. -; 298c7 - - -TradeGameBoyTilemap: ; 298c7 -; 6x8 - db $31, $32, $32, $32, $32, $33 - db $34, $35, $36, $36, $37, $38 - db $34, $39, $3a, $3a, $3b, $38 - db $3c, $3d, $3e, $3e, $3f, $40 - db $41, $42, $43, $43, $44, $45 - db $46, $47, $43, $48, $49, $4a - db $41, $43, $4b, $4c, $4d, $4e - db $4f, $50, $50, $50, $51, $52 -; 297f7 - -TradeLinkTubeTilemap: ; 297f7 -; 12x3 - db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53 - db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54 - db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43 -; 2991b - -TradeArrowGFX: INCBIN "gfx/trade/arrow.2bpp" -TradeCableGFX: INCBIN "gfx/trade/cable.2bpp" -TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp" -TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz" -TradeBallGFX: INCBIN "gfx/trade/ball.2bpp" -TradePoofGFX: INCBIN "gfx/trade/poof.2bpp" |