mirror of https://github.com/pret/pokecrystal.git
2959 lines
44 KiB
NASM
2959 lines
44 KiB
NASM
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
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
|
|
BattleBGEffects: ; c805a (32:405a)
|
|
; entries correspond to ANIM_BG_* constants
|
|
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_Withdraw
|
|
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
|
|
|
|
.inverted
|
|
db %11100100 ; 3210
|
|
db %00011011 ; 0123
|
|
; c80f3
|
|
|
|
BattleBGEffect_FlashWhite: ; c80f3 (32:40f3)
|
|
ld de, .white
|
|
jp BattleBGEffect_FlashContinue
|
|
|
|
.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, .Pals
|
|
call BattleBGEffect_GetNthDMGPal
|
|
jr c, .quit
|
|
ld [wBGP], a
|
|
ret
|
|
|
|
.quit
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
.Pals:
|
|
db %11100100
|
|
db %11100000
|
|
db %11010000
|
|
db -1
|
|
; c8141
|
|
|
|
BattleBGEffect_BlackHues: ; c8141 (32:4141)
|
|
ld de, .Pals
|
|
call BattleBGEffect_GetNthDMGPal
|
|
jr c, .quit
|
|
ld [wBGP], a
|
|
ret
|
|
|
|
.quit
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
.Pals:
|
|
db %11100100
|
|
db %11110100
|
|
db %11111000
|
|
db -1
|
|
; c8155
|
|
|
|
BattleBGEffect_AlternateHues: ; c8155 (32:4155)
|
|
ld de, .Pals
|
|
call BattleBGEffect_GetNthDMGPal
|
|
jr c, .quit
|
|
ld [wBGP], a
|
|
ld [wOBP1], a
|
|
ret
|
|
|
|
.quit
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
.Pals:
|
|
db %11100100
|
|
db %11111000
|
|
db %11111100
|
|
db %11111000
|
|
db %11100100
|
|
db %10010000
|
|
db %01000000
|
|
db %10010000
|
|
db -2
|
|
; c8171
|
|
|
|
BattleBGEffect_06: ; c8171 (32:4171)
|
|
call BattleBGEffects_CheckSGB
|
|
jr nz, .sgb
|
|
ld de, .PalsCGB
|
|
jr .okay
|
|
|
|
.sgb
|
|
ld de, .PalsSGB
|
|
.okay
|
|
call BattleBGEffect_GetNthDMGPal
|
|
ld [wOBP0], a
|
|
ret
|
|
|
|
.PalsCGB:
|
|
db %11100100
|
|
db %10010000
|
|
db -2
|
|
|
|
.PalsSGB:
|
|
db %11110000
|
|
db %11000000
|
|
db -2
|
|
; c818b
|
|
|
|
BattleBGEffect_07: ; c818b (32:418b)
|
|
call BattleBGEffects_CheckSGB
|
|
jr nz, .sgb
|
|
ld de, .PalsCGB
|
|
jr .okay
|
|
|
|
.sgb
|
|
ld de, .PalsSGB
|
|
.okay
|
|
call BattleBGEffect_GetNthDMGPal
|
|
ld [wOBP0], a
|
|
ret
|
|
|
|
.PalsCGB:
|
|
db %11100100
|
|
db %11011000
|
|
db -2
|
|
|
|
.PalsSGB:
|
|
db %11110000
|
|
db %11001100
|
|
db -2
|
|
; c81a5
|
|
|
|
BattleBGEffect_08: ; c81a5 (32:41a5)
|
|
ld de, .Pals
|
|
call BattleBGEffect_GetNthDMGPal
|
|
ld [wBGP], a
|
|
ret
|
|
|
|
.Pals:
|
|
db %00011011
|
|
db %01100011
|
|
db %10000111
|
|
db -2
|
|
; c81b3
|
|
|
|
BattleBGEffect_HideMon: ; c81b3 (32:41b3)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
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
|
|
|
|
.PlayerData:
|
|
db 0, $31, 0
|
|
db -1
|
|
.EnemyData:
|
|
db 3, $00, 3
|
|
db -1
|
|
; c8214
|
|
|
|
BattleBGEffect_FeetFollow: ; c8214 (32:4214)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
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_PLAYERFEETFOLLOW
|
|
ld [wBattleAnimTemp0], a
|
|
ld a, 16 * 8 + 4
|
|
jr .okay
|
|
|
|
.player_turn
|
|
ld a, ANIM_OBJ_ENEMYFEETFOLLOW
|
|
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_dw
|
|
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)
|
|
callfar QueueBattleAnimation
|
|
ret
|
|
|
|
BattleBGEffect_27: ; c82f5 (32:42f5)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
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
|
|
|
|
.PlayerData:
|
|
db 2, $31, 2
|
|
db 1, $31, 1
|
|
db 0, $31, 0
|
|
db -1
|
|
.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
|
|
|
|
.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
|
|
.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_dw
|
|
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
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp -1
|
|
jr z, .end
|
|
cp -2
|
|
jr z, .clear
|
|
cp -3
|
|
jr z, .skip
|
|
call .PlaceGraphic
|
|
.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
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
call ClearBox
|
|
pop bc
|
|
ret
|
|
|
|
.PlaceGraphic:
|
|
; get dims
|
|
push bc
|
|
push hl
|
|
ld e, [hl]
|
|
ld d, 0
|
|
ld hl, .BGSquares
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
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
|
|
add hl, de
|
|
add hl, de
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
lb de, 2, 2
|
|
call InitSurfWaves
|
|
|
|
.one
|
|
ld a, [hLCDCPointer]
|
|
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, [hLYOverrideStart]
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCY - $ff00
|
|
ld [hLCDCPointer], a
|
|
xor a
|
|
ld [hLYOverrideStart], a
|
|
ld a, $5e
|
|
ld [hLYOverrideEnd], 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, rSCY - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
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
|
|
inc [hl]
|
|
inc [hl]
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
ld [hLCDCPointer], a
|
|
xor a
|
|
ld [hLYOverrideStart], a
|
|
ld a, $5f
|
|
ld [hLYOverrideEnd], 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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCY - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
dw .three
|
|
dw .four
|
|
dw .five
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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, HIGH(LYOverridesBackup)
|
|
ld a, [hLYOverrideStart]
|
|
ld l, a
|
|
ld a, [hLYOverrideEnd]
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCY - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld e, [hl]
|
|
ld d, 2
|
|
call Functionc8f2e
|
|
ld h, HIGH(LYOverridesBackup)
|
|
ld a, [hLYOverrideEnd]
|
|
ld l, a
|
|
ld [hl], $0
|
|
dec l
|
|
ld [hl], $0
|
|
ret
|
|
|
|
.one
|
|
ld a, [hLYOverrideEnd]
|
|
ld l, a
|
|
ld h, HIGH(LYOverridesBackup)
|
|
ld e, l
|
|
ld d, h
|
|
dec de
|
|
.loop
|
|
ld a, [de]
|
|
dec de
|
|
ld [hld], a
|
|
ld a, [hLYOverrideStart]
|
|
cp l
|
|
jr nz, .loop
|
|
ld [hl], $90
|
|
ld a, [hLYOverrideEnd]
|
|
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_Withdraw: ; c8761 (32:4761)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCY - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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 BGEffect_DisplaceLYOverridesBackup
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
dw .three
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCY - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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, [hLYOverrideStart]
|
|
ld l, a
|
|
ld a, [hLYOverrideEnd]
|
|
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 BGEffect_DisplaceLYOverridesBackup
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
inc [hl]
|
|
inc [hl]
|
|
ret
|
|
|
|
.three
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_Tackle: ; c8805 (32:4805)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw Tackle_BGEffect25_2d_one
|
|
dw Tackle_BGEffect25_2d_two
|
|
dw .three
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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_dw
|
|
dw .zero
|
|
dw Tackle_BGEffect25_2d_one
|
|
dw Tackle_BGEffect25_2d_two
|
|
dw .three
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms2
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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, [FXAnimID + 1] ; FXAnimID + 1
|
|
or a
|
|
jr nz, .not_rollout
|
|
ld a, [FXAnimID] ; FXAnimID
|
|
cp ROLLOUT
|
|
jr z, .rollout
|
|
.not_rollout
|
|
pop af
|
|
jp BGEffect_FillLYOverridesBackup
|
|
|
|
.rollout
|
|
ld a, [hLYOverrideStart]
|
|
ld d, a
|
|
ld a, [hLYOverrideEnd]
|
|
sub d
|
|
ld d, a
|
|
ld h, HIGH(LYOverridesBackup)
|
|
ld a, [hSCY]
|
|
or a
|
|
jr nz, .skip1
|
|
ld a, [hLYOverrideStart]
|
|
or a
|
|
jr z, .skip2
|
|
dec a
|
|
ld l, a
|
|
ld [hl], $0
|
|
jr .skip2
|
|
|
|
.skip1
|
|
ld a, [hLYOverrideEnd]
|
|
dec a
|
|
ld l, a
|
|
ld [hl], $0
|
|
.skip2
|
|
ld a, [hSCY]
|
|
ld l, a
|
|
ld a, [hLYOverrideStart]
|
|
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_dw
|
|
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, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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_dw
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], a
|
|
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]
|
|
ld d, $8
|
|
call BattleBGEffects_Sine
|
|
call BGEffect_FillLYOverridesBackup
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add $4
|
|
ld [hl], a
|
|
ret
|
|
|
|
.two
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_2c: ; c8964 (32:4964)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], a
|
|
xor a
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ret
|
|
|
|
.one
|
|
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 BGEffect_FillLYOverridesBackup
|
|
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
|
|
|
|
.two
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_28: ; c89b5 (32:49b5)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ret
|
|
|
|
.one
|
|
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
|
|
|
|
.two
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .reset
|
|
dec [hl]
|
|
ld d, a
|
|
ld e, 4
|
|
call Functionc8f2e
|
|
ret
|
|
|
|
.reset
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_BounceDown: ; c89ee (32:49ee)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCY - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms2
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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 BGEffect_DisplaceLYOverridesBackup
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
inc [hl]
|
|
inc [hl]
|
|
ret
|
|
|
|
.two
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_2a: ; c8a3a (32:4a3a)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
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 BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], a
|
|
ld a, [hLYOverrideStart]
|
|
ld l, a
|
|
ld h, HIGH(LYOverridesBackup)
|
|
.loop
|
|
ld a, [hLYOverrideEnd]
|
|
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, [hLYOverrideStart]
|
|
inc a
|
|
ld [hLYOverrideStart], a
|
|
call BattleBGEffects_IncrementJumptable
|
|
ret
|
|
|
|
.three
|
|
call .GetLYOverride
|
|
jr nc, .finish
|
|
call .SetLYOverridesBackup
|
|
ld a, [hLYOverrideEnd]
|
|
dec a
|
|
ld l, a
|
|
ld [hl], e
|
|
ret
|
|
|
|
.finish
|
|
call BattleBGEffects_IncrementJumptable
|
|
ret
|
|
|
|
.SetLYOverridesBackup:
|
|
ld e, a
|
|
ld a, [hLYOverrideStart]
|
|
ld l, a
|
|
ld a, [hLYOverrideEnd]
|
|
sub l
|
|
srl a
|
|
ld h, HIGH(LYOverridesBackup)
|
|
.loop2
|
|
ld [hl], e
|
|
inc hl
|
|
inc hl
|
|
dec a
|
|
jr nz, .loop2
|
|
ret
|
|
|
|
.five
|
|
call BattleBGEffects_ResetVideoHRAM
|
|
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_dw
|
|
dw .zero
|
|
dw .one
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
ld [hl], $40
|
|
ret
|
|
|
|
.one
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .done
|
|
dec [hl]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $f
|
|
ld d, a
|
|
ld e, a
|
|
call Functionc8f2e
|
|
ret
|
|
|
|
.done
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_1c: ; c8b00 (32:4b00)
|
|
ld a, [hCGB]
|
|
and a
|
|
jr nz, .cgb
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
ld a, $e4
|
|
call BattleBGEffects_SetLYOverrides
|
|
ld a, rBGP - $ff00
|
|
ld [hLCDCPointer], a
|
|
xor a
|
|
ld [hLYOverrideStart], a
|
|
ld a, $60
|
|
ld [hLYOverrideEnd], a
|
|
ret
|
|
|
|
.one
|
|
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, .player
|
|
ld hl, .CGB_DMGEnemyData
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld [wOBP1], a
|
|
ld d, a
|
|
ld e, [hl]
|
|
lb bc, $2f, $30
|
|
jr .okay
|
|
|
|
.player
|
|
ld hl, .DMG_PlayerData
|
|
add hl, de
|
|
ld d, [hl]
|
|
inc hl
|
|
ld a, [hl]
|
|
ld [wOBP1], a
|
|
ld e, a
|
|
lb bc, $37, $28
|
|
.okay
|
|
call .DMG_LYOverrideLoads
|
|
pop bc
|
|
ret
|
|
|
|
.two
|
|
call BattleBGEffects_ResetVideoHRAM
|
|
ld a, $e4
|
|
ld [wBGP], a
|
|
ld [wOBP1], a
|
|
ret
|
|
|
|
.DMG_LYOverrideLoads:
|
|
ld hl, LYOverridesBackup
|
|
.loop1
|
|
ld [hl], d
|
|
inc hl
|
|
dec b
|
|
jr nz, .loop1
|
|
.loop2
|
|
ld [hl], e
|
|
inc hl
|
|
dec c
|
|
jr nz, .loop2
|
|
ret
|
|
|
|
.cgb
|
|
ld de, .Jumptable
|
|
call BatttleBGEffects_GetNamedJumptablePointer
|
|
jp hl
|
|
|
|
.Jumptable:
|
|
dw .cgb_zero
|
|
dw .cgb_one
|
|
dw .cgb_two
|
|
.cgb_zero
|
|
call BattleBGEffects_IncrementJumptable
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ret
|
|
|
|
.cgb_one
|
|
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, .player_2
|
|
ld hl, .CGB_DMGEnemyData
|
|
add hl, de
|
|
ld a, [hli]
|
|
push hl
|
|
call BGEffects_LoadBGPal1_OBPal0
|
|
pop hl
|
|
ld a, [hl]
|
|
call BGEffects_LoadBGPal0_OBPal1
|
|
ret
|
|
|
|
.player_2
|
|
ld hl, .CGB_DMGEnemyData
|
|
add hl, de
|
|
ld a, [hli]
|
|
push hl
|
|
call BGEffects_LoadBGPal0_OBPal1
|
|
pop hl
|
|
ld a, [hl]
|
|
call BGEffects_LoadBGPal1_OBPal0
|
|
ret
|
|
|
|
.cgb_two
|
|
ld a, $e4
|
|
call BGEffects_LoadBGPal0_OBPal1
|
|
ld a, $e4
|
|
call BGEffects_LoadBGPal1_OBPal0
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
.CGB_DMGEnemyData:
|
|
db $e4, $e4
|
|
db $f8, $90
|
|
db $fc, $40
|
|
db $f8, $90
|
|
.DMG_PlayerData:
|
|
db $e4, $e4
|
|
db $90, $f8
|
|
db $40, $fc
|
|
db $90, $f8
|
|
; c8be8
|
|
|
|
BattleBGEffect_RapidFlash: ; c8be8 (32:4be8)
|
|
ld de, .FlashPals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.FlashPals:
|
|
db $e4, $6c, $fe
|
|
; c8bf2
|
|
|
|
BattleBGEffect_16: ; c8bf2 (32:4bf2)
|
|
ld de, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
db $e4, $90, $40, $ff
|
|
; c8bfd
|
|
|
|
BattleBGEffect_17: ; c8bfd (32:4bfd)
|
|
ld de, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
db $e4, $f8, $fc, $ff
|
|
; c8c08
|
|
|
|
BattleBGEffect_18: ; c8c08 (32:4c08)
|
|
ld de, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
db $e4, $90, $40, $90, $fe
|
|
; c8c14
|
|
|
|
BattleBGEffect_19: ; c8c14 (32:4c14)
|
|
ld de, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
db $e4, $f8, $fc, $f8, $fe
|
|
; c8c20
|
|
|
|
BattleBGEffect_1a: ; c8c20 (32:4c20)
|
|
ld de, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe
|
|
; c8c30
|
|
|
|
BattleBGEffect_1b: ; c8c30 (32:4c30)
|
|
ld de, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
db $e4, $fc, $e4, $00, $fe
|
|
; c8c3c
|
|
|
|
BattleBGEffect_1d: ; c8c3c (32:4c3c)
|
|
ld de, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
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, .Pals
|
|
call BGEffect_RapidCyclePals
|
|
ret
|
|
|
|
.Pals:
|
|
db $00, $40, $90, $e4, $ff
|
|
; c8c61
|
|
|
|
BattleBGEffect_VibrateMon: ; c8c61 (32:4c61)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw .one
|
|
|
|
|
|
.zero ; c8c68 (32:4c68)
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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 ; c8c85 (32:4c85)
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .finish
|
|
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 BGEffect_FillLYOverridesBackup
|
|
ret
|
|
|
|
.finish
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2)
|
|
call BattleBGEffects_AnonJumptable
|
|
.anon_dw
|
|
dw .zero
|
|
dw .one
|
|
dw .two
|
|
|
|
|
|
.zero ; c8cab (32:4cab)
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_ClearLYOverrides
|
|
ld a, rSCX - $ff00
|
|
ld [hLCDCPointer], a
|
|
xor a
|
|
ld [hLYOverrideStart], a
|
|
ld a, $37
|
|
ld [hLYOverrideEnd], a
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ret
|
|
|
|
.one ; c8cc3 (32:4cc3)
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $40
|
|
jr nc, .two
|
|
ld d, $6
|
|
call BattleBGEffects_Sine
|
|
call BGEffect_FillLYOverridesBackup
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add $2
|
|
ld [hl], a
|
|
ret
|
|
|
|
.two ; c8cdd (32:4cdd)
|
|
call BattleAnim_ResetLCDStatCustom
|
|
ret
|
|
|
|
BattleBGEffect_2e: ; c8ce1 (32:4ce1)
|
|
call Functionc8d0b
|
|
jr c, .xor_a
|
|
bit 7, a
|
|
jr z, .okay
|
|
.xor_a
|
|
xor a
|
|
.okay
|
|
push af
|
|
call DelayFrame
|
|
pop af
|
|
ld [hSCY], a
|
|
xor $ff
|
|
inc a
|
|
ld [AnimObject01_YOffset], a
|
|
ret
|
|
|
|
BattleBGEffect_1f: ; c8cf9 (32:4cf9)
|
|
call Functionc8d0b
|
|
jr nc, .skip
|
|
xor a
|
|
.skip
|
|
ld [hSCX], a
|
|
ret
|
|
|
|
BattleBGEffect_20: ; c8d02 (32:4d02)
|
|
call Functionc8d0b
|
|
jr nc, .skip
|
|
xor a
|
|
.skip
|
|
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, .okay
|
|
call EndBattleBGEffect
|
|
scf
|
|
ret
|
|
|
|
.okay
|
|
dec [hl]
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $f
|
|
jr z, .every_16_frames
|
|
dec [hl]
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
ret
|
|
|
|
.every_16_frames
|
|
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, .finish
|
|
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
|
|
|
|
.finish
|
|
xor a
|
|
ld [hSCX], a
|
|
ret
|
|
|
|
BattleBGEffect_GetNthDMGPal: ; c8d57 (32:4d57)
|
|
ld hl, BG_EFFECT_STRUCT_JT_INDEX
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .zero
|
|
dec [hl]
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
call BattleBGEffect_GetNextDMGPal
|
|
ret
|
|
|
|
.zero
|
|
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 BattleBGEffect_GetFirstDMGPal
|
|
ret
|
|
|
|
BGEffect_RapidCyclePals: ; c8d77 (32:4d77)
|
|
ld a, [hCGB]
|
|
and a
|
|
jr nz, .cgb
|
|
push de
|
|
ld de, .Jumptable_DMG
|
|
call BatttleBGEffects_GetNamedJumptablePointer
|
|
pop de
|
|
jp hl
|
|
|
|
.Jumptable_DMG:
|
|
dw .zero_dmg
|
|
dw .one_dmg
|
|
dw .two_dmg
|
|
|
|
|
|
.zero_dmg ; c8d8b (32:4d8b)
|
|
call BattleBGEffects_IncrementJumptable
|
|
ld a, $e4
|
|
call BattleBGEffects_SetLYOverrides
|
|
ld a, $47
|
|
call BattleBGEffect_SetLCDStatCustoms1
|
|
ld a, [hLYOverrideEnd]
|
|
inc a
|
|
ld [hLYOverrideEnd], 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
|
|
|
|
.one_dmg ; c8daa (32:4daa)
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $f
|
|
jr z, .okay_1_dmg
|
|
dec [hl]
|
|
ret
|
|
|
|
.okay_1_dmg
|
|
ld a, [hl]
|
|
swap a
|
|
or [hl]
|
|
ld [hl], a
|
|
call BattleBGEffect_GetFirstDMGPal
|
|
jr c, .okay_2_dmg
|
|
call BGEffect_FillLYOverridesBackup
|
|
ret
|
|
|
|
.okay_2_dmg
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
dec [hl]
|
|
ret
|
|
|
|
.two_dmg ; c8dc9 (32:4dc9)
|
|
call BattleBGEffects_ResetVideoHRAM
|
|
ld a, %11100100
|
|
ld [rBGP], a
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
.cgb
|
|
push de
|
|
ld de, .Jumptable_CGB
|
|
call BatttleBGEffects_GetNamedJumptablePointer
|
|
pop de
|
|
jp hl
|
|
|
|
.Jumptable_CGB: ; c8ddd (32:4ddd)
|
|
dw .zero_cgb
|
|
dw .one_cgb
|
|
dw .two_cgb
|
|
dw .three_cgb
|
|
dw .four_cgb
|
|
|
|
|
|
.zero_cgb ; c8de7 (32:4de7)
|
|
call BGEffect_CheckBattleTurn
|
|
jr nz, .player_turn_cgb
|
|
call BattleBGEffects_IncrementJumptable
|
|
call BattleBGEffects_IncrementJumptable
|
|
.player_turn_cgb
|
|
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
|
|
|
|
.one_cgb ; c8e02 (32:4e02)
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $f
|
|
jr z, .okay_1_cgb
|
|
dec [hl]
|
|
ret
|
|
|
|
.okay_1_cgb
|
|
ld a, [hl]
|
|
swap a
|
|
or [hl]
|
|
ld [hl], a
|
|
call BattleBGEffect_GetFirstDMGPal
|
|
jr c, .okay_2_cgb
|
|
call BGEffects_LoadBGPal0_OBPal1
|
|
ret
|
|
|
|
.okay_2_cgb
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
dec [hl]
|
|
ret
|
|
|
|
.two_cgb ; c8e21 (32:4e21)
|
|
ld a, $e4
|
|
call BGEffects_LoadBGPal0_OBPal1
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
.three_cgb ; c8e2a (32:4e2a)
|
|
ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $f
|
|
jr z, .okay_3_cgb
|
|
dec [hl]
|
|
ret
|
|
|
|
.okay_3_cgb
|
|
ld a, [hl]
|
|
swap a
|
|
or [hl]
|
|
ld [hl], a
|
|
call BattleBGEffect_GetFirstDMGPal
|
|
jr c, .okay_4_cgb
|
|
call BGEffects_LoadBGPal1_OBPal0
|
|
ret
|
|
|
|
.okay_4_cgb
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
dec [hl]
|
|
ret
|
|
|
|
.four_cgb ; c8e49 (32:4e49)
|
|
ld a, $e4
|
|
call BGEffects_LoadBGPal1_OBPal0
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
BGEffects_LoadBGPal0_OBPal1: ; 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
|
|
ld de, UnknBGPals
|
|
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
|
|
|
|
BGEffects_LoadBGPal1_OBPal0: ; 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
|
|
|
|
BattleBGEffect_GetFirstDMGPal: ; c8eac (32:4eac)
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld a, [hl]
|
|
inc [hl]
|
|
BattleBGEffect_GetNextDMGPal: ; c8eb2 (32:4eb2)
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp -1
|
|
jr z, .quit
|
|
cp -2
|
|
jr nz, .repeat
|
|
ld a, [de]
|
|
ld hl, BG_EFFECT_STRUCT_03
|
|
add hl, bc
|
|
ld [hl], $0
|
|
.repeat
|
|
and a
|
|
ret
|
|
|
|
.quit
|
|
scf
|
|
ret
|
|
|
|
BattleBGEffects_ClearLYOverrides: ; c8eca (32:4eca)
|
|
xor a
|
|
BattleBGEffects_SetLYOverrides: ; c8ecb (32:4ecb)
|
|
ld hl, LYOverrides ; wListPointer
|
|
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
|
|
|
|
BattleBGEffect_SetLCDStatCustoms1: ; c8ede (32:4ede)
|
|
ld [hLCDCPointer], a
|
|
call BGEffect_CheckBattleTurn
|
|
jr nz, .player_turn
|
|
lb de, $00, $36
|
|
jr .okay
|
|
|
|
.player_turn
|
|
lb de, $2f, $5e
|
|
.okay
|
|
ld a, d
|
|
ld [hLYOverrideStart], a
|
|
ld a, e
|
|
ld [hLYOverrideEnd], a
|
|
ret
|
|
|
|
BattleBGEffect_SetLCDStatCustoms2: ; c8ef4 (32:4ef4)
|
|
ld [hLCDCPointer], a
|
|
call BGEffect_CheckBattleTurn
|
|
jr nz, .player_turn
|
|
lb de, $00, $36
|
|
jr .okay
|
|
|
|
.player_turn
|
|
lb de, $2d, $5e
|
|
.okay
|
|
ld a, d
|
|
ld [hLYOverrideStart], a
|
|
ld a, e
|
|
ld [hLYOverrideEnd], a
|
|
ret
|
|
|
|
BattleAnim_ResetLCDStatCustom: ; c8f0a (32:4f0a)
|
|
xor a
|
|
ld [hLYOverrideStart], a
|
|
ld [hLYOverrideEnd], a
|
|
call BattleBGEffects_ClearLYOverrides
|
|
xor a
|
|
ld [hLCDCPointer], a
|
|
call EndBattleBGEffect
|
|
ret
|
|
|
|
BattleBGEffects_ResetVideoHRAM: ; c8f19 (32:4f19)
|
|
xor a
|
|
ld [hLCDCPointer], a
|
|
ld a, %11100100
|
|
ld [rBGP], a
|
|
ld [wBGP], a
|
|
ld [wOBP1], a
|
|
ld [hLYOverrideStart], a
|
|
ld [hLYOverrideEnd], 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, [hLYOverrideStart]
|
|
cp c
|
|
jr nc, .next
|
|
ld a, [hLYOverrideEnd]
|
|
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, [hLYOverrideEnd]
|
|
cp c
|
|
jr c, .skip1
|
|
ld a, e
|
|
ld [bc], a
|
|
inc bc
|
|
.skip1
|
|
ld a, [hLYOverrideStart]
|
|
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, [hLYOverrideStart]
|
|
ld e, a
|
|
ld a, [wBattleAnimTemp0]
|
|
add e
|
|
ld e, a
|
|
ld d, $0
|
|
ret
|
|
|
|
BattleBGEffect_WavyScreenFX: ; c8fef (32:4fef)
|
|
push bc
|
|
ld a, [hLYOverrideStart]
|
|
ld l, a
|
|
inc a
|
|
ld e, a
|
|
ld h, HIGH(LYOverridesBackup)
|
|
ld d, h
|
|
ld a, [hLYOverrideEnd]
|
|
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
|
|
|
|
BGEffect_FillLYOverridesBackup: ; c900b (32:500b)
|
|
push af
|
|
ld h, HIGH(LYOverridesBackup)
|
|
ld a, [hLYOverrideStart]
|
|
ld l, a
|
|
ld a, [hLYOverrideEnd]
|
|
sub l
|
|
ld d, a
|
|
pop af
|
|
.loop
|
|
ld [hli], a
|
|
dec d
|
|
jr nz, .loop
|
|
ret
|
|
|
|
BGEffect_DisplaceLYOverridesBackup: ; c901b (32:501b)
|
|
; e = a; d = [hLYOverrideEnd] - [hLYOverrideStart] - a
|
|
push af
|
|
ld e, a
|
|
ld a, [hLYOverrideStart]
|
|
ld l, a
|
|
ld a, [hLYOverrideEnd]
|
|
sub l
|
|
sub e
|
|
ld d, a
|
|
ld h, HIGH(LYOverridesBackup)
|
|
ld a, [hLYOverrideStart]
|
|
ld l, a
|
|
ld a, $90
|
|
.loop
|
|
ld [hli], a
|
|
dec e
|
|
jr nz, .loop
|
|
pop af
|
|
xor $ff
|
|
.loop2
|
|
ld [hli], a
|
|
dec d
|
|
jr nz, .loop2
|
|
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
|
|
callfar BattleAnim_Sine_e
|
|
ld a, e
|
|
ret
|
|
|
|
BattleBGEffects_Cosine: ; c9066 (32:5066)
|
|
ld e, a
|
|
callfar BattleAnim_Cosine_e
|
|
ld a, e
|
|
ret
|
|
|
|
; c906f (32:506f)
|