diff options
-rw-r--r-- | battle/ai/scoring.asm | 6 | ||||
-rwxr-xr-x | battle/ai/switch.asm | 10 | ||||
-rw-r--r-- | battle/core.asm | 54 | ||||
-rw-r--r-- | battle/effect_commands.asm | 125 | ||||
-rw-r--r-- | constants/animation_constants.asm | 11 | ||||
-rw-r--r-- | engine/predef.asm | 6 | ||||
-rw-r--r-- | gfx/pics/animation.asm | 345 | ||||
-rw-r--r-- | home.asm | 8 | ||||
-rw-r--r-- | main.asm | 28 | ||||
-rw-r--r-- | misc/mobile_42.asm | 10 | ||||
-rw-r--r-- | wram.asm | 25 |
11 files changed, 324 insertions, 304 deletions
diff --git a/battle/ai/scoring.asm b/battle/ai/scoring.asm index 52c71d624..39d2a8eca 100644 --- a/battle/ai/scoring.asm +++ b/battle/ai/scoring.asm @@ -576,7 +576,7 @@ AI_Smart_Explosion: ; 388a6 ; Unless this is the enemy's last Pokemon... push hl - callba CountEnemyAliveMons + callba CheckEnemyHasMonToSwitchTo pop hl jr nc, .asm_388b7 @@ -2028,7 +2028,7 @@ endr jp nz, AIDiscourageMove push hl - callba CountEnemyAliveMons + callba CheckEnemyHasMonToSwitchTo pop hl jr nc, .asm_38eb0 @@ -2160,7 +2160,7 @@ endr AI_Smart_PerishSong: ; 38f4a push hl - callab CountEnemyAliveMons + callab CheckEnemyHasMonToSwitchTo pop hl jr c, .no diff --git a/battle/ai/switch.asm b/battle/ai/switch.asm index 3d65b187a..c7fd696e1 100755 --- a/battle/ai/switch.asm +++ b/battle/ai/switch.asm @@ -184,7 +184,7 @@ endr CheckAbleToSwitch: ; 34941 xor a ld [wc717], a - call CountEnemyAliveMons + call CheckEnemyHasMonToSwitchTo ret c ld a, [EnemySubStatus1] @@ -197,7 +197,7 @@ CheckAbleToSwitch: ; 34941 ; Perish count is 1 - call CountEnemyAliveMons + call CheckEnemyHasMonToSwitchTo call Function34b77 call Function34b20 call Function34a85 @@ -212,7 +212,7 @@ CheckAbleToSwitch: ; 34941 ret .not_2 - call CountEnemyAliveMons + call CheckEnemyHasMonToSwitchTo sla c sla c ld b, $ff @@ -284,7 +284,7 @@ CheckAbleToSwitch: ; 34941 cp 10 ret nc - call CountEnemyAliveMons + call CheckEnemyHasMonToSwitchTo call Function34b77 call Function34b20 call Function34a85 @@ -300,7 +300,7 @@ CheckAbleToSwitch: ; 34941 ; 349f4 -CountEnemyAliveMons: ; 349f4 +CheckEnemyHasMonToSwitchTo: ; 349f4 ld a, [OTPartyCount] cp 2 jr c, .only_one diff --git a/battle/core.asm b/battle/core.asm index fbfbdc0a6..45c5e8bd0 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -92,7 +92,7 @@ Function3c000: ; 3c000 call SendOutPkmnText call NewBattleMonStatus call BreakAttraction - call Function3db5f + call SendOutPlayerMon call EmptyBattleTextBox call LoadTileMapToTempTileMap call SetPlayerTurn @@ -2928,7 +2928,7 @@ Function3d227: ; 3d227 call SendOutPkmnText call NewBattleMonStatus call BreakAttraction - call Function3db5f + call SendOutPlayerMon call EmptyBattleTextBox call LoadTileMapToTempTileMap call SetPlayerTurn @@ -2950,7 +2950,7 @@ Function3d2b3: ; 3d2b3 call SendOutPkmnText call NewBattleMonStatus call BreakAttraction - call Function3db5f + call SendOutPlayerMon call EmptyBattleTextBox call LoadTileMapToTempTileMap call SetPlayerTurn @@ -3755,31 +3755,31 @@ Function_SetEnemyPkmnAndSendOutAnimation: ; 3d7c7 call Call_PlayBattleAnim call BattleCheckEnemyShininess - jr nc, .asm_3d800 + jr nc, .not_shiny ld a, 1 ; shiny anim ld [wKickCounter], a ld de, ANIM_SEND_OUT_MON call Call_PlayBattleAnim -.asm_3d800 +.not_shiny ld bc, TempMonSpecies - callba Function4e53f - jr c, .asm_3d82c + callba CheckFaintedFrzSlp + jr c, .skip_cry callba CheckBattleScene - jr c, .asm_3d821 + jr c, .cry_no_anim hlcoord 12, 0 ld d, $0 - ld e, $0 - predef Functiond008e - jr .asm_3d82c + ld e, ANIM_MON_SLOW + predef AnimateFrontpic + jr .skip_cry -.asm_3d821 +.cry_no_anim ld a, $f ld [CryTracks], a ld a, [TempEnemyMonSpecies] call PlayStereoCry -.asm_3d82c +.skip_cry call UpdateEnemyHUD ld a, $1 ld [hBGMapMode], a @@ -4207,7 +4207,7 @@ endr ; 3db32 -Function3db32: ; 3db32 +SwitchPlayerMon: ; 3db32 call ClearSprites ld a, [CurBattleMon] ld [LastPlayerMon], a @@ -4218,7 +4218,7 @@ Function3db32: ; 3db32 call ResetPlayerStatLevels call NewBattleMonStatus call BreakAttraction - call Function3db5f + call SendOutPlayerMon call EmptyBattleTextBox call LoadTileMapToTempTileMap ld hl, EnemyMonHP @@ -4228,7 +4228,7 @@ Function3db32: ; 3db32 ; 3db5f -Function3db5f: ; 3db5f +SendOutPlayerMon: ; 3db5f ld hl, BattleMonDVs predef GetUnownLetter hlcoord 1, 5 @@ -4259,25 +4259,25 @@ Function3db5f: ; 3db5f ld de, ANIM_SEND_OUT_MON call Call_PlayBattleAnim call BattleCheckPlayerShininess - jr nc, .asm_3dbbc + jr nc, .not_shiny ld a, $1 ld [wKickCounter], a ld de, ANIM_SEND_OUT_MON call Call_PlayBattleAnim -.asm_3dbbc +.not_shiny ld a, MON_SPECIES call GetPartyParamLocation ld b, h ld c, l - callba Function4e53f - jr c, .asm_3dbd6 + callba CheckFaintedFrzSlp + jr c, .statused ld a, $f0 ld [CryTracks], a ld a, [CurPartySpecies] call PlayStereoCry -.asm_3dbd6 +.statused call UpdatePlayerHUD ld a, $1 ld [hBGMapMode], a @@ -5528,7 +5528,7 @@ BattleMonEntrance: ; 3e40b call SendOutPkmnText call NewBattleMonStatus call BreakAttraction - call Function3db5f + call SendOutPlayerMon call EmptyBattleTextBox call LoadTileMapToTempTileMap call SetPlayerTurn @@ -5553,7 +5553,7 @@ PassedBattleMonEntrance: ; 3e459 xor a ld [wd265], a call ApplyStatLevelMultiplierOnAllStats - call Function3db5f + call SendOutPlayerMon call EmptyBattleTextBox call LoadTileMapToTempTileMap call SetPlayerTurn @@ -9556,15 +9556,15 @@ BattleStartMessage: ; 3fc8b jr c, .skip_cry callba CheckBattleScene - jr c, .do_cry + jr c, .cry_no_anim hlcoord 12, 0 ld d, $0 - ld e, $1 - predef Functiond008e + ld e, ANIM_MON_NORMAL + predef AnimateFrontpic jr .skip_cry -.do_cry +.cry_no_anim ld a, $0f ld [CryTracks], a ld a, [TempEnemyMonSpecies] diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index 5f6a22414..c05336bd3 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -6555,41 +6555,42 @@ BattleCommand_ForceSwitch: ; 3680f ld a, [BattleType] cp BATTLETYPE_SHINY - jp z, .asm_36969 + jp z, .fail cp BATTLETYPE_TRAP - jp z, .asm_36969 + jp z, .fail cp BATTLETYPE_CELEBI - jp z, .asm_36969 + jp z, .fail cp BATTLETYPE_SUICUNE - jp z, .asm_36969 + jp z, .fail ld a, [hBattleTurn] and a - jp nz, .asm_368cd + jp nz, .force_player_switch ld a, [AttackMissed] and a - jr nz, .asm_36852 ; 36830 $20 + jr nz, .missed ; 36830 $20 ld a, [wBattleMode] dec a - jr nz, .asm_36869 ; 36836 $31 + jr nz, .trainer ; 36836 $31 ld a, [CurPartyLevel] ld b, a ld a, [BattleMonLevel] cp b - jr nc, .asm_36855 ; 36840 $13 + jr nc, .wild_force_flee ; 36840 $13 add b ld c, a inc c -.asm_36845 +.random_loop_wild call BattleRandom cp c - jr nc, .asm_36845 ; 36849 $fa + jr nc, .random_loop_wild ; 36849 $fa srl b srl b cp b - jr nc, .asm_36855 ; 36850 $3 -.asm_36852 - jp .asm_36969 -.asm_36855 + jr nc, .wild_force_flee ; 36850 $3 +.missed + jp .fail + +.wild_force_flee call UpdateBattleMonInParty xor a ld [wcfca], a @@ -6597,13 +6598,14 @@ BattleCommand_ForceSwitch: ; 3680f ld [wd232], a call SetBattleDraw ld a, [wPlayerMoveStruct + MOVE_ANIM] - jp .asm_36975 -.asm_36869 - call CountEnemyAliveMons - jr c, .asm_368ca ; 3686c $5c + jp .succeed + +.trainer + call CheckEnemyHasMonToSwitchTo + jr c, .switch_fail ; 3686c $5c ld a, [wc70f] and a - jr z, .asm_368ca ; 36872 $56 + jr z, .switch_fail ; 36872 $56 call UpdateEnemyMonInParty ld a, $1 ld [wKickCounter], a @@ -6613,19 +6615,20 @@ BattleCommand_ForceSwitch: ; 3680f hlcoord 1, 0 lb bc, 4, 10 call ClearBox - ld c, $14 + ld c, 20 call DelayFrames ld a, [OTPartyCount] ld b, a ld a, [CurOTMon] ld c, a -.asm_3689a +; select a random enemy mon to switch to +.random_loop_trainer call BattleRandom and $7 cp b - jr nc, .asm_3689a ; 368a0 $f8 + jr nc, .random_loop_trainer ; 368a0 $f8 cp c - jr z, .asm_3689a ; 368a3 $f5 + jr z, .random_loop_trainer ; 368a3 $f5 push af push bc ld hl, OTPartyMon1HP @@ -6634,7 +6637,7 @@ BattleCommand_ForceSwitch: ; 3680f or [hl] pop bc pop de - jr z, .asm_3689a ; 368b1 $e7 + jr z, .random_loop_trainer ; 368b1 $e7 ld a, d inc a ld [wc718], a @@ -6646,41 +6649,41 @@ BattleCommand_ForceSwitch: ; 3680f ld hl, SpikesDamage jp CallBattleCore -.asm_368ca - jp .asm_36969 +.switch_fail + jp .fail -.asm_368cd +.force_player_switch ld a, [AttackMissed] and a - jr nz, .asm_368f3 + jr nz, .player_miss ld a, [wBattleMode] dec a - jr nz, .asm_36908 + jr nz, .vs_trainer ld a, [BattleMonLevel] ld b, a ld a, [CurPartyLevel] cp b - jr nc, .asm_368f5 + jr nc, .wild_succeed_playeristarget add b ld c, a inc c -.asm_368e6 +.wild_random_loop_playeristarget call BattleRandom cp c - jr nc, .asm_368e6 + jr nc, .wild_random_loop_playeristarget srl b srl b cp b - jr nc, .asm_368f5 + jr nc, .wild_succeed_playeristarget -.asm_368f3 - jr .asm_36969 +.player_miss + jr .fail -.asm_368f5 +.wild_succeed_playeristarget call UpdateBattleMonInParty xor a ld [wcfca], a @@ -6688,39 +6691,39 @@ BattleCommand_ForceSwitch: ; 3680f ld [wd232], a call SetBattleDraw ld a, [wEnemyMoveStruct + MOVE_ANIM] - jr .asm_36975 + jr .succeed -.asm_36908 - call Function36994 - jr c, .asm_36969 +.vs_trainer + call CheckPlayerHasMonToSwitchTo + jr c, .fail ld a, [wc70f] cp $1 - jr z, .asm_368ca + jr z, .switch_fail call UpdateBattleMonInParty ld a, $1 ld [wKickCounter], a call AnimateCurrentMove - ld c, $14 + ld c, 20 call DelayFrames hlcoord 9, 7 lb bc, 5, 11 call ClearBox - ld c, $14 + ld c, 20 call DelayFrames ld a, [PartyCount] ld b, a ld a, [CurBattleMon] ld c, a -.asm_3693a +.random_loop_trainer_playeristarget call BattleRandom and $7 cp b - jr nc, .asm_3693a + jr nc, .random_loop_trainer_playeristarget cp c - jr z, .asm_3693a + jr z, .random_loop_trainer_playeristarget push af push bc @@ -6730,11 +6733,11 @@ BattleCommand_ForceSwitch: ; 3680f or [hl] pop bc pop de - jr z, .asm_3693a + jr z, .random_loop_trainer_playeristarget ld a, d ld [CurPartyMon], a - ld hl, Function3db32 + ld hl, SwitchPlayerMon call CallBattleCore ld hl, DraggedOutText @@ -6743,57 +6746,57 @@ BattleCommand_ForceSwitch: ; 3680f ld hl, SpikesDamage jp CallBattleCore -.asm_36969 +.fail call BattleCommand_LowerSub call BattleCommand_MoveDelay call BattleCommand_RaiseSub jp PrintButItFailed -.asm_36975 +.succeed push af call SetBattleDraw ld a, $1 ld [wKickCounter], a call AnimateCurrentMove - ld c, $14 + ld c, 20 call DelayFrames pop af ld hl, FledInFearText - cp $2e - jr z, .asm_36991 + cp ROAR + jr z, .do_text ld hl, BlownAwayText -.asm_36991 +.do_text jp StdBattleTextBox ; 36994 -Function36994: ; 36994 +CheckPlayerHasMonToSwitchTo: ; 36994 ld a, [PartyCount] ld d, a ld e, 0 ld bc, PARTYMON_STRUCT_LENGTH -.asm_3699d +.loop ld a, [CurBattleMon] cp e - jr z, .asm_369ae + jr z, .next ld a, e ld hl, PartyMon1HP call AddNTimes ld a, [hli] or [hl] - jr nz, .asm_369b4 + jr nz, .not_fainted -.asm_369ae +.next inc e dec d - jr nz, .asm_3699d + jr nz, .loop scf ret -.asm_369b4 +.not_fainted and a ret ; 369b6 diff --git a/constants/animation_constants.asm b/constants/animation_constants.asm index ea57f7230..6ca0ff2e1 100644 --- a/constants/animation_constants.asm +++ b/constants/animation_constants.asm @@ -60,3 +60,14 @@ ANIM_BG_PSYCHIC EQU $29 ANIM_BG_VIBRATE_MON EQU $33 ANIM_BG_WOBBLE_MON EQU $34 + + const_def + const ANIM_MON_SLOW ; 0 + const ANIM_MON_NORMAL ; 1 + const ANIM_MON_MENU ; 2 + const ANIM_MON_TRADE ; 3 + const ANIM_MON_EVOLVE ; 4 + const ANIM_MON_HATCH ; 5 + const ANIM_MON_UNUSED ; 6 + const ANIM_MON_EGG1 ; 7 + const ANIM_MON_EGG2 ; 8 diff --git a/engine/predef.asm b/engine/predef.asm index 17130929d..c05da1496 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -98,10 +98,10 @@ PredefPointers:: ; 856b add_predef CheckTypeMatchup add_predef ConvertMon_1to2 add_predef Functionfb877 - add_predef Functiond0000 + add_predef AnimateMon_Slow_Normal add_predef PlaceStatusString - add_predef Functiond00a3 - add_predef Functiond008e + add_predef LoadMonAnimation + add_predef AnimateFrontpic add_predef Functiond0669 ; $48 add_predef Functiond066e dbw $ff, Function2d43 ; ???? diff --git a/gfx/pics/animation.asm b/gfx/pics/animation.asm index 695999e82..fd37b0497 100644 --- a/gfx/pics/animation.asm +++ b/gfx/pics/animation.asm @@ -1,55 +1,55 @@ ; Pic animation arrangement. -Functiond0000: ; d0000 +AnimateMon_Slow_Normal: ; d0000 hlcoord 12, 0 ld a, [wBattleMode] - cp $1 - jr z, .asm_d0012 - ld e, $0 + cp WILD_BATTLE + jr z, .wild + ld e, ANIM_MON_SLOW ld d, $0 - call Functiond008e + call AnimateFrontpic ret -.asm_d0012 - ld e, $1 +.wild + ld e, ANIM_MON_NORMAL ld d, $0 - call Functiond008e + call AnimateFrontpic ret ; d001a -Functiond001a: ; d001a - ld e, $2 +AnimateMon_Menu: ; d001a + ld e, ANIM_MON_MENU ld d, $0 - call Functiond008e + call AnimateFrontpic ret ; d0022 -Functiond0022: ; d0022 - ld e, $3 +AnimateMon_Trade: ; d0022 + ld e, ANIM_MON_TRADE ld d, $0 - call Functiond008e + call AnimateFrontpic ret ; d002a -Functiond002a: ; d002a - ld e, $4 +AnimateMon_Evolve: ; d002a + ld e, ANIM_MON_EVOLVE ld d, $0 - call Functiond008e + call AnimateFrontpic ret ; d0032 -Functiond0032: ; d0032 - ld e, $5 +AnimateMon_Hatch: ; d0032 + ld e, ANIM_MON_HATCH ld d, $0 - call Functiond008e + call AnimateFrontpic ret ; d003a -Functiond003a: ; d003a - ld e, $6 +AnimateMon_Unused: ; d003a + ld e, ANIM_MON_UNUSED ld d, $0 - call Functiond008e + call AnimateFrontpic ret ; d0042 @@ -81,31 +81,31 @@ PokeAnims: ; d0042 dw .Egg1 dw .Egg2 -.Slow: POKEANIM Cry3, Setup2, Play -.Normal: POKEANIM Cry3, Setup, Play -.Menu: POKEANIM Cry2, Setup, Play, SetWait, Wait, Extra, Play +.Slow: POKEANIM StereoCry, Setup2, Play +.Normal: POKEANIM StereoCry, Setup, Play +.Menu: POKEANIM CryNoWait, Setup, Play, SetWait, Wait, Extra, Play .Trade: POKEANIM Extra, Play2, Extra, Play, SetWait, Wait, Cry, Setup, Play -.Evolve: POKEANIM Extra, Play, SetWait, Wait, Cry2, Setup, Play -.Hatch: POKEANIM Extra, Play, Cry2, Setup, Play, SetWait, Wait, Extra, Play -.Unused: POKEANIM Cry2, Setup, Play, SetWait, Wait, Extra, Play +.Evolve: POKEANIM Extra, Play, SetWait, Wait, CryNoWait, Setup, Play +.Hatch: POKEANIM Extra, Play, CryNoWait, Setup, Play, SetWait, Wait, Extra, Play +.Unused: POKEANIM CryNoWait, Setup, Play, SetWait, Wait, Extra, Play .Egg1: POKEANIM Setup, Play .Egg2: POKEANIM Extra, Play -Functiond008e: ; d008e - call Functiond01c6 +AnimateFrontpic: ; d008e + call AnimateMon_CheckIfPokemon ret c - call Functiond00a3 -.asm_d0095 + call LoadMonAnimation +.loop call Functiond00b4 push af callba Function10402d pop af - jr nc, .asm_d0095 + jr nc, .loop ret ; d00a3 -Functiond00a3: ; d00a3 +LoadMonAnimation: ; d00a3 push hl ld c, e ld b, 0 @@ -126,10 +126,10 @@ Functiond00b4: ; d00b4 push af ld a, $2 ld [rSVBK], a - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] ld c, a ld b, 0 - ld hl, w2_d169 + ld hl, wPokeAnimPointer ld a, [hli] ld h, [hl] ld l, a @@ -137,7 +137,7 @@ Functiond00b4: ; d00b4 ld a, [hl] ld hl, PokeAnim_SetupCommands rst JumpTable - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] ld c, a pop af ld [rSVBK], a @@ -162,24 +162,24 @@ endm setup_command PokeAnim_Play setup_command PokeAnim_Play2 setup_command PokeAnim_Cry - setup_command PokeAnim_Cry2 - setup_command PokeAnim_Cry3 + setup_command PokeAnim_CryNoWait + setup_command PokeAnim_StereoCry ; d00f2 PokeAnim_SetWait: ; d00f2 - ld a, $12 - ld [w2_d181], a - ld a, [w2_d168] + ld a, 18 + ld [wPokeAnimWaitCounter], a + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a PokeAnim_Wait: ; d00fe - ld hl, w2_d181 + ld hl, wPokeAnimWaitCounter dec [hl] ret nz - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d010b @@ -188,9 +188,9 @@ PokeAnim_Setup: ; d010b ld b, $0 call Functiond0228 call Functiond0504 - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d011d @@ -199,9 +199,9 @@ PokeAnim_Setup2: ; d011d ld b, $4 call Functiond0228 call Functiond0504 - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d012f @@ -210,9 +210,9 @@ PokeAnim_Extra: ; d012f ld b, $0 call Functiond0228 call Functiond0504 - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d0141 @@ -222,9 +222,9 @@ PokeAnim_Play: ; d0141 bit 7, a ret z call Functiond04bd - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d0155 @@ -233,53 +233,53 @@ PokeAnim_Play2: ; d0155 ld a, [w2_d17e] bit 7, a ret z - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d0166 PokeAnim_Nop: ; d0166 call Functiond01a9 - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d0171 PokeAnim_Finish: ; d0171 call Functiond01a9 - ld hl, w2_d168 + ld hl, wPokeAnimSceneIndex set 7, [hl] ret ; d017a PokeAnim_Cry: ; d017a - ld a, [w2_d16b] + ld a, [wPokeAnimSpecies] call _PlayCry - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d0188 -PokeAnim_Cry2: ; d0188 - ld a, [w2_d16b] +PokeAnim_CryNoWait: ; d0188 + ld a, [wPokeAnimSpecies] call PlayCry2 - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d0196 -PokeAnim_Cry3: ; d0196 +PokeAnim_StereoCry: ; d0196 ld a, $f ld [CryTracks], a - ld a, [w2_d16b] + ld a, [wPokeAnimSpecies] call PlayStereoCry2 - ld a, [w2_d168] + ld a, [wPokeAnimSceneIndex] inc a - ld [w2_d168], a + ld [wPokeAnimSceneIndex], a ret ; d01a9 @@ -297,16 +297,16 @@ Functiond01a9: ; d01a9 ret ; d01c6 -Functiond01c6: ; d01c6 +AnimateMon_CheckIfPokemon: ; d01c6 ld a, [CurPartySpecies] cp EGG - jr z, .asm_d01d4 + jr z, .fail call IsAPokemon - jr c, .asm_d01d4 + jr c, .fail and a ret -.asm_d01d4 +.fail scf ret ; d01d6 @@ -316,39 +316,44 @@ Functiond01d6: ; d01d6 push af ld a, $2 ld [rSVBK], a + push bc push de push hl - ld hl, w2_d168 - ld bc, $0029 + ld hl, wPokeAnimSceneIndex + ld bc, wPokeAnimStructEnd - wPokeAnimSceneIndex xor a call ByteFill pop hl pop de pop bc + +; bc contains anim pointer ld a, c - ld [w2_d169], a + ld [wPokeAnimPointer], a ld a, b - ld [w2_d16a], a + ld [wPokeAnimPointer + 1], a +; hl contains TileMap coords ld a, l - ld [w2_d16f], a + ld [wPokeAnimCoord], a ld a, h - ld [w2_d170], a + ld [wPokeAnimCoord + 1], a +; d = ????? ld a, d ld [w2_d16e], a ld a, $1 ld hl, CurPartySpecies call GetFarWRAMByte - ld [w2_d16b], a + ld [wPokeAnimSpecies], a ld a, $1 ld hl, UnownLetter call GetFarWRAMByte - ld [w2_d16c], a - call Functiond065c - ld [w2_d16d], a - call Functiond05b4 + ld [wPokeAnimUnownLetter], a + call PokeAnim_GetSpeciesOrUnown + ld [wPokeAnimSpeciesOrUnown], a + call PokeAnim_GetFrontpicDims ld a, c - ld [w2_d171], a + ld [wPokeAnimFrontpicHeight], a pop af ld [rSVBK], a ret @@ -361,7 +366,7 @@ Functiond0228: ; d0228 ld [rSVBK], a push bc ld hl, w2_d172 - ld bc, $001f + ld bc, wPokeAnimStructEnd - w2_d172 xor a call ByteFill pop bc @@ -406,13 +411,13 @@ Functiond0261: ; d0261 call Functiond02c8 ld a, [w2_d183] call Functiond02ae - ld [w2_d181], a + ld [wPokeAnimWaitCounter], a call Functiond02dc Functiond0282: ; d0282 - ld a, [w2_d181] + ld a, [wPokeAnimWaitCounter] dec a - ld [w2_d181], a + ld [wPokeAnimWaitCounter], a ret nz call Functiond02e4 ret @@ -487,14 +492,14 @@ Functiond02e4: ; d02e4 ret ; d02ec -Functiond02ec: ; d02ec - ld a, [w2_d16b] +PokeAnim_IsUnown: ; d02ec + ld a, [wPokeAnimSpecies] cp UNOWN ret ; d02f2 -Functiond02f2: ; d02f2 - ld a, [w2_d16b] +PokeAnim_IsEgg: ; d02f2 + ld a, [wPokeAnimSpecies] cp EGG ret ; d02f8 @@ -562,7 +567,7 @@ Functiond033b: ; d033b Functiond0356: ; d0356 push hl - ld a, [w2_d171] + ld a, [wPokeAnimFrontpicHeight] sub 5 ld c, a ld b, 0 @@ -581,13 +586,13 @@ Functiond036b: ; d036b ld [w2_d187], a ld [w2_d186], a ld [w2_d185], a -.asm_d0375 +.loop push hl call Functiond0392 pop hl ld a, b and a - jr z, .asm_d038a + jr z, .next ld a, [w2_d177] call GetFarByte @@ -596,11 +601,11 @@ Functiond036b: ; d036b call Functiond03bd pop hl -.asm_d038a +.next push hl call Functiond0499 pop hl - jr nc, .asm_d0375 + jr nc, .loop ret ; d0392 @@ -617,23 +622,23 @@ Functiond0392: ; d0392 ld b, [hl] ld a, [w2_d187] and 7 - jr z, .asm_d03b0 + jr z, .skip ld c, a ld a, b -.asm_d03ab +.loop rrca dec c - jr nz, .asm_d03ab + jr nz, .loop ld b, a -.asm_d03b0 +.skip xor a bit 0, b - jr z, .asm_d03b7 + jr z, .finish ld a, 1 -.asm_d03b7 +.finish ld b, a ld hl, w2_d187 inc [hl] @@ -656,18 +661,18 @@ Functiond03bd: ; d03bd Functiond03cd: ; d03cd call Functiond046c ld a, [w2_d186] - ld bc, $0014 + ld bc, SCREEN_WIDTH call AddNTimes ld a, [wc2c6] and a - jr nz, .asm_d03e8 + jr nz, .go ld a, [w2_d185] ld e, a ld d, 0 add hl, de - jr .asm_d03f3 + jr .skip -.asm_d03e8 +.go ld a, [w2_d185] ld e, a ld a, l @@ -677,7 +682,7 @@ Functiond03cd: ; d03cd sbc 0 ld h, a -.asm_d03f3 +.skip ret ; d03f4 @@ -685,18 +690,18 @@ Unknown_d03f4: db 6, 5, 4 Functiond03f7: ; d03f7 push af - ld a, [w2_d171] + ld a, [wPokeAnimFrontpicHeight] cp 5 - jr z, .asm_d0405 + jr z, .check_add_24 cp 6 - jr z, .asm_d041a + jr z, .check_add_13 pop af ret -.asm_d0405 +.check_add_24 pop af cp 5 * 5 - jr nc, .asm_d0417 + jr nc, .add_24 push hl push de ld hl, Unknown_d042f @@ -708,14 +713,14 @@ Functiond03f7: ; d03f7 pop hl ret -.asm_d0417 +.add_24 add 24 ret -.asm_d041a +.check_add_13 pop af cp 6 * 6 - jr nc, .asm_d042c + jr nc, .add_13 push hl push de ld hl, Unknown_d0448 @@ -727,7 +732,7 @@ Functiond03f7: ; d03f7 pop hl ret -.asm_d042c +.add_13 add 13 ret ; d042f @@ -749,31 +754,31 @@ Unknown_d0448: Functiond046c: ; d046c - ld hl, w2_d16f + ld hl, wPokeAnimCoord ld a, [hli] ld h, [hl] ld l, a - ld a, [w2_d171] + ld a, [wPokeAnimFrontpicHeight] ld de, 0 ld bc, 6 cp 7 - jr z, .asm_d048f + jr z, .okay ld de, 21 ld bc, 25 cp 6 - jr z, .asm_d048f + jr z, .okay ld de, 41 ld bc, 45 -.asm_d048f +.okay ld a, [wc2c6] and a - jr nz, .asm_d0497 + jr nz, .add_bc add hl, de ret -.asm_d0497 +.add_bc add hl, bc ret ; d0499 @@ -783,22 +788,22 @@ Functiond0499: ; d0499 inc a ld [w2_d186], a ld c, a - ld a, [w2_d171] + ld a, [wPokeAnimFrontpicHeight] cp c - jr nz, .asm_d04bb + jr nz, .no_carry xor a ld [w2_d186], a ld a, [w2_d185] inc a ld [w2_d185], a ld c, a - ld a, [w2_d171] + ld a, [wPokeAnimFrontpicHeight] cp c - jr nz, .asm_d04bb + jr nz, .no_carry scf ret -.asm_d04bb +.no_carry xor a ret ; d04bd @@ -807,17 +812,17 @@ Functiond04bd: ; d04bd call Functiond04f6 ld a, [wc2c6] and a - jr nz, .asm_d04ce + jr nz, .minus_one_and_six ld de, 1 ld bc, 0 - jr .asm_d04d4 + jr .okay -.asm_d04ce +.minus_one_and_six ld de, -1 ld bc, 6 -.asm_d04d4 - ld hl, w2_d16f +.okay + ld hl, wPokeAnimCoord ld a, [hli] ld h, [hl] ld l, a @@ -825,28 +830,28 @@ Functiond04bd: ; d04bd ld c, 7 ld b, 7 ld a, [w2_d16e] -.asm_d04e2 +.loop push bc push hl push de - ld de, $0014 -.asm_d04e8 + ld de, SCREEN_WIDTH +.loop2 ld [hl], a inc a add hl, de dec b - jr nz, .asm_d04e8 + jr nz, .loop2 pop de pop hl add hl, de pop bc dec c - jr nz, .asm_d04e2 + jr nz, .loop ret ; d04f6 Functiond04f6: ; d04f6 - ld hl, w2_d16f + ld hl, wPokeAnimCoord ld a, [hli] ld h, [hl] ld l, a @@ -917,7 +922,7 @@ Functiond0536: ; d0536 ; d0551 Functiond0551: ; d0551 - ld hl, w2_d16f + ld hl, wPokeAnimCoord ld a, [hli] ld h, [hl] ld l, a @@ -927,18 +932,18 @@ Functiond0551: ; d0551 ; d055c Functiond055c: ; d055c - call Functiond02f2 + call PokeAnim_IsEgg jr z, .egg ld c, BANK(UnownAnimations) ld hl, UnownAnimationPointers ld de, UnownAnimationExtraPointers - call Functiond02ec - jr z, .asm_d0576 + call PokeAnim_IsUnown + jr z, .unown ld c, BANK(PicAnimations) ld hl, AnimationPointers ld de, AnimationExtraPointers -.asm_d0576 +.unown ld a, [w2_d172] and a @@ -947,7 +952,7 @@ Functiond055c: ; d055c ld l, e .asm_d057e - ld a, [w2_d16d] + ld a, [wPokeAnimSpeciesOrUnown] dec a ld e, a ld d, 0 @@ -982,7 +987,7 @@ endr ret ; d05b4 -Functiond05b4: ; d05b4 +PokeAnim_GetFrontpicDims: ; d05b4 ld a, [rSVBK] push af ld a, $1 @@ -999,26 +1004,26 @@ Functiond05b4: ; d05b4 ; d05ce Functiond05ce: ; d05ce - call Functiond02f2 + call PokeAnim_IsEgg jr z, .egg - call Functiond02ec + call PokeAnim_IsUnown ld b, BANK(UnownFramesPointers) ld c, BANK(UnownsFrames) ld hl, UnownFramesPointers - jr z, .asm_d05ef - ld a, [w2_d16b] + jr z, .got_frames + ld a, [wPokeAnimSpecies] cp 151 + 1 ld b, BANK(FramesPointers) ld c, BANK(KantoFrames) ld hl, FramesPointers - jr c, .asm_d05ef + jr c, .got_frames ld c, BANK(JohtoFrames) -.asm_d05ef +.got_frames ld a, c ld [w2_d177], a - ld a, [w2_d16d] + ld a, [wPokeAnimSpeciesOrUnown] dec a ld e, a ld d, 0 @@ -1046,19 +1051,19 @@ endr ; d061b Functiond061b: ; d061b - call Functiond02f2 + call PokeAnim_IsEgg jr z, .egg - call Functiond02ec + call PokeAnim_IsUnown ld a, BANK(UnownBitmasksPointers) ld hl, UnownBitmasksPointers - jr z, .asm_d062f + jr z, .unown ld a, BANK(BitmasksPointers) ld hl, BitmasksPointers -.asm_d062f +.unown ld [w2_d17a], a - ld a, [w2_d16d] + ld a, [wPokeAnimSpeciesOrUnown] dec a ld e, a ld d, 0 @@ -1085,14 +1090,14 @@ endr ret ; d065c -Functiond065c: ; d065c - call Functiond02ec - jr z, .asm_d0665 - ld a, [w2_d16b] +PokeAnim_GetSpeciesOrUnown: ; d065c + call PokeAnim_IsUnown + jr z, .unown + ld a, [wPokeAnimSpecies] ret -.asm_d0665 - ld a, [w2_d16c] +.unown + ld a, [wPokeAnimUnownLetter] ret ; d0669 @@ -1101,7 +1106,7 @@ Functiond0669: ; d0669 ld [wc2c6], a Functiond066e: ; d066e - call Functiond01c6 + call AnimateMon_CheckIfPokemon jr c, .asm_d068c ld h, d ld l, e @@ -1113,7 +1118,7 @@ Functiond066e: ; d066e pop bc ld d, 0 ld e, c - call Functiond008e + call AnimateFrontpic xor a ld [wc2c6], a ret @@ -217,10 +217,10 @@ LoadTileMapToTempTileMap:: ; 309d ; Load TileMap into TempTileMap ld a, [rSVBK] push af - ld a, BANK(w2_d000) + ld a, BANK(TempTileMap) ld [rSVBK], a hlcoord 0, 0 - ld de, w2_d000 + decoord 0, 0, TempTileMap ld bc, TileMapEnd - TileMap call CopyBytes pop af @@ -241,9 +241,9 @@ LoadTempTileMapToTileMap:: ; 30bf ; Load TempTileMap into TileMap ld a, [rSVBK] push af - ld a, BANK(w2_d000) + ld a, BANK(TempTileMap) ld [rSVBK], a - ld hl, w2_d000 + hlcoord 0, 0, TempTileMap decoord 0, 0 ld bc, TileMapEnd - TileMap call CopyBytes @@ -20039,8 +20039,8 @@ Function1728f: ; 1728f (5:728f) ld [CurPartySpecies], a hlcoord 6, 3 ld d, $0 - ld e, $5 - predef Functiond008e + ld e, ANIM_MON_HATCH + predef AnimateFrontpic pop af ld [CurSpecies], a ret @@ -41215,8 +41215,8 @@ Function4d81e: ; 4d81e ld [CurPartySpecies], a hlcoord 7, 2 ld d, $0 - ld e, $3 - predef Functiond008e + ld e, ANIM_MON_TRADE + predef AnimateFrontpic ret ; 4d860 @@ -42738,7 +42738,7 @@ Function4e289: ; 4e289 (13:6289) hlcoord 0, 0 ld d, $0 ld e, $2 - predef Functiond00a3 + predef LoadMonAnimation ld hl, wcf64 set 6, [hl] ret @@ -42793,7 +42793,7 @@ Function4e2f2: ; 4e2f2 (13:62f2) ld a, [CurPartySpecies] cp EGG jr z, .asm_4e2fe - call Function4e53f + call CheckFaintedFrzSlp jr c, Function4e305 .asm_4e2fe xor a @@ -42941,7 +42941,7 @@ Function4e497: ; 4e497 (13:6497) pop de hlcoord 0, 0 ld d, $0 - predef Functiond00a3 + predef LoadMonAnimation ld hl, wcf64 set 6, [hl] ret @@ -43016,21 +43016,21 @@ Function4e528: ; 4e528 (13:6528) jp SkipNames -Function4e53f: ; 4e53f +CheckFaintedFrzSlp: ; 4e53f ld hl, MON_HP add hl, bc ld a, [hli] or [hl] - jr z, .asm_4e552 + jr z, .fainted_frz_slp ld hl, MON_STATUS add hl, bc ld a, [hl] and (1 << FRZ) | SLP - jr nz, .asm_4e552 + jr nz, .fainted_frz_slp and a ret -.asm_4e552 +.fainted_frz_slp scf ret ; 4e554 @@ -43248,8 +43248,8 @@ _EvolutionAnimation: ; 4e607 ld [CurPartySpecies], a hlcoord 7, 2 ld d, $0 - ld e, $4 - predef Functiond008e + ld e, ANIM_MON_EVOLVE + predef AnimateFrontpic pop af ld [CurPartySpecies], a @@ -43393,7 +43393,7 @@ Function4e794: ; 4e794 call GetPartyLocation ld b, h ld c, l - callba Function4e53f + callba CheckFaintedFrzSlp ret ; 4e7a6 diff --git a/misc/mobile_42.asm b/misc/mobile_42.asm index 847422b7c..b10404b78 100644 --- a/misc/mobile_42.asm +++ b/misc/mobile_42.asm @@ -284,8 +284,8 @@ Function108219: ; 108219 ld [CurPartySpecies], a hlcoord 7, 2 ld d, $0 - ld e, $3 - predef Functiond008e + ld e, ANIM_MON_TRADE + predef AnimateFrontpic ret ; 108229 @@ -293,8 +293,8 @@ Function108229: ; 108229 ld [CurPartySpecies], a hlcoord 7, 2 ld d, $0 - ld e, $3 - predef Functiond00a3 + ld e, ANIM_MON_TRADE + predef LoadMonAnimation ret ; 108239 @@ -304,7 +304,7 @@ Function108239: ; 108239 call GetPokemonName ld hl, StringBuffer1 pop de - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes ret ; 10824b @@ -2648,20 +2648,19 @@ wGameDataEnd:: SECTION "Pic Animations", WRAMX, BANK [2] -w2_d000:: +TempTileMap:: ; 20x18 grid of 8x8 tiles ds SCREEN_WIDTH * SCREEN_HEIGHT ; $168 = 360 - -w2_d168:: ds 1 -w2_d169:: ds 1 -w2_d16a:: ds 1 -w2_d16b:: ds 1 -w2_d16c:: ds 1 -w2_d16d:: ds 1 +; PokeAnim Header +wPokeAnimSceneIndex:: ds 1 +wPokeAnimPointer:: ds 2 +wPokeAnimSpecies:: ds 1 +wPokeAnimUnownLetter:: ds 1 +wPokeAnimSpeciesOrUnown:: ds 1 w2_d16e:: ds 1 -w2_d16f:: ds 1 -w2_d170:: ds 1 -w2_d171:: ds 1 +wPokeAnimCoord:: ds 2 +wPokeAnimFrontpicHeight:: ds 1 +; PokeAnim Data w2_d172:: ds 1 w2_d173:: ds 1 w2_d174:: ds 1 @@ -2677,7 +2676,7 @@ w2_d17d:: ds 1 w2_d17e:: ds 1 w2_d17f:: ds 1 w2_d180:: ds 1 -w2_d181:: ds 1 +wPokeAnimWaitCounter:: ds 1 w2_d182:: ds 1 w2_d183:: ds 1 w2_d184:: ds 1 @@ -2685,6 +2684,8 @@ w2_d185:: ds 1 w2_d186:: ds 1 w2_d187:: ds 1 w2_d188:: ds 1 + ds 8 +wPokeAnimStructEnd:: SECTION "WRAM 3", WRAMX, BANK [3] |