shithub: pokecrystal

Download patch

ref: ac824f62fc6bdbc63f2f9fb7bd17e4827a535f36
parent: c34264ddd89c2af4ba1370d4a2789009e9139b48
author: PikalaxALT <PikalaxALT@gmail.com>
date: Sun Nov 8 08:27:26 EST 2015

More battle core labels

--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -16,7 +16,7 @@
 	bit SUBSTATUS_CANT_RUN, a
 	jr nz, DontSwitch
 
-	ld a, [wc731]
+	ld a, [wEnemyWrapCount]
 	and a
 	jr nz, DontSwitch
 
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -1062,7 +1062,7 @@
 ; Bind, Wrap, Fire Spin, Clamp
 
 ; 50% chance to discourage this move if the player is already trapped.
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	and a
 	jr nz, .asm_38a8b
 
@@ -2466,7 +2466,7 @@
 ; 80% chance to greatly encourage this move if the enemy is
 ; trapped (Bind effect), seeded, or scattered with spikes.
 
-	ld a, [wc731]
+	ld a, [wEnemyWrapCount]
 	and a
 	jr nz, .asm_39097
 
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -166,8 +166,8 @@
 
 Function3c12f: ; 3c12f
 .loop
-	call Function3c1bf
-	call Function3c3f5
+	call MobileFn_3c1bf
+	call CheckContestBattleOver
 	jp c, .quit
 
 	xor a
@@ -192,8 +192,8 @@
 .not_disconnected
 
 	call Function3c410
-	jr c, .asm_3c18a
-.asm_3c179
+	jr c, .skip_iteration
+.loop1
 	call BattleMenu
 	jr c, .quit
 	ld a, [BattleEnded]
@@ -202,20 +202,20 @@
 	ld a, [wd232] ; roared/whirlwinded/teleported
 	and a
 	jr nz, .quit
-.asm_3c18a
+.skip_iteration
 	call Function3c434
-	jr nz, .asm_3c179
+	jr nz, .loop1
 
 	call Function3c300
 	jr c, .quit
 
 	call DetermineMoveOrder
-	jr c, .asm_3c19e
+	jr c, .false
 	call Function3c5fe
-	jr .asm_3c1a1
-.asm_3c19e
+	jr .proceed
+.false
 	call Function3c664
-.asm_3c1a1
+.proceed
 	call Function3d2e0
 	jr c, .quit
 
@@ -227,7 +227,7 @@
 	and a
 	jr nz, .quit
 
-	call Function3c1d6
+	call HandleBetweenTurnEffects
 	ld a, [BattleEnded]
 	and a
 	jr nz, .quit
@@ -237,46 +237,41 @@
 	ret
 ; 3c1bf
 
-Function3c1bf: ; 3c1bf
-	ret
-; 3c1c0
-
-
-Function3c1c0: ; 3c1c0
+MobileFn_3c1bf: mobile
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $a89b
 	inc [hl]
-	jr nz, .asm_3c1d2
+	jr nz, .finish
 	dec hl
 	inc [hl]
-	jr nz, .asm_3c1d2
+	jr nz, .finish
 	dec [hl]
 	inc hl
 	dec [hl]
 
-.asm_3c1d2
+.finish
 	call CloseSRAM
 	ret
 ; 3c1d6
 
 
-Function3c1d6: ; 3c1d6
+HandleBetweenTurnEffects: ; 3c1d6
 	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .CheckEnemyFirst
 	call CheckFaint_PlayerThenEnemy
 	ret c
-	call Function3ca26
+	call HandleFutureSight
 	call CheckFaint_PlayerThenEnemy
 	ret c
 	call HandleWeather
 	call CheckFaint_PlayerThenEnemy
 	ret c
-	call Function3c874
+	call HandleWrap
 	call CheckFaint_PlayerThenEnemy
 	ret c
-	call Function3c801
+	call HandlePerishSong
 	call CheckFaint_PlayerThenEnemy
 	ret c
 	jr .NoMoreFaintingConditions
@@ -284,27 +279,27 @@
 .CheckEnemyFirst
 	call CheckFaint_EnemyThenPlayer
 	ret c
-	call Function3ca26
+	call HandleFutureSight
 	call CheckFaint_EnemyThenPlayer
 	ret c
 	call HandleWeather
 	call CheckFaint_EnemyThenPlayer
 	ret c
-	call Function3c874
+	call HandleWrap
 	call CheckFaint_EnemyThenPlayer
 	ret c
-	call Function3c801
+	call HandlePerishSong
 	call CheckFaint_EnemyThenPlayer
 	ret c
 
 .NoMoreFaintingConditions
-	call Function3c8eb
-	call Function3c93c
+	call HandleLeftovers
+	call HandleMysteryberry
 	call HanleDefrost
 	call HandleSafeguard
 	call HandleScreens
-	call Function3de97
-	call Function3dcf9
+	call HandleStatBoostingHeldItems
+	call HandleHealingItems
 	call UpdateBattleMonInParty
 	call LoadTileMapToTempTileMap
 	jp Function3c4df
@@ -578,13 +573,13 @@
 	ret
 ; 3c3f5
 
-Function3c3f5: ; 3c3f5
+CheckContestBattleOver: ; 3c3f5
 	ld a, [BattleType]
 	cp BATTLETYPE_CONTEST
-	jr nz, .asm_3c40e
-	ld a, [wdc79]
+	jr nz, .contest_not_over
+	ld a, [wParkBallsRemaining]
 	and a
-	jr nz, .asm_3c40e
+	jr nz, .contest_not_over
 	ld a, [wBattleResult]
 	and $c0
 	add $2
@@ -592,7 +587,7 @@
 	scf
 	ret
 
-.asm_3c40e
+.contest_not_over
 	and a
 	ret
 ; 3c410
@@ -787,7 +782,7 @@
 	bit SUBSTATUS_CANT_RUN, a
 	jr nz, .Stay
 
-	ld a, [wc731]
+	ld a, [wEnemyWrapCount]
 	and a
 	jr nz, .Stay
 
@@ -1217,27 +1212,28 @@
 	ret
 ; 3c801
 
-Function3c801: ; 3c801
+HandlePerishSong: ; 3c801
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c813
+	jr z, .EnemyFirst
 	call SetPlayerTurn
-	call .asm_3c81c
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c81c
+	jp .do_it
 
-.asm_3c813
+.EnemyFirst
 	call SetEnemyTurn
-	call .asm_3c81c
+	call .do_it
 	call SetPlayerTurn
-.asm_3c81c
+
+.do_it
 	ld hl, PlayerPerishCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c827
+	jr z, .got_count
 	ld hl, EnemyPerishCount
 
-.asm_3c827
+.got_count
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVar
 	bit SUBSTATUS_PERISH, a
@@ -1285,46 +1281,51 @@
 	ret
 ; 3c874
 
-Function3c874: ; 3c874
+HandleWrap: ; 3c874
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c886
+	jr z, .EnemyFirst
 	call SetPlayerTurn
-	call .asm_3c88f
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c88f
+	jp .do_it
 
-.asm_3c886
+.EnemyFirst
 	call SetEnemyTurn
-	call .asm_3c88f
+	call .do_it
 	call SetPlayerTurn
-.asm_3c88f
-	ld hl, wc730
-	ld de, wc72e
+
+.do_it
+	ld hl, wPlayerWrapCount
+	ld de, wPlayerTrappingMove
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c8a0
-	ld hl, wc731
-	ld de, wc72f
+	jr z, .got_addrs
+	ld hl, wEnemyWrapCount
+	ld de, wEnemyTrappingMove
 
-.asm_3c8a0
+.got_addrs
 	ld a, [hl]
 	and a
 	ret z
+
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVar
 	bit SUBSTATUS_SUBSTITUTE, a
 	ret nz
+
 	ld a, [de]
 	ld [wd265], a
 	ld [FXAnimIDLo], a
 	call GetMoveName
 	dec [hl]
-	jr z, .asm_3c8de
+	jr z, .release_from_bounds
+
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVar
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
-	jr nz, .asm_3c8d3
+	jr nz, .skip_anim
+
 	call SwitchTurnCore
 	xor a
 	ld [wcfca], a
@@ -1332,13 +1333,13 @@
 	predef PlayBattleAnim
 	call SwitchTurnCore
 
-.asm_3c8d3
+.skip_anim
 	call GetSixteenthMaxHP
 	call SubtractHPFromUser
 	ld hl, BattleText_UsersHurtByStringBuffer1
 	jr .asm_3c8e1
 
-.asm_3c8de
+.release_from_bounds
 	ld hl, BattleText_UserWasReleasedFromStringBuffer1
 
 .asm_3c8e1
@@ -1352,20 +1353,21 @@
 	ret
 ; 3c8eb
 
-Function3c8eb: ; 3c8eb
+HandleLeftovers: ; 3c8eb
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c8fd
+	jr z, .DoEnemyFirst
 	call SetPlayerTurn
-	call .asm_3c906
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c906
+	jp .do_it
 
-.asm_3c8fd
+.DoEnemyFirst
 	call SetEnemyTurn
-	call .asm_3c906
+	call .do_it
 	call SetPlayerTurn
-.asm_3c906
+.do_it
+
 	callab GetUserItem
 	ld a, [hl]
 	ld [wd265], a
@@ -1373,13 +1375,15 @@
 	ld a, b
 	cp HELD_LEFTOVERS
 	ret nz
+
 	ld hl, BattleMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c922
+	jr z, .got_hp
 	ld hl, EnemyMonHP
 
-.asm_3c922
+.got_hp
+; Don't restore if we're already at max HP
 	ld a, [hli]
 	ld b, a
 	ld a, [hli]
@@ -1386,12 +1390,12 @@
 	ld c, a
 	ld a, [hli]
 	cp b
-	jr nz, .asm_3c92d
+	jr nz, .restore
 	ld a, [hl]
 	cp c
 	ret z
 
-.asm_3c92d
+.restore
 	call GetSixteenthMaxHP
 	call SwitchTurnCore
 	call RestoreHP
@@ -1399,24 +1403,25 @@
 	jp StdBattleTextBox
 ; 3c93c
 
-Function3c93c: ; 3c93c
+HandleMysteryberry: ; 3c93c
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c94e
+	jr z, .DoEnemyFirst
 	call SetPlayerTurn
-	call .asm_3c957
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c957
+	jp .do_it
 
-.asm_3c94e
+.DoEnemyFirst
 	call SetEnemyTurn
-	call .asm_3c957
+	call .do_it
 	call SetPlayerTurn
-.asm_3c957
+
+.do_it
 	callab GetUserItem
 	ld a, b
 	cp HELD_RESTORE_PP
-	jr nz, .asm_3c9ae
+	jr nz, .quit
 	ld hl, PartyMon1PP
 	ld a, [CurBattleMon]
 	call GetPartyLocation
@@ -1427,12 +1432,12 @@
 	call GetPartyLocation
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c99b
+	jr z, .wild
 	ld de, wc739
 	ld hl, wc735
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3c99b
+	jr z, .wild
 	ld hl, OTPartyMon1PP
 	ld a, [CurOTMon]
 	call GetPartyLocation
@@ -1442,33 +1447,33 @@
 	ld a, [CurOTMon]
 	call GetPartyLocation
 
-.asm_3c99b
+.wild
 	ld c, $0
-.asm_3c99d
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_3c9ae
+	jr z, .quit
 	ld a, [de]
 	and $3f
-	jr z, .asm_3c9af
+	jr z, .restore
 	inc hl
 	inc de
 	inc c
 	ld a, c
 	cp NUM_MOVES
-	jr nz, .asm_3c99d
+	jr nz, .loop
 
-.asm_3c9ae
+.quit
 	ret
 
-.asm_3c9af
+.restore
 	; lousy hack
 	ld a, [hl]
 	cp SKETCH
 	ld b, 1
-	jr z, .asm_3c9b8
+	jr z, .sketch
 	ld b, 5
-.asm_3c9b8
+.sketch
 	ld a, [de]
 	add b
 	ld [de], a
@@ -1480,10 +1485,10 @@
 	ld hl, BattleMonPP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c9d2
+	jr z, .player_pp
 	ld de, EnemyMonMoves - 1
 	ld hl, EnemyMonPP
-.asm_3c9d2
+.player_pp
 	inc de
 	pop bc
 	ld b, 0
@@ -1497,38 +1502,38 @@
 
 	ld a, [wd265]
 	cp [hl]
-	jr nz, .asm_3c9f5
+	jr nz, .skip_checks
 	ld a, [hBattleTurn]
 	and a
 	ld a, [PlayerSubStatus5]
-	jr z, .asm_3c9ee
+	jr z, .check_transform
 	ld a, [EnemySubStatus5]
-.asm_3c9ee
+.check_transform
 	bit SUBSTATUS_TRANSFORMED, a
-	jr nz, .asm_3c9f5
+	jr nz, .skip_checks
 	ld a, [de]
 	add b
 	ld [de], a
-.asm_3c9f5
+.skip_checks
 	callab GetUserItem
 	ld a, [hl]
 	ld [wd265], a
 	xor a
 	ld [hl], a
-	call Function3df12
+	call GetPartymonItem
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3ca12
+	jr z, .consume_item
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3ca14
-	call Function3df1f
+	jr z, .skip_consumption
+	call GetOTPartymonItem
 
-.asm_3ca12
+.consume_item
 	xor a
 	ld [hl], a
 
-.asm_3ca14
+.skip_consumption
 	call GetItemName
 	call SwitchTurnCore
 	call ItemRecoveryAnim
@@ -1537,27 +1542,28 @@
 	jp StdBattleTextBox
 ; 3ca26
 
-Function3ca26: ; 3ca26
+HandleFutureSight: ; 3ca26
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3ca38
+	jr z, .enemy_first
 	call SetPlayerTurn
-	call .asm_3ca41
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3ca41
+	jp .do_it
 
-.asm_3ca38
+.enemy_first
 	call SetEnemyTurn
-	call .asm_3ca41
+	call .do_it
 	call SetPlayerTurn
-.asm_3ca41
-	ld hl, wc71d
+
+.do_it
+	ld hl, wPlayerFutureSightCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3ca4c
-	ld hl, wc71e
+	jr z, .okay
+	ld hl, wEnemyFutureSightCount
 
-.asm_3ca4c
+.okay
 	ld a, [hl]
 	and a
 	ret z
@@ -3402,7 +3408,7 @@
 	dec a
 	ld [wc6e6], a
 	xor a
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	hlcoord 18, 0
 	ld a, $8
 	call Function3d490
@@ -3809,8 +3815,8 @@
 	ld [wEnemyRageCounter], a
 	ld [EnemyDisabledMove], a
 	ld [wc6fa], a
-	ld [wc730], a
-	ld [wc731], a
+	ld [wPlayerWrapCount], a
+	ld [wEnemyWrapCount], a
 	ld [EnemyTurnsTaken], a
 	ld hl, PlayerSubStatus5
 	res SUBSTATUS_CANT_RUN, [hl]
@@ -3907,7 +3913,7 @@
 	bit SUBSTATUS_CANT_RUN, a
 	jp nz, .cant_escape
 
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	and a
 	jp nz, .cant_escape
 
@@ -4258,7 +4264,7 @@
 	call CheckAmuletCoin
 	call Function3ee27
 	xor a
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	call SetPlayerTurn
 	xor a
 	ld [wcfca], a
@@ -4312,8 +4318,8 @@
 	ld [wPlayerRageCounter], a
 	ld [DisabledMove], a
 	ld [wc6fe], a
-	ld [wc731], a
-	ld [wc730], a
+	ld [wEnemyWrapCount], a
+	ld [wPlayerWrapCount], a
 	ld [PlayerTurnsTaken], a
 	ld hl, EnemySubStatus5
 	res SUBSTATUS_CANT_RUN, [hl]
@@ -4462,31 +4468,31 @@
 	ret
 ; 3dcf9
 
-Function3dcf9: ; 3dcf9
+HandleHealingItems: ; 3dcf9
 	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .player_1
 	call SetPlayerTurn
-	call Function3dd2f
+	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	call Function3de51
+	call HandleStatusHealingItem
 	call SetEnemyTurn
-	call Function3dd2f
+	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	jp Function3de51
+	jp HandleStatusHealingItem
 
 .player_1
 	call SetEnemyTurn
-	call Function3dd2f
+	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	call Function3de51
+	call HandleStatusHealingItem
 	call SetPlayerTurn
-	call Function3dd2f
+	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	jp Function3de51
+	jp HandleStatusHealingItem
 ; 3dd2f
 
-Function3dd2f: ; 3dd2f
+HandleHPHealingItem: ; 3dd2f
 	callab GetOpponentItem
 	ld a, b
 	cp $1
@@ -4495,11 +4501,11 @@
 	ld hl, EnemyMonMaxHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3dd4a
+	jr z, .go
 	ld de, BattleMonHP + 1
 	ld hl, BattleMonMaxHP
 
-.asm_3dd4a
+.go
 	push bc
 	ld a, [de]
 	ld [wd1ec], a
@@ -4515,17 +4521,17 @@
 	cp [hl]
 	ld a, c
 	pop bc
-	jr z, .asm_3dd62
-	jr c, .asm_3dd66
+	jr z, .equal
+	jr c, .less
 	ret
 
-.asm_3dd62
+.equal
 	inc hl
 	cp [hl]
 	dec hl
 	ret nc
 
-.asm_3dd66
+.less
 	call ItemRecoveryAnim
 	ld a, [hli]
 	ld [Buffer2], a
@@ -4544,13 +4550,13 @@
 	cp c
 	ld a, [hl]
 	sbc b
-	jr nc, .asm_3dd8d
+	jr nc, .okay
 	ld a, [hli]
 	ld [wd1ef], a
 	ld a, [hl]
 	ld [wd1ee], a
 
-.asm_3dd8d
+.okay
 	ld a, [wd1ef]
 	ld [de], a
 	inc de
@@ -4560,10 +4566,10 @@
 	ld [wd10a], a
 	and a
 	hlcoord 2, 2
-	jr z, .asm_3dda4
+	jr z, .got_hp_bar_coords
 	hlcoord 10, 9
 
-.asm_3dda4
+.got_hp_bar_coords
 	ld [wd10a], a
 	predef AnimateHPBar
 UseOpponentItem:
@@ -4627,7 +4633,7 @@
 	and [hl]
 	res SUBSTATUS_NIGHTMARE, [hl]
 	ld a, b
-	cp 1 << PSN | 1 << FRZ | 1 << BRN | SLP | 1 << PAR
+	cp ALL_STATUS
 	jr nz, .skip_confuse
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVarAddr
@@ -4658,12 +4664,12 @@
 	db HELD_HEAL_BURN, 1 << BRN
 	db HELD_HEAL_SLEEP, SLP
 	db HELD_HEAL_PARALYZE, 1 << PAR
-	db HELD_HEAL_STATUS, 1 << PSN | 1 << FRZ | 1 << BRN | SLP | 1 << PAR
+	db HELD_HEAL_STATUS, ALL_STATUS
 	db $ff
 ; 3de51
 
 
-Function3de51: ; 3de51
+HandleStatusHealingItem: ; 3de51
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVar
 	bit SUBSTATUS_CONFUSED, a
@@ -4671,11 +4677,11 @@
 	callab GetOpponentItem
 	ld a, b
 	cp HELD_HEAL_CONFUSION
-	jr z, .asm_3de67
+	jr z, .heal_status
 	cp HELD_HEAL_STATUS
 	ret nz
 
-.asm_3de67
+.heal_status
 	ld a, [hl]
 	ld [wd265], a
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
@@ -4687,8 +4693,8 @@
 	call StdBattleTextBox
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_3de90
-	call Function3df1f
+	jr nz, .do_partymon
+	call GetOTPartymonItem
 	xor a
 	ld [bc], a
 	ld a, [wBattleMode]
@@ -4697,8 +4703,8 @@
 	ld [hl], $0
 	ret
 
-.asm_3de90
-	call Function3df12
+.do_partymon
+	call GetPartymonItem
 	xor a
 	ld [bc], a
 	ld [hl], a
@@ -4705,28 +4711,29 @@
 	ret
 ; 3de97
 
-Function3de97: ; 3de97
+HandleStatBoostingHeldItems: ; 3de97
+; The effects handled here are not used in-game.
 	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .player_1
-	call Function3dea9
-	jp Function3deb1
+	call .DoEnemy
+	jp .DoPlayer
 
 .player_1
-	call Function3deb1
-	jp Function3dea9
+	call .DoPlayer
+	jp .DoEnemy
 ; 3dea9
 
-Function3dea9: ; 3dea9
-	call Function3df12
+.DoEnemy: ; 3dea9
+	call GetPartymonItem
 	ld a, $0
-	jp Function3deb6
+	jp .HandleItem
 ; 3deb1
 
-Function3deb1: ; 3deb1
-	call Function3df1f
+.DoPlayer: ; 3deb1
+	call GetOTPartymonItem
 	ld a, $1
-Function3deb6: ; 3deb6
+.HandleItem: ; 3deb6
 	ld [hBattleTurn], a
 	ld d, h
 	ld e, l
@@ -4735,16 +4742,16 @@
 	ld a, [bc]
 	ld b, a
 	callab GetItem
-	ld hl, .data_3defc
-.asm_3dec7
+	ld hl, .StatUpItems
+.loop
 	ld a, [hli]
 	cp $ff
-	jr z, .asm_3def9
+	jr z, .finish
 rept 2
 	inc hl
 endr
 	cp b
-	jr nz, .asm_3dec7
+	jr nz, .loop
 	pop bc
 	ld a, [bc]
 	ld [wd265], a
@@ -4771,13 +4778,13 @@
 	callab BattleCommand_StatUpMessage
 	ret
 
-.asm_3def9
+.finish
 	pop bc
 	pop de
 	ret
 ; 3defc
 
-.data_3defc
+.StatUpItems
 	dbw HELD_ATTACK_UP,     BattleCommand_AttackUp
 	dbw HELD_DEFENSE_UP,    BattleCommand_DefenseUp
 	dbw HELD_SPEED_UP,      BattleCommand_SpeedUp
@@ -4789,7 +4796,7 @@
 ; 3df12
 
 
-Function3df12: ; 3df12
+GetPartymonItem: ; 3df12
 	ld hl, PartyMon1Item
 	ld a, [CurBattleMon]
 	call GetPartyLocation
@@ -4797,7 +4804,7 @@
 	ret
 ; 3df1f
 
-Function3df1f: ; 3df1f
+GetOTPartymonItem: ; 3df1f
 	ld hl, OTPartyMon1Item
 	ld a, [CurOTMon]
 	call GetPartyLocation
@@ -4805,7 +4812,7 @@
 	ret
 ; 3df2c
 
-Function3df2c: ; 3df2c
+UpdateBattleHUDs: ; 3df2c
 	push hl
 	push de
 	push bc
@@ -5298,7 +5305,7 @@
 	ld a, $1
 	ld [MenuSelection2], a
 	call ExitMenu
-	call Function3df2c
+	call UpdateBattleHUDs
 	call WaitBGMap
 	call LoadTileMapToTempTileMap
 	call ResetTextRelatedRAM
@@ -5421,7 +5428,7 @@
 	jp Function3e299
 
 .asm_3e36b
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	and a
 	jr nz, .asm_3e378
 	ld a, [EnemySubStatus5]
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -7247,13 +7247,13 @@
 	ld a, [AttackMissed]
 	and a
 	ret nz
-	ld hl, wc731
-	ld de, wc72f
+	ld hl, wEnemyWrapCount
+	ld de, wEnemyTrappingMove
 	ld a, [hBattleTurn]
 	and a
 	jr z, .asm_36c43
-	ld hl, wc730
-	ld de, wc72e
+	ld hl, wPlayerWrapCount
+	ld de, wPlayerTrappingMove
 
 .asm_36c43
 	ld a, [hl]
@@ -7494,7 +7494,7 @@
 	cp HELD_HEAL_CONFUSION
 	ret nz
 .asm_36db0
-	ld hl, Function3de51
+	ld hl, HandleStatusHealingItem
 	jp CallBattleCore
 ; 36db6
 
@@ -7674,13 +7674,13 @@
 	call GetBattleVarAddr
 	set SUBSTATUS_SUBSTITUTE, [hl]
 
-	ld hl, wc730
-	ld de, wc72e
+	ld hl, wPlayerWrapCount
+	ld de, wPlayerTrappingMove
 	ld a, [hBattleTurn]
 	and a
 	jr z, .player
-	ld hl, wc731
-	ld de, wc72f
+	ld hl, wEnemyWrapCount
+	ld de, wEnemyTrappingMove
 .player
 
 	xor a
@@ -9077,8 +9077,8 @@
 	ld [hl], 0
 
 	xor a
-	ld [wc730], a
-	ld [wc731], a
+	ld [wPlayerWrapCount], a
+	ld [wEnemyWrapCount], a
 	ret
 ; 37ae9
 
@@ -9181,12 +9181,12 @@
 .asm_37b4a
 
 	ld hl, PlayerScreens
-	ld de, wc730
+	ld de, wPlayerWrapCount
 	ld a, [hBattleTurn]
 	and a
 	jr z, .asm_37b5b ; 37b53 $6
 	ld hl, EnemyScreens
-	ld de, wc731
+	ld de, wEnemyWrapCount
 .asm_37b5b
 	bit SCREENS_SPIKES, [hl]
 	jr z, .asm_37b69 ; 37b5d $a
@@ -9526,12 +9526,12 @@
 BattleCommand_CheckFutureSight: ; 37d0d
 ; checkfuturesight
 
-	ld hl, wc71d
+	ld hl, wPlayerFutureSightCount
 	ld de, wc727
 	ld a, [hBattleTurn]
 	and a
 	jr z, .ok
-	ld hl, wc71e
+	ld hl, wEnemyFutureSightCount
 	ld de, wc729
 .ok
 
@@ -9566,11 +9566,11 @@
 	call GetBattleVarAddr
 	ld [hl], b
 .asm_37d4b
-	ld hl, wc71d
+	ld hl, wPlayerFutureSightCount
 	ld a, [hBattleTurn]
 	and a
 	jr z, .asm_37d56 ; 37d51 $3
-	ld hl, wc71e
+	ld hl, wEnemyFutureSightCount
 .asm_37d56
 	ld a, [hl]
 	and a
--- a/constants/battle_constants.asm
+++ b/constants/battle_constants.asm
@@ -98,6 +98,8 @@
 	const PAR
 	const SLP ; 7 turns
 
+ALL_STATUS EQU (1 << PSN) + (1 << BRN) + (1 << FRZ) + (1 << PAR) + SLP
+
 ; substatus
 	enum_start 7, -1
 	enum SUBSTATUS_IN_LOVE
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -219,7 +219,7 @@
 	const SPRITEMOVEDATA_SUDOWOODO
 	const SPRITEMOVEDATA_SMASHABLE_ROCK
 	const SPRITEMOVEDATA_STRENGTH_BOULDER
-	const SPRITEMOVEDATA_1A
+	const SPRITEMOVEDATA_FOLLOWNOTEXACT
 	const SPRITEMOVEDATA_1B
 	const SPRITEMOVEDATA_1C
 	const SPRITEMOVEDATA_1D
@@ -254,7 +254,7 @@
 	const SPRITEMOVEFN_FOLLOW
 	const SPRITEMOVEFN_SCRIPTED
 	const SPRITEMOVEFN_STRENGTH
-	const SPRITEMOVEFN_12
+	const SPRITEMOVEFN_FOLLOWNOTEXACT
 	const SPRITEMOVEFN_13
 	const SPRITEMOVEFN_14
 	const SPRITEMOVEFN_BIG_SNORLAX
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -29,7 +29,7 @@
 	db SPRITEMOVEFN_STANDING, DOWN,  $01, $0c, $00, $00 ; 17
 	db SPRITEMOVEFN_STANDING, DOWN,  $01, $2e, $10, $00 ; 18
 	db SPRITEMOVEFN_STRENGTH, DOWN,  $01, $2e, $00, $40 ; 19
-	db SPRITEMOVEFN_12, DOWN,  $01, $02, $00, $00 ; 1a
+	db SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN,  $01, $02, $00, $00 ; 1a
 	db SPRITEMOVEFN_13, DOWN,  $00, $8e, $01, $00 ; 1b
 	db SPRITEMOVEFN_14, DOWN,  $08, $8e, $02, $00 ; 1c
 	db SPRITEMOVEFN_17, DOWN,  $00, $82, $00, $00 ; 1d
@@ -963,7 +963,7 @@
 	dw .Follow ; 0f
 	dw .Script ; 10
 	dw .Strength ; 11
-	dw .Movement12 ; 12
+	dw .FollowNotExact ; 12
 	dw .Movement13 ; 13
 	dw .Movement14 ; 14
 	dw .MovementBigStanding ; 15
@@ -1145,7 +1145,7 @@
 	ret
 ; 48ff
 
-.Movement12: ; 48ff
+.FollowNotExact: ; 48ff
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld d, [hl]
--- a/engine/phone_scripts.asm
+++ b/engine/phone_scripts.asm
@@ -3154,38 +3154,3 @@
 String_be65b: db "Sister@"
 String_be662: db "Brother@"
 
-
-TalkToTrainerScript:: ; 0xbe66a
-	faceplayer
-	trainerstatus $2
-	iftrue AlreadyBeatenTrainerScript
-	loadtrainerdata
-	playrammusic
-	jump StartBattleWithMapTrainerScript
-; 0xbe675
-
-SeenByTrainerScript:: ; 0xbe675
-	loadtrainerdata
-	playrammusic
-	showemote EMOTE_SHOCK, LAST_TALKED, 30
-	callasm Function831e
-	applymovement2 MovementBuffer
-	writepersonxy LAST_TALKED
-	faceperson PLAYER, LAST_TALKED
-	jump StartBattleWithMapTrainerScript
-; 0xbe68a
-
-StartBattleWithMapTrainerScript: ; 0xbe68a
-	loadfont
-	trainertext $0
-	closetext
-	loadmovesprites
-	loadtrainerdata
-	startbattle
-	returnafterbattle
-	trainerstatus 1
-	loadvar wd04d, -1
-
-AlreadyBeatenTrainerScript:
-	scripttalkafter
-; 0xbe699
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -1360,7 +1360,7 @@
 	ld a, [hLastTalked]
 .ok
 	ld b, a
-	callba Function80a1
+	callba WritePersonXY
 	ret
 ; 0x9736f
 
@@ -1376,7 +1376,7 @@
 	call GetScriptByte
 	call GetScriptPerson
 	ld c, a
-	callba Function839e
+	callba FollowNotExact
 	ret
 ; 0x97384
 
@@ -1546,7 +1546,7 @@
 	call GetScriptByte
 	ld [BattleType], a
 	call BufferScreen
-	callba Function4e554
+	callba CatchTutorial
 	jp Script_reloadmap
 ; 0x97459
 
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -724,7 +724,7 @@
 	jp TossItem
 
 .used_park_ball
-	ld hl, wdc79
+	ld hl, wParkBallsRemaining
 	dec [hl]
 	ret
 ; ec0a
--- a/main.asm
+++ b/main.asm
@@ -3267,10 +3267,11 @@
 ; 80a1
 
 
-Function80a1:: ; 80a1
+WritePersonXY:: ; 80a1
 	ld a, b
 	call CheckObjectVisibility
 	ret c
+
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld d, [hl]
@@ -3685,7 +3686,7 @@
 	ret
 ; 831e
 
-Function831e: ; 831e
+TrainerWalkToPlayer: ; 831e
 	ld a, [hLastTalked]
 	call Function1b1e
 	ld a, $3e
@@ -3770,7 +3771,7 @@
 ; 839e
 
 
-Function839e:: ; 839e
+FollowNotExact:: ; 839e
 	push bc
 	ld a, c
 	call CheckObjectVisibility
@@ -3778,9 +3779,12 @@
 	ld e, c
 	pop bc
 	ret c
+
 	ld a, b
 	call CheckObjectVisibility
 	ret c
+
+; Person 2 is now in bc, person 1 is now in de
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -3788,33 +3792,34 @@
 	add hl, bc
 	ld c, [hl]
 	ld b, a
+
 	ld hl, OBJECT_MAP_X
 	add hl, de
 	ld a, [hl]
 	cp b
-	jr z, .asm_83c7
-	jr c, .asm_83c4
+	jr z, .same_x
+	jr c, .to_the_left
 	inc b
-	jr .asm_83d5
+	jr .continue
 
-.asm_83c4
+.to_the_left
 	dec b
-	jr .asm_83d5
+	jr .continue
 
-.asm_83c7
+.same_x
 	ld hl, OBJECT_MAP_Y
 	add hl, de
 	ld a, [hl]
 	cp c
-	jr z, .asm_83d5
-	jr c, .asm_83d4
+	jr z, .continue
+	jr c, .below
 	inc c
-	jr .asm_83d5
+	jr .continue
 
-.asm_83d4
+.below
 	dec c
 
-.asm_83d5
+.continue
 	ld hl, OBJECT_MAP_X
 	add hl, de
 	ld [hl], b
@@ -3847,7 +3852,7 @@
 	ld [hl], a
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, de
-	ld [hl], SPRITEMOVEDATA_1A
+	ld [hl], SPRITEMOVEDATA_FOLLOWNOTEXACT
 	ld hl, OBJECT_09
 	add hl, de
 	ld [hl], $0
@@ -9760,7 +9765,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	ld hl, UnknownText_0xe43a
 	call PrintText
 	pop af
@@ -10477,7 +10482,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	ld a, [hMapAnims]
 	push af
 	xor a
@@ -13919,7 +13924,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call LoadFontsBattleExtra
 	call Function12f73
 	pop bc
@@ -13983,7 +13988,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call MoveScreenLoop
 	pop af
 	ld [Options], a
@@ -14781,10 +14786,10 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	hlcoord 0, 0
-	ld b, $4
-	ld c, $8
+	ld b, 4
+	ld c, 8
 	call TextBox
 	hlcoord 1, 2
 	ld de, Elevator_CurrentFloorText
@@ -14916,7 +14921,7 @@
 	xor a
 	ld [wContestMon], a
 	ld a, 20
-	ld [wdc79], a
+	ld [wParkBallsRemaining], a
 	callba StartBugContestTimer
 	ret
 ; 135eb
@@ -14926,7 +14931,7 @@
 	battlecheck
 	startbattle
 	returnafterbattle
-	copybytetovar wdc79
+	copybytetovar wParkBallsRemaining
 	iffalse BugCatchingContestOutOfBallsScript
 	end
 ; 0x135f8
@@ -16605,7 +16610,7 @@
 PC_DisplayTextWaitMenu: ; 157bb
 	ld a, [Options]
 	push af
-	set 4, a
+	set NO_TEXT_SCROLL, a
 	ld [Options], a
 	call MenuTextBox
 	pop af
@@ -18989,7 +18994,7 @@
 	ld [hInMenu], a
 	ld a, [Options]
 	push af
-	set 4, a
+	set NO_TEXT_SCROLL, a
 	ld [Options], a
 	call WhiteBGMap
 	call ClearTileMap
@@ -20310,7 +20315,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call LoadPartyMenuDataHeader
 	call ClearTileMap
 	ld hl, UnknownText_0x2004c
@@ -20978,7 +20983,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call Function247f0
 	call Function2488b
 	call Function248b8
@@ -21868,26 +21873,27 @@
 ; 24b8f
 
 Function24b8f: ; 24b8f
+; unreferenced, related to safari?
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	hlcoord 0, 0
-	ld b, $3
-	ld c, $7
+	ld b, 3
+	ld c, 7
 	call TextBox
 	hlcoord 1, 1
-	ld de, wdc7a
+	ld de, wSafariTimeRemaining
 	lb bc, 2, 3
 	call PrintNum
 	hlcoord 4, 1
-	ld de, String24bcf
+	ld de, .slash_500
 	call PlaceString
 	hlcoord 1, 3
-	ld de, String24bd4
+	ld de, .booru_ko
 	call PlaceString
 	hlcoord 5, 3
-	ld de, wdc79
+	ld de, wSafariBallsRemaining
 	lb bc, 1, 2
 	call PrintNum
 	pop af
@@ -21895,9 +21901,9 @@
 	ret
 ; 24bcf
 
-String24bcf: ; 24bcf
+.slash_500: ; 24bcf
 	db "/500@"
-String24bd4: ; 24bd4
+.booru_ko: ; 24bd4
 	db "ボール   こ@"
 ; 24bdc
 
@@ -21919,7 +21925,7 @@
 	ld de, String24c52
 	call PlaceString
 	hlcoord 8, 5
-	ld de, wdc79
+	ld de, wSafariBallsRemaining
 	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
 	call PrintNum
 	hlcoord 1, 1
@@ -22459,7 +22465,7 @@
 
 Function24f7c: ; 24f7c
 	hlcoord 17, 13
-	ld de, wdc79
+	ld de, wSafariBallsRemaining
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
 	ret
@@ -22484,7 +22490,7 @@
 
 Strings24f9a: ; 24f9a
 	db "FIGHT@"
-	db $4a, "@"
+	db "<PKMN>", "@"
 	db "PARKBALL×  @"
 	db "RUN@"
 ; 24fb2
@@ -22491,7 +22497,7 @@
 
 Function24fb2: ; 24fb2
 	hlcoord 13, 16
-	ld de, wdc79
+	ld de, wParkBallsRemaining
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
 	ret
@@ -27020,7 +27026,7 @@
 	ld a, [wd003]
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	ld a, [hl]
 	ld [wPlayerCharging], a
 	ld hl, OTPartyMon1DVs
@@ -27027,9 +27033,9 @@
 	ld a, [wd003]
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc72f], a
+	ld [wEnemyTrappingMove], a
 	ld a, [hl]
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	ld a, [wd003]
 	ld hl, OTPartyMon1Species
 	call GetPartyLocation
@@ -27400,7 +27406,7 @@
 	ld de, VTiles0
 	call Function29491
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles0 tile $31
 	call Function29491
 	ld a, [wc6d0]
@@ -28011,9 +28017,9 @@
 	call Function29549
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -28153,7 +28159,7 @@
 	ld a, [wEnemyCharging]
 	ld de, wc724
 	call Function295f6
-	ld de, wc731
+	ld de, wEnemyWrapCount
 	call Function29611
 	call Function295d8
 	ret
@@ -41188,7 +41194,7 @@
 
 Function4d7fd: ; 4d7fd
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	push de
 	push af
@@ -41209,9 +41215,9 @@
 	callba Function29549
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -43043,11 +43049,11 @@
 ; 4e554
 
 
-Function4e554:: ; 4e554
+CatchTutorial:: ; 4e554
 	ld a, [BattleType]
 	dec a
 	ld c, a
-	ld hl, Jumptable_4e564
+	ld hl, .jumptable
 	ld b, 0
 rept 2
 	add hl, bc
@@ -43058,23 +43064,24 @@
 	jp [hl]
 ; 4e564
 
-Jumptable_4e564: ; 4e564 (13:6564)
-	dw Function4e56a
-	dw Function4e56a
-	dw Function4e56a
+.jumptable: ; 4e564 (13:6564)
+	dw .DudeTutorial
+	dw .DudeTutorial
+	dw .DudeTutorial
 
-Function4e56a: ; 4e56a (13:656a)
+.DudeTutorial: ; 4e56a (13:656a)
+; Back up your name to your Mom's name.
 	ld hl, PlayerName
 	ld de, MomsName
 	ld bc, NAME_LENGTH
 	call CopyBytes
-
-	ld hl, DudeString
+; Copy Dude's name to your name
+	ld hl, .Dude
 	ld de, PlayerName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 
-	call Function4e5b7
+	call .LoadDudeData
 
 	xor a
 	ld [hJoyDown], a
@@ -43084,8 +43091,8 @@
 	and $f8
 	add $3
 	ld [Options], a
-	ld hl, AutoInput_4e5df
-	ld a, BANK(AutoInput_4e5df)
+	ld hl, .AutoInput
+	ld a, BANK(.AutoInput)
 	call StartAutoInput
 	callab StartBattle
 	call StopAutoInput
@@ -43098,13 +43105,13 @@
 	call CopyBytes
 	ret
 
-Function4e5b7: ; 4e5b7 (13:65b7)
+.LoadDudeData: ; 4e5b7 (13:65b7)
 	ld hl, OTPartyMon1
-	ld [hl], $1
+	ld [hl], BULBASAUR
 	inc hl
-	ld [hl], $12
+	ld [hl], POTION
 	inc hl
-	ld [hl], $1
+	ld [hl], POUND
 	inc hl
 	ld [hl], $ff
 	ld hl, OTPartyMon1Exp + 2
@@ -43122,474 +43129,17 @@
 	ret
 ; 4e5da (13:65da)
 
-DudeString: ; 4e5da
+.Dude: ; 4e5da
 	db "DUDE@"
 ; 4e5df
 
-AutoInput_4e5df: ; 4e5df
+.AutoInput: ; 4e5df
 	db NO_INPUT, $ff ; end
 ; 4e5e1
 
+INCLUDE "engine/evolution_animation.asm"
 
-EvolutionAnimation: ; 4e5e1
-	push hl
-	push de
-	push bc
-	ld a, [CurSpecies]
-	push af
-	ld a, [rOBP0]
-	push af
-	ld a, [BaseDexNo]
-	push af
-
-	call _EvolutionAnimation
-
-	pop af
-	ld [BaseDexNo], a
-	pop af
-	ld [rOBP0], a
-	pop af
-	ld [CurSpecies], a
-	pop bc
-	pop de
-	pop hl
-
-	ld a, [wd1ed]
-	and a
-	ret z
-
-	scf
-	ret
-; 4e607
-
-_EvolutionAnimation: ; 4e607
-	ld a, $e4
-	ld [rOBP0], a
-
-	ld de, MUSIC_NONE
-	call PlayMusic
-
-	callba Function8cf53
-
-	ld de, EvolutionGFX
-	ld hl, VTiles0
-	lb bc, BANK(EvolutionGFX), 8
-	call Request2bpp
-
-	xor a
-	ld [Danger], a
-	call WaitBGMap
-	xor a
-	ld [hBGMapMode], a
-	ld a, [Buffer1]
-	ld [PlayerHPPal], a
-
-	ld c, $0
-	call Function4e703
-	ld a, [Buffer1]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	call Function4e708
-
-	ld de, VTiles2
-	ld hl, VTiles2 tile $31
-	ld bc, $31
-	call Request2bpp
-
-	ld a, $31
-	ld [wd1ec], a
-	call Function4e755
-	ld a, [Buffer2]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	call Function4e711
-	ld a, [Buffer1]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-
-	ld a, $1
-	ld [hBGMapMode], a
-	call Function4e794
-	jr c, .asm_4e67c
-
-	ld a, [Buffer1]
-	call PlayCry
-
-.asm_4e67c
-	ld de, MUSIC_EVOLUTION
-	call PlayMusic
-
-	ld c, 80
-	call DelayFrames
-
-	ld c, $1
-	call Function4e703
-	call Function4e726
-	jr c, .asm_4e6df
-
-	ld a, $cf
-	ld [wd1ec], a
-
-	call Function4e755
-	xor a
-	ld [wd1ed], a
-
-	ld a, [Buffer2]
-	ld [PlayerHPPal], a
-
-	ld c, $0
-	call Function4e703
-	call Function4e7a6
-	callba Function8cf53
-	call Function4e794
-	jr c, .asm_4e6de
-
-	ld a, [wc2c6]
-	push af
-	ld a, $1
-	ld [wc2c6], a
-	ld a, [CurPartySpecies]
-	push af
-
-	ld a, [PlayerHPPal]
-	ld [CurPartySpecies], a
-	hlcoord 7, 2
-	ld d, $0
-	ld e, ANIM_MON_EVOLVE
-	predef AnimateFrontpic
-
-	pop af
-	ld [CurPartySpecies], a
-	pop af
-	ld [wc2c6], a
-	ret
-
-.asm_4e6de
-	ret
-
-.asm_4e6df
-	ld a, $1
-	ld [wd1ed], a
-
-	ld a, [Buffer1]
-	ld [PlayerHPPal], a
-
-	ld c, $0
-	call Function4e703
-	call Function4e7a6
-	callba Function8cf53
-	call Function4e794
-	ret c
-
-	ld a, [PlayerHPPal]
-	call PlayCry
-	ret
-; 4e703
-
-Function4e703: ; 4e703
-	ld b, $b
-	jp GetSGBLayout
-; 4e708
-
-Function4e708: ; 4e708
-	call GetBaseData
-	hlcoord 7, 2
-	jp Function3786
-; 4e711
-
-Function4e711: ; 4e711
-	call GetBaseData
-	ld a, $1
-	ld [wc2c6], a
-	ld de, VTiles2
-	predef Function5108b
-	xor a
-	ld [wc2c6], a
-	ret
-; 4e726
-
-Function4e726: ; 4e726
-	call ClearJoypad
-	lb bc, 1, 14
-.asm_4e72c
-	push bc
-	call Function4e779
-	pop bc
-	jr c, .asm_4e73f
-	push bc
-	call Function4e741
-	pop bc
-	inc b
-rept 2
-	dec c
-endr
-	jr nz, .asm_4e72c
-	and a
-	ret
-
-.asm_4e73f
-	scf
-	ret
-; 4e741
-
-Function4e741: ; 4e741
-.asm_4e741
-	ld a, $cf
-	ld [wd1ec], a
-	call Function4e755
-	ld a, $31
-	ld [wd1ec], a
-	call Function4e755
-	dec b
-	jr nz, .asm_4e741
-	ret
-; 4e755
-
-Function4e755: ; 4e755
-	push bc
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 7, 2
-	lb bc, 7, 7
-	ld de, $d
-.asm_4e762
-	push bc
-.asm_4e763
-	ld a, [wd1ec]
-	add [hl]
-	ld [hli], a
-	dec c
-	jr nz, .asm_4e763
-	pop bc
-	add hl, de
-	dec b
-	jr nz, .asm_4e762
-	ld a, $1
-	ld [hBGMapMode], a
-	call WaitBGMap
-	pop bc
-	ret
-; 4e779
-
-Function4e779: ; 4e779
-.asm_4e779
-	call DelayFrame
-	push bc
-	call JoyTextDelay
-	ld a, [hJoyDown]
-	pop bc
-	and B_BUTTON
-	jr nz, .asm_4e78c
-.asm_4e787
-	dec c
-	jr nz, .asm_4e779
-	and a
-	ret
-
-.asm_4e78c
-	ld a, [wd1e9]
-	and a
-	jr nz, .asm_4e787
-	scf
-	ret
-; 4e794
-
-Function4e794: ; 4e794
-	ld a, [CurPartyMon]
-	ld hl, PartyMon1Species
-	call GetPartyLocation
-	ld b, h
-	ld c, l
-	callba CheckFaintedFrzSlp
-	ret
-; 4e7a6
-
-Function4e7a6: ; 4e7a6
-	ld a, [wd1ed]
-	and a
-	ret nz
-	ld de, SFX_EVOLVED
-	call PlaySFX
-	ld hl, wJumptableIndex
-	ld a, [hl]
-	push af
-	ld [hl], $0
-.asm_4e7b8
-	call Function4e7cf
-	jr nc, .asm_4e7c2
-	call Function4e80c
-	jr .asm_4e7b8
-
-.asm_4e7c2
-	ld c, $20
-.asm_4e7c4
-	call Function4e80c
-	dec c
-	jr nz, .asm_4e7c4
-	pop af
-	ld [wJumptableIndex], a
-	ret
-; 4e7cf
-
-Function4e7cf: ; 4e7cf
-	ld hl, wJumptableIndex
-	ld a, [hl]
-	cp $20
-	ret nc
-	ld d, a
-	inc [hl]
-	and $1
-	jr nz, .asm_4e7e6
-	ld e, $0
-	call Function4e7e8
-	ld e, $10
-	call Function4e7e8
-
-.asm_4e7e6
-	scf
-	ret
-; 4e7e8
-
-Function4e7e8: ; 4e7e8
-	push de
-	ld de, $4858
-	ld a, $13
-	call Function3b2a
-	ld hl, $b
-	add hl, bc
-	ld a, [wJumptableIndex]
-	and $e
-	sla a
-	pop de
-	add e
-	ld [hl], a
-	ld hl, $3
-	add hl, bc
-	ld [hl], $0
-	ld hl, $c
-	add hl, bc
-	ld [hl], $10
-	ret
-; 4e80c
-
-Function4e80c: ; 4e80c
-	push bc
-	callab Function8cf69
-	ld a, [$ff9b]
-	and $e
-	srl a
-rept 2
-	inc a
-endr
-	and $7
-	ld b, a
-	ld hl, Sprites + 3
-	ld c, $28
-.asm_4e823
-	ld a, [hl]
-	or b
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	dec c
-	jr nz, .asm_4e823
-	pop bc
-	call DelayFrame
-	ret
-; 4e831
-
-
-EvolutionGFX:
-INCBIN "gfx/evo/bubble_large.2bpp"
-INCBIN "gfx/evo/bubble.2bpp"
-
-Function4e881: ; 4e881
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	call DisableLCD
-	call LoadStandardFont
-	call LoadFontsBattleExtra
-	ld hl, VBGMap0
-	ld bc, VBGMap1 - VBGMap0
-	ld a, " "
-	call ByteFill
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	xor a
-	call ByteFill
-	xor a
-	ld [hSCY], a
-	ld [hSCX], a
-	call EnableLCD
-	ld hl, UnknownText_0x4e8bd
-	call PrintText
-	call Function3200
-	call SetPalettes
-	ret
-; 4e8bd
-
-UnknownText_0x4e8bd: ; 0x4e8bd
-	; SAVING RECORD… DON'T TURN OFF!
-	text_jump UnknownText_0x1bd39e
-	db "@"
-; 0x4e8c2
-
-
-Function4e8c2: ; 4e8c2
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	call DisableLCD
-	call LoadStandardFont
-	call LoadFontsBattleExtra
-	ld hl, VBGMap0
-	ld bc, VBGMap1 - VBGMap0
-	ld a, " "
-	call ByteFill
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	xor a
-	call ByteFill
-	ld hl, wd000
-	ld c, $40
-.asm_4e8ee
-	ld a, -1
-	ld [hli], a
-	ld a, " "
-	ld [hli], a
-	dec c
-	jr nz, .asm_4e8ee
-	xor a
-	ld [hSCY], a
-	ld [hSCX], a
-	call EnableLCD
-	call Function3200
-	call SetPalettes
-	ret
-; 4e906
-
-Function4e906: ; 4e906
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	ld hl, w6_d000
-	ld bc, w6_d400 - w6_d000
-	ld a, " "
-	call ByteFill
-	ld hl, VBGMap0
-	ld de, w6_d000
-	ld b, $0
-	ld c, $40
-	call Request2bpp
-	pop af
-	ld [rSVBK], a
-	ret
-; 4e929
-
-Function4e929: ; 4e929
+Function4e929: ; mobile function
 	ld h, b
 	ld l, c
 	call Function4e930
@@ -43601,35 +43151,35 @@
 	ld a, [hli]
 	xor [hl]
 	ld c, a
-	jr z, .asm_4e941
+	jr z, .skip_male_trainers
 	srl c
 	srl c
-.asm_4e939
+.male_trainer_loop
 	srl c
 	ld a, c
 	cp MaleTrainersEnd - MaleTrainers - 1
-	jr nc, .asm_4e939
+	jr nc, .male_trainer_loop
 	inc c
 
-.asm_4e941
+.skip_male_trainers
 	ld a, [de]
 	cp $1
 	ld hl, MaleTrainers
-	jr nz, .asm_4e958
+	jr nz, .finished
 
 	ld hl, FemaleTrainers
 	ld a, c
 	and a
-	jr z, .asm_4e958
+	jr z, .finished
 
-.asm_4e950
+.female_trainer_loop
 	srl c
 	ld a, c
 	cp FemaleTrainersEnd - FemaleTrainers - 1
-	jr nc, .asm_4e950
+	jr nc, .female_trainer_loop
 	inc c
 
-.asm_4e958
+.finished
 	ld b, $0
 	add hl, bc
 	ld a, [hl]
@@ -64133,7 +63683,43 @@
 
 INCLUDE "engine/phone_scripts.asm"
 
+TalkToTrainerScript:: ; 0xbe66a
+	faceplayer
+	trainerstatus CHECK_FLAG
+	iftrue AlreadyBeatenTrainerScript
+	loadtrainerdata
+	playrammusic
+	jump StartBattleWithMapTrainerScript
+; 0xbe675
 
+SeenByTrainerScript:: ; 0xbe675
+	loadtrainerdata
+	playrammusic
+	showemote EMOTE_SHOCK, LAST_TALKED, 30
+	callasm TrainerWalkToPlayer
+	applymovement2 MovementBuffer
+	writepersonxy LAST_TALKED
+	faceperson PLAYER, LAST_TALKED
+	jump StartBattleWithMapTrainerScript
+; 0xbe68a
+
+StartBattleWithMapTrainerScript: ; 0xbe68a
+	loadfont
+	trainertext $0
+	closetext
+	loadmovesprites
+	loadtrainerdata
+	startbattle
+	returnafterbattle
+	trainerstatus SET_FLAG
+	loadvar wd04d, -1
+
+AlreadyBeatenTrainerScript:
+	scripttalkafter
+; 0xbe699
+
+
+
 SECTION "bank30", ROMX, BANK[$30]
 
 INCLUDE "gfx/overworld/sprites_1.asm"
@@ -74748,13 +74334,13 @@
 
 	ld e, TRADE_DVS
 	call GetTradeAttribute
-	ld de, wc72f
+	ld de, wEnemyTrappingMove
 	call Functionfce0f
 
 	ld hl, PartyMon1DVs
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdde
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	call Functionfce0f
 
 	ld e, TRADE_OT_ID
@@ -74765,7 +74351,7 @@
 	ld hl, PartyMon1ID
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdde
-	ld hl, wc731
+	ld hl, wEnemyWrapCount
 	call Functionfce0f
 
 	ld e, TRADE_ITEM
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -6382,7 +6382,7 @@
 	ld hl, OTPartyMon1ID
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	ld a, [hl]
 	ld [wPlayerCharging], a
 	ld a, [wcd4d]
@@ -6390,9 +6390,9 @@
 	ld hl, OTPartyMon1DVs
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc72f], a
+	ld [wEnemyTrappingMove], a
 	ld a, [hl]
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	ld a, [wcd4d]
 	dec a
 	ld hl, OTPartyMon1Species
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -170,7 +170,7 @@
 	ld de, VTiles0 tile $30
 	call Function1081e9
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2 tile $31
 	call Function1081e9
 	ld a, [$c6d0]
@@ -515,7 +515,7 @@
 	call Function1081ca
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
@@ -548,9 +548,9 @@
 	ld [hWY], a
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -650,7 +650,7 @@
 	call Function1081ca
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
@@ -692,9 +692,9 @@
 	ld [hWY], a
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -701,7 +701,7 @@
 	ld a, $e4
 	call DmgToCgbBGPals
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	call Function10898a
 	ld a, [wc702]
 	call Function108229
@@ -719,7 +719,7 @@
 	call Function1081ca
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
@@ -761,9 +761,9 @@
 	ld [hWY], a
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -770,7 +770,7 @@
 	ld a, $e4
 	call DmgToCgbBGPals
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	call Function10898a
 	ld a, [wc702]
 	call Function108229
@@ -1262,7 +1262,7 @@
 	ld a, [wEnemyCharging]
 	ld de, wc724
 	call Function108aa3
-	ld de, wc731
+	ld de, wEnemyWrapCount
 	call Function108abe
 	call Function108a87
 	ret
@@ -1737,7 +1737,7 @@
 	dec c
 	jr nz, .asm_108ccc
 
-	ld de, wc731
+	ld de, wEnemyWrapCount
 	ld c, $2
 .asm_108cd7
 	ld a, [hli]
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -7656,14 +7656,14 @@
 	ld a, $50
 	ld [de], a
 	ld a, [$c608 + 11]
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	ld a, [$c608 + 12]
 	ld [wPlayerCharging], a
 	ld hl, $c608 + 26
 	ld a, [hli]
-	ld [wc72f], a
+	ld [wEnemyTrappingMove], a
 	ld a, [hl]
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	ld bc, $c608 + 5
 	callba GetCaughtGender
 	ld a, c
--- a/misc/mobile_5c.asm
+++ b/misc/mobile_5c.asm
@@ -55,12 +55,12 @@
 	ld [de], a
 	ld hl, $a841
 	ld a, [hli]
-	ld [wc72f], a
+	ld [wEnemyTrappingMove], a
 	ld a, [hl]
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	ld hl, $a832
 	ld a, [hli]
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	ld a, [hl]
 	ld [wPlayerCharging], a
 	ld bc, $a82c
@@ -177,7 +177,7 @@
 	ld e, l
 	ld d, h
 	ld hl, PlayerName
-	ld bc, $0005
+	ld bc, $0005 ; Japanese name length
 	call CopyBytes
 	ld bc, PlayerID
 	ld de, PlayerGender
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -283,14 +283,14 @@
 	ld a, $50
 	ld [de], a
 	ld a, [$c608 + 11]
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	ld a, [$c608 + 12]
 	ld [wPlayerCharging], a
 	ld hl, $c608 + 26
 	ld a, [hli]
-	ld [wc72f], a
+	ld [wEnemyTrappingMove], a
 	ld a, [hl]
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	ld bc, $c608 + 5
 	callba GetCaughtGender
 	ld a, c
--- a/wram.asm
+++ b/wram.asm
@@ -841,8 +841,8 @@
 LastEnemyMove:: ; c71c
 	ds 1
 
-wc71d:: ds 1
-wc71e:: ds 1
+wPlayerFutureSightCount:: ds 1
+wEnemyFutureSightCount:: ds 1
 wc71f:: ds 1
 wc720:: ds 4 ; copy from/to EnemyMonBaseStats, length=7
 wc724:: ds 3
@@ -851,10 +851,10 @@
 wPlayerRageCounter:: ds 1
 wEnemyRageCounter:: ds 1
 wc72d:: ds 1 ; if 0 then PrintButItFailed
-wc72e:: ds 1
-wc72f:: ds 1
-wc730:: ds 1
-wc731:: ds 1
+wPlayerTrappingMove:: ds 1
+wEnemyTrappingMove:: ds 1
+wPlayerWrapCount:: ds 1
+wEnemyWrapCount:: ds 1
 wPlayerCharging:: ds 1
 wEnemyCharging:: ds 1
 wc734::
@@ -1636,8 +1636,8 @@
 wd149:: ds 1
 wd14a:: ds 1
 wd14b:: ds 1
-wd14c:: ds 1
-wd14d:: ds 1
+wd14c:: ds 1 ; used in FollowNotExact
+wd14d:: ds 1 ; used in FollowNotExact
 wd14e:: ds 1
 wd14f:: ds 1
 wd150:: ds 1
@@ -2512,8 +2512,10 @@
 
 	ds 2
 wdc77:: ds 2
-wdc79:: ds 1
-wdc7a:: ds 2
+wdc79::
+wParkBallsRemaining::
+wSafariBallsRemaining:: ds 1
+wSafariTimeRemaining:: ds 2
 wPhoneList:: ds CONTACT_LIST_SIZE
 	ds 23
 wLuckyNumberShowFlag:: ds 2 ; dc9d