diff --git a/battle/core.asm b/battle/core.asm index 81376edc6..dec315ab8 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -2623,7 +2623,7 @@ AddBattleMoneyToAccount: ; 3d0be push bc ld b, h ld c, l - callba MobileFn_106008 + callba TrainerRankings_AddToBattlePayouts pop bc pop hl .loop @@ -8401,7 +8401,7 @@ _DoBattle: ; 3f4d9 ; 3f4dd BattleIntro: ; 3f4dd - callba MobileFn_106050 ; mobile + callba TrainerRankings_Battles ; mobile call LoadTrainerOrWildMonPic xor a ld [TempBattleMonSpecies], a @@ -8486,7 +8486,7 @@ BackUpVBGMap2: ; 3f568 InitEnemyTrainer: ; 3f594 ld [TrainerClass], a - callba MobileFn_10606a + callba TrainerRankings_TrainerBattles xor a ld [TempEnemyMonSpecies], a callab GetTrainerAttributes @@ -8542,7 +8542,7 @@ InitEnemyTrainer: ; 3f594 InitEnemyWildmon: ; 3f607 ld a, WILD_BATTLE ld [wBattleMode], a - callba MobileFn_10605d + callba TrainerRankings_WildBattles call LoadEnemyMon ld hl, EnemyMonMoves ld de, wWildMonMoves @@ -8725,7 +8725,7 @@ CheckPayDay: ; 3f71d ; 3f759 ShowLinkBattleParticipantsAfterEnd: ; 3f759 - callba MobileFn_1060df + callba TrainerRankings_LinkBattles callba BackupMobileEventIndex ld a, [CurOTMon] ld hl, OTPartyMon1Status @@ -8755,17 +8755,17 @@ DetermineMobileBattleResult: ; 3f77c cp $1 jr c, .victory jr z, .loss - callba MobileFn_SaveBattleResult_Draw + callba TrainerRankings_ColosseumDraws ld de, .Draw jr .store_result .victory - callba MobileFn_SaveBattleResult_Win + callba TrainerRankings_ColosseumWins ld de, .Win jr .store_result .loss - callba MobileFn_SaveBattleResult_Lose + callba TrainerRankings_ColosseumLosses ld de, .Lose jr .store_result @@ -9513,7 +9513,7 @@ BattleStartMessage: ; 3fc8b cp BATTLETYPE_FISH jr nz, .NotFishing - callba MobileFn_106086 ; update fishing records? + callba TrainerRankings_HookedEncounters ld hl, HookedPokemonAttackedText jr .PlaceBattleStartText diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index 8e0c694b3..a74dea632 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -8073,7 +8073,7 @@ BattleCommand_LeechSeed: ; 36f9d BattleCommand_Splash: ; 36fe1 call AnimateCurrentMove - callba MobileFn_1060e5 + callba TrainerRankings_Splash jp PrintNothingHappened ; 36fed @@ -8600,7 +8600,7 @@ CheckSubstituteOpp: ; 37378 BattleCommand_SelfDestruct: ; 37380 - callba MobileFn_10610d + callba TrainerRankings_SelfDestruct ld a, BATTLEANIM_PLAYER_DAMAGE ld [wNumHits], a ld c, 3 diff --git a/constants/sram_constants.asm b/constants/sram_constants.asm index caac8347b..c2d112b7d 100755 --- a/constants/sram_constants.asm +++ b/constants/sram_constants.asm @@ -1,3 +1,53 @@ ; Mobile bank 5 + +; sMobileEventIndex EQU $a000 ; moved to 1:BE3C in English +sTrainerRankings EQU $a001 +sTrainerRankingGameTimeHOF EQU $a001 +sTrainerRankingStepCountHOF EQU $a005 +sTrainerRankingHealingsHOF EQU $a009 +sTrainerRankingBattlesHOF EQU $a00d +sTrainerRankingStepCount EQU $a010 +sTrainerRankingBattleTowerWins EQU $a014 +sTrainerRankingTMsHMsTaught EQU $a018 +sTrainerRankingBattles EQU $a01b +sTrainerRankingWildBattles EQU $a01e +sTrainerRankingTrainerBattles EQU $a021 +sTrainerRankingUnused1 EQU $a024 +sTrainerRankingHOFEntries EQU $a027 +sTrainerRankingWildMonsCaught EQU $a02a +sTrainerRankingHookedEncounters EQU $a02d +sTrainerRankingEggsHatched EQU $a030 +sTrainerRankingMonsEvolved EQU $a033 +sTrainerRankingFruitPicked EQU $a036 +sTrainerRankingHealings EQU $a039 +sTrainerRankingMysteryGift EQU $a03c +sTrainerRankingTrades EQU $a03f +sTrainerRankingFly EQU $a042 +sTrainerRankingSurf EQU $a045 +sTrainerRankingWaterfall EQU $a048 +sTrainerRankingWhiteOuts EQU $a04b +sTrainerRankingLuckyNumberShow EQU $a04e +sTrainerRankingPhoneCalls EQU $a051 +sTrainerRankingUnused2 EQU $a054 +sTrainerRankingLinkBattles EQU $a057 +sTrainerRankingSplash EQU $a05a +sTrainerRankingTreeEncounters EQU $a05d +sTrainerRankingUnused3 EQU $a060 +sTrainerRankingColosseumWins EQU $a063 +sTrainerRankingColosseumLosses EQU $a066 +sTrainerRankingColosseumDraws EQU $a069 +sTrainerRankingSelfDestruct EQU $a06c +sTrainerRankingCurrentSlotsStreak EQU $a06f +sTrainerRankingLongestSlotsStreak EQU $a071 +sTrainerRankingTotalSlotsPayouts EQU $a073 +sTrainerRankingTotalBattlePayouts EQU $a077 +sTrainerRankingLongestMagikarp EQU $a07b +sTrainerRankingShortestMagikarp EQU $a07d +sTrainerRankingBugContestScore EQU $a07f +sTrainerRankingsChecksum EQU $a081 +sTrainerRankingsEnd EQU $a083 +; sMobileEventIndexBackup EQU $a083 ; moved to 1:BE44 in English +sTrainerRankingsBackup EQU $a084 + sMobileLoginPassword EQU $aa4b LOGIN_PASSWORD_LENGTH EQU 17 diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index fa499c071..326faaa6c 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -232,7 +232,7 @@ HatchEggs: ; 16f70 (5:6f70) push de callba SetEggMonCaughtData - callba MobileFn_10608d + callba TrainerRankings_EggsHatched ld a, [CurPartyMon] ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, PARTYMON_STRUCT_LENGTH diff --git a/engine/events_3.asm b/engine/events_3.asm index 01b8d7046..b6aaea3b7 100755 --- a/engine/events_3.asm +++ b/engine/events_3.asm @@ -360,7 +360,7 @@ CheckForHiddenItems: ; b8172 TreeMonEncounter: ; b81ea - callba MobileFn_1060ef + callba TrainerRankings_TreeEncounters xor a ld [TempWildMonSpecies], a diff --git a/engine/evolve.asm b/engine/evolve.asm index 202ad10ff..2f7739191 100755 --- a/engine/evolve.asm +++ b/engine/evolve.asm @@ -247,7 +247,7 @@ EvolveAfterBattle_MasterLoop push hl ld hl, Text_EvolvedIntoPKMN call PrintTextBoxText - callba MobileFn_106094 + callba TrainerRankings_MonsEvolved ld de, MUSIC_NONE call PlayMusic diff --git a/engine/fruit_trees.asm b/engine/fruit_trees.asm index 09619cfa5..6a40fb05c 100644 --- a/engine/fruit_trees.asm +++ b/engine/fruit_trees.asm @@ -58,7 +58,7 @@ CheckFruitTree: ; 44055 ; 4405f PickedFruitTree: ; 4405f - callba MobileFn_10609b ; empty function + callba TrainerRankings_FruitPicked ld b, 1 jp GetFruitTreeFlag ; 4406a diff --git a/engine/link.asm b/engine/link.asm index 951eb1444..f5bc24da9 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -1973,7 +1973,7 @@ LinkTrade: ; 28b87 .save callba SaveAfterLinkTrade - callba MobileFn_1060af + callba TrainerRankings_Trades callba BackupMobileEventIndex ld c, 40 call DelayFrames diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm index 9f5302506..f2d29b08a 100755 --- a/engine/mysterygift.asm +++ b/engine/mysterygift.asm @@ -63,7 +63,7 @@ DoMysteryGift: ; 1048ba (41:48ba) jr z, .skip_append_save call .SaveMysteryGiftTrainerName callba RestoreMobileEventIndex - callba MobileFn_1060a9 + callba TrainerRankings_MysteryGift callba BackupMobileEventIndex .skip_append_save ld a, [wMysteryGiftPartnerSentDeco] diff --git a/engine/phone.asm b/engine/phone.asm index 9d1376a62..f5f39218d 100644 --- a/engine/phone.asm +++ b/engine/phone.asm @@ -471,7 +471,7 @@ UnknownScript_0x90261: ; 0x90261 RingTwice_StartCall: ; 9026f call .Ring call .Ring - callba MobileFn_1060d3 + callba TrainerRankings_PhoneCalls ret ; 9027c @@ -500,7 +500,7 @@ PhoneCall:: ; 9029a ld [PhoneCallerHi], a call Phone_FirstOfTwoRings call Phone_FirstOfTwoRings - callba MobileFn_1060d3 + callba TrainerRankings_PhoneCalls ret ; 902b3 diff --git a/engine/player_step.asm b/engine/player_step.asm index 24e4fb873..83158c1b7 100755 --- a/engine/player_step.asm +++ b/engine/player_step.asm @@ -77,7 +77,7 @@ HandlePlayerStep: ; d4e5 (3:54e5) ret .mobile ; d509 (3:5509) - callba MobileFn_10602e + callba TrainerRankings_StepCount ret .fail2 ; d510 (3:5510) diff --git a/engine/scripting.asm b/engine/scripting.asm index 745948a6f..c9b343a8b 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -3199,8 +3199,8 @@ Script_halloffame: ; 97bd5 ld hl, GameTimerPause res 0, [hl] - callba Mobile_HallOfFame - callba Mobile_HallOfFame2 + callba TrainerRankings_HallOfFame + callba TrainerRankings_HallOfFame2 callba HallOfFame ld hl, GameTimerPause set 0, [hl] diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 00ab1d828..ea842ea9c 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -20,7 +20,7 @@ _SlotMachine: call PlaySFX call WaitSFX call ClearBGPalettes - callba MobileFn_105fd0 + callba TrainerRankings_EndSlotsWinStreak ld hl, Options res NO_TEXT_SCROLL, [hl] ld hl, rLCDC ; $ff40 @@ -1812,7 +1812,7 @@ SlotGetPayout: ; 93124 (24:7124) ld a, [hl] ld [wPayout], a ld d, a - callba MobileFn_105fe3 + callba TrainerRankings_AddToSlotsPayouts ret .PayoutTable: @@ -1836,7 +1836,7 @@ SlotPayoutText: ; 93158 (24:7158) jr nz, .MatchedSomething ld hl, .Text_Darn call PrintText - callba MobileFn_105fd0 + callba TrainerRankings_EndSlotsWinStreak ret .MatchedSomething: @@ -1860,7 +1860,7 @@ SlotPayoutText: ; 93158 (24:7158) .return ld hl, .Text_PrintPayout call PrintText - callba MobileFn_105f9f + callba TrainerRankings_AddToSlotsWinStreak ret ; 93195 (24:7195) diff --git a/engine/specials.asm b/engine/specials.asm index 841a59cd3..2d9b6f998 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -179,7 +179,7 @@ SpecialsPointers:: ; c029 add_special Mobile_SelectThreeMons add_special Function1037eb add_special Function10383c - add_special Mobile_HealParty + add_special TrainerRankings_Healings add_special RefreshSprites add_special Function1037c2 add_special Mobile_DummyReturnFalse diff --git a/engine/startmenu.asm b/engine/startmenu.asm index bf71a0b8d..fa61d99cb 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -1255,7 +1255,7 @@ MonMenu_Fly: ; 12e30 jr z, .Fail cp $0 jr z, .Error - callba MobileFn_1060b5 + callba TrainerRankings_Fly ld b, $4 ld a, $2 ret diff --git a/engine/std_scripts.asm b/engine/std_scripts.asm index 0f144f79c..4b69a4de1 100644 --- a/engine/std_scripts.asm +++ b/engine/std_scripts.asm @@ -107,7 +107,7 @@ PokeCenterNurseScript: farwritetext NurseTakePokemonText pause 20 - special Mobile_HealParty + special TrainerRankings_Healings spriteface LAST_TALKED, LEFT pause 10 special HealParty diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm index 6efd07294..6e32fdae8 100755 --- a/engine/tmhm2.asm +++ b/engine/tmhm2.asm @@ -146,7 +146,7 @@ TeachTMHM: ; 2c867 and a jr z, .nope - callba MobileFn_106049 + callba TrainerRankings_TMsHMsTaught ld a, [CurItem] call IsHM ret c diff --git a/event/bug_contest_judging.asm b/event/bug_contest_judging.asm index 1ece896d6..0d400bb39 100755 --- a/event/bug_contest_judging.asm +++ b/event/bug_contest_judging.asm @@ -1,6 +1,6 @@ _BugContestJudging: ; 1369d call ContestScore - callba MobileFn_105f79 + callba TrainerRankings_BugContestScore call BugContest_JudgeContestants ld a, [wBugContestThirdPlacePersonID] call LoadContestantName diff --git a/event/magikarp.asm b/event/magikarp.asm index 4b024692f..f926196cd 100644 --- a/event/magikarp.asm +++ b/event/magikarp.asm @@ -28,7 +28,7 @@ Special_CheckMagikarpLength: ; fbb32 ld c, l call CalcMagikarpLength call PrintMagikarpLength - callba MagikarpLength_Mobile + callba TrainerRankings_MagikarpLength ld hl, .MeasureItText call PrintText diff --git a/event/overworld.asm b/event/overworld.asm index 3906c7d6e..b27093a00 100755 --- a/event/overworld.asm +++ b/event/overworld.asm @@ -472,7 +472,7 @@ UsedSurfScript: ; c986 end .empty_fn ; c9a2 - callba MobileFn_1060bb ; empty + callba TrainerRankings_Surf ret UsedSurfText: ; c9a9 @@ -745,7 +745,7 @@ Script_UsedWaterfall: ; 0xcb20 ld a, [PlayerStandingTile] call CheckWaterfallTile ret z - callba MobileFn_1060c1 + callba TrainerRankings_Waterfall ld a, $1 ld [ScriptVar], a ret diff --git a/event/whiteout.asm b/event/whiteout.asm index a076bdcb6..38049b3b5 100755 --- a/event/whiteout.asm +++ b/event/whiteout.asm @@ -49,9 +49,7 @@ BattleBGMap: ; 1250a ; 12513 HalveMoney: ; 12513 - -; Empty function... - callba MobileFn_1060c7 + callba TrainerRankings_WhiteOuts ; Halve the player's money. ld hl, Money diff --git a/items/item_effects.asm b/items/item_effects.asm index 3c2dc2457..7061909f6 100644 --- a/items/item_effects.asm +++ b/items/item_effects.asm @@ -512,7 +512,7 @@ ParkBall: ; e8a2 cp BATTLETYPE_TUTORIAL jp z, .FinishTutorial - callba MobileFn_10607f + callba TrainerRankings_WildMonsCaught ld hl, Text_GotchaMonWasCaught call PrintText diff --git a/main.asm b/main.asm index 735ba7154..385f865d7 100644 --- a/main.asm +++ b/main.asm @@ -2830,7 +2830,7 @@ Special_CheckForLuckyNumberWinners: ; 4d87a ld a, [ScriptVar] and a ret z ; found nothing - callba MobileFn_1060cd + callba TrainerRankings_LuckyNumberShow ld a, [wFoundMatchingIDInParty] and a push af diff --git a/maps/ElmsLab.asm b/maps/ElmsLab.asm index 593269cb8..c49c522fc 100644 --- a/maps/ElmsLab.asm +++ b/maps/ElmsLab.asm @@ -313,7 +313,7 @@ ElmsLabHealingMachine: end ElmsLabHealingMachine_HealParty: - special Mobile_HealParty + special TrainerRankings_Healings special HealParty playmusic MUSIC_NONE writebyte 1 ; Machine is in Elm's Lab diff --git a/maps/FastShipCabins_SW_SSW_NW.asm b/maps/FastShipCabins_SW_SSW_NW.asm index 536515dd7..76933c600 100644 --- a/maps/FastShipCabins_SW_SSW_NW.asm +++ b/maps/FastShipCabins_SW_SSW_NW.asm @@ -71,7 +71,7 @@ FastShipBed: closetext special Special_FadeBlackQuickly special Special_ReloadSpritesNoPalettes - special Mobile_HealParty + special TrainerRankings_Healings special HealParty playmusic MUSIC_HEAL pause 60 diff --git a/maps/MobileBattleRoom.asm b/maps/MobileBattleRoom.asm index 109322ad6..7c5628955 100644 --- a/maps/MobileBattleRoom.asm +++ b/maps/MobileBattleRoom.asm @@ -43,7 +43,7 @@ MapMobileBattleRoomSignpost0Script: special RestartMapMusic refreshscreen $0 .two_ - special Mobile_HealParty + special TrainerRankings_Healings special HealParty special Function10383c iftrue .false diff --git a/maps/MrPokemonsHouse.asm b/maps/MrPokemonsHouse.asm index 3ac76807c..6449ad404 100644 --- a/maps/MrPokemonsHouse.asm +++ b/maps/MrPokemonsHouse.asm @@ -115,7 +115,7 @@ MrPokemonsHouse_OakScript: special Special_FadeBlackQuickly special Special_ReloadSpritesNoPalettes playmusic MUSIC_HEAL - special Mobile_HealParty + special TrainerRankings_Healings special HealParty pause 60 special Special_FadeInQuickly diff --git a/maps/Route26HealSpeechHouse.asm b/maps/Route26HealSpeechHouse.asm index 7dd01776a..050493637 100644 --- a/maps/Route26HealSpeechHouse.asm +++ b/maps/Route26HealSpeechHouse.asm @@ -16,7 +16,7 @@ TeacherScript_0x7b125: closetext special Special_FadeBlackQuickly special Special_ReloadSpritesNoPalettes - special Mobile_HealParty + special TrainerRankings_Healings playmusic MUSIC_HEAL special HealParty pause 60 diff --git a/maps/TeamRocketBaseB2F.asm b/maps/TeamRocketBaseB2F.asm index 3091a0233..25994fc92 100644 --- a/maps/TeamRocketBaseB2F.asm +++ b/maps/TeamRocketBaseB2F.asm @@ -172,7 +172,7 @@ LanceHealsCommon: waitbutton closetext special FadeOutPalettes - special Mobile_HealParty + special TrainerRankings_Healings playsound SFX_FULL_HEAL special HealParty special FadeInPalettes diff --git a/misc/battle_tower_5c.asm b/misc/battle_tower_5c.asm index da14a5ac8..09c827146 100755 --- a/misc/battle_tower_5c.asm +++ b/misc/battle_tower_5c.asm @@ -243,7 +243,7 @@ RunBattleTowerTrainer: ; 17024d xor a ld [wLinkMode], a - callba Mobile_HealParty + callba TrainerRankings_Healings callba HealParty call ReadBTTrainerParty call Clears5_a89a diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm index 54160ca08..3c7a34710 100644 --- a/misc/mobile_40.asm +++ b/misc/mobile_40.asm @@ -5452,7 +5452,7 @@ Function102423: ; 102423 call Function102921 ret nc callba SaveAfterLinkTrade - callba MobileFn_1060af + callba TrainerRankings_Trades callba BackupMobileEventIndex ld hl, wcd4b set 1, [hl] diff --git a/misc/mobile_41.asm b/misc/mobile_41.asm index b68336a28..331242d88 100755 --- a/misc/mobile_41.asm +++ b/misc/mobile_41.asm @@ -1,50 +1,63 @@ SECTION "bank41_2", ROMX, BANK[$41] -Mobile_HallOfFame2:: mobile ; 0x105ef6 +; These functions deal with miscellaneous statistics +; which were used for Trainer Rankings in Pokémon News. + +; Copies certain values at the time the player enters the Hall of Fame. +TrainerRankings_HallOfFame2:: mobile ; 0x105ef6 ld a, $5 call GetSRAMBank + ld hl, GameTimeHours - ld de, $a001 + ld de, sTrainerRankingGameTimeHOF ld bc, 4 call CopyBytes - ld hl, $a010 - ld de, $a005 + + ld hl, sTrainerRankingStepCount + ld de, sTrainerRankingStepCountHOF ld bc, 4 call CopyBytes - ld hl, $a039 - ld de, $a009 + + ; sTrainerRankingHealings is only a 3-byte value. + ; One extraneous byte is copied from sTrainerRankingMysteryGift. + ld hl, sTrainerRankingHealings + ld de, sTrainerRankingHealingsHOF ld bc, 4 call CopyBytes - ld hl, $a01b - ld de, $a00d + + ld hl, sTrainerRankingBattles + ld de, sTrainerRankingBattlesHOF ld bc, 3 call CopyBytes - call Function106162 + + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 105f33 -MagikarpLength_Mobile: mobile ; 105f33 +TrainerRankings_MagikarpLength: mobile ; 105f33 ld a, $5 call GetSRAMBank ld de, Buffer1 - ld hl, $a07b + ld hl, sTrainerRankingLongestMagikarp + + ; Is this Magikarp the longest measured? ld a, [de] cp [hl] - jr z, .asm_105f47 - jr nc, .asm_105f4f - jr .asm_105f55 + jr z, .isLowByteHigher + jr nc, .newRecordLongest + jr .checkShortest -.asm_105f47 +.isLowByteHigher inc hl inc de ld a, [de] cp [hl] dec hl dec de - jr c, .asm_105f55 + jr c, .checkShortest -.asm_105f4f +.newRecordLongest ld a, [de] inc de ld [hli], a @@ -52,150 +65,157 @@ MagikarpLength_Mobile: mobile ; 105f33 dec de ld [hl], a -.asm_105f55 - ld hl, $a07d +.checkShortest + ; First, check if the record for shortest Magikarp is 0. + ; This seems unnecessary, because the value is initialized to 100.0 cm. + ld hl, sTrainerRankingShortestMagikarp ld a, [hli] or [hl] dec hl - jr z, .asm_105f6d + jr z, .newRecordShortest + + ; Now check if this Magikarp is the shortest ld a, [de] cp [hl] - jr z, .asm_105f65 - jr c, .asm_105f6d - jr .asm_105f72 + jr z, .isLowByteLower + jr c, .newRecordShortest + jr .done -.asm_105f65 +.isLowByteLower inc hl inc de ld a, [de] cp [hl] - jr nc, .asm_105f72 + jr nc, .done dec hl dec de -.asm_105f6d +.newRecordShortest ld a, [de] inc de ld [hli], a ld a, [de] ld [hl], a -.asm_105f72 - call Function106162 +.done + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 105f79 -MobileFn_105f79: mobile ; 105f79 +TrainerRankings_BugContestScore: mobile ; 105f79 ld a, $5 call GetSRAMBank ld a, [hProduct] - ld hl, $a07f + ld hl, sTrainerRankingBugContestScore cp [hl] - jr z, .asm_105f8b - jr nc, .asm_105f92 - jr .asm_105f98 + jr z, .isLowByteHigher + jr nc, .newHighScore + jr .done -.asm_105f8b +.isLowByteHigher inc hl ld a, [hMultiplicand] cp [hl] - jr c, .asm_105f98 + jr c, .done dec hl -.asm_105f92 +.newHighScore ld a, [hProduct] ld [hli], a ld a, [hMultiplicand] ld [hl], a -.asm_105f98 - call Function106162 +.done + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 105f9f -MobileFn_105f9f: mobile ; 105f9f +TrainerRankings_AddToSlotsWinStreak: mobile ; 105f9f ld a, $5 call GetSRAMBank - ld hl, $a070 + + ; Increment the current streak + ld hl, sTrainerRankingCurrentSlotsStreak + 1 inc [hl] - jr nz, .asm_105fae + jr nz, .noCarry dec hl inc [hl] inc hl -.asm_105fae +.noCarry dec hl - ld a, [$a071] + ; Now check if this is a new record for longest streak + ld a, [sTrainerRankingLongestSlotsStreak] cp [hl] - jr z, .asm_105fb9 - jr c, .asm_105fc1 - jr .asm_105fc9 + jr z, .isLowByteHigher + jr c, .newRecordStreak + jr .done -.asm_105fb9 +.isLowByteHigher inc hl - ld a, [$a072] + ld a, [sTrainerRankingLongestSlotsStreak + 1] cp [hl] - jr nc, .asm_105fc9 + jr nc, .done dec hl -.asm_105fc1 +.newRecordStreak ld a, [hli] - ld [$a071], a + ld [sTrainerRankingLongestSlotsStreak], a ld a, [hl] - ld [$a072], a + ld [sTrainerRankingLongestSlotsStreak + 1], a -.asm_105fc9 - call Function106162 +.done + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 105fd0 -MobileFn_105fd0: mobile ; 105fd0 +TrainerRankings_EndSlotsWinStreak: mobile ; 105fd0 ld a, $5 call GetSRAMBank - ld hl, $a06f + ld hl, sTrainerRankingCurrentSlotsStreak xor a ld [hli], a ld [hl], a - call Function106162 + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 105fe3 -MobileFn_105fe3: mobile ; 105fe3 +TrainerRankings_AddToSlotsPayouts: mobile ; 105fe3 ld a, $5 call GetSRAMBank - ld hl, $a076 + ld hl, sTrainerRankingTotalSlotsPayouts + 3 ld a, e add [hl] ld [hld], a ld a, d adc [hl] ld [hld], a - jr nc, .asm_106001 + jr nc, .done inc [hl] - jr nz, .asm_106001 + jr nz, .done dec hl inc [hl] - jr nz, .asm_106001 + jr nz, .done ld a, $ff ld [hli], a ld [hli], a ld [hli], a ld [hl], a -.asm_106001 - call Function106162 +.done + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 106008 -MobileFn_106008: mobile ; 106008 +TrainerRankings_AddToBattlePayouts: mobile ; 106008 ld a, $5 call GetSRAMBank - ld hl, $a07a + ld hl, sTrainerRankingTotalBattlePayouts + 3 ld a, [bc] dec bc add [hl] @@ -207,189 +227,195 @@ MobileFn_106008: mobile ; 106008 ld a, [bc] adc [hl] ld [hld], a - jr nc, .asm_106027 + jr nc, .done inc [hl] - jr nz, .asm_106027 + jr nz, .done ld a, $ff ld [hli], a ld [hli], a ld [hli], a ld [hl], a -.asm_106027 - call Function106162 +.done + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 10602e -MobileFn_10602e: mobile ; 10602e (41:602e) - ld hl, $a010 - jp MobileFn_106117 +TrainerRankings_StepCount: mobile ; 10602e (41:602e) + ld hl, sTrainerRankingStepCount + jp TrainerRankings_Increment4Byte -MobileFn_106035: mobile ; 106035 +; Unreferenced in English version. +TrainerRankings_BattleTowerWins: mobile ; 106035 ld a, $5 call GetSRAMBank ld a, [$aa8d] and a call CloseSRAM ret nz - ld hl, $a014 - jp Function106123 + ld hl, sTrainerRankingBattleTowerWins + jp TrainerRankings_Increment2Byte -MobileFn_106049: mobile ; 106049 - ld hl, $a018 - jp Function10611d +TrainerRankings_TMsHMsTaught: mobile ; 106049 + ld hl, sTrainerRankingTMsHMsTaught + jp TrainerRankings_Increment3Byte -MobileFn_106050: mobile ; 106050 +TrainerRankings_Battles: mobile ; 106050 ld a, [BattleType] - cp BATTLETYPE_TUTORIAL + cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle ret z - ld hl, $a01b - jp Function10611d + ld hl, sTrainerRankingBattles + jp TrainerRankings_Increment3Byte -MobileFn_10605d: mobile ; 10605d +TrainerRankings_WildBattles: mobile ; 10605d ld a, [BattleType] - cp BATTLETYPE_TUTORIAL + cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle ret z - ld hl, $a01e - jp Function10611d + ld hl, sTrainerRankingWildBattles + jp TrainerRankings_Increment3Byte -MobileFn_10606a: mobile ; 10606a - ld hl, $a021 - jp Function10611d +TrainerRankings_TrainerBattles: mobile ; 10606a + ld hl, sTrainerRankingTrainerBattles + jp TrainerRankings_Increment3Byte -MobileFn_106071: mobile ; 106071 - ld hl, $a024 - jp Function10611d +TrainerRankings_Unused1: mobile ; 106071 + ld hl, sTrainerRankingUnused1 + jp TrainerRankings_Increment3Byte -Mobile_HallOfFame:: mobile ; 0x106078 - ld hl, $a027 - jp Function10611d +TrainerRankings_HallOfFame:: mobile ; 0x106078 + ld hl, sTrainerRankingHOFEntries + jp TrainerRankings_Increment3Byte -MobileFn_10607f: mobile ; 10607f (41:607f) - ld hl, $a02a - jp Function10611d +TrainerRankings_WildMonsCaught: mobile ; 10607f (41:607f) + ld hl, sTrainerRankingWildMonsCaught + jp TrainerRankings_Increment3Byte -MobileFn_106086: mobile ; 106086 - ld hl, $a02d - jp Function10611d +TrainerRankings_HookedEncounters: mobile ; 106086 + ld hl, sTrainerRankingHookedEncounters + jp TrainerRankings_Increment3Byte -MobileFn_10608d: mobile ; 10608d (41:608d) - ld hl, $a030 - jp Function10611d +TrainerRankings_EggsHatched: mobile ; 10608d (41:608d) + ld hl, sTrainerRankingEggsHatched + jp TrainerRankings_Increment3Byte -MobileFn_106094: mobile ; 106094 - ld hl, $a033 - jp Function10611d +TrainerRankings_MonsEvolved: mobile ; 106094 + ld hl, sTrainerRankingMonsEvolved + jp TrainerRankings_Increment3Byte -MobileFn_10609b: mobile ; 10609b - ld hl, $a036 - jp Function10611d +TrainerRankings_FruitPicked: mobile ; 10609b + ld hl, sTrainerRankingFruitPicked + jp TrainerRankings_Increment3Byte -Mobile_HealParty: mobile ; 1060a2 - ld hl, $a039 - jp Function10611d +TrainerRankings_Healings: mobile ; 1060a2 + ld hl, sTrainerRankingHealings + jp TrainerRankings_Increment3Byte -MobileFn_1060a9: mobile ; 1060a9 (41:60a9) - ld hl, $a03c - jr Function10611d +TrainerRankings_MysteryGift: mobile ; 1060a9 (41:60a9) + ld hl, sTrainerRankingMysteryGift + jr TrainerRankings_Increment3Byte -MobileFn_1060af: mobile ; 1060af - ld hl, $a03f - jr Function10611d +TrainerRankings_Trades: mobile ; 1060af + ld hl, sTrainerRankingTrades + jr TrainerRankings_Increment3Byte -MobileFn_1060b5: mobile ; 1060b5 - ld hl, $a042 - jr Function10611d +TrainerRankings_Fly: mobile ; 1060b5 + ld hl, sTrainerRankingFly + jr TrainerRankings_Increment3Byte -MobileFn_1060bb: mobile ; 1060bb - ld hl, $a045 - jr Function10611d +TrainerRankings_Surf: mobile ; 1060bb + ld hl, sTrainerRankingSurf + jr TrainerRankings_Increment3Byte -MobileFn_1060c1: mobile ; 1060c1 - ld hl, $a048 - jr Function10611d +TrainerRankings_Waterfall: mobile ; 1060c1 + ld hl, sTrainerRankingWaterfall + jr TrainerRankings_Increment3Byte -MobileFn_1060c7: mobile ; 1060c7 - ld hl, $a04b - jr Function10611d +TrainerRankings_WhiteOuts: mobile ; 1060c7 + ld hl, sTrainerRankingWhiteOuts + jr TrainerRankings_Increment3Byte -MobileFn_1060cd: mobile ; 1060cd - ld hl, $a04e - jr Function106123 +TrainerRankings_LuckyNumberShow: mobile ; 1060cd + ld hl, sTrainerRankingLuckyNumberShow + jr TrainerRankings_Increment2Byte -MobileFn_1060d3: mobile ; 1060d3 - ld hl, $a051 - jr Function10611d +TrainerRankings_PhoneCalls: mobile ; 1060d3 + ld hl, sTrainerRankingPhoneCalls + jr TrainerRankings_Increment3Byte -MobileFn_1060d9: mobile ; 1060df - ld hl, $a054 - jr Function10611d +TrainerRankings_Unused2: mobile ; 1060df + ld hl, sTrainerRankingUnused2 + jr TrainerRankings_Increment3Byte -MobileFn_1060df: mobile ; 1060df - ld hl, $a057 - jr Function10611d +TrainerRankings_LinkBattles: mobile ; 1060df + ld hl, sTrainerRankingLinkBattles + jr TrainerRankings_Increment3Byte -MobileFn_1060e5: mobile ; 1060e5 +TrainerRankings_Splash: mobile ; 1060e5 + ; Only counts if it’s the player’s turn ld a, [hBattleTurn] and a ret nz - ld hl, $a05a - jr Function10611d + ld hl, sTrainerRankingSplash + jr TrainerRankings_Increment3Byte -MobileFn_1060ef: mobile ; 1060ef - ld hl, $a05d - jr Function10611d +TrainerRankings_TreeEncounters: mobile ; 1060ef + ld hl, sTrainerRankingTreeEncounters + jr TrainerRankings_Increment3Byte -MobileFn_1060f5: mobile ; 1060f5 - ld hl, $a060 - jr Function10611d +TrainerRankings_Unused3: mobile ; 1060f5 + ld hl, sTrainerRankingUnused3 + jr TrainerRankings_Increment3Byte -MobileFn_SaveBattleResult_Win: mobile ; win - ld hl, $a063 - jr Function10611d +TrainerRankings_ColosseumWins: mobile ; win + ld hl, sTrainerRankingColosseumWins + jr TrainerRankings_Increment3Byte -MobileFn_SaveBattleResult_Lose: mobile ; lose - ld hl, $a066 - jr Function10611d +TrainerRankings_ColosseumLosses: mobile ; lose + ld hl, sTrainerRankingColosseumLosses + jr TrainerRankings_Increment3Byte ; 106107 -MobileFn_SaveBattleResult_Draw: mobile ; draw - ld hl, $a069 - jr Function10611d +TrainerRankings_ColosseumDraws: mobile ; draw + ld hl, sTrainerRankingColosseumDraws + jr TrainerRankings_Increment3Byte ; 10610d -MobileFn_10610d: mobile ; 10610d +; Counts uses of both SelfDestruct and Explosion. +TrainerRankings_SelfDestruct: mobile ; 10610d + ; Only counts if it’s the player’s turn ld a, [hBattleTurn] and a ret nz - ld hl, $a06c - jr Function10611d + ld hl, sTrainerRankingSelfDestruct + jr TrainerRankings_Increment3Byte ; 106117 -MobileFn_106117: ; 106117 +TrainerRankings_Increment4Byte: ; 106117 push bc ld bc, 3 - jr Function10612d + jr TrainerRankings_Increment ; 10611d -Function10611d: ; 10611d +TrainerRankings_Increment3Byte: ; 10611d push bc ld bc, 2 - jr Function10612d + jr TrainerRankings_Increment ; 106123 -Function106123: ; 106123 +TrainerRankings_Increment2Byte: ; 106123 push bc ld bc, 1 - jr Function10612d + jr TrainerRankings_Increment ; 106129 -Function106129: ; 106129 +; unused +TrainerRankings_Increment1Byte: ; 106129 push bc ld bc, 0 -Function10612d: ; 10612d +; Increments a big-endian value of bc + 1 bytes at hl +TrainerRankings_Increment: ; 10612d ld a, $5 call GetSRAMBank push hl @@ -419,24 +445,25 @@ Function10612d: ; 10612d jr .asm_106142 .asm_10614d - call Function106162 + call UpdateTrainerRankingsChecksum call CloseSRAM pop bc ret ; 106155 -MobileFn_106155: mobile ; 106155 +; Used when SRAM bank 5 isn’t already loaded — what’s the point of this? +UpdateTrainerRankingsChecksum2: mobile ; 106155 ld a, $5 call GetSRAMBank - call Function106162 + call UpdateTrainerRankingsChecksum call CloseSRAM ret ; 106162 -Function106162: ; 106162 +UpdateTrainerRankingsChecksum: ; 106162 push de - call Function10616e - ld hl, $a081 ; s5_a081 + call CalculateTrainerRankingsChecksum + ld hl, sTrainerRankingsChecksum ld [hl], d inc hl ld [hl], e @@ -444,10 +471,10 @@ Function106162: ; 106162 ret ; 10616e -Function10616e: ; 10616e +CalculateTrainerRankingsChecksum: ; 10616e push bc - ld hl, $a001 ; s5_a001 - ld bc, $80 + ld hl, sTrainerRankings + ld bc, sTrainerRankingsChecksum - sTrainerRankings xor a ld de, 0 .asm_106179 @@ -495,9 +522,10 @@ RestoreMobileEventIndex: ; 10619d (41:619d) ret ; 1061b3 (41:61b3) -Function1061b3: ; 1061b3 - call Function10616e - ld hl, $a081 ; s5_a081 +; Unreferenced in English version. +VerifyTrainerRankingsChecksum: ; 1061b3 + call CalculateTrainerRankingsChecksum + ld hl, sTrainerRankingsChecksum ld a, d cp [hl] ret nz @@ -516,19 +544,24 @@ DeleteMobileEventIndex: ; 1061c0 (41:61c0) ret ; 1061cd (41:61cd) -Function1061cd: ; unreferenced - ld hl, $a001 - ld bc, $82 +; Used in the Japanese version to initialize Trainer Rankings data +; for a new save file. Unreferenced in the English version. +InitializeTrainerRankings: + ld hl, sTrainerRankings + ld bc, sTrainerRankingsEnd - sTrainerRankings xor a call ByteFill - ld hl, $a07d + + ; Initialize the shortest Magikarp to 100.0 cm + ld hl, sTrainerRankingShortestMagikarp ld a, $3 ld [hli], a ld [hl], $e8 - call Function106162 - ld hl, $a001 - ld de, $a084 - ld bc, $82 + + call UpdateTrainerRankingsChecksum + ld hl, sTrainerRankings + ld de, sTrainerRankingsBackup + ld bc, sTrainerRankingsEnd - sTrainerRankings call CopyBytes ret ; 1061ef diff --git a/misc/mobile_5f.asm b/misc/mobile_5f.asm index dd4dbb6dc..2ce71049f 100644 --- a/misc/mobile_5f.asm +++ b/misc/mobile_5f.asm @@ -3098,7 +3098,7 @@ Function17e3c3: ; 17e3c3 push af ld a, $1 ld [rSVBK], a - callba MobileFn_106155 + callba UpdateTrainerRankingsChecksum2 callba BackupMobileEventIndex pop af ld [rSVBK], a