diff options
Diffstat (limited to 'battle/effect_commands.asm')
-rw-r--r-- | battle/effect_commands.asm | 165 |
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 |