summaryrefslogtreecommitdiff
path: root/battle/effect_commands.asm
diff options
context:
space:
mode:
Diffstat (limited to 'battle/effect_commands.asm')
-rw-r--r--battle/effect_commands.asm165
1 files changed, 84 insertions, 81 deletions
diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm
index 23ff3deaf..86b8cc080 100644
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -70,25 +70,25 @@ DoMove: ; 3402c
; Start at the first command.
ld hl, BattleScriptBuffer
ld a, l
- ld [BattleScriptBufferLoc], a
+ ld [BattleScriptBufferAddress], a
ld a, h
- ld [BattleScriptBufferLoc + 1], a
+ ld [BattleScriptBufferAddress + 1], a
.ReadMoveEffectCommand:
-; ld a, [BattleScriptBufferLoc++]
- ld a, [BattleScriptBufferLoc]
+; ld a, [BattleScriptBufferAddress++]
+ ld a, [BattleScriptBufferAddress]
ld l, a
- ld a, [BattleScriptBufferLoc + 1]
+ ld a, [BattleScriptBufferAddress + 1]
ld h, a
ld a, [hli]
push af
ld a, l
- ld [BattleScriptBufferLoc], a
+ ld [BattleScriptBufferAddress], a
ld a, h
- ld [BattleScriptBufferLoc + 1], a
+ ld [BattleScriptBufferAddress + 1], a
pop af
; endturn_command (-2) is used to terminate branches without ending the read cycle.
@@ -1016,7 +1016,7 @@ IgnoreSleepOnly: ; 3451f
BattleCommand_UsedMoveText: ; 34541
; usedmovetext
- callba DisplayUsedMoveText
+ farcall DisplayUsedMoveText
ret
; 34548
@@ -1385,14 +1385,14 @@ BattleCommand_Stab: ; 346d2
push hl
push de
push bc
- callba DoWeatherModifiers
+ farcall DoWeatherModifiers
pop bc
pop de
pop hl
push de
push bc
- callba DoBadgeTypeBoosts
+ farcall DoBadgeTypeBoosts
pop bc
pop de
@@ -2103,7 +2103,7 @@ BattleCommand_LowerSub: ; 34eee
xor a
ld [wNumHits], a
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
inc a
ld [wKickCounter], a
ld a, SUBSTITUTE
@@ -2280,7 +2280,7 @@ BattleCommand_RaiseSub: ; 35004
xor a
ld [wNumHits], a
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
ld a, $2
ld [wKickCounter], a
ld a, SUBSTITUTE
@@ -2645,7 +2645,7 @@ BattleCommand_CheckDestinyBond: ; 351c0
call BattleCommand_SwitchTurn
xor a
ld [wNumHits], a
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
inc a
ld [wKickCounter], a
ld a, DESTINY_BOND
@@ -2743,9 +2743,9 @@ BattleCommand_RageDamage: ; 3527b
EndMoveEffect: ; 352a3
- ld a, [BattleScriptBufferLoc]
+ ld a, [BattleScriptBufferAddress]
ld l, a
- ld a, [BattleScriptBufferLoc + 1]
+ ld a, [BattleScriptBufferAddress + 1]
ld h, a
ld a, $ff
ld [hli], a
@@ -3191,6 +3191,8 @@ BattleCommand_BeatUp: ; 35461
ld a, [wd002]
ld c, a
ld a, [CurBattleMon]
+ ; BUG: this can desynchronize link battles
+ ; Change "cp [hl]" to "cp c" to fix
cp [hl]
ld hl, BattleMonStatus
jr z, .active_mon
@@ -3860,7 +3862,7 @@ BattleCommand_Counter: ; 35813
ret z
ld b, a
- callab GetMoveEffect
+ callfar GetMoveEffect
ld a, b
cp EFFECT_COUNTER
ret z
@@ -3879,11 +3881,11 @@ BattleCommand_Counter: ; 35813
ld de, StringBuffer1
call GetMoveData
- ld a, [StringBuffer1 + 2]
+ ld a, [StringBuffer1 + MOVE_POWER]
and a
ret z
- ld a, [StringBuffer1 + 3]
+ ld a, [StringBuffer1 + MOVE_TYPE]
cp SPECIAL
ret nc
@@ -4066,7 +4068,7 @@ BattleCommand_PainSplit: ; 35926
call ResetDamage
hlcoord 2, 2
predef AnimateHPBar
- callba _UpdateBattleHUDs
+ farcall _UpdateBattleHUDs
ld hl, SharedPainText
jp StdBattleTextBox
@@ -4516,7 +4518,7 @@ BattleCommand_SleepTalk: ; 35b33
push bc
ld b, a
- callab GetMoveEffect
+ callfar GetMoveEffect
ld a, b
pop bc
@@ -4738,14 +4740,14 @@ FarPlayBattleAnimation: ; 35d00
PlayFXAnimID: ; 35d08
ld a, e
- ld [FXAnimIDLo], a
+ ld [FXAnimID], a
ld a, d
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
ld c, 3
call DelayFrames
- callab PlayBattleAnim
+ callfar PlayBattleAnim
ret
@@ -5015,7 +5017,7 @@ BattleCommand_SleepTarget: ; 35e5c
ld hl, FellAsleepText
call StdBattleTextBox
- callba UseHeldStatusHealingItem
+ farcall UseHeldStatusHealingItem
jp z, OpponentCantMove
ret
@@ -5092,7 +5094,7 @@ BattleCommand_PoisonTarget: ; 35eee
ld hl, WasPoisonedText
call StdBattleTextBox
- callba UseHeldStatusHealingItem
+ farcall UseHeldStatusHealingItem
ret
; 35f2c
@@ -5177,7 +5179,7 @@ BattleCommand_Poison: ; 35f2c
call StdBattleTextBox
.finished
- callba UseHeldStatusHealingItem
+ farcall UseHeldStatusHealingItem
ret
.failed
@@ -5380,7 +5382,7 @@ BattleCommand_BurnTarget: ; 3608c
ld hl, WasBurnedText
call StdBattleTextBox
- callba UseHeldStatusHealingItem
+ farcall UseHeldStatusHealingItem
ret
; 360dd
@@ -5453,7 +5455,7 @@ BattleCommand_FreezeTarget: ; 36102
ld hl, WasFrozenText
call StdBattleTextBox
- callba UseHeldStatusHealingItem
+ farcall UseHeldStatusHealingItem
ret nz
call OpponentCantMove
@@ -5649,10 +5651,10 @@ CheckIfStatCanBeRaised: ; 361ef
.no_carry
pop bc
ld a, [hld]
- sub 999 % $100
+ sub MAX_STAT_VALUE % $100
jr nz, .not_already_max
ld a, [hl]
- sbc 999 / $100
+ sbc MAX_STAT_VALUE / $100
jp z, .stats_already_max
.not_already_max
ld a, [hBattleTurn]
@@ -6297,11 +6299,11 @@ BattleCommand_Curl: ; 365a7
BattleCommand_RaiseSubNoAnim: ; 365af
- ld hl, GetMonBackpic
+ ld hl, GetBattleMonBackpic
ld a, [hBattleTurn]
and a
jr z, .PlayerTurn
- ld hl, GetMonFrontpic
+ ld hl, GetEnemyMonFrontpic
.PlayerTurn:
xor a
ld [hBGMapMode], a
@@ -6415,14 +6417,14 @@ CalcStats: ; 3661d
.check_maxed_out
ld a, [hQuotient + 2]
- cp 999 % $100
+ cp MAX_STAT_VALUE % $100
ld a, b
- sbc 999 / $100
+ sbc MAX_STAT_VALUE / $100
jr c, .not_maxed_out
- ld a, 999 % $100
+ ld a, MAX_STAT_VALUE % $100
ld [hQuotient + 2], a
- ld a, 999 / $100
+ ld a, MAX_STAT_VALUE / $100
ld [hQuotient + 1], a
.not_maxed_out
@@ -6814,7 +6816,7 @@ BattleCommand_ForceSwitch: ; 3680f
ld a, d
inc a
ld [wEnemySwitchMonIndex], a
- callab ForceEnemySwitch
+ callfar ForceEnemySwitch
ld hl, DraggedOutText
call StdBattleTextBox
@@ -7097,9 +7099,9 @@ BattleCommand_EndLoop: ; 369b6
; Loop back to the command before 'critical'.
.loop_back_to_critical
- ld a, [BattleScriptBufferLoc + 1]
+ ld a, [BattleScriptBufferAddress + 1]
ld h, a
- ld a, [BattleScriptBufferLoc]
+ ld a, [BattleScriptBufferAddress]
ld l, a
.not_critical
ld a, [hld]
@@ -7107,9 +7109,9 @@ BattleCommand_EndLoop: ; 369b6
jr nz, .not_critical
inc hl
ld a, h
- ld [BattleScriptBufferLoc + 1], a
+ ld [BattleScriptBufferAddress + 1], a
ld a, l
- ld [BattleScriptBufferLoc], a
+ ld [BattleScriptBufferAddress], a
ret
; 36a82
@@ -7182,7 +7184,7 @@ CheckOpponentWentFirst: ; 36abf
; 36ac9
-BattleCommand_KingsRock: ; 36ac9
+BattleCommand_HeldFlinch: ; 36ac9
; kingsrock
ld a, [AttackMissed]
@@ -7191,7 +7193,7 @@ BattleCommand_KingsRock: ; 36ac9
call GetUserItem
ld a, b
- cp HELD_TRADE_EVOLVE ; Only King's Rock has this effect
+ cp HELD_FLINCH
ret nz
call CheckSubstituteOpp
@@ -7882,7 +7884,7 @@ BattleCommand_Substitute: ; 36e7c
xor a
ld [wNumHits], a
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
ld [wKickCounter], a
ld a, SUBSTITUTE
call LoadAnim
@@ -8079,7 +8081,7 @@ BattleCommand_LeechSeed: ; 36f9d
BattleCommand_Splash: ; 36fe1
call AnimateCurrentMove
- callba TrainerRankings_Splash
+ farcall TrainerRankings_Splash
jp PrintNothingHappened
; 36fed
@@ -8283,7 +8285,7 @@ BattleCommand_Conversion: ; 3707f
inc de
ld [de], a
ld [wNamedObjectIndexBuffer], a
- callba GetTypeName
+ farcall GetTypeName
call AnimateCurrentMove
ld hl, TransformedTypeText
jp StdBattleTextBox
@@ -8606,7 +8608,7 @@ CheckSubstituteOpp: ; 37378
BattleCommand_Selfdestruct: ; 37380
- callba TrainerRankings_Selfdestruct
+ farcall TrainerRankings_Selfdestruct
ld a, BATTLEANIM_PLAYER_DAMAGE
ld [wNumHits], a
ld c, 3
@@ -8630,8 +8632,8 @@ BattleCommand_Selfdestruct: ; 37380
res SUBSTATUS_DESTINY_BOND, [hl]
call _CheckBattleScene
ret nc
- callba DrawPlayerHUD
- callba DrawEnemyHUD
+ farcall DrawPlayerHUD
+ farcall DrawEnemyHUD
call WaitBGMap
jp RefreshBattleHuds
@@ -9030,13 +9032,13 @@ BattleCommand_BatonPass: ; 379c9
; Transition into switchmon menu
call LoadStandardMenuDataHeader
- callba SetUpBattlePartyMenu_NoLoop
+ farcall SetUpBattlePartyMenu_NoLoop
- callba ForcePickSwitchMonInBattle
+ farcall ForcePickSwitchMonInBattle
; Return to battle scene
call ClearPalettes
- callba _LoadBattleFontsHPBar
+ farcall _LoadBattleFontsHPBar
call CloseWindow
call ClearSprites
hlcoord 1, 0
@@ -9048,7 +9050,7 @@ BattleCommand_BatonPass: ; 379c9
call BatonPass_LinkPlayerSwitch
; Mobile link battles handle entrances differently
- callba CheckMobileBattleError
+ farcall CheckMobileBattleError
jp c, EndMoveEffect
ld hl, PassedBattleMonEntrance
@@ -9073,7 +9075,7 @@ BattleCommand_BatonPass: ; 379c9
call BatonPass_LinkEnemySwitch
; Mobile link battles handle entrances differently
- callba CheckMobileBattleError
+ farcall CheckMobileBattleError
jp c, EndMoveEffect
; Passed enemy PartyMon entrance
@@ -9323,21 +9325,21 @@ BattleCommand_ClearHazards: ; 37b39
BattleCommand_HealMorn: ; 37b74
; healmorn
- ld b, MORN
+ ld b, MORN_F
jr BattleCommand_TimeBasedHealContinue
; 37b78
BattleCommand_HealDay: ; 37b78
; healday
- ld b, DAY
+ ld b, DAY_F
jr BattleCommand_TimeBasedHealContinue
; 37b7c
BattleCommand_HealNite: ; 37b7c
; healnite
- ld b, NITE
+ ld b, NITE_F
; fallthrough
; 37b7e
@@ -9401,7 +9403,7 @@ BattleCommand_TimeBasedHealContinue: ; 37b7e
call AnimateCurrentMove
call BattleCommand_SwitchTurn
- callab RestoreHP
+ callfar RestoreHP
call BattleCommand_SwitchTurn
call UpdateUserInParty
@@ -9431,7 +9433,7 @@ BattleCommand_HiddenPower: ; 37be8
ld a, [AttackMissed]
and a
ret nz
- callba HiddenPowerDamage
+ farcall HiddenPowerDamage
ret
; 37bf4
@@ -9473,14 +9475,14 @@ BattleCommand_BellyDrum: ; 37c1a
and a
jr nz, .failed
- callab GetHalfMaxHP
- callab CheckUserHasEnoughHP
+ callfar GetHalfMaxHP
+ callfar CheckUserHasEnoughHP
jr nc, .failed
push bc
call AnimateCurrentMove
pop bc
- callab SubtractHPFromUser
+ callfar SubtractHPFromUser
call UpdateUserInParty
ld a, 5
@@ -9566,7 +9568,7 @@ BattleCommand_MirrorCoat: ; 37c95
ret z
ld b, a
- callab GetMoveEffect
+ callfar GetMoveEffect
ld a, b
cp EFFECT_MIRROR_COAT
ret z
@@ -9763,6 +9765,7 @@ BattleCommand_ThunderAccuracy: ; 37d94
CheckHiddenOpponent: ; 37daa
+; BUG: This routine should account for Lock-On and Mind Reader.
ld a, BATTLE_VARS_SUBSTATUS3_OPP
call GetBattleVar
and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
@@ -9806,11 +9809,11 @@ GetItemHeldEffect: ; 37dd0
ret z
push hl
- ld hl, ItemAttributes + 2
+ ld hl, ItemAttributes + ITEMATTR_EFFECT
dec a
ld c, a
ld b, 0
- ld a, Item2Attributes - Item1Attributes
+ ld a, ITEMATTR_STRUCT_LENGTH
call AddNTimes
ld a, BANK(ItemAttributes)
call GetFarHalfword
@@ -9862,14 +9865,14 @@ AnimateCurrentMove: ; 37e01
PlayDamageAnim: ; 37e19
xor a
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
ld a, BATTLE_VARS_MOVE_ANIM
call GetBattleVar
and a
ret z
- ld [FXAnimIDLo], a
+ ld [FXAnimID], a
ld a, [hBattleTurn]
and a
@@ -9888,7 +9891,7 @@ PlayDamageAnim: ; 37e19
LoadMoveAnim: ; 37e36
xor a
ld [wNumHits], a
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
ld a, BATTLE_VARS_MOVE_ANIM
call GetBattleVar
@@ -9901,7 +9904,7 @@ LoadMoveAnim: ; 37e36
LoadAnim: ; 37e44
- ld [FXAnimIDLo], a
+ ld [FXAnimID], a
; fallthrough
; 37e47
@@ -9911,7 +9914,7 @@ PlayUserBattleAnim: ; 37e47
push hl
push de
push bc
- callab PlayBattleAnim
+ callfar PlayBattleAnim
pop bc
pop de
pop hl
@@ -9922,9 +9925,9 @@ PlayUserBattleAnim: ; 37e47
PlayOpponentBattleAnim: ; 37e54
ld a, e
- ld [FXAnimIDLo], a
+ ld [FXAnimID], a
ld a, d
- ld [FXAnimIDHi], a
+ ld [FXAnimID + 1], a
xor a
ld [wNumHits], a
@@ -9933,7 +9936,7 @@ PlayOpponentBattleAnim: ; 37e54
push bc
call BattleCommand_SwitchTurn
- callab PlayBattleAnim
+ callfar PlayBattleAnim
call BattleCommand_SwitchTurn
pop bc
@@ -9983,9 +9986,9 @@ BattleCommand_ClearText: ; 37e85
SkipToBattleCommand: ; 37e8c
; Skip over commands until reaching command b.
- ld a, [BattleScriptBufferLoc + 1]
+ ld a, [BattleScriptBufferAddress + 1]
ld h, a
- ld a, [BattleScriptBufferLoc]
+ ld a, [BattleScriptBufferAddress]
ld l, a
.loop
ld a, [hli]
@@ -9993,9 +9996,9 @@ SkipToBattleCommand: ; 37e8c
jr nz, .loop
ld a, h
- ld [BattleScriptBufferLoc + 1], a
+ ld [BattleScriptBufferAddress + 1], a
ld a, l
- ld [BattleScriptBufferLoc], a
+ ld [BattleScriptBufferAddress], a
ret
; 37ea1
@@ -10032,21 +10035,21 @@ GetMoveByte: ; 37ebb
DisappearUser: ; 37ec0
- callba _DisappearUser
+ farcall _DisappearUser
ret
; 37ec7
AppearUserLowerSub: ; 37ec7
- callba _AppearUserLowerSub
+ farcall _AppearUserLowerSub
ret
; 37ece
AppearUserRaiseSub: ; 37ece
- callba _AppearUserRaiseSub
+ farcall _AppearUserRaiseSub
ret
; 37ed5
@@ -10057,7 +10060,7 @@ _CheckBattleScene: ; 37ed5
push hl
push de
push bc
- callba CheckBattleScene
+ farcall CheckBattleScene
pop bc
pop de
pop hl