summaryrefslogtreecommitdiff
path: root/engine/gfx
diff options
context:
space:
mode:
Diffstat (limited to 'engine/gfx')
-rwxr-xr-xengine/gfx/crystal_layouts.asm2
-rwxr-xr-xengine/gfx/dma_transfer.asm626
-rwxr-xr-xengine/gfx/evolution_animation.asm368
-rw-r--r--engine/gfx/gbc_only.asm149
-rw-r--r--engine/gfx/loadpushoam.asm21
-rw-r--r--engine/gfx/map_palettes.asm86
-rw-r--r--engine/gfx/mapgroup_roofs.asm20
-rw-r--r--engine/gfx/tileset_anims.asm1060
-rw-r--r--engine/gfx/tileset_palettes.asm151
-rw-r--r--engine/gfx/timeofdaypals.asm415
-rwxr-xr-xengine/gfx/trade_animation.asm1646
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"