shithub: pokecrystal

Download patch

ref: f0209d6ed6a0cd0e759dff49bdfe4d8171229c29
parent: 5a9701ddc8c33fcd90f6bcc58b9348587dec4d0c
author: hatschky <thirdgeek@arceus.local>
date: Mon Jan 16 16:11:34 EST 2017

Labels for Trainer Rankings stat tracking functions

--- a/battle/core.asm
+++ b/battle/core.asm
@@ -2623,7 +2623,7 @@
 	push bc
 	ld b, h
 	ld c, l
-	callba MobileFn_106008
+	callba TrainerRankings_AddToBattlePayouts
 	pop bc
 	pop hl
 .loop
@@ -8401,7 +8401,7 @@
 ; 3f4dd
 
 BattleIntro: ; 3f4dd
-	callba MobileFn_106050 ; mobile
+	callba TrainerRankings_Battles ; mobile
 	call LoadTrainerOrWildMonPic
 	xor a
 	ld [TempBattleMonSpecies], a
@@ -8486,7 +8486,7 @@
 
 InitEnemyTrainer: ; 3f594
 	ld [TrainerClass], a
-	callba MobileFn_10606a
+	callba TrainerRankings_TrainerBattles
 	xor a
 	ld [TempEnemyMonSpecies], a
 	callab GetTrainerAttributes
@@ -8542,7 +8542,7 @@
 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 @@
 ; 3f759
 
 ShowLinkBattleParticipantsAfterEnd: ; 3f759
-	callba MobileFn_1060df
+	callba TrainerRankings_LinkBattles
 	callba BackupMobileEventIndex
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1Status
@@ -8755,17 +8755,17 @@
 	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 @@
 	cp BATTLETYPE_FISH
 	jr nz, .NotFishing
 
-	callba MobileFn_106086 ; update fishing records?
+	callba TrainerRankings_HookedEncounters
 
 	ld hl, HookedPokemonAttackedText
 	jr .PlaceBattleStartText
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -8073,7 +8073,7 @@
 
 BattleCommand_Splash: ; 36fe1
 	call AnimateCurrentMove
-	callba MobileFn_1060e5
+	callba TrainerRankings_Splash
 	jp PrintNothingHappened
 
 ; 36fed
@@ -8600,7 +8600,7 @@
 
 
 BattleCommand_SelfDestruct: ; 37380
-	callba MobileFn_10610d
+	callba TrainerRankings_SelfDestruct
 	ld a, BATTLEANIM_PLAYER_DAMAGE
 	ld [wNumHits], a
 	ld c, 3
--- 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
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -232,7 +232,7 @@
 	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
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -360,7 +360,7 @@
 
 
 TreeMonEncounter: ; b81ea
-	callba MobileFn_1060ef
+	callba TrainerRankings_TreeEncounters
 
 	xor a
 	ld [TempWildMonSpecies], a
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -247,7 +247,7 @@
 	push hl
 	ld hl, Text_EvolvedIntoPKMN
 	call PrintTextBoxText
-	callba MobileFn_106094
+	callba TrainerRankings_MonsEvolved
 
 	ld de, MUSIC_NONE
 	call PlayMusic
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -58,7 +58,7 @@
 ; 4405f
 
 PickedFruitTree: ; 4405f
-	callba MobileFn_10609b ; empty function
+	callba TrainerRankings_FruitPicked
 	ld b, 1
 	jp GetFruitTreeFlag
 ; 4406a
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1973,7 +1973,7 @@
 
 .save
 	callba SaveAfterLinkTrade
-	callba MobileFn_1060af
+	callba TrainerRankings_Trades
 	callba BackupMobileEventIndex
 	ld c, 40
 	call DelayFrames
--- a/engine/mysterygift.asm
+++ b/engine/mysterygift.asm
@@ -63,7 +63,7 @@
 	jr z, .skip_append_save
 	call .SaveMysteryGiftTrainerName
 	callba RestoreMobileEventIndex
-	callba MobileFn_1060a9
+	callba TrainerRankings_MysteryGift
 	callba BackupMobileEventIndex
 .skip_append_save
 	ld a, [wMysteryGiftPartnerSentDeco]
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -471,7 +471,7 @@
 RingTwice_StartCall: ; 9026f
 	call .Ring
 	call .Ring
-	callba MobileFn_1060d3
+	callba TrainerRankings_PhoneCalls
 	ret
 ; 9027c
 
@@ -500,7 +500,7 @@
 	ld [PhoneCallerHi], a
 	call Phone_FirstOfTwoRings
 	call Phone_FirstOfTwoRings
-	callba MobileFn_1060d3
+	callba TrainerRankings_PhoneCalls
 	ret
 ; 902b3
 
--- a/engine/player_step.asm
+++ b/engine/player_step.asm
@@ -77,7 +77,7 @@
 	ret
 
 .mobile ; d509 (3:5509)
-	callba MobileFn_10602e
+	callba TrainerRankings_StepCount
 	ret
 
 .fail2 ; d510 (3:5510)
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -3199,8 +3199,8 @@
 
 	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]
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -20,7 +20,7 @@
 	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 @@
 	ld a, [hl]
 	ld [wPayout], a
 	ld d, a
-	callba MobileFn_105fe3
+	callba TrainerRankings_AddToSlotsPayouts
 	ret
 
 .PayoutTable:
@@ -1836,7 +1836,7 @@
 	jr nz, .MatchedSomething
 	ld hl, .Text_Darn
 	call PrintText
-	callba MobileFn_105fd0
+	callba TrainerRankings_EndSlotsWinStreak
 	ret
 
 .MatchedSomething:
@@ -1860,7 +1860,7 @@
 .return
 	ld hl, .Text_PrintPayout
 	call PrintText
-	callba MobileFn_105f9f
+	callba TrainerRankings_AddToSlotsWinStreak
 	ret
 
 ; 93195 (24:7195)
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -179,7 +179,7 @@
 	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
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -1255,7 +1255,7 @@
 	jr z, .Fail
 	cp $0
 	jr z, .Error
-	callba MobileFn_1060b5
+	callba TrainerRankings_Fly
 	ld b, $4
 	ld a, $2
 	ret
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -107,7 +107,7 @@
 
 	farwritetext NurseTakePokemonText
 	pause 20
-	special Mobile_HealParty
+	special TrainerRankings_Healings
 	spriteface LAST_TALKED, LEFT
 	pause 10
 	special HealParty
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -146,7 +146,7 @@
 	and a
 	jr z, .nope
 
-	callba MobileFn_106049
+	callba TrainerRankings_TMsHMsTaught
 	ld a, [CurItem]
 	call IsHM
 	ret c
--- 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
--- a/event/magikarp.asm
+++ b/event/magikarp.asm
@@ -28,7 +28,7 @@
 	ld c, l
 	call CalcMagikarpLength
 	call PrintMagikarpLength
-	callba MagikarpLength_Mobile
+	callba TrainerRankings_MagikarpLength
 	ld hl, .MeasureItText
 	call PrintText
 
--- a/event/overworld.asm
+++ b/event/overworld.asm
@@ -472,7 +472,7 @@
 	end
 
 .empty_fn ; c9a2
-	callba MobileFn_1060bb ; empty
+	callba TrainerRankings_Surf
 	ret
 
 UsedSurfText: ; c9a9
@@ -745,7 +745,7 @@
 	ld a, [PlayerStandingTile]
 	call CheckWaterfallTile
 	ret z
-	callba MobileFn_1060c1
+	callba TrainerRankings_Waterfall
 	ld a, $1
 	ld [ScriptVar], a
 	ret
--- a/event/whiteout.asm
+++ b/event/whiteout.asm
@@ -49,9 +49,7 @@
 ; 12513
 
 HalveMoney: ; 12513
-
-; Empty function...
-	callba MobileFn_1060c7
+	callba TrainerRankings_WhiteOuts
 
 ; Halve the player's money.
 	ld hl, Money
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -512,7 +512,7 @@
 	cp BATTLETYPE_TUTORIAL
 	jp z, .FinishTutorial
 
-	callba MobileFn_10607f
+	callba TrainerRankings_WildMonsCaught
 
 	ld hl, Text_GotchaMonWasCaught
 	call PrintText
--- a/main.asm
+++ b/main.asm
@@ -2830,7 +2830,7 @@
 	ld a, [ScriptVar]
 	and a
 	ret z ; found nothing
-	callba MobileFn_1060cd
+	callba TrainerRankings_LuckyNumberShow
 	ld a, [wFoundMatchingIDInParty]
 	and a
 	push af
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -313,7 +313,7 @@
 	end
 
 ElmsLabHealingMachine_HealParty:
-	special Mobile_HealParty
+	special TrainerRankings_Healings
 	special HealParty
 	playmusic MUSIC_NONE
 	writebyte 1 ; Machine is in Elm's Lab
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -71,7 +71,7 @@
 	closetext
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	special Mobile_HealParty
+	special TrainerRankings_Healings
 	special HealParty
 	playmusic MUSIC_HEAL
 	pause 60
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -43,7 +43,7 @@
 	special RestartMapMusic
 	refreshscreen $0
 .two_
-	special Mobile_HealParty
+	special TrainerRankings_Healings
 	special HealParty
 	special Function10383c
 	iftrue .false
--- a/maps/MrPokemonsHouse.asm
+++ b/maps/MrPokemonsHouse.asm
@@ -115,7 +115,7 @@
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
 	playmusic MUSIC_HEAL
-	special Mobile_HealParty
+	special TrainerRankings_Healings
 	special HealParty
 	pause 60
 	special Special_FadeInQuickly
--- a/maps/Route26HealSpeechHouse.asm
+++ b/maps/Route26HealSpeechHouse.asm
@@ -16,7 +16,7 @@
 	closetext
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	special Mobile_HealParty
+	special TrainerRankings_Healings
 	playmusic MUSIC_HEAL
 	special HealParty
 	pause 60
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -172,7 +172,7 @@
 	waitbutton
 	closetext
 	special FadeOutPalettes
-	special Mobile_HealParty
+	special TrainerRankings_Healings
 	playsound SFX_FULL_HEAL
 	special HealParty
 	special FadeInPalettes
--- a/misc/battle_tower_5c.asm
+++ b/misc/battle_tower_5c.asm
@@ -243,7 +243,7 @@
 
 	xor a
 	ld [wLinkMode], a
-	callba Mobile_HealParty
+	callba TrainerRankings_Healings
 	callba HealParty
 	call ReadBTTrainerParty
 	call Clears5_a89a
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -5452,7 +5452,7 @@
 	call Function102921
 	ret nc
 	callba SaveAfterLinkTrade
-	callba MobileFn_1060af
+	callba TrainerRankings_Trades
 	callba BackupMobileEventIndex
 	ld hl, wcd4b
 	set 1, [hl]
--- a/misc/mobile_41.asm
+++ b/misc/mobile_41.asm
@@ -1,41 +1,54 @@
 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]
@@ -42,9 +55,9 @@
 	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,28 +65,32 @@
 	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
@@ -80,94 +97,97 @@
 	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
@@ -174,12 +194,12 @@
 	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
@@ -186,16 +206,16 @@
 	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,9 +227,9 @@
 	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
@@ -216,17 +236,18 @@
 	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]
@@ -233,163 +254,168 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -3098,7 +3098,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	callba MobileFn_106155
+	callba UpdateTrainerRankingsChecksum2
 	callba BackupMobileEventIndex
 	pop af
 	ld [rSVBK], a
--