shithub: pokecrystal

Download patch

ref: 4fa6c6daa46935c7580a60a22bd9216414246dc0
parent: 1e2ff967aa11ed0bcdd1dd069bde67724d3851c2
author: PikalaxALT <PikalaxALT@gmail.com>
date: Fri Oct 16 09:35:43 EDT 2015

Split up bank 2; other relabelings

--- a/battle/core.asm
+++ b/battle/core.asm
@@ -8870,7 +8870,7 @@
 	ld a, [de]
 	and a
 	jr z, .asm_3f8c9
-	ld a, [wd4b4]
+	ld a, [wSavedAtLeastOnce]
 	and a
 	jr z, .asm_3f8c9
 	push hl
@@ -8967,7 +8967,7 @@
 	ret
 
 .asm_3f92b
-	ld a, [wd4b4]
+	ld a, [wSavedAtLeastOnce]
 	and a
 	ret nz
 	ld de, .Scores
@@ -8981,9 +8981,9 @@
 ; 3f947
 
 .Format ; 3f947
-	db "  ---  ", $22, "         -    -    -@"
+	db "  ---  <LNBRK>         -    -    -@"
 .Record ; 3f964
-	db $52, "'s RECORD@"
+	db "<PLAYER>'s RECORD@"
 .Result ; 3f96e
 	db "RESULT WIN LOSE DRAW@"
 .Total ; 3f983
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -46,8 +46,6 @@
 
 
 ; joypad
-BUTTONS    EQU %00010000
-D_PAD      EQU %00100000
 
 NO_INPUT   EQU %00000000
 A_BUTTON   EQU %00000001
@@ -59,6 +57,11 @@
 D_UP       EQU %01000000
 D_DOWN     EQU %10000000
 
+BUTTONS    EQU A_BUTTON | B_BUTTON | SELECT | START
+D_PAD      EQU D_RIGHT | D_LEFT | D_UP | D_DOWN
+
+R_DPAD     EQU %00100000
+R_BUTTONS  EQU %00010000
 
 ; screen
 HP_BAR_LENGTH EQU 6
--- a/contents.asm
+++ b/contents.asm
@@ -34,7 +34,6 @@
 ; engine/events.o
 ; engine/scripting.o
 ; engine/events_2.o
-
 EVENTS                    EQU $25
 
 
--- a/data/wild/fish.asm
+++ b/data/wild/fish.asm
@@ -134,7 +134,7 @@
 	ret
 
 .group11
-	ld a, [wdfce]
+	ld a, [wFishingSwarmFlag]
 	cp 1
 	jr nz, .end
 	ld d, 6
@@ -141,7 +141,7 @@
 	jr .end
 
 .group12
-	ld a, [wdfce]
+	ld a, [wFishingSwarmFlag]
 	cp 2
 	jr nz, .end
 	ld d, 7
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -193,7 +193,7 @@
 	ld a, $5
 	ld [hVBlank], a
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	xor a
 	ld [hBGMapMode], a
 	ld [CreditsPos], a
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -3137,7 +3137,7 @@
 Function5815: ; 5815
 	call Function18de
 	ret c
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld [wd4cd], a
 	ret
 ; 581f
@@ -3166,7 +3166,7 @@
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld [wd4ce], a
 	ret
 ; 5847
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -1157,8 +1157,8 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, OTPartyMons
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10807
 
@@ -1181,8 +1181,8 @@
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, OTPartyMon1Exp + 2
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10826
 
@@ -1214,8 +1214,8 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, OTPartyMon1CaughtGender
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 1085a
 
@@ -1525,8 +1525,8 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumItems
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10a67
 
@@ -1543,8 +1543,8 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumItems
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10a7f
 
@@ -1561,8 +1561,8 @@
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, NumKeyItems
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10a97
 
@@ -1579,8 +1579,8 @@
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, NumKeyItems
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10aaf
 
@@ -1597,8 +1597,8 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumBalls
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10ac7
 
@@ -1615,8 +1615,8 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumBalls
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 ; 10adf
 
--- a/engine/phone_scripts.asm
+++ b/engine/phone_scripts.asm
@@ -833,7 +833,7 @@
 	pokenamemem QWILFISH, $1
 	displaylocation ROUTE_32, $2
 	writebyte $1
-	special Functionc3fc
+	special Special_ActivateFishingSwarm
 	farjump UnknownScript_0xa05d6
 
 UnknownScript_0xbd55c:
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -16,10 +16,10 @@
 	push af
 	xor a
 	ld [VramState], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 
 	xor a
 	ld [$ffde], a
@@ -44,7 +44,7 @@
 	ld [wd959], a
 
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [VramState], a
 	pop af
@@ -844,7 +844,7 @@
 	ret
 
 Function40610: ; 40610 (10:4610)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_RIGHT
 	jr nz, .right
@@ -913,7 +913,7 @@
 	ld [wc7e2], a
 	ld a, [wc7d0]
 	ld [wc7e3], a
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .up
@@ -964,7 +964,7 @@
 	ld d, a
 	ld a, [wc7d2]
 	ld e, a
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, Function406ea
@@ -1799,7 +1799,7 @@
 	ld a, [wc7d8]
 	cp $2
 	jr nc, .asm_40f63
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and $20
 	jr nz, .asm_40f65
@@ -2274,7 +2274,7 @@
 	jr nz, .asm_413c1
 	call Function413f5
 	jr c, .asm_413bf
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_LEFT | D_UP
 	and b
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -83,8 +83,8 @@
 	add_predef Function91d11
 	add_predef CheckContestMon
 	add_predef Function8c20f
-	add_predef Function8c000
-	add_predef Function8c000_2
+	add_predef Predef35
+	add_predef Predef36
 	add_predef PlayBattleAnim
 	add_predef Predef38 ; $38
 	add_predef Predef39
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -380,7 +380,7 @@
 	ld [sStackTop + 1], a
 	call CloseSRAM
 	ld a, $1
-	ld [wd4b4], a
+	ld [wSavedAtLeastOnce], a
 	ret
 ; 14ce2
 
@@ -486,7 +486,7 @@
 
 
 Function14da0: ; 14da0
-	ld a, [wd4b4]
+	ld a, [wSavedAtLeastOnce]
 	and a
 	ret nz
 	call ErasePreviousSave
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -39,7 +39,7 @@
 	add_special Special_GetMysteryGiftItem
 	add_special Special_UnlockMysteryGift
 
-; Bug Catching Contest
+; Map Events
 	add_special BugContestJudging
 	add_special CheckPartyFullAfterContest
 	add_special CheckFirstMonFainted
@@ -88,25 +88,25 @@
 	add_special Special_FindAtLeastThatHappy
 	add_special Special_FindThatSpecies
 	add_special Special_FindThatSpeciesYourTrainerID
-	add_special Functionc3ef
-	add_special Function17421
-	add_special Function17440
+	add_special Functionc3ef ; unreferenced
+	add_special Special_DayCareMon1
+	add_special Special_DayCareMon2
 	add_special Special_SelectRandomBugContestContestants
-	add_special Functionc3fc
+	add_special Special_ActivateFishingSwarm
 	add_special ToggleMaptileDecorations
 	add_special ToggleDecorationsVisibility
 	add_special SpecialGiveShuckle
 	add_special SpecialReturnShuckle
-	add_special Function73f7
+	add_special Special_BillsGrandfather
 	add_special SpecialCheckPokerus
-	add_special Function24b25
-	add_special Function24b4e
+	add_special Special_DisplayCoinCaseBalance
+	add_special Special_DisplayMoneyAndCoinBalance
 	add_special Function24ae8
 	add_special Special_CheckForLuckyNumberWinners
 	add_special Special_CheckLuckyNumberShowFlag
 	add_special Special_ResetLuckyNumberShowFlag
-	add_special Function4d9d3
-	add_special Function88018
+	add_special Special_PrintTodaysLuckyNumber
+	add_special Special_SelectApricornForKurt
 	add_special SpecialNameRater
 	add_special Functionc2da
 	add_special GetFirstPokemonHappiness
@@ -489,9 +489,9 @@
 	ret
 ; c3fc
 
-Functionc3fc: ; c3fc
+Special_ActivateFishingSwarm: ; c3fc
 	ld a, [ScriptVar]
-	ld [wdfce], a
+	ld [wFishingSwarmFlag], a
 	ret
 ; c403
 
@@ -531,7 +531,7 @@
 ; c434
 
 Special_CheckLuckyNumberShowFlag: ; c434
-	callba Function11542
+	callba CheckLuckyNumberShowFlag
 	jp ScriptReturnCarry
 ; c43d
 
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -1809,7 +1809,7 @@
 	farwritetext CoinVendor_IntroText
 
 CoinVendor_SellCoinsMenuScript: ; 0xbcde4
-	special Function24b4e
+	special Special_DisplayMoneyAndCoinBalance
 	loadmenudata CoinVendor_MenuDataHeader
 	interpretmenu2
 	writebackup
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -62,7 +62,7 @@
 	ret
 ; 11420
 
-Function11420: ; 11420
+CheckDayDependentEventHL: ; 11420
 	inc hl
 	push hl
 	call Function115cf
@@ -98,7 +98,7 @@
 
 Function11452:: ; 11452
 	ld hl, wdc1c
-	call Function11420
+	call CheckDayDependentEventHL
 	ret nc
 	xor a
 	ld hl, DailyFlags
@@ -217,7 +217,7 @@
 	ret
 ; 1150c
 
-Function1150c: ; 1150c
+Function1150c: ; Specific version of CheckDayDependentEventHL when hl = $dc3a
 	ld hl, wdc3b
 	call Function115cf
 	call Function115c8
@@ -262,9 +262,9 @@
 	ret
 ; 11542
 
-Function11542: ; 11542
+CheckLuckyNumberShowFlag: ; 11542
 	ld hl, wLuckyNumberDayBuffer
-	jp Function11420
+	jp CheckDayDependentEventHL
 ; 11548
 
 Function11548: ; 11548
@@ -277,7 +277,7 @@
 	ld [Buffer2], a
 	call CloseSRAM
 	ld hl, Buffer1
-	call Function11420
+	call CheckDayDependentEventHL
 	jr nc, .asm_11572
 	ld hl, Buffer1
 	call Function11413
--- /dev/null
+++ b/event/battle_tower.asm
@@ -1,0 +1,344 @@
+Function8b1e1: ; 8b1e1
+	ld de, Unknown_8b1ed
+	call Function8b25b
+	ret z
+	call Function8b231
+	scf
+	ret
+; 8b1ed
+
+Unknown_8b1ed: ; 8b1ed
+	db 2
+	dw Unknown_8b1f2
+	dw Unknown_8b1f6
+
+Unknown_8b1f2: ; 8b1f2
+	dw Function8b2bb
+	dw Function8b2c1
+; 8b1f6
+
+Unknown_8b1f6: ; 8b1f6
+	dw UnknownText_0x8b1fc
+	dw UnknownText_0x8b23d
+	dw UnknownText_0x8b242
+; 8b1fc
+
+UnknownText_0x8b1fc: ; 0x8b1fc
+	; Excuse me!
+	text_jump UnknownText_0x1c5937
+	db "@"
+; 0x8b201
+
+CheckForBattleTowerRules: ; 8b201
+	ld hl, StringBuffer2
+	ld [hl], "3"
+	inc hl
+	ld [hl], "@"
+	ld de, CheckForBattleTowerRules_FunctionsText
+	call Function8b25b
+	ret z
+	call Function8b231
+	scf
+	ret
+; 8b215
+
+CheckForBattleTowerRules_FunctionsText: ; 8b215
+	db 4
+	dw CheckForBattleTowerRules_Functions
+	dw CheckForBattleTowerRules_Text
+
+CheckForBattleTowerRules_Functions: ; 8b21a
+	dw Function_PartyCountEq3
+	dw Function_PartySpeciesAreUnique
+	dw Function_PartyItemsAreUnique
+	dw Function_HasPartyAnEgg
+; 8b222
+
+CheckForBattleTowerRules_Text: ; 8b222
+	dw JumpText_ExcuseMeYoureNotReady
+	dw JumbText_OnlyThreePkmnMayBeEntered
+	dw JumpText_ThePkmnMustAllBeDifferentKinds
+	dw JumpText_ThePkmnMustNotHoldTheSameItems
+	dw JumpText_YouCantTakeAnEgg
+; 8b22c
+
+JumpText_ExcuseMeYoureNotReady: ; 0x8b22c
+	; Excuse me. You're not ready.
+	text_jump Text_ExcuseMeYoureNotReady
+	db "@"
+; 0x8b231
+
+Function8b231: ; 8b231
+	ld hl, UnknownText_0x8b238
+	call PrintText
+	ret
+; 8b238
+
+UnknownText_0x8b238: ; 0x8b238
+	; Please return when you're ready.
+	text_jump UnknownText_0x1c5962
+	db "@"
+; 0x8b23d
+
+UnknownText_0x8b23d: ; 0x8b23d
+	; You need at least three #MON.
+	text_jump UnknownText_0x1c5983
+	db "@"
+; 0x8b242
+
+UnknownText_0x8b242: ; 0x8b242
+	; Sorry, an EGG doesn't qualify.
+	text_jump UnknownText_0x1c59a3
+	db "@"
+; 0x8b247
+
+JumbText_OnlyThreePkmnMayBeEntered: ; 0x8b247
+	; Only three #MON may be entered.
+	text_jump Text_OnlyThreePkmnMayBeEntered
+	db "@"
+; 0x8b24c
+
+JumpText_ThePkmnMustAllBeDifferentKinds: ; 0x8b24c
+	; The @  #MON must all be different kinds.
+	text_jump Text_ThePkmnMustAllBeDifferentKinds
+	db "@"
+; 0x8b251
+
+JumpText_ThePkmnMustNotHoldTheSameItems: ; 0x8b251
+	; The @  #MON must not hold the same items.
+	text_jump Text_ThePkmnMustNotHoldTheSameItems
+	db "@"
+; 0x8b256
+
+JumpText_YouCantTakeAnEgg: ; 0x8b256
+	; You can't take an EGG!
+	text_jump Text_YouCantTakeAnEgg
+	db "@"
+; 0x8b25b
+
+Function8b25b: ; 8b25b
+	ld bc, $0000
+.asm_8b25e
+	call Function8b26c
+	call c, Function8b28e
+	call Function8b276
+	jr nz, .asm_8b25e
+	ld a, b
+	and a
+	ret
+; 8b26c
+
+Function8b26c: ; 8b26c
+	push de
+	push bc
+	call Function8b27a
+	ld a, c
+	rst JumpTable
+	pop bc
+	pop de
+	ret
+; 8b276
+
+Function8b276: ; 8b276
+	inc c
+	ld a, [de]
+	cp c
+	ret
+; 8b27a
+
+Function8b27a: ; 8b27a
+	inc de
+	ld a, [de]
+	ld l, a
+	inc de
+	ld a, [de]
+	ld h, a
+	ret
+; 8b281
+
+Function8b281: ; 8b281
+rept 3
+	inc de
+endr
+	ld a, [de]
+	ld l, a
+	inc de
+	ld a, [de]
+	ld h, a
+	ret
+; 8b28a
+
+Function8b28a: ; 8b28a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; 8b28e
+
+Function8b28e: ; 8b28e
+	push de
+	push bc
+	ld a, b
+	and a
+	call z, Function8b29d
+	pop bc
+	call Function8b2a9
+	ld b, $1
+	pop de
+	ret
+; 8b29d
+
+Function8b29d: ; 8b29d
+	push de
+	call Function8b281
+	call Function8b28a
+	call PrintText
+	pop de
+	ret
+; 8b2a9
+
+Function8b2a9: ; 8b2a9
+	push bc
+	call Function8b281
+rept 2
+	inc hl
+endr
+	ld b, $0
+rept 2
+	add hl, bc
+endr
+	call Function8b28a
+	call PrintText
+	pop bc
+	ret
+; 8b2bb
+
+Function8b2bb: ; 8b2bb
+	ld a, [PartyCount]
+	cp 3
+	ret
+; 8b2c1
+
+Function8b2c1: ; 8b2c1
+	ld hl, PartyCount
+	ld a, [hli]
+	ld b, $0
+	ld c, a
+.asm_8b2c8
+	ld a, [hli]
+	cp EGG
+	jr z, .asm_8b2ce
+	inc b
+
+.asm_8b2ce
+	dec c
+	jr nz, .asm_8b2c8
+	ld a, [PartyCount]
+	cp b
+	ret z
+	ld a, b
+	cp 3
+	ret
+; 8b2da
+
+Function_PartyCountEq3: ; 8b2da
+	ld a, [PartyCount]
+	cp 3
+	ret z
+	scf
+	ret
+; 8b2e2
+
+Function_PartySpeciesAreUnique: ; 8b2e2
+	ld hl, PartyMon1Species
+	call VerifyUniqueness
+	ret
+; 8b2e9
+
+VerifyUniqueness: ; 8b2e9
+	ld de, PartyCount
+	ld a, [de]
+	inc de
+	dec a
+	jr z, .done
+	ld b, a
+.loop
+	push hl
+	push de
+	ld c, b
+	call .isegg
+	jr z, .next
+	ld a, [hl]
+	and a
+	jr z, .next
+.loop2
+	call .nextmon
+	call .isegg
+	jr z, .next2
+	cp [hl]
+	jr z, .gotcha
+
+.next2
+	dec c
+	jr nz, .loop2
+
+.next
+	pop de
+	pop hl
+	call .nextmon
+	dec b
+	jr nz, .loop
+
+.done
+	and a
+	ret
+
+.gotcha
+	pop de
+	pop hl
+	scf
+	ret
+; 8b31a
+
+.nextmon: ; 8b31a
+	push bc
+	ld bc, PartyMon2 - PartyMon1
+	add hl, bc
+	inc de
+	pop bc
+	ret
+; 8b322
+
+.isegg: ; 8b322
+	push bc
+	ld b, a
+	ld a, [de]
+	cp EGG
+	ld a, b
+	pop bc
+	ret
+; 8b32a
+
+Function_PartyItemsAreUnique: ; 8b32a
+	ld hl, PartyMon1Item
+	call VerifyUniqueness
+	ret
+; 8b331
+
+Function_HasPartyAnEgg: ; 8b331
+	ld hl, PartyCount
+	ld a, [hli]
+	ld c, a
+.loop
+	ld a, [hli]
+	cp EGG
+	jr z, .found
+	dec c
+	jr nz, .loop
+	and a
+	ret
+
+.found
+	scf
+	ret
+; 8b342
--- /dev/null
+++ b/event/buena.asm
@@ -1,0 +1,339 @@
+SpecialBuenasPassword: ; 8af6b
+	xor a
+	ld [wcf76], a
+	ld hl, MenuDataHeader_0x8afa9
+	call CopyMenuDataHeader
+	ld a, [wdc4a]
+	ld c, a
+	callba GetBuenasPassword
+	ld a, [wcf83]
+	add c
+	add $2
+	ld [wcf85], a
+	call Function1c00
+	call Function1e5d
+	callba Function4ae5e
+	ld b, $0
+	ld a, [MenuSelection]
+	ld c, a
+	ld a, [wdc4a]
+	and $3
+	cp c
+	jr nz, .asm_8afa4
+	ld b, $1
+
+.asm_8afa4
+	ld a, b
+	ld [ScriptVar], a
+	ret
+; 8afa9
+
+MenuDataHeader_0x8afa9: ; 0x8afa9
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 07, 10 ; end coords
+	dw MenuData2_0x8afb2
+	db 1 ; default option
+; 0x8afb1
+
+	db 0
+
+MenuData2_0x8afb2: ; 0x8afb2
+	db $81 ; flags
+	db 0 ; items
+	dw Unknown_8afb8
+	dw Function8afbd
+; 0x8afb4
+
+Unknown_8afb8: ; 8afb8
+	db 3
+	db 0, 1, 2
+	db -1
+
+Function8afbd: ; 8afbd
+	push de
+	ld a, [wdc4a]
+	and $f0
+	ld c, a
+	ld a, [MenuSelection]
+	add c
+	ld c, a
+	callba GetBuenasPassword
+	pop hl
+	call PlaceString
+	ret
+; 8afd4
+
+SpecialBuenaPrize: ; 8afd4
+	xor a
+	ld [wd0e4], a
+	ld a, $1
+	ld [MenuSelection], a
+	call Function8b0d6
+	call Function8b090
+	ld hl, UnknownText_0x8b072
+	call PrintText
+	jr .asm_8aff1
+
+.asm_8afeb
+	ld hl, UnknownText_0x8b072
+	call Function105a
+
+.asm_8aff1
+	call DelayFrame
+	call UpdateSprites
+	call Function8b097
+	call Function8b0e2
+	jr z, .asm_8b05f
+	ld [wcf75], a
+	call GetBuenaPrize
+	ld a, [hl]
+	ld [wd265], a
+	call GetItemName
+	ld hl, UnknownText_0x8b077
+	call Function105a
+	call YesNoBox
+	jr c, .asm_8afeb
+	ld a, [wcf75]
+	call GetBuenaPrize
+	inc hl
+	ld a, [hld]
+	ld c, a
+	ld a, [wdc4b]
+	cp c
+	jr c, .asm_8b047
+	ld a, [hli]
+	push hl
+	ld [CurItem], a
+	ld a, $1
+	ld [wd10c], a
+	ld hl, NumItems
+	call ReceiveItem
+	pop hl
+	jr nc, .asm_8b04c
+	ld a, [hl]
+	ld c, a
+	ld a, [wdc4b]
+	sub c
+	ld [wdc4b], a
+	call Function8b097
+	jr .asm_8b051
+
+.asm_8b047
+	ld hl, UnknownText_0x8b081
+	jr .asm_8b05a
+
+.asm_8b04c
+	ld hl, UnknownText_0x8b086
+	jr .asm_8b05a
+
+.asm_8b051
+	ld de, SFX_TRANSACTION
+	call PlaySFX
+	ld hl, UnknownText_0x8b07c
+
+.asm_8b05a
+	call Function105a
+	jr .asm_8afeb
+
+.asm_8b05f
+	call WriteBackup
+	call WriteBackup
+	ld hl, UnknownText_0x8b08b
+	call PrintText
+	call Functiona36
+	call PlayClickSFX
+	ret
+; 8b072
+
+UnknownText_0x8b072: ; 0x8b072
+	; Which prize would you like?
+	text_jump UnknownText_0x1c589f
+	db "@"
+; 0x8b077
+
+UnknownText_0x8b077: ; 0x8b077
+	; ? Is that right?
+	text_jump UnknownText_0x1c58bc
+	db "@"
+; 0x8b07c
+
+UnknownText_0x8b07c: ; 0x8b07c
+	; Here you go!
+	text_jump UnknownText_0x1c58d1
+	db "@"
+; 0x8b081
+
+UnknownText_0x8b081: ; 0x8b081
+	; You don't have enough points.
+	text_jump UnknownText_0x1c58e0
+	db "@"
+; 0x8b086
+
+UnknownText_0x8b086: ; 0x8b086
+	; You have no room for it.
+	text_jump UnknownText_0x1c58ff
+	db "@"
+; 0x8b08b
+
+UnknownText_0x8b08b: ; 0x8b08b
+	; Oh. Please come back again!
+	text_jump UnknownText_0x1c591a
+	db "@"
+; 0x8b090
+
+Function8b090: ; 8b090
+	ld hl, MenuDataHeader_0x8b0d1
+	call LoadMenuDataHeader
+	ret
+; 8b097
+
+Function8b097: ; 8b097
+	ld de, wdc4b
+	call Function8b09e
+	ret
+; 8b09e
+
+Function8b09e: ; 8b09e
+	push de
+	xor a
+	ld [hBGMapMode], a
+	ld hl, MenuDataHeader_0x8b0d1
+	call CopyMenuDataHeader
+	call Function1cbb
+	call UpdateSprites
+	call GetMemTileCoord
+	ld bc, $0015
+	add hl, bc
+	ld de, String_8b0ca
+	call PlaceString
+	ld h, b
+	ld l, c
+	inc hl
+	ld a, $7f
+	ld [hli], a
+	ld [hld], a
+	pop de
+	lb bc, 1, 2
+	call PrintNum
+	ret
+; 8b0ca
+
+String_8b0ca:
+	db "Points@"
+; 8b0d1
+
+MenuDataHeader_0x8b0d1: ; 0x8b0d1
+	db $40 ; flags
+	db 11, 00 ; start coords
+	db 13, 11 ; end coords
+; 8b0d6
+
+Function8b0d6: ; 8b0d6
+	ld hl, MenuDataHeader_0x8b0dd
+	call LoadMenuDataHeader
+	ret
+; 8b0dd
+
+MenuDataHeader_0x8b0dd: ; 0x8b0dd
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 11, 17 ; end coords
+; 8b0e2
+
+Function8b0e2: ; 8b0e2
+	ld hl, MenuDataHeader_0x8b113
+	call CopyMenuDataHeader
+	ld a, [MenuSelection]
+	ld [wcf88], a
+	xor a
+	ld [wcf76], a
+	ld [hBGMapMode], a
+	call Function352f
+	call UpdateSprites
+	call Function350c
+	ld a, [MenuSelection]
+	ld c, a
+	ld a, [wcfa9]
+	ld [MenuSelection], a
+	ld a, [wcf73]
+	cp $2
+	jr z, .asm_8b111
+	ld a, c
+	and a
+	ret nz
+
+.asm_8b111
+	xor a
+	ret
+; 8b113
+
+MenuDataHeader_0x8b113: ; 0x8b113
+	db $40 ; flags
+	db 01, 01 ; start coords
+	db 09, 16 ; end coords
+	dw MenuData2_0x8b11c
+	db 1 ; default option
+; 0x8b11b
+
+	db 0
+
+MenuData2_0x8b11c: ; 0x8b11c
+	db $10 ; flags
+	db 4 ; items
+	db $d, $1
+	dbw BANK(Unknown_8b129), Unknown_8b129
+	dbw BANK(BuenaPrizeItem), BuenaPrizeItem
+	dbw BANK(BuenaPrizePoints), BuenaPrizePoints
+; 8b129
+
+Unknown_8b129: ; 8b129
+	db 9
+	db 1, 2, 3, 4, 5, 6, 7, 8, 9, $ff
+; 8b134
+
+BuenaPrizeItem: ; 8b134
+	ld a, [MenuSelection]
+	call GetBuenaPrize
+	ld a, [hl]
+	push de
+	ld [wd265], a
+	call GetItemName
+	pop hl
+	call PlaceString
+	ret
+; 8b147
+
+BuenaPrizePoints: ; 8b147
+	ld a, [MenuSelection]
+	call GetBuenaPrize
+	inc hl
+	ld a, [hl]
+	ld c, "0"
+	add c
+	ld [de], a
+	ret
+; 8b154
+
+GetBuenaPrize: ; 8b154
+	dec a
+	ld hl, BuenaPrizes
+	ld b, 0
+	ld c, a
+rept 2
+	add hl, bc
+endr
+	ret
+; 8b15e
+
+BuenaPrizes: ; 8b15e
+	db ULTRA_BALL,   2
+	db FULL_RESTORE, 2
+	db NUGGET,       3
+	db RARE_CANDY,   3
+	db PROTEIN,      5
+	db IRON,         5
+	db CARBOS,       5
+	db CALCIUM,      5
+	db HP_UP,        5
+; 8b170
--- /dev/null
+++ b/event/kurt.asm
@@ -1,0 +1,415 @@
+Kurt_PrintTextWhichApricorn: ; 88000
+	ld hl, UnknownText_0x88007
+	call PrintText
+	ret
+; 88007
+
+UnknownText_0x88007: ; 0x88007
+	; Which APRICORN should I use?
+	text_jump UnknownText_0x1bc06b
+	db "@"
+; 0x8800c
+
+Kurt_PrintTextHowMany: ; 8800c
+	ld hl, UnknownText_0x88013
+	call PrintText
+	ret
+; 88013
+
+UnknownText_0x88013: ; 0x88013
+	; How many should I make?
+	text_jump UnknownText_0x1bc089
+	db "@"
+; 0x88018
+
+Special_SelectApricornForKurt: ; 88018
+	call Function1d6e
+	ld c, $1
+	xor a
+	ld [wd0e4], a
+	ld [wdca4], a
+.loop
+	push bc
+	call Kurt_PrintTextWhichApricorn
+	pop bc
+	ld a, c
+	ld [MenuSelection], a
+	call Kurt_SelectApricorn
+	ld a, c
+	ld [ScriptVar], a
+	and a
+	jr z, .done
+	ld [CurItem], a
+	ld a, [wcfa9]
+	ld c, a
+	push bc
+	call Kurt_PrintTextHowMany
+	call Kurt_SelectQuantity
+	pop bc
+	jr nc, .loop
+	ld a, [wd10c]
+	ld [wdca4], a
+	call Kurt_GiveUpSelectedQuantityOfSelectedApricorn
+
+.done
+	call Function1d7d
+	ret
+; 88055
+
+Kurt_SelectApricorn: ; 88055
+	callba FindApricornsInBag
+	jr c, .nope
+	ld hl, .MenuDataHeader
+	call CopyMenuDataHeader
+	ld a, [MenuSelection]
+	ld [wcf88], a
+	xor a
+	ld [hBGMapMode], a
+	call Function352f
+	call UpdateSprites
+	call Function350c
+	ld a, [wcf73]
+	cp $2
+	jr z, .nope
+	ld a, [MenuSelection]
+	cp -1
+	jr nz, .done
+
+.nope
+	xor a
+
+.done
+	ld c, a
+	ret
+; 88086
+
+.MenuDataHeader: ; 0x88086
+	db $40 ; flags
+	db 01, 01 ; start coords
+	db 10, 13 ; end coords
+	dw .MenuData2
+	db 1 ; default option
+; 0x8808e
+
+	db 0
+
+.MenuData2: ; 0x8808f
+	db $10 ; flags
+	db 4, 7
+	db 1
+	dbw 0, Buffer1
+	dbw BANK(.Name), .Name
+	dbw BANK(.Quantity), .Quantity
+	dbw BANK(NULL), NULL
+
+.Name: ; 8809f
+	ld a, [MenuSelection]
+	and a
+	ret z
+	callba PlaceMenuItemName
+	ret
+; 880ab
+
+.Quantity: ; 880ab
+	ld a, [MenuSelection]
+	ld [CurItem], a
+	call Kurt_GetQuantityOfApricorn
+	ret z
+	ld a, [wd10c]
+	ld [wcf75], a
+	callba PlaceMenuItemQuantity
+	ret
+; 880c2
+
+Kurt_SelectQuantity: ; 880c2
+	ld a, [CurItem]
+	ld [MenuSelection], a
+	call Kurt_GetQuantityOfApricorn
+	jr z, .done
+	ld a, [wd10c]
+	ld [wd10d], a
+	ld a, $1
+	ld [wd10c], a
+	ld hl, .MenuDataHeader
+	call LoadMenuDataHeader
+.loop
+	xor a
+	ld [hBGMapMode], a
+	call Function1cbb
+	call UpdateSprites
+	call .PlaceApricornName
+	call PlaceApricornQuantity
+	call Function321c
+	callba Function27a28
+	jr nc, .loop
+
+	push bc
+	call PlayClickSFX
+	pop bc
+	ld a, b
+	cp -1
+	jr z, .done
+	ld a, [wd10c]
+	ld [wd10c], a ; What is the point of this operation?
+	scf
+
+.done
+	call WriteBackup
+	ret
+; 8810d
+
+.MenuDataHeader: ; 0x8810d
+	db $40 ; flags
+	db 09, 06 ; start coords
+	db 12, 19 ; end coords
+
+	db 0, 0, -1, 0 ; XXX
+
+.PlaceApricornName: ; 88116
+	call GetMemTileCoord
+	ld de, $0015
+	add hl, de
+	ld d, h
+	ld e, l
+	callba PlaceMenuItemName
+	ret
+; 88126
+
+PlaceApricornQuantity: ; 88126
+	call GetMemTileCoord
+	ld de, $0032
+	add hl, de
+	ld [hl], "×"
+	inc hl
+	ld de, wd10c
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	jp PrintNum
+; 88139
+
+Kurt_GetQuantityOfApricorn: ; 88139
+	push bc
+	ld hl, NumItems
+	ld a, [CurItem]
+	ld c, a
+	ld b, $0
+.loop
+	inc hl
+	ld a, [hli]
+	cp -1
+	jr z, .done
+	cp c
+	jr nz, .loop
+	ld a, [hl]
+	add b
+	ld b, a
+	jr nc, .loop
+	ld b, -1
+
+.done
+	ld a, b
+	sub 99
+	jr c, .done2
+	ld b, 99
+
+.done2
+	ld a, b
+	ld [wd10c], a
+	and a
+	pop bc
+	ret
+; 88161
+
+Kurt_GiveUpSelectedQuantityOfSelectedApricorn: ; 88161
+; Get the quantity of Apricorns of type [CurItem]
+; in the bag. Compatible with multiple stacks.
+
+; Initialize the search.
+	push de
+	push bc
+	ld hl, NumItems
+	ld a, [CurItem]
+	ld c, a
+	ld e, $0
+	xor a
+	ld [ItemCountBuffer], a
+	ld a, -1
+	ld [MiscBuffer2], a
+
+; Search for [CurItem] in the bag.
+.loop1
+; Increase the total count.
+	ld a, [ItemCountBuffer]
+	inc a
+	ld [ItemCountBuffer], a
+; Get the index of the next item.
+	inc hl
+	ld a, [hli]
+; If we've reached the end of the pocket, break.
+	cp -1
+	jr z, .okay1
+; If we haven't found what we're looking for, continue.
+	cp c
+	jr nz, .loop1
+; Increment the result counter and store the bag index of the match.
+	ld d, $0
+	push hl
+	ld hl, MiscBuffer2
+	add hl, de
+	inc e
+	ld a, [ItemCountBuffer]
+	dec a
+	ld [hli], a
+	ld a, -1
+	ld [hl], a
+	pop hl
+	jr .loop1
+
+.okay1
+; How many stacks have we found?
+	ld a, e
+	and a
+	jr z, .done
+	dec a
+	jr z, .OnlyOne
+	ld hl, MiscBuffer2
+
+.loop2
+	ld a, [hl]
+	ld c, a
+	push hl
+.loop3
+	inc hl
+	ld a, [hl]
+	cp -1
+	jr z, .okay2
+	ld b, a
+	ld a, c
+	call Kurt_GetAddressOfApricornQuantity
+	ld e, a
+	ld a, b
+	call Kurt_GetAddressOfApricornQuantity
+	sub e
+	jr z, .equal
+	jr c, .less
+	jr .loop3
+
+.equal
+	ld a, c
+	sub b
+	jr nc, .loop3
+
+.less
+	ld a, c
+	ld c, b
+	ld [hl], a
+	ld a, c
+	pop hl
+	ld [hl], a
+	push hl
+	jr .loop3
+
+.okay2
+	pop hl
+	inc hl
+	ld a, [hl]
+	cp -1
+	jr nz, .loop2
+
+.OnlyOne
+	ld hl, MiscBuffer2
+.loop4
+	ld a, [hl]
+	cp -1
+	jr z, .done
+	push hl
+	ld [ItemCountBuffer], a
+	call Kurt_GetRidOfItem
+	pop hl
+	ld a, [wd10c]
+	and a
+	jr z, .done
+	push hl
+	ld a, [hli]
+	ld c, a
+.loop5
+	ld a, [hli]
+	cp -1
+	jr z, .okay3
+	cp c
+	jr c, .loop5
+	dec a
+	dec hl
+	ld [hli], a
+	jr .loop5
+
+.okay3
+	pop hl
+	inc hl
+	jr .loop4
+
+.done
+	ld a, [wd10c]
+	and a
+	pop bc
+	pop de
+	ret
+; 88201
+
+Kurt_GetAddressOfApricornQuantity: ; 88201
+	push hl
+	push bc
+	ld hl, NumItems
+	inc hl
+	ld c, a
+	ld b, $0
+rept 2
+	add hl, bc
+endr
+	inc hl
+	ld a, [hl]
+	pop bc
+	pop hl
+	ret
+; 88211
+
+Kurt_GetRidOfItem: ; 88211
+	push bc
+	ld hl, NumItems
+	ld a, [ItemCountBuffer]
+	ld c, a
+	ld b, $0
+	inc hl
+rept 2
+	add hl, bc
+endr
+	ld a, [CurItem]
+	ld c, a
+	ld a, [hli]
+	cp -1
+	jr z, .done
+	cp c
+	jr nz, .done
+	ld a, [wd10c]
+	ld c, a
+	ld a, [hl]
+	sub c
+	ld b, c
+	jr nc, .okay
+	add c
+	ld b, a
+
+.okay
+	push bc
+	ld hl, NumItems
+	ld a, b
+	ld [wd10c], a
+	call TossItem
+	pop bc
+	ld a, c
+	sub b
+
+.done
+	ld [wd10c], a
+	pop bc
+	ret
+; 88248
--- a/event/mom.asm
+++ b/event/mom.asm
@@ -1,8 +1,8 @@
 Special_BankOfMom: ; 16218
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	xor a
 	ld [wcf63], a
 .asm_16223
@@ -14,7 +14,7 @@
 
 .asm_1622f
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 ; 16233
 
--- /dev/null
+++ b/event/unown.asm
@@ -1,0 +1,300 @@
+
+
+SpecialHoOhChamber: ; 0x8addb
+	ld hl, PartySpecies
+	ld a, [hl]
+	cp HO_OH ; is Ho-oh the first Pokémon in the party?
+	jr nz, .done ; if not, we're done
+	call GetSecondaryMapHeaderPointer
+	ld de, EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+.done
+	ret
+; 0x8adef
+
+SpecialOmanyteChamber: ; 8adef
+	call GetSecondaryMapHeaderPointer
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
+	ld b, CHECK_FLAG
+	call EventFlagAction
+	ld a, c
+	and a
+	jr nz, .nope
+
+	ld a, WATER_STONE
+	ld [CurItem], a
+	ld hl, NumItems
+	call CheckItem
+	jr c, .open
+
+	ld a, [PartyCount]
+	ld b, a
+	inc b
+.loop
+	dec b
+	jr z, .nope
+	ld a, b
+	dec a
+	ld [CurPartyMon], a
+	push bc
+	ld a, PartyMon1Item - PartyMon1
+	call GetPartyParamLocation
+	pop bc
+	ld a, [hl]
+	cp WATER_STONE
+	jr nz, .loop
+
+.open
+	call GetSecondaryMapHeaderPointer
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+
+.nope
+	ret
+; 8ae30
+
+SpecialAerodactylChamber: ; 8ae30
+	push de
+	push bc
+
+	call GetSecondaryMapHeaderPointer
+	ld a, h
+	cp RuinsofAlphAerodactylChamber_SecondMapHeader / $100
+	jr nz, .nope
+	ld a, l
+	cp RuinsofAlphAerodactylChamber_SecondMapHeader % $100
+	jr nz, .nope
+
+	ld de, EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+
+	scf
+	jr .done
+
+.nope
+	and a
+
+.done
+	pop bc
+	pop de
+	ret
+; 8ae4e
+
+SpecialKabutoChamber: ; 8ae4e
+	push hl
+	push de
+
+	call GetSecondaryMapHeaderPointer
+	ld a, h
+	cp RuinsofAlphKabutoChamber_SecondMapHeader / $100
+	jr nz, .done
+	ld a, l
+	cp RuinsofAlphKabutoChamber_SecondMapHeader % $100
+	jr nz, .done
+
+	ld de, EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+
+.done
+	pop de
+	pop hl
+	ret
+; 8ae68
+
+Special_DisplayUnownWords: ; 8ae68
+	ld a, [ScriptVar]
+	ld hl, MenuDataHeader_0x8aed5
+	and a
+	jr z, .asm_8ae79
+
+	ld d, $0
+	ld e, $5
+.asm_8ae75
+	add hl, de
+	dec a
+	jr nz, .asm_8ae75
+
+.asm_8ae79
+	call LoadMenuDataHeader
+	xor a
+	ld [hBGMapMode], a
+	call Function1cbb
+	call UpdateSprites
+	call Function321c
+	call GetMemTileCoord
+	inc hl
+	ld d, $0
+	ld e, $14
+rept 2
+	add hl, de
+endr
+	ld a, [ScriptVar]
+	ld c, a
+	ld de, Unknown_8aebc
+	and a
+	jr z, .asm_8aea5
+.asm_8ae9c
+	ld a, [de]
+	inc de
+	cp $ff
+	jr nz, .asm_8ae9c
+	dec c
+	jr nz, .asm_8ae9c
+
+.asm_8aea5
+	call Function8af09
+	ld bc, AttrMap - TileMap
+	add hl, bc
+	call Function8aee9
+	call Function3200
+	call Functiona36
+	call PlayClickSFX
+	call WriteBackup
+	ret
+; 8aebc
+
+Unknown_8aebc: ; 8aebc
+	db $08, $44, $04, $00, $2e, $08, $ff
+	db $26, $20, $0c, $0e, $46, $ff
+	db $4c, $00, $46, $08, $42, $ff
+	db $0e, $2c, $64, $2c, $0e, $ff
+; 8aed5
+
+MenuDataHeader_0x8aed5: ; 0x8aed5
+	db $40 ; flags
+	db 04, 03 ; start coords
+	db 09, 16 ; end coords
+
+MenuDataHeader_0x8aeda: ; 0x8aeda
+	db $40 ; flags
+	db 04, 04 ; start coords
+	db 09, 15 ; end coords
+
+MenuDataHeader_0x8aedf: ; 0x8aedf
+	db $40 ; flags
+	db 04, 04 ; start coords
+	db 09, 15 ; end coords
+
+MenuDataHeader_0x8aee4: ; 0x8aee4
+	db $40 ; flags
+	db 04, 04 ; start coords
+	db 09, 15 ; end coords
+; 8aee9
+
+Function8aee9: ; 8aee9
+.asm_8aee9
+	ld a, [de]
+	cp $ff
+	ret z
+	cp $60
+	ld a, $d
+	jr c, .asm_8aef5
+	ld a, $5
+
+.asm_8aef5
+	call Function8aefd
+rept 2
+	inc hl
+endr
+	inc de
+	jr .asm_8aee9
+; 8aefd
+
+Function8aefd: ; 8aefd
+	push hl
+	ld [hli], a
+	ld [hld], a
+	ld b, $0
+	ld c, $14
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	pop hl
+	ret
+; 8af09
+
+Function8af09: ; 8af09
+	push hl
+	push de
+.asm_8af0b
+	ld a, [de]
+	cp $ff
+	jr z, .asm_8af19
+	ld c, a
+	call Function8af1c
+rept 2
+	inc hl
+endr
+	inc de
+	jr .asm_8af0b
+
+.asm_8af19
+	pop de
+	pop hl
+	ret
+; 8af1c
+
+Function8af1c: ; 8af1c
+	push hl
+	ld a, c
+	cp $60
+	jr z, .asm_8af3b
+	cp $62
+	jr z, .asm_8af4b
+	cp $64
+	jr z, .asm_8af5b
+	ld [hli], a
+	inc a
+	ld [hld], a
+	dec a
+	ld b, $0
+	ld c, $14
+	add hl, bc
+	ld c, $10
+	add c
+	ld [hli], a
+	inc a
+	ld [hl], a
+	pop hl
+	ret
+
+.asm_8af3b
+	ld [hl], $5b
+	inc hl
+	ld [hl], $5c
+	ld bc, $0013
+	add hl, bc
+	ld [hl], $4d
+	inc hl
+	ld [hl], $5d
+	pop hl
+	ret
+
+.asm_8af4b
+	ld [hl], $4e
+	inc hl
+	ld [hl], $4f
+	ld bc, $0013
+	add hl, bc
+	ld [hl], $5e
+	inc hl
+	ld [hl], $5f
+	pop hl
+	ret
+
+.asm_8af5b
+	ld [hl], $2
+	inc hl
+	ld [hl], $3
+	ld bc, $0013
+	add hl, bc
+	ld [hl], $3
+	inc hl
+	ld [hl], $2
+	pop hl
+	ret
+; 8af6b
--- a/home.asm
+++ b/home.asm
@@ -1184,15 +1184,15 @@
 Function354b:: ; 354b
 	call DelayFrame
 
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Functiona57
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and D_RIGHT + D_LEFT + D_UP + D_DOWN
 	ld c, a
 	ld a, [hJoyPressed]
@@ -2220,7 +2220,7 @@
 ; 3f7c
 
 Function3f7c:: ; 3f7c
-	call Function1cfd
+	call GetMemTileCoord
 	call Function1c53
 	dec b
 	dec c
--- a/home/joypad.asm
+++ b/home/joypad.asm
@@ -39,7 +39,7 @@
 	
 ; We can only get four inputs at a time.
 ; We take d-pad first for no particular reason.
-	ld a, D_PAD
+	ld a, R_DPAD
 	ld [rJOYP], a
 ; Read twice to give the request time to take.
 rept 2
@@ -57,7 +57,7 @@
 	
 ; Buttons make 8 total inputs (A, B, Select, Start).
 ; We can fit this into one byte.
-	ld a, BUTTONS
+	ld a, R_BUTTONS
 	ld [rJOYP], a
 ; Wait for input to stabilize.
 rept 6
@@ -285,7 +285,7 @@
 	cp D_UP | SELECT | B_BUTTON
 	jr z, .asm_a34
 
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and START | A_BUTTON
 	jr nz, .asm_a34
 
@@ -325,29 +325,29 @@
 
 Functiona57:: ; a57
 	call GetJoypad
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	and a
 	ld a, [hJoyPressed]
-	jr z, .asm_a63
+	jr z, .ok
 	ld a, [hJoyDown]
-.asm_a63
+.ok
 	ld [hJoyLast], a
 	ld a, [hJoyPressed]
 	and a
-	jr z, .asm_a70
+	jr z, .checkframedelay
 	ld a, 15
 	ld [TextDelayFrames], a
 	ret
 
-.asm_a70
+.checkframedelay
 	ld a, [TextDelayFrames]
 	and a
-	jr z, .asm_a7a
+	jr z, .restartframedelay
 	xor a
 	ld [hJoyLast], a
 	ret
 
-.asm_a7a
+.restartframedelay
 	ld a, 5
 	ld [TextDelayFrames], a
 	ret
@@ -356,12 +356,12 @@
 Functiona80:: ; a80
 	ld a, [hConnectionStripLength]
 	push af
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	push af
 	xor a
 	ld [hConnectionStripLength], a
 	ld a, $6
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 .asm_a8d
 	push hl
 	hlcoord 18, 17
@@ -368,11 +368,11 @@
 	call Functionb06
 	pop hl
 	call Functiona57
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and $3
 	jr z, .asm_a8d
 	pop af
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	pop af
 	ld [hConnectionStripLength], a
 	ret
@@ -380,7 +380,7 @@
 
 Functionaa5:: ; aa5
 	call Functiona57
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and A_BUTTON | B_BUTTON
 	jr z, Functionaa5
 	ret
@@ -456,9 +456,9 @@
 	dec a
 	ld [hConnectionStripLength], a
 	ret nz
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	dec a
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	ret nz
 	ld a, $7a
 	ld [hl], a
@@ -465,7 +465,7 @@
 	ld a, $ff
 	ld [hConnectionStripLength], a
 	ld a, $6
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	ret
 
 .asm_b27
@@ -477,12 +477,12 @@
 	ret nz
 	dec a
 	ld [hConnectionStripLength], a
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	dec a
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	ret nz
 	ld a, $6
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	ld a, $ee
 	ld [hl], a
 	ret
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -81,16 +81,16 @@
 	call Function1c66
 	ld a, [wcf91]
 	bit 7, a
-	jr z, .asm_1da7 ; 0x1d98 $d
+	jr z, .cancel ; 0x1d98 $d
 	call Function1c10
 	call Function1bc9
 	call Function1ff8
 	bit 1, a
-	jr z, .asm_1da9 ; 0x1da5 $2
-.asm_1da7
+	jr z, .okay ; 0x1da5 $2
+.cancel
 	scf
 	ret
-.asm_1da9
+.okay
 	and a
 	ret
 ; 0x1dab
@@ -165,15 +165,15 @@
 	call DelayFrames
 	call WriteBackup
 	pop af
-	jr c, .asm_1e16
+	jr c, .no
 	ld a, [wcfa9]
 	cp 2 ; no
-	jr z, .asm_1e16
+	jr z, .no
 	and a
 	ret
 
-.asm_1e16
-	ld a, $2
+.no
+	ld a, 2
 	ld [wcfa9], a
 	scf
 	ret
@@ -308,7 +308,7 @@
 ; 1eda
 
 Function1eda:: ; 1eda
-	call Function1cfd
+	call GetMemTileCoord
 	ld bc, $002a
 	add hl, bc
 .asm_1ee1
@@ -521,13 +521,13 @@
 Function1ff8:: ; 1ff8
 	push af
 	and $3
-	jr z, .asm_2007
+	jr z, .nosound
 	ld hl, wcf81
 	bit 3, [hl]
-	jr nz, .asm_2007
+	jr nz, .nosound
 	call PlayClickSFX
 
-.asm_2007
+.nosound
 	pop af
 	ret
 ; 2009
--- a/home/movement.asm
+++ b/home/movement.asm
@@ -159,11 +159,11 @@
 Function1bdd:: ; 1bdd
 	push bc
 	push af
-	ld a, [$ffa9]
-	and $f0
+	ld a, [hJoyLast]
+	and D_PAD
 	ld b, a
 	ld a, [hJoyPressed]
-	and $f
+	and BUTTONS
 	or b
 	ld b, a
 	pop af
@@ -214,7 +214,7 @@
 	ret
 
 Function1c23:: ; 0x1c23
-	call Function1cfd
+	call GetMemTileCoord
 	call Function1c30
 	call Function1d19
 	call Function1c30
--- a/home/palettes.asm
+++ b/home/palettes.asm
@@ -79,6 +79,7 @@
 	ld [rBGP], a
 	push af
 
+; Don't need to be here if CGB
 	ld a, [hCGB]
 	and a
 	jr z, .end
@@ -89,7 +90,7 @@
 	ld a, [rSVBK]
 	push af
 
-	ld a, 5
+	ld a, 5 ; gfx
 	ld [rSVBK], a
 
 ; copy & reorder bg pal buffer
@@ -165,16 +166,21 @@
 Functioncf8:: ; cf8
 	ld [rOBP0], a
 	push af
+
+; Don't need to be here if CGB
 	ld a, [hCGB]
 	and a
-	jr z, .asm_d22
+	jr z, .done
+
 	push hl
 	push de
 	push bc
+
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, 5 ; gfx
 	ld [rSVBK], a
+
 	ld hl, OBPals
 	ld de, Unkn2Pals
 	ld a, [rOBP0]
@@ -183,13 +189,15 @@
 	call CopyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
+
 	pop af
 	ld [rSVBK], a
+
 	pop bc
 	pop de
 	pop hl
 
-.asm_d22
+.done
 	pop af
 	ret
 ; d24
--- a/home/text.asm
+++ b/home/text.asm
@@ -17,19 +17,19 @@
 	ld a, " "
 
 FillBoxWithByte::
-.col
+.row
 	push bc
 	push hl
-.row
+.col
 	ld [hli], a
 	dec c
-	jr nz, .row
+	jr nz, .col
 	pop hl
 	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .col
+	jr nz, .row
 	ret
 ; fc8
 
@@ -61,8 +61,11 @@
 
 
 TextBox:: ; fe8
-; Draw a text box width c height b at hl.
-; Dimensions do not include the border.
+; Draw a text box at hl with room for
+; b lines of c characters each.
+; Places a border around the textbox,
+; then switches the palette to the
+; text black-and-white scheme.
 	push bc
 	push hl
 	call TextBoxBorder
@@ -263,14 +266,14 @@
 	dict "<ROCKET>", RocketChar
 	dict "<TM>", TMChar
 	dict "<TRNER>", TrainerChar
-	dict $23, Char23
-	dict $22, Char22
+	dict $23, PlaceKougeki
+	dict "<LNBRK>", Char22
 	dict "<CONT>", ContText
 	dict "<......>", SixDotsChar
 	dict "<DONE>", DoneText
 	dict "<PROMPT>", PromptText
 	dict "<PKMN>", PlacePKMN
-	dict $24, PlacePOKE
+	dict "<POKE>", PlacePOKE
 	dict $25, NextChar
 	dict2 $1f, " "
 	dict "<DEXEND>", PlaceDexEnd
@@ -349,7 +352,7 @@
 PCChar: print_name PCCharText ; 11b7
 RocketChar: print_name RocketCharText ; 11be
 PlacePOKe: print_name PlacePOKeText ; 11c5
-Char23: print_name Char23Text ; 11cc
+PlaceKougeki: print_name KougekiText ; 11cc
 SixDotsChar: print_name SixDotsCharText ; 11d3
 PlacePKMN: print_name PlacePKMNText ; 11da
 PlacePOKE: print_name PlacePOKEText ; 11e1
@@ -444,7 +447,7 @@
 PCCharText:: db "PC@" ; 127e
 RocketCharText:: db "ROCKET@" ; 1281
 PlacePOKeText:: db "POKé@" ; 1288
-Char23Text:: db "こうげき@" ; 128d
+KougekiText:: db "こうげき@" ; 128d
 SixDotsCharText:: db "……@" ; 1292
 EnemyText:: db "Enemy @" ; 1295
 PlacePKMNText:: db "<PK><MN>@" ; PK MN ; 129c
--- a/home/tilemap.asm
+++ b/home/tilemap.asm
@@ -99,7 +99,7 @@
 	ld a, [wcf91]
 	bit 4, a
 	ret z
-	call Function1cfd
+	call GetMemTileCoord
 	ld a, [de]
 	ld c, a
 	inc de
@@ -109,7 +109,7 @@
 ; 1cbb
 
 Function1cbb:: ; 1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	call Function1c53
 	dec b
 	dec c
@@ -139,7 +139,7 @@
 ; 1ce1
 
 Function1ce1:: ; 1ce1
-	call Function1cfd
+	call GetMemTileCoord
 	ld bc, $0015
 	add hl, bc
 	call Function1c53
@@ -150,7 +150,7 @@
 ; 1cf1
 
 Function1cf1:: ; 1cf1
-	call Function1cfd
+	call GetMemTileCoord
 	call Function1c53
 	inc c
 	inc b
@@ -159,7 +159,7 @@
 ; 1cfd
 
 
-Function1cfd:: ; 1cfd
+GetMemTileCoord:: ; 1cfd
 	ld a, [wcf83]
 	ld c, a
 	ld a, [wcf82]
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -146,7 +146,7 @@
 	rst Bankswitch
 
 	ld a, [hSeconds]
-	ld [$ffe3], a
+	ld [hSecondsBackup], a
 
 	ret
 ; 325
--- a/hram.asm
+++ b/hram.asm
@@ -15,6 +15,8 @@
 
 hSeconds           EQU $ff98
 
+hVBlankCounter     EQU $ff9b
+
 hROMBank           EQU $ff9d
 hVBlank            EQU $ff9e
 hMapEntryMethod    EQU $ff9f
@@ -27,6 +29,7 @@
 hJoyPressed        EQU $ffa7
 hJoyDown           EQU $ffa8
 hJoyLast           EQU $ffa9
+hInMenu            EQU $ffaa
 
 hConnectionStripLength EQU $ffaf
 hConnectedMapWidth EQU $ffb0
@@ -44,6 +47,8 @@
 hMultiplier        EQU $ffb7 ; 1 byte long
 hProduct           EQU $ffb3 ; result (4 bytes long)
 
+hMathBuffer        EQU $ffb8
+
 hPrintNum1         EQU $ffb3
 hPrintNum2         EQU $ffb4
 hPrintNum3         EQU $ffb5
@@ -51,7 +56,6 @@
 hPrintNum5         EQU $ffb7
 hPrintNum6         EQU $ffb8
 hPrintNum7         EQU $ffb9
-hMathBuffer        EQU $ffb8
 
 hMoneyTemp         EQU $ffc3
 
@@ -81,7 +85,7 @@
 hRandom            EQU $ffe1
 hRandomAdd         EQU $ffe1
 hRandomSub         EQU $ffe2
-
+hSecondsBackup     EQU $ffe3
 hBattleTurn        EQU $ffe4
 hCGBPalUpdate      EQU $ffe5
 hCGB               EQU $ffe6
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -6,16 +6,22 @@
 SECTION "Main", ROMX
 
 Function110000: ; 110000 (44:4000)
+; Copy b bytes from hl to de
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec b
-	jr nz, Function110000
+	jr nz, .loop
 	ret
 ; 110007 (44:4007)
 
 Function110007: ; 110007
-.asm_110007
+; Copy bytes from hl to de until a 0 is encountered.
+; Include the 0 in the copy, and count the number of
+; nonzero bytes copied.  Keep the de pointer at the
+; copied zero.
+.loop
 	ld a, [hli]
 	ld [de], a
 	or a
@@ -22,27 +28,31 @@
 	ret z
 	inc de
 	inc bc
-	jr .asm_110007
+	jr .loop
 ; 11000f
 
 Function11000f: ; 11000f
+; Copy bytes from hl to de until a 0 is encountered,
+; or a bytes have been copied, whichever comes first.
+; Add the byte count to the count previously stored
+; in bc.
 	push bc
 	ld c, $0
 	ld b, a
 	dec b
-.asm_110014
+.loop
 	ld a, [hli]
 	ld [de], a
 	or a
-	jr z, .asm_110020
+	jr z, .done
 	inc de
 	inc c
 	dec b
-	jr nz, .asm_110014
+	jr nz, .loop
 	xor a
 	ld [de], a
 
-.asm_110020
+.done
 	ld a, c
 	pop bc
 	add c
@@ -54,6 +64,7 @@
 ; 110029
 
 Function110029: ; 110029 (44:4029)
+; Clear two bytes at $ca3a.
 	xor a
 	ld hl, $ca3a
 	ld [hli], a
@@ -61,21 +72,25 @@
 	ret
 
 Function110030:: ; 110030 (44:4030)
+; Use the byte at $c988 as a parameter
+; for a jumptable.
+; If [$c988] in {12, 14, 16},
+; clear [$c835].
 	push de
 	ld a, [$c988]
-	cp $c
-	jr z, .asm_110047
-	cp $e
-	jr z, .asm_110047
-	cp $10
-	jr z, .asm_110047
+	cp 2 * 6
+	jr z, .noreset
+	cp 2 * 7
+	jr z, .noreset
+	cp 2 * 8
+	jr z, .noreset
 	xor a
 	ld [$c835], a
 	ld a, [$c988]
-.asm_110047
+.noreset
 	ld d, $0
 	ld e, a
-	ld hl, Jumptable_110070
+	ld hl, .jumptable
 	add hl, de
 	ld a, [hli]
 	ld [$c988], a
@@ -89,19 +104,19 @@
 	push hl
 	ld a, $36
 	cp l
-	jr nz, .asm_110066
+	jr nz, .okay
 	ld a, $42
 	cp h
-.asm_110066
+.okay
 	call nz, Function1100b4
 	ld hl, $c986
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ret
+	ret ; indirectly jump to the function loaded from the jumptable, which returns to Function3e60.
 ; 110070 (44:4070)
 
-Jumptable_110070: ; 110070
+.jumptable: ; 110070
 	dw Function110115
 	dw Function110236
 	dw Function110291
@@ -140,7 +155,7 @@
 
 Function1100b4: ; 1100b4 (44:40b4)
 	push bc
-.asm_1100b5
+.loop
 	di
 	ld a, [$c800]
 	ld b, a
@@ -150,19 +165,19 @@
 	ei
 	or a
 	bit 0, a
-	jr z, .asm_1100da
+	jr z, .done
 	ld a, b
 	or a
-	jr nz, .asm_1100b5
+	jr nz, .loop
 	ld a, c
 	cp $4
-	jr z, .asm_1100b5
+	jr z, .loop
 	xor a
 	ld [$c80f], a
 	ld hl, $c821
 	set 1, [hl]
 	scf
-.asm_1100da
+.done
 	pop bc
 	ret
 ; 1100dc (44:40dc)
--- a/macros/charmap.asm
+++ b/macros/charmap.asm
@@ -106,6 +106,7 @@
 	charmap "♂", $ef
 	charmap "¥", $f0
 	charmap "×", $f1
+	charmap "·", $f2
 	charmap "/", $f3
 	charmap ",", $f4
 	charmap "♀", $f5
@@ -306,3 +307,4 @@
 	charmap "<......>", $56
 	charmap "<START>",  $00
 	charmap "<DEXEND>", $5f
+	charmap "<LNBRK>",  $22
--- a/main.asm
+++ b/main.asm
@@ -183,22 +183,22 @@
 	call ByteFill
 
 	ld a, [rLY]
-	ld [$ffe3], a
+	ld [hSecondsBackup], a
 	call DelayFrame
 	ld a, [hRandomSub]
 	ld [PlayerID], a
 
 	ld a, [rLY]
-	ld [$ffe3], a
+	ld [hSecondsBackup], a
 	call DelayFrame
 	ld a, [hRandomAdd]
 	ld [PlayerID + 1], a
 
 	call Random
-	ld [wd84a], a
+	ld [wSecretID], a
 	call DelayFrame
 	call Random
-	ld [wd84b], a
+	ld [wSecretID + 1], a
 
 	ld hl, PartyCount
 	call InitList
@@ -205,7 +205,7 @@
 
 	xor a
 	ld [wCurBox], a
-	ld [wd4b4], a
+	ld [wSavedAtLeastOnce], a
 
 	call SetDefaultBoxNames
 
@@ -648,7 +648,7 @@
 
 
 Function5f1c: ; 5f1c
-	call Function1cfd
+	call GetMemTileCoord
 	push hl
 	ld de, $005d
 	add hl, de
@@ -1154,7 +1154,7 @@
 	ld hl, LYOverrides + $5f
 	ld a, [hl]
 	dec a
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	call ByteFill
 	ret
 ; 62a3
@@ -1463,7 +1463,7 @@
 	call WhiteBGMap
 	call ClearTileMap
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	xor a
 	ld [hBGMapAddress], a
 	ld [hJoyDown], a
@@ -1527,7 +1527,7 @@
 ; 64b9
 
 Function64b9: ; 64b9
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	xor a
 	ld [hBGMapAddress], a
 	ret
@@ -1566,9 +1566,9 @@
 	ld [rHDMA1], a
 	ld a, w6_d000 % $100
 	ld [rHDMA2], a
-	ld a, ($9800 % $8000) / $100
+	ld a, (VBGMap0 % $8000) / $100
 	ld [rHDMA3], a
-	ld a, ($9800 % $8000) % $100
+	ld a, (VBGMap0 % $8000) % $100
 	ld [rHDMA4], a
 	ld a, $3f
 	ld [hDMATransfer], a
@@ -2422,7 +2422,7 @@
 	ld bc, ObjectStructs
 	xor a
 .loop
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	call GetObjectSprite
 	jr z, .nope
 	ld hl, OBJECT_04
@@ -2452,7 +2452,7 @@
 .ok2
 	ld a, [hConnectionStripLength]
 	ld l, a
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	cp l
 	jr nz, .setcarry
 
@@ -2469,7 +2469,7 @@
 	jr nz, .nope
 	ld a, [hConnectionStripLength]
 	ld l, a
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	cp l
 	jr nz, .setcarry
 
@@ -2478,7 +2478,7 @@
 	add hl, bc
 	ld b, h
 	ld c, l
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	inc a
 	cp NUM_OBJECT_STRUCTS
 	jr nz, .loop
@@ -2589,7 +2589,7 @@
 	ld bc, ObjectStructs
 	xor a
 .loop
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	call GetObjectSprite
 	jr z, .asm_7160
 	ld hl, OBJECT_03
@@ -2612,7 +2612,7 @@
 	ld a, [hl]
 	cp d
 	jr nz, .asm_714e
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	cp $0
 	jr z, .asm_7160
 	jr .asm_716f
@@ -2635,7 +2635,7 @@
 	add hl, bc
 	ld b, h
 	ld c, l
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	inc a
 	cp NUM_OBJECT_STRUCTS
 	jr nz, .loop
@@ -3066,16 +3066,16 @@
 	ret
 ; 73f7
 
-Function73f7: ; 73f7
+Special_BillsGrandfather: ; 73f7
 	callba SelectMonFromParty
-	jr c, .asm_740e
+	jr c, .cancel
 	ld a, [CurPartySpecies]
 	ld [ScriptVar], a
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	jp CopyPokemonName_Buffer1_Buffer3
 
-.asm_740e
+.cancel
 	xor a
 	ld [ScriptVar], a
 	ret
@@ -3215,7 +3215,7 @@
 	ld [hConnectionStripLength], a
 	ld bc, MapObjects
 	ld a, $0
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	ld de, ObjectStructs
 	call Function8116
 	ld a, $0
@@ -3314,12 +3314,12 @@
 	ld a, 1
 	ld de, OBJECT_STRUCT_LENGTH
 .loop
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	ld a, [hl]
 	and a
 	jr z, .done
 	add hl, de
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	inc a
 	cp NUM_OBJECT_STRUCTS
 	jr nz, .loop
@@ -3346,7 +3346,7 @@
 ; 811d
 
 Function811d: ; 811d
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld [hl], a
@@ -3833,7 +3833,7 @@
 	ld hl, OBJECT_SPRITE_Y
 	add hl, de
 	ld [hl], a
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld hl, OBJECT_32
 	add hl, de
 	ld [hl], a
@@ -6062,7 +6062,7 @@
 	callba CheckFacingObject
 	jr nc, .fail
 
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	call GetObjectStruct
 	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
@@ -6594,7 +6594,7 @@
 
 
 _ReceiveItem:: ; d1d5
-	call CheckHLequTMsHMsEnd
+	call DoesHLEqualNumItems
 	jp nz, PutItemInPocket
 	push hl
 	call CheckItemPocket
@@ -6641,8 +6641,8 @@
 
 
 _TossItem:: ; d20d
-	call CheckHLequTMsHMsEnd
-	jr nz, .asm_d241
+	call DoesHLEqualNumItems
+	jr nz, .remove
 	push hl
 	call CheckItemPocket
 	pop de
@@ -6684,13 +6684,13 @@
 	ld l, e
 ; d241
 
-.asm_d241
+.remove
 	jp RemoveItemFromPocket
 ; d244
 
 _CheckItem:: ; d244
-	call CheckHLequTMsHMsEnd
-	jr nz, .asm_d278
+	call DoesHLEqualNumItems
+	jr nz, .nope
 	push hl
 	call CheckItemPocket
 	pop de
@@ -6732,16 +6732,16 @@
 	ld l, e
 ; d278
 
-.asm_d278
+.nope
 	jp CheckTheItem
 ; d27b
 
-CheckHLequTMsHMsEnd: ; d27b
+DoesHLEqualNumItems: ; d27b
 	ld a, l
-	cp TMsHMsEnd % $100
+	cp NumItems % $100
 	ret nz
 	ld a, h
-	cp TMsHMsEnd / $100
+	cp NumItems / $100
 	ret
 ; d283
 
@@ -6749,21 +6749,21 @@
 	ld c, MAX_ITEMS
 	ld a, e
 	cp NumItems % $100
-	jr nz, .asm_d28e
+	jr nz, .not_bag
 	ld a, d
 	cp NumItems / $100
 	ret z
 
-.asm_d28e
+.not_bag
 	ld c, MAX_PC_ITEMS
 	ld a, e
 	cp PCItems % $100
-	jr nz, .asm_d299
+	jr nz, .not_pc
 	ld a, d
 	cp PCItems / $100
 	ret z
 
-.asm_d299
+.not_pc
 	ld c, MAX_BALLS
 	ret
 ; d29c
@@ -10439,10 +10439,10 @@
 	push af
 	xor a
 	ld [$ffde], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function116f8
 	call DelayFrame
 .asm_116e5
@@ -10449,7 +10449,7 @@
 	call Function11915
 	jr nc, .asm_116e5
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [$ffde], a
 	pop af
@@ -10994,7 +10994,7 @@
 ; 11a8b
 
 Function11a8b: ; 11a8b (4:5a8b)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .up
@@ -11199,21 +11199,22 @@
 ; 11be0
 
 Function11be0: ; 11be0
+; load $f2, ($eb * [wc6d3]), $50 into the dw address at wc6d0
 	ld hl, wc6d0
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld [hl], $f2
+	ld [hl], "·"
 	inc hl
 	ld a, [wc6d3]
 	dec a
 	ld c, a
-	ld a, $eb
-.asm_11bf0
+	ld a, "→"
+.loop
 	ld [hli], a
 	dec c
-	jr nz, .asm_11bf0
-	ld [hl], $50
+	jr nz, .loop
+	ld [hl], "@"
 	ret
 ; 11bf7
 
@@ -11385,10 +11386,10 @@
 	push af
 	xor a
 	ld [$ffde], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function11e9a
 	call DelayFrame
 .asm_11e8e
@@ -11395,7 +11396,7 @@
 	call Function11fc0
 	jr nc, .asm_11e8e
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [$ffde], a
 	ret
@@ -11427,9 +11428,9 @@
 	call GetSGBLayout
 	call WaitBGMap
 	call WaitTop
-	ld a, $e4
+	ld a, %11100100
 	call DmgToCgbBGPals
-	ld a, $e4
+	ld a, %11100100
 	call Functioncf8
 	call Function11be0
 	ld hl, wc6d0
@@ -11459,15 +11460,15 @@
 Function11f84: ; 11f84 (4:5f84)
 	call WaitTop
 	hlcoord 0, 0
-	ld bc, $78
+	ld bc, 6 * SCREEN_WIDTH
 	ld a, $60
 	call ByteFill
 	hlcoord 0, 6
-	ld bc, $f0
+	ld bc, 12 * SCREEN_WIDTH
 	ld a, " "
 	call ByteFill
 	hlcoord 1, 1
-	ld bc, $412
+	lb bc, 4, SCREEN_WIDTH - 2
 	call ClearBox
 	ld de, String_121dd
 
@@ -11688,7 +11689,7 @@
 ; 1210c
 
 Function1210c: ; 1210c (4:610c)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .up
@@ -12762,8 +12763,8 @@
 	xor a
 	ld hl, MenuItemsList
 	ld [hli], a
-	ld a, $ff
-	ld bc, $000f
+	ld a, -1
+	ld bc, MenuItemsListEnd - (MenuItemsList + 1)
 	call ByteFill
 	ld de, MenuItemsList + 1
 	ld c, 0
@@ -13970,12 +13971,12 @@
 	jp .asm_12ff2
 
 .asm_13018
-	ld a, $7f
+	ld a, " "
 	hlcoord 1, 11
-	ld bc, $0005
+	ld bc, 5
 	call ByteFill
 	hlcoord 1, 12
-	ld bc, $0512
+	lb bc, 5, SCREEN_WIDTH - 2
 	call ClearBox
 	hlcoord 1, 12
 	ld de, String_1316b
@@ -13992,7 +13993,7 @@
 	xor a
 	ld [wd0e3], a
 	hlcoord 1, 2
-	ld bc, $0812
+	lb bc, 8, SCREEN_WIDTH - 2
 	call ClearBox
 	jp .asm_12fe8
 ; 1305b
@@ -18408,8 +18409,8 @@
 	db 4, 8 ; rows/cols?
 	db 2 ; horizontal spacing?
 	dbw 0, PCItems
-	dbw BANK(Function24ab4), Function24ab4
-	dbw BANK(Function24ac3), Function24ac3
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
+	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
 	dbw BANK(Function244c3), Function244c3
 
 PC_DisplayText: ; 15a20
@@ -19096,7 +19097,7 @@
 	db 4, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, OBPals + 8 * 6
-	dbw BANK(Function24ab4), Function24ab4
+	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
 	dbw BANK(Function15e30), Function15e30
 	dbw BANK(Function244c3), Function244c3
 ; 15e30
@@ -20428,10 +20429,10 @@
 	and a
 	ret z
 
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ld a, [Options]
 	push af
 	set 4, a
@@ -20516,17 +20517,17 @@
 	pop af
 	ld [Options], a
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function222a
 	ret
 ; 16ca0
 
 Function16ca0: ; 16ca0
-	ld a, [$ffa9]
-	and $10
+	ld a, [hJoyLast]
+	and D_RIGHT
 	jr nz, .asm_16cb9
-	ld a, [$ffa9]
-	and $20
+	ld a, [hJoyLast]
+	and D_LEFT
 	jr nz, .asm_16cad
 	ret
 
@@ -20608,7 +20609,7 @@
 	xor a
 	call GetSRAMBank
 	ld hl, sScratch
-	ld bc, $0310
+	ld bc, $0310 ; 784
 	xor a
 	call ByteFill
 	ld hl, VTiles2 tile $31
@@ -20618,7 +20619,7 @@
 	ld b, a
 	call Get2bpp
 	call CloseSRAM
-	ld c, $14
+	ld c, 20
 	call DelayFrames
 	ret
 ; 16d57
@@ -20649,7 +20650,7 @@
 Function16dac: ; 16dac
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	hlcoord 7, 11
 	ld a, $31
@@ -21381,13 +21382,13 @@
 	push hl
 	push bc
 	hlcoord 0, 0
-	ld bc, $168
-	ld a, $7f
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	pop bc
 	pop hl
 	ld a, b
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	ld a, c
 	ld [$ffad], a
 	ld bc, $707
@@ -21590,7 +21591,7 @@
 	jr nz, .asm_1741a
 	ret
 
-Function17421: ; 17421
+Special_DayCareMon1: ; 17421
 	ld hl, UnknownText_0x17467
 	call PrintText
 	ld a, [wBreedMon1Species]
@@ -21603,7 +21604,7 @@
 	call Function1746c
 	jp PrintText
 
-Function17440: ; 17440
+Special_DayCareMon2: ; 17440
 	ld hl, UnknownText_0x17462
 	call PrintText
 	ld a, [wBreedMon2Species]
@@ -22592,7 +22593,7 @@
 	ld h, [hl]
 	ld l, a
 	set 0, [hl]
-	call Function1cfd
+	call GetMemTileCoord
 	call Function243cd
 	call Function1d19
 	call Function243cd
@@ -22950,7 +22951,7 @@
 	ld [wcf73], a
 	ld [hBGMapMode], a
 	inc a
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function2471a
 	call Function24764
 	call Function247dd
@@ -22963,21 +22964,21 @@
 
 Function245cb:: ; 245cb
 .loop
-	call Function24609
-	jp c, Function245d6
-	call z, Function245e1
+	call MenuJoyAction
+	jp c, .exit
+	call z, .zero
 	jr .loop
 ; 245d6
 
-Function245d6: ; 245d6
+.exit: ; 245d6
 	call Function1ff8
 	ld [wcf73], a
 	ld a, 0
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 ; 245e1
 
-Function245e1: ; 245e1
+.zero: ; 245e1
 	call Function245f1
 	ld a, 1
 	ld [hBGMapMode], a
@@ -23003,42 +23004,42 @@
 	ret
 ; 24609
 
-Function24609: ; 24609
-.asm_24609
+MenuJoyAction: ; 24609
+.loop
 	call Function1bd3
-	ld a, [$ffa9]
-	and $f0
+	ld a, [hJoyLast]
+	and D_PAD
 	ld b, a
 	ld a, [hJoyPressed]
-	and $f
+	and BUTTONS
 	or b
-	bit 0, a
-	jp nz, Function24644
-	bit 1, a
-	jp nz, Function2466f
-	bit 2, a
-	jp nz, Function24673
-	bit 3, a
-	jp nz, Function24695
-	bit 4, a
-	jp nz, Function246b5
-	bit 5, a
-	jp nz, Function246a1
-	bit 6, a
-	jp nz, Function246c9
-	bit 7, a
-	jp nz, Function246df
-	jr .asm_24609
+	bit 0, a ; A
+	jp nz, .a_button
+	bit 1, a ; B
+	jp nz, .b_button
+	bit 2, a ; Select
+	jp nz, .select
+	bit 3, a ; Start
+	jp nz, .start
+	bit 4, a ; Right
+	jp nz, .d_right
+	bit 5, a ; Left
+	jp nz, .d_left
+	bit 6, a ; Up
+	jp nz, .d_up
+	bit 7, a ; Down
+	jp nz, .d_down
+	jr .loop
 ; 24640
 
-Function24640: ; 24640
-	ld a, $ff
+.unreferenced: ; unreferenced
+	ld a, -1
 	and a
 	ret
 ; 24644
 
 
-Function24644: ; 24644
+.a_button: ; 24644
 	call Function1bee
 	ld a, [wcfa9]
 	dec a
@@ -23052,20 +23053,20 @@
 	ld [wcf77], a
 	ld [wd107], a
 	ld a, [MenuSelection]
-	cp $ff
-	jr z, Function2466f
-	ld a, $1
+	cp -1
+	jr z, .b_button
+	ld a, A_BUTTON
 	scf
 	ret
 ; 2466f
 
-Function2466f: ; 2466f
-	ld a, $2
+.b_button: ; 2466f
+	ld a, B_BUTTON
 	scf
 	ret
 ; 24673
 
-Function24673: ; 24673
+.select: ; 24673
 	ld a, [wcf91]
 	bit 7, a
 	jp z, xor_a_dec_a
@@ -23073,26 +23074,26 @@
 	dec a
 	call Function248d5
 	ld a, [MenuSelection]
-	cp $ff
+	cp -1
 	jp z, xor_a_dec_a
 	call Function246fc
 	dec a
 	ld [wcf77], a
-	ld a, $4
+	ld a, SELECT
 	scf
 	ret
 ; 24695
 
-Function24695: ; 24695
+.start: ; 24695
 	ld a, [wcf91]
 	bit 6, a
 	jp z, xor_a_dec_a
-	ld a, $8
+	ld a, START
 	scf
 	ret
 ; 246a1
 
-Function246a1: ; 246a1
+.d_left: ; 246a1
 	ld hl, wcfa6
 	bit 7, [hl]
 	jp z, xor_a_dec_a
@@ -23099,12 +23100,12 @@
 	ld a, [wcf91]
 	bit 3, a
 	jp z, xor_a_dec_a
-	ld a, $20
+	ld a, D_LEFT
 	scf
 	ret
 ; 246b5
 
-Function246b5: ; 246b5
+.d_right: ; 246b5
 	ld hl, wcfa6
 	bit 7, [hl]
 	jp z, xor_a_dec_a
@@ -23111,12 +23112,12 @@
 	ld a, [wcf91]
 	bit 2, a
 	jp z, xor_a_dec_a
-	ld a, $10
+	ld a, D_RIGHT
 	scf
 	ret
 ; 246c9
 
-Function246c9: ; 246c9
+.d_up: ; 246c9
 	ld hl, wcfa6
 	bit 7, [hl]
 	jp z, xor_a
@@ -23123,15 +23124,15 @@
 	ld hl, wd0e4
 	ld a, [hl]
 	and a
-	jr z, .asm_246dc
+	jr z, .xor_dec_up
 	dec [hl]
 	jp xor_a
 
-.asm_246dc
+.xor_dec_up
 	jp xor_a_dec_a
 ; 246df
 
-Function246df: ; 246df
+.d_down: ; 246df
 	ld hl, wcfa6
 	bit 7, [hl]
 	jp z, xor_a
@@ -23141,11 +23142,11 @@
 	ld b, a
 	ld a, [wd144]
 	cp b
-	jr c, .asm_246f9
+	jr c, .xor_dec_down
 	inc [hl]
 	jp xor_a
 
-.asm_246f9
+.xor_dec_down
 	jp xor_a_dec_a
 ; 246fc
 
@@ -23159,7 +23160,7 @@
 ; 24706
 
 Function24706: ; 24706 (9:4706)
-	call Function1cfd
+	call GetMemTileCoord
 	ld de, $14
 	add hl, de
 	ld de, $28
@@ -23326,7 +23327,7 @@
 	ld [hl], $61
 
 .asm_2480d
-	call Function1cfd
+	call GetMemTileCoord
 	ld bc, $0015
 	add hl, bc
 	ld a, [wcf92]
@@ -23759,10 +23760,10 @@
 	jr nz, Function24aab
 	ret
 
-Function24ab4: ; 0x24ab4
+PlaceMenuItemName: ; 0x24ab4
 	push de
 	ld a, [MenuSelection]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 	pop hl
 	call PlaceString
@@ -23769,7 +23770,7 @@
 	ret
 ; 0x24ac3
 
-Function24ac3: ; 0x24ac3
+PlaceMenuItemQuantity: ; 0x24ac3
 	push de
 	ld a, [MenuSelection]
 	ld [CurItem], a
@@ -23780,7 +23781,7 @@
 	jr nz, .done
 	ld de, $0015
 	add hl, de
-	ld [hl], $f1
+	ld [hl], "×"
 	inc hl
 	ld de, wcf75
 	lb bc, 1, 2
@@ -23807,7 +23808,7 @@
 
 Function24b01: ; 24b01
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	ld de, $0015
 	add hl, de
 	ld de, Money
@@ -23832,7 +23833,8 @@
 	db 1 ; default option
 ; 0x24b25
 
-Function24b25: ; 24b25
+Special_DisplayCoinCaseBalance: ; 24b25
+	; Place a text box of size 1x7 at 11, 0.
 	hlcoord 11, 0
 	ld b, 1
 	ld c, 7
@@ -23841,7 +23843,7 @@
 	ld de, CoinString
 	call PlaceString
 	hlcoord 17, 1
-	ld de, String24b8e
+	ld de, ShowMoney_TerminatorString
 	call PlaceString
 	ld de, Coins
 	lb bc, 2, 4
@@ -23850,10 +23852,10 @@
 	ret
 ; 24b4e
 
-Function24b4e: ; 24b4e
+Special_DisplayMoneyAndCoinBalance: ; 24b4e
 	hlcoord 5, 0
-	ld b, $3
-	ld c, $d
+	ld b, 3
+	ld c, 13
 	call TextBox
 	hlcoord 6, 1
 	ld de, MoneyString
@@ -23876,7 +23878,7 @@
 	db "MONEY@"
 CoinString: ; 24b89
 	db "COIN@"
-String24b8e: ; 24b8e
+ShowMoney_TerminatorString: ; 24b8e
 	db "@"
 ; 24b8f
 
@@ -23980,34 +23982,35 @@
 ; 24c64
 
 
-Function24c64: ; 24c64
+FindApricornsInBag: ; 24c64
+; Checks the bag for Apricorns.
 	ld hl, Buffer1
 	xor a
 	ld [hli], a
 	dec a
-	ld bc, $000a
+	ld bc, 10
 	call ByteFill
 
-	ld hl, ApricornBalls
-.asm_24c73
+	ld hl, .ApricornBalls
+.loop
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_24c8d
+	cp -1
+	jr z, .done
 	push hl
 	ld [CurItem], a
 	ld hl, NumItems
 	call CheckItem
 	pop hl
-	jr nc, .asm_24c89
+	jr nc, .nope
 	ld a, [hl]
-	call Function24c94
-.asm_24c89
+	call .addtobuffer
+.nope
 rept 2
 	inc hl
 endr
-	jr .asm_24c73
+	jr .loop
 
-.asm_24c8d
+.done
 	ld a, [Buffer1]
 	and a
 	ret nz
@@ -24015,7 +24018,7 @@
 	ret
 ; 24c94
 
-Function24c94: ; 24c94
+.addtobuffer: ; 24c94
 	push hl
 	ld hl, Buffer1
 	inc [hl]
@@ -24027,7 +24030,7 @@
 	ret
 ; 24ca0
 
-ApricornBalls: ; 24ca0
+.ApricornBalls: ; 24ca0
 	db RED_APRICORN, LEVEL_BALL
 	db BLU_APRICORN, LURE_BALL
 	db YLW_APRICORN, MOON_BALL
@@ -24035,7 +24038,7 @@
 	db WHT_APRICORN, FAST_BALL
 	db BLK_APRICORN, HEAVY_BALL
 	db PNK_APRICORN, LOVE_BALL
-	db $ff
+	db -1
 ; 24caf
 
 
@@ -24154,7 +24157,7 @@
 ; 24d91
 
 PopulateMonMenu: ; 24d91
-	call Function1cfd
+	call GetMemTileCoord
 	ld bc, $002a ; 42
 	add hl, bc
 	ld de, Buffer2
@@ -24301,7 +24304,7 @@
 	xor a
 	ld [Buffer1], a
 	ld hl, Buffer2
-	ld bc, $0009
+	ld bc, 9
 	call ByteFill
 	ret
 ; 24e76
@@ -24312,7 +24315,7 @@
 	ld d, $0
 	ld hl, Buffer2
 	add hl, de
-	ld [hl], $ff
+	ld [hl], -1
 	ret
 ; 24e83
 
@@ -24642,7 +24645,7 @@
 
 Function25072: ; 25072
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	ld de, $0015
 	add hl, de
 	ld [hl], $f1
@@ -24766,8 +24769,8 @@
 	ld a, [wcf63]
 	bit 7, a
 	jr nz, .asm_25132
-	ld a, [$ffa9]
-	and $2
+	ld a, [hJoyLast]
+	and B_BUTTON
 	jr nz, .asm_25132
 	call Function2518e
 	call DelayFrame
@@ -24862,9 +24865,9 @@
 
 Function251d7: ; 251d7 (9:51d7)
 	call Function25415
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $11
+	and D_RIGHT | A_BUTTON
 	jr nz, .asm_251e3
 	ret
 .asm_251e3
@@ -24903,12 +24906,12 @@
 Function25221: ; 25221 (9:5221)
 	ld hl, Unknown_254c9
 	call Function25438
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $1
+	and A_BUTTON
 	jr nz, Function25246
 	ld a, [hl]
-	and $20
+	and D_LEFT
 	jr nz, .asm_25235
 	ret
 .asm_25235
@@ -24952,12 +24955,12 @@
 Function25279: ; 25279 (9:5279)
 	ld hl, Unknown_254c9
 	call Function25438
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $20
+	and D_LEFT
 	jr nz, .asm_2528d
 	ld a, [hl]
-	and $10
+	and D_RIGHT
 	jr nz, .asm_25293
 	ret
 .asm_2528d
@@ -25429,7 +25432,7 @@
 ClearOakRatingBuffer: ; 0x2665a
 	push hl
 	ld a, "@"
-	ld bc, $000d
+	ld bc, ITEM_NAME_LENGTH
 	call ByteFill
 	pop hl
 	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
@@ -25727,8 +25730,8 @@
 	ld hl, StringBuffer2
 	xor a
 	ld [hli], a
-	ld bc, $c
-	ld a, $ff
+	ld bc, ITEM_NAME_LENGTH - 1
+	ld a, -1
 	call ByteFill
 	ret
 
@@ -28740,13 +28743,13 @@
 	ldcoord 9, 17
 .asm_28ae3
 	call Functiona57
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and a
 	jr z, .asm_28ae3
 	bit 0, a
 	jr nz, .asm_28b0b
 	push af
-	ld a, $7f
+	ld a, " "
 	ldcoord 9, 17
 	pop af
 	bit 6, a
@@ -28790,12 +28793,12 @@
 
 Function28b42: ; 28b42
 	hlcoord 0, 16
-	ld a, $7e
-	ld bc, $0028
+	ld a, "┘"
+	ld bc, 2 * SCREEN_WIDTH
 	call ByteFill
 	hlcoord 1, 16
-	ld a, $7f
-	ld bc, SCREEN_HEIGHT
+	ld a, " "
+	ld bc, SCREEN_WIDTH - 2
 	call ByteFill
 	hlcoord 2, 16
 	ld de, String_28b61
@@ -29372,7 +29375,7 @@
 	ld a, $1
 	ld [rVBK], a
 	ld hl, VTiles0
-	ld bc, $2000
+	ld bc, sScratch - VTiles0
 	xor a
 	call ByteFill
 	ld a, $0
@@ -29380,8 +29383,8 @@
 
 .asm_2900b
 	ld hl, VBGMap0
-	ld bc, $0800
-	ld a, $7f
+	ld bc, sScratch - VBGMap0
+	ld a, " "
 	call ByteFill
 	ld hl, TradeGameBoyLZ
 	ld de, VTiles2 tile $31
@@ -29689,8 +29692,8 @@
 	call DisableLCD
 	callab Function8cf53
 	ld hl, VBGMap0
-	ld bc, $0800
-	ld a, $7f
+	ld bc, sScratch - VBGMap0
+	ld a, " "
 	call ByteFill
 	xor a
 	ld [hSCX], a
@@ -29814,11 +29817,11 @@
 	call WhiteBGMap
 	call WaitTop
 	ld a, $9c
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	call ClearTileMap
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH
-	ld a, $7a
+	ld a, "─"
 	call ByteFill
 	hlcoord 0, 1
 	ld de, wc736
@@ -29827,7 +29830,7 @@
 	ld de, 0
 .asm_2931e
 	ld a, [hli]
-	cp $50
+	cp "@"
 	jr z, .asm_29326
 	dec de
 	jr .asm_2931e
@@ -29844,7 +29847,7 @@
 	call WaitBGMap
 	call WaitTop
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	call ClearTileMap
 	ret
 ; 29348
@@ -29955,7 +29958,7 @@
 Function293ea: ; 293ea
 	call WaitTop
 	ld a, $9c
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	call WaitBGMap
 	ld a, $7
 	ld [hWX], a
@@ -29964,7 +29967,7 @@
 	call DelayFrame
 	call WaitTop
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	call ClearTileMap
 	call Function2910f
 	ret
@@ -29980,7 +29983,7 @@
 
 .asm_29417
 	ld a, $9c
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	call WaitBGMap
 	ld a, $7
 	ld [hWX], a
@@ -29987,7 +29990,7 @@
 	ld a, $90
 	ld [hWY], a
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	call Function29114
 	ret
 ; 2942e
@@ -30174,7 +30177,7 @@
 	call WaitTop
 	call Function297cf
 	ld a, $9c
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	hlcoord 3, 0
 	ld b, $6
 	ld c, $d
@@ -30196,7 +30199,7 @@
 	call WaitTop
 	call Function297cf
 	ld a, $9c
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	hlcoord 3, 0
 	ld b, $6
 	ld c, $d
@@ -30218,7 +30221,7 @@
 	call WaitBGMap
 	call WaitTop
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	ret
 ; 295e3
 
@@ -30490,8 +30493,8 @@
 Function2975c: ; 2975c
 	call WaitTop
 	hlcoord 0, 10
-	ld bc, $00a0
-	ld a, $7f
+	ld bc, 8 * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	call WaitBGMap
 	ld hl, UnknownText_0x2977a
@@ -30566,7 +30569,7 @@
 Function297cf: ; 297cf
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	ret
 ; 297db
@@ -33335,10 +33338,10 @@
 
 Function2c76f: ; 2c76f (b:476f)
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function2c8d3
 	ld a, $0
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret nc
 	call Function1bee
 	call WaitBGMap
@@ -34878,7 +34881,7 @@
 	ld [hl], $3b
 	inc hl
 	ld bc, $0013
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	callba Function4424d
 	call EnableLCD
@@ -36140,23 +36143,23 @@
 	call Function44648
 	cp $a
 	jr nc, .asm_445be
-	ld bc, $002f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	ld hl, s0_a834 + 1
 	call AddNTimes
 	ld d, h
 	ld e, l
 	ld a, [CurPartyMon]
-	ld bc, $002f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	ld hl, s0_a600
 	call AddNTimes
 	push hl
 	ld a, BANK(s0_a834)
 	call GetSRAMBank
-	ld bc, $002f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call CopyBytes
 	pop hl
 	xor a
-	ld bc, $002f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call ByteFill
 	ld a, PartyMon1Item - PartyMon1
 	call GetPartyParamLocation
@@ -36178,7 +36181,7 @@
 	ld a, b
 	push bc
 	ld hl, s0_a834 + 1
-	ld bc, $2f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call AddNTimes
 	push hl
 	add hl, bc
@@ -36189,7 +36192,7 @@
 	cp $9
 	jr z, .asm_445e4
 	push bc
-	ld bc, $2f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call CopyBytes
 	pop bc
 	inc b
@@ -36198,7 +36201,7 @@
 	ld h, d
 	ld l, e
 	xor a
-	ld bc, $2f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call ByteFill
 	ld hl, s0_a834
 	dec [hl]
@@ -36208,7 +36211,7 @@
 Function445f4: ; 445f4
 	ld a, b
 	ld hl, s0_a834 + 1
-	ld bc, $2f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -36220,12 +36223,12 @@
 	call GetSRAMBank
 	push bc
 	ld a, b
-	ld bc, $2f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	ld hl, s0_a834 + 1
 	call AddNTimes
 	push hl
 	ld a, [CurPartyMon]
-	ld bc, $2f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	ld hl, s0_a600
 	call AddNTimes
 	ld d, h
@@ -36232,10 +36235,10 @@
 	ld e, l
 	pop hl
 	push hl
-	ld bc, $2f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call CopyBytes
 	pop hl
-	ld de, $2e
+	ld de, PartyMon1StatsEnd - PartyMon1Moves
 	add hl, de
 	ld d, [hl]
 	ld a, [CurPartyMon]
@@ -36274,7 +36277,7 @@
 	call GetSRAMBank
 	ld a, [CurPartyMon]
 	ld hl, s0_a600
-	ld bc, $002f
+	ld bc, PartyMon1StatsEnd - PartyMon1Item
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -36288,7 +36291,7 @@
 	ld c, a
 	ld a, b
 	call GetFarByte
-	cp $50
+	cp "@"
 	jr z, .asm_446ab
 	cp c
 	ld a, $0
@@ -37556,10 +37559,10 @@
 	call PlaceString
 	ld hl, MenuDataHeader_0x48509
 	call LoadMenuDataHeader
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	hlcoord 10, 5
 	ld b, $1
 	ld c, $8
@@ -37605,7 +37608,7 @@
 	hlcoord 11, 6
 	call Function487ec
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	jp Function4840c
 
 Function487ec: ; 487ec (12:47ec)
@@ -37643,7 +37646,7 @@
 	ld a, [hJoyPressed] ; $ff00+$a7
 	and B_BUTTON
 	jp nz, Function488b4
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .asm_48843
@@ -37759,10 +37762,10 @@
 	jp c, Function4840c
 	ld hl, MenuDataHeader_0x4850e
 	call LoadMenuDataHeader
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	hlcoord 10, 9
 	ld b, $1
 	ld c, $8
@@ -37797,7 +37800,7 @@
 	bit 1, a
 	jp nz, Function4896e
 	ld a, [DefaultFlypoint]
-	and $cf
+	and %11001111
 	res 7, a
 	ld [DefaultFlypoint], a
 	pop bc
@@ -37830,7 +37833,7 @@
 	jr asm_48972
 
 .asm_48965
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and a
 	jr z, asm_48972
 
@@ -37907,7 +37910,7 @@
 	ld bc, $108
 	call ClearBox
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	jp Function4840c
 
 Function489ea: ; 489ea (12:49ea)
@@ -38084,18 +38087,18 @@
 	dec a
 	jr .asm_48b25
 .asm_48b2c
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, .asm_48b8d
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, .asm_48b55
 	ld a, [hl]
-	and $20
+	and D_LEFT
 	jp nz, Function48bd7
 	ld a, [hl]
-	and $10
+	and D_RIGHT
 	jr nz, .asm_48b9d
 	hlcoord 11, 10
 	call Function489ea
@@ -38624,11 +38627,11 @@
 	call Function48000
 	call Functione5f
 	hlcoord 0, 0
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	ld a, $0
 	call ByteFill
 	hlcoord 0, 0, AttrMap
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	xor a
 	call ByteFill
 	ret
@@ -38847,7 +38850,7 @@
 
 Function49346: ; 49346 (12:5346)
 	hlcoord 0, 0, AttrMap
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	xor a
 	call ByteFill
 	ret
@@ -38905,7 +38908,7 @@
 	ld a, $3
 	call Function49336
 	hlcoord 0, 12, AttrMap
-	ld bc, $78
+	ld bc, 6 * SCREEN_WIDTH
 	ld a, $7
 	call ByteFill
 	ret
@@ -38977,7 +38980,7 @@
 	xor a
 	call ByteFill
 	hlcoord 0, 14, AttrMap
-	ld bc, $0050
+	ld bc, 4 * SCREEN_WIDTH
 	ld a, $7
 	call ByteFill
 	ld a, [DefaultFlypoint]
@@ -39361,7 +39364,7 @@
 	ld [hl], a
 	hlcoord 2, 17, AttrMap
 	ld a, $3
-	ld bc, $0006
+	ld bc, 6
 	call ByteFill
 	ret
 ; 49811
@@ -40745,17 +40748,17 @@
 ; 4a449 (12:6449)
 
 Function4a449: ; 4a449
-	ld bc, $003c
+	ld bc, 3 * SCREEN_WIDTH
 	ld a, $0
 	hlcoord 0, 0
 	call ByteFill
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	ld a, $1
 	call ByteFill
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	ld a, $0
 	call ByteFill
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	ld a, $1
 	call ByteFill
 	ld bc, SCREEN_WIDTH
@@ -40765,7 +40768,7 @@
 	ld a, $3
 	call ByteFill
 	ld bc, SCREEN_WIDTH
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	ret
 ; 4a485
@@ -41489,9 +41492,9 @@
 
 Function4a94e: ; 4a94e
 	call FadeToMenu
-	ld a, $ff
+	ld a, -1
 	ld hl, DefaultFlypoint
-	ld bc, $0003
+	ld bc, 3
 	call ByteFill
 	xor a
 	ld [wd018], a
@@ -41525,8 +41528,8 @@
 .asm_4a990
 	call Function2b3c
 	ld hl, DefaultFlypoint
-	ld a, $ff
-	ld bc, $0003
+	ld a, -1
+	ld bc, 3
 	call ByteFill
 	scf
 	jr .asm_4a9af
@@ -41743,15 +41746,15 @@
 
 	ld c, a
 	xor a
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 .loop
 	push bc
 	push hl
 	ld e, 0
 	callba Function8e83f
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	inc a
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	pop hl
 	pop bc
 	dec c
@@ -42455,8 +42458,8 @@
 
 Function4cf34: ; 4cf34
 	call GetSRAMBank
-	ld hl, $a000
-	ld bc, $2000
+	ld hl, sScratch
+	ld bc, StackBottom - sScratch
 	xor a
 	call ByteFill
 	call CloseSRAM
@@ -42503,7 +42506,7 @@
 Function4cf80: ; 4cf80 (13:4f80)
 	ld [hSPBuffer], sp ; $ffd9
 	ld sp, hl
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	ld h, a
 	ld l, $0
 	ld a, $12
@@ -42723,7 +42726,7 @@
 Function4d1cb: ; 4d1cb
 	ld [hSPBuffer], sp
 	ld sp, hl
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	ld h, a
 	ld l, $0
 	ld a, $12
@@ -43013,7 +43016,7 @@
 	call Function4d50f
 	push de
 	ld hl, StringBuffer2
-	ld bc, $0005
+	ld bc, 5
 	xor a
 	call ByteFill
 	ld a, $4
@@ -43024,12 +43027,12 @@
 	call Function4d468
 .asm_4d43a
 	call Functiona57
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	ld b, a
-	and $1
+	and A_BUTTON
 	jr nz, .asm_4d453
 	ld a, b
-	and $f0
+	and D_PAD
 	jr z, .asm_4d43a
 	call Function4d490
 	ld c, $3
@@ -43071,8 +43074,8 @@
 	dec c
 	jr nz, .asm_4d470
 	hlcoord 14, 16
-	ld bc, $0005
-	ld a, $7f
+	ld bc, 5
+	ld a, " "
 	call ByteFill
 	hlcoord 14, 16
 	ld a, [StringBuffer2 + 5]
@@ -43629,7 +43632,7 @@
 	db "@"
 ; 0x4d9d3
 
-Function4d9d3: ; 4d9d3
+Special_PrintTodaysLuckyNumber: ; 4d9d3
 	ld hl, StringBuffer3
 	ld de, wLuckyIDNumber
 	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
@@ -45520,7 +45523,7 @@
 	call Functiona57
 	ld a, [hJoyDown]
 	pop bc
-	and $2
+	and B_BUTTON
 	jr nz, .asm_4e78c
 .asm_4e787
 	dec c
@@ -45654,8 +45657,8 @@
 	call Functione51
 	call Functione58
 	ld hl, VBGMap0
-	ld bc, $400
-	ld a, $7f
+	ld bc, VBGMap1 - VBGMap0
+	ld a, " "
 	call ByteFill
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -45687,8 +45690,8 @@
 	call Functione51
 	call Functione58
 	ld hl, VBGMap0
-	ld bc, $400
-	ld a, $7f
+	ld bc, VBGMap1 - VBGMap0
+	ld a, " "
 	call ByteFill
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -45697,9 +45700,9 @@
 	ld hl, wd000
 	ld c, $40
 .asm_4e8ee
-	ld a, $ff
+	ld a, -1
 	ld [hli], a
-	ld a, $7f
+	ld a, " "
 	ld [hli], a
 	dec c
 	jr nz, .asm_4e8ee
@@ -45718,8 +45721,8 @@
 	ld a, $6
 	ld [rSVBK], a
 	ld hl, w6_d000
-	ld bc, $400
-	ld a, $7f
+	ld bc, w6_d400 - w6_d000
+	ld a, " "
 	call ByteFill
 	ld hl, VBGMap0
 	ld de, w6_d000
@@ -45902,7 +45905,7 @@
 Function4e9e5: ; 4e9e5
 	ld hl, LYOverrides
 	ld a, $90
-	ld bc, $0090
+	ld bc, SCREEN_HEIGHT_PX
 	call ByteFill
 	ret
 ; 4e9f1
@@ -46674,7 +46677,7 @@
 	ret z
 	ld c, a
 	xor a
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 .asm_503ea
 	push bc
 	push hl
@@ -46682,9 +46685,9 @@
 	ld a, BANK(Function8e83f)
 	ld e, $0
 	rst FarCall
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	inc a
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	pop hl
 	pop bc
 	dec c
@@ -46764,7 +46767,7 @@
 	cp b
 	jr z, .exitmenu ; CANCEL
 	ld [wd0d8], a
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	ld b, a
 	bit 1, b
 	jr nz, .exitmenu ; B button?
@@ -48401,10 +48404,10 @@
 Function50f34: ; 50f34 (14:4f34)
 	push af
 	hlcoord 0, 1
-	ld bc, $28
+	ld bc, 2 * SCREEN_WIDTH
 	call AddNTimes
-	ld bc, $28
-	ld a, $7f
+	ld bc, 2 * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	pop af
 	ld hl, Sprites
@@ -49239,7 +49242,7 @@
 	ret z
 
 	ld c, a
-	and $f0
+	and D_PAD
 	ret nz
 
 	ld a, c
@@ -49551,14 +49554,14 @@
 
 	call CheckWaterPermissions
 	ld [wd040], a
-	jr c, .asm_801f1
+	jr c, .bump
 
 	call IsNPCInFront
 	ld [wd03f], a
 	and a
-	jr z, .asm_801f1
+	jr z, .bump
 	cp 2
-	jr z, .asm_801f1
+	jr z, .bump
 
 	ld a, [wd040]
 	and a
@@ -49578,7 +49581,7 @@
 	scf
 	ret
 
-.asm_801f1
+.bump
 	xor a
 	ret
 ; 801f3
@@ -50315,10 +50318,10 @@
 	ret z
 
 .asm_818b5
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call DisableLCD
 	call Function81948
 	call Function8197c
@@ -50342,7 +50345,7 @@
 
 .asm_818f0
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 ; 818f4
 
@@ -50411,13 +50414,13 @@
 	ld a, $1
 	ld [rVBK], a
 	ld hl, VTiles0
-	ld bc, $2000
+	ld bc, sScratch - VTiles0
 	xor a
 	call ByteFill
 	ld a, $0
 	ld [rVBK], a
 	ld hl, VTiles0
-	ld bc, $2000
+	ld bc, sScratch - VTiles0
 	xor a
 	call ByteFill
 	hlcoord 0, 0, AttrMap
@@ -50593,12 +50596,12 @@
 	ld a, [wcf63]
 	cp $4
 	jr nc, .asm_81a8b
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $4
+	and SELECT
 	jr nz, .asm_81a9a
 	ld a, [hl]
-	and $8
+	and START
 	jr nz, .asm_81aab
 
 .asm_81a8b
@@ -50671,17 +50674,17 @@
 	ld a, $6f
 	call ByteFill
 	hlcoord 1, 3
-	ld bc, $0712
+	lb bc, 7, 18
 	ld a, $6c
-	call Function81efc
+	call Bank20_FillBoxWithByte
 	hlcoord 11, 0
-	ld bc, $0203
+	lb bc, 2, 3
 	ld a, $6d
-	call Function81efc
+	call Bank20_FillBoxWithByte
 	hlcoord 16, 0
-	ld bc, $0203
+	lb bc, 2, 3
 	ld a, $6e
-	call Function81efc
+	call Bank20_FillBoxWithByte
 	call Function81bc0
 	call Function81bf4
 	ld a, [wcf66]
@@ -50904,11 +50907,11 @@
 ; 81cc2
 
 Function81cc2: ; 81cc2
-	ld a, [$ffa9]
-	and $2
+	ld a, [hJoyLast]
+	and B_BUTTON
 	jr nz, .asm_81cdf
-	ld a, [$ffa9]
-	and $1
+	ld a, [hJoyLast]
+	and A_BUTTON
 	jr nz, .asm_81ce5
 	ld a, [wcf64]
 	and $3
@@ -50953,15 +50956,15 @@
 ; 81d0a
 
 Function81d0a: ; 81d0a
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, Function81d89
 	ld a, [hl]
-	and $20
+	and D_LEFT
 	jr nz, .asm_81d1d
 	ld a, [hl]
-	and $10
+	and D_RIGHT
 	jr nz, .asm_81d28
 	ret
 
@@ -50980,40 +50983,40 @@
 	ret
 
 Function81d34: ; 81d34
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, Function81d89
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, Function81d84
 	ld hl, wc608 + 10
 	jr Function81d63
 
 Function81d46: ; 81d46
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, Function81d89
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, Function81d84
 	ld hl, wc608 + 11
 	jr Function81d63
 
 Function81d58: ; 81d58
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, Function81d84
 	ld hl, wc608 + 12
 
 Function81d63: ; 81d63
-	ld a, [$ffa9]
-	and $10
+	ld a, [hJoyLast]
+	and D_RIGHT
 	jr nz, Function81d70
-	ld a, [$ffa9]
-	and $20
+	ld a, [hJoyLast]
+	and D_LEFT
 	jr nz, Function81d77
 	ret
 
@@ -51066,7 +51069,7 @@
 Function81daf: ; 81daf
 	ld hl, hJoyPressed
 	ld a, [hl]
-	and $2
+	and B_BUTTON
 	jr nz, .asm_81dbb
 	call Function81dc7
 	ret
@@ -51084,12 +51087,12 @@
 ; 81dc7
 
 Function81dc7: ; 81dc7
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, .asm_81dd5
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, .asm_81de2
 	ret
 
@@ -51284,20 +51287,21 @@
 	ret
 ; 81efc
 
-Function81efc: ; 81efc
-.asm_81efc
+Bank20_FillBoxWithByte: ; 81efc
+; For some reason, we have another copy of FillBoxWithByte here
+.row
 	push bc
 	push hl
-.asm_81efe
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_81efe
+	jr nz, .col
 	pop hl
 	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_81efc
+	jr nz, .row
 	ret
 ; 81f0c
 
@@ -51382,7 +51386,7 @@
 	jr z, .asm_81f8d
 	dec a
 	hlcoord 1, 11
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	call AddNTimes
 	ld [hl], $ed
 
@@ -51466,7 +51470,7 @@
 	lb bc, BANK(DebugColorTestGFX), 1
 	call Request2bpp
 	ld a, $9c
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $6f
@@ -51532,7 +51536,7 @@
 Function82203: ; 82203
 	ld a, $6a
 	ld [hli], a
-	ld bc, $000f
+	ld bc, $10 - 1
 	ld a, $6b
 	call ByteFill
 	ret
@@ -51563,12 +51567,12 @@
 
 
 Function82236: ; 82236
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $4
+	and SELECT
 	jr nz, .loop7
 	ld a, [hl]
-	and $2
+	and B_BUTTON
 	jr nz, .asm_82299
 	call Function822f0
 	ret
@@ -51660,7 +51664,7 @@
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_82301
+	ld hl, .jumptable
 rept 2
 	add hl, de
 endr
@@ -51670,7 +51674,7 @@
 	jp [hl]
 ; 82301
 
-Jumptable_82301: ; 82301
+.jumptable: ; 82301
 	dw Function82309
 	dw Function82339
 	dw Function8234b
@@ -51678,15 +51682,15 @@
 ; 82309
 
 Function82309: ; 82309
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, Function8238c
 	ld a, [hl]
-	and $20
+	and D_LEFT
 	jr nz, .asm_8231c
 	ld a, [hl]
-	and $10
+	and D_RIGHT
 	jr nz, .asm_82322
 	ret
 
@@ -51714,40 +51718,40 @@
 	ret
 
 Function82339: ; 82338
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, Function8238c
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, Function82387
 	ld hl, wc608 + 10
 	jr Function82368
 
 Function8234b: ; 8234b
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, Function8238c
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, Function82387
 	ld hl, wc608 + 11
 	jr Function82368
 
 Function8235d: ; 8235d
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, Function82387
 	ld hl, wc608 + 12
 
 Function82368: ; 82368
-	ld a, [$ffa9]
-	and $10
+	ld a, [hJoyLast]
+	and D_RIGHT
 	jr nz, .asm_82375
-	ld a, [$ffa9]
-	and $20
+	ld a, [hJoyLast]
+	and D_LEFT
 	jr nz, .asm_8237c
 	ret
 
@@ -52836,7 +52840,7 @@
 
 Function846f6: ; 846f6
 	ld a, [hJoyDown]
-	and $2
+	and B_BUTTON
 	jr nz, .asm_846fe
 	and a
 	ret
@@ -52890,7 +52894,7 @@
 	ld [hJoyReleased], a
 	ld [hJoyPressed], a
 	ld [hJoyDown], a
-	ld [$ffa9], a
+	ld [hJoyLast], a
 	ret
 ; 8474c
 
@@ -53025,13 +53029,13 @@
 	xor a
 	ld [wd002], a
 	hlcoord 0, 0
-	ld bc, $168
-	ld a, $7f
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	call Function84a0e
 	hlcoord 0, 0
-	ld bc, $b4
-	ld a, $7f
+	ld bc, 9 * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	call Function849e9
 	call Function849d7
@@ -53060,8 +53064,8 @@
 
 Function8486f: ; 8486f (21:486f)
 	hlcoord 0, 0
-	ld bc, $168
-	ld a, $7f
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	call Function84a0e
 	call Function849e9
@@ -53077,8 +53081,8 @@
 
 Function84893: ; 84893 (21:4893)
 	hlcoord 0, 0
-	ld bc, $168
-	ld a, $7f
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	call Function84a0e
 	call Function849e9
@@ -53094,8 +53098,8 @@
 
 Function848b7: ; 848b7 (21:48b7)
 	hlcoord 0, 0
-	ld bc, $168
-	ld a, $7f
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, " "
 	call ByteFill
 	call Function84a0e
 	hlcoord 1, 15
@@ -53132,7 +53136,7 @@
 	push de
 	push hl
 	ld bc, $10
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	pop hl
 	push hl
@@ -53153,7 +53157,7 @@
 	ld [hli], a
 	push hl
 	ld bc, $e
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	pop hl
 	push hl
@@ -53474,7 +53478,7 @@
 	ld c, 0
 .next
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .done
 	cp EGG
 	jr nz, .mon
@@ -53567,7 +53571,7 @@
 	predef GetUnownLetter
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	ld de, VTiles2 tile $31
 	predef GetBackpic
@@ -53591,7 +53595,7 @@
 	ld [wc2c6], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	hlcoord 6, 5
 	call Function378b
@@ -53649,15 +53653,15 @@
 	jr c, .asm_86690
 .asm_8666e
 	call Functiona57
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $2
+	and B_BUTTON
 	jr nz, .asm_8668e
 	ld a, [hl]
-	and $1
+	and A_BUTTON
 	jr nz, .asm_86688
 	ld a, [hl]
-	and $8
+	and START
 	jr nz, .asm_86690
 	call DelayFrame
 	jr .asm_8666e
@@ -53787,19 +53791,19 @@
 	ld a, [hli]
 	ld [TempMonLevel], a
 	ld de, StringBuffer2
-	ld bc, $000a
+	ld bc, 10
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [StringBuffer2 + 10], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	hlcoord 0, 0
-	ld bc, $0312
+	lb bc, 3, SCREEN_WIDTH - 2
 	call TextBox
 	hlcoord 0, 12
-	ld bc, $0412
+	lb bc, 4, SCREEN_WIDTH - 2
 	call TextBox
 	ld a, [TempMonSpecies]
 	ld [CurPartySpecies], a
@@ -53866,13 +53870,13 @@
 	call Request2bpp
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	callba GetPlayerBackpic
 	ld a, $31
 	ld [$ffad], a
 	hlcoord 6, 6
-	ld bc, $0606
+	lb bc, 6, 6
 	predef FillBox
 	ld a, $d0
 	ld [hSCY], a
@@ -53890,7 +53894,7 @@
 	ld [wc2c6], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	callba Function88840
 	xor a
@@ -53950,417 +53954,16 @@
 
 SECTION "bank22", ROMX, BANK[$22]
 
-Function88000: ; 88000
-	ld hl, UnknownText_0x88007
-	call PrintText
-	ret
-; 88007
+INCLUDE "event/kurt.asm"
 
-UnknownText_0x88007: ; 0x88007
-	; Which APRICORN should I use?
-	text_jump UnknownText_0x1bc06b
-	db "@"
-; 0x8800c
-
-Function8800c: ; 8800c
-	ld hl, UnknownText_0x88013
-	call PrintText
-	ret
-; 88013
-
-UnknownText_0x88013: ; 0x88013
-	; How many should I make?
-	text_jump UnknownText_0x1bc089
-	db "@"
-; 0x88018
-
-Function88018: ; 88018
-	call Function1d6e
-	ld c, $1
-	xor a
-	ld [wd0e4], a
-	ld [wdca4], a
-.asm_88024
-	push bc
-	call Function88000
-	pop bc
-	ld a, c
-	ld [MenuSelection], a
-	call Function88055
-	ld a, c
-	ld [ScriptVar], a
-	and a
-	jr z, .asm_88051
-	ld [CurItem], a
-	ld a, [wcfa9]
-	ld c, a
-	push bc
-	call Function8800c
-	call Function880c2
-	pop bc
-	jr nc, .asm_88024
-	ld a, [wd10c]
-	ld [wdca4], a
-	call Function88161
-
-.asm_88051
-	call Function1d7d
-	ret
-; 88055
-
-Function88055: ; 88055
-	callba Function24c64
-	jr c, .asm_88083
-	ld hl, MenuDataHeader_0x88086
-	call CopyMenuDataHeader
-	ld a, [MenuSelection]
-	ld [wcf88], a
-	xor a
-	ld [hBGMapMode], a
-	call Function352f
-	call UpdateSprites
-	call Function350c
-	ld a, [wcf73]
-	cp $2
-	jr z, .asm_88083
-	ld a, [MenuSelection]
-	cp $ff
-	jr nz, .asm_88084
-
-.asm_88083
-	xor a
-
-.asm_88084
-	ld c, a
-	ret
-; 88086
-
-MenuDataHeader_0x88086: ; 0x88086
-	db $40 ; flags
-	db 01, 01 ; start coords
-	db 10, 13 ; end coords
-	dw MenuData2_0x8808f
-	db 1 ; default option
-; 0x8808e
-
-	db 0
-
-MenuData2_0x8808f: ; 0x8808f
-	db $10 ; flags
-	db 4, 7
-	db 1
-	dbw 0, wd1ea
-	dbw BANK(Function8809f), Function8809f
-	dbw BANK(Function880ab), Function880ab
-	dbw BANK(NULL), NULL
-
-Function8809f: ; 8809f
-	ld a, [MenuSelection]
-	and a
-	ret z
-	callba Function24ab4
-	ret
-; 880ab
-
-Function880ab: ; 880ab
-	ld a, [MenuSelection]
-	ld [CurItem], a
-	call Function88139
-	ret z
-	ld a, [wd10c]
-	ld [wcf75], a
-	callba Function24ac3
-	ret
-; 880c2
-
-Function880c2: ; 880c2
-	ld a, [CurItem]
-	ld [MenuSelection], a
-	call Function88139
-	jr z, .asm_88109
-	ld a, [wd10c]
-	ld [wd10d], a
-	ld a, $1
-	ld [wd10c], a
-	ld hl, MenuDataHeader_0x8810d
-	call LoadMenuDataHeader
-.asm_880de
-	xor a
-	ld [hBGMapMode], a
-	call Function1cbb
-	call UpdateSprites
-	call Function88116
-	call Function88126
-	call Function321c
-	callba Function27a28
-	jr nc, .asm_880de
-	push bc
-	call PlayClickSFX
-	pop bc
-	ld a, b
-	cp $ff
-	jr z, .asm_88109
-	ld a, [wd10c]
-	ld [wd10c], a
-	scf
-
-.asm_88109
-	call WriteBackup
-	ret
-; 8810d
-
-MenuDataHeader_0x8810d: ; 0x8810d
-	db $40 ; flags
-	db 09, 06 ; start coords
-	db 12, 19 ; end coords
-
-	db 0, 0, -1, 0 ; XXX
-
-Function88116: ; 88116
-	call Function1cfd
-	ld de, $0015
-	add hl, de
-	ld d, h
-	ld e, l
-	callba Function24ab4
-	ret
-; 88126
-
-Function88126: ; 88126
-	call Function1cfd
-	ld de, $0032
-	add hl, de
-	ld [hl], $f1
-	inc hl
-	ld de, wd10c
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	jp PrintNum
-; 88139
-
-Function88139: ; 88139
-	push bc
-	ld hl, NumItems
-	ld a, [CurItem]
-	ld c, a
-	ld b, $0
-.asm_88143
-	inc hl
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_88153
-	cp c
-	jr nz, .asm_88143
-	ld a, [hl]
-	add b
-	ld b, a
-	jr nc, .asm_88143
-	ld b, $ff
-
-.asm_88153
-	ld a, b
-	sub $63
-	jr c, .asm_8815a
-	ld b, $63
-
-.asm_8815a
-	ld a, b
-	ld [wd10c], a
-	and a
-	pop bc
-	ret
-; 88161
-
-Function88161: ; 88161
-	push de
-	push bc
-	ld hl, NumItems
-	ld a, [CurItem]
-	ld c, a
-	ld e, $0
-	xor a
-	ld [wd107], a
-	ld a, $ff
-	ld [DefaultFlypoint], a
-.asm_88175
-	ld a, [wd107]
-	inc a
-	ld [wd107], a
-	inc hl
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_88198
-	cp c
-	jr nz, .asm_88175
-	ld d, $0
-	push hl
-	ld hl, DefaultFlypoint
-	add hl, de
-	inc e
-	ld a, [wd107]
-	dec a
-	ld [hli], a
-	ld a, $ff
-	ld [hl], a
-	pop hl
-	jr .asm_88175
-
-.asm_88198
-	ld a, e
-	and a
-	jr z, .asm_881fa
-	dec a
-	jr z, .asm_881d0
-	ld hl, DefaultFlypoint
-.asm_881a2
-	ld a, [hl]
-	ld c, a
-	push hl
-.asm_881a5
-	inc hl
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_881c9
-	ld b, a
-	ld a, c
-	call Function88201
-	ld e, a
-	ld a, b
-	call Function88201
-	sub e
-	jr z, .asm_881bc
-	jr c, .asm_881c0
-	jr .asm_881a5
-
-.asm_881bc
-	ld a, c
-	sub b
-	jr nc, .asm_881a5
-
-.asm_881c0
-	ld a, c
-	ld c, b
-	ld [hl], a
-	ld a, c
-	pop hl
-	ld [hl], a
-	push hl
-	jr .asm_881a5
-
-.asm_881c9
-	pop hl
-	inc hl
-	ld a, [hl]
-	cp $ff
-	jr nz, .asm_881a2
-
-.asm_881d0
-	ld hl, DefaultFlypoint
-.asm_881d3
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_881fa
-	push hl
-	ld [wd107], a
-	call Function88211
-	pop hl
-	ld a, [wd10c]
-	and a
-	jr z, .asm_881fa
-	push hl
-	ld a, [hli]
-	ld c, a
-.asm_881e9
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_881f6
-	cp c
-	jr c, .asm_881e9
-	dec a
-	dec hl
-	ld [hli], a
-	jr .asm_881e9
-
-.asm_881f6
-	pop hl
-	inc hl
-	jr .asm_881d3
-
-.asm_881fa
-	ld a, [wd10c]
-	and a
-	pop bc
-	pop de
-	ret
-; 88201
-
-Function88201: ; 88201
-	push hl
-	push bc
-	ld hl, NumItems
-	inc hl
-	ld c, a
-	ld b, $0
-rept 2
-	add hl, bc
-endr
-	inc hl
-	ld a, [hl]
-	pop bc
-	pop hl
-	ret
-; 88211
-
-Function88211: ; 88211
-	push bc
-	ld hl, NumItems
-	ld a, [wd107]
-	ld c, a
-	ld b, $0
-	inc hl
-rept 2
-	add hl, bc
-endr
-	ld a, [CurItem]
-	ld c, a
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_88243
-	cp c
-	jr nz, .asm_88243
-	ld a, [wd10c]
-	ld c, a
-	ld a, [hl]
-	sub c
-	ld b, c
-	jr nc, .asm_88235
-	add c
-	ld b, a
-
-.asm_88235
-	push bc
-	ld hl, NumItems
-	ld a, b
-	ld [wd10c], a
-	call TossItem
-	pop bc
-	ld a, c
-	sub b
-
-.asm_88243
-	ld [wd10c], a
-	pop bc
-	ret
-; 88248
-
-
 Function88248: ; 88248
-	ld c, $c
+	ld c, CAL
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_88253
-	ld c, $e
+	jr z, .okay
+	ld c, KAREN
 
-.asm_88253
+.okay
 	ld a, c
 	ld [TrainerClass], a
 	ret
@@ -54416,9 +54019,9 @@
 	ld hl, ChrisNameMenuHeader
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .GotClass
+	jr z, .GotGender
 	ld hl, KrisNameMenuHeader
-.GotClass
+.GotGender
 	call LoadMenuDataHeader
 	call InterpretMenu2
 	ld a, [wcfa9]
@@ -54646,6587 +54249,18 @@
 	db "-----@"
 ; 8911c
 
-String_8911c: ; 8911c
-	db   "でんわばんごうが ただしく"   ; Phone number is not
-	next "はいって いません!@"         ; entered correctly!
-; 89135
-
-String_89135: ; 89135
-	db   "データが かわって いますが"  ; The data has changed.
-	next "かきかえないで やめますか?@" ; Quit anyway?
-; 89153
-
-String_89153: ; 89153
-	db   "メッセージは ありません@"    ; No message
-; 89160
-
-Function89160: ; 89160
-	push af
-	ld a, $4
-	call GetSRAMBank
-	pop af
-	ret
-; 89168
-
-
-Function89168: ; 89168 (22:5168)
-	ld hl, GameTimerPause
-	set 7, [hl]
-	ret
-
-Function8916e: ; 8916e (22:516e)
-	ld hl, GameTimerPause
-	res 7, [hl]
-	ret
-
-Function89174: ; 89174 (22:5174)
-	ld hl, GameTimerPause
-	bit 7, [hl]
-	ret
-
-Function8917a: ; 8917a (22:517a)
-	ld hl, DefaultFlypoint
-	ld bc, $32
-	xor a
-	call ByteFill
-	ret
-
-Function89185: ; 89185 (22:5185)
-; Compares c bytes starting at de and hl and incrementing together until a match is found.
-	push de
-	push hl
-.loop
-	ld a, [de]
-	inc de
-	cp [hl]
-	jr nz, .done
-	inc hl
-	dec c
-	jr nz, .loop
-.done
-	pop hl
-	pop de
-	ret
-
-Function89193: ; 89193
-; Copies c bytes from hl to de.
-	push de
-	push hl
-.loop
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .loop
-	pop hl
-	pop de
-	ret
-; 8919e
-
-
-Function8919e: ; 8919e (22:519e)
-; Searches for the c'th string starting at de.  Returns the pointer in de.
-	ld a, c
-	and a
-	ret z
-.loop
-	ld a, [de]
-	inc de
-	cp "@"
-	jr nz, .loop
-	dec c
-	jr nz, .loop
-	ret
-
-Function891ab: ; 891ab
-	call Function89240
-	callba Function104061
-	call Function8923c
-	ret
-; 891b8
-
-Function891b8: ; 891b8
-	call Function8923c
-	hlcoord 0, 0
-	ld a, $7f
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	call DelayFrame
-	ret
-; 891ca
-
-
-Function891ca: ; 891ca (22:51ca)
-	push bc
-	call Function891b8
-	call WaitBGMap
-	pop bc
-	ret
-
-Function891d3: ; 891d3 (22:51d3)
-	push bc
-	call Function891ca
-	ld c, $10
-	call DelayFrames
-	pop bc
-	ret
-
-Function891de: ; 891de
-	call Function8923c
-	call ClearPalettes
-	hlcoord 0, 0, AttrMap
-	ld a, $7
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	hlcoord 0, 0
-	ld a, $7f
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	call Function891ab
-	ret
-; 891fe
-
-Function891fe: ; 891fe
-	push bc
-	call Function891de
-	ld c, $10
-	call DelayFrames
-	pop bc
-	ret
-; 89209
-
-Function89209: ; 89209
-	ld a, 1
-	ld [wc2ce], a
-	ret
-; 8920f
-
-Function8920f: ; 8920f
-	ld a, 0
-	ld [wc2ce], a
-	ret
-; 89215
-
-Function89215: ; 89215
-	push hl
-	push bc
-	ld bc, AttrMap - TileMap
-	add hl, bc
-	ld [hl], a
-	pop bc
-	pop hl
-	ret
-; 8921f
-
-
-Function8921f: ; 8921f (22:521f)
-	push de
-	ld de, SCREEN_WIDTH
-	add hl, de
-	inc hl
-	ld a, $7f
-.loop
-	push bc
-	push hl
-.asm_89229
-	ld [hli], a
-	dec c
-	jr nz, .asm_89229
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .loop
-	pop de
-	ret
-
-Function89235: ; 89235 (22:5235)
-	call Functiona36
-	call PlayClickSFX
-	ret
-
-Function8923c: ; 8923c
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 89240
-
-Function89240: ; 89240
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-; 89245
-
-
-Function89245: ; 89245 (22:5245)
-	callba TryLoadSaveFile
-	ret c
-	callba Function150b9
-	and a
-	ret
-
-Function89254: ; 89254 (22:5254)
-	ld bc, $d07
-	jr Function89261
-
-Function89259: ; 89259
-	ld bc, $0e07
-	jr Function89261
-
-Function8925e: ; 8925e
-	ld bc, $0e0c
-
-Function89261: ; 89261
-	push af
-	push bc
-	ld hl, MenuDataHeader_0x892a3
-	call CopyMenuDataHeader
-	pop bc
-	ld hl, wcf82
-	ld a, c
-	ld [hli], a
-	ld a, b
-	ld [hli], a
-	ld a, c
-	add $4
-	ld [hli], a
-	ld a, b
-	add $5
-	ld [hl], a
-	pop af
-	ld [wcf88], a
-	call Function1c00
-	call Function8923c
-	call Function89209
-	call InterpretMenu2
-	push af
-	ld c, $a
-	call DelayFrames
-	call WriteBackup
-	call Function8920f
-	pop af
-	jr c, .done
-	ld a, [wcfa9]
-	cp $2
-	jr z, .done
-	and a
-	ret
-
-.done
-	scf
-	ret
-; 892a3
-
-MenuDataHeader_0x892a3: ; 0x892a3
-	db $40 ; flags
-	db 05, 10 ; start coords
-	db 09, 15 ; end coords
-	dw MenuData2_0x892ab
-	db 1 ; default option
-; 0x892ab
-
-MenuData2_0x892ab: ; 0x892ab
-	db $c0 ; flags
-	db 2 ; items
-	db "はい@"
-	db "いいえ@"
-; 0x892b4
-
-Function892b4: ; 892b4 (22:52b4)
-	call Function8931b
-
-Function892b7: ; 892b7
-	ld d, b
-	ld e, c
-	ld hl, 0
-	add hl, bc
-	ld a, "@"
-	ld bc, 6
-	call ByteFill
-	ld b, d
-	ld c, e
-	ld hl, 6
-	add hl, bc
-	ld a, "@"
-	ld bc, 6
-	call ByteFill
-	ld b, d
-	ld c, e
-	ld hl, 12
-	add hl, bc
-	xor a
-	ld [hli], a
-	ld [hl], a
-	ld hl, 14
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	ld hl, 16
-	add hl, bc
-	ld [hl], a
-	ld hl, 17
-	add hl, bc
-	ld a, -1
-	ld bc, 8
-	call ByteFill
-	ld b, d
-	ld c, e
-	ld e, 6
-	ld hl, 25
-	add hl, bc
-.loop
-	ld a, -1
-	ld [hli], a
-	ld a, -1
-	ld [hli], a
-	dec e
-	jr nz, .loop
-	ret
-; 89305
-
-
-Function89305: ; 89305 (22:5305)
-	xor a
-	ld [MenuSelection], a
-	ld c, 40
-.loop
-	ld a, [MenuSelection]
-	inc a
-	ld [MenuSelection], a
-	push bc
-	call Function892b4
-	pop bc
-	dec c
-	jr nz, .loop
-	ret
-
-Function8931b: ; 8931b
-	push hl
-	ld hl, $a03b
-	ld a, [MenuSelection]
-	dec a
-	ld bc, $0025
-	call AddNTimes
-	ld b, h
-	ld c, l
-	pop hl
-	ret
-; 8932d
-
-Function8932d: ; 8932d
-	ld hl, 0
-	add hl, bc
-
-Function89331: ; 89331
-; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.  Sets carry if it does not find a nonspace character.  Returns the location of the following character in hl.
-	push bc
-	ld c, 5
-.loop
-	ld a, [hli]
-	cp "@"
-	jr z, .terminator
-	cp " "
-	jr nz, .nonspace
-	dec c
-	jr nz, .loop
-
-.terminator
-	scf
-	jr .done
-
-.nonspace
-	and a
-
-.done
-	pop bc
-	ret
-; 89346
-
-
-Function89346: ; 89346 (22:5346)
-	ld h, b
-	ld l, c
-	jr _incave
-
-Function8934a: ; 8934a
-	ld hl, 6
-	add hl, bc
-_incave:
-; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.  Sets carry if it does not find a nonspace character.  Returns the location of the following character in hl.
-	push bc
-	ld c, 5
-.loop
-	ld a, [hli]
-	cp "@"
-	jr z, .terminator
-	cp " "
-	jr nz, .nonspace
-	dec c
-	jr nz, .loop
-
-.terminator
-	scf
-	jr .done
-
-.nonspace
-	and a
-
-.done
-	pop bc
-	ret
-; 89363
-
-Function89363: ; 89363
-; Scans six byte pairs starting at bc to find $ff.  Sets carry if it does not find a $ff.  Returns the location of the byte after the first $ff found in hl.
-	ld h, b
-	ld l, c
-	jr ._incave
-
-	ld hl, 25
-	add hl, bc
-
-._incave
-	push de
-	ld e, 6
-.loop
-	ld a, [hli]
-	cp -1
-	jr nz, .ok
-	ld a, [hli]
-	cp -1
-	jr nz, .ok
-	dec e
-	jr nz, .loop
-	scf
-	jr .done
-
-.ok
-	and a
-
-.done
-	pop de
-	ret
-; 89381
-
-Function89381: ; 89381
-	push bc
-	push de
-	call Function89b45
-	jr c, .ok
-	push hl
-	ld a, -1
-	ld bc, 8
-	call ByteFill
-	pop hl
-
-.ok
-	pop de
-	ld c, 8
-	call Function89193
-	pop bc
-	ret
-; 8939a
-
-Function8939a: ; 8939a
-	push bc
-	ld hl, 0
-	add hl, bc
-	ld de, DefaultFlypoint
-	ld c, 6
-	call Function89193
-	pop bc
-	ld hl, 17
-	add hl, bc
-	ld de, wd008
-	call Function89381
-	ret
-; 893b3
-
-
-Function893b3: ; 893b3 (22:53b3)
-	call DisableLCD
-	call ClearSprites
-	call Functione51
-	call Functione5f
-	call Function893ef
-	call Function8942b
-	call Function89455
-	call EnableLCD
-	ret
-
-Function893cc: ; 893cc
-	call DisableLCD
-	call ClearSprites
-	call Functione51
-	call Functione5f
-	call Function893ef
-	call Function89464
-	call EnableLCD
-	ret
-; 893e2
-
-
-Function893e2: ; 893e2 (22:53e2)
-	call Function89b1e
-	call Function893b3
-	call Function8a5b6
-	call Function8949c
-	ret
-
-Function893ef: ; 893ef
-	ld de, VTiles0
-	ld hl, GFX_8940b
-	ld bc, $20
-	ld a, BANK(GFX_8940b)
-	call FarCopyBytes
-	ret
-; 893fe
-
-Function893fe: ; 893fe
-	call DisableLCD
-	call Function893ef
-	call EnableLCD
-	call DelayFrame
-	ret
-; 8940b
-
-GFX_8940b: ; 8940b
-INCBIN "gfx/unknown/08940b.2bpp"
-; 8942b
-
-Function8942b: ; 8942b (22:542b)
-	ld de, VTiles0 tile $02
-	ld hl, MobileAdapterGFX + $7d0
-	ld bc, $80
-	ld a, BANK(MobileAdapterGFX)
-	call FarCopyBytes
-	ld de, VTiles0 tile $0a
-	ld hl, MobileAdapterGFX + $c60
-	ld bc, $40
-	ld a, BANK(MobileAdapterGFX)
-	call FarCopyBytes
-	ret
-
-Function89448: ; 89448 (22:5448)
-; Clears the Sprites array
-	push af
-	ld hl, Sprites
-	ld d, $10 * 6
-	xor a
-.loop
-	ld [hli], a
-	dec d
-	jr nz, .loop
-	pop af
-	ret
-
-Function89455: ; 89455 (22:5455)
-	ld hl, MobileAdapterGFX + $7d0
-	ld de, VTiles2 tile $0c
-	ld bc, $490
-	ld a, BANK(MobileAdapterGFX)
-	call FarCopyBytes
-	ret
-
-Function89464: ; 89464
-	ld hl, MobileAdapterGFX
-	ld de, VTiles2
-	ld bc, $200
-	ld a, BANK(MobileAdapterGFX)
-	call FarCopyBytes
-	ld hl, MobileAdapterGFX + $660
-	ld de, VTiles2 tile $20
-	ld bc, $170
-	ld a, BANK(MobileAdapterGFX)
-	call FarCopyBytes
-	ret
-; 89481
-
-Function89481: ; 89481
-	ld d, 2
-	call Function8934a
-	ret c
-	ld d, 0
-	ld hl, 16
-	add hl, bc
-	bit 0, [hl]
-	ret z
-	inc d
-	ret
-; 89492
-
-
-Function89492: ; 89492 (22:5492)
-	ld d, 0
-	ld a, [PlayerGender]
-	bit 0, a
-	ret z
-	inc d
-	ret
-
-Function8949c: ; 8949c
-	ld a, [rSVBK]
-	push af
-	ld a, 5
-	ld [rSVBK], a
-	ld hl, Palette_894b3
-	ld de, Unkn1Pals + 8 * 7
-	ld bc, 8
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	ret
-; 894b3
-
-Palette_894b3: ; 894b3
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-; 894bb
-
-Function894bb: ; 894bb
-	call Function894dc
-	push bc
-	call Function8956f
-	call Function8949c
-	call Function8a60d
-	pop bc
-	ret
-; 894ca
-
-
-Function894ca: ; 894ca (22:54ca)
-	push bc
-	call Function894dc
-	call Function895c7
-	call Function8949c
-	call Function8a60d
-	call Function32f9
-	pop bc
-	ret
-
-Function894dc: ; 894dc
-	push bc
-	ld a, [rSVBK]
-	push af
-	ld a, 5
-	ld [rSVBK], a
-	ld c, d
-	ld b, 0
-	ld hl, Unknown_89509
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, Unkn1Pals
-	ld bc, 24
-	call CopyBytes
-	ld hl, Palette_89557
-	ld de, wd018
-	ld bc, 24
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	pop bc
-	ret
-; 89509
-
-Unknown_89509: ; 89509
-	dw Palette_8950f
-	dw Palette_89527
-	dw Palette_8953f
-; 8950f
-
-Palette_8950f: ; 8950f
-	RGB 31, 31, 31
-	RGB 10, 17, 13
-	RGB 10, 08, 22
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 20, 31
-	RGB 10, 08, 22
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 20, 31
-	RGB 10, 17, 13
-	RGB 00, 00, 00
-
-Palette_89527: ; 89527
-	RGB 31, 31, 31
-	RGB 30, 22, 11
-	RGB 31, 08, 15
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 20, 31
-	RGB 31, 08, 15
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 20, 31
-	RGB 30, 22, 11
-	RGB 00, 00, 00
-
-Palette_8953f: ; 8953f
-	RGB 31, 31, 31
-	RGB 15, 20, 26
-	RGB 25, 07, 20
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 20, 31
-	RGB 25, 07, 20
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 20, 31
-	RGB 15, 20, 26
-	RGB 00, 00, 00
-
-Palette_89557: ; 89557
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 13, 00
-	RGB 14, 08, 00
-
-	RGB 31, 31, 31
-	RGB 16, 16, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 00
-
-	RGB 19, 31, 11
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-; 8956f
-
-Function8956f: ; 8956f
-	push bc
-	ld hl, 16
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, $000c
-	add hl, bc
-	ld b, h
-	ld c, l
-	callba Function4e929
-	ld a, c
-	ld [TrainerClass], a
-	ld a, [rSVBK]
-	push af
-	ld a, 5
-	ld [rSVBK], a
-	ld hl, wd030
-	ld a, -1
-	ld [hli], a
-	ld a, " "
-	ld [hl], a
-	pop af
-	ld [rSVBK], a
-	ld a, [TrainerClass]
-	ld h, 0
-	ld l, a
-rept 2
-	add hl, hl
-endr
-	ld de, TrainerPalettes
-	add hl, de
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld de, wd032
-	ld c, 4
-.loop
-	ld a, BANK(TrainerPalettes)
-	call GetFarByte
-	ld [de], a
-	inc de
-	inc hl
-	dec c
-	jr nz, .loop
-	ld hl, wd036
-	xor a
-	ld [hli], a
-	ld [hl], a
-	pop af
-	ld [rSVBK], a
-	pop bc
-	ret
-; 895c7
-
-
-Function895c7: ; 895c7 (22:55c7)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, 5
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Palette_895de
-	ld de, wd030
-	ld bc, 8
-	call CopyBytes
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-; 895de (22:55de)
-
-Palette_895de: ; 895de
-	RGB 31, 31, 31
-	RGB 07, 07, 06
-	RGB 07, 07, 06
-	RGB 00, 00, 00
-; 895e6
-
-Function895e6: ; 895e6
-	ld a, 7
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	ret
-; 895f2
-
-Function895f2: ; 895f2
-	push bc
-	xor a
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	call Function89605
-	call Function89655
-	pop bc
-	ret
-; 89605
-
-Function89605: ; 89605
-	hlcoord 19, 2, AttrMap
-	ld a, 1
-	ld de, SCREEN_WIDTH
-	ld c, 14
-.loop
-	ld [hl], a
-	dec c
-	jr z, .done
-	add hl, de
-	inc a
-	ld [hl], a
-	dec a
-	add hl, de
-	dec c
-	jr nz, .loop
-
-.done
-	hlcoord 0, 16, AttrMap
-	ld c, 10
-	ld a, 2
-.loop2
-	ld [hli], a
-	dec a
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .loop2
-	hlcoord 1, 11, AttrMap
-	ld a, 4
-	ld bc, 4
-	call ByteFill
-	ld a, 5
-	ld bc, 14
-	call ByteFill
-	ret
-; 8963d
-
-Function8963d: ; 8963d
-	hlcoord 12, 3, AttrMap
-	ld a, 6
-	ld de, SCREEN_WIDTH
-	lb bc, 7, 7
-.loop
-	push hl
-	ld c, 7
-.next
-	ld [hli], a
-	dec c
-	jr nz, .next
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .loop
-	ret
-; 89655
-
-Function89655: ; 89655
-	hlcoord 1, 12, AttrMap
-	ld de, SCREEN_WIDTH
-	ld a, 5
-	ld b, 4
-.loop
-	ld c, 18
-	push hl
-.next
-	ld [hli], a
-	dec c
-	jr nz, .next
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .loop
-	ret
-; 8966c
-
-Function8966c: ; 8966c
-	push bc
-	call Function89688
-	hlcoord 4, 0
-	ld c, 8
-	call Function896f5
-	pop bc
-	ret
-; 8967a
-
-
-Function8967a: ; 8967a (22:567a)
-	push bc
-	call Function89688
-	hlcoord 2, 0
-	ld c, 12
-	call Function896f5
-	pop bc
-	ret
-
-Function89688: ; 89688
-	hlcoord 0, 0
-	ld a, 1
-	ld e, SCREEN_WIDTH
-	call Function896e1
-	ld a, 2
-	ld e, SCREEN_WIDTH
-	call Function896eb
-	ld a, 3
-	ld [hli], a
-	ld a, 4
-	ld e, SCREEN_HEIGHT
-	call Function896e1
-	ld a, 6
-	ld [hli], a
-	push bc
-	ld c, 13
-.loop
-	call Function896cb
-	dec c
-	jr z, .done
-	call Function896d6
-	dec c
-	jr nz, .loop
-
-.done
-	pop bc
-	ld a, 25
-	ld [hli], a
-	ld a, 26
-	ld e, SCREEN_HEIGHT
-	call Function896e1
-	ld a, 28
-	ld [hli], a
-	ld a, 2
-	ld e, SCREEN_WIDTH
-	call Function896eb
-	ret
-; 896cb
-
-Function896cb: ; 896cb
-	ld de, SCREEN_WIDTH - 1
-	ld a, 7
-	ld [hl], a
-	add hl, de
-	ld a, 9
-	ld [hli], a
-	ret
-; 896d6
-
-Function896d6: ; 896d6
-	ld de, SCREEN_WIDTH - 1
-	ld a, 10
-	ld [hl], a
-	add hl, de
-	ld a, 11
-	ld [hli], a
-	ret
-; 896e1
-
-Function896e1: ; 896e1
-.loop
-	ld [hli], a
-	inc a
-	dec e
-	ret z
-	ld [hli], a
-	dec a
-	dec e
-	jr nz, .loop
-	ret
-; 896eb
-
-Function896eb: ; 896eb
-.loop
-	ld [hli], a
-	dec a
-	dec e
-	ret z
-	ld [hli], a
-	inc a
-	dec e
-	jr nz, .loop
-	ret
-; 896f5
-
-Function896f5: ; 896f5
-	call Function8971f
-	call Function89736
-rept 2
-	inc hl
-endr
-	ld b, 2
-
-ClearScreenArea: ; 0x896ff
-; clears an area of the screen
-; INPUT:
-; hl = address of upper left corner of the area
-; b = height
-; c = width
-
-	ld a, " " ; blank tile
-	ld de, 20 ; screen width
-.loop
-	push bc
-	push hl
-.innerLoop
-	ld [hli], a
-	dec c
-	jr nz, .innerLoop
-	pop hl
-	pop bc
-	add hl, de
-	dec b
-	jr nz, .loop
-
-	dec hl
-rept 2
-	inc c
-endr
-.asm_89713
-	ld a, $36
-	ld [hli], a
-	dec c
-	ret z
-	ld a, $18
-	ld [hli], a
-	dec c
-	jr nz, .asm_89713 ; 0x8971c $f5
-	ret
-; 0x8971f
-
-Function8971f: ; 8971f
-	ld a, $2c
-	ld [hli], a
-	ld a, $2d
-	ld [hld], a
-	push hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	ld a, $31
-	ld [hli], a
-	ld a, $32
-	ld [hld], a
-	add hl, de
-	ld a, $35
-	ld [hl], a
-	pop hl
-	ret
-; 89736
-
-Function89736: ; 89736
-	push hl
-rept 2
-	inc hl
-endr
-	ld e, c
-	ld d, $0
-	add hl, de
-	ld a, $2f
-	ld [hli], a
-	ld a, $30
-	ld [hld], a
-	ld de, SCREEN_WIDTH
-	add hl, de
-	ld a, $33
-	ld [hli], a
-	ld a, $34
-	ld [hl], a
-	add hl, de
-	ld a, $1f
-	ld [hl], a
-	pop hl
-	ret
-; 89753
-
-Function89753: ; 89753
-	ld a, $c
-	ld [hl], a
-	xor a
-	call Function89215
-	ret
-; 8975b
-
-Function8975b: ; 8975b
-	ld a, $1d
-	ld [hli], a
-	inc a
-	ld [hli], a
-	ld a, $d
-	ld [hl], a
-rept 2
-	dec hl
-endr
-	ld a, $4
-	ld e, $3
-.asm_89769
-	call Function89215
-	inc hl
-	dec e
-	jr nz, .asm_89769
-	ret
-; 89771
-
-Function89771: ; 89771
-	ld a, $12
-	ld [hl], a
-	ld a, $3
-	call Function89215
-	ret
-; 8977a
-
-Function8977a: ; 8977a
-	ld e, $4
-	ld d, $13
-.asm_8977e
-	ld a, d
-	ld [hl], a
-	ld a, $4
-	call Function89215
-	inc hl
-	inc d
-	dec e
-	jr nz, .asm_8977e
-	ld e, $e
-.asm_8978c
-	ld a, d
-	ld [hl], a
-	xor a
-	call Function89215
-	inc hl
-	dec e
-	jr nz, .asm_8978c
-	ret
-; 89797
-
-Function89797: ; 89797
-	push bc
-	ld a, $e
-	ld [hl], a
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld a, $11
-	ld [hli], a
-	ld a, $10
-	ld c, $8
-.asm_897a6
-	ld [hli], a
-	dec c
-	jr nz, .asm_897a6
-	ld a, $f
-	ld [hl], a
-	pop bc
-	ret
-; 897af
-
-Function897af: ; 897af
-	push bc
-	ld hl, $0010
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, $000c
-	add hl, bc
-	ld b, h
-	ld c, l
-	callba Function4e929
-	ld a, c
-	ld [TrainerClass], a
-	xor a
-	ld [CurPartySpecies], a
-	ld de, VTiles2 tile $37
-	callba GetTrainerPic
-	pop bc
-	ret
-; 897d5
-
-Function897d5: ; 897d5
-	push bc
-	call Function8934a
-	jr nc, .asm_897f3
-	hlcoord 12, 3, AttrMap
-	xor a
-	ld de, SCREEN_WIDTH
-	lb bc, 7, 7
-.asm_897e5
-	push hl
-	ld c, $7
-.asm_897e8
-	ld [hli], a
-	dec c
-	jr nz, .asm_897e8
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .asm_897e5
-	pop bc
-	ret
-
-.asm_897f3
-	ld a, $37
-	ld [$ffad], a
-	hlcoord 12, 3
-	lb bc, 7, 7
-	predef FillBox
-	call Function8963d
-	pop bc
-	ret
-; 89807
-
-
-Function89807: ; 89807 (22:5807)
-	ld hl, MobileAdapterGFX + $200
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .asm_89814
-	ld hl, MobileAdapterGFX + $200 + $230
-.asm_89814
-	call DisableLCD
-	ld de, VTiles2 tile $37
-	ld bc, $230
-	ld a, BANK(MobileAdapterGFX)
-	call FarCopyBytes
-	call EnableLCD
-	call DelayFrame
-	ret
-
-Function89829: ; 89829 (22:5829)
-	push bc
-	ld bc, $705
-	ld de, $14
-	ld a, $37
-.asm_89832
-	push bc
-	push hl
-.asm_89834
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_89834
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_89832
-	call Function8963d
-	pop bc
-	ret
-
-Function89844: ; 89844
-	call Function89481
-	call Function894bb
-	call Function897af
-	push bc
-	call Function3200
-	call Function32f9
-	pop bc
-	ret
-; 89856
-
-Function89856: ; 89856
-	push bc
-	call Function891b8
-	pop bc
-	call Function895f2
-	call Function8966c
-	call Function899d3
-	call Function898aa
-	call Function898be
-	call Function898dc
-	call Function898f3
-	push bc
-	ld bc, wd008
-	hlcoord 2, 10
-	call Function89975
-	pop bc
-	call Function897d5
-	ret
-; 8987f
-
-
-Function8987f: ; 8987f (22:587f)
-	call Function891b8
-	call Function895f2
-	call Function8967a
-	call Function899d3
-	hlcoord 5, 1
-	call Function8999c
-	hlcoord 13, 3
-	call Function89829
-	call Function899b2
-	hlcoord 5, 5
-	call Function899c9
-	ld bc, wd008
-	hlcoord 2, 10
-	call Function89975
-	ret
-
-Function898aa: ; 898aa
-	ld a, [MenuSelection]
-	and a
-	ret z
-	push bc
-	hlcoord 6, 1
-	ld de, MenuSelection
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	pop bc
-	ret
-; 898be
-
-Function898be: ; 898be
-	push bc
-	ld de, DefaultFlypoint
-	ld hl, DefaultFlypoint
-	call Function89331
-	jr nc, .asm_898cd
-	ld de, String_89116
-
-.asm_898cd
-	hlcoord 9, 1
-	ld a, [MenuSelection]
-	and a
-	jr nz, .asm_898d7
-	dec hl
-
-.asm_898d7
-	call PlaceString
-	pop bc
-	ret
-; 898dc
-
-Function898dc: ; 898dc
-	ld hl, $0006
-	add hl, bc
-	push bc
-	ld d, h
-	ld e, l
-	call Function8934a
-	jr nc, .asm_898eb
-	ld de, String_89116
-
-.asm_898eb
-	hlcoord 6, 4
-	call PlaceString
-	pop bc
-	ret
-; 898f3
-
-Function898f3: ; 898f3
-	push bc
-	ld hl, $000c
-	add hl, bc
-	ld d, h
-	ld e, l
-	call Function8934a
-	jr c, .asm_8990a
-	hlcoord 5, 5
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
-	call PrintNum
-	jr .asm_89913
-
-.asm_8990a
-	hlcoord 5, 5
-	ld de, String_89116
-	call PlaceString
-
-.asm_89913
-	pop bc
-	ret
-; 89915
-
-Function89915: ; 89915
-	push bc
-	push hl
-	ld de, Unknown_89942
-	ld c, $8
-.asm_8991c
-	ld a, [de]
-	ld [hl], a
-	ld a, $4
-	call Function89215
-	inc hl
-	inc de
-	dec c
-	jr nz, .asm_8991c
-	pop hl
-	ld b, $4
-	ld c, $2b
-	ld a, $8
-	ld de, Unknown_8994a
-.asm_89932
-	push af
-	ld a, [de]
-	cp [hl]
-	jr nz, .asm_8993b
-	call Function8994e
-	inc de
-
-.asm_8993b
-	inc hl
-	pop af
-	dec a
-	jr nz, .asm_89932
-	pop bc
-	ret
-; 89942
-
-Unknown_89942: ; 89942
-	db $24, $25, $26, " ", $27, $28, $29, $2a
-Unknown_8994a: ; 8994a
-	db $24, $27, $29, $ff
-; 8994e
-
-Function8994e: ; 8994e
-	push hl
-	push de
-	ld de, SCREEN_WIDTH
-	ld a, l
-	sub e
-	ld l, a
-	ld a, h
-	sbc d
-	ld h, a
-	ld a, c
-	ld [hl], a
-	ld a, b
-	call Function89215
-	pop de
-	pop hl
-	ret
-; 89962
-
-Function89962: ; 89962
-	push bc
-	ld c, $4
-	ld b, $20
-.asm_89967
-	ld a, b
-	ld [hl], a
-	ld a, $4
-	call Function89215
-	inc hl
-	inc b
-	dec c
-	jr nz, .asm_89967
-	pop bc
-	ret
-; 89975
-
-Function89975: ; 89975
-	push bc
-	ld e, $8
-.asm_89978
-	ld a, [bc]
-	ld d, a
-	call Function8998b
-	swap d
-	inc hl
-	ld a, d
-	call Function8998b
-	inc bc
-	inc hl
-	dec e
-	jr nz, .asm_89978
-	pop bc
-	ret
-; 8998b
-
-Function8998b: ; 8998b
-	push bc
-	and $f
-	cp $a
-	jr nc, .asm_89997
-	ld c, $f6
-	add c
-	jr .asm_89999
-
-.asm_89997
-	ld a, $7f
-
-.asm_89999
-	ld [hl], a
-	pop bc
-	ret
-; 8999c
-
-
-Function8999c: ; 8999c (22:599c)
-	ld de, PlayerName
-	call PlaceString
-	inc bc
-	ld h, b
-	ld l, c
-	ld de, String_899ac
-	call PlaceString
-	ret
-; 899ac (22:59ac)
-
-String_899ac: ; 899ac
-	db "の めいし@"
-; 899b2
-
-Function899b2: ; 899b2 (22:59b2)
-	ld bc, PlayerName
-	call Function89346
-	jr c, .asm_899bf
-	ld de, PlayerName
-	jr .asm_899c2
-.asm_899bf
-	ld de, String_89116
-.asm_899c2
-	hlcoord 6, 4
-	call PlaceString
-	ret
-
-Function899c9: ; 899c9 (22:59c9)
-	ld de, PlayerID
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
-	call PrintNum
-	ret
-
-Function899d3: ; 899d3
-	hlcoord 1, 4
-	call Function89753
-	hlcoord 2, 5
-	call Function8975b
-	hlcoord 1, 9
-	call Function89771
-	hlcoord 1, 11
-	call Function8977a
-	hlcoord 1, 5
-	call Function89797
-	hlcoord 2, 4
-	call Function89962
-	hlcoord 2, 9
-	call Function89915
-	ret
-; 899fe
-
-Function899fe: ; 899fe
-	push bc
-	push hl
-	ld hl, $0019
-	add hl, bc
-	ld b, h
-	ld c, l
-	pop hl
-	call Function89a0c
-	pop bc
-	ret
-; 89a0c
-
-Function89a0c: ; 89a0c
-	push hl
-	call Function89363
-	pop hl
-	jr c, .asm_89a1c
-	ld d, h
-	ld e, l
-	callba Function11c08f
-	ret
-
-.asm_89a1c
-	ld de, String_89153
-	call PlaceString
-	ret
-; 89a23
-
-
-Function89a23: ; 89a23 (22:5a23)
-	hlcoord 0, 11
-	ld b, $4
-	ld c, $12
-	call Function8921f
-	ret
-
-Function89a2e: ; 89a2e (22:5a2e)
-	hlcoord 11, 12
-	ld b, $2
-	ld c, $6
-	call TextBox
-	hlcoord 13, 13
-	ld de, String_89a4e
-	call PlaceString
-	hlcoord 13, 14
-	ld de, String_89a53
-	call PlaceString
-	call Function89655
-	ret
-; 89a4e (22:5a4e)
-
-String_89a4e: ; 89a4e
-	db "けってい@"
-; 89a53
-
-String_89a53: ; 89a53
-	db "やめる@"
-; 89a57
-
-Function89a57: ; 89a57
-	call Function354b
-	bit 6, c
-	jr nz, .asm_89a78
-	bit 7, c
-	jr nz, .asm_89a81
-	bit 0, c
-	jr nz, .asm_89a70
-	bit 1, c
-	jr nz, .asm_89a70
-	bit 3, c
-	jr nz, .asm_89a74
-	scf
-	ret
-
-.asm_89a70
-	ld a, $1
-	and a
-	ret
-
-.asm_89a74
-	ld a, $2
-	and a
-	ret
-
-.asm_89a78
-	call Function89a9b
-	call nc, Function89a8a
-	ld a, $0
-	ret
-
-.asm_89a81
-	call Function89a93
-	call nc, Function89a8a
-	ld a, $0
-	ret
-; 89a8a
-
-Function89a8a: ; 89a8a
-	push af
-	ld de, SFX_UNKNOWN_62
-	call PlaySFX
-	pop af
-	ret
-; 89a93
-
-Function89a93: ; 89a93
-	ld d, $28
-	ld e, $1
-	call Function89aa3
-	ret
-; 89a9b
-
-Function89a9b: ; 89a9b
-	ld d, $1
-	ld e, $ff
-	call Function89aa3
-	ret
-; 89aa3
-
-Function89aa3: ; 89aa3
-	ld a, [MenuSelection]
-	ld c, a
-	push bc
-.asm_89aa8
-	ld a, [MenuSelection]
-	cp d
-	jr z, .asm_89ac0
-	add e
-	jr nz, .asm_89ab2
-	inc a
-
-.asm_89ab2
-	ld [MenuSelection], a
-	call Function89ac7
-	jr nc, .asm_89aa8
-	call Function89ae6
-	pop bc
-	and a
-	ret
-
-.asm_89ac0
-	pop bc
-	ld a, c
-	ld [MenuSelection], a
-	scf
-	ret
-; 89ac7
-
-Function89ac7: ; 89ac7
-	call Function89160
-	call Function8931b
-	call Function89ad4
-	call CloseSRAM
-	ret
-; 89ad4
-
-Function89ad4: ; 89ad4
-	push de
-	call Function8932d
-	jr c, .asm_89ae3
-	ld hl, $0011
-	add hl, bc
-	call Function89b45
-	jr c, .asm_89ae4
-
-.asm_89ae3
-	and a
-
-.asm_89ae4
-	pop de
-	ret
-; 89ae6
-
-Function89ae6: ; 89ae6
-	ld hl, wd031
-	xor a
-	ld [hl], a
-	ld a, [MenuSelection]
-.asm_89aee
-	cp $6
-	jr c, .asm_89afc
-	sub $5
-	ld c, a
-	ld a, [hl]
-	add $5
-	ld [hl], a
-	ld a, c
-	jr .asm_89aee
-
-.asm_89afc
-	ld [wd030], a
-	ret
-; 89b00
-
-
-Function89b00: ; 89b00 (22:5b00)
-	callba Function49351
-	ret
-; 89b07 (22:5b07)
-
-Function89b07: ; 89b07
-	call Function8923c
-	call DelayFrame
-	callba Function4a3a7
-	ret
-; 89b14
-
-Function89b14: ; 89b14
-	call WhiteBGMap
-	call Function89b07
-	call Function89b00
-	ret
-; 89b1e
-
-Function89b1e: ; 89b1e (22:5b1e)
-	callba Function4a485
-	call Function89b00
-	ret
-
-Function89b28: ; 89b28 (22:5b28)
-	call Function891de
-	call WhiteBGMap
-	call Function893e2
-	call Function1d7d
-	call Function891ab
-	call Function32f9
-	ret
-
-Function89b3b: ; 89b3b (22:5b3b)
-	call Function8923c
-	callba Function48cda
-	ret
-
-Function89b45: ; 89b45
-	push hl
-	push bc
-	ld c, $10
-	ld e, $0
-.asm_89b4b
-	ld a, [hli]
-	ld b, a
-	and $f
-	cp $a
-	jr c, .asm_89b5a
-	ld a, c
-	cp $b
-	jr nc, .asm_89b74
-	jr .asm_89b71
-
-.asm_89b5a
-	dec c
-	swap b
-	inc e
-	ld a, b
-	and $f
-	cp $a
-	jr c, .asm_89b6c
-	ld a, c
-	cp $b
-	jr nc, .asm_89b74
-	jr .asm_89b71
-
-.asm_89b6c
-	inc e
-	dec c
-	jr nz, .asm_89b4b
-	dec e
-
-.asm_89b71
-	scf
-	jr .asm_89b75
-
-.asm_89b74
-	and a
-
-.asm_89b75
-	pop bc
-	pop hl
-	ret
-; 89b78
-
-
-Function89b78: ; 89b78 (22:5b78)
-	push bc
-	ld a, [wd010]
-	cp $10
-	jr c, .asm_89b8c
-	ld a, e
-	and a
-	jr z, .asm_89b89
-	ld c, e
-.asm_89b85
-	inc hl
-	dec c
-	jr nz, .asm_89b85
-.asm_89b89
-	ld a, $7f
-	ld [hl], a
-.asm_89b8c
-	ld a, [wd010]
-	inc a
-	and $1f
-	ld [wd010], a
-	pop bc
-	ret
-
-Function89b97: ; 89b97 (22:5b97)
-	call Function89c34
-	jr c, .asm_89ba0
-	call Function89448
-	ret
-.asm_89ba0
-	ld a, [wd011]
-	ld hl, Unknown_89bd8
-	and a
-	jr z, .asm_89bae
-.asm_89ba9
-rept 2
-	inc hl
-endr
-	dec a
-	jr nz, .asm_89ba9
-.asm_89bae
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, Sprites
-.asm_89bb4
-	ld a, [hli]
-	cp $ff
-	ret z
-	ld c, a
-	ld b, $0
-.asm_89bbb
-	push hl
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add b
-	ld [de], a
-	inc de
-	ld a, $8
-	add b
-	ld b, a
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	pop hl
-	dec c
-	jr nz, .asm_89bbb
-	ld b, $0
-	ld c, $4
-	add hl, bc
-	jr .asm_89bb4
-; 89bd8 (22:5bd8)
-
-Unknown_89bd8: ; 89bd8
-	dw Unknown_89be0
-	dw Unknown_89bf5
-	dw Unknown_89c0a
-	dw Unknown_89c1f
-; 89be0
-
-Unknown_89be0: ; 89be0
-	db $01, $12, $4e, $01, $00
-	db $01, $19, $4e, $01, $40
-	db $01, $12, $72, $01, $20
-	db $01, $19, $72, $01, $60
-	db $ff
-
-Unknown_89bf5: ; 89bf5
-	db $01, $60, $16, $01, $00
-	db $01, $62, $16, $01, $40
-	db $01, $60, $92, $01, $20
-	db $01, $62, $92, $01, $60
-	db $ff
-
-Unknown_89c0a: ; 89c0a
-	db $01, $78, $66, $01, $00
-	db $01, $78, $66, $01, $40
-	db $01, $78, $92, $01, $20
-	db $01, $78, $92, $01, $60
-	db $ff
-
-Unknown_89c1f: ; 89c1f
-	db $01, $80, $66, $01, $00
-	db $01, $80, $66, $01, $40
-	db $01, $80, $92, $01, $20
-	db $01, $80, $92, $01, $60
-	db $ff
-; 89c34
-
-Function89c34: ; 89c34 (22:5c34)
-	push bc
-	ld a, [wd012]
-	ld c, a
-	inc a
-	and $f
-	ld [wd012], a
-	ld a, c
-	cp $8
-	pop bc
-	ret
-
-Function89c44: ; 89c44 (22:5c44)
-	call Function89c34
-	jr c, .asm_89c4f
-	push de
-	call Function89448
-	pop de
-	ret
-.asm_89c4f
-	ld hl, Sprites
-	push de
-	ld a, b
-	ld [hli], a
-	ld d, $8
-	ld a, e
-	and a
-	ld a, c
-	jr z, .asm_89c60
-.asm_89c5c
-	add d
-	dec e
-	jr nz, .asm_89c5c
-.asm_89c60
-	pop de
-	ld [hli], a
-	ld a, d
-	ld [hli], a
-	xor a
-	ld [hli], a
-	ret
-
-Function89c67: ; 89c67 (22:5c67)
-	call Function354b
-	ld b, $0
-	bit 0, c
-	jr z, .asm_89c74
-	ld b, $1
-	and a
-	ret
-.asm_89c74
-	bit 1, c
-	jr z, .asm_89c7a
-	scf
-	ret
-.asm_89c7a
-	xor a
-	bit 6, c
-	jr z, .asm_89c81
-	ld a, $1
-.asm_89c81
-	bit 7, c
-	jr z, .asm_89c87
-	ld a, $2
-.asm_89c87
-	bit 5, c
-	jr z, .asm_89c8d
-	ld a, $3
-.asm_89c8d
-	bit 4, c
-	jr z, .asm_89c93
-	ld a, $4
-.asm_89c93
-	and a
-	ret z
-	dec a
-	ld c, a
-	ld d, $0
-	ld hl, Unknown_89cbf
-	ld a, [wd02f]
-	and a
-	jr z, .asm_89ca5
-	ld hl, Unknown_89ccf
-.asm_89ca5
-	ld a, [wd011]
-	and a
-	jr z, .asm_89cb1
-	ld e, $4
-.asm_89cad
-	add hl, de
-	dec a
-	jr nz, .asm_89cad
-.asm_89cb1
-	ld e, c
-	add hl, de
-	ld a, [hl]
-	and a
-	ret z
-	dec a
-	ld [wd011], a
-	xor a
-	ld [wd012], a
-	ret
-; 89cbf (22:5cbf)
-
-Unknown_89cbf: ; 89cbf
-	db 0, 2, 0, 0
-	db 1, 3, 0, 0
-	db 2, 4, 0, 0
-	db 3, 0, 0, 0
-
-Unknown_89ccf: ; 89ccf
-	db 0, 0, 0, 0
-	db 0, 3, 0, 0
-	db 2, 4, 0, 0
-	db 3, 0, 0, 0
-; 89cdf
-
-Function89cdf: ; 89cdf (22:5cdf)
-	ld a, $10
-	add b
-	ld b, a
-	ld a, $8
-	add c
-	ld c, a
-	ld e, $2
-	ld a, $2
-	ld hl, Sprites
-.asm_89cee
-	push af
-	push bc
-	ld d, $4
-.asm_89cf2
-	ld a, b
-	ld [hli], a
-	ld a, c
-	ld [hli], a
-	ld a, e
-	ld [hli], a
-	ld a, $1
-	ld [hli], a
-	ld a, $8
-	add c
-	ld c, a
-	inc e
-	dec d
-	jr nz, .asm_89cf2
-	pop bc
-	ld a, $8
-	add b
-	ld b, a
-	pop af
-	dec a
-	jr nz, .asm_89cee
-	ret
-
-Function89d0d: ; 89d0d (22:5d0d)
-	call Function8923c
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	ld c, $8
-	ld de, Unkn1Pals
-.asm_89d1c
-	push bc
-	ld hl, Palette_89d4e
-	ld bc, $8
-	call CopyBytes
-	pop bc
-	dec c
-	jr nz, .asm_89d1c
-	ld hl, Palette_89d56
-	ld de, wd010
-	ld bc, $8
-	call CopyBytes
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	call Function32f9
-	callba Function845db
-	call Function89240
-	ld c, $18
-	call DelayFrames
-	call RestartMapMusic
-	ret
-; 89d4e (22:5d4e)
-
-Palette_89d4e: ; 89d4e
-	RGB 31, 31, 31
-	RGB 19, 19, 19
-	RGB 15, 15, 15
-	RGB 00, 00, 00
-; 89d56
-
-Palette_89d56: ; 89d56
-	RGB 31, 31, 31
-	RGB 19, 19, 19
-	RGB 19, 19, 19
-	RGB 00, 00, 00
-; 89d5e
-
-Function89d5e: ; 89d5e (22:5d5e)
-	push af
-	call CopyMenuDataHeader
-	pop af
-	ld [wcf88], a
-	call Function8923c
-	call Function1c89
-	call Function1c10
-	ld hl, wcfa5
-	set 7, [hl]
-	ret
-
-Function89d75: ; 89d75 (22:5d75)
-	push hl
-	call Function8923c
-	call _hl_
-	callba Function104148
-	pop hl
-	jr asm_89d90
-
-Function89d85: ; 89d85 (22:5d85)
-	push hl
-	call Function8923c
-	call _hl_
-	call Function3238
-	pop hl
-
-asm_89d90: ; 89d90 (22:5d90)
-	call Function8923c
-	push hl
-	call _hl_
-	call Function89dab
-	ld a, [wcfa9]
-	push af
-	call Function891ab
-	pop af
-	pop hl
-	jr c, .asm_89da9
-	jr z, asm_89d90
-	scf
-	ret
-.asm_89da9
-	and a
-	ret
-
-Function89dab: ; 89dab (22:5dab)
-	call Function8923c
-	callba Function241ba
-	call Function8923c
-	ld a, c
-	ld hl, wcfa8
-	and [hl]
-	ret z
-	bit 0, a
-	jr nz, .asm_89dc7
-	bit 1, a
-	jr nz, .asm_89dd9
-	xor a
-	ret
-.asm_89dc7
-	call PlayClickSFX
-	ld a, [wcfa3]
-	ld c, a
-	ld a, [wcfa9]
-	cp c
-	jr z, .asm_89dd9
-	call Function1bee
-	scf
-	ret
-.asm_89dd9
-	call PlayClickSFX
-	ld a, $1
-	and a
-	ret
-
-Function89de0: ; 89de0 (22:5de0)
-	call ClearSprites
-	call Function89e0a
-	jr c, .asm_89e00
-	ld c, $1
-.asm_89dea
-	call Function8a31c
-	jr z, .asm_89dfd
-	ld a, [wcfa9]
-	ld c, a
-	push bc
-	ld hl, Jumptable_89e04
-	ld a, e
-	dec a
-	rst JumpTable
-	pop bc
-	jr .asm_89dea
-.asm_89dfd
-	call Function891fe
-.asm_89e00
-	call Function8917a
-	ret
-
-Jumptable_89e04: ; 89e04 (22:5e04)
-	dw Function8a62c
-	dw Function8a999
-	dw Function8ab93
-
-
-Function89e0a: ; 89e0a (22:5e0a)
-	call Function89160
-	call Function8b3b0
-	call CloseSRAM
-	ld hl, Jumptable_89e18
-	rst JumpTable
-	ret
-
-Jumptable_89e18: ; 89e18 (22:5e18)
-	dw Function89e1e
-	dw Function8a116
-	dw Function8a2aa
-
-
-Function89e1e: ; 89e1e (22:5e1e)
-	call Function89160
-	ld bc, $a037
-	call Function8b36c
-	call CloseSRAM
-	xor a
-	ld [wd02d], a
-
-asm_89e2e: ; 89e2e (22:5e2e)
-	ld a, [wd02d]
-	ld hl, Jumptable_89e3c
-	rst JumpTable
-	ret
-
-Function89e36: ; 89e36 (22:5e36)
-	ld hl, wd02d
-	inc [hl]
-	jr asm_89e2e
-
-Jumptable_89e3c: ; 89e3c (22:5e3c)
-	dw Function89e6f
-	dw Function89fed
-	dw Function89ff6
-	dw Function8a03d
-	dw Function89eb9
-	dw Function89efd
-	dw Function89fce
-	dw Function8a04c
-	dw Function8a055
-	dw Function8a0e6
-	dw Function8a0ec
-	dw Function8a0f5
-	dw Function89e58
-	dw Function89e68
-
-
-Function89e58: ; 89e58 (22:5e58)
-	ld a, $1
-	call Function8a2fe
-	call Function891fe
-	call Function893e2
-	call Function89168
-	and a
-	ret
-
-Function89e68: ; 89e68 (22:5e68)
-	call Function891fe
-	ld a, $1
-	scf
-	ret
-
-Function89e6f: ; 89e6f (22:5e6f)
-	call Function891de
-	call Function89245
-	call Function89ee1
-	call Function89e9a
-	hlcoord 7, 4
-	call Function8a58d
-	ld a, $5
-	hlcoord 7, 4, AttrMap
-	call Function8a5a3
-	ld a, $6
-	hlcoord 10, 4, AttrMap
-	call Function8a5a3
-	call Function891ab
-	call Function32f9
-	jp Function89e36
-
-Function89e9a: ; 89e9a (22:5e9a)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Palette_89eb1
-	ld de, wd028
-	ld bc, $8
-	call CopyBytes
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-; 89eb1 (22:5eb1)
-
-Palette_89eb1: ; 89eb1
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 27, 19, 00
-	RGB 00, 00, 00
-; 89eb9
-
-Function89eb9: ; 89eb9 (22:5eb9)
-	call Function891fe
-	call Function89ee1
-	call Function89e9a
-	hlcoord 7, 4
-	call Function8a58d
-	ld a, $5
-	hlcoord 7, 4, AttrMap
-	call Function8a5a3
-	ld a, $6
-	hlcoord 10, 4, AttrMap
-	call Function8a5a3
-	call Function891ab
-	call Function32f9
-	jp Function89e36
-
-Function89ee1: ; 89ee1 (22:5ee1)
-	call WhiteBGMap
-	call Function893e2
-	call Function8923c
-	callba Function4a3a7
-	callba Function49384
-	hlcoord 1, 0
-	call Function8a53d
-	ret
-
-Function89efd: ; 89efd (22:5efd)
-	ld hl, wd012
-	ld a, $ff
-	ld [hli], a
-	xor a
-rept 4
-	ld [hli], a
-endr
-	ld [hl], a
-.asm_89f09
-	ld hl, wd012
-	inc [hl]
-	ld a, [hli]
-	and $3
-	jr nz, .asm_89f2e
-	ld a, [hl]
-	cp $4
-	jr nc, .asm_89f2e
-	ld b, $32
-	inc [hl]
-	ld a, [hl]
-	dec a
-	jr z, .asm_89f26
-	ld c, a
-.asm_89f1f
-	ld a, $b
-	add b
-	ld b, a
-	dec c
-	jr nz, .asm_89f1f
-.asm_89f26
-	ld c, $e8
-	ld a, [wd013]
-	call Function89fa5
-.asm_89f2e
-	ld a, [wd013]
-	and a
-	jr z, .asm_89f58
-.asm_89f34
-	call Function89f6a
-	ld e, a
-	ld a, c
-	cp $a8
-	jr nc, .asm_89f4d
-	cp $46
-	jr c, .asm_89f4d
-	ld d, $0
-	dec e
-	ld hl, wd014
-	add hl, de
-	set 0, [hl]
-	inc e
-	jr .asm_89f51
-.asm_89f4d
-	ld a, $2
-	add c
-	ld c, a
-.asm_89f51
-	ld a, e
-	call Function89f77
-	dec a
-	jr nz, .asm_89f34
-.asm_89f58
-	call DelayFrame
-	ld hl, wd014
-	ld c, $4
-.asm_89f60
-	ld a, [hli]
-	and a
-	jr z, .asm_89f09
-	dec c
-	jr nz, .asm_89f60
-	jp Function89e36
-
-Function89f6a: ; 89f6a (22:5f6a)
-	push af
-	ld de, $10
-	call Function89f9a
-	ld a, [hli]
-	ld b, a
-	ld a, [hl]
-	ld c, a
-	pop af
-	ret
-
-Function89f77: ; 89f77 (22:5f77)
-	push af
-	ld de, $10
-	call Function89f9a
-	ld d, $2
-.asm_89f80
-	push bc
-	ld e, $2
-.asm_89f83
-	ld a, b
-	ld [hli], a
-	ld a, c
-	ld [hli], a
-rept 2
-	inc hl
-endr
-	ld a, $8
-	add c
-	ld c, a
-	dec e
-	jr nz, .asm_89f83
-	pop bc
-	ld a, $8
-	add b
-	ld b, a
-	dec d
-	jr nz, .asm_89f80
-	pop af
-	ret
-
-Function89f9a: ; 89f9a (22:5f9a)
-	dec a
-	ld hl, Sprites
-	and a
-	ret z
-.asm_89fa0
-	add hl, de
-	dec a
-	jr nz, .asm_89fa0
-	ret
-
-Function89fa5: ; 89fa5 (22:5fa5)
-	ld de, $10
-	call Function89f9a
-	ld e, $2
-	ld d, $a
-.asm_89faf
-	push bc
-	ld a, $2
-.asm_89fb2
-	push af
-	ld a, b
-	ld [hli], a
-	ld a, c
-	ld [hli], a
-	ld a, d
-	inc d
-	ld [hli], a
-	ld a, $1
-	ld [hli], a
-	ld a, $8
-	add c
-	ld c, a
-	pop af
-	dec a
-	jr nz, .asm_89fb2
-	pop bc
-	ld a, $8
-	add b
-	ld b, a
-	dec e
-	jr nz, .asm_89faf
-	ret
-
-Function89fce: ; 89fce (22:5fce)
-	call Function8a5b6
-	ld a, $5
-	hlcoord 7, 4, AttrMap
-	call Function8a5a3
-	ld a, $6
-	hlcoord 10, 4, AttrMap
-	call Function8a5a3
-	call Function89448
-	call Function32f9
-	call Function891ab
-	jp Function89e36
-
-Function89fed: ; 89fed (22:5fed)
-	ld hl, UnknownText_0x8a102
-	call PrintText
-	jp Function89e36
-
-Function89ff6: ; 89ff6 (22:5ff6)
-	call Function891fe
-	call WhiteBGMap
-	call Function893cc
-	call Function89807
-	call Function89492
-	call Function894ca
-	call Function89160
-	ld hl, $a603
-	ld a, $ff
-	ld bc, $8
-	call ByteFill
-	ld hl, $a603
-	ld de, wd008
-	call Function89381
-	call CloseSRAM
-	call Function8987f
-	call Function89160
-	hlcoord 1, 13
-	ld bc, $a007
-	call Function89a0c
-	call CloseSRAM
-	call Function891ab
-	call Function89235
-	jp Function89e36
-
-Function8a03d: ; 8a03d (22:603d)
-	ld hl, UnknownText_0x8a107
-	call Function89209
-	call PrintText
-	call Function8920f
-	jp Function89e36
-
-Function8a04c: ; 8a04c (22:604c)
-	ld hl, UnknownText_0x8a10c
-	call PrintText
-	jp Function89e36
-
-Function8a055: ; 8a055 (22:6055)
-	ld c, $7
-	ld b, $4
-.asm_8a059
-	call Function8a0a1
-	inc c
-	call Function8a0c9
-	push bc
-	call Function8a58d
-	pop bc
-	call Function8a0de
-	push bc
-	push hl
-	ld a, $5
-	call Function8a5a3
-	pop hl
-rept 3
-	inc hl
-endr
-	ld a, $6
-	call Function8a5a3
-	call Function3238
-	pop bc
-	ld a, c
-	cp $b
-	jr nz, .asm_8a059
-	call Function8a0a1
-	hlcoord 12, 4
-	call Function8a58d
-	ld a, $5
-	hlcoord 12, 4, AttrMap
-	call Function8a5a3
-	pop hl
-	ld a, $6
-	hlcoord 15, 4, AttrMap
-	call Function8a5a3
-	call Function3238
-	jp Function89e36
-
-Function8a0a1: ; 8a0a1 (22:60a1)
-	call Function8923c
-	push bc
-	call Function8a0c9
-	ld e, $6
-.asm_8a0aa
-	push hl
-	ld bc, $6
-	add hl, bc
-	ld d, [hl]
-	call Function8a0c1
-	pop hl
-	ld [hl], d
-	call Function89215
-	ld bc, $14
-	add hl, bc
-	dec e
-	jr nz, .asm_8a0aa
-	pop bc
-	ret
-
-Function8a0c1: ; 8a0c1 (22:60c1)
-	push hl
-	ld bc, AttrMap - TileMap
-	add hl, bc
-	ld a, [hl]
-	pop hl
-	ret
-
-Function8a0c9: ; 8a0c9 (22:60c9)
-	push bc
-	hlcoord 0, 0
-	ld de, $14
-	ld a, b
-	and a
-	jr z, .asm_8a0d8
-.asm_8a0d4
-	add hl, de
-	dec b
-	jr nz, .asm_8a0d4
-.asm_8a0d8
-	ld d, $0
-	ld e, c
-	add hl, de
-	pop bc
-	ret
-
-Function8a0de: ; 8a0de (22:60de)
-	call Function8a0c9
-	ld de, AttrMap - TileMap
-	add hl, de
-	ret
-
-Function8a0e6: ; 8a0e6 (22:60e6)
-	call Function8b539
-	jp Function89e36
-
-Function8a0ec: ; 8a0ec (22:60ec)
-	ld hl, UnknownText_0x8a111
-	call PrintText
-	jp Function89e36
-
-Function8a0f5: ; 8a0f5 (22:60f5)
-	call Function8b555
-	jp nc, Function8a0ff
-	ld hl, wd02d
-	inc [hl]
-
-Function8a0ff: ; 8a0ff (22:60ff)
-	jp Function89e36
-; 8a102 (22:6102)
-
-UnknownText_0x8a102: ; 0x8a102
-	; The CARD FOLDER stores your and your friends' CARDS. A CARD contains information like the person's name, phone number and profile.
-	text_jump UnknownText_0x1c5238
-	db "@"
-; 0x8a107
-
-UnknownText_0x8a107: ; 0x8a107
-	; This is your CARD. Once you've entered your phone number, you can trade CARDS with your friends.
-	text_jump UnknownText_0x1c52bc
-	db "@"
-; 0x8a10c
-
-UnknownText_0x8a10c: ; 0x8a10c
-	; If you have your friend's CARD, you can use it to make a call from a mobile phone on the 2nd floor of a #MON CENTER.
-	text_jump UnknownText_0x1c531e
-	db "@"
-; 0x8a111
-
-UnknownText_0x8a111: ; 0x8a111
-	; To safely store your collection of CARDS, you must set a PASSCODE for your CARD FOLDER.
-	text_jump UnknownText_0x1c5394
-	db "@"
-; 0x8a116
-
-Function8a116: ; 8a116 (22:6116)
-	ld a, $1
-	ld [wd030], a
-	ld hl, MenuDataHeader_0x8a176
-	call LoadMenuDataHeader
-.asm_8a121
-	call Function8923c
-	call Function8a17b
-	jr c, .asm_8a16b
-	ld a, [wcfa9]
-	ld [wd030], a
-	dec d
-	jr z, .asm_8a140
-	call Function8a20d
-	jr c, .asm_8a121
-	xor a
-	call Function8a2fe
-	call Function8916e
-	jr .asm_8a16b
-.asm_8a140
-	call Function89174
-	jr nz, .asm_8a14c
-	call Function8a241
-	jr c, .asm_8a121
-	jr .asm_8a15a
-.asm_8a14c
-	call WaitSFX
-	ld de, SFX_TWINKLE
-	call PlaySFX
-	ld c, $10
-	call DelayFrames
-.asm_8a15a
-	call ExitMenu
-	call Function891de
-	call Function893e2
-	call Function89245
-	call Function89168
-	and a
-	ret
-.asm_8a16b
-	call Function89209
-	call WriteBackup
-	call Function8920f
-	scf
-	ret
-; 8a176 (22:6176)
-
-MenuDataHeader_0x8a176: ; 0x8a176
-	db $40 ; flags
-	db 00, 14 ; start coords
-	db 06, 19 ; end coords
-; 8a17b
-
-Function8a17b: ; 8a17b (22:617b)
-	decoord 14, 0
-	ld b, $5
-	ld c, $4
-	call Function89b3b
-	ld hl, MenuDataHeader_0x8a19a
-	ld a, [wd030]
-	call Function89d5e
-	ld hl, Function8a1b0
-	call Function89d75
-	jr nc, .asm_8a198
-	ld a, $0
-.asm_8a198
-	ld d, a
-	ret
-; 8a19a (22:619a)
-
-MenuDataHeader_0x8a19a: ; 0x8a19a
-	db $40 ; flags
-	db 00, 14 ; start coords
-	db 06, 19 ; end coords
-	dw MenuData2_0x8a1a2
-	db 1 ; default option
-; 0x8a1a2
-
-MenuData2_0x8a1a2: ; 0x8a1a2
-	db $e0 ; flags
-	db 3 ; items
-	db "ひらく@"
-	db "すてる@"
-	db "もどる@"
-; 0x8a1b0
-
-Function8a1b0: ; 8a1b0
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	hlcoord 1, 14
-	ld a, [wcfa9]
-	ld de, Strings_8a1cc
-	dec a
-	ld c, a
-	call Function8919e
-	call PlaceString
-	ret
-; 8a1cc
-
-Strings_8a1cc: ; 8a1cc
-	db   "めいし", $25, "せいりと へんしゅうを"
-	next "おこないます"
-	db   "@"
-
-	db   "めいしフ,ルダー", $25, "めいしと"
-	next "あんしょうばんごう", $1f, "けします"
-	db   "@"
-
-	db   "まえ", $25, "がめん", $1d, "もどります"
-	db   "@"
-; 8a20d
-
-
-Function8a20d: ; 8a20d (22:620d)
-	ld hl, UnknownText_0x8a232
-	call PrintText
-	ld a, $2
-	call Function89259
-	ret c
-	ld hl, UnknownText_0x8a237
-	call PrintText
-	ld a, $2
-	call Function89259
-	ret c
-	xor a
-	call Function8a2fe
-	ld hl, UnknownText_0x8a23c
-	call PrintText
-	xor a
-	and a
-	ret
-; 8a232 (22:6232)
-
-UnknownText_0x8a232: ; 0x8a232
-	; If the CARD FOLDER is deleted, all its CARDS and the PASSCODE will also be deleted. Beware--a deleted CARD FOLDER can't be restored. Want to delete your CARD FOLDER?
-	text_jump UnknownText_0x1c53ee
-	db "@"
-; 0x8a237
-
-UnknownText_0x8a237: ; 0x8a237
-	; Are you sure you want to delete it?
-	text_jump UnknownText_0x1c5494
-	db "@"
-; 0x8a23c
-
-UnknownText_0x8a23c: ; 0x8a23c
-	; The CARD FOLDER has been deleted.
-	text_jump UnknownText_0x1c54b9
-	db "@"
-; 0x8a241
-
-Function8a241: ; 8a241 (22:6241)
-	call Function1d6e
-	call Function891fe
-	call Function8a262
-	jr nc, .asm_8a254
-	call Function891fe
-	call Function89b28
-	scf
-	ret
-.asm_8a254
-	call Function891de
-	call WhiteBGMap
-	call Function1d7d
-	call Function891de
-	and a
-	ret
-
-Function8a262: ; 8a262 (22:6262)
-	call WhiteBGMap
-	call Function893e2
-	call Function8923c
-	callba Function4a3a7
-	callba Function49384
-	hlcoord 1, 0
-	call Function8a53d
-	hlcoord 12, 4
-	call Function8a58d
-	ld a, $5
-	hlcoord 12, 4, AttrMap
-	call Function8a5a3
-	ld a, $6
-	hlcoord 15, 4, AttrMap
-	call Function8a5a3
-	xor a
-	ld [wd02e], a
-	ld bc, wd013
-	call Function8b36c
-	call Function8b493
-	call Function891ab
-	call Function32f9
-	call Function8b5e7
-	ret
-
-Function8a2aa: ; 8a2aa (22:62aa)
-	ld hl, MenuDataHeader_0x8a2ef
-	call LoadMenuDataHeader
-	ld hl, UnknownText_0x8a2f4
-	call PrintText
-	ld a, $1
-	call Function89259
-	jr nc, .asm_8a2cf
-	ld hl, UnknownText_0x8a2f9
-	call PrintText
-	ld a, $2
-	call Function89259
-	jr c, .asm_8a2ea
-	call Function8a20d
-	jr .asm_8a2ea
-.asm_8a2cf
-	call ExitMenu
-	call Function8a241
-	jr c, .asm_8a2ed
-	ld a, $1
-	call Function8a313
-	call CloseSRAM
-	call Function891de
-	call Function89245
-	call Function89168
-	and a
-	ret
-.asm_8a2ea
-	call WriteBackup
-.asm_8a2ed
-	scf
-	ret
-; 8a2ef (22:62ef)
-
-MenuDataHeader_0x8a2ef: ; 0x8a2ef
-	db $40 ; flags
-	db 12, 00 ; start coords
-	db 17, 19 ; end coords
-; 8a2f4
-
-UnknownText_0x8a2f4: ; 0x8a2f4
-	; There is an older CARD FOLDER from a previous journey. Do you want to open it?
-	text_jump UnknownText_0x1c54dd
-	db "@"
-; 0x8a2f9
-
-UnknownText_0x8a2f9: ; 0x8a2f9
-	; Delete the old CARD FOLDER?
-	text_jump UnknownText_0x1c552d
-	db "@"
-; 0x8a2fe
-
-Function8a2fe: ; 8a2fe (22:62fe)
-	call Function8a313
-	call Function89305
-	ld hl, $a603
-	ld bc, $8
-	ld a, $ff
-	call ByteFill
-	call CloseSRAM
-	ret
-
-Function8a313: ; 8a313 (22:6313)
-	ld c, a
-	call Function89160
-	ld a, c
-	ld [$a60b], a
-	ret
-
-Function8a31c: ; 8a31c (22:631c)
-	push bc
-	call Function8923c
-	callba Function4a3a7
-	callba Function49384
-	hlcoord 1, 0
-	call Function8a53d
-	hlcoord 12, 4
-	call Function8a58d
-	call Function8a3b2
-	pop bc
-	ld a, c
-	ld [wcf88], a
-	ld [MenuSelection], a
-	call Function1c89
-	call Function1c10
-	ld hl, wcfa5
-	set 7, [hl]
-.asm_8a34e
-	call Function8a3a2
-	call Function8923c
-	call Function8a453
-	call Function8a4d3
-	call Function8a4fc
-	call Function891ab
-	call Function32f9
-	call Function8a383
-	jr c, .asm_8a370
-	jr z, .asm_8a34e
-.asm_8a36a
-	call Function89448
-	xor a
-	ld e, a
-	ret
-.asm_8a370
-	call Function89448
-	call Function1bee
-	call Function8a3a2
-	ld a, [MenuSelection]
-	cp $ff
-	jr z, .asm_8a36a
-	ld e, a
-	and a
-	ret
-
-Function8a383: ; 8a383 (22:6383)
-	callba Function241ba
-	ld a, c
-	ld hl, wcfa8
-	and [hl]
-	ret z
-	bit 0, a
-	jr nz, .asm_8a399
-	bit 1, a
-	jr nz, .asm_8a39e
-	xor a
-	ret
-.asm_8a399
-	call PlayClickSFX
-	scf
-	ret
-.asm_8a39e
-	call PlayClickSFX
-	ret
-
-Function8a3a2: ; 8a3a2 (22:63a2)
-	ld a, [wcfa9]
-	dec a
-	ld hl, DefaultFlypoint
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	ld [MenuSelection], a
-	ret
-
-Function8a3b2: ; 8a3b2 (22:63b2)
-	ld a, $1
-	ld [MenuSelection], a
-	call Function8a4fc
-	call Function8a3df
-	jr nc, .asm_8a3ce
-	decoord 0, 2
-	ld b, $6
-	ld c, $9
-	call Function89b3b
-	ld hl, MenuDataHeader_0x8a435
-	jr .asm_8a3db
-.asm_8a3ce
-	decoord 0, 2
-	ld b, $8
-	ld c, $9
-	call Function89b3b
-	ld hl, MenuDataHeader_0x8a40f
-.asm_8a3db
-	call CopyMenuDataHeader
-	ret
-
-Function8a3df: ; 8a3df (22:63df)
-	call Function89160
-	ld hl, $a603
-	call Function89b45
-	call CloseSRAM
-	ld hl, DefaultFlypoint
-	jr c, .asm_8a3f8
-	ld de, Unknown_8a408
-	call Function8a400
-	scf
-	ret
-.asm_8a3f8
-	ld de, Unknown_8a40b
-	call Function8a400
-	and a
-	ret
-
-Function8a400: ; 8a400 (22:6400)
-	ld a, [de]
-	inc de
-	ld [hli], a
-	cp $ff
-	jr nz, Function8a400
-	ret
-; 8a408 (22:6408)
-
-Unknown_8a408: db 1, 2, -1
-Unknown_8a40b: db 1, 2, 3, -1
-
-MenuDataHeader_0x8a40f: ; 0x8a40f
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 10 ; end coords
-	dw MenuData2_0x8a417
-	db 1 ; default option
-; 0x8a417
-
-MenuData2_0x8a417: ; 0x8a417
-	db $a0 ; flags
-	db 4 ; items
-	db "めいしりスト@"
-	db "じぶんの めいし@"
-	db "めいしこうかん@"
-	db "やめる@"
-; 0x8a435
-
-MenuDataHeader_0x8a435: ; 0x8a435
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 09, 10 ; end coords
-	dw MenuData2_0x8a43d
-	db 1 ; default option
-; 0x8a43d
-
-MenuData2_0x8a43d: ; 0x8a43d
-	db $a0 ; flags
-	db 3 ; items
-	db "めいしりスト@"
-	db "じぶんの めいし@"
-	db "やめる@"
-; 0x8a453
-
-Function8a453: ; 8a453 (22:6453)
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	hlcoord 1, 14
-	ld de, String_8a476
-	ld a, [MenuSelection]
-	cp $ff
-	jr z, .asm_8a472
-	ld de, Strings_8a483
-	dec a
-	ld c, a
-	call Function8919e
-.asm_8a472
-	call PlaceString
-	ret
-; 8a476 (22:6476)
-
-String_8a476: ; 8a476
-	db   "まえ", $25, "がめん", $1d, "もどります@"
-; 8a483
-
-Strings_8a483: ; 8a483
-	db   "おともだち", $25, "めいしは"
-	next "ここ", $1d, "いれておきます@"
-
-	db   "でんわばんごう", $1f, "いれると"
-	next "めいしこうかん", $4a, "できます@"
-
-	db   "ともだちと じぶん", $25, "めいしを"
-	next "せきがいせんで こうかん します@"
-; 8a4d3
-
-Function8a4d3: ; 8a4d3 (22:64d3)
-	ld a, [MenuSelection]
-	cp $1
-	jr nz, .asm_8a4eb
-	ld a, $5
-	hlcoord 12, 4, AttrMap
-	call Function8a5a3
-	ld a, $7
-	hlcoord 15, 4, AttrMap
-	call Function8a5a3
-	ret
-.asm_8a4eb
-	ld a, $7
-	hlcoord 12, 4, AttrMap
-	call Function8a5a3
-	ld a, $6
-	hlcoord 15, 4, AttrMap
-	call Function8a5a3
-	ret
-
-Function8a4fc: ; 8a4fc (22:64fc)
-	ld a, [MenuSelection]
-	cp $3
-	jr nz, asm_8a529
-	ld hl, wd012
-	ld a, [hli]
-	ld b, a
-	ld a, [hld]
-	add b
-	ld [hl], a
-	ld b, a
-	ld c, $80
-	call Function89cdf
-	call Function8a515
-	ret
-
-Function8a515: ; 8a515 (22:6515)
-	ld hl, wd012
-	ld a, [hl]
-	cp $38
-	jr c, .asm_8a520
-	cp $3c
-	ret c
-.asm_8a520
-	ld a, [wd013]
-	cpl
-	inc a
-	ld [wd013], a
-	ret
-
-asm_8a529: ; 8a529 (22:6529)
-	ld hl, wd012
-	ld a, $3c
-	ld [hli], a
-	ld a, $ff
-	ld [hli], a
-	ld hl, Sprites
-	xor a
-	ld bc, $20
-	call ByteFill
-	ret
-
-Function8a53d: ; 8a53d (22:653d)
-	push hl
-	ld a, $15
-	ld c, $8
-	ld de, $14
-	call Function8a573
-	ld a, $1d
-	ld c, $9
-	call Function8a57c
-	inc a
-	ld [hl], a
-	call Function8a584
-	pop hl
-	add hl, de
-	ld a, $1f
-	ld c, $8
-	call Function8a573
-	dec hl
-	ld a, $51
-	ld [hli], a
-	ld a, $26
-	ld c, $1
-	call Function8a57c
-	ld a, $52
-	ld c, $3
-	call Function8a573
-	ld a, $27
-	ld c, $6
-
-Function8a573: ; 8a573 (22:6573)
-	ld [hl], a
-	call Function8a584
-	inc a
-	dec c
-	jr nz, Function8a573
-	ret
-
-Function8a57c: ; 8a57c (22:657c)
-	ld [hl], a
-	call Function8a584
-	dec c
-	jr nz, Function8a57c
-	ret
-
-Function8a584: ; 8a584 (22:6584)
-	push af
-	ld a, $4
-	call Function89215
-	inc hl
-	pop af
-	ret
-
-Function8a58d: ; 8a58d (22:658d)
-	ld a, $2d
-	ld bc, $606
-	ld de, $14
-.asm_8a595
-	push bc
-	push hl
-.asm_8a597
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_8a597
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_8a595
-	ret
-
-Function8a5a3: ; 8a5a3 (22:65a3)
-	ld bc, $603
-	ld de, $14
-.asm_8a5a9
-	push bc
-	push hl
-.asm_8a5ab
-	ld [hli], a
-	dec c
-	jr nz, .asm_8a5ab
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_8a5a9
-	ret
-
-Function8a5b6: ; 8a5b6 (22:65b6)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Palette_8a5e5
-	ld de, wd020
-	ld bc, $18
-	call CopyBytes
-	ld hl, Palette_8a5fd
-	ld de, Unkn2Pals
-	ld bc, $8
-	call CopyBytes
-	ld hl, Palette_8a605
-	ld de, wd048
-	ld bc, $8
-	call CopyBytes
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-; 8a5e5 (22:65e5)
-
-Palette_8a5e5: ; 8a5e5
-	RGB 31, 31, 31
-	RGB 27, 19, 00
-	RGB 07, 11, 22
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 16, 16, 31
-	RGB 27, 19, 00
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 31, 00, 00
-	RGB 27, 19, 00
-	RGB 00, 00, 00
-; 8a5fd
-
-Palette_8a5fd: ; 8a5fd
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-; 8a605
-
-Palette_8a605: ; 8a605
-	RGB 00, 00, 00
-	RGB 14, 18, 31
-	RGB 16, 16, 31
-	RGB 31, 31, 31
-; 8a60d
-
-Function8a60d: ; 8a60d
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, Palette_8a624
-	ld de, Unkn2Pals
-	ld bc, $0008
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	ret
-; 8a624
-
-Palette_8a624: ; 8a624
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-; 8a62c
-
-Function8a62c: ; 8a62c (22:662c)
-	call Function1d6e
-	call Function891fe
-	xor a
-	call Function8b94a
-	call Function8b677
-.asm_8a639
-	xor a
-	ld [wd033], a
-	ld [wd032], a
-	ld [wd0e3], a
-	call Function8b7bd
-	ld a, c
-	and a
-	jr z, .asm_8a66a
-	ld [MenuSelection], a
-	ld b, a
-	ld a, [wcf77]
-	inc a
-	ld [wd034], a
-	push bc
-	call Function8b960
-	ld a, c
-	pop bc
-	jr z, .asm_8a639
-	ld c, a
-	ld hl, Jumptable_8a671
-	ld a, b
-	ld [MenuSelection], a
-	ld a, c
-	dec a
-	rst JumpTable
-	jr .asm_8a639
-.asm_8a66a
-	call Function891fe
-	call Function89b28
-	ret
-
-Jumptable_8a671: ; 8a671 (22:6671)
-	dw Function8a679
-	dw Function8a6cd
-	dw Function8a8c3
-	dw Function8a930
-
-
-Function8a679: ; 8a679 (22:6679)
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	call Function89160
-	call Function8931b
-	call Function89844
-	call CloseSRAM
-	call Function89160
-	call Function8939a
-	call Function89856
-	hlcoord 1, 13
-	call Function899fe
-	call Function891ab
-	call CloseSRAM
-.asm_8a6a3
-	call Function89a57
-	jr c, .asm_8a6a3
-	and a
-	jr z, Function8a679
-	ld hl, Jumptable_8a6bc
-	dec a
-	rst JumpTable
-	jr c, Function8a679
-	call Function891fe
-	call Function8b677
-	call Function89448
-	ret
-
-Jumptable_8a6bc: ; 8a6bc (22:66bc)
-	dw Function8a6c0
-	dw Function8a6c5
-
-
-Function8a6c0: ; 8a6c0 (22:66c0)
-	call PlayClickSFX
-	and a
-	ret
-
-Function8a6c5: ; 8a6c5 (22:66c5)
-	call PlayClickSFX
-	call Function89d0d
-	scf
-	ret
-
-Function8a6cd: ; 8a6cd (22:66cd)
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	call Function89160
-	call Function8931b
-	call Function89844
-	call Function8a757
-	call CloseSRAM
-.asm_8a6e5
-	call Function89160
-	call Function8931b
-	call Function89856
-	call Function89a2e
-	call Function891ab
-	xor a
-	ld [wd02f], a
-	call CloseSRAM
-.asm_8a6fb
-	call Function89b97
-	call Function89c67
-	jr c, .asm_8a718
-	ld a, b
-	and a
-	jr z, .asm_8a6fb
-	call PlayClickSFX
-	call Function89448
-	ld a, [wd011]
-	ld hl, Jumptable_8a74f
-	rst JumpTable
-	jr nc, .asm_8a6e5
-	jr .asm_8a742
-.asm_8a718
-	call Function89160
-	call Function8a765
-	call CloseSRAM
-	jr nc, .asm_8a73f
-	call Function8923c
-	call Function89448
-	call Function89a23
-	hlcoord 1, 13
-	ld de, String_89135
-	call PlaceString
-	call WaitBGMap
-	ld a, $2
-	call Function89254
-	jr c, .asm_8a6e5
-.asm_8a73f
-	call CloseSRAM
-.asm_8a742
-	call WhiteBGMap
-	call Function89448
-	call Function891d3
-	call Function8b677
-	ret
-
-Jumptable_8a74f: ; 8a74f (22:674f)
-	dw Function8a78c
-	dw Function8a7cb
-	dw Function8a818
-	dw Function8a8a1
-
-
-Function8a757: ; 8a757 (22:6757)
-	call Function8939a
-	xor a
-	ld [wd010], a
-	ld [wd011], a
-	ld [wd012], a
-	ret
-
-Function8a765: ; 8a765 (22:6765)
-	call Function8931b
-	push bc
-	ld hl, $0
-	add hl, bc
-	ld de, DefaultFlypoint
-	ld c, $6
-	call Function89185
-	pop bc
-	jr nz, .asm_8a78a
-	push bc
-	ld hl, $11
-	add hl, bc
-	ld de, wd008
-	ld c, $8
-	call Function89185
-	pop bc
-	jr nz, .asm_8a78a
-	and a
-	ret
-.asm_8a78a
-	scf
-	ret
-
-Function8a78c: ; 8a78c (22:678c)
-	call Function891fe
-	ld de, DefaultFlypoint
-	ld b, $5
-	callba Function116c1
-	call Function89160
-	call Function8931b
-	push bc
-	ld hl, $0
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, DefaultFlypoint
-	call InitName
-	call CloseSRAM
-	call DelayFrame
-	call Functiona57
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	call Function89160
-	pop bc
-	call Function89844
-	call CloseSRAM
-	and a
-	ret
-
-Function8a7cb: ; 8a7cb (22:67cb)
-	ld a, [MenuSelection]
-	push af
-	call Function891de
-	ld de, wd008
-	ld c, $0
-	callba Function17a68f
-	jr c, .asm_8a7f4
-	ld hl, wd008
-	ld a, $ff
-	ld bc, $8
-	call ByteFill
-	ld h, d
-	ld l, e
-	ld de, wd008
-	ld c, $8
-	call Function89193
-.asm_8a7f4
-	pop af
-	ld [MenuSelection], a
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	call Function89160
-	call Function8931b
-	call Function89844
-	call Function89856
-	call Function89a2e
-	call Function891ab
-	call CloseSRAM
-	and a
-	ret
-
-Function8a818: ; 8a818 (22:6818)
-	call Function89a23
-	ld hl, DefaultFlypoint
-	call Function89331
-	jr c, .asm_8a875
-	ld hl, wd008
-	call Function89b45
-	jr nc, .asm_8a87a
-	call Function89160
-	call Function8a765
-	jr nc, .asm_8a863
-	call Function8931b
-	push bc
-	ld hl, $0
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, DefaultFlypoint
-	ld c, $6
-	call Function89193
-	pop bc
-	ld hl, $11
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, wd008
-	ld c, $8
-	call Function89193
-	hlcoord 1, 13
-	ld de, .string_8a868
-	call PlaceString
-	call WaitBGMap
-	call Functiona36
-.asm_8a863
-	call CloseSRAM
-	scf
-	ret
-; 8a868 (22:6868)
-
-.string_8a868
-	db "めいし", $1f, "かきかえ まし", $22, "@"
-
-.asm_8a875
-	ld de, String_8a88b
-	jr .asm_8a87d
-.asm_8a87a
-	ld de, String_8911c
-.asm_8a87d
-	hlcoord 1, 13
-	call PlaceString
-	call WaitBGMap
-	call Functiona36
-	and a
-	ret
-; 8a88b (22:688b)
-
-String_8a88b: ; 8a88b
-	db   "おともだち", $25, "なまえが"
-	next "かかれて いません!@"
-; 8a8a1
-
-Function8a8a1: ; 8a8a1 (22:68a1)
-	call Function89160
-	call Function8a765
-	call CloseSRAM
-	jr nc, .asm_8a8bf
-	call Function89a23
-	hlcoord 1, 13
-	ld de, String_89135
-	call PlaceString
-	ld a, $2
-	call Function89254
-	jr c, .asm_8a8c1
-.asm_8a8bf
-	scf
-	ret
-.asm_8a8c1
-	and a
-	ret
-
-Function8a8c3: ; 8a8c3 (22:68c3)
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	call Function89160
-	call Function8931b
-	call Function89844
-	call Function8939a
-	call Function89856
-	call CloseSRAM
-	call Function891ab
-	hlcoord 1, 13
-	ld de, String_8a919
-	call PlaceString
-	ld a, $2
-	call Function89254
-	jr c, .asm_8a90f
-	call Function89160
-	call Function892b4
-	call CloseSRAM
-	call Function89a23
-	call Function8923c
-	hlcoord 1, 13
-	ld de, String_8a926
-	call PlaceString
-	call WaitBGMap
-	call Functiona36
-.asm_8a90f
-	call Function89448
-	call Function891fe
-	call Function8b677
-	ret
-; 8a919 (22:6919)
-
-String_8a919: ; 8a919
-	db "このデータ", $1f, "けしますか?@"
-; 8a926
-
-String_8a926: ; 8a926
-	db "データ", $1f, "けしまし", $22, "@"
-; 8a930
-
-Function8a930: ; 8a930 (22:6930)
-	ld a, [MenuSelection]
-	push af
-	xor a
-	ld [wd032], a
-	ld a, $1
-	ld [wd033], a
-	ld a, [wd034]
-	ld [wd0e3], a
-.asm_8a943
-	call Function8b7bd
-	ld a, [wcf73]
-	and $1
-	jr nz, .asm_8a953
-	ld a, c
-	and a
-	jr nz, .asm_8a943
-	pop af
-	ret
-.asm_8a953
-	call Function89160
-	pop af
-	cp c
-	jr z, .asm_8a995
-	push bc
-	ld [MenuSelection], a
-	call Function8931b
-	push bc
-	ld h, b
-	ld l, c
-	ld de, DefaultFlypoint
-	ld bc, $25
-	call CopyBytes
-	pop de
-	pop bc
-	ld a, c
-	ld [MenuSelection], a
-	call Function8931b
-	push bc
-	ld h, b
-	ld l, c
-	ld bc, $25
-	call CopyBytes
-	pop de
-	ld hl, DefaultFlypoint
-	ld bc, $25
-	call CopyBytes
-	ld de, SFX_SWITCH_POKEMON
-	call WaitPlaySFX
-	ld de, SFX_SWITCH_POKEMON
-	call WaitPlaySFX
-.asm_8a995
-	call CloseSRAM
-	ret
-
-Function8a999: ; 8a999 (22:6999)
-	ld hl, MenuDataHeader_0x8a9c9
-	call LoadMenuDataHeader
-	ld c, $1
-.asm_8a9a1
-	call Function8a9ce
-	jr c, .asm_8a9bb
-	push bc
-	push de
-	call Function1d6e
-	pop de
-	dec e
-	ld a, e
-	ld hl, Jumptable_8a9c5
-	rst JumpTable
-	call Function891fe
-	call Function89b28
-	pop bc
-	jr .asm_8a9a1
-.asm_8a9bb
-	call Function89209
-	call WriteBackup
-	call Function8920f
-	ret
-
-Jumptable_8a9c5: ; 8a9c5 (22:69c5)
-	dw Function8aa0a
-	dw Function8ab3b
-; 8a9c9 (22:69c9)
-
-MenuDataHeader_0x8a9c9: ; 0x8a9c9
-	db $40 ; flags
-	db 04, 11 ; start coords
-	db 11, 18 ; end coords
-; 8a9ce
-
-Function8a9ce: ; 8a9ce (22:69ce)
-	push bc
-	decoord 11, 4
-	ld b, $6
-	ld c, $6
-	call Function89b3b
-	pop bc
-	ld a, c
-	ld hl, MenuDataHeader_0x8a9f2
-	call Function89d5e
-	ld hl, Function8aa09
-	call Function89d85
-	jr c, .asm_8a9ed
-	ld c, a
-	ld e, a
-	and a
-	ret
-.asm_8a9ed
-	ld c, a
-	ld e, $0
-	scf
-	ret
-; 8a9f2 (22:69f2)
-
-MenuDataHeader_0x8a9f2: ; 0x8a9f2
-	db $40 ; flags
-	db 04, 11 ; start coords
-	db 11, 18 ; end coords
-	dw MenuData2_0x8a9fa
-	db 1 ; default option
-; 0x8a9fa
-
-MenuData2_0x8a9fa: ; 0x8a9fa
-	db $a0 ; flags
-	db 3 ; items
-	db "へんしゅう@"
-	db "みる@"
-	db "やめる@"
-; 0x8aa09
-
-Function8aa09: ; 8aa09
-	ret
-; 8aa0a
-
-Function8aa0a: ; 8aa0a (22:6a0a)
-	ld a, $1
-	ld [wd02f], a
-	ld [wd011], a
-	xor a
-	ld [wd010], a
-	ld [wd012], a
-	call Function89160
-	ld hl, $a603
-	ld de, wd008
-	call Function89381
-	call CloseSRAM
-	call Function891fe
-	call WhiteBGMap
-	call Function893cc
-	call Function89807
-	call Function89492
-	call Function894ca
-.asm_8aa3a
-	call Function8987f
-	call Function89a2e
-	call Function891ab
-.asm_8aa43
-	call Function89b97
-	call Function89c67
-	jr c, .asm_8aa61
-	ld a, b
-	and a
-	jr z, .asm_8aa43
-	call PlayClickSFX
-	call Function89448
-	ld a, [wd011]
-	dec a
-	ld hl, Jumptable_8aa6d
-	rst JumpTable
-	jr nc, .asm_8aa3a
-	jr .asm_8aa69
-.asm_8aa61
-	call Function89448
-	call Function8ab11
-	jr nc, .asm_8aa3a
-.asm_8aa69
-	call Function89448
-	ret
-
-Jumptable_8aa6d: ; 8aa6d (22:6a6d)
-	dw Function8aa73
-	dw Function8aab6
-	dw Function8ab11
-
-
-Function8aa73: ; 8aa73 (22:6a73)
-	ld a, [MenuSelection]
-	ld e, a
-	push de
-	call Function891de
-	ld de, wd008
-	ld c, $0
-	callba Function17a68f
-	jr c, .asm_8aa9d
-	ld hl, wd008
-	ld a, $ff
-	ld bc, $8
-	call ByteFill
-	ld h, d
-	ld l, e
-	ld de, wd008
-	ld c, $8
-	call Function89193
-.asm_8aa9d
-	call Function891fe
-	call WhiteBGMap
-	call Function893cc
-	call Function89807
-	call Function89492
-	call Function894ca
-	pop de
-	ld a, e
-	ld [MenuSelection], a
-	and a
-	ret
-
-Function8aab6: ; 8aab6 (22:6ab6)
-	call Function89a23
-	ld hl, wd008
-	call Function89b45
-	jr nc, Function8ab00
-	call Function89160
-	ld de, wd008
-	ld hl, $a603
-	ld c, $8
-	call Function89185
-	jr z, .asm_8aaeb
-	ld hl, wd008
-	ld de, $a603
-	ld c, $8
-	call Function89193
-	hlcoord 1, 13
-	ld de, String_8aaf0
-	call PlaceString
-	call WaitBGMap
-	call Functiona36
-.asm_8aaeb
-	call CloseSRAM
-	scf
-	ret
-; 8aaf0 (22:6af0)
-
-String_8aaf0: ; 8aaf0
-	db "あたらしい めいし", $4a, "できまし", $22, "@"
-; 8ab00
-
-Function8ab00: ; 8ab00
-	ld de, String_8911c
-	hlcoord 1, 13
-	call PlaceString
-	call WaitBGMap
-	call Function89235
-	and a
-	ret
-
-Function8ab11: ; 8ab11 (22:6b11)
-	call Function89160
-	ld hl, $a603
-	ld de, wd008
-	ld c, $8
-	call Function89185
-	call CloseSRAM
-	jr z, .asm_8ab37
-	call Function89a23
-	hlcoord 1, 13
-	ld de, String_89135
-	call PlaceString
-	ld a, $2
-	call Function89254
-	jr c, .asm_8ab39
-.asm_8ab37
-	scf
-	ret
-.asm_8ab39
-	and a
-	ret
-
-Function8ab3b: ; 8ab3b (22:6b3b)
-	call Function891fe
-	call WhiteBGMap
-	call Function893cc
-	call Function89807
-	call Function89492
-	call Function894ca
-	call Function89160
-	ld hl, $a603
-	ld de, wd008
-	call Function89381
-	call CloseSRAM
-	call Function8987f
-	call Function89160
-	hlcoord 1, 13
-	ld bc, $a007
-	call Function89a0c
-	call CloseSRAM
-	call Function891ab
-	call Function8ab77
-	jr c, Function8ab3b
-	ret
-
-Function8ab77: ; 8ab77 (22:6b77)
-	call Function354b
-	bit 0, c
-	jr nz, .asm_8ab8e
-	bit 1, c
-	jr nz, .asm_8ab8e
-	bit 3, c
-	jr z, Function8ab77
-	call PlayClickSFX
-	call Function89d0d
-	scf
-	ret
-.asm_8ab8e
-	call PlayClickSFX
-	and a
-	ret
-
-Function8ab93: ; 8ab93 (22:6b93)
-	call WhiteBGMap
-	call Function1d6e
-	callba Function105688
-	call ClearSprites
-	call Function891fe
-	call Function89b28
-	ret
-; 8aba9 (22:6ba9)
-
-Function8aba9: ; 8aba9
-	ld a, $2
-	call Function8b94a
-	ld a, $1
-	ld [wd032], a
-.asm_8abb3
-	call Function891fe
-	call Function8b677
-.asm_8abb9
-	call Function8b7bd
-	jr z, .asm_8abdf
-	ld a, c
-	ld [MenuSelection], a
-	call Function89160
-	call Function8931b
-	ld hl, $0011
-	add hl, bc
-	call Function89b45
-	call CloseSRAM
-	jr c, .asm_8abe2
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call CloseSRAM
-	jr .asm_8abb9
-
-.asm_8abdf
-	xor a
-	ld c, a
-	ret
-
-.asm_8abe2
-	call PlayClickSFX
-.asm_8abe5
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	call Function89160
-	call Function8931b
-	call Function89844
-	call CloseSRAM
-	call Function89160
-	call Function8939a
-	call Function89856
-	hlcoord 1, 13
-	call Function899fe
-	call CloseSRAM
-	call Function891ab
-.asm_8ac0f
-	call Function89a57
-	jr c, .asm_8ac0f
-	and a
-	jr z, .asm_8abe5
-	cp $2
-	jr z, .asm_8ac0f
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	hlcoord 1, 14
-	ld de, String_8ac3b
-	call PlaceString
-	ld a, $1
-	call Function8925e
-	jp c, .asm_8abb3
-	ld a, [MenuSelection]
-	ld c, a
-	ret
-; 8ac3b
-
-String_8ac3b: ; 8ac3b
-	db   "こ", $25, "ともだち", $1d, "でんわを"
-	next "かけますか?@"
-; 8ac4e
-
-Function8ac4e: ; 8ac4e
-	xor a
-	ld [MenuSelection], a
-	push de
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	pop bc
-	call Function89844
-	call Function8939a
-	call Function89856
-	hlcoord 1, 13
-	call Function899fe
-	call Function891ab
-	ret
-; 8ac70
-
-Function8ac70: ; 8ac70
-	push de
-	ld a, $3
-	call Function8b94a
-
-Function8ac76: ; 8ac76
-	call Function891fe
-	call Function8b677
-
-Function8ac7c: ; 8ac7c
-	call Function8b7bd
-	jr z, .asm_8acf0
-	ld a, c
-	ld [wd02f], a
-	ld [MenuSelection], a
-	call Function89160
-	call Function8931b
-	call Function8932d
-	call CloseSRAM
-	jr nc, .asm_8acb0
-	call Function89160
-	ld hl, $0011
-	add hl, bc
-	call Function89b45
-	call CloseSRAM
-	jr nc, .asm_8accc
-	call Function89160
-	call Function892b7
-	call CloseSRAM
-	jr .asm_8accc
-
-.asm_8acb0
-	call Function8ad0b
-	jr c, Function8ac76
-	and a
-	jr nz, .asm_8accc
-	call Function89160
-	ld h, b
-	ld l, c
-	ld d, $0
-	ld e, $6
-	add hl, de
-	ld d, h
-	ld e, l
-	pop hl
-	ld c, $1f
-	call Function89193
-	jr .asm_8ace4
-
-.asm_8accc
-	pop hl
-	call Function89160
-	ld d, b
-	ld e, c
-	ld c, $6
-	call Function89193
-	ld a, $6
-	add e
-	ld e, a
-	ld a, $0
-	adc d
-	ld d, a
-	ld c, $1f
-	call Function89193
-
-.asm_8ace4
-	call CloseSRAM
-	call Functione51
-	ld a, [wd02f]
-	ld c, a
-	and a
-	ret
-
-.asm_8acf0
-	ld hl, UnknownText_0x8ad06
-	call PrintText
-	ld a, $2
-	call Function89259
-	jp c, Function8ac7c
-	call Functione51
-	pop de
-	ld c, $0
-	scf
-	ret
-; 8ad06
-
-UnknownText_0x8ad06: ; 0x8ad06
-	; Finish registering CARDS?
-	text_jump UnknownText_0x1c554a
-	db "@"
-; 0x8ad0b
-
-Function8ad0b: ; 8ad0b
-.asm_8ad0b
-	ld a, [MenuSelection]
-	ld [wd02f], a
-	call Function891de
-	call WhiteBGMap
-	call Function893cc
-	call Function89160
-	call Function8931b
-	push bc
-	call Function89844
-	call Function8939a
-	call Function89856
-	hlcoord 1, 13
-	call Function899fe
-	call CloseSRAM
-	call Function891ab
-	pop bc
-.asm_8ad37
-	push bc
-	call Function89a57
-	pop bc
-	jr c, .asm_8ad37
-	and a
-	jr z, .asm_8ad0b
-	cp $2
-	jr z, .asm_8ad37
-	call Function8923c
-	push bc
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	ld de, String_8ad89
-	hlcoord 1, 14
-	call PlaceString
-	ld a, $2
-	call Function8925e
-	jr c, .asm_8ad87
-	call Function8923c
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	ld de, String_8ad9c
-	hlcoord 1, 14
-	call PlaceString
-	ld a, $1
-	call Function8925e
-	jr c, .asm_8ad84
-	ld a, $0
-	jr .asm_8ad86
-
-.asm_8ad84
-	ld a, $1
-
-.asm_8ad86
-	and a
-
-.asm_8ad87
-	pop bc
-	ret
-; 8ad89
-
-String_8ad89: ; 8ad89
-	db   "こ", $25, "めいし", $1f, "けして"
-	next "いれかえますか?@"
-; 8ad9c
-
-String_8ad9c: ; 8ad9c
-	db   "おともだち", $25, "なまえを"
-	next "のこして おきますか?@"
-; 8adb3
-
-Function8adb3: ; 8adb3
-	call Function891de
-	call Function8a262
-	push af
-	call Function891de
-	pop af
-	ret
-; 8adbf
-
-Function8adbf: ; 8adbf
-	call Function89160
-	ld hl, $a603
-	call Function89b45
-	call CloseSRAM
-	ret
-; 8adcc
-
-Function8adcc: ; 8adcc
-	call Function89160
-	call Function8b3b0
-	call CloseSRAM
-	ret nc
-	cp $2
-	ret z
-	scf
-	ret
-; 8addb
-
-
-SpecialHoOhChamber: ; 0x8addb
-	ld hl, PartySpecies
-	ld a, [hl]
-	cp HO_OH ; is Ho-oh the first Pokémon in the party?
-	jr nz, .done ; if not, we're done
-	call GetSecondaryMapHeaderPointer
-	ld de, EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-.done
-	ret
-; 0x8adef
-
-SpecialOmanyteChamber: ; 8adef
-	call GetSecondaryMapHeaderPointer
-	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
-	ld b, CHECK_FLAG
-	call EventFlagAction
-	ld a, c
-	and a
-	jr nz, .nope
-
-	ld a, WATER_STONE
-	ld [CurItem], a
-	ld hl, NumItems
-	call CheckItem
-	jr c, .open
-
-	ld a, [PartyCount]
-	ld b, a
-	inc b
-.loop
-	dec b
-	jr z, .nope
-	ld a, b
-	dec a
-	ld [CurPartyMon], a
-	push bc
-	ld a, PartyMon1Item - PartyMon1
-	call GetPartyParamLocation
-	pop bc
-	ld a, [hl]
-	cp WATER_STONE
-	jr nz, .loop
-
-.open
-	call GetSecondaryMapHeaderPointer
-	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-
-.nope
-	ret
-; 8ae30
-
-SpecialAerodactylChamber: ; 8ae30
-	push de
-	push bc
-
-	call GetSecondaryMapHeaderPointer
-	ld a, h
-	cp RuinsofAlphAerodactylChamber_SecondMapHeader / $100
-	jr nz, .nope
-	ld a, l
-	cp RuinsofAlphAerodactylChamber_SecondMapHeader % $100
-	jr nz, .nope
-
-	ld de, EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-
-	scf
-	jr .done
-
-.nope
-	and a
-
-.done
-	pop bc
-	pop de
-	ret
-; 8ae4e
-
-SpecialKabutoChamber: ; 8ae4e
-	push hl
-	push de
-
-	call GetSecondaryMapHeaderPointer
-	ld a, h
-	cp RuinsofAlphKabutoChamber_SecondMapHeader / $100
-	jr nz, .done
-	ld a, l
-	cp RuinsofAlphKabutoChamber_SecondMapHeader % $100
-	jr nz, .done
-
-	ld de, EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-
-.done
-	pop de
-	pop hl
-	ret
-; 8ae68
-
-Special_DisplayUnownWords: ; 8ae68
-	ld a, [ScriptVar]
-	ld hl, MenuDataHeader_0x8aed5
-	and a
-	jr z, .asm_8ae79
-
-	ld d, $0
-	ld e, $5
-.asm_8ae75
-	add hl, de
-	dec a
-	jr nz, .asm_8ae75
-
-.asm_8ae79
-	call LoadMenuDataHeader
-	xor a
-	ld [hBGMapMode], a
-	call Function1cbb
-	call UpdateSprites
-	call Function321c
-	call Function1cfd
-	inc hl
-	ld d, $0
-	ld e, $14
-rept 2
-	add hl, de
-endr
-	ld a, [ScriptVar]
-	ld c, a
-	ld de, Unknown_8aebc
-	and a
-	jr z, .asm_8aea5
-.asm_8ae9c
-	ld a, [de]
-	inc de
-	cp $ff
-	jr nz, .asm_8ae9c
-	dec c
-	jr nz, .asm_8ae9c
-
-.asm_8aea5
-	call Function8af09
-	ld bc, AttrMap - TileMap
-	add hl, bc
-	call Function8aee9
-	call Function3200
-	call Functiona36
-	call PlayClickSFX
-	call WriteBackup
-	ret
-; 8aebc
-
-Unknown_8aebc: ; 8aebc
-	db $08, $44, $04, $00, $2e, $08, $ff
-	db $26, $20, $0c, $0e, $46, $ff
-	db $4c, $00, $46, $08, $42, $ff
-	db $0e, $2c, $64, $2c, $0e, $ff
-; 8aed5
-
-MenuDataHeader_0x8aed5: ; 0x8aed5
-	db $40 ; flags
-	db 04, 03 ; start coords
-	db 09, 16 ; end coords
-
-MenuDataHeader_0x8aeda: ; 0x8aeda
-	db $40 ; flags
-	db 04, 04 ; start coords
-	db 09, 15 ; end coords
-
-MenuDataHeader_0x8aedf: ; 0x8aedf
-	db $40 ; flags
-	db 04, 04 ; start coords
-	db 09, 15 ; end coords
-
-MenuDataHeader_0x8aee4: ; 0x8aee4
-	db $40 ; flags
-	db 04, 04 ; start coords
-	db 09, 15 ; end coords
-; 8aee9
-
-Function8aee9: ; 8aee9
-.asm_8aee9
-	ld a, [de]
-	cp $ff
-	ret z
-	cp $60
-	ld a, $d
-	jr c, .asm_8aef5
-	ld a, $5
-
-.asm_8aef5
-	call Function8aefd
-rept 2
-	inc hl
-endr
-	inc de
-	jr .asm_8aee9
-; 8aefd
-
-Function8aefd: ; 8aefd
-	push hl
-	ld [hli], a
-	ld [hld], a
-	ld b, $0
-	ld c, $14
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	pop hl
-	ret
-; 8af09
-
-Function8af09: ; 8af09
-	push hl
-	push de
-.asm_8af0b
-	ld a, [de]
-	cp $ff
-	jr z, .asm_8af19
-	ld c, a
-	call Function8af1c
-rept 2
-	inc hl
-endr
-	inc de
-	jr .asm_8af0b
-
-.asm_8af19
-	pop de
-	pop hl
-	ret
-; 8af1c
-
-Function8af1c: ; 8af1c
-	push hl
-	ld a, c
-	cp $60
-	jr z, .asm_8af3b
-	cp $62
-	jr z, .asm_8af4b
-	cp $64
-	jr z, .asm_8af5b
-	ld [hli], a
-	inc a
-	ld [hld], a
-	dec a
-	ld b, $0
-	ld c, $14
-	add hl, bc
-	ld c, $10
-	add c
-	ld [hli], a
-	inc a
-	ld [hl], a
-	pop hl
-	ret
-
-.asm_8af3b
-	ld [hl], $5b
-	inc hl
-	ld [hl], $5c
-	ld bc, $0013
-	add hl, bc
-	ld [hl], $4d
-	inc hl
-	ld [hl], $5d
-	pop hl
-	ret
-
-.asm_8af4b
-	ld [hl], $4e
-	inc hl
-	ld [hl], $4f
-	ld bc, $0013
-	add hl, bc
-	ld [hl], $5e
-	inc hl
-	ld [hl], $5f
-	pop hl
-	ret
-
-.asm_8af5b
-	ld [hl], $2
-	inc hl
-	ld [hl], $3
-	ld bc, $0013
-	add hl, bc
-	ld [hl], $3
-	inc hl
-	ld [hl], $2
-	pop hl
-	ret
-; 8af6b
-
-SpecialBuenasPassword: ; 8af6b
-	xor a
-	ld [wcf76], a
-	ld hl, MenuDataHeader_0x8afa9
-	call CopyMenuDataHeader
-	ld a, [wdc4a]
-	ld c, a
-	callba GetBuenasPassword
-	ld a, [wcf83]
-	add c
-	add $2
-	ld [wcf85], a
-	call Function1c00
-	call Function1e5d
-	callba Function4ae5e
-	ld b, $0
-	ld a, [MenuSelection]
-	ld c, a
-	ld a, [wdc4a]
-	and $3
-	cp c
-	jr nz, .asm_8afa4
-	ld b, $1
-
-.asm_8afa4
-	ld a, b
-	ld [ScriptVar], a
-	ret
-; 8afa9
-
-MenuDataHeader_0x8afa9: ; 0x8afa9
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 07, 10 ; end coords
-	dw MenuData2_0x8afb2
-	db 1 ; default option
-; 0x8afb1
-
-	db 0
-
-MenuData2_0x8afb2: ; 0x8afb2
-	db $81 ; flags
-	db 0 ; items
-	dw Unknown_8afb8
-	dw Function8afbd
-; 0x8afb4
-
-Unknown_8afb8: ; 8afb8
-	db 3
-	db 0, 1, 2
-	db -1
-
-Function8afbd: ; 8afbd
-	push de
-	ld a, [wdc4a]
-	and $f0
-	ld c, a
-	ld a, [MenuSelection]
-	add c
-	ld c, a
-	callba GetBuenasPassword
-	pop hl
-	call PlaceString
-	ret
-; 8afd4
-
-SpecialBuenaPrize: ; 8afd4
-	xor a
-	ld [wd0e4], a
-	ld a, $1
-	ld [MenuSelection], a
-	call Function8b0d6
-	call Function8b090
-	ld hl, UnknownText_0x8b072
-	call PrintText
-	jr .asm_8aff1
-
-.asm_8afeb
-	ld hl, UnknownText_0x8b072
-	call Function105a
-
-.asm_8aff1
-	call DelayFrame
-	call UpdateSprites
-	call Function8b097
-	call Function8b0e2
-	jr z, .asm_8b05f
-	ld [wcf75], a
-	call GetBuenaPrize
-	ld a, [hl]
-	ld [wd265], a
-	call GetItemName
-	ld hl, UnknownText_0x8b077
-	call Function105a
-	call YesNoBox
-	jr c, .asm_8afeb
-	ld a, [wcf75]
-	call GetBuenaPrize
-	inc hl
-	ld a, [hld]
-	ld c, a
-	ld a, [wdc4b]
-	cp c
-	jr c, .asm_8b047
-	ld a, [hli]
-	push hl
-	ld [CurItem], a
-	ld a, $1
-	ld [wd10c], a
-	ld hl, NumItems
-	call ReceiveItem
-	pop hl
-	jr nc, .asm_8b04c
-	ld a, [hl]
-	ld c, a
-	ld a, [wdc4b]
-	sub c
-	ld [wdc4b], a
-	call Function8b097
-	jr .asm_8b051
-
-.asm_8b047
-	ld hl, UnknownText_0x8b081
-	jr .asm_8b05a
-
-.asm_8b04c
-	ld hl, UnknownText_0x8b086
-	jr .asm_8b05a
-
-.asm_8b051
-	ld de, SFX_TRANSACTION
-	call PlaySFX
-	ld hl, UnknownText_0x8b07c
-
-.asm_8b05a
-	call Function105a
-	jr .asm_8afeb
-
-.asm_8b05f
-	call WriteBackup
-	call WriteBackup
-	ld hl, UnknownText_0x8b08b
-	call PrintText
-	call Functiona36
-	call PlayClickSFX
-	ret
-; 8b072
-
-UnknownText_0x8b072: ; 0x8b072
-	; Which prize would you like?
-	text_jump UnknownText_0x1c589f
-	db "@"
-; 0x8b077
-
-UnknownText_0x8b077: ; 0x8b077
-	; ? Is that right?
-	text_jump UnknownText_0x1c58bc
-	db "@"
-; 0x8b07c
-
-UnknownText_0x8b07c: ; 0x8b07c
-	; Here you go!
-	text_jump UnknownText_0x1c58d1
-	db "@"
-; 0x8b081
-
-UnknownText_0x8b081: ; 0x8b081
-	; You don't have enough points.
-	text_jump UnknownText_0x1c58e0
-	db "@"
-; 0x8b086
-
-UnknownText_0x8b086: ; 0x8b086
-	; You have no room for it.
-	text_jump UnknownText_0x1c58ff
-	db "@"
-; 0x8b08b
-
-UnknownText_0x8b08b: ; 0x8b08b
-	; Oh. Please come back again!
-	text_jump UnknownText_0x1c591a
-	db "@"
-; 0x8b090
-
-Function8b090: ; 8b090
-	ld hl, MenuDataHeader_0x8b0d1
-	call LoadMenuDataHeader
-	ret
-; 8b097
-
-Function8b097: ; 8b097
-	ld de, wdc4b
-	call Function8b09e
-	ret
-; 8b09e
-
-Function8b09e: ; 8b09e
-	push de
-	xor a
-	ld [hBGMapMode], a
-	ld hl, MenuDataHeader_0x8b0d1
-	call CopyMenuDataHeader
-	call Function1cbb
-	call UpdateSprites
-	call Function1cfd
-	ld bc, $0015
-	add hl, bc
-	ld de, String_8b0ca
-	call PlaceString
-	ld h, b
-	ld l, c
-	inc hl
-	ld a, $7f
-	ld [hli], a
-	ld [hld], a
-	pop de
-	lb bc, 1, 2
-	call PrintNum
-	ret
-; 8b0ca
-
-String_8b0ca:
-	db "Points@"
-; 8b0d1
-
-MenuDataHeader_0x8b0d1: ; 0x8b0d1
-	db $40 ; flags
-	db 11, 00 ; start coords
-	db 13, 11 ; end coords
-; 8b0d6
-
-Function8b0d6: ; 8b0d6
-	ld hl, MenuDataHeader_0x8b0dd
-	call LoadMenuDataHeader
-	ret
-; 8b0dd
-
-MenuDataHeader_0x8b0dd: ; 0x8b0dd
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 11, 17 ; end coords
-; 8b0e2
-
-Function8b0e2: ; 8b0e2
-	ld hl, MenuDataHeader_0x8b113
-	call CopyMenuDataHeader
-	ld a, [MenuSelection]
-	ld [wcf88], a
-	xor a
-	ld [wcf76], a
-	ld [hBGMapMode], a
-	call Function352f
-	call UpdateSprites
-	call Function350c
-	ld a, [MenuSelection]
-	ld c, a
-	ld a, [wcfa9]
-	ld [MenuSelection], a
-	ld a, [wcf73]
-	cp $2
-	jr z, .asm_8b111
-	ld a, c
-	and a
-	ret nz
-
-.asm_8b111
-	xor a
-	ret
-; 8b113
-
-MenuDataHeader_0x8b113: ; 0x8b113
-	db $40 ; flags
-	db 01, 01 ; start coords
-	db 09, 16 ; end coords
-	dw MenuData2_0x8b11c
-	db 1 ; default option
-; 0x8b11b
-
-	db 0
-
-MenuData2_0x8b11c: ; 0x8b11c
-	db $10 ; flags
-	db 4 ; items
-	db $d, $1
-	dbw BANK(Unknown_8b129), Unknown_8b129
-	dbw BANK(BuenaPrizeItem), BuenaPrizeItem
-	dbw BANK(BuenaPrizePoints), BuenaPrizePoints
-; 8b129
-
-Unknown_8b129: ; 8b129
-	db 9
-	db 1, 2, 3, 4, 5, 6, 7, 8, 9, $ff
-; 8b134
-
-BuenaPrizeItem: ; 8b134
-	ld a, [MenuSelection]
-	call GetBuenaPrize
-	ld a, [hl]
-	push de
-	ld [wd265], a
-	call GetItemName
-	pop hl
-	call PlaceString
-	ret
-; 8b147
-
-BuenaPrizePoints: ; 8b147
-	ld a, [MenuSelection]
-	call GetBuenaPrize
-	inc hl
-	ld a, [hl]
-	ld c, "0"
-	add c
-	ld [de], a
-	ret
-; 8b154
-
-GetBuenaPrize: ; 8b154
-	dec a
-	ld hl, BuenaPrizes
-	ld b, 0
-	ld c, a
-rept 2
-	add hl, bc
-endr
-	ret
-; 8b15e
-
-BuenaPrizes: ; 8b15e
-	db ULTRA_BALL,   2
-	db FULL_RESTORE, 2
-	db NUGGET,       3
-	db RARE_CANDY,   3
-	db PROTEIN,      5
-	db IRON,         5
-	db CARBOS,       5
-	db CALCIUM,      5
-	db HP_UP,        5
-; 8b170
-
-
+INCLUDE "misc/mobile_22.asm"
+INCLUDE "event/unown.asm"
+INCLUDE "event/buena.asm"
 INCLUDE "event/dratini.asm"
+INCLUDE "event/battle_tower.asm"
+INCLUDE "misc/mobile_22_2.asm"
 
 
-Function8b1e1: ; 8b1e1
-	ld de, Unknown_8b1ed
-	call Function8b25b
-	ret z
-	call Function8b231
-	scf
-	ret
-; 8b1ed
-
-Unknown_8b1ed: ; 8b1ed
-	db 2
-	dw Unknown_8b1f2
-	dw Unknown_8b1f6
-
-Unknown_8b1f2: ; 8b1f2
-	dw Function8b2bb
-	dw Function8b2c1
-; 8b1f6
-
-Unknown_8b1f6: ; 8b1f6
-	dw UnknownText_0x8b1fc
-	dw UnknownText_0x8b23d
-	dw UnknownText_0x8b242
-; 8b1fc
-
-UnknownText_0x8b1fc: ; 0x8b1fc
-	; Excuse me!
-	text_jump UnknownText_0x1c5937
-	db "@"
-; 0x8b201
-
-CheckForBattleTowerRules: ; 8b201
-	ld hl, StringBuffer2
-	ld [hl], "3"
-	inc hl
-	ld [hl], "@"
-	ld de, CheckForBattleTowerRules_FunctionsText
-	call Function8b25b
-	ret z
-	call Function8b231
-	scf
-	ret
-; 8b215
-
-CheckForBattleTowerRules_FunctionsText: ; 8b215
-	db 4
-	dw CheckForBattleTowerRules_Functions
-	dw CheckForBattleTowerRules_Text
-
-CheckForBattleTowerRules_Functions: ; 8b21a
-	dw Function_PartyCountEq3
-	dw Function8b2e2
-	dw Function8b32a
-	dw Function_HasPartyAnEgg
-; 8b222
-
-CheckForBattleTowerRules_Text: ; 8b222
-	dw JumpText_ExcuseMeYoureNotReady
-	dw JumbText_OnlyThreePkmnMayBeEntered
-	dw JumpText_ThePkmnMustAllBeDifferentKinds
-	dw JumpText_ThePkmnMustNotHoldTheSameItems
-	dw JumpText_YouCantTakeAnEgg
-; 8b22c
-
-JumpText_ExcuseMeYoureNotReady: ; 0x8b22c
-	; Excuse me. You're not ready.
-	text_jump Text_ExcuseMeYoureNotReady
-	db "@"
-; 0x8b231
-
-Function8b231: ; 8b231
-	ld hl, UnknownText_0x8b238
-	call PrintText
-	ret
-; 8b238
-
-UnknownText_0x8b238: ; 0x8b238
-	; Please return when you're ready.
-	text_jump UnknownText_0x1c5962
-	db "@"
-; 0x8b23d
-
-UnknownText_0x8b23d: ; 0x8b23d
-	; You need at least three #MON.
-	text_jump UnknownText_0x1c5983
-	db "@"
-; 0x8b242
-
-UnknownText_0x8b242: ; 0x8b242
-	; Sorry, an EGG doesn't qualify.
-	text_jump UnknownText_0x1c59a3
-	db "@"
-; 0x8b247
-
-JumbText_OnlyThreePkmnMayBeEntered: ; 0x8b247
-	; Only three #MON may be entered.
-	text_jump Text_OnlyThreePkmnMayBeEntered
-	db "@"
-; 0x8b24c
-
-JumpText_ThePkmnMustAllBeDifferentKinds: ; 0x8b24c
-	; The @  #MON must all be different kinds.
-	text_jump Text_ThePkmnMustAllBeDifferentKinds
-	db "@"
-; 0x8b251
-
-JumpText_ThePkmnMustNotHoldTheSameItems: ; 0x8b251
-	; The @  #MON must not hold the same items.
-	text_jump Text_ThePkmnMustNotHoldTheSameItems
-	db "@"
-; 0x8b256
-
-JumpText_YouCantTakeAnEgg: ; 0x8b256
-	; You can't take an EGG!
-	text_jump Text_YouCantTakeAnEgg
-	db "@"
-; 0x8b25b
-
-Function8b25b: ; 8b25b
-	ld bc, $0000
-.asm_8b25e
-	call Function8b26c
-	call c, Function8b28e
-	call Function8b276
-	jr nz, .asm_8b25e
-	ld a, b
-	and a
-	ret
-; 8b26c
-
-Function8b26c: ; 8b26c
-	push de
-	push bc
-	call Function8b27a
-	ld a, c
-	rst JumpTable
-	pop bc
-	pop de
-	ret
-; 8b276
-
-Function8b276: ; 8b276
-	inc c
-	ld a, [de]
-	cp c
-	ret
-; 8b27a
-
-Function8b27a: ; 8b27a
-	inc de
-	ld a, [de]
-	ld l, a
-	inc de
-	ld a, [de]
-	ld h, a
-	ret
-; 8b281
-
-Function8b281: ; 8b281
-rept 3
-	inc de
-endr
-	ld a, [de]
-	ld l, a
-	inc de
-	ld a, [de]
-	ld h, a
-	ret
-; 8b28a
-
-Function8b28a: ; 8b28a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-; 8b28e
-
-Function8b28e: ; 8b28e
-	push de
-	push bc
-	ld a, b
-	and a
-	call z, Function8b29d
-	pop bc
-	call Function8b2a9
-	ld b, $1
-	pop de
-	ret
-; 8b29d
-
-Function8b29d: ; 8b29d
-	push de
-	call Function8b281
-	call Function8b28a
-	call PrintText
-	pop de
-	ret
-; 8b2a9
-
-Function8b2a9: ; 8b2a9
-	push bc
-	call Function8b281
-rept 2
-	inc hl
-endr
-	ld b, $0
-rept 2
-	add hl, bc
-endr
-	call Function8b28a
-	call PrintText
-	pop bc
-	ret
-; 8b2bb
-
-Function8b2bb: ; 8b2bb
-	ld a, [PartyCount]
-	cp 3
-	ret
-; 8b2c1
-
-Function8b2c1: ; 8b2c1
-	ld hl, PartyCount
-	ld a, [hli]
-	ld b, $0
-	ld c, a
-.asm_8b2c8
-	ld a, [hli]
-	cp EGG
-	jr z, .asm_8b2ce
-	inc b
-
-.asm_8b2ce
-	dec c
-	jr nz, .asm_8b2c8
-	ld a, [PartyCount]
-	cp b
-	ret z
-	ld a, b
-	cp 3
-	ret
-; 8b2da
-
-Function_PartyCountEq3: ; 8b2da
-	ld a, [PartyCount]
-	cp 3
-	ret z
-	scf
-	ret
-; 8b2e2
-
-Function8b2e2: ; 8b2e2
-	ld hl, PartyMon1Species
-	call Function8b2e9
-	ret
-; 8b2e9
-
-Function8b2e9: ; 8b2e9
-	ld de, PartyCount
-	ld a, [de]
-	inc de
-	dec a
-	jr z, .asm_8b314
-	ld b, a
-.asm_8b2f2
-	push hl
-	push de
-	ld c, b
-	call Function8b322
-	jr z, .asm_8b30c
-	ld a, [hl]
-	and a
-	jr z, .asm_8b30c
-.asm_8b2fe
-	call Function8b31a
-	call Function8b322
-	jr z, .asm_8b309
-	cp [hl]
-	jr z, .asm_8b316
-
-.asm_8b309
-	dec c
-	jr nz, .asm_8b2fe
-
-.asm_8b30c
-	pop de
-	pop hl
-	call Function8b31a
-	dec b
-	jr nz, .asm_8b2f2
-
-.asm_8b314
-	and a
-	ret
-
-.asm_8b316
-	pop de
-	pop hl
-	scf
-	ret
-; 8b31a
-
-Function8b31a: ; 8b31a
-	push bc
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	inc de
-	pop bc
-	ret
-; 8b322
-
-Function8b322: ; 8b322
-	push bc
-	ld b, a
-	ld a, [de]
-	cp EGG
-	ld a, b
-	pop bc
-	ret
-; 8b32a
-
-Function8b32a: ; 8b32a
-	ld hl, PartyMon1Item
-	call Function8b2e9
-	ret
-; 8b331
-
-Function_HasPartyAnEgg: ; 8b331
-	ld hl, PartyCount
-	ld a, [hli]
-	ld c, a
-.asm_8b336
-	ld a, [hli]
-	cp EGG
-	jr z, .asm_8b340
-	dec c
-	jr nz, .asm_8b336
-	and a
-	ret
-
-.asm_8b340
-	scf
-	ret
-; 8b342
-
-
-Function8b342:: ; 8b342
-	call GetSecondaryMapHeaderPointer
-	ld d, h
-	ld e, l
-	xor a
-.asm_8b348
-	push af
-	ld hl, Jumptable_8b354
-	rst JumpTable
-	pop af
-	inc a
-	cp 3
-	jr nz, .asm_8b348
-	ret
-; 8b354
-
-Jumptable_8b354: ; 8b354
-	dw Function8b35a
-	dw Function8b35b
-	dw Function8b35c
-; 8b35a
-
-Function8b35a: ; 8b35a
-	ret
-; 8b35b
-
-Function8b35b: ; 8b35b
-	ret
-; 8b35c
-
-Function8b35c: ; 8b35c
-	ret
-; 8b35d
-
-Function8b35d: ; 8b35d
-	ld a, h
-	cp d
-	ret nz
-	ld a, l
-	cp e
-	ret
-; 8b363
-
-Function8b363: ; 8b363
-	push bc
-	callba Function10632f
-	pop bc
-	ret
-; 8b36c
-
-Function8b36c: ; 8b36c (22:736c)
-	push bc
-	ld h, b
-	ld l, c
-	ld bc, $4
-	ld a, $ff
-	call ByteFill
-	pop bc
-	ret
-
-Function8b379: ; 8b379 (22:7379)
-	push bc
-	ld a, c
-	add e
-	ld c, a
-	ld a, $0
-	adc b
-	ld b, a
-	ld a, [bc]
-	ld d, a
-	pop bc
-	ret
-
-Function8b385: ; 8b385 (22:7385)
-	push bc
-	ld a, c
-	add e
-	ld c, a
-	ld a, $0
-	adc b
-	ld b, a
-	ld a, d
-	ld [bc], a
-	pop bc
-	ret
-
-Function8b391: ; 8b391 (22:7391)
-	push bc
-	ld e, $0
-	ld d, $4
-.asm_8b396
-	ld a, [bc]
-	inc bc
-	cp $ff
-	jr z, .asm_8b3a2
-	inc e
-	dec d
-	jr nz, .asm_8b396
-	dec e
-	scf
-.asm_8b3a2
-	pop bc
-	ret
-
-Function8b3a4: ; 8b3a4 (22:73a4)
-	push de
-	push bc
-	ld d, b
-	ld e, c
-	ld c, $4
-	call Function89185
-	pop bc
-	pop de
-	ret
-
-Function8b3b0: ; 8b3b0 (22:73b0)
-	ld bc, $a037
-	ld a, [$a60b]
-	and a
-	jr z, .asm_8b3c2
-	cp $3
-	jr nc, .asm_8b3c2
-	call Function8b391
-	jr c, .asm_8b3c9
-.asm_8b3c2
-	call Function8b36c
-	xor a
-	ld [$a60b], a
-.asm_8b3c9
-	ld a, [$a60b]
-	ret
-
-Function8b3cd: ; 8b3cd (22:73cd)
-	push de
-	push bc
-	ld e, $4
-.asm_8b3d1
-	ld a, [bc]
-	inc bc
-	call Function8998b
-	inc hl
-	dec e
-	jr nz, .asm_8b3d1
-	pop bc
-	pop de
-	ret
-
-Function8b3dd: ; 8b3dd (22:73dd)
-	push de
-	push bc
-	call Function354b
-	ld a, c
-	pop bc
-	pop de
-	bit 0, a
-	jr nz, .asm_8b3f7
-	bit 1, a
-	jr nz, .asm_8b40e
-	bit 6, a
-	jr nz, .asm_8b429
-	bit 7, a
-	jr nz, .asm_8b443
-	and a
-	ret
-.asm_8b3f7
-	ld a, e
-	cp $3
-	jr z, .asm_8b407
-	inc e
-	ld d, $0
-	call Function8b385
-	xor a
-	ld [wd010], a
-	ret
-.asm_8b407
-	call PlayClickSFX
-	ld d, $0
-	scf
-	ret
-.asm_8b40e
-	ld a, e
-	and a
-	jr nz, .asm_8b41e
-	call PlayClickSFX
-	ld d, $ff
-	call Function8b385
-	ld d, $1
-	scf
-	ret
-.asm_8b41e
-	ld d, $ff
-	call Function8b385
-	dec e
-	xor a
-	ld [wd010], a
-	ret
-.asm_8b429
-	call Function8b379
-	ld a, d
-	cp $a
-	jr c, .asm_8b433
-	ld d, $9
-.asm_8b433
-	inc d
-	ld a, d
-	cp $a
-	jr c, .asm_8b43b
-	ld d, $0
-.asm_8b43b
-	call Function8b385
-	xor a
-	ld [wd010], a
-	ret
-.asm_8b443
-	call Function8b379
-	ld a, d
-	cp $a
-	jr c, .asm_8b44d
-	ld d, $0
-.asm_8b44d
-	ld a, d
-	dec d
-	and a
-	jr nz, .asm_8b454
-	ld d, $9
-.asm_8b454
-	call Function8b385
-	xor a
-	ld [wd010], a
-	ret
-
-Function8b45c: ; 8b45c (22:745c)
-	call Function8b36c
-	xor a
-	ld [wd010], a
-	ld [wd012], a
-	call Function8b391
-	ld d, $0
-	call Function8b385
-.asm_8b46e
-	call Function8923c
-	call Function8b493
-	call Function8b4cc
-	call Function8b518
-	call Function89b78
-	push bc
-	call Function8b4fd
-	call Function89c44
-	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
-	pop bc
-	call Function8b3dd
-	jr nc, .asm_8b46e
-	ld a, d
-	and a
-	ret z
-	scf
-	ret
-
-Function8b493: ; 8b493 (22:7493)
-	push bc
-	call Function8923c
-	call Function8b521
-	ld hl, Jumptable_8b4a0
-	pop bc
-	rst JumpTable
-	ret
-
-Jumptable_8b4a0: ; 8b4a0 (22:74a0)
-	dw Function8b4a4
-	dw Function8b4b8
-
-
-Function8b4a4: ; 8b4a4 (22:74a4)
-	push bc
-	push de
-	call Function8b4d8
-	call TextBox
-	pop de
-	pop bc
-	call Function8b4cc
-	call Function8b518
-	call Function8b3cd
-	ret
-
-Function8b4b8: ; 8b4b8 (22:74b8)
-	push bc
-	push de
-	call Function8b4ea
-	call Function89b3b
-	pop de
-	pop bc
-	call Function8b4cc
-	call Function8b518
-	call Function8b3cd
-	ret
-
-Function8b4cc: ; 8b4cc (22:74cc)
-	push bc
-	ld hl, Unknown_8b529
-	call Function8b50a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop bc
-	ret
-
-Function8b4d8: ; 8b4d8 (22:74d8)
-	ld hl, Unknown_8b529
-	call Function8b50a
-	push hl
-rept 2
-	inc hl
-endr
-	ld a, [hli]
-	ld b, a
-	ld a, [hl]
-	ld c, a
-	pop hl
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-Function8b4ea: ; 8b4ea (22:74ea)
-	ld hl, Unknown_8b529
-	call Function8b50a
-	push hl
-rept 2
-	inc hl
-endr
-	ld a, [hli]
-	ld b, a
-	ld a, [hl]
-	ld c, a
-	pop hl
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	ret
-
-Function8b4fd: ; 8b4fd (22:74fd)
-	ld hl, Unknown_8b529 + 4
-	call Function8b50a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld d, a
-	ret
-
-Function8b50a: ; 8b50a (22:750a)
-	ld a, [wd02e]
-	and a
-	ret z
-	ld b, $0
-	ld c, $8
-.asm_8b513
-	add hl, bc
-	dec a
-	jr nz, .asm_8b513
-	ret
-
-Function8b518: ; 8b518 (22:7518)
-	push de
-	ld d, $0
-	ld e, $14
-	add hl, de
-	inc hl
-	pop de
-	ret
-
-Function8b521: ; 8b521 (22:7521)
-	ld hl, Unknown_8b529 + 7
-	call Function8b50a
-	ld a, [hl]
-	ret
-; 8b529 (22:7529)
-
-Unknown_8b529: ; 8b529
-	dwcoord 2, 5
-	db 1, 4, $20, $49, 0, 1
-	dwcoord 7, 4
-	db 1, 4, $48, $41, 0, 0
-; 8b539
-
-Function8b539: ; 8b539 (22:7539)
-	ld bc, wd017
-	call Function8b36c
-	xor a
-	ld [wd012], a
-	ld [wd02e], a
-	call Function8b493
-	call Function8b4fd
-	ld e, $0
-	call Function89c44
-	call Function3238
-	ret
-
-Function8b555: ; 8b555 (22:7555)
-	ld hl, UnknownText_0x8b5ce
-	call PrintText
-	ld bc, wd017
-	call Function8b45c
-	jr c, .asm_8b5c8
-	call Function89448
-	ld bc, wd017
-	call Function8b493
-	ld bc, wd017
-	call Function8b664
-	jr nz, .asm_8b57c
-	ld hl, UnknownText_0x8b5e2
-	call PrintText
-	jr Function8b555
-.asm_8b57c
-	ld hl, UnknownText_0x8b5d3
-	call PrintText
-	ld bc, wd013
-	call Function8b45c
-	jr c, Function8b555
-	ld bc, wd017
-	ld hl, wd013
-	call Function8b3a4
-	jr z, .asm_8b5a6
-	call Function89448
-	ld bc, wd013
-	call Function8b493
-	ld hl, UnknownText_0x8b5d8
-	call PrintText
-	jr .asm_8b57c
-.asm_8b5a6
-	call Function89160
-	ld hl, wd013
-	ld de, $a037
-	ld bc, $4
-	call CopyBytes
-	call CloseSRAM
-	call Function89448
-	ld bc, wd013
-	call Function8b493
-	ld hl, UnknownText_0x8b5dd
-	call PrintText
-	and a
-.asm_8b5c8
-	push af
-	call Function89448
-	pop af
-	ret
-; 8b5ce (22:75ce)
-
-UnknownText_0x8b5ce: ; 0x8b5ce
-	; Please enter any four-digit number.
-	text_jump UnknownText_0x1bc187
-	db "@"
-; 0x8b5d3
-
-UnknownText_0x8b5d3: ; 0x8b5d3
-	; Enter the same number to confirm.
-	text_jump UnknownText_0x1bc1ac
-	db "@"
-; 0x8b5d8
-
-UnknownText_0x8b5d8: ; 0x8b5d8
-	; That's not the same number.
-	text_jump UnknownText_0x1bc1cf
-	db "@"
-; 0x8b5dd
-
-UnknownText_0x8b5dd: ; 0x8b5dd
-	; Your PASSCODE has been set. Enter this number next time to open the CARD FOLDER.
-	text_jump UnknownText_0x1bc1eb
-	db "@"
-; 0x8b5e2
-
-UnknownText_0x8b5e2: ; 0x8b5e2
-	; 0000 is invalid!
-	text_jump UnknownText_0x1bc23e
-	db "@"
-; 0x8b5e7
-
-Function8b5e7: ; 8b5e7 (22:75e7)
-	ld bc, wd013
-	call Function8b36c
-	xor a
-	ld [wd012], a
-	ld [wd02e], a
-	call Function8b493
-	call Function891ab
-	call Function8b4fd
-	ld e, $0
-	call Function89c44
-.asm_8b602
-	ld hl, UnknownText_0x8b642
-	call PrintText
-	ld bc, wd013
-	call Function8b45c
-	jr c, .asm_8b63c
-	call Function89448
-	ld bc, wd013
-	call Function8b493
-	call Function89160
-	ld hl, $a037
-	call Function8b3a4
-	call CloseSRAM
-	jr z, .asm_8b635
-	ld hl, UnknownText_0x8b647
-	call PrintText
-	ld bc, wd013
-	call Function8b36c
-	jr .asm_8b602
-.asm_8b635
-	ld hl, UnknownText_0x8b64c
-	call PrintText
-	and a
-.asm_8b63c
-	push af
-	call Function89448
-	pop af
-	ret
-; 8b642 (22:7642)
-
-UnknownText_0x8b642: ; 0x8b642
-	; Enter the CARD FOLDER PASSCODE.
-	text_jump UnknownText_0x1bc251
-	db "@"
-; 0x8b647
-
-UnknownText_0x8b647: ; 0x8b647
-	; Incorrect PASSCODE!
-	text_jump UnknownText_0x1bc272
-	db "@"
-; 0x8b64c
-
-UnknownText_0x8b64c: ; 0x8b64c
-	; CARD FOLDER open.@ @
-	text_jump UnknownText_0x1bc288
-	start_asm
-; 0x8b651
-
-Function8b651: ; 8b651
-	ld de, SFX_TWINKLE
-	call PlaySFX
-	call WaitSFX
-	ld c, $8
-	call DelayFrames
-	ld hl, .string_8b663
-	ret
-.string_8b663
-	db "@"
-; 8b664
-
-Function8b664: ; 8b664 (22:7664)
-	push bc
-	ld de, $4
-.asm_8b668
-	ld a, [bc]
-	cp $0
-	jr nz, .asm_8b66e
-	inc d
-.asm_8b66e
-	inc bc
-	dec e
-	jr nz, .asm_8b668
-	pop bc
-	ld a, d
-	cp $4
-	ret
-
-Function8b677: ; 8b677
-	call WhiteBGMap
-	call DisableLCD
-	call Function8b690
-	call Function8b6bb
-	call Function8b6ed
-	call EnableLCD
-	call Function891ab
-	call Function32f9
-	ret
-; 8b690
-
-Function8b690: ; 8b690
-	ld hl, GFX_17afa5 + $514
-	ld de, VTiles2
-	ld bc, $160
-	ld a, BANK(GFX_17afa5)
-	call FarCopyBytes
-	ld hl, GFX_17afa5 + $514 + $160 - $10
-	ld de, VTiles2 tile $61
-	ld bc, $10
-	ld a, BANK(GFX_17afa5)
-	call FarCopyBytes
-	ld hl, GFX_17afa5 + $514 + $160
-	ld de, VTiles1 tile $6e
-	ld bc, $10
-	ld a, BANK(GFX_17afa5)
-	call FarCopyBytes
-	ret
-; 8b6bb
-
-Function8b6bb: ; 8b6bb
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, Palette_8b6d5
-	ld de, Unkn1Pals
-	ld bc, $0018
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	call Function8949c
-	ret
-; 8b6d5
-
-Palette_8b6d5: ; 8b6d5
-	RGB 31, 31, 31
-	RGB 31, 21, 00
-	RGB 14, 07, 03
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 31, 21, 00
-	RGB 22, 09, 17
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 31, 21, 00
-	RGB 06, 24, 08
-	RGB 00, 00, 00
-; 8b6ed
-
-Function8b6ed: ; 8b6ed
-	hlcoord 0, 0, AttrMap
-	ld bc, $012c
-	xor a
-	call ByteFill
-	hlcoord 0, 14, AttrMap
-	ld bc, $0050
-	ld a, $7
-	call ByteFill
-	ret
-; 8b703
-
-Function8b703: ; 8b703
-	call Function8923c
-	push hl
-	ld a, $c
-	ld [hli], a
-	inc a
-	call Function8b73e
-	inc a
-	ld [hl], a
-	pop hl
-	push hl
-	push bc
-	ld de, SCREEN_WIDTH
-	add hl, de
-.asm_8b717
-	push hl
-	ld a, $f
-	ld [hli], a
-	ld a, $7f
-	call Function8b73e
-	ld a, $11
-	ld [hl], a
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	dec b
-	jr nz, .asm_8b717
-	call Function8b732
-	pop bc
-	pop hl
-	jr Function8b744
-; 8b732
-
-Function8b732: ; 8b732
-	ld a, $12
-	ld [hli], a
-	ld a, $13
-	call Function8b73e
-	ld a, $14
-	ld [hl], a
-	ret
-; 8b73e
-
-Function8b73e: ; 8b73e
-	ld d, c
-.asm_8b73f
-	ld [hli], a
-	dec d
-	jr nz, .asm_8b73f
-	ret
-; 8b744
-
-Function8b744: ; 8b744
-	ld de, AttrMap - TileMap
-	add hl, de
-rept 2
-	inc b
-endr
-rept 2
-	inc c
-endr
-	xor a
-.asm_8b74d
-	push bc
-	push hl
-.asm_8b74f
-	ld [hli], a
-	dec c
-	jr nz, .asm_8b74f
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_8b74d
-	ret
-; 8b75d
-
-Function8b75d: ; 8b75d
-	call Function8923c
-	hlcoord 0, 0
-	ld a, $1
-	ld bc, SCREEN_WIDTH
-	call ByteFill
-	hlcoord 0, 1
-	ld a, $2
-	ld [hl], a
-	hlcoord 9, 1
-	ld c, $b
-	call Function8b788
-	hlcoord 1, 1
-	ld a, $4
-	ld e, $8
-.asm_8b780
-	ld [hli], a
-	inc a
-	dec e
-	jr nz, .asm_8b780
-	jr Function8b79e
-; 8b787
-
-Function8b787: ; 8b787
-	ret
-; 8b788
-
-Function8b788: ; 8b788
-.asm_8b788
-	ld a, $2
-	ld [hli], a
-	dec c
-	ret z
-	ld a, $1
-	ld [hli], a
-	dec c
-	ret z
-	ld a, $3
-	ld [hli], a
-	dec c
-	ret z
-	ld a, $1
-	ld [hli], a
-	dec c
-	jr nz, .asm_8b788
-	ret
-; 8b79e
-
-Function8b79e: ; 8b79e
-	hlcoord 0, 1, AttrMap
-	ld a, $1
-	ld [hli], a
-	hlcoord 9, 1, AttrMap
-	ld e, $b
-.asm_8b7a9
-	ld a, $2
-	ld [hli], a
-	dec e
-	ret z
-	xor a
-	ld [hli], a
-	dec e
-	ret z
-	ld a, $1
-	ld [hli], a
-	dec e
-	ret z
-	xor a
-	ld [hli], a
-	dec e
-	jr nz, .asm_8b7a9
-	ret
-; 8b7bd
-
-Function8b7bd: ; 8b7bd
-	call Function8b855
-	ld hl, MenuDataHeader_0x8b867
-	call CopyMenuDataHeader
-	ld a, [wd030]
-	ld [wcf88], a
-	ld a, [wd031]
-	ld [wd0e4], a
-	ld a, [wd032]
-	and a
-	jr z, .asm_8b7e0
-	ld a, [wcf81]
-	set 3, a
-	ld [wcf81], a
-
-.asm_8b7e0
-	ld a, [wd0e3]
-	and a
-	jr z, .asm_8b7ea
-	dec a
-	ld [wcf77], a
-
-.asm_8b7ea
-	hlcoord 0, 2
-	ld b, $b
-	ld c, $12
-	call Function8b703
-	call Function8b75d
-	call UpdateSprites
-	call Function89209
-	call Function350c
-	call Function8920f
-	ld a, [wcf73]
-	cp $2
-	jr z, .asm_8b823
-	cp $20
-	jr nz, .asm_8b813
-	call Function8b832
-	jr .asm_8b7ea
-
-.asm_8b813
-	cp $10
-	jr nz, .asm_8b81c
-	call Function8b83e
-	jr .asm_8b7ea
-
-.asm_8b81c
-	ld a, [MenuSelection]
-	cp $ff
-	jr nz, .asm_8b824
-
-.asm_8b823
-	xor a
-
-.asm_8b824
-	ld c, a
-	ld a, [wcfa9]
-	ld [wd030], a
-	ld a, [wd0e4]
-	ld [wd031], a
-	ret
-; 8b832
-
-Function8b832: ; 8b832
-	ld a, [wd0e4]
-	ld hl, wcf92
-	sub [hl]
-	jr nc, Function8b84b
-	xor a
-	jr Function8b84b
-; 8b83e
-
-Function8b83e: ; 8b83e
-	ld a, [wd0e4]
-	ld hl, wcf92
-	add [hl]
-	cp $24
-	jr c, Function8b84b
-	ld a, $24
-
-Function8b84b: ; 8b84b
-	ld [wd0e4], a
-	ld a, [wcfa9]
-	ld [wcf88], a
-	ret
-; 8b855
-
-Function8b855: ; 8b855
-	ld a, $28
-	ld hl, DefaultFlypoint
-	ld [hli], a
-	ld c, $28
-	xor a
-.asm_8b85e
-	inc a
-	ld [hli], a
-	dec c
-	jr nz, .asm_8b85e
-	ld a, $ff
-	ld [hl], a
-	ret
-; 8b867
-
-MenuDataHeader_0x8b867: ; 0x8b867
-	db $40 ; flags
-	db 03, 01 ; start coords
-	db 13, 18 ; end coords
-	dw MenuData2_0x8b870
-	db 1 ; default option
-; 0x8b86f
-
-	db 0
-
-MenuData2_0x8b870: ; 0x8b870
-	db $3c ; flags
-	db 5 ; items
-	db 3, 1
-	dbw 0, wd002
-	dbw BANK(Function8b880), Function8b880
-	dbw BANK(Function8b88c), Function8b88c
-	dbw BANK(Function8b8c8), Function8b8c8
-; 8b880
-
-Function8b880: ; 8b880
-	ld h, d
-	ld l, e
-	ld de, MenuSelection
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	ret
-; 8b88c
-
-Function8b88c: ; 8b88c
-	call Function89160
-	ld h, d
-	ld l, e
-	push hl
-	ld de, String_89116
-	call Function8931b
-	call Function8932d
-	jr c, .asm_8b8a3
-	ld hl, $0000
-	add hl, bc
-	ld d, h
-	ld e, l
-
-.asm_8b8a3
-	pop hl
-	push hl
-	call PlaceString
-	pop hl
-	ld d, $0
-	ld e, $6
-	add hl, de
-	push hl
-	ld de, String_89116
-	call Function8931b
-	call Function8934a
-	jr c, .asm_8b8c0
-	ld hl, $0006
-	add hl, bc
-	ld d, h
-	ld e, l
-
-.asm_8b8c0
-	pop hl
-	call PlaceString
-	call CloseSRAM
-	ret
-; 8b8c8
-
-Function8b8c8: ; 8b8c8
-	hlcoord 0, 14
-	ld b, $2
-	ld c, $12
-	call TextBox
-	ld a, [wd033]
-	ld b, 0
-	ld c, a
-	ld hl, Unknown_8b903
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld d, h
-	ld e, l
-	hlcoord 1, 16
-	call PlaceString
-	hlcoord 0, 13
-	ld a, $f
-	ld [hl], a
-	hlcoord 19, 13
-	ld a, $11
-	ld [hl], a
-	ld a, [wd0e4]
-	cp $24
-	ret c
-	hlcoord 0, 13
-	ld c, $12
-	call Function8b732
-	ret
-; 8b903
-
-Unknown_8b903: ; 8b903
-	dw String_8b90b
-	dw String_8b919
-	dw String_8b92a
-	dw String_8b938
-
-String_8b90b: db "めいしを えらんでください@"        ; Please select a noun.
-String_8b919: db "どの めいしと いれかえますか?@"    ; OK to swap with any noun?
-String_8b92a: db "あいてを えらんでください@"        ; Please select an opponent.
-String_8b938: db "いれる ところを えらんでください@" ; Please select a location.
-; 8b94a
-
-Function8b94a: ; 8b94a
-	ld [wd033], a
-	xor a
-	ld [wd0e4], a
-	ld [wd032], a
-	ld [wd0e3], a
-	ld [wd031], a
-	ld a, $1
-	ld [wd030], a
-	ret
-; 8b960
-
-
-Function8b960: ; 8b960 (22:7960)
-	ld hl, MenuDataHeader_0x8b9ac
-	call LoadMenuDataHeader
-	call Function8b9e9
-	jr c, .asm_8b97a
-	hlcoord 11, 0
-	ld b, $6
-	ld c, $7
-	call Function8b703
-	ld hl, MenuDataHeader_0x8b9b1
-	jr .asm_8b987
-.asm_8b97a
-	hlcoord 11, 0
-	ld b, $a
-	ld c, $7
-	call Function8b703
-	ld hl, MenuDataHeader_0x8b9ca
-.asm_8b987
-	ld a, $1
-	call Function89d5e
-	ld hl, Function8b9ab
-	call Function89d85
-	call ExitMenu
-	jr c, .asm_8b99c
-	call Function8b99f
-	jr nz, .asm_8b99d
-.asm_8b99c
-	xor a
-.asm_8b99d
-	ld c, a
-	ret
-
-Function8b99f: ; 8b99f (22:799f)
-	ld hl, DefaultFlypoint
-	dec a
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	cp $ff
-	ret
-; 8b9ab (22:79ab)
-
-Function8b9ab: ; 8b9ab
-	ret
-; 8b9ac
-
-MenuDataHeader_0x8b9ac: ; 0x8b9ac
-	db $40 ; flags
-	db 00, 11 ; start coords
-	db 11, 19 ; end coords
-
-MenuDataHeader_0x8b9b1: ; 0x8b9b1
-	db $40 ; flags
-	db 00, 11 ; start coords
-	db 07, 19 ; end coords
-	dw MenuData2_0x8b9b9
-	db 1 ; default option
-; 0x8b9b9
-
-MenuData2_0x8b9b9: ; 0x8b9b9
-	db $a0 ; flags
-	db 3 ; items
-	db "へんしゅう@" ; EDIT
-	db "いれかえ@"   ; REPLACE
-	db "やめる@"     ; QUIT
-; 0x8b9ca
-
-MenuDataHeader_0x8b9ca: ; 0x8b9ca
-	db $40 ; flags
-	db 00, 11 ; start coords
-	db 11, 19 ; end coords
-	dw MenuData2_0x8b9d2
-	db 1 ; default option
-; 0x8b9d2
-
-MenuData2_0x8b9d2: ; 0x8b9d2
-	db $a0 ; flags
-	db 5 ; items
-	db "みる@"       ; VIEW
-	db "へんしゅう@" ; EDIT
-	db "いれかえ@"   ; REPLACE
-	db "けす@"       ; ERASE
-	db "やめる@"     ; QUIT
-; 0x8b9e9
-
-Function8b9e9: ; 8b9e9 (22:79e9)
-	call Function89160
-	call Function8931b
-	call Function8932d
-	jr nc, .asm_8b9f6
-	jr .asm_8b9ff
-.asm_8b9f6
-	ld hl, $11
-	add hl, bc
-	call Function89b45
-	jr c, .asm_8ba08
-.asm_8b9ff
-	call Function892b4
-	and a
-	ld de, Unknown_8ba1c
-	jr .asm_8ba0c
-.asm_8ba08
-	ld de, Unknown_8ba1f
-	scf
-.asm_8ba0c
-	push af
-	ld hl, DefaultFlypoint
-.asm_8ba10
-	ld a, [de]
-	inc de
-	ld [hli], a
-	cp $ff
-	jr nz, .asm_8ba10
-	call CloseSRAM
-	pop af
-	ret
-; 8ba1c (22:7a1c)
-
-Unknown_8ba1c: ; 8b1ac
-	db 2, 4, -1
-
-Unknown_8ba1f: ; 8ba1f
-	db 1, 2, 4, 3, -1
-; 8ba24
-
-
 SECTION "bank23", ROMX, BANK[$23]
 
-Function8c000: ; 8c000
-Function8c000_2:
+Predef35: ; 8c000
+Predef36:
 	ret
 ; 8c001
 
@@ -61303,7 +54337,7 @@
 
 
 ; restore bg palette 8
-	ld hl, wd03f ; last byte in Unkn1Pals
+	ld hl, Unkn2Pals - 1 ; last byte in Unkn1Pals
 
 ; save wram bank
 	ld a, [rSVBK]
@@ -62185,7 +55219,7 @@
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
 	hlcoord 0, 0, AttrMap
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	inc b
 	inc c
 	jr .asm_8c5f4
@@ -66427,7 +59461,7 @@
 
 Function8e86c: ; 8e86c (23:686c)
 	push bc
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld hl, PartyMon1Item
 	ld bc, PartyMon2 - PartyMon1
 	call AddNTimes
@@ -66499,7 +59533,7 @@
 
 Function8e8df: ; 8e8df (23:68df)
 	push bc
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld hl, PartyMon1Item
 	ld bc, $30
 	call AddNTimes
@@ -66527,7 +59561,7 @@
 Function8e908: ; 8e908 (23:6908)
 	ld a, [wc3b7]
 	push af
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld hl, PartySpecies
 	ld e, a
 	ld d, $0
@@ -66536,7 +59570,7 @@
 	call ReadMonMenuIcon
 	ld [CurIcon], a
 	call Function8e9db
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 rept 4
 	add a
 endr
@@ -66553,7 +59587,7 @@
 
 Function8e936: ; 8e936 (23:6936)
 	push bc
-	ld a, [$ffb0]
+	ld a, [hConnectedMapWidth]
 	ld b, a
 	call Function8e94c
 	ld a, b
@@ -67685,10 +60719,10 @@
 ; 0x90672
 
 Function90672: ; 90672 (24:4672)
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ld a, $0
 	ld [wc2ce], a
 	ld a, $10
@@ -67791,7 +60825,7 @@
 	call PrintText
 	call Functiona80
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 
 Function90783: ; 90783 (24:4783)
@@ -67798,7 +60832,7 @@
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
 	hlcoord 0, 0
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	xor a
 	call ByteFill
 	ld a, $1
@@ -67810,7 +60844,7 @@
 	and A_BUTTON
 	jr nz, .asm_907dc
 
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .up
@@ -67901,9 +60935,9 @@
 
 Function90810: ; 90810 (24:4810)
 	ld a, [hJoyPressed] ; $ff00+$a7
-	and $1
+	and A_BUTTON
 	jr nz, .asm_90857
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .asm_90835
@@ -68082,10 +61116,10 @@
 ; 90913
 
 Special_SetDayOfWeek: ; 90913
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ld de, GFX_90903
 	ld hl, VTiles1 tile $6f
 	lb bc, BANK(GFX_90903), 1
@@ -68131,7 +61165,7 @@
 	call Function663
 	call Functione51
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 ; 90993
 
@@ -68143,7 +61177,7 @@
 	ret
 
 .asm_9099b
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .asm_909ba
@@ -68451,10 +61485,10 @@
 	ld a, [hl]
 	push af
 	set NO_TEXT_SCROLL, [hl]
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ld a, [VramState]
 	push af
 	xor a
@@ -68480,7 +61514,7 @@
 	pop af
 	ld [VramState], a
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [Options], a
 	call WhiteBGMap
@@ -68915,7 +61949,7 @@
 
 Function90f3e: ; 90f3e (24:4f3e)
 	call Function90f7b
-	ld hl, $ffa9
+	ld hl, hJoyLast
 
 	ld a, [hl]
 	and A_BUTTON + B_BUTTON + START + SELECT
@@ -69030,7 +62064,7 @@
 	ld d, $2e
 	ld e, $1
 Function90ff2: ; 90ff2 (24:4ff2)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and B_BUTTON
 	jr nz, .cancel
@@ -69071,7 +62105,7 @@
 	ret
 
 Function9102f: ; 9102f (24:502f)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .up
@@ -69219,7 +62253,7 @@
 	ret
 
 Function91112: ; 91112 (24:5112)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and B_BUTTON
 	jr nz, .cancel
@@ -69285,7 +62319,7 @@
 	ld a, [hl]
 	and A_BUTTON
 	jr nz, .a
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_LEFT
 	jr nz, .left
@@ -69361,7 +62395,7 @@
 	ld hl, Options
 	res NO_TEXT_SCROLL, [hl]
 	xor a
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ld de, SFX_CALL
 	call PlaySFX
 	ld hl, UnknownText_0x9124c
@@ -69380,7 +62414,7 @@
 	ld hl, Options
 	set NO_TEXT_SCROLL, [hl]
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function912b7
 	ld hl, wcf63
 	inc [hl]
@@ -69410,7 +62444,7 @@
 
 Function91256: ; 91256 (24:5256)
 	ld a, [hJoyPressed] ; $ff00+$a7
-	and $3
+	and A_BUTTON | B_BUTTON
 	ret z
 	callba HangUp
 	ld a, $8
@@ -69420,7 +62454,7 @@
 	ret
 
 Function9126d: ; 9126d (24:526d)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .up
@@ -69599,7 +62633,7 @@
 	ld h, a
 	inc de
 	push hl
-	ld bc, $ffd7
+	ld bc, hBGMapAddress + 1
 	add hl, bc
 	ld a, [de]
 	inc de
@@ -69875,10 +62909,10 @@
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ld a, [VramState]
 	push af
 	xor a
@@ -69935,7 +62969,7 @@
 	pop af
 	ld [VramState], a
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [Options], a
 	call WhiteBGMap
@@ -69949,7 +62983,7 @@
 	ld a, [hl]
 	and B_BUTTON
 	ret nz
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .asm_919d4
@@ -70148,7 +63182,7 @@
 	call WhiteBGMap
 	call ClearTileMap
 	call ClearSprites
-	ld hl, $ffaa
+	ld hl, hInMenu
 	ld a, [hl]
 	push af
 	ld [hl], $1
@@ -70196,7 +63230,7 @@
 .exit
 	ld [DefaultFlypoint], a
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call WhiteBGMap
 	ld a, $90
 	ld [hWY], a
@@ -70203,7 +63237,7 @@
 	xor a
 	ld [hBGMapAddress], a
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	ld a, [DefaultFlypoint]
 	ld e, a
 	ret
@@ -70214,7 +63248,7 @@
 	ld e, a
 	ld a, [EndFlypoint]
 	ld d, a
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
 	jr nz, .ScrollNext
@@ -70564,7 +63598,7 @@
 	xor a
 	ld [hBGMapMode], a
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ld de, GFX_922d1
 	ld hl, VTiles0 tile $7f
 	lb bc, BANK(GFX_922d1), 1
@@ -70595,10 +63629,10 @@
 	call Functiona57
 	ld hl, hJoyPressed
 	ld a, [hl]
-	and $3
+	and A_BUTTON | B_BUTTON
 	jr nz, .asm_91d8f
 	ld a, [hJoypadDown]
-	and $4
+	and SELECT
 	jr nz, .asm_91d87
 	call Function91d9b
 	call Function91dcd
@@ -70847,7 +63881,7 @@
 	ld a, l
 	ld [hBGMapAddress], a
 	ld a, h
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 
 ; Only update palettes on CGB
 	ld a, [hCGB]
@@ -71067,7 +64101,7 @@
 	call WhiteBGMap
 	call ClearTileMap
 	call ClearSprites
-	ld hl, $ffaa
+	ld hl, hInMenu
 	ld a, [hl]
 	push af
 	ld [hl], $1
@@ -71128,7 +64162,7 @@
 .asm_9239f
 	ld [DefaultFlypoint], a
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call WhiteBGMap
 	ld a, $90
 	ld [hWY], a
@@ -71135,7 +64169,7 @@
 	xor a
 	ld [hBGMapAddress], a
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	ld a, [DefaultFlypoint]
 	ld e, a
 	ret
@@ -71142,7 +64176,7 @@
 ; 923b8
 
 Function923b8: ; 923b8
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_DOWN | D_RIGHT
 	jr nz, .asm_923c6
@@ -71188,7 +64222,7 @@
 .asm_923f3
 	ld [hWY], a
 	ld a, b
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	call TownMapBubble
 	call WaitBGMap
 	xor a
@@ -75861,8 +68895,8 @@
 	ld [wcf66], a
 .loop
 	call Functiona57
-	ld a, [$ffa9]
-	and $1
+	ld a, [hJoyLast]
+	and A_BUTTON
 	jr nz, .next
 	ld de, SFX_KINESIS
 	call PlaySFX
@@ -75915,8 +68949,8 @@
 	call Functione0489
 .betloop
 	call Functiona57
-	ld a, [$ffa9]
-	and $1
+	ld a, [hJoyLast]
+	and A_BUTTON
 	jr nz, .betdone
 	call Functione089c
 	call Functione0960
@@ -76203,7 +69237,7 @@
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
 	hlcoord 0, 0
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	ld a, $29
 	call ByteFill
 	hlcoord 9, 0
@@ -76894,7 +69928,7 @@
 ; e089c
 
 Functione089c: ; e089c
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and D_LEFT
 	jp nz, Functione08b8
@@ -77270,7 +70304,7 @@
 	and a
 	ret z
 	hlcoord 0, 0, AttrMap
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	xor a
 	call ByteFill
 	hlcoord 12, 1, AttrMap
@@ -77384,10 +70418,10 @@
 ; e1190
 
 Functione1190: ; e1190
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call WhiteBGMap
 	call ClearTileMap
 	call ClearSprites
@@ -77463,7 +70497,7 @@
 
 .asm_e123d
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call WhiteBGMap
 	call ClearTileMap
 	call ClearSprites
@@ -77566,23 +70600,23 @@
 
 Functione12db: ; e12db
 	ld a, [hJoyPressed]
-	and $8
+	and START
 	jp nz, Functione13de
 	ld a, [hJoyPressed]
 	and A_BUTTON
 	jp nz, Functione1376
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
-	and $40
+	and D_UP
 	jr nz, .asm_e1301
 	ld a, [hl]
-	and $80
+	and D_DOWN
 	jr nz, .asm_e130d
 	ld a, [hl]
-	and $20
+	and D_LEFT
 	jr nz, .asm_e1325
 	ld a, [hl]
-	and $10
+	and D_RIGHT
 	jr nz, .asm_e1345
 	ret
 
@@ -78262,7 +71296,7 @@
 	ld [hli], a
 	ld [hl], $0
 	hlcoord 0, 0
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	xor a
 	call ByteFill
 	xor a
@@ -78855,10 +71889,10 @@
 	push af
 	xor a
 	ld [VramState], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	xor a
 	ld [$ffde], a
 	call Functione2963
@@ -78876,7 +71910,7 @@
 .asm_e23c6
 	call ClearSprites
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [VramState], a
 	pop af
@@ -79117,10 +72151,10 @@
 	push af
 	xor a
 	ld [VramState], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	xor a
 	ld [$ffde], a
 	call Functione2963
@@ -79138,7 +72172,7 @@
 .asm_e25b9
 	call ClearSprites
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [VramState], a
 	pop af
@@ -79364,10 +72398,10 @@
 	push af
 	xor a
 	ld [VramState], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	xor a
 	ld [$ffde], a
 	call Functione2963
@@ -79388,7 +72422,7 @@
 .asm_e2793
 	call ClearSprites
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [VramState], a
 	pop af
@@ -79698,7 +72732,7 @@
 	jp Functione2a65
 
 Functione29b5: ; e29b5 (38:69b5)
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [wcb2d]
 	ld d, a
 	ld a, [wcb2c]
@@ -79716,7 +72750,7 @@
 ; e29d0 (38:69d0)
 
 Functione29d0: ; e29d0
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [wcb2d]
 	ld d, a
 	ld a, [wcb2c]
@@ -79740,7 +72774,7 @@
 	jr Functione2a65
 
 Functione29f4: ; e29f4
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [wcb2d]
 	ld d, a
 	ld a, [wcb2c]
@@ -81182,26 +74216,26 @@
 Functione35aa: ; e35aa (38:75aa)
 	call Function1d6e
 	call Functione35e2
-.asm_e35b0
+.loop
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
 	call Functione36cf
 	call Functione379c
-	ld hl, MenuDataHeader_0xe35f1
+	ld hl, Functione35aa_menudataheader
 	call CopyMenuDataHeader
 	xor a
 	ld [wd0e4], a
 	hlcoord 0, 4
-	ld bc, $809
+	lb bc, 8, 9
 	call TextBox
 	call Function350c
 	ld a, [wcf73]
 	cp $2
-	jr z, .asm_e35de
+	jr z, .done
 	call Functione37af
 	call Functione36f9
-	jr .asm_e35b0
-.asm_e35de
+	jr .loop
+.done
 	call WriteBackup
 	ret
 
@@ -81209,37 +74243,37 @@
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
 	hlcoord 0, 0
-	ld bc, $168
-	ld a, $7f
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, " "
 	call ByteFill
 	ret
 ; e35f1 (38:75f1)
 
-MenuDataHeader_0xe35f1: ; 0xe35f1
+Functione35aa_menudataheader: ; 0xe35f1
 	db $40 ; flags
 	db 05, 01 ; start coords
 	db 12, 09 ; end coords
-	dw MenuData2_0xe35f9
+	dw .menudata2
 	db 1 ; default option
 ; 0xe35f9
 
-MenuData2_0xe35f9: ; 0xe35f9
+.menudata2: ; 0xe35f9
 	db $22 ; flags
 	db 4, 0
 	db 1
-	dbw BANK(Unknown_e3609), Unknown_e3609
-	dbw BANK(Functione3619), Functione3619
+	dbw BANK(.boxes), .boxes
+	dbw BANK(.boxnames), .boxnames
 	dbw BANK(NULL), NULL
 	dbw BANK(Functione3632), Functione3632
 ; e3609
 
-Unknown_e3609: ; e3609
+.boxes: ; e3609
 	db 14
 	db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
 	db -1
 ; e3619
 
-Functione3619: ; e3619
+.boxnames: ; e3619
 	push de
 	ld a, [MenuSelection]
 	dec a
@@ -81260,15 +74294,15 @@
 
 Functione3632: ; e3632
 	hlcoord 11, 7
-	ld bc, $0507
+	lb bc, 5, 7
 	call TextBox
 	ld a, [MenuSelection]
-	cp $ff
+	cp -1
 	ret z
 	hlcoord 12, 9
 	ld de, String_e3663
 	call PlaceString
-	call Functione366c
+	call GetBoxCount
 	ld [wd265], a
 	hlcoord 13, 11
 	ld de, wd265
@@ -81285,21 +74319,21 @@
 
 String_e3668: ; e3668
 	db "/"
-	db "0" + MONS_PER_BOX / 10
-	db "0" + MONS_PER_BOX % 10
+	db "0" + MONS_PER_BOX / 10 ; "2"
+	db "0" + MONS_PER_BOX % 10 ; "0"
 	db "@"
 ; e366c
 
-Functione366c: ; e366c (38:766c)
+GetBoxCount: ; e366c (38:766c)
 	ld a, [wCurBox]
 	ld c, a
 	ld a, [MenuSelection]
 	dec a
 	cp c
-	jr z, .asm_e3697
+	jr z, .activebox
 	ld c, a
 	ld b, 0
-	ld hl, Unknown_e36a5
+	ld hl, .boxbanks
 rept 3
 	add hl, bc
 endr
@@ -81312,15 +74346,17 @@
 	ld a, [hl]
 	call CloseSRAM
 	ld c, a
-	ld a, [wd4b4]
+	ld a, [wSavedAtLeastOnce]
 	and a
-	jr z, .asm_e3695
+	jr z, .newfile
 	ld a, c
 	ret
-.asm_e3695
+
+.newfile
 	xor a
 	ret
-.asm_e3697
+
+.activebox
 	ld a, BANK(sBoxCount)
 	ld b, a
 	call GetSRAMBank
@@ -81330,7 +74366,7 @@
 	ret
 ; e36a5 (38:76a5)
 
-Unknown_e36a5: ; e36a5
+.boxbanks: ; e36a5
 	dbw BANK(sBox1),  sBox1
 	dbw BANK(sBox2),  sBox2
 	dbw BANK(sBox3),  sBox3
@@ -81384,7 +74420,7 @@
 	ret
 
 .asm_e3717
-	call Functione366c
+	call GetBoxCount
 	and a
 	jr z, .asm_e372f
 	ld e, l
@@ -81507,7 +74543,7 @@
 ; e41d0
 
 _OptionsMenu: ; e41d0
-	ld hl, $ffaa
+	ld hl, hInMenu
 	ld a, [hl]
 	push af
 	ld [hl], $1
@@ -81525,7 +74561,7 @@
 .asm_e41f3 ;this next will display the settings of each option when the menu is opened
 	push bc
 	xor a
-	ld [$ffa9], a
+	ld [hJoyLast], a
 	call GetOptionPointer
 	pop bc
 	ld hl, wcf63
@@ -81544,7 +74580,7 @@
 .asm_e4217
 	call Functiona57
 	ld a, [hJoyPressed]
-	and $a
+	and START | B_BUTTON
 	jr nz, .ExitOptions
 	call OptionsControl
 	jr c, .asm_e422a
@@ -81562,7 +74598,7 @@
 	call PlaySFX
 	call WaitSFX
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 ; e4241
 
@@ -82027,10 +75063,10 @@
 
 OptionsControl: ; e452a
 	ld hl, wcf63
-	ld a, [$ffa9]
-	cp $80
+	ld a, [hJoyLast]
+	cp D_DOWN
 	jr z, .DownPressed
-	cp $40
+	cp D_UP
 	jr z, .UpPressed
 	and a
 	ret
@@ -82096,7 +75132,7 @@
 	call WhiteBGMap
 	call ClearTileMap
 	ld a, $98
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	xor a
 	ld [hBGMapAddress], a
 	ld [hJoyDown], a
@@ -82119,8 +75155,8 @@
 	call Functione45e8
 .asm_e45c0
 	call Functiona57
-	ld a, [$ffa9]
-	and $f
+	ld a, [hJoyLast]
+	and BUTTONS
 	jr nz, .asm_e45de
 	ld a, [wcf63]
 	bit 7, a
@@ -82458,9 +75494,9 @@
 CrystalIntro: ; e48ac
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, 5
 	ld [rSVBK], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, [hVBlank]
 	push af
@@ -82467,8 +75503,8 @@
 	call Functione4901
 .loop: ; e48bc
 	call Functiona57
-	ld a, [$ffa9]
-	and $f
+	ld a, [hJoyLast]
+	and BUTTONS
 	jr nz, .ShutOffMusic
 	ld a, [wcf63]
 	bit 7, a
@@ -82496,7 +75532,7 @@
 	pop af
 	ld [hVBlank], a
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [rSVBK], a
 	ret
@@ -82506,7 +75542,7 @@
 	xor a
 	ld [hVBlank], a
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	xor a
 	ld [$ffde], a
 	ld [wcf63], a
@@ -83991,7 +77027,7 @@
 
 Functione5451: ; e5451 (39:5451)
 	hlcoord 0, 0
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 .asm_e5457
 	ld a, [hl]
 	and a
@@ -86691,7 +79727,7 @@
 	ld a, $3
 	ld [rSVBK], a
 	ld de, $d800
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	ld [rHDMA1], a
 	ld a, [hBGMapAddress]
 	ld [rHDMA2], a
@@ -86784,7 +79820,7 @@
 	ld [$ffde], a
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, 6
 	ld [rSVBK], a
 	ld a, [rVBK]
 	push af
@@ -86819,7 +79855,7 @@
 	ret
 
 Function1041ad: ; 1041ad (41:41ad)
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	ld d, a
 	ld a, [hBGMapAddress] ; $ff00+$d6
 	ld e, a
@@ -86827,7 +79863,7 @@
 	jr Function104209
 
 Function1041b7: ; 1041b7 (41:41b7)
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	ld d, a
 	ld a, [hBGMapAddress] ; $ff00+$d6
 	ld e, a
@@ -86836,7 +79872,7 @@
 ; 1041c1 (41:41c1)
 
 Function1041c1: ; 1041c1
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	ld d, a
 	ld a, [hBGMapAddress]
 	ld e, a
@@ -86945,7 +79981,7 @@
 	ld [rHDMA1], a ; $ff00+$51
 	ld a, l
 	ld [rHDMA2], a ; $ff00+$52
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	and $1f
 	ld [rHDMA3], a ; $ff00+$53
 	ld a, [hBGMapAddress] ; $ff00+$d6
@@ -88824,7 +81860,7 @@
 	call FarCopyBytes
 	hlcoord 0, 0
 	ld a, $42
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	call ByteFill
 	hlcoord 3, 7
 	ld bc, $90f
@@ -89093,7 +82129,7 @@
 	ld hl, sPlayerData + PlayerID - wPlayerData
 	ld bc, 2
 	call CopyBytes
-	ld hl, sPlayerData + wd84a - wPlayerData
+	ld hl, sPlayerData + wSecretID - wPlayerData
 	ld bc, 2
 	call CopyBytes
 	call CloseSRAM
@@ -89128,7 +82164,7 @@
 	call FarCopyBytes
 	hlcoord 0, 0
 	ld a, $3f
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	call ByteFill
 	hlcoord 3, 7
 	ld bc, $90f
@@ -91388,7 +84424,7 @@
 Function1de247: ; 1de247
 	ld a, [hBGMapAddress]
 	ld l, a
-	ld a, [$ffd7]
+	ld a, [hBGMapAddress + 1]
 	ld h, a
 	push hl
 	inc hl
@@ -91395,7 +84431,7 @@
 	ld a, l
 	ld [hBGMapAddress], a
 	ld a, h
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	hlcoord 19, 0
 	ld [hl], $66
 	hlcoord 19, 1
@@ -91414,7 +84450,7 @@
 	ld a, l
 	ld [hBGMapAddress], a
 	ld a, h
-	ld [$ffd7], a
+	ld [hBGMapAddress + 1], a
 	ret
 ; 1de27f
 
--- a/maps/BillsHouse.asm
+++ b/maps/BillsHouse.asm
@@ -34,7 +34,7 @@
 	yesorno
 	iffalse UnknownScript_0x1896aa
 	scall UnknownScript_0x1896a5
-	special Function73f7
+	special Special_BillsGrandfather
 	iffalse UnknownScript_0x1896aa
 	if_not_equal LICKITUNG, UnknownScript_0x1896c6
 	scall UnknownScript_0x1896b0
@@ -48,7 +48,7 @@
 	yesorno
 	iffalse UnknownScript_0x1896aa
 	scall UnknownScript_0x1896a5
-	special Function73f7
+	special Special_BillsGrandfather
 	iffalse UnknownScript_0x1896aa
 	if_not_equal ODDISH, UnknownScript_0x1896c6
 	scall UnknownScript_0x1896b0
@@ -62,7 +62,7 @@
 	yesorno
 	iffalse UnknownScript_0x1896aa
 	scall UnknownScript_0x1896a5
-	special Function73f7
+	special Special_BillsGrandfather
 	iffalse UnknownScript_0x1896aa
 	if_not_equal STARYU, UnknownScript_0x1896c6
 	scall UnknownScript_0x1896b0
@@ -78,7 +78,7 @@
 	yesorno
 	iffalse UnknownScript_0x1896aa
 	scall UnknownScript_0x1896a5
-	special Function73f7
+	special Special_BillsGrandfather
 	iffalse UnknownScript_0x1896aa
 	if_not_equal GROWLITHE, UnknownScript_0x1896c6
 	scall UnknownScript_0x1896b0
@@ -92,7 +92,7 @@
 	yesorno
 	iffalse UnknownScript_0x1896aa
 	scall UnknownScript_0x1896a5
-	special Function73f7
+	special Special_BillsGrandfather
 	iffalse UnknownScript_0x1896aa
 	if_not_equal VULPIX, UnknownScript_0x1896c6
 	scall UnknownScript_0x1896b0
@@ -106,7 +106,7 @@
 	yesorno
 	iffalse UnknownScript_0x1896aa
 	scall UnknownScript_0x1896a5
-	special Function73f7
+	special Special_BillsGrandfather
 	iffalse UnknownScript_0x1896aa
 	if_not_equal PICHU, UnknownScript_0x1896c6
 	scall UnknownScript_0x1896b0
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -17,82 +17,82 @@
 	writetext UnknownText_0x7293e
 	closetext
 	checkitem COIN_CASE
-	iffalse UnknownScript_0x7278a
+	iffalse CeladonPrizeRoom_NoCoinCase
 	writetext UnknownText_0x72974
-UnknownScript_0x726fd:
-	special Function24b25
+CeladonPrizeRoom_tmcounterloop:
+	special Special_DisplayCoinCaseBalance
 	loadmenudata MenuDataHeader_0x72790
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x72714
-	if_equal $2, UnknownScript_0x72730
-	if_equal $3, UnknownScript_0x7274c
-	jump UnknownScript_0x72784
+	if_equal $1, .doubleteam
+	if_equal $2, .psychic
+	if_equal $3, .hyperbeam
+	jump CeladonPrizeRoom_cancel
 
-UnknownScript_0x72714:
+.doubleteam:
 	checkcoins 1500
-	if_equal $2, UnknownScript_0x72778
+	if_equal $2, CeladonPrizeRoom_notenoughcoins
 	itemtotext TM_DOUBLE_TEAM, $0
-	scall UnknownScript_0x72768
-	iffalse UnknownScript_0x72784
-	giveitem TM_DOUBLE_TEAM, $1
-	iffalse UnknownScript_0x7277e
+	scall CeladonPrizeRoom_askbuy
+	iffalse CeladonPrizeRoom_cancel
+	giveitem TM_DOUBLE_TEAM, 1
+	iffalse CeladonPrizeRoom_notenoughroom
 	takecoins 1500
-	jump UnknownScript_0x7276d
+	jump CeladonPrizeRoom_purchased
 
-UnknownScript_0x72730:
+.psychic:
 	checkcoins 3500
-	if_equal $2, UnknownScript_0x72778
+	if_equal $2, CeladonPrizeRoom_notenoughcoins
 	itemtotext TM_PSYCHIC, $0
-	scall UnknownScript_0x72768
-	iffalse UnknownScript_0x72784
-	giveitem TM_PSYCHIC, $1
-	iffalse UnknownScript_0x7277e
+	scall CeladonPrizeRoom_askbuy
+	iffalse CeladonPrizeRoom_cancel
+	giveitem TM_PSYCHIC, 1
+	iffalse CeladonPrizeRoom_notenoughroom
 	takecoins 3500
-	jump UnknownScript_0x7276d
+	jump CeladonPrizeRoom_purchased
 
-UnknownScript_0x7274c:
+.hyperbeam:
 	checkcoins 7500
-	if_equal $2, UnknownScript_0x72778
+	if_equal $2, CeladonPrizeRoom_notenoughcoins
 	itemtotext TM_HYPER_BEAM, $0
-	scall UnknownScript_0x72768
-	iffalse UnknownScript_0x72784
-	giveitem TM_HYPER_BEAM, $1
-	iffalse UnknownScript_0x7277e
+	scall CeladonPrizeRoom_askbuy
+	iffalse CeladonPrizeRoom_cancel
+	giveitem TM_HYPER_BEAM, 1
+	iffalse CeladonPrizeRoom_notenoughroom
 	takecoins 7500
-	jump UnknownScript_0x7276d
+	jump CeladonPrizeRoom_purchased
 
-UnknownScript_0x72768:
+CeladonPrizeRoom_askbuy:
 	writetext UnknownText_0x72991
 	yesorno
 	end
 
-UnknownScript_0x7276d:
+CeladonPrizeRoom_purchased:
 	waitbutton
 	playsound SFX_TRANSACTION
 	writetext UnknownText_0x729ad
 	closetext
-	jump UnknownScript_0x726fd
+	jump CeladonPrizeRoom_tmcounterloop
 
-UnknownScript_0x72778:
+CeladonPrizeRoom_notenoughcoins:
 	writetext UnknownText_0x729bb
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7277e:
+CeladonPrizeRoom_notenoughroom:
 	writetext UnknownText_0x729d8
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x72784:
+CeladonPrizeRoom_cancel:
 	writetext UnknownText_0x729f2
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7278a:
+CeladonPrizeRoom_NoCoinCase:
 	writetext UnknownText_0x72a14
 	closetext
 	loadmovesprites
@@ -121,26 +121,26 @@
 	writetext UnknownText_0x7293e
 	closetext
 	checkitem COIN_CASE
-	iffalse UnknownScript_0x7278a
-UnknownScript_0x727d3:
+	iffalse CeladonPrizeRoom_NoCoinCase
+.loop:
 	writetext UnknownText_0x72974
-	special Function24b25
+	special Special_DisplayCoinCaseBalance
 	loadmenudata MenuDataHeader_0x72877
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x727ed
-	if_equal $2, UnknownScript_0x7281b
-	if_equal $3, UnknownScript_0x72849
-	jump UnknownScript_0x72784
+	if_equal $1, .pikachu
+	if_equal $2, .porygon
+	if_equal $3, .larvitar
+	jump CeladonPrizeRoom_cancel
 
-UnknownScript_0x727ed:
+.pikachu:
 	checkcoins 2222
-	if_equal $2, UnknownScript_0x72778
+	if_equal $2, CeladonPrizeRoom_notenoughcoins
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x7277e
+	if_equal $6, CeladonPrizeRoom_notenoughroom
 	pokenamemem PIKACHU, $0
-	scall UnknownScript_0x72768
-	iffalse UnknownScript_0x72784
+	scall CeladonPrizeRoom_askbuy
+	iffalse CeladonPrizeRoom_cancel
 	waitbutton
 	playsound SFX_TRANSACTION
 	writetext UnknownText_0x729ad
@@ -149,16 +149,16 @@
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke PIKACHU, 25
 	takecoins 2222
-	jump UnknownScript_0x727d3
+	jump .loop
 
-UnknownScript_0x7281b:
+.porygon:
 	checkcoins 5555
-	if_equal $2, UnknownScript_0x72778
+	if_equal $2, CeladonPrizeRoom_notenoughcoins
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x7277e
+	if_equal $6, CeladonPrizeRoom_notenoughroom
 	pokenamemem PORYGON, $0
-	scall UnknownScript_0x72768
-	iffalse UnknownScript_0x72784
+	scall CeladonPrizeRoom_askbuy
+	iffalse CeladonPrizeRoom_cancel
 	waitbutton
 	playsound SFX_TRANSACTION
 	writetext UnknownText_0x729ad
@@ -167,16 +167,16 @@
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke PORYGON, 15
 	takecoins 5555
-	jump UnknownScript_0x727d3
+	jump .loop
 
-UnknownScript_0x72849:
+.larvitar:
 	checkcoins 8888
-	if_equal $2, UnknownScript_0x72778
+	if_equal $2, CeladonPrizeRoom_notenoughcoins
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x7277e
+	if_equal $6, CeladonPrizeRoom_notenoughroom
 	pokenamemem LARVITAR, $0
-	scall UnknownScript_0x72768
-	iffalse UnknownScript_0x72784
+	scall CeladonPrizeRoom_askbuy
+	iffalse CeladonPrizeRoom_cancel
 	waitbutton
 	playsound SFX_TRANSACTION
 	writetext UnknownText_0x729ad
@@ -185,7 +185,7 @@
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke LARVITAR, 40
 	takecoins 8888
-	jump UnknownScript_0x727d3
+	jump .loop
 
 
 MenuDataHeader_0x72877:
--- a/maps/GoldenrodCity.asm
+++ b/maps/GoldenrodCity.asm
@@ -43,7 +43,7 @@
 	writetext UnknownText_0x199042
 	yesorno
 	iffalse .Refused
-	special Function24b25
+	special Special_DisplayCoinCaseBalance
 	writetext UnknownText_0x199090
 	yesorno
 	iffalse .Refused2
@@ -114,7 +114,7 @@
 	takecoins 4000
 	waitbutton
 	playsound SFX_TRANSACTION
-	special Function24b25
+	special Special_DisplayCoinCaseBalance
 	writetext UnknownText_0x19918b
 	closetext
 	loadmovesprites
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -49,7 +49,7 @@
 	iffalse UnknownScript_0x56cc3
 	writetext UnknownText_0x56e8b
 UnknownScript_0x56c36: ; 056c36
-	special Function24b25
+	special Special_DisplayCoinCaseBalance
 	loadmenudata MenuDataHeader_0x56cc9
 	interpretmenu2
 	writebackup
@@ -153,7 +153,7 @@
 	iffalse UnknownScript_0x56cc3
 UnknownScript_0x56d0c:
 	writetext UnknownText_0x56e8b
-	special Function24b25
+	special Special_DisplayCoinCaseBalance
 	loadmenudata MenuDataHeader_0x56db0
 	interpretmenu2
 	writebackup
--- a/maps/KurtsHouse.asm
+++ b/maps/KurtsHouse.asm
@@ -127,7 +127,7 @@
 	writetext UnknownText_0x18e736
 	keeptextopen
 	setevent EVENT_DRAGON_SHRINE_QUESTION_2
-	special Function88018
+	special Special_SelectApricornForKurt
 	if_equal $0, .Cancel
 	if_equal BLU_APRICORN, .Blu
 	if_equal YLW_APRICORN, .Ylw
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -30,7 +30,7 @@
 	iffalse .skip
 	special Special_ResetLuckyNumberShowFlag
 .skip:
-	special Function4d9d3
+	special Special_PrintTodaysLuckyNumber
 	checkflag ENGINE_LUCKY_NUMBER_SHOW
 	iftrue .GameOver
 	writetext UnknownText_0x5cf3a
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -65,13 +65,13 @@
 
 DaycareMon1Script_0x78065:
 	loadfont
-	special Function17421
+	special Special_DayCareMon1
 	loadmovesprites
 	end
 
 DaycareMon2Script_0x7806b:
 	loadfont
-	special Function17440
+	special Special_DayCareMon2
 	loadmovesprites
 	end
 
--- a/misc/crystal_misc.asm
+++ b/misc/crystal_misc.asm
@@ -151,13 +151,13 @@
 	ret
 
 Function17a781: ; 17a781 (5e:6781)
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Functiona57
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 
 Function17a78f: ; 17a78f (5e:678f)
@@ -261,7 +261,7 @@
 	ret
 
 Function17a83c: ; 17a83c (5e:683c)
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and $f0
 	ld c, a
 	ld a, [hJoyPressed] ; $ff00+$a7
--- /dev/null
+++ b/misc/mobile_22.asm
@@ -1,0 +1,4435 @@
+
+String_8911c: ; 8911c
+	db   "でんわばんごうが ただしく"   ; Phone number is not
+	next "はいって いません!@"         ; entered correctly!
+; 89135
+
+String_89135: ; 89135
+	db   "データが かわって いますが"  ; The data has changed.
+	next "かきかえないで やめますか?@" ; Quit anyway?
+; 89153
+
+String_89153: ; 89153
+	db   "メッセージは ありません@"    ; No message
+; 89160
+
+OpenSRAMBank4: ; 89160
+	push af
+	ld a, $4
+	call GetSRAMBank
+	pop af
+	ret
+; 89168
+
+
+Function89168: ; 89168 (22:5168)
+	ld hl, GameTimerPause
+	set 7, [hl]
+	ret
+
+Function8916e: ; 8916e (22:516e)
+	ld hl, GameTimerPause
+	res 7, [hl]
+	ret
+
+Function89174: ; 89174 (22:5174)
+	ld hl, GameTimerPause
+	bit 7, [hl]
+	ret
+
+Function8917a: ; 8917a (22:517a)
+	ld hl, DefaultFlypoint
+	ld bc, $32
+	xor a
+	call ByteFill
+	ret
+
+Function89185: ; 89185 (22:5185)
+; Compares c bytes starting at de and hl and incrementing together until a match is found.
+	push de
+	push hl
+.loop
+	ld a, [de]
+	inc de
+	cp [hl]
+	jr nz, .done
+	inc hl
+	dec c
+	jr nz, .loop
+.done
+	pop hl
+	pop de
+	ret
+
+Function89193: ; 89193
+; Copies c bytes from hl to de.
+	push de
+	push hl
+.loop
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .loop
+	pop hl
+	pop de
+	ret
+; 8919e
+
+
+Function8919e: ; 8919e (22:519e)
+; Searches for the c'th string starting at de.  Returns the pointer in de.
+	ld a, c
+	and a
+	ret z
+.loop
+	ld a, [de]
+	inc de
+	cp "@"
+	jr nz, .loop
+	dec c
+	jr nz, .loop
+	ret
+
+Function891ab: ; 891ab
+	call Function89240
+	callba Function104061
+	call Function8923c
+	ret
+; 891b8
+
+Function891b8: ; 891b8
+	call Function8923c
+	hlcoord 0, 0
+	ld a, " "
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	call DelayFrame
+	ret
+; 891ca
+
+
+Function891ca: ; 891ca (22:51ca)
+	push bc
+	call Function891b8
+	call WaitBGMap
+	pop bc
+	ret
+
+Function891d3: ; 891d3 (22:51d3)
+	push bc
+	call Function891ca
+	ld c, $10
+	call DelayFrames
+	pop bc
+	ret
+
+Function891de: ; 891de
+	call Function8923c
+	call ClearPalettes
+	hlcoord 0, 0, AttrMap
+	ld a, $7
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	hlcoord 0, 0
+	ld a, " "
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	call Function891ab
+	ret
+; 891fe
+
+Function891fe: ; 891fe
+	push bc
+	call Function891de
+	ld c, $10
+	call DelayFrames
+	pop bc
+	ret
+; 89209
+
+Function89209: ; 89209
+	ld a, 1
+	ld [wc2ce], a
+	ret
+; 8920f
+
+Function8920f: ; 8920f
+	ld a, 0
+	ld [wc2ce], a
+	ret
+; 89215
+
+Function89215: ; 89215
+	push hl
+	push bc
+	ld bc, AttrMap - TileMap
+	add hl, bc
+	ld [hl], a
+	pop bc
+	pop hl
+	ret
+; 8921f
+
+
+Function8921f: ; 8921f (22:521f)
+	push de
+	ld de, SCREEN_WIDTH
+	add hl, de
+	inc hl
+	ld a, $7f
+.loop
+	push bc
+	push hl
+.asm_89229
+	ld [hli], a
+	dec c
+	jr nz, .asm_89229
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .loop
+	pop de
+	ret
+
+Function89235: ; 89235 (22:5235)
+	call Functiona36
+	call PlayClickSFX
+	ret
+
+Function8923c: ; 8923c
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 89240
+
+Function89240: ; 89240
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 89245
+
+
+Function89245: ; 89245 (22:5245)
+	callba TryLoadSaveFile
+	ret c
+	callba Function150b9
+	and a
+	ret
+
+Function89254: ; 89254 (22:5254)
+	ld bc, $d07
+	jr Function89261
+
+Function89259: ; 89259
+	ld bc, $0e07
+	jr Function89261
+
+Function8925e: ; 8925e
+	ld bc, $0e0c
+
+Function89261: ; 89261
+	push af
+	push bc
+	ld hl, MenuDataHeader_0x892a3
+	call CopyMenuDataHeader
+	pop bc
+	ld hl, wcf82
+	ld a, c
+	ld [hli], a
+	ld a, b
+	ld [hli], a
+	ld a, c
+	add $4
+	ld [hli], a
+	ld a, b
+	add $5
+	ld [hl], a
+	pop af
+	ld [wcf88], a
+	call Function1c00
+	call Function8923c
+	call Function89209
+	call InterpretMenu2
+	push af
+	ld c, $a
+	call DelayFrames
+	call WriteBackup
+	call Function8920f
+	pop af
+	jr c, .done
+	ld a, [wcfa9]
+	cp $2
+	jr z, .done
+	and a
+	ret
+
+.done
+	scf
+	ret
+; 892a3
+
+MenuDataHeader_0x892a3: ; 0x892a3
+	db $40 ; flags
+	db 05, 10 ; start coords
+	db 09, 15 ; end coords
+	dw MenuData2_0x892ab
+	db 1 ; default option
+; 0x892ab
+
+MenuData2_0x892ab: ; 0x892ab
+	db $c0 ; flags
+	db 2 ; items
+	db "はい@"
+	db "いいえ@"
+; 0x892b4
+
+Function892b4: ; 892b4 (22:52b4)
+	call Function8931b
+
+Function892b7: ; 892b7
+	ld d, b
+	ld e, c
+	ld hl, 0
+	add hl, bc
+	ld a, "@"
+	ld bc, 6
+	call ByteFill
+	ld b, d
+	ld c, e
+	ld hl, 6
+	add hl, bc
+	ld a, "@"
+	ld bc, 6
+	call ByteFill
+	ld b, d
+	ld c, e
+	ld hl, 12
+	add hl, bc
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ld hl, 14
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	ld hl, 16
+	add hl, bc
+	ld [hl], a
+	ld hl, 17
+	add hl, bc
+	ld a, -1
+	ld bc, 8
+	call ByteFill
+	ld b, d
+	ld c, e
+	ld e, 6
+	ld hl, 25
+	add hl, bc
+.loop
+	ld a, -1
+	ld [hli], a
+	ld a, -1
+	ld [hli], a
+	dec e
+	jr nz, .loop
+	ret
+; 89305
+
+
+Function89305: ; 89305 (22:5305)
+	xor a
+	ld [MenuSelection], a
+	ld c, 40
+.loop
+	ld a, [MenuSelection]
+	inc a
+	ld [MenuSelection], a
+	push bc
+	call Function892b4
+	pop bc
+	dec c
+	jr nz, .loop
+	ret
+
+Function8931b: ; 8931b
+	push hl
+	ld hl, $a03b
+	ld a, [MenuSelection]
+	dec a
+	ld bc, $0025
+	call AddNTimes
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+; 8932d
+
+Function8932d: ; 8932d
+	ld hl, 0
+	add hl, bc
+
+Function89331: ; 89331
+; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.  Sets carry if it does not find a nonspace character.  Returns the location of the following character in hl.
+	push bc
+	ld c, 5
+.loop
+	ld a, [hli]
+	cp "@"
+	jr z, .terminator
+	cp " "
+	jr nz, .nonspace
+	dec c
+	jr nz, .loop
+
+.terminator
+	scf
+	jr .done
+
+.nonspace
+	and a
+
+.done
+	pop bc
+	ret
+; 89346
+
+
+Function89346: ; 89346 (22:5346)
+	ld h, b
+	ld l, c
+	jr _incave
+
+Function8934a: ; 8934a
+	ld hl, 6
+	add hl, bc
+_incave:
+; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.  Sets carry if it does not find a nonspace character.  Returns the location of the following character in hl.
+	push bc
+	ld c, 5
+.loop
+	ld a, [hli]
+	cp "@"
+	jr z, .terminator
+	cp " "
+	jr nz, .nonspace
+	dec c
+	jr nz, .loop
+
+.terminator
+	scf
+	jr .done
+
+.nonspace
+	and a
+
+.done
+	pop bc
+	ret
+; 89363
+
+Function89363: ; 89363
+; Scans six byte pairs starting at bc to find $ff.  Sets carry if it does not find a $ff.  Returns the location of the byte after the first $ff found in hl.
+	ld h, b
+	ld l, c
+	jr ._incave
+
+	ld hl, 25
+	add hl, bc
+
+._incave
+	push de
+	ld e, 6
+.loop
+	ld a, [hli]
+	cp -1
+	jr nz, .ok
+	ld a, [hli]
+	cp -1
+	jr nz, .ok
+	dec e
+	jr nz, .loop
+	scf
+	jr .done
+
+.ok
+	and a
+
+.done
+	pop de
+	ret
+; 89381
+
+Function89381: ; 89381
+	push bc
+	push de
+	call Function89b45
+	jr c, .ok
+	push hl
+	ld a, -1
+	ld bc, 8
+	call ByteFill
+	pop hl
+
+.ok
+	pop de
+	ld c, 8
+	call Function89193
+	pop bc
+	ret
+; 8939a
+
+Function8939a: ; 8939a
+	push bc
+	ld hl, 0
+	add hl, bc
+	ld de, DefaultFlypoint
+	ld c, 6
+	call Function89193
+	pop bc
+	ld hl, 17
+	add hl, bc
+	ld de, wd008
+	call Function89381
+	ret
+; 893b3
+
+
+Function893b3: ; 893b3 (22:53b3)
+	call DisableLCD
+	call ClearSprites
+	call Functione51
+	call Functione5f
+	call Function893ef
+	call Function8942b
+	call Function89455
+	call EnableLCD
+	ret
+
+Function893cc: ; 893cc
+	call DisableLCD
+	call ClearSprites
+	call Functione51
+	call Functione5f
+	call Function893ef
+	call Function89464
+	call EnableLCD
+	ret
+; 893e2
+
+
+Function893e2: ; 893e2 (22:53e2)
+	call Function89b1e
+	call Function893b3
+	call Function8a5b6
+	call Function8949c
+	ret
+
+Function893ef: ; 893ef
+	ld de, VTiles0
+	ld hl, GFX_8940b
+	ld bc, $20
+	ld a, BANK(GFX_8940b)
+	call FarCopyBytes
+	ret
+; 893fe
+
+Function893fe: ; 893fe
+	call DisableLCD
+	call Function893ef
+	call EnableLCD
+	call DelayFrame
+	ret
+; 8940b
+
+GFX_8940b: ; 8940b
+INCBIN "gfx/unknown/08940b.2bpp"
+; 8942b
+
+Function8942b: ; 8942b (22:542b)
+	ld de, VTiles0 tile $02
+	ld hl, MobileAdapterGFX + $7d0
+	ld bc, $80
+	ld a, BANK(MobileAdapterGFX)
+	call FarCopyBytes
+	ld de, VTiles0 tile $0a
+	ld hl, MobileAdapterGFX + $c60
+	ld bc, $40
+	ld a, BANK(MobileAdapterGFX)
+	call FarCopyBytes
+	ret
+
+Function89448: ; 89448 (22:5448)
+; Clears the Sprites array
+	push af
+	ld hl, Sprites
+	ld d, $10 * 6
+	xor a
+.loop
+	ld [hli], a
+	dec d
+	jr nz, .loop
+	pop af
+	ret
+
+Function89455: ; 89455 (22:5455)
+	ld hl, MobileAdapterGFX + $7d0
+	ld de, VTiles2 tile $0c
+	ld bc, $490
+	ld a, BANK(MobileAdapterGFX)
+	call FarCopyBytes
+	ret
+
+Function89464: ; 89464
+	ld hl, MobileAdapterGFX
+	ld de, VTiles2
+	ld bc, $200
+	ld a, BANK(MobileAdapterGFX)
+	call FarCopyBytes
+	ld hl, MobileAdapterGFX + $660
+	ld de, VTiles2 tile $20
+	ld bc, $170
+	ld a, BANK(MobileAdapterGFX)
+	call FarCopyBytes
+	ret
+; 89481
+
+Function89481: ; 89481
+	ld d, 2
+	call Function8934a
+	ret c
+	ld d, 0
+	ld hl, 16
+	add hl, bc
+	bit 0, [hl]
+	ret z
+	inc d
+	ret
+; 89492
+
+
+Function89492: ; 89492 (22:5492)
+	ld d, 0
+	ld a, [PlayerGender]
+	bit 0, a
+	ret z
+	inc d
+	ret
+
+Function8949c: ; 8949c
+	ld a, [rSVBK]
+	push af
+	ld a, 5
+	ld [rSVBK], a
+	ld hl, Palette_894b3
+	ld de, Unkn1Pals + 8 * 7
+	ld bc, 8
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; 894b3
+
+Palette_894b3: ; 894b3
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+; 894bb
+
+Function894bb: ; 894bb
+	call Function894dc
+	push bc
+	call Function8956f
+	call Function8949c
+	call Function8a60d
+	pop bc
+	ret
+; 894ca
+
+
+Function894ca: ; 894ca (22:54ca)
+	push bc
+	call Function894dc
+	call Function895c7
+	call Function8949c
+	call Function8a60d
+	call Function32f9
+	pop bc
+	ret
+
+Function894dc: ; 894dc
+	push bc
+	ld a, [rSVBK]
+	push af
+	ld a, 5
+	ld [rSVBK], a
+	ld c, d
+	ld b, 0
+	ld hl, Unknown_89509
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, Unkn1Pals
+	ld bc, 24
+	call CopyBytes
+	ld hl, Palette_89557
+	ld de, wd018
+	ld bc, 24
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	pop bc
+	ret
+; 89509
+
+Unknown_89509: ; 89509
+	dw Palette_8950f
+	dw Palette_89527
+	dw Palette_8953f
+; 8950f
+
+Palette_8950f: ; 8950f
+	RGB 31, 31, 31
+	RGB 10, 17, 13
+	RGB 10, 08, 22
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 20, 31
+	RGB 10, 08, 22
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 20, 31
+	RGB 10, 17, 13
+	RGB 00, 00, 00
+
+Palette_89527: ; 89527
+	RGB 31, 31, 31
+	RGB 30, 22, 11
+	RGB 31, 08, 15
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 20, 31
+	RGB 31, 08, 15
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 20, 31
+	RGB 30, 22, 11
+	RGB 00, 00, 00
+
+Palette_8953f: ; 8953f
+	RGB 31, 31, 31
+	RGB 15, 20, 26
+	RGB 25, 07, 20
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 20, 31
+	RGB 25, 07, 20
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 20, 31
+	RGB 15, 20, 26
+	RGB 00, 00, 00
+
+Palette_89557: ; 89557
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 13, 00
+	RGB 14, 08, 00
+
+	RGB 31, 31, 31
+	RGB 16, 16, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 00
+
+	RGB 19, 31, 11
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+; 8956f
+
+Function8956f: ; 8956f
+	push bc
+	ld hl, 16
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, $000c
+	add hl, bc
+	ld b, h
+	ld c, l
+	callba Function4e929
+	ld a, c
+	ld [TrainerClass], a
+	ld a, [rSVBK]
+	push af
+	ld a, 5
+	ld [rSVBK], a
+	ld hl, wd030
+	ld a, -1
+	ld [hli], a
+	ld a, " "
+	ld [hl], a
+	pop af
+	ld [rSVBK], a
+	ld a, [TrainerClass]
+	ld h, 0
+	ld l, a
+rept 2
+	add hl, hl
+endr
+	ld de, TrainerPalettes
+	add hl, de
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld de, wd032
+	ld c, 4
+.loop
+	ld a, BANK(TrainerPalettes)
+	call GetFarByte
+	ld [de], a
+	inc de
+	inc hl
+	dec c
+	jr nz, .loop
+	ld hl, wd036
+	xor a
+	ld [hli], a
+	ld [hl], a
+	pop af
+	ld [rSVBK], a
+	pop bc
+	ret
+; 895c7
+
+
+Function895c7: ; 895c7 (22:55c7)
+	ld a, [rSVBK] ; $ff00+$70
+	push af
+	ld a, 5
+	ld [rSVBK], a ; $ff00+$70
+	ld hl, Palette_895de
+	ld de, wd030
+	ld bc, 8
+	call CopyBytes
+	pop af
+	ld [rSVBK], a ; $ff00+$70
+	ret
+; 895de (22:55de)
+
+Palette_895de: ; 895de
+	RGB 31, 31, 31
+	RGB 07, 07, 06
+	RGB 07, 07, 06
+	RGB 00, 00, 00
+; 895e6
+
+Function895e6: ; 895e6
+	ld a, 7
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	ret
+; 895f2
+
+Function895f2: ; 895f2
+	push bc
+	xor a
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	call Function89605
+	call Function89655
+	pop bc
+	ret
+; 89605
+
+Function89605: ; 89605
+	hlcoord 19, 2, AttrMap
+	ld a, 1
+	ld de, SCREEN_WIDTH
+	ld c, 14
+.loop
+	ld [hl], a
+	dec c
+	jr z, .done
+	add hl, de
+	inc a
+	ld [hl], a
+	dec a
+	add hl, de
+	dec c
+	jr nz, .loop
+
+.done
+	hlcoord 0, 16, AttrMap
+	ld c, 10
+	ld a, 2
+.loop2
+	ld [hli], a
+	dec a
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .loop2
+	hlcoord 1, 11, AttrMap
+	ld a, 4
+	ld bc, 4
+	call ByteFill
+	ld a, 5
+	ld bc, 14
+	call ByteFill
+	ret
+; 8963d
+
+Function8963d: ; 8963d
+	hlcoord 12, 3, AttrMap
+	ld a, 6
+	ld de, SCREEN_WIDTH
+	lb bc, 7, 7
+.loop
+	push hl
+	ld c, 7
+.next
+	ld [hli], a
+	dec c
+	jr nz, .next
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .loop
+	ret
+; 89655
+
+Function89655: ; 89655
+	hlcoord 1, 12, AttrMap
+	ld de, SCREEN_WIDTH
+	ld a, 5
+	ld b, 4
+.loop
+	ld c, 18
+	push hl
+.next
+	ld [hli], a
+	dec c
+	jr nz, .next
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .loop
+	ret
+; 8966c
+
+Function8966c: ; 8966c
+	push bc
+	call Function89688
+	hlcoord 4, 0
+	ld c, 8
+	call Function896f5
+	pop bc
+	ret
+; 8967a
+
+
+Function8967a: ; 8967a (22:567a)
+	push bc
+	call Function89688
+	hlcoord 2, 0
+	ld c, 12
+	call Function896f5
+	pop bc
+	ret
+
+Function89688: ; 89688
+	hlcoord 0, 0
+	ld a, 1
+	ld e, SCREEN_WIDTH
+	call Function896e1
+	ld a, 2
+	ld e, SCREEN_WIDTH
+	call Function896eb
+	ld a, 3
+	ld [hli], a
+	ld a, 4
+	ld e, SCREEN_HEIGHT
+	call Function896e1
+	ld a, 6
+	ld [hli], a
+	push bc
+	ld c, 13
+.loop
+	call Function896cb
+	dec c
+	jr z, .done
+	call Function896d6
+	dec c
+	jr nz, .loop
+
+.done
+	pop bc
+	ld a, 25
+	ld [hli], a
+	ld a, 26
+	ld e, SCREEN_HEIGHT
+	call Function896e1
+	ld a, 28
+	ld [hli], a
+	ld a, 2
+	ld e, SCREEN_WIDTH
+	call Function896eb
+	ret
+; 896cb
+
+Function896cb: ; 896cb
+	ld de, SCREEN_WIDTH - 1
+	ld a, 7
+	ld [hl], a
+	add hl, de
+	ld a, 9
+	ld [hli], a
+	ret
+; 896d6
+
+Function896d6: ; 896d6
+	ld de, SCREEN_WIDTH - 1
+	ld a, 10
+	ld [hl], a
+	add hl, de
+	ld a, 11
+	ld [hli], a
+	ret
+; 896e1
+
+Function896e1: ; 896e1
+.loop
+	ld [hli], a
+	inc a
+	dec e
+	ret z
+	ld [hli], a
+	dec a
+	dec e
+	jr nz, .loop
+	ret
+; 896eb
+
+Function896eb: ; 896eb
+.loop
+	ld [hli], a
+	dec a
+	dec e
+	ret z
+	ld [hli], a
+	inc a
+	dec e
+	jr nz, .loop
+	ret
+; 896f5
+
+Function896f5: ; 896f5
+	call Function8971f
+	call Function89736
+rept 2
+	inc hl
+endr
+	ld b, 2
+
+ClearScreenArea: ; 0x896ff
+; clears an area of the screen
+; INPUT:
+; hl = address of upper left corner of the area
+; b = height
+; c = width
+
+	ld a, " " ; blank tile
+	ld de, 20 ; screen width
+.loop
+	push bc
+	push hl
+.innerLoop
+	ld [hli], a
+	dec c
+	jr nz, .innerLoop
+	pop hl
+	pop bc
+	add hl, de
+	dec b
+	jr nz, .loop
+
+	dec hl
+rept 2
+	inc c
+endr
+.asm_89713
+	ld a, $36
+	ld [hli], a
+	dec c
+	ret z
+	ld a, $18
+	ld [hli], a
+	dec c
+	jr nz, .asm_89713 ; 0x8971c $f5
+	ret
+; 0x8971f
+
+Function8971f: ; 8971f
+	ld a, $2c
+	ld [hli], a
+	ld a, $2d
+	ld [hld], a
+	push hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	ld a, $31
+	ld [hli], a
+	ld a, $32
+	ld [hld], a
+	add hl, de
+	ld a, $35
+	ld [hl], a
+	pop hl
+	ret
+; 89736
+
+Function89736: ; 89736
+	push hl
+rept 2
+	inc hl
+endr
+	ld e, c
+	ld d, $0
+	add hl, de
+	ld a, $2f
+	ld [hli], a
+	ld a, $30
+	ld [hld], a
+	ld de, SCREEN_WIDTH
+	add hl, de
+	ld a, $33
+	ld [hli], a
+	ld a, $34
+	ld [hl], a
+	add hl, de
+	ld a, $1f
+	ld [hl], a
+	pop hl
+	ret
+; 89753
+
+Function89753: ; 89753
+	ld a, $c
+	ld [hl], a
+	xor a
+	call Function89215
+	ret
+; 8975b
+
+Function8975b: ; 8975b
+	ld a, $1d
+	ld [hli], a
+	inc a
+	ld [hli], a
+	ld a, $d
+	ld [hl], a
+rept 2
+	dec hl
+endr
+	ld a, $4
+	ld e, $3
+.asm_89769
+	call Function89215
+	inc hl
+	dec e
+	jr nz, .asm_89769
+	ret
+; 89771
+
+Function89771: ; 89771
+	ld a, $12
+	ld [hl], a
+	ld a, $3
+	call Function89215
+	ret
+; 8977a
+
+Function8977a: ; 8977a
+	ld e, $4
+	ld d, $13
+.asm_8977e
+	ld a, d
+	ld [hl], a
+	ld a, $4
+	call Function89215
+	inc hl
+	inc d
+	dec e
+	jr nz, .asm_8977e
+	ld e, $e
+.asm_8978c
+	ld a, d
+	ld [hl], a
+	xor a
+	call Function89215
+	inc hl
+	dec e
+	jr nz, .asm_8978c
+	ret
+; 89797
+
+Function89797: ; 89797
+	push bc
+	ld a, $e
+	ld [hl], a
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld a, $11
+	ld [hli], a
+	ld a, $10
+	ld c, $8
+.asm_897a6
+	ld [hli], a
+	dec c
+	jr nz, .asm_897a6
+	ld a, $f
+	ld [hl], a
+	pop bc
+	ret
+; 897af
+
+Function897af: ; 897af
+	push bc
+	ld hl, $0010
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, $000c
+	add hl, bc
+	ld b, h
+	ld c, l
+	callba Function4e929
+	ld a, c
+	ld [TrainerClass], a
+	xor a
+	ld [CurPartySpecies], a
+	ld de, VTiles2 tile $37
+	callba GetTrainerPic
+	pop bc
+	ret
+; 897d5
+
+Function897d5: ; 897d5
+	push bc
+	call Function8934a
+	jr nc, .asm_897f3
+	hlcoord 12, 3, AttrMap
+	xor a
+	ld de, SCREEN_WIDTH
+	lb bc, 7, 7
+.asm_897e5
+	push hl
+	ld c, $7
+.asm_897e8
+	ld [hli], a
+	dec c
+	jr nz, .asm_897e8
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .asm_897e5
+	pop bc
+	ret
+
+.asm_897f3
+	ld a, $37
+	ld [$ffad], a
+	hlcoord 12, 3
+	lb bc, 7, 7
+	predef FillBox
+	call Function8963d
+	pop bc
+	ret
+; 89807
+
+
+Function89807: ; 89807 (22:5807)
+	ld hl, MobileAdapterGFX + $200
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_89814
+	ld hl, MobileAdapterGFX + $200 + $230
+.asm_89814
+	call DisableLCD
+	ld de, VTiles2 tile $37
+	ld bc, $230
+	ld a, BANK(MobileAdapterGFX)
+	call FarCopyBytes
+	call EnableLCD
+	call DelayFrame
+	ret
+
+Function89829: ; 89829 (22:5829)
+	push bc
+	ld bc, $705
+	ld de, $14
+	ld a, $37
+.asm_89832
+	push bc
+	push hl
+.asm_89834
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_89834
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_89832
+	call Function8963d
+	pop bc
+	ret
+
+Function89844: ; 89844
+	call Function89481
+	call Function894bb
+	call Function897af
+	push bc
+	call Function3200
+	call Function32f9
+	pop bc
+	ret
+; 89856
+
+Function89856: ; 89856
+	push bc
+	call Function891b8
+	pop bc
+	call Function895f2
+	call Function8966c
+	call Function899d3
+	call Function898aa
+	call Function898be
+	call Function898dc
+	call Function898f3
+	push bc
+	ld bc, wd008
+	hlcoord 2, 10
+	call Function89975
+	pop bc
+	call Function897d5
+	ret
+; 8987f
+
+
+Function8987f: ; 8987f (22:587f)
+	call Function891b8
+	call Function895f2
+	call Function8967a
+	call Function899d3
+	hlcoord 5, 1
+	call Function8999c
+	hlcoord 13, 3
+	call Function89829
+	call Function899b2
+	hlcoord 5, 5
+	call Function899c9
+	ld bc, wd008
+	hlcoord 2, 10
+	call Function89975
+	ret
+
+Function898aa: ; 898aa
+	ld a, [MenuSelection]
+	and a
+	ret z
+	push bc
+	hlcoord 6, 1
+	ld de, MenuSelection
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	pop bc
+	ret
+; 898be
+
+Function898be: ; 898be
+	push bc
+	ld de, DefaultFlypoint
+	ld hl, DefaultFlypoint
+	call Function89331
+	jr nc, .asm_898cd
+	ld de, String_89116
+
+.asm_898cd
+	hlcoord 9, 1
+	ld a, [MenuSelection]
+	and a
+	jr nz, .asm_898d7
+	dec hl
+
+.asm_898d7
+	call PlaceString
+	pop bc
+	ret
+; 898dc
+
+Function898dc: ; 898dc
+	ld hl, $0006
+	add hl, bc
+	push bc
+	ld d, h
+	ld e, l
+	call Function8934a
+	jr nc, .asm_898eb
+	ld de, String_89116
+
+.asm_898eb
+	hlcoord 6, 4
+	call PlaceString
+	pop bc
+	ret
+; 898f3
+
+Function898f3: ; 898f3
+	push bc
+	ld hl, $000c
+	add hl, bc
+	ld d, h
+	ld e, l
+	call Function8934a
+	jr c, .asm_8990a
+	hlcoord 5, 5
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+	call PrintNum
+	jr .asm_89913
+
+.asm_8990a
+	hlcoord 5, 5
+	ld de, String_89116
+	call PlaceString
+
+.asm_89913
+	pop bc
+	ret
+; 89915
+
+Function89915: ; 89915
+	push bc
+	push hl
+	ld de, Unknown_89942
+	ld c, $8
+.asm_8991c
+	ld a, [de]
+	ld [hl], a
+	ld a, $4
+	call Function89215
+	inc hl
+	inc de
+	dec c
+	jr nz, .asm_8991c
+	pop hl
+	ld b, $4
+	ld c, $2b
+	ld a, $8
+	ld de, Unknown_8994a
+.asm_89932
+	push af
+	ld a, [de]
+	cp [hl]
+	jr nz, .asm_8993b
+	call Function8994e
+	inc de
+
+.asm_8993b
+	inc hl
+	pop af
+	dec a
+	jr nz, .asm_89932
+	pop bc
+	ret
+; 89942
+
+Unknown_89942: ; 89942
+	db $24, $25, $26, " ", $27, $28, $29, $2a
+Unknown_8994a: ; 8994a
+	db $24, $27, $29, $ff
+; 8994e
+
+Function8994e: ; 8994e
+	push hl
+	push de
+	ld de, SCREEN_WIDTH
+	ld a, l
+	sub e
+	ld l, a
+	ld a, h
+	sbc d
+	ld h, a
+	ld a, c
+	ld [hl], a
+	ld a, b
+	call Function89215
+	pop de
+	pop hl
+	ret
+; 89962
+
+Function89962: ; 89962
+	push bc
+	ld c, $4
+	ld b, $20
+.asm_89967
+	ld a, b
+	ld [hl], a
+	ld a, $4
+	call Function89215
+	inc hl
+	inc b
+	dec c
+	jr nz, .asm_89967
+	pop bc
+	ret
+; 89975
+
+Function89975: ; 89975
+	push bc
+	ld e, $8
+.asm_89978
+	ld a, [bc]
+	ld d, a
+	call Function8998b
+	swap d
+	inc hl
+	ld a, d
+	call Function8998b
+	inc bc
+	inc hl
+	dec e
+	jr nz, .asm_89978
+	pop bc
+	ret
+; 8998b
+
+Function8998b: ; 8998b
+	push bc
+	and $f
+	cp $a
+	jr nc, .asm_89997
+	ld c, $f6
+	add c
+	jr .asm_89999
+
+.asm_89997
+	ld a, $7f
+
+.asm_89999
+	ld [hl], a
+	pop bc
+	ret
+; 8999c
+
+
+Function8999c: ; 8999c (22:599c)
+	ld de, PlayerName
+	call PlaceString
+	inc bc
+	ld h, b
+	ld l, c
+	ld de, String_899ac
+	call PlaceString
+	ret
+; 899ac (22:59ac)
+
+String_899ac: ; 899ac
+	db "の めいし@"
+; 899b2
+
+Function899b2: ; 899b2 (22:59b2)
+	ld bc, PlayerName
+	call Function89346
+	jr c, .asm_899bf
+	ld de, PlayerName
+	jr .asm_899c2
+.asm_899bf
+	ld de, String_89116
+.asm_899c2
+	hlcoord 6, 4
+	call PlaceString
+	ret
+
+Function899c9: ; 899c9 (22:59c9)
+	ld de, PlayerID
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+	call PrintNum
+	ret
+
+Function899d3: ; 899d3
+	hlcoord 1, 4
+	call Function89753
+	hlcoord 2, 5
+	call Function8975b
+	hlcoord 1, 9
+	call Function89771
+	hlcoord 1, 11
+	call Function8977a
+	hlcoord 1, 5
+	call Function89797
+	hlcoord 2, 4
+	call Function89962
+	hlcoord 2, 9
+	call Function89915
+	ret
+; 899fe
+
+Function899fe: ; 899fe
+	push bc
+	push hl
+	ld hl, $0019
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop hl
+	call Function89a0c
+	pop bc
+	ret
+; 89a0c
+
+Function89a0c: ; 89a0c
+	push hl
+	call Function89363
+	pop hl
+	jr c, .asm_89a1c
+	ld d, h
+	ld e, l
+	callba Function11c08f
+	ret
+
+.asm_89a1c
+	ld de, String_89153
+	call PlaceString
+	ret
+; 89a23
+
+
+Function89a23: ; 89a23 (22:5a23)
+	hlcoord 0, 11
+	ld b, $4
+	ld c, $12
+	call Function8921f
+	ret
+
+Function89a2e: ; 89a2e (22:5a2e)
+	hlcoord 11, 12
+	ld b, $2
+	ld c, $6
+	call TextBox
+	hlcoord 13, 13
+	ld de, String_89a4e
+	call PlaceString
+	hlcoord 13, 14
+	ld de, String_89a53
+	call PlaceString
+	call Function89655
+	ret
+; 89a4e (22:5a4e)
+
+String_89a4e: ; 89a4e
+	db "けってい@"
+; 89a53
+
+String_89a53: ; 89a53
+	db "やめる@"
+; 89a57
+
+Function89a57: ; 89a57
+	call Function354b
+	bit 6, c
+	jr nz, .asm_89a78
+	bit 7, c
+	jr nz, .asm_89a81
+	bit 0, c
+	jr nz, .asm_89a70
+	bit 1, c
+	jr nz, .asm_89a70
+	bit 3, c
+	jr nz, .asm_89a74
+	scf
+	ret
+
+.asm_89a70
+	ld a, $1
+	and a
+	ret
+
+.asm_89a74
+	ld a, $2
+	and a
+	ret
+
+.asm_89a78
+	call Function89a9b
+	call nc, Function89a8a
+	ld a, $0
+	ret
+
+.asm_89a81
+	call Function89a93
+	call nc, Function89a8a
+	ld a, $0
+	ret
+; 89a8a
+
+Function89a8a: ; 89a8a
+	push af
+	ld de, SFX_UNKNOWN_62
+	call PlaySFX
+	pop af
+	ret
+; 89a93
+
+Function89a93: ; 89a93
+	ld d, $28
+	ld e, $1
+	call Function89aa3
+	ret
+; 89a9b
+
+Function89a9b: ; 89a9b
+	ld d, $1
+	ld e, $ff
+	call Function89aa3
+	ret
+; 89aa3
+
+Function89aa3: ; 89aa3
+	ld a, [MenuSelection]
+	ld c, a
+	push bc
+.asm_89aa8
+	ld a, [MenuSelection]
+	cp d
+	jr z, .asm_89ac0
+	add e
+	jr nz, .asm_89ab2
+	inc a
+
+.asm_89ab2
+	ld [MenuSelection], a
+	call Function89ac7
+	jr nc, .asm_89aa8
+	call Function89ae6
+	pop bc
+	and a
+	ret
+
+.asm_89ac0
+	pop bc
+	ld a, c
+	ld [MenuSelection], a
+	scf
+	ret
+; 89ac7
+
+Function89ac7: ; 89ac7
+	call OpenSRAMBank4
+	call Function8931b
+	call Function89ad4
+	call CloseSRAM
+	ret
+; 89ad4
+
+Function89ad4: ; 89ad4
+	push de
+	call Function8932d
+	jr c, .asm_89ae3
+	ld hl, $0011
+	add hl, bc
+	call Function89b45
+	jr c, .asm_89ae4
+
+.asm_89ae3
+	and a
+
+.asm_89ae4
+	pop de
+	ret
+; 89ae6
+
+Function89ae6: ; 89ae6
+	ld hl, wd031
+	xor a
+	ld [hl], a
+	ld a, [MenuSelection]
+.asm_89aee
+	cp $6
+	jr c, .asm_89afc
+	sub $5
+	ld c, a
+	ld a, [hl]
+	add $5
+	ld [hl], a
+	ld a, c
+	jr .asm_89aee
+
+.asm_89afc
+	ld [wd030], a
+	ret
+; 89b00
+
+
+Function89b00: ; 89b00 (22:5b00)
+	callba Function49351
+	ret
+; 89b07 (22:5b07)
+
+Function89b07: ; 89b07
+	call Function8923c
+	call DelayFrame
+	callba Function4a3a7
+	ret
+; 89b14
+
+Function89b14: ; 89b14
+	call WhiteBGMap
+	call Function89b07
+	call Function89b00
+	ret
+; 89b1e
+
+Function89b1e: ; 89b1e (22:5b1e)
+	callba Function4a485
+	call Function89b00
+	ret
+
+Function89b28: ; 89b28 (22:5b28)
+	call Function891de
+	call WhiteBGMap
+	call Function893e2
+	call Function1d7d
+	call Function891ab
+	call Function32f9
+	ret
+
+Function89b3b: ; 89b3b (22:5b3b)
+	call Function8923c
+	callba Function48cda
+	ret
+
+Function89b45: ; 89b45
+	push hl
+	push bc
+	ld c, $10
+	ld e, $0
+.asm_89b4b
+	ld a, [hli]
+	ld b, a
+	and $f
+	cp $a
+	jr c, .asm_89b5a
+	ld a, c
+	cp $b
+	jr nc, .asm_89b74
+	jr .asm_89b71
+
+.asm_89b5a
+	dec c
+	swap b
+	inc e
+	ld a, b
+	and $f
+	cp $a
+	jr c, .asm_89b6c
+	ld a, c
+	cp $b
+	jr nc, .asm_89b74
+	jr .asm_89b71
+
+.asm_89b6c
+	inc e
+	dec c
+	jr nz, .asm_89b4b
+	dec e
+
+.asm_89b71
+	scf
+	jr .asm_89b75
+
+.asm_89b74
+	and a
+
+.asm_89b75
+	pop bc
+	pop hl
+	ret
+; 89b78
+
+
+Function89b78: ; 89b78 (22:5b78)
+	push bc
+	ld a, [wd010]
+	cp $10
+	jr c, .asm_89b8c
+	ld a, e
+	and a
+	jr z, .asm_89b89
+	ld c, e
+.asm_89b85
+	inc hl
+	dec c
+	jr nz, .asm_89b85
+.asm_89b89
+	ld a, $7f
+	ld [hl], a
+.asm_89b8c
+	ld a, [wd010]
+	inc a
+	and $1f
+	ld [wd010], a
+	pop bc
+	ret
+
+Function89b97: ; 89b97 (22:5b97)
+	call Function89c34
+	jr c, .asm_89ba0
+	call Function89448
+	ret
+.asm_89ba0
+	ld a, [wd011]
+	ld hl, Unknown_89bd8
+	and a
+	jr z, .asm_89bae
+.asm_89ba9
+rept 2
+	inc hl
+endr
+	dec a
+	jr nz, .asm_89ba9
+.asm_89bae
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, Sprites
+.asm_89bb4
+	ld a, [hli]
+	cp $ff
+	ret z
+	ld c, a
+	ld b, $0
+.asm_89bbb
+	push hl
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add b
+	ld [de], a
+	inc de
+	ld a, $8
+	add b
+	ld b, a
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	pop hl
+	dec c
+	jr nz, .asm_89bbb
+	ld b, $0
+	ld c, $4
+	add hl, bc
+	jr .asm_89bb4
+; 89bd8 (22:5bd8)
+
+Unknown_89bd8: ; 89bd8
+	dw Unknown_89be0
+	dw Unknown_89bf5
+	dw Unknown_89c0a
+	dw Unknown_89c1f
+; 89be0
+
+Unknown_89be0: ; 89be0
+	db $01, $12, $4e, $01, $00
+	db $01, $19, $4e, $01, $40
+	db $01, $12, $72, $01, $20
+	db $01, $19, $72, $01, $60
+	db $ff
+
+Unknown_89bf5: ; 89bf5
+	db $01, $60, $16, $01, $00
+	db $01, $62, $16, $01, $40
+	db $01, $60, $92, $01, $20
+	db $01, $62, $92, $01, $60
+	db $ff
+
+Unknown_89c0a: ; 89c0a
+	db $01, $78, $66, $01, $00
+	db $01, $78, $66, $01, $40
+	db $01, $78, $92, $01, $20
+	db $01, $78, $92, $01, $60
+	db $ff
+
+Unknown_89c1f: ; 89c1f
+	db $01, $80, $66, $01, $00
+	db $01, $80, $66, $01, $40
+	db $01, $80, $92, $01, $20
+	db $01, $80, $92, $01, $60
+	db $ff
+; 89c34
+
+Function89c34: ; 89c34 (22:5c34)
+	push bc
+	ld a, [wd012]
+	ld c, a
+	inc a
+	and $f
+	ld [wd012], a
+	ld a, c
+	cp $8
+	pop bc
+	ret
+
+Function89c44: ; 89c44 (22:5c44)
+	call Function89c34
+	jr c, .asm_89c4f
+	push de
+	call Function89448
+	pop de
+	ret
+.asm_89c4f
+	ld hl, Sprites
+	push de
+	ld a, b
+	ld [hli], a
+	ld d, $8
+	ld a, e
+	and a
+	ld a, c
+	jr z, .asm_89c60
+.asm_89c5c
+	add d
+	dec e
+	jr nz, .asm_89c5c
+.asm_89c60
+	pop de
+	ld [hli], a
+	ld a, d
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ret
+
+Function89c67: ; 89c67 (22:5c67)
+	call Function354b
+	ld b, $0
+	bit 0, c
+	jr z, .asm_89c74
+	ld b, $1
+	and a
+	ret
+.asm_89c74
+	bit 1, c
+	jr z, .asm_89c7a
+	scf
+	ret
+.asm_89c7a
+	xor a
+	bit 6, c
+	jr z, .asm_89c81
+	ld a, $1
+.asm_89c81
+	bit 7, c
+	jr z, .asm_89c87
+	ld a, $2
+.asm_89c87
+	bit 5, c
+	jr z, .asm_89c8d
+	ld a, $3
+.asm_89c8d
+	bit 4, c
+	jr z, .asm_89c93
+	ld a, $4
+.asm_89c93
+	and a
+	ret z
+	dec a
+	ld c, a
+	ld d, $0
+	ld hl, Unknown_89cbf
+	ld a, [wd02f]
+	and a
+	jr z, .asm_89ca5
+	ld hl, Unknown_89ccf
+.asm_89ca5
+	ld a, [wd011]
+	and a
+	jr z, .asm_89cb1
+	ld e, $4
+.asm_89cad
+	add hl, de
+	dec a
+	jr nz, .asm_89cad
+.asm_89cb1
+	ld e, c
+	add hl, de
+	ld a, [hl]
+	and a
+	ret z
+	dec a
+	ld [wd011], a
+	xor a
+	ld [wd012], a
+	ret
+; 89cbf (22:5cbf)
+
+Unknown_89cbf: ; 89cbf
+	db 0, 2, 0, 0
+	db 1, 3, 0, 0
+	db 2, 4, 0, 0
+	db 3, 0, 0, 0
+
+Unknown_89ccf: ; 89ccf
+	db 0, 0, 0, 0
+	db 0, 3, 0, 0
+	db 2, 4, 0, 0
+	db 3, 0, 0, 0
+; 89cdf
+
+Function89cdf: ; 89cdf (22:5cdf)
+	ld a, $10
+	add b
+	ld b, a
+	ld a, $8
+	add c
+	ld c, a
+	ld e, $2
+	ld a, $2
+	ld hl, Sprites
+.asm_89cee
+	push af
+	push bc
+	ld d, $4
+.asm_89cf2
+	ld a, b
+	ld [hli], a
+	ld a, c
+	ld [hli], a
+	ld a, e
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld a, $8
+	add c
+	ld c, a
+	inc e
+	dec d
+	jr nz, .asm_89cf2
+	pop bc
+	ld a, $8
+	add b
+	ld b, a
+	pop af
+	dec a
+	jr nz, .asm_89cee
+	ret
+
+Function89d0d: ; 89d0d (22:5d0d)
+	call Function8923c
+	ld a, [rSVBK] ; $ff00+$70
+	push af
+	ld a, $5
+	ld [rSVBK], a ; $ff00+$70
+	ld c, $8
+	ld de, Unkn1Pals
+.asm_89d1c
+	push bc
+	ld hl, Palette_89d4e
+	ld bc, $8
+	call CopyBytes
+	pop bc
+	dec c
+	jr nz, .asm_89d1c
+	ld hl, Palette_89d56
+	ld de, wd010
+	ld bc, $8
+	call CopyBytes
+	pop af
+	ld [rSVBK], a ; $ff00+$70
+	call Function32f9
+	callba Function845db
+	call Function89240
+	ld c, $18
+	call DelayFrames
+	call RestartMapMusic
+	ret
+; 89d4e (22:5d4e)
+
+Palette_89d4e: ; 89d4e
+	RGB 31, 31, 31
+	RGB 19, 19, 19
+	RGB 15, 15, 15
+	RGB 00, 00, 00
+; 89d56
+
+Palette_89d56: ; 89d56
+	RGB 31, 31, 31
+	RGB 19, 19, 19
+	RGB 19, 19, 19
+	RGB 00, 00, 00
+; 89d5e
+
+Function89d5e: ; 89d5e (22:5d5e)
+	push af
+	call CopyMenuDataHeader
+	pop af
+	ld [wcf88], a
+	call Function8923c
+	call Function1c89
+	call Function1c10
+	ld hl, wcfa5
+	set 7, [hl]
+	ret
+
+Function89d75: ; 89d75 (22:5d75)
+	push hl
+	call Function8923c
+	call _hl_
+	callba Function104148
+	pop hl
+	jr asm_89d90
+
+Function89d85: ; 89d85 (22:5d85)
+	push hl
+	call Function8923c
+	call _hl_
+	call Function3238
+	pop hl
+
+asm_89d90: ; 89d90 (22:5d90)
+	call Function8923c
+	push hl
+	call _hl_
+	call Function89dab
+	ld a, [wcfa9]
+	push af
+	call Function891ab
+	pop af
+	pop hl
+	jr c, .asm_89da9
+	jr z, asm_89d90
+	scf
+	ret
+.asm_89da9
+	and a
+	ret
+
+Function89dab: ; 89dab (22:5dab)
+	call Function8923c
+	callba Function241ba
+	call Function8923c
+	ld a, c
+	ld hl, wcfa8
+	and [hl]
+	ret z
+	bit 0, a
+	jr nz, .asm_89dc7
+	bit 1, a
+	jr nz, .asm_89dd9
+	xor a
+	ret
+.asm_89dc7
+	call PlayClickSFX
+	ld a, [wcfa3]
+	ld c, a
+	ld a, [wcfa9]
+	cp c
+	jr z, .asm_89dd9
+	call Function1bee
+	scf
+	ret
+.asm_89dd9
+	call PlayClickSFX
+	ld a, $1
+	and a
+	ret
+
+Function89de0: ; 89de0 (22:5de0)
+	call ClearSprites
+	call Function89e0a
+	jr c, .asm_89e00
+	ld c, $1
+.asm_89dea
+	call Function8a31c
+	jr z, .asm_89dfd
+	ld a, [wcfa9]
+	ld c, a
+	push bc
+	ld hl, Jumptable_89e04
+	ld a, e
+	dec a
+	rst JumpTable
+	pop bc
+	jr .asm_89dea
+.asm_89dfd
+	call Function891fe
+.asm_89e00
+	call Function8917a
+	ret
+
+Jumptable_89e04: ; 89e04 (22:5e04)
+	dw Function8a62c
+	dw Function8a999
+	dw Function8ab93
+
+
+Function89e0a: ; 89e0a (22:5e0a)
+	call OpenSRAMBank4
+	call Function8b3b0
+	call CloseSRAM
+	ld hl, Jumptable_89e18
+	rst JumpTable
+	ret
+
+Jumptable_89e18: ; 89e18 (22:5e18)
+	dw Function89e1e
+	dw Function8a116
+	dw Function8a2aa
+
+
+Function89e1e: ; 89e1e (22:5e1e)
+	call OpenSRAMBank4
+	ld bc, $a037
+	call Function8b36c
+	call CloseSRAM
+	xor a
+	ld [wd02d], a
+
+asm_89e2e: ; 89e2e (22:5e2e)
+	ld a, [wd02d]
+	ld hl, Jumptable_89e3c
+	rst JumpTable
+	ret
+
+Function89e36: ; 89e36 (22:5e36)
+	ld hl, wd02d
+	inc [hl]
+	jr asm_89e2e
+
+Jumptable_89e3c: ; 89e3c (22:5e3c)
+	dw Function89e6f
+	dw Function89fed
+	dw Function89ff6
+	dw Function8a03d
+	dw Function89eb9
+	dw Function89efd
+	dw Function89fce
+	dw Function8a04c
+	dw Function8a055
+	dw Function8a0e6
+	dw Function8a0ec
+	dw Function8a0f5
+	dw Function89e58
+	dw Function89e68
+
+
+Function89e58: ; 89e58 (22:5e58)
+	ld a, $1
+	call Function8a2fe
+	call Function891fe
+	call Function893e2
+	call Function89168
+	and a
+	ret
+
+Function89e68: ; 89e68 (22:5e68)
+	call Function891fe
+	ld a, $1
+	scf
+	ret
+
+Function89e6f: ; 89e6f (22:5e6f)
+	call Function891de
+	call Function89245
+	call Function89ee1
+	call Function89e9a
+	hlcoord 7, 4
+	call Function8a58d
+	ld a, $5
+	hlcoord 7, 4, AttrMap
+	call Function8a5a3
+	ld a, $6
+	hlcoord 10, 4, AttrMap
+	call Function8a5a3
+	call Function891ab
+	call Function32f9
+	jp Function89e36
+
+Function89e9a: ; 89e9a (22:5e9a)
+	ld a, [rSVBK] ; $ff00+$70
+	push af
+	ld a, $5
+	ld [rSVBK], a ; $ff00+$70
+	ld hl, Palette_89eb1
+	ld de, wd028
+	ld bc, $8
+	call CopyBytes
+	pop af
+	ld [rSVBK], a ; $ff00+$70
+	ret
+; 89eb1 (22:5eb1)
+
+Palette_89eb1: ; 89eb1
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 27, 19, 00
+	RGB 00, 00, 00
+; 89eb9
+
+Function89eb9: ; 89eb9 (22:5eb9)
+	call Function891fe
+	call Function89ee1
+	call Function89e9a
+	hlcoord 7, 4
+	call Function8a58d
+	ld a, $5
+	hlcoord 7, 4, AttrMap
+	call Function8a5a3
+	ld a, $6
+	hlcoord 10, 4, AttrMap
+	call Function8a5a3
+	call Function891ab
+	call Function32f9
+	jp Function89e36
+
+Function89ee1: ; 89ee1 (22:5ee1)
+	call WhiteBGMap
+	call Function893e2
+	call Function8923c
+	callba Function4a3a7
+	callba Function49384
+	hlcoord 1, 0
+	call Function8a53d
+	ret
+
+Function89efd: ; 89efd (22:5efd)
+	ld hl, wd012
+	ld a, $ff
+	ld [hli], a
+	xor a
+rept 4
+	ld [hli], a
+endr
+	ld [hl], a
+.asm_89f09
+	ld hl, wd012
+	inc [hl]
+	ld a, [hli]
+	and $3
+	jr nz, .asm_89f2e
+	ld a, [hl]
+	cp $4
+	jr nc, .asm_89f2e
+	ld b, $32
+	inc [hl]
+	ld a, [hl]
+	dec a
+	jr z, .asm_89f26
+	ld c, a
+.asm_89f1f
+	ld a, $b
+	add b
+	ld b, a
+	dec c
+	jr nz, .asm_89f1f
+.asm_89f26
+	ld c, $e8
+	ld a, [wd013]
+	call Function89fa5
+.asm_89f2e
+	ld a, [wd013]
+	and a
+	jr z, .asm_89f58
+.asm_89f34
+	call Function89f6a
+	ld e, a
+	ld a, c
+	cp $a8
+	jr nc, .asm_89f4d
+	cp $46
+	jr c, .asm_89f4d
+	ld d, $0
+	dec e
+	ld hl, wd014
+	add hl, de
+	set 0, [hl]
+	inc e
+	jr .asm_89f51
+.asm_89f4d
+	ld a, $2
+	add c
+	ld c, a
+.asm_89f51
+	ld a, e
+	call Function89f77
+	dec a
+	jr nz, .asm_89f34
+.asm_89f58
+	call DelayFrame
+	ld hl, wd014
+	ld c, $4
+.asm_89f60
+	ld a, [hli]
+	and a
+	jr z, .asm_89f09
+	dec c
+	jr nz, .asm_89f60
+	jp Function89e36
+
+Function89f6a: ; 89f6a (22:5f6a)
+	push af
+	ld de, $10
+	call Function89f9a
+	ld a, [hli]
+	ld b, a
+	ld a, [hl]
+	ld c, a
+	pop af
+	ret
+
+Function89f77: ; 89f77 (22:5f77)
+	push af
+	ld de, $10
+	call Function89f9a
+	ld d, $2
+.asm_89f80
+	push bc
+	ld e, $2
+.asm_89f83
+	ld a, b
+	ld [hli], a
+	ld a, c
+	ld [hli], a
+rept 2
+	inc hl
+endr
+	ld a, $8
+	add c
+	ld c, a
+	dec e
+	jr nz, .asm_89f83
+	pop bc
+	ld a, $8
+	add b
+	ld b, a
+	dec d
+	jr nz, .asm_89f80
+	pop af
+	ret
+
+Function89f9a: ; 89f9a (22:5f9a)
+	dec a
+	ld hl, Sprites
+	and a
+	ret z
+.asm_89fa0
+	add hl, de
+	dec a
+	jr nz, .asm_89fa0
+	ret
+
+Function89fa5: ; 89fa5 (22:5fa5)
+	ld de, $10
+	call Function89f9a
+	ld e, $2
+	ld d, $a
+.asm_89faf
+	push bc
+	ld a, $2
+.asm_89fb2
+	push af
+	ld a, b
+	ld [hli], a
+	ld a, c
+	ld [hli], a
+	ld a, d
+	inc d
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld a, $8
+	add c
+	ld c, a
+	pop af
+	dec a
+	jr nz, .asm_89fb2
+	pop bc
+	ld a, $8
+	add b
+	ld b, a
+	dec e
+	jr nz, .asm_89faf
+	ret
+
+Function89fce: ; 89fce (22:5fce)
+	call Function8a5b6
+	ld a, $5
+	hlcoord 7, 4, AttrMap
+	call Function8a5a3
+	ld a, $6
+	hlcoord 10, 4, AttrMap
+	call Function8a5a3
+	call Function89448
+	call Function32f9
+	call Function891ab
+	jp Function89e36
+
+Function89fed: ; 89fed (22:5fed)
+	ld hl, UnknownText_0x8a102
+	call PrintText
+	jp Function89e36
+
+Function89ff6: ; 89ff6 (22:5ff6)
+	call Function891fe
+	call WhiteBGMap
+	call Function893cc
+	call Function89807
+	call Function89492
+	call Function894ca
+	call OpenSRAMBank4
+	ld hl, $a603
+	ld a, -1
+	ld bc, 8
+	call ByteFill
+	ld hl, $a603
+	ld de, wd008
+	call Function89381
+	call CloseSRAM
+	call Function8987f
+	call OpenSRAMBank4
+	hlcoord 1, 13
+	ld bc, $a007
+	call Function89a0c
+	call CloseSRAM
+	call Function891ab
+	call Function89235
+	jp Function89e36
+
+Function8a03d: ; 8a03d (22:603d)
+	ld hl, UnknownText_0x8a107
+	call Function89209
+	call PrintText
+	call Function8920f
+	jp Function89e36
+
+Function8a04c: ; 8a04c (22:604c)
+	ld hl, UnknownText_0x8a10c
+	call PrintText
+	jp Function89e36
+
+Function8a055: ; 8a055 (22:6055)
+	ld c, $7
+	ld b, $4
+.asm_8a059
+	call Function8a0a1
+	inc c
+	call Function8a0c9
+	push bc
+	call Function8a58d
+	pop bc
+	call Function8a0de
+	push bc
+	push hl
+	ld a, $5
+	call Function8a5a3
+	pop hl
+rept 3
+	inc hl
+endr
+	ld a, $6
+	call Function8a5a3
+	call Function3238
+	pop bc
+	ld a, c
+	cp $b
+	jr nz, .asm_8a059
+	call Function8a0a1
+	hlcoord 12, 4
+	call Function8a58d
+	ld a, $5
+	hlcoord 12, 4, AttrMap
+	call Function8a5a3
+	pop hl
+	ld a, $6
+	hlcoord 15, 4, AttrMap
+	call Function8a5a3
+	call Function3238
+	jp Function89e36
+
+Function8a0a1: ; 8a0a1 (22:60a1)
+	call Function8923c
+	push bc
+	call Function8a0c9
+	ld e, $6
+.asm_8a0aa
+	push hl
+	ld bc, $6
+	add hl, bc
+	ld d, [hl]
+	call Function8a0c1
+	pop hl
+	ld [hl], d
+	call Function89215
+	ld bc, $14
+	add hl, bc
+	dec e
+	jr nz, .asm_8a0aa
+	pop bc
+	ret
+
+Function8a0c1: ; 8a0c1 (22:60c1)
+	push hl
+	ld bc, AttrMap - TileMap
+	add hl, bc
+	ld a, [hl]
+	pop hl
+	ret
+
+Function8a0c9: ; 8a0c9 (22:60c9)
+	push bc
+	hlcoord 0, 0
+	ld de, $14
+	ld a, b
+	and a
+	jr z, .asm_8a0d8
+.asm_8a0d4
+	add hl, de
+	dec b
+	jr nz, .asm_8a0d4
+.asm_8a0d8
+	ld d, $0
+	ld e, c
+	add hl, de
+	pop bc
+	ret
+
+Function8a0de: ; 8a0de (22:60de)
+	call Function8a0c9
+	ld de, AttrMap - TileMap
+	add hl, de
+	ret
+
+Function8a0e6: ; 8a0e6 (22:60e6)
+	call Function8b539
+	jp Function89e36
+
+Function8a0ec: ; 8a0ec (22:60ec)
+	ld hl, UnknownText_0x8a111
+	call PrintText
+	jp Function89e36
+
+Function8a0f5: ; 8a0f5 (22:60f5)
+	call Function8b555
+	jp nc, Function8a0ff
+	ld hl, wd02d
+	inc [hl]
+
+Function8a0ff: ; 8a0ff (22:60ff)
+	jp Function89e36
+; 8a102 (22:6102)
+
+UnknownText_0x8a102: ; 0x8a102
+	; The CARD FOLDER stores your and your friends' CARDS. A CARD contains information like the person's name, phone number and profile.
+	text_jump UnknownText_0x1c5238
+	db "@"
+; 0x8a107
+
+UnknownText_0x8a107: ; 0x8a107
+	; This is your CARD. Once you've entered your phone number, you can trade CARDS with your friends.
+	text_jump UnknownText_0x1c52bc
+	db "@"
+; 0x8a10c
+
+UnknownText_0x8a10c: ; 0x8a10c
+	; If you have your friend's CARD, you can use it to make a call from a mobile phone on the 2nd floor of a #MON CENTER.
+	text_jump UnknownText_0x1c531e
+	db "@"
+; 0x8a111
+
+UnknownText_0x8a111: ; 0x8a111
+	; To safely store your collection of CARDS, you must set a PASSCODE for your CARD FOLDER.
+	text_jump UnknownText_0x1c5394
+	db "@"
+; 0x8a116
+
+Function8a116: ; 8a116 (22:6116)
+	ld a, $1
+	ld [wd030], a
+	ld hl, MenuDataHeader_0x8a176
+	call LoadMenuDataHeader
+.asm_8a121
+	call Function8923c
+	call Function8a17b
+	jr c, .asm_8a16b
+	ld a, [wcfa9]
+	ld [wd030], a
+	dec d
+	jr z, .asm_8a140
+	call Function8a20d
+	jr c, .asm_8a121
+	xor a
+	call Function8a2fe
+	call Function8916e
+	jr .asm_8a16b
+.asm_8a140
+	call Function89174
+	jr nz, .asm_8a14c
+	call Function8a241
+	jr c, .asm_8a121
+	jr .asm_8a15a
+.asm_8a14c
+	call WaitSFX
+	ld de, SFX_TWINKLE
+	call PlaySFX
+	ld c, $10
+	call DelayFrames
+.asm_8a15a
+	call ExitMenu
+	call Function891de
+	call Function893e2
+	call Function89245
+	call Function89168
+	and a
+	ret
+.asm_8a16b
+	call Function89209
+	call WriteBackup
+	call Function8920f
+	scf
+	ret
+; 8a176 (22:6176)
+
+MenuDataHeader_0x8a176: ; 0x8a176
+	db $40 ; flags
+	db 00, 14 ; start coords
+	db 06, 19 ; end coords
+; 8a17b
+
+Function8a17b: ; 8a17b (22:617b)
+	decoord 14, 0
+	ld b, $5
+	ld c, $4
+	call Function89b3b
+	ld hl, MenuDataHeader_0x8a19a
+	ld a, [wd030]
+	call Function89d5e
+	ld hl, Function8a1b0
+	call Function89d75
+	jr nc, .asm_8a198
+	ld a, $0
+.asm_8a198
+	ld d, a
+	ret
+; 8a19a (22:619a)
+
+MenuDataHeader_0x8a19a: ; 0x8a19a
+	db $40 ; flags
+	db 00, 14 ; start coords
+	db 06, 19 ; end coords
+	dw MenuData2_0x8a1a2
+	db 1 ; default option
+; 0x8a1a2
+
+MenuData2_0x8a1a2: ; 0x8a1a2
+	db $e0 ; flags
+	db 3 ; items
+	db "ひらく@"
+	db "すてる@"
+	db "もどる@"
+; 0x8a1b0
+
+Function8a1b0: ; 8a1b0
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	hlcoord 1, 14
+	ld a, [wcfa9]
+	ld de, Strings_8a1cc
+	dec a
+	ld c, a
+	call Function8919e
+	call PlaceString
+	ret
+; 8a1cc
+
+Strings_8a1cc: ; 8a1cc
+	db   "めいし", $25, "せいりと へんしゅうを"
+	next "おこないます"
+	db   "@"
+
+	db   "めいしフ,ルダー", $25, "めいしと"
+	next "あんしょうばんごう", $1f, "けします"
+	db   "@"
+
+	db   "まえ", $25, "がめん", $1d, "もどります"
+	db   "@"
+; 8a20d
+
+
+Function8a20d: ; 8a20d (22:620d)
+	ld hl, UnknownText_0x8a232
+	call PrintText
+	ld a, $2
+	call Function89259
+	ret c
+	ld hl, UnknownText_0x8a237
+	call PrintText
+	ld a, $2
+	call Function89259
+	ret c
+	xor a
+	call Function8a2fe
+	ld hl, UnknownText_0x8a23c
+	call PrintText
+	xor a
+	and a
+	ret
+; 8a232 (22:6232)
+
+UnknownText_0x8a232: ; 0x8a232
+	; If the CARD FOLDER is deleted, all its CARDS and the PASSCODE will also be deleted. Beware--a deleted CARD FOLDER can't be restored. Want to delete your CARD FOLDER?
+	text_jump UnknownText_0x1c53ee
+	db "@"
+; 0x8a237
+
+UnknownText_0x8a237: ; 0x8a237
+	; Are you sure you want to delete it?
+	text_jump UnknownText_0x1c5494
+	db "@"
+; 0x8a23c
+
+UnknownText_0x8a23c: ; 0x8a23c
+	; The CARD FOLDER has been deleted.
+	text_jump UnknownText_0x1c54b9
+	db "@"
+; 0x8a241
+
+Function8a241: ; 8a241 (22:6241)
+	call Function1d6e
+	call Function891fe
+	call Function8a262
+	jr nc, .asm_8a254
+	call Function891fe
+	call Function89b28
+	scf
+	ret
+.asm_8a254
+	call Function891de
+	call WhiteBGMap
+	call Function1d7d
+	call Function891de
+	and a
+	ret
+
+Function8a262: ; 8a262 (22:6262)
+	call WhiteBGMap
+	call Function893e2
+	call Function8923c
+	callba Function4a3a7
+	callba Function49384
+	hlcoord 1, 0
+	call Function8a53d
+	hlcoord 12, 4
+	call Function8a58d
+	ld a, $5
+	hlcoord 12, 4, AttrMap
+	call Function8a5a3
+	ld a, $6
+	hlcoord 15, 4, AttrMap
+	call Function8a5a3
+	xor a
+	ld [wd02e], a
+	ld bc, wd013
+	call Function8b36c
+	call Function8b493
+	call Function891ab
+	call Function32f9
+	call Function8b5e7
+	ret
+
+Function8a2aa: ; 8a2aa (22:62aa)
+	ld hl, MenuDataHeader_0x8a2ef
+	call LoadMenuDataHeader
+	ld hl, UnknownText_0x8a2f4
+	call PrintText
+	ld a, $1
+	call Function89259
+	jr nc, .asm_8a2cf
+	ld hl, UnknownText_0x8a2f9
+	call PrintText
+	ld a, $2
+	call Function89259
+	jr c, .asm_8a2ea
+	call Function8a20d
+	jr .asm_8a2ea
+.asm_8a2cf
+	call ExitMenu
+	call Function8a241
+	jr c, .asm_8a2ed
+	ld a, $1
+	call Function8a313
+	call CloseSRAM
+	call Function891de
+	call Function89245
+	call Function89168
+	and a
+	ret
+.asm_8a2ea
+	call WriteBackup
+.asm_8a2ed
+	scf
+	ret
+; 8a2ef (22:62ef)
+
+MenuDataHeader_0x8a2ef: ; 0x8a2ef
+	db $40 ; flags
+	db 12, 00 ; start coords
+	db 17, 19 ; end coords
+; 8a2f4
+
+UnknownText_0x8a2f4: ; 0x8a2f4
+	; There is an older CARD FOLDER from a previous journey. Do you want to open it?
+	text_jump UnknownText_0x1c54dd
+	db "@"
+; 0x8a2f9
+
+UnknownText_0x8a2f9: ; 0x8a2f9
+	; Delete the old CARD FOLDER?
+	text_jump UnknownText_0x1c552d
+	db "@"
+; 0x8a2fe
+
+Function8a2fe: ; 8a2fe (22:62fe)
+	call Function8a313
+	call Function89305
+	ld hl, $a603
+	ld bc, $8
+	ld a, -1
+	call ByteFill
+	call CloseSRAM
+	ret
+
+Function8a313: ; 8a313 (22:6313)
+	ld c, a
+	call OpenSRAMBank4
+	ld a, c
+	ld [$a60b], a
+	ret
+
+Function8a31c: ; 8a31c (22:631c)
+	push bc
+	call Function8923c
+	callba Function4a3a7
+	callba Function49384
+	hlcoord 1, 0
+	call Function8a53d
+	hlcoord 12, 4
+	call Function8a58d
+	call Function8a3b2
+	pop bc
+	ld a, c
+	ld [wcf88], a
+	ld [MenuSelection], a
+	call Function1c89
+	call Function1c10
+	ld hl, wcfa5
+	set 7, [hl]
+.asm_8a34e
+	call Function8a3a2
+	call Function8923c
+	call Function8a453
+	call Function8a4d3
+	call Function8a4fc
+	call Function891ab
+	call Function32f9
+	call Function8a383
+	jr c, .asm_8a370
+	jr z, .asm_8a34e
+.asm_8a36a
+	call Function89448
+	xor a
+	ld e, a
+	ret
+.asm_8a370
+	call Function89448
+	call Function1bee
+	call Function8a3a2
+	ld a, [MenuSelection]
+	cp $ff
+	jr z, .asm_8a36a
+	ld e, a
+	and a
+	ret
+
+Function8a383: ; 8a383 (22:6383)
+	callba Function241ba
+	ld a, c
+	ld hl, wcfa8
+	and [hl]
+	ret z
+	bit 0, a
+	jr nz, .asm_8a399
+	bit 1, a
+	jr nz, .asm_8a39e
+	xor a
+	ret
+.asm_8a399
+	call PlayClickSFX
+	scf
+	ret
+.asm_8a39e
+	call PlayClickSFX
+	ret
+
+Function8a3a2: ; 8a3a2 (22:63a2)
+	ld a, [wcfa9]
+	dec a
+	ld hl, DefaultFlypoint
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	ld [MenuSelection], a
+	ret
+
+Function8a3b2: ; 8a3b2 (22:63b2)
+	ld a, $1
+	ld [MenuSelection], a
+	call Function8a4fc
+	call Function8a3df
+	jr nc, .asm_8a3ce
+	decoord 0, 2
+	ld b, $6
+	ld c, $9
+	call Function89b3b
+	ld hl, MenuDataHeader_0x8a435
+	jr .asm_8a3db
+.asm_8a3ce
+	decoord 0, 2
+	ld b, $8
+	ld c, $9
+	call Function89b3b
+	ld hl, MenuDataHeader_0x8a40f
+.asm_8a3db
+	call CopyMenuDataHeader
+	ret
+
+Function8a3df: ; 8a3df (22:63df)
+	call OpenSRAMBank4
+	ld hl, $a603
+	call Function89b45
+	call CloseSRAM
+	ld hl, DefaultFlypoint
+	jr c, .asm_8a3f8
+	ld de, Unknown_8a408
+	call Function8a400
+	scf
+	ret
+.asm_8a3f8
+	ld de, Unknown_8a40b
+	call Function8a400
+	and a
+	ret
+
+Function8a400: ; 8a400 (22:6400)
+	ld a, [de]
+	inc de
+	ld [hli], a
+	cp $ff
+	jr nz, Function8a400
+	ret
+; 8a408 (22:6408)
+
+Unknown_8a408: db 1, 2, -1
+Unknown_8a40b: db 1, 2, 3, -1
+
+MenuDataHeader_0x8a40f: ; 0x8a40f
+	db $40 ; flags
+	db 02, 00 ; start coords
+	db 11, 10 ; end coords
+	dw MenuData2_0x8a417
+	db 1 ; default option
+; 0x8a417
+
+MenuData2_0x8a417: ; 0x8a417
+	db $a0 ; flags
+	db 4 ; items
+	db "めいしりスト@"
+	db "じぶんの めいし@"
+	db "めいしこうかん@"
+	db "やめる@"
+; 0x8a435
+
+MenuDataHeader_0x8a435: ; 0x8a435
+	db $40 ; flags
+	db 02, 00 ; start coords
+	db 09, 10 ; end coords
+	dw MenuData2_0x8a43d
+	db 1 ; default option
+; 0x8a43d
+
+MenuData2_0x8a43d: ; 0x8a43d
+	db $a0 ; flags
+	db 3 ; items
+	db "めいしりスト@"
+	db "じぶんの めいし@"
+	db "やめる@"
+; 0x8a453
+
+Function8a453: ; 8a453 (22:6453)
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	hlcoord 1, 14
+	ld de, String_8a476
+	ld a, [MenuSelection]
+	cp $ff
+	jr z, .asm_8a472
+	ld de, Strings_8a483
+	dec a
+	ld c, a
+	call Function8919e
+.asm_8a472
+	call PlaceString
+	ret
+; 8a476 (22:6476)
+
+String_8a476: ; 8a476
+	db   "まえ", $25, "がめん", $1d, "もどります@"
+; 8a483
+
+Strings_8a483: ; 8a483
+	db   "おともだち", $25, "めいしは"
+	next "ここ", $1d, "いれておきます@"
+
+	db   "でんわばんごう", $1f, "いれると"
+	next "めいしこうかん", $4a, "できます@"
+
+	db   "ともだちと じぶん", $25, "めいしを"
+	next "せきがいせんで こうかん します@"
+; 8a4d3
+
+Function8a4d3: ; 8a4d3 (22:64d3)
+	ld a, [MenuSelection]
+	cp $1
+	jr nz, .asm_8a4eb
+	ld a, $5
+	hlcoord 12, 4, AttrMap
+	call Function8a5a3
+	ld a, $7
+	hlcoord 15, 4, AttrMap
+	call Function8a5a3
+	ret
+.asm_8a4eb
+	ld a, $7
+	hlcoord 12, 4, AttrMap
+	call Function8a5a3
+	ld a, $6
+	hlcoord 15, 4, AttrMap
+	call Function8a5a3
+	ret
+
+Function8a4fc: ; 8a4fc (22:64fc)
+	ld a, [MenuSelection]
+	cp $3
+	jr nz, asm_8a529
+	ld hl, wd012
+	ld a, [hli]
+	ld b, a
+	ld a, [hld]
+	add b
+	ld [hl], a
+	ld b, a
+	ld c, $80
+	call Function89cdf
+	call Function8a515
+	ret
+
+Function8a515: ; 8a515 (22:6515)
+	ld hl, wd012
+	ld a, [hl]
+	cp $38
+	jr c, .asm_8a520
+	cp $3c
+	ret c
+.asm_8a520
+	ld a, [wd013]
+	cpl
+	inc a
+	ld [wd013], a
+	ret
+
+asm_8a529: ; 8a529 (22:6529)
+	ld hl, wd012
+	ld a, $3c
+	ld [hli], a
+	ld a, $ff
+	ld [hli], a
+	ld hl, Sprites
+	xor a
+	ld bc, $20
+	call ByteFill
+	ret
+
+Function8a53d: ; 8a53d (22:653d)
+	push hl
+	ld a, $15
+	ld c, $8
+	ld de, $14
+	call Function8a573
+	ld a, $1d
+	ld c, $9
+	call Function8a57c
+	inc a
+	ld [hl], a
+	call Function8a584
+	pop hl
+	add hl, de
+	ld a, $1f
+	ld c, $8
+	call Function8a573
+	dec hl
+	ld a, $51
+	ld [hli], a
+	ld a, $26
+	ld c, $1
+	call Function8a57c
+	ld a, $52
+	ld c, $3
+	call Function8a573
+	ld a, $27
+	ld c, $6
+
+Function8a573: ; 8a573 (22:6573)
+	ld [hl], a
+	call Function8a584
+	inc a
+	dec c
+	jr nz, Function8a573
+	ret
+
+Function8a57c: ; 8a57c (22:657c)
+	ld [hl], a
+	call Function8a584
+	dec c
+	jr nz, Function8a57c
+	ret
+
+Function8a584: ; 8a584 (22:6584)
+	push af
+	ld a, $4
+	call Function89215
+	inc hl
+	pop af
+	ret
+
+Function8a58d: ; 8a58d (22:658d)
+	ld a, $2d
+	ld bc, $606
+	ld de, $14
+.asm_8a595
+	push bc
+	push hl
+.asm_8a597
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_8a597
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_8a595
+	ret
+
+Function8a5a3: ; 8a5a3 (22:65a3)
+	ld bc, $603
+	ld de, $14
+.asm_8a5a9
+	push bc
+	push hl
+.asm_8a5ab
+	ld [hli], a
+	dec c
+	jr nz, .asm_8a5ab
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_8a5a9
+	ret
+
+Function8a5b6: ; 8a5b6 (22:65b6)
+	ld a, [rSVBK] ; $ff00+$70
+	push af
+	ld a, $5
+	ld [rSVBK], a ; $ff00+$70
+	ld hl, Palette_8a5e5
+	ld de, wd020
+	ld bc, $18
+	call CopyBytes
+	ld hl, Palette_8a5fd
+	ld de, Unkn2Pals
+	ld bc, $8
+	call CopyBytes
+	ld hl, Palette_8a605
+	ld de, wd048
+	ld bc, $8
+	call CopyBytes
+	pop af
+	ld [rSVBK], a ; $ff00+$70
+	ret
+; 8a5e5 (22:65e5)
+
+Palette_8a5e5: ; 8a5e5
+	RGB 31, 31, 31
+	RGB 27, 19, 00
+	RGB 07, 11, 22
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 16, 16, 31
+	RGB 27, 19, 00
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 31, 00, 00
+	RGB 27, 19, 00
+	RGB 00, 00, 00
+; 8a5fd
+
+Palette_8a5fd: ; 8a5fd
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+; 8a605
+
+Palette_8a605: ; 8a605
+	RGB 00, 00, 00
+	RGB 14, 18, 31
+	RGB 16, 16, 31
+	RGB 31, 31, 31
+; 8a60d
+
+Function8a60d: ; 8a60d
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_8a624
+	ld de, Unkn2Pals
+	ld bc, $0008
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; 8a624
+
+Palette_8a624: ; 8a624
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+; 8a62c
+
+Function8a62c: ; 8a62c (22:662c)
+	call Function1d6e
+	call Function891fe
+	xor a
+	call Function8b94a
+	call Function8b677
+.asm_8a639
+	xor a
+	ld [wd033], a
+	ld [wd032], a
+	ld [wd0e3], a
+	call Function8b7bd
+	ld a, c
+	and a
+	jr z, .asm_8a66a
+	ld [MenuSelection], a
+	ld b, a
+	ld a, [wcf77]
+	inc a
+	ld [wd034], a
+	push bc
+	call Function8b960
+	ld a, c
+	pop bc
+	jr z, .asm_8a639
+	ld c, a
+	ld hl, Jumptable_8a671
+	ld a, b
+	ld [MenuSelection], a
+	ld a, c
+	dec a
+	rst JumpTable
+	jr .asm_8a639
+.asm_8a66a
+	call Function891fe
+	call Function89b28
+	ret
+
+Jumptable_8a671: ; 8a671 (22:6671)
+	dw Function8a679
+	dw Function8a6cd
+	dw Function8a8c3
+	dw Function8a930
+
+
+Function8a679: ; 8a679 (22:6679)
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	call OpenSRAMBank4
+	call Function8931b
+	call Function89844
+	call CloseSRAM
+	call OpenSRAMBank4
+	call Function8939a
+	call Function89856
+	hlcoord 1, 13
+	call Function899fe
+	call Function891ab
+	call CloseSRAM
+.asm_8a6a3
+	call Function89a57
+	jr c, .asm_8a6a3
+	and a
+	jr z, Function8a679
+	ld hl, Jumptable_8a6bc
+	dec a
+	rst JumpTable
+	jr c, Function8a679
+	call Function891fe
+	call Function8b677
+	call Function89448
+	ret
+
+Jumptable_8a6bc: ; 8a6bc (22:66bc)
+	dw Function8a6c0
+	dw Function8a6c5
+
+
+Function8a6c0: ; 8a6c0 (22:66c0)
+	call PlayClickSFX
+	and a
+	ret
+
+Function8a6c5: ; 8a6c5 (22:66c5)
+	call PlayClickSFX
+	call Function89d0d
+	scf
+	ret
+
+Function8a6cd: ; 8a6cd (22:66cd)
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	call OpenSRAMBank4
+	call Function8931b
+	call Function89844
+	call Function8a757
+	call CloseSRAM
+.asm_8a6e5
+	call OpenSRAMBank4
+	call Function8931b
+	call Function89856
+	call Function89a2e
+	call Function891ab
+	xor a
+	ld [wd02f], a
+	call CloseSRAM
+.asm_8a6fb
+	call Function89b97
+	call Function89c67
+	jr c, .asm_8a718
+	ld a, b
+	and a
+	jr z, .asm_8a6fb
+	call PlayClickSFX
+	call Function89448
+	ld a, [wd011]
+	ld hl, Jumptable_8a74f
+	rst JumpTable
+	jr nc, .asm_8a6e5
+	jr .asm_8a742
+.asm_8a718
+	call OpenSRAMBank4
+	call Function8a765
+	call CloseSRAM
+	jr nc, .asm_8a73f
+	call Function8923c
+	call Function89448
+	call Function89a23
+	hlcoord 1, 13
+	ld de, String_89135
+	call PlaceString
+	call WaitBGMap
+	ld a, $2
+	call Function89254
+	jr c, .asm_8a6e5
+.asm_8a73f
+	call CloseSRAM
+.asm_8a742
+	call WhiteBGMap
+	call Function89448
+	call Function891d3
+	call Function8b677
+	ret
+
+Jumptable_8a74f: ; 8a74f (22:674f)
+	dw Function8a78c
+	dw Function8a7cb
+	dw Function8a818
+	dw Function8a8a1
+
+
+Function8a757: ; 8a757 (22:6757)
+	call Function8939a
+	xor a
+	ld [wd010], a
+	ld [wd011], a
+	ld [wd012], a
+	ret
+
+Function8a765: ; 8a765 (22:6765)
+	call Function8931b
+	push bc
+	ld hl, $0
+	add hl, bc
+	ld de, DefaultFlypoint
+	ld c, $6
+	call Function89185
+	pop bc
+	jr nz, .asm_8a78a
+	push bc
+	ld hl, $11
+	add hl, bc
+	ld de, wd008
+	ld c, $8
+	call Function89185
+	pop bc
+	jr nz, .asm_8a78a
+	and a
+	ret
+.asm_8a78a
+	scf
+	ret
+
+Function8a78c: ; 8a78c (22:678c)
+	call Function891fe
+	ld de, DefaultFlypoint
+	ld b, $5
+	callba Function116c1
+	call OpenSRAMBank4
+	call Function8931b
+	push bc
+	ld hl, $0
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, DefaultFlypoint
+	call InitName
+	call CloseSRAM
+	call DelayFrame
+	call Functiona57
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	call OpenSRAMBank4
+	pop bc
+	call Function89844
+	call CloseSRAM
+	and a
+	ret
+
+Function8a7cb: ; 8a7cb (22:67cb)
+	ld a, [MenuSelection]
+	push af
+	call Function891de
+	ld de, wd008
+	ld c, $0
+	callba Function17a68f
+	jr c, .asm_8a7f4
+	ld hl, wd008
+	ld a, $ff
+	ld bc, $8
+	call ByteFill
+	ld h, d
+	ld l, e
+	ld de, wd008
+	ld c, $8
+	call Function89193
+.asm_8a7f4
+	pop af
+	ld [MenuSelection], a
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	call OpenSRAMBank4
+	call Function8931b
+	call Function89844
+	call Function89856
+	call Function89a2e
+	call Function891ab
+	call CloseSRAM
+	and a
+	ret
+
+Function8a818: ; 8a818 (22:6818)
+	call Function89a23
+	ld hl, DefaultFlypoint
+	call Function89331
+	jr c, .asm_8a875
+	ld hl, wd008
+	call Function89b45
+	jr nc, .asm_8a87a
+	call OpenSRAMBank4
+	call Function8a765
+	jr nc, .asm_8a863
+	call Function8931b
+	push bc
+	ld hl, $0
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, DefaultFlypoint
+	ld c, $6
+	call Function89193
+	pop bc
+	ld hl, $11
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, wd008
+	ld c, $8
+	call Function89193
+	hlcoord 1, 13
+	ld de, .string_8a868
+	call PlaceString
+	call WaitBGMap
+	call Functiona36
+.asm_8a863
+	call CloseSRAM
+	scf
+	ret
+; 8a868 (22:6868)
+
+.string_8a868
+	db "めいし", $1f, "かきかえ まし", $22, "@"
+
+.asm_8a875
+	ld de, String_8a88b
+	jr .asm_8a87d
+.asm_8a87a
+	ld de, String_8911c
+.asm_8a87d
+	hlcoord 1, 13
+	call PlaceString
+	call WaitBGMap
+	call Functiona36
+	and a
+	ret
+; 8a88b (22:688b)
+
+String_8a88b: ; 8a88b
+	db   "おともだち", $25, "なまえが"
+	next "かかれて いません!@"
+; 8a8a1
+
+Function8a8a1: ; 8a8a1 (22:68a1)
+	call OpenSRAMBank4
+	call Function8a765
+	call CloseSRAM
+	jr nc, .asm_8a8bf
+	call Function89a23
+	hlcoord 1, 13
+	ld de, String_89135
+	call PlaceString
+	ld a, $2
+	call Function89254
+	jr c, .asm_8a8c1
+.asm_8a8bf
+	scf
+	ret
+.asm_8a8c1
+	and a
+	ret
+
+Function8a8c3: ; 8a8c3 (22:68c3)
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	call OpenSRAMBank4
+	call Function8931b
+	call Function89844
+	call Function8939a
+	call Function89856
+	call CloseSRAM
+	call Function891ab
+	hlcoord 1, 13
+	ld de, String_8a919
+	call PlaceString
+	ld a, $2
+	call Function89254
+	jr c, .asm_8a90f
+	call OpenSRAMBank4
+	call Function892b4
+	call CloseSRAM
+	call Function89a23
+	call Function8923c
+	hlcoord 1, 13
+	ld de, String_8a926
+	call PlaceString
+	call WaitBGMap
+	call Functiona36
+.asm_8a90f
+	call Function89448
+	call Function891fe
+	call Function8b677
+	ret
+; 8a919 (22:6919)
+
+String_8a919: ; 8a919
+	db "このデータ", $1f, "けしますか?@"
+; 8a926
+
+String_8a926: ; 8a926
+	db "データ", $1f, "けしまし", $22, "@"
+; 8a930
+
+Function8a930: ; 8a930 (22:6930)
+	ld a, [MenuSelection]
+	push af
+	xor a
+	ld [wd032], a
+	ld a, $1
+	ld [wd033], a
+	ld a, [wd034]
+	ld [wd0e3], a
+.asm_8a943
+	call Function8b7bd
+	ld a, [wcf73]
+	and $1
+	jr nz, .asm_8a953
+	ld a, c
+	and a
+	jr nz, .asm_8a943
+	pop af
+	ret
+.asm_8a953
+	call OpenSRAMBank4
+	pop af
+	cp c
+	jr z, .asm_8a995
+	push bc
+	ld [MenuSelection], a
+	call Function8931b
+	push bc
+	ld h, b
+	ld l, c
+	ld de, DefaultFlypoint
+	ld bc, $25
+	call CopyBytes
+	pop de
+	pop bc
+	ld a, c
+	ld [MenuSelection], a
+	call Function8931b
+	push bc
+	ld h, b
+	ld l, c
+	ld bc, $25
+	call CopyBytes
+	pop de
+	ld hl, DefaultFlypoint
+	ld bc, $25
+	call CopyBytes
+	ld de, SFX_SWITCH_POKEMON
+	call WaitPlaySFX
+	ld de, SFX_SWITCH_POKEMON
+	call WaitPlaySFX
+.asm_8a995
+	call CloseSRAM
+	ret
+
+Function8a999: ; 8a999 (22:6999)
+	ld hl, MenuDataHeader_0x8a9c9
+	call LoadMenuDataHeader
+	ld c, $1
+.asm_8a9a1
+	call Function8a9ce
+	jr c, .asm_8a9bb
+	push bc
+	push de
+	call Function1d6e
+	pop de
+	dec e
+	ld a, e
+	ld hl, Jumptable_8a9c5
+	rst JumpTable
+	call Function891fe
+	call Function89b28
+	pop bc
+	jr .asm_8a9a1
+.asm_8a9bb
+	call Function89209
+	call WriteBackup
+	call Function8920f
+	ret
+
+Jumptable_8a9c5: ; 8a9c5 (22:69c5)
+	dw Function8aa0a
+	dw Function8ab3b
+; 8a9c9 (22:69c9)
+
+MenuDataHeader_0x8a9c9: ; 0x8a9c9
+	db $40 ; flags
+	db 04, 11 ; start coords
+	db 11, 18 ; end coords
+; 8a9ce
+
+Function8a9ce: ; 8a9ce (22:69ce)
+	push bc
+	decoord 11, 4
+	ld b, $6
+	ld c, $6
+	call Function89b3b
+	pop bc
+	ld a, c
+	ld hl, MenuDataHeader_0x8a9f2
+	call Function89d5e
+	ld hl, Function8aa09
+	call Function89d85
+	jr c, .asm_8a9ed
+	ld c, a
+	ld e, a
+	and a
+	ret
+.asm_8a9ed
+	ld c, a
+	ld e, $0
+	scf
+	ret
+; 8a9f2 (22:69f2)
+
+MenuDataHeader_0x8a9f2: ; 0x8a9f2
+	db $40 ; flags
+	db 04, 11 ; start coords
+	db 11, 18 ; end coords
+	dw MenuData2_0x8a9fa
+	db 1 ; default option
+; 0x8a9fa
+
+MenuData2_0x8a9fa: ; 0x8a9fa
+	db $a0 ; flags
+	db 3 ; items
+	db "へんしゅう@"
+	db "みる@"
+	db "やめる@"
+; 0x8aa09
+
+Function8aa09: ; 8aa09
+	ret
+; 8aa0a
+
+Function8aa0a: ; 8aa0a (22:6a0a)
+	ld a, $1
+	ld [wd02f], a
+	ld [wd011], a
+	xor a
+	ld [wd010], a
+	ld [wd012], a
+	call OpenSRAMBank4
+	ld hl, $a603
+	ld de, wd008
+	call Function89381
+	call CloseSRAM
+	call Function891fe
+	call WhiteBGMap
+	call Function893cc
+	call Function89807
+	call Function89492
+	call Function894ca
+.asm_8aa3a
+	call Function8987f
+	call Function89a2e
+	call Function891ab
+.asm_8aa43
+	call Function89b97
+	call Function89c67
+	jr c, .asm_8aa61
+	ld a, b
+	and a
+	jr z, .asm_8aa43
+	call PlayClickSFX
+	call Function89448
+	ld a, [wd011]
+	dec a
+	ld hl, Jumptable_8aa6d
+	rst JumpTable
+	jr nc, .asm_8aa3a
+	jr .asm_8aa69
+.asm_8aa61
+	call Function89448
+	call Function8ab11
+	jr nc, .asm_8aa3a
+.asm_8aa69
+	call Function89448
+	ret
+
+Jumptable_8aa6d: ; 8aa6d (22:6a6d)
+	dw Function8aa73
+	dw Function8aab6
+	dw Function8ab11
+
+
+Function8aa73: ; 8aa73 (22:6a73)
+	ld a, [MenuSelection]
+	ld e, a
+	push de
+	call Function891de
+	ld de, wd008
+	ld c, $0
+	callba Function17a68f
+	jr c, .asm_8aa9d
+	ld hl, wd008
+	ld a, $ff
+	ld bc, $8
+	call ByteFill
+	ld h, d
+	ld l, e
+	ld de, wd008
+	ld c, $8
+	call Function89193
+.asm_8aa9d
+	call Function891fe
+	call WhiteBGMap
+	call Function893cc
+	call Function89807
+	call Function89492
+	call Function894ca
+	pop de
+	ld a, e
+	ld [MenuSelection], a
+	and a
+	ret
+
+Function8aab6: ; 8aab6 (22:6ab6)
+	call Function89a23
+	ld hl, wd008
+	call Function89b45
+	jr nc, Function8ab00
+	call OpenSRAMBank4
+	ld de, wd008
+	ld hl, $a603
+	ld c, $8
+	call Function89185
+	jr z, .asm_8aaeb
+	ld hl, wd008
+	ld de, $a603
+	ld c, $8
+	call Function89193
+	hlcoord 1, 13
+	ld de, String_8aaf0
+	call PlaceString
+	call WaitBGMap
+	call Functiona36
+.asm_8aaeb
+	call CloseSRAM
+	scf
+	ret
+; 8aaf0 (22:6af0)
+
+String_8aaf0: ; 8aaf0
+	db "あたらしい めいし", $4a, "できまし", $22, "@"
+; 8ab00
+
+Function8ab00: ; 8ab00
+	ld de, String_8911c
+	hlcoord 1, 13
+	call PlaceString
+	call WaitBGMap
+	call Function89235
+	and a
+	ret
+
+Function8ab11: ; 8ab11 (22:6b11)
+	call OpenSRAMBank4
+	ld hl, $a603
+	ld de, wd008
+	ld c, $8
+	call Function89185
+	call CloseSRAM
+	jr z, .asm_8ab37
+	call Function89a23
+	hlcoord 1, 13
+	ld de, String_89135
+	call PlaceString
+	ld a, $2
+	call Function89254
+	jr c, .asm_8ab39
+.asm_8ab37
+	scf
+	ret
+.asm_8ab39
+	and a
+	ret
+
+Function8ab3b: ; 8ab3b (22:6b3b)
+	call Function891fe
+	call WhiteBGMap
+	call Function893cc
+	call Function89807
+	call Function89492
+	call Function894ca
+	call OpenSRAMBank4
+	ld hl, $a603
+	ld de, wd008
+	call Function89381
+	call CloseSRAM
+	call Function8987f
+	call OpenSRAMBank4
+	hlcoord 1, 13
+	ld bc, $a007
+	call Function89a0c
+	call CloseSRAM
+	call Function891ab
+	call Function8ab77
+	jr c, Function8ab3b
+	ret
+
+Function8ab77: ; 8ab77 (22:6b77)
+	call Function354b
+	bit 0, c
+	jr nz, .asm_8ab8e
+	bit 1, c
+	jr nz, .asm_8ab8e
+	bit 3, c
+	jr z, Function8ab77
+	call PlayClickSFX
+	call Function89d0d
+	scf
+	ret
+.asm_8ab8e
+	call PlayClickSFX
+	and a
+	ret
+
+Function8ab93: ; 8ab93 (22:6b93)
+	call WhiteBGMap
+	call Function1d6e
+	callba Function105688
+	call ClearSprites
+	call Function891fe
+	call Function89b28
+	ret
+; 8aba9 (22:6ba9)
+
+Function8aba9: ; 8aba9
+	ld a, $2
+	call Function8b94a
+	ld a, $1
+	ld [wd032], a
+.asm_8abb3
+	call Function891fe
+	call Function8b677
+.asm_8abb9
+	call Function8b7bd
+	jr z, .asm_8abdf
+	ld a, c
+	ld [MenuSelection], a
+	call OpenSRAMBank4
+	call Function8931b
+	ld hl, $0011
+	add hl, bc
+	call Function89b45
+	call CloseSRAM
+	jr c, .asm_8abe2
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call CloseSRAM
+	jr .asm_8abb9
+
+.asm_8abdf
+	xor a
+	ld c, a
+	ret
+
+.asm_8abe2
+	call PlayClickSFX
+.asm_8abe5
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	call OpenSRAMBank4
+	call Function8931b
+	call Function89844
+	call CloseSRAM
+	call OpenSRAMBank4
+	call Function8939a
+	call Function89856
+	hlcoord 1, 13
+	call Function899fe
+	call CloseSRAM
+	call Function891ab
+.asm_8ac0f
+	call Function89a57
+	jr c, .asm_8ac0f
+	and a
+	jr z, .asm_8abe5
+	cp $2
+	jr z, .asm_8ac0f
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	hlcoord 1, 14
+	ld de, String_8ac3b
+	call PlaceString
+	ld a, $1
+	call Function8925e
+	jp c, .asm_8abb3
+	ld a, [MenuSelection]
+	ld c, a
+	ret
+; 8ac3b
+
+String_8ac3b: ; 8ac3b
+	db   "こ", $25, "ともだち", $1d, "でんわを"
+	next "かけますか?@"
+; 8ac4e
+
+Function8ac4e: ; 8ac4e
+	xor a
+	ld [MenuSelection], a
+	push de
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	pop bc
+	call Function89844
+	call Function8939a
+	call Function89856
+	hlcoord 1, 13
+	call Function899fe
+	call Function891ab
+	ret
+; 8ac70
+
+Function8ac70: ; 8ac70
+	push de
+	ld a, $3
+	call Function8b94a
+
+Function8ac76: ; 8ac76
+	call Function891fe
+	call Function8b677
+
+Function8ac7c: ; 8ac7c
+	call Function8b7bd
+	jr z, .asm_8acf0
+	ld a, c
+	ld [wd02f], a
+	ld [MenuSelection], a
+	call OpenSRAMBank4
+	call Function8931b
+	call Function8932d
+	call CloseSRAM
+	jr nc, .asm_8acb0
+	call OpenSRAMBank4
+	ld hl, $0011
+	add hl, bc
+	call Function89b45
+	call CloseSRAM
+	jr nc, .asm_8accc
+	call OpenSRAMBank4
+	call Function892b7
+	call CloseSRAM
+	jr .asm_8accc
+
+.asm_8acb0
+	call Function8ad0b
+	jr c, Function8ac76
+	and a
+	jr nz, .asm_8accc
+	call OpenSRAMBank4
+	ld h, b
+	ld l, c
+	ld d, $0
+	ld e, $6
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	ld c, $1f
+	call Function89193
+	jr .asm_8ace4
+
+.asm_8accc
+	pop hl
+	call OpenSRAMBank4
+	ld d, b
+	ld e, c
+	ld c, $6
+	call Function89193
+	ld a, $6
+	add e
+	ld e, a
+	ld a, $0
+	adc d
+	ld d, a
+	ld c, $1f
+	call Function89193
+
+.asm_8ace4
+	call CloseSRAM
+	call Functione51
+	ld a, [wd02f]
+	ld c, a
+	and a
+	ret
+
+.asm_8acf0
+	ld hl, UnknownText_0x8ad06
+	call PrintText
+	ld a, $2
+	call Function89259
+	jp c, Function8ac7c
+	call Functione51
+	pop de
+	ld c, $0
+	scf
+	ret
+; 8ad06
+
+UnknownText_0x8ad06: ; 0x8ad06
+	; Finish registering CARDS?
+	text_jump UnknownText_0x1c554a
+	db "@"
+; 0x8ad0b
+
+Function8ad0b: ; 8ad0b
+.asm_8ad0b
+	ld a, [MenuSelection]
+	ld [wd02f], a
+	call Function891de
+	call WhiteBGMap
+	call Function893cc
+	call OpenSRAMBank4
+	call Function8931b
+	push bc
+	call Function89844
+	call Function8939a
+	call Function89856
+	hlcoord 1, 13
+	call Function899fe
+	call CloseSRAM
+	call Function891ab
+	pop bc
+.asm_8ad37
+	push bc
+	call Function89a57
+	pop bc
+	jr c, .asm_8ad37
+	and a
+	jr z, .asm_8ad0b
+	cp $2
+	jr z, .asm_8ad37
+	call Function8923c
+	push bc
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	ld de, String_8ad89
+	hlcoord 1, 14
+	call PlaceString
+	ld a, $2
+	call Function8925e
+	jr c, .asm_8ad87
+	call Function8923c
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	ld de, String_8ad9c
+	hlcoord 1, 14
+	call PlaceString
+	ld a, $1
+	call Function8925e
+	jr c, .asm_8ad84
+	ld a, $0
+	jr .asm_8ad86
+
+.asm_8ad84
+	ld a, $1
+
+.asm_8ad86
+	and a
+
+.asm_8ad87
+	pop bc
+	ret
+; 8ad89
+
+String_8ad89: ; 8ad89
+	db   "こ", $25, "めいし", $1f, "けして"
+	next "いれかえますか?@"
+; 8ad9c
+
+String_8ad9c: ; 8ad9c
+	db   "おともだち", $25, "なまえを"
+	next "のこして おきますか?@"
+; 8adb3
+
+Function8adb3: ; 8adb3
+	call Function891de
+	call Function8a262
+	push af
+	call Function891de
+	pop af
+	ret
+; 8adbf
+
+Function8adbf: ; 8adbf
+	call OpenSRAMBank4
+	ld hl, $a603
+	call Function89b45
+	call CloseSRAM
+	ret
+; 8adcc
+
+Function8adcc: ; 8adcc
+	call OpenSRAMBank4
+	call Function8b3b0
+	call CloseSRAM
+	ret nc
+	cp $2
+	ret z
+	scf
+	ret
+; 8addb
--- /dev/null
+++ b/misc/mobile_22_2.asm
@@ -1,0 +1,1155 @@
+Function8b342:: ; 8b342
+; Loads the secondary map header pointer, then runs through a
+; jumptable with three dummy functions.  Spends a lot of energy
+; doing pretty much nothing.
+	call GetSecondaryMapHeaderPointer
+	ld d, h
+	ld e, l
+
+; Everything between here and "ret" is useless.
+	xor a
+.loop
+	push af
+	ld hl, .jumptable
+	rst JumpTable
+	pop af
+	inc a
+	cp 3
+	jr nz, .loop
+	ret
+; 8b354
+
+.jumptable: ; 8b354
+	dw .zero
+	dw .one
+	dw .two
+; 8b35a
+
+.zero: ; 8b35a
+	mobile
+; 8b35b
+
+.one: ; 8b35b
+	mobile
+; 8b35c
+
+.two: ; 8b35c
+	mobile
+; 8b35d
+
+Function8b35d: ; 8b35d
+	ld a, h
+	cp d
+	ret nz
+	ld a, l
+	cp e
+	ret
+; 8b363
+
+Function8b363: ; 8b363
+	push bc
+	callba Function10632f
+	pop bc
+	ret
+; 8b36c
+
+Function8b36c: ; 8b36c (22:736c)
+	push bc
+	ld h, b
+	ld l, c
+	ld bc, $4
+	ld a, -1
+	call ByteFill
+	pop bc
+	ret
+
+Function8b379: ; 8b379 (22:7379)
+	push bc
+	ld a, c
+	add e
+	ld c, a
+	ld a, $0
+	adc b
+	ld b, a
+	ld a, [bc]
+	ld d, a
+	pop bc
+	ret
+
+Function8b385: ; 8b385 (22:7385)
+	push bc
+	ld a, c
+	add e
+	ld c, a
+	ld a, $0
+	adc b
+	ld b, a
+	ld a, d
+	ld [bc], a
+	pop bc
+	ret
+
+Function8b391: ; 8b391 (22:7391)
+	push bc
+	ld e, $0
+	ld d, $4
+.asm_8b396
+	ld a, [bc]
+	inc bc
+	cp $ff
+	jr z, .asm_8b3a2
+	inc e
+	dec d
+	jr nz, .asm_8b396
+	dec e
+	scf
+.asm_8b3a2
+	pop bc
+	ret
+
+Function8b3a4: ; 8b3a4 (22:73a4)
+	push de
+	push bc
+	ld d, b
+	ld e, c
+	ld c, $4
+	call Function89185
+	pop bc
+	pop de
+	ret
+
+Function8b3b0: ; 8b3b0 (22:73b0)
+	ld bc, $a037
+	ld a, [$a60b]
+	and a
+	jr z, .asm_8b3c2
+	cp $3
+	jr nc, .asm_8b3c2
+	call Function8b391
+	jr c, .asm_8b3c9
+.asm_8b3c2
+	call Function8b36c
+	xor a
+	ld [$a60b], a
+.asm_8b3c9
+	ld a, [$a60b]
+	ret
+
+Function8b3cd: ; 8b3cd (22:73cd)
+	push de
+	push bc
+	ld e, $4
+.asm_8b3d1
+	ld a, [bc]
+	inc bc
+	call Function8998b
+	inc hl
+	dec e
+	jr nz, .asm_8b3d1
+	pop bc
+	pop de
+	ret
+
+Function8b3dd: ; 8b3dd (22:73dd)
+	push de
+	push bc
+	call Function354b
+	ld a, c
+	pop bc
+	pop de
+	bit 0, a
+	jr nz, .asm_8b3f7
+	bit 1, a
+	jr nz, .asm_8b40e
+	bit 6, a
+	jr nz, .asm_8b429
+	bit 7, a
+	jr nz, .asm_8b443
+	and a
+	ret
+.asm_8b3f7
+	ld a, e
+	cp $3
+	jr z, .asm_8b407
+	inc e
+	ld d, $0
+	call Function8b385
+	xor a
+	ld [wd010], a
+	ret
+.asm_8b407
+	call PlayClickSFX
+	ld d, $0
+	scf
+	ret
+.asm_8b40e
+	ld a, e
+	and a
+	jr nz, .asm_8b41e
+	call PlayClickSFX
+	ld d, $ff
+	call Function8b385
+	ld d, $1
+	scf
+	ret
+.asm_8b41e
+	ld d, $ff
+	call Function8b385
+	dec e
+	xor a
+	ld [wd010], a
+	ret
+.asm_8b429
+	call Function8b379
+	ld a, d
+	cp $a
+	jr c, .asm_8b433
+	ld d, $9
+.asm_8b433
+	inc d
+	ld a, d
+	cp $a
+	jr c, .asm_8b43b
+	ld d, $0
+.asm_8b43b
+	call Function8b385
+	xor a
+	ld [wd010], a
+	ret
+.asm_8b443
+	call Function8b379
+	ld a, d
+	cp $a
+	jr c, .asm_8b44d
+	ld d, $0
+.asm_8b44d
+	ld a, d
+	dec d
+	and a
+	jr nz, .asm_8b454
+	ld d, $9
+.asm_8b454
+	call Function8b385
+	xor a
+	ld [wd010], a
+	ret
+
+Function8b45c: ; 8b45c (22:745c)
+	call Function8b36c
+	xor a
+	ld [wd010], a
+	ld [wd012], a
+	call Function8b391
+	ld d, $0
+	call Function8b385
+.asm_8b46e
+	call Function8923c
+	call Function8b493
+	call Function8b4cc
+	call Function8b518
+	call Function89b78
+	push bc
+	call Function8b4fd
+	call Function89c44
+	ld a, $1
+	ld [hBGMapMode], a ; $ff00+$d4
+	pop bc
+	call Function8b3dd
+	jr nc, .asm_8b46e
+	ld a, d
+	and a
+	ret z
+	scf
+	ret
+
+Function8b493: ; 8b493 (22:7493)
+	push bc
+	call Function8923c
+	call Function8b521
+	ld hl, Jumptable_8b4a0
+	pop bc
+	rst JumpTable
+	ret
+
+Jumptable_8b4a0: ; 8b4a0 (22:74a0)
+	dw Function8b4a4
+	dw Function8b4b8
+
+
+Function8b4a4: ; 8b4a4 (22:74a4)
+	push bc
+	push de
+	call Function8b4d8
+	call TextBox
+	pop de
+	pop bc
+	call Function8b4cc
+	call Function8b518
+	call Function8b3cd
+	ret
+
+Function8b4b8: ; 8b4b8 (22:74b8)
+	push bc
+	push de
+	call Function8b4ea
+	call Function89b3b
+	pop de
+	pop bc
+	call Function8b4cc
+	call Function8b518
+	call Function8b3cd
+	ret
+
+Function8b4cc: ; 8b4cc (22:74cc)
+	push bc
+	ld hl, Unknown_8b529
+	call Function8b50a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop bc
+	ret
+
+Function8b4d8: ; 8b4d8 (22:74d8)
+	ld hl, Unknown_8b529
+	call Function8b50a
+	push hl
+rept 2
+	inc hl
+endr
+	ld a, [hli]
+	ld b, a
+	ld a, [hl]
+	ld c, a
+	pop hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+Function8b4ea: ; 8b4ea (22:74ea)
+	ld hl, Unknown_8b529
+	call Function8b50a
+	push hl
+rept 2
+	inc hl
+endr
+	ld a, [hli]
+	ld b, a
+	ld a, [hl]
+	ld c, a
+	pop hl
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	ret
+
+Function8b4fd: ; 8b4fd (22:74fd)
+	ld hl, Unknown_8b529 + 4
+	call Function8b50a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld d, a
+	ret
+
+Function8b50a: ; 8b50a (22:750a)
+	ld a, [wd02e]
+	and a
+	ret z
+	ld b, $0
+	ld c, $8
+.asm_8b513
+	add hl, bc
+	dec a
+	jr nz, .asm_8b513
+	ret
+
+Function8b518: ; 8b518 (22:7518)
+	push de
+	ld d, $0
+	ld e, $14
+	add hl, de
+	inc hl
+	pop de
+	ret
+
+Function8b521: ; 8b521 (22:7521)
+	ld hl, Unknown_8b529 + 7
+	call Function8b50a
+	ld a, [hl]
+	ret
+; 8b529 (22:7529)
+
+Unknown_8b529: ; 8b529
+	dwcoord 2, 5
+	db 1, 4, $20, $49, 0, 1
+	dwcoord 7, 4
+	db 1, 4, $48, $41, 0, 0
+; 8b539
+
+Function8b539: ; 8b539 (22:7539)
+	ld bc, wd017
+	call Function8b36c
+	xor a
+	ld [wd012], a
+	ld [wd02e], a
+	call Function8b493
+	call Function8b4fd
+	ld e, $0
+	call Function89c44
+	call Function3238
+	ret
+
+Function8b555: ; 8b555 (22:7555)
+	ld hl, UnknownText_0x8b5ce
+	call PrintText
+	ld bc, wd017
+	call Function8b45c
+	jr c, .asm_8b5c8
+	call Function89448
+	ld bc, wd017
+	call Function8b493
+	ld bc, wd017
+	call Function8b664
+	jr nz, .asm_8b57c
+	ld hl, UnknownText_0x8b5e2
+	call PrintText
+	jr Function8b555
+.asm_8b57c
+	ld hl, UnknownText_0x8b5d3
+	call PrintText
+	ld bc, wd013
+	call Function8b45c
+	jr c, Function8b555
+	ld bc, wd017
+	ld hl, wd013
+	call Function8b3a4
+	jr z, .asm_8b5a6
+	call Function89448
+	ld bc, wd013
+	call Function8b493
+	ld hl, UnknownText_0x8b5d8
+	call PrintText
+	jr .asm_8b57c
+.asm_8b5a6
+	call OpenSRAMBank4
+	ld hl, wd013
+	ld de, $a037
+	ld bc, $4
+	call CopyBytes
+	call CloseSRAM
+	call Function89448
+	ld bc, wd013
+	call Function8b493
+	ld hl, UnknownText_0x8b5dd
+	call PrintText
+	and a
+.asm_8b5c8
+	push af
+	call Function89448
+	pop af
+	ret
+; 8b5ce (22:75ce)
+
+UnknownText_0x8b5ce: ; 0x8b5ce
+	; Please enter any four-digit number.
+	text_jump UnknownText_0x1bc187
+	db "@"
+; 0x8b5d3
+
+UnknownText_0x8b5d3: ; 0x8b5d3
+	; Enter the same number to confirm.
+	text_jump UnknownText_0x1bc1ac
+	db "@"
+; 0x8b5d8
+
+UnknownText_0x8b5d8: ; 0x8b5d8
+	; That's not the same number.
+	text_jump UnknownText_0x1bc1cf
+	db "@"
+; 0x8b5dd
+
+UnknownText_0x8b5dd: ; 0x8b5dd
+	; Your PASSCODE has been set. Enter this number next time to open the CARD FOLDER.
+	text_jump UnknownText_0x1bc1eb
+	db "@"
+; 0x8b5e2
+
+UnknownText_0x8b5e2: ; 0x8b5e2
+	; 0000 is invalid!
+	text_jump UnknownText_0x1bc23e
+	db "@"
+; 0x8b5e7
+
+Function8b5e7: ; 8b5e7 (22:75e7)
+	ld bc, wd013
+	call Function8b36c
+	xor a
+	ld [wd012], a
+	ld [wd02e], a
+	call Function8b493
+	call Function891ab
+	call Function8b4fd
+	ld e, $0
+	call Function89c44
+.asm_8b602
+	ld hl, UnknownText_0x8b642
+	call PrintText
+	ld bc, wd013
+	call Function8b45c
+	jr c, .asm_8b63c
+	call Function89448
+	ld bc, wd013
+	call Function8b493
+	call OpenSRAMBank4
+	ld hl, $a037
+	call Function8b3a4
+	call CloseSRAM
+	jr z, .asm_8b635
+	ld hl, UnknownText_0x8b647
+	call PrintText
+	ld bc, wd013
+	call Function8b36c
+	jr .asm_8b602
+.asm_8b635
+	ld hl, UnknownText_0x8b64c
+	call PrintText
+	and a
+.asm_8b63c
+	push af
+	call Function89448
+	pop af
+	ret
+; 8b642 (22:7642)
+
+UnknownText_0x8b642: ; 0x8b642
+	; Enter the CARD FOLDER PASSCODE.
+	text_jump UnknownText_0x1bc251
+	db "@"
+; 0x8b647
+
+UnknownText_0x8b647: ; 0x8b647
+	; Incorrect PASSCODE!
+	text_jump UnknownText_0x1bc272
+	db "@"
+; 0x8b64c
+
+UnknownText_0x8b64c: ; 0x8b64c
+	; CARD FOLDER open.@ @
+	text_jump UnknownText_0x1bc288
+	start_asm
+; 0x8b651
+
+Function8b651: ; 8b651
+	ld de, SFX_TWINKLE
+	call PlaySFX
+	call WaitSFX
+	ld c, $8
+	call DelayFrames
+	ld hl, .string_8b663
+	ret
+.string_8b663
+	db "@"
+; 8b664
+
+Function8b664: ; 8b664 (22:7664)
+	push bc
+	ld de, $4
+.asm_8b668
+	ld a, [bc]
+	cp $0
+	jr nz, .asm_8b66e
+	inc d
+.asm_8b66e
+	inc bc
+	dec e
+	jr nz, .asm_8b668
+	pop bc
+	ld a, d
+	cp $4
+	ret
+
+Function8b677: ; 8b677
+	call WhiteBGMap
+	call DisableLCD
+	call Function8b690
+	call Function8b6bb
+	call Function8b6ed
+	call EnableLCD
+	call Function891ab
+	call Function32f9
+	ret
+; 8b690
+
+Function8b690: ; 8b690
+	ld hl, GFX_17afa5 + $514
+	ld de, VTiles2
+	ld bc, $160
+	ld a, BANK(GFX_17afa5)
+	call FarCopyBytes
+	ld hl, GFX_17afa5 + $514 + $160 - $10
+	ld de, VTiles2 tile $61
+	ld bc, $10
+	ld a, BANK(GFX_17afa5)
+	call FarCopyBytes
+	ld hl, GFX_17afa5 + $514 + $160
+	ld de, VTiles1 tile $6e
+	ld bc, $10
+	ld a, BANK(GFX_17afa5)
+	call FarCopyBytes
+	ret
+; 8b6bb
+
+Function8b6bb: ; 8b6bb
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_8b6d5
+	ld de, Unkn1Pals
+	ld bc, $0018
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	call Function8949c
+	ret
+; 8b6d5
+
+Palette_8b6d5: ; 8b6d5
+	RGB 31, 31, 31
+	RGB 31, 21, 00
+	RGB 14, 07, 03
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 31, 21, 00
+	RGB 22, 09, 17
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 31, 21, 00
+	RGB 06, 24, 08
+	RGB 00, 00, 00
+; 8b6ed
+
+Function8b6ed: ; 8b6ed
+	hlcoord 0, 0, AttrMap
+	ld bc, $012c
+	xor a
+	call ByteFill
+	hlcoord 0, 14, AttrMap
+	ld bc, $0050
+	ld a, $7
+	call ByteFill
+	ret
+; 8b703
+
+Function8b703: ; 8b703
+	call Function8923c
+	push hl
+	ld a, $c
+	ld [hli], a
+	inc a
+	call Function8b73e
+	inc a
+	ld [hl], a
+	pop hl
+	push hl
+	push bc
+	ld de, SCREEN_WIDTH
+	add hl, de
+.asm_8b717
+	push hl
+	ld a, $f
+	ld [hli], a
+	ld a, $7f
+	call Function8b73e
+	ld a, $11
+	ld [hl], a
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	dec b
+	jr nz, .asm_8b717
+	call Function8b732
+	pop bc
+	pop hl
+	jr Function8b744
+; 8b732
+
+Function8b732: ; 8b732
+	ld a, $12
+	ld [hli], a
+	ld a, $13
+	call Function8b73e
+	ld a, $14
+	ld [hl], a
+	ret
+; 8b73e
+
+Function8b73e: ; 8b73e
+	ld d, c
+.asm_8b73f
+	ld [hli], a
+	dec d
+	jr nz, .asm_8b73f
+	ret
+; 8b744
+
+Function8b744: ; 8b744
+	ld de, AttrMap - TileMap
+	add hl, de
+rept 2
+	inc b
+endr
+rept 2
+	inc c
+endr
+	xor a
+.asm_8b74d
+	push bc
+	push hl
+.asm_8b74f
+	ld [hli], a
+	dec c
+	jr nz, .asm_8b74f
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_8b74d
+	ret
+; 8b75d
+
+Function8b75d: ; 8b75d
+	call Function8923c
+	hlcoord 0, 0
+	ld a, $1
+	ld bc, SCREEN_WIDTH
+	call ByteFill
+	hlcoord 0, 1
+	ld a, $2
+	ld [hl], a
+	hlcoord 9, 1
+	ld c, $b
+	call Function8b788
+	hlcoord 1, 1
+	ld a, $4
+	ld e, $8
+.asm_8b780
+	ld [hli], a
+	inc a
+	dec e
+	jr nz, .asm_8b780
+	jr Function8b79e
+; 8b787
+
+Function8b787: ; 8b787
+	ret
+; 8b788
+
+Function8b788: ; 8b788
+.asm_8b788
+	ld a, $2
+	ld [hli], a
+	dec c
+	ret z
+	ld a, $1
+	ld [hli], a
+	dec c
+	ret z
+	ld a, $3
+	ld [hli], a
+	dec c
+	ret z
+	ld a, $1
+	ld [hli], a
+	dec c
+	jr nz, .asm_8b788
+	ret
+; 8b79e
+
+Function8b79e: ; 8b79e
+	hlcoord 0, 1, AttrMap
+	ld a, $1
+	ld [hli], a
+	hlcoord 9, 1, AttrMap
+	ld e, $b
+.asm_8b7a9
+	ld a, $2
+	ld [hli], a
+	dec e
+	ret z
+	xor a
+	ld [hli], a
+	dec e
+	ret z
+	ld a, $1
+	ld [hli], a
+	dec e
+	ret z
+	xor a
+	ld [hli], a
+	dec e
+	jr nz, .asm_8b7a9
+	ret
+; 8b7bd
+
+Function8b7bd: ; 8b7bd
+	call Function8b855
+	ld hl, MenuDataHeader_0x8b867
+	call CopyMenuDataHeader
+	ld a, [wd030]
+	ld [wcf88], a
+	ld a, [wd031]
+	ld [wd0e4], a
+	ld a, [wd032]
+	and a
+	jr z, .asm_8b7e0
+	ld a, [wcf81]
+	set 3, a
+	ld [wcf81], a
+
+.asm_8b7e0
+	ld a, [wd0e3]
+	and a
+	jr z, .asm_8b7ea
+	dec a
+	ld [wcf77], a
+
+.asm_8b7ea
+	hlcoord 0, 2
+	ld b, $b
+	ld c, $12
+	call Function8b703
+	call Function8b75d
+	call UpdateSprites
+	call Function89209
+	call Function350c
+	call Function8920f
+	ld a, [wcf73]
+	cp $2
+	jr z, .asm_8b823
+	cp $20
+	jr nz, .asm_8b813
+	call Function8b832
+	jr .asm_8b7ea
+
+.asm_8b813
+	cp $10
+	jr nz, .asm_8b81c
+	call Function8b83e
+	jr .asm_8b7ea
+
+.asm_8b81c
+	ld a, [MenuSelection]
+	cp $ff
+	jr nz, .asm_8b824
+
+.asm_8b823
+	xor a
+
+.asm_8b824
+	ld c, a
+	ld a, [wcfa9]
+	ld [wd030], a
+	ld a, [wd0e4]
+	ld [wd031], a
+	ret
+; 8b832
+
+Function8b832: ; 8b832
+	ld a, [wd0e4]
+	ld hl, wcf92
+	sub [hl]
+	jr nc, Function8b84b
+	xor a
+	jr Function8b84b
+; 8b83e
+
+Function8b83e: ; 8b83e
+	ld a, [wd0e4]
+	ld hl, wcf92
+	add [hl]
+	cp $24
+	jr c, Function8b84b
+	ld a, $24
+
+Function8b84b: ; 8b84b
+	ld [wd0e4], a
+	ld a, [wcfa9]
+	ld [wcf88], a
+	ret
+; 8b855
+
+Function8b855: ; 8b855
+	ld a, $28
+	ld hl, DefaultFlypoint
+	ld [hli], a
+	ld c, $28
+	xor a
+.asm_8b85e
+	inc a
+	ld [hli], a
+	dec c
+	jr nz, .asm_8b85e
+	ld a, $ff
+	ld [hl], a
+	ret
+; 8b867
+
+MenuDataHeader_0x8b867: ; 0x8b867
+	db $40 ; flags
+	db 03, 01 ; start coords
+	db 13, 18 ; end coords
+	dw MenuData2_0x8b870
+	db 1 ; default option
+; 0x8b86f
+
+	db 0
+
+MenuData2_0x8b870: ; 0x8b870
+	db $3c ; flags
+	db 5 ; items
+	db 3, 1
+	dbw 0, wd002
+	dbw BANK(Function8b880), Function8b880
+	dbw BANK(Function8b88c), Function8b88c
+	dbw BANK(Function8b8c8), Function8b8c8
+; 8b880
+
+Function8b880: ; 8b880
+	ld h, d
+	ld l, e
+	ld de, MenuSelection
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	ret
+; 8b88c
+
+Function8b88c: ; 8b88c
+	call OpenSRAMBank4
+	ld h, d
+	ld l, e
+	push hl
+	ld de, String_89116
+	call Function8931b
+	call Function8932d
+	jr c, .asm_8b8a3
+	ld hl, $0000
+	add hl, bc
+	ld d, h
+	ld e, l
+
+.asm_8b8a3
+	pop hl
+	push hl
+	call PlaceString
+	pop hl
+	ld d, $0
+	ld e, $6
+	add hl, de
+	push hl
+	ld de, String_89116
+	call Function8931b
+	call Function8934a
+	jr c, .asm_8b8c0
+	ld hl, $0006
+	add hl, bc
+	ld d, h
+	ld e, l
+
+.asm_8b8c0
+	pop hl
+	call PlaceString
+	call CloseSRAM
+	ret
+; 8b8c8
+
+Function8b8c8: ; 8b8c8
+	hlcoord 0, 14
+	ld b, $2
+	ld c, $12
+	call TextBox
+	ld a, [wd033]
+	ld b, 0
+	ld c, a
+	ld hl, Unknown_8b903
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld d, h
+	ld e, l
+	hlcoord 1, 16
+	call PlaceString
+	hlcoord 0, 13
+	ld a, $f
+	ld [hl], a
+	hlcoord 19, 13
+	ld a, $11
+	ld [hl], a
+	ld a, [wd0e4]
+	cp $24
+	ret c
+	hlcoord 0, 13
+	ld c, $12
+	call Function8b732
+	ret
+; 8b903
+
+Unknown_8b903: ; 8b903
+	dw String_8b90b
+	dw String_8b919
+	dw String_8b92a
+	dw String_8b938
+
+String_8b90b: db "めいしを えらんでください@"        ; Please select a noun.
+String_8b919: db "どの めいしと いれかえますか?@"    ; OK to swap with any noun?
+String_8b92a: db "あいてを えらんでください@"        ; Please select an opponent.
+String_8b938: db "いれる ところを えらんでください@" ; Please select a location.
+; 8b94a
+
+Function8b94a: ; 8b94a
+	ld [wd033], a
+	xor a
+	ld [wd0e4], a
+	ld [wd032], a
+	ld [wd0e3], a
+	ld [wd031], a
+	ld a, $1
+	ld [wd030], a
+	ret
+; 8b960
+
+
+Function8b960: ; 8b960 (22:7960)
+	ld hl, MenuDataHeader_0x8b9ac
+	call LoadMenuDataHeader
+	call Function8b9e9
+	jr c, .asm_8b97a
+	hlcoord 11, 0
+	ld b, $6
+	ld c, $7
+	call Function8b703
+	ld hl, MenuDataHeader_0x8b9b1
+	jr .asm_8b987
+.asm_8b97a
+	hlcoord 11, 0
+	ld b, $a
+	ld c, $7
+	call Function8b703
+	ld hl, MenuDataHeader_0x8b9ca
+.asm_8b987
+	ld a, $1
+	call Function89d5e
+	ld hl, Function8b9ab
+	call Function89d85
+	call ExitMenu
+	jr c, .asm_8b99c
+	call Function8b99f
+	jr nz, .asm_8b99d
+.asm_8b99c
+	xor a
+.asm_8b99d
+	ld c, a
+	ret
+
+Function8b99f: ; 8b99f (22:799f)
+	ld hl, DefaultFlypoint
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	ret
+; 8b9ab (22:79ab)
+
+Function8b9ab: ; 8b9ab
+	ret
+; 8b9ac
+
+MenuDataHeader_0x8b9ac: ; 0x8b9ac
+	db $40 ; flags
+	db 00, 11 ; start coords
+	db 11, 19 ; end coords
+
+MenuDataHeader_0x8b9b1: ; 0x8b9b1
+	db $40 ; flags
+	db 00, 11 ; start coords
+	db 07, 19 ; end coords
+	dw MenuData2_0x8b9b9
+	db 1 ; default option
+; 0x8b9b9
+
+MenuData2_0x8b9b9: ; 0x8b9b9
+	db $a0 ; flags
+	db 3 ; items
+	db "へんしゅう@" ; EDIT
+	db "いれかえ@"   ; REPLACE
+	db "やめる@"     ; QUIT
+; 0x8b9ca
+
+MenuDataHeader_0x8b9ca: ; 0x8b9ca
+	db $40 ; flags
+	db 00, 11 ; start coords
+	db 11, 19 ; end coords
+	dw MenuData2_0x8b9d2
+	db 1 ; default option
+; 0x8b9d2
+
+MenuData2_0x8b9d2: ; 0x8b9d2
+	db $a0 ; flags
+	db 5 ; items
+	db "みる@"       ; VIEW
+	db "へんしゅう@" ; EDIT
+	db "いれかえ@"   ; REPLACE
+	db "けす@"       ; ERASE
+	db "やめる@"     ; QUIT
+; 0x8b9e9
+
+Function8b9e9: ; 8b9e9 (22:79e9)
+	call OpenSRAMBank4
+	call Function8931b
+	call Function8932d
+	jr nc, .asm_8b9f6
+	jr .asm_8b9ff
+.asm_8b9f6
+	ld hl, $11
+	add hl, bc
+	call Function89b45
+	jr c, .asm_8ba08
+.asm_8b9ff
+	call Function892b4
+	and a
+	ld de, Unknown_8ba1c
+	jr .asm_8ba0c
+.asm_8ba08
+	ld de, Unknown_8ba1f
+	scf
+.asm_8ba0c
+	push af
+	ld hl, DefaultFlypoint
+.asm_8ba10
+	ld a, [de]
+	inc de
+	ld [hli], a
+	cp $ff
+	jr nz, .asm_8ba10
+	call CloseSRAM
+	pop af
+	ret
+; 8ba1c (22:7a1c)
+
+Unknown_8ba1c: ; 8b1ac
+	db 2, 4, -1
+
+Unknown_8ba1f: ; 8ba1f
+	db 1, 2, 4, 3, -1
+; 8ba24
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -2010,7 +2010,7 @@
 	cp b
 	jr z, .asm_100d17
 	ld [wd0d8], a
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	ld b, a
 	bit 1, b
 	jr nz, .asm_100d17
@@ -2497,7 +2497,7 @@
 	dbwww $80, PlayerName, NAME_LENGTH, NULL
 	dbwww $80, PlayerName, NAME_LENGTH, NULL
 	dbwww $80, PlayerID, 2, NULL
-	dbwww $80, wd84a, 2, NULL
+	dbwww $80, wSecretID, 2, NULL
 	dbwww $80, PlayerGender, 1, NULL
 	dbwww $04, $a603, 8, NULL
 	dbwww $04, $a007, $30, NULL
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -7656,13 +7656,13 @@
 ; 11765d
 
 Function11765d: ; 11765d (45:765d)
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function11766b
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 
 Function11766b: ; 11766b (45:766b)
@@ -7798,7 +7798,7 @@
 	ld a, [hl]
 	and $2
 	jr nz, asm_1177d6
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and $40
 	jr nz, asm_1177f1
@@ -7973,11 +7973,11 @@
 	ld hl, MenuDataHeader_1179b5
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	ld hl, MenuDataHeader_1179bd
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	callba Function104061
 	hlcoord 16, 8
 	ld de, String_1179c5
@@ -8076,7 +8076,7 @@
 	ld hl, MenuDataHeader_1179b5
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	callba Function104061
 	hlcoord 1, 14
 	ld de, String_1179e1
@@ -8150,13 +8150,13 @@
 ; Mobile Stadium option from the continue/newgame menu.
 ; XXX better function names
 MobileStudium: ; 0x117a7f
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function117a8d
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 ; 0x117a8d
 
@@ -8236,7 +8236,7 @@
 	ld hl, Data117cbc
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	jp Function117cdd
 
 Function117b28:
@@ -8248,7 +8248,7 @@
 	ld hl, Data117cc4
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	hlcoord 16, 8
 	ld de, YesNo117ccc
 	call PlaceString
@@ -8386,7 +8386,7 @@
 	ld hl, Data117cbc
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	callba Function104061
 	ld hl, MobileStadiumSuccessText
 	call PrintText
@@ -9756,7 +9756,7 @@
 	ld hl, MenuDataHeader_119cf7
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	call Function321c
 	hlcoord 16, 8, AttrMap
 	ld a, $40
@@ -13211,7 +13211,7 @@
 	ld hl, MenuDataHeader_11a2de
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	call Function321c
 	hlcoord 16, 8
 	ld de, String_11a2cf
@@ -14328,10 +14328,10 @@
 	push af
 	xor a
 	ld [VramState], a
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	xor a
 	ld [$ffde], a
 	ld [wcd49], a
@@ -14358,7 +14358,7 @@
 .asm_11aca8
 	call ClearSprites
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	pop af
 	ld [VramState], a
 	pop af
@@ -14428,7 +14428,7 @@
 	ld a, [wcfa9]
 	ld [wcd82], a
 	dec a
-	ld [$ffb0], a
+	ld [hConnectedMapWidth], a
 	ld a, $10
 	ld [wc3b7], a
 	ld hl, Function8e83f
@@ -15099,7 +15099,7 @@
 	ld d, a
 	ld a, [wc7d2]
 	ld e, a
-	ld hl, $ffa9
+	ld hl, hJoyLast
 	ld a, [hl]
 	and $40
 	jr nz, .asm_11b19a
@@ -15780,11 +15780,11 @@
 	ld [wcd2b], a
 	ld [bc], a
 	inc bc
-	ld a, [wd84a]
+	ld a, [wSecretID]
 	ld [wcd2c], a
 	ld [bc], a
 	inc bc
-	ld a, [wd84b]
+	ld a, [wSecretID + 1]
 	ld [wcd2d], a
 	ld [bc], a
 	inc bc
@@ -16832,13 +16832,13 @@
 ; 11c1ab
 
 Function11c1ab: ; 11c1ab
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function11c1b9
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 ; 11c1b9
 
@@ -17154,7 +17154,7 @@
 	ld a, [de]
 	and $1
 	jr nz, .asm_11c42c
-	ld de, $ffa9
+	ld de, hJoyLast
 	ld a, [de]
 	and $40
 	jr nz, .asm_11c47c
@@ -17326,7 +17326,7 @@
 	and A_BUTTON
 	jr nz, .a
 
-	ld de, $ffa9
+	ld de, hJoyLast
 
 	ld a, [de]
 	and D_UP
@@ -17570,7 +17570,7 @@
 	ret
 
 .select
-	ld de, $ffa9
+	ld de, hJoyLast
 	ld a, [de]
 	and D_UP
 	jr nz, .asm_11c708
@@ -18644,7 +18644,7 @@
 	and B_BUTTON
 	jr nz, .b
 
-	ld de, $ffa9
+	ld de, hJoyLast
 	ld a, [de]
 	and D_UP
 	jr nz, .up
@@ -22362,7 +22362,7 @@
 Function16d713: ; 16d713
 	push bc
 	push af
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	and $f0
 	ld b, a
 	ld a, [hJoyPressed]
@@ -22701,9 +22701,9 @@
 	ld [hli], a
 	ld a, [PlayerID + 1]
 	ld [hli], a
-	ld a, [wd84a]
+	ld a, [wSecretID]
 	ld [hli], a
-	ld a, [wd84b]
+	ld a, [wSecretID + 1]
 	ld [hli], a
 	ld e, l
 	ld d, h
@@ -24504,13 +24504,13 @@
 INCBIN "gfx/unknown/171848.2bpp"
 
 Function1719c8: ; 1719c8 (5c:59c8)
-	ld a, [$ffaa]
+	ld a, [hInMenu]
 	push af
 	ld a, $1
-	ld [$ffaa], a
+	ld [hInMenu], a
 	call Function1719d6
 	pop af
-	ld [$ffaa], a
+	ld [hInMenu], a
 	ret
 
 Function1719d6: ; 1719d6 (5c:59d6)
@@ -24801,7 +24801,7 @@
 	ld hl, MenuDataHeader_171c6b
 	call LoadMenuDataHeader
 	call Function1cbb
-	call Function1cfd
+	call GetMemTileCoord
 	callba Function104061
 	hlcoord 1, 14
 	ld de, String_171c73
--- a/misc/unused_title.asm
+++ b/misc/unused_title.asm
@@ -547,7 +547,7 @@
 	call _TitleScreen
 .loop
 	call Functiona57
-	ld a, [$ffa9]
+	ld a, [hJoyLast]
 	ld b, a
 	and 1
 	jr nz, .done
--- a/wram.asm
+++ b/wram.asm
@@ -145,8 +145,10 @@
 
 SECTION "Stack", WRAM0
 wc000::
+StackBottom::
 	ds $ff
 Stack::
+StackTop::
 	ds 1
 
 
@@ -1224,8 +1226,11 @@
 wcf77:: ds 1
 wcf78:: ds 9
 wcf81:: ds 1
+
+; dw related to tilemap
 wcf82:: ds 1
 wcf83:: ds 1
+
 wcf84:: ds 1
 wcf85:: ds 1
 wcf86:: ds 1
@@ -1342,7 +1347,7 @@
 wcfd4:: ds 1
 wcfd5:: ds 1
 wcfd6:: ds 1
-wcfd7:: ds 1
+wcfd7:: ds 1 ; related to time
 
 	ds 40
 
@@ -1349,31 +1354,39 @@
 
 SECTION "WRAM 1", WRAMX, BANK [1]
 
+MiscBuffer0::
 wd000:: ds 1
+MiscBuffer1::
 wd001:: ds 1
 wd002::
+MiscBuffer2::
 PhoneScriptBank::
 DefaultFlypoint:: ; d002
 LuckyNumberDigit1Buffer::
 	ds 1
 wd003::
+MiscBuffer3::
 LuckyNumberDigit2Buffer::
 PhoneCallerLo::
 	ds 1
 wd004::
+MiscBuffer4::
 LuckyNumberDigit3Buffer::
 PhoneCallerHi::
 	ds 1
 wd005::
+MiscBuffer5::
 LuckyNumberDigit4Buffer::
 StartFlypoint:: ; d005
 	ds 1
 wd006::
+MiscBuffer6::
 LuckyNumberDigit5Buffer::
 EndFlypoint:: ; d006
 	ds 1
 
 wd007::
+MiscBuffer7::
 MovementBuffer:: ; d007
 	ds 1
 
@@ -1447,6 +1460,7 @@
 wLossTextPointer:: ds 2
 wd04b:: ds 2
 wd04d:: ds 1
+MenuItemsListEnd::
 wd04e:: ds 2
 wd050:: ds 10
 wd05a:: ds 12
@@ -1521,6 +1535,7 @@
 CurItem:: ; d106
 	ds 1
 
+ItemCountBuffer:: ; d107
 wd107:: ds 1
 
 CurPartySpecies:: ; d108
@@ -1716,7 +1731,6 @@
 	flag_array PARTY_LENGTH
 
 wd1e9:: ds 1
-wd1ea::
 MagikarpLength::
 Buffer1:: ; d1ea
 	ds 1
@@ -1967,7 +1981,7 @@
 RedsName::   ds NAME_LENGTH ; d49e
 GreensName:: ds NAME_LENGTH ; d4a9
 
-wd4b4:: ds 1
+wSavedAtLeastOnce:: ds 1
 wSpawnAfterChampion:: ds 1
 
 ; init time set at newgame
@@ -2106,7 +2120,7 @@
 
 	ds 1
 
-wd84a:: ds 1
+wSecretID:: ds 1
 wd84b:: ds 1
 StatusFlags:: ; d84c
 	ds 1
@@ -2402,8 +2416,8 @@
 wdc33:: ds 2
 wdc35:: ds 4
 wdc39:: ds 1
-wdc3a:: ds 1
-wdc3b:: ds 5
+wdc3a:: ds 1 ; related to time
+wdc3b:: ds 5 ; related to time
 wdc40:: ds 1
 wdc41:: ds 1
 wdc42:: ds 8
@@ -2562,7 +2576,7 @@
 
 wdfcc:: ds 1
 wdfcd:: ds 1
-wdfce:: ds 1
+wFishingSwarmFlag:: ds 1
 
 roam_struct: MACRO
 \1Species::   db
@@ -2728,7 +2742,8 @@
 
 SECTION "WRAM 6", WRAMX, BANK [6]
 
-w6_d000:: ds $600
+w6_d000:: ds $400
+w6_d400:: ds $200
 w6_d600:: ds $600
 
 INCLUDE "sram.asm"
--