const_def const BGSQUARE_SIX const BGSQUARE_FOUR const BGSQUARE_TWO const BGSQUARE_SEVEN const BGSQUARE_FIVE const BGSQUARE_THREE ; BG effects for use in battle animations. ExecuteBGEffects: ; c8000 (32:4000) ld hl, ActiveBGEffects ld e, 5 .loop ld a, [hl] and a jr z, .next ld c, l ld b, h push hl push de call DoBattleBGEffectFunction pop de pop hl .next ld bc, 4 add hl, bc dec e jr nz, .loop ret QueueBGEffect: ; c801a (32:401a) ld hl, ActiveBGEffects ld e, 5 .loop ld a, [hl] and a jr z, .load ld bc, 4 add hl, bc dec e jr nz, .loop scf ret .load ld c, l ld b, h ld hl, BG_EFFECT_STRUCT_FUNCTION add hl, bc ld a, [wBattleAnimTemp0] ld [hli], a ld a, [wBattleAnimTemp1] ld [hli], a ld a, [wBattleAnimTemp2] ld [hli], a ld a, [wBattleAnimTemp3] ld [hl], a ret EndBattleBGEffect: ; c8043 (32:4043) ld hl, BG_EFFECT_STRUCT_FUNCTION add hl, bc ld [hl], 0 ret DoBattleBGEffectFunction: ; c804a (32:404a) ld hl, BG_EFFECT_STRUCT_FUNCTION add hl, bc ld e, [hl] ld d, 0 ld hl, BattleBGEffects rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] BattleBGEffects: ; c805a (32:405a) dw BattleBGEffect_End dw BattleBGEffect_FlashInverted dw BattleBGEffect_FlashWhite dw BattleBGEffect_WhiteHues dw BattleBGEffect_BlackHues dw BattleBGEffect_AlternateHues dw BattleBGEffect_06 dw BattleBGEffect_07 dw BattleBGEffect_08 dw BattleBGEffect_HideMon dw BattleBGEffect_ShowMon dw BattleBGEffect_EnterMon dw BattleBGEffect_ReturnMon dw BattleBGEffect_Surf dw BattleBGEffect_Whirlpool dw BattleBGEffect_Teleport dw BattleBGEffect_NightShade dw BattleBGEffect_FeetFollow dw BattleBGEffect_HeadFollow dw BattleBGEffect_DoubleTeam dw BattleBGEffect_AcidArmor dw BattleBGEffect_RapidFlash dw BattleBGEffect_16 dw BattleBGEffect_17 dw BattleBGEffect_18 dw BattleBGEffect_19 dw BattleBGEffect_1a dw BattleBGEffect_1b dw BattleBGEffect_1c dw BattleBGEffect_1d dw BattleBGEffect_1e dw BattleBGEffect_1f dw BattleBGEffect_20 dw BattleBGEffect_21 dw BattleBGEffect_BounceDown dw BattleBGEffect_Dig dw BattleBGEffect_Tackle dw BattleBGEffect_25 dw BattleBGEffect_26 dw BattleBGEffect_27 dw BattleBGEffect_28 dw BattleBGEffect_Psychic dw BattleBGEffect_2a dw BattleBGEffect_2b dw BattleBGEffect_2c dw BattleBGEffect_2d dw BattleBGEffect_2e dw BattleBGEffect_2f dw BattleBGEffect_30 dw BattleBGEffect_31 dw BattleBGEffect_32 dw BattleBGEffect_VibrateMon dw BattleBGEffect_WobbleMon dw BattleBGEffect_35 BattleBGEffect_End: ; c80c6 (32:40c6) call EndBattleBGEffect ret BatttleBGEffects_GetNamedJumptablePointer: ; c80ca (32:40ca) ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld l, [hl] ld h, 0 add hl, hl add hl, de ld a, [hli] ld h, [hl] ld l, a ret BattleBGEffects_AnonJumptable: ; c80d7 (32:40d7) pop de ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld l, [hl] ld h, 0 add hl, hl add hl, de ld a, [hli] ld h, [hl] ld l, a jp [hl] BattleBGEffects_IncrementJumptable: ; c80e5 (32:40e5) ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc inc [hl] ret BattleBGEffect_FlashInverted: ; c80eb (32:40eb) ld de, .inverted jp BattleBGEffect_FlashContinue ; c80f1 (32:40f1) .inverted db %11100100 ; 3210 db %00011011 ; 0123 ; c80f3 BattleBGEffect_FlashWhite: ; c80f3 (32:40f3) ld de, .white jp BattleBGEffect_FlashContinue ; c80f9 (32:40f9) .white db %11100100 ; 3210 db %00000000 ; 0000 ; c80fb BattleBGEffect_FlashContinue: ; c80fb (32:40fb) ; current timer, flash duration, number of flashes ld a, $1 ld [wBattleAnimTemp0], a ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld a, [hl] and a jr z, .init dec [hl] ret .init ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld [hl], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a jr nz, .apply_pal call EndBattleBGEffect ret .apply_pal dec a ld [hl], a and 1 ld l, a ld h, 0 add hl, de ld a, [hl] ld [wBGP], a ret BattleBGEffect_WhiteHues: ; c812d (32:412d) ld de, Unknown_c813d call Functionc8d57 jr c, .asm_c8139 ld [wBGP], a ret .asm_c8139 call EndBattleBGEffect ret ; c813d (32:413d) Unknown_c813d: db $e4, $e0, $d0, $ff ; c8141 BattleBGEffect_BlackHues: ; c8141 (32:4141) ld de, Unknown_c8151 call Functionc8d57 jr c, .asm_c814d ld [wBGP], a ret .asm_c814d call EndBattleBGEffect ret ; c8151 (32:4151) Unknown_c8151: db $e4, $f4, $f8, $ff ; c8155 BattleBGEffect_AlternateHues: ; c8155 (32:4155) ld de, Unknown_c8168 call Functionc8d57 jr c, .asm_c8164 ld [wBGP], a ld [wOBP1], a ret .asm_c8164 call EndBattleBGEffect ret ; c8168 (32:4168) Unknown_c8168: db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe ; c8171 BattleBGEffect_06: ; c8171 (32:4171) call BattleBGEffects_CheckSGB jr nz, .sgb ld de, .PalsCGB jr .okay .sgb ld de, .PalsSGB .okay call Functionc8d57 ld [wOBP0], a ret ; c8185 (32:4185) .PalsCGB db $e4, $90, $fe ; c8188 .PalsSGB db $f0, $c0, $fe ; c818b BattleBGEffect_07: ; c818b (32:418b) call BattleBGEffects_CheckSGB jr nz, .sgb ld de, .PalsCGB jr .okay .sgb ld de, .PalsSGB .okay call Functionc8d57 ld [wOBP0], a ret ; c819f (32:419f) .PalsCGB db $e4, $d8, $fe ; c81a2 .PalsSGB db $f0, $cc, $fe ; c81a5 BattleBGEffect_08: ; c81a5 (32:41a5) ld de, .Pals call Functionc8d57 ld [wBGP], a ret ; c81af (32:41af) .Pals db $1b, $63, $87, $fe ; c81b3 BattleBGEffect_HideMon: ; c81b3 (32:41b3) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw .four .zero call BattleBGEffects_IncrementJumptable push bc call BGEffect_CheckBattleTurn jr nz, .player_side hlcoord 12, 0 lb bc, 7, 7 jr .got_pointer .player_side hlcoord 2, 6 lb bc, 6, 6 .got_pointer call ClearBox pop bc xor a ld [hBGMapThird], a ld a, $1 ld [hBGMapMode], a ret .four xor a ld [hBGMapMode], a call EndBattleBGEffect ret BattleBGEffect_ShowMon: ; c81ea (32:41ea) call BGEffect_CheckFlyDigStatus jr z, .not_flying call EndBattleBGEffect ret .not_flying call BGEffect_CheckBattleTurn jr nz, .player_side ld de, .EnemyData jr .got_pointer .player_side ld de, .PlayerData .got_pointer ld a, e ld [wBattleAnimTemp1], a ld a, d ld [wBattleAnimTemp2], a call BattleBGEffect_RunPicResizeScript ret ; c820c (32:420c) .PlayerData db 0, $31, 0 db -1 ; c8210 .EnemyData db 3, $00, 3 db -1 ; c8214 BattleBGEffect_FeetFollow: ; c8214 (32:4214) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw .five .zero call BGEffect_CheckFlyDigStatus jr z, .not_flying_digging ld hl, wNumActiveBattleAnims inc [hl] call EndBattleBGEffect ret .not_flying_digging call BattleBGEffects_IncrementJumptable push bc call BGEffect_CheckBattleTurn jr nz, .player_turn ld a, ANIM_OBJ_B8 ld [wBattleAnimTemp0], a ld a, 16 * 8 + 4 jr .okay .player_turn ld a, ANIM_OBJ_B9 ld [wBattleAnimTemp0], a ld a, 6 * 8 .okay ld [wBattleAnimTemp1], a ld a, 8 * 8 ld [wBattleAnimTemp2], a xor a ld [wBattleAnimTemp3], a call _QueueBattleAnimation pop bc ret .one call BattleBGEffects_IncrementJumptable push bc call BGEffect_CheckBattleTurn jr nz, .player_turn_2 hlcoord 12, 6 lb bc, 1, 7 jr .okay2 .player_turn_2 hlcoord 2, 6 lb bc, 1, 6 .okay2 call ClearBox ld a, $1 ld [hBGMapMode], a pop bc ret .five xor a ld [hBGMapMode], a call EndBattleBGEffect ret BattleBGEffect_HeadFollow: ; c8281 (32:4281) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw .five .zero call BGEffect_CheckFlyDigStatus jr z, .not_flying_digging ld hl, wNumActiveBattleAnims inc [hl] call EndBattleBGEffect ret .not_flying_digging call BattleBGEffects_IncrementJumptable push bc call BGEffect_CheckBattleTurn jr nz, .player_turn ld a, ANIM_OBJ_BA ld [wBattleAnimTemp0], a ld a, 16 * 8 + 4 jr .okay .player_turn ld a, ANIM_OBJ_BB ld [wBattleAnimTemp0], a ld a, 6 * 8 .okay ld [wBattleAnimTemp1], a ld a, 8 * 8 ld [wBattleAnimTemp2], a xor a ld [wBattleAnimTemp3], a call _QueueBattleAnimation pop bc ret .one call BattleBGEffects_IncrementJumptable push bc call BGEffect_CheckBattleTurn jr nz, .player_turn_2 hlcoord 12, 5 lb bc, 2, 7 jr .okay2 .player_turn_2 hlcoord 2, 6 lb bc, 2, 6 .okay2 call ClearBox ld a, $1 ld [hBGMapMode], a pop bc ret .five xor a ld [hBGMapMode], a call EndBattleBGEffect ret _QueueBattleAnimation: ; c82ee (32:42ee) callab QueueBattleAnimation ret BattleBGEffect_27: ; c82f5 (32:42f5) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw .four .zero call BattleBGEffects_IncrementJumptable call BGEffect_CheckBattleTurn ld [hl], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and a jr z, .user ld a, $9 jr .okay .user ld a, $8 .okay ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], a ret .one ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and a jr z, .user_2 hlcoord 0, 6 lb de, 8, 6 .row1 push de push hl .col1 inc hl ld a, [hld] ld [hli], a dec d jr nz, .col1 pop hl ld de, SCREEN_WIDTH add hl, de pop de dec e jr nz, .row1 jr .okay2 .user_2 hlcoord 19, 0 lb de, 8, 7 .row2 push de push hl .col2 dec hl ld a, [hli] ld [hld], a dec d jr nz, .col2 pop hl ld de, SCREEN_WIDTH add hl, de pop de dec e jr nz, .row2 .okay2 xor a ld [hBGMapThird], a ld a, $1 ld [hBGMapMode], a call BattleBGEffects_IncrementJumptable ld hl, BG_EFFECT_STRUCT_03 add hl, bc dec [hl] ret .four xor a ld [hBGMapMode], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a jr z, .done ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld [hl], $1 ret .done call EndBattleBGEffect ret BattleBGEffect_EnterMon: ; c837b (32:437b) call BGEffect_CheckBattleTurn jr nz, .player_turn ld de, .EnemyData jr .okay .player_turn ld de, .PlayerData .okay ld a, e ld [wBattleAnimTemp1], a ld a, d ld [wBattleAnimTemp2], a call BattleBGEffect_RunPicResizeScript ret ; c8394 (32:4394) .PlayerData db 2, $31, 2 db 1, $31, 1 db 0, $31, 0 db -1 ; c839e .EnemyData db 5, $00, 5 db 4, $00, 4 db 3, $00, 3 db -1 ; c83a8 BattleBGEffect_ReturnMon: ; c83a8 (32:43a8) call BGEffect_CheckBattleTurn jr nz, .player_turn ld de, .EnemyData jr .okay .player_turn ld de, .PlayerData .okay ld a, e ld [wBattleAnimTemp1], a ld a, d ld [wBattleAnimTemp2], a call BattleBGEffect_RunPicResizeScript ret ; c83c1 (32:43c1) .PlayerData db 0, $31, 0 db -2, $66, 0 db 1, $31, 1 db -2, $44, 1 db 2, $31, 2 db -2, $22, 2 db -3, $00, 0 db -1 ; c83d7 .EnemyData db 3, $00, 3 db -2, $77, 3 db 4, $00, 4 db -2, $55, 4 db 5, $00, 5 db -2, $33, 5 db -3, $00, 0 db -1 ; c83ed BattleBGEffect_RunPicResizeScript: ; c83ed (32:43ed) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw BattleBGEffects_IncrementJumptable dw BattleBGEffects_IncrementJumptable dw .restart dw .end .zero ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld e, [hl] ld d, $0 inc [hl] ld a, [wBattleAnimTemp1] ld l, a ld a, [wBattleAnimTemp2] ld h, a rept 3 add hl, de endr ld a, [hl] cp -1 jr z, .end cp -2 jr z, .clear cp -3 jr z, .skip call .FillBox .skip call BattleBGEffects_IncrementJumptable ld a, $1 ld [hBGMapMode], a ret .clear call .ClearBox jr .zero .restart xor a ld [hBGMapMode], a ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld [hl], $0 ret .end xor a ld [hBGMapMode], a call EndBattleBGEffect ret .ClearBox ; get dims push bc inc hl ld a, [hli] ld b, a and $f ld c, a ld a, b swap a and $f ld b, a ; get coords ld e, [hl] ld d, 0 ld hl, .Coords rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a call ClearBox pop bc ret .FillBox ; get dims push bc push hl ld e, [hl] ld d, 0 ld hl, .BGSquares rept 3 add hl, de endr ld a, [hli] ld b, a and $f ld c, a ld a, b swap a and $f ld b, a ; store pointer ld e, [hl] inc hl ld d, [hl] ; get byte pop hl inc hl ld a, [hli] ld [wBattleAnimTemp0], a ; get coord push de ld e, [hl] ld d, 0 ld hl, .Coords rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a pop de ; fill box .row push bc push hl ld a, [wBattleAnimTemp0] ld b, a .col ld a, [de] add b ld [hli], a inc de dec c jr nz, .col pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .row pop bc ret .Coords dwcoord 2, 6 dwcoord 3, 8 dwcoord 4, 10 dwcoord 12, 0 dwcoord 13, 2 dwcoord 14, 4 .BGSquares bgsquare: MACRO dn \1,\2 dw \3 endm bgsquare 6, 6, .SixBySix bgsquare 4, 4, .FourByFour bgsquare 2, 2, .TwoByTwo bgsquare 7, 7, .SevenBySeven bgsquare 5, 5, .FiveByFive bgsquare 3, 3, .ThreeByThree .SixBySix db $00, $06, $0c, $12, $18, $1e db $01, $07, $0d, $13, $19, $1f db $02, $08, $0e, $14, $1a, $20 db $03, $09, $0f, $15, $1b, $21 db $04, $0a, $10, $16, $1c, $22 db $05, $0b, $11, $17, $1d, $23 .FourByFour db $00, $0c, $12, $1e db $02, $0e, $14, $20 db $03, $0f, $15, $21 db $05, $11, $17, $23 .TwoByTwo db $00, $1e db $05, $23 .SevenBySeven db $00, $07, $0e, $15, $1c, $23, $2a db $01, $08, $0f, $16, $1d, $24, $2b db $02, $09, $10, $17, $1e, $25, $2c db $03, $0a, $11, $18, $1f, $26, $2d db $04, $0b, $12, $19, $20, $27, $2e db $05, $0c, $13, $1a, $21, $28, $2f db $06, $0d, $14, $1b, $22, $29, $30 .FiveByFive db $00, $07, $15, $23, $2a db $01, $08, $16, $24, $2b db $03, $0a, $18, $26, $2d db $05, $0c, $1a, $28, $2f db $06, $0d, $1b, $29, $30 .ThreeByThree db $00, $15, $2a db $03, $18, $2d db $06, $1b, $30 ; c8545 BattleBGEffect_Surf: ; c8545 (32:4545) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable lb de, 2, 2 call InitSurfWaves .one ld a, [hLCDStatCustom] and a ret z push bc call .RotatewSurfWaveBGEffect pop bc ret .two call BattleAnim_ResetLCDStatCustom ret .RotatewSurfWaveBGEffect ld hl, wSurfWaveBGEffect ld de, wSurfWaveBGEffect + 1 ld c, wSurfWaveBGEffectEnd - wSurfWaveBGEffect - 1 ld a, [hl] push af .loop ld a, [de] inc de ld [hli], a dec c jr nz, .loop pop af ld [hl], a ld de, LYOverridesBackup ld hl, wSurfWaveBGEffect ld bc, $0 .loop2 ld a, [hLCDStatCustom + 1] cp e jr nc, .load_zero push hl add hl, bc ld a, [hl] pop hl jr .okay .load_zero xor a .okay ld [de], a ld a, c inc a and $3f ld c, a inc de ld a, e cp $5f jr c, .loop2 ret BattleBGEffect_Whirlpool: ; c8599 (32:4599) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $42 ld [hLCDStatCustom], a xor a ld [hLCDStatCustom + 1], a ld a, $5e ld [hLCDStatCustom + 2], a lb de, 2, 2 call Functionc8f2e ret .one call BattleBGEffect_WavyScreenFX ret .two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_30: ; c85c2 (32:45c2) call BattleBGEffects_ClearLYOverrides ld a, $42 call Functionc8ede call EndBattleBGEffect ret BattleBGEffect_31: ; c85ce (32:45ce) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] ld e, a add $4 ld [hl], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and $f0 swap a xor $ff add $4 ld d, a ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld a, [hl] ld [wBattleAnimTemp0], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] cp $20 jr nc, .done rept 2 inc [hl] endr call Functionc8f9a ret .done call BattleBGEffects_ClearLYOverrides call EndBattleBGEffect ret BattleBGEffect_32: ; c8603 (32:4603) call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_Psychic: ; c8607 (32:4607) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 ld [hLCDStatCustom], a xor a ld [hLCDStatCustom + 1], a ld a, $5f ld [hLCDStatCustom + 2], a lb de, 6, 5 call Functionc8f2e ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 ret .one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] inc [hl] and $3 ret nz call BattleBGEffect_WavyScreenFX ret .two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_Teleport: ; c863f (32:463f) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede lb de, 6, 5 call Functionc8f2e ret .one call BattleBGEffect_WavyScreenFX ret .two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_NightShade: ; c8662 (32:4662) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $42 call Functionc8ede ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld e, [hl] ld d, 2 call Functionc8f2e ret .one call BattleBGEffect_WavyScreenFX ret .two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_DoubleTeam: ; c8689 (32:4689) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two dw .three dw .four dw .five .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], $0 ret .one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] cp $10 jr nc, .next inc [hl] call .UpdateLYOverrides ret .three ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] cp $ff jr z, .next dec [hl] call .UpdateLYOverrides ret .next call BattleBGEffects_IncrementJumptable ret .two ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] ld d, $2 call BattleBGEffects_Sine ld hl, BG_EFFECT_STRUCT_03 add hl, bc add [hl] call .UpdateLYOverrides ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] add $4 ld [hl], a .four ret .UpdateLYOverrides ld e, a xor $ff inc a ld d, a ld h, LYOverridesBackup / $100 ld a, [hLCDStatCustom + 1] ld l, a ld a, [hLCDStatCustom + 2] sub l srl a push af .loop ld [hl], e inc hl ld [hl], d inc hl dec a jr nz, .loop pop af ret nc ld [hl], e ret .five call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_AcidArmor: ; c8709 (32:4709) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $42 call Functionc8ede ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld e, [hl] ld d, 2 call Functionc8f2e ld h, $d2 ld a, [hLCDStatCustom + 2] ld l, a ld [hl], $0 dec l ld [hl], $0 ret .one ld a, [hLCDStatCustom + 2] ld l, a ld h, $d2 ld e, l ld d, h dec de .loop ld a, [de] dec de ld [hld], a ld a, [hLCDStatCustom + 1] cp l jr nz, .loop ld [hl], $90 ld a, [hLCDStatCustom + 2] ld l, a ld a, [hl] cp $1 jr c, .okay cp $90 jr z, .okay ld [hl], $0 .okay dec l ld a, [hl] cp $2 ret c cp $90 ret z ld [hl], $0 ret .two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_21: ; c8761 (32:4761) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $42 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], $1 ret .one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and $3f ld d, a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] cp d ret nc call Functionc901b ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] rlca rlca and $3 ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc add [hl] ld [hl], a ret .two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_Dig: ; c87a7 (32:47a7) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two dw .three .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $42 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], $2 ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 ret .one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a jr z, .next dec [hl] ret .next ld [hl], $10 call BattleBGEffects_IncrementJumptable .two ld a, [hLCDStatCustom + 1] ld l, a ld a, [hLCDStatCustom + 2] sub l dec a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc cp [hl] ret c ld a, [hl] push af and $7 jr nz, .skip ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc dec [hl] .skip pop af call Functionc901b ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc rept 2 inc [hl] endr ret .three call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_Tackle: ; c8805 (32:4805) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw Tackle_BGEffect25_2d_one dw Tackle_BGEffect25_2d_two dw .three .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 call BGEffect_CheckBattleTurn jr nz, .player_side ld a, 2 jr .okay .player_side ld a, -2 .okay ld [hl], a ret .three call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_25: ; c8837 (32:4837) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw Tackle_BGEffect25_2d_one dw Tackle_BGEffect25_2d_two dw .three .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ef4 ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 call BGEffect_CheckBattleTurn jr nz, .player_side ld a, 2 jr .okay .player_side ld a, -2 .okay ld [hl], a ret .three call BattleAnim_ResetLCDStatCustom ret Tackle_BGEffect25_2d_one: ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] cp -8 jr z, .reached_limit cp 8 jr nz, .finish .reached_limit call BattleBGEffects_IncrementJumptable .finish call Functionc88a5 ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] ld hl, BG_EFFECT_STRUCT_03 add hl, bc add [hl] ld [hl], a ret Tackle_BGEffect25_2d_two: ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a jr nz, .asm_c8893 call BattleBGEffects_IncrementJumptable .asm_c8893 call Functionc88a5 ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] xor $ff inc a ld hl, BG_EFFECT_STRUCT_03 add hl, bc add [hl] ld [hl], a ret Functionc88a5: ; c88a5 (32:48a5) push af ld a, [FXAnimIDHi] ; FXAnimIDHi or a jr nz, .not_rollout ld a, [FXAnimIDLo] ; FXAnimID cp ROLLOUT jr z, .rollout .not_rollout pop af jp Functionc900b .rollout ld a, [hLCDStatCustom + 1] ld d, a ld a, [hLCDStatCustom + 2] sub d ld d, a ld h, LYOverridesBackup / $100 ld a, [hSCY] or a jr nz, .skip1 ld a, [hLCDStatCustom + 1] or a jr z, .skip2 dec a ld l, a ld [hl], $0 jr .skip2 .skip1 ld a, [hLCDStatCustom + 2] dec a ld l, a ld [hl], $0 .skip2 ld a, [hSCY] ld l, a ld a, [hLCDStatCustom + 1] sub l jr nc, .skip3 xor a dec d .skip3 ld l, a pop af .loop ld [hli], a dec d jr nz, .loop ret BattleBGEffect_2d: ; c88e7 (32:48e7) call BattleBGEffects_AnonJumptable .anon_jumptable dw BGEffect2d_2f_zero dw Tackle_BGEffect25_2d_one dw Tackle_BGEffect25_2d_two dw .three .three call BattleAnim_ResetLCDStatCustom ret BGEffect2d_2f_zero: call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 call BGEffect_CheckBattleTurn jr nz, .player_turn ld a, -2 jr .okay .player_turn ld a, 2 .okay ld [hl], a ret BattleBGEffect_2f: ; c8919 (32:4919) call BattleBGEffects_AnonJumptable .anon_jumptable dw BGEffect2d_2f_zero dw Tackle_BGEffect25_2d_one dw .two dw Tackle_BGEffect25_2d_two dw .four .four call BattleAnim_ResetLCDStatCustom .two ret BattleBGEffect_26: ; c892a (32:492a) call BattleBGEffects_AnonJumptable .anon_jumptable dw Functionc8933 dw Functionc894a dw Functionc8960 Functionc8933: ; c8933 (32:4933) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 ret Functionc894a: ; c894a (32:494a) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] ld d, $8 call BattleBGEffects_Sine call Functionc900b ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] add $4 ld [hl], a ret Functionc8960: ; c8960 (32:4960) call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_2c: ; c8964 (32:4964) call BattleBGEffects_AnonJumptable .anon_jumptable dw Functionc896d dw Functionc8985 dw Functionc89b1 Functionc896d: ; c896d (32:496d) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a xor a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hli], a ld [hl], a ret Functionc8985: ; c8985 (32:4985) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] ld d, $6 call BattleBGEffects_Sine push af ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] ld d, $2 call BattleBGEffects_Sine ld e, a pop af add e call Functionc900b ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] add $8 ld [hl], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] add $2 ld [hl], a ret Functionc89b1: ; c89b1 (32:49b1) call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_28: ; c89b5 (32:49b5) call BattleBGEffects_AnonJumptable .anon_jumptable dw Functionc89be dw Functionc89ca dw Functionc89da Functionc89be: ; c89be (32:49be) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ret Functionc89ca: ; c89ca (32:49ca) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] cp $20 ret nc inc [hl] ld d, a ld e, 4 call Functionc8f2e ret Functionc89da: ; c89da (32:49da) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a jr z, .asm_c89ea dec [hl] ld d, a ld e, 4 call Functionc8f2e ret .asm_c89ea call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_BounceDown: ; c89ee (32:49ee) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two .zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $42 call Functionc8ef4 ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], $1 ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $20 ret .one ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] cp $38 ret nc push af ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] ld d, $10 call BattleBGEffects_Cosine add $10 ld d, a pop af add d call Functionc901b ld hl, BG_EFFECT_STRUCT_03 add hl, bc rept 2 inc [hl] endr ret .two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_2a: ; c8a3a (32:4a3a) call BattleBGEffects_AnonJumptable .anon_jumptable dw .zero dw .one dw .two dw .three dw .four dw .five .zero call BattleBGEffects_IncrementJumptable ld a, $e4 call BattleBGEffects_SetLYOverrides ld a, $47 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld a, [hLCDStatCustom + 1] ld l, a ld h, $d2 .loop ld a, [hLCDStatCustom + 2] cp l jr z, .done xor a ld [hli], a jr .loop .done ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 .one .four ret .two call .GetLYOverride jr nc, .next call .SetLYOverridesBackup ret .next ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 ld a, [hLCDStatCustom + 1] inc a ld [hLCDStatCustom + 1], a call BattleBGEffects_IncrementJumptable ret .three call .GetLYOverride jr nc, .finish call .SetLYOverridesBackup ld a, [hLCDStatCustom + 2] dec a ld l, a ld [hl], e ret .finish call BattleBGEffects_IncrementJumptable ret .SetLYOverridesBackup ld e, a ld a, [hLCDStatCustom + 1] ld l, a ld a, [hLCDStatCustom + 2] sub l srl a ld h, LYOverridesBackup / $100 .loop2 ld [hl], e rept 2 inc hl endr dec a jr nz, .loop2 ret .five call Functionc8f19 ret .GetLYOverride ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] inc [hl] srl a srl a srl a ld e, a ld d, 0 ld hl, .data add hl, de ld a, [hl] cp $ff ret .data db $00, $40, $90, $e4 db -1 ; c8acc BattleBGEffect_2b: ; c8acc (32:4acc) call BattleBGEffects_AnonJumptable .anon_jumptable dw Functionc8ad3 dw Functionc8ae5 Functionc8ad3: ; c8ad3 (32:4ad3) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], $40 ret Functionc8ae5: ; c8ae5 (32:4ae5) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and a jr z, .asm_c8afc dec [hl] srl a srl a srl a and $f ld d, a ld e, a call Functionc8f2e ret .asm_c8afc call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_1c: ; c8b00 (32:4b00) ld a, [hCGB] and a jr nz, asm_c8b7a call BattleBGEffects_AnonJumptable .anon_jumptable dw Functionc8b0e dw Functionc8b22 dw Functionc8b60 Functionc8b0e: ; c8b0e (32:4b0e) call BattleBGEffects_IncrementJumptable ld a, $e4 call BattleBGEffects_SetLYOverrides ld a, $47 ld [hLCDStatCustom], a xor a ld [hLCDStatCustom + 1], a ld a, $60 ld [hLCDStatCustom + 2], a ret Functionc8b22: ; c8b22 (32:4b22) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] inc [hl] ld e, a and $7 ret nz ld a, e and $18 sla a swap a sla a ld e, a ld d, $0 push bc call BGEffect_CheckBattleTurn jr nz, .asm_c8b4d ld hl, Unknown_c8bd8 add hl, de ld a, [hli] ld [wOBP1], a ld d, a ld e, [hl] ld bc, $2f30 jr .asm_c8b5b .asm_c8b4d ld hl, Unknown_c8be0 add hl, de ld d, [hl] inc hl ld a, [hl] ld [wOBP1], a ld e, a ld bc, $3728 .asm_c8b5b call Functionc8b6c pop bc ret Functionc8b60: ; c8b60 (32:4b60) call Functionc8f19 ld a, $e4 ld [wBGP], a ld [wOBP1], a ret Functionc8b6c: ; c8b6c (32:4b6c) ld hl, LYOverridesBackup .asm_c8b6f ld [hl], d inc hl dec b jr nz, .asm_c8b6f .asm_c8b74 ld [hl], e inc hl dec c jr nz, .asm_c8b74 ret asm_c8b7a: ; c8b7a (32:4b7a) ld de, Jumptable_c8b81 call BatttleBGEffects_GetNamedJumptablePointer jp [hl] ; c8b81 (32:4b81) Jumptable_c8b81: ; c8b81 dw Functionc8b87 dw Functionc8b91 dw Functionc8bca ; c8b87 Functionc8b87: ; c8b87 call BattleBGEffects_IncrementJumptable ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 ret ; c8b91 Functionc8b91: ; c8b91 ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] inc [hl] ld e, a and $7 ret nz ld a, e and $18 sla a swap a sla a ld e, a ld d, 0 call BGEffect_CheckBattleTurn jr nz, .asm_c8bbb ld hl, Unknown_c8bd8 add hl, de ld a, [hli] push hl call Functionc8e7f pop hl ld a, [hl] call Functionc8e52 ret .asm_c8bbb ld hl, Unknown_c8bd8 add hl, de ld a, [hli] push hl call Functionc8e52 pop hl ld a, [hl] call Functionc8e7f ret ; c8bca Functionc8bca: ; c8bca ld a, $e4 call Functionc8e52 ld a, $e4 call Functionc8e7f call EndBattleBGEffect ret ; c8bd8 Unknown_c8bd8: ; c8bd8 db $e4, $e4 db $f8, $90 db $fc, $40 db $f8, $90 ; c8be0 Unknown_c8be0: ; c8be0 db $e4, $e4 db $90, $f8 db $40, $fc db $90, $f8 ; c8be8 BattleBGEffect_RapidFlash: ; c8be8 (32:4be8) ld de, Unknown_c8bef call Functionc8d77 ret ; c8bef (32:4bef) Unknown_c8bef: ; c8bef db $e4, $6c, $fe ; c8bf2 BattleBGEffect_16: ; c8bf2 (32:4bf2) ld de, Unknown_c8bf9 call Functionc8d77 ret ; c8bf9 (32:4bf9) Unknown_c8bf9: ; c8bf9 db $e4, $90, $40, $ff ; c8bfd BattleBGEffect_17: ; c8bfd (32:4bfd) ld de, Unknown_c8c04 call Functionc8d77 ret ; c8c04 (32:4c04) Unknown_c8c04: ; c8c04 db $e4, $f8, $fc, $ff ; c8c08 BattleBGEffect_18: ; c8c08 (32:4c08) ld de, Unknown_c8c0f call Functionc8d77 ret ; c8c0f (32:4c0f) Unknown_c8c0f: ; c8c0f db $e4, $90, $40, $90, $fe ; c8c14 BattleBGEffect_19: ; c8c14 (32:4c14) ld de, Unknown_c8c1b call Functionc8d77 ret ; c8c1b (32:4c1b) Unknown_c8c1b: ; c8c1b db $e4, $f8, $fc, $f8, $fe ; c8c20 BattleBGEffect_1a: ; c8c20 (32:4c20) ld de, Unknown_c8c27 call Functionc8d77 ret ; c8c27 (32:4c27) Unknown_c8c27: ; c8c27 db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe ; c8c30 BattleBGEffect_1b: ; c8c30 (32:4c30) ld de, Unknown_c8c37 call Functionc8d77 ret ; c8c37 (32:4c37) Unknown_c8c37: db $e4, $fc, $e4, $00, $fe ; c8c3c BattleBGEffect_1d: ; c8c3c (32:4c3c) ld de, Unknown_c8c43 call Functionc8d77 ret ; c8c43 (32:4c43) Unknown_c8c43: db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff ; c8c55 BattleBGEffect_1e: ; c8c55 (32:4c55) ld de, Unknown_c8c5c call Functionc8d77 ret ; c8c5c (32:4c5c) Unknown_c8c5c: db $00, $40, $90, $e4, $ff ; c8c61 BattleBGEffect_VibrateMon: ; c8c61 (32:4c61) call BattleBGEffects_AnonJumptable .anon_jumptable dw Functionc8c68 dw Functionc8c85 Functionc8c68: ; c8c68 (32:4c68) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], $1 ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $20 ret Functionc8c85: ; c8c85 (32:4c85) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a jr z, .asm_c8c9e dec [hl] and $1 ret nz ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] xor $ff inc a ld [hl], a call Functionc900b ret .asm_c8c9e call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2) call BattleBGEffects_AnonJumptable .anon_jumptable dw Functionc8cab dw Functionc8cc3 dw Functionc8cdd Functionc8cab: ; c8cab (32:4cab) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 ld [hLCDStatCustom], a xor a ld [hLCDStatCustom + 1], a ld a, $37 ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 ret Functionc8cc3: ; c8cc3 (32:4cc3) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] cp $40 jr nc, Functionc8cdd ld d, $6 call BattleBGEffects_Sine call Functionc900b ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] add $2 ld [hl], a ret Functionc8cdd: ; c8cdd (32:4cdd) call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_2e: ; c8ce1 (32:4ce1) call Functionc8d0b jr c, .asm_c8cea bit 7, a jr z, .asm_c8ceb .asm_c8cea xor a .asm_c8ceb push af call DelayFrame pop af ld [hSCY], a xor $ff inc a ld [OTPartyMon3SpclAtk], a ret BattleBGEffect_1f: ; c8cf9 (32:4cf9) call Functionc8d0b jr nc, .asm_c8cff xor a .asm_c8cff ld [hSCX], a ret BattleBGEffect_20: ; c8d02 (32:4d02) call Functionc8d0b jr nc, .asm_c8d08 xor a .asm_c8d08 ld [hSCY], a ret Functionc8d0b: ; c8d0b (32:4d0b) ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld a, [hl] and a jr nz, .asm_c8d18 call EndBattleBGEffect scf ret .asm_c8d18 dec [hl] ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and $f jr z, .asm_c8d2a dec [hl] ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and a ret .asm_c8d2a ld a, [hl] swap a or [hl] ld [hl], a ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] xor $ff inc a ld [hl], a and a ret BattleBGEffect_35: ; c8d3a (32:4d3a) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] cp $40 jr nc, .asm_c8d53 ld d, $6 call BattleBGEffects_Sine ld [hSCX], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] add $2 ld [hl], a ret .asm_c8d53 xor a ld [hSCX], a ret Functionc8d57: ; c8d57 (32:4d57) ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld a, [hl] and a jr z, .asm_c8d69 dec [hl] ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] call Functionc8eb2 ret .asm_c8d69 ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] ld hl, BG_EFFECT_STRUCT_JT_INDEX add hl, bc ld [hl], a call Functionc8eac ret Functionc8d77: ; c8d77 (32:4d77) ld a, [hCGB] and a jr nz, asm_c8dd4 push de ld de, Jumptable_c8d85 call BatttleBGEffects_GetNamedJumptablePointer pop de jp [hl] Jumptable_c8d85: ; c8d85 (32:4d85) dw Functionc8d8b dw Functionc8daa dw Functionc8dc9 Functionc8d8b: ; c8d8b (32:4d8b) call BattleBGEffects_IncrementJumptable ld a, $e4 call BattleBGEffects_SetLYOverrides ld a, $47 call Functionc8ede ld a, [hLCDStatCustom + 2] inc a ld [hLCDStatCustom + 2], a ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] ld [hl], $0 ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], a ret Functionc8daa: ; c8daa (32:4daa) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and $f jr z, .asm_c8db5 dec [hl] ret .asm_c8db5 ld a, [hl] swap a or [hl] ld [hl], a call Functionc8eac jr c, .asm_c8dc3 call Functionc900b ret .asm_c8dc3 ld hl, BG_EFFECT_STRUCT_03 add hl, bc dec [hl] ret Functionc8dc9: ; c8dc9 (32:4dc9) call Functionc8f19 ld a, $e4 ld [rBGP], a call EndBattleBGEffect ret asm_c8dd4: ; c8dd4 (32:4dd4) push de ld de, Jumptable_c8ddd call BatttleBGEffects_GetNamedJumptablePointer pop de jp [hl] Jumptable_c8ddd: ; c8ddd (32:4ddd) dw Functionc8de7 dw Functionc8e02 dw Functionc8e21 dw Functionc8e2a dw Functionc8e49 Functionc8de7: ; c8de7 (32:4de7) call BGEffect_CheckBattleTurn jr nz, .asm_c8df2 call BattleBGEffects_IncrementJumptable call BattleBGEffects_IncrementJumptable .asm_c8df2 call BattleBGEffects_IncrementJumptable ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] ld [hl], $0 ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld [hl], a ret Functionc8e02: ; c8e02 (32:4e02) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and $f jr z, .asm_c8e0d dec [hl] ret .asm_c8e0d ld a, [hl] swap a or [hl] ld [hl], a call Functionc8eac jr c, .asm_c8e1b call Functionc8e52 ret .asm_c8e1b ld hl, BG_EFFECT_STRUCT_03 add hl, bc dec [hl] ret Functionc8e21: ; c8e21 (32:4e21) ld a, $e4 call Functionc8e52 call EndBattleBGEffect ret Functionc8e2a: ; c8e2a (32:4e2a) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and $f jr z, .asm_c8e35 dec [hl] ret .asm_c8e35 ld a, [hl] swap a or [hl] ld [hl], a call Functionc8eac jr c, .asm_c8e43 call Functionc8e7f ret .asm_c8e43 ld hl, BG_EFFECT_STRUCT_03 add hl, bc dec [hl] ret Functionc8e49: ; c8e49 (32:4e49) ld a, $e4 call Functionc8e7f call EndBattleBGEffect ret Functionc8e52: ; c8e52 (32:4e52) ld h, a ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld a, h push bc push af ld hl, BGPals ; BGPals ld de, UnknBGPals ; wd000 ld b, a ld c, $1 call CopyPals ld hl, OBPals + 8 ld de, UnknOBPals + 8 pop af ld b, a ld c, $1 call CopyPals pop bc pop af ld [rSVBK], a ld a, $1 ld [hCGBPalUpdate], a ret Functionc8e7f: ; c8e7f (32:4e7f) ld h, a ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld a, h push bc push af ld hl, BGPals + 8 ld de, UnknBGPals + 8 ld b, a ld c, $1 call CopyPals ld hl, OBPals ; OBPals ld de, UnknOBPals ; wd040 pop af ld b, a ld c, $1 call CopyPals pop bc pop af ld [rSVBK], a ld a, $1 ld [hCGBPalUpdate], a ret Functionc8eac: ; c8eac (32:4eac) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] inc [hl] Functionc8eb2: ; c8eb2 (32:4eb2) ld l, a ld h, $0 add hl, de ld a, [hl] cp $ff jr z, .asm_c8ec8 cp $fe jr nz, .asm_c8ec6 ld a, [de] ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 .asm_c8ec6 and a ret .asm_c8ec8 scf ret BattleBGEffects_ClearLYOverrides: ; c8eca (32:4eca) xor a BattleBGEffects_SetLYOverrides: ; c8ecb (32:4ecb) ld hl, LYOverrides ; wd100 ld e, $99 .loop1 ld [hli], a dec e jr nz, .loop1 ld hl, LYOverridesBackup ld e, $91 .loop2 ld [hli], a dec e jr nz, .loop2 ret Functionc8ede: ; c8ede (32:4ede) ld [hLCDStatCustom], a call BGEffect_CheckBattleTurn jr nz, .asm_c8eea ld de, $36 jr .okay .asm_c8eea ld de, $2f5e .okay ld a, d ld [hLCDStatCustom + 1], a ld a, e ld [hLCDStatCustom + 2], a ret Functionc8ef4: ; c8ef4 (32:4ef4) ld [hLCDStatCustom], a call BGEffect_CheckBattleTurn jr nz, .asm_c8f00 ld de, $36 jr .asm_c8f03 .asm_c8f00 ld de, $2d5e .asm_c8f03 ld a, d ld [hLCDStatCustom + 1], a ld a, e ld [hLCDStatCustom + 2], a ret BattleAnim_ResetLCDStatCustom: ; c8f0a (32:4f0a) xor a ld [hLCDStatCustom + 1], a ld [hLCDStatCustom + 2], a call BattleBGEffects_ClearLYOverrides xor a ld [hLCDStatCustom], a call EndBattleBGEffect ret Functionc8f19: ; c8f19 (32:4f19) xor a ld [hLCDStatCustom], a ld a, $e4 ld [rBGP], a ld [wBGP], a ld [wOBP1], a ld [hLCDStatCustom + 1], a ld [hLCDStatCustom + 2], a call BattleBGEffects_ClearLYOverrides ret Functionc8f2e: ; c8f2e (32:4f2e) push bc xor a ld [wBattleAnimTemp0], a ld a, e ld [wBattleAnimTemp1], a ld a, d ld [wBattleAnimTemp2], a ld a, $80 ld [wBattleAnimTemp3], a ld bc, LYOverridesBackup .loop ld a, [hLCDStatCustom + 1] cp c jr nc, .next ld a, [hLCDStatCustom + 2] cp c jr c, .next ld a, [wBattleAnimTemp2] ld d, a ld a, [wBattleAnimTemp0] call BattleBGEffects_Sine ld [bc], a .next inc bc ld a, [wBattleAnimTemp1] ld hl, wBattleAnimTemp0 add [hl] ld [hl], a ld hl, wBattleAnimTemp3 dec [hl] jr nz, .loop pop bc ret InitSurfWaves: ; c8f69 (32:4f69) push bc xor a ld [wBattleAnimTemp0], a ld a, e ld [wBattleAnimTemp1], a ld a, d ld [wBattleAnimTemp2], a ld a, $40 ld [wBattleAnimTemp3], a ld bc, wSurfWaveBGEffect .loop ld a, [wBattleAnimTemp2] ld d, a ld a, [wBattleAnimTemp0] call BattleBGEffects_Sine ld [bc], a inc bc ld a, [wBattleAnimTemp1] ld hl, wBattleAnimTemp0 add [hl] ld [hl], a ld hl, wBattleAnimTemp3 dec [hl] jr nz, .loop pop bc ret Functionc8f9a: ; c8f9a (32:4f9a) push bc ld [wBattleAnimTemp3], a ld a, e ld [wBattleAnimTemp1], a ld a, d ld [wBattleAnimTemp2], a call .GetLYOverrideBackupAddrOffset ld hl, LYOverridesBackup add hl, de ld c, l ld b, h .loop ld a, [wBattleAnimTemp3] and a jr z, .done dec a ld [wBattleAnimTemp3], a push af ld a, [wBattleAnimTemp2] ld d, a ld a, [wBattleAnimTemp1] push hl call BattleBGEffects_Sine ld e, a pop hl ld a, [hLCDStatCustom + 2] cp c jr c, .skip1 ld a, e ld [bc], a inc bc .skip1 ld a, [hLCDStatCustom + 1] cp l jr nc, .skip2 ld [hl], e dec hl .skip2 ld a, [wBattleAnimTemp1] add $4 ld [wBattleAnimTemp1], a pop af jr .loop .done pop bc and a ret .GetLYOverrideBackupAddrOffset ld a, [hLCDStatCustom + 1] ld e, a ld a, [wBattleAnimTemp0] add e ld e, a ld d, $0 ret BattleBGEffect_WavyScreenFX: ; c8fef (32:4fef) push bc ld a, [hLCDStatCustom + 1] ld l, a inc a ld e, a ld h, $d2 ld d, h ld a, [hLCDStatCustom + 2] sub l and a jr z, .done ld c, a ld a, [hl] push af .loop ld a, [de] inc de ld [hli], a dec c jr nz, .loop pop af ld [hl], a .done pop bc ret Functionc900b: ; c900b (32:500b) push af ld h, $d2 ld a, [hLCDStatCustom + 1] ld l, a ld a, [hLCDStatCustom + 2] sub l ld d, a pop af .asm_c9016 ld [hli], a dec d jr nz, .asm_c9016 ret Functionc901b: ; c901b (32:501b) push af ld e, a ld a, [hLCDStatCustom + 1] ld l, a ld a, [hLCDStatCustom + 2] sub l sub e ld d, a ld h, $d2 ld a, [hLCDStatCustom + 1] ld l, a ld a, $90 .asm_c902c ld [hli], a dec e jr nz, .asm_c902c pop af xor $ff .asm_c9033 ld [hli], a dec d jr nz, .asm_c9033 ret BGEffect_CheckBattleTurn: ; c9038 (32:5038) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hBattleTurn] and $1 xor [hl] ret BGEffect_CheckFlyDigStatus: ; c9042 (32:5042) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hBattleTurn] and $1 xor [hl] jr nz, .player ld a, [EnemySubStatus3] ; EnemySubStatus3 and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND ret .player ld a, [PlayerSubStatus3] ; PlayerSubStatus3 and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND ret BattleBGEffects_CheckSGB: ; c9059 (32:5059) ld a, [hSGB] and a ret BattleBGEffects_Sine: ; c905d (32:505d) ld e, a callab BattleAnim_Sine_e ld a, e ret BattleBGEffects_Cosine: ; c9066 (32:5066) ld e, a callab BattleAnim_Cosine_e ld a, e ret ; c906f (32:506f)