diff options
Diffstat (limited to 'battle/core.asm')
-rw-r--r-- | battle/core.asm | 1659 |
1 files changed, 830 insertions, 829 deletions
diff --git a/battle/core.asm b/battle/core.asm index 6cb19b7d6..5503d307d 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -12,8 +12,8 @@ Function3c000: ; 3c000 inc a ld [$d264], a ld hl, OTPartyMon1HP - ld bc, $002f - ld d, $3 + ld bc, OTPartyMon2 - (OTPartyMon1 + 1) + ld d, NUM_MOVES - 1 .asm_3c019 inc d ld a, [hli] @@ -24,7 +24,7 @@ Function3c000: ; 3c000 .asm_3c021 ld a, d - ld [$d430], a + ld [wBattleAction], a ld a, [InLinkBattle] and a jr z, .asm_3c031 @@ -57,9 +57,9 @@ Function3c000: ; 3c000 call Function30b4 ld a, [BattleType] cp $2 - jp z, Function3c0e2 - cp $3 - jp z, Function3c0e2 + jp z, .asm_3c0e2 + cp BATTLETYPE_TUTORIAL + jp z, .asm_3c0e2 xor a ld [CurPartyMon], a .asm_3c06b @@ -114,10 +114,9 @@ Function3c000: ; 3c000 .asm_3c0df jp Function3c12f -; 3c0e2 -Function3c0e2: ; 3c0e2 - jp Function3e139 +.asm_3c0e2 + jp BattleMenu ; 3c0e5 @@ -162,69 +161,75 @@ Function3c0e5: ; 3c0e5 ; 3c12f Function3c12f: ; 3c12f +.loop call Function3c1bf call Function3c3f5 - jp c, .asm_3c1be + jp c, .quit + xor a - ld [$c710], a - ld [$c711], a + ld [wPlayerIsSwitching], a + ld [wEnemyIsSwitching], a ld [$d264], a ld [$c73f], a ld [$c740], a ld [CurDamage], a - ld [$d257], a + ld [CurDamage + 1], a + call Function3c27c call UpdateBattleMonInParty callba AIChooseMove - call Function3d2f1 - jr nz, .asm_3c174 + + call IsMobileBattle + jr nz, .not_disconnected callba Function100da5 callba Function100641 callba Function100dd8 - jp c, .asm_3c1be + jp c, .quit +.not_disconnected -.asm_3c174 call Function3c410 jr c, .asm_3c18a .asm_3c179 - call Function3e139 - jr c, .asm_3c1be + call BattleMenu + jr c, .quit ld a, [BattleEnded] and a - jr nz, .asm_3c1be - ld a, [$d232] + jr nz, .quit + ld a, [$d232] ; roared/whirlwinded/teleported and a - jr nz, .asm_3c1be - + jr nz, .quit .asm_3c18a call Function3c434 jr nz, .asm_3c179 + call Function3c300 - jr c, .asm_3c1be + jr c, .quit + call Function3c314 jr c, .asm_3c19e call Function3c5fe jr .asm_3c1a1 - .asm_3c19e call Function3c664 - .asm_3c1a1 call Function3d2e0 - jr c, .asm_3c1be + jr c, .quit + ld a, [$d232] and a - jr nz, .asm_3c1be + jr nz, .quit + ld a, [BattleEnded] and a - jr nz, .asm_3c1be + jr nz, .quit + call Function3c1d6 ld a, [BattleEnded] and a - jr nz, .asm_3c1be - jp Function3c12f + jr nz, .quit + jp .loop -.asm_3c1be +.quit ret ; 3c1bf @@ -302,7 +307,7 @@ Function3c1d6: ; 3c1d6 ; 3c23c Function3c23c: ; 3c23c - call Function3c710 + call HasPlayerFainted jr nz, .asm_3c24a call Function3d14e ld a, [BattleEnded] @@ -310,7 +315,7 @@ Function3c23c: ; 3c23c jr nz, .asm_3c25a .asm_3c24a - call Function3c70b + call HasEnemyFainted jr nz, .asm_3c258 call Function3cd55 ld a, [BattleEnded] @@ -327,7 +332,7 @@ Function3c23c: ; 3c23c ; 3c25c Function3c25c: ; 3c25c - call Function3c70b + call HasEnemyFainted jr nz, .asm_3c26a call Function3cd55 ld a, [BattleEnded] @@ -335,7 +340,7 @@ Function3c25c: ; 3c25c jr nz, .asm_3c27a .asm_3c26a - call Function3c710 + call HasPlayerFainted jr nz, .asm_3c278 call Function3d14e ld a, [BattleEnded] @@ -397,11 +402,11 @@ Function3c27c: ; 3c27c xor a ld [hl], a ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr push af set SUBSTATUS_CONFUSED, [hl] ld a, BATTLE_VARS_MOVE_ANIM - call _GetBattleVar + call GetBattleVarAddr push hl push af xor a @@ -421,9 +426,9 @@ Function3c27c: ; 3c27c ret nz xor a ld [$cfca], a - ld de, $0103 + ld de, ANIM_CONFUSED call Function3ee0f - call Function3c8e4 + call SwitchTurnCore ld hl, BecameConfusedText jp StdBattleTextBox ; 3c300 @@ -432,7 +437,7 @@ Function3c300: ; 3c300 ld a, [InLinkBattle] and a jr z, .asm_3c30d - ld a, [$d430] + ld a, [wBattleAction] cp $f jr z, .asm_3c30f @@ -450,12 +455,12 @@ Function3c314: ; 3c314 ld a, [InLinkBattle] and a jr z, .asm_3c35b - ld a, [$d430] + ld a, [wBattleAction] cp $e jr z, .asm_3c35b cp $d jr z, .asm_3c35b - sub $4 + sub NUM_MOVES jr c, .asm_3c35b ld a, [$d0ec] cp $2 @@ -496,10 +501,10 @@ Function3c314: ; 3c314 callab GetOpponentItem pop de ld a, d - cp $4a + cp HELD_QUICK_CLAW jr nz, .asm_3c391 ld a, b - cp $4a + cp HELD_QUICK_CLAW jr z, .asm_3c39f call BattleRandom cp e @@ -508,7 +513,7 @@ Function3c314: ; 3c314 .asm_3c391 ld a, b - cp $4a + cp HELD_QUICK_CLAW jr nz, .asm_3c3c5 call BattleRandom cp c @@ -537,8 +542,8 @@ Function3c314: ; 3c314 jr .asm_3c3c5 .asm_3c3c5 - ld de, BattleMonSpd - ld hl, EnemyMonSpd + ld de, BattleMonSpeed + ld hl, EnemyMonSpeed ld c, $2 call StringCmp jr z, .asm_3c3d8 @@ -570,7 +575,7 @@ Function3c3f3: ; 3c3f3 Function3c3f5: ; 3c3f5 ld a, [BattleType] - cp $6 + cp BATTLETYPE_CONTEST jr nz, .asm_3c40e ld a, [$dc79] and a @@ -589,23 +594,26 @@ Function3c3f5: ; 3c3f5 Function3c410: ; 3c410 ld a, [PlayerSubStatus4] - and $20 - jp nz, Function3c432 + and 1 << SUBSTATUS_RECHARGE + jp nz, .quit + ld hl, EnemySubStatus3 - res 3, [hl] + res SUBSTATUS_FLINCHED, [hl] ld hl, PlayerSubStatus3 - res 3, [hl] + res SUBSTATUS_FLINCHED, [hl] + ld a, [hl] - and $12 - jp nz, Function3c432 + and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_RAMPAGE + jp nz, .quit + ld hl, PlayerSubStatus1 - bit 6, [hl] - jp nz, Function3c432 + bit SUBSTATUS_ROLLOUT, [hl] + jp nz, .quit + and a ret -; 3c432 -Function3c432: ; 3c432 +.quit scf ret ; 3c434 @@ -614,7 +622,7 @@ Function3c434: ; 3c434 call Function3c410 jp c, .asm_3c4ba ld hl, PlayerSubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] jr z, .asm_3c449 ld a, [LastPlayerMove] ld [CurPlayerMove], a @@ -627,18 +635,18 @@ Function3c434: ; 3c434 and a jr nz, .asm_3c4b5 ld a, [PlayerSubStatus3] - and $1 + and 1 << SUBSTATUS_BIDE jr nz, .asm_3c4ba xor a ld [$d235], a - inc a + inc a ; POUND ld [FXAnimIDLo], a call Function3e4bc push af call Function30b4 call UpdateBattleHuds ld a, [CurPlayerMove] - cp $a5 + cp STRUGGLE jr z, .asm_3c476 call PlayClickSFX @@ -653,26 +661,26 @@ Function3c434: ; 3c434 callab UpdateMoveData xor a ld [$c732], a - ld a, [PlayerMoveEffect] - cp $77 + ld a, [wPlayerMoveStruct + MOVE_EFFECT] + cp EFFECT_FURY_CUTTER jr z, .asm_3c494 xor a ld [PlayerFuryCutterCount], a .asm_3c494 - ld a, [PlayerMoveEffect] - cp $51 + ld a, [wPlayerMoveStruct + MOVE_EFFECT] + cp EFFECT_RAGE jr z, .asm_3c4a4 ld hl, PlayerSubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] xor a ld [$c72b], a .asm_3c4a4 - ld a, [PlayerMoveEffect] - cp $6f + ld a, [wPlayerMoveStruct + MOVE_EFFECT] + cp EFFECT_PROTECT jr z, .asm_3c4c9 - cp $74 + cp EFFECT_ENDURE jr z, .asm_3c4c9 xor a ld [PlayerProtectCount], a @@ -680,7 +688,7 @@ Function3c434: ; 3c434 .asm_3c4b5 ld hl, PlayerSubStatus3 - res 0, [hl] + res SUBSTATUS_BIDE, [hl] .asm_3c4ba xor a @@ -688,7 +696,7 @@ Function3c434: ; 3c434 ld [PlayerProtectCount], a ld [$c72b], a ld hl, PlayerSubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] .asm_3c4c9 call Function3e7c1 @@ -701,7 +709,7 @@ Function3c434: ; 3c434 ld [PlayerProtectCount], a ld [$c72b], a ld hl, PlayerSubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] xor a ret ; 3c4df @@ -717,16 +725,16 @@ Function3c4df: ; 3c4df call .asm_3c518 .asm_3c4ed ld hl, PlayerSubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] ret z ld a, [PlayerEncoreCount] dec a ld [PlayerEncoreCount], a jr z, .asm_3c50a - ld hl, BattleMonPPMove1 + ld hl, BattleMonPP ld a, [CurMoveNum] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and $3f @@ -734,23 +742,23 @@ Function3c4df: ; 3c4df .asm_3c50a ld hl, PlayerSubStatus5 - res 4, [hl] + res SUBSTATUS_ENCORED, [hl] call SetEnemyTurn ld hl, BattleText_0x80c8a jp StdBattleTextBox .asm_3c518 ld hl, EnemySubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] ret z ld a, [EnemyEncoreCount] dec a ld [EnemyEncoreCount], a jr z, .asm_3c535 - ld hl, EnemyMonPPMove1 + ld hl, EnemyMonPP ld a, [CurEnemyMoveNum] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and $3f @@ -758,7 +766,7 @@ Function3c4df: ; 3c4df .asm_3c535 ld hl, EnemySubStatus5 - res 4, [hl] + res SUBSTATUS_ENCORED, [hl] call SetPlayerTurn ld hl, BattleText_0x80c8a jp StdBattleTextBox @@ -771,7 +779,7 @@ Function3c543: ; 3c543 jr nz, .Stay ld a, [PlayerSubStatus5] - bit 7, a + bit SUBSTATUS_CANT_RUN, a jr nz, .Stay ld a, [$c731] @@ -915,7 +923,7 @@ GetMoveEffect: ; 3c5ec ld a, b dec a ld hl, Moves + MOVE_EFFECT - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte @@ -939,14 +947,14 @@ Function3c5fe: ; 3c5fe ld a, [$d232] and a ret nz - call Function3c710 + call HasPlayerFainted jp z, Function3d14e - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 .asm_3c62f call SetEnemyTurn - call Function3c716 + call ResidualDamage jp z, Function3cd55 call RefreshBattleHuds call Function3c6cf @@ -955,12 +963,12 @@ Function3c5fe: ; 3c5fe ld a, [$d232] and a ret nz - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 - call Function3c710 + call HasPlayerFainted jp z, Function3d14e call SetPlayerTurn - call Function3c716 + call ResidualDamage jp z, Function3d14e call RefreshBattleHuds xor a @@ -981,13 +989,13 @@ Function3c664: ; 3c664 ret nz call Function3d2e0 ret c - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 - call Function3c710 + call HasPlayerFainted jp z, Function3d14e push bc call SetPlayerTurn - call Function3c716 + call ResidualDamage pop bc jp z, Function3d14e push bc @@ -1003,14 +1011,14 @@ Function3c664: ; 3c664 ld a, [$d232] and a ret nz - call Function3c710 + call HasPlayerFainted jp z, Function3d14e - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 .asm_3c6be call SetEnemyTurn - call Function3c716 + call ResidualDamage jp z, Function3cd55 call RefreshBattleHuds xor a @@ -1033,32 +1041,32 @@ Function3c6de: ; 3c6de ; 3c6ed Function3c6ed: ; 3c6ed - ld a, $5 - call _GetBattleVar - res 2, [hl] - res 5, [hl] - ld a, $9 - call _GetBattleVar - res 6, [hl] + ld a, BATTLE_VARS_SUBSTATUS1_OPP + call GetBattleVarAddr + res SUBSTATUS_PROTECT, [hl] + res SUBSTATUS_ENDURE, [hl] + ld a, BATTLE_VARS_SUBSTATUS5_OPP + call GetBattleVarAddr + res SUBSTATUS_DESTINY_BOND, [hl] ret ; 3c6fe Function3c6fe: ; 3c6fe - ld a, $4 - call _GetBattleVar - res 6, [hl] + ld a, BATTLE_VARS_SUBSTATUS5 + call GetBattleVarAddr + res SUBSTATUS_DESTINY_BOND, [hl] ret ; 3c706 -Function3c706: ; 3c706 +HasUserFainted: ; 3c706 ld a, [hBattleTurn] and a - jr z, Function3c710 -Function3c70b: ; 3c70b - ld hl, EnemyMonHPHi + jr z, HasPlayerFainted +HasEnemyFainted: ; 3c70b + ld hl, EnemyMonHP jr Function3c713 -Function3c710: ; 3c710 +HasPlayerFainted: ; 3c710 ld hl, BattleMonHP Function3c713: ; 3c713 @@ -1067,108 +1075,121 @@ Function3c713: ; 3c713 ret ; 3c716 -Function3c716: ; 3c716 - call Function3c706 +ResidualDamage: ; 3c716 +; Return z if the user fainted before +; or as a result of residual damage. +; For Sandstorm damage, see HandleWeather. + + call HasUserFainted ret z - ld a, $a + + ld a, BATTLE_VARS_STATUS call GetBattleVar - and $18 - jr z, .asm_3c768 - ld hl, BattleText_0x807e2 - ld de, $0106 - and $10 - jr z, .asm_3c733 - ld hl, BattleText_0x807f8 - ld de, $0105 - -.asm_3c733 + and 1 << PSN | 1 << BRN + jr z, .did_psn_brn + + ld hl, HurtByPoisonText + ld de, ANIM_PSN + and 1 << BRN + jr z, .got_anim + ld hl, HurtByBurnText + ld de, ANIM_BRN +.got_anim + push de call StdBattleTextBox pop de + xor a ld [$cfca], a call Function3ee0f call GetEighthMaxHP - ld de, $c674 + ld de, PlayerToxicCount ld a, [hBattleTurn] and a jr z, .asm_3c74d - ld de, $c67c - + ld de, EnemyToxicCount .asm_3c74d - ld a, $4 + + ld a, BATTLE_VARS_SUBSTATUS5 call GetBattleVar - bit 0, a - jr z, .asm_3c765 - call Function3cc76 + bit SUBSTATUS_TOXIC, a + jr z, .did_toxic + call GetSixteenthMaxHP ld a, [de] inc a ld [de], a - ld hl, $0000 -.asm_3c75f + ld hl, 0 +.add add hl, bc dec a - jr nz, .asm_3c75f + jr nz, .add ld b, h ld c, l +.did_toxic -.asm_3c765 call Function3cc3f +.did_psn_brn -.asm_3c768 - call Function3c706 - jp z, .asm_3c7f7 - ld a, $3 - call _GetBattleVar - bit 7, [hl] + call HasUserFainted + jp z, .fainted + + ld a, BATTLE_VARS_SUBSTATUS4 + call GetBattleVarAddr + bit SUBSTATUS_LEECH_SEED, [hl] jr z, .asm_3c7a1 - call Function3c8e4 + + call SwitchTurnCore xor a ld [$cfca], a - ld de, $0107 - ld a, $7 + ld de, ANIM_SAP + ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar - and $60 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND call z, Function3ee0f - call Function3c8e4 + call SwitchTurnCore + call GetEighthMaxHP call Function3cc3f ld a, $1 ld [hBGMapMode], a call Function3ccef - ld hl, BattleText_0x8080e + ld hl, LeechSeedSapsText call StdBattleTextBox - .asm_3c7a1 - call Function3c706 - jr z, .asm_3c7f7 - ld a, $0 - call _GetBattleVar - bit 0, [hl] + + call HasUserFainted + jr z, .fainted + + ld a, BATTLE_VARS_SUBSTATUS1 + call GetBattleVarAddr + bit SUBSTATUS_NIGHTMARE, [hl] jr z, .asm_3c7c5 xor a ld [$cfca], a - ld de, $010c + ld de, ANIM_IN_NIGHTMARE call Function3ee0f call GetQuarterMaxHP call Function3cc3f - ld hl, BattleText_0x80822 + ld hl, HasANightmareText call StdBattleTextBox - .asm_3c7c5 - call Function3c706 - jr z, .asm_3c7f7 - ld a, $0 - call _GetBattleVar - bit 1, [hl] + + call HasUserFainted + jr z, .fainted + + ld a, BATTLE_VARS_SUBSTATUS1 + call GetBattleVarAddr + bit SUBSTATUS_CURSE, [hl] jr z, .asm_3c7e9 + xor a ld [$cfca], a - ld de, $010c + ld de, ANIM_IN_NIGHTMARE call Function3ee0f call GetQuarterMaxHP call Function3cc3f - ld hl, BattleText_0x80836 + ld hl, HurtByCurseText call StdBattleTextBox .asm_3c7e9 @@ -1176,16 +1197,16 @@ Function3c716: ; 3c716 ld a, [hBattleTurn] and a jr z, .asm_3c7f4 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP .asm_3c7f4 ld a, [hli] or [hl] ret nz -.asm_3c7f7 +.fainted call RefreshBattleHuds - ld c, $14 + ld c, 20 call DelayFrames xor a ret @@ -1212,21 +1233,21 @@ Function3c801: ; 3c801 ld hl, EnemyPerishCount .asm_3c827 - ld a, $0 + ld a, BATTLE_VARS_SUBSTATUS1 call GetBattleVar - bit 4, a + bit SUBSTATUS_PERISH, a ret z dec [hl] ld a, [hl] ld [$d265], a push af - ld hl, BattleText_0x80864 + ld hl, PerishCountText call StdBattleTextBox pop af ret nz - ld a, $0 - call _GetBattleVar - res 4, [hl] + ld a, BATTLE_VARS_SUBSTATUS1 + call GetBattleVarAddr + res SUBSTATUS_PERISH, [hl] ld a, [hBattleTurn] and a jr nz, .asm_3c85c @@ -1243,7 +1264,7 @@ Function3c801: ; 3c801 ret .asm_3c85c - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP xor a ld [hli], a ld [hl], a @@ -1285,9 +1306,9 @@ Function3c874: ; 3c874 ld a, [hl] and a ret z - ld a, $3 + ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVar - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ret nz ld a, [de] ld [$d265], a @@ -1295,20 +1316,19 @@ Function3c874: ; 3c874 call GetMoveName dec [hl] jr z, .asm_3c8de - ld a, $2 + ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVar - and $60 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND jr nz, .asm_3c8d3 - call Function3c8e4 + call SwitchTurnCore xor a ld [$cfca], a ld [FXAnimIDHi], a - ld a, $37 - call Predef - call Function3c8e4 + predef PlayBattleAnim + call SwitchTurnCore .asm_3c8d3 - call Function3cc76 + call GetSixteenthMaxHP call Function3cc3f ld hl, BattleText_0x80de2 jr .asm_3c8e1 @@ -1320,9 +1340,9 @@ Function3c874: ; 3c874 jp StdBattleTextBox ; 3c8e4 -Function3c8e4: ; 3c8e4 +SwitchTurnCore: ; 3c8e4 ld a, [hBattleTurn] - xor $1 + xor 1 ld [hBattleTurn], a ret ; 3c8eb @@ -1352,7 +1372,7 @@ Function3c8eb: ; 3c8eb ld a, [hBattleTurn] and a jr z, .asm_3c922 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP .asm_3c922 ld a, [hli] @@ -1367,8 +1387,8 @@ Function3c8eb: ; 3c8eb ret z .asm_3c92d - call Function3cc76 - call Function3c8e4 + call GetSixteenthMaxHP + call SwitchTurnCore call Function3ccef ld hl, BattleText_0x80880 jp StdBattleTextBox @@ -1390,14 +1410,14 @@ Function3c93c: ; 3c93c .asm_3c957 callab GetUserItem ld a, b - cp $6 + cp HELD_RESTORE_PP jr nz, .asm_3c9ae ld hl, PartyMon1PP ld a, [CurBattleMon] call GetPartyLocation ld d, h ld e, l - ld hl, PartyMon1Move1 + ld hl, PartyMon1Moves ld a, [CurBattleMon] call GetPartyLocation ld a, [hBattleTurn] @@ -1408,12 +1428,12 @@ Function3c93c: ; 3c93c ld a, [IsInBattle] dec a jr z, .asm_3c99b - ld hl, OTPartyMon1PPMove1 + ld hl, OTPartyMon1PP ld a, [CurOTMon] call GetPartyLocation ld d, h ld e, l - ld hl, OTPartyMon1Move1 + ld hl, OTPartyMon1Moves ld a, [CurOTMon] call GetPartyLocation @@ -1430,18 +1450,19 @@ Function3c93c: ; 3c93c inc de inc c ld a, c - cp $4 + cp NUM_MOVES jr nz, .asm_3c99d .asm_3c9ae ret .asm_3c9af + ; lousy hack ld a, [hl] - cp $a6 - ld b, $1 + cp SKETCH + ld b, 1 jr z, .asm_3c9b8 - ld b, $5 + ld b, 5 .asm_3c9b8 ld a, [de] @@ -1451,18 +1472,18 @@ Function3c93c: ; 3c93c push bc ld a, [hl] ld [$d265], a - ld de, BattleMonItem - ld hl, BattleMonPPMove1 + ld de, BattleMonMoves - 1 + ld hl, BattleMonPP ld a, [hBattleTurn] and a jr z, .asm_3c9d2 - ld de, EnemyMonItem - ld hl, EnemyMonPPMove1 + ld de, EnemyMonMoves - 1 + ld hl, EnemyMonPP .asm_3c9d2 inc de pop bc - ld b, $0 + ld b, 0 add hl, bc push hl ld h, d @@ -1480,7 +1501,7 @@ Function3c93c: ; 3c93c ld a, [EnemySubStatus5] .asm_3c9ee - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr nz, .asm_3c9f5 ld a, [de] add b @@ -1507,9 +1528,9 @@ Function3c93c: ; 3c93c .asm_3ca14 call GetItemName - call Function3c8e4 + call SwitchTurnCore call Function3ddc8 - call Function3c8e4 + call SwitchTurnCore ld hl, BattleText_0x80899 jp StdBattleTextBox ; 3ca26 @@ -1542,27 +1563,32 @@ Function3ca26: ; 3ca26 ld [hl], a cp $1 ret nz + ld hl, BattleText_0x808b6 call StdBattleTextBox - ld a, $10 - call _GetBattleVar + + ld a, BATTLE_VARS_MOVE + call GetBattleVarAddr push af - ld a, $f8 + ld a, FUTURE_SIGHT ld [hl], a + callab UpdateMoveData xor a ld [AttackMissed], a ld [AlreadyDisobeyed], a - ld a, $a + ld a, 10 ld [TypeModifier], a callab DoMove xor a ld [CurDamage], a - ld [$d257], a - ld a, $10 - call _GetBattleVar + ld [CurDamage + 1], a + + ld a, BATTLE_VARS_MOVE + call GetBattleVarAddr pop af ld [hl], a + call UpdateBattleMonInParty jp UpdateEnemyMonInParty ; 3ca8f @@ -1578,7 +1604,7 @@ Function3ca8f: ; 3ca8f call .asm_3cac9 .asm_3ca9d ld a, [BattleMonStatus] - bit 5, a + bit FRZ, a ret z ld a, [$c73f] and a @@ -1591,7 +1617,7 @@ Function3ca8f: ; 3ca8f ld a, [CurBattleMon] ld hl, PartyMon1Status call GetPartyLocation - ld [hl], $0 + ld [hl], 0 call UpdateBattleHuds call SetEnemyTurn ld hl, DefrostedOpponentText @@ -1599,7 +1625,7 @@ Function3ca8f: ; 3ca8f .asm_3cac9 ld a, [EnemyMonStatus] - bit 5, a + bit FRZ, a ret z ld a, [$c740] and a @@ -1609,15 +1635,16 @@ Function3ca8f: ; 3ca8f ret nc xor a ld [EnemyMonStatus], a + ld a, [IsInBattle] dec a jr z, .asm_3caef ld a, [CurOTMon] ld hl, OTPartyMon1Status call GetPartyLocation - ld [hl], $0 - + ld [hl], 0 .asm_3caef + call UpdateBattleHuds call SetPlayerTurn ld hl, DefrostedOpponentText @@ -1635,24 +1662,24 @@ Function3cafb: ; 3cafb call .asm_3cb1c .asm_3cb09 ld a, [PlayerScreens] - bit 2, a + bit SCREENS_SAFEGUARD, a ret z ld hl, $c701 dec [hl] ret nz - res 2, a + res SCREENS_SAFEGUARD, a ld [PlayerScreens], a xor a jr .asm_3cb2e .asm_3cb1c ld a, [EnemyScreens] - bit 2, a + bit SCREENS_SAFEGUARD, a ret z ld hl, $c705 dec [hl] ret nz - res 2, a + res SCREENS_SAFEGUARD, a ld [EnemyScreens], a ld a, $1 @@ -1676,7 +1703,7 @@ Function3cb36: ; 3cb36 .CheckPlayer call SetPlayerTurn ld de, .Your - call .asm_3cb6f + call .Copy ld hl, PlayerScreens ld de, PlayerLightScreenCount jr .FadeScreens @@ -1684,7 +1711,7 @@ Function3cb36: ; 3cb36 .CheckEnemy call SetEnemyTurn ld de, .Enemy - call .asm_3cb6f + call .Copy ld hl, EnemyScreens ld de, EnemyLightScreenCount @@ -1695,7 +1722,7 @@ Function3cb36: ; 3cb36 call nz, FadeReflect ret -.asm_3cb6f +.Copy ld hl, StringBuffer1 jp CopyName2 ; 3cb75 @@ -1734,37 +1761,37 @@ FadeReflect: ; 3cb91 ; 3cb9e HandleWeather: ; 3cb9e - ld a, [Weather] - cp 0 + cp WEATHER_NONE ret z ld hl, WeatherCount dec [hl] - jr z, .asm_3cc13 + jr z, .ended ld hl, .WeatherMessages - call .asm_3cc1e + call .PrintWeatherMessage + ld a, [Weather] cp WEATHER_SANDSTORM ret nz + ld a, [$ffcb] cp 1 - jr z, .asm_3cbc7 + jr z, .enemy_first -; Player first +.player_first call SetPlayerTurn - call .asm_3cbd0 + call .SandstormDamage call SetEnemyTurn - jr .asm_3cbd0 + jr .SandstormDamage -.asm_3cbc7 -; Enemy first +.enemy_first call SetEnemyTurn - call .asm_3cbd0 + call .SandstormDamage call SetPlayerTurn -.asm_3cbd0 +.SandstormDamage ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVar bit SUBSTATUS_UNDERGROUND, a @@ -1773,10 +1800,9 @@ HandleWeather: ; 3cb9e ld hl, BattleMonType1 ld a, [hBattleTurn] and a - jr z, .asm_3cbe3 + jr z, .ok ld hl, EnemyMonType1 - -.asm_3cbe3 +.ok ld a, [hli] cp ROCK ret z @@ -1793,26 +1819,26 @@ HandleWeather: ; 3cb9e cp STEEL ret z - call Function3c8e4 + call SwitchTurnCore xor a ld [$cfca], a - ld de, $010b + ld de, ANIM_IN_SANDSTORM call Function3ee17 - call Function3c8e4 + call SwitchTurnCore call GetEighthMaxHP call Function3cc3f - ld hl, BattleText_0x8084d + ld hl, SandstormHitsText jp StdBattleTextBox -.asm_3cc13 +.ended ld hl, .WeatherEndedMessages - call .asm_3cc1e + call .PrintWeatherMessage xor a ld [Weather], a ret -.asm_3cc1e +.PrintWeatherMessage ld a, [Weather] dec a ld c, a @@ -1846,15 +1872,13 @@ Function3cc3f: ; 3cc3f ; 3cc45 - Function3cc45: ; 3cc45 ld hl, BattleMonHP ld a, [hBattleTurn] and a - jr z, .asm_3cc50 - ld hl, EnemyMonHPHi - -.asm_3cc50 + jr z, .ok + ld hl, EnemyMonHP +.ok inc hl ld a, [hl] ld [$d1ec], a @@ -1879,16 +1903,17 @@ Function3cc45: ; 3cc45 ret ; 3cc76 -Function3cc76: ; 3cc76 +GetSixteenthMaxHP: ; 3cc76 call GetQuarterMaxHP + ; quarter result srl c srl c + ; round up ld a, c and a - jr nz, .asm_3cc82 + jr nz, .ok inc c - -.asm_3cc82 +.ok ret ; 3cc83 @@ -1934,7 +1959,7 @@ GetHalfMaxHP: ; 3cc9f ; output: bc call GetMaxHP -; halve reslut +; halve result srl b rr c @@ -1951,18 +1976,12 @@ GetHalfMaxHP: ; 3cc9f GetMaxHP: ; 3ccac ; output: bc, Buffer1-2 -; player ld hl, BattleMonMaxHP - -; whose turn? ld a, [hBattleTurn] and a - jr z, .gethp - -; enemy + jr z, .ok ld hl, EnemyMonMaxHP - -.gethp +.ok ld a, [hli] ld [Buffer2], a ld b, a @@ -1977,10 +1996,9 @@ Function3ccc2: ; 3ccc2 ld hl, BattleMonHP ld a, [hBattleTurn] and a - jr z, .asm_3cccd + jr z, .ok ld hl, EnemyMonHP - -.asm_3cccd +.ok ld a, [hli] ld b, a ld a, [hli] @@ -1998,10 +2016,9 @@ Function3ccde: ; 3ccde ld hl, BattleMonHP + 1 ld a, [hBattleTurn] and a - jr z, .asm_3cce9 + jr z, .ok ld hl, EnemyMonHP + 1 - -.asm_3cce9 +.ok ld a, c sub [hl] dec hl @@ -2015,25 +2032,25 @@ Function3ccef: ; 3ccef ld hl, EnemyMonMaxHP ld a, [hBattleTurn] and a - jr z, .asm_3ccfa + jr z, .ok ld hl, BattleMonMaxHP - -.asm_3ccfa +.ok ld a, [hli] - ld [Buffer2], a + ld [Buffer1 + 1], a ld a, [hld] - ld [Buffer1], a + ld [Buffer1 + 0], a dec hl ld a, [hl] - ld [$d1ec], a + ld [Buffer1 + 2], a add c ld [hld], a - ld [$d1ee], a + ld [Buffer1 + 4], a ld a, [hl] - ld [$d1ed], a + ld [Buffer1 + 3], a adc b ld [hli], a - ld [$d1ef], a + ld [Buffer1 + 5], a + ld a, [Buffer1] ld c, a ld a, [hld] @@ -2045,15 +2062,15 @@ Function3ccef: ; 3ccef jr c, .asm_3cd2d ld a, b ld [hli], a - ld [$d1ef], a + ld [Buffer1 + 5], a ld a, c ld [hl], a - ld [$d1ee], a - + ld [Buffer1 + 4], a .asm_3cd2d - call Function3c8e4 + + call SwitchTurnCore call Function3cd36 - jp Function3c8e4 + jp SwitchTurnCore ; 3cd36 Function3cd36: ; 3cd36 @@ -2061,21 +2078,18 @@ Function3cd36: ; 3cd36 jp UpdateBattleHuds ; 3cd3c - Function3cd3c: ; 3cd3c hlcoord 10, 9 ld a, [hBattleTurn] and a - ld a, $1 - jr z, .asm_3cd4a + ld a, 1 + jr z, .ok hlcoord 2, 2 xor a - -.asm_3cd4a +.ok push bc ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 pop bc ret ; 3cd55 @@ -2093,31 +2107,38 @@ Function3cd55: ; 3cd55 ld a, d and a jp z, LostBattle + ld hl, BattleMonHP ld a, [hli] or [hl] - call nz, Function3df48 + call nz, UpdatePlayerHUD + ld a, $1 ld [hBGMapMode], a - ld c, $3c + ld c, 60 call DelayFrames + ld a, [IsInBattle] dec a jr nz, .asm_3cd8c - ld a, $1 + + ld a, 1 ld [BattleEnded], a ret .asm_3cd8c call Function3cf35 jp z, Function3cfa4 + ld hl, BattleMonHP ld a, [hli] or [hl] jr nz, .asm_3cdba + call Function3d1f8 jr nc, .asm_3cda4 - ld a, $1 + + ld a, 1 ld [BattleEnded], a ret @@ -2125,6 +2146,7 @@ Function3cd55: ; 3cd55 call Function3d227 call Function3d2e0 jp c, Function3c0e5 + ld a, $1 ld [$d0ec], a call Function3cf4a @@ -2147,7 +2169,7 @@ Function3cdca: ; 3cdca jr z, .asm_3cde6 call ClearSprites hlcoord 1, 0 - ld bc, $040a + lb bc, 4, 10 call ClearBox call Function3d2b3 ld a, $1 @@ -2264,27 +2286,29 @@ Function3ce01: ; 3ce01 Function3ceaa: ; 3ceaa ld a, [PartyCount] ld b, a - ld hl, PartyMon1Species + ld hl, PartyMon1 ld c, $1 ld d, $0 .asm_3ceb5 push hl push bc - ld bc, $0022 + ld bc, PartyMon1HP - PartyMon1 add hl, bc ld a, [hli] or [hl] pop bc pop hl jr z, .asm_3ced1 + push hl push bc - ld bc, $0001 + ld bc, PartyMon1Item - PartyMon1 add hl, bc pop bc ld a, [hl] pop hl - cp $39 + + cp EXP_SHARE jr nz, .asm_3ced1 ld a, d or c @@ -2293,7 +2317,7 @@ Function3ceaa: ; 3ceaa .asm_3ced1 sla c push de - ld de, $0030 + ld de, PartyMon2 - PartyMon1 add hl, de pop de dec b @@ -2331,7 +2355,7 @@ Function3cef1: ; 3cef1 call Function37b6 call Function3d43b hlcoord 9, 7 - ld bc, $050b + lb bc, 5, 11 call ClearBox ld hl, BattleText_0x80a75 jp StdBattleTextBox @@ -2345,7 +2369,7 @@ Function3cf14: ; 3cf14 ld de, SFX_UNKNOWN_2A call PlaySFX hlcoord 1, 0 - ld bc, $040a + lb bc, 4, 10 call ClearBox ld hl, BattleText_0x809a8 jp StdBattleTextBox @@ -2356,7 +2380,7 @@ Function3cf35: ; 3cf35 ld b, a xor a ld hl, OTPartyMon1HP - ld de, $0030 + ld de, PartyMon2 - PartyMon1 .asm_3cf40 or [hl] inc hl @@ -2379,7 +2403,7 @@ Function3cf4a: ; 3cf4a and a jr z, .asm_3cf6d call Function3e8e4 - ld a, [$d430] + ld a, [wBattleAction] cp $f ret z call Function30b4 @@ -2415,7 +2439,7 @@ EnemyPartyMonEntrance: ; 3cf78 call SetEnemyTurn call SpikesDamage xor a - ld [EnemyMoveAnimation], a + ld [wEnemyMoveStruct + MOVE_ANIM], a ld [$d0ec], a inc a ret @@ -2433,7 +2457,7 @@ Function3cfa4: ; 3cfa4 callab Function39939 ld hl, BattleText_0x809da call StdBattleTextBox - call Function3d2f1 + call IsMobileBattle jr z, .asm_3cff5 ld a, [InLinkBattle] and a @@ -2445,11 +2469,9 @@ Function3cfa4: ; 3cfa4 ld c, $28 call DelayFrames ld a, [BattleType] - cp $1 + cp BATTLETYPE_CANLOSE jr nz, .asm_3cfe8 - ld a, $2 - call Predef - + predef Functionc658 .asm_3cfe8 ld a, [$c2cc] bit 0, a @@ -2475,7 +2497,7 @@ Function3cfa4: ; 3cfa4 ld c, $3 callba Function11c000 call Functiona80 - ld hl, $c6ec + ld hl, wPayDayMoney ld a, [hli] or [hl] inc hl @@ -2494,7 +2516,7 @@ Function3d02b: ; 3d02b push af ld a, $0 jr nc, .asm_3d044 - ld a, [$d854] + ld a, [wMomSavingMoney] and $7 cp $3 jr nz, .asm_3d044 @@ -2525,7 +2547,7 @@ Function3d02b: ; 3d02b call Function3d099 pop af jr nc, .asm_3d07b - ld a, [$d854] + ld a, [wMomSavingMoney] and $7 jr z, .asm_3d07b ld hl, SentToMomTexts @@ -2547,7 +2569,7 @@ Function3d02b: ; 3d02b Function3d081: ; 3d081 push bc ld hl, $c688 - ld de, $d853 + ld de, wMomsMoney + 2 call Function3d0be pop bc ret @@ -2556,7 +2578,7 @@ Function3d081: ; 3d081 Function3d08d: ; 3d08d push bc ld hl, $c688 - ld de, $d850 + ld de, Money + 2 call Function3d0be pop bc ret @@ -2585,13 +2607,13 @@ SentToMomTexts: ; 3d0ab Function3d0b1: ; 3d0b1 - ld hl, $d853 + ld hl, wMomsMoney + 2 ld a, [hld] - cp $3f + cp 999999 % $100 ld a, [hld] - sbc $42 + sbc 999999 / $100 % $100 ld a, [hl] - sbc $f + sbc 999999 / $10000 % $100 ret ; 3d0be @@ -2616,17 +2638,17 @@ Function3d0be: ; 3d0be jr nz, .asm_3d0ce pop hl ld a, [hld] - cp $3f + cp 999999 % $100 ld a, [hld] - sbc $42 + sbc 999999 / $100 % $100 ld a, [hl] - sbc $f + sbc 999999 / $10000 % $100 ret c - ld [hl], $f + ld [hl], 999999 / $10000 % $100 inc hl - ld [hl], $42 + ld [hl], 999999 / $100 % $100 inc hl - ld [hl], $3f + ld [hl], 999999 % $100 ret ; 3d0ea @@ -2643,7 +2665,7 @@ Function3d0ea: ; 3d0ea call Function3ceaa pop de jr nz, .asm_3d11e - ld hl, $c6ec + ld hl, wPayDayMoney ld a, [hli] or [hl] jr nz, .asm_3d11e @@ -2724,7 +2746,7 @@ KantoGymLeaders: Function3d14e: ; 3d14e call Function3cef1 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] call z, Function3cf14 @@ -2735,7 +2757,7 @@ Function3d14e: ; 3d14e ld a, d and a jp z, LostBattle - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] jr nz, .asm_3d185 @@ -2777,8 +2799,7 @@ Function3d1aa: ; 3d1aa ld c, a ld hl, $c664 ld b, $0 - ld a, $3 - call Predef + predef FlagPredef ld hl, EnemySubStatus3 res 2, [hl] xor a @@ -2833,7 +2854,7 @@ Function3d1f8: ; 3d1f8 cp $1 jr z, .asm_3d20a ld hl, PartyMon1Speed - ld de, EnemyMonSpd + ld de, EnemyMonSpeed jp Function3d8b3 ; 3d227 @@ -2854,7 +2875,7 @@ Function3d227: ; 3d227 ld [$d0ec], a call Function3d2e0 jr c, .asm_3d251 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] jr nz, .asm_3d26c @@ -2920,7 +2941,6 @@ Function3d2b3: ; 3d2b3 ; 3d2e0 - Function3d2e0: ; 3d2e0 ld a, [InLinkBattle] cp $4 @@ -2936,7 +2956,7 @@ Function3d2e0: ; 3d2e0 ret ; 3d2f1 -Function3d2f1: ; 3d2f1 +IsMobileBattle: ; 3d2f1 ld a, [InLinkBattle] cp $4 ret @@ -2962,25 +2982,25 @@ Function3d313: ; 3d313 ; 3d329 Function3d329: ; 3d329 - call Function3d2f1 - jr z, .asm_3d335 + call IsMobileBattle + jr z, .mobile callba PartyMenuSelect ret -.asm_3d335 +.mobile callba Function100cb5 ret ; 3d33c PickPartyMonInBattle: ; 3d33c -.asm_3d33c +.loop ld a, $2 ; Which PKMN? ld [PartyMenuActionText], a call Function3d313 call Function3d329 ret c call Function3d887 - jr z, .asm_3d33c + jr z, .loop xor a ret ; 3d34f @@ -3108,14 +3128,14 @@ LostBattle: ; 3d38e and $c0 add 2 ld [$d0ee], a - jr .asm_3d412 + jr .text .asm_3d40a ld hl, LostAgainstText - call Function3d2f1 + call IsMobileBattle jr z, .asm_3d417 -.asm_3d412 +.text call StdBattleTextBox .end @@ -3204,7 +3224,7 @@ Function3d444: ; 3d444 Function3d490: ; 3d490 - ld [hConnectionStripLength], a + ld [$ffaf], a ld c, a .asm_3d493 push bc @@ -3214,7 +3234,7 @@ Function3d490: ; 3d490 push hl call Function3d4ae pop hl - ld de, 20 + ld de, SCREEN_WIDTH add hl, de dec b jr nz, .asm_3d497 @@ -3228,24 +3248,24 @@ Function3d490: ; 3d490 ; 3d4ae Function3d4ae: ; 3d4ae - ld a, [hConnectionStripLength] + ld a, [$ffaf] ld c, a cp $8 - jr nz, .asm_3d4bc -.asm_3d4b5 + jr nz, .back +.forward ld a, [hli] ld [hld], a dec hl dec c - jr nz, .asm_3d4b5 + jr nz, .forward ret -.asm_3d4bc +.back ld a, [hld] ld [hli], a inc hl dec c - jr nz, .asm_3d4bc + jr nz, .back ret ; 3d4c3 @@ -3273,7 +3293,6 @@ Function3d4e1: ; 3d4e1 call Function3d533 jr c, .asm_3d4f1 call Function3d599 - .asm_3d4f1 call Function3d6ca call Function3d74b @@ -3288,7 +3307,7 @@ Function3d4e1: ; 3d4e1 ld [$c6fc], a ld [$d0ec], a inc a - ld [$c711], a + ld [wEnemyIsSwitching], a call Function309d jp Function3e3ad ; 3d517 @@ -3298,11 +3317,10 @@ Function3d517: ; 3d517 call Function3d533 jr c, .asm_3d522 call Function3d599 - .asm_3d522 call Function3d6ca - ld a, $1 - ld [$c711], a + ld a, 1 + ld [wEnemyIsSwitching], a call Function3d7a0 call Function3d7b8 jp Function3d7c7 @@ -3312,8 +3330,9 @@ Function3d533: ; 3d533 ld a, [InLinkBattle] and a jr z, .asm_3d541 - ld a, [$d430] - sub $4 + + ld a, [wBattleAction] + sub NUM_MOVES ld b, a jr .asm_3d555 @@ -3363,14 +3382,12 @@ Function3d581: ; 3d581 ld a, [CurBattleMon] ld c, a ld hl, $c664 - ld b, $1 + ld b, SET_FLAG push bc - ld a, $3 - call Predef + predef FlagPredef pop bc ld hl, $c6fc - ld a, $3 - jp Predef + predef_jump FlagPredef ; 3d599 Function3d599: ; 3d599 @@ -3412,25 +3429,25 @@ Function3d599: ; 3d599 Function3d5d7: ; 3d5d7 push bc - ld hl, OTPartyMon1Move1 + ld hl, OTPartyMon1Moves ld a, b call GetPartyLocation pop bc - ld e, $5 -.asm_3d5e2 + ld e, NUM_MOVES + 1 +.loop dec e - jr z, .asm_3d617 + jr z, .done ld a, [hli] and a - jr z, .asm_3d617 + jr z, .done push hl push de push bc dec a - ld hl, Moves + MOVE_ANIM - ld bc, Move2 - Move1 + ld hl, Moves + ld bc, MOVE_LENGTH call AddNTimes - ld de, EnemyMoveAnimation + ld de, wEnemyMoveStruct ld a, BANK(Moves) call FarCopyBytes call SetEnemyTurn @@ -3439,13 +3456,12 @@ Function3d5d7: ; 3d5d7 pop de pop hl ld a, [$d265] - cp $b - jr c, .asm_3d5e2 + cp 10 + 1 ; 1.0 + 0.1 + jr c, .loop ld hl, Buffer1 set 0, [hl] ret - -.asm_3d617 +.done ret ; 3d618 @@ -3467,14 +3483,14 @@ Function3d618: ; 3d618 ld a, BANK(BaseData) call FarCopyBytes ld a, [BattleMonType1] - ld [PlayerMoveType], a + ld [wPlayerMoveStruct + MOVE_TYPE], a call SetPlayerTurn callab Function347c8 ld a, [$d265] cp $b jr nc, .asm_3d663 ld a, [BattleMonType2] - ld [PlayerMoveType], a + ld [wPlayerMoveStruct + MOVE_TYPE], a callab Function347c8 ld a, [$d265] cp $b @@ -3572,7 +3588,7 @@ Function3d6ca: ; 3d6ca inc a ld hl, OTPartyCount ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] ld [TempEnemyMonSpecies], a @@ -3584,14 +3600,12 @@ Function3d6ca: ; 3d6ca ld a, [$def4] and a jr nz, .asm_3d708 - ld hl, EnemyMonAtkDefDV - ld a, $2d - call Predef + ld hl, EnemyMonDVs + predef GetUnownLetter ld a, [UnownLetter] ld [$def4], a - .asm_3d708 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] ld [$c6ea], a ld a, [hl] @@ -3610,7 +3624,7 @@ Function3d714: ; 3d714 and a jp nz, .asm_3d749 ld a, [Options] - bit 6, a + bit BATTLE_SHIFT, a jr nz, .asm_3d749 ld a, [CurPartyMon] push af @@ -3676,7 +3690,7 @@ Function3d7a0: ; 3d7a0 call Function1c07 call ClearSprites hlcoord 1, 0 - ld bc, $040a + lb bc, 4, 10 call ClearBox call WaitBGMap jp Function3ee27 @@ -3694,25 +3708,26 @@ Function3d7c7: ; 3d7c7 ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData - ld a, $1 + ld a, OTPARTYMON ld [MonType], a - ld a, $1f - call Predef + predef Function5084a call Function3f47c + xor a ld [$cfca], a ld [$c689], a call SetEnemyTurn - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 + call Function3da79 jr nc, .asm_3d800 - ld a, $1 + ld a, 1 ; shiny anim ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 - .asm_3d800 + ld bc, TempMonSpecies callba Function4e53f jr c, .asm_3d82c @@ -3721,8 +3736,7 @@ Function3d7c7: ; 3d7c7 hlcoord 12, 0 ld d, $0 ld e, $0 - ld a, $47 - call Predef + predef Functiond008e jr .asm_3d82c .asm_3d821 @@ -3732,7 +3746,7 @@ Function3d7c7: ; 3d7c7 call Function37b6 .asm_3d82c - call Function3e036 + call UpdateEnemyHUD ld a, $1 ld [hBGMapMode], a ret @@ -3751,7 +3765,7 @@ NewEnemyMonStatus: ; 3d834 ld [hl], a ld [EnemyDisableCount], a ld [EnemyFuryCutterCount], a - ld [$c681], a + ld [EnemyProtectCount], a ld [$c72c], a ld [EnemyDisabledMove], a ld [$c6fa], a @@ -3759,7 +3773,7 @@ NewEnemyMonStatus: ; 3d834 ld [$c731], a ld [EnemyTurnsTaken], a ld hl, PlayerSubStatus5 - res 7, [hl] + res SUBSTATUS_CANT_RUN, [hl] ret ; 3d867 @@ -3779,7 +3793,7 @@ Function3d873: ; 3d873 ld e, a xor a ld hl, PartyMon1HP - ld bc, $002f + ld bc, PartyMon2 - (PartyMon1 + 1) .asm_3d87e or [hl] inc hl @@ -3826,15 +3840,15 @@ Function3d8b3: ; 3d8b3 ld a, [BattleType] cp $2 jp z, .asm_3d9a2 - cp $6 + cp BATTLETYPE_CONTEST jp z, .asm_3d9a2 - cp $9 + cp BATTLETYPE_TRAP jp z, .asm_3d98d - cp $b + cp BATTLETYPE_CELEBI jp z, .asm_3d98d - cp $7 + cp BATTLETYPE_SHINY jp z, .asm_3d98d - cp $c + cp BATTLETYPE_SUICUNE jp z, .asm_3d98d ld a, [InLinkBattle] @@ -3846,7 +3860,7 @@ Function3d8b3: ; 3d8b3 jp nz, .asm_3d992 ld a, [EnemySubStatus5] - bit 7, a + bit SUBSTATUS_CANT_RUN, a jp nz, .asm_3d98d ld a, [$c730] @@ -3860,7 +3874,7 @@ Function3d8b3: ; 3d8b3 ld b, a callab GetItem ld a, b - cp $48 + cp HELD_ESCAPE pop de pop hl jr nz, .asm_3d916 @@ -3969,8 +3983,8 @@ Function3d8b3: ; 3d8b3 call Function3d2e0 jr c, .asm_3d9f5 -; Got away safely - ld a, [$d430] + ; Got away safely + ld a, [wBattleAction] cp $f ld a, $2 jr z, .asm_3d9cf @@ -4011,21 +4025,21 @@ Function3d8b3: ; 3d8b3 Function3da0d: ; 3da0d - ld a, $0 + ld a, PartyMon1Species - PartyMon1 call GetPartyParamLocation ld de, BattleMonSpecies - ld bc, $0006 + ld bc, 1 + 1 + NUM_MOVES ; species, item, moves ; BattleMonDVs - BattleMonSpecies call CopyBytes - ld bc, $000f + ld bc, PartyMon1DVs - (PartyMon1Species + 1 + 1 + NUM_MOVES) add hl, bc - ld de, BattleMonAtkDefDV - ld bc, $0007 + ld de, BattleMonDVs + ld bc, 2 + NUM_MOVES + 1 ; DVs, PP, happiness ; BattleMonLevel - BattleMonDVs call CopyBytes inc hl inc hl inc hl ld de, BattleMonLevel - ld bc, $0011 + ld bc, 1 + 1 + 1 + 2 + 2 * 6 ; level, status, unused, stats call CopyBytes ld a, [BattleMonSpecies] ld [TempBattleMonSpecies], a @@ -4036,15 +4050,15 @@ Function3da0d: ; 3da0d ld [BattleMonType1], a ld a, [BaseType2] ld [BattleMonType2], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [CurBattleMon] call SkipNames ld de, BattleMonNick - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes - ld hl, BattleMonAtk + ld hl, BattleMonAttack ld de, PlayerStats - ld bc, $000a + ld bc, 2 * 5 call CopyBytes call Function3ec2c call BadgeStatBoosts @@ -4066,9 +4080,9 @@ Function3da7c: ; 3da7c ; 3da85 Function3da85: ; 3da85 - ld hl, BattleMonAtkDefDV + ld hl, BattleMonDVs ld a, [PlayerSubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a ret z ld hl, PartyMon1DVs ld a, [CurBattleMon] @@ -4076,15 +4090,15 @@ Function3da85: ; 3da85 ; 3da97 Function3da97: ; 3da97 - ld hl, EnemyMonAtkDefDV + ld hl, EnemyMonDVs ld a, [EnemySubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a ret z ld hl, $c6f2 ld a, [IsInBattle] dec a ret z - ld hl, OTPartyMon1AtkDefDV + ld hl, OTPartyMon1DVs ld a, [CurOTMon] jp GetPartyLocation ; 3dab1 @@ -4106,31 +4120,31 @@ Function3dabd: ; 3dabd ld hl, OTPartyMon1Species call GetPartyLocation ld de, EnemyMonSpecies - ld bc, $0006 + ld bc, 1 + 1 + NUM_MOVES call CopyBytes - ld bc, $000f + ld bc, OTPartyMon1DVs - (OTPartyMon1Species + 1 + 1 + NUM_MOVES) add hl, bc - ld de, EnemyMonAtkDefDV - ld bc, $0007 + ld de, EnemyMonDVs + ld bc, 2 + NUM_MOVES + 1 call CopyBytes inc hl inc hl inc hl ld de, EnemyMonLevel - ld bc, $0011 + ld bc, 1 + 1 + 1 + 2 + 2 * 6 call CopyBytes ld a, [EnemyMonSpecies] ld [CurSpecies], a call GetBaseData - ld hl, OTPartyMon1Nickname + ld hl, OTPartyMonNicknames ld a, [CurPartyMon] call SkipNames ld de, EnemyMonNick - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes - ld hl, EnemyMonAtk + ld hl, EnemyMonAttack ld de, EnemyStats - ld bc, $000a + ld bc, 2 * 5 call CopyBytes call Function3ec30 ld hl, BaseType1 @@ -4140,9 +4154,9 @@ Function3dabd: ; 3dabd inc de ld a, [hl] ld [de], a - ld hl, BaseHP + ld hl, BaseStats ld de, EnemyMonBaseStats - ld b, $5 + ld b, 5 .asm_3db25 ld a, [hli] ld [de], a @@ -4169,7 +4183,7 @@ Function3db32: ; 3db32 call Function3db5f call EmptyBattleTextBox call Function309d - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] ret @@ -4177,12 +4191,11 @@ Function3db32: ; 3db32 Function3db5f: ; 3db5f - ld hl, BattleMonAtkDefDV - ld a, $2d - call Predef + ld hl, BattleMonDVs + predef GetUnownLetter hlcoord 1, 5 - ld b, $7 - ld c, $8 + ld b, 7 + ld c, 8 call ClearBox call WaitBGMap xor a @@ -4193,11 +4206,11 @@ Function3db5f: ; 3db5f ld [$d0d2], a ld [CurMoveNum], a ld [TypeModifier], a - ld [PlayerMoveAnimation], a + ld [wPlayerMoveStruct + MOVE_ANIM], a ld [LastEnemyCounterMove], a ld [LastPlayerCounterMove], a ld [LastPlayerMove], a - call Function3e4a8 + call CheckAmuletCoin call Function3ee27 xor a ld [$c731], a @@ -4205,17 +4218,17 @@ Function3db5f: ; 3db5f xor a ld [$cfca], a ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 call Function3da74 jr nc, .asm_3dbbc ld a, $1 ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 .asm_3dbbc - ld a, $0 + ld a, PartyMon1Species - PartyMon1 call GetPartyParamLocation ld b, h ld c, l @@ -4227,7 +4240,7 @@ Function3db5f: ; 3db5f call Function37b6 .asm_3dbd6 - call Function3df48 + call UpdatePlayerHUD ld a, $1 ld [hBGMapMode], a ret @@ -4273,20 +4286,20 @@ BreakAttraction: ; 3dc18 SpikesDamage: ; 3dc23 ld hl, PlayerScreens - ld de, BattleMonType1 - ld bc, Function3df48 + ld de, BattleMonType + ld bc, UpdatePlayerHUD ld a, [hBattleTurn] and a jr z, .ok ld hl, EnemyScreens - ld de, EnemyMonType1 - ld bc, Function3e036 + ld de, EnemyMonType + ld bc, UpdateEnemyHUD .ok bit SCREENS_SPIKES, [hl] ret z -; Flying-types aren't affected by Spikes. + ; Flying-types aren't affected by Spikes. ld a, [de] cp FLYING ret z @@ -4313,15 +4326,17 @@ SpikesDamage: ; 3dc23 ; 3dc5b Function3dc5b: ; 3dc5b - ld a, $10 + ld a, BATTLE_VARS_MOVE call GetBattleVar ld b, a call GetMoveEffect ld a, b - cp $80 + cp EFFECT_PURSUIT jr nz, .asm_3dce4 + ld a, [CurBattleMon] push af + ld hl, DoPlayerTurn ld a, [hBattleTurn] and a @@ -4329,25 +4344,29 @@ Function3dc5b: ; 3dc5b ld hl, DoEnemyTurn ld a, [$c71a] ld [CurBattleMon], a - .asm_3dc7e ld a, BANK(DoPlayerTurn) rst FarCall - ld a, $10 - call _GetBattleVar + + ld a, BATTLE_VARS_MOVE + call GetBattleVarAddr ld a, $ff ld [hl], a + pop af ld [CurBattleMon], a + ld a, [hBattleTurn] and a jr z, .asm_3dcc0 + ld a, [$c71a] call Function399f ld hl, BattleMonHP ld a, [hli] or [hl] jr nz, .asm_3dce4 + ld a, $f0 ld [CryTracks], a ld a, [BattleMonSpecies] @@ -4356,17 +4375,17 @@ Function3dc5b: ; 3dc5b ld c, a ld hl, $c664 ld b, $0 - ld a, $3 - call Predef + predef FlagPredef call Function3d43b ld hl, BattleText_0x80a75 jr .asm_3dcdf .asm_3dcc0 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] jr nz, .asm_3dce4 + ld de, SFX_KINESIS call PlaySFX call WaitSFX @@ -4392,7 +4411,7 @@ Function3dce6: ; 3dce6 xor a ld [hBattleTurn], a ld [$cfca], a - ld de, $0102 + ld de, ANIM_RETURN_MON call Function3ee17 pop af ld [hBattleTurn], a @@ -4428,8 +4447,8 @@ Function3dd2f: ; 3dd2f ld a, b cp $1 ret nz - ld de, EnemyMonHPLo - ld hl, EnemyMonMaxHPHi + ld de, EnemyMonHP + 1 + ld hl, EnemyMonMaxHP ld a, [hBattleTurn] and a jr z, .asm_3dd4a @@ -4502,8 +4521,7 @@ Function3dd2f: ; 3dd2f .asm_3dda4 ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 Function3ddac: call RefreshBattleHuds callab GetOpponentItem @@ -4521,15 +4539,14 @@ Function3ddc8: ; 3ddc8 push de push bc call EmptyBattleTextBox - ld a, $69 + ld a, RECOVER ld [FXAnimIDLo], a - call Function3c8e4 + call SwitchTurnCore xor a ld [$cfca], a ld [FXAnimIDHi], a - ld a, $37 - call Predef - call Function3c8e4 + predef PlayBattleAnim + call SwitchTurnCore pop bc pop de pop hl @@ -4548,8 +4565,8 @@ Function3dde9: ; 3dde9 jr nz, .asm_3ddf2 dec hl ld b, [hl] - ld a, $b - call _GetBattleVar + ld a, BATTLE_VARS_STATUS_OPP + call GetBattleVarAddr and b ret z xor a @@ -4557,20 +4574,20 @@ Function3dde9: ; 3dde9 push bc call UpdateOpponentInParty pop bc - ld a, $9 - call _GetBattleVar + ld a, BATTLE_VARS_SUBSTATUS5_OPP + call GetBattleVarAddr and [hl] - res 0, [hl] - ld a, $5 - call _GetBattleVar + res SUBSTATUS_TOXIC, [hl] + ld a, BATTLE_VARS_SUBSTATUS1_OPP + call GetBattleVarAddr and [hl] - res 0, [hl] + res SUBSTATUS_NIGHTMARE, [hl] ld a, b cp $7f jr nz, .asm_3de26 - ld a, $7 - call _GetBattleVar - res 7, [hl] + ld a, BATTLE_VARS_SUBSTATUS3_OPP + call GetBattleVarAddr + res SUBSTATUS_CONFUSED, [hl] .asm_3de26 ld hl, Function365fd @@ -4580,10 +4597,10 @@ Function3dde9: ; 3dde9 ld hl, Function365d7 .asm_3de31 - call Function3c8e4 + call SwitchTurnCore ld a, BANK(Function365fd) rst FarCall - call Function3c8e4 + call SwitchTurnCore call Function3ddc8 call Function3ddac ld a, $1 @@ -4603,23 +4620,23 @@ Function3dde9: ; 3dde9 Function3de51: ; 3de51 - ld a, $7 + ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar - bit 7, a + bit SUBSTATUS_CONFUSED, a ret z callab GetOpponentItem ld a, b - cp $10 + cp HELD_HEAL_CONFUSION jr z, .asm_3de67 - cp $f + cp HELD_HEAL_STATUS ret nz .asm_3de67 ld a, [hl] ld [$d265], a - ld a, $7 - call _GetBattleVar - res 7, [hl] + ld a, BATTLE_VARS_SUBSTATUS3_OPP + call GetBattleVarAddr + res SUBSTATUS_CONFUSED, [hl] call GetItemName call Function3ddc8 ld hl, BattleText_0x80dab @@ -4715,13 +4732,13 @@ Function3deb6: ; 3deb6 ; 3defc .data_3defc - dbw $1f, BattleCommand70 - dbw $20, BattleCommand71 - dbw $21, BattleCommand72 - dbw $22, BattleCommand73 - dbw $23, BattleCommand74 - dbw $24, BattleCommand75 - dbw $25, BattleCommand76 + dbw HELD_ATTACK_UP, BattleCommand70 + dbw HELD_DEFENSE_UP, BattleCommand71 + dbw HELD_SPEED_UP, BattleCommand72 + dbw HELD_SP_ATTACK_UP, BattleCommand73 + dbw HELD_SP_DEFENSE_UP, BattleCommand74 + dbw HELD_ACCURACY_UP, BattleCommand75 + dbw HELD_EVASION_UP, BattleCommand76 db $ff ; 3df12 @@ -4750,7 +4767,7 @@ Function3df2c: ; 3df2c ld hl, PlayerHPPal call SetHPPal call CheckDanger - call Function3e043 + call DrawEnemyHUD ld hl, EnemyHPPal call SetHPPal pop bc @@ -4761,7 +4778,7 @@ Function3df2c: ; 3df2c -Function3df48:: ; 3df48 +UpdatePlayerHUD:: ; 3df48 push hl push de push bc @@ -4778,9 +4795,9 @@ DrawPlayerHUD: ; 3df58 xor a ld [hBGMapMode], a -; Clear the area + ; Clear the area hlcoord 9, 7 - ld bc, $050b + lb bc, 5, 11 call ClearBox callba DrawPlayerExpBar @@ -4789,15 +4806,14 @@ DrawPlayerHUD: ; 3df58 ld [hl], $73 ; vertical bar call PrintPlayerHUD -; HP bar + ; HP bar hlcoord 10, 9 - ld b, OTPARTYMON + ld b, 1 xor a ld [MonType], a - ld a, PREDEF_DRAW_PLAYER_HP - call Predef + predef DrawPlayerHP -; Exp bar + ; Exp bar push de ld a, [CurBattleMon] ld hl, PartyMon1Exp + 2 @@ -4822,24 +4838,24 @@ CheckDanger: ; 3df9e ld hl, BattleMonHP ld a, [hli] or [hl] - jr z, .asm_3dfb2 + jr z, .no_danger ld a, [$c6fd] and a - jr nz, .asm_3dfbe + jr nz, .done ld a, [PlayerHPPal] - cp $2 - jr z, .asm_3dfb9 + cp HP_RED + jr z, .danger -.asm_3dfb2 +.no_danger ld hl, Danger res 7, [hl] - jr .asm_3dfbe + jr .done -.asm_3dfb9 +.danger ld hl, Danger set 7, [hl] -.asm_3dfbe +.done ret ; 3dfbf @@ -4878,11 +4894,11 @@ PrintPlayerHUD: ; 3dfbf ld a, $3 ld [MonType], a callab GetGender - ld a, $7f + ld a, " " jr c, .asm_3e013 - ld a, $ef + ld a, "♂" jr nz, .asm_3e013 - ld a, $f5 + ld a, "♀" .asm_3e013 hlcoord 17, 8 @@ -4891,13 +4907,12 @@ PrintPlayerHUD: ; 3dfbf push af push hl ld de, BattleMonStatus - ld a, $21 - call Predef + predef Function50d2e pop hl pop bc ret nz ld a, b - cp $7f + cp " " jr nz, .asm_3e02d dec hl @@ -4907,25 +4922,28 @@ PrintPlayerHUD: ; 3dfbf jp PrintLevel ; 3e036 -Function3e036:: ; 3e036 +UpdateEnemyHUD:: ; 3e036 push hl push de push bc - call Function3e043 - call Function3e127 + call DrawEnemyHUD + call UpdateEnemyHPPal pop bc pop de pop hl ret ; 3e043 -Function3e043: ; 3e043 +DrawEnemyHUD: ; 3e043 xor a ld [hBGMapMode], a + hlcoord 1, 0 - ld bc, $040b + lb bc, 4, 11 call ClearBox + callba Function2c0c5 + ld a, [TempEnemyMonSpecies] ld [CurSpecies], a ld [CurPartySpecies], a @@ -4937,52 +4955,52 @@ Function3e043: ; 3e043 ld h, b ld l, c dec hl - ld hl, EnemyMonAtkDefDV + + ld hl, EnemyMonDVs ld de, TempMonDVs ld a, [EnemySubStatus5] - bit 3, a - jr z, .asm_3e080 + bit SUBSTATUS_TRANSFORMED, a + jr z, .ok ld hl, $c6f2 - -.asm_3e080 +.ok ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a + ld a, $3 ld [MonType], a callab GetGender - ld a, $7f + ld a, " " jr c, .asm_3e09a - ld a, $ef + ld a, "♂" jr nz, .asm_3e09a - ld a, $f5 + ld a, "♀" .asm_3e09a hlcoord 9, 1 ld [hl], a + hlcoord 6, 1 push af push hl ld de, EnemyMonStatus - ld a, $21 - call Predef + predef Function50d2e pop hl pop bc jr nz, .asm_3e0be ld a, b - cp $7f + cp " " jr nz, .asm_3e0b5 dec hl - .asm_3e0b5 ld a, [EnemyMonLevel] ld [TempMonLevel], a call PrintLevel - .asm_3e0be - ld hl, EnemyMonHPHi + + ld hl, EnemyMonHP ld a, [hli] ld [$ffb5], a ld a, [hld] @@ -4991,16 +5009,16 @@ Function3e043: ; 3e043 jr nz, .asm_3e0d1 ld c, a ld e, a - ld d, $6 + ld d, HP_BAR_LENGTH jp .asm_3e11a - .asm_3e0d1 + xor a ld [hMultiplicand], a - ld a, $30 + ld a, HP_BAR_LENGTH_PX ld [hMultiplier], a call Multiply - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hli] ld b, a ld a, [hl] @@ -5035,19 +5053,20 @@ Function3e043: ; 3e043 call Divide ld a, [$ffb6] ld e, a - ld a, $6 + ld a, HP_BAR_LENGTH ld d, a ld c, a + .asm_3e11a xor a ld [$d10a], a hlcoord 2, 2 - ld b, $0 + ld b, 0 call DrawHPBar ret ; 3e127 -Function3e127: ; 3e127 +UpdateEnemyHPPal: ; 3e127 ld hl, EnemyHPPal call Function3e12e ret @@ -5066,52 +5085,56 @@ Function3e138: ; 3e138 ret ; 3e139 -Function3e139: ; 3e139 +BattleMenu: ; 3e139 xor a ld [hBGMapMode], a call Function30bf + ld a, [BattleType] cp $2 - jr z, .asm_3e156 - cp $3 - jr z, .asm_3e156 + jr z, .ok + cp BATTLETYPE_TUTORIAL + jr z, .ok call EmptyBattleTextBox call UpdateBattleHuds call EmptyBattleTextBox call Function309d +.ok -.asm_3e156 +.loop ld a, [BattleType] - cp $6 - jr nz, .asm_3e165 - callba Function24f13 - jr .asm_3e175 + cp BATTLETYPE_CONTEST + jr nz, .not_contest + callba ContestBattleMenu + jr .next +.not_contest -.asm_3e165 + ; Auto input: choose "ITEM" ld a, [InputType] or a jr z, .asm_3e171 callba Function1de294 .asm_3e171 - call Function3e19b + + call LoadBattleMenu2 ret c -.asm_3e175 +.next ld a, $1 ld [hBGMapMode], a ld a, [$d0d2] cp $1 - jp z, Function3e192 + jp z, BattleMenu_Fight cp $3 - jp z, Function3e1c7 + jp z, BattleMenu_Pack cp $2 - jp z, Function3e28d + jp z, BattleMenu_PKMN cp $4 - jp z, Function3e489 - jr .asm_3e156 + jp z, BattleMenu_Run + jr .loop ; 3e192 -Function3e192: ; 3e192 +BattleMenu_Fight: ; 3e192 xor a ld [$d267], a call Function30b4 @@ -5119,59 +5142,64 @@ Function3e192: ; 3e192 ret ; 3e19b -Function3e19b: ; 3e19b - call Function3d2f1 - jr z, .asm_3e1a8 - callba LoadBattleMenuDataHeader +LoadBattleMenu2: ; 3e19b + call IsMobileBattle + jr z, .mobile + + callba LoadBattleMenu and a ret -.asm_3e1a8 +.mobile callba Function100b12 ld a, [$cd2b] and a ret z + ld hl, $cd2a bit 4, [hl] - jr nz, .asm_3e1c5 + jr nz, .error ld hl, BattleText_0x81863 call StdBattleTextBox - ld c, $3c + ld c, 60 call DelayFrames - -.asm_3e1c5 +.error scf ret ; 3e1c7 -Function3e1c7: ; 3e1c7 +BattleMenu_Pack: ; 3e1c7 ld a, [InLinkBattle] and a - jp nz, Function3e22b + jp nz, ItemsCantBeUsed + ld a, [$cfc0] and a - jp nz, Function3e22b + jp nz, ItemsCantBeUsed + call Function1d6e + ld a, [BattleType] - cp $3 - jr z, .asm_3e1f1 - cp $6 - jr z, .asm_3e201 - callba Function10493 + cp BATTLETYPE_TUTORIAL + jr z, .tutorial + cp BATTLETYPE_CONTEST + jr z, .contest + + callba BattlePack ld a, [$d0ec] and a jr z, .asm_3e20d jr .asm_3e209 -.asm_3e1f1 +.tutorial callba Function107bb - ld a, $5 + ld a, POKE_BALL ld [CurItem], a call DoItemEffect jr .asm_3e209 -.asm_3e201 - ld a, $b1 +.contest + ld a, PARK_BALL ld [CurItem], a call DoItemEffect @@ -5189,13 +5217,13 @@ Function3e1c7: ; 3e1c7 call WaitBGMap call Function3ee27 call Function309d - jp Function3e139 + jp BattleMenu ; 3e22b -Function3e22b: ; 3e22b +ItemsCantBeUsed: ; 3e22b ld hl, BattleText_0x80bf3 call StdBattleTextBox - jp Function3e139 + jp BattleMenu ; 3e234 Function3e234: ; 3e234 @@ -5214,7 +5242,7 @@ Function3e234: ; 3e234 call Function3ed9f call ClearSprites ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL jr z, .asm_3e25d call Function3f43d @@ -5243,7 +5271,7 @@ Function3e234: ; 3e234 ret ; 3e28d -Function3e28d: ; 3e28d +BattleMenu_PKMN: ; 3e28d call Function1d6e Function3e290: call Function1c07 @@ -5290,11 +5318,11 @@ Function3e299: call Function309d call ClearSGB call Function32f9 - jp Function3e139 + jp BattleMenu ; 3e2f5 Function3e2f5: ; 3e2f5 - call Function3d2f1 + call IsMobileBattle jr z, .asm_3e301 callba Function24e99 ret @@ -5350,7 +5378,7 @@ Function3e358: ; 3e358 and a jr nz, .asm_3e378 ld a, [EnemySubStatus5] - bit 7, a + bit SUBSTATUS_CANT_RUN, a jr z, .asm_3e381 .asm_3e378 @@ -5378,8 +5406,8 @@ Function3e358: ; 3e358 ; 3e3ad Function3e3ad: ; 3e3ad - ld a, $1 - ld [$c710], a + ld a, 1 + ld [wPlayerIsSwitching], a ld a, [InLinkBattle] and a jr z, .asm_3e3c1 @@ -5399,12 +5427,12 @@ Function3e3ad: ; 3e3ad ret .asm_3e3cf - ld a, [$d430] + ld a, [wBattleAction] cp $e jp z, .asm_3e3ca cp $d jp z, .asm_3e3ca - cp $4 + cp NUM_MOVES jp c, .asm_3e3ca cp $f jr nz, .asm_3e3e9 @@ -5444,9 +5472,9 @@ BattleMonEntrance: ; 3e40b call SetEnemyTurn call Function3dc5b - jr c, .asm_3e423 + jr c, .ok call Function3dce6 -.asm_3e423 +.ok hlcoord 9, 7 lb bc, 5, 11 @@ -5493,13 +5521,12 @@ PassedBattleMonEntrance: ; 3e459 ; 3e489 - -Function3e489: ; 3e489 +BattleMenu_Run: ; 3e489 call Function30b4 ld a, $3 ld [$cfa9], a - ld hl, BattleMonSpd - ld de, EnemyMonSpd + ld hl, BattleMonSpeed + ld de, EnemyMonSpeed call Function3d8b3 ld a, $0 ld [$d266], a @@ -5507,31 +5534,30 @@ Function3e489: ; 3e489 ld a, [$d0ec] and a ret nz - jp Function3e139 + jp BattleMenu ; 3e4a8 - -Function3e4a8: ; 3e4a8 +CheckAmuletCoin: ; 3e4a8 ld a, [BattleMonItem] ld b, a callab GetItem ld a, b - cp $4c + cp HELD_AMULET_COIN ret nz - ld a, $1 + ld a, 1 ld [$c73d], a ret ; 3e4bc Function3e4bc: ; 3e4bc - call Function3d2f1 + call IsMobileBattle jr nz, .asm_3e4c8 callba Function100b9f ret .asm_3e4c8 - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves ld a, [$d235] dec a jr z, .asm_3e4e2 @@ -5539,49 +5565,49 @@ Function3e4bc: ; 3e4bc jr z, .asm_3e4dd call Function3e786 ret z - ld hl, BattleMonMove1 + ld hl, BattleMonMoves jr .asm_3e4e2 .asm_3e4dd - ld a, $2 + ld a, PartyMon1Moves - PartyMon1 call GetPartyParamLocation .asm_3e4e2 ld de, $d25e - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes xor a ld [hBGMapMode], a - hlcoord 4, 12 - ld b, $4 - ld c, $e + + hlcoord 4, 17 - NUM_MOVES - 1 + ld b, 4 + ld c, 14 ld a, [$d235] cp $2 jr nz, .asm_3e503 - hlcoord 4, 8 - ld b, $4 - ld c, $e - + hlcoord 4, 17 - NUM_MOVES - 1 - 4 + ld b, 4 + ld c, 14 .asm_3e503 call TextBox - hlcoord 6, 13 + + hlcoord 6, 17 - NUM_MOVES ld a, [$d235] cp $2 jr nz, .asm_3e513 - hlcoord 6, 9 - + hlcoord 6, 17 - NUM_MOVES - 4 .asm_3e513 - ld a, $14 + ld a, SCREEN_WIDTH ld [Buffer1], a - ld a, $20 - call Predef - ld b, $5 + predef ListMoves + + ld b, 5 ld a, [$d235] cp $2 - ld a, $d + ld a, 17 - NUM_MOVES jr nz, .asm_3e52c - ld b, $5 - ld a, $9 + ld b, 5 + ld a, 17 - NUM_MOVES - 4 .asm_3e52c ld [$cfa1], a @@ -5641,23 +5667,24 @@ Function3e4bc: ; 3e4bc and a jr z, .asm_3e5a3 hlcoord 5, 13 - ld bc, $0014 + ld bc, SCREEN_WIDTH dec a call AddNTimes - ld [hl], $ec + ld [hl], "▷" .asm_3e5a3 ld a, $1 ld [hBGMapMode], a call Function1bd3 - bit 6, a + bit 6, a ; D_UP jp nz, .asm_3e61d - bit 7, a + bit 7, a ; D_DOWN jp nz, .asm_3e62e - bit 2, a - jp nz, Function3e643 - bit 1, a + bit 2, a ; B_BUTTON + jp nz, .asm_3e643 + bit 1, a ; A_BUTTON push af + xor a ld [$d0e3], a ld a, [$cfa9] @@ -5667,6 +5694,7 @@ Function3e4bc: ; 3e4bc ld a, [$d235] dec a jr nz, .asm_3e5d0 + pop af ret @@ -5675,16 +5703,18 @@ Function3e4bc: ; 3e4bc ld a, b ld [CurMoveNum], a jr nz, .asm_3e5d9 + pop af ret .asm_3e5d9 pop af ret nz - ld hl, BattleMonPPMove1 + + ld hl, BattleMonPP ld a, [$cfa9] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and $3f @@ -5699,9 +5729,9 @@ Function3e4bc: ; 3e4bc and a jr nz, .asm_3e606 ld a, [$cfa9] - ld hl, BattleMonMove1 + ld hl, BattleMonMoves ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] @@ -5737,7 +5767,7 @@ Function3e4bc: ; 3e4bc jp .asm_3e57a ; 3e62e -.asm_3e62e: ; 3e62e +.asm_3e62e ; 3e62e ld a, [$cfa9] ld b, a ld a, [$d0eb] @@ -5750,7 +5780,7 @@ Function3e4bc: ; 3e4bc jp .asm_3e57a ; 3e643 -Function3e643: ; 3e643 +.asm_3e643 ; 3e643 ld a, [$d0e3] and a jr z, .asm_3e6bf @@ -5789,7 +5819,7 @@ Function3e643: ; 3e643 .asm_3e682 ld a, [PlayerSubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr nz, .asm_3e69e ld hl, PartyMon1Moves ld a, [CurBattleMon] @@ -5797,7 +5827,7 @@ Function3e643: ; 3e643 push hl call .asm_3e6a5 pop hl - ld bc, $0015 + ld bc, PartyMon1PP - PartyMon1Moves add hl, bc call .asm_3e6a5 @@ -5897,11 +5927,10 @@ MoveInfoBox: ; 3e6c8 ld [hl], "/" callab UpdateMoveData - ld a, [PlayerMoveAnimation] + ld a, [wPlayerMoveStruct + MOVE_ANIM] ld b, a hlcoord 2, 10 - ld a, PREDEF_PRINT_MOVE_TYPE - call Predef + predef PrintMoveType .done ret @@ -5918,10 +5947,9 @@ Function3e75f: ; 3e75f hlcoord 5, 11 ld a, [InLinkBattle] cp $4 - jr c, .asm_3e76c + jr c, .ok hlcoord 5, 11 - -.asm_3e76c +.ok push hl ld de, StringBuffer1 ld bc, $0102 @@ -5987,7 +6015,7 @@ Function3e786: ; 3e786 Function3e7c1: ; 3e7c1 - ld a, [$c711] + ld a, [wEnemyIsSwitching] and a ret nz ld a, [InLinkBattle] @@ -5999,34 +6027,35 @@ Function3e7c1: ; 3e7c1 and a call z, Function3e8e4 call Function30b4 - ld a, [$d430] + ld a, [wBattleAction] cp $e jp z, .asm_3e8bd cp $d jp z, .asm_3e82c - cp $4 + cp NUM_MOVES jp nc, Function3e8c1 ld [CurEnemyMoveNum], a ld c, a ld a, [EnemySubStatus1] - bit 6, a + bit SUBSTATUS_ROLLOUT, a jp nz, .asm_3e882 ld a, [EnemySubStatus3] - and $13 + and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_BIDE jp nz, .asm_3e882 + ld hl, EnemySubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] ld a, [LastEnemyMove] jp nz, .asm_3e87f - ld hl, EnemyMonMove1 - ld b, $0 + ld hl, EnemyMonMoves + ld b, 0 add hl, bc ld a, [hl] jp .asm_3e87f .asm_3e817 ld hl, EnemySubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] jr z, .asm_3e824 ld a, [LastEnemyMove] jp .asm_3e87f @@ -6041,9 +6070,9 @@ Function3e7c1: ; 3e7c1 jr .asm_3e87f .asm_3e830 - ld hl, EnemyMonMove1 - ld de, EnemyMonPPMove1 - ld b, $4 + ld hl, EnemyMonMoves + ld de, EnemyMonPP + ld b, NUM_MOVES .asm_3e838 ld a, [hl] and a @@ -6067,11 +6096,11 @@ Function3e7c1: ; 3e7c1 dec a jr nz, .asm_3e882 .asm_3e855 - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves call BattleRandom - and $3 + and 3 ; TODO factor in NUM_MOVES ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [EnemyDisableCount] swap a @@ -6082,7 +6111,7 @@ Function3e7c1: ; 3e7c1 ld a, [hl] and a jr z, .asm_3e855 - ld hl, EnemyMonPPMove1 + ld hl, EnemyMonPP add hl, bc ld b, a ld a, [hl] @@ -6104,56 +6133,56 @@ Function3e7c1: ; 3e7c1 ld [$c733], a .asm_3e894 - ld a, [EnemyMoveEffect] - cp $77 + ld a, [wEnemyMoveStruct + MOVE_EFFECT] + cp EFFECT_FURY_CUTTER jr z, .asm_3e89f xor a ld [EnemyFuryCutterCount], a .asm_3e89f - ld a, [EnemyMoveEffect] - cp $51 + ld a, [wEnemyMoveStruct + MOVE_EFFECT] + cp EFFECT_RAGE jr z, .asm_3e8af ld hl, EnemySubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] xor a ld [$c72c], a .asm_3e8af - ld a, [EnemyMoveEffect] - cp $6f + ld a, [wEnemyMoveStruct + MOVE_EFFECT] + cp EFFECT_PROTECT ret z - cp $74 + cp EFFECT_ENDURE ret z xor a - ld [$c681], a + ld [EnemyProtectCount], a ret .asm_3e8bd - ld a, $a5 + ld a, STRUGGLE jr .asm_3e87f ; 3e8c1 Function3e8c1: ; 3e8c1 xor a ld [EnemyFuryCutterCount], a - ld [$c681], a + ld [EnemyProtectCount], a ld [$c72c], a ld hl, EnemySubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] ret ; 3e8d1 Function3e8d1: ; 3e8d1 ld a, [EnemySubStatus4] - and $20 + and 1 << SUBSTATUS_RECHARGE ret nz ld hl, EnemySubStatus3 ld a, [hl] - and $13 + and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_BIDE ret nz ld hl, EnemySubStatus1 - bit 6, [hl] + bit SUBSTATUS_ROLLOUT, [hl] ret ; 3e8e4 @@ -6251,9 +6280,8 @@ LoadEnemyMon: ; 3e8eb and a jr z, .InitDVs -; ???? ld a, [EnemySubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr z, .InitDVs ; Unknown @@ -6366,8 +6394,7 @@ LoadEnemyMon: ; 3e8eb ; Get letter based on DVs ld hl, EnemyMonDVs - ld a, PREDEF_GET_UNOWN_LETTER - call Predef + predef GetUnownLetter ; Can't use any letters that haven't been unlocked ; If combined with forced shiny battletype, causes an infinite loop call CheckUnownLetter @@ -6448,8 +6475,7 @@ LoadEnemyMon: ; 3e8eb ld de, EnemyMonMaxHP ld b, $00 ld hl, $d201 ; ? - ld a, PREDEF_FILLSTATS - call Predef + predef Functione167 ; If we're in a trainer battle, ; get the rest of the parameters from the party struct @@ -6461,15 +6487,14 @@ LoadEnemyMon: ; 3e8eb and a jr z, .TreeMon -; ???? ld a, [EnemySubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jp nz, .Moves .TreeMon ; If we're headbutting trees, some monsters enter battle asleep call CheckSleepingTreeMon - ld a, 7 ; Asleep for 7 turns + ld a, SLP ; Asleep for 7 turns jr c, .UpdateStatus ; Otherwise, no status xor a @@ -6483,9 +6508,9 @@ LoadEnemyMon: ; 3e8eb ld [hli], a ; Full HP... - ld a, [EnemyMonMaxHPHi] + ld a, [EnemyMonMaxHP] ld [hli], a - ld a, [EnemyMonMaxHPLo] + ld a, [EnemyMonMaxHP + 1] ld [hl], a ; ...unless it's a RoamMon @@ -6501,13 +6526,13 @@ LoadEnemyMon: ; 3e8eb jr z, .InitRoamHP ; Update from the struct if it has ld a, [hl] - ld [EnemyMonHPLo], a + ld [EnemyMonHP + 1], a jr .Moves .InitRoamHP ; HP only uses the lo byte in the RoamMon struct since ; Raikou/Entei/Suicune will have < 256 hp at level 40 - ld a, [EnemyMonHPLo] + ld a, [EnemyMonHP + 1] ld [hl], a jr .Moves @@ -6518,9 +6543,9 @@ LoadEnemyMon: ; 3e8eb ld a, [CurPartyMon] call GetPartyLocation ld a, [hld] - ld [EnemyMonHPLo], a + ld [EnemyMonHP + 1], a ld a, [hld] - ld [EnemyMonHPHi], a + ld [EnemyMonHP], a ; Make sure everything knows which monster the opponent is using ld a, [CurPartyMon] @@ -6533,7 +6558,6 @@ LoadEnemyMon: ; 3e8eb .Moves -; ???? ld hl, BaseType1 ld de, EnemyMonType1 ld a, [hli] @@ -6568,8 +6592,7 @@ LoadEnemyMon: ; 3e8eb ; Make sure the predef knows this isn't a partymon ld [MagikarpLength], a ; Fill moves based on level - ld a, PREDEF_FILLMOVES - call Predef + predef FillMoves .PP ; Trainer battle? @@ -6580,8 +6603,7 @@ LoadEnemyMon: ; 3e8eb ; Fill wild PP ld hl, EnemyMonMoves ld de, EnemyMonPP - ld a, PREDEF_FILLPP - call Predef + predef FillPP jr .Finish .TrainerPP @@ -6634,8 +6656,7 @@ LoadEnemyMon: ; 3e8eb ld c, a ld b, 1 ; set ld hl, PokedexSeen - ld a, PREDEF_FLAG - call Predef + predef FlagPredef ld hl, EnemyMonStats ld de, EnemyStats @@ -6795,7 +6816,7 @@ Function3ebd8: ; 3ebd8 ld a, [OtherTrainerClass] ld [TrainerClass], a ld de, VTiles2 - callab Function5120d + callab GetTrainerPic hlcoord 19, 0 ld c, $0 .asm_3ebf3 @@ -6866,7 +6887,7 @@ Function3ec39: ; 3ec39 and a jr z, .asm_3ec5a ld a, [BattleMonStatus] - and $40 + and 1 << PAR ret z ld hl, $c645 ld a, [hld] @@ -6887,7 +6908,7 @@ Function3ec39: ; 3ec39 .asm_3ec5a ld a, [EnemyMonStatus] - and $40 + and 1 << PAR ret z ld hl, $d21f ld a, [hld] @@ -6912,7 +6933,7 @@ Function3ec76: ; 3ec76 and a jr z, .asm_3ec93 ld a, [BattleMonStatus] - and $10 + and 1 << BRN ret z ld hl, $c641 ld a, [hld] @@ -6931,7 +6952,7 @@ Function3ec76: ; 3ec76 .asm_3ec93 ld a, [EnemyMonStatus] - and $10 + and 1 << BRN ret z ld hl, $d21b ld a, [hld] @@ -6966,11 +6987,11 @@ Function3ecb7: ; 3ecb7 ld a, [$d265] and a ld a, c - ld hl, BattleMonAtk + ld hl, BattleMonAttack ld de, PlayerStats ld bc, PlayerAtkLevel jr z, .asm_3ecd2 - ld hl, EnemyMonAtk + ld hl, EnemyMonAttack ld de, EnemyStats ld bc, EnemyAtkLevel @@ -7104,7 +7125,7 @@ BadgeStatBoosts: ; 3ed45 or c ld b, a - ld hl, BattleMonAtk + ld hl, BattleMonAttack ld c, 4 .CheckBadge ld a, b @@ -7274,8 +7295,7 @@ Function3ee17: ; 3ee17 ld a, d ld [FXAnimIDHi], a call WaitBGMap - ld a, $37 - jp Predef + predef_jump PlayBattleAnim ; 3ee27 Function3ee27: ; 3ee27 @@ -7320,8 +7340,7 @@ Function3ee3b: ; 3ee3b ld c, a ld b, $2 ld d, $0 - ld a, $3 - call Predef + predef FlagPredef ld a, c and a pop bc @@ -7423,7 +7442,7 @@ Function3ee3b: ; 3ee3b ld a, [$ffb5] ld [StringBuffer2], a ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld hl, UnknownText_0x3f11b call BattleTextBox @@ -7494,8 +7513,7 @@ Function3ee3b: ; 3ee3b .asm_3ef74 xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a callab Function50e1b pop bc ld hl, PartyMon1Level - PartyMon1 @@ -7531,8 +7549,7 @@ Function3ee3b: ; 3ee3b add hl, bc push bc ld b, $1 - ld a, $c - call Predef + predef Functione167 pop bc pop de ld hl, $0025 @@ -7571,7 +7588,7 @@ Function3ee3b: ; 3ee3b ld a, [hl] ld [BattleMonLevel], a ld a, [PlayerSubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr nz, .asm_3f012 ld hl, $0026 add hl, bc @@ -7585,7 +7602,7 @@ Function3ee3b: ; 3ee3b call Function3ecab callab Function3ec2c callab BadgeStatBoosts - callab Function3df48 + callab UpdatePlayerHUD call EmptyBattleTextBox call Function309d ld a, $1 @@ -7608,16 +7625,14 @@ Function3ee3b: ; 3ee3b .asm_3f057 xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a hlcoord 9, 0 ld b, $a ld c, $9 call TextBox hlcoord 11, 1 ld bc, $0004 - ld a, $28 - call Predef + predef Function50b7b ld c, $1e call DelayFrames call Functiona80 @@ -7637,8 +7652,7 @@ Function3ee3b: ; 3ee3b ld a, b ld [CurPartyLevel], a push bc - ld a, $1a - call Predef + predef LearnLevelMoves pop bc ld a, b cp c @@ -7649,8 +7663,7 @@ Function3ee3b: ; 3ee3b ld a, [CurPartyMon] ld c, a ld b, $1 - ld a, $3 - call Predef + predef FlagPredef pop af ld [CurPartyLevel], a @@ -7767,8 +7780,7 @@ Function3f136: ; 3f136 ld [DefaultFlypoint], a xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a ld a, [TempMonLevel] ld b, a ld e, a @@ -7951,14 +7963,14 @@ Function3f26d: ; 3f26d jr nz, .asm_3f2ce .asm_3f27c - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] ld hl, UnknownText_0x3f2d1 jr z, .asm_3f2ce xor a ld [hMultiplicand], a - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] ld [$c6ea], a ld [$ffb5], a @@ -7968,7 +7980,7 @@ Function3f26d: ; 3f26d ld a, $19 ld [hMultiplier], a call Multiply - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hli] ld b, [hl] srl a @@ -8043,7 +8055,7 @@ UnknownText_0x3f2fa: ; 3f2fa Function3f2ff: ; 3f2ff push de push bc - ld hl, EnemyMonHPLo + ld hl, EnemyMonHP + 1 ld de, $c6eb ld b, [hl] dec hl @@ -8058,7 +8070,7 @@ Function3f2ff: ; 3f2ff ld a, $19 ld [hMultiplier], a call Multiply - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hli] ld b, [hl] srl a @@ -8279,9 +8291,10 @@ Function3f41c: ; 3f41c Function3f43d: ; 3f43d ld a, [PlayerSubStatus4] - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ld hl, BattleAnimCmd_DD jr nz, Function3f46f + Function3f447: ; 3f447 ld a, [$c6fe] and a @@ -8291,12 +8304,10 @@ Function3f447: ; 3f447 push af ld a, [BattleMonSpecies] ld [CurPartySpecies], a - ld hl, BattleMonAtkDefDV - ld a, $2d - call Predef + ld hl, BattleMonDVs + predef GetUnownLetter ld de, $9310 - ld a, $3d - call Predef + predef GetBackpic pop af ld [CurPartySpecies], a ret @@ -8316,26 +8327,26 @@ Function3f46f: ; 3f46f Function3f47c: ; 3f47c ld a, [EnemySubStatus4] - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ld hl, BattleAnimCmd_DD jr nz, Function3f4b4 + Function3f486: ; 3f486 ld a, [$c6fa] and a ld hl, BattleAnimCmd_E2 jr nz, Function3f4b4 + ld a, [CurPartySpecies] push af ld a, [EnemyMonSpecies] ld [CurSpecies], a ld [CurPartySpecies], a call GetBaseData - ld hl, EnemyMonAtkDefDV - ld a, $2d - call Predef + ld hl, EnemyMonDVs + predef GetUnownLetter ld de, VTiles2 - ld a, $3e - call Predef + predef Function5108b pop af ld [CurPartySpecies], a ret @@ -8410,7 +8421,7 @@ Function3f4dd: ; 3f4dd call ClearSprites ld a, [IsInBattle] cp $1 - call z, Function3e036 + call z, UpdateEnemyHUD ld a, $1 ld [hBGMapMode], a ret @@ -8441,7 +8452,7 @@ Function3f568: ; 3f568 ld a, $6 ld [rSVBK], a ld hl, $d000 - ld bc, VBlank5 + ld bc, $400 ld a, $2 call ByteFill ld a, [rVBK] @@ -8465,28 +8476,29 @@ Function3f594: ; 3f594 xor a ld [TempEnemyMonSpecies], a callab Function3957b - callab Function39771 + callab ReadTrainerParty + ld a, [TrainerClass] - cp $9 - jr nz, .asm_3f5b8 + cp RIVAL1 + jr nz, .ok xor a ld [OTPartyMon1Item], a +.ok -.asm_3f5b8 ld de, VTiles2 - callab Function5120d + callab GetTrainerPic xor a ld [$ffad], a dec a ld [$c6e6], a hlcoord 12, 0 - ld bc, $0707 - ld a, $13 - call Predef + lb bc, 7, 7 + predef FillBox ld a, $ff ld [CurOTMon], a - ld a, $2 + ld a, TRAINER_BATTLE ld [IsInBattle], a + call IsJohtoGymLeader jr nc, .asm_3f606 xor a @@ -8495,14 +8507,13 @@ Function3f594: ; 3f594 ld b, a .asm_3f5ea push bc - ld a, $22 + ld a, PartyMon1HP - PartyMon1 call GetPartyParamLocation ld a, [hli] or [hl] jr z, .asm_3f5fc ld c, $4 callab ChangeHappiness - .asm_3f5fc pop bc dec b @@ -8510,7 +8521,6 @@ Function3f594: ; 3f594 ld hl, CurPartyMon inc [hl] jr .asm_3f5ea - .asm_3f606 ret ; 3f607 @@ -8520,44 +8530,40 @@ Function3f607: ; 3f607 ld [IsInBattle], a callba Function10605d call LoadEnemyMon - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves ld de, $c735 - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes - ld hl, EnemyMonPPMove1 + ld hl, EnemyMonPP ld de, $c739 - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes - ld hl, EnemyMonAtkDefDV - ld a, $2d - call Predef + ld hl, EnemyMonDVs + predef GetUnownLetter ld a, [CurPartySpecies] - cp $c9 + cp UNOWN jr nz, .asm_3f648 ld a, [$def4] and a jr nz, .asm_3f648 ld a, [UnownLetter] ld [$def4], a - .asm_3f648 ld de, VTiles2 - ld a, $3e - call Predef + predef Function5108b xor a ld [TrainerClass], a ld [$ffad], a hlcoord 12, 0 - ld bc, $0707 - ld a, $13 - call Predef + lb bc, 7, 7 + predef FillBox ret ; 3f662 Function3f662: ; 3f662 - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves ld de, $d25e - ld b, 4 + ld b, NUM_MOVES .loop ld a, [de] inc de @@ -8571,7 +8577,7 @@ Function3f662: ; 3f662 push hl dec a ld hl, Moves + MOVE_PP - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte @@ -8618,7 +8624,7 @@ Function3f6a5: ; 3f6a5 and a jr z, .asm_3f6b7 call Function3f759 - ld c, $96 + ld c, 150 call DelayFrames call Function3f77c ret @@ -8630,8 +8636,7 @@ Function3f6a5: ; 3f6a5 call Function3f71d xor a ld [$d1e9], a - ld a, $1c - call Predef + predef Function421e6 callba Function2ed44 ret ; 3f6d0 @@ -8661,16 +8666,16 @@ Function3f6d0: ; 3f6d0 ld [$d0e1], a ld hl, PlayerSubStatus1 ld b, $18 -.asm_3f715 +.loop ld [hli], a dec b - jr nz, .asm_3f715 + jr nz, .loop call WaitSFX ret ; 3f71d Function3f71d: ; 3f71d - ld hl, $c6ec + ld hl, wPayDayMoney ld a, [hli] or [hl] inc hl @@ -8679,7 +8684,7 @@ Function3f71d: ; 3f71d ld a, [$c73d] and a jr z, .asm_3f73d - ld hl, $c6ee + ld hl, wPayDayMoney + 2 sla [hl] dec hl rl [hl] @@ -8692,8 +8697,8 @@ Function3f71d: ; 3f71d ld [hl], a .asm_3f73d - ld hl, $c6ee - ld de, $d850 + ld hl, wPayDayMoney + 2 + ld de, Money + 2 call Function3d0be ld hl, BattleText_0x80730 call StdBattleTextBox @@ -8966,7 +8971,7 @@ Function3f998: ; 3f998 and $f jr z, .asm_3f9af call GetRoamMonHP - ld a, [EnemyMonHPLo] + ld a, [EnemyMonHP + 1] ld [hl], a jr .asm_3f9ca @@ -8994,74 +8999,74 @@ Function3f998: ; 3f998 GetRoamMonMapGroup: ; 3f9d1 ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1MapGroup + ld hl, wRoamMon1MapGroup ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2MapGroup + ld hl, wRoamMon2MapGroup ret z - ld hl, RoamMon3MapGroup + ld hl, wRoamMon3MapGroup ret ; 3f9e9 GetRoamMonMapNumber: ; 3f9e9 ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1MapNumber + ld hl, wRoamMon1MapNumber ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2MapNumber + ld hl, wRoamMon2MapNumber ret z - ld hl, RoamMon3MapNumber + ld hl, wRoamMon3MapNumber ret ; 3fa01 GetRoamMonHP: ; 3fa01 -; output: hl = RoamMonHP +; output: hl = wRoamMonHP ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1HP + ld hl, wRoamMon1HP ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2HP + ld hl, wRoamMon2HP ret z - ld hl, RoamMon3HP + ld hl, wRoamMon3HP ret ; 3fa19 GetRoamMonDVs: ; 3fa19 -; output: hl = RoamMonDVs +; output: hl = wRoamMonDVs ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1DVs + ld hl, wRoamMon1DVs ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2DVs + ld hl, wRoamMon2DVs ret z - ld hl, RoamMon3DVs + ld hl, wRoamMon3DVs ret ; 3fa31 GetRoamMonSpecies: ; 3fa31 ld a, [TempEnemyMonSpecies] - ld hl, RoamMon1Species + ld hl, wRoamMon1Species cp [hl] ret z - ld hl, RoamMon2Species + ld hl, wRoamMon2Species cp [hl] ret z - ld hl, RoamMon3Species + ld hl, wRoamMon3Species ret ; 3fa42 @@ -9305,8 +9310,7 @@ Function3fb6c: ; 3fb6c ld [$ffad], a hlcoord 2, 6 ld bc, $0606 - ld a, $13 - call Predef + predef FillBox xor a ld [hWY], a ld [rWY], a @@ -9328,7 +9332,7 @@ Function3fbd6: ; 3fbd6 ld a, $6 ld [rSVBK], a ld hl, $d000 - ld bc, VBlank5 + ld bc, $400 ld a, $7f call ByteFill ld de, $d000 @@ -9377,8 +9381,7 @@ GetBattleBackpic: ; 3fbff .Decompress ld de, $9310 ld c, $31 - ld a, PREDEF_DECOMPRESS - call Predef + predef DecompressPredef ret ; 3fc30 @@ -9401,15 +9404,14 @@ Function3fc30: ; 3fc30 ld [$ffad], a hlcoord 2, 6 ld bc, $0606 - ld a, $13 - call Predef + predef FillBox ret ; 3fc5b Function3fc5b: ; 3fc5b ld hl, Sprites xor a - ld [hConnectionStripLength], a + ld [$ffaf], a ld b, $6 ld e, $a8 .asm_3fc65 @@ -9420,10 +9422,10 @@ Function3fc5b: ; 3fc5b inc hl ld [hl], e inc hl - ld a, [hConnectionStripLength] + ld a, [$ffaf] ld [hli], a inc a - ld [hConnectionStripLength], a + ld [$ffaf], a ld a, $1 ld [hli], a ld a, d @@ -9431,9 +9433,9 @@ Function3fc5b: ; 3fc5b ld d, a dec c jr nz, .asm_3fc69 - ld a, [hConnectionStripLength] + ld a, [$ffaf] add $3 - ld [hConnectionStripLength], a + ld [$ffaf], a ld a, e add $8 ld e, a @@ -9470,7 +9472,7 @@ BattleStartMessage: ; 3fc8b ld [hBattleTurn], a ld a, 1 ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 .asm_3fcc2 @@ -9483,8 +9485,7 @@ BattleStartMessage: ; 3fc8b hlcoord 12, 0 ld d, $0 ld e, $1 - ld a, $47 - call Predef + predef Functiond008e jr .asm_3fceb .asm_3fce0 @@ -9507,8 +9508,8 @@ BattleStartMessage: ; 3fc8b ld hl, PokemonFellFromTreeText cp BATTLETYPE_TREE jr z, .asm_3fd0e - ld hl, WildPokemonAppearedText2 - cp $b + ld hl, WildCelebiAppearedText + cp BATTLETYPE_CELEBI jr z, .asm_3fd0e ld hl, WildPokemonAppearedText |