diff options
Diffstat (limited to 'engine/battle/effect_commands.asm')
-rw-r--r-- | engine/battle/effect_commands.asm | 1037 |
1 files changed, 222 insertions, 815 deletions
diff --git a/engine/battle/effect_commands.asm b/engine/battle/effect_commands.asm index fad5b27a0..eb30af88b 100644 --- a/engine/battle/effect_commands.asm +++ b/engine/battle/effect_commands.asm @@ -1,4 +1,4 @@ -DoPlayerTurn: ; 34000 +DoPlayerTurn: call SetPlayerTurn ld a, [wBattlePlayerAction] @@ -7,10 +7,7 @@ DoPlayerTurn: ; 34000 jr DoTurn -; 3400a - - -DoEnemyTurn: ; 3400a +DoEnemyTurn: call SetEnemyTurn ld a, [wLinkMode] @@ -24,10 +21,8 @@ DoEnemyTurn: ; 3400a ret nc ; fallthrough -; 3401d - -DoTurn: ; 3401d +DoTurn: ; Read in and execute the user's move effects for this turn. xor a @@ -41,10 +36,8 @@ DoTurn: ; 3401d ret nz call UpdateMoveData -; 3402c - -DoMove: ; 3402c +DoMove: ; Get the user's move effect. ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar @@ -64,7 +57,7 @@ DoMove: ; 3402c inc hl ld [de], a inc de - cp -1 + cp endmove_command jr nz, .GetMoveEffect ; Start at the first command. @@ -75,7 +68,6 @@ DoMove: ; 3402c ld [wBattleScriptBufferAddress + 1], a .ReadMoveEffectCommand: - ; ld a, [wBattleScriptBufferAddress++] ld a, [wBattleScriptBufferAddress] ld l, a @@ -115,11 +107,8 @@ DoMove: ; 3402c .DoMoveEffectCommand: jp hl -; 34084 - - CheckTurn: -BattleCommand_CheckTurn: ; 34084 +BattleCommand_CheckTurn: ; checkturn ; Repurposed as hardcoded turn handling. Useless as a command. @@ -145,9 +134,7 @@ BattleCommand_CheckTurn: ; 34084 and a jp nz, CheckEnemyTurn - CheckPlayerTurn: - ld hl, wPlayerSubStatus4 bit SUBSTATUS_RECHARGE, [hl] jr z, .no_recharge @@ -160,7 +147,6 @@ CheckPlayerTurn: .no_recharge - ld hl, wBattleMonStatus ld a, [hl] and SLP @@ -206,7 +192,6 @@ CheckPlayerTurn: .not_asleep - ld hl, wBattleMonStatus bit FRZ, [hl] jr z, .not_frozen @@ -226,7 +211,6 @@ CheckPlayerTurn: .not_frozen - ld hl, wPlayerSubStatus3 bit SUBSTATUS_FLINCHED, [hl] jr z, .not_flinched @@ -240,7 +224,6 @@ CheckPlayerTurn: .not_flinched - ld hl, wPlayerDisableCount ld a, [hl] and a @@ -258,7 +241,6 @@ CheckPlayerTurn: .not_disabled - ld a, [wPlayerSubStatus3] add a jr nc, .not_confused @@ -297,7 +279,6 @@ CheckPlayerTurn: .not_confused - ld a, [wPlayerSubStatus1] add a ; bit SUBSTATUS_ATTRACT jr nc, .not_infatuated @@ -321,7 +302,6 @@ CheckPlayerTurn: .not_infatuated - ; We can't disable a move that doesn't exist. ld a, [wDisabledMove] and a @@ -338,7 +318,6 @@ CheckPlayerTurn: .no_disabled_move - ld hl, wBattleMonStatus bit PAR, [hl] ret z @@ -353,10 +332,7 @@ CheckPlayerTurn: call CantMove jp EndTurn -; 341f0 - - -CantMove: ; 341f0 +CantMove: ld a, BATTLE_VARS_SUBSTATUS1 call GetBattleVarAddr res SUBSTATUS_ROLLOUT, [hl] @@ -364,7 +340,7 @@ CantMove: ; 341f0 ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVarAddr ld a, [hl] - and $ff ^ (1<<SUBSTATUS_BIDE + 1<<SUBSTATUS_RAMPAGE + 1<<SUBSTATUS_CHARGED) + and $ff ^ (1 << SUBSTATUS_BIDE | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_CHARGED) ld [hl], a call ResetFuryCutterCount @@ -382,21 +358,12 @@ CantMove: ; 341f0 res SUBSTATUS_FLYING, [hl] jp AppearUserRaiseSub -; 34216 - - - -OpponentCantMove: ; 34216 +OpponentCantMove: call BattleCommand_SwitchTurn call CantMove jp BattleCommand_SwitchTurn -; 3421f - - - -CheckEnemyTurn: ; 3421f - +CheckEnemyTurn: ld hl, wEnemySubStatus4 bit SUBSTATUS_RECHARGE, [hl] jr z, .no_recharge @@ -409,7 +376,6 @@ CheckEnemyTurn: ; 3421f .no_recharge - ld hl, wEnemyMonStatus ld a, [hl] and SLP @@ -453,7 +419,6 @@ CheckEnemyTurn: ; 3421f .not_asleep - ld hl, wEnemyMonStatus bit FRZ, [hl] jr z, .not_frozen @@ -472,7 +437,6 @@ CheckEnemyTurn: ; 3421f .not_frozen - ld hl, wEnemySubStatus3 bit SUBSTATUS_FLINCHED, [hl] jr z, .not_flinched @@ -486,7 +450,6 @@ CheckEnemyTurn: ; 3421f .not_flinched - ld hl, wEnemyDisableCount ld a, [hl] and a @@ -505,7 +468,6 @@ CheckEnemyTurn: ; 3421f .not_disabled - ld a, [wEnemySubStatus3] add a ; bit SUBSTATUS_CONFUSED jr nc, .not_confused @@ -520,7 +482,6 @@ CheckEnemyTurn: ; 3421f call StdBattleTextBox jr .not_confused - .confused ld hl, IsConfusedText call StdBattleTextBox @@ -564,7 +525,6 @@ CheckEnemyTurn: ; 3421f .not_confused - ld a, [wEnemySubStatus1] add a ; bit SUBSTATUS_ATTRACT jr nc, .not_infatuated @@ -588,7 +548,6 @@ CheckEnemyTurn: ; 3421f .not_infatuated - ; We can't disable a move that doesn't exist. ld a, [wEnemyDisabledMove] and a @@ -606,7 +565,6 @@ CheckEnemyTurn: ; 3421f .no_disabled_move - ld hl, wEnemyMonStatus bit PAR, [hl] ret z @@ -621,19 +579,13 @@ CheckEnemyTurn: ; 3421f call CantMove ; fallthrough -; 34385 - -EndTurn: ; 34385 +EndTurn: ld a, $1 ld [wTurnEnded], a jp ResetDamage -; 3438d - - -MoveDisabled: ; 3438d - +MoveDisabled: ; Make sure any charged moves fail ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVarAddr @@ -647,11 +599,7 @@ MoveDisabled: ; 3438d ld hl, DisabledMoveText jp StdBattleTextBox -; 343a5 - - -HitConfusion: ; 343a5 - +HitConfusion: ld hl, HurtItselfText call StdBattleTextBox @@ -680,10 +628,7 @@ HitConfusion: ; 343a5 call DoPlayerDamage jp BattleCommand_RaiseSub -; 343db - - -BattleCommand_CheckObedience: ; 343db +BattleCommand_CheckObedience: ; checkobedience ; Enemy can't disobey @@ -725,7 +670,6 @@ BattleCommand_CheckObedience: ; 343db cp [hl] ret z - .obeylevel ; The maximum obedience level is constrained by owned badges: ld hl, wJohtoBadges @@ -753,7 +697,6 @@ BattleCommand_CheckObedience: ; 343db ; no badges ld a, 10 - .getlevel ; c = obedience level ; d = monster level @@ -772,14 +715,12 @@ BattleCommand_CheckObedience: ; 343db jr nc, .checklevel ld b, $ff - .checklevel ; If the monster's level is lower than the obedience level, it will obey. ld a, c cp d ret nc - ; Random number from 0 to obedience level + monster level .rand1 call BattleRandom @@ -797,7 +738,6 @@ BattleCommand_CheckObedience: ; 343db call IgnoreSleepOnly ret c - ; Another random number from 0 to obedience level + monster level .rand2 call BattleRandom @@ -808,7 +748,6 @@ BattleCommand_CheckObedience: ; 343db cp c jr c, .UseInstead - ; No hope of using a move now. ; b = number of levels the monster is above the obedience level @@ -831,7 +770,6 @@ BattleCommand_CheckObedience: ; 343db call HitConfusion jp .EndDisobedience - .Nap: call BattleRandom add a @@ -844,7 +782,6 @@ BattleCommand_CheckObedience: ; 343db ld hl, BeganToNapText jr .Print - .DoNothing: ; 4 random choices call BattleRandom @@ -868,9 +805,7 @@ BattleCommand_CheckObedience: ; 343db call StdBattleTextBox jp .EndDisobedience - .UseInstead: - ; Can't use another move if the monster only has one! ld a, [wBattleMonMoves + 1] and a @@ -881,7 +816,6 @@ BattleCommand_CheckObedience: ; 343db and a jr nz, .DoNothing - ld hl, wBattleMonPP ld de, wBattleMonMoves ld b, 0 @@ -902,7 +836,6 @@ BattleCommand_CheckObedience: ; 343db and a jr nz, .GetTotalPP - .CheckMovePP: ld hl, wBattleMonPP ld a, [wCurMoveNum] @@ -916,7 +849,6 @@ BattleCommand_CheckObedience: ; 343db cp b jr z, .DoNothing - ; Make sure we can actually use the move once we get there. ld a, 1 ld [wAlreadyDisobeyed], a @@ -929,7 +861,6 @@ BattleCommand_CheckObedience: ; 343db ld c, a push af - .RandomMove: call BattleRandom maskbits NUM_MOVES @@ -951,7 +882,6 @@ BattleCommand_CheckObedience: ; 343db and PP_MASK jr z, .RandomMove - ; Use it. ld a, [wCurMoveNum] ld c, a @@ -965,12 +895,10 @@ BattleCommand_CheckObedience: ; 343db call UpdateMoveData call DoMove - ; Restore original move choice. pop af ld [wCurMoveNum], a - .EndDisobedience: xor a ld [wLastPlayerMove], a @@ -984,11 +912,7 @@ BattleCommand_CheckObedience: ; 343db jp EndMoveEffect -; 3451f - - -IgnoreSleepOnly: ; 3451f - +IgnoreSleepOnly: ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar @@ -1015,19 +939,12 @@ IgnoreSleepOnly: ; 3451f scf ret -; 34541 - - -BattleCommand_UsedMoveText: ; 34541 +BattleCommand_UsedMoveText: ; usedmovetext farcall DisplayUsedMoveText ret -; 34548 - - -CheckUserIsCharging: ; 34548 - +CheckUserIsCharging: ld a, [hBattleTurn] and a ld a, [wPlayerCharging] ; player @@ -1037,10 +954,7 @@ CheckUserIsCharging: ; 34548 and a ret -; 34555 - - -BattleCommand_DoTurn: ; 34555 +BattleCommand_DoTurn: call CheckUserIsCharging ret nz @@ -1165,9 +1079,7 @@ BattleCommand_DoTurn: ; 34555 ld b, 1 ret -; 34602 - -.continuousmoves ; 34602 +.continuousmoves db EFFECT_RAZOR_WIND db EFFECT_SKY_ATTACK db EFFECT_SKULL_BASH @@ -1177,9 +1089,8 @@ BattleCommand_DoTurn: ; 34555 db EFFECT_BIDE db EFFECT_RAMPAGE db -1 -; 3460b -CheckMimicUsed: ; 3460b +CheckMimicUsed: ld a, [hBattleTurn] and a ld a, [wCurMoveNum] @@ -1209,10 +1120,7 @@ CheckMimicUsed: ; 3460b and a ret -; 34631 - - -BattleCommand_Critical: ; 34631 +BattleCommand_Critical: ; critical ; Determine whether this attack's hit will be critical. @@ -1302,14 +1210,13 @@ BattleCommand_Critical: ; 34631 ld [wCriticalHit], a ret -INCLUDE "data/battle/critical_hits.asm" -; 346b2 +INCLUDE "data/moves/critical_hit_moves.asm" +INCLUDE "data/battle/critical_hit_chances.asm" INCLUDE "engine/battle/move_effects/triple_kick.asm" - -BattleCommand_Stab: ; 346d2 +BattleCommand_Stab: ; STAB = Same Type Attack Bonus ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar @@ -1493,16 +1400,13 @@ BattleCommand_Stab: ; 346d2 ld [wTypeModifier], a ret -; 347c8 - - -BattleCheckTypeMatchup: ; 347c8 +BattleCheckTypeMatchup: ld hl, wEnemyMonType1 ld a, [hBattleTurn] and a jr z, CheckTypeMatchup ld hl, wBattleMonType1 -CheckTypeMatchup: ; 347d3 +CheckTypeMatchup: ; There is an incorrect assumption about this function made in the AI related code: when ; the AI calls CheckTypeMatchup (not BattleCheckTypeMatchup), it assumes that placing the ; offensive type in a will make this function do the right thing. Since a is overwritten, @@ -1575,10 +1479,7 @@ CheckTypeMatchup: ; 347d3 pop hl ret -; 34833 - - -BattleCommand_ResetTypeMatchup: ; 34833 +BattleCommand_ResetTypeMatchup: ; Reset the type matchup multiplier to 1.0, if the type matchup is not 0. ; If there is immunity in play, the move automatically misses. call BattleCheckTypeMatchup @@ -1597,15 +1498,11 @@ BattleCommand_ResetTypeMatchup: ; 34833 ld [wTypeMatchup], a ret -; 3484e - - INCLUDE "engine/battle/ai/switch.asm" INCLUDE "data/types/type_matchups.asm" - -BattleCommand_DamageVariation: ; 34cfd +BattleCommand_DamageVariation: ; damagevariation ; Modify the damage spread between 85% and 100%. @@ -1614,7 +1511,6 @@ BattleCommand_DamageVariation: ; 34cfd ; is not consistent. This makes the highest damage multipliers ; rarer than normal. - ; No point in reducing 1 or 0 damage. ld hl, wCurDamage ld a, [hli] @@ -1658,10 +1554,7 @@ BattleCommand_DamageVariation: ; 34cfd ld [hl], a ret -; 34d32 - - -BattleCommand_CheckHit: ; 34d32 +BattleCommand_CheckHit: ; checkhit call .DreamEater @@ -1729,7 +1622,6 @@ BattleCommand_CheckHit: ; 34d32 .Hit: ret - .Miss: ; Keep the damage value intact if we're using (Hi) Jump Kick. ld a, BATTLE_VARS_MOVE_EFFECT @@ -1743,7 +1635,6 @@ BattleCommand_CheckHit: ; 34d32 ld [wAttackMissed], a ret - .DreamEater: ; Return z if we're trying to eat the dream of ; a monster that isn't sleeping. @@ -1757,7 +1648,6 @@ BattleCommand_CheckHit: ; 34d32 and SLP ret - .Protect: ; Return nz if the opponent is protected. ld a, BATTLE_VARS_SUBSTATUS1_OPP @@ -1779,7 +1669,6 @@ BattleCommand_CheckHit: ; 34d32 and a ret - .LockOn: ; Return nz if we are locked-on and aren't trying to use Earthquake, ; Fissure or Magnitude on a monster that is flying. @@ -1809,7 +1698,6 @@ BattleCommand_CheckHit: ; 34d32 and a ret - .DrainSub: ; Return z if using an HP drain move on a substitute. call CheckSubstituteOpp @@ -1828,7 +1716,6 @@ BattleCommand_CheckHit: ; 34d32 and a ret - .FlyDigMoves: ; Check for moves that can hit underground/flying opponents. ; Return z if the current move can hit the opponent. @@ -1864,7 +1751,6 @@ BattleCommand_CheckHit: ; 34d32 cp MAGNITUDE ret - .ThunderRain: ; Return z if the current move always hits in rain, and it is raining. ld a, BATTLE_VARS_MOVE_EFFECT @@ -1876,16 +1762,13 @@ BattleCommand_CheckHit: ; 34d32 cp WEATHER_RAIN ret - .XAccuracy: ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVar bit SUBSTATUS_X_ACCURACY, a ret - .StatModifiers: - ld a, [hBattleTurn] and a @@ -1977,10 +1860,8 @@ BattleCommand_CheckHit: ; 34d32 ret INCLUDE "data/battle/accuracy_multipliers.asm" -; 34ecc - -BattleCommand_EffectChance: ; 34ecc +BattleCommand_EffectChance: ; effectchance xor a @@ -2007,10 +1888,7 @@ BattleCommand_EffectChance: ; 34ecc and a ret -; 34eee - - -BattleCommand_LowerSub: ; 34eee +BattleCommand_LowerSub: ; lowersub ld a, BATTLE_VARS_SUBSTATUS4 @@ -2078,19 +1956,13 @@ BattleCommand_LowerSub: ; 34eee ld [wSomeoneIsRampaging], a ret -; 34f57 - - -BattleCommand_MoveAnim: ; 34f57 +BattleCommand_MoveAnim: ; moveanim call BattleCommand_LowerSub call BattleCommand_MoveAnimNoSub jp BattleCommand_RaiseSub -; 34f60 - - -BattleCommand_MoveAnimNoSub: ; 34f60 +BattleCommand_MoveAnimNoSub: ld a, [wAttackMissed] and a jp nz, BattleCommand_MoveDelay @@ -2154,10 +2026,7 @@ BattleCommand_MoveAnimNoSub: ; 34f60 ld [wNumHits], a jp PlayFXAnimID -; 34fd1 - - -BattleCommand_StatUpAnim: ; 34fd1 +BattleCommand_StatUpAnim: ld a, [wAttackMissed] and a jp nz, BattleCommand_MoveDelay @@ -2165,10 +2034,7 @@ BattleCommand_StatUpAnim: ; 34fd1 xor a jr BattleCommand_StatUpDownAnim -; 34fdb - - -BattleCommand_StatDownAnim: ; 34fdb +BattleCommand_StatDownAnim: ld a, [wAttackMissed] and a jp nz, BattleCommand_MoveDelay @@ -2180,10 +2046,8 @@ BattleCommand_StatDownAnim: ; 34fdb ld a, BATTLEANIM_WOBBLE ; fallthrough -; 34feb - -BattleCommand_StatUpDownAnim: ; 34feb +BattleCommand_StatUpDownAnim: ld [wNumHits], a xor a ld [wKickCounter], a @@ -2193,10 +2057,7 @@ BattleCommand_StatUpDownAnim: ; 34feb ld d, 0 jp PlayFXAnimID -; 34ffd - - -BattleCommand_SwitchTurn: ; 34ffd +BattleCommand_SwitchTurn: ; switchturn ld a, [hBattleTurn] @@ -2204,10 +2065,7 @@ BattleCommand_SwitchTurn: ; 34ffd ld [hBattleTurn], a ret -; 35004 - - -BattleCommand_RaiseSub: ; 35004 +BattleCommand_RaiseSub: ; raisesub ld a, BATTLE_VARS_SUBSTATUS4 @@ -2226,10 +2084,7 @@ BattleCommand_RaiseSub: ; 35004 ld a, SUBSTITUTE jp LoadAnim -; 35023 - - -BattleCommand_FailureText: ; 35023 +BattleCommand_FailureText: ; failuretext ; If the move missed or failed, load the appropriate ; text, and end the effects of multi-turn or multi- @@ -2271,10 +2126,7 @@ BattleCommand_FailureText: ; 35023 call AppearUserRaiseSub jp EndMoveEffect -; 3505e - - -BattleCommand_ApplyDamage: ; 3505e +BattleCommand_ApplyDamage: ; applydamage ld a, BATTLE_VARS_SUBSTATUS1_OPP @@ -2366,10 +2218,7 @@ BattleCommand_ApplyDamage: ; 3505e ld [de], a ret -; 350e4 - - -GetFailureResultText: ; 350e4 +GetFailureResultText: ld hl, DoesntAffectText ld de, DoesntAffectText ld a, [wTypeModifier] @@ -2427,7 +2276,7 @@ endr jp nz, DoEnemyDamage jp DoPlayerDamage -FailText_CheckOpponentProtect: ; 35157 +FailText_CheckOpponentProtect: ld a, BATTLE_VARS_SUBSTATUS1_OPP call GetBattleVar bit SUBSTATUS_PROTECT, a @@ -2437,10 +2286,7 @@ FailText_CheckOpponentProtect: ; 35157 .not_protected jp StdBattleTextBox -; 35165 - - -BattleCommand_BideFailText: ; 35165 +BattleCommand_BideFailText: ld a, [wAttackMissed] and a ret z @@ -2450,10 +2296,7 @@ BattleCommand_BideFailText: ; 35165 jp z, PrintDoesntAffect jp PrintButItFailed -; 35175 - - -BattleCommand_CriticalText: ; 35175 +BattleCommand_CriticalText: ; criticaltext ; Prints the message for critical hits or one-hit KOs. @@ -2483,10 +2326,8 @@ BattleCommand_CriticalText: ; 35175 .texts dw CriticalHitText dw OneHitKOText -; 35197 - -BattleCommand_StartLoop: ; 35197 +BattleCommand_StartLoop: ; startloop ld hl, wPlayerRolloutCount @@ -2499,10 +2340,7 @@ BattleCommand_StartLoop: ; 35197 ld [hl], a ret -; 351a5 - - -BattleCommand_SuperEffectiveLoopText: ; 351a5 +BattleCommand_SuperEffectiveLoopText: ; supereffectivelooptext ld a, BATTLE_VARS_SUBSTATUS3 @@ -2511,10 +2349,8 @@ BattleCommand_SuperEffectiveLoopText: ; 351a5 ret nz ; fallthrough -; 351ad - -BattleCommand_SuperEffectiveText: ; 351ad +BattleCommand_SuperEffectiveText: ; supereffectivetext ld a, [wTypeModifier] @@ -2527,10 +2363,7 @@ BattleCommand_SuperEffectiveText: ; 351ad .print jp StdBattleTextBox -; 351c0 - - -BattleCommand_CheckDestinyBond: ; 351c0 +BattleCommand_CheckDestinyBond: ; checkdestinybond ; Faint the user if it fainted an opponent using Destiny Bond. @@ -2617,10 +2450,7 @@ BattleCommand_CheckDestinyBond: ; 351c0 .finish jp EndMoveEffect -; 35250 - - -BattleCommand_BuildOpponentRage: ; 35250 +BattleCommand_BuildOpponentRage: ; buildopponentrage jp .start @@ -2651,10 +2481,7 @@ BattleCommand_BuildOpponentRage: ; 35250 call StdBattleTextBox jp BattleCommand_SwitchTurn -; 3527b - - -BattleCommand_RageDamage: ; 3527b +BattleCommand_RageDamage: ; ragedamage ld a, [wCurDamage] @@ -2682,10 +2509,7 @@ BattleCommand_RageDamage: ; 3527b ld [wCurDamage + 1], a ret -; 352a3 - - -EndMoveEffect: ; 352a3 +EndMoveEffect: ld a, [wBattleScriptBufferAddress] ld l, a ld a, [wBattleScriptBufferAddress + 1] @@ -2696,10 +2520,7 @@ EndMoveEffect: ; 352a3 ld [hl], a ret -; 352b1 - - -DittoMetalPowder: ; 352b1 +DittoMetalPowder: ld a, MON_SPECIES call BattlePartyAttr ld a, [hBattleTurn] @@ -2735,10 +2556,7 @@ DittoMetalPowder: ; 352b1 rr c ret -; 352dc - - -BattleCommand_DamageStats: ; 352dc +BattleCommand_DamageStats: ; damagestats ld a, [hBattleTurn] @@ -2746,10 +2564,8 @@ BattleCommand_DamageStats: ; 352dc jp nz, EnemyAttackDamage ; fallthrough -; 352e2 - -PlayerAttackDamage: ; 352e2 +PlayerAttackDamage: ; Return move power d, player level e, enemy defense c and player attack b. call ResetDamage @@ -2831,10 +2647,7 @@ PlayerAttackDamage: ; 352e2 and a ret -; 3534d - - -TruncateHL_BC: ; 3534d +TruncateHL_BC: .loop ; Truncate 16-bit values hl and bc to 8-bit values b and c respectively. ; b = hl, c = bc @@ -2879,10 +2692,7 @@ TruncateHL_BC: ; 3534d ld b, l ret -; 35378 - - -GetDamageStatsCritical: ; 35378 +GetDamageStatsCritical: ; Return carry if non-critical. ld a, [wCriticalHit] @@ -2891,10 +2701,8 @@ GetDamageStatsCritical: ; 35378 ret z ; fallthrough -; 3537e - -GetDamageStats: ; 3537e +GetDamageStats: ; Return the attacker's offensive stat and the defender's defensive ; stat based on whether the attacking type is physical or special. @@ -2934,10 +2742,7 @@ GetDamageStats: ; 3537e pop hl ret -; 353b5 - - -ThickClubBoost: ; 353b5 +ThickClubBoost: ; Return in hl the stat value at hl. ; If the attacking monster is Cubone or Marowak and @@ -2952,10 +2757,7 @@ ThickClubBoost: ; 353b5 pop bc ret -; 353c3 - - -LightBallBoost: ; 353c3 +LightBallBoost: ; Return in hl the stat value at hl. ; If the attacking monster is Pikachu and it's @@ -2970,10 +2772,7 @@ LightBallBoost: ; 353c3 pop bc ret -; 353d1 - - -SpeciesItemBoost: ; 353d1 +SpeciesItemBoost: ; Return in hl the stat value at hl. ; If the attacking monster is species b or c and @@ -3013,10 +2812,7 @@ SpeciesItemBoost: ; 353d1 rl h ret -; 353f6 - - -EnemyAttackDamage: ; 353f6 +EnemyAttackDamage: call ResetDamage ; No damage dealt with 0 power. @@ -3094,13 +2890,9 @@ EnemyAttackDamage: ; 353f6 and a ret -; 35461 - - INCLUDE "engine/battle/move_effects/beat_up.asm" - -BattleCommand_ClearMissDamage: ; 355d5 +BattleCommand_ClearMissDamage: ; clearmissdamage ld a, [wAttackMissed] and a @@ -3108,10 +2900,7 @@ BattleCommand_ClearMissDamage: ; 355d5 jp ResetDamage -; 355dd - - -HitSelfInConfusion: ; 355dd +HitSelfInConfusion: call ResetDamage ld a, [hBattleTurn] and a @@ -3147,10 +2936,7 @@ HitSelfInConfusion: ; 355dd ld e, a ret -; 35612 - - -BattleCommand_DamageCalc: ; 35612 +BattleCommand_DamageCalc: ; damagecalc ; Return a damage value for move power d, player level e, enemy defense c and player attack b. @@ -3273,12 +3059,11 @@ BattleCommand_DamageCalc: ; 35612 ld [hDivisor], a ld b, 4 call Divide -.DoneItem: +.DoneItem: ; Critical hits call .CriticalMultiplier - ; Update wCurDamage (capped at 997). ld hl, wCurDamage ld b, [hl] @@ -3343,7 +3128,6 @@ BattleCommand_DamageCalc: ; 35612 ld a, LOW(MAX_STAT_VALUE - MIN_NEUTRAL_DAMAGE) ld [hld], a - .dont_cap_3 ; Minimum neutral damage is 2 (bringing the cap to 999). inc hl @@ -3358,7 +3142,6 @@ BattleCommand_DamageCalc: ; 35612 and a ret - .CriticalMultiplier: ld a, [wCriticalHit] and a @@ -3382,13 +3165,9 @@ BattleCommand_DamageCalc: ; 35612 ret -; 35703 - - INCLUDE "data/types/type_boost_items.asm" - -BattleCommand_ConstantDamage: ; 35726 +BattleCommand_ConstantDamage: ; constantdamage ld hl, wBattleMonLevel @@ -3548,7 +3327,6 @@ BattleCommand_ConstantDamage: ; 35726 INCLUDE "data/moves/flail_reversal_power.asm" - INCLUDE "engine/battle/move_effects/counter.asm" INCLUDE "engine/battle/move_effects/encore.asm" @@ -3563,8 +3341,7 @@ INCLUDE "engine/battle/move_effects/lock_on.asm" INCLUDE "engine/battle/move_effects/sketch.asm" - -BattleCommand_DefrostOpponent: ; 35b16 +BattleCommand_DefrostOpponent: ; defrostopponent ; Thaw the opponent if frozen, and ; raise the user's Attack one stage. @@ -3590,9 +3367,6 @@ BattleCommand_DefrostOpponent: ; 35b16 ld [hl], a ret -; 35b33 - - INCLUDE "engine/battle/move_effects/sleep_talk.asm" INCLUDE "engine/battle/move_effects/destiny_bond.asm" @@ -3603,8 +3377,7 @@ INCLUDE "engine/battle/move_effects/false_swipe.asm" INCLUDE "engine/battle/move_effects/heal_bell.asm" - -FarPlayBattleAnimation: ; 35d00 +FarPlayBattleAnimation: ; play animation de ld a, BATTLE_VARS_SUBSTATUS3 @@ -3613,9 +3386,8 @@ FarPlayBattleAnimation: ; 35d00 ret nz ; fallthrough -; 35d08 -PlayFXAnimID: ; 35d08 +PlayFXAnimID: ld a, e ld [wFXAnimID], a ld a, d @@ -3626,10 +3398,7 @@ PlayFXAnimID: ; 35d08 callfar PlayBattleAnim ret -; 35d1c - - -DoEnemyDamage: ; 35d1c +DoEnemyDamage: ld hl, wCurDamage ld a, [hli] ld b, a @@ -3689,10 +3458,7 @@ DoEnemyDamage: ; 35d1c .did_no_damage jp RefreshBattleHuds -; 35d7e - - -DoPlayerDamage: ; 35d7e +DoPlayerDamage: ld hl, wCurDamage ld a, [hli] ld b, a @@ -3752,10 +3518,7 @@ DoPlayerDamage: ; 35d7e .did_no_damage jp RefreshBattleHuds -; 35de0 - - -DoSubstituteDamage: ; 35de0 +DoSubstituteDamage: ld hl, SubTookDamageText call StdBattleTextBox @@ -3812,11 +3575,7 @@ DoSubstituteDamage: ; 35de0 .done jp ResetDamage -; 35e40 - - -UpdateMoveData: ; 35e40 - +UpdateMoveData: ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVarAddr ld d, h @@ -3832,10 +3591,7 @@ UpdateMoveData: ; 35e40 call GetMoveName jp CopyName1 -; 35e5c - - -BattleCommand_SleepTarget: ; 35e5c +BattleCommand_SleepTarget: ; sleeptarget call GetOpponentItem @@ -3906,10 +3662,7 @@ BattleCommand_SleepTarget: ; 35e5c pop hl jp StdBattleTextBox -; 35ece - - -.CheckAIRandomFail: ; 35ece +.CheckAIRandomFail: ; Enemy turn ld a, [hBattleTurn] and a @@ -3937,10 +3690,7 @@ BattleCommand_SleepTarget: ; 35e5c xor a ret -; 35eee - - -BattleCommand_PoisonTarget: ; 35eee +BattleCommand_PoisonTarget: ; poisontarget call CheckSubstituteOpp @@ -3975,10 +3725,7 @@ BattleCommand_PoisonTarget: ; 35eee farcall UseHeldStatusHealingItem ret -; 35f2c - - -BattleCommand_Poison: ; 35f2c +BattleCommand_Poison: ; poison ld hl, DoesntAffectText @@ -4066,18 +3813,12 @@ BattleCommand_Poison: ; 35f2c pop hl jp StdBattleTextBox -; 35fc0 - - -.apply_poison ; 35fc0 +.apply_poison call AnimateCurrentMove call PoisonOpponent jp RefreshBattleHuds -; 35fc9 - - -.check_toxic ; 35fc9 +.check_toxic ld a, BATTLE_VARS_SUBSTATUS5_OPP call GetBattleVarAddr ld a, [hBattleTurn] @@ -4091,10 +3832,7 @@ BattleCommand_Poison: ; 35f2c cp EFFECT_TOXIC ret -; 35fe1 - - -CheckIfTargetIsPoisonType: ; 35fe1 +CheckIfTargetIsPoisonType: ld de, wEnemyMonType1 ld a, [hBattleTurn] and a @@ -4109,37 +3847,25 @@ CheckIfTargetIsPoisonType: ; 35fe1 cp POISON ret -; 35ff5 - - -PoisonOpponent: ; 35ff5 +PoisonOpponent: ld a, BATTLE_VARS_STATUS_OPP call GetBattleVarAddr set PSN, [hl] jp UpdateOpponentInParty -; 35fff - - -BattleCommand_DrainTarget: ; 35fff +BattleCommand_DrainTarget: ; draintarget call SapHealth ld hl, SuckedHealthText jp StdBattleTextBox -; 36008 - - -BattleCommand_EatDream: ; 36008 +BattleCommand_EatDream: ; eatdream call SapHealth ld hl, DreamEatenText jp StdBattleTextBox -; 36011 - - -SapHealth: ; 36011 +SapHealth: ; Divide damage by 2, store it in hDividend ld hl, wCurDamage ld a, [hli] @@ -4232,10 +3958,7 @@ SapHealth: ; 36011 call RefreshBattleHuds jp UpdateBattleMonInParty -; 3608c - - -BattleCommand_BurnTarget: ; 3608c +BattleCommand_BurnTarget: ; burntarget xor a @@ -4276,10 +3999,7 @@ BattleCommand_BurnTarget: ; 3608c farcall UseHeldStatusHealingItem ret -; 360dd - - -Defrost: ; 360dd +Defrost: ld a, [hl] and 1 << FRZ ret z @@ -4304,10 +4024,7 @@ Defrost: ; 360dd ld hl, DefrostedOpponentText jp StdBattleTextBox -; 36102 - - -BattleCommand_FreezeTarget: ; 36102 +BattleCommand_FreezeTarget: ; freezetarget xor a @@ -4360,10 +4077,7 @@ BattleCommand_FreezeTarget: ; 36102 ld [hl], $1 ret -; 36165 - - -BattleCommand_ParalyzeTarget: ; 36165 +BattleCommand_ParalyzeTarget: ; paralyzetarget xor a @@ -4399,80 +4113,77 @@ BattleCommand_ParalyzeTarget: ; 36165 ld hl, UseHeldStatusHealingItem jp CallBattleCore -; 361ac - - -BattleCommand_AttackUp: ; 361ac +BattleCommand_AttackUp: ; attackup ld b, ATTACK jr BattleCommand_StatUp -BattleCommand_DefenseUp: ; 361b0 +BattleCommand_DefenseUp: ; defenseup ld b, DEFENSE jr BattleCommand_StatUp -BattleCommand_SpeedUp: ; 361b4 +BattleCommand_SpeedUp: ; speedup ld b, SPEED jr BattleCommand_StatUp -BattleCommand_SpecialAttackUp: ; 361b8 +BattleCommand_SpecialAttackUp: ; specialattackup ld b, SP_ATTACK jr BattleCommand_StatUp -BattleCommand_SpecialDefenseUp: ; 361bc +BattleCommand_SpecialDefenseUp: ; specialdefenseup ld b, SP_DEFENSE jr BattleCommand_StatUp -BattleCommand_AccuracyUp: ; 361c0 +BattleCommand_AccuracyUp: ; accuracyup ld b, ACCURACY jr BattleCommand_StatUp -BattleCommand_EvasionUp: ; 361c4 +BattleCommand_EvasionUp: ; evasionup ld b, EVASION jr BattleCommand_StatUp -BattleCommand_AttackUp2: ; 361c8 +BattleCommand_AttackUp2: ; attackup2 ld b, $10 | ATTACK jr BattleCommand_StatUp -BattleCommand_DefenseUp2: ; 361cc +BattleCommand_DefenseUp2: ; defenseup2 ld b, $10 | DEFENSE jr BattleCommand_StatUp -BattleCommand_SpeedUp2: ; 361d0 +BattleCommand_SpeedUp2: ; speedup2 ld b, $10 | SPEED jr BattleCommand_StatUp -BattleCommand_SpecialAttackUp2: ; 361d4 +BattleCommand_SpecialAttackUp2: ; specialattackup2 ld b, $10 | SP_ATTACK jr BattleCommand_StatUp -BattleCommand_SpecialDefenseUp2: ; 361d8 +BattleCommand_SpecialDefenseUp2: ; specialdefenseup2 ld b, $10 | SP_DEFENSE jr BattleCommand_StatUp -BattleCommand_AccuracyUp2: ; 361dc +BattleCommand_AccuracyUp2: ; accuracyup2 ld b, $10 | ACCURACY jr BattleCommand_StatUp -BattleCommand_EvasionUp2: ; 361e0 +BattleCommand_EvasionUp2: ; evasionup2 ld b, $10 | EVASION jr BattleCommand_StatUp -BattleCommand_StatUp: ; 361e4 +BattleCommand_StatUp: ; statup call CheckIfStatCanBeRaised ld a, [wFailedMessage] @@ -4480,10 +4191,7 @@ BattleCommand_StatUp: ; 361e4 ret nz jp StatUpAnimation -; 361ef - - -CheckIfStatCanBeRaised: ; 361ef +CheckIfStatCanBeRaised: ld a, b ld [wLoweredStat], a ld hl, wPlayerStatLevels @@ -4562,35 +4270,24 @@ CheckIfStatCanBeRaised: ; 361ef ld [wFailedMessage], a ret -; 3626e - - -.stats_already_max ; 3626e +.stats_already_max pop hl dec [hl] ; fallthrough -; 36270 - -.cant_raise_stat ; 36270 +.cant_raise_stat ld a, $2 ld [wFailedMessage], a ld a, $1 ld [wAttackMissed], a ret -; 3627b - - -.stat_raise_failed ; 3627b +.stat_raise_failed ld a, $1 ld [wFailedMessage], a ret -; 36281 - - -StatUpAnimation: ; 36281 +StatUpAnimation: ld bc, wPlayerMinimized ld hl, DropPlayerSub ld a, [hBattleTurn] @@ -4615,79 +4312,76 @@ StatUpAnimation: ; 36281 call WaitBGMap jp BattleCommand_MoveDelay -; 362ad - - -BattleCommand_AttackDown: ; 362ad +BattleCommand_AttackDown: ; attackdown ld a, ATTACK jr BattleCommand_StatDown -BattleCommand_DefenseDown: ; 362b1 +BattleCommand_DefenseDown: ; defensedown ld a, DEFENSE jr BattleCommand_StatDown -BattleCommand_SpeedDown: ; 362b5 +BattleCommand_SpeedDown: ; speeddown ld a, SPEED jr BattleCommand_StatDown -BattleCommand_SpecialAttackDown: ; 362b9 +BattleCommand_SpecialAttackDown: ; specialattackdown ld a, SP_ATTACK jr BattleCommand_StatDown -BattleCommand_SpecialDefenseDown: ; 362bd +BattleCommand_SpecialDefenseDown: ; specialdefensedown ld a, SP_DEFENSE jr BattleCommand_StatDown -BattleCommand_AccuracyDown: ; 362c1 +BattleCommand_AccuracyDown: ; accuracydown ld a, ACCURACY jr BattleCommand_StatDown -BattleCommand_EvasionDown: ; 362c5 +BattleCommand_EvasionDown: ; evasiondown ld a, EVASION jr BattleCommand_StatDown -BattleCommand_AttackDown2: ; 362c9 +BattleCommand_AttackDown2: ; attackdown2 ld a, $10 | ATTACK jr BattleCommand_StatDown -BattleCommand_DefenseDown2: ; 362cd +BattleCommand_DefenseDown2: ; defensedown2 ld a, $10 | DEFENSE jr BattleCommand_StatDown -BattleCommand_SpeedDown2: ; 362d1 +BattleCommand_SpeedDown2: ; speeddown2 ld a, $10 | SPEED jr BattleCommand_StatDown -BattleCommand_SpecialAttackDown2: ; 362d5 +BattleCommand_SpecialAttackDown2: ; specialattackdown2 ld a, $10 | SP_ATTACK jr BattleCommand_StatDown -BattleCommand_SpecialDefenseDown2: ; 362d9 +BattleCommand_SpecialDefenseDown2: ; specialdefensedown2 ld a, $10 | SP_DEFENSE jr BattleCommand_StatDown -BattleCommand_AccuracyDown2: ; 362dd +BattleCommand_AccuracyDown2: ; accuracydown2 ld a, $10 | ACCURACY jr BattleCommand_StatDown -BattleCommand_EvasionDown2: ; 362e1 +BattleCommand_EvasionDown2: ; evasiondown2 ld a, $10 | EVASION -BattleCommand_StatDown: ; 362e3 +BattleCommand_StatDown: ; statdown ld [wLoweredStat], a @@ -4810,10 +4504,7 @@ BattleCommand_StatDown: ; 362e3 ld [wAttackMissed], a ret -; 36391 - - -CheckMist: ; 36391 +CheckMist: ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_ATTACK_DOWN @@ -4838,10 +4529,7 @@ CheckMist: ; 36391 bit SUBSTATUS_MIST, a ret -; 363b8 - - -BattleCommand_StatUpMessage: ; 363b8 +BattleCommand_StatUpMessage: ld a, [wFailedMessage] and a ret nz @@ -4871,10 +4559,7 @@ BattleCommand_StatUpMessage: ; 363b8 text_jump UnknownText_0x1c0ce0 db "@" -; 363e9 - - -BattleCommand_StatDownMessage: ; 363e9 +BattleCommand_StatDownMessage: ld a, [wFailedMessage] and a ret nz @@ -4903,10 +4588,7 @@ BattleCommand_StatDownMessage: ; 363e9 text_jump UnknownText_0x1c0d06 db "@" -; 3641a - - -TryLowerStat: ; 3641a +TryLowerStat: ; Lower stat c from stat struct hl (buffer de). push bc @@ -4949,10 +4631,7 @@ TryLowerStat: ; 3641a and a ret -; 3644c - - -BattleCommand_StatUpFailText: ; 3644c +BattleCommand_StatUpFailText: ; statupfailtext ld a, [wFailedMessage] and a @@ -4970,10 +4649,7 @@ BattleCommand_StatUpFailText: ; 3644c ld hl, WontRiseAnymoreText jp StdBattleTextBox -; 3646a - - -BattleCommand_StatDownFailText: ; 3646a +BattleCommand_StatDownFailText: ; statdownfailtext ld a, [wFailedMessage] and a @@ -4994,10 +4670,7 @@ BattleCommand_StatDownFailText: ; 3646a ld hl, WontDropAnymoreText jp StdBattleTextBox -; 3648f - - -GetStatName: ; 3648f +GetStatName: ld hl, StatNames ld c, "@" .CheckName: @@ -5016,11 +4689,9 @@ GetStatName: ; 3648f INCLUDE "data/battle/stat_names.asm" - INCLUDE "data/battle/stat_multipliers.asm" - -BattleCommand_AllStatsUp: ; 36500 +BattleCommand_AllStatsUp: ; allstatsup ; Attack @@ -5047,18 +4718,13 @@ BattleCommand_AllStatsUp: ; 36500 call ResetMiss call BattleCommand_SpecialDefenseUp jp BattleCommand_StatUpMessage -; 3652d - -ResetMiss: ; 3652d +ResetMiss: xor a ld [wAttackMissed], a ret -; 36532 - - -LowerStat: ; 36532 +LowerStat: ld [wLoweredStat], a ld hl, wPlayerStatLevels @@ -5129,10 +4795,7 @@ LowerStat: ; 36532 ld [wFailedMessage], a ret -; 3658f - - -BattleCommand_TriStatusChance: ; 3658f +BattleCommand_TriStatusChance: ; tristatuschance call BattleCommand_EffectChance @@ -5152,20 +4815,15 @@ BattleCommand_TriStatusChance: ; 3658f dw BattleCommand_ParalyzeTarget ; paralyze dw BattleCommand_FreezeTarget ; freeze dw BattleCommand_BurnTarget ; burn -; 365a7 - -BattleCommand_Curl: ; 365a7 +BattleCommand_Curl: ; curl ld a, BATTLE_VARS_SUBSTATUS2 call GetBattleVarAddr set SUBSTATUS_CURLED, [hl] ret -; 365af - - -BattleCommand_RaiseSubNoAnim: ; 365af +BattleCommand_RaiseSubNoAnim: ld hl, GetBattleMonBackpic ld a, [hBattleTurn] and a @@ -5177,10 +4835,7 @@ BattleCommand_RaiseSubNoAnim: ; 365af call CallBattleCore jp WaitBGMap -; 365c3 - - -BattleCommand_LowerSubNoAnim: ; 365c3 +BattleCommand_LowerSubNoAnim: ld hl, DropPlayerSub ld a, [hBattleTurn] and a @@ -5192,10 +4847,7 @@ BattleCommand_LowerSubNoAnim: ; 365c3 call CallBattleCore jp WaitBGMap -; 365d7 - - -CalcPlayerStats: ; 365d7 +CalcPlayerStats: ld hl, wPlayerAtkLevel ld de, wPlayerStats ld bc, wBattleMonAttack @@ -5216,10 +4868,7 @@ CalcPlayerStats: ; 365d7 jp BattleCommand_SwitchTurn -; 365fd - - -CalcEnemyStats: ; 365fd +CalcEnemyStats: ld hl, wEnemyAtkLevel ld de, wEnemyStats ld bc, wEnemyMonAttack @@ -5237,10 +4886,7 @@ CalcEnemyStats: ; 365fd jp BattleCommand_SwitchTurn -; 3661d - - -CalcStats: ; 3661d +CalcStats: .loop push af ld a, [hli] @@ -5309,13 +4955,9 @@ CalcStats: ; 3661d ret -; 36671 - - INCLUDE "engine/battle/move_effects/bide.asm" - -BattleCommand_CheckRampage: ; 3671a +BattleCommand_CheckRampage: ; checkrampage ld de, wPlayerRolloutCount @@ -5352,10 +4994,7 @@ BattleCommand_CheckRampage: ; 3671a ld b, rampage_command jp SkipToBattleCommand -; 36751 - - -BattleCommand_Rampage: ; 36751 +BattleCommand_Rampage: ; rampage ; No rampage during Sleep Talk. @@ -5382,23 +5021,16 @@ BattleCommand_Rampage: ; 36751 ld [wSomeoneIsRampaging], a ret -; 36778 - - INCLUDE "engine/battle/move_effects/teleport.asm" - -SetBattleDraw: ; 36804 +SetBattleDraw: ld a, [wBattleResult] and BATTLERESULT_BITMASK or DRAW ld [wBattleResult], a ret -; 3680f - - -BattleCommand_ForceSwitch: ; 3680f +BattleCommand_ForceSwitch: ; forceswitch ld a, [wBattleType] @@ -5617,10 +5249,7 @@ BattleCommand_ForceSwitch: ; 3680f .do_text jp StdBattleTextBox -; 36994 - - -CheckPlayerHasMonToSwitchTo: ; 36994 +CheckPlayerHasMonToSwitchTo: ld a, [wPartyCount] ld d, a ld e, 0 @@ -5649,10 +5278,7 @@ CheckPlayerHasMonToSwitchTo: ; 36994 and a ret -; 369b6 - - -BattleCommand_EndLoop: ; 369b6 +BattleCommand_EndLoop: ; endloop ; Loop back to 'critical'. @@ -5786,10 +5412,7 @@ BattleCommand_EndLoop: ; 369b6 ld [wBattleScriptBufferAddress], a ret -; 36a82 - - -BattleCommand_FakeOut: ; 36a82 +BattleCommand_FakeOut: ld a, [wAttackMissed] and a ret nz @@ -5810,10 +5433,7 @@ BattleCommand_FakeOut: ; 36a82 ld [wAttackMissed], a ret -; 36aa0 - - -BattleCommand_FlinchTarget: ; 36aa0 +BattleCommand_FlinchTarget: call CheckSubstituteOpp ret nz @@ -5830,19 +5450,14 @@ BattleCommand_FlinchTarget: ; 36aa0 ret nz ; fallthrough -; 36ab5 - -FlinchTarget: ; 36ab5 +FlinchTarget: ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVarAddr set SUBSTATUS_FLINCHED, [hl] jp EndRechargeOpp -; 36abf - - -CheckOpponentWentFirst: ; 36abf +CheckOpponentWentFirst: ; Returns a=0, z if user went first ; Returns a=1, nz if opponent went first push bc @@ -5853,10 +5468,7 @@ CheckOpponentWentFirst: ; 36abf pop bc ret -; 36ac9 - - -BattleCommand_HeldFlinch: ; 36ac9 +BattleCommand_HeldFlinch: ; kingsrock ld a, [wAttackMissed] @@ -5884,10 +5496,7 @@ BattleCommand_HeldFlinch: ; 36ac9 set SUBSTATUS_FLINCHED, [hl] ret -; 36af3 - - -BattleCommand_OHKO: ; 36af3 +BattleCommand_OHKO: ; ohko call ResetDamage @@ -5933,10 +5542,7 @@ BattleCommand_OHKO: ; 36af3 ld [wAttackMissed], a ret -; 36b3a - - -BattleCommand_CheckCharge: ; 36b3a +BattleCommand_CheckCharge: ; checkcharge ld a, BATTLE_VARS_SUBSTATUS3 @@ -5949,10 +5555,7 @@ BattleCommand_CheckCharge: ; 36b3a ld b, charge_command jp SkipToBattleCommand -; 36b4d - - -BattleCommand_Charge: ; 36b4d +BattleCommand_Charge: ; charge call BattleCommand_ClearText @@ -6092,17 +5695,12 @@ BattleCommand_Charge: ; 36b4d ; 'dug a hole!' text_jump UnknownText_0x1c0d6c db "@" -; 36c2c - -BattleCommand3c: ; 36c2c +BattleCommand3c: ; unused ret -; 36c2d - - -BattleCommand_TrapTarget: ; 36c2d +BattleCommand_TrapTarget: ; traptarget ld a, [wAttackMissed] @@ -6157,15 +5755,12 @@ BattleCommand_TrapTarget: ; 36c2d dbw FIRE_SPIN, FireSpinTrapText ; 'was trapped!' dbw CLAMP, ClampedByText ; 'was CLAMPED by' dbw WHIRLPOOL, WhirlpoolTrapText ; 'was trapped!' -; 36c7e - INCLUDE "engine/battle/move_effects/mist.asm" INCLUDE "engine/battle/move_effects/focus_energy.asm" - -BattleCommand_Recoil: ; 36cb2 +BattleCommand_Recoil: ; recoil ld hl, wBattleMonMaxHP @@ -6229,10 +5824,7 @@ BattleCommand_Recoil: ; 36cb2 ld hl, RecoilText jp StdBattleTextBox -; 36d1d - - -BattleCommand_ConfuseTarget: ; 36d1d +BattleCommand_ConfuseTarget: ; confusetarget call GetOpponentItem @@ -6252,8 +5844,7 @@ BattleCommand_ConfuseTarget: ; 36d1d ret nz jr BattleCommand_FinishConfusingTarget - -BattleCommand_Confuse: ; 36d3b +BattleCommand_Confuse: ; confuse call GetOpponentItem @@ -6282,7 +5873,7 @@ BattleCommand_Confuse: ; 36d3b ld a, [wAttackMissed] and a jr nz, BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit -BattleCommand_FinishConfusingTarget: ; 36d70 +BattleCommand_FinishConfusingTarget: ld bc, wEnemyConfuseCount ld a, [hBattleTurn] and a @@ -6325,9 +5916,7 @@ BattleCommand_FinishConfusingTarget: ; 36d70 ld hl, UseConfusionHealingItem jp CallBattleCore -; 36db6 - -BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit: ; 36db6 +BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit: ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_CONFUSE_HIT @@ -6338,10 +5927,7 @@ BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit: ; 36db6 ret z jp PrintDidntAffect2 -; 36dc7 - - -BattleCommand_Paralyze: ; 36dc7 +BattleCommand_Paralyze: ; paralyze ld a, BATTLE_VARS_STATUS_OPP @@ -6421,10 +6007,7 @@ BattleCommand_Paralyze: ; 36dc7 call AnimateFailedMove jp PrintDoesntAffect -; 36e5b - - -CheckMoveTypeMatchesTarget: ; 36e5b +CheckMoveTypeMatchesTarget: ; Compare move type to opponent type. ; Return z if matching the opponent type, ; unless the move is Normal (Tri Attack). @@ -6459,23 +6042,16 @@ CheckMoveTypeMatchesTarget: ; 36e5b pop hl ret -; 36e7c - - INCLUDE "engine/battle/move_effects/substitute.asm" - -BattleCommand_RechargeNextTurn: ; 36f0b +BattleCommand_RechargeNextTurn: ; rechargenextturn ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVarAddr set SUBSTATUS_RECHARGE, [hl] ret -; 36f13 - - -EndRechargeOpp: ; 36f13 +EndRechargeOpp: push hl ld a, BATTLE_VARS_SUBSTATUS4_OPP call GetBattleVarAddr @@ -6483,13 +6059,9 @@ EndRechargeOpp: ; 36f13 pop hl ret -; 36f1d - - INCLUDE "engine/battle/move_effects/rage.asm" - -BattleCommand_DoubleFlyingDamage: ; 36f25 +BattleCommand_DoubleFlyingDamage: ; doubleflyingdamage ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar @@ -6497,10 +6069,7 @@ BattleCommand_DoubleFlyingDamage: ; 36f25 ret z jr DoubleDamage -; 36f2f - - -BattleCommand_DoubleUndergroundDamage: ; 36f2f +BattleCommand_DoubleUndergroundDamage: ; doubleundergrounddamage ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar @@ -6508,10 +6077,8 @@ BattleCommand_DoubleUndergroundDamage: ; 36f2f ret z ; fallthrough -; 36f37 - -DoubleDamage: ; 36f37 +DoubleDamage: ld hl, wCurDamage + 1 sla [hl] dec hl @@ -6524,9 +6091,6 @@ DoubleDamage: ; 36f37 .quit ret -; 36f46 - - INCLUDE "engine/battle/move_effects/mimic.asm" INCLUDE "engine/battle/move_effects/leech_seed.asm" @@ -6539,8 +6103,7 @@ INCLUDE "engine/battle/move_effects/pay_day.asm" INCLUDE "engine/battle/move_effects/conversion.asm" - -BattleCommand_ResetStats: ; 3710e +BattleCommand_ResetStats: ; resetstats ld a, 7 ; neutral @@ -6573,10 +6136,7 @@ BattleCommand_ResetStats: ; 3710e jr nz, .next ret -; 3713e - - -BattleCommand_Heal: ; 3713e +BattleCommand_Heal: ; heal ld de, wBattleMonHP @@ -6658,13 +6218,9 @@ BattleCommand_Heal: ; 3713e ld hl, HPIsFullText jp StdBattleTextBox -; 371cd - - INCLUDE "engine/battle/move_effects/transform.asm" - -BattleSideCopy: ; 372c6 +BattleSideCopy: ; Copy bc bytes from hl to de if it's the player's turn. ; Copy bc bytes from de to hl if it's the enemy's turn. ld a, [hBattleTurn] @@ -6679,17 +6235,11 @@ BattleSideCopy: ; 372c6 .copy jp CopyBytes -; 372d2 - - -BattleEffect_ButItFailed: ; 372d2 +BattleEffect_ButItFailed: call AnimateFailedMove jp PrintButItFailed -; 372d8 - - -ClearLastMove: ; 372d8 +ClearLastMove: ld a, BATTLE_VARS_LAST_COUNTER_MOVE call GetBattleVarAddr xor a @@ -6701,10 +6251,7 @@ ClearLastMove: ; 372d8 ld [hl], a ret -; 372e7 - - -ResetActorDisable: ; 372e7 +ResetActorDisable: ld a, [hBattleTurn] and a jr z, .player @@ -6720,10 +6267,7 @@ ResetActorDisable: ; 372e7 ld [wDisabledMove], a ret -; 372fc - - -BattleCommand_Screen: ; 372fc +BattleCommand_Screen: ; screen ld hl, wPlayerScreens @@ -6768,97 +6312,66 @@ BattleCommand_Screen: ; 372fc call AnimateFailedMove jp PrintButItFailed -; 3733d - - -PrintDoesntAffect: ; 3733d +PrintDoesntAffect: ; 'it doesn't affect' ld hl, DoesntAffectText jp StdBattleTextBox -; 37343 - - -PrintNothingHappened: ; 37343 +PrintNothingHappened: ; 'but nothing happened!' ld hl, NothingHappenedText jp StdBattleTextBox -; 37349 - - -TryPrintButItFailed: ; 37349 +TryPrintButItFailed: ld a, [wAlreadyFailed] and a ret nz ; fallthrough -; 3734e - -PrintButItFailed: ; 3734e +PrintButItFailed: ; 'but it failed!' ld hl, ButItFailedText jp StdBattleTextBox -; 37354 - - FailMove: call AnimateFailedMove ; fallthrough -; 37357 -FailMimic: ; 37357 +FailMimic: ld hl, ButItFailedText ; 'but it failed!' ld de, ItFailedText ; 'it failed!' jp FailText_CheckOpponentProtect -; 37360 - - -PrintDidntAffect: ; 37360 +PrintDidntAffect: ; 'it didn't affect' ld hl, DidntAffect1Text jp StdBattleTextBox -; 37366 - - -PrintDidntAffect2: ; 37366 +PrintDidntAffect2: call AnimateFailedMove ld hl, DidntAffect1Text ; 'it didn't affect' ld de, DidntAffect2Text ; 'it didn't affect' jp FailText_CheckOpponentProtect -; 37372 - - -PrintParalyze: ; 37372 +PrintParalyze: ; 'paralyzed! maybe it can't attack!' ld hl, ParalyzedText jp StdBattleTextBox -; 37378 - - -CheckSubstituteOpp: ; 37378 +CheckSubstituteOpp: ld a, BATTLE_VARS_SUBSTATUS4_OPP call GetBattleVar bit SUBSTATUS_SUBSTITUTE, a ret -; 37380 - - INCLUDE "engine/battle/move_effects/selfdestruct.asm" INCLUDE "engine/battle/move_effects/mirror_move.asm" INCLUDE "engine/battle/move_effects/metronome.asm" - -CheckUserMove: ; 37462 +CheckUserMove: ; Return z if the user has move a. ld b, a ld de, wBattleMonMoves @@ -6882,10 +6395,7 @@ CheckUserMove: ; 37462 and a ret -; 3747b - - -ResetTurn: ; 3747b +ResetTurn: ld hl, wPlayerCharging ld a, [hBattleTurn] and a @@ -6899,13 +6409,9 @@ ResetTurn: ; 3747b call DoMove jp EndMoveEffect -; 37492 - - INCLUDE "engine/battle/move_effects/thief.asm" - -BattleCommand_ArenaTrap: ; 37517 +BattleCommand_ArenaTrap: ; arenatrap ; Doesn't work on an absent opponent. @@ -6931,13 +6437,9 @@ BattleCommand_ArenaTrap: ; 37517 call AnimateFailedMove jp PrintButItFailed -; 37536 - - INCLUDE "engine/battle/move_effects/nightmare.asm" - -BattleCommand_Defrost: ; 37563 +BattleCommand_Defrost: ; defrost ; Thaw the user. @@ -6968,9 +6470,6 @@ BattleCommand_Defrost: ; 37563 ld hl, WasDefrostedText jp StdBattleTextBox -; 37588 - - INCLUDE "engine/battle/move_effects/curse.asm" INCLUDE "engine/battle/move_effects/protect.asm" @@ -6987,14 +6486,10 @@ INCLUDE "engine/battle/move_effects/sandstorm.asm" INCLUDE "engine/battle/move_effects/rollout.asm" - -BattleCommand5d: ; 37791 +BattleCommand5d: ; unused ret -; 37792 - - INCLUDE "engine/battle/move_effects/fury_cutter.asm" INCLUDE "engine/battle/move_effects/attract.asm" @@ -7007,8 +6502,7 @@ INCLUDE "engine/battle/move_effects/frustration.asm" INCLUDE "engine/battle/move_effects/safeguard.asm" - -SafeCheckSafeguard: ; 37962 +SafeCheckSafeguard: push hl ld hl, wEnemyScreens ld a, [hBattleTurn] @@ -7021,10 +6515,7 @@ SafeCheckSafeguard: ; 37962 pop hl ret -; 37972 - - -BattleCommand_CheckSafeguard: ; 37972 +BattleCommand_CheckSafeguard: ; checksafeguard ld hl, wEnemyScreens ld a, [hBattleTurn] @@ -7041,9 +6532,6 @@ BattleCommand_CheckSafeguard: ; 37972 call StdBattleTextBox jp EndMoveEffect -; 37991 - - INCLUDE "engine/battle/move_effects/magnitude.asm" INCLUDE "engine/battle/move_effects/baton_pass.asm" @@ -7052,28 +6540,22 @@ INCLUDE "engine/battle/move_effects/pursuit.asm" INCLUDE "engine/battle/move_effects/rapid_spin.asm" - -BattleCommand_HealMorn: ; 37b74 +BattleCommand_HealMorn: ; healmorn ld b, MORN_F jr BattleCommand_TimeBasedHealContinue -; 37b78 - -BattleCommand_HealDay: ; 37b78 +BattleCommand_HealDay: ; healday ld b, DAY_F jr BattleCommand_TimeBasedHealContinue -; 37b7c - -BattleCommand_HealNite: ; 37b7c +BattleCommand_HealNite: ; healnite ld b, NITE_F ; fallthrough -; 37b7e -BattleCommand_TimeBasedHealContinue: ; 37b7e +BattleCommand_TimeBasedHealContinue: ; Time- and weather-sensitive heal. ld hl, wBattleMonMaxHP @@ -7154,8 +6636,6 @@ BattleCommand_TimeBasedHealContinue: ; 37b7e dw GetQuarterMaxHP dw GetHalfMaxHP dw GetMaxHP -; 37be8 - INCLUDE "engine/battle/move_effects/hidden_power.asm" @@ -7169,8 +6649,7 @@ INCLUDE "engine/battle/move_effects/psych_up.asm" INCLUDE "engine/battle/move_effects/mirror_coat.asm" - -BattleCommand_DoubleMinimizeDamage: ; 37ce6 +BattleCommand_DoubleMinimizeDamage: ; doubleminimizedamage ld hl, wEnemyMinimized @@ -7192,10 +6671,7 @@ BattleCommand_DoubleMinimizeDamage: ; 37ce6 ld [hl], a ret -; 37d02 - - -BattleCommand_SkipSunCharge: ; 37d02 +BattleCommand_SkipSunCharge: ; mimicsuncharge ld a, [wBattleWeather] cp WEATHER_SUN @@ -7203,25 +6679,18 @@ BattleCommand_SkipSunCharge: ; 37d02 ld b, charge_command jp SkipToBattleCommand -; 37d0d - - INCLUDE "engine/battle/move_effects/future_sight.asm" INCLUDE "engine/battle/move_effects/thunder.asm" - -CheckHiddenOpponent: ; 37daa +CheckHiddenOpponent: ; 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 ret -; 37db2 - - -GetUserItem: ; 37db2 +GetUserItem: ; Return the effect of the user's item in bc, and its id at hl. ld hl, wBattleMonItem ld a, [hBattleTurn] @@ -7232,10 +6701,7 @@ GetUserItem: ; 37db2 ld b, [hl] jp GetItemHeldEffect -; 37dc1 - - -GetOpponentItem: ; 37dc1 +GetOpponentItem: ; Return the effect of the opponent's item in bc, and its id at hl. ld hl, wEnemyMonItem ld a, [hBattleTurn] @@ -7246,10 +6712,7 @@ GetOpponentItem: ; 37dc1 ld b, [hl] jp GetItemHeldEffect -; 37dd0 - - -GetItemHeldEffect: ; 37dd0 +GetItemHeldEffect: ; Return the effect of item b in bc. ld a, b and a @@ -7269,10 +6732,7 @@ GetItemHeldEffect: ; 37dd0 pop hl ret -; 37de9 - - -AnimateCurrentMoveEitherSide: ; 37de9 +AnimateCurrentMoveEitherSide: push hl push de push bc @@ -7288,10 +6748,7 @@ AnimateCurrentMoveEitherSide: ; 37de9 pop hl ret -; 37e01 - - -AnimateCurrentMove: ; 37e01 +AnimateCurrentMove: push hl push de push bc @@ -7307,10 +6764,7 @@ AnimateCurrentMove: ; 37e01 pop hl ret -; 37e19 - - -PlayDamageAnim: ; 37e19 +PlayDamageAnim: xor a ld [wFXAnimID + 1], a @@ -7332,10 +6786,7 @@ PlayDamageAnim: ; 37e19 jp PlayUserBattleAnim -; 37e36 - - -LoadMoveAnim: ; 37e36 +LoadMoveAnim: xor a ld [wNumHits], a ld [wFXAnimID + 1], a @@ -7346,17 +6797,13 @@ LoadMoveAnim: ; 37e36 ret z ; fallthrough -; 37e44 - -LoadAnim: ; 37e44 +LoadAnim: ld [wFXAnimID], a ; fallthrough -; 37e47 - -PlayUserBattleAnim: ; 37e47 +PlayUserBattleAnim: push hl push de push bc @@ -7366,10 +6813,7 @@ PlayUserBattleAnim: ; 37e47 pop hl ret -; 37e54 - - -PlayOpponentBattleAnim: ; 37e54 +PlayOpponentBattleAnim: ld a, e ld [wFXAnimID], a ld a, d @@ -7390,35 +6834,23 @@ PlayOpponentBattleAnim: ; 37e54 pop hl ret -; 37e73 - - -CallBattleCore: ; 37e73 - ld a, BANK(BattleCore) +CallBattleCore: + ld a, BANK("Battle Core") rst FarCall ret -; 37e77 - - -AnimateFailedMove: ; 37e77 +AnimateFailedMove: call BattleCommand_LowerSub call BattleCommand_MoveDelay jp BattleCommand_RaiseSub -; 37e80 - - -BattleCommand_MoveDelay: ; 37e80 +BattleCommand_MoveDelay: ; movedelay ; Wait 40 frames. ld c, 40 jp DelayFrames -; 37e85 - - -BattleCommand_ClearText: ; 37e85 +BattleCommand_ClearText: ; cleartext ; Used in multi-hit moves. @@ -7427,10 +6859,8 @@ BattleCommand_ClearText: ; 37e85 .text db "@" -; 37e8c - -SkipToBattleCommand: ; 37e8c +SkipToBattleCommand: ; Skip over commands until reaching command b. ld a, [wBattleScriptBufferAddress + 1] ld h, a @@ -7447,10 +6877,7 @@ SkipToBattleCommand: ; 37e8c ld [wBattleScriptBufferAddress], a ret -; 37ea1 - - -GetMoveAttr: ; 37ea1 +GetMoveAttr: ; Assuming hl = Moves + x, return attribute x of move a. push bc ld bc, MOVE_LENGTH @@ -7459,49 +6886,31 @@ GetMoveAttr: ; 37ea1 pop bc ret -; 37ead - - -GetMoveData: ; 37ead +GetMoveData: ; Copy move struct a to de. ld hl, Moves ld bc, MOVE_LENGTH call AddNTimes - ld a, Bank(Moves) + ld a, BANK(Moves) jp FarCopyBytes -; 37ebb - - -GetMoveByte: ; 37ebb +GetMoveByte: ld a, BANK(Moves) jp GetFarByte -; 37ec0 - - -DisappearUser: ; 37ec0 +DisappearUser: farcall _DisappearUser ret -; 37ec7 - - -AppearUserLowerSub: ; 37ec7 +AppearUserLowerSub: farcall _AppearUserLowerSub ret -; 37ece - - -AppearUserRaiseSub: ; 37ece +AppearUserRaiseSub: farcall _AppearUserRaiseSub ret -; 37ed5 - - -_CheckBattleScene: ; 37ed5 +_CheckBattleScene: ; Checks the options. Returns carry if battle animations are disabled. push hl push de @@ -7511,5 +6920,3 @@ _CheckBattleScene: ; 37ed5 pop de pop hl ret - -; 37ee2 |