shithub: pokecrystal

Download patch

ref: 2ffcb4b49036b8bcd9a37cdc9305f7ee5567fe6c
parent: 91068077f05afbbfd6571ceadada2c03ac7c8038
author: PikalaxALT <PikalaxALT@gmail.com>
date: Wed Nov 11 18:38:57 EST 2015

More splits; map setup labels

--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -6,7 +6,7 @@
 ; 	FadeMusic
 ; 	PlayStereoSFX
 
-_SoundRestart:: ; e8000
+_MapSetup_Sound_Off:: ; e8000
 ; restart sound operation
 ; clear all relevant hardware registers & wram
 	push hl
@@ -63,7 +63,7 @@
 	push af
 	ld a, [MusicFadeIDLo]
 	push af
-	call _SoundRestart
+	call _MapSetup_Sound_Off
 	pop af
 	ld [MusicFadeIDLo], a
 	pop af
@@ -3161,7 +3161,7 @@
 
 ClearChannels:: ; e8fe9
 ; runs ClearChannel for all 4 channels
-; doesn't seem to be used, but functionally identical to SoundRestart
+; doesn't seem to be used, but functionally identical to MapSetup_Sound_Off
 	ld hl, rNR50
 	xor a
 rept 2
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -2527,7 +2527,7 @@
 	or [hl]
 	ret nz
 	call ClearTileMap
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 3d02b
 
@@ -2911,7 +2911,7 @@
 
 .enemy_fainted_mobile_error
 	call ClearSprites
-	call WhiteBGMap
+	call ClearBGPalettes
 	call _LoadHPBar
 	call ExitMenu
 	call LoadTileMapToTempTileMap
@@ -2995,7 +2995,7 @@
 ; 3d2f7
 
 Function3d2f7: ; 3d2f7
-	call WhiteBGMap
+	call ClearBGPalettes
 Function3d2fa: ; switch to fullscreen menu?
 	callba Function5004f
 	callba Function50405
@@ -3137,7 +3137,7 @@
 	callba BattleTowerText
 	call WaitPressAorB_BlinkCursor
 	call ClearTileMap
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 
 .not_canlose
@@ -5290,7 +5290,7 @@
 	ld a, [wItemAttributeParamBuffer]
 	cp $3
 	jr z, .asm_3e24a
-	call WhiteBGMap
+	call ClearBGPalettes
 
 .asm_3e24a
 	xor a
@@ -5332,7 +5332,7 @@
 Function3e290:
 	call ExitMenu
 	call LoadStandardMenuDataHeader
-	call WhiteBGMap
+	call ClearBGPalettes
 Function3e299:
 	call Function3d2fa
 	xor a
@@ -8816,7 +8816,7 @@
 	bit 0, a
 	ret z
 	call ClearTileMap
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 3f759
 
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -540,7 +540,7 @@
 	const OBJECT_SPRITE_Y
 	const OBJECT_SPRITE_X_OFFSET
 	const OBJECT_SPRITE_Y_OFFSET
-	const OBJECT_27
+	const OBJECT_MOVEMENT_BYTE_INDEX
 	const OBJECT_28
 	const OBJECT_29
 	const OBJECT_30
--- a/constants/map_setup_constants.asm
+++ b/constants/map_setup_constants.asm
@@ -1,16 +1,16 @@
 const_value SET $f1
 	const MAPSETUP_WARP
-	const MAPSETUP_02
+	const MAPSETUP_CONTINUE
 	const MAPSETUP_RELOADMAP
-	const MAPSETUP_04
-	const MAPSETUP_05
-	const MAPSETUP_06
-	const MAPSETUP_07
-	const MAPSETUP_08
-	const MAPSETUP_09
-	const MAPSETUP_10
+	const MAPSETUP_TELEPORT
+	const MAPSETUP_DOOR
+	const MAPSETUP_FALL
+	const MAPSETUP_CONNECTION
+	const MAPSETUP_LINKRETURN
+	const MAPSETUP_TRAIN
+	const MAPSETUP_SUBMENU
 	const MAPSETUP_BADWARP
-	const MAPSETUP_12
+	const MAPSETUP_FLY
 
 ; Command descriptions from Condensation water's scripting compendium.	const_def
 	const_def
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -42,10 +42,10 @@
 	const PLAYEREVENT_SEENBYTRAINER
 	const PLAYEREVENT_TALKTOTRAINER
 	const PLAYEREVENT_ITEMBALL
-	const PLAYEREVENT_4
+	const PLAYEREVENT_CONNECTION
 	const PLAYEREVENT_WARP
 	const PLAYEREVENT_FALL
 	const PLAYEREVENT_WHITEOUT
 	const PLAYEREVENT_HATCH
-	const PLAYEREVENT_9
+	const PLAYEREVENT_JOYCHANGEFACING
 NUM_PLAYER_EVENTS EQU const_value
--- /dev/null
+++ b/engine/billspc.asm
@@ -1,0 +1,2667 @@
+_DepositPKMN: ; e2391 (38:6391)
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	xor a
+	ld [hMapAnims], a
+	call Functione2963
+	xor a
+	ld [wcb2e], a
+	call DelayFrame
+.asm_e23b4
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e23c6
+	call Functione23d5
+	call DelayFrame
+	jr .asm_e23b4
+.asm_e23c6
+	call ClearSprites
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+
+Functione23d5: ; e23d5 (38:63d5)
+	ld a, [wJumptableIndex]
+	ld hl, Jumptable_e23df
+	call Functione33df
+	jp [hl]
+
+Jumptable_e23df: ; e23df (38:63df)
+	dw Functione23e9
+	dw Functione241a
+	dw Functione245d
+	dw Functione247d
+	dw Functione2992
+
+
+Functione23e9: ; e23e9 (38:63e9)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2d30
+	call Functione2a8e
+	ld de, PCString_ChooseaPKMN
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $ff
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	call WaitBGMap
+	call Functione2e01
+	call Functione298d
+	ret
+
+Functione241a: ; e241a (38:641a)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e2457
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e2443
+	call Functione29b5
+	and a
+	ret z
+	call Functione2e01
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+.asm_e2443
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	jr z, .asm_e2457
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+; e2452 (38:6452)
+
+.asm_e2452
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e2457
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+
+Functione245d: ; e245d (38:645d)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ld a, $1
+	ld [MenuSelection2], a
+	call Functione298d
+	ret
+
+Functione247d: ; e247d (38:647d)
+	ld hl, BillsPCDepositMenuDataHeader
+	call CopyMenuDataHeader
+	ld a, [MenuSelection2]
+	call Function1d4b
+	call InterpretMenu2
+	jp c, BillsPCDepositFuncCancel
+	ld a, [MenuSelection2]
+	dec a
+	and $3
+	ld e, a
+	ld d, 0
+	ld hl, BillsPCDepositJumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+BillsPCDepositJumptable: ; e24a1 (38:64a1)
+	dw BillsPCDepositFuncDeposit ; Deposit Pokemon
+	dw BillsPCDepositFuncStats ; Pokemon Stats
+	dw BillsPCDepositFuncRelease ; Release Pokemon
+	dw BillsPCDepositFuncCancel ; Cancel
+
+
+BillsPCDepositFuncDeposit: ; e24a9 (38:64a9)
+	call Functione2f18
+	jp c, BillsPCDepositFuncCancel
+	call Functione307c
+	jr c, .no_overflow_31
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ret
+.no_overflow_31
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ret
+
+BillsPCDepositFuncStats: ; e24c8 (38:64c8)
+	call LoadStandardMenuDataHeader
+	call Functione2f7e
+	call ExitMenu
+	call PCMonInfo
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ret
+
+BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
+	call Functione2f18
+	jr c, BillsPCDepositFuncCancel
+	call Functione2f5f
+	jr c, BillsPCDepositFuncCancel
+	ld a, [MenuSelection2]
+	push af
+	ld de, PCString_ReleasePKMN
+	call Functione2a6e
+	call LoadStandardMenuDataHeader
+	lb bc, 14, 11
+	call PlaceYesNoBox
+	ld a, [MenuSelection2]
+	dec a
+	call ExitMenu
+	and a
+	jr nz, .asm_e252c
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	call Functione3180
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	pop af
+	ret
+.asm_e252c
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	pop af
+	ld [MenuSelection2], a
+	ret
+
+BillsPCDepositFuncCancel: ; e2537 (38:6537)
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e253d (38:653d)
+
+BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d)
+	db $40 ; flags
+	db 04, 09 ; start coords
+	db 13, 19 ; end coords
+	dw BillsPCDepositMenuData
+	db 1 ; default option
+; 0xe2545
+
+BillsPCDepositMenuData: ; 0xe2545 (38:6545)
+	db $80 ; flags
+	db 4 ; items
+	db "DEPOSIT@"
+	db "STATS@"
+	db "RELEASE@"
+	db "CANCEL@"
+; 0xe2564 (38:6564)
+
+Functione2564: ; e2564
+	hlcoord 0, 0
+	ld b, $4
+	ld c, $8
+	call ClearBox
+	hlcoord 0, 4
+	ld b, $a
+	ld c, $9
+	call ClearBox
+	hlcoord 0, 14
+	ld b, $2
+	ld c, $8
+	call ClearBox
+	ret
+; e2583
+
+_WithdrawPKMN: ; e2583 (38:6583)
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	xor a
+	ld [hMapAnims], a
+	call Functione2963
+	ld a, $f
+	ld [wcb2e], a
+	call DelayFrame
+.asm_e25a7
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .no_overflow_49
+	call Functione25c8
+	call DelayFrame
+	jr .asm_e25a7
+.no_overflow_49
+	call ClearSprites
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+
+Functione25c8: ; e25c8 (38:65c8)
+	ld a, [wJumptableIndex]
+	ld hl, .jumptable
+	call Functione33df
+	jp [hl]
+
+.jumptable: ; e25d2 (38:65d2)
+	dw Functione25dc
+	dw Functione2612
+	dw Functione2655
+	dw BillsPC_Withdraw
+	dw Functione2992
+
+
+Functione25dc: ; e25dc (38:65dc)
+	ld a, $f
+	ld [wcb2e], a
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2d30
+	call Functione2a8e
+	ld de, PCString_ChooseaPKMN
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $ff
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	call WaitBGMap
+	call Functione2e01
+	call Functione298d
+	ret
+
+Functione2612: ; e2612 (38:6612)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e264f
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e263b
+	call Functione29b5
+	and a
+	ret z
+	call Functione2e01
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+.asm_e263b
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	jr z, .asm_e264f
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+; e264a (38:664a)
+
+.asm_e264a
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e264f
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; e2655
+
+Functione2655: ; e2655 (38:6655)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ld a, $1
+	ld [MenuSelection2], a
+	call Functione298d
+	ret
+
+BillsPC_Withdraw: ; e2675 (38:6675)
+	ld hl, .MenuDataHeader
+	call CopyMenuDataHeader
+	ld a, [MenuSelection2]
+	call Function1d4b
+	call InterpretMenu2
+	jp c, .cancel
+	ld a, [MenuSelection2]
+	dec a
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.jumptable: ; e2699 (38:6699) #mark
+	dw .withdraw ; Withdraw
+	dw .stats ; Stats
+	dw .release ; Release
+	dw .cancel ; Cancel
+
+
+.withdraw: ; e26a1 (38:66a1)
+	call Functione2f18
+	jp c, .cancel
+	call TryWithdrawPokemon
+	jr c, .FailedWithdraw
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ret
+.FailedWithdraw
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ret
+
+.stats: ; e26c0 (38:66c0)
+	call LoadStandardMenuDataHeader
+	call Functione2f7e
+	call ExitMenu
+	call PCMonInfo
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ret
+
+.release: ; e26d8 (38:66d8)
+	ld a, [MenuSelection2]
+	push af
+	call Functione2f5f
+	jr c, .FailedRelease
+	ld de, PCString_ReleasePKMN
+	call Functione2a6e
+	call LoadStandardMenuDataHeader
+	lb bc, 14, 11
+	call PlaceYesNoBox
+	ld a, [MenuSelection2]
+	dec a
+	call ExitMenu
+	and a
+	jr nz, .FailedRelease
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	call Functione3180
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	pop af
+	ret
+.FailedRelease
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	pop af
+	ld [MenuSelection2], a
+	ret
+
+.cancel: ; e272b (38:672b)
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e2731 (38:6731)
+
+.MenuDataHeader: ; 0xe2731
+	db $40 ; flags
+	db 04, 09 ; start coords
+	db 13, 19 ; end coords
+	dw .MenuData
+	db 1 ; default option
+; 0xe2739
+
+.MenuData: ; 0xe2739
+	db $80 ; flags
+	db 4 ; items
+	db "WITHDRAW@"
+	db "STATS@"
+	db "RELEASE@"
+	db "CANCEL@"
+; 0xe2759
+
+_MovePKMNWithoutMail: ; e2759
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	xor a
+	ld [hMapAnims], a
+	call Functione2963
+	ld a, [wCurBox]
+	and $f
+	inc a
+	ld [wcb2e], a
+	call DelayFrame
+.asm_e2781
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e2793
+	call Functione27a2
+	call DelayFrame
+	jr .asm_e2781
+
+.asm_e2793
+	call ClearSprites
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+; e27a2
+
+Functione27a2: ; e27a2
+	ld a, [wJumptableIndex]
+	ld hl, Jumptable_e27ac
+	call Functione33df
+	jp [hl]
+; e27ac
+
+Jumptable_e27ac: ; e27ac
+	dw Functione27ba
+	dw Functione27eb
+	dw Functione283d
+	dw Functione285d
+	dw Functione28df
+	dw Functione2903
+	dw Functione2992
+; e27ba
+
+Functione27ba: ; e27ba
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2d30
+	ld de, PCString_ChooseaPKMN
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call Functione2a80
+	call PCMonInfo
+	ld a, $ff
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	call WaitBGMap
+	call Functione2e01
+	call Functione298d
+	ret
+; e27eb
+
+Functione27eb: ; e27eb
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e2837
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e2823
+	call Functione29d0
+	jr c, .asm_e2816
+	and a
+	ret z
+	call Functione2e01
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+
+.asm_e2816
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e2823
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	jr z, .asm_e2837
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e2837
+	ld a, $6
+	ld [wJumptableIndex], a
+	ret
+; e283d
+
+Functione283d: ; e283d
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ld a, $1
+	ld [MenuSelection2], a
+	call Functione298d
+	ret
+; e285d
+
+Functione285d: ; e285d
+	ld hl, MenuDataHeader_0xe28c3
+	call CopyMenuDataHeader
+	ld a, [MenuSelection2]
+	call Function1d4b
+	call InterpretMenu2
+	jp c, Functione28bd
+	ld a, [MenuSelection2]
+	dec a
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_e2881
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e2881
+
+Jumptable_e2881: ; e2881
+	dw Functione2887
+	dw Functione28a5
+	dw Functione28bd
+; e2887
+
+Functione2887: ; e2887
+	call Functione2f18
+	jp c, Functione28bd
+	ld a, [wcb2a]
+	ld [wcb2f], a
+	ld a, [wcb2b]
+	ld [wcb30], a
+	ld a, [wcb2e]
+	ld [wcb31], a
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; e28a5
+
+Functione28a5: ; e28a5
+	call LoadStandardMenuDataHeader
+	call Functione2f7e
+	call ExitMenu
+	call PCMonInfo
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ret
+; e28bd
+
+Functione28bd: ; e28bd
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e28c3
+
+MenuDataHeader_0xe28c3: ; 0xe28c3
+	db $40 ; flags
+	db 04, 09 ; start coords
+	db 13, 19 ; end coords
+	dw MenuData2_0xe28cb
+	db 1 ; default option
+; 0xe28cb
+
+MenuData2_0xe28cb: ; 0xe28cb
+	db $80 ; flags
+	db 3 ; items
+	db "MOVE@"
+	db "STATS@"
+	db "CANCEL@"
+; 0xe28df
+
+Functione28df: ; e28df
+	xor a
+	ld [hBGMapMode], a
+	call Functione2d30
+	ld de, PCString_MoveToWhere
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call Functione2a80
+	call ClearSprites
+	call Functione2e8c
+	call WaitBGMap
+	call Functione298d
+	ret
+; e2903
+
+Functione2903: ; e2903
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e294b
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e2938
+	call Functione29f4
+	jr c, .asm_e292b
+	and a
+	ret z
+	call Functione2e8c
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+
+.asm_e292b
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e2938
+	call Functione2ee5
+	jr c, .asm_e2946
+	call Functione31e7
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e2946
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e294b
+	ld a, [wcb2f]
+	ld [wcb2a], a
+	ld a, [wcb30]
+	ld [wcb2b], a
+	ld a, [wcb31]
+	ld [wcb2e], a
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e2963
+
+Functione2963: ; e2963 (38:6963)
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearTileMap
+	call Functione33e8
+	ld hl, OverworldMap
+	ld bc, $338
+	xor a
+	call ByteFill
+	xor a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ret
+
+Functione298d: ; e298d (38:698d)
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+Functione2992: ; e2992 (38:6992)
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Functione2998: ; e2998 (38:6998)
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	and a
+	jr z, .asm_e29b2
+	dec a
+	cp $1
+	jr z, .asm_e29b2
+	ld e, a
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+.asm_e29b2
+	jp Functione2a65
+
+Functione29b5: ; e29b5 (38:69b5)
+	ld hl, hJoyLast
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	ld e, a
+	and a
+	jr z, .asm_e29cd
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+.asm_e29cd
+	jp Functione2a65
+; e29d0 (38:69d0)
+
+Functione29d0: ; e29d0
+	ld hl, hJoyLast
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	ld e, a
+	and a
+	jr z, .asm_e29e8
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+
+.asm_e29e8
+	ld a, [hl]
+	and D_LEFT
+	jr nz, Functione2a48
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, Functione2a56
+	jr Functione2a65
+
+Functione29f4: ; e29f4
+	ld hl, hJoyLast
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	ld e, a
+	and a
+	jr z, .asm_e2a0c
+
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+
+.asm_e2a0c
+	ld a, [hl]
+	and D_LEFT
+	jr nz, Functione2a48
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, Functione2a56
+	jr Functione2a65
+
+Functione2a18: ; e2a18 (38:6a18)
+	ld hl, wcb2b
+	ld a, [hl]
+	and a
+	jr z, .asm_e2a22
+	dec [hl]
+	jr Functione2a68
+
+.asm_e2a22
+	ld hl, wcb2a
+	ld a, [hl]
+	and a
+	jr z, Functione2a65
+	dec [hl]
+	jr Functione2a68
+
+Functione2a2c: ; e2a2c (38:6a2c)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	inc a
+	cp e
+	jr nc, Functione2a65
+
+	ld hl, wcb2b
+	ld a, [hl]
+	inc a
+	cp d
+	jr nc, .asm_e2a42
+	inc [hl]
+	jr Functione2a68
+
+.asm_e2a42
+	ld hl, wcb2a
+	inc [hl]
+	jr Functione2a68
+; e2a48 (38:6a48)
+
+Functione2a48: ; e2a48
+	ld hl, wcb2e
+	ld a, [hl]
+	and a
+	jr z, .asm_e2a52
+	dec [hl]
+	jr Functione2a6c
+
+.asm_e2a52
+	ld [hl], $e
+	jr Functione2a6c
+
+Functione2a56: ; e2a56
+	ld hl, wcb2e
+	ld a, [hl]
+	cp $e
+	jr z, .asm_e2a61
+	inc [hl]
+	jr Functione2a6c
+
+.asm_e2a61
+	ld [hl], $0
+	jr Functione2a6c
+
+Functione2a65: ; e2a65 (38:6a65)
+	xor a
+	and a
+	ret
+
+Functione2a68: ; e2a68 (38:6a68)
+	ld a, $1
+	and a
+	ret
+; e2a6c (38:6a6c)
+
+Functione2a6c: ; e2a6c
+	scf
+	ret
+; e2a6e
+
+Functione2a6e: ; e2a6e (38:6a6e)
+	push de
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	pop de
+	hlcoord 1, 16
+	call PlaceString
+	ret
+; e2a80 (38:6a80)
+
+Functione2a80: ; e2a80
+	call Functione2a8e
+	hlcoord 8, 1
+	ld [hl], $5f
+	hlcoord 19, 1
+	ld [hl], $5e
+	ret
+; e2a8e
+
+Functione2a8e: ; e2a8e (38:6a8e)
+	hlcoord 8, 0
+	lb bc, 1, 10
+	call TextBox
+
+	ld a, [wcb2e]
+	and a
+	jr z, .party
+
+	cp NUM_BOXES + 1
+	jr nz, .gotbox
+
+	ld a, [wCurBox]
+	inc a
+.gotbox
+	dec a
+	ld hl, wBoxNames
+	ld bc, BOX_NAME_LENGTH
+	call AddNTimes
+	ld e, l
+	ld d, h
+	jr .print
+
+.party
+	ld de, String_e2abd
+.print
+	hlcoord 10, 1
+	call PlaceString
+	ret
+; e2abd (38:6abd)
+
+String_e2abd:
+	db "PARTY <PK><MN>@"
+; e2ac6
+
+PCMonInfo: ; e2ac6 (38:6ac6)
+; Display a monster's pic and
+; attributes when highlighting
+; it in a PC menu.
+
+; Includes the neat cascading
+; effect when showing the pic.
+
+; Example: Species, level, gender,
+; whether it's holding an item.
+
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	ret z
+
+	ld [wd265], a
+	hlcoord 1, 4
+	xor a
+	ld b, 7
+.asm_e2ae9
+	ld c, 7
+	push af
+	push hl
+.asm_e2aed
+	ld [hli], a
+	add 7
+	dec c
+	jr nz, .asm_e2aed
+	pop hl
+	ld de, 20
+	add hl, de
+	pop af
+	inc a
+	dec b
+	jr nz, .asm_e2ae9
+
+	call Functione2b6d
+	ld a, [wd265]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	ld hl, TempMonDVs
+	predef GetUnownLetter
+	call GetBaseData
+	ld de, VTiles2 tile $00
+	predef GetFrontpic
+	xor a
+	ld [wcb32], a
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+
+	cp EGG
+	ret z
+
+	call GetBasePokemonName
+	hlcoord 1, 14
+	call PlaceString
+
+	hlcoord 1, 12
+	call PrintLevel
+
+	ld a, $3
+	ld [MonType], a
+	callba GetGender
+	jr c, .asm_e2b4f
+	ld a, "♂"
+	jr nz, .printgender
+	ld a, "♀"
+.printgender
+	hlcoord 5, 12
+	ld [hl], a
+.asm_e2b4f
+
+	ld a, [TempMonItem]
+	and a
+	ret z
+
+	ld d, a
+	callab ItemIsMail
+	jr c, .mail
+	ld a, $5d ; item icon
+	jr .printitem
+.mail
+	ld a, $1
+	ld [wcb32], a
+	ld a, $5c ; mail icon
+.printitem
+	hlcoord 7, 12
+	ld [hl], a
+	ret
+
+Functione2b6d: ; e2b6d (38:6b6d)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld e, a
+	ld d, $0
+	ld hl, wc801
+rept 3
+	add hl, de
+endr
+	ld a, [hl]
+	and a
+	jr z, .asm_e2bc6
+	cp $f
+	jr z, .asm_e2bf5
+	ld b, a
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	push hl
+	ld bc, $35
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonLevel], a
+	pop hl
+	push hl
+	ld bc, $17
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonItem], a
+	pop hl
+	ld bc, $2b
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld de, TempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	call CloseSRAM
+	ret
+.asm_e2bc6
+	ld hl, PartyMon1Level
+	ld bc, $30
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonLevel], a
+	ld hl, PartyMon1Item
+	ld bc, $30
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonItem], a
+	ld hl, PartyMon1DVs
+	ld bc, $30
+	ld a, e
+	call AddNTimes
+	ld de, TempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ret
+
+.asm_e2bf5
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxMon1Level
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonLevel], a
+
+	ld hl, sBoxMon1Item
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonItem], a
+
+	ld hl, sBoxMon1DVs
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld de, TempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+
+	call CloseSRAM
+	ret
+
+Functione2c2c: ; e2c2c (38:6c2c)
+	hlcoord 8, 2
+	lb bc, 10, 10
+	call TextBox
+
+	hlcoord 8, 2
+	ld [hl], "└"
+	hlcoord 19, 2
+	ld [hl], "┘"
+
+	ld a, [wcb2a]
+	ld e, a
+	ld d, 0
+	ld hl, OverworldMap
+rept 3
+	add hl, de
+endr
+	ld e, l
+	ld d, h
+	hlcoord 9, 4
+	ld a, [wcb2d]
+.asm_e2c53
+	push af
+	push de
+	push hl
+	call Functione2c6e
+	pop hl
+	ld de, $28
+	add hl, de
+	pop de
+rept 3
+	inc de
+endr
+	pop af
+	dec a
+	jr nz, .asm_e2c53
+	ret
+; e2c67 (38:6c67)
+
+String_e2c67:
+	db "CANCEL@"
+; e2c6e
+
+Functione2c6e: ; e2c6e (38:6c6e)
+	ld a, [de]
+	and a
+	ret z
+	cp $ff
+	jr nz, .asm_e2c7c
+	ld de, String_e2c67
+	call PlaceString
+	ret
+.asm_e2c7c
+	inc de
+	ld a, [de]
+	ld b, a
+	inc de
+	ld a, [de]
+	ld e, a
+	ld a, b
+	and a
+	jr z, .asm_e2cc8
+	cp $f
+	jr z, .asm_e2cf1
+	push hl
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	push hl
+	ld bc, $16
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	pop hl
+	and a
+	jr z, .asm_e2cc2
+	ld bc, $372
+	add hl, bc
+	ld bc, $b
+	ld a, e
+	call AddNTimes
+	ld de, StringBuffer1
+	ld bc, $b
+	call CopyBytes
+	call CloseSRAM
+	pop hl
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+.asm_e2cc2
+	call CloseSRAM
+	pop hl
+	jr .asm_e2d23
+.asm_e2cc8
+	push hl
+	ld hl, PartySpecies
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_e2cee
+	ld hl, PartyMonNicknames
+	ld bc, $b
+	ld a, e
+	call AddNTimes
+	ld de, StringBuffer1
+	ld bc, $b
+	call CopyBytes
+	pop hl
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+.asm_e2cee
+	pop hl
+	jr .asm_e2d23
+.asm_e2cf1
+	push hl
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_e2d1f
+	ld hl, sBoxMonNicknames
+	ld bc, PKMN_NAME_LENGTH
+	ld a, e
+	call AddNTimes
+	ld de, StringBuffer1
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	call CloseSRAM
+	pop hl
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+.asm_e2d1f
+	call CloseSRAM
+	pop hl
+.asm_e2d23
+	ld de, String_e2d2a
+	call PlaceString
+	ret
+; e2d2a (38:6d2a)
+
+String_e2d2a:
+	db "-----@"
+; e2d30
+
+Functione2d30: ; e2d30 (38:6d30)
+	xor a
+	ld hl, OverworldMap
+	ld bc, $5a
+	call ByteFill
+	ld de, OverworldMap
+	xor a
+	ld [wd003], a
+	ld [wd004], a
+	ld a, [wcb2e]
+	and a
+	jr z, .asm_e2d87
+	cp $f
+	jr z, .asm_e2db7
+	ld b, a
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	inc hl
+.asm_e2d57
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_e2d79
+	and a
+	jr z, .asm_e2d79
+	ld [de], a
+	inc de
+	ld a, [wcb2e]
+	ld [de], a
+	inc de
+	ld a, [wd003]
+	ld [de], a
+	inc a
+	ld [wd003], a
+	inc de
+	inc hl
+	ld a, [wd004]
+	inc a
+	ld [wd004], a
+	jr .asm_e2d57
+.asm_e2d79
+	call CloseSRAM
+	ld a, $ff
+	ld [de], a
+	ld a, [wd004]
+	inc a
+	ld [wcb2c], a
+	ret
+.asm_e2d87
+	ld hl, PartySpecies
+.asm_e2d8a
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_e2dac
+	and a
+	jr z, .asm_e2dac
+	ld [de], a
+	inc de
+	ld a, [wcb2e]
+	ld [de], a
+	inc de
+	ld a, [wd003]
+	ld [de], a
+	inc a
+	ld [wd003], a
+	inc de
+	inc hl
+	ld a, [wd004]
+	inc a
+	ld [wd004], a
+	jr .asm_e2d8a
+.asm_e2dac
+	ld a, $ff
+	ld [de], a
+	ld a, [wd004]
+	inc a
+	ld [wcb2c], a
+	ret
+.asm_e2db7
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+.asm_e2dbf
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_e2de1
+	and a
+	jr z, .asm_e2de1
+	ld [de], a
+	inc de
+	ld a, [wcb2e]
+	ld [de], a
+	inc de
+	ld a, [wd003]
+	ld [de], a
+	inc a
+	ld [wd003], a
+	inc de
+	inc hl
+	ld a, [wd004]
+	inc a
+	ld [wd004], a
+	jr .asm_e2dbf
+.asm_e2de1
+	call CloseSRAM
+	ld a, $ff
+	ld [de], a
+	ld a, [wd004]
+	inc a
+	ld [wcb2c], a
+	ret
+
+Functione2def: ; e2def (38:6def)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld e, a
+	ld d, $0
+	ld hl, OverworldMap
+rept 3
+	add hl, de
+endr
+	ld a, [hl]
+	ret
+
+Functione2e01: ; e2e01 (38:6e01)
+	ld a, [wcb2c]
+	and a
+	jr nz, .asm_e2e0b
+	call ClearSprites
+	ret
+.asm_e2e0b
+	ld hl, Unknown_e2e2b
+	ld de, Sprites
+.done1
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld a, [wcb2b]
+	and $7
+	swap a
+	add [hl]
+	inc hl
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .done1
+; e2e2b (38:6e2b)
+
+Unknown_e2e2b: ; e2e2b
+	db $26, $50, $00, $00
+	db $26, $58, $00, $00
+	db $26, $60, $00, $00
+	db $26, $68, $00, $00
+	db $26, $70, $00, $00
+	db $26, $78, $00, $00
+	db $26, $80, $00, $00
+	db $26, $88, $00, $00
+	db $26, $90, $00, $00
+	db $26, $97, $00, $00
+	db $39, $50, $00, $40
+	db $39, $58, $00, $40
+	db $39, $60, $00, $40
+	db $39, $68, $00, $40
+	db $39, $70, $00, $40
+	db $39, $78, $00, $40
+	db $39, $80, $00, $40
+	db $39, $88, $00, $40
+	db $39, $90, $00, $40
+	db $39, $97, $00, $40
+	db $2e, $4e, $01, $00
+	db $31, $4e, $01, $40
+	db $2e, $99, $01, $20
+	db $31, $99, $01, $60
+	db $ff
+; e2e8c
+
+Functione2e8c: ; e2e8c
+	ld hl, Unknown_e2eac
+	ld de, Sprites
+.asm_e2e92
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld a, [wcb2b]
+	and $7
+	swap a
+	add [hl]
+	inc hl
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .asm_e2e92
+; e2eac
+
+Unknown_e2eac: ; e2eac
+	db $27, $50, $06, $00
+	db $2b, $58, $00, $40
+	db $2b, $60, $00, $40
+	db $2b, $68, $00, $40
+	db $2b, $70, $00, $40
+	db $2b, $78, $00, $40
+	db $2b, $80, $00, $40
+	db $2b, $88, $00, $40
+	db $2b, $90, $00, $40
+	db $27, $98, $07, $00
+	db $ff
+; e2ed5
+
+Functione2ed5: ; e2ed5
+.asm_e2ed5
+	push bc
+	push hl
+.asm_e2ed7
+	ld [hli], a
+	dec c
+	jr nz, .asm_e2ed7
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_e2ed5
+	ret
+; e2ee5
+
+Functione2ee5: ; e2ee5
+	ld hl, wcb2e
+	ld a, [wcb31]
+	cp [hl]
+	jr z, .asm_e2f00
+	ld a, [wcb2e]
+	and a
+	jr z, .asm_e2ef8
+	ld e, $15
+	jr .asm_e2efa
+
+.asm_e2ef8
+	ld e, $7
+
+.asm_e2efa
+	ld a, [wcb2c]
+	cp e
+	jr nc, .asm_e2f02
+
+.asm_e2f00
+	and a
+	ret
+
+.asm_e2f02
+	ld de, PCString_TheresNoRoom
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+; e2f18
+
+Functione2f18: ; e2f18 (38:6f18)
+	ld a, [wcb2e]
+	and a
+	jr nz, .Okay
+	ld a, [wcb2c]
+	cp $3
+	jr c, .ItsYourLastPokemon
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	callba CheckCurPartyMonFainted
+	jr c, .AllOthersFainted
+	ld a, [wcb32]
+	and a
+	jr nz, .HasMail
+.Okay
+	and a
+	ret
+.HasMail
+	ld de, PCString_RemoveMail
+	jr .NotOkay
+.AllOthersFainted
+	ld de, PCString_NoMoreUsablePKMN
+	jr .NotOkay
+.ItsYourLastPokemon
+	ld de, PCString_ItsYourLastPKMN
+.NotOkay
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+Functione2f5f: ; e2f5f (38:6f5f)
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .asm_e2f68
+	and a
+	ret
+.asm_e2f68
+	ld de, PCString_NoReleasingEGGS
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+Functione2f7e: ; e2f7e (38:6f7e)
+	call LowVolume
+	call Functione2fd6
+	ld a, $3
+	ld [MonType], a
+	predef StatsScreenInit
+	call Functione33e8
+	call MaxVolume
+	ret
+
+Functione2f95: ; e2f95 (38:6f95)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT
+	ld [wcf73], a
+	jr nz, .pressed_a_b_right_left
+	ld a, [hl]
+	and D_DOWN | D_UP
+	ld [wcf73], a
+	jr nz, .pressed_down_up
+	jr .pressed_a_b_right_left
+
+.pressed_down_up
+	call Functione2998
+	and a
+	jr z, .asm_e2fd1
+	call Functione2def
+	ld [wd265], a
+	call Functione2b6d
+	ld a, [wd265]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	ld hl, TempMonDVs
+	predef GetUnownLetter
+	call GetBaseData
+	call Functione2fd6
+.pressed_a_b_right_left
+	ret
+
+.asm_e2fd1
+	xor a
+	ld [wcf73], a
+	ret
+
+Functione2fd6: ; e2fd6 (38:6fd6)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, [wcb2e]
+	and a
+	jr z, .asm_e3020
+	cp $f
+	jr nz, .asm_e3048
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+	call Functione3357
+	ld hl, sBoxMonNicknames
+	call Functione3363
+	ld hl, sBoxMonOT
+	call Functione3376
+	ld hl, sBoxMons
+	ld bc, BOXMON_STRUCT_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd018_Mon
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	call CloseSRAM
+	callba Function5088b
+	ret
+
+.asm_e3020
+	ld hl, PartySpecies
+	call Functione3357
+	ld hl, PartyMonNicknames
+	call Functione3363
+	ld hl, PartyMonOT
+	call Functione3376
+	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd018_Mon
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	ret
+
+.asm_e3048
+	ld b, a
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	push hl
+	inc hl
+	call Functione3357
+	pop hl
+	push hl
+	ld bc, $372
+	add hl, bc
+	call Functione3363
+	pop hl
+	push hl
+	ld bc, $296
+	add hl, bc
+	call Functione3376
+	pop hl
+	ld bc, $16
+	add hl, bc
+	ld bc, $20
+	call Functione3389
+	call CloseSRAM
+	callba Function5088b
+	ret
+
+Functione307c: ; e307c (38:707c)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld hl, PartyMonNicknames
+	ld a, [CurPartyMon]
+	call GetNick
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	predef SentGetPkmnIntoFromBox
+	jr c, .asm_boxisfull
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ld a, [CurPartySpecies]
+	call PlayCry
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	call WaitBGMap
+	hlcoord 1, 16
+	ld de, PCString_Stored
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld de, StringBuffer1
+	call PlaceString
+	ld a, "!"
+	ld [bc], a
+	ld c, 50
+	call DelayFrames
+	and a
+	ret
+
+.asm_boxisfull
+	ld de, PCString_BoxFull
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+TryWithdrawPokemon: ; e30fa (38:70fa)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, BANK(sBoxMonNicknames)
+	call GetSRAMBank
+	ld a, [CurPartyMon]
+	ld hl, sBoxMonNicknames
+	call GetNick
+	call CloseSRAM
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	predef SentGetPkmnIntoFromBox
+	jr c, .PartyFull
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ld a, [CurPartySpecies]
+	call PlayCry
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	call WaitBGMap
+	hlcoord 1, 16
+	ld de, PCString_Got
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld de, StringBuffer1
+	call PlaceString
+	ld a, $e7
+	ld [bc], a
+	ld c, 50
+	call DelayFrames
+	and a
+	ret
+
+.PartyFull
+	ld de, PCString_PartyFull
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+
+Functione3180: ; e3180 (38:7180)
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+
+	call WaitBGMap
+	ld a, [CurPartySpecies]
+	call GetCryIndex
+	jr c, .asm_e31ab
+	ld e, c
+	ld d, b
+	call PlayCryHeader
+.asm_e31ab
+
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	call GetPokemonName
+	hlcoord 1, 16
+	ld de, PCString_ReleasedPKMN
+	call PlaceString
+	ld c, 80
+	call DelayFrames
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	hlcoord 1, 16
+	ld de, PCString_Bye
+	call PlaceString
+	ld l, c
+	ld h, b
+	inc hl
+	ld de, StringBuffer1
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld [hl], $e7
+	ld c, 50
+	call DelayFrames
+	ret
+; e31e7 (38:71e7)
+
+Functione31e7: ; e31e7
+	push hl
+	push de
+	push bc
+	push af
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	hlcoord 1, 16
+	ld de, String_e3233
+	call PlaceString
+	ld c, 20
+	call DelayFrames
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ld a, [wCurBox]
+	push af
+	ld bc, 0
+	ld a, [wcb31]
+	and a
+	jr nz, .asm_e3215
+	set 0, c
+
+.asm_e3215
+	ld a, [wcb2e]
+	and a
+	jr nz, .asm_e321d
+	set 1, c
+
+.asm_e321d
+	ld hl, Jumptable_e3245
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, Functione322a
+	push de
+	jp [hl]
+; e322a
+
+Functione322a: ; e322a
+	pop af
+	ld e, a
+	callba Function14ad5
+	ret
+; e3233
+
+String_e3233:
+	db "Saving… Leave ON!@"
+; e3245
+
+Jumptable_e3245: ; e3245
+	dw Functione324d
+	dw Functione3267
+	dw Functione327d
+	dw Functione3284
+; e324d
+
+Functione324d: ; e324d
+	ld hl, wcb31
+	ld a, [wcb2e]
+	cp [hl]
+	jr z, .asm_e325d
+	call Functione32b0
+	call Functione32fa
+	ret
+
+.asm_e325d
+	call Functione32b0
+	call Functione328e
+	call Functione32fa
+	ret
+; e3267
+
+Functione3267: ; e3267
+	call Functione3316
+	ld a, $1
+	ld [wc2cd], a
+	callba SaveGameData
+	xor a
+	ld [wc2cd], a
+	call Functione32fa
+	ret
+; e327d
+
+Functione327d: ; e327d
+	call Functione32b0
+	call Functione3346
+	ret
+; e3284
+
+Functione3284: ; e3284
+	call Functione3316
+	call Functione328e
+	call Functione3346
+	ret
+; e328e
+
+Functione328e: ; e328e
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld e, a
+	ld a, [wcb30]
+	ld hl, wcb2f
+	add [hl]
+	cp e
+	ret nc
+	ld hl, wcb2b
+	ld a, [hl]
+	and a
+	jr z, .asm_e32a8
+	dec [hl]
+	ret
+
+.asm_e32a8
+	ld hl, wcb2a
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+; e32b0
+
+Functione32b0: ; e32b0
+	ld a, [wcb31]
+	dec a
+	ld e, a
+	callba Function14ac2
+	ld a, [wcb30]
+	ld hl, wcb2f
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, $1
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+	call Functione3357
+	ld hl, sBoxMonNicknames
+	call Functione3363
+	ld hl, sBoxMonOT
+	call Functione3376
+	ld hl, sBoxMons
+	ld bc, BOXMON_STRUCT_LENGTH
+	call Functione3389
+	call CloseSRAM
+	callba Function5088b
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ret
+; e32fa
+
+Functione32fa: ; e32fa
+	ld a, [wcb2e]
+	dec a
+	ld e, a
+	callba Function14ac2
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	callba Function51322
+	ret
+; e3316
+
+Functione3316: ; e3316
+	ld a, [wcb30]
+	ld hl, wcb2f
+	add [hl]
+	ld [CurPartyMon], a
+	ld hl, PartySpecies
+	call Functione3357
+	ld hl, PartyMonNicknames
+	call Functione3363
+	ld hl, PartyMonOT
+	call Functione3376
+	ld hl, PartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call Functione3389
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ret
+; e3346
+
+Functione3346: ; e3346
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	callba Function5138b
+	ret
+; e3357
+
+Functione3357: ; e3357 (38:7357)
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	ret
+
+Functione3363: ; e3363 (38:7363)
+	ld bc, $b
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd002
+	ld bc, $b
+	call CopyBytes
+	ret
+
+Functione3376: ; e3376 (38:7376)
+	ld bc, $b
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd00d
+	ld bc, $b
+	call CopyBytes
+	ret
+
+Functione3389: ; e3389 (38:7389)
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd018
+	call CopyBytes
+	ret
+
+Functione3396: ; e3396 (38:7396)
+	dec b
+	ld c, b
+	ld b, 0
+	ld hl, Unknown_e33a6
+rept 3
+	add hl, bc
+endr
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; e33a6 (38:73a6)
+
+Unknown_e33a6: ; e33a6
+	;  bank, address
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
+	dba sBox10
+	dba sBox11
+	dba sBox12
+	dba sBox13
+	dba sBox14
+; e33d0
+
+Functione33d0: ; e33d0 (38:73d0)
+	ld b, a
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $fc
+	call Functioncf8
+	ret
+
+Functione33df: ; e33df (38:73df)
+	ld e, a
+	ld d, $0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+Functione33e8: ; e33e8 (38:73e8)
+	call DisableLCD
+	ld hl, VTiles2 tile $00
+	ld bc, $310
+	xor a
+	call ByteFill
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	ld hl, PCMailGFX
+	ld de, VTiles2 tile $5c
+	ld bc, $40
+	call CopyBytes
+	ld hl, PCSelectLZ
+	ld de, VTiles0 tile $00
+	call Decompress
+	ld a, 6
+	call SkipMusic
+	call EnableLCD
+	ret
+; e3419 (38:7419)
+
+PCSelectLZ: INCBIN "gfx/pc.2bpp.lz"
+PCMailGFX:  INCBIN "gfx/pc_mail.2bpp"
+; e34dd
+
+PCString_ChooseaPKMN: db "Choose a <PK><MN>.@"
+PCString_WhatsUp: db "What's up?@"
+PCString_ReleasePKMN: db "Release <PK><MN>?@"
+PCString_MoveToWhere: db "Move to where?@"
+PCString_ItsYourLastPKMN: db "It's your last <PK><MN>!@"
+PCString_TheresNoRoom: db "There's no room!@"
+PCString_NoMoreUsablePKMN: db "No more usable <PK><MN>!@"
+PCString_RemoveMail: db "Remove MAIL.@"
+PCString_ReleasedPKMN: db "Released <PK><MN>.@"
+PCString_Bye: db "Bye,@"
+PCString_Stored: db "Stored @"
+PCString_Got: db "Got @"
+PCString_Non: db "Non.@"
+PCString_BoxFull: db "The BOX is full.@"
+PCString_PartyFull: db "The party's full!@"
+PCString_NoReleasingEGGS: db "No releasing EGGS!@"
+; e35aa
+
+
+_ChangeBox: ; e35aa (38:75aa)
+	call LoadStandardMenuDataHeader
+	call Functione35e2
+.loop
+	xor a
+	ld [hBGMapMode], a
+	call Functione36cf
+	call Functione379c
+	ld hl, _ChangeBox_menudataheader
+	call CopyMenuDataHeader
+	xor a
+	ld [wd0e4], a
+	hlcoord 0, 4
+	lb bc, 8, 9
+	call TextBox
+	call HandleScrollingMenu
+	ld a, [wcf73]
+	cp $2
+	jr z, .done
+	call Functione37af
+	call Functione36f9
+	jr .loop
+.done
+	call WriteBackup
+	ret
+
+Functione35e2: ; e35e2 (38:75e2)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, " "
+	call ByteFill
+	ret
+; e35f1 (38:75f1)
+
+_ChangeBox_menudataheader: ; 0xe35f1
+	db $40 ; flags
+	db 05, 01 ; start coords
+	db 12, 09 ; end coords
+	dw .menudata2
+	db 1 ; default option
+; 0xe35f9
+
+.menudata2: ; 0xe35f9
+	db $22 ; flags
+	db 4, 0
+	db 1
+	dba .boxes
+	dba .boxnames
+	dba NULL
+	dba Functione3632
+; e3609
+
+.boxes: ; e3609
+	db NUM_BOXES
+x = 1
+rept NUM_BOXES
+	db x
+x = x + 1
+endr
+	db -1
+; e3619
+
+.boxnames: ; e3619
+	push de
+	ld a, [MenuSelection]
+	dec a
+	call GetBoxName
+	pop hl
+	call PlaceString
+	ret
+; e3626
+
+GetBoxName: ; e3626 (38:7626)
+	ld bc, BOX_NAME_LENGTH
+	ld hl, wBoxNames
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ret
+; e3632 (38:7632)
+
+Functione3632: ; e3632
+	hlcoord 11, 7
+	lb bc, 5, 7
+	call TextBox
+	ld a, [MenuSelection]
+	cp -1
+	ret z
+	hlcoord 12, 9
+	ld de, String_e3663
+	call PlaceString
+	call GetBoxCount
+	ld [wd265], a
+	hlcoord 13, 11
+	ld de, wd265
+	lb bc, 1, 2
+	call PrintNum
+	ld de, String_e3668
+	call PlaceString
+	ret
+; e3663
+
+String_e3663: ; e3663
+	db "#MON@"
+; e3668
+
+String_e3668: ; e3668
+	; db "/20@"
+	db "/"
+	db "0" + MONS_PER_BOX / 10 ; "2"
+	db "0" + MONS_PER_BOX % 10 ; "0"
+	db "@"
+; e366c
+
+GetBoxCount: ; e366c (38:766c)
+	ld a, [wCurBox]
+	ld c, a
+	ld a, [MenuSelection]
+	dec a
+	cp c
+	jr z, .activebox
+	ld c, a
+	ld b, 0
+	ld hl, .boxbanks
+rept 3
+	add hl, bc
+endr
+	ld a, [hli]
+	ld b, a
+	call GetSRAMBank
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	call CloseSRAM
+	ld c, a
+	ld a, [wSavedAtLeastOnce]
+	and a
+	jr z, .newfile
+	ld a, c
+	ret
+
+.newfile
+	xor a
+	ret
+
+.activebox
+	ld a, BANK(sBoxCount)
+	ld b, a
+	call GetSRAMBank
+	ld hl, sBoxCount
+	ld a, [hl]
+	call CloseSRAM
+	ret
+; e36a5 (38:76a5)
+
+.boxbanks: ; e36a5
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
+	dba sBox10
+	dba sBox11
+	dba sBox12
+	dba sBox13
+	dba sBox14
+; e36cf
+
+Functione36cf: ; e36cf (38:76cf)
+	hlcoord 0, 0
+	ld b, 2
+	ld c, 18
+	call TextBox
+	hlcoord 1, 2
+	ld de, String_e36f1
+	call PlaceString
+	ld a, [wCurBox]
+	and $f
+	call GetBoxName
+	hlcoord 11, 2
+	call PlaceString
+	ret
+; e36f1 (38:76f1)
+
+String_e36f1: ; e36f1
+	db "CURRENT@"
+; e36f9
+
+Functione36f9: ; e36f9 (38:76f9)
+	ld hl, MenuDataHeader_0xe377b
+	call LoadMenuDataHeader
+	call InterpretMenu2
+	call ExitMenu
+	ret c
+	ld a, [MenuSelection2]
+	cp $1
+	jr z, .asm_e3734
+	cp $2
+	jr z, .asm_e3745
+	cp $3
+	jr z, .asm_e3717
+	and a
+	ret
+
+.asm_e3717
+	call GetBoxCount
+	and a
+	jr z, .asm_e372f
+	ld e, l
+	ld d, h
+	ld a, [MenuSelection]
+	dec a
+	ld c, a
+	callba Function844bc
+	call Functione35e2
+	and a
+	ret
+
+.asm_e372f
+	call Functione37be
+	and a
+	ret
+
+.asm_e3734
+	ld a, [MenuSelection]
+	dec a
+	ld e, a
+	ld a, [wCurBox]
+	cp e
+	ret z
+	callba Function14a83
+	ret
+
+.asm_e3745
+	ld b, $4
+	ld de, wd002
+	callba NamingScreen
+	call ClearTileMap
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	ld a, [MenuSelection]
+	dec a
+	call GetBoxName
+	ld e, l
+	ld d, h
+	ld hl, wd002
+	ld c, $8
+	call InitString
+	ld a, [MenuSelection]
+	dec a
+	call GetBoxName
+	ld de, wd002
+	call CopyName2
+	ret
+; e3778 (38:7778)
+
+	hlcoord 11, 7 ; XXX
+
+MenuDataHeader_0xe377b: ; 0xe377b
+	db $40 ; flags
+	db 04, 11 ; start coords
+	db 13, 19 ; end coords
+	dw MenuData2_0xe3783
+	db 1 ; default option
+; 0xe3783
+
+MenuData2_0xe3783: ; 0xe3783
+	db $80 ; flags
+	db 4 ; items
+	db "SWITCH@"
+	db "NAME@"
+	db "PRINT@"
+	db "QUIT@"
+; 0xe379c
+
+Functione379c: ; e379c (38:779c)
+	ld de, String_e37a1
+	jr Functione37e3
+; e37a1 (38:77a1)
+
+String_e37a1: ; e37a1
+	db "Choose a BOX.@"
+; e37af
+
+Functione37af: ; e37af (38:77af)
+	ld de, String_e37b4
+	jr Functione37e3
+; e37b4 (38:77b4)
+
+String_e37b4: ; e37b4
+	db "What's up?@"
+; e37be
+
+Functione37be: ; e37be (38:77be)
+	ld de, String_e37d3
+	call Functione37e3
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	ret
+; e37d3 (38:77d3)
+
+String_e37d3: ; e37d3
+	db "There's no #MON.@"
+; e37e3
+
+Functione37e3: ; e37e3 (38:77e3)
+	push de
+	hlcoord 0, 14
+	lb bc, 2, 18
+	call TextBox
+	pop de
+	hlcoord 1, 16
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
--- /dev/null
+++ b/engine/card_flip.asm
@@ -1,0 +1,2560 @@
+_CardFlip: ; e00ee (38:40ee)
+	ld hl, Options
+	set 4, [hl]
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld de, MUSIC_NONE
+	call PlayMusic
+	call DelayFrame
+	call DisableLCD
+	call LoadStandardFont
+	call LoadFontsExtra
+	ld hl, LZ_e0d16
+	ld de, VTiles2 tile $00
+	call Decompress
+	ld hl, LZ_e0ea8
+	ld de, VTiles2 tile $3e
+	call Decompress
+	ld hl, LZ_e0cdb
+	ld de, VTiles0 tile $00
+	call Decompress
+	ld hl, GFX_e0cf6
+	ld de, VTiles1 tile $6f
+	ld bc, $10
+	call CopyBytes
+	ld hl, GFX_e0d06
+	ld de, VTiles1 tile $75
+	ld bc, $10
+	call CopyBytes
+	call Functione0521
+	call Functione04c1
+	call Functione0c37
+	call EnableLCD
+	call Function3200
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	call DelayFrame
+	xor a
+	ld [wJumptableIndex], a
+	ld a, $2
+	ld [wcf64], a
+	ld [wcf65], a
+	ld de, MUSIC_GAME_CORNER
+	call PlayMusic
+.MasterLoop
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .leavethegame
+	call .CardFlip
+	jr .MasterLoop
+.leavethegame
+	call WaitSFX
+	ld de, SFX_QUIT_SLOTS
+	call PlaySFX
+	call WaitSFX
+	call ClearBGPalettes
+	ld hl, Options
+	res 4, [hl]
+	ret
+
+.CardFlip: ; e0191 (38:4191)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e01a0 (38:41a0)
+
+.Jumptable: ; e01a0
+	dw .AskPlayWithThree
+	dw .DeductCoins
+	dw .ChooseACard
+	dw .PlaceYourBet
+	dw .CheckTheCard
+	dw .TabulateTheResult
+	dw .PlayAgain
+	dw .Quit
+; e01b0
+
+.Increment: ; e01b0
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e01b5
+
+.AskPlayWithThree: ; e01b5
+	ld hl, .PlayWithThreeCoinsText
+	call Functione0489
+	call YesNoBox
+	jr c, .SaidNo
+	call Functione0366
+	call .Increment
+	ret
+
+.SaidNo
+	ld a, $7
+	ld [wJumptableIndex], a
+	ret
+; e01cd
+
+.PlayWithThreeCoinsText: ; 0xe01cd
+	; Play with three coins?
+	text_jump UnknownText_0x1c5793
+	db "@"
+; 0xe01d2
+
+.DeductCoins: ; e01d2
+	ld a, [Coins]
+	ld h, a
+	ld a, [Coins + 1]
+	ld l, a
+	ld a, h
+	and a
+	jr nz, .deduct ; You have at least 256 coins.
+	ld a, l
+	cp 3
+	jr nc, .deduct ; You have at least 3 coins.
+	ld hl, .NotEnoughCoinsText
+	call Functione0489
+	ld a, $7
+	ld [wJumptableIndex], a
+	ret
+
+.deduct
+	ld de, -3
+	add hl, de
+	ld a, h
+	ld [Coins], a
+	ld a, l
+	ld [Coins + 1], a
+	ld de, SFX_TRANSACTION
+	call PlaySFX
+	xor a
+	ld [hBGMapMode], a
+	call Functione049c
+	ld a, $1
+	ld [hBGMapMode], a
+	call WaitSFX
+	call .Increment
+	ret
+; e0212
+
+.NotEnoughCoinsText: ; 0xe0212
+	; Not enough coins…
+	text_jump UnknownText_0x1c57ab
+	db "@"
+; 0xe0217
+
+.ChooseACard: ; e0217
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 0
+	lb bc, 12, 9
+	call Functione04e5
+	hlcoord 9, 0
+	ld bc, SCREEN_WIDTH
+	ld a, [wc6e8]
+	call AddNTimes
+	ld [hl], $f5
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, 20
+	call DelayFrames
+	hlcoord 2, 0
+	call Functione03c1
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, 20
+	call DelayFrames
+	hlcoord 2, 6
+	call Functione03c1
+	call WaitBGMap
+	ld hl, .ChooseACardText
+	call Functione0489
+	xor a
+	ld [wcf66], a
+.loop
+	call JoyTextDelay
+	ld a, [hJoyLast]
+	and A_BUTTON
+	jr nz, .next
+	ld de, SFX_KINESIS
+	call PlaySFX
+	call Functione0849
+	ld c, 4
+	call DelayFrames
+	ld hl, wcf66
+	ld a, [hl]
+	xor $1
+	ld [hl], a
+	jr .loop
+
+.next
+	ld de, SFX_SLOT_MACHINE_START
+	call PlaySFX
+	ld a, $3
+.loop2
+	push af
+	call Functione0849
+	ld c, 4
+	call DelayFrames
+	call ClearSprites
+	ld c, 4
+	call DelayFrames
+	pop af
+	dec a
+	jr nz, .loop2
+	ld hl, wcf66
+	ld a, [hl]
+	push af
+	xor $1
+	ld [hl], a
+	call Functione03ac
+	lb bc, 6, 5
+	call Functione04e5
+	pop af
+	ld [wcf66], a
+	call .Increment
+	ret
+; e02b2
+
+.ChooseACardText: ; 0xe02b2
+	; Choose a card.
+	text_jump UnknownText_0x1c57be
+	db "@"
+; 0xe02b7
+
+.PlaceYourBet: ; e02b7
+	ld hl, .PlaceYourBetText
+	call Functione0489
+.betloop
+	call JoyTextDelay
+	ld a, [hJoyLast]
+	and A_BUTTON
+	jr nz, .betdone
+	call Functione089c
+	call Functione0960
+	call DelayFrame
+	jr .betloop
+
+.betdone
+	call .Increment
+	ret
+; e02d5
+
+.PlaceYourBetText: ; 0xe02d5
+	; Place your bet.
+	text_jump UnknownText_0x1c57ce
+	db "@"
+; 0xe02da
+
+.CheckTheCard: ; e02da
+	xor a
+	ld [hVBlankCounter], a
+	call Functione0960
+	call WaitSFX
+	ld de, SFX_CHOOSE_A_CARD
+	call PlaySFX
+	call WaitSFX
+	ld a, [wc6e8]
+	ld e, a
+	ld d, 0
+	ld hl, wc6d0
+rept 2
+	add hl, de
+endr
+	ld a, [wcf66]
+	ld e, a
+	add hl, de
+	ld a, [hl]
+	ld [CurEnemyMoveNum], a
+	ld e, a
+	ld hl, wc6ea
+	add hl, de
+	ld [hl], $1
+	call Functione03ac
+	call Functione03ec
+	call Function3200
+	call .Increment
+	ret
+; e0314
+
+.TabulateTheResult: ; e0314
+	call Functione0637
+	call WaitPressAorB_BlinkCursor
+	call .Increment
+	ret
+; e031e
+
+.PlayAgain: ; e031e
+	call ClearSprites
+	ld hl, .PlayAgainText
+	call Functione0489
+	call YesNoBox
+	jr nc, .Continue
+	call .Increment
+	ret
+
+.Continue
+	ld a, [wc6e8]
+	inc a
+	ld [wc6e8], a
+	cp $c
+	jr c, .KeepTheCurrentDeck
+	call Functione04c1
+	ld a, $1
+	ld [hBGMapMode], a
+	call Functione0366
+	ld hl, .CardsShuffledText
+	call PrintText
+	jr .LoopAround
+
+.KeepTheCurrentDeck
+	call Functione0534
+
+.LoopAround
+	ld a, $1
+	ld [wJumptableIndex], a
+	ret
+; e0356
+
+.PlayAgainText: ; 0xe0356
+	; Want to play again?
+	text_jump UnknownText_0x1c57df
+	db "@"
+; 0xe035b
+
+.CardsShuffledText: ; 0xe035b
+	; The cards have been shuffled.
+	text_jump UnknownText_0x1c57f4
+	db "@"
+; 0xe0360
+
+.Quit: ; e0360
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+; e0366
+
+Functione0366: ; e0366
+	ld hl, wc6d0
+	ld bc, $18
+	xor a
+	call ByteFill
+	ld de, wc6d0
+	ld c, $17
+.asm_e0375
+	call Random
+	and $1f
+	cp $18
+	jr nc, .asm_e0375
+	ld l, a
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0375
+	ld [hl], c
+	dec c
+	jr nz, .asm_e0375
+	xor a
+	ld [wc6e8], a
+	ld hl, wc6ea
+	ld bc, $18
+	call ByteFill
+	ret
+; e0398
+
+Functione0398: ; e0398
+	ld hl, 0
+	ld bc, 6
+	ld a, [wcf64]
+	call AddNTimes
+	ld b, $0
+	ld a, [wcf65]
+	ld c, a
+	add hl, bc
+	ret
+; e03ac
+
+Functione03ac: ; e03ac
+	ld a, [wcf66]
+	and a
+	jr nz, .asm_e03ba
+	hlcoord 2, 0
+	ld bc, $1018
+	jr .asm_e03c0
+
+.asm_e03ba
+	hlcoord 2, 6
+	ld bc, $4018
+
+.asm_e03c0
+	ret
+; e03c1
+
+Functione03c1: ; e03c1
+	xor a
+	ld [hBGMapMode], a
+	ld de, Unknown_e03ce
+	lb bc, 6, 5
+	call Functione04f7
+	ret
+; e03ce
+
+Unknown_e03ce: ; e03ce
+	db $08, $09, $09, $09, $0a
+	db $0b, $28, $2b, $28, $0c
+	db $0b, $2c, $2d, $2e, $0c
+	db $0b, $2f, $30, $31, $0c
+	db $0b, $32, $33, $34, $0c
+	db $0d, $0e, $0e, $0e, $0f
+; e03ec
+
+Functione03ec: ; e03ec
+	xor a
+	ld [hBGMapMode], a
+	push hl
+	push hl
+	ld de, Unknown_e043b
+	lb bc, 6, 5
+	call Functione04f7
+	ld a, [CurEnemyMoveNum]
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_e0459
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	pop hl
+	ld bc, $17
+	add hl, bc
+	ld [hl], e
+	ld bc, SCREEN_HEIGHT
+	add hl, bc
+	ld a, d
+	ld de, SCREEN_WIDTH
+	ld b, $3
+.asm_e0418
+	push hl
+	ld c, $3
+.asm_e041b
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_e041b
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .asm_e0418
+	pop hl
+	ld a, [hCGB]
+	and a
+	ret z
+	ld de, AttrMap - TileMap
+	add hl, de
+	ld a, [CurEnemyMoveNum]
+	and 3
+	inc a
+	lb bc, 6, 5
+	call Functione04e7
+	ret
+; e043b
+
+Unknown_e043b: ; e043b
+	db $18, $19, $19, $19, $1a
+	db $1b, $35, $7f, $7f, $1c
+	db $0b, $28, $28, $28, $0c
+	db $0b, $28, $28, $28, $0c
+	db $0b, $28, $28, $28, $0c
+	db $1d, $1e, $1e, $1e, $1f
+; e0459
+
+Unknown_e0459: ; e0459
+	db $f7,$4e, $f7,$57, $f7,$69, $f7,$60
+	db $f8,$4e, $f8,$57, $f8,$69, $f8,$60
+	db $f9,$4e, $f9,$57, $f9,$69, $f9,$60
+	db $fa,$4e, $fa,$57, $fa,$69, $fa,$60
+	db $fb,$4e, $fb,$57, $fb,$69, $fb,$60
+	db $fc,$4e, $fc,$57, $fc,$69, $fc,$60
+; e0489
+
+Functione0489: ; e0489
+	push hl
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	pop hl
+	call PrintTextBoxText
+	call Functione049c
+	ret
+; e049c
+
+Functione049c: ; e049c
+	hlcoord 9, 15
+	ld b, $1
+	ld c, $9
+	call TextBox
+	hlcoord 10, 16
+	ld de, String_e04bc
+	call PlaceString
+	hlcoord 15, 16
+	ld de, Coins
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+	call PrintNum
+	ret
+; e04bc
+
+String_e04bc:
+	db "COIN@"
+; e04c1
+
+Functione04c1: ; e04c1 (38:44c1)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 0
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, $29
+	call ByteFill
+	hlcoord 9, 0
+	ld de, Unknown_e110c
+	lb bc, 12, 11
+	call Functione04f7
+	hlcoord 0, 12
+	lb bc, 4, 18
+	call TextBox
+	ret
+; e04e5 (38:44e5)
+
+Functione04e5: ; e04e5
+	ld a, $29
+
+Functione04e7: ; e04e7 (38:44e7)
+	push bc
+	push hl
+.asm_e04e9
+	ld [hli], a
+	dec c
+	jr nz, .asm_e04e9
+	pop hl
+	ld bc, $14
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, Functione04e7
+	ret
+
+Functione04f7: ; e04f7 (38:44f7)
+	push bc
+	push hl
+.asm_e04f9
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_e04f9
+	pop hl
+	ld bc, $14
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, Functione04f7
+	ret
+; e0509 (38:4509)
+
+Functione0509: ; e0509
+	ld de, Sprites
+	ld a, [hli]
+.asm_e050d
+	push af
+	ld a, [hli]
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_e050d
+	ret
+; e0521
+
+Functione0521: ; e0521 (38:4521)
+	ld de, VTiles1 tile $76
+	ld hl, $8f62
+	ld bc, $9e
+	call CopyBytes
+	ld hl, $8ffe
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+; e0534 (38:4534)
+
+Functione0534: ; e0534
+	xor a
+	ld [hBGMapMode], a
+	ld a, [CurEnemyMoveNum]
+	ld e, a
+	ld d, 0
+	and 3
+	ld c, a
+	ld b, 0
+	ld a, e
+	and $1c
+	srl a
+	add Jumptable_e0553 % $100
+	ld l, a
+	ld a, 0
+	adc Jumptable_e0553 / $100
+	ld h, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e0553
+
+Jumptable_e0553: ; e0553
+	dw Functione055f
+	dw Functione0583
+	dw Functione05a7
+	dw Functione05cb
+	dw Functione05ef
+	dw Functione0613
+; e055f
+
+Functione055f: ; e055f
+	ld hl, wc6e6 + 8
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0575
+	hlcoord 13, 3
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $37
+	ret
+
+.asm_e0575
+	hlcoord 13, 3
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3d
+	ret
+; e0583
+
+Functione0583: ; e0583
+	ld hl, wc6e6
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0599
+	hlcoord 13, 4
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3b
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+
+.asm_e0599
+	hlcoord 13, 4
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3d
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+; e05a7
+
+Functione05a7: ; e05a7
+	ld hl, wc6e6 + 8
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e05bd
+	hlcoord 13, 6
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $38
+	ret
+
+.asm_e05bd
+	hlcoord 13, 6
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3d
+	ret
+; e05cb
+
+Functione05cb: ; e05cb
+	ld hl, wc6e6
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e05e1
+	hlcoord 13, 7
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3c
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+
+.asm_e05e1
+	hlcoord 13, 7
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3d
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+; e05ef
+
+Functione05ef: ; e05ef
+	ld hl, wc6e6 + 8
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0605
+	hlcoord 13, 9
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $39
+	ret
+
+.asm_e0605
+	hlcoord 13, 9
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3d
+	ret
+; e0613
+
+Functione0613: ; e0613
+	ld hl, wc6e6
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0629
+	hlcoord 13, 10
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3c
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+
+.asm_e0629
+	hlcoord 13, 10
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3d
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+; e0637
+
+Functione0637: ; e0637
+	call Functione0398
+	add hl, hl
+	ld de, Jumptable_e0643
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e0643
+
+Jumptable_e0643: ; e0643
+	dw Functione06a3
+	dw Functione06a3
+	dw Functione06a6
+	dw Functione06a6
+	dw Functione06b0
+	dw Functione06b0
+	dw Functione06a3
+	dw Functione06a3
+	dw Functione06ec
+	dw Functione06f6
+	dw Functione0702
+	dw Functione070e
+	dw Functione06c2
+	dw Functione0722
+	dw Functione0770
+	dw Functione0774
+	dw Functione0778
+	dw Functione077c
+	dw Functione06c2
+	dw Functione072c
+	dw Functione0780
+	dw Functione0784
+	dw Functione0788
+	dw Functione078c
+	dw Functione06cc
+	dw Functione0738
+	dw Functione0790
+	dw Functione0794
+	dw Functione0798
+	dw Functione079c
+	dw Functione06cc
+	dw Functione0744
+	dw Functione07a0
+	dw Functione07a4
+	dw Functione07a8
+	dw Functione07ac
+	dw Functione06d8
+	dw Functione0750
+	dw Functione07b0
+	dw Functione07b4
+	dw Functione07b8
+	dw Functione07bc
+	dw Functione06d8
+	dw Functione075c
+	dw Functione07c0
+	dw Functione07c4
+	dw Functione07c8
+	dw Functione07cc
+; e06a3
+
+Functione06a3: ; e06a3
+	jp Functione07db
+; e06a6
+
+Functione06a6: ; e06a6
+	ld a, [CurEnemyMoveNum]
+	and $2
+	jp nz, Functione07db
+	jr Functione06ba
+
+Functione06b0: ; e06b0
+	ld a, [CurEnemyMoveNum]
+	and $2
+	jr nz, Functione06ba
+	jp Functione07db
+
+Functione06ba: ; e06ba
+	ld c, $6
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e06c2
+
+Functione06c2: ; e06c2
+	ld a, [CurEnemyMoveNum]
+	and $18
+	jr z, Functione06e4
+	jp Functione07db
+
+Functione06cc: ; e06cc
+	ld a, [CurEnemyMoveNum]
+	and $18
+	cp $8
+	jr z, Functione06e4
+	jp Functione07db
+
+Functione06d8: ; e06d8
+	ld a, [CurEnemyMoveNum]
+	and $18
+	cp $10
+	jr z, Functione06e4
+	jp Functione07db
+
+Functione06e4: ; e06e4
+	ld c, $9
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e06ec
+
+Functione06ec: ; e06ec
+	ld a, [CurEnemyMoveNum]
+	and $3
+	jr z, Functione071a
+	jp Functione07db
+
+Functione06f6: ; e06f6
+	ld a, [CurEnemyMoveNum]
+	and $3
+	cp $1
+	jr z, Functione071a
+	jp Functione07db
+
+Functione0702: ; e0702
+	ld a, [CurEnemyMoveNum]
+	and $3
+	cp $2
+	jr z, Functione071a
+	jp Functione07db
+
+Functione070e: ; e070e
+	ld a, [CurEnemyMoveNum]
+	and $3
+	cp $3
+	jr z, Functione071a
+	jp Functione07db
+
+Functione071a: ; e071a
+	ld c, $c
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e0722
+
+Functione0722: ; e0722
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	jr z, Functione0768
+	jp Functione07db
+
+Functione072c: ; e072c
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $4
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0738: ; e0738
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $8
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0744: ; e0744
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $c
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0750: ; e0750
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $10
+	jr z, Functione0768
+	jp Functione07db
+
+Functione075c: ; e075c
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $14
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0768: ; e0768
+	ld c, $12
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e0770
+
+
+Functione0770: ; e0770
+	ld e, $0
+	jr Functione07ce
+
+Functione0774: ; e0774
+	ld e, $1
+	jr Functione07ce
+
+Functione0778: ; e0778
+	ld e, $2
+	jr Functione07ce
+
+Functione077c: ; e077c
+	ld e, $3
+	jr Functione07ce
+
+Functione0780: ; e0780
+	ld e, $4
+	jr Functione07ce
+
+Functione0784: ; e0784
+	ld e, $5
+	jr Functione07ce
+
+Functione0788: ; e0788
+	ld e, $6
+	jr Functione07ce
+
+Functione078c: ; e078c
+	ld e, $7
+	jr Functione07ce
+
+Functione0790: ; e0790
+	ld e, $8
+	jr Functione07ce
+
+Functione0794: ; e0794
+	ld e, $9
+	jr Functione07ce
+
+Functione0798: ; e0798
+	ld e, $a
+	jr Functione07ce
+
+Functione079c: ; e079c
+	ld e, $b
+	jr Functione07ce
+
+Functione07a0: ; e07a0
+	ld e, $c
+	jr Functione07ce
+
+Functione07a4: ; e07a4
+	ld e, $d
+	jr Functione07ce
+
+Functione07a8: ; e07a8
+	ld e, $e
+	jr Functione07ce
+
+Functione07ac: ; e07ac
+	ld e, $f
+	jr Functione07ce
+
+Functione07b0: ; e07b0
+	ld e, $10
+	jr Functione07ce
+
+Functione07b4: ; e07b4
+	ld e, $11
+	jr Functione07ce
+
+Functione07b8: ; e07b8
+	ld e, $12
+	jr Functione07ce
+
+Functione07bc: ; e07bc
+	ld e, $13
+	jr Functione07ce
+
+Functione07c0: ; e07c0
+	ld e, $14
+	jr Functione07ce
+
+Functione07c4: ; e07c4
+	ld e, $15
+	jr Functione07ce
+
+Functione07c8: ; e07c8
+	ld e, $16
+	jr Functione07ce
+
+Functione07cc: ; e07cc
+	ld e, $17
+
+Functione07ce: ; e07ce
+	ld a, [CurEnemyMoveNum]
+	cp e
+	jr nz, Functione07db
+	ld c, $48
+	ld de, SFX_2ND_PLACE
+	jr Functione07eb
+
+Functione07db: ; e07db
+	ld de, SFX_WRONG
+	call PlaySFX
+	ld hl, UnknownText_0xe0816
+	call Functione0489
+	call WaitSFX
+	ret
+
+Functione07eb: ; e07eb
+	push bc
+	push de
+	ld hl, UnknownText_0xe0811
+	call Functione0489
+	pop de
+	call PlaySFX
+	call WaitSFX
+	pop bc
+.asm_e07fb
+	push bc
+	call Functione0833
+	jr c, .asm_e0804
+	call Functione081b
+
+.asm_e0804
+	call Functione049c
+	ld c, 2
+	call DelayFrames
+	pop bc
+	dec c
+	jr nz, .asm_e07fb
+	ret
+; e0811
+
+UnknownText_0xe0811: ; 0xe0811
+	; Yeah!
+	text_jump UnknownText_0x1c5813
+	db "@"
+; 0xe0816
+
+UnknownText_0xe0816: ; 0xe0816
+	; Darn…
+	text_jump UnknownText_0x1c581a
+	db "@"
+; 0xe081b
+
+Functione081b: ; e081b
+	ld a, [Coins]
+	ld h, a
+	ld a, [Coins + 1]
+	ld l, a
+	inc hl
+	ld a, h
+	ld [Coins], a
+	ld a, l
+	ld [Coins + 1], a
+	ld de, SFX_PAY_DAY
+	call PlaySFX
+	ret
+; e0833
+
+Functione0833: ; e0833
+	ld a, [Coins]
+	cp 9999 / $100
+	jr c, .asm_e0847
+	jr z, .asm_e083e
+	jr .asm_e0845
+
+.asm_e083e
+	ld a, [Coins + 1]
+	cp 9999 % $100
+	jr c, .asm_e0847
+
+.asm_e0845
+	scf
+	ret
+
+.asm_e0847
+	and a
+	ret
+; e0849
+
+Functione0849: ; e0849
+	call Functione03ac
+	ld hl, Unknown_e0853
+	call Functione0509
+	ret
+; e0853
+
+Unknown_e0853: ; e0853
+	db 18
+	db $00, $00, $04, $00
+	db $00, $08, $06, $00
+	db $00, $10, $06, $00
+	db $00, $18, $06, $00
+	db $00, $20, $04, $20
+	db $08, $00, $05, $00
+	db $08, $20, $05, $20
+	db $10, $00, $05, $00
+	db $10, $20, $05, $20
+	db $18, $00, $05, $00
+	db $18, $20, $05, $20
+	db $20, $00, $05, $00
+	db $20, $20, $05, $20
+	db $28, $00, $04, $40
+	db $28, $08, $06, $40
+	db $28, $10, $06, $40
+	db $28, $18, $06, $40
+	db $28, $20, $04, $60
+; e089c
+
+Functione089c: ; e089c
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_LEFT
+	jp nz, Functione08b8
+	ld a, [hl]
+	and D_RIGHT
+	jp nz, Functione08ef
+	ld a, [hl]
+	and D_UP
+	jp nz, Functione090a
+	ld a, [hl]
+	and D_DOWN
+	jp nz, Functione093d
+	ret
+; e08b8
+
+Functione08b8: ; e08b8
+	ld hl, wcf65
+	ld a, [wcf64]
+	and a
+	jr z, .asm_e08d5
+	cp $1
+	jr z, .asm_e08cc
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	jp Functione0959
+
+.asm_e08cc
+	ld a, [hl]
+	cp $3
+	jr c, .asm_e08e2
+	dec [hl]
+	jp Functione0959
+
+.asm_e08d5
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $3
+	jr c, .asm_e08e2
+rept 2
+	dec [hl]
+endr
+	jp Functione0959
+
+.asm_e08e2
+	ld a, $2
+	ld [wcf64], a
+	ld a, $1
+	ld [wcf65], a
+	jp Functione0959
+; e08ef
+
+Functione08ef: ; e08ef
+	ld hl, wcf65
+	ld a, [wcf64]
+	and a
+	jr z, .asm_e08ff
+	ld a, [hl]
+	cp $5
+	ret nc
+	inc [hl]
+	jr Functione0959
+
+.asm_e08ff
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $4
+	ret nc
+rept 2
+	inc [hl]
+endr
+	jr Functione0959
+
+Functione090a: ; e090a
+	ld hl, wcf64
+	ld a, [wcf65]
+	and a
+	jr z, .asm_e0925
+	cp $1
+	jr z, .asm_e091d
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	jr Functione0959
+
+.asm_e091d
+	ld a, [hl]
+	cp $3
+	jr c, .asm_e0931
+	dec [hl]
+	jr Functione0959
+
+.asm_e0925
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $3
+	jr c, .asm_e0931
+rept 2
+	dec [hl]
+endr
+	jr Functione0959
+
+.asm_e0931
+	ld a, $1
+	ld [wcf64], a
+	ld a, $2
+	ld [wcf65], a
+	jr Functione0959
+
+Functione093d: ; e093d
+	ld hl, wcf64
+	ld a, [wcf65]
+	and a
+	jr z, .asm_e0950
+	ld hl, wcf64
+	ld a, [hl]
+	cp $7
+	ret nc
+	inc [hl]
+	jr Functione0959
+
+.asm_e0950
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $6
+	ret nc
+rept 2
+	inc [hl]
+endr
+
+Functione0959: ; e0959
+	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
+	call PlaySFX
+	ret
+; e0960
+
+Functione0960: ; e0960
+	call ClearSprites
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_e096d
+	ld a, [hVBlankCounter]
+	and $4
+	ret nz
+
+.asm_e096d
+	call Functione0398
+rept 2
+	add hl, hl
+endr
+	ld de, Unknown_e0981
+	add hl, de
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Functione0509
+	ret
+; e0981
+
+Unknown_e0981: ; e0981
+	dbbw $58, $10, Unknown_e0c26
+	dbbw $60, $10, Unknown_e0c26
+	dbbw $68, $10, Unknown_e0b8d
+	dbbw $68, $10, Unknown_e0b8d
+	dbbw $88, $10, Unknown_e0b8d
+	dbbw $88, $10, Unknown_e0b8d
+
+	dbbw $58, $18, Unknown_e0c26
+	dbbw $60, $18, Unknown_e0c26
+	dbbw $68, $18, Unknown_e0a5a
+	dbbw $78, $18, Unknown_e0a5a
+	dbbw $88, $18, Unknown_e0a5a
+	dbbw $98, $18, Unknown_e0a5a
+
+	dbbw $58, $28, Unknown_e0b14
+	dbbw $60, $28, Unknown_e0ac3
+	dbbw $68, $28, Unknown_e0a41
+	dbbw $78, $28, Unknown_e0a41
+	dbbw $88, $28, Unknown_e0a41
+	dbbw $98, $28, Unknown_e0a41
+	dbbw $58, $28, Unknown_e0b14
+
+	dbbw $60, $34, Unknown_e0ac3
+	dbbw $68, $34, Unknown_e0a41
+	dbbw $78, $34, Unknown_e0a41
+	dbbw $88, $34, Unknown_e0a41
+	dbbw $98, $34, Unknown_e0a41
+
+	dbbw $58, $40, Unknown_e0b14
+	dbbw $60, $40, Unknown_e0ac3
+	dbbw $68, $40, Unknown_e0a41
+	dbbw $78, $40, Unknown_e0a41
+	dbbw $88, $40, Unknown_e0a41
+	dbbw $98, $40, Unknown_e0a41
+	dbbw $58, $40, Unknown_e0b14
+
+	dbbw $60, $4c, Unknown_e0ac3
+	dbbw $68, $4c, Unknown_e0a41
+	dbbw $78, $4c, Unknown_e0a41
+	dbbw $88, $4c, Unknown_e0a41
+	dbbw $98, $4c, Unknown_e0a41
+
+	dbbw $58, $58, Unknown_e0b14
+	dbbw $60, $58, Unknown_e0ac3
+	dbbw $68, $58, Unknown_e0a41
+	dbbw $78, $58, Unknown_e0a41
+	dbbw $88, $58, Unknown_e0a41
+	dbbw $98, $58, Unknown_e0a41
+	dbbw $58, $58, Unknown_e0b14
+
+	dbbw $60, $64, Unknown_e0ac3
+	dbbw $68, $64, Unknown_e0a41
+	dbbw $78, $64, Unknown_e0a41
+	dbbw $88, $64, Unknown_e0a41
+	dbbw $98, $64, Unknown_e0a41
+; e0a41
+
+Unknown_e0a41: ; e0a41
+	db 6
+	db $00, $ff, $00, $80
+	db $00, $00, $02, $80
+	db $00, $08, $03, $80
+	db $05, $ff, $00, $c0
+	db $05, $00, $02, $c0
+	db $05, $08, $03, $80
+
+Unknown_e0a5a: ; e0a5a
+	db 26
+	db $00, $ff, $00, $80
+	db $00, $00, $02, $80
+	db $00, $08, $00, $a0
+	db $08, $ff, $01, $80
+	db $08, $08, $01, $a0
+	db $10, $ff, $01, $80
+	db $10, $08, $03, $80
+	db $18, $ff, $01, $80
+	db $18, $08, $03, $80
+	db $20, $ff, $01, $80
+	db $20, $08, $03, $80
+	db $28, $ff, $01, $80
+	db $28, $08, $03, $80
+	db $30, $ff, $01, $80
+	db $30, $08, $03, $80
+	db $38, $ff, $01, $80
+	db $38, $08, $03, $80
+	db $40, $ff, $01, $80
+	db $40, $08, $03, $80
+	db $48, $ff, $01, $80
+	db $48, $08, $03, $80
+	db $50, $ff, $01, $80
+	db $50, $08, $03, $80
+	db $51, $ff, $00, $c0
+	db $51, $00, $02, $c0
+	db $51, $08, $03, $80
+
+Unknown_e0ac3: ; e0ac3
+	db 20
+	db $00, $ff, $00, $80
+	db $00, $00, $02, $80
+	db $00, $08, $02, $80
+	db $00, $10, $03, $80
+	db $00, $18, $02, $80
+	db $00, $20, $03, $80
+	db $00, $28, $02, $80
+	db $00, $30, $03, $80
+	db $00, $38, $02, $80
+	db $00, $40, $03, $80
+	db $05, $ff, $00, $c0
+	db $05, $00, $02, $c0
+	db $05, $08, $02, $c0
+	db $05, $10, $03, $80
+	db $05, $18, $02, $c0
+	db $05, $20, $03, $80
+	db $05, $28, $02, $c0
+	db $05, $30, $03, $80
+	db $05, $38, $02, $c0
+	db $05, $40, $03, $80
+
+Unknown_e0b14: ; e0b14
+	db 30
+	db $00, $00, $00, $80
+	db $00, $08, $02, $80
+	db $00, $10, $02, $80
+	db $00, $18, $03, $80
+	db $00, $20, $02, $80
+	db $00, $28, $03, $80
+	db $00, $30, $02, $80
+	db $00, $38, $03, $80
+	db $00, $40, $02, $80
+	db $00, $48, $03, $80
+	db $08, $00, $01, $80
+	db $08, $18, $03, $80
+	db $08, $28, $03, $80
+	db $08, $38, $03, $80
+	db $08, $48, $03, $80
+	db $10, $00, $01, $80
+	db $10, $18, $03, $80
+	db $10, $28, $03, $80
+	db $10, $38, $03, $80
+	db $10, $48, $03, $80
+	db $11, $00, $00, $c0
+	db $11, $08, $02, $c0
+	db $11, $10, $02, $c0
+	db $11, $18, $03, $80
+	db $11, $20, $03, $80
+	db $11, $28, $03, $80
+	db $11, $30, $03, $80
+	db $11, $38, $03, $80
+	db $11, $40, $03, $80
+	db $11, $48, $03, $80
+
+Unknown_e0b8d: ; e0b8d
+	db 38
+	db $00, $ff, $00, $80
+	db $00, $18, $00, $a0
+	db $08, $ff, $01, $80
+	db $08, $18, $01, $a0
+	db $10, $ff, $01, $80
+	db $10, $18, $01, $a0
+	db $18, $ff, $01, $80
+	db $18, $08, $03, $80
+	db $18, $18, $03, $80
+	db $20, $ff, $01, $80
+	db $20, $08, $03, $80
+	db $20, $18, $03, $80
+	db $28, $ff, $01, $80
+	db $28, $08, $03, $80
+	db $28, $18, $03, $80
+	db $30, $ff, $01, $80
+	db $30, $08, $03, $80
+	db $30, $18, $03, $80
+	db $38, $ff, $01, $80
+	db $38, $08, $03, $80
+	db $38, $18, $03, $80
+	db $40, $ff, $01, $80
+	db $40, $08, $03, $80
+	db $40, $18, $03, $80
+	db $48, $ff, $01, $80
+	db $48, $08, $03, $80
+	db $48, $18, $03, $80
+	db $50, $ff, $01, $80
+	db $50, $08, $03, $80
+	db $50, $18, $03, $80
+	db $58, $ff, $01, $80
+	db $58, $08, $03, $80
+	db $58, $18, $03, $80
+	db $59, $ff, $00, $c0
+	db $59, $00, $02, $c0
+	db $59, $08, $03, $c0
+	db $59, $10, $02, $c0
+	db $59, $18, $03, $e0
+
+Unknown_e0c26: ; e0c26
+	db 4
+	db $00, $00, $00, $80
+	db $00, $08, $00, $a0
+	db $08, $00, $00, $c0
+	db $08, $08, $00, $e0
+; e0c37
+
+Functione0c37: ; e0c37 (38:4c37)
+	ld a, [hCGB]
+	and a
+	ret z
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	xor a
+	call ByteFill
+	hlcoord 12, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $1
+	call Functione04e7
+	hlcoord 14, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $2
+	call Functione04e7
+	hlcoord 16, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $3
+	call Functione04e7
+	hlcoord 18, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $4
+	call Functione04e7
+	hlcoord 9, 0, AttrMap
+	lb bc, 12, 1
+	ld a, $1
+	call Functione04e7
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_e0c93
+	ld de, Unkn1Pals
+	ld bc, $48
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; e0c93 (38:4c93)
+
+Palette_e0c93: ; e0c93
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 29, 25, 00
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 13, 30
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 08, 17, 30
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 08, 31, 08
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 00, 00
+	RGB 31, 00, 00
+; e0cdb
+
+LZ_e0cdb: ; e0cdb
+INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
+
+GFX_e0cf6: ; e0cf6
+INCBIN "gfx/unknown/0e0cf6.2bpp"
+
+GFX_e0d06: ; e0d06
+INCBIN "gfx/unknown/0e0d06.2bpp"
+
+LZ_e0d16: ; e0d16
+INCBIN "gfx/unknown/0e0d16.2bpp.lz"
+
+LZ_e0ea8: ; e0ea8
+INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
+
+Unknown_e110c: ; e110c
+	db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27
+	db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b
+	db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d
+	db $ef, $25, $04, $00, $01, $00, $01, $00, $01, $00, $01
+	db $ef, $05, $14, $10, $11, $10, $11, $10, $11, $10, $11
+	db $ef, $16, $24, $20, $21, $20, $21, $20, $21, $20, $21
+	db $ef, $25, $04, $00, $02, $00, $02, $00, $02, $00, $02
+	db $ef, $05, $14, $10, $12, $10, $12, $10, $12, $10, $12
+	db $ef, $16, $24, $20, $22, $20, $22, $20, $22, $20, $22
+	db $ef, $25, $04, $00, $03, $00, $03, $00, $03, $00, $03
+	db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13
+	db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23
+; e1190
+
+Functione1190: ; e1190
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	call DisableLCD
+	ld hl, wc608
+	ld bc, $1e0
+	xor a
+	call ByteFill
+	ld hl, GFX_e17c5
+	ld de, VTiles1 tile $60
+	ld bc, $40
+	call CopyBytes
+	ld hl, LZ_e1805
+	ld de, VTiles1 tile $6d
+	call Decompress
+	call Functione17a3
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, $ee
+	call ByteFill
+	hlcoord 4, 3
+	lb bc, 12, 12
+	ld a, $ef
+	call Functione13ee
+	call Functione124e
+	call Functione13fe
+	call Functione127d
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	ld [rWY], a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ld a, $93
+	ld [rLCDC], a
+	call WaitBGMap
+	ld b, $18
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $24
+	call Functioncf8
+	xor a
+	ld [wd0ec], a
+	call DelayFrame
+.asm_e1217
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e123d
+	call Functione12ca
+	ld a, [wcf64]
+	and a
+	jr nz, .asm_e1230
+	ld a, [hVBlankCounter]
+	and $10
+	jr z, .asm_e1235
+
+.asm_e1230
+	call Functione14d9
+	jr .asm_e1238
+
+.asm_e1235
+	call ClearSprites
+
+.asm_e1238
+	call DelayFrame
+	jr .asm_e1217
+
+.asm_e123d
+	pop af
+	ld [hInMenu], a
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld a, $e3
+	ld [rLCDC], a
+	ret
+; e124e
+
+Functione124e: ; e124e
+	ld c, $1
+	ld b, $10
+.asm_e1252
+	call Random
+	and $f
+	ld hl, Unknown_e126d
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, [hl]
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e1252
+	ld [hl], c
+	inc c
+	dec b
+	jr nz, .asm_e1252
+	ret
+; e126d
+
+Unknown_e126d: ; e126d
+	db $00, $01, $02, $03
+	db $04, $05, $06, $0b
+	db $0c, $11, $12, $17
+	db $18, $1d, $1e, $23
+; e127d
+
+Functione127d: ; e127d
+	call Functione128d
+	hlcoord 5, 16
+	ld a, $f6
+	ld c, $a
+.asm_e1287
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_e1287
+	ret
+; e128d
+
+Functione128d: ; e128d
+	hlcoord 4, 15
+	ld a, $f0
+	ld [hli], a
+	ld bc, $a
+	ld a, $f1
+	call ByteFill
+	hlcoord 15, 15
+	ld a, $f2
+	ld [hli], a
+	hlcoord 4, 16
+	ld a, $f3
+	ld [hli], a
+	ld bc, $a
+	ld a, $ef
+	call ByteFill
+	hlcoord 15, 16
+	ld a, $f3
+	ld [hli], a
+	hlcoord 4, 17
+	ld a, $f4
+	ld [hli], a
+	ld bc, $a
+	ld a, $f1
+	call ByteFill
+	hlcoord 15, 17
+	ld a, $f5
+	ld [hl], a
+	ret
+; e12ca
+
+Functione12ca: ; e12ca
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_e12d9
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e12d9
+
+Jumptable_e12d9: ; e12d9
+	dw Functione12db
+; e12db
+
+Functione12db: ; e12db
+	ld a, [hJoyPressed]
+	and START
+	jp nz, Functione13de
+	ld a, [hJoyPressed]
+	and A_BUTTON
+	jp nz, Functione1376
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .asm_e1301
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .asm_e130d
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .asm_e1325
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .asm_e1345
+	ret
+
+.asm_e1301
+	ld hl, wcf65
+	ld a, [hl]
+	cp $6
+	ret c
+	sub $6
+	ld [hl], a
+	jr .asm_e1364
+
+.asm_e130d
+	ld hl, wcf65
+	ld a, [hl]
+	cp $19
+	ret z
+	cp $1a
+	ret z
+	cp $1b
+	ret z
+	cp $1c
+	ret z
+	cp $1e
+	ret nc
+	add $6
+	ld [hl], a
+	jr .asm_e1364
+
+.asm_e1325
+	ld hl, wcf65
+	ld a, [hl]
+	and a
+	ret z
+	cp $6
+	ret z
+	cp $c
+	ret z
+	cp $12
+	ret z
+	cp $18
+	ret z
+	cp $1e
+	ret z
+	cp $23
+	jr z, .asm_e1341
+	dec [hl]
+	jr .asm_e1364
+
+.asm_e1341
+	ld [hl], $1e
+	jr .asm_e1364
+
+.asm_e1345
+	ld hl, wcf65
+	ld a, [hl]
+	cp $5
+	ret z
+	cp $b
+	ret z
+	cp $11
+	ret z
+	cp $17
+	ret z
+	cp $1d
+	ret z
+	cp $23
+	ret z
+	cp $1e
+	jr z, .asm_e1362
+	inc [hl]
+	jr .asm_e1364
+
+.asm_e1362
+	ld [hl], $23
+
+.asm_e1364
+	ld a, [wcf64]
+	and a
+	jr nz, .asm_e136f
+	ld de, SFX_POUND
+	jr .asm_e1372
+
+.asm_e136f
+	ld de, SFX_MOVE_PUZZLE_PIECE
+
+.asm_e1372
+	call PlaySFX
+	ret
+; e1376
+
+Functione1376: ; e1376
+	ld a, [wcf64]
+	and a
+	jr nz, .asm_e139f
+	call Functione1475
+	and a
+	jr z, Functione13e4
+	ld de, SFX_MEGA_KICK
+	call PlaySFX
+	ld [hl], $0
+	ld [wcf66], a
+	call Functione14d9
+	call Functione1441
+	call WaitBGMap
+	call WaitSFX
+	ld a, $1
+	ld [wcf64], a
+	ret
+
+.asm_e139f
+	call Functione1475
+	and a
+	jr nz, Functione13e4
+	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+	call PlaySFX
+	ld a, [wcf66]
+	ld [hl], a
+	call Functione141f
+	call WaitBGMap
+	xor a
+	ld [wcf66], a
+	call Functione14d9
+	xor a
+	ld [wcf64], a
+	call WaitSFX
+	call Functione14a0
+	ret nc
+	call Functione128d
+	call ClearSprites
+	ld de, SFX_1ST_PLACE
+	call PlaySFX
+	call WaitSFX
+	call SimpleWaitPressAorB
+	ld a, $1
+	ld [wd0ec], a
+
+Functione13de: ; e13de
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Functione13e4: ; e13e4
+	ld de, SFX_WRONG
+	call PlaySFX
+	call WaitSFX
+	ret
+; e13ee
+
+Functione13ee: ; e13ee
+	ld de, SCREEN_WIDTH
+.asm_e13f1
+	push bc
+	push hl
+.asm_e13f3
+	ld [hli], a
+	dec c
+	jr nz, .asm_e13f3
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_e13f1
+	ret
+; e13fe
+
+Functione13fe: ; e13fe
+	xor a
+	ld [wcf65], a
+	ld c, $24
+.asm_e1404
+	push bc
+	call Functione1475
+	ld [wcf66], a
+	and a
+	jr z, .asm_e1413
+	call Functione141f
+	jr .asm_e1416
+
+.asm_e1413
+	call Functione1441
+
+.asm_e1416
+	ld hl, wcf65
+	inc [hl]
+	pop bc
+	dec c
+	jr nz, .asm_e1404
+	ret
+; e141f
+
+Functione141f: ; e141f
+	ld a, $2
+	call Functione1463
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	call Functione1481
+	pop hl
+	ld de, SCREEN_WIDTH
+	ld b, $3
+.asm_e1431
+	ld c, $3
+	push hl
+.asm_e1434
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_e1434
+	add $9
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .asm_e1431
+	ret
+; e1441
+
+Functione1441: ; e1441
+	ld a, $2
+	call Functione1463
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	ld a, $4
+	call Functione1463
+	ld a, [hl]
+	pop hl
+	ld de, SCREEN_WIDTH
+	ld b, $3
+.asm_e1456
+	ld c, $3
+	push hl
+.asm_e1459
+	ld [hli], a
+	dec c
+	jr nz, .asm_e1459
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .asm_e1456
+	ret
+; e1463
+
+Functione1463: ; e1463
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_e1559
+	add hl, de
+	ld a, [wcf65]
+	ld e, a
+rept 4
+	add hl, de
+endr
+rept 2
+	add hl, de
+endr
+	ret
+; e1475
+
+Functione1475: ; e1475
+	ld hl, wc6d0
+	ld a, [wcf65]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	ret
+; e1481
+
+Functione1481: ; e1481
+	ld a, [wcf66]
+	ld hl, Unknown_e148f
+	add l
+	ld l, a
+	ld a, $0
+	adc h
+	ld h, a
+	ld a, [hl]
+	ret
+; e148f
+
+Unknown_e148f: ; e148f
+	db $e0
+	db $00, $03, $06, $09
+	db $24, $27, $2a, $2d
+	db $48, $4b, $4e, $51
+	db $6c, $6f, $72, $75
+; e14a0
+
+Functione14a0: ; e14a0
+	ld hl, Unknown_e14b5
+	ld de, wc6d0
+	ld c, $24
+.asm_e14a8
+	ld a, [de]
+	cp [hl]
+	jr nz, .asm_e14b3
+	inc de
+	inc hl
+	dec c
+	jr nz, .asm_e14a8
+	scf
+	ret
+
+.asm_e14b3
+	and a
+	ret
+; e14b5
+
+Unknown_e14b5: ; e14b5
+	db $00, $00, $00, $00, $00, $00
+	db $00, $01, $02, $03, $04, $00
+	db $00, $05, $06, $07, $08, $00
+	db $00, $09, $0a, $0b, $0c, $00
+	db $00, $0d, $0e, $0f, $10, $00
+	db $00, $00, $00, $00, $00, $00
+; e14d9
+
+Functione14d9: ; e14d9
+	call Functione1481
+	ld [wd002], a
+	xor a
+	call Functione1463
+	ld a, [hli]
+	ld b, [hl]
+	ld c, a
+	ld a, [wd002]
+	cp $e0
+	jr z, .asm_e14f2
+	ld hl, Unknown_e150f
+	jr .asm_e14f5
+
+.asm_e14f2
+	ld hl, Unknown_e1534
+
+.asm_e14f5
+	ld de, Sprites
+.asm_e14f8
+	ld a, [hli]
+	cp $ff
+	ret z
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [wd002]
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .asm_e14f8
+; e150f
+
+Unknown_e150f: ; e150f
+	db $f4, $f4, $00, $00
+	db $f4, $fc, $01, $00
+	db $f4, $04, $02, $00
+	db $fc, $f4, $0c, $00
+	db $fc, $fc, $0d, $00
+	db $fc, $04, $0e, $00
+	db $04, $f4, $18, $00
+	db $04, $fc, $19, $00
+	db $04, $04, $1a, $00
+	db $ff
+
+Unknown_e1534: ; e1534
+	db $f4, $f4, $00, $00
+	db $f4, $fc, $01, $00
+	db $f4, $04, $00, $20
+	db $fc, $f4, $02, $00
+	db $fc, $fc, $03, $00
+	db $fc, $04, $02, $20
+	db $04, $f4, $00, $40
+	db $04, $fc, $01, $40
+	db $04, $04, $00, $60
+	db $ff
+
+Unknown_e1559: ; e1559
+
+macro_e1559: macro
+	db \1, \2
+	dwcoord \3, \4
+	db \5, \6
+endm
+
+	macro_e1559 $1c, $1c,  1,  0, $ee, $00
+	macro_e1559 $34, $1c,  4,  0, $ee, $00
+	macro_e1559 $4c, $1c,  7,  0, $ee, $00
+	macro_e1559 $64, $1c, 10,  0, $ee, $00
+	macro_e1559 $7c, $1c, 13,  0, $ee, $00
+	macro_e1559 $94, $1c, 16,  0, $ee, $00
+	macro_e1559 $1c, $34,  1,  3, $ee, $00
+	macro_e1559 $34, $34,  4,  3, $ef, $00
+	macro_e1559 $4c, $34,  7,  3, $ef, $00
+	macro_e1559 $64, $34, 10,  3, $ef, $00
+	macro_e1559 $7c, $34, 13,  3, $ef, $00
+	macro_e1559 $94, $34, 16,  3, $ee, $00
+	macro_e1559 $1c, $4c,  1,  6, $ee, $00
+	macro_e1559 $34, $4c,  4,  6, $ef, $00
+	macro_e1559 $4c, $4c,  7,  6, $ef, $00
+	macro_e1559 $64, $4c, 10,  6, $ef, $00
+	macro_e1559 $7c, $4c, 13,  6, $ef, $00
+	macro_e1559 $94, $4c, 16,  6, $ee, $00
+	macro_e1559 $1c, $64,  1,  9, $ee, $00
+	macro_e1559 $34, $64,  4,  9, $ef, $00
+	macro_e1559 $4c, $64,  7,  9, $ef, $00
+	macro_e1559 $64, $64, 10,  9, $ef, $00
+	macro_e1559 $7c, $64, 13,  9, $ef, $00
+	macro_e1559 $94, $64, 16,  9, $ee, $00
+	macro_e1559 $1c, $7c,  1, 12, $ee, $00
+	macro_e1559 $34, $7c,  4, 12, $ef, $00
+	macro_e1559 $4c, $7c,  7, 12, $ef, $00
+	macro_e1559 $64, $7c, 10, 12, $ef, $00
+	macro_e1559 $7c, $7c, 13, 12, $ef, $00
+	macro_e1559 $94, $7c, 16, 12, $ee, $00
+	macro_e1559 $1c, $94,  1, 15, $ee, $00
+	macro_e1559 $34, $94,  4, 15, $ee, $00
+	macro_e1559 $4c, $94,  7, 15, $ee, $00
+	macro_e1559 $64, $94, 10, 15, $ee, $00
+	macro_e1559 $7c, $94, 13, 15, $ee, $00
+	macro_e1559 $94, $94, 16, 15, $ee, $00
+
+Functione1631: ; e1631
+	ld hl, VTiles2
+	ld de, VTiles0
+	ld b, $6
+.asm_e1639
+	push bc
+	push hl
+	push hl
+	call Functione1654
+	pop hl
+	ld bc, 8
+	add hl, bc
+	call Functione1654
+	pop hl
+	ld bc, $60
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_e1639
+	call Functione16c7
+	ret
+; e1654
+
+Functione1654: ; e1654
+	ld c, $6
+.asm_e1656
+	push bc
+	push hl
+	push hl
+	ld c, $4
+.asm_e165b
+	push bc
+	ld a, [hli]
+	and $f0
+	swap a
+	call Functione16aa
+	ld c, a
+	ld a, [hli]
+	and $f0
+	swap a
+	call Functione16aa
+	ld b, a
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	pop bc
+	dec c
+	jr nz, .asm_e165b
+	pop hl
+	ld c, $4
+.asm_e1681
+	push bc
+	ld a, [hli]
+	and $f
+	call Functione16aa
+	ld c, a
+	ld a, [hli]
+	and $f
+	call Functione16aa
+	ld b, a
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	pop bc
+	dec c
+	jr nz, .asm_e1681
+	pop hl
+	ld bc, $10
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_e1656
+	ret
+; e16aa
+
+Functione16aa: ; e16aa
+	push hl
+	ld hl, Unknown_e16b7
+	add l
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+	ld a, [hl]
+	pop hl
+	ret
+; e16b7
+
+Unknown_e16b7: ; e16b7
+	db $00, $03, $0c, $0f
+	db $30, $33, $3c, $3f
+	db $c0, $c3, $cc, $cf
+	db $f0, $f3, $fc, $ff
+; e16c7
+
+Functione16c7: ; e16c7
+	ld hl, Unknown_e1703
+	ld a, $8
+.asm_e16cc
+	push af
+	push hl
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Functione16e2
+	pop hl
+rept 4
+	inc hl
+endr
+	pop af
+	dec a
+	jr nz, .asm_e16cc
+	ret
+; e16e2
+
+Functione16e2: ; e16e2
+	lb bc, 4, 4
+.asm_e16e5
+	push bc
+.asm_e16e6
+	push de
+	push hl
+	ld b, $10
+.asm_e16ea
+	ld a, [de]
+	or [hl]
+	ld [hli], a
+	inc de
+	dec b
+	jr nz, .asm_e16ea
+	pop hl
+	ld de, $30
+	add hl, de
+	pop de
+	dec c
+	jr nz, .asm_e16e6
+	ld bc, $180
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_e16e5
+	ret
+; e1703
+
+Unknown_e1703: ; e1703
+	dw GFX_e1723 + $00, $8000
+	dw GFX_e1723 + $10, $8010
+	dw GFX_e1723 + $20, $8020
+	dw GFX_e1723 + $30, $80c0
+	dw GFX_e1723 + $40, $80e0
+	dw GFX_e1723 + $50, $8180
+	dw GFX_e1723 + $60, $8190
+	dw GFX_e1723 + $70, $81a0
+; e1723
+
+GFX_e1723: ; e1723
+INCBIN "gfx/unknown/0e1723.2bpp"
+
+Functione17a3: ; e17a3
+	ld a, [ScriptVar]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_e17bd
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, VTiles2
+	call Decompress
+	call Functione1631
+	ret
+; e17bd
+
+Unknown_e17bd: ; e17bd
+	dw LZ_e1bab
+	dw LZ_e1c9b
+	dw LZ_e19fb
+	dw LZ_e18ab
+; e17c5
+
+GFX_e17c5: ; e17c5
+INCBIN "gfx/unknown/0e17c5.2bpp"
+
+LZ_e1805: ; e1805
+INCBIN "gfx/unknown/0e1805.2bpp.lz"
+
+LZ_e18ab: ; e18ab
+INCBIN "gfx/unknown/0e18ab.2bpp.lz"
+
+LZ_e19fb: ; e19fb
+INCBIN "gfx/unknown/0e19fb.2bpp.lz"
+
+LZ_e1bab: ; e1bab
+INCBIN "gfx/unknown/0e1bab.2bpp.lz"
+
+LZ_e1c9b: ; e1c9b
+INCBIN "gfx/unknown/0e1c9b.2bpp.lz"
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -131,7 +131,7 @@
 	ld a, $5
 	ld [rSVBK], a
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 
@@ -210,7 +210,7 @@
 	jr .asm_1098de
 
 .asm_1098ee
-	call WhiteBGMap
+	call ClearBGPalettes
 	xor a
 	ld [hLCDStatCustom], a
 	ld [hBGMapAddress], a
--- a/engine/diploma.asm
+++ b/engine/diploma.asm
@@ -6,7 +6,7 @@
 ; 1dd709
 
 Function1dd709: ; 1dd709
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
--- /dev/null
+++ b/engine/dummy_game.asm
@@ -1,0 +1,615 @@
+_DummyGame: ; e1e5b (38:5e5b)
+	call Functione1e67
+	call DelayFrame
+.asm_e1e61
+	call Functione1ebb
+	jr nc, .asm_e1e61
+	ret
+
+Functione1e67: ; e1e67 (38:5e67)
+	call DisableLCD
+	ld b, $8
+	call GetSGBLayout
+	callab Function8cf53
+	ld hl, LZ_e2221
+	ld de, VTiles2 tile $00
+	call Decompress
+	ld hl, Unknown_e00ed
+	ld de, VTiles0 tile $00
+	ld bc, $40
+	ld a, BANK(Unknown_e00ed)
+	call FarCopyBytes
+	ld a, $8
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], $0
+	hlcoord 0, 0
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	xor a
+	call ByteFill
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	ld [rWY], a
+	ld [wJumptableIndex], a
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, $e3
+	ld [rLCDC], a
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $e0
+	call Functioncf8
+	ret
+
+Functione1ebb: ; e1ebb (38:5ebb)
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e1ed0
+	call Functione1ed2
+	callab Function8cf69
+	call DelayFrame
+	and a
+	ret
+.asm_e1ed0
+	scf
+	ret
+
+Functione1ed2: ; e1ed2 (38:5ed2)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_e1ee1
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e1ee1 (38:5ee1)
+
+Jumptable_e1ee1: ; e1ee1
+	dw Functione1ef3
+	dw Functione1efb
+	dw Functione1f1c
+	dw Functione1f42
+	dw Functione1f61
+	dw Functione1f8b
+	dw Functione1fba
+	dw Functione1fcc
+	dw Functione2000
+; e1ef3
+
+Functione1ef3: ; e1ef3
+	call Functione2152
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e1efb
+
+Functione1efb: ; e1efb
+	call Functione00ed
+	jr nc, .asm_e1f06
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.asm_e1f06
+	call Functione209d
+	ld hl, wJumptableIndex
+	inc [hl]
+	xor a
+	ld [wc708], a
+	ld hl, wc703
+rept 4
+	ld [hli], a
+endr
+	ld [hl], a
+	ld [wc709], a
+
+Functione1f1c: ; e1f1c
+	ld hl, wc708
+	ld a, [hl]
+	cp $2d
+	jr nc, .asm_e1f30
+	inc [hl]
+	call Functione2183
+	xor a
+	ld [wc6fd], a
+	call Functione2128
+	ret
+
+.asm_e1f30
+	ld de, $341c
+	ld a, $c
+	call Function3b2a
+	ld a, $5
+	ld [wc702], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e1f42
+
+Functione1f42: ; e1f42
+	ld a, [wc702]
+	hlcoord 17, 0
+	add $f6
+	ld [hl], a
+	ld hl, wc702
+	ld a, [hl]
+	and a
+	jr nz, .asm_e1f58
+	ld a, $7
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e1f58
+	dec [hl]
+	xor a
+	ld [wcf64], a
+	ld hl, wJumptableIndex
+	inc [hl]
+
+Functione1f61: ; e1f61
+	ld a, [wcf64]
+	and a
+	ret z
+	dec a
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld [wc6fd], a
+	ld [wPlayerMinimized], a
+	ld a, e
+	ld [EnemyScreens], a
+	call Functione2183
+	call Functione2128
+	xor a
+	ld [wcf64], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e1f8b
+
+Functione1f8b: ; e1f8b
+	ld a, [wcf64]
+	and a
+	ret z
+	dec a
+	ld hl, EnemyScreens
+	cp [hl]
+	ret z
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld [wc6fd], a
+	ld [PlayerScreens], a
+	ld a, e
+	ld [wc701], a
+	call Functione2183
+	call Functione2128
+	ld a, $40
+	ld [wc708], a
+	ld hl, wJumptableIndex
+	inc [hl]
+
+Functione1fba: ; e1fba
+	ld hl, wc708
+	ld a, [hl]
+	and a
+	jr z, .asm_e1fc3
+	dec [hl]
+	ret
+
+.asm_e1fc3
+	call Functione2010
+	ld a, $3
+	ld [wJumptableIndex], a
+	ret
+; e1fcc
+
+Functione1fcc: ; e1fcc
+	ld a, [hJoypadPressed]
+	and A_BUTTON
+	ret z
+	xor a
+	ld [wc708], a
+.asm_e1fd5
+	ld hl, wc708
+	ld a, [hl]
+	cp $2d
+	jr nc, .asm_e1ff9
+	inc [hl]
+	push af
+	call Functione2183
+	pop af
+	push hl
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	pop hl
+	cp $ff
+	jr z, .asm_e1fd5
+	ld [wc6fd], a
+	call Functione2128
+	jr .asm_e1fd5
+
+.asm_e1ff9
+	call WaitPressAorB_BlinkCursor
+	ld hl, wJumptableIndex
+	inc [hl]
+
+Functione2000: ; e2000
+	call Functione00ed
+	jr nc, .asm_e200b
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.asm_e200b
+	xor a
+	ld [wJumptableIndex], a
+	ret
+; e2010
+
+Functione2010: ; e2010
+	ld hl, wPlayerMinimized
+	ld a, [hli]
+	cp [hl]
+	jr nz, .asm_e2066
+	ld a, [EnemyScreens]
+	call Functione2183
+	call Functione2142
+	ld a, [wc701]
+	call Functione2183
+	call Functione2142
+	ld a, [EnemyScreens]
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld [hl], $ff
+	ld a, [wc701]
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld [hl], $ff
+	ld hl, wc703
+.asm_e2044
+	ld a, [hli]
+	and a
+	jr nz, .asm_e2044
+	dec hl
+	ld a, [wPlayerMinimized]
+	ld [hl], a
+	ld [wc6fd], a
+	ld hl, wc709
+	ld e, [hl]
+rept 2
+	inc [hl]
+endr
+	ld d, $0
+	hlcoord 5, 0
+	add hl, de
+	call Functione2128
+	ld hl, UnknownText_0xe2083
+	call PrintText
+	ret
+
+.asm_e2066
+	xor a
+	ld [wc6fd], a
+	ld a, [EnemyScreens]
+	call Functione2183
+	call Functione2128
+	ld a, [wc701]
+	call Functione2183
+	call Functione2128
+	ld hl, UnknownText_0xe2098
+	call PrintText
+	ret
+; e2083
+
+UnknownText_0xe2083: ; 0xe2083
+	start_asm
+; 0xe2084
+
+Functione2084: ; e2084
+	push bc
+	hlcoord 2, 13
+	call Functione2128
+	ld hl, UnknownText_0xe2093
+	pop bc
+rept 3
+	inc bc
+endr
+	ret
+; e2093
+
+UnknownText_0xe2093: ; 0xe2093
+	; , yeah!
+	text_jump UnknownText_0x1c1a5b
+	db "@"
+; 0xe2098
+
+UnknownText_0xe2098: ; 0xe2098
+	; Darn…
+	text_jump UnknownText_0x1c1a65
+	db "@"
+; 0xe209d
+
+Functione209d: ; e209d
+	ld hl, wc6d0
+	ld bc, $2d
+	xor a
+	call ByteFill
+	call Functione2101
+	ld c, $2
+	ld b, [hl]
+	call Functione20e5
+	ld c, $8
+	ld b, [hl]
+	call Functione20e5
+	ld c, $4
+	ld b, [hl]
+	call Functione20e5
+	ld c, $7
+	ld b, [hl]
+	call Functione20e5
+	ld c, $3
+	ld b, [hl]
+	call Functione20e5
+	ld c, $6
+	ld b, [hl]
+	call Functione20e5
+	ld c, $1
+	ld b, [hl]
+	call Functione20e5
+	ld c, $5
+	ld hl, wc6d0
+	ld b, $2d
+.asm_e20db
+	ld a, [hl]
+	and a
+	jr nz, .asm_e20e0
+	ld [hl], c
+
+.asm_e20e0
+	inc hl
+	dec b
+	jr nz, .asm_e20db
+	ret
+; e20e5
+
+Functione20e5: ; e20e5
+	push hl
+	ld de, wc6d0
+.asm_e20e9
+	call Random
+	and $3f
+	cp $2d
+	jr nc, .asm_e20e9
+	ld l, a
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e20e9
+	ld [hl], c
+	dec b
+	jr nz, .asm_e20e9
+	pop hl
+	inc hl
+	ret
+; e2101
+
+Functione2101: ; e2101
+	ld a, [MenuSelection2]
+	dec a
+	ld l, a
+	ld h, 0
+rept 3
+	add hl, hl
+endr
+	ld de, Unknown_e2110
+	add hl, de
+	ret
+; e2110
+
+Unknown_e2110: ; e2110
+	db $02, $03, $06, $06, $06, $08, $08, $06
+	db $02, $02, $04, $06, $06, $08, $08, $09
+	db $02, $02, $02, $04, $07, $08, $08, $0c
+; e2128
+
+Functione2128: ; e2128
+	ld a, [wc6fd]
+	sla a
+	sla a
+	add $4
+	ld [hli], a
+	inc a
+	ld [hld], a
+	inc a
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hli], a
+	inc a
+	ld [hl], a
+	ld c, 3
+	call DelayFrames
+	ret
+; e2142
+
+Functione2142: ; e2142
+	ld a, $1
+	ld [hli], a
+	ld [hld], a
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	ld c, 3
+	call DelayFrames
+	ret
+; e2152
+
+Functione2152: ; e2152
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, $1
+	call ByteFill
+	hlcoord 0, 0
+	ld de, String_e2177
+	call PlaceString
+	hlcoord 15, 0
+	ld de, String_e217d
+	call PlaceString
+	ld hl, UnknownText_0xe2176
+	call PrintText
+	ret
+; e2176
+
+UnknownText_0xe2176: ; 0xe2176
+	db "@"
+; 0xe2177
+
+String_e2177: db "とったもの@"
+String_e217d: db "あと かい@"
+; e2183
+
+Functione2183: ; e2183
+	ld d, $0
+.asm_e2185
+	sub $9
+	jr c, .asm_e218c
+	inc d
+	jr .asm_e2185
+
+.asm_e218c
+	add $9
+	ld e, a
+	hlcoord 1, 2
+	ld bc, $28
+.asm_e2195
+	ld a, d
+	and a
+	jr z, .asm_e219d
+	add hl, bc
+	dec d
+	jr .asm_e2195
+
+.asm_e219d
+	sla e
+	add hl, de
+	ret
+; e21a1
+
+Functione21a1: ; e21a1 (38:61a1)
+	ld a, [wJumptableIndex]
+	cp $7
+	jr nc, .quit
+	call JoyTextDelay
+	ld hl, hJoypadPressed ; $ffa3
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .pressed_a
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .pressed_left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .pressed_right
+	ld a, [hl]
+	and D_UP
+	jr nz, .pressed_up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .pressed_down
+	ret
+
+.quit
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.pressed_a
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	inc a
+	ld [wcf64], a
+	ret
+
+.pressed_left
+	ld hl, $6
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	sub $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	dec [hl]
+	ret
+
+.pressed_right
+	ld hl, $6
+	add hl, bc
+	ld a, [hl]
+	cp $80
+	ret z
+	add $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	inc [hl]
+	ret
+
+.pressed_up
+	ld hl, $7
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	sub $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	sub $9
+	ld [hl], a
+	ret
+
+.pressed_down
+	ld hl, $7
+	add hl, bc
+	ld a, [hl]
+	cp $40
+	ret z
+	add $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	add $9
+	ld [hl], a
+	ret
+; e2221 (38:6221)
+
+LZ_e2221: ; e2221
+INCBIN "gfx/unknown/0e2221.2bpp.lz"
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -138,7 +138,7 @@
 	call ClearAllScriptFlags3
 
 	ld a, [hMapEntryMethod]
-	cp MAPSETUP_07
+	cp MAPSETUP_CONNECTION
 	jr nz, .dontset
 	call SetAll_ScriptFlags3
 .dontset
@@ -322,9 +322,9 @@
 	ld [ScriptRunning], a
 	call DoPlayerEvent
 	ld a, [ScriptRunning]
-	cp PLAYEREVENT_4
+	cp PLAYEREVENT_CONNECTION
 	jr z, .ok2
-	cp PLAYEREVENT_9
+	cp PLAYEREVENT_JOYCHANGEFACING
 	jr z, .ok2
 
 	xor a
@@ -1050,8 +1050,10 @@
 	ld a, [ScriptRunning]
 	and a
 	ret z
+
 	cp PLAYEREVENT_MAPSCRIPT ; run script
 	ret z
+
 	cp NUM_PLAYER_EVENTS
 	ret nc
 
@@ -1071,17 +1073,17 @@
 ; 96c0c
 
 PlayerEventScriptPointers: ; 96c0c
-	dba Invalid_0x96c2d         ; 0
-	dba SeenByTrainerScript     ; 1
-	dba TalkToTrainerScript     ; 2
-	dba FindItemInBallScript    ; 3
-	dba UnknownScript_0x96c4d   ; 4
-	dba WarpToNewMapScript      ; 5
-	dba FallIntoMapScript       ; 6
-	dba Script_OverworldWhiteout   ; 7
-	dba HatchEggScript          ; 8
-	dba UnknownScript_0x96c4f   ; 9
-	dba Invalid_0x96c2d         ; 10
+	dba Invalid_0x96c2d          ; 0
+	dba SeenByTrainerScript      ; 1
+	dba TalkToTrainerScript      ; 2
+	dba FindItemInBallScript     ; 3
+	dba UnknownScript_0x96c4d    ; 4
+	dba WarpToNewMapScript       ; 5
+	dba FallIntoMapScript        ; 6
+	dba Script_OverworldWhiteout ; 7
+	dba HatchEggScript           ; 8
+	dba UnknownScript_0x96c4f    ; 9
+	dba Invalid_0x96c2d          ; 10
 ; 96c2d
 
 Invalid_0x96c2d: ; 96c2d
@@ -1088,7 +1090,7 @@
 	end
 ; 96c2e
 
-UnknownScript_0x96c2e: ; 96c2e
+; unreferenced
 	end
 ; 96c2f
 
@@ -1099,12 +1101,12 @@
 
 WarpToNewMapScript: ; 96c34
 	warpsound
-	newloadmap MAPSETUP_05
+	newloadmap MAPSETUP_DOOR
 	end
 ; 96c38
 
 FallIntoMapScript: ; 96c38
-	newloadmap MAPSETUP_06
+	newloadmap MAPSETUP_FALL
 	playsound SFX_KINESIS
 	applymovement PLAYER, MovementData_0x96c48
 	playsound SFX_STRENGTH
@@ -1123,7 +1125,7 @@
 ; 96c4d
 
 UnknownScript_0x96c4d: ; 4
-	reloadandreturn MAPSETUP_07
+	reloadandreturn MAPSETUP_CONNECTION
 ; 96c4f
 
 UnknownScript_0x96c4f: ; 9
--- /dev/null
+++ b/engine/events_3.asm
@@ -1,0 +1,863 @@
+ReturnFromMapSetupScript:: ; b8000
+	xor a
+	ld [hBGMapMode], a
+	; For some reson, GameFreak chose to use a callba here instead of just falling through.
+	; No other function in the game references the function at 2E:400A, here labeled
+	; ReturnFromMapSetupScript.inefficientcallba.
+	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes
+	ret
+; b800a
+
+.inefficientcallba: ; b800a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+	ld [wCurrentLandmark], a
+	call .CheckNationalParkGate
+	jr z, .nationalparkgate
+
+	call GetMapPermission
+	cp GATE
+	jr nz, .not_gate
+
+.nationalparkgate
+	ld a, -1
+	ld [wCurrentLandmark], a
+
+.not_gate
+	ld hl, wEnteredMapFromContinue
+	bit 1, [hl]
+	res 1, [hl]
+	jr nz, .dont_do_map_sign
+
+	call .CheckMovingWithinLandmark
+	jr z, .dont_do_map_sign
+	ld a, [wCurrentLandmark]
+	ld [wPreviousLandmark], a
+
+	call .CheckSpecialMap
+	jr z, .dont_do_map_sign
+
+; Display for 60 frames
+	ld a, 60
+	ld [wLandmarkSignTimer], a
+	call LoadMapNameSignGFX
+	call InitMapNameFrame
+	callba Function104303
+	ret
+
+.dont_do_map_sign
+	ld a, [wCurrentLandmark]
+	ld [wPreviousLandmark], a
+	ld a, $90
+	ld [rWY], a
+	ld [hWY], a
+	xor a
+	ld [hLCDStatCustom], a
+	ret
+; b8064
+
+.CheckMovingWithinLandmark: ; b8064
+	ld a, [wCurrentLandmark]
+	ld c, a
+	ld a, [wPreviousLandmark]
+	cp c
+	ret z
+	cp $0
+	ret
+; b8070
+
+.CheckSpecialMap: ; b8070
+	cp -1
+	ret z
+	cp SPECIAL_MAP
+	ret z
+	cp RADIO_TOWER
+	ret z
+	cp LAV_RADIO_TOWER
+	ret z
+	cp UNDERGROUND
+	ret z
+	cp INDIGO_PLATEAU
+	ret z
+	cp POWER_PLANT
+	ret z
+	ld a, $1
+	and a
+	ret
+; b8089
+
+.CheckNationalParkGate: ; b8089
+	ld a, [MapGroup]
+	cp GROUP_ROUTE_35_NATIONAL_PARK_GATE
+	ret nz
+	ld a, [MapNumber]
+	cp MAP_ROUTE_35_NATIONAL_PARK_GATE
+	ret z
+	cp MAP_ROUTE_36_NATIONAL_PARK_GATE
+	ret
+; b8098
+
+
+PlaceMapNameSign:: ; b8098 (2e:4098)
+	ld hl, wLandmarkSignTimer
+	ld a, [hl]
+	and a
+	jr z, .disappear
+	dec [hl]
+	cp 60
+	ret z
+	cp 59
+	jr nz, .skip2
+	call InitMapNameFrame
+	call PlaceMapNameCenterAlign
+	callba Function104303
+.skip2
+	ld a, $80
+	ld a, $70
+	ld [rWY], a
+	ld [hWY], a
+	ret
+
+.disappear
+	ld a, $90
+	ld [rWY], a
+	ld [hWY], a
+	xor a
+	ld [hLCDStatCustom], a
+	ret
+
+
+LoadMapNameSignGFX: ; b80c6
+	ld de, MapEntryFrameGFX
+	ld hl, VTiles2 tile $60
+	lb bc, BANK(MapEntryFrameGFX), $e
+	call Get2bpp
+	ret
+; b80d3
+
+InitMapNameFrame: ; b80d3
+	hlcoord 0, 0
+	ld b, 2
+	ld c, 18
+	call InitMapSignAttrMap
+	call PlaceMapNameFrame
+	ret
+; b80e1
+
+
+PlaceMapNameCenterAlign: ; b80e1 (2e:40e1)
+	ld a, [wCurrentLandmark]
+	ld e, a
+	callba GetLandmarkName
+	call .GetNameLength
+	ld a, SCREEN_WIDTH
+	sub c
+	srl a
+	ld b, $0
+	ld c, a
+	hlcoord 0, 2
+	add hl, bc
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+
+.GetNameLength: ; b8101 (2e:4101)
+	ld c, 0
+	push hl
+	ld hl, StringBuffer1
+.loop
+	ld a, [hli]
+	cp "@"
+	jr z, .stop
+	cp "%"
+	jr z, .loop
+	inc c
+	jr .loop
+.stop
+	pop hl
+	ret
+
+
+InitMapSignAttrMap: ; b8115
+	ld de, AttrMap - TileMap
+	add hl, de
+rept 2
+	inc b
+endr
+rept 2
+	inc c
+endr
+	ld a, $87
+.loop
+	push bc
+	push hl
+.inner_loop
+	ld [hli], a
+	dec c
+	jr nz, .inner_loop
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .loop
+	ret
+; b812f
+
+PlaceMapNameFrame: ; b812f
+	hlcoord 0, 0
+	; top left
+	ld a, $61
+	ld [hli], a
+	; top row
+	ld a, $62
+	call .FillTopBottom
+	; top right
+	ld a, $64
+	ld [hli], a
+	; left, first line
+	ld a, $65
+	ld [hli], a
+	; first line
+	call .FillMiddle
+	; right, first line
+	ld a, $6b
+	ld [hli], a
+	; left, second line
+	ld a, $66
+	ld [hli], a
+	; second line
+	call .FillMiddle
+	; right, second line
+	ld a, $6c
+	ld [hli], a
+	; bottom left
+	ld a, $67
+	ld [hli], a
+	; bottom
+	ld a, $68
+	call .FillTopBottom
+	; bottom right
+	ld a, $6a
+	ld [hl], a
+	ret
+; b815b
+
+.FillMiddle: ; b815b
+	ld c, 18
+	ld a, $6d
+.loop
+	ld [hli], a
+	dec c
+	jr nz, .loop
+	ret
+; b8164
+
+.FillTopBottom: ; b8164
+	ld c, 5
+	jr .enterloop
+
+.continueloop
+rept 2
+	ld [hli], a
+endr
+
+.enterloop
+	inc a
+rept 2
+	ld [hli], a
+endr
+	dec a
+	dec c
+	jr nz, .continueloop
+	ret
+; b8172
+
+CheckForSignpostItems: ; b8172
+; Checks to see if there are hidden items on the screen that have not yet been found.  If it finds one, returns carry.
+	call GetMapScriptHeaderBank
+	ld [Buffer1], a
+; Get the coordinate of the bottom right corner of the screen, and load it in wd1ec/wd1ed.
+	ld a, [XCoord]
+	add SCREEN_WIDTH / 4
+	ld [wd1ed], a
+	ld a, [YCoord]
+	add SCREEN_HEIGHT / 4
+	ld [wd1ec], a
+; Get the pointer for the first signpost header in the map...
+	ld hl, wdc02
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+; ... before even checking to see if there are any signposts on this map.
+	ld a, [wCurrentMapSignpostCount]
+	and a
+	jr z, .nosignpostitems
+; For i = 1:wCurrentMapSignpostCount...
+.loop
+; Store the counter in Buffer2, and store the signpost header pointer in the stack.
+	ld [Buffer2], a
+	push hl
+; Get the Y coordinate of the signpost.
+	call .GetFarByte
+	ld e, a
+; Is the Y coordinate of the signpost on the screen?  If not, go to the next signpost.
+	ld a, [wd1ec]
+	sub e
+	jr c, .next
+	cp SCREEN_HEIGHT / 2
+	jr nc, .next
+; Is the X coordinate of the signpost on the screen?  If not, go to the next signpost.
+	call .GetFarByte
+	ld d, a
+	ld a, [wd1ed]
+	sub d
+	jr c, .next
+	cp SCREEN_WIDTH / 2
+	jr nc, .next
+; Is this signpost a hidden item?  If not, go to the next signpost.
+	call .GetFarByte
+	cp SIGNPOST_ITEM
+	jr nz, .next
+; Has this item already been found?  If not, set off the Itemfinder.
+	ld a, [Buffer1]
+	call GetFarHalfword
+	ld a, [Buffer1]
+	call GetFarHalfword
+	ld d, h
+	ld e, l
+	ld b, CHECK_FLAG
+	call EventFlagAction
+	ld a, c
+	and a
+	jr z, .itemnearby
+
+.next
+; Restore the signpost header pointer and increment it by the length of a signpost header.
+	pop hl
+	ld bc, 5
+	add hl, bc
+; Restore the signpost counter and decrement it.  If it hits zero, there are no hidden items in range.
+	ld a, [Buffer2]
+	dec a
+	jr nz, .loop
+
+.nosignpostitems
+	xor a
+	ret
+
+.itemnearby
+	pop hl
+	scf
+	ret
+; b81e2
+
+.GetFarByte: ; b81e2
+	ld a, [Buffer1]
+	call GetFarByte
+	inc hl
+	ret
+; b81ea
+
+
+TreeMonEncounter: ; b81ea
+	callba MobileFn_1060ef
+
+	xor a
+	ld [TempWildMonSpecies], a
+	ld [CurPartyLevel], a
+
+	ld hl, TreeMonMaps
+	call GetTreeMonSet
+	jr nc, .no_battle
+
+	call GetTreeMons
+	jr nc, .no_battle
+
+	call GetTreeMon
+	jr nc, .no_battle
+
+	ld a, BATTLETYPE_TREE
+	ld [BattleType], a
+	ld a, 1
+	ld [ScriptVar], a
+	ret
+
+.no_battle
+	xor a
+	ld [ScriptVar], a
+	ret
+; b8219
+
+RockMonEncounter: ; b8219
+
+	xor a
+	ld [TempWildMonSpecies], a
+	ld [CurPartyLevel], a
+
+	ld hl, RockMonMaps
+	call GetTreeMonSet
+	jr nc, .no_battle
+
+	call GetTreeMons
+	jr nc, .no_battle
+
+	ld a, 10
+	call RandomRange
+	cp 4
+	jr nc, .no_battle
+
+	call SelectTreeMon
+	jr nc, .no_battle
+
+	ret
+
+.no_battle
+	xor a
+	ret
+; b823e
+
+	db $05 ; ????
+
+GetTreeMonSet: ; b823f
+; Return carry and treemon set in a
+; if the current map is in table hl.
+	ld a, [MapNumber]
+	ld e, a
+	ld a, [MapGroup]
+	ld d, a
+.loop
+	ld a, [hli]
+	cp -1
+	jr z, .not_in_table
+
+	cp d
+	jr nz, .skip2
+
+	ld a, [hli]
+	cp e
+	jr nz, .skip1
+
+	jr .in_table
+
+.skip2
+	inc hl
+.skip1
+	inc hl
+	jr .loop
+
+.not_in_table
+	xor a
+	ret
+
+.in_table
+	ld a, [hl]
+	scf
+	ret
+; b825e
+
+TreeMonMaps: ; b825e
+treemon_map: macro
+	map \1
+	db  \2 ; treemon set
+endm
+	treemon_map ROUTE_26, 4
+	treemon_map ROUTE_27, 4
+	treemon_map ROUTE_28, 0
+	treemon_map ROUTE_29, 3
+	treemon_map ROUTE_30, 3
+	treemon_map ROUTE_31, 3
+	treemon_map ROUTE_32, 4
+	treemon_map ROUTE_33, 2
+	treemon_map ROUTE_34, 3
+	treemon_map ROUTE_35, 3
+	treemon_map ROUTE_36, 3
+	treemon_map ROUTE_37, 3
+	treemon_map ROUTE_38, 3
+	treemon_map ROUTE_39, 3
+	treemon_map ROUTE_40, 0
+	treemon_map ROUTE_41, 0
+	treemon_map ROUTE_42, 2
+	treemon_map ROUTE_43, 5
+	treemon_map ROUTE_44, 1
+	treemon_map ROUTE_45, 1
+	treemon_map ROUTE_46, 1
+	treemon_map NEW_BARK_TOWN, 0
+	treemon_map CHERRYGROVE_CITY, 0
+	treemon_map VIOLET_CITY, 0
+	treemon_map AZALEA_TOWN, 2
+	treemon_map CIANWOOD_CITY, 0
+	treemon_map GOLDENROD_CITY, 0
+	treemon_map OLIVINE_CITY, 0
+	treemon_map ECRUTEAK_CITY, 0
+	treemon_map MAHOGANY_TOWN, 0
+	treemon_map LAKE_OF_RAGE, 5
+	treemon_map BLACKTHORN_CITY, 0
+	treemon_map SILVER_CAVE_OUTSIDE, 0
+	treemon_map ILEX_FOREST, 6
+	db -1
+; b82c5
+
+RockMonMaps: ; b82c5
+	treemon_map CIANWOOD_CITY, 7
+	treemon_map ROUTE_40, 7
+	treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
+	treemon_map SLOWPOKE_WELL_B1F, 7
+	db -1
+; b82d2
+
+GetTreeMons: ; b82d2
+; Return the address of TreeMon table a in hl.
+; Return nc if table a doesn't exist.
+
+	cp 8
+	jr nc, .quit
+
+	and a
+	jr z, .quit
+
+	ld e, a
+	ld d, 0
+	ld hl, TreeMons
+rept 2
+	add hl, de
+endr
+
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	scf
+	ret
+
+.quit
+	xor a
+	ret
+; b82e8
+
+TreeMons: ; b82e8
+	dw TreeMons1
+	dw TreeMons1
+	dw TreeMons2
+	dw TreeMons3
+	dw TreeMons4
+	dw TreeMons5
+	dw TreeMons6
+	dw RockMons
+	dw TreeMons1
+
+; Two tables each (normal, rare).
+; Structure:
+;	db  %, species, level
+
+TreeMons1: ; b82fa
+	db 50, SPEAROW,    10
+	db 15, SPEAROW,    10
+	db 15, SPEAROW,    10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+	db 50, SPEAROW,    10
+	db 15, HERACROSS,  10
+	db 15, HERACROSS,  10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+TreeMons2: ; b8320
+	db 50, SPEAROW,    10
+	db 15, EKANS,      10
+	db 15, SPEAROW,    10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+	db 50, SPEAROW,    10
+	db 15, HERACROSS,  10
+	db 15, HERACROSS,  10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+TreeMons3: ; b8346
+	db 50, HOOTHOOT,   10
+	db 15, SPINARAK,   10
+	db 15, LEDYBA,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons4: ; b836c
+	db 50, HOOTHOOT,   10
+	db 15, EKANS,      10
+	db 15, HOOTHOOT,   10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons5: ; b8392
+	db 50, HOOTHOOT,   10
+	db 15, VENONAT,    10
+	db 15, HOOTHOOT,   10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons6: ; b83b8
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, NOCTOWL,    10
+	db  5, BUTTERFREE, 10
+	db  5, BEEDRILL,   10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, CATERPIE,   10
+	db 15, WEEDLE,     10
+	db 10, HOOTHOOT,   10
+	db  5, METAPOD,    10
+	db  5, KAKUNA,     10
+	db -1
+
+RockMons: ; b83de
+	db 90, KRABBY,     15
+	db 10, SHUCKLE,    15
+	db -1
+; b83e5
+
+GetTreeMon: ; b83e5
+	push hl
+	call GetTreeScore
+	pop hl
+	and a
+	jr z, .bad
+	cp 1
+	jr z, .good
+	cp 2
+	jr z, .rare
+	ret
+
+.bad
+	ld a, 10
+	call RandomRange
+	and a
+	jr nz, NoTreeMon
+	jr SelectTreeMon
+
+.good
+	ld a, 10
+	call RandomRange
+	cp 5
+	jr nc, NoTreeMon
+	jr SelectTreeMon
+
+.rare
+	ld a, 10
+	call RandomRange
+	cp 8
+	jr nc, NoTreeMon
+	jr .skip
+.skip
+	ld a, [hli]
+	cp -1
+	jr nz, .skip
+	call SelectTreeMon
+	ret
+; b841f
+
+SelectTreeMon: ; b841f
+; Read a TreeMons table and pick one monster at random.
+
+	ld a, 100
+	call RandomRange
+.loop
+	sub [hl]
+	jr c, .ok
+rept 3
+	inc hl
+endr
+	jr .loop
+
+.ok
+	ld a, [hli]
+	cp $ff
+	jr z, NoTreeMon
+
+	ld a, [hli]
+	ld [TempWildMonSpecies], a
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	scf
+	ret
+
+NoTreeMon: ; b843b
+	xor a
+	ld [TempWildMonSpecies], a
+	ld [CurPartyLevel], a
+	ret
+; b8443
+
+GetTreeScore: ; b8443
+	call .CoordScore
+	ld [Buffer1], a
+	call .OTIDScore
+	ld [Buffer2], a
+	ld c, a
+	ld a, [Buffer1]
+	sub c
+	jr z, .rare
+	jr nc, .ok
+	add 10
+.ok
+	cp 5
+	jr c, .good
+
+.bad
+	xor a
+	ret
+
+.good
+	ld a, 1
+	ret
+
+.rare
+	ld a, 2
+	ret
+; b8466
+
+.CoordScore: ; b8466
+	call GetFacingTileCoord
+	ld hl, 0
+	ld c, e
+	ld b, 0
+	ld a, d
+
+	and a
+	jr z, .next
+.loop
+	add hl, bc
+	dec a
+	jr nz, .loop
+.next
+
+	add hl, bc
+	ld c, d
+	add hl, bc
+
+	ld a, h
+	ld [hDividend], a
+	ld a, l
+	ld [hDividend + 1], a
+	ld a, 5
+	ld [hDivisor], a
+	ld b, 2
+	call Divide
+
+	ld a, [hQuotient + 1]
+	ld [hDividend], a
+	ld a, [hQuotient + 2]
+	ld [hDividend + 1], a
+	ld a, 10
+	ld [hDivisor], a
+	ld b, 2
+	call Divide
+
+	ld a, [hQuotient + 3]
+	ret
+; b849d
+
+.OTIDScore: ; b849d
+	ld a, [PlayerID]
+	ld [hDividend], a
+	ld a, [PlayerID + 1]
+	ld [hDividend + 1], a
+	ld a, 10
+	ld [hDivisor], a
+	ld b, 2
+	call Divide
+	ld a, [hQuotient + 3]
+	ret
+; b84b3
+
+LoadFishingGFX: ; b84b3
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+
+	ld de, FishingGFX
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .got_gender
+	ld de, KrisFishingGFX
+.got_gender
+
+	ld hl, VTiles0 tile $02
+	call .LoadGFX
+	ld hl, VTiles0 tile $06
+	call .LoadGFX
+	ld hl, VTiles0 tile $0a
+	call .LoadGFX
+	ld hl, VTiles1 tile $7c
+	call .LoadGFX
+
+	pop af
+	ld [rVBK], a
+	ret
+; b84e3
+
+.LoadGFX: ; b84e3
+	lb bc, BANK(FishingGFX), 2
+	push de
+	call Get2bpp
+	pop de
+	ld hl, 2 tiles
+	add hl, de
+	ld d, h
+	ld e, l
+	ret
+; b84f2
+
+FishingGFX: ; b84f2
+INCBIN "gfx/overworld/chris_fish.2bpp"
+; b8582
+
+KrisFishingGFX: ; b8582
+INCBIN "gfx/overworld/kris_fish.2bpp"
+; b8612
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -372,7 +372,7 @@
 INCBIN "gfx/evo/bubble.2bpp"
 
 Function4e881: ; 4e881
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
@@ -405,7 +405,7 @@
 
 
 Function4e8c2: ; 4e8c2
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
--- /dev/null
+++ b/engine/flypoints.asm
@@ -1,0 +1,916 @@
+_FlyMap: ; 91af3
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld hl, hInMenu
+	ld a, [hl]
+	push af
+	ld [hl], $1
+	xor a
+	ld [hBGMapMode], a
+	callba Function8cf53
+	call Function91ff2
+	ld de, GFX_922e1
+	ld hl, VTiles2 tile $30
+	lb bc, BANK(GFX_922e1), 6
+	call Request1bpp
+	call FlyMap
+	call Function91c8f
+	ld b, $2
+	call GetSGBLayout
+	call SetPalettes
+.loop
+	call JoyTextDelay
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .pressedB
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .pressedA
+	call FlyMapScroll
+	call GetMapCursorCoordinates
+	callba Function8cf69
+	call DelayFrame
+	jr .loop
+
+.pressedB
+	ld a, -1
+	jr .exit
+
+.pressedA
+	ld a, [wd002]
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, Flypoints + 1
+	add hl, de
+	ld a, [hl]
+
+.exit
+	ld [wd002], a
+	pop af
+	ld [hInMenu], a
+	call ClearBGPalettes
+	ld a, $90
+	ld [hWY], a
+	xor a
+	ld [hBGMapAddress], a
+	ld a, VBGMap0 / $100
+	ld [hBGMapAddress + 1], a
+	ld a, [wd002]
+	ld e, a
+	ret
+; 91b73
+
+FlyMapScroll: ; 91b73
+	ld a, [StartFlypoint]
+	ld e, a
+	ld a, [EndFlypoint]
+	ld d, a
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .ScrollNext
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .ScrollPrev
+	ret
+
+.ScrollNext
+	ld hl, wd002
+	ld a, [hl]
+	cp d
+	jr nz, .NotAtEndYet
+	ld a, e
+	dec a
+	ld [hl], a
+
+.NotAtEndYet
+	inc [hl]
+	call CheckIfVisitedFlypoint
+	jr z, .ScrollNext
+	jr .Finally
+
+.ScrollPrev
+	ld hl, wd002
+	ld a, [hl]
+	cp e
+	jr nz, .NotAtStartYet
+	ld a, d
+	inc a
+	ld [hl], a
+
+.NotAtStartYet
+	dec [hl]
+	call CheckIfVisitedFlypoint
+	jr z, .ScrollPrev
+
+.Finally
+	call TownMapBubble
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 91bb5
+
+TownMapBubble: ; 91bb5
+; Draw the bubble containing the location text in the town map HUD
+
+; Top-left corner
+	hlcoord 1, 0
+	ld a, $30
+	ld [hli], a
+
+; Top row
+	ld bc, 16
+	ld a, " "
+	call ByteFill
+
+; Top-right corner
+	ld a, $31
+	ld [hl], a
+	hlcoord 1, 1
+
+
+; Middle row
+	ld bc, 18
+	ld a, " "
+	call ByteFill
+
+
+; Bottom-left corner
+	hlcoord 1, 2
+	ld a, $32
+	ld [hli], a
+
+; Bottom row
+	ld bc, 16
+	ld a, " "
+	call ByteFill
+
+; Bottom-right corner
+	ld a, $33
+	ld [hl], a
+
+
+; Print "Where?"
+	hlcoord 2, 0
+	ld de, .Where
+	call PlaceString
+
+; Print the name of the default flypoint
+	call .Name
+
+; Up/down arrows
+	hlcoord 18, 1
+	ld [hl], $34	
+	ret
+
+.Where
+	db "Where?@"
+
+.Name
+; We need the map location of the default flypoint
+	ld a, [wd002]
+	ld l, a
+	ld h, 0
+	add hl, hl ; two bytes per flypoint
+	ld de, Flypoints
+	add hl, de
+	ld e, [hl]
+
+	callba GetLandmarkName
+
+	hlcoord 2, 1
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+; 91c17
+
+GetMapCursorCoordinates: ; 91c17
+	ld a, [wd002]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	ld de, Flypoints
+	add hl, de
+	ld e, [hl]
+	callba GetLandmarkCoords
+	ld a, [wd003]
+	ld c, a
+	ld a, [wd004]
+	ld b, a
+	ld hl, $4
+	add hl, bc
+	ld [hl], e
+	ld hl, $5
+	add hl, bc
+	ld [hl], d
+	ret
+; 91c3c
+
+CheckIfVisitedFlypoint: ; 91c3c
+; Check if the flypoint loaded in [hl] has been visited yet.
+	push bc
+	push de
+	push hl
+	ld l, [hl]
+	ld h, 0
+	add hl, hl
+	ld de, Flypoints + 1
+	add hl, de
+	ld c, [hl]
+	call HasVisitedSpawn
+	pop hl
+	pop de
+	pop bc
+	and a
+	ret
+; 91c50
+
+HasVisitedSpawn: ; 91c50
+; Check if spawn point c has been visited.
+	ld hl, VisitedSpawns
+	ld b, CHECK_FLAG
+	ld d, 0
+	predef FlagPredef
+	ld a, c
+	ret
+; 91c5e
+
+Flypoints: ; 91c5e
+; landmark, spawn point
+
+	const_def
+
+flypoint: MACRO
+; \1\@FLY   EQUS "FLY_\1"
+; \1\@SPAWN EQUS "SPAWN_\1"
+	; const \1\@FLY
+	; db \2, \1\@SPAWN
+	const FLY_\1
+	db \2, SPAWN_\1
+ENDM
+
+; Johto
+	flypoint NEW_BARK,    NEW_BARK_TOWN
+	flypoint CHERRYGROVE, CHERRYGROVE_CITY
+	flypoint VIOLET,      VIOLET_CITY
+	flypoint AZALEA,      AZALEA_TOWN
+	flypoint GOLDENROD,   GOLDENROD_CITY
+	flypoint ECRUTEAK,    ECRUTEAK_CITY
+	flypoint OLIVINE,     OLIVINE_CITY
+	flypoint CIANWOOD,    CIANWOOD_CITY
+	flypoint MAHOGANY,    MAHOGANY_TOWN
+	flypoint LAKE,        LAKE_OF_RAGE
+	flypoint BLACKTHORN,  BLACKTHORN_CITY
+	flypoint MT_SILVER,   SILVER_CAVE
+
+; Kanto
+KANTO_FLYPOINT EQU const_value
+
+	flypoint PALLET,      PALLET_TOWN
+	flypoint VIRIDIAN,    VIRIDIAN_CITY
+	flypoint PEWTER,      PEWTER_CITY
+	flypoint CERULEAN,    CERULEAN_CITY
+	flypoint VERMILION,   VERMILION_CITY
+	flypoint ROCK_TUNNEL, ROCK_TUNNEL
+	flypoint LAVENDER,    LAVENDER_TOWN
+	flypoint CELADON,     CELADON_CITY
+	flypoint SAFFRON,     SAFFRON_CITY
+	flypoint FUCHSIA,     FUCHSIA_CITY
+	flypoint CINNABAR,    CINNABAR_ISLAND
+	flypoint INDIGO,      INDIGO_PLATEAU
+
+	db -1
+; 91c8f
+
+Function91c8f: ; 91c8f
+	ret
+; 91c90
+
+FlyMap: ; 91c90
+
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+
+; If we're not in a valid location, i.e. Pokecenter floor 2F,
+; the backup map information is used
+
+	cp SPECIAL_MAP
+	jr nz, .CheckRegion
+
+	ld a, [BackupMapGroup]
+	ld b, a
+	ld a, [BackupMapNumber]
+	ld c, a
+	call GetWorldMapLocation
+
+.CheckRegion
+; The first 46 locations are part of Johto. The rest are in Kanto
+	cp KANTO_LANDMARK
+	jr nc, .KantoFlyMap
+
+.JohtoFlyMap
+; Note that .NoKanto should be modified in tandem with this branch
+
+	push af
+
+; Start from New Bark Town
+	ld a, FLY_NEW_BARK
+	ld [wd002], a
+
+; Flypoints begin at New Bark Town...
+	ld [StartFlypoint], a
+; ..and end at Silver Cave
+	ld a, FLY_MT_SILVER
+	ld [EndFlypoint], a
+
+; Fill out the map
+	call FillJohtoMap
+	call .MapHud
+	pop af
+	call TownMapPlayerIcon
+	ret
+
+.KantoFlyMap
+
+; The event that there are no flypoints enabled in a map is not
+; accounted for. As a result, if you attempt to select a flypoint
+; when there are none enabled, the game will crash. Additionally,
+; the flypoint selection has a default starting point that
+; can be flown to even if none are enabled
+
+; To prevent both of these things from happening when the player
+; enters Kanto, fly access is restricted until Indigo Plateau is
+; visited and its flypoint enabled
+
+	push af
+	ld c, SPAWN_INDIGO
+	call HasVisitedSpawn
+	and a
+	jr z, .NoKanto
+
+; Kanto's map is only loaded if we've visited Indigo Plateau
+
+; Flypoints begin at Pallet Town...
+	ld a, FLY_PALLET
+	ld [StartFlypoint], a
+; ...and end at Indigo Plateau
+	ld a, FLY_INDIGO
+	ld [EndFlypoint], a
+
+; Because Indigo Plateau is the first flypoint the player
+; visits, it's made the default flypoint
+	ld [wd002], a
+
+; Fill out the map
+	call FillKantoMap
+	call .MapHud
+	pop af
+	call TownMapPlayerIcon
+	ret
+
+.NoKanto
+; If Indigo Plateau hasn't been visited, we use Johto's map instead
+
+; Start from New Bark Town
+	ld a, FLY_NEW_BARK
+	ld [wd002], a
+
+; Flypoints begin at New Bark Town...
+	ld [StartFlypoint], a
+; ..and end at Silver Cave
+	ld a, FLY_MT_SILVER
+	ld [EndFlypoint], a
+
+	call FillJohtoMap
+
+	pop af
+
+.MapHud
+	call TownMapBubble
+	call TownMapPals
+
+	ld hl, VBGMap0 ; BG Map 0
+	call TownMapBGUpdate
+
+	call TownMapMon
+	ld a, c
+	ld [wd003], a
+	ld a, b
+	ld [wd004], a
+	ret
+; 91d11
+
+Function91d11: ; 91d11
+	ld a, [wd002]
+	push af
+	ld a, [wd003]
+	push af
+	ld a, e
+	ld [wd002], a
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	ld a, $1
+	ld [hInMenu], a
+	ld de, GFX_922d1
+	ld hl, VTiles0 tile $7f
+	lb bc, BANK(GFX_922d1), 1
+	call Request2bpp ; actually 1bpp
+	call Function91ed0
+	ld hl, VTiles0 tile $78
+	ld c, $4
+	call Request2bpp
+	call Function91ff2
+	call FillKantoMap
+	call Function91de9
+	call TownMapPals
+	ld hl, VBGMap1
+	call TownMapBGUpdate
+	call FillJohtoMap
+	call Function91de9
+	call TownMapPals
+	ld hl, VBGMap0
+	call TownMapBGUpdate
+	ld b, $2
+	call GetSGBLayout
+	call SetPalettes
+	xor a
+	ld [hBGMapMode], a
+	xor a
+	call Function91e1e
+.asm_91d6e
+	call JoyTextDelay
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and A_BUTTON | B_BUTTON
+	jr nz, .asm_91d8f
+	ld a, [hJoypadDown]
+	and SELECT
+	jr nz, .asm_91d87
+	call Function91d9b
+	call Function91dcd
+	jr .asm_91d8a
+
+.asm_91d87
+	call Function91e5a
+
+.asm_91d8a
+	call DelayFrame
+	jr .asm_91d6e
+
+.asm_91d8f
+	call ClearSprites
+	pop af
+	ld [wd003], a
+	pop af
+	ld [wd002], a
+	ret
+; 91d9b
+
+Function91d9b: ; 91d9b
+	ld a, [hl]
+	and $20
+	jr nz, .asm_91da6
+	ld a, [hl]
+	and $10
+	jr nz, .asm_91db7
+	ret
+
+.asm_91da6
+	ld a, [hWY]
+	cp $90
+	ret z
+	call ClearSprites
+	ld a, $90
+	ld [hWY], a
+	xor a
+	call Function91e1e
+	ret
+
+.asm_91db7
+	ld a, [StatusFlags]
+	bit 6, a
+	ret z
+	ld a, [hWY]
+	and a
+	ret z
+	call ClearSprites
+	xor a
+	ld [hWY], a
+	ld a, $1
+	call Function91e1e
+	ret
+; 91dcd
+
+Function91dcd: ; 91dcd
+	ld a, [hVBlankCounter]
+	ld e, a
+	and $f
+	ret nz
+	ld a, e
+	and $10
+	jr nz, .asm_91ddc
+	call ClearSprites
+	ret
+
+.asm_91ddc
+	hlcoord 0, 0
+	ld de, Sprites
+	ld bc, $a0
+	call CopyBytes
+	ret
+; 91de9
+
+Function91de9: ; 91de9
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH
+	ld a, $7f
+	call ByteFill
+	hlcoord 0, 1
+	ld a, $6
+	ld [hli], a
+	ld bc, SCREEN_HEIGHT
+	ld a, $7
+	call ByteFill
+	ld [hl], $17
+	call GetPokemonName
+	hlcoord 2, 0
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, String_91e16
+	call PlaceString
+	ret
+; 91e16
+
+String_91e16:
+	db "'S NEST@"
+; 91e1e
+
+Function91e1e: ; 91e1e
+	ld [wd003], a
+	ld e, a
+	callba Function2a01f
+	decoord 0, 0
+	ld hl, Sprites
+.asm_91e2e
+	ld a, [de]
+	and a
+	jr z, .asm_91e4d
+	push de
+	ld e, a
+	push hl
+	callba GetLandmarkCoords
+	pop hl
+	ld a, d
+	sub $4
+	ld [hli], a
+	ld a, e
+	sub $4
+	ld [hli], a
+	ld a, $7f
+	ld [hli], a
+	xor a
+	ld [hli], a
+	pop de
+	inc de
+	jr .asm_91e2e
+
+.asm_91e4d
+	ld hl, Sprites
+	decoord 0, 0
+	ld bc, $a0
+	call CopyBytes
+	ret
+; 91e5a
+
+Function91e5a: ; 91e5a
+	call Function91ea9
+	ret c
+
+	ld a, [wd002]
+	ld e, a
+	callba GetLandmarkCoords
+	ld c, e
+	ld b, d
+	ld de, Unknown_91e9c
+	ld hl, Sprites
+.asm_91e70
+	ld a, [de]
+	cp $80
+	jr z, .asm_91e91
+
+	add b
+	ld [hli], a
+	inc de
+
+	ld a, [de]
+	add c
+	ld [hli], a
+	inc de
+
+	ld a, [de]
+	add $78
+	ld [hli], a
+	inc de
+
+	push bc
+	ld c, 0
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_91e8c
+	inc c
+.asm_91e8c
+	ld a, c
+	ld [hli], a
+	pop bc
+
+	jr .asm_91e70
+
+.asm_91e91
+	ld hl, Sprites + $10
+	ld bc, SpritesEnd - (Sprites + $10)
+	xor a
+	call ByteFill
+	ret
+; 91e9c
+
+Unknown_91e9c: ; 91e9c
+	db -8, -8,  0
+	db -8,  0,  1
+	db  0, -8,  2
+	db  0,  0,  3
+	db $80 ; terminator
+; 91ea9
+
+Function91ea9: ; 91ea9
+	ld a, [wd002]
+	cp FAST_SHIP
+	jr z, .johto
+	cp KANTO_LANDMARK
+	jr c, .johto
+
+.kanto
+	ld a, [wd003]
+	and a
+	jr z, .clear
+	jr .ok
+
+.johto
+	ld a, [wd003]
+	and a
+	jr nz, .clear
+
+.ok
+	and a
+	ret
+
+.clear
+	ld hl, Sprites
+	ld bc, SpritesEnd - Sprites
+	xor a
+	call ByteFill
+	scf
+	ret
+; 91ed0
+
+Function91ed0: ; 91ed0
+	ld a, [wd002]
+	cp FAST_SHIP
+	jr z, .asm_91ede
+	callba GetPlayerIcon
+	ret
+
+.asm_91ede
+	ld de, FastShipGFX
+	ld b, BANK(FastShipGFX)
+	ret
+; 91ee4
+
+TownMapBGUpdate: ; 91ee4
+; Update BG Map tiles and attributes
+
+; BG Map address
+	ld a, l
+	ld [hBGMapAddress], a
+	ld a, h
+	ld [hBGMapAddress + 1], a
+
+; Only update palettes on CGB
+	ld a, [hCGB]
+	and a
+	jr z, .tiles
+
+; BG Map mode 2 (palettes)
+	ld a, 2
+	ld [hBGMapMode], a
+
+; The BG Map is updated in thirds, so we wait
+; 3 frames to update the whole screen's palettes.
+	ld c, 3
+	call DelayFrames
+
+.tiles
+; Update BG Map tiles
+	call WaitBGMap
+
+; Turn off BG Map update
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 91eff
+
+FillJohtoMap: ; 91eff
+	ld de, JohtoMap
+	jr FillTownMap
+
+FillKantoMap: ; 91f04
+	ld de, KantoMap
+
+FillTownMap: ; 91f07
+	hlcoord 0, 0
+.loop
+	ld a, [de]
+	cp $ff
+	ret z
+	ld a, [de]
+	ld [hli], a
+	inc de
+	jr .loop
+; 91f13
+
+TownMapPals: ; 91f13
+; Assign palettes based on tile ids
+
+	hlcoord 0, 0
+	decoord 0, 0, AttrMap
+	ld bc, 360
+.loop
+; Current tile
+	ld a, [hli]
+	push hl
+
+; HP/borders use palette 0
+	cp $60
+	jr nc, .pal0
+
+; The palette data is condensed to nybbles,
+; least-significant first.
+	ld hl, TownMapPalMap
+	srl a
+	jr c, .odd
+
+; Even-numbered tile ids take the bottom nybble...
+	add l
+	ld l, a
+	ld a, h
+	adc 0
+	ld h, a
+	ld a, [hl]
+	and %111
+	jr .update
+
+.odd
+; ...and odd ids take the top.
+	add l
+	ld l, a
+	ld a, h
+	adc 0
+	ld h, a
+	ld a, [hl]
+	swap a
+	and %111
+	jr .update
+
+.pal0
+	xor a
+
+.update
+	pop hl
+	ld [de], a
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .loop
+	ret
+
+TownMapPalMap:
+	db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00
+	db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00
+	db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33
+	db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00
+; 91f7b
+
+TownMapMon: ; 91f7b
+; Draw the FlyMon icon at town map location in
+
+; Get FlyMon species
+	ld a, [CurPartyMon]
+	ld hl, PartySpecies
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	ld [wd265], a
+
+; Get FlyMon icon
+	ld e, 8 ; starting tile in VRAM
+	callba GetSpeciesIcon
+
+; Animation/palette
+	ld de, 0
+	ld a, $0
+	call Function3b2a
+
+	ld hl, 3
+	add hl, bc
+	ld [hl], 8
+	ld hl, 2
+	add hl, bc
+	ld [hl], 0
+	ret
+; 91fa6
+
+TownMapPlayerIcon: ; 91fa6
+; Draw the player icon at town map location in a
+	push af
+
+	callba GetPlayerIcon
+
+; Standing icon
+	ld hl, VTiles0 tile $10
+	ld c, 4 ; # tiles
+	call Request2bpp
+
+; Walking icon
+	ld hl, $c0
+	add hl, de
+	ld d, h
+	ld e, l
+	ld hl, VTiles0 tile $14
+	ld c, 4 ; # tiles
+	ld a, BANK(ChrisSpriteGFX) ; does nothing
+	call Request2bpp
+
+; Animation/palette
+	ld de, 0
+	ld b, $0a ; Male
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_91fd3
+	ld b, $1e ; Female
+.asm_91fd3
+	ld a, b
+	call Function3b2a
+
+	ld hl, $3
+	add hl, bc
+	ld [hl], $10
+
+	pop af
+	ld e, a
+	push bc
+	callba GetLandmarkCoords
+	pop bc
+
+	ld hl, 4
+	add hl, bc
+	ld [hl], e
+	ld hl, 5
+	add hl, bc
+	ld [hl], d
+	ret
+; 0x91ff2
+
+Function91ff2: ; 91ff2
+	ld hl, TownMapGFX
+	ld de, VTiles2
+	lb bc, BANK(TownMapGFX), $30
+	call DecompressRequest2bpp
+	ret
+; 91fff
+
+
+JohtoMap: ; 91fff
+INCBIN "gfx/misc/johto.bin"
+; 92168
+
+KantoMap: ; 92168
+INCBIN "gfx/misc/kanto.bin"
+; 922d1
+
+
+GFX_922d1: ; 922d1
+INCBIN "gfx/unknown/0922d1.2bpp"
+GFX_922e1: ; 922e1
+INCBIN "gfx/unknown/0922e1.2bpp"
+GFX_92301: ; 92301
+INCBIN "gfx/unknown/092301.2bpp"
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1,6 +1,6 @@
 LinkCommunications: ; 28000
-	call WhiteBGMap
-	ld c, $50
+	call ClearBGPalettes
+	ld c, 80
 	call DelayFrames
 	call ClearScreen
 	call ClearSprites
@@ -8,7 +8,7 @@
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
-	ld c, $50
+	ld c, 80
 	call DelayFrames
 	call ClearScreen
 	call UpdateSprites
@@ -431,7 +431,7 @@
 	ld de, OTName
 	ld bc, NAME_LENGTH
 	call CopyBytes
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ld a, [wc2d7]
 	push af
 	ld a, $1
@@ -509,7 +509,7 @@
 
 Function283f2: ; 283f2
 	ld a, $1
-	ld [$ffcc], a
+	ld [hFFCC], a
 .asm_283f6
 	ld a, [hl]
 	ld [hSerialSend], a
@@ -521,7 +521,7 @@
 .asm_28401
 	dec a
 	jr nz, .asm_28401
-	ld a, [$ffcc]
+	ld a, [hFFCC]
 	and a
 	ld a, b
 	pop bc
@@ -528,7 +528,7 @@
 	jr z, .asm_28411
 	dec hl
 	xor a
-	ld [$ffcc], a
+	ld [hFFCC], a
 	jr .asm_283f6
 
 .asm_28411
@@ -2172,7 +2172,7 @@
 Function28fdb: ; 28fdb
 	xor a
 	ld [wJumptableIndex], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -2495,7 +2495,7 @@
 ; 29229
 
 Function29229: ; 29229
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
@@ -2623,7 +2623,7 @@
 
 Function292f6: ; 292f6
 	push af
-	call WhiteBGMap
+	call ClearBGPalettes
 	call WaitTop
 	ld a, VBGMap1 / $100
 	ld [hBGMapAddress + 1], a
@@ -3902,7 +3902,7 @@
 
 Function29e0c: ; 29e0c
 	xor a
-	ld [$ffca], a
+	ld [hFFCA], a
 	ld a, [wcf5b]
 	ld h, a
 	ld a, [wcf5c]
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -655,7 +655,7 @@
 	ld hl, OBJECT_12
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 rept 3
 	ld [hli], a
@@ -848,7 +848,7 @@
 ; 4780
 
 ClearObjectStructField27: ; 4780
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], 0
 	ret
@@ -855,7 +855,7 @@
 ; 4787
 
 IncrementObjectStructField27: ; 4787
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	inc [hl]
 	ret
@@ -862,7 +862,7 @@
 ; 478d
 
 DecrementObjectStructField27: ; 478d
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	dec [hl]
 	ret
@@ -869,7 +869,7 @@
 ; 4793
 
 JumptoObjectStructField27: ; 4793
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld a, [hl]
 	pop hl
@@ -1043,17 +1043,17 @@
 
 .ObeyDPad: ; 487c
 	ld hl, Function5000
-	jp Function5041
+	jp HandleMovementData
 ; 4882
 
 .Movement08: ; 4882
 	ld hl, Function5015
-	jp Function5041
+	jp HandleMovementData
 ; 4888
 
 .Movement09: ; 4888
 	ld hl, Function5026
-	jp Function5041
+	jp HandleMovementData
 ; 488e
 
 .Movement0a: ; 488e
@@ -1070,7 +1070,7 @@
 
 .Movement0d: ; 4897
 	ld hl, Function5000
-	jp Function5041
+	jp HandleMovementData
 ; 489d
 
 .Movement0e: ; 489d
@@ -1079,12 +1079,12 @@
 
 .Follow: ; 48a0
 	ld hl, Function54e6
-	jp Function5041
+	jp HandleMovementData
 ; 48a6
 
 .Script: ; 48a6
 	ld hl, Function500e
-	jp Function5041
+	jp HandleMovementData
 ; 48ac
 
 .Strength: ; 48ac
@@ -1149,12 +1149,15 @@
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld d, [hl]
+
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld e, [hl]
+
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
+
 	push bc
 	call GetObjectStruct
 	ld hl, OBJECT_DIRECTION_WALKING
@@ -1162,6 +1165,7 @@
 	ld a, [hl]
 	cp STANDING
 	jr z, .standing
+
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -2400,11 +2404,14 @@
 ; 5000
 
 Function5000: ; unscripted?
+; copy [wc3de] to [wc2df]
 	ld a, [wc2de]
 	ld hl, wc2df
 	ld [hl], a
-	ld a, $3e
+; load [wc2de] with movement_step_sleep_1
+	ld a, movement_step_sleep_1
 	ld [wc2de], a
+; recover the previous value of [wc2de]
 	ld a, [hl]
 	ret
 ; 500e
@@ -2416,7 +2423,7 @@
 ; 5015
 
 Function5015: ; 5015
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld e, [hl]
 	inc [hl]
@@ -2431,7 +2438,7 @@
 ; 5026
 
 Function5026: ; 5026
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld e, [hl]
 	inc [hl]
@@ -2446,16 +2453,16 @@
 ; 5037
 
 Function5037: ; 5037
-	ld hl, Function503d
-	jp Function5041
+	ld hl, GetMovementPerson
+	jp HandleMovementData
 ; 503d
 
-Function503d: ; 503d
+GetMovementPerson: ; 503d
 	ld a, [wMovementPerson]
 	ret
 ; 5041
 
-Function5041: ; 5041
+HandleMovementData: ; 5041
 	call CopyMovementPointer
 .loop
 	xor a
@@ -2484,7 +2491,7 @@
 	jp [hl]
 ; 5065
 
-Function5065: ; 5065
+ContinueReadingMovement: ; 5065
 	ld a, 1
 	ld [wc2ea], a
 	ret
@@ -2563,7 +2570,8 @@
 .done
 	call Function550a
 	ret c
-	ld a, $3e
+
+	ld a, movement_step_sleep_1
 	ret
 ; 550a
 
@@ -2585,7 +2593,7 @@
 .nope
 	ld a, $ff
 	ld [wObjectFollow_Follower], a
-	ld a, $47
+	ld a, movement_step_end
 	scf
 	ret
 ; 5529
@@ -2696,6 +2704,7 @@
 Function55ac: ; 55ac
 	call FindFirstEmptyObjectStruct
 	ret nc
+
 	ld d, h
 	ld e, l
 	callba Function8286
@@ -2703,11 +2712,14 @@
 ; 55b9
 
 Function55b9: ; 55b9
+; load into wc2f0:
+; -1, -1, [de], [de + 1], [de + 2], [hMapObjectIndexBuffer], [MapX], [MapY], -1
 	ld hl, wc2f0
 	ld [hl], -1
 	inc hl
 	ld [hl], -1
 	inc hl
+
 	ld a, [de]
 	inc de
 	ld [hli], a
@@ -2716,8 +2728,10 @@
 	ld [hli], a
 	ld a, [de]
 	ld [hli], a
+
 	ld a, [hMapObjectIndexBuffer]
 	ld [hli], a
+
 	push hl
 	ld hl, OBJECT_MAP_X
 	add hl, bc
@@ -2726,6 +2740,7 @@
 	add hl, bc
 	ld e, [hl]
 	pop hl
+
 	ld [hl], d
 	inc hl
 	ld [hl], e
@@ -2786,6 +2801,7 @@
 Function5629: ; 5629
 	cp NUM_OBJECTS
 	ret nc
+
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
@@ -2792,11 +2808,14 @@
 	ld a, [hl]
 	cp -1
 	ret z
+
 	cp NUM_OBJECT_STRUCTS
 	ret nc
+
 	call GetObjectStruct
 	call GetObjectSprite
 	ret z
+
 	call Function5673
 	ret
 ; 5645
@@ -2977,9 +2996,9 @@
 
 .ok7
 	ld a, d
-	ld [$ffbf], a
+	ld [hFFBF], a
 .loop
-	ld a, [$ffbf]
+	ld a, [hFFBF]
 	ld d, a
 	ld a, [hUsedSpriteTile]
 	add e
@@ -3180,7 +3199,7 @@
 	cp -1
 	ret z
 	call GetObjectStruct
-	callba Function58e3
+	callba Function58e3 ; no need to bankswitch
 	ld a, -1
 	ld [wObjectFollow_Follower], a
 	ret
@@ -3294,7 +3313,8 @@
 	add hl, bc
 	ld a, [hl]
 	cp -1
-	jp z, Function5903
+	jp z, Function5903 ; a jr would have been appropriate here
+
 	push bc
 	call GetMapObject
 	ld hl, MAPOBJECT_MOVEMENT
@@ -3301,9 +3321,11 @@
 	add hl, bc
 	ld a, [hl]
 	pop bc
+
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
@@ -3322,6 +3344,7 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
@@ -3495,7 +3518,7 @@
 .next
 	ld a, [hli]
 	ld d, a
-	and %11110000
+	and $f0
 	ret z
 	cp c
 	jr nz, .next
@@ -3503,20 +3526,20 @@
 	push bc
 	push hl
 	ld a, d
-	and %00001111
-	call Function5ac2
-	call Function5a0d
+	and $f
+	call .GetObjectStructPointer
+	call .asm_5a0d
 	pop hl
 	pop bc
 	jr .next
 ; 5a0d
 
-Function5a0d: ; 5a0d
+.asm_5a0d: ; 5a0d
 	ld hl, OBJECT_SPRITE_TILE
 	add hl, bc
 	ld a, [hl]
 	and %01111111
-	ld [$ffc1], a
+	ld [hFFC1], a
 
 	xor a
 	bit 7, [hl]
@@ -3550,7 +3573,7 @@
 	jr z, .skip4
 	or %10000000
 .skip4
-	ld [$ffc2], a
+	ld [hFFC2], a
 
 	ld hl, OBJECT_SPRITE_X
 	add hl, bc
@@ -3565,7 +3588,7 @@
 	ld e, a
 	ld a, [wd14c]
 	add e
-	ld [$ffbf], a
+	ld [hFFBF], a
 
 	ld hl, OBJECT_SPRITE_Y
 	add hl, bc
@@ -3580,7 +3603,7 @@
 	ld e, a
 	ld a, [wd14d]
 	add e
-	ld [$ffc0], a
+	ld [hFFC0], a
 
 	ld hl, OBJECT_FACING_STEP
 	add hl, bc
@@ -3609,7 +3632,7 @@
 	jr nc, .full
 
 .addsprite
-	ld a, [$ffc0]
+	ld a, [hFFC0]
 	add [hl]
 	inc hl
 
@@ -3616,7 +3639,7 @@
 	ld [bc], a
 	inc c
 
-	ld a, [$ffbf]
+	ld a, [hFFBF]
 	add [hl]
 	inc hl
 
@@ -3626,7 +3649,7 @@
 	ld e, [hl]
 	inc hl
 
-	ld a, [$ffc1]
+	ld a, [hFFC1]
 	bit 2, e
 	jr z, .nope1
 	xor a
@@ -3640,7 +3663,7 @@
 	ld a, e
 	bit 1, a
 	jr z, .nope2
-	ld a, [$ffc2]
+	ld a, [hFFC2]
 	or e
 .nope2
 	and %11110000
@@ -3665,7 +3688,7 @@
 	ret
 ; 5ac2
 
-Function5ac2: ; 5ac2
+.GetObjectStructPointer: ; 5ac2
 	ld c, a
 	ld b, 0
 	ld hl, .Addresses
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -17,28 +17,28 @@
 ; 15377
 
 MapSetupScripts: ; 15377
-	dw MapSetupScript1
-	dw MapSetupScript2
-	dw MapSetupScript3
-	dw MapSetupScript4
-	dw MapSetupScript5
-	dw MapSetupScript6
-	dw MapSetupScript7
-	dw MapSetupScript8
-	dw MapSetupScript9
-	dw MapSetupScript10
-	dw MapSetupScript11
-	dw MapSetupScript12
+	dw MapSetupScript_Warp
+	dw MapSetupScript_Continue
+	dw MapSetupScript_ReloadMap
+	dw MapSetupScript_Teleport
+	dw MapSetupScript_Door
+	dw MapSetupScript_Fall
+	dw MapSetupScript_Connection
+	dw MapSetupScript_LinkReturn
+	dw MapSetupScript_Train
+	dw MapSetupScript_Submenu
+	dw MapSetupScript_BadWarp
+	dw MapSetupScript_Fly
 ; 1538f
 
-MapSetupScript4: ; 1538f
+MapSetupScript_Teleport: ; 1538f
 	db map_prolong_sprites
 
-MapSetupScript12: ; 15390
+MapSetupScript_Fly: ; 15390
 	db map_fade_out_palettes
 	db map_keep_roam
 
-MapSetupScript1: ; 15392
+MapSetupScript_Warp: ; 15392
 	db map_lcd_off
 	db map_sound_off
 	db map_load_spawn
@@ -63,7 +63,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript11: ; 153a9
+MapSetupScript_BadWarp: ; 153a9
 	db map_load_spawn
 	db map_attributes
 	db map_change_callback
@@ -87,7 +87,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript7: ; 153bf
+MapSetupScript_Connection: ; 153bf
 	db map_animations_off
 	db map_load_connection
 	db map_attributes
@@ -106,13 +106,13 @@
 	db map_animations_on
 	db map_end_setup_script
 
-MapSetupScript6: ; 153d0
+MapSetupScript_Fall: ; 153d0
 	db map_prolong_sprites
 
-MapSetupScript5: ; 153d1
+MapSetupScript_Door: ; 153d1
 	db map_fade_out_palettes
 
-MapSetupScript9: ; 153d2
+MapSetupScript_Train: ; 153d2
 	db map_load_warp
 	db map_attributes
 	db map_warp_face
@@ -135,7 +135,7 @@
 	db map_update_roam
 	db map_end_setup_script
 
-MapSetupScript3: ; 153e7
+MapSetupScript_ReloadMap: ; 153e7
 	db map_fade
 	db map_clear_bg_palettes
 	db map_lcd_off
@@ -153,7 +153,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript8: ; 153f7
+MapSetupScript_LinkReturn: ; 153f7
 	db map_fade
 	db map_lcd_off
 	db map_sound_off
@@ -172,7 +172,7 @@
 	db map_text_scroll_off
 	db map_end_setup_script
 
-MapSetupScript2: ; 15408
+MapSetupScript_Continue: ; 15408
 	db map_lcd_off
 	db map_sound_off
 	db map_attributes_2
@@ -192,7 +192,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript10: ; 1541a
+MapSetupScript_Submenu: ; 1541a
 	db map_load_blocks
 	db map_connection_blocks
 	db map_end_setup_script
@@ -245,7 +245,7 @@
 MapSetupCommands: ; 15440
 	dba EnableLCD ; 00
 	dba DisableLCD ; 01
-	dba SoundRestart ; 02
+	dba MapSetup_Sound_Off ; 02
 	dba PlayMapMusic ; 03
 	dba RestartMapMusic ; 04
 	dba FadeToMapMusic ; 05
@@ -271,9 +271,9 @@
 	dba LoadWarpData ; 19
 	dba LoadMapAttributes ; 1a
 	dba LoadMapAttributes_IgnoreHidden ; 1b
-	dba WhiteBGMap ; 1c
-	dba FadeBlackBGMap ; 1d
-	dba FadeInBGMap ; 1e
+	dba ClearBGPalettes ; 1c
+	dba FadeOutPalettes ; 1d
+	dba FadeInPalettes ; 1e
 	dba GetCoordOfUpperLeftCorner ; 1f
 	dba RestoreFacingAfterWarp ; 20
 	dba SpawnInFacingDown ; 21
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -61,19 +61,19 @@
 	dw Movement_fix_facing            ; 3b
 	dw Movement_3c                    ; 3c
 	dw Movement_hide_person           ; 3d
-	dw Movement_show_person           ; 3e
-	dw Movement_3f                    ; 3f
-	dw Movement_40                    ; 40
-	dw Movement_41                    ; 41
-	dw Movement_42                    ; 42
-	dw Movement_43                    ; 43
-	dw Movement_44                    ; 44
-	dw Movement_accelerate_last       ; 45
+	dw Movement_step_sleep_1          ; 3e
+	dw Movement_step_sleep_2          ; 3f
+	dw Movement_step_sleep_3          ; 40
+	dw Movement_step_sleep_4          ; 41
+	dw Movement_step_sleep_5          ; 42
+	dw Movement_step_sleep_6          ; 43
+	dw Movement_step_sleep_7          ; 44
+	dw Movement_step_sleep_8          ; 45
 	dw Movement_step_sleep            ; 46
 	dw Movement_step_end              ; 47
 	dw Movement_48                    ; 48
 	dw Movement_remove_person         ; 49
-	dw Movement_4a                    ; 4a
+	dw Movement_step_loop             ; 4a
 	dw Movement_4b                    ; 4b
 	dw Movement_teleport_from         ; 4c
 	dw Movement_teleport_to           ; 4d
@@ -80,13 +80,13 @@
 	dw Movement_skyfall               ; 4e
 	dw Movement_step_wait5            ; 4f
 	dw Movement_50                    ; 50
-	dw Movement_51                    ; 51
-	dw Movement_52                    ; 52
+	dw Movement_fish_got_bite         ; 51
+	dw Movement_fish_cast_rod         ; 52
 	dw Movement_hide_emote            ; 53
 	dw Movement_show_emote            ; 54
 	dw Movement_step_shake            ; 55
 	dw Movement_56                    ; 56
-	dw Movement_57                    ; 57
+	dw Movement_rock_smash            ; 57
 	dw Movement_58                    ; 58
 	dw Movement_59                    ; 59
 ; 5129
@@ -139,7 +139,7 @@
 	ld [hl], $3
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 516a
 
@@ -156,7 +156,7 @@
 	ld [hl], a
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $12
@@ -163,7 +163,7 @@
 	ret
 ; 5189
 
-Movement_51: ; 5189
+Movement_fish_got_bite: ; 5189
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $6
@@ -173,7 +173,7 @@
 	ret
 ; 5196
 
-Movement_57: ; 5196
+Movement_rock_smash: ; 5196
 	call GetMovementByte
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
@@ -187,7 +187,7 @@
 	ret
 ; 51ab
 
-Movement_52: ; 51ab
+Movement_fish_cast_rod: ; 51ab
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $6
@@ -197,11 +197,11 @@
 	ret
 ; 51b8
 
-Movement_4a: ; 51b8
-	ld hl, OBJECT_27
+Movement_step_loop: ; 51b8
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], $0
-	jp Function5065
+	jp ContinueReadingMovement
 ; 51c1
 
 Movement_step_end: ; 51c1
@@ -209,11 +209,14 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_27
+
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], $0
+
 	ld hl, VramState
 	res 7, [hl]
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $1
@@ -225,16 +228,20 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_27
+
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], $0
+
 	call GetMovementByte
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $3
+
 	ld hl, VramState
 	res 7, [hl]
 	ret
@@ -245,10 +252,10 @@
 	ld hl, wObjectFollow_Leader
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
-	jr nz, .asm_520a
-	ld [hl], $ff
+	jr nz, .not_leading
+	ld [hl], -1
 
-.asm_520a
+.not_leading
 	ld hl, VramState
 	res 7, [hl]
 	ret
@@ -258,43 +265,45 @@
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $1
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $4
+
 	ld hl, VramState
 	res 7, [hl]
 	ret
 ; 5222
 
-Movement_show_person: ; 5222
+Movement_step_sleep_1: ; 5222
 	ld a, $1
 	jr Function5247
 
-Movement_3f: ; 5226
+Movement_step_sleep_2: ; 5226
 	ld a, $2
 	jr Function5247
 
-Movement_40: ; 522a
+Movement_step_sleep_3: ; 522a
 	ld a, $3
 	jr Function5247
 
-Movement_41: ; 522e
+Movement_step_sleep_4: ; 522e
 	ld a, $4
 	jr Function5247
 
-Movement_42: ; 5232
+Movement_step_sleep_5: ; 5232
 	ld a, $5
 	jr Function5247
 
-Movement_43: ; 5236
+Movement_step_sleep_6: ; 5236
 	ld a, $6
 	jr Function5247
 
-Movement_44: ; 523a
+Movement_step_sleep_7: ; 523a
 	ld a, $7
 	jr Function5247
 
-Movement_accelerate_last: ; 523e
+Movement_step_sleep_8: ; 523e
 	ld a, $8
 	jr Function5247
 
@@ -309,15 +318,18 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $3
+
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $1
+
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 525f
 
@@ -334,7 +346,7 @@
 	ld [hl], $3
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 5279
 
@@ -351,7 +363,7 @@
 	ld [hl], $b
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 5293
 
@@ -359,7 +371,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	res 3, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 529c
 
 Movement_39: ; 529c
@@ -366,7 +378,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	set 3, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52a5
 
 Movement_remove_fixed_facing: ; 52a5
@@ -373,7 +385,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	res 2, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52ae
 
 Movement_fix_facing: ; 52ae
@@ -380,7 +392,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	set 2, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52b7
 
 Movement_3c: ; 52b7
@@ -387,7 +399,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	res 0, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52c0
 
 Movement_hide_person: ; 52c0
@@ -394,17 +406,17 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	set 0, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52c9
 
 Movement_hide_emote: ; 52c9
 	call Function5579
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52cf
 
 Movement_show_emote: ; 52cf
 	call Function5547
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52d5
 
 Movement_step_shake: ; 52d5
@@ -413,7 +425,7 @@
 
 	call GetMovementByte
 	call Function5565
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52de
 
 Movement_turn_head_down: ; 52de
@@ -441,7 +453,7 @@
 	ld [hl], $1
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 5300
 
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -40,7 +40,7 @@
 ; 116f8
 
 Function116f8: ; 116f8
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld b, $8
 	call GetSGBLayout
 	call DisableLCD
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -594,7 +594,7 @@
 	ld [Options], a
 	ld a, $8
 	ld [PartyMenuActionText], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	callba Function5004f
 	callba Function50405
 	callba Function503e0
@@ -922,7 +922,7 @@
 	ret
 
 .asm_1066c: ; 1066c (4:466c)
-	call WhiteBGMap
+	call ClearBGPalettes
 	jr .asm_1067e
 
 .BattleOnly: ; 10671 (4:4671)
@@ -1401,7 +1401,7 @@
 
 
 Function10955: ; 10955
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -2,10 +2,10 @@
 	call DisableSpriteUpdates
 	xor a
 	ld [PartyMenuActionText], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function5003f
 	call WaitBGMap
-	call Function32f9
+	call SetPalettes
 	call DelayFrame
 	call PartyMenuSelect
 	call Function2b74
@@ -17,12 +17,12 @@
 	ld a, b
 	ld [PartyMenuActionText], a
 	call DisableSpriteUpdates
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function5003f
 	call WaitBGMap
 	ld b, $a
 	call GetSGBLayout
-	call Function32f9
+	call SetPalettes
 	call DelayFrame
 	call PartyMenuSelect
 	call Function2b74
@@ -57,43 +57,42 @@
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
 	call ByteFill ; blank the tilemap
-	call Function50396 ; This reads from a pointer table???
+	call GetPartyMenuTilemapPointers ; This reads from a pointer table???
 .loop
 	ld a, [hli]
-	cp -1
-	jr z, .asm_50084 ; 0x5007a $8
+	cp $ff
+	jr z, .end ; 0x5007a $8
 	push hl
-	ld hl, .jumptable
+	ld hl, .Jumptable
 	rst JumpTable
 	pop hl
 	jr .loop ; 0x50082 $f3
-
-.asm_50084
+.end
 	pop af
 	ld [Options], a
 	ret
 ; 0x50089
 
-.jumptable: ; 50089
-	dw .displaynicks ; 0
-	dw .drawhpbars ; 1
-	dw Function50138 ; 2
-	dw Function50176 ; 3
-	dw Function501b2 ; 4
-	dw Function501e0 ; 5
-	dw Function5022f ; 6
-	dw Function502b1 ; 7
-	dw Function50307 ; 8
+.Jumptable: ; 50089
+	dw PlacePartyNicknames
+	dw PlacePartyHPBar
+	dw PlacePartyMenuHPDigits
+	dw PlacePartyMonLevel
+	dw PlacePartyMonStatus
+	dw PlacePartyMonTMHMCompatibility
+	dw PlacePartyMonEvoStoneCompatibility
+	dw PlacePartyMonGender
+	dw PlacePartyMonMobileBattleSelection
 ; 5009b
 
-.displaynicks: ; 5009b
+PlacePartyNicknames: ; 5009b
 	hlcoord 3, 1
 	ld a, [PartyCount]
 	and a
-	jr z, .done
+	jr z, .end
 	ld c, a
 	ld b, $0
-.loop2
+.loop
 	push bc
 	push hl
 	push hl
@@ -103,28 +102,28 @@
 	pop hl
 	call PlaceString
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop bc
 	inc b
 	dec c
-	jr nz, .loop2
+	jr nz, .loop
 
-.done
+.end
 rept 2
 	dec hl
 endr
-	ld de, .cancelstring
+	ld de, .CANCEL
 	call PlaceString
 	ret
 ; 500c8
 
-.cancelstring: ; 500c8
+.CANCEL: ; 500c8
 	db "CANCEL@"
 ; 500cf
 
 
-.drawhpbars: ; 500cf
+PlacePartyHPBar: ; 500cf
 	xor a
 	ld [wcda9], a
 	ld a, [PartyCount]
@@ -133,17 +132,17 @@
 	ld c, a
 	ld b, $0
 	hlcoord 11, 2
-.loop3
+.loop
 	push bc
 	push hl
-	call Function50389
+	call PartyMenuCheckEgg
 	jr z, .skip
 	push hl
-	call _fillhpbar
+	call PlacePartymonHPBar
 	pop hl
-	ld d, 6
-	ld b, 0
-	call DrawHPBar
+	ld d, $6
+	ld b, $0
+	call DrawBattleHPBar
 	ld hl, wcd9b
 	ld a, [wcda9]
 	ld c, a
@@ -157,31 +156,31 @@
 	ld hl, wcda9
 	inc [hl]
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop bc
 	inc b
 	dec c
-	jr nz, .loop3
+	jr nz, .loop
 	ld b, $a
 	call GetSGBLayout
 	ret
 ; 50117
 
-_fillhpbar: ; 50117
+PlacePartymonHPBar: ; 50117
 	ld a, b
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1HP
 	call AddNTimes
 	ld a, [hli]
 	or [hl]
-	jr nz, .notfainted
+	jr nz, .not_fainted
 	xor a
 	ld e, a
 	ld c, a
 	ret
 
-.notfainted
+.not_fainted
 	dec hl
 	ld a, [hli]
 	ld b, a
@@ -191,11 +190,11 @@
 	ld d, a
 	ld a, [hli]
 	ld e, a
-	predef ComputeHPBarLength
+	predef DrawPartyMenuHPBar
 	ret
 ; 50138
 
-Function50138: ; 50138
+PlacePartyMenuHPDigits: ; 50138
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -202,14 +201,14 @@
 	ld c, a
 	ld b, $0
 	hlcoord 13, 1
-.asm_50143
+.loop
 	push bc
 	push hl
-	call Function50389
-	jr z, .asm_5016b
+	call PartyMenuCheckEgg
+	jr z, .next
 	push hl
 	ld a, b
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1HP
 	call AddNTimes
 	ld e, l
@@ -219,7 +218,7 @@
 	lb bc, 2, 3
 	call PrintNum
 	pop de
-	ld a, $f3
+	ld a, "/"
 	ld [hli], a
 rept 2
 	inc de
@@ -227,18 +226,18 @@
 	lb bc, 2, 3
 	call PrintNum
 
-.asm_5016b
+.next
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop bc
 	inc b
 	dec c
-	jr nz, .asm_50143
+	jr nz, .loop
 	ret
 ; 50176
 
-Function50176: ; 50176
+PlacePartyMonLevel: ; 50176
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -245,14 +244,14 @@
 	ld c, a
 	ld b, 0
 	hlcoord 8, 2
-.asm_50181
+.loop
 	push bc
 	push hl
-	call Function50389
-	jr z, .asm_501a7
+	call PartyMenuCheckEgg
+	jr z, .next
 	push hl
 	ld a, b
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1Level
 	call AddNTimes
 	ld e, l
@@ -260,15 +259,17 @@
 	pop hl
 	ld a, [de]
 	cp 100 ; This is distinct from MAX_LEVEL.
-	jr nc, .asm_501a1
+	jr nc, .ThreeDigits
 	ld a, "<LV>"
 	ld [hli], a
-	ld bc, $4102
-.asm_501a1
+	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
+	; jr .okay
+.ThreeDigits
 	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
+; .okay
 	call PrintNum
 
-.asm_501a7
+.next
 	pop hl
 	ld de, SCREEN_WIDTH * 2
 	add hl, de
@@ -275,11 +276,11 @@
 	pop bc
 	inc b
 	dec c
-	jr nz, .asm_50181
+	jr nz, .loop
 	ret
 ; 501b2
 
-Function501b2: ; 501b2
+PlacePartyMonStatus: ; 501b2
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -286,22 +287,22 @@
 	ld c, a
 	ld b, 0
 	hlcoord 5, 2
-.asm_501bd
+.loop
 	push bc
 	push hl
-	call Function50389
-	jr z, .asm_501d5
+	call PartyMenuCheckEgg
+	jr z, .next
 	push hl
 	ld a, b
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1Status
 	call AddNTimes
 	ld e, l
 	ld d, h
 	pop hl
-	call Function50d0a
+	call PlaceStatusString
 
-.asm_501d5
+.next
 	pop hl
 	ld de, SCREEN_WIDTH * 2
 	add hl, de
@@ -308,11 +309,11 @@
 	pop bc
 	inc b
 	dec c
-	jr nz, .asm_501bd
+	jr nz, .loop
 	ret
 ; 501e0
 
-Function501e0: ; 501e0
+PlacePartyMonTMHMCompatibility: ; 501e0
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -319,11 +320,11 @@
 	ld c, a
 	ld b, 0
 	hlcoord 12, 2
-.asm_501eb
+.loop
 	push bc
 	push hl
-	call Function50389
-	jr z, .asm_5020a
+	call PartyMenuCheckEgg
+	jr z, .next
 	push hl
 	ld hl, PartySpecies
 	ld e, b
@@ -333,10 +334,10 @@
 	ld [CurPartySpecies], a
 	predef CanLearnTMHMMove
 	pop hl
-	call Function50215
+	call .PlaceAbleNotAble
 	call PlaceString
 
-.asm_5020a
+.next
 	pop hl
 	ld de, SCREEN_WIDTH * 2
 	add hl, de
@@ -343,32 +344,32 @@
 	pop bc
 	inc b
 	dec c
-	jr nz, .asm_501eb
+	jr nz, .loop
 	ret
 ; 50215
 
-Function50215: ; 50215
+.PlaceAbleNotAble: ; 50215
 	ld a, c
 	and a
-	jr nz, .asm_5021d
-	ld de, String_50226
+	jr nz, .able
+	ld de, .string_not_able
 	ret
 
-.asm_5021d
-	ld de, String_50221
+.able
+	ld de, .string_able
 	ret
 ; 50221
 
-String_50221: ; 50221
+.string_able: ; 50221
 	db "ABLE@"
 ; 50226
 
-String_50226: ; 50226
+.string_not_able: ; 50226
 	db "NOT ABLE@"
 ; 5022f
 
 
-Function5022f: ; 5022f
+PlacePartyMonEvoStoneCompatibility: ; 5022f
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -375,14 +376,14 @@
 	ld c, a
 	ld b, 0
 	hlcoord 12, 2
-.asm_5023a
+.loop
 	push bc
 	push hl
-	call Function50389
-	jr z, .asm_5025d
+	call PartyMenuCheckEgg
+	jr z, .next
 	push hl
 	ld a, b
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1Species
 	call AddNTimes
 	ld a, [hl]
@@ -393,22 +394,22 @@
 rept 2
 	add hl, de
 endr
-	call Function50268
+	call .DetermineCompatibility
 	pop hl
 	call PlaceString
 
-.asm_5025d
+.next
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop bc
 	inc b
 	dec c
-	jr nz, .asm_5023a
+	jr nz, .loop
 	ret
 ; 50268
 
-Function50268: ; 50268
+.DetermineCompatibility: ; 50268
 	ld de, StringBuffer1
 	ld a, BANK(EvosAttacksPointers)
 	ld bc, 2
@@ -422,15 +423,15 @@
 	ld bc, $a
 	call FarCopyBytes
 	ld hl, StringBuffer1
-.asm_50287
+.loop2
 	ld a, [hli]
 	and a
-	jr z, .asm_5029f
+	jr z, .nope
 rept 2
 	inc hl
 endr
 	cp EVOLVE_ITEM
-	jr nz, .asm_50287
+	jr nz, .loop2
 rept 2
 	dec hl
 endr
@@ -439,24 +440,24 @@
 rept 2
 	inc hl
 endr
-	jr nz, .asm_50287
-	ld de, String_502a3
+	jr nz, .loop2
+	ld de, .string_able
 	ret
 
-.asm_5029f
-	ld de, String_502a8
+.nope
+	ld de, .string_not_able
 	ret
 ; 502a3
 
-String_502a3: ; 502a3
+.string_able: ; 502a3
 	db "ABLE@"
 ; 502a8
-String_502a8: ; 502a8
+.string_not_able: ; 502a8
 	db "NOT ABLE@"
 ; 502b1
 
 
-Function502b1: ; 502b1
+PlacePartyMonGender: ; 502b1
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -463,11 +464,11 @@
 	ld c, a
 	ld b, 0
 	hlcoord 12, 2
-.asm_502bc
+.loop
 	push bc
 	push hl
-	call Function50389
-	jr z, .asm_502e3
+	call PartyMenuCheckEgg
+	jr z, .next
 	ld [CurPartySpecies], a
 	push hl
 	ld a, b
@@ -475,41 +476,41 @@
 	xor a
 	ld [MonType], a
 	call GetGender
-	ld de, String_502fe
-	jr c, .asm_502df
-	ld de, String_502ee
-	jr nz, .asm_502df
-	ld de, String_502f5
+	ld de, .unknown
+	jr c, .got_gender
+	ld de, .male
+	jr nz, .got_gender
+	ld de, .female
 
-.asm_502df
+.got_gender
 	pop hl
 	call PlaceString
 
-.asm_502e3
+.next
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop bc
 	inc b
 	dec c
-	jr nz, .asm_502bc
+	jr nz, .loop
 	ret
 ; 502ee
 
-String_502ee: ; 502ee
+.male: ; 502ee
 	db "♂…MALE@"
 ; 502f5
 
-String_502f5: ; 502f5
+.female: ; 502f5
 	db "♀…FEMALE@"
 ; 502fe
 
-String_502fe: ; 502fe
+.unknown: ; 502fe
 	db "…UNKNOWN@"
 ; 50307
 
 
-Function50307: ; 50307
+PlacePartyMonMobileBattleSelection: ; 50307
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -516,45 +517,45 @@
 	ld c, a
 	ld b, 0
 	hlcoord 12, 1
-.asm_50312
+.loop
 	push bc
 	push hl
-	ld de, String_50372
+	ld de, .String_Sanka_Shinai
 	call PlaceString
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop bc
 	inc b
 	dec c
-	jr nz, .asm_50312
+	jr nz, .loop
 	ld a, l
-	ld e, $b
+	ld e, PKMN_NAME_LENGTH
 	sub e
 	ld l, a
 	ld a, h
 	sbc $0
 	ld h, a
-	ld de, String_50379
+	ld de, .String_Kettei_Yameru
 	call PlaceString
 	ld b, $3
 	ld c, $0
 	ld hl, wd002
 	ld a, [hl]
-.asm_5033b
+.loop2
 	push hl
 	push bc
 	hlcoord 12, 1
-.asm_50340
+.loop3
 	and a
-	jr z, .asm_5034a
-	ld de, $0028
+	jr z, .done
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	dec a
-	jr .asm_50340
+	jr .loop3
 
-.asm_5034a
-	ld de, String_5036b
+.done
+	ld de, .String_Banme
 	push hl
 	call PlaceString
 	pop hl
@@ -562,7 +563,7 @@
 	push bc
 	push hl
 	ld a, c
-	ld hl, Strings_50383
+	ld hl, .Strings_1_2_3
 	call GetNthString
 	ld d, h
 	ld e, l
@@ -575,24 +576,24 @@
 	inc c
 	dec b
 	ret z
-	jr .asm_5033b
+	jr .loop2
 ; 5036b
 
-String_5036b: ; 5036b
+.String_Banme: ; 5036b
 	db " ばんめ  @" ; Place
 ; 50372
-String_50372: ; 50372
+.String_Sanka_Shinai: ; 50372
 	db "さんかしない@" ; Cancel
 ; 50379
-String_50379: ; 50379
+.String_Kettei_Yameru: ; 50379
 	db "けってい  やめる@" ; Quit
 ; 50383
-Strings_50383: ; 50383
+.Strings_1_2_3: ; 50383
 	db "1@", "2@", "3@" ; 1st, 2nd, 3rd
 ; 50389
 
 
-Function50389: ; 50389
+PartyMenuCheckEgg: ; 50389
 	ld a, PartySpecies % $100
 	add b
 	ld e, a
@@ -604,15 +605,15 @@
 	ret
 ; 50396
 
-Function50396: ; 50396
+GetPartyMenuTilemapPointers: ; 50396
 	ld a, [PartyMenuActionText]
 	and $f0
-	jr nz, .override
+	jr nz, .skip
 	ld a, [PartyMenuActionText]
 	and $f
 	ld e, a
 	ld d, 0
-	ld hl, .selectmonmenuoptions
+	ld hl, .Pointers
 rept 2
 	add hl, de
 endr
@@ -621,31 +622,32 @@
 	ld l, a
 	ret
 
-.override
-	ld hl, .default
+.skip
+	ld hl, .Default
 	ret
 ; 503b2
 
-.selectmonmenuoptions: ; 503b2
-	dw .default
-	dw .default
-	dw .default
-	dw .unknown1
-	dw .default
-	dw .unknown2
-	dw .trade
-	dw .trade
-	dw .default
-	dw .unknown3
+.Pointers: ; 503b2
+	dw .Default
+	dw .Default
+	dw .Default
+	dw .TMHM
+	dw .Default
+	dw .EvoStone
+	dw .Gender
+	dw .Gender
+	dw .Default
+	dw .Mobile
 ; 503c6
 
-.default: db 0, 1, 2, 3, 4, -1
-.unknown1: db 0, 5, 3, 4, -1
-.unknown2: db 0, 6, 3, 4, -1
-.trade: db 0, 7, 3, 4, -1
-.unknown3: db 0, 8, 3, 4, -1
+.Default: db 0, 1, 2, 3, 4, $ff
+.TMHM: db 0, 5, 3, 4, $ff
+.EvoStone: db 0, 6, 3, 4, $ff
+.Gender: db 0, 7, 3, 4, $ff
+.Mobile: db 0, 8, 3, 4, $ff
 ; 503e0
 
+
 Function503e0: ; 503e0
 	ld hl, PartyCount
 	ld a, [hli]
@@ -653,7 +655,7 @@
 	ret z
 	ld c, a
 	xor a
-	ld [hConnectedMapWidth], a
+	ld [hObjectStructIndexBuffer], a
 .asm_503ea
 	push bc
 	push hl
@@ -661,9 +663,9 @@
 	ld a, BANK(Function8e83f)
 	ld e, $0
 	rst FarCall
-	ld a, [hConnectedMapWidth]
+	ld a, [hObjectStructIndexBuffer]
 	inc a
-	ld [hConnectedMapWidth], a
+	ld [hObjectStructIndexBuffer], a
 	pop hl
 	pop bc
 	dec c
@@ -671,6 +673,7 @@
 	callab Function8cf69
 	ret
 ; 50405
+
 Function50405: ; 50405
 	xor a
 	ld [wd0e3], a
@@ -692,7 +695,7 @@
 	ld a, $1
 
 .asm_50424
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $3
 	ld [wcfa8], a
 	ret
@@ -713,7 +716,7 @@
 .asm_50444
 	ld a, $1
 .asm_50446
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $3
 	ld [wcfa8], a
 	ret
@@ -738,7 +741,7 @@
 	ld a, [PartyCount]
 	inc a
 	ld b, a
-	ld a, [wcfa9] ; menu selection?
+	ld a, [MenuSelection2] ; menu selection?
 	cp b
 	jr z, .exitmenu ; CANCEL
 	ld [wd0d8], a
@@ -746,7 +749,7 @@
 	ld b, a
 	bit 1, b
 	jr nz, .exitmenu ; B button?
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [CurPartyMon], a
 	ld c, a
@@ -773,7 +776,7 @@
 
 PrintPartyMenuText: ; 5049a
 	hlcoord 0, 14
-	ld bc, $0212
+	lb bc, 2, 18
 	call TextBox
 	ld a, [PartyCount]
 	and a
@@ -919,6 +922,7 @@
 	text_jump UnknownText_0x1bc16e
 	db "@"
 ; 0x505c1
+
 
 Function505c1: ; 505c1
 	ld e, a
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -60,7 +60,7 @@
 ; 40063
 
 InitPokedex: ; 40063
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call Function414b7
@@ -487,7 +487,7 @@
 	ld [wcf64], a
 	pop af
 	ld [wcf65], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	call Function414fb
 	call Function4038d
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -1079,9 +1079,11 @@
 	ld a, c
 	callba SetFlagsForMovement_1
 	pop bc
+
 	push bc
 	call SetFlagsForMovement_2
 	pop bc
+
 	call GetScriptByte
 	ld l, a
 	call GetScriptByte
@@ -1090,6 +1092,7 @@
 	ld b, a
 	call GetMovementData
 	ret c
+
 	ld a, SCRIPT_WAIT_MOVEMENT
 	ld [ScriptMode], a
 	call StopScript
@@ -1102,6 +1105,7 @@
 ; 0x97228
 
 Script_applymovement2: ; 0x97228
+; apply movement to last talked
 ; script command 0x6a
 ; parameters:
 ;     data (MovementPointerLabelParam)
@@ -1426,12 +1430,12 @@
 
 .Show
 	show_emote
-	show_person
+	step_sleep_1
 	step_end
 
 .Hide
 	hide_emote
-	show_person
+	step_sleep_1
 	step_end
 ; 973c7
 
@@ -1460,8 +1464,8 @@
 ; 973eb
 
 EarthquakeMovement: ; 973eb
-	step_shake 16
-	step_sleep 16
+	step_shake 16 ; the 16 gets overwritten with the script byte
+	step_sleep 16 ; the 16 gets overwritten with the lower 6 bits of the script byte
 	step_end
 EarthquakeMovementEnd
 ; 973f0
@@ -2847,6 +2851,7 @@
 	call LoadMapStatus
 	call StopScript
 	ret
+
 .not_ok
 	call GetScriptByte
 	call GetScriptByte
@@ -3117,6 +3122,7 @@
 	call ExitScriptSubroutine
 	jr c, .resume
 	ret
+
 .resume
 	xor a
 	ld [ScriptRunning], a
--- /dev/null
+++ b/engine/slot_machine.asm
@@ -1,0 +1,2112 @@
+_SlotMachine:
+	ld hl, Options
+	set 4, [hl]
+	call Function926f7
+	call DelayFrame
+.asm_926d2
+	call Function927af
+	jr nc, .asm_926d2
+	call WaitSFX
+	ld de, SFX_QUIT_SLOTS
+	call PlaySFX
+	call WaitSFX
+	call ClearBGPalettes
+	callba MobileFn_105fd0
+	ld hl, Options
+	res 4, [hl]
+	ld hl, rLCDC ; $ff40
+	res 2, [hl]
+	ret
+
+Function926f7: ; 926f7 (24:66f7)
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld de, MUSIC_NONE
+	call PlayMusic
+	call DelayFrame
+	call DisableLCD
+	ld hl, VBGMap0 tile $00
+	lb bc, 4, 0
+	ld a, $7f
+	call ByteFill
+	ld b, $5
+	call GetSGBLayout
+	callab Function8cf53
+	ld hl, wc6d0
+	ld bc, $48
+	xor a
+	call ByteFill
+	ld hl, Slots2LZ
+	ld de, VTiles0 tile $00
+	call Decompress
+	ld hl, Slots3LZ
+	ld de, VTiles0 tile $40
+	call Decompress
+	ld hl, Slots1LZ
+	ld de, VTiles2 tile $00
+	call Decompress
+	ld hl, Slots2LZ
+	ld de, VTiles2 tile $25
+	call Decompress
+	ld hl, SlotsTilemap
+	decoord 0, 0
+	ld bc, 20 * 12
+	call CopyBytes
+	ld hl, rLCDC ; $ff40
+	set 2, [hl]
+	call EnableLCD
+	ld hl, wc6d0
+	ld bc, $64
+	xor a
+	call ByteFill
+	call Function92a98
+	call Function9279b
+	ld a, $7
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], $40
+	xor a
+	ld [wJumptableIndex], a
+	ld a, $ff
+	ld [wc709], a
+	ld de, MUSIC_GAME_CORNER
+	call PlayMusic
+	xor a
+	ld [wd002], a
+	call Random
+	and $2a
+	ret nz
+	ld a, $1
+	ld [wd002], a
+	ret
+
+Function9279b: ; 9279b (24:679b)
+	ld a, $e4
+	call DmgToCgbBGPals
+	lb de, $e4, $e4
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_927ab
+	lb de, $c0, $e4
+.asm_927ab
+	call DmgToCgbObjPals
+	ret
+
+Function927af: ; 927af (24:67af)
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_927d1
+	call Function92844
+	call Function92b0f
+	xor a
+	ld [wc3b5], a
+	callab Function8cfa8
+	call Function927f8
+	call Function927d3
+	call DelayFrame
+	and a
+	ret
+.asm_927d1
+	scf
+	ret
+
+Function927d3: ; 927d3 (24:67d3)
+	ret
+; 927d4 (24:67d4)
+
+Function927d4: ; 927d4
+	ld a, [wc6d0]
+	and a
+	ret nz
+	ld a, [wc6e0]
+	and a
+	ret nz
+	ld a, [wc70c]
+	and a
+	jr nz, .asm_927ea
+	ld a, $e4
+	call DmgToCgbBGPals
+	ret
+
+.asm_927ea
+	ld a, [TextDelayFrames]
+	and $7
+	ret nz
+	ld a, [rBGP]
+	xor %1100
+	call DmgToCgbBGPals
+	ret
+; 927f8
+
+Function927f8: ; 927f8 (24:67f8)
+	hlcoord 5, 1
+	ld de, Coins
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+	call PrintNum
+	hlcoord 11, 1
+	ld de, wc711
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+	call PrintNum
+	ret
+; 92811 (24:6811)
+
+Function92811: ; 92811
+	ld a, [wc709]
+	add 0
+	daa
+	ld e, a
+	and $f
+	add "0"
+	hlcoord 1, 0
+	ld [hl], a
+	ld a, e
+	swap a
+	and $f
+	add "0"
+	hlcoord 0, 0
+	ld [hl], a
+	ret
+; 9282c
+
+Function9282c: ; 9282c
+	ld hl, wcf66
+	ld a, [hl]
+	inc [hl]
+	and $7
+	ret nz
+	ld hl, Sprites + $42
+	ld c, $18
+.asm_92839
+	ld a, [hl]
+	xor $20
+	ld [hli], a
+rept 3
+	inc hl
+endr
+	dec c
+	jr nz, .asm_92839
+	ret
+; 92844
+
+Function92844: ; 92844 (24:6844)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_92853
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 92853 (24:6853)
+
+
+Jumptable_92853: ; 92853 (24:6853)
+	dw Function9287e
+	dw Function9288e
+	dw Function928c6
+	dw Function928d6
+	dw Function928e6
+	dw Function92900
+	dw Function92910
+	dw Function9292a
+	dw Function9293a
+	dw Function92879
+	dw Function92879
+	dw Function92879
+	dw Function92955
+	dw Function9296b
+	dw Function92987
+	dw Function9299e
+	dw Function929a4
+	dw Function929d9
+	dw Function929f0
+
+
+Function92879: ; 92879 (24:6879)
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+Function9287e: ; 9287e (24:687e)
+	call Function92879
+	xor a
+	ld [wc70b], a
+	ld [wc70c], a
+	ld a, $ff
+	ld [wc70d], a
+	ret
+
+Function9288e: ; 9288e (24:688e)
+	call Function9307c
+	jr nc, .asm_92899
+	ld a, $12
+	ld [wJumptableIndex], a
+	ret
+.asm_92899
+	call Function92879
+	call Function9303f
+	call Function93002
+	ld a, $20
+	ld [wcf64], a
+	ld a, $4
+	ld [wc6d0], a
+	ld [wc6e0], a
+	ld [wc6f0], a
+	ld a, $4
+	ld [wc6d9], a
+	ld [wc6e9], a
+	ld [wc6f9], a
+	call WaitSFX
+	ld a, SFX_SLOT_MACHINE_START
+	call Function9331e
+	ret
+
+Function928c6: ; 928c6 (24:68c6)
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .asm_928cf
+	dec [hl]
+	ret
+.asm_928cf
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+	ret
+
+Function928d6: ; 928d6 (24:68d6)
+	ld hl, hJoypadSum ; $ffa5
+	ld a, [hl]
+	and A_BUTTON
+	ret z
+	call Function92879
+	call Function92a2b
+	ld [wc6d0], a
+
+Function928e6: ; 928e6 (24:68e6)
+	ld a, [wc6d0]
+	cp $0
+	ret nz
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld bc, wc6d0
+	ld de, wc700
+	call Function929f6
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+
+Function92900: ; 92900 (24:6900)
+	ld hl, hJoypadSum ; $ffa5
+	ld a, [hl]
+	and A_BUTTON
+	ret z
+	call Function92879
+	call Function92a2e
+	ld [wc6e0], a
+
+Function92910: ; 92910 (24:6910)
+	ld a, [wc6e0]
+	cp $0
+	ret nz
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld bc, wc6e0
+	ld de, wc703
+	call Function929f6
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+
+Function9292a: ; 9292a (24:692a)
+	ld hl, hJoypadSum ; $ffa5
+	ld a, [hl]
+	and A_BUTTON
+	ret z
+	call Function92879
+	call Function92a60
+	ld [wc6f0], a
+
+Function9293a: ; 9293a (24:693a)
+	ld a, [wc6f0]
+	cp $0
+	ret nz
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld bc, wc6f0
+	ld de, wc706
+	call Function929f6
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+	ret
+
+Function92955: ; 92955 (24:6955)
+	ld a, [wc70d]
+	cp $ff
+	jr nz, .asm_92963
+	call Function92879
+	call Function92879
+	ret
+.asm_92963
+	call Function92879
+	ld a, $10
+	ld [wcf64], a
+
+Function9296b: ; 9296b (24:696b)
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .asm_92980
+	dec [hl]
+	srl a
+	ret z
+	ld a, [rOBP0]
+	xor $ff
+	ld e, a
+	ld d, a
+	call DmgToCgbObjPals
+	ret
+.asm_92980
+	call Function9279b
+	call Function92879
+	ret
+
+Function92987: ; 92987 (24:6987)
+	xor a
+	ld [wc70b], a
+	ld [wc70c], a
+	ld a, $e4
+	call DmgToCgbBGPals
+	call Function93124
+	xor a
+	ld [wcf64], a
+	call Function92879
+	ret
+
+Function9299e: ; 9299e (24:699e)
+	call Function93158
+	call Function92879
+
+Function929a4: ; 929a4 (24:69a4)
+	ld hl, wcf64
+	ld a, [hl]
+	inc [hl]
+	and $1
+	ret z
+	ld hl, wc711
+	ld a, [hli]
+	ld d, a
+	or [hl]
+	jr z, .asm_929d5
+	ld e, [hl]
+	dec de
+	ld [hl], e
+	dec hl
+	ld [hl], d
+	ld hl, Coins
+	ld d, [hl]
+	inc hl
+	ld e, [hl]
+	call Function92a04
+	jr c, .asm_929c5
+	inc de
+.asm_929c5
+	ld [hl], e
+	dec hl
+	ld [hl], d
+	ld a, [wcf64]
+	and $7
+	ret z
+	ld de, SFX_GET_COIN_FROM_SLOTS
+	call PlaySFX
+	ret
+.asm_929d5
+	call Function92879
+	ret
+
+Function929d9: ; 929d9 (24:69d9)
+	call Function9304c
+	call WaitPressAorB_BlinkCursor
+	call Function930e9
+	jr c, .asm_929ea
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+.asm_929ea
+	ld a, $12
+	ld [wJumptableIndex], a
+	ret
+
+Function929f0: ; 929f0 (24:69f0)
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Function929f6: ; 929f6 (24:69f6)
+	push de
+	call Function92a12
+	pop de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	ret
+
+Function92a04: ; 92a04 (24:6a04)
+	ld a, d
+	cp 9999 / $100
+	jr c, .asm_92a10
+	ld a, e
+	cp 9999 % $100
+	jr c, .asm_92a10
+	scf
+	ret
+.asm_92a10
+	and a
+	ret
+
+Function92a12: ; 92a12 (24:6a12)
+	ld hl, $3
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_92a1c
+	ld a, $f
+.asm_92a1c
+	dec a
+	and $f
+	ld e, a
+	ld d, $0
+	ld hl, $1
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ret
+
+Function92a2b: ; 92a2b (24:6a2b)
+	ld a, $7
+	ret
+
+Function92a2e: ; 92a2e (24:6a2e)
+	ld a, [wc70a]
+	cp $2
+	jr c, .asm_92a4e
+	ld a, [wc709]
+	and a
+	jr z, .asm_92a3f
+	cp $ff
+	jr nz, .asm_92a4e
+.asm_92a3f
+	call Function92a51
+	jr nz, .asm_92a4e
+	call Random
+	cp $50
+	jr nc, .asm_92a4e
+	ld a, $a
+	ret
+.asm_92a4e
+	ld a, $8
+	ret
+
+Function92a51: ; 92a51 (24:6a51)
+	ld a, [wc700]
+	and a
+	ret z
+	ld a, [wc701]
+	and a
+	ret z
+	ld a, [wc702]
+	and a
+	ret
+
+Function92a60: ; 92a60 (24:6a60)
+	ld a, [wc70b]
+	and a
+	jr z, .asm_92a95
+	ld a, [wc70c]
+	and a
+	jr z, .asm_92a95
+	ld a, [wc709]
+	and a
+	jr nz, .asm_92a84
+	call Random
+	cp 180
+	jr nc, .asm_92a95
+	cp 120
+	jr nc, .asm_92a92
+	cp 60
+	jr nc, .asm_92a8f
+	ld a, $15
+	ret
+.asm_92a84
+	call Random
+	cp $a0
+	jr nc, .asm_92a95
+	cp $50
+	jr nc, .asm_92a92
+.asm_92a8f
+	ld a, $12
+	ret
+.asm_92a92
+	ld a, $10
+	ret
+.asm_92a95
+	ld a, $9
+	ret
+
+Function92a98: ; 92a98 (24:6a98)
+	ld bc, wc6d0
+	ld hl, $6
+	add hl, bc
+	ld de, Sprites + $40
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $1
+	add hl, bc
+	ld de, Unknown_93327
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $8
+	add hl, bc
+	ld [hl], $30
+	call Function92af9
+	ld bc, wc6e0
+	ld hl, $6
+	add hl, bc
+	ld de, Sprites + $60
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $1
+	add hl, bc
+	ld de, Unknown_93339
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $8
+	add hl, bc
+	ld [hl], $50
+	call Function92af9
+	ld bc, wc6f0
+	ld hl, $6
+	add hl, bc
+	ld de, Sprites + $80
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $1
+	add hl, bc
+	ld de, Unknown_9334b
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $8
+	add hl, bc
+	ld [hl], $70
+	call Function92af9
+	ret
+
+Function92af9: ; 92af9 (24:6af9)
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ld hl, $3
+	add hl, bc
+	ld [hl], $e
+	ld hl, $4
+	add hl, bc
+	ld [hl], $0
+	call Function92b53
+	ret
+
+Function92b0f: ; 92b0f (24:6b0f)
+	ld bc, wc6d0
+	call Function92b22
+	ld bc, wc6e0
+	call Function92b22
+	ld bc, wc6f0
+	call Function92b22
+	ret
+
+Function92b22: ; 92b22 (24:6b22)
+	ld hl, $4
+	add hl, bc
+	ld a, [hl]
+	and $f
+	jr nz, .asm_92b2e
+	call Function92bd4
+.asm_92b2e
+	ld hl, $5
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	ld d, a
+	ld hl, $4
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	and $f
+	jr z, Function92b53
+	ld hl, $6
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld e, $8
+.asm_92b49
+	ld a, [hl]
+	add d
+	ld [hli], a
+rept 3
+	inc hl
+endr
+	dec e
+	jr nz, .asm_92b49
+	ret
+
+Function92b53: ; 92b53 (24:6b53)
+	ld hl, $8
+	add hl, bc
+	ld a, [hl]
+	ld [wc712 + 1], a
+	ld a, $50
+	ld [wc712 + 2], a
+	ld hl, $3
+	add hl, bc
+	ld e, [hl]
+	ld d, $0
+	ld hl, $1
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+	call Function92b83
+	ld hl, $3
+	add hl, bc
+	ld a, [hl]
+	inc a
+	and $f
+	cp $f
+	jr nz, .asm_92b81
+	xor a
+.asm_92b81
+	ld [hl], a
+	ret
+
+Function92b83: ; 92b83 (24:6b83)
+	ld hl, $6
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+.asm_92b8a
+	ld a, [wc712 + 2]
+	ld [hli], a
+	ld a, [wc712 + 1]
+	ld [hli], a
+	ld a, [de]
+	ld [hli], a
+	srl a
+	srl a
+	set 7, a
+	ld [hli], a
+	ld a, [wc712 + 2]
+	ld [hli], a
+	ld a, [wc712 + 1]
+	add $8
+	ld [hli], a
+	ld a, [de]
+rept 2
+	inc a
+endr
+	ld [hli], a
+	srl a
+	srl a
+	set 7, a
+	ld [hli], a
+	inc de
+	ld a, [wc712 + 2]
+	sub $10
+	ld [wc712 + 2], a
+	cp $10
+	jr nz, .asm_92b8a
+	ret
+; 92bbe (24:6bbe)
+
+Function92bbe: ; 92bbe
+	push hl
+	srl a
+	srl a
+	add Unknown_92bce % $100
+	ld l, a
+	ld a, 0
+	adc Unknown_92bce / $100
+	ld h, a
+	ld a, [hl]
+	pop hl
+	ret
+; 92bce
+
+Unknown_92bce: ; 92bce
+	db 0, 1, 2, 3, 4, 5
+; 92bd4
+
+Function92bd4: ; 92bd4 (24:6bd4)
+	ld hl, 0
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Jumptable_92be4
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 92be4 (24:6be4)
+
+Jumptable_92be4: ; 92be4
+	dw Function92c16
+	dw Function92c4c
+	dw Function92c17
+	dw Function92c1e
+	dw Function92c25
+	dw Function92c2c
+	dw Function92c33
+	dw Function92c5e
+	dw Function92c86
+	dw Function92ca9
+	dw Function92cd2
+	dw Function92cf8
+	dw Function92d13
+	dw Function92df7
+	dw Function92e10
+	dw Function92e31
+	dw Function92e47
+	dw Function92e64
+	dw Function92d20
+	dw Function92d4f
+	dw Function92d6e
+	dw Function92d7e
+	dw Function92da4
+	dw Function92db3
+	dw Function92dca
+; 92c16
+
+Function92c16: ; 92c16
+	ret
+; 92c17
+
+Function92c17: ; 92c17
+	ld hl, $5
+	add hl, bc
+	ld [hl], $10
+	ret
+; 92c1e
+
+Function92c1e: ; 92c1e
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92c25
+
+Function92c25: ; 92c25
+	ld hl, $5
+	add hl, bc
+	ld [hl], $4
+	ret
+; 92c2c
+
+Function92c2c: ; 92c2c
+	ld hl, $5
+	add hl, bc
+	ld [hl], $2
+	ret
+; 92c33
+
+Function92c33: ; 92c33
+	ld hl, $5
+	add hl, bc
+	ld [hl], $1
+	ret
+; 92c3a
+
+Function92c3a: ; 92c3a
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ld hl, 0
+	add hl, bc
+	ld [hl], $1
+	ld hl, $f
+	add hl, bc
+	ld [hl], $3
+
+Function92c4c: ; 92c4c
+	ld hl, $f
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92c56
+	dec [hl]
+	ret
+
+.asm_92c56
+	ld hl, 0
+	add hl, bc
+	ld a, $0
+	ld [hl], a
+	ret
+; 92c5e
+
+Function92c5e: ; 92c5e
+	ld a, [wc709]
+	cp $ff
+	jr z, .asm_92c72
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92c72
+	dec [hl]
+	call Function92c76
+	ret nz
+
+.asm_92c72
+	call Function92c3a
+	ret
+; 92c76
+
+Function92c76: ; 92c76
+	call Function92a12
+	ld a, [wc709]
+	ld e, a
+	ld a, [hli]
+	cp e
+	ret z
+	ld a, [hli]
+	cp e
+	ret z
+	ld a, [hl]
+	cp e
+	ret
+; 92c86
+
+Function92c86: ; 92c86
+	call Function92e94
+	jr nc, .asm_92c94
+	ld a, [wc717]
+	ld hl, wc709
+	cp [hl]
+	jr z, .asm_92ca5
+
+.asm_92c94
+	ld a, [wc709]
+	cp $ff
+	jr z, .asm_92ca5
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92ca5
+	dec [hl]
+	ret
+
+.asm_92ca5
+	call Function92c3a
+	ret
+; 92ca9
+
+Function92ca9: ; 92ca9
+	call Function92f1d
+	jr nc, .asm_92cbd
+	ld hl, wc709
+	cp [hl]
+	jr z, .asm_92cce
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+
+.asm_92cbd
+	ld a, [wc709]
+	cp $ff
+	jr z, .asm_92cce
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92cce
+	dec [hl]
+	ret
+
+.asm_92cce
+	call Function92c3a
+	ret
+; 92cd2
+
+Function92cd2: ; 92cd2
+	call Function92e94
+	jr nc, .asm_92ce1
+	ld a, [wc70c]
+	and a
+	jr z, .asm_92ce1
+	call Function92c3a
+	ret
+
+.asm_92ce1
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $a
+	add hl, bc
+	ld [hl], $20
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ret
+; 92cf8
+
+Function92cf8: ; 92cf8
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92d02
+	dec [hl]
+	ret
+
+.asm_92d02
+	ld a, SFX_THROW_BALL
+	call Function9331e
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92d13
+
+Function92d13: ; 92d13
+	call Function92e94
+	ret nc
+	ld a, [wc70c]
+	and a
+	ret z
+	call Function92c3a
+	ret
+; 92d20
+
+Function92d20: ; 92d20
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	call Function92fc0
+	push bc
+	push af
+	ld de, $6068
+	ld a, $6
+	call Function3b2a
+	ld hl, $e
+	add hl, bc
+	pop af
+	ld [hl], a
+	pop bc
+	xor a
+	ld [wcf64], a
+
+Function92d4f: ; 92d4f
+	ld a, [wcf64]
+	cp $2
+	jr z, .asm_92d5b
+	cp $1
+	jr z, .asm_92d62
+	ret
+
+.asm_92d5b
+	call Function92f1d
+	call Function92c3a
+	ret
+
+.asm_92d62
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92d6e
+
+Function92d6e: ; 92d6e
+	xor a
+	ld [wcf64], a
+	ld hl, 0
+	add hl, bc
+	dec [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ret
+; 92d7e
+
+Function92d7e: ; 92d7e
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	push bc
+	ld de, $6000
+	ld a, $7
+	call Function3b2a
+	pop bc
+	xor a
+	ld [wcf64], a
+	ret
+; 92da4
+
+Function92da4: ; 92da4
+	ld a, [wcf64]
+	and a
+	ret z
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld a, $2
+	ld [wcf64], a
+
+Function92db3: ; 92db3
+	ld a, [wcf64]
+	cp $4
+	ret c
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $10
+	ld hl, $a
+	add hl, bc
+	ld [hl], $11
+
+Function92dca: ; 92dca
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92dd4
+	dec [hl]
+	ret
+
+.asm_92dd4
+	call Function92f1d
+	jr nc, .asm_92de5
+	and a
+	jr nz, .asm_92de5
+	ld a, $5
+	ld [wcf64], a
+	call Function92c3a
+	ret
+
+.asm_92de5
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ld hl, 0
+	add hl, bc
+rept 2
+	dec [hl]
+endr
+	ld a, $1
+	ld [wcf64], a
+	ret
+; 92df7
+
+Function92df7: ; 92df7
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	call Function92fc0
+	ld hl, $a
+	add hl, bc
+	ld [hl], a
+
+Function92e10: ; 92e10
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_92e1f
+	call Function92f1d
+	call Function92c3a
+	ret
+
+.asm_92e1f
+	dec [hl]
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $b
+	add hl, bc
+	ld [hl], $20
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+
+Function92e31: ; 92e31
+	ld hl, $b
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92e3b
+	dec [hl]
+	ret
+
+.asm_92e3b
+	ld hl, 0
+	add hl, bc
+	dec [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92e47
+
+Function92e47: ; 92e47
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, $5
+	add hl, bc
+	ld [hl], $1
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $a
+	add hl, bc
+	ld [hl], $10
+
+Function92e64: ; 92e64
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92e73
+	dec [hl]
+.asm_92e6d
+	ld a, SFX_GOT_SAFARI_BALLS
+	call Function9331e
+	ret
+
+.asm_92e73
+	ld a, [wc709]
+	and a
+	jr nz, .asm_92e88
+	call Function92f1d
+	jr nc, .asm_92e6d
+	and a
+	jr nz, .asm_92e6d
+	call Function92c3a
+	call WaitSFX
+	ret
+
+.asm_92e88
+	call Function92f1d
+	jr c, .asm_92e6d
+	call Function92c3a
+	call WaitSFX
+	ret
+; 92e94
+
+Function92e94: ; 92e94
+	xor a
+	ld [wc70b], a
+	ld [wc70c], a
+	call Function92a12
+	call Function92fb4
+	ld a, [wc70a]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_92ebd
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .asm_92eb6
+	push de
+	jp [hl]
+
+.asm_92eb6
+	ld a, [wc70b]
+	and a
+	ret z
+	scf
+	ret
+; 92ebd
+
+Jumptable_92ebd: ; 92ebd
+	dw Function92ed4
+	dw Function92ed1
+	dw Function92ecb
+	dw Function92ec5
+; 92ec5
+
+Function92ec5: ; 92ec5
+	call Function92ee0
+	call Function92ef6
+
+Function92ecb: ; 92ecb
+	call Function92ed5
+	call Function92f01
+
+Function92ed1: ; 92ed1
+	call Function92eeb
+
+Function92ed4: ; 92ed4
+	ret
+; 92ed5
+
+Function92ed5: ; 92ed5
+	ld hl, wc70e
+	ld a, [EnemyScreens]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92ee0
+
+Function92ee0: ; 92ee0
+	ld hl, wEnemyGoesFirst
+	ld a, [wc700]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92eeb
+
+Function92eeb: ; 92eeb
+	ld hl, wEnemyGoesFirst
+	ld a, [wc701]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92ef6
+
+Function92ef6: ; 92ef6
+	ld hl, wEnemyGoesFirst
+	ld a, [wc702]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92f01
+
+Function92f01: ; 92f01
+	ld hl, wc710
+	ld a, [wc702]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92f0c
+
+Function92f0c: ; 92f0c
+	ld [wc717], a
+	and a
+	jr nz, .asm_92f17
+	ld a, $1
+	ld [wc70c], a
+
+.asm_92f17
+	ld a, $1
+	ld [wc70b], a
+	ret
+; 92f1d
+
+Function92f1d: ; 92f1d
+	ld a, $ff
+	ld [EffectFailed], a
+	call Function92a12
+	call Function92fb4
+	ld a, [wc70a]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_92f48
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .asm_92f3d
+	push de
+	jp [hl]
+
+.asm_92f3d
+	ld a, [wc70d]
+	cp $ff
+	jr nz, .asm_92f46
+	and a
+	ret
+
+.asm_92f46
+	scf
+	ret
+; 92f48
+
+Jumptable_92f48: ; 92f48
+	dw Function92f5f
+	dw Function92f5c
+	dw Function92f56
+	dw Function92f50
+; 92f50
+
+Function92f50: ; 92f50
+	call Function92f70
+	call Function92f90
+
+Function92f56: ; 92f56
+	call Function92f60
+	call Function92fa0
+
+Function92f5c: ; 92f5c
+	call Function92f80
+
+Function92f5f: ; 92f5f
+	ret
+; 92f60
+
+Function92f60: ; 92f60
+	ld hl, wc70e
+	ld a, [wc700]
+	cp [hl]
+	ret nz
+	ld hl, wc703
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92f70
+
+Function92f70: ; 92f70
+	ld hl, wc710
+	ld a, [wc700]
+	cp [hl]
+	ret nz
+	ld hl, wc704
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92f80
+
+Function92f80: ; 92f80
+	ld hl, wEnemyGoesFirst
+	ld a, [wc701]
+	cp [hl]
+	ret nz
+	ld hl, wc704
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92f90
+
+Function92f90: ; 92f90
+	ld hl, wc70e
+	ld a, [wc702]
+	cp [hl]
+	ret nz
+	ld hl, wc704
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92fa0
+
+Function92fa0: ; 92fa0
+	ld hl, wc710
+	ld a, [wc702]
+	cp [hl]
+	ret nz
+	ld hl, wc705
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92fb0
+
+Function92fb0: ; 92fb0
+	ld [wc70d], a
+	ret
+; 92fb4
+
+Function92fb4: ; 92fb4
+	ld de, wc70e
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ret
+; 92fc0
+
+Function92fc0: ; 92fc0
+	ld hl, $3
+	add hl, bc
+	ld a, [hl]
+	push af
+	push hl
+	call Function92fcf
+	pop hl
+	pop af
+	ld [hl], a
+	ld a, e
+	ret
+; 92fcf
+
+Function92fcf: ; 92fcf
+	ld a, [wc709]
+	and a
+	jr nz, .asm_92fe8
+	ld e, $0
+.asm_92fd7
+	ld hl, $3
+	add hl, bc
+	inc [hl]
+	inc e
+	push de
+	call Function92f1d
+	pop de
+	jr nc, .asm_92fd7
+	and a
+	jr nz, .asm_92fd7
+	ret
+
+.asm_92fe8
+	call Random
+	and $7
+	cp $4
+	jr c, .asm_92fe8
+	ld e, a
+.asm_92ff2
+	ld a, e
+	inc e
+	ld hl, $3
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	push de
+	call Function92f1d
+	pop de
+	jr c, .asm_92ff2
+	ret
+; 93002
+
+Function93002: ; 93002 (24:7002)
+	ld a, [wc709]
+	and a
+	ret z
+	ld hl, Unknown_93023
+	ld a, [ScriptVar]
+	and a
+	jr z, .asm_93013
+	ld hl, Unknown_93031
+.asm_93013
+	call Random
+	ld c, a
+.asm_93017
+	ld a, [hli]
+	cp c
+	jr nc, .asm_9301e
+	inc hl
+	jr .asm_93017
+.asm_9301e
+	ld a, [hl]
+	ld [wc709], a
+	ret
+; 93023 (24:7023)
+
+Unknown_93023: ; 93023
+	db $01, $00
+	db $03, $04
+	db $0a, $14
+	db $14, $10
+	db $28, $0c
+	db $30, $08
+	db $ff, $ff
+; 93031
+
+Unknown_93031: ; 93031
+	db $02, $00
+	db $03, $04
+	db $08, $14
+	db $10, $10
+	db $1e, $0c
+	db $50, $08
+	db $ff, $ff
+; 9303f
+
+Function9303f: ; 9303f (24:703f)
+	ld b, $14
+	ld a, [wc70a]
+	dec a
+	jr z, asm_93066
+	dec a
+	jr z, asm_9305a
+	jr asm_9304e
+
+Function9304c: ; 9304c (24:704c)
+	ld b, $23
+asm_9304e: ; 9304e (24:704e)
+	hlcoord 3, 2
+	call Function93069
+	hlcoord 3, 10
+	call Function93069
+asm_9305a: ; 9305a (24:705a)
+	hlcoord 3, 4
+	call Function93069
+	hlcoord 3, 8
+	call Function93069
+asm_93066: ; 93066 (24:7066)
+	hlcoord 3, 6
+
+Function93069: ; 93069 (24:7069)
+	ld a, b
+	ld [hl], a
+	ld de, $d
+	add hl, de
+	ld [hl], a
+	ld de, $7
+	add hl, de
+	inc a
+	ld [hl], a
+	ld de, $d
+	add hl, de
+	ld [hl], a
+	ret
+
+Function9307c: ; 9307c (24:707c)
+	ld hl, UnknownText_0x930c7
+	call PrintText
+	ld hl, MenuDataHeader_0x930d6
+	call LoadMenuDataHeader
+	call InterpretMenu2
+	call WriteBackup
+	ret c
+	ld a, [MenuSelection2]
+	ld b, a
+	ld a, $4
+	sub b
+	ld [wc70a], a
+	ld hl, Coins
+	ld c, a
+	ld a, [hli]
+	and a
+	jr nz, .asm_930ad
+	ld a, [hl]
+	cp c
+	jr nc, .asm_930ad
+	ld hl, UnknownText_0x930d1
+	call PrintText
+	jr Function9307c
+.asm_930ad
+	ld hl, Coins + 1
+	ld a, [hl]
+	sub c
+	ld [hld], a
+	jr nc, .asm_930b6
+	dec [hl]
+.asm_930b6
+	call WaitSFX
+	ld de, SFX_PAY_DAY
+	call PlaySFX
+	ld hl, UnknownText_0x930cc
+	call PrintText
+	and a
+	ret
+; 930c7 (24:70c7)
+
+UnknownText_0x930c7: ; 0x930c7
+	; Bet how many coins?
+	text_jump UnknownText_0x1c5049
+	db "@"
+; 0x930cc
+
+UnknownText_0x930cc: ; 0x930cc
+	; Start!
+	text_jump UnknownText_0x1c505e
+	db "@"
+; 0x930d1
+
+UnknownText_0x930d1: ; 0x930d1
+	; Not enough coins.
+	text_jump UnknownText_0x1c5066
+	db "@"
+; 0x930d6
+
+MenuDataHeader_0x930d6: ; 0x930d6
+	db $40 ; flags
+	db 10, 14 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData2_0x930de
+	db 1 ; default option
+; 0x930de
+
+MenuData2_0x930de: ; 0x930de
+	db $80 ; flags
+	db 3 ; items
+	db " 3@"
+	db " 2@"
+	db " 1@"
+; 0x930e9
+
+Function930e9: ; 930e9 (24:70e9)
+	ld hl, Coins
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_930fd
+	ld hl, UnknownText_9311a
+	call PrintText
+	ld c, 60
+	call DelayFrames
+	jr .asm_93118
+.asm_930fd
+	ld hl, UnknownText_9311f
+	call PrintText
+	call LoadMenuTextBox
+	lb bc, 14, 12
+	call PlaceYesNoBox
+	ld a, [MenuSelection2]
+	dec a
+	call WriteBackup
+	and a
+	jr nz, .asm_93118
+	and a
+	ret
+.asm_93118
+	scf
+	ret
+; 9311a (24:711a)
+
+UnknownText_9311a: ; 9311a
+	text_jump UnknownText_0x1c5079
+	db "@"
+
+UnknownText_9311f: ; 9311f
+	text_jump UnknownText_0x1c5092
+	db "@"
+
+Function93124: ; 93124 (24:7124)
+	ld a, [EffectFailed]
+	cp $ff
+	jr z, .asm_93151
+	srl a
+	ld e, a
+	ld d, 0
+	ld hl, .data_93145
+	add hl, de
+	ld a, [hli]
+	ld [PlayerUsedMoves], a
+	ld e, a
+	ld a, [hl]
+	ld [wc711], a
+	ld d, a
+	callba MobileFn_105fe3
+	ret
+
+.data_93145
+	db $2c, $01
+	db $32, $00
+	db $06, $00
+	db $08, $00
+	db $0a, $00
+	db $0f, $00
+
+.asm_93151
+	ld hl, wc711
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+
+Function93158: ; 93158 (24:7158)
+	ld a, [EffectFailed]
+	cp $ff
+	jr nz, .asm_9316c
+	ld hl, UnknownText_0x931e0
+	call PrintText
+	callba MobileFn_105fd0
+	ret
+.asm_9316c
+	srl a
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_93195
+rept 3
+	add hl, de
+endr
+	ld de, StringBuffer2
+	ld bc, $4
+	call CopyBytes
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .asm_93188
+	push de
+	jp [hl]
+.asm_93188
+	ld hl, UnknownText_0x931b9
+	call PrintText
+	callba MobileFn_105f9f
+	ret
+; 93195 (24:7195)
+
+Unknown_93195: ; 93195
+	db "300@"
+	dw Function931e5
+	db "50@@"
+	dw Function9320b
+	db "6@@@"
+	dw Function93214
+	db "8@@@"
+	dw Function93214
+	db "10@@"
+	dw Function93214
+	db "15@@"
+	dw Function93214
+; 931b9
+
+UnknownText_0x931b9: ; 0x931b9
+	start_asm
+; 0x931ba
+
+Function931ba: ; 931ba
+	ld a, [EffectFailed]
+	add $25
+	ldcoord_a 2, 13
+	inc a
+	ldcoord_a 2, 14
+	inc a
+	ldcoord_a 3, 13
+	inc a
+	ldcoord_a 3, 14
+	hlcoord 18, 17
+	ld [hl], $ee
+	ld hl, UnknownText_0x931db
+rept 4
+	inc bc
+endr
+	ret
+; 931db
+
+UnknownText_0x931db: ; 0x931db
+	; lined up! Won @  coins!
+	text_jump UnknownText_0x1c509f
+	db "@"
+; 0x931e0
+
+UnknownText_0x931e0: ; 0x931e0
+	; Darn!
+	text_jump UnknownText_0x1c50bb
+	db "@"
+; 0x931e5
+
+Function931e5: ; 931e5
+	ld a, SFX_2ND_PLACE
+	call Function9331e
+	call WaitSFX
+	ld a, [wd002]
+	and a
+	jr nz, .asm_931ff
+	call Random
+	and $14
+	ret z
+	ld a, $ff
+	ld [wc709], a
+	ret
+
+.asm_931ff
+	call Random
+	and $1c
+	ret z
+	ld a, $ff
+	ld [wc709], a
+	ret
+; 9320b
+
+Function9320b: ; 9320b
+	ld a, SFX_3RD_PLACE
+	call Function9331e
+	call WaitSFX
+	ret
+; 93214
+
+Function93214: ; 93214
+	ld a, SFX_PRESENT
+	call Function9331e
+	call WaitSFX
+	ret
+; 9321d
+
+Function9321d: ; 9321d (24:721d)
+	ld hl, $b
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Jumptable_9322d
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+Jumptable_9322d: ; 9322d (24:722d)
+	dw Function93233
+	dw Function93259
+	dw Function93289
+
+
+Function93233: ; 93233 (24:7233)
+	ld hl, $e
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_93247
+	ld a, $2
+	ld [wcf64], a
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ret
+.asm_93247
+	dec [hl]
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld hl, $c
+	add hl, bc
+	ld [hl], $30
+	ld hl, $6
+	add hl, bc
+	ld [hl], $0
+
+Function93259: ; 93259 (24:7259)
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr c, .asm_93273
+	dec [hl]
+	ld e, a
+	ld d, $70
+	callba Functionce765
+	ld a, e
+	ld hl, $7
+	add hl, bc
+	ld [hl], a
+	ret
+.asm_93273
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld hl, $d
+	add hl, bc
+	ld [hl], $2
+	ld a, $1
+	ld [wcf64], a
+	ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
+	call Function9331e
+	ret
+
+Function93289: ; 93289 (24:7289)
+	ld hl, $6
+	add hl, bc
+	ld a, [hl]
+rept 2
+	inc [hl]
+endr
+	cp $48
+	jr nc, .asm_932a3
+	and $3
+	ret nz
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld [hl], a
+	ld [hSCY], a
+	ret
+.asm_932a3
+	ld hl, $b
+	add hl, bc
+	xor a
+	ld [hl], a
+	ld [hSCY], a
+	ret
+
+Function932ac: ; 932ac (24:72ac)
+	ld hl, $b
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Jumptable_932bc
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+Jumptable_932bc: ; 932bc (24:72bc)
+	dw Function932c2
+	dw Function932e0
+	dw Function932fc
+
+
+Function932c2: ; 932c2 (24:72c2)
+	ld hl, $4
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	cp $68
+	jr z, .asm_932d6
+	and $f
+	ret nz
+	ld de, SFX_JUMP_OVER_LEDGE
+	call PlaySFX
+	ret
+.asm_932d6
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld a, $1
+	ld [wcf64], a
+
+Function932e0: ; 932e0 (24:72e0)
+	ld a, [wcf64]
+	cp $2
+	jr z, .asm_932f1
+	cp $5
+	ret nz
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ret
+.asm_932f1
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld hl, $c
+	add hl, bc
+	ld [hl], $8
+
+Function932fc: ; 932fc (24:72fc)
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_93306
+	dec [hl]
+	ret
+.asm_93306
+	ld hl, $b
+	add hl, bc
+	dec [hl]
+	push bc
+	ld de, $606c
+	ld a, $8
+	call Function3b2a
+	pop bc
+	ret
+; 93316 (24:7316)
+
+Function93316: ; 93316
+	push bc
+	ld c, 16
+	call DelayFrames
+	pop bc
+	ret
+; 9331e
+
+Function9331e: ; 9331e (24:731e)
+	push de
+	ld e, a
+	ld d, 0
+	call PlaySFX
+	pop de
+	ret
+; 93327 (24:7327)
+
+Unknown_93327: ; 93327
+	db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14
+Unknown_93339: ; 93339
+	db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08
+Unknown_9334b: ; 9334b
+	db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08
+; 9335d
+
+SlotsTilemap: ; 9335d
+INCBIN "gfx/slots.tilemap"
+; 9344d
+
+Slots1LZ: ; 9344d
+INCBIN "gfx/slots_1.2bpp.lz"
+; 935cd
+
+Slots2LZ: ; 935cd
+INCBIN "gfx/slots_2.2bpp.lz"
+; 9382d
+
+Slots3LZ: ; 9382d
+INCBIN "gfx/slots_3.2bpp.lz"
+; 93a3d
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -65,14 +65,14 @@
 	add_special Special_SlotMachine
 	add_special Special_CardFlip
 	add_special Special_DummyNonfunctionalGameCornerGame
-	add_special Special_WhiteBGMapBufferScreen
-	add_special FadeBlackBGMap
+	add_special Special_ClearBGPalettesBufferScreen
+	add_special FadeOutPalettes
 	add_special Special_BattleTowerFade
 	add_special Special_FadeBlackQuickly
-	add_special FadeInBGMap
+	add_special FadeInPalettes
 	add_special Special_FadeInQuickly
 	add_special Special_ReloadSpritesNoPalettes
-	add_special WhiteBGMap
+	add_special ClearBGPalettes
 	add_special UpdateTimePals
 	add_special ClearTileMap
 	add_special UpdateSprites
@@ -465,8 +465,8 @@
 	db "@"
 ; 0xc3db
 
-Special_WhiteBGMapBufferScreen: ; c3db
-	call WhiteBGMap
+Special_ClearBGPalettesBufferScreen: ; c3db
+	call ClearBGPalettes
 	call BufferScreen
 	ret
 ; c3e2
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -139,7 +139,7 @@
 ; 126b7
 
 .Clear ; 126b7
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call Function2bae
 	call .DrawMenuAccount_
@@ -529,7 +529,7 @@
 .choosemenu
 	xor a
 	ld [PartyMenuActionText], a ; Choose a POKéMON.
-	call WhiteBGMap
+	call ClearBGPalettes
 
 .menu
 	callba Function5004f
@@ -1449,7 +1449,7 @@
 ; 12f50
 
 MonMenu_SweetScent: ; 12f50
-	callba DoMovementFunctionc
+	callba SweetScentFromMenu
 	ld b, $4
 	ld a, $2
 	ret
@@ -1466,7 +1466,7 @@
 	ld a, b
 	ld [Options], a
 	push af
-	call WhiteBGMap
+	call ClearBGPalettes
 	pop af
 	ret
 ; 12f73
@@ -1527,7 +1527,7 @@
 	call MoveScreenLoop
 	pop af
 	ld [Options], a
-	call WhiteBGMap
+	call ClearBGPalettes
 
 .egg
 	ld a, $0
@@ -1753,7 +1753,7 @@
 ; 13172
 
 SetUpMoveScreenBG: ; 13172
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	xor a
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -302,7 +302,7 @@
 	end
 
 BugContestResultsWarpScript:
-	special WhiteBGMap
+	special ClearBGPalettes
 	scall BugContestResults_CopyContestantsToResults
 	setevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
 	clearevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- a/engine/timeofdaypals.asm
+++ b/engine/timeofdaypals.asm
@@ -116,7 +116,7 @@
 	ret
 ; 8c079
 
-FadeInBGMap:: ; 8c079
+FadeInPalettes:: ; 8c079
 	ld c, $12
 	call GetTimePalFade
 	ld b, $4
@@ -124,7 +124,7 @@
 	ret
 ; 8c084
 
-FadeBlackBGMap:: ; 8c084
+FadeOutPalettes:: ; 8c084
 	call Function8c0c1
 	ld c, $9
 	call GetTimePalFade
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -1,6 +1,6 @@
 _TitleScreen: ; 10ed67
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	
--- /dev/null
+++ b/event/basement_key.asm
@@ -1,0 +1,34 @@
+_BasementKey: ; 507b4
+; Are we even in the right map to use this?
+	ld a, [MapGroup]
+	cp GROUP_WAREHOUSE_ENTRANCE
+	jr nz, .nope
+
+	ld a, [MapNumber]
+	cp MAP_WAREHOUSE_ENTRANCE
+	jr nz, .nope
+; Are we on the tile in front of the door?
+	call GetFacingTileCoord
+	ld a, d
+	cp 22
+	jr nz, .nope
+	ld a, e
+	cp 10
+	jr nz, .nope
+; Let's use the Basement Key
+	ld hl, .BasementKeyScript
+	call QueueScript
+	ld a, 1
+	ld [wd0ec], a
+	ret
+
+.nope
+	ld a, $0
+	ld [wd0ec], a
+	ret
+; 507e1
+
+.BasementKeyScript: ; 0x507e1
+	loadmovesprites
+	farjump BasementDoorScript
+; 0x507e6
--- /dev/null
+++ b/event/card_key.asm
@@ -1,0 +1,39 @@
+_CardKey: ; 50779
+; Are we even in the right map to use this?
+	ld a, [MapGroup]
+	cp GROUP_RADIO_TOWER_3F
+	jr nz, .nope
+
+	ld a, [MapNumber]
+	cp MAP_RADIO_TOWER_3F
+	jr nz, .nope
+; Are we facing the slot?
+	ld a, [PlayerDirection]
+	and $c
+	cp OW_UP
+	jr nz, .nope
+
+	call GetFacingTileCoord
+	ld a, d
+	cp 18
+	jr nz, .nope
+	ld a, e
+	cp 6
+	jr nz, .nope
+; Let's use the Card Key.
+	ld hl, .CardKeyScript
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+
+.nope
+	ld a, $0
+	ld [wd0ec], a
+	ret
+; 507af
+
+.CardKeyScript: ; 0x507af
+	loadmovesprites
+	farjump MapRadioTower3FSignpost2Script
+; 0x507b4
--- /dev/null
+++ b/event/poisonstep.asm
@@ -1,0 +1,162 @@
+DoPoisonStep:: ; 505da
+	ld a, [PartyCount]
+	and a
+	jr z, .no_faint
+
+	xor a
+	ld c, 7
+	ld hl, EngineBuffer1
+.loop_clearEngineBuffer1
+	ld [hli], a
+	dec c
+	jr nz, .loop_clearEngineBuffer1
+
+	xor a
+	ld [CurPartyMon], a
+.loop_check_poison
+	call .DamageMonIfPoisoned
+	jr nc, .not_poisoned
+; the output flag is stored in c, copy it to the ([CurPartyMon] + 2)nd EngineBuffer
+; and set the corresponding flag in EngineBuffer1
+	ld a, [CurPartyMon]
+	ld e, a
+	ld d, 0
+	ld hl, EngineBuffer2
+	add hl, de
+	ld [hl], c
+	ld a, [EngineBuffer1]
+	or c
+	ld [EngineBuffer1], a
+
+.not_poisoned
+	ld a, [PartyCount]
+	ld hl, CurPartyMon
+	inc [hl]
+	cp [hl]
+	jr nz, .loop_check_poison
+
+	ld a, [EngineBuffer1]
+	and %10
+	jr nz, .someone_has_fainted
+	ld a, [EngineBuffer1]
+	and %01
+	jr z, .no_faint
+	call .PlayPoisonSFX
+	xor a
+	ret
+
+.someone_has_fainted
+	ld a, BANK(.Script_MonFaintedToPoison)
+	ld hl, .Script_MonFaintedToPoison
+	call CallScript
+	scf
+	ret
+
+.no_faint
+	xor a
+	ret
+; 5062e
+
+.DamageMonIfPoisoned: ; 5062e
+; check if mon is poisoned, return if not
+	ld a, MON_STATUS
+	call GetPartyParamLocation
+	ld a, [hl]
+	and 1 << PSN
+	ret z
+
+; check if mon is already fainted, return if so
+	ld a, MON_HP
+	call GetPartyParamLocation
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+	or c
+	ret z
+
+; do 1 HP damage
+	dec bc
+	ld [hl], c
+	dec hl
+	ld [hl], b
+
+; check if mon has fainted as a result of poison damage
+	ld a, b
+	or c
+	jr nz, .not_fainted
+
+; the mon has fainted, reset its status, set carry, and return %10
+	ld a, MON_STATUS
+	call GetPartyParamLocation
+	ld [hl], 0
+	ld c, %10
+	scf
+	ret
+
+.not_fainted
+; set carry and return %01
+	ld c, %01
+	scf
+	ret
+; 50658
+
+.PlayPoisonSFX: ; 50658
+	ld de, SFX_POISON
+	call PlaySFX
+	ld b, $2
+	predef Functioncbcdd
+	call DelayFrame
+	ret
+; 50669
+
+.Script_MonFaintedToPoison: ; 50669
+	callasm .PlayPoisonSFX
+	loadfont
+	callasm .CheckWhitedOut
+	iffalse .whiteout
+	loadmovesprites
+	end
+; 50677
+
+.whiteout: ; 50677
+	farjump Script_OverworldWhiteout
+; 5067b
+
+.CheckWhitedOut: ; 5067b
+	xor a
+	ld [CurPartyMon], a
+	ld de, EngineBuffer2
+.party_loop
+	push de
+	ld a, [de]
+	and %10
+	jr z, .mon_not_fainted
+	ld c, HAPPINESS_POISONFAINT
+	callba ChangeHappiness
+	callba GetPartyNick
+	ld hl, .PoisonFaintText
+	call PrintText
+
+.mon_not_fainted
+	pop de
+	inc de
+	ld hl, CurPartyMon
+	inc [hl]
+	ld a, [PartyCount]
+	cp [hl]
+	jr nz, .party_loop
+	predef CheckPlayerPartyForFitPkmn
+	ld a, d
+	ld [ScriptVar], a
+	ret
+; 506b2
+
+.PoisonFaintText: ; 506b2
+	text_jump UnknownText_0x1c0acc
+	db "@"
+; 506b7
+
+.PoisonWhiteOutText: ; 506b7
+	text_jump UnknownText_0x1c0ada
+	db "@"
+; 506bc
--- /dev/null
+++ b/event/sacred_ash.asm
@@ -1,0 +1,74 @@
+
+_SacredAsh: ; 507e6
+	ld a, $0
+	ld [wd0ec], a
+	call CheckAnyFaintedMon
+	ret nc
+
+	ld hl, SacredAshScript
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+; 507fb
+
+CheckAnyFaintedMon: ; 507fb
+	ld de, PARTYMON_STRUCT_LENGTH
+	ld bc, PartySpecies
+	ld hl, PartyMon1HP
+	ld a, [PartyCount]
+	and a
+	ret z
+
+.loop
+	push af
+	push hl
+	ld a, [bc]
+	inc bc
+	cp EGG
+	jr z, .next
+
+	ld a, [hli]
+	or [hl]
+	jr z, .done
+
+.next
+	pop hl
+	add hl, de
+	pop af
+	dec a
+	jr nz, .loop
+	xor a
+	ret
+
+.done
+	pop hl
+	pop af
+	scf
+	ret
+; 50821
+
+SacredAshScript: ; 0x50821
+	special HealParty
+	reloadmappart
+	playsound SFX_WARP_TO
+	special FadeOutPalettes
+	special FadeInPalettes
+	special FadeOutPalettes
+	special FadeInPalettes
+	special FadeOutPalettes
+	special FadeInPalettes
+	waitbutton
+	writetext UnknownText_0x50845
+	playsound SFX_CAUGHT_MON
+	waitbutton
+	closetext
+	loadmovesprites
+	end
+; 0x50845
+
+UnknownText_0x50845: ; 0x50845
+	; 's #MON were all healed!
+	text_jump UnknownText_0x1c0b65
+	db "@"
+; 0x5084a
--- /dev/null
+++ b/event/squirtbottle.asm
@@ -1,0 +1,51 @@
+_Squirtbottle: ; 50730
+	ld hl, UnknownScript_0x5073c
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+; 5073c
+
+UnknownScript_0x5073c: ; 0x5073c
+	reloadmappart
+	special UpdateTimePals
+	callasm Function50753
+	iffalse UnknownScript_0x5074b
+	farjump WateredWeirdTreeScript
+; 0x5074b
+
+UnknownScript_0x5074b: ; 0x5074b
+	jumptext UnknownText_0x5074e
+; 0x5074e
+
+UnknownText_0x5074e: ; 0x5074e
+	; sprinkled water. But nothing happened…
+	text_jump UnknownText_0x1c0b3b
+	db "@"
+; 0x50753
+
+Function50753: ; 50753
+	ld a, [MapGroup]
+	cp GROUP_ROUTE_36
+	jr nz, .asm_50774
+
+	ld a, [MapNumber]
+	cp MAP_ROUTE_36
+	jr nz, .asm_50774
+
+	callba GetFacingObject
+	jr c, .asm_50774
+
+	ld a, d
+	cp $17
+	jr nz, .asm_50774
+
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_50774
+	xor a
+	ld [ScriptVar], a
+	ret
+; 50779
--- /dev/null
+++ b/event/sweet_scent.asm
@@ -1,0 +1,75 @@
+SweetScentFromMenu: ; 506bc
+	ld hl, UnknownScript_0x506c8
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+; 506c8
+
+UnknownScript_0x506c8: ; 0x506c8
+	reloadmappart
+	special UpdateTimePals
+	callasm GetPartyNick
+	writetext UnknownText_0x50726
+	closetext
+	callasm SweetScentEncounter
+	iffalse UnknownScript_0x506e9
+	checkflag ENGINE_BUG_CONTEST_TIMER
+	iftrue UnknownScript_0x506e5
+	battlecheck
+	startbattle
+	returnafterbattle
+	end
+; 0x506e5
+
+UnknownScript_0x506e5: ; 0x506e5
+	farjump BugCatchingContestBattleScript
+; 0x506e9
+
+UnknownScript_0x506e9: ; 0x506e9
+	writetext UnknownText_0x5072b
+	closetext
+	loadmovesprites
+	end
+; 0x506ef
+
+SweetScentEncounter: ; 506ef
+	callba CanUseSweetScent
+	jr nc, .no_battle
+	ld hl, StatusFlags2
+	bit 2, [hl]
+	jr nz, .not_in_bug_contest
+	callba GetMapEncounterRate
+	ld a, b
+	and a
+	jr z, .no_battle
+	callba ChooseWildEncounter
+	jr nz, .no_battle
+	jr .start_battle
+
+.not_in_bug_contest
+	callba ChooseWildEncounter_BugContest
+
+.start_battle
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.no_battle
+	xor a
+	ld [ScriptVar], a
+	ld [BattleType], a
+	ret
+; 50726
+
+UnknownText_0x50726: ; 0x50726
+	; used SWEET SCENT!
+	text_jump UnknownText_0x1c0b03
+	db "@"
+; 0x5072b
+
+UnknownText_0x5072b: ; 0x5072b
+	; Looks like there's nothing here…
+	text_jump UnknownText_0x1c0b1a
+	db "@"
+; 0x50730
--- a/event/whiteout.asm
+++ b/event/whiteout.asm
@@ -10,7 +10,7 @@
 Script_Whiteout: ; 0x124ce
 	writetext .WhitedOutText
 	closetext
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	pause 40
 	special HealParty
 	checkflag ENGINE_BUG_CONTEST_TIMER
binary files /dev/null b/gfx/overworld/chris_fish.2bpp differ
binary files /dev/null b/gfx/overworld/kris_fish.2bpp differ
binary files a/gfx/unknown/0b84f2.2bpp /dev/null differ
binary files a/gfx/unknown/0b8582.2bpp /dev/null differ
--- a/home.asm
+++ b/home.asm
@@ -530,7 +530,7 @@
 ; 31f3
 
 
-WhiteBGMap:: ; 31f3
+ClearBGPalettes:: ; 31f3
 	call ClearPalettes
 WaitBGMap:: ; 31f6
 ; Tell VBlank to update BG Map
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -1,6 +1,6 @@
 ; Audio interfaces.
 
-SoundRestart:: ; 3b4e
+MapSetup_Sound_Off:: ; 3b4e
 
 	push hl
 	push de
@@ -9,11 +9,11 @@
 
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(_SoundRestart)
+	ld a, BANK(_MapSetup_Sound_Off)
 	ld [hROMBank], a
 	ld [MBC3RomBank], a
 
-	call _SoundRestart
+	call _MapSetup_Sound_Off
 
 	pop af
 	ld [hROMBank], a
@@ -81,7 +81,7 @@
 
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(_PlayMusic) ; and BANK(_SoundRestart)
+	ld a, BANK(_PlayMusic) ; and BANK(_MapSetup_Sound_Off)
 	ld [hROMBank], a
 	ld [MBC3RomBank], a
 
@@ -93,7 +93,7 @@
 	jr .end
 
 .nomusic
-	call _SoundRestart
+	call _MapSetup_Sound_Off
 
 .end
 	pop af
--- a/home/init.asm
+++ b/home/init.asm
@@ -1,6 +1,6 @@
 Reset:: ; 150
 	di
-	call SoundRestart
+	call MapSetup_Sound_Off
 	xor a
 	ld [hMapAnims], a
 	call ClearPalettes
@@ -168,7 +168,7 @@
 
 	predef Function9853
 
-	call SoundRestart
+	call MapSetup_Sound_Off
 	xor a
 	ld [wMapMusic], a
 	jp GameInit
--- a/home/map.asm
+++ b/home/map.asm
@@ -209,8 +209,8 @@
 	ret
 ; 222a
 
-Function222a:: ; 222a
-	ld a, MAPSETUP_10
+ReturnToMapFromSubmenu:: ; 222a
+	ld a, MAPSETUP_SUBMENU
 	ld [hMapEntryMethod], a
 	callba RunMapSetupScript
 	xor a
@@ -1099,6 +1099,7 @@
 ; 26c7
 
 GetMovementData:: ; 26c7
+; Initialize the movement data for person c at b:hl
 	ld a, [hROMBank]
 	push af
 	ld a, b
@@ -1105,7 +1106,7 @@
 	rst Bankswitch
 
 	ld a, c
-	call Function19e9
+	call LoadMovementDataPointer
 
 	pop hl
 	ld a, h
@@ -1964,7 +1965,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call LoadStandardMenuDataHeader
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	call ClearSprites
 	call DisableSpriteUpdates
 	ret
@@ -1972,7 +1973,7 @@
 
 
 Function2b3c:: ; 2b3c
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function2bae
 	call UpdateSprites
 	call Call_ExitMenu
@@ -1981,7 +1982,7 @@
 ; 2b4d
 
 Function2b4d:: ; 2b4d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call Function2bae
 	call UpdateSprites
@@ -1993,7 +1994,7 @@
 	call GetSGBLayout
 	callba Function49409
 	call Function3200
-	callba FadeInBGMap
+	callba FadeInPalettes
 	call EnableSpriteUpdates
 	ret
 ; 2b74
@@ -2003,7 +2004,7 @@
 	push af
 	ld a, $1
 	ld [wc2ce], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call Function2bae
 	hlcoord 0, 12
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -428,7 +428,8 @@
 
 
 
-Function19e9:: ; 19e9
+LoadMovementDataPointer:: ; 19e9
+; Load the movement data pointer for person a.
 	ld [wMovementPerson], a
 	ld a, [hROMBank]
 	ld [wMovementDataPointer], a
@@ -439,12 +440,15 @@
 	ld a, [wMovementPerson]
 	call CheckObjectVisibility
 	ret c
+
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], SPRITEMOVEDATA_SCRIPTED
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
+
 	ld hl, VramState
 	set 7, [hl]
 	and a
@@ -589,14 +593,15 @@
 ; 1aae
 
 Function1aae:: ; 1aae
+; Switch to the movement data bank
 	ld a, [hROMBank]
 	push af
 	ld a, [hli]
 	rst Bankswitch
-
+; Load the current script byte as given by OBJECT_MOVEMENT_BYTE_INDEX, and increment OBJECT_MOVEMENT_BYTE_INDEX
 	ld a, [hli]
 	ld d, [hl]
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	add [hl]
 	ld e, a
--- a/home/serial.asm
+++ b/home/serial.asm
@@ -6,7 +6,7 @@
 	push de
 	push hl
 
-	ld a, [$ffc9]
+	ld a, [hFFC9]
 	and a
 	jr nz, .asm_71c
 
@@ -77,7 +77,7 @@
 
 .asm_752
 	ld a, $1
-	ld [$ffca], a
+	ld [hFFCA], a
 	ld a, $fe
 	ld [hSerialSend], a
 
@@ -91,7 +91,7 @@
 
 Function75f:: ; 75f
 	ld a, $1
-	ld [$ffcc], a
+	ld [hFFCC], a
 .asm_763
 	ld a, [hl]
 	ld [hSerialSend], a
@@ -103,7 +103,7 @@
 .asm_76e
 	dec a
 	jr nz, .asm_76e
-	ld a, [$ffcc]
+	ld a, [hFFCC]
 	and a
 	ld a, b
 	pop bc
@@ -112,7 +112,7 @@
 	cp $fd
 	jr nz, .asm_763
 	xor a
-	ld [$ffcc], a
+	ld [hFFCC], a
 	jr .asm_763
 
 .asm_782
@@ -127,7 +127,7 @@
 
 Function78a:: ; 78a
 	xor a
-	ld [$ffca], a
+	ld [hFFCA], a
 	ld a, [hLinkPlayerNumber]
 	cp $2
 	jr nz, .asm_79b
@@ -137,7 +137,7 @@
 	ld [rSC], a
 
 .asm_79b
-	ld a, [$ffca]
+	ld a, [hFFCA]
 	and a
 	jr nz, .asm_7e5
 	ld a, [hLinkPlayerNumber]
@@ -182,7 +182,7 @@
 
 .asm_7e5
 	xor a
-	ld [$ffca], a
+	ld [hFFCA], a
 	ld a, [rIE]
 	and $f
 	sub $8
@@ -251,7 +251,7 @@
 	ld de, wcf51
 	ld c, $2
 	ld a, $1
-	ld [$ffcc], a
+	ld [hFFCC], a
 .asm_847
 	call DelayFrame
 	ld a, [hl]
@@ -259,10 +259,10 @@
 	call Function78a
 	ld b, a
 	inc hl
-	ld a, [$ffcc]
+	ld a, [hFFCC]
 	and a
 	ld a, $0
-	ld [$ffcc], a
+	ld [hFFCC], a
 	jr nz, .asm_847
 	ld a, b
 	ld [de], a
--- a/hram.asm
+++ b/hram.asm
@@ -68,14 +68,18 @@
 
 hUsedSpriteIndex   EQU $ffbd
 hUsedSpriteTile    EQU $ffbe
+hFFBF              EQU $ffbf
+hFFC0              EQU $ffc0
+hFFC1              EQU $ffc1
+hFFC2              EQU $ffc2
 hMoneyTemp         EQU $ffc3
 
 hLCDStatCustom     EQU $ffc6
 
 hFFC9              EQU $ffc9
-
+hFFCA              EQU $ffca
 hLinkPlayerNumber  EQU $ffcb
-
+hFFCC              EQU $ffcc
 hSerialSend        EQU $ffcd
 hSerialReceive     EQU $ffce
 
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -714,7 +714,7 @@
 	and a
 	jr z, .toss
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 
 .toss
@@ -1866,7 +1866,7 @@
 	push hl
 	push de
 	push bc
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Functionf21c
 	pop bc
 	pop de
--- a/macros/movement.asm
+++ b/macros/movement.asm
@@ -303,18 +303,46 @@
 	db movement_hide_person ; $3d
 	endm
 
-	enum movement_show_person
-show_person: macro
-	db movement_show_person ; $3e
+	enum movement_step_sleep_1
+step_sleep_1: macro
+	db movement_step_sleep_1 ; $3e
 	endm
 
-__enum__ = $45
+	enum movement_step_sleep_2
+step_sleep_2: macro
+	db movement_step_sleep_2 ; $3f
+	endm
 
-	enum movement_accelerate_last
-accelerate_last: macro
-	db movement_accelerate_last ; $45
+	enum movement_step_sleep_3
+step_sleep_3: macro
+	db movement_step_sleep_3 ; $40
 	endm
 
+	enum movement_step_sleep_4
+step_sleep_4: macro
+	db movement_step_sleep_4 ; $41
+	endm
+
+	enum movement_step_sleep_5
+step_sleep_5: macro
+	db movement_step_sleep_5 ; $42
+	endm
+
+	enum movement_step_sleep_6
+step_sleep_6: macro
+	db movement_step_sleep_6 ; $43
+	endm
+
+	enum movement_step_sleep_7
+step_sleep_7: macro
+	db movement_step_sleep_7 ; $44
+	endm
+
+	enum movement_step_sleep_8
+step_sleep_8: macro
+	db movement_step_sleep_8 ; $45
+	endm
+
 	enum movement_step_sleep
 step_sleep: macro
 	db movement_step_sleep ; $46
@@ -333,6 +361,11 @@
 	db movement_remove_person ; $49
 	endm
 
+	enum movement_step_loop
+step_loop: macro
+	db movement_step_loop ; $4a
+	endm
+
 __enum__ = $4c
 
 	enum movement_teleport_from
@@ -362,9 +395,9 @@
 	db movement_fish_got_bite ; $51
 	endm
 
-	enum movement_fish_got_bite_2
-fish_got_bite_2: macro
-	db movement_fish_got_bite_2 ; $52
+	enum movement_fish_cast_rod
+fish_cast_rod: macro
+	db movement_fish_cast_rod ; $52
 	endm
 
 	enum movement_hide_emote
--- a/main.asm
+++ b/main.asm
@@ -439,7 +439,7 @@
 	ld [MusicFadeIDLo], a
 	ld a, MUSIC_NONE / $100
 	ld [MusicFadeIDHi], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function5df0
 	call WriteBackup
 	call ClearTileMap
@@ -451,7 +451,7 @@
 	ld a, [wSpawnAfterChampion]
 	cp SPAWN_LANCE
 	jr z, .SpawnAfterE4
-	ld a, MAPSETUP_02
+	ld a, MAPSETUP_CONTINUE
 	ld [hMapEntryMethod], a
 	jp FinishContinueFunction
 
@@ -1085,7 +1085,7 @@
 	jr nc, .loop
 
 	call ClearSprites
-	call WhiteBGMap
+	call ClearBGPalettes
 
 	pop af
 	ld [rSVBK], a
@@ -1467,7 +1467,7 @@
 GameInit:: ; 642e
 	callba Function14f1c
 	call ResetTextRelatedRAM
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
@@ -3186,7 +3186,7 @@
 	call DisableSpriteUpdates
 	xor a
 	ld [hBGMapMode], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	hlcoord 0, 0
 	ld bc, TileMapEnd - TileMap
@@ -3603,6 +3603,7 @@
 	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, de
 	ld [hl], a
+
 	ld a, [wc2f4]
 	call Function1a61
 	ld a, [wc2f3]
@@ -3610,30 +3611,39 @@
 	add hl, de
 	or [hl]
 	ld [hl], a
+
 	ld a, [wc2f7]
 	call Function82d5
+
 	ld a, [wc2f6]
 	call Function82f1
+
 	ld a, [wc2f1]
 	ld hl, OBJECT_SPRITE
 	add hl, de
 	ld [hl], a
+
 	ld a, [wc2f2]
 	ld hl, OBJECT_SPRITE_TILE
 	add hl, de
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, de
 	ld [hl], $0
+
 	ld hl, OBJECT_FACING_STEP
 	add hl, de
 	ld [hl], $ff
+
 	ld a, [wc2f8]
 	call Function830d
+
 	ld a, [wc2f5]
 	ld hl, OBJECT_32
 	add hl, de
 	ld [hl], a
+
 	and a
 	ret
 ; 82d5
@@ -3694,7 +3704,7 @@
 TrainerWalkToPlayer: ; 831e
 	ld a, [hLastTalked]
 	call InitMovementBuffer
-	ld a, movement_show_person
+	ld a, movement_step_sleep_1
 	call AppendToMovementBuffer
 	ld a, [wd03f]
 	dec a
@@ -5269,7 +5279,7 @@
 	special WarpToSpawnPoint
 	callasm DelayLoadingNewSprites
 	writecode VAR_MOVEMENT, $0
-	newloadmap MAPSETUP_12
+	newloadmap MAPSETUP_FLY
 	callasm Function8cb33
 	special WaitSFX
 	callasm Functioncacb
@@ -5537,7 +5547,7 @@
 	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
-	newloadmap MAPSETUP_05
+	newloadmap MAPSETUP_DOOR
 	playsound SFX_WARP_FROM
 	applymovement PLAYER, MovementData_0xcc5d
 	end
@@ -5635,7 +5645,7 @@
 	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
-	newloadmap MAPSETUP_04
+	newloadmap MAPSETUP_TELEPORT
 	playsound SFX_WARP_FROM
 	applymovement PLAYER, MovementData_0xcce3
 	end
@@ -6333,7 +6343,7 @@
 	fish_got_bite
 	fish_got_bite
 	fish_got_bite
-	show_person
+	step_sleep_1
 	show_emote
 	step_end
 ; d069
@@ -6340,7 +6350,7 @@
 
 MovementData_0xd069: ; d069
 	hide_emote
-	fish_got_bite_2
+	fish_cast_rod
 	step_end
 ; d06c
 
@@ -6362,7 +6372,7 @@
 	loadvar hBGMapMode, $0
 	special UpdateTimePals
 	loademote EMOTE_09
-	callasm Functionb84b3
+	callasm LoadFishingGFX
 	loademote EMOTE_SHOCK
 	applymovement PLAYER, MovementData_0xd093
 	pause 40
@@ -6370,7 +6380,7 @@
 ; 0xd093
 
 MovementData_0xd093: ; d093
-	fish_got_bite_2
+	fish_cast_rod
 	step_end
 ; d095
 
@@ -9801,7 +9811,7 @@
 	ret
 
 Functione443: ; e443 (3:6443)
-	ld hl, MenuDataHeader_0xe46f
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
 	ld a, $1
 .loop
@@ -9815,7 +9825,7 @@
 	ld a, [wMenuCursorBuffer]
 	push af
 	ld a, [MenuSelection]
-	ld hl, Jumptable_e4ba
+	ld hl, .Jumptable
 	rst JumpTable
 	pop bc
 	ld a, b
@@ -9825,23 +9835,23 @@
 	ret
 ; e46f (3:646f)
 
-MenuDataHeader_0xe46f: ; 0xe46f
+.MenuDataHeader: ; 0xe46f
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 17, 19 ; end coords
-	dw MenuData2_0xe477
+	dw .MenuData2
 	db 1 ; default option
 ; 0xe477
 
-MenuData2_0xe477: ; 0xe477
+.MenuData2: ; 0xe477
 	db $80 ; flags
 	db 0 ; items
-	dw MenuItems_e4c4
+	dw .items
 	dw Function1f79
-	dw Strings_e47f
+	dw .strings
 ; 0xe47f
 
-Strings_e47f: ; e47f
+.strings: ; e47f
 	db "WITHDRAW <PK><MN>@"
 	db "DEPOSIT <PK><MN>@"
 	db "CHANGE BOX@"
@@ -9848,15 +9858,15 @@
 	db "MOVE <PK><MN> W/O MAIL@"
 	db "SEE YA!@"
 
-Jumptable_e4ba: ; e4ba (3:64ba)
-	dw Functione559
-	dw Functione4fe
-	dw Functione583
-	dw Functione4cd
-	dw Functione4cb
+.Jumptable: ; e4ba (3:64ba)
+	dw BillsPC_WithdrawMenu
+	dw BillsPC_DepositMenu
+	dw BillsPC_ChangeBoxMenu
+	dw BillsPC_MovePKMNMenu
+	dw BillsPC_SeeYa
 ; e4c4
 
-MenuItems_e4c4: ; e4c4
+.items: ; e4c4
 	db 5
 	db 0 ; WITHDRAW
 	db 1;  DEPOSIT
@@ -9866,27 +9876,27 @@
 	db -1
 ; e4cb
 
-Functione4cb: ; e4cb
+BillsPC_SeeYa: ; e4cb
 	scf
 	ret
 ; e4cd
 
-Functione4cd: ; e4cd
+BillsPC_MovePKMNMenu: ; e4cd
 	call LoadStandardMenuDataHeader
 	callba Function44781
-	jr nc, .asm_e4e0
+	jr nc, .no_mail
 	ld hl, UnknownText_0xe4f9
 	call PrintText
-	jr .asm_e4f4
+	jr .quit
 
-.asm_e4e0
+.no_mail
 	callba Function14b34
-	jr c, .asm_e4f4
-	callba Functione2759
-	call Function222a
+	jr c, .quit
+	callba _MovePKMNWithoutMail
+	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
 
-.asm_e4f4
+.quit
 	call WriteBackup
 	and a
 	ret
@@ -9898,10 +9908,10 @@
 	db "@"
 ; 0xe4fe
 
-Functione4fe: ; e4fe (3:64fe)
+BillsPC_DepositMenu: ; e4fe (3:64fe)
 	call LoadStandardMenuDataHeader
-	callba Functione2391
-	call Function222a
+	callba _DepositPKMN
+	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
 	call WriteBackup
 	and a
@@ -9974,10 +9984,10 @@
 ; e559
 
 
-Functione559: ; e559 (3:6559)
+BillsPC_WithdrawMenu: ; e559 (3:6559)
 	call LoadStandardMenuDataHeader
-	callba Functione2583
-	call Function222a
+	callba _WithdrawPKMN
+	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
 	call WriteBackup
 	and a
@@ -10004,8 +10014,8 @@
 	db "@"
 ; 0xe583
 
-Functione583: ; e583 (3:6583)
-	callba Functione35aa
+BillsPC_ChangeBoxMenu: ; e583 (3:6583)
+	callba _ChangeBox
 	and a
 	ret
 
@@ -10013,7 +10023,7 @@
 	call DisableSpriteUpdates
 	xor a
 	ld [hBGMapMode], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	hlcoord 0, 0
 	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
@@ -10395,7 +10405,7 @@
 	ret
 
 Function11e9a: ; 11e9a (4:5e9a)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	call Function11c51
 	ld de, VTiles0 tile $00
@@ -11635,7 +11645,7 @@
 	ret
 
 .asm_156f9
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld c, $1
 	ret
 ; 156ff
@@ -13144,7 +13154,7 @@
 	push af
 	set NO_TEXT_SCROLL, a
 	ld [Options], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 
 	ld de, UnownDexATile
@@ -13225,7 +13235,7 @@
 	ld [Options], a
 	pop af
 	ld [hInMenu], a
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ret
 ; 16ca0
 
@@ -15710,7 +15720,7 @@
 	ret
 
 Function2513b: ; 2513b (9:513b)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -17997,7 +18007,7 @@
 INCLUDE "trainers/dvs.asm"
 
 Function2715c: ; 2715c
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
@@ -19614,7 +19624,7 @@
 ; 2c1b2
 
 _ShowLinkBattleParticipants: ; 2c1b2
-	call WhiteBGMap
+	call ClearBGPalettes
 	call LoadFontsExtra
 	hlcoord 2, 3
 	ld b, 9
@@ -20222,7 +20232,7 @@
 	ld de, wd066
 	ld bc, $c
 	call CopyBytes
-	call WhiteBGMap
+	call ClearBGPalettes
 
 Function2c80a: ; 2c80a
 	callba Function5004f
@@ -23442,7 +23452,7 @@
 	call FadeToMenu
 	xor a
 	ld [PartyMenuActionText], a
-	call WhiteBGMap
+	call ClearBGPalettes
 .asm_448dc
 	callba Function5004f
 	callba Function50405
@@ -23564,7 +23574,7 @@
 	ld a, c
 	and a
 	call z, Function48000
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48d3d
 	ld a, [wd479]
 	bit 1, a
@@ -23587,7 +23597,7 @@
 	lb bc, BANK(GFX_488cb), 1
 	call Request1bpp
 	call Function4a3a7
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_4808a
@@ -23604,7 +23614,7 @@
 	call DelayFrames
 	ld b, $1
 	call Function4930f
-	call WhiteBGMap
+	call ClearBGPalettes
 	hlcoord 0, 0
 	ld b, $2
 	ld c, $14
@@ -23698,7 +23708,7 @@
 .asm_48177
 	jp Function48272
 .asm_4817a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48d30
 	pop bc
 	call ClearTileMap
@@ -23811,7 +23821,7 @@
 	call DelayFrames
 
 .asm_4825c
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48d30
 	pop bc
 	call ClearTileMap
@@ -24223,7 +24233,7 @@
 	call DelayFrames
 	ld b, $1
 	call Function4930f
-	call WhiteBGMap
+	call ClearBGPalettes
 	hlcoord 0, 0
 	ld b, $4
 	ld c, $14
@@ -25436,7 +25446,7 @@
 	ld [MusicFadeIDHi], a
 	ld c, 8
 	call DelayFrames
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48000
 	call LoadFontsExtra
 	hlcoord 0, 0
@@ -25505,7 +25515,7 @@
 
 Function4925b: ; 4925b
 	call FadeToMenu
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearScreen
 	call DelayFrame
 	ld b, $14
@@ -26955,16 +26965,16 @@
 ; 49efc
 
 MainMenu_Mobile: ; 49efc
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld a, MUSIC_MOBILE_ADAPTER_MENU
 	ld [wMapMusic], a
 	ld de, MUSIC_MOBILE_ADAPTER_MENU
 	call Function4a6c5
 Function49f0a: ; 49f0a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function4a3a7
 	call Function4a492
-	call WhiteBGMap
+	call ClearBGPalettes
 Function49f16: ; 49f16
 	call Function4a071
 	ld c, 12
@@ -27021,7 +27031,7 @@
 
 .asm_49f84
 	pop bc
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, MUSIC_MAIN_MENU
 	ld [wMapMusic], a
@@ -27160,7 +27170,7 @@
 	ld c, $1
 	call Function4802f
 	push af
-	call WhiteBGMap
+	call ClearBGPalettes
 	pop af
 	and a
 	jr nz, .asm_4a0f9
@@ -27173,9 +27183,9 @@
 Function4a100: ; 4a100 (12:6100)
 	ld a, $2
 	call Function1ff8
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function4a13b
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 
 asm_4a111: ; 4a111 (12:6111)
@@ -27308,7 +27318,7 @@
 	ld a, $1
 	call Function1ff8
 	callba Function1719c8
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DelayFrame
 	jr Function4a239
 
@@ -27378,7 +27388,7 @@
 	jr z, .asm_4a33b
 .asm_4a2df
 	callba Function11765d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call LoadFontsExtra
 	scf
@@ -27610,7 +27620,7 @@
 	push bc
 	push de
 	callba MobileStudium
-	call WhiteBGMap
+	call ClearBGPalettes
 	pop de
 	pop bc
 	ld a, b
@@ -27626,11 +27636,11 @@
 
 
 Function4a4c4: ; 4a4c4 (12:64c4)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function4a3a7
 	call Function4a492
 	call Function4a680
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld c, 20
 	call DelayFrames
 	hlcoord 2, 0
@@ -27704,7 +27714,7 @@
 	call Function1ff8
 .asm_4a574
 	pop bc
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	jp Function49f0a
 .asm_4a57e
@@ -27805,7 +27815,7 @@
 Function4a6ab: ; 4a6ab (12:66ab)
 	ld a, $2
 	call Function1ff8
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld b, $8
 	call GetSGBLayout
 	callba Function11c1ab
@@ -28429,7 +28439,7 @@
 ; 0x4aa22
 
 Function4aa22: ; 4aa22
-	call WhiteBGMap
+	call ClearBGPalettes
 
 Function4aa25: ; 4aa25
 	callba Function5004f
@@ -29524,7 +29534,7 @@
 	inc a
 	ld [MenuSelection2], a
 	call ClearScreen
-	call WhiteBGMap
+	call ClearBGPalettes
 	call MaxVolume
 	callba Function28ef8
 	callba Function4d354
@@ -30745,13 +30755,13 @@
 
 	push bc
 	push hl
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call UpdateSprites
 	callba Functionfb53e
 	pop hl
 	call _hl_
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	pop bc
 
@@ -30860,7 +30870,7 @@
 MonStatsInit: ; 4dd72 (13:5d72)
 	ld hl, wcf64
 	res 6, [hl]
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	callba Function10402d
 	call Function4ddf2
@@ -32140,1386 +32150,14 @@
 
 SECTION "bank14", ROMX, BANK[$14]
 
-SelectMonFromParty: ; 50000
-	call DisableSpriteUpdates
-	xor a
-	ld [PartyMenuActionText], a
-	call WhiteBGMap
-	call Function5003f
-	call WaitBGMap
-	call SetPalettes
-	call DelayFrame
-	call PartyMenuSelect
-	call Function2b74
-	ret
-; 5001d
+INCLUDE "engine/party_menu.asm"
+INCLUDE "event/poisonstep.asm"
+INCLUDE "event/sweet_scent.asm"
+INCLUDE "event/squirtbottle.asm"
+INCLUDE "event/card_key.asm"
+INCLUDE "event/basement_key.asm"
+INCLUDE "event/sacred_ash.asm"
 
-
-Function5001d: ; 5001d
-	ld a, b
-	ld [PartyMenuActionText], a
-	call DisableSpriteUpdates
-	call WhiteBGMap
-	call Function5003f
-	call WaitBGMap
-	ld b, $a
-	call GetSGBLayout
-	call SetPalettes
-	call DelayFrame
-	call PartyMenuSelect
-	call Function2b74
-	ret
-; 5003f
-
-Function5003f: ; 5003f
-	call Function5004f
-	call Function50405
-	call Function503e0
-	call WritePartyMenuTilemap
-	call PrintPartyMenuText
-	ret
-; 5004f
-
-Function5004f: ; 5004f
-	call LoadFontsBattleExtra
-	callab Function8ad1 ; engine/color.asm
-	callab InefficientlyClear121BytesAtwc300
-	ret
-; 5005f
-
-
-WritePartyMenuTilemap: ; 0x5005f
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl] ; Disable text delay
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, " "
-	call ByteFill ; blank the tilemap
-	call GetPartyMenuTilemapPointers ; This reads from a pointer table???
-.loop
-	ld a, [hli]
-	cp $ff
-	jr z, .end ; 0x5007a $8
-	push hl
-	ld hl, .Jumptable
-	rst JumpTable
-	pop hl
-	jr .loop ; 0x50082 $f3
-.end
-	pop af
-	ld [Options], a
-	ret
-; 0x50089
-
-.Jumptable: ; 50089
-	dw PlacePartyNicknames
-	dw PlacePartyHPBar
-	dw PlacePartyMenuHPDigits
-	dw PlacePartyMonLevel
-	dw PlacePartyMonStatus
-	dw PlacePartyMonTMHMCompatibility
-	dw PlacePartyMonEvoStoneCompatibility
-	dw PlacePartyMonGender
-	dw PlacePartyMonMobileBattleSelection
-; 5009b
-
-PlacePartyNicknames: ; 5009b
-	hlcoord 3, 1
-	ld a, [PartyCount]
-	and a
-	jr z, .end
-	ld c, a
-	ld b, $0
-.loop
-	push bc
-	push hl
-	push hl
-	ld hl, PartyMonNicknames
-	ld a, b
-	call GetNick
-	pop hl
-	call PlaceString
-	pop hl
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-
-.end
-rept 2
-	dec hl
-endr
-	ld de, .CANCEL
-	call PlaceString
-	ret
-; 500c8
-
-.CANCEL: ; 500c8
-	db "CANCEL@"
-; 500cf
-
-
-PlacePartyHPBar: ; 500cf
-	xor a
-	ld [wcda9], a
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, $0
-	hlcoord 11, 2
-.loop
-	push bc
-	push hl
-	call PartyMenuCheckEgg
-	jr z, .skip
-	push hl
-	call PlacePartymonHPBar
-	pop hl
-	ld d, $6
-	ld b, $0
-	call DrawBattleHPBar
-	ld hl, wcd9b
-	ld a, [wcda9]
-	ld c, a
-	ld b, $0
-	add hl, bc
-	call SetHPPal
-	ld b, $fc
-	call GetSGBLayout
-
-.skip
-	ld hl, wcda9
-	inc [hl]
-	pop hl
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ld b, $a
-	call GetSGBLayout
-	ret
-; 50117
-
-PlacePartymonHPBar: ; 50117
-	ld a, b
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld hl, PartyMon1HP
-	call AddNTimes
-	ld a, [hli]
-	or [hl]
-	jr nz, .not_fainted
-	xor a
-	ld e, a
-	ld c, a
-	ret
-
-.not_fainted
-	dec hl
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld e, a
-	predef DrawPartyMenuHPBar
-	ret
-; 50138
-
-PlacePartyMenuHPDigits: ; 50138
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, $0
-	hlcoord 13, 1
-.loop
-	push bc
-	push hl
-	call PartyMenuCheckEgg
-	jr z, .next
-	push hl
-	ld a, b
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld hl, PartyMon1HP
-	call AddNTimes
-	ld e, l
-	ld d, h
-	pop hl
-	push de
-	lb bc, 2, 3
-	call PrintNum
-	pop de
-	ld a, "/"
-	ld [hli], a
-rept 2
-	inc de
-endr
-	lb bc, 2, 3
-	call PrintNum
-
-.next
-	pop hl
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ret
-; 50176
-
-PlacePartyMonLevel: ; 50176
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 8, 2
-.loop
-	push bc
-	push hl
-	call PartyMenuCheckEgg
-	jr z, .next
-	push hl
-	ld a, b
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld hl, PartyMon1Level
-	call AddNTimes
-	ld e, l
-	ld d, h
-	pop hl
-	ld a, [de]
-	cp 100 ; This is distinct from MAX_LEVEL.
-	jr nc, .ThreeDigits
-	ld a, "<LV>"
-	ld [hli], a
-	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
-	; jr .okay
-.ThreeDigits
-	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
-; .okay
-	call PrintNum
-
-.next
-	pop hl
-	ld de, SCREEN_WIDTH * 2
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ret
-; 501b2
-
-PlacePartyMonStatus: ; 501b2
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 5, 2
-.loop
-	push bc
-	push hl
-	call PartyMenuCheckEgg
-	jr z, .next
-	push hl
-	ld a, b
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld hl, PartyMon1Status
-	call AddNTimes
-	ld e, l
-	ld d, h
-	pop hl
-	call PlaceStatusString
-
-.next
-	pop hl
-	ld de, SCREEN_WIDTH * 2
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ret
-; 501e0
-
-PlacePartyMonTMHMCompatibility: ; 501e0
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 2
-.loop
-	push bc
-	push hl
-	call PartyMenuCheckEgg
-	jr z, .next
-	push hl
-	ld hl, PartySpecies
-	ld e, b
-	ld d, 0
-	add hl, de
-	ld a, [hl]
-	ld [CurPartySpecies], a
-	predef CanLearnTMHMMove
-	pop hl
-	call .PlaceAbleNotAble
-	call PlaceString
-
-.next
-	pop hl
-	ld de, SCREEN_WIDTH * 2
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ret
-; 50215
-
-.PlaceAbleNotAble: ; 50215
-	ld a, c
-	and a
-	jr nz, .able
-	ld de, .string_not_able
-	ret
-
-.able
-	ld de, .string_able
-	ret
-; 50221
-
-.string_able: ; 50221
-	db "ABLE@"
-; 50226
-
-.string_not_able: ; 50226
-	db "NOT ABLE@"
-; 5022f
-
-
-PlacePartyMonEvoStoneCompatibility: ; 5022f
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 2
-.loop
-	push bc
-	push hl
-	call PartyMenuCheckEgg
-	jr z, .next
-	push hl
-	ld a, b
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld hl, PartyMon1Species
-	call AddNTimes
-	ld a, [hl]
-	dec a
-	ld e, a
-	ld d, 0
-	ld hl, EvosAttacksPointers
-rept 2
-	add hl, de
-endr
-	call .DetermineCompatibility
-	pop hl
-	call PlaceString
-
-.next
-	pop hl
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ret
-; 50268
-
-.DetermineCompatibility: ; 50268
-	ld de, StringBuffer1
-	ld a, BANK(EvosAttacksPointers)
-	ld bc, 2
-	call FarCopyBytes
-	ld hl, StringBuffer1
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, StringBuffer1
-	ld a, BANK(EvosAttacks)
-	ld bc, $a
-	call FarCopyBytes
-	ld hl, StringBuffer1
-.loop2
-	ld a, [hli]
-	and a
-	jr z, .nope
-rept 2
-	inc hl
-endr
-	cp EVOLVE_ITEM
-	jr nz, .loop2
-rept 2
-	dec hl
-endr
-	ld a, [CurItem]
-	cp [hl]
-rept 2
-	inc hl
-endr
-	jr nz, .loop2
-	ld de, .string_able
-	ret
-
-.nope
-	ld de, .string_not_able
-	ret
-; 502a3
-
-.string_able: ; 502a3
-	db "ABLE@"
-; 502a8
-.string_not_able: ; 502a8
-	db "NOT ABLE@"
-; 502b1
-
-
-PlacePartyMonGender: ; 502b1
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 2
-.loop
-	push bc
-	push hl
-	call PartyMenuCheckEgg
-	jr z, .next
-	ld [CurPartySpecies], a
-	push hl
-	ld a, b
-	ld [CurPartyMon], a
-	xor a
-	ld [MonType], a
-	call GetGender
-	ld de, .unknown
-	jr c, .got_gender
-	ld de, .male
-	jr nz, .got_gender
-	ld de, .female
-
-.got_gender
-	pop hl
-	call PlaceString
-
-.next
-	pop hl
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ret
-; 502ee
-
-.male: ; 502ee
-	db "♂…MALE@"
-; 502f5
-
-.female: ; 502f5
-	db "♀…FEMALE@"
-; 502fe
-
-.unknown: ; 502fe
-	db "…UNKNOWN@"
-; 50307
-
-
-PlacePartyMonMobileBattleSelection: ; 50307
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 1
-.loop
-	push bc
-	push hl
-	ld de, .String_Sanka_Shinai
-	call PlaceString
-	pop hl
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .loop
-	ld a, l
-	ld e, PKMN_NAME_LENGTH
-	sub e
-	ld l, a
-	ld a, h
-	sbc $0
-	ld h, a
-	ld de, .String_Kettei_Yameru
-	call PlaceString
-	ld b, $3
-	ld c, $0
-	ld hl, wd002
-	ld a, [hl]
-.loop2
-	push hl
-	push bc
-	hlcoord 12, 1
-.loop3
-	and a
-	jr z, .done
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	dec a
-	jr .loop3
-
-.done
-	ld de, .String_Banme
-	push hl
-	call PlaceString
-	pop hl
-	pop bc
-	push bc
-	push hl
-	ld a, c
-	ld hl, .Strings_1_2_3
-	call GetNthString
-	ld d, h
-	ld e, l
-	pop hl
-	call PlaceString
-	pop bc
-	pop hl
-	inc hl
-	ld a, [hl]
-	inc c
-	dec b
-	ret z
-	jr .loop2
-; 5036b
-
-.String_Banme: ; 5036b
-	db " ばんめ  @" ; Place
-; 50372
-.String_Sanka_Shinai: ; 50372
-	db "さんかしない@" ; Cancel
-; 50379
-.String_Kettei_Yameru: ; 50379
-	db "けってい  やめる@" ; Quit
-; 50383
-.Strings_1_2_3: ; 50383
-	db "1@", "2@", "3@" ; 1st, 2nd, 3rd
-; 50389
-
-
-PartyMenuCheckEgg: ; 50389
-	ld a, PartySpecies % $100
-	add b
-	ld e, a
-	ld a, PartySpecies / $100
-	adc 0
-	ld d, a
-	ld a, [de]
-	cp EGG
-	ret
-; 50396
-
-GetPartyMenuTilemapPointers: ; 50396
-	ld a, [PartyMenuActionText]
-	and $f0
-	jr nz, .skip
-	ld a, [PartyMenuActionText]
-	and $f
-	ld e, a
-	ld d, 0
-	ld hl, .Pointers
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-.skip
-	ld hl, .Default
-	ret
-; 503b2
-
-.Pointers: ; 503b2
-	dw .Default
-	dw .Default
-	dw .Default
-	dw .TMHM
-	dw .Default
-	dw .EvoStone
-	dw .Gender
-	dw .Gender
-	dw .Default
-	dw .Mobile
-; 503c6
-
-.Default: db 0, 1, 2, 3, 4, $ff
-.TMHM: db 0, 5, 3, 4, $ff
-.EvoStone: db 0, 6, 3, 4, $ff
-.Gender: db 0, 7, 3, 4, $ff
-.Mobile: db 0, 8, 3, 4, $ff
-; 503e0
-
-
-Function503e0: ; 503e0
-	ld hl, PartyCount
-	ld a, [hli]
-	and a
-	ret z
-	ld c, a
-	xor a
-	ld [hObjectStructIndexBuffer], a
-.asm_503ea
-	push bc
-	push hl
-	ld hl, Function8e83f
-	ld a, BANK(Function8e83f)
-	ld e, $0
-	rst FarCall
-	ld a, [hObjectStructIndexBuffer]
-	inc a
-	ld [hObjectStructIndexBuffer], a
-	pop hl
-	pop bc
-	dec c
-	jr nz, .asm_503ea
-	callab Function8cf69
-	ret
-; 50405
-
-Function50405: ; 50405
-	xor a
-	ld [wd0e3], a
-	ld de, Unknown_5044f
-	call Function1bb1
-	ld a, [PartyCount]
-	inc a
-	ld [wcfa3], a
-	dec a
-	ld b, a
-	ld a, [wd0d8]
-	and a
-	jr z, .asm_50422
-	inc b
-	cp b
-	jr c, .asm_50424
-
-.asm_50422
-	ld a, $1
-
-.asm_50424
-	ld [MenuSelection2], a
-	ld a, $3
-	ld [wcfa8], a
-	ret
-; 5042d
-
-Function5042d: ; 0x5042d
-	ld de, Unknown_5044f
-	call Function1bb1
-	ld a, [PartyCount]
-	ld [wcfa3], a
-	ld b, a
-	ld a, [wd0d8]
-	and a
-	jr z, .asm_50444
-	inc b
-	cp b
-	jr c, .asm_50446
-.asm_50444
-	ld a, $1
-.asm_50446
-	ld [MenuSelection2], a
-	ld a, $3
-	ld [wcfa8], a
-	ret
-; 5044f (14:444f)
-
-Unknown_5044f: ; 5044f
-; cursor y
-; cursor x
-; list length
-; ?
-; bit 6: animate sprites  bit 5: wrap around
-; ?
-; distance between items (hi: y, lo: x)
-; allowed buttons (mask)
-	db $01, $00, $00, $01, $60, $00, $20, $00
-; 50457
-
-PartyMenuSelect: ; 0x50457
-; sets carry if exitted menu.
-	call Function1bc9
-	call Function1bee
-	ld a, [PartyCount]
-	inc a
-	ld b, a
-	ld a, [MenuSelection2] ; menu selection?
-	cp b
-	jr z, .exitmenu ; CANCEL
-	ld [wd0d8], a
-	ld a, [hJoyLast]
-	ld b, a
-	bit 1, b
-	jr nz, .exitmenu ; B button?
-	ld a, [MenuSelection2]
-	dec a
-	ld [CurPartyMon], a
-	ld c, a
-	ld b, $0
-	ld hl, PartySpecies
-	add hl, bc
-	ld a, [hl]
-	ld [CurPartySpecies], a
-
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	call WaitSFX
-	and a
-	ret
-
-.exitmenu
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	call WaitSFX
-	scf
-	ret
-; 0x5049a
-
-
-PrintPartyMenuText: ; 5049a
-	hlcoord 0, 14
-	lb bc, 2, 18
-	call TextBox
-	ld a, [PartyCount]
-	and a
-	jr nz, .haspokemon
-	ld de, YouHaveNoPKMNString
-	jr .gotstring
-.haspokemon ; 504ae
-	ld a, [PartyMenuActionText]
-	and $f ; drop high nibble
-	ld hl, PartyMenuStrings
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld d, [hl]
-	ld e, a
-.gotstring ; 504be
-	ld a, [Options]
-	push af
-	set 4, a ; disable text delay
-	ld [Options], a
-	hlcoord 1, 16 ; Coord
-	call PlaceString
-	pop af
-	ld [Options], a
-	ret
-; 0x504d2
-
-PartyMenuStrings: ; 0x504d2
-	dw ChooseAMonString
-	dw UseOnWhichPKMNString
-	dw WhichPKMNString
-	dw TeachWhichPKMNString
-	dw MoveToWhereString
-	dw UseOnWhichPKMNString
-	dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString
-	dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString
-	dw ToWhichPKMNString
-
-ChooseAMonString: ; 0x504e4
-	db "Choose a #MON.@"
-UseOnWhichPKMNString: ; 0x504f3
-	db "Use on which <PK><MN>?@"
-WhichPKMNString: ; 0x50504
-	db "Which <PK><MN>?@"
-TeachWhichPKMNString: ; 0x5050e
-	db "Teach which <PK><MN>?@"
-MoveToWhereString: ; 0x5051e
-	db "Move to where?@"
-ChooseAFemalePKMNString: ; 0x5052d  ; UNUSED
-	db "Choose a ♀<PK><MN>.@"
-ChooseAMalePKMNString: ; 0x5053b    ; UNUSED
-	db "Choose a ♂<PK><MN>.@"
-ToWhichPKMNString: ; 0x50549
-	db "To which <PK><MN>?@"
-
-YouHaveNoPKMNString: ; 0x50556
-	db "You have no <PK><MN>!@"
-
-
-Function50566: ; 50566
-	ld a, [CurPartyMon]
-	ld hl, PartyMonNicknames
-	call GetNick
-	ld a, [PartyMenuActionText]
-	and $f
-	ld hl, Unknown_5057b
-	call Function505c1
-	ret
-; 5057b
-
-Unknown_5057b: ; 5057b
-	dw UnknownText_0x50594
-	dw UnknownText_0x5059e
-	dw UnknownText_0x505a3
-	dw UnknownText_0x505a8
-	dw UnknownText_0x50599
-	dw UnknownText_0x5058f
-	dw UnknownText_0x505ad
-	dw UnknownText_0x505b2
-	dw UnknownText_0x505b7
-	dw UnknownText_0x505bc
-; 5058f
-
-UnknownText_0x5058f: ; 0x5058f
-	; recovered @ HP!
-	text_jump UnknownText_0x1bc0a2
-	db "@"
-; 0x50594
-
-UnknownText_0x50594: ; 0x50594
-	; 's cured of poison.
-	text_jump UnknownText_0x1bc0bb
-	db "@"
-; 0x50599
-
-UnknownText_0x50599: ; 0x50599
-	; 's rid of paralysis.
-	text_jump UnknownText_0x1bc0d2
-	db "@"
-; 0x5059e
-
-UnknownText_0x5059e: ; 0x5059e
-	; 's burn was healed.
-	text_jump UnknownText_0x1bc0ea
-	db "@"
-; 0x505a3
-
-UnknownText_0x505a3: ; 0x505a3
-	; was defrosted.
-	text_jump UnknownText_0x1bc101
-	db "@"
-; 0x505a8
-
-UnknownText_0x505a8: ; 0x505a8
-	; woke up.
-	text_jump UnknownText_0x1bc115
-	db "@"
-; 0x505ad
-
-UnknownText_0x505ad: ; 0x505ad
-	; 's health returned.
-	text_jump UnknownText_0x1bc123
-	db "@"
-; 0x505b2
-
-UnknownText_0x505b2: ; 0x505b2
-	; is revitalized.
-	text_jump UnknownText_0x1bc13a
-	db "@"
-; 0x505b7
-
-UnknownText_0x505b7: ; 0x505b7
-	; grew to level @ !@ @
-	text_jump UnknownText_0x1bc14f
-	db "@"
-; 0x505bc
-
-UnknownText_0x505bc: ; 0x505bc
-	; came to its senses.
-	text_jump UnknownText_0x1bc16e
-	db "@"
-; 0x505c1
-
-
-Function505c1: ; 505c1
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [Options]
-	push af
-	set 4, a
-	ld [Options], a
-	call PrintText
-	pop af
-	ld [Options], a
-	ret
-; 505da
-
-DoPoisonStep:: ; 505da
-	ld a, [PartyCount]
-	and a
-	jr z, .asm_5062c
-	xor a
-	ld c, 7
-	ld hl, EngineBuffer1
-.asm_505e6
-	ld [hli], a
-	dec c
-	jr nz, .asm_505e6
-	xor a
-	ld [CurPartyMon], a
-.asm_505ee
-	call Function5062e
-	jr nc, .asm_50605
-	ld a, [CurPartyMon]
-	ld e, a
-	ld d, 0
-	ld hl, wd03f
-	add hl, de
-	ld [hl], c
-	ld a, [EngineBuffer1]
-	or c
-	ld [EngineBuffer1], a
-
-.asm_50605
-	ld a, [PartyCount]
-	ld hl, CurPartyMon
-	inc [hl]
-	cp [hl]
-	jr nz, .asm_505ee
-	ld a, [EngineBuffer1]
-	and $2
-	jr nz, .asm_50622
-	ld a, [EngineBuffer1]
-	and $1
-	jr z, .asm_5062c
-	call Function50658
-	xor a
-	ret
-
-.asm_50622
-	ld a, BANK(UnknownScript_0x50669)
-	ld hl, UnknownScript_0x50669
-	call CallScript
-	scf
-	ret
-
-.asm_5062c
-	xor a
-	ret
-; 5062e
-
-Function5062e: ; 5062e
-	ld a, MON_STATUS
-	call GetPartyParamLocation
-	ld a, [hl]
-	and 1 << PSN
-	ret z
-
-	ld a, MON_HP
-	call GetPartyParamLocation
-	ld a, [hli]
-	ld b, a
-	ld c, [hl]
-
-	or c
-	ret z
-
-	dec bc
-	ld [hl], c
-	dec hl
-	ld [hl], b
-
-	ld a, b
-	or c
-	jr nz, .not_fainted
-
-	ld a, MON_STATUS
-	call GetPartyParamLocation
-	ld [hl], 0
-	ld c, 2
-	scf
-	ret
-
-.not_fainted
-	ld c, 1
-	scf
-	ret
-; 50658
-
-Function50658: ; 50658
-	ld de, SFX_POISON
-	call PlaySFX
-	ld b, $2
-	predef Functioncbcdd
-	call DelayFrame
-	ret
-; 50669
-
-UnknownScript_0x50669: ; 50669
-	callasm Function50658
-	loadfont
-	callasm Function5067b
-	iffalse UnknownScript_0x50677
-	loadmovesprites
-	end
-; 50677
-
-UnknownScript_0x50677: ; 50677
-	farjump Script_OverworldWhiteout
-; 5067b
-
-Function5067b: ; 5067b
-	xor a
-	ld [CurPartyMon], a
-	ld de, wd03f
-.asm_50682
-	push de
-	ld a, [de]
-	and 2
-	jr z, .asm_5069c
-	ld c, HAPPINESS_POISONFAINT
-	callba ChangeHappiness
-	callba GetPartyNick
-	ld hl, PoisonFaintText
-	call PrintText
-
-.asm_5069c
-	pop de
-	inc de
-	ld hl, CurPartyMon
-	inc [hl]
-	ld a, [PartyCount]
-	cp [hl]
-	jr nz, .asm_50682
-	predef CheckPlayerPartyForFitPkmn
-	ld a, d
-	ld [ScriptVar], a
-	ret
-; 506b2
-
-PoisonFaintText: ; 506b2
-	text_jump UnknownText_0x1c0acc
-	db "@"
-; 506b7
-
-PoisonWhiteOutText: ; 506b7
-	text_jump UnknownText_0x1c0ada
-	db "@"
-; 506bc
-
-
-DoMovementFunctionc: ; 506bc
-	ld hl, UnknownScript_0x506c8
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-; 506c8
-
-UnknownScript_0x506c8: ; 0x506c8
-	reloadmappart
-	special UpdateTimePals
-	callasm GetPartyNick
-	writetext UnknownText_0x50726
-	closetext
-	callasm SweetScentEncounter
-	iffalse UnknownScript_0x506e9
-	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue UnknownScript_0x506e5
-	battlecheck
-	startbattle
-	returnafterbattle
-	end
-; 0x506e5
-
-UnknownScript_0x506e5: ; 0x506e5
-	farjump BugCatchingContestBattleScript
-; 0x506e9
-
-UnknownScript_0x506e9: ; 0x506e9
-	writetext UnknownText_0x5072b
-	closetext
-	loadmovesprites
-	end
-; 0x506ef
-
-SweetScentEncounter: ; 506ef
-	callba CanUseSweetScent
-	jr nc, .no_battle
-	ld hl, StatusFlags2
-	bit 2, [hl]
-	jr nz, .not_in_bug_contest
-	callba GetMapEncounterRate
-	ld a, b
-	and a
-	jr z, .no_battle
-	callba ChooseWildEncounter
-	jr nz, .no_battle
-	jr .start_battle
-
-.not_in_bug_contest
-	callba ChooseWildEncounter_BugContest
-
-.start_battle
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.no_battle
-	xor a
-	ld [ScriptVar], a
-	ld [BattleType], a
-	ret
-; 50726
-
-UnknownText_0x50726: ; 0x50726
-	; used SWEET SCENT!
-	text_jump UnknownText_0x1c0b03
-	db "@"
-; 0x5072b
-
-UnknownText_0x5072b: ; 0x5072b
-	; Looks like there's nothing here…
-	text_jump UnknownText_0x1c0b1a
-	db "@"
-; 0x50730
-
-
-_Squirtbottle: ; 50730
-	ld hl, UnknownScript_0x5073c
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-; 5073c
-
-UnknownScript_0x5073c: ; 0x5073c
-	reloadmappart
-	special UpdateTimePals
-	callasm Function50753
-	iffalse UnknownScript_0x5074b
-	farjump WateredWeirdTreeScript
-; 0x5074b
-
-UnknownScript_0x5074b: ; 0x5074b
-	jumptext UnknownText_0x5074e
-; 0x5074e
-
-UnknownText_0x5074e: ; 0x5074e
-	; sprinkled water. But nothing happened…
-	text_jump UnknownText_0x1c0b3b
-	db "@"
-; 0x50753
-
-Function50753: ; 50753
-	ld a, [MapGroup]
-	cp GROUP_ROUTE_36
-	jr nz, .asm_50774
-
-	ld a, [MapNumber]
-	cp MAP_ROUTE_36
-	jr nz, .asm_50774
-
-	callba GetFacingObject
-	jr c, .asm_50774
-
-	ld a, d
-	cp $17
-	jr nz, .asm_50774
-
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.asm_50774
-	xor a
-	ld [ScriptVar], a
-	ret
-; 50779
-
-
-_CardKey: ; 50779
-; Are we even in the right map to use this?
-	ld a, [MapGroup]
-	cp GROUP_RADIO_TOWER_3F
-	jr nz, .nope
-
-	ld a, [MapNumber]
-	cp MAP_RADIO_TOWER_3F
-	jr nz, .nope
-; Are we facing the slot?
-	ld a, [PlayerDirection]
-	and $c
-	cp OW_UP
-	jr nz, .nope
-
-	call GetFacingTileCoord
-	ld a, d
-	cp 18
-	jr nz, .nope
-	ld a, e
-	cp 6
-	jr nz, .nope
-; Let's use the Card Key.
-	ld hl, .CardKeyScript
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-
-.nope
-	ld a, $0
-	ld [wd0ec], a
-	ret
-; 507af
-
-.CardKeyScript: ; 0x507af
-	loadmovesprites
-	farjump MapRadioTower3FSignpost2Script
-; 0x507b4
-
-
-_BasementKey: ; 507b4
-; Are we even in the right map to use this?
-	ld a, [MapGroup]
-	cp GROUP_WAREHOUSE_ENTRANCE
-	jr nz, .nope
-
-	ld a, [MapNumber]
-	cp MAP_WAREHOUSE_ENTRANCE
-	jr nz, .nope
-; Are we on the tile in front of the door?
-	call GetFacingTileCoord
-	ld a, d
-	cp 22
-	jr nz, .nope
-	ld a, e
-	cp 10
-	jr nz, .nope
-; Let's use the Basement Key
-	ld hl, .BasementKeyScript
-	call QueueScript
-	ld a, 1
-	ld [wd0ec], a
-	ret
-
-.nope
-	ld a, $0
-	ld [wd0ec], a
-	ret
-; 507e1
-
-.BasementKeyScript: ; 0x507e1
-	loadmovesprites
-	farjump BasementDoorScript
-; 0x507e6
-
-
-_SacredAsh: ; 507e6
-	ld a, $0
-	ld [wd0ec], a
-	call CheckAnyFaintedMon
-	ret nc
-
-	ld hl, SacredAshScript
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-; 507fb
-
-CheckAnyFaintedMon: ; 507fb
-	ld de, PARTYMON_STRUCT_LENGTH
-	ld bc, PartySpecies
-	ld hl, PartyMon1HP
-	ld a, [PartyCount]
-	and a
-	ret z
-
-.loop
-	push af
-	push hl
-	ld a, [bc]
-	inc bc
-	cp EGG
-	jr z, .next
-
-	ld a, [hli]
-	or [hl]
-	jr z, .done
-
-.next
-	pop hl
-	add hl, de
-	pop af
-	dec a
-	jr nz, .loop
-	xor a
-	ret
-
-.done
-	pop hl
-	pop af
-	scf
-	ret
-; 50821
-
-SacredAshScript: ; 0x50821
-	special HealParty
-	reloadmappart
-	playsound SFX_WARP_TO
-	special FadeBlackBGMap
-	special FadeInBGMap
-	special FadeBlackBGMap
-	special FadeInBGMap
-	special FadeBlackBGMap
-	special FadeInBGMap
-	waitbutton
-	writetext UnknownText_0x50845
-	playsound SFX_CAUGHT_MON
-	waitbutton
-	closetext
-	loadmovesprites
-	end
-; 0x50845
-
-UnknownText_0x50845: ; 0x50845
-	; 's #MON were all healed!
-	text_jump UnknownText_0x1c0b65
-	db "@"
-; 0x5084a
-
 CopyPkmnToTempMon: ; 5084a
 ; gets the BaseData of a Pkmn
 ; and copys the PkmnStructure to TempMon
@@ -33567,21 +32205,21 @@
 ; 50893
 
 Function50893: ; 50893
-	ld hl, TempMonLevel - TempMon
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	ld [CurPartyLevel], a
-	ld hl, TempMonMaxHP - TempMon
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, TempMonExp + 2 - TempMon
+	ld hl, MON_EXP + 2
 	add hl, bc
 	push bc
 	ld b, $1
 	predef CalcPkmnStats
 	pop bc
-	ld hl, TempMonHP - TempMon
+	ld hl, MON_HP
 	add hl, bc
 	ld d, h
 	ld e, l
@@ -33596,7 +32234,7 @@
 
 .asm_508c1
 	push bc
-	ld hl, TempMonMaxHP - TempMon
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld bc, 2
 	call CopyBytes
@@ -33603,7 +32241,7 @@
 	pop bc
 
 .asm_508cd
-	ld hl, TempMonStatus - TempMon
+	ld hl, MON_STATUS
 	add hl, bc
 	xor a
 	ld [hli], a
@@ -38609,7 +37247,7 @@
 ; 84425
 
 Function84425: ; 84425
-	call Function222a
+	call ReturnToMapFromSubmenu
 	call Function84753
 	ret
 ; 8442c
@@ -39499,7 +38137,7 @@
 	ld [MusicFadeIDHi], a
 	ld a, $a
 	ld [MusicFade], a
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	xor a
 	ld [VramState], a
 	ld [hMapAnims], a
@@ -39522,7 +38160,7 @@
 	ld [MusicFadeIDHi], a
 	ld a, 10
 	ld [MusicFade], a
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	xor a
 	ld [VramState], a
 	ld [hMapAnims], a
@@ -39688,7 +38326,7 @@
 
 Function865b5: ; 865b5
 	push hl
-	call WhiteBGMap
+	call ClearBGPalettes
 	callba Function4e906
 	pop hl
 	ld a, [hli]
@@ -39833,7 +38471,7 @@
 
 .asm_866a9
 	push hl
-	call WhiteBGMap
+	call ClearBGPalettes
 	pop hl
 	call Function86748
 	ld a, [wc608]
@@ -39997,7 +38635,7 @@
 ; 86810
 
 Function86810: ; 86810
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld hl, VTiles2 tile $63
 	ld de, FontExtra + $d0
 	lb bc, BANK(FontExtra), 1
@@ -40420,7 +39058,7 @@
 ; 8c7e1
 
 BlindingFlash: ; 8c7e1
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	ld hl, StatusFlags
 	set 2, [hl]
 	callba Function8c0e5
@@ -40428,7 +39066,7 @@
 	ld b, $9
 	call GetSGBLayout
 	callba Function49409
-	callba FadeInBGMap
+	callba FadeInPalettes
 	ret
 ; 8c80a
 
@@ -40929,7 +39567,7 @@
 .done
 	pop af
 	ld [hVBlank], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	xor a
 	ld [hLCDStatCustom], a
 	ld [hLCDStatCustom + 1], a
@@ -40986,7 +39624,7 @@
 ; 8ccc9
 
 Function8ccc9: ; 8ccc9
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call DisableLCD
 	callab Function8cf53
@@ -45602,7 +44240,7 @@
 	ld [hInMenu], a
 	pop af
 	ld [Options], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	xor a
 	ld [hBGMapAddress], a
 	ld a, VBGMap0 / $100
@@ -45613,7 +44251,7 @@
 	ret
 
 Function90bea: ; 90bea (24:4bea)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
@@ -47002,7 +45640,7 @@
 	push af
 	xor a
 	ld [VramState], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
@@ -47057,7 +45695,7 @@
 	ld [hInMenu], a
 	pop af
 	ld [Options], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 919b0
 
@@ -47263,927 +45901,12 @@
 ; 91af3
 
 
-_FlyMap: ; 91af3
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld hl, hInMenu
-	ld a, [hl]
-	push af
-	ld [hl], $1
-	xor a
-	ld [hBGMapMode], a
-	callba Function8cf53
-	call Function91ff2
-	ld de, GFX_922e1
-	ld hl, VTiles2 tile $30
-	lb bc, BANK(GFX_922e1), 6
-	call Request1bpp
-	call FlyMap
-	call Function91c8f
-	ld b, $2
-	call GetSGBLayout
-	call SetPalettes
-.loop
-	call JoyTextDelay
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .pressedB
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .pressedA
-	call FlyMapScroll
-	call GetMapCursorCoordinates
-	callba Function8cf69
-	call DelayFrame
-	jr .loop
+INCLUDE "engine/flypoints.asm"
 
-.pressedB
-	ld a, -1
-	jr .exit
-
-.pressedA
-	ld a, [wd002]
-	ld l, a
-	ld h, 0
-	add hl, hl
-	ld de, Flypoints + 1
-	add hl, de
-	ld a, [hl]
-
-.exit
-	ld [wd002], a
-	pop af
-	ld [hInMenu], a
-	call WhiteBGMap
-	ld a, $90
-	ld [hWY], a
+Function92311: ; unreferenced
 	xor a
-	ld [hBGMapAddress], a
-	ld a, VBGMap0 / $100
-	ld [hBGMapAddress + 1], a
-	ld a, [wd002]
-	ld e, a
-	ret
-; 91b73
-
-FlyMapScroll: ; 91b73
-	ld a, [StartFlypoint]
-	ld e, a
-	ld a, [EndFlypoint]
-	ld d, a
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .ScrollNext
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .ScrollPrev
-	ret
-
-.ScrollNext
-	ld hl, wd002
-	ld a, [hl]
-	cp d
-	jr nz, .NotAtEndYet
-	ld a, e
-	dec a
-	ld [hl], a
-
-.NotAtEndYet
-	inc [hl]
-	call CheckIfVisitedFlypoint
-	jr z, .ScrollNext
-	jr .Finally
-
-.ScrollPrev
-	ld hl, wd002
-	ld a, [hl]
-	cp e
-	jr nz, .NotAtStartYet
-	ld a, d
-	inc a
-	ld [hl], a
-
-.NotAtStartYet
-	dec [hl]
-	call CheckIfVisitedFlypoint
-	jr z, .ScrollPrev
-
-.Finally
-	call TownMapBubble
-	call WaitBGMap
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 91bb5
-
-TownMapBubble: ; 91bb5
-; Draw the bubble containing the location text in the town map HUD
-
-; Top-left corner
-	hlcoord 1, 0
-	ld a, $30
-	ld [hli], a
-
-; Top row
-	ld bc, 16
-	ld a, " "
-	call ByteFill
-
-; Top-right corner
-	ld a, $31
-	ld [hl], a
-	hlcoord 1, 1
-
-
-; Middle row
-	ld bc, 18
-	ld a, " "
-	call ByteFill
-
-
-; Bottom-left corner
-	hlcoord 1, 2
-	ld a, $32
-	ld [hli], a
-
-; Bottom row
-	ld bc, 16
-	ld a, " "
-	call ByteFill
-
-; Bottom-right corner
-	ld a, $33
-	ld [hl], a
-
-
-; Print "Where?"
-	hlcoord 2, 0
-	ld de, .Where
-	call PlaceString
-
-; Print the name of the default flypoint
-	call .Name
-
-; Up/down arrows
-	hlcoord 18, 1
-	ld [hl], $34	
-	ret
-
-.Where
-	db "Where?@"
-
-.Name
-; We need the map location of the default flypoint
-	ld a, [wd002]
-	ld l, a
-	ld h, 0
-	add hl, hl ; two bytes per flypoint
-	ld de, Flypoints
-	add hl, de
-	ld e, [hl]
-
-	callba GetLandmarkName
-
-	hlcoord 2, 1
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-; 91c17
-
-GetMapCursorCoordinates: ; 91c17
-	ld a, [wd002]
-	ld l, a
-	ld h, $0
-	add hl, hl
-	ld de, Flypoints
-	add hl, de
-	ld e, [hl]
-	callba GetLandmarkCoords
-	ld a, [wd003]
-	ld c, a
-	ld a, [wd004]
-	ld b, a
-	ld hl, $4
-	add hl, bc
-	ld [hl], e
-	ld hl, $5
-	add hl, bc
-	ld [hl], d
-	ret
-; 91c3c
-
-CheckIfVisitedFlypoint: ; 91c3c
-; Check if the flypoint loaded in [hl] has been visited yet.
-	push bc
-	push de
-	push hl
-	ld l, [hl]
-	ld h, 0
-	add hl, hl
-	ld de, Flypoints + 1
-	add hl, de
-	ld c, [hl]
-	call HasVisitedSpawn
-	pop hl
-	pop de
-	pop bc
-	and a
-	ret
-; 91c50
-
-HasVisitedSpawn: ; 91c50
-; Check if spawn point c has been visited.
-	ld hl, VisitedSpawns
-	ld b, CHECK_FLAG
-	ld d, 0
-	predef FlagPredef
-	ld a, c
-	ret
-; 91c5e
-
-Flypoints: ; 91c5e
-; landmark, spawn point
-
-	const_def
-
-flypoint: MACRO
-; \1\@FLY   EQUS "FLY_\1"
-; \1\@SPAWN EQUS "SPAWN_\1"
-	; const \1\@FLY
-	; db \2, \1\@SPAWN
-	const FLY_\1
-	db \2, SPAWN_\1
-ENDM
-
-; Johto
-	flypoint NEW_BARK,    NEW_BARK_TOWN
-	flypoint CHERRYGROVE, CHERRYGROVE_CITY
-	flypoint VIOLET,      VIOLET_CITY
-	flypoint AZALEA,      AZALEA_TOWN
-	flypoint GOLDENROD,   GOLDENROD_CITY
-	flypoint ECRUTEAK,    ECRUTEAK_CITY
-	flypoint OLIVINE,     OLIVINE_CITY
-	flypoint CIANWOOD,    CIANWOOD_CITY
-	flypoint MAHOGANY,    MAHOGANY_TOWN
-	flypoint LAKE,        LAKE_OF_RAGE
-	flypoint BLACKTHORN,  BLACKTHORN_CITY
-	flypoint MT_SILVER,   SILVER_CAVE
-
-; Kanto
-KANTO_FLYPOINT EQU const_value
-
-	flypoint PALLET,      PALLET_TOWN
-	flypoint VIRIDIAN,    VIRIDIAN_CITY
-	flypoint PEWTER,      PEWTER_CITY
-	flypoint CERULEAN,    CERULEAN_CITY
-	flypoint VERMILION,   VERMILION_CITY
-	flypoint ROCK_TUNNEL, ROCK_TUNNEL
-	flypoint LAVENDER,    LAVENDER_TOWN
-	flypoint CELADON,     CELADON_CITY
-	flypoint SAFFRON,     SAFFRON_CITY
-	flypoint FUCHSIA,     FUCHSIA_CITY
-	flypoint CINNABAR,    CINNABAR_ISLAND
-	flypoint INDIGO,      INDIGO_PLATEAU
-
-	db -1
-; 91c8f
-
-Function91c8f: ; 91c8f
-	ret
-; 91c90
-
-FlyMap: ; 91c90
-
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetWorldMapLocation
-
-; If we're not in a valid location, i.e. Pokecenter floor 2F,
-; the backup map information is used
-
-	cp SPECIAL_MAP
-	jr nz, .CheckRegion
-
-	ld a, [BackupMapGroup]
-	ld b, a
-	ld a, [BackupMapNumber]
-	ld c, a
-	call GetWorldMapLocation
-
-.CheckRegion
-; The first 46 locations are part of Johto. The rest are in Kanto
-	cp KANTO_LANDMARK
-	jr nc, .KantoFlyMap
-
-.JohtoFlyMap
-; Note that .NoKanto should be modified in tandem with this branch
-
-	push af
-
-; Start from New Bark Town
-	ld a, FLY_NEW_BARK
 	ld [wd002], a
-
-; Flypoints begin at New Bark Town...
-	ld [StartFlypoint], a
-; ..and end at Silver Cave
-	ld a, FLY_MT_SILVER
-	ld [EndFlypoint], a
-
-; Fill out the map
-	call FillJohtoMap
-	call .MapHud
-	pop af
-	call TownMapPlayerIcon
-	ret
-
-.KantoFlyMap
-
-; The event that there are no flypoints enabled in a map is not
-; accounted for. As a result, if you attempt to select a flypoint
-; when there are none enabled, the game will crash. Additionally,
-; the flypoint selection has a default starting point that
-; can be flown to even if none are enabled
-
-; To prevent both of these things from happening when the player
-; enters Kanto, fly access is restricted until Indigo Plateau is
-; visited and its flypoint enabled
-
-	push af
-	ld c, SPAWN_INDIGO
-	call HasVisitedSpawn
-	and a
-	jr z, .NoKanto
-
-; Kanto's map is only loaded if we've visited Indigo Plateau
-
-; Flypoints begin at Pallet Town...
-	ld a, FLY_PALLET
-	ld [StartFlypoint], a
-; ...and end at Indigo Plateau
-	ld a, FLY_INDIGO
-	ld [EndFlypoint], a
-
-; Because Indigo Plateau is the first flypoint the player
-; visits, it's made the default flypoint
-	ld [wd002], a
-
-; Fill out the map
-	call FillKantoMap
-	call .MapHud
-	pop af
-	call TownMapPlayerIcon
-	ret
-
-.NoKanto
-; If Indigo Plateau hasn't been visited, we use Johto's map instead
-
-; Start from New Bark Town
-	ld a, FLY_NEW_BARK
-	ld [wd002], a
-
-; Flypoints begin at New Bark Town...
-	ld [StartFlypoint], a
-; ..and end at Silver Cave
-	ld a, FLY_MT_SILVER
-	ld [EndFlypoint], a
-
-	call FillJohtoMap
-
-	pop af
-
-.MapHud
-	call TownMapBubble
-	call TownMapPals
-
-	ld hl, VBGMap0 ; BG Map 0
-	call TownMapBGUpdate
-
-	call TownMapMon
-	ld a, c
-	ld [wd003], a
-	ld a, b
-	ld [wd004], a
-	ret
-; 91d11
-
-Function91d11: ; 91d11
-	ld a, [wd002]
-	push af
-	ld a, [wd003]
-	push af
-	ld a, e
-	ld [wd002], a
-	call ClearSprites
-	xor a
-	ld [hBGMapMode], a
-	ld a, $1
-	ld [hInMenu], a
-	ld de, GFX_922d1
-	ld hl, VTiles0 tile $7f
-	lb bc, BANK(GFX_922d1), 1
-	call Request2bpp ; actually 1bpp
-	call Function91ed0
-	ld hl, VTiles0 tile $78
-	ld c, $4
-	call Request2bpp
-	call Function91ff2
-	call FillKantoMap
-	call Function91de9
-	call TownMapPals
-	ld hl, VBGMap1
-	call TownMapBGUpdate
-	call FillJohtoMap
-	call Function91de9
-	call TownMapPals
-	ld hl, VBGMap0
-	call TownMapBGUpdate
-	ld b, $2
-	call GetSGBLayout
-	call SetPalettes
-	xor a
-	ld [hBGMapMode], a
-	xor a
-	call Function91e1e
-.asm_91d6e
-	call JoyTextDelay
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and A_BUTTON | B_BUTTON
-	jr nz, .asm_91d8f
-	ld a, [hJoypadDown]
-	and SELECT
-	jr nz, .asm_91d87
-	call Function91d9b
-	call Function91dcd
-	jr .asm_91d8a
-
-.asm_91d87
-	call Function91e5a
-
-.asm_91d8a
-	call DelayFrame
-	jr .asm_91d6e
-
-.asm_91d8f
-	call ClearSprites
-	pop af
-	ld [wd003], a
-	pop af
-	ld [wd002], a
-	ret
-; 91d9b
-
-Function91d9b: ; 91d9b
-	ld a, [hl]
-	and $20
-	jr nz, .asm_91da6
-	ld a, [hl]
-	and $10
-	jr nz, .asm_91db7
-	ret
-
-.asm_91da6
-	ld a, [hWY]
-	cp $90
-	ret z
-	call ClearSprites
-	ld a, $90
-	ld [hWY], a
-	xor a
-	call Function91e1e
-	ret
-
-.asm_91db7
-	ld a, [StatusFlags]
-	bit 6, a
-	ret z
-	ld a, [hWY]
-	and a
-	ret z
-	call ClearSprites
-	xor a
-	ld [hWY], a
-	ld a, $1
-	call Function91e1e
-	ret
-; 91dcd
-
-Function91dcd: ; 91dcd
-	ld a, [hVBlankCounter]
-	ld e, a
-	and $f
-	ret nz
-	ld a, e
-	and $10
-	jr nz, .asm_91ddc
-	call ClearSprites
-	ret
-
-.asm_91ddc
-	hlcoord 0, 0
-	ld de, Sprites
-	ld bc, $a0
-	call CopyBytes
-	ret
-; 91de9
-
-Function91de9: ; 91de9
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH
-	ld a, $7f
-	call ByteFill
-	hlcoord 0, 1
-	ld a, $6
-	ld [hli], a
-	ld bc, SCREEN_HEIGHT
-	ld a, $7
-	call ByteFill
-	ld [hl], $17
-	call GetPokemonName
-	hlcoord 2, 0
-	call PlaceString
-	ld h, b
-	ld l, c
-	ld de, String_91e16
-	call PlaceString
-	ret
-; 91e16
-
-String_91e16:
-	db "'S NEST@"
-; 91e1e
-
-Function91e1e: ; 91e1e
-	ld [wd003], a
-	ld e, a
-	callba Function2a01f
-	decoord 0, 0
-	ld hl, Sprites
-.asm_91e2e
-	ld a, [de]
-	and a
-	jr z, .asm_91e4d
-	push de
-	ld e, a
-	push hl
-	callba GetLandmarkCoords
-	pop hl
-	ld a, d
-	sub $4
-	ld [hli], a
-	ld a, e
-	sub $4
-	ld [hli], a
-	ld a, $7f
-	ld [hli], a
-	xor a
-	ld [hli], a
-	pop de
-	inc de
-	jr .asm_91e2e
-
-.asm_91e4d
-	ld hl, Sprites
-	decoord 0, 0
-	ld bc, $a0
-	call CopyBytes
-	ret
-; 91e5a
-
-Function91e5a: ; 91e5a
-	call Function91ea9
-	ret c
-
-	ld a, [wd002]
-	ld e, a
-	callba GetLandmarkCoords
-	ld c, e
-	ld b, d
-	ld de, Unknown_91e9c
-	ld hl, Sprites
-.asm_91e70
-	ld a, [de]
-	cp $80
-	jr z, .asm_91e91
-
-	add b
-	ld [hli], a
-	inc de
-
-	ld a, [de]
-	add c
-	ld [hli], a
-	inc de
-
-	ld a, [de]
-	add $78
-	ld [hli], a
-	inc de
-
-	push bc
-	ld c, 0
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .asm_91e8c
-	inc c
-.asm_91e8c
-	ld a, c
-	ld [hli], a
-	pop bc
-
-	jr .asm_91e70
-
-.asm_91e91
-	ld hl, Sprites + $10
-	ld bc, SpritesEnd - (Sprites + $10)
-	xor a
-	call ByteFill
-	ret
-; 91e9c
-
-Unknown_91e9c: ; 91e9c
-	db -8, -8,  0
-	db -8,  0,  1
-	db  0, -8,  2
-	db  0,  0,  3
-	db $80 ; terminator
-; 91ea9
-
-Function91ea9: ; 91ea9
-	ld a, [wd002]
-	cp FAST_SHIP
-	jr z, .johto
-	cp KANTO_LANDMARK
-	jr c, .johto
-
-.kanto
-	ld a, [wd003]
-	and a
-	jr z, .clear
-	jr .ok
-
-.johto
-	ld a, [wd003]
-	and a
-	jr nz, .clear
-
-.ok
-	and a
-	ret
-
-.clear
-	ld hl, Sprites
-	ld bc, SpritesEnd - Sprites
-	xor a
-	call ByteFill
-	scf
-	ret
-; 91ed0
-
-Function91ed0: ; 91ed0
-	ld a, [wd002]
-	cp FAST_SHIP
-	jr z, .asm_91ede
-	callba GetPlayerIcon
-	ret
-
-.asm_91ede
-	ld de, FastShipGFX
-	ld b, BANK(FastShipGFX)
-	ret
-; 91ee4
-
-TownMapBGUpdate: ; 91ee4
-; Update BG Map tiles and attributes
-
-; BG Map address
-	ld a, l
-	ld [hBGMapAddress], a
-	ld a, h
-	ld [hBGMapAddress + 1], a
-
-; Only update palettes on CGB
-	ld a, [hCGB]
-	and a
-	jr z, .tiles
-
-; BG Map mode 2 (palettes)
-	ld a, 2
-	ld [hBGMapMode], a
-
-; The BG Map is updated in thirds, so we wait
-; 3 frames to update the whole screen's palettes.
-	ld c, 3
-	call DelayFrames
-
-.tiles
-; Update BG Map tiles
-	call WaitBGMap
-
-; Turn off BG Map update
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 91eff
-
-FillJohtoMap: ; 91eff
-	ld de, JohtoMap
-	jr FillTownMap
-
-FillKantoMap: ; 91f04
-	ld de, KantoMap
-
-FillTownMap: ; 91f07
-	hlcoord 0, 0
-.loop
-	ld a, [de]
-	cp $ff
-	ret z
-	ld a, [de]
-	ld [hli], a
-	inc de
-	jr .loop
-; 91f13
-
-TownMapPals: ; 91f13
-; Assign palettes based on tile ids
-
-	hlcoord 0, 0
-	decoord 0, 0, AttrMap
-	ld bc, 360
-.loop
-; Current tile
-	ld a, [hli]
-	push hl
-
-; HP/borders use palette 0
-	cp $60
-	jr nc, .pal0
-
-; The palette data is condensed to nybbles,
-; least-significant first.
-	ld hl, TownMapPalMap
-	srl a
-	jr c, .odd
-
-; Even-numbered tile ids take the bottom nybble...
-	add l
-	ld l, a
-	ld a, h
-	adc 0
-	ld h, a
-	ld a, [hl]
-	and %111
-	jr .update
-
-.odd
-; ...and odd ids take the top.
-	add l
-	ld l, a
-	ld a, h
-	adc 0
-	ld h, a
-	ld a, [hl]
-	swap a
-	and %111
-	jr .update
-
-.pal0
-	xor a
-
-.update
-	pop hl
-	ld [de], a
-	inc de
-	dec bc
-	ld a, b
-	or c
-	jr nz, .loop
-	ret
-
-TownMapPalMap:
-	db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00
-	db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00
-	db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33
-	db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00
-; 91f7b
-
-TownMapMon: ; 91f7b
-; Draw the FlyMon icon at town map location in
-
-; Get FlyMon species
-	ld a, [CurPartyMon]
-	ld hl, PartySpecies
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	ld [wd265], a
-
-; Get FlyMon icon
-	ld e, 8 ; starting tile in VRAM
-	callba GetSpeciesIcon
-
-; Animation/palette
-	ld de, 0
-	ld a, $0
-	call Function3b2a
-
-	ld hl, 3
-	add hl, bc
-	ld [hl], 8
-	ld hl, 2
-	add hl, bc
-	ld [hl], 0
-	ret
-; 91fa6
-
-TownMapPlayerIcon: ; 91fa6
-; Draw the player icon at town map location in a
-	push af
-
-	callba GetPlayerIcon
-
-; Standing icon
-	ld hl, VTiles0 tile $10
-	ld c, 4 ; # tiles
-	call Request2bpp
-
-; Walking icon
-	ld hl, $c0
-	add hl, de
-	ld d, h
-	ld e, l
-	ld hl, VTiles0 tile $14
-	ld c, 4 ; # tiles
-	ld a, BANK(ChrisSpriteGFX) ; does nothing
-	call Request2bpp
-
-; Animation/palette
-	ld de, 0
-	ld b, $0a ; Male
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .asm_91fd3
-	ld b, $1e ; Female
-.asm_91fd3
-	ld a, b
-	call Function3b2a
-
-	ld hl, $3
-	add hl, bc
-	ld [hl], $10
-
-	pop af
-	ld e, a
-	push bc
-	callba GetLandmarkCoords
-	pop bc
-
-	ld hl, 4
-	add hl, bc
-	ld [hl], e
-	ld hl, 5
-	add hl, bc
-	ld [hl], d
-	ret
-; 0x91ff2
-
-Function91ff2: ; 91ff2
-	ld hl, TownMapGFX
-	ld de, VTiles2
-	lb bc, BANK(TownMapGFX), $30
-	call DecompressRequest2bpp
-	ret
-; 91fff
-
-
-JohtoMap: ; 91fff
-INCBIN "gfx/misc/johto.bin"
-; 92168
-
-KantoMap: ; 92168
-INCBIN "gfx/misc/kanto.bin"
-; 922d1
-
-
-GFX_922d1: ; 922d1
-INCBIN "gfx/unknown/0922d1.2bpp"
-GFX_922e1: ; 922e1
-INCBIN "gfx/unknown/0922e1.2bpp"
-GFX_92301: ; 92301
-INCBIN "gfx/unknown/092301.2bpp"
-
-Function92311: ; 92311
-	xor a
-	ld [wd002], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	ld hl, hInMenu
@@ -48248,7 +45971,7 @@
 	ld [wd002], a
 	pop af
 	ld [hInMenu], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld a, $90
 	ld [hWY], a
 	xor a
@@ -48317,2123 +46040,9 @@
 
 
 INCLUDE "data/wild/fish.asm"
+INCLUDE "engine/slot_machine.asm"
 
 
-_SlotMachine:
-	ld hl, Options
-	set 4, [hl]
-	call Function926f7
-	call DelayFrame
-.asm_926d2
-	call Function927af
-	jr nc, .asm_926d2
-	call WaitSFX
-	ld de, SFX_QUIT_SLOTS
-	call PlaySFX
-	call WaitSFX
-	call WhiteBGMap
-	callba MobileFn_105fd0
-	ld hl, Options
-	res 4, [hl]
-	ld hl, rLCDC ; $ff40
-	res 2, [hl]
-	ret
-
-Function926f7: ; 926f7 (24:66f7)
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld de, MUSIC_NONE
-	call PlayMusic
-	call DelayFrame
-	call DisableLCD
-	ld hl, VBGMap0 tile $00
-	lb bc, 4, 0
-	ld a, $7f
-	call ByteFill
-	ld b, $5
-	call GetSGBLayout
-	callab Function8cf53
-	ld hl, wc6d0
-	ld bc, $48
-	xor a
-	call ByteFill
-	ld hl, Slots2LZ
-	ld de, VTiles0 tile $00
-	call Decompress
-	ld hl, Slots3LZ
-	ld de, VTiles0 tile $40
-	call Decompress
-	ld hl, Slots1LZ
-	ld de, VTiles2 tile $00
-	call Decompress
-	ld hl, Slots2LZ
-	ld de, VTiles2 tile $25
-	call Decompress
-	ld hl, SlotsTilemap
-	decoord 0, 0
-	ld bc, 20 * 12
-	call CopyBytes
-	ld hl, rLCDC ; $ff40
-	set 2, [hl]
-	call EnableLCD
-	ld hl, wc6d0
-	ld bc, $64
-	xor a
-	call ByteFill
-	call Function92a98
-	call Function9279b
-	ld a, $7
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], $40
-	xor a
-	ld [wJumptableIndex], a
-	ld a, $ff
-	ld [wc709], a
-	ld de, MUSIC_GAME_CORNER
-	call PlayMusic
-	xor a
-	ld [wd002], a
-	call Random
-	and $2a
-	ret nz
-	ld a, $1
-	ld [wd002], a
-	ret
-
-Function9279b: ; 9279b (24:679b)
-	ld a, $e4
-	call DmgToCgbBGPals
-	lb de, $e4, $e4
-	ld a, [hCGB]
-	and a
-	jr nz, .asm_927ab
-	lb de, $c0, $e4
-.asm_927ab
-	call DmgToCgbObjPals
-	ret
-
-Function927af: ; 927af (24:67af)
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_927d1
-	call Function92844
-	call Function92b0f
-	xor a
-	ld [wc3b5], a
-	callab Function8cfa8
-	call Function927f8
-	call Function927d3
-	call DelayFrame
-	and a
-	ret
-.asm_927d1
-	scf
-	ret
-
-Function927d3: ; 927d3 (24:67d3)
-	ret
-; 927d4 (24:67d4)
-
-Function927d4: ; 927d4
-	ld a, [wc6d0]
-	and a
-	ret nz
-	ld a, [wc6e0]
-	and a
-	ret nz
-	ld a, [wc70c]
-	and a
-	jr nz, .asm_927ea
-	ld a, $e4
-	call DmgToCgbBGPals
-	ret
-
-.asm_927ea
-	ld a, [TextDelayFrames]
-	and $7
-	ret nz
-	ld a, [rBGP]
-	xor %1100
-	call DmgToCgbBGPals
-	ret
-; 927f8
-
-Function927f8: ; 927f8 (24:67f8)
-	hlcoord 5, 1
-	ld de, Coins
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
-	call PrintNum
-	hlcoord 11, 1
-	ld de, wc711
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
-	call PrintNum
-	ret
-; 92811 (24:6811)
-
-Function92811: ; 92811
-	ld a, [wc709]
-	add 0
-	daa
-	ld e, a
-	and $f
-	add "0"
-	hlcoord 1, 0
-	ld [hl], a
-	ld a, e
-	swap a
-	and $f
-	add "0"
-	hlcoord 0, 0
-	ld [hl], a
-	ret
-; 9282c
-
-Function9282c: ; 9282c
-	ld hl, wcf66
-	ld a, [hl]
-	inc [hl]
-	and $7
-	ret nz
-	ld hl, Sprites + $42
-	ld c, $18
-.asm_92839
-	ld a, [hl]
-	xor $20
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	dec c
-	jr nz, .asm_92839
-	ret
-; 92844
-
-Function92844: ; 92844 (24:6844)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_92853
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 92853 (24:6853)
-
-
-Jumptable_92853: ; 92853 (24:6853)
-	dw Function9287e
-	dw Function9288e
-	dw Function928c6
-	dw Function928d6
-	dw Function928e6
-	dw Function92900
-	dw Function92910
-	dw Function9292a
-	dw Function9293a
-	dw Function92879
-	dw Function92879
-	dw Function92879
-	dw Function92955
-	dw Function9296b
-	dw Function92987
-	dw Function9299e
-	dw Function929a4
-	dw Function929d9
-	dw Function929f0
-
-
-Function92879: ; 92879 (24:6879)
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Function9287e: ; 9287e (24:687e)
-	call Function92879
-	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	ld a, $ff
-	ld [wc70d], a
-	ret
-
-Function9288e: ; 9288e (24:688e)
-	call Function9307c
-	jr nc, .asm_92899
-	ld a, $12
-	ld [wJumptableIndex], a
-	ret
-.asm_92899
-	call Function92879
-	call Function9303f
-	call Function93002
-	ld a, $20
-	ld [wcf64], a
-	ld a, $4
-	ld [wc6d0], a
-	ld [wc6e0], a
-	ld [wc6f0], a
-	ld a, $4
-	ld [wc6d9], a
-	ld [wc6e9], a
-	ld [wc6f9], a
-	call WaitSFX
-	ld a, SFX_SLOT_MACHINE_START
-	call Function9331e
-	ret
-
-Function928c6: ; 928c6 (24:68c6)
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_928cf
-	dec [hl]
-	ret
-.asm_928cf
-	call Function92879
-	xor a
-	ld [hJoypadSum], a
-	ret
-
-Function928d6: ; 928d6 (24:68d6)
-	ld hl, hJoypadSum ; $ffa5
-	ld a, [hl]
-	and A_BUTTON
-	ret z
-	call Function92879
-	call Function92a2b
-	ld [wc6d0], a
-
-Function928e6: ; 928e6 (24:68e6)
-	ld a, [wc6d0]
-	cp $0
-	ret nz
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6d0
-	ld de, wc700
-	call Function929f6
-	call Function92879
-	xor a
-	ld [hJoypadSum], a
-
-Function92900: ; 92900 (24:6900)
-	ld hl, hJoypadSum ; $ffa5
-	ld a, [hl]
-	and A_BUTTON
-	ret z
-	call Function92879
-	call Function92a2e
-	ld [wc6e0], a
-
-Function92910: ; 92910 (24:6910)
-	ld a, [wc6e0]
-	cp $0
-	ret nz
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6e0
-	ld de, wc703
-	call Function929f6
-	call Function92879
-	xor a
-	ld [hJoypadSum], a
-
-Function9292a: ; 9292a (24:692a)
-	ld hl, hJoypadSum ; $ffa5
-	ld a, [hl]
-	and A_BUTTON
-	ret z
-	call Function92879
-	call Function92a60
-	ld [wc6f0], a
-
-Function9293a: ; 9293a (24:693a)
-	ld a, [wc6f0]
-	cp $0
-	ret nz
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6f0
-	ld de, wc706
-	call Function929f6
-	call Function92879
-	xor a
-	ld [hJoypadSum], a
-	ret
-
-Function92955: ; 92955 (24:6955)
-	ld a, [wc70d]
-	cp $ff
-	jr nz, .asm_92963
-	call Function92879
-	call Function92879
-	ret
-.asm_92963
-	call Function92879
-	ld a, $10
-	ld [wcf64], a
-
-Function9296b: ; 9296b (24:696b)
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_92980
-	dec [hl]
-	srl a
-	ret z
-	ld a, [rOBP0]
-	xor $ff
-	ld e, a
-	ld d, a
-	call DmgToCgbObjPals
-	ret
-.asm_92980
-	call Function9279b
-	call Function92879
-	ret
-
-Function92987: ; 92987 (24:6987)
-	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	ld a, $e4
-	call DmgToCgbBGPals
-	call Function93124
-	xor a
-	ld [wcf64], a
-	call Function92879
-	ret
-
-Function9299e: ; 9299e (24:699e)
-	call Function93158
-	call Function92879
-
-Function929a4: ; 929a4 (24:69a4)
-	ld hl, wcf64
-	ld a, [hl]
-	inc [hl]
-	and $1
-	ret z
-	ld hl, wc711
-	ld a, [hli]
-	ld d, a
-	or [hl]
-	jr z, .asm_929d5
-	ld e, [hl]
-	dec de
-	ld [hl], e
-	dec hl
-	ld [hl], d
-	ld hl, Coins
-	ld d, [hl]
-	inc hl
-	ld e, [hl]
-	call Function92a04
-	jr c, .asm_929c5
-	inc de
-.asm_929c5
-	ld [hl], e
-	dec hl
-	ld [hl], d
-	ld a, [wcf64]
-	and $7
-	ret z
-	ld de, SFX_GET_COIN_FROM_SLOTS
-	call PlaySFX
-	ret
-.asm_929d5
-	call Function92879
-	ret
-
-Function929d9: ; 929d9 (24:69d9)
-	call Function9304c
-	call WaitPressAorB_BlinkCursor
-	call Function930e9
-	jr c, .asm_929ea
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-.asm_929ea
-	ld a, $12
-	ld [wJumptableIndex], a
-	ret
-
-Function929f0: ; 929f0 (24:69f0)
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Function929f6: ; 929f6 (24:69f6)
-	push de
-	call Function92a12
-	pop de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	ret
-
-Function92a04: ; 92a04 (24:6a04)
-	ld a, d
-	cp 9999 / $100
-	jr c, .asm_92a10
-	ld a, e
-	cp 9999 % $100
-	jr c, .asm_92a10
-	scf
-	ret
-.asm_92a10
-	and a
-	ret
-
-Function92a12: ; 92a12 (24:6a12)
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_92a1c
-	ld a, $f
-.asm_92a1c
-	dec a
-	and $f
-	ld e, a
-	ld d, $0
-	ld hl, $1
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ret
-
-Function92a2b: ; 92a2b (24:6a2b)
-	ld a, $7
-	ret
-
-Function92a2e: ; 92a2e (24:6a2e)
-	ld a, [wc70a]
-	cp $2
-	jr c, .asm_92a4e
-	ld a, [wc709]
-	and a
-	jr z, .asm_92a3f
-	cp $ff
-	jr nz, .asm_92a4e
-.asm_92a3f
-	call Function92a51
-	jr nz, .asm_92a4e
-	call Random
-	cp $50
-	jr nc, .asm_92a4e
-	ld a, $a
-	ret
-.asm_92a4e
-	ld a, $8
-	ret
-
-Function92a51: ; 92a51 (24:6a51)
-	ld a, [wc700]
-	and a
-	ret z
-	ld a, [wc701]
-	and a
-	ret z
-	ld a, [wc702]
-	and a
-	ret
-
-Function92a60: ; 92a60 (24:6a60)
-	ld a, [wc70b]
-	and a
-	jr z, .asm_92a95
-	ld a, [wc70c]
-	and a
-	jr z, .asm_92a95
-	ld a, [wc709]
-	and a
-	jr nz, .asm_92a84
-	call Random
-	cp 180
-	jr nc, .asm_92a95
-	cp 120
-	jr nc, .asm_92a92
-	cp 60
-	jr nc, .asm_92a8f
-	ld a, $15
-	ret
-.asm_92a84
-	call Random
-	cp $a0
-	jr nc, .asm_92a95
-	cp $50
-	jr nc, .asm_92a92
-.asm_92a8f
-	ld a, $12
-	ret
-.asm_92a92
-	ld a, $10
-	ret
-.asm_92a95
-	ld a, $9
-	ret
-
-Function92a98: ; 92a98 (24:6a98)
-	ld bc, wc6d0
-	ld hl, $6
-	add hl, bc
-	ld de, Sprites + $40
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $1
-	add hl, bc
-	ld de, Unknown_93327
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $8
-	add hl, bc
-	ld [hl], $30
-	call Function92af9
-	ld bc, wc6e0
-	ld hl, $6
-	add hl, bc
-	ld de, Sprites + $60
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $1
-	add hl, bc
-	ld de, Unknown_93339
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $8
-	add hl, bc
-	ld [hl], $50
-	call Function92af9
-	ld bc, wc6f0
-	ld hl, $6
-	add hl, bc
-	ld de, Sprites + $80
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $1
-	add hl, bc
-	ld de, Unknown_9334b
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $8
-	add hl, bc
-	ld [hl], $70
-	call Function92af9
-	ret
-
-Function92af9: ; 92af9 (24:6af9)
-	ld hl, 0
-	add hl, bc
-	ld [hl], $0
-	ld hl, $3
-	add hl, bc
-	ld [hl], $e
-	ld hl, $4
-	add hl, bc
-	ld [hl], $0
-	call Function92b53
-	ret
-
-Function92b0f: ; 92b0f (24:6b0f)
-	ld bc, wc6d0
-	call Function92b22
-	ld bc, wc6e0
-	call Function92b22
-	ld bc, wc6f0
-	call Function92b22
-	ret
-
-Function92b22: ; 92b22 (24:6b22)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	and $f
-	jr nz, .asm_92b2e
-	call Function92bd4
-.asm_92b2e
-	ld hl, $5
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	ld d, a
-	ld hl, $4
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	and $f
-	jr z, Function92b53
-	ld hl, $6
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld e, $8
-.asm_92b49
-	ld a, [hl]
-	add d
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	dec e
-	jr nz, .asm_92b49
-	ret
-
-Function92b53: ; 92b53 (24:6b53)
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	ld [wc712 + 1], a
-	ld a, $50
-	ld [wc712 + 2], a
-	ld hl, $3
-	add hl, bc
-	ld e, [hl]
-	ld d, $0
-	ld hl, $1
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	call Function92b83
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	inc a
-	and $f
-	cp $f
-	jr nz, .asm_92b81
-	xor a
-.asm_92b81
-	ld [hl], a
-	ret
-
-Function92b83: ; 92b83 (24:6b83)
-	ld hl, $6
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-.asm_92b8a
-	ld a, [wc712 + 2]
-	ld [hli], a
-	ld a, [wc712 + 1]
-	ld [hli], a
-	ld a, [de]
-	ld [hli], a
-	srl a
-	srl a
-	set 7, a
-	ld [hli], a
-	ld a, [wc712 + 2]
-	ld [hli], a
-	ld a, [wc712 + 1]
-	add $8
-	ld [hli], a
-	ld a, [de]
-rept 2
-	inc a
-endr
-	ld [hli], a
-	srl a
-	srl a
-	set 7, a
-	ld [hli], a
-	inc de
-	ld a, [wc712 + 2]
-	sub $10
-	ld [wc712 + 2], a
-	cp $10
-	jr nz, .asm_92b8a
-	ret
-; 92bbe (24:6bbe)
-
-Function92bbe: ; 92bbe
-	push hl
-	srl a
-	srl a
-	add Unknown_92bce % $100
-	ld l, a
-	ld a, 0
-	adc Unknown_92bce / $100
-	ld h, a
-	ld a, [hl]
-	pop hl
-	ret
-; 92bce
-
-Unknown_92bce: ; 92bce
-	db 0, 1, 2, 3, 4, 5
-; 92bd4
-
-Function92bd4: ; 92bd4 (24:6bd4)
-	ld hl, 0
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_92be4
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 92be4 (24:6be4)
-
-Jumptable_92be4: ; 92be4
-	dw Function92c16
-	dw Function92c4c
-	dw Function92c17
-	dw Function92c1e
-	dw Function92c25
-	dw Function92c2c
-	dw Function92c33
-	dw Function92c5e
-	dw Function92c86
-	dw Function92ca9
-	dw Function92cd2
-	dw Function92cf8
-	dw Function92d13
-	dw Function92df7
-	dw Function92e10
-	dw Function92e31
-	dw Function92e47
-	dw Function92e64
-	dw Function92d20
-	dw Function92d4f
-	dw Function92d6e
-	dw Function92d7e
-	dw Function92da4
-	dw Function92db3
-	dw Function92dca
-; 92c16
-
-Function92c16: ; 92c16
-	ret
-; 92c17
-
-Function92c17: ; 92c17
-	ld hl, $5
-	add hl, bc
-	ld [hl], $10
-	ret
-; 92c1e
-
-Function92c1e: ; 92c1e
-	ld hl, $5
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92c25
-
-Function92c25: ; 92c25
-	ld hl, $5
-	add hl, bc
-	ld [hl], $4
-	ret
-; 92c2c
-
-Function92c2c: ; 92c2c
-	ld hl, $5
-	add hl, bc
-	ld [hl], $2
-	ret
-; 92c33
-
-Function92c33: ; 92c33
-	ld hl, $5
-	add hl, bc
-	ld [hl], $1
-	ret
-; 92c3a
-
-Function92c3a: ; 92c3a
-	ld hl, $5
-	add hl, bc
-	ld [hl], $0
-	ld hl, 0
-	add hl, bc
-	ld [hl], $1
-	ld hl, $f
-	add hl, bc
-	ld [hl], $3
-
-Function92c4c: ; 92c4c
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92c56
-	dec [hl]
-	ret
-
-.asm_92c56
-	ld hl, 0
-	add hl, bc
-	ld a, $0
-	ld [hl], a
-	ret
-; 92c5e
-
-Function92c5e: ; 92c5e
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92c72
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92c72
-	dec [hl]
-	call Function92c76
-	ret nz
-
-.asm_92c72
-	call Function92c3a
-	ret
-; 92c76
-
-Function92c76: ; 92c76
-	call Function92a12
-	ld a, [wc709]
-	ld e, a
-	ld a, [hli]
-	cp e
-	ret z
-	ld a, [hli]
-	cp e
-	ret z
-	ld a, [hl]
-	cp e
-	ret
-; 92c86
-
-Function92c86: ; 92c86
-	call Function92e94
-	jr nc, .asm_92c94
-	ld a, [wc717]
-	ld hl, wc709
-	cp [hl]
-	jr z, .asm_92ca5
-
-.asm_92c94
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92ca5
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92ca5
-	dec [hl]
-	ret
-
-.asm_92ca5
-	call Function92c3a
-	ret
-; 92ca9
-
-Function92ca9: ; 92ca9
-	call Function92f1d
-	jr nc, .asm_92cbd
-	ld hl, wc709
-	cp [hl]
-	jr z, .asm_92cce
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret
-
-.asm_92cbd
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92cce
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92cce
-	dec [hl]
-	ret
-
-.asm_92cce
-	call Function92c3a
-	ret
-; 92cd2
-
-Function92cd2: ; 92cd2
-	call Function92e94
-	jr nc, .asm_92ce1
-	ld a, [wc70c]
-	and a
-	jr z, .asm_92ce1
-	call Function92c3a
-	ret
-
-.asm_92ce1
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], $20
-	ld hl, $5
-	add hl, bc
-	ld [hl], $0
-	ret
-; 92cf8
-
-Function92cf8: ; 92cf8
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92d02
-	dec [hl]
-	ret
-
-.asm_92d02
-	ld a, SFX_THROW_BALL
-	call Function9331e
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92d13
-
-Function92d13: ; 92d13
-	call Function92e94
-	ret nc
-	ld a, [wc70c]
-	and a
-	ret z
-	call Function92c3a
-	ret
-; 92d20
-
-Function92d20: ; 92d20
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], $0
-	call Function92fc0
-	push bc
-	push af
-	ld de, $6068
-	ld a, $6
-	call Function3b2a
-	ld hl, $e
-	add hl, bc
-	pop af
-	ld [hl], a
-	pop bc
-	xor a
-	ld [wcf64], a
-
-Function92d4f: ; 92d4f
-	ld a, [wcf64]
-	cp $2
-	jr z, .asm_92d5b
-	cp $1
-	jr z, .asm_92d62
-	ret
-
-.asm_92d5b
-	call Function92f1d
-	call Function92c3a
-	ret
-
-.asm_92d62
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92d6e
-
-Function92d6e: ; 92d6e
-	xor a
-	ld [wcf64], a
-	ld hl, 0
-	add hl, bc
-	dec [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], $0
-	ret
-; 92d7e
-
-Function92d7e: ; 92d7e
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], $0
-	push bc
-	ld de, $6000
-	ld a, $7
-	call Function3b2a
-	pop bc
-	xor a
-	ld [wcf64], a
-	ret
-; 92da4
-
-Function92da4: ; 92da4
-	ld a, [wcf64]
-	and a
-	ret z
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld a, $2
-	ld [wcf64], a
-
-Function92db3: ; 92db3
-	ld a, [wcf64]
-	cp $4
-	ret c
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], $10
-	ld hl, $a
-	add hl, bc
-	ld [hl], $11
-
-Function92dca: ; 92dca
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92dd4
-	dec [hl]
-	ret
-
-.asm_92dd4
-	call Function92f1d
-	jr nc, .asm_92de5
-	and a
-	jr nz, .asm_92de5
-	ld a, $5
-	ld [wcf64], a
-	call Function92c3a
-	ret
-
-.asm_92de5
-	ld hl, $5
-	add hl, bc
-	ld [hl], $0
-	ld hl, 0
-	add hl, bc
-rept 2
-	dec [hl]
-endr
-	ld a, $1
-	ld [wcf64], a
-	ret
-; 92df7
-
-Function92df7: ; 92df7
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	call Function92fc0
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-
-Function92e10: ; 92e10
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_92e1f
-	call Function92f1d
-	call Function92c3a
-	ret
-
-.asm_92e1f
-	dec [hl]
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $b
-	add hl, bc
-	ld [hl], $20
-	ld hl, $5
-	add hl, bc
-	ld [hl], $0
-
-Function92e31: ; 92e31
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92e3b
-	dec [hl]
-	ret
-
-.asm_92e3b
-	ld hl, 0
-	add hl, bc
-	dec [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92e47
-
-Function92e47: ; 92e47
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, $5
-	add hl, bc
-	ld [hl], $1
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], $10
-
-Function92e64: ; 92e64
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92e73
-	dec [hl]
-.asm_92e6d
-	ld a, SFX_GOT_SAFARI_BALLS
-	call Function9331e
-	ret
-
-.asm_92e73
-	ld a, [wc709]
-	and a
-	jr nz, .asm_92e88
-	call Function92f1d
-	jr nc, .asm_92e6d
-	and a
-	jr nz, .asm_92e6d
-	call Function92c3a
-	call WaitSFX
-	ret
-
-.asm_92e88
-	call Function92f1d
-	jr c, .asm_92e6d
-	call Function92c3a
-	call WaitSFX
-	ret
-; 92e94
-
-Function92e94: ; 92e94
-	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	call Function92a12
-	call Function92fb4
-	ld a, [wc70a]
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_92ebd
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .asm_92eb6
-	push de
-	jp [hl]
-
-.asm_92eb6
-	ld a, [wc70b]
-	and a
-	ret z
-	scf
-	ret
-; 92ebd
-
-Jumptable_92ebd: ; 92ebd
-	dw Function92ed4
-	dw Function92ed1
-	dw Function92ecb
-	dw Function92ec5
-; 92ec5
-
-Function92ec5: ; 92ec5
-	call Function92ee0
-	call Function92ef6
-
-Function92ecb: ; 92ecb
-	call Function92ed5
-	call Function92f01
-
-Function92ed1: ; 92ed1
-	call Function92eeb
-
-Function92ed4: ; 92ed4
-	ret
-; 92ed5
-
-Function92ed5: ; 92ed5
-	ld hl, wc70e
-	ld a, [EnemyScreens]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92ee0
-
-Function92ee0: ; 92ee0
-	ld hl, wEnemyGoesFirst
-	ld a, [wc700]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92eeb
-
-Function92eeb: ; 92eeb
-	ld hl, wEnemyGoesFirst
-	ld a, [wc701]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92ef6
-
-Function92ef6: ; 92ef6
-	ld hl, wEnemyGoesFirst
-	ld a, [wc702]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92f01
-
-Function92f01: ; 92f01
-	ld hl, wc710
-	ld a, [wc702]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92f0c
-
-Function92f0c: ; 92f0c
-	ld [wc717], a
-	and a
-	jr nz, .asm_92f17
-	ld a, $1
-	ld [wc70c], a
-
-.asm_92f17
-	ld a, $1
-	ld [wc70b], a
-	ret
-; 92f1d
-
-Function92f1d: ; 92f1d
-	ld a, $ff
-	ld [EffectFailed], a
-	call Function92a12
-	call Function92fb4
-	ld a, [wc70a]
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_92f48
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .asm_92f3d
-	push de
-	jp [hl]
-
-.asm_92f3d
-	ld a, [wc70d]
-	cp $ff
-	jr nz, .asm_92f46
-	and a
-	ret
-
-.asm_92f46
-	scf
-	ret
-; 92f48
-
-Jumptable_92f48: ; 92f48
-	dw Function92f5f
-	dw Function92f5c
-	dw Function92f56
-	dw Function92f50
-; 92f50
-
-Function92f50: ; 92f50
-	call Function92f70
-	call Function92f90
-
-Function92f56: ; 92f56
-	call Function92f60
-	call Function92fa0
-
-Function92f5c: ; 92f5c
-	call Function92f80
-
-Function92f5f: ; 92f5f
-	ret
-; 92f60
-
-Function92f60: ; 92f60
-	ld hl, wc70e
-	ld a, [wc700]
-	cp [hl]
-	ret nz
-	ld hl, wc703
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92f70
-
-Function92f70: ; 92f70
-	ld hl, wc710
-	ld a, [wc700]
-	cp [hl]
-	ret nz
-	ld hl, wc704
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92f80
-
-Function92f80: ; 92f80
-	ld hl, wEnemyGoesFirst
-	ld a, [wc701]
-	cp [hl]
-	ret nz
-	ld hl, wc704
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92f90
-
-Function92f90: ; 92f90
-	ld hl, wc70e
-	ld a, [wc702]
-	cp [hl]
-	ret nz
-	ld hl, wc704
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92fa0
-
-Function92fa0: ; 92fa0
-	ld hl, wc710
-	ld a, [wc702]
-	cp [hl]
-	ret nz
-	ld hl, wc705
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92fb0
-
-Function92fb0: ; 92fb0
-	ld [wc70d], a
-	ret
-; 92fb4
-
-Function92fb4: ; 92fb4
-	ld de, wc70e
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	ret
-; 92fc0
-
-Function92fc0: ; 92fc0
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	push af
-	push hl
-	call Function92fcf
-	pop hl
-	pop af
-	ld [hl], a
-	ld a, e
-	ret
-; 92fcf
-
-Function92fcf: ; 92fcf
-	ld a, [wc709]
-	and a
-	jr nz, .asm_92fe8
-	ld e, $0
-.asm_92fd7
-	ld hl, $3
-	add hl, bc
-	inc [hl]
-	inc e
-	push de
-	call Function92f1d
-	pop de
-	jr nc, .asm_92fd7
-	and a
-	jr nz, .asm_92fd7
-	ret
-
-.asm_92fe8
-	call Random
-	and $7
-	cp $4
-	jr c, .asm_92fe8
-	ld e, a
-.asm_92ff2
-	ld a, e
-	inc e
-	ld hl, $3
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	push de
-	call Function92f1d
-	pop de
-	jr c, .asm_92ff2
-	ret
-; 93002
-
-Function93002: ; 93002 (24:7002)
-	ld a, [wc709]
-	and a
-	ret z
-	ld hl, Unknown_93023
-	ld a, [ScriptVar]
-	and a
-	jr z, .asm_93013
-	ld hl, Unknown_93031
-.asm_93013
-	call Random
-	ld c, a
-.asm_93017
-	ld a, [hli]
-	cp c
-	jr nc, .asm_9301e
-	inc hl
-	jr .asm_93017
-.asm_9301e
-	ld a, [hl]
-	ld [wc709], a
-	ret
-; 93023 (24:7023)
-
-Unknown_93023: ; 93023
-	db $01, $00
-	db $03, $04
-	db $0a, $14
-	db $14, $10
-	db $28, $0c
-	db $30, $08
-	db $ff, $ff
-; 93031
-
-Unknown_93031: ; 93031
-	db $02, $00
-	db $03, $04
-	db $08, $14
-	db $10, $10
-	db $1e, $0c
-	db $50, $08
-	db $ff, $ff
-; 9303f
-
-Function9303f: ; 9303f (24:703f)
-	ld b, $14
-	ld a, [wc70a]
-	dec a
-	jr z, asm_93066
-	dec a
-	jr z, asm_9305a
-	jr asm_9304e
-
-Function9304c: ; 9304c (24:704c)
-	ld b, $23
-asm_9304e: ; 9304e (24:704e)
-	hlcoord 3, 2
-	call Function93069
-	hlcoord 3, 10
-	call Function93069
-asm_9305a: ; 9305a (24:705a)
-	hlcoord 3, 4
-	call Function93069
-	hlcoord 3, 8
-	call Function93069
-asm_93066: ; 93066 (24:7066)
-	hlcoord 3, 6
-
-Function93069: ; 93069 (24:7069)
-	ld a, b
-	ld [hl], a
-	ld de, $d
-	add hl, de
-	ld [hl], a
-	ld de, $7
-	add hl, de
-	inc a
-	ld [hl], a
-	ld de, $d
-	add hl, de
-	ld [hl], a
-	ret
-
-Function9307c: ; 9307c (24:707c)
-	ld hl, UnknownText_0x930c7
-	call PrintText
-	ld hl, MenuDataHeader_0x930d6
-	call LoadMenuDataHeader
-	call InterpretMenu2
-	call WriteBackup
-	ret c
-	ld a, [MenuSelection2]
-	ld b, a
-	ld a, $4
-	sub b
-	ld [wc70a], a
-	ld hl, Coins
-	ld c, a
-	ld a, [hli]
-	and a
-	jr nz, .asm_930ad
-	ld a, [hl]
-	cp c
-	jr nc, .asm_930ad
-	ld hl, UnknownText_0x930d1
-	call PrintText
-	jr Function9307c
-.asm_930ad
-	ld hl, Coins + 1
-	ld a, [hl]
-	sub c
-	ld [hld], a
-	jr nc, .asm_930b6
-	dec [hl]
-.asm_930b6
-	call WaitSFX
-	ld de, SFX_PAY_DAY
-	call PlaySFX
-	ld hl, UnknownText_0x930cc
-	call PrintText
-	and a
-	ret
-; 930c7 (24:70c7)
-
-UnknownText_0x930c7: ; 0x930c7
-	; Bet how many coins?
-	text_jump UnknownText_0x1c5049
-	db "@"
-; 0x930cc
-
-UnknownText_0x930cc: ; 0x930cc
-	; Start!
-	text_jump UnknownText_0x1c505e
-	db "@"
-; 0x930d1
-
-UnknownText_0x930d1: ; 0x930d1
-	; Not enough coins.
-	text_jump UnknownText_0x1c5066
-	db "@"
-; 0x930d6
-
-MenuDataHeader_0x930d6: ; 0x930d6
-	db $40 ; flags
-	db 10, 14 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData2_0x930de
-	db 1 ; default option
-; 0x930de
-
-MenuData2_0x930de: ; 0x930de
-	db $80 ; flags
-	db 3 ; items
-	db " 3@"
-	db " 2@"
-	db " 1@"
-; 0x930e9
-
-Function930e9: ; 930e9 (24:70e9)
-	ld hl, Coins
-	ld a, [hli]
-	or [hl]
-	jr nz, .asm_930fd
-	ld hl, UnknownText_9311a
-	call PrintText
-	ld c, 60
-	call DelayFrames
-	jr .asm_93118
-.asm_930fd
-	ld hl, UnknownText_9311f
-	call PrintText
-	call LoadMenuTextBox
-	lb bc, 14, 12
-	call PlaceYesNoBox
-	ld a, [MenuSelection2]
-	dec a
-	call WriteBackup
-	and a
-	jr nz, .asm_93118
-	and a
-	ret
-.asm_93118
-	scf
-	ret
-; 9311a (24:711a)
-
-UnknownText_9311a: ; 9311a
-	text_jump UnknownText_0x1c5079
-	db "@"
-
-UnknownText_9311f: ; 9311f
-	text_jump UnknownText_0x1c5092
-	db "@"
-
-Function93124: ; 93124 (24:7124)
-	ld a, [EffectFailed]
-	cp $ff
-	jr z, .asm_93151
-	srl a
-	ld e, a
-	ld d, 0
-	ld hl, .data_93145
-	add hl, de
-	ld a, [hli]
-	ld [PlayerUsedMoves], a
-	ld e, a
-	ld a, [hl]
-	ld [wc711], a
-	ld d, a
-	callba MobileFn_105fe3
-	ret
-
-.data_93145
-	db $2c, $01
-	db $32, $00
-	db $06, $00
-	db $08, $00
-	db $0a, $00
-	db $0f, $00
-
-.asm_93151
-	ld hl, wc711
-	xor a
-	ld [hli], a
-	ld [hl], a
-	ret
-
-Function93158: ; 93158 (24:7158)
-	ld a, [EffectFailed]
-	cp $ff
-	jr nz, .asm_9316c
-	ld hl, UnknownText_0x931e0
-	call PrintText
-	callba MobileFn_105fd0
-	ret
-.asm_9316c
-	srl a
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_93195
-rept 3
-	add hl, de
-endr
-	ld de, StringBuffer2
-	ld bc, $4
-	call CopyBytes
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .asm_93188
-	push de
-	jp [hl]
-.asm_93188
-	ld hl, UnknownText_0x931b9
-	call PrintText
-	callba MobileFn_105f9f
-	ret
-; 93195 (24:7195)
-
-Unknown_93195: ; 93195
-	db "300@"
-	dw Function931e5
-	db "50@@"
-	dw Function9320b
-	db "6@@@"
-	dw Function93214
-	db "8@@@"
-	dw Function93214
-	db "10@@"
-	dw Function93214
-	db "15@@"
-	dw Function93214
-; 931b9
-
-UnknownText_0x931b9: ; 0x931b9
-	start_asm
-; 0x931ba
-
-Function931ba: ; 931ba
-	ld a, [EffectFailed]
-	add $25
-	ldcoord_a 2, 13
-	inc a
-	ldcoord_a 2, 14
-	inc a
-	ldcoord_a 3, 13
-	inc a
-	ldcoord_a 3, 14
-	hlcoord 18, 17
-	ld [hl], $ee
-	ld hl, UnknownText_0x931db
-rept 4
-	inc bc
-endr
-	ret
-; 931db
-
-UnknownText_0x931db: ; 0x931db
-	; lined up! Won @  coins!
-	text_jump UnknownText_0x1c509f
-	db "@"
-; 0x931e0
-
-UnknownText_0x931e0: ; 0x931e0
-	; Darn!
-	text_jump UnknownText_0x1c50bb
-	db "@"
-; 0x931e5
-
-Function931e5: ; 931e5
-	ld a, SFX_2ND_PLACE
-	call Function9331e
-	call WaitSFX
-	ld a, [wd002]
-	and a
-	jr nz, .asm_931ff
-	call Random
-	and $14
-	ret z
-	ld a, $ff
-	ld [wc709], a
-	ret
-
-.asm_931ff
-	call Random
-	and $1c
-	ret z
-	ld a, $ff
-	ld [wc709], a
-	ret
-; 9320b
-
-Function9320b: ; 9320b
-	ld a, SFX_3RD_PLACE
-	call Function9331e
-	call WaitSFX
-	ret
-; 93214
-
-Function93214: ; 93214
-	ld a, SFX_PRESENT
-	call Function9331e
-	call WaitSFX
-	ret
-; 9321d
-
-Function9321d: ; 9321d (24:721d)
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_9322d
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_9322d: ; 9322d (24:722d)
-	dw Function93233
-	dw Function93259
-	dw Function93289
-
-
-Function93233: ; 93233 (24:7233)
-	ld hl, $e
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_93247
-	ld a, $2
-	ld [wcf64], a
-	ld hl, 0
-	add hl, bc
-	ld [hl], $0
-	ret
-.asm_93247
-	dec [hl]
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld hl, $c
-	add hl, bc
-	ld [hl], $30
-	ld hl, $6
-	add hl, bc
-	ld [hl], $0
-
-Function93259: ; 93259 (24:7259)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr c, .asm_93273
-	dec [hl]
-	ld e, a
-	ld d, $70
-	callba Functionce765
-	ld a, e
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_93273
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld hl, $d
-	add hl, bc
-	ld [hl], $2
-	ld a, $1
-	ld [wcf64], a
-	ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
-	call Function9331e
-	ret
-
-Function93289: ; 93289 (24:7289)
-	ld hl, $6
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	cp $48
-	jr nc, .asm_932a3
-	and $3
-	ret nz
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld [hl], a
-	ld [hSCY], a
-	ret
-.asm_932a3
-	ld hl, $b
-	add hl, bc
-	xor a
-	ld [hl], a
-	ld [hSCY], a
-	ret
-
-Function932ac: ; 932ac (24:72ac)
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_932bc
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_932bc: ; 932bc (24:72bc)
-	dw Function932c2
-	dw Function932e0
-	dw Function932fc
-
-
-Function932c2: ; 932c2 (24:72c2)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	cp $68
-	jr z, .asm_932d6
-	and $f
-	ret nz
-	ld de, SFX_JUMP_OVER_LEDGE
-	call PlaySFX
-	ret
-.asm_932d6
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld a, $1
-	ld [wcf64], a
-
-Function932e0: ; 932e0 (24:72e0)
-	ld a, [wcf64]
-	cp $2
-	jr z, .asm_932f1
-	cp $5
-	ret nz
-	ld hl, 0
-	add hl, bc
-	ld [hl], $0
-	ret
-.asm_932f1
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld hl, $c
-	add hl, bc
-	ld [hl], $8
-
-Function932fc: ; 932fc (24:72fc)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_93306
-	dec [hl]
-	ret
-.asm_93306
-	ld hl, $b
-	add hl, bc
-	dec [hl]
-	push bc
-	ld de, $606c
-	ld a, $8
-	call Function3b2a
-	pop bc
-	ret
-; 93316 (24:7316)
-
-Function93316: ; 93316
-	push bc
-	ld c, 16
-	call DelayFrames
-	pop bc
-	ret
-; 9331e
-
-Function9331e: ; 9331e (24:731e)
-	push de
-	ld e, a
-	ld d, 0
-	call PlaySFX
-	pop de
-	ret
-; 93327 (24:7327)
-
-Unknown_93327: ; 93327
-	db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14
-Unknown_93339: ; 93339
-	db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08
-Unknown_9334b: ; 9334b
-	db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08
-; 9335d
-
-SlotsTilemap: ; 9335d
-INCBIN "gfx/slots.tilemap"
-; 9344d
-
-Slots1LZ: ; 9344d
-INCBIN "gfx/slots_1.2bpp.lz"
-; 935cd
-
-Slots2LZ: ; 935cd
-INCBIN "gfx/slots_2.2bpp.lz"
-; 9382d
-
-Slots3LZ: ; 9382d
-INCBIN "gfx/slots_3.2bpp.lz"
-; 93a3d
-
-
-
 SECTION "bank28", ROMX, BANK[$28]
 
 INCLUDE "engine/more_phone_scripts.asm"
@@ -50468,871 +46077,8 @@
 
 SECTION "bank2E", ROMX, BANK[$2E]
 
-ReturnFromMapSetupScript:: ; b8000
-	xor a
-	ld [hBGMapMode], a
-	; For some reson, GameFreak chose to use a callba here instead of just falling through.
-	; No other function in the game references the function at 2E:400A, here labeled
-	; ReturnFromMapSetupScript.inefficientcallba.
-	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes
-	ret
-; b800a
+INCLUDE "engine/events_3.asm"
 
-.inefficientcallba: ; b800a
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetWorldMapLocation
-	ld [wCurrentLandmark], a
-	call .CheckNationalParkGate
-	jr z, .nationalparkgate
-
-	call GetMapPermission
-	cp GATE
-	jr nz, .not_gate
-
-.nationalparkgate
-	ld a, -1
-	ld [wCurrentLandmark], a
-
-.not_gate
-	ld hl, wEnteredMapFromContinue
-	bit 1, [hl]
-	res 1, [hl]
-	jr nz, .dont_do_map_sign
-
-	call .CheckMovingWithinLandmark
-	jr z, .dont_do_map_sign
-	ld a, [wCurrentLandmark]
-	ld [wPreviousLandmark], a
-
-	call .CheckSpecialMap
-	jr z, .dont_do_map_sign
-
-; Display for 60 frames
-	ld a, 60
-	ld [wLandmarkSignTimer], a
-	call LoadMapNameSignGFX
-	call InitMapNameFrame
-	callba Function104303
-	ret
-
-.dont_do_map_sign
-	ld a, [wCurrentLandmark]
-	ld [wPreviousLandmark], a
-	ld a, $90
-	ld [rWY], a
-	ld [hWY], a
-	xor a
-	ld [hLCDStatCustom], a
-	ret
-; b8064
-
-.CheckMovingWithinLandmark: ; b8064
-	ld a, [wCurrentLandmark]
-	ld c, a
-	ld a, [wPreviousLandmark]
-	cp c
-	ret z
-	cp $0
-	ret
-; b8070
-
-.CheckSpecialMap: ; b8070
-	cp -1
-	ret z
-	cp SPECIAL_MAP
-	ret z
-	cp RADIO_TOWER
-	ret z
-	cp LAV_RADIO_TOWER
-	ret z
-	cp UNDERGROUND
-	ret z
-	cp INDIGO_PLATEAU
-	ret z
-	cp POWER_PLANT
-	ret z
-	ld a, $1
-	and a
-	ret
-; b8089
-
-.CheckNationalParkGate: ; b8089
-	ld a, [MapGroup]
-	cp GROUP_ROUTE_35_NATIONAL_PARK_GATE
-	ret nz
-	ld a, [MapNumber]
-	cp MAP_ROUTE_35_NATIONAL_PARK_GATE
-	ret z
-	cp MAP_ROUTE_36_NATIONAL_PARK_GATE
-	ret
-; b8098
-
-
-PlaceMapNameSign:: ; b8098 (2e:4098)
-	ld hl, wLandmarkSignTimer
-	ld a, [hl]
-	and a
-	jr z, .disappear
-	dec [hl]
-	cp 60
-	ret z
-	cp 59
-	jr nz, .skip2
-	call InitMapNameFrame
-	call PlaceMapNameCenterAlign
-	callba Function104303
-.skip2
-	ld a, $80
-	ld a, $70
-	ld [rWY], a
-	ld [hWY], a
-	ret
-
-.disappear
-	ld a, $90
-	ld [rWY], a
-	ld [hWY], a
-	xor a
-	ld [hLCDStatCustom], a
-	ret
-
-
-LoadMapNameSignGFX: ; b80c6
-	ld de, MapEntryFrameGFX
-	ld hl, VTiles2 tile $60
-	lb bc, BANK(MapEntryFrameGFX), $e
-	call Get2bpp
-	ret
-; b80d3
-
-InitMapNameFrame: ; b80d3
-	hlcoord 0, 0
-	ld b, 2
-	ld c, 18
-	call InitMapSignAttrMap
-	call PlaceMapNameFrame
-	ret
-; b80e1
-
-
-PlaceMapNameCenterAlign: ; b80e1 (2e:40e1)
-	ld a, [wCurrentLandmark]
-	ld e, a
-	callba GetLandmarkName
-	call .GetNameLength
-	ld a, SCREEN_WIDTH
-	sub c
-	srl a
-	ld b, $0
-	ld c, a
-	hlcoord 0, 2
-	add hl, bc
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-
-.GetNameLength: ; b8101 (2e:4101)
-	ld c, 0
-	push hl
-	ld hl, StringBuffer1
-.loop
-	ld a, [hli]
-	cp "@"
-	jr z, .stop
-	cp "%"
-	jr z, .loop
-	inc c
-	jr .loop
-.stop
-	pop hl
-	ret
-
-
-InitMapSignAttrMap: ; b8115
-	ld de, AttrMap - TileMap
-	add hl, de
-rept 2
-	inc b
-endr
-rept 2
-	inc c
-endr
-	ld a, $87
-.loop
-	push bc
-	push hl
-.inner_loop
-	ld [hli], a
-	dec c
-	jr nz, .inner_loop
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .loop
-	ret
-; b812f
-
-PlaceMapNameFrame: ; b812f
-	hlcoord 0, 0
-	; top left
-	ld a, $61
-	ld [hli], a
-	; top row
-	ld a, $62
-	call .FillTopBottom
-	; top right
-	ld a, $64
-	ld [hli], a
-	; left, first line
-	ld a, $65
-	ld [hli], a
-	; first line
-	call .FillMiddle
-	; right, first line
-	ld a, $6b
-	ld [hli], a
-	; left, second line
-	ld a, $66
-	ld [hli], a
-	; second line
-	call .FillMiddle
-	; right, second line
-	ld a, $6c
-	ld [hli], a
-	; bottom left
-	ld a, $67
-	ld [hli], a
-	; bottom
-	ld a, $68
-	call .FillTopBottom
-	; bottom right
-	ld a, $6a
-	ld [hl], a
-	ret
-; b815b
-
-.FillMiddle: ; b815b
-	ld c, 18
-	ld a, $6d
-.loop
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	ret
-; b8164
-
-.FillTopBottom: ; b8164
-	ld c, 5
-	jr .enterloop
-
-.continueloop
-rept 2
-	ld [hli], a
-endr
-
-.enterloop
-	inc a
-rept 2
-	ld [hli], a
-endr
-	dec a
-	dec c
-	jr nz, .continueloop
-	ret
-; b8172
-
-CheckForSignpostItems: ; b8172
-; Checks to see if there are hidden items on the screen that have not yet been found.  If it finds one, returns carry.
-	call GetMapScriptHeaderBank
-	ld [Buffer1], a
-; Get the coordinate of the bottom right corner of the screen, and load it in wd1ec/wd1ed.
-	ld a, [XCoord]
-	add SCREEN_WIDTH / 4
-	ld [wd1ed], a
-	ld a, [YCoord]
-	add SCREEN_HEIGHT / 4
-	ld [wd1ec], a
-; Get the pointer for the first signpost header in the map...
-	ld hl, wdc02
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-; ... before even checking to see if there are any signposts on this map.
-	ld a, [wCurrentMapSignpostCount]
-	and a
-	jr z, .nosignpostitems
-; For i = 1:wCurrentMapSignpostCount...
-.loop
-; Store the counter in Buffer2, and store the signpost header pointer in the stack.
-	ld [Buffer2], a
-	push hl
-; Get the Y coordinate of the signpost.
-	call .GetFarByte
-	ld e, a
-; Is the Y coordinate of the signpost on the screen?  If not, go to the next signpost.
-	ld a, [wd1ec]
-	sub e
-	jr c, .next
-	cp SCREEN_HEIGHT / 2
-	jr nc, .next
-; Is the X coordinate of the signpost on the screen?  If not, go to the next signpost.
-	call .GetFarByte
-	ld d, a
-	ld a, [wd1ed]
-	sub d
-	jr c, .next
-	cp SCREEN_WIDTH / 2
-	jr nc, .next
-; Is this signpost a hidden item?  If not, go to the next signpost.
-	call .GetFarByte
-	cp SIGNPOST_ITEM
-	jr nz, .next
-; Has this item already been found?  If not, set off the Itemfinder.
-	ld a, [Buffer1]
-	call GetFarHalfword
-	ld a, [Buffer1]
-	call GetFarHalfword
-	ld d, h
-	ld e, l
-	ld b, CHECK_FLAG
-	call EventFlagAction
-	ld a, c
-	and a
-	jr z, .itemnearby
-
-.next
-; Restore the signpost header pointer and increment it by the length of a signpost header.
-	pop hl
-	ld bc, 5
-	add hl, bc
-; Restore the signpost counter and decrement it.  If it hits zero, there are no hidden items in range.
-	ld a, [Buffer2]
-	dec a
-	jr nz, .loop
-
-.nosignpostitems
-	xor a
-	ret
-
-.itemnearby
-	pop hl
-	scf
-	ret
-; b81e2
-
-.GetFarByte: ; b81e2
-	ld a, [Buffer1]
-	call GetFarByte
-	inc hl
-	ret
-; b81ea
-
-
-TreeMonEncounter: ; b81ea
-	callba MobileFn_1060ef
-
-	xor a
-	ld [TempWildMonSpecies], a
-	ld [CurPartyLevel], a
-
-	ld hl, TreeMonMaps
-	call GetTreeMonSet
-	jr nc, .no_battle
-
-	call GetTreeMons
-	jr nc, .no_battle
-
-	call GetTreeMon
-	jr nc, .no_battle
-
-	ld a, BATTLETYPE_TREE
-	ld [BattleType], a
-	ld a, 1
-	ld [ScriptVar], a
-	ret
-
-.no_battle
-	xor a
-	ld [ScriptVar], a
-	ret
-; b8219
-
-RockMonEncounter: ; b8219
-
-	xor a
-	ld [TempWildMonSpecies], a
-	ld [CurPartyLevel], a
-
-	ld hl, RockMonMaps
-	call GetTreeMonSet
-	jr nc, .no_battle
-
-	call GetTreeMons
-	jr nc, .no_battle
-
-	ld a, 10
-	call RandomRange
-	cp 4
-	jr nc, .no_battle
-
-	call SelectTreeMon
-	jr nc, .no_battle
-
-	ret
-
-.no_battle
-	xor a
-	ret
-; b823e
-
-	db $05 ; ????
-
-GetTreeMonSet: ; b823f
-; Return carry and treemon set in a
-; if the current map is in table hl.
-	ld a, [MapNumber]
-	ld e, a
-	ld a, [MapGroup]
-	ld d, a
-.loop
-	ld a, [hli]
-	cp -1
-	jr z, .not_in_table
-
-	cp d
-	jr nz, .skip2
-
-	ld a, [hli]
-	cp e
-	jr nz, .skip1
-
-	jr .in_table
-
-.skip2
-	inc hl
-.skip1
-	inc hl
-	jr .loop
-
-.not_in_table
-	xor a
-	ret
-
-.in_table
-	ld a, [hl]
-	scf
-	ret
-; b825e
-
-TreeMonMaps: ; b825e
-treemon_map: macro
-	map \1
-	db  \2 ; treemon set
-endm
-	treemon_map ROUTE_26, 4
-	treemon_map ROUTE_27, 4
-	treemon_map ROUTE_28, 0
-	treemon_map ROUTE_29, 3
-	treemon_map ROUTE_30, 3
-	treemon_map ROUTE_31, 3
-	treemon_map ROUTE_32, 4
-	treemon_map ROUTE_33, 2
-	treemon_map ROUTE_34, 3
-	treemon_map ROUTE_35, 3
-	treemon_map ROUTE_36, 3
-	treemon_map ROUTE_37, 3
-	treemon_map ROUTE_38, 3
-	treemon_map ROUTE_39, 3
-	treemon_map ROUTE_40, 0
-	treemon_map ROUTE_41, 0
-	treemon_map ROUTE_42, 2
-	treemon_map ROUTE_43, 5
-	treemon_map ROUTE_44, 1
-	treemon_map ROUTE_45, 1
-	treemon_map ROUTE_46, 1
-	treemon_map NEW_BARK_TOWN, 0
-	treemon_map CHERRYGROVE_CITY, 0
-	treemon_map VIOLET_CITY, 0
-	treemon_map AZALEA_TOWN, 2
-	treemon_map CIANWOOD_CITY, 0
-	treemon_map GOLDENROD_CITY, 0
-	treemon_map OLIVINE_CITY, 0
-	treemon_map ECRUTEAK_CITY, 0
-	treemon_map MAHOGANY_TOWN, 0
-	treemon_map LAKE_OF_RAGE, 5
-	treemon_map BLACKTHORN_CITY, 0
-	treemon_map SILVER_CAVE_OUTSIDE, 0
-	treemon_map ILEX_FOREST, 6
-	db -1
-; b82c5
-
-RockMonMaps: ; b82c5
-	treemon_map CIANWOOD_CITY, 7
-	treemon_map ROUTE_40, 7
-	treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
-	treemon_map SLOWPOKE_WELL_B1F, 7
-	db -1
-; b82d2
-
-GetTreeMons: ; b82d2
-; Return the address of TreeMon table a in hl.
-; Return nc if table a doesn't exist.
-
-	cp 8
-	jr nc, .quit
-
-	and a
-	jr z, .quit
-
-	ld e, a
-	ld d, 0
-	ld hl, TreeMons
-rept 2
-	add hl, de
-endr
-
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-
-	scf
-	ret
-
-.quit
-	xor a
-	ret
-; b82e8
-
-TreeMons: ; b82e8
-	dw TreeMons1
-	dw TreeMons1
-	dw TreeMons2
-	dw TreeMons3
-	dw TreeMons4
-	dw TreeMons5
-	dw TreeMons6
-	dw RockMons
-	dw TreeMons1
-
-; Two tables each (normal, rare).
-; Structure:
-;	db  %, species, level
-
-TreeMons1: ; b82fa
-	db 50, SPEAROW,    10
-	db 15, SPEAROW,    10
-	db 15, SPEAROW,    10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-	db 50, SPEAROW,    10
-	db 15, HERACROSS,  10
-	db 15, HERACROSS,  10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-TreeMons2: ; b8320
-	db 50, SPEAROW,    10
-	db 15, EKANS,      10
-	db 15, SPEAROW,    10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-	db 50, SPEAROW,    10
-	db 15, HERACROSS,  10
-	db 15, HERACROSS,  10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-TreeMons3: ; b8346
-	db 50, HOOTHOOT,   10
-	db 15, SPINARAK,   10
-	db 15, LEDYBA,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons4: ; b836c
-	db 50, HOOTHOOT,   10
-	db 15, EKANS,      10
-	db 15, HOOTHOOT,   10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons5: ; b8392
-	db 50, HOOTHOOT,   10
-	db 15, VENONAT,    10
-	db 15, HOOTHOOT,   10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons6: ; b83b8
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, NOCTOWL,    10
-	db  5, BUTTERFREE, 10
-	db  5, BEEDRILL,   10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, CATERPIE,   10
-	db 15, WEEDLE,     10
-	db 10, HOOTHOOT,   10
-	db  5, METAPOD,    10
-	db  5, KAKUNA,     10
-	db -1
-
-RockMons: ; b83de
-	db 90, KRABBY,     15
-	db 10, SHUCKLE,    15
-	db -1
-; b83e5
-
-GetTreeMon: ; b83e5
-	push hl
-	call GetTreeScore
-	pop hl
-	and a
-	jr z, .bad
-	cp 1
-	jr z, .good
-	cp 2
-	jr z, .rare
-	ret
-
-.bad
-	ld a, 10
-	call RandomRange
-	and a
-	jr nz, NoTreeMon
-	jr SelectTreeMon
-
-.good
-	ld a, 10
-	call RandomRange
-	cp 5
-	jr nc, NoTreeMon
-	jr SelectTreeMon
-
-.rare
-	ld a, 10
-	call RandomRange
-	cp 8
-	jr nc, NoTreeMon
-	jr .skip
-.skip
-	ld a, [hli]
-	cp -1
-	jr nz, .skip
-	call SelectTreeMon
-	ret
-; b841f
-
-SelectTreeMon: ; b841f
-; Read a TreeMons table and pick one monster at random.
-
-	ld a, 100
-	call RandomRange
-.loop
-	sub [hl]
-	jr c, .ok
-rept 3
-	inc hl
-endr
-	jr .loop
-
-.ok
-	ld a, [hli]
-	cp $ff
-	jr z, NoTreeMon
-
-	ld a, [hli]
-	ld [TempWildMonSpecies], a
-	ld a, [hl]
-	ld [CurPartyLevel], a
-	scf
-	ret
-
-NoTreeMon: ; b843b
-	xor a
-	ld [TempWildMonSpecies], a
-	ld [CurPartyLevel], a
-	ret
-; b8443
-
-GetTreeScore: ; b8443
-	call .CoordScore
-	ld [Buffer1], a
-	call .OTIDScore
-	ld [Buffer2], a
-	ld c, a
-	ld a, [Buffer1]
-	sub c
-	jr z, .rare
-	jr nc, .ok
-	add 10
-.ok
-	cp 5
-	jr c, .good
-
-.bad
-	xor a
-	ret
-
-.good
-	ld a, 1
-	ret
-
-.rare
-	ld a, 2
-	ret
-; b8466
-
-.CoordScore: ; b8466
-	call GetFacingTileCoord
-	ld hl, 0
-	ld c, e
-	ld b, 0
-	ld a, d
-
-	and a
-	jr z, .next
-.loop
-	add hl, bc
-	dec a
-	jr nz, .loop
-.next
-
-	add hl, bc
-	ld c, d
-	add hl, bc
-
-	ld a, h
-	ld [hDividend], a
-	ld a, l
-	ld [hDividend + 1], a
-	ld a, 5
-	ld [hDivisor], a
-	ld b, 2
-	call Divide
-
-	ld a, [hQuotient + 1]
-	ld [hDividend], a
-	ld a, [hQuotient + 2]
-	ld [hDividend + 1], a
-	ld a, 10
-	ld [hDivisor], a
-	ld b, 2
-	call Divide
-
-	ld a, [hQuotient + 3]
-	ret
-; b849d
-
-.OTIDScore: ; b849d
-	ld a, [PlayerID]
-	ld [hDividend], a
-	ld a, [PlayerID + 1]
-	ld [hDividend + 1], a
-	ld a, 10
-	ld [hDivisor], a
-	ld b, 2
-	call Divide
-	ld a, [hQuotient + 3]
-	ret
-; b84b3
-
-
-Functionb84b3: ; b84b3
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-
-	ld de, FishingGFX
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .asm_b84c7
-	ld de, KrisFishingGFX
-.asm_b84c7
-
-	ld hl, VTiles0 tile $02
-	call Functionb84e3
-	ld hl, VTiles0 tile $06
-	call Functionb84e3
-	ld hl, VTiles0 tile $0a
-	call Functionb84e3
-	ld hl, VTiles2 tile $00 - $40
-	call Functionb84e3
-
-	pop af
-	ld [rVBK], a
-	ret
-; b84e3
-
-Functionb84e3: ; b84e3
-	lb bc, BANK(FishingGFX), 2
-	push de
-	call Get2bpp
-	pop de
-	ld hl, $20
-	add hl, de
-	ld d, h
-	ld e, l
-	ret
-; b84f2
-
-FishingGFX: ; b84f2
-INCBIN "gfx/unknown/0b84f2.2bpp"
-; b8582
-
-KrisFishingGFX: ; b8582
-INCBIN "gfx/unknown/0b8582.2bpp"
-; b8612
-
 INCLUDE "engine/radio.asm"
 
 ReadPartyMonMail: ; b9229
@@ -51344,7 +46090,7 @@
 	ld e, l
 ReadAnyMail: ; b9237
 	push de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -51379,7 +46125,7 @@
 	xor a
 	ld [hJoyPressed], a
 	call Functionb929a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	call LoadStandardFont
 	jp EnableLCD
@@ -52543,7 +47289,7 @@
 
 DisplayCaughtContestMonStats: ; cc000
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call LoadFontsBattleExtra
@@ -52845,5847 +47591,10 @@
 	ret
 ; e00ee (38:40ee)
 
-_CardFlip: ; e00ee (38:40ee)
-	ld hl, Options
-	set 4, [hl]
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld de, MUSIC_NONE
-	call PlayMusic
-	call DelayFrame
-	call DisableLCD
-	call LoadStandardFont
-	call LoadFontsExtra
-	ld hl, LZ_e0d16
-	ld de, VTiles2 tile $00
-	call Decompress
-	ld hl, LZ_e0ea8
-	ld de, VTiles2 tile $3e
-	call Decompress
-	ld hl, LZ_e0cdb
-	ld de, VTiles0 tile $00
-	call Decompress
-	ld hl, GFX_e0cf6
-	ld de, VTiles1 tile $6f
-	ld bc, $10
-	call CopyBytes
-	ld hl, GFX_e0d06
-	ld de, VTiles1 tile $75
-	ld bc, $10
-	call CopyBytes
-	call Functione0521
-	call Functione04c1
-	call Functione0c37
-	call EnableLCD
-	call Function3200
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld de, $e4e4
-	call DmgToCgbObjPals
-	call DelayFrame
-	xor a
-	ld [wJumptableIndex], a
-	ld a, $2
-	ld [wcf64], a
-	ld [wcf65], a
-	ld de, MUSIC_GAME_CORNER
-	call PlayMusic
-.MasterLoop
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .leavethegame
-	call .CardFlip
-	jr .MasterLoop
-.leavethegame
-	call WaitSFX
-	ld de, SFX_QUIT_SLOTS
-	call PlaySFX
-	call WaitSFX
-	call WhiteBGMap
-	ld hl, Options
-	res 4, [hl]
-	ret
-
-.CardFlip: ; e0191 (38:4191)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e01a0 (38:41a0)
-
-.Jumptable: ; e01a0
-	dw .AskPlayWithThree
-	dw .DeductCoins
-	dw .ChooseACard
-	dw .PlaceYourBet
-	dw .CheckTheCard
-	dw .TabulateTheResult
-	dw .PlayAgain
-	dw .Quit
-; e01b0
-
-.Increment: ; e01b0
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e01b5
-
-.AskPlayWithThree: ; e01b5
-	ld hl, .PlayWithThreeCoinsText
-	call Functione0489
-	call YesNoBox
-	jr c, .SaidNo
-	call Functione0366
-	call .Increment
-	ret
-
-.SaidNo
-	ld a, $7
-	ld [wJumptableIndex], a
-	ret
-; e01cd
-
-.PlayWithThreeCoinsText: ; 0xe01cd
-	; Play with three coins?
-	text_jump UnknownText_0x1c5793
-	db "@"
-; 0xe01d2
-
-.DeductCoins: ; e01d2
-	ld a, [Coins]
-	ld h, a
-	ld a, [Coins + 1]
-	ld l, a
-	ld a, h
-	and a
-	jr nz, .deduct ; You have at least 256 coins.
-	ld a, l
-	cp 3
-	jr nc, .deduct ; You have at least 3 coins.
-	ld hl, .NotEnoughCoinsText
-	call Functione0489
-	ld a, $7
-	ld [wJumptableIndex], a
-	ret
-
-.deduct
-	ld de, -3
-	add hl, de
-	ld a, h
-	ld [Coins], a
-	ld a, l
-	ld [Coins + 1], a
-	ld de, SFX_TRANSACTION
-	call PlaySFX
-	xor a
-	ld [hBGMapMode], a
-	call Functione049c
-	ld a, $1
-	ld [hBGMapMode], a
-	call WaitSFX
-	call .Increment
-	ret
-; e0212
-
-.NotEnoughCoinsText: ; 0xe0212
-	; Not enough coins…
-	text_jump UnknownText_0x1c57ab
-	db "@"
-; 0xe0217
-
-.ChooseACard: ; e0217
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 0
-	lb bc, 12, 9
-	call Functione04e5
-	hlcoord 9, 0
-	ld bc, SCREEN_WIDTH
-	ld a, [wc6e8]
-	call AddNTimes
-	ld [hl], $f5
-	ld a, $1
-	ld [hBGMapMode], a
-	ld c, 20
-	call DelayFrames
-	hlcoord 2, 0
-	call Functione03c1
-	ld a, $1
-	ld [hBGMapMode], a
-	ld c, 20
-	call DelayFrames
-	hlcoord 2, 6
-	call Functione03c1
-	call WaitBGMap
-	ld hl, .ChooseACardText
-	call Functione0489
-	xor a
-	ld [wcf66], a
-.loop
-	call JoyTextDelay
-	ld a, [hJoyLast]
-	and A_BUTTON
-	jr nz, .next
-	ld de, SFX_KINESIS
-	call PlaySFX
-	call Functione0849
-	ld c, 4
-	call DelayFrames
-	ld hl, wcf66
-	ld a, [hl]
-	xor $1
-	ld [hl], a
-	jr .loop
-
-.next
-	ld de, SFX_SLOT_MACHINE_START
-	call PlaySFX
-	ld a, $3
-.loop2
-	push af
-	call Functione0849
-	ld c, 4
-	call DelayFrames
-	call ClearSprites
-	ld c, 4
-	call DelayFrames
-	pop af
-	dec a
-	jr nz, .loop2
-	ld hl, wcf66
-	ld a, [hl]
-	push af
-	xor $1
-	ld [hl], a
-	call Functione03ac
-	lb bc, 6, 5
-	call Functione04e5
-	pop af
-	ld [wcf66], a
-	call .Increment
-	ret
-; e02b2
-
-.ChooseACardText: ; 0xe02b2
-	; Choose a card.
-	text_jump UnknownText_0x1c57be
-	db "@"
-; 0xe02b7
-
-.PlaceYourBet: ; e02b7
-	ld hl, .PlaceYourBetText
-	call Functione0489
-.betloop
-	call JoyTextDelay
-	ld a, [hJoyLast]
-	and A_BUTTON
-	jr nz, .betdone
-	call Functione089c
-	call Functione0960
-	call DelayFrame
-	jr .betloop
-
-.betdone
-	call .Increment
-	ret
-; e02d5
-
-.PlaceYourBetText: ; 0xe02d5
-	; Place your bet.
-	text_jump UnknownText_0x1c57ce
-	db "@"
-; 0xe02da
-
-.CheckTheCard: ; e02da
-	xor a
-	ld [hVBlankCounter], a
-	call Functione0960
-	call WaitSFX
-	ld de, SFX_CHOOSE_A_CARD
-	call PlaySFX
-	call WaitSFX
-	ld a, [wc6e8]
-	ld e, a
-	ld d, 0
-	ld hl, wc6d0
-rept 2
-	add hl, de
-endr
-	ld a, [wcf66]
-	ld e, a
-	add hl, de
-	ld a, [hl]
-	ld [CurEnemyMoveNum], a
-	ld e, a
-	ld hl, wc6ea
-	add hl, de
-	ld [hl], $1
-	call Functione03ac
-	call Functione03ec
-	call Function3200
-	call .Increment
-	ret
-; e0314
-
-.TabulateTheResult: ; e0314
-	call Functione0637
-	call WaitPressAorB_BlinkCursor
-	call .Increment
-	ret
-; e031e
-
-.PlayAgain: ; e031e
-	call ClearSprites
-	ld hl, .PlayAgainText
-	call Functione0489
-	call YesNoBox
-	jr nc, .Continue
-	call .Increment
-	ret
-
-.Continue
-	ld a, [wc6e8]
-	inc a
-	ld [wc6e8], a
-	cp $c
-	jr c, .KeepTheCurrentDeck
-	call Functione04c1
-	ld a, $1
-	ld [hBGMapMode], a
-	call Functione0366
-	ld hl, .CardsShuffledText
-	call PrintText
-	jr .LoopAround
-
-.KeepTheCurrentDeck
-	call Functione0534
-
-.LoopAround
-	ld a, $1
-	ld [wJumptableIndex], a
-	ret
-; e0356
-
-.PlayAgainText: ; 0xe0356
-	; Want to play again?
-	text_jump UnknownText_0x1c57df
-	db "@"
-; 0xe035b
-
-.CardsShuffledText: ; 0xe035b
-	; The cards have been shuffled.
-	text_jump UnknownText_0x1c57f4
-	db "@"
-; 0xe0360
-
-.Quit: ; e0360
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-; e0366
-
-Functione0366: ; e0366
-	ld hl, wc6d0
-	ld bc, $18
-	xor a
-	call ByteFill
-	ld de, wc6d0
-	ld c, $17
-.asm_e0375
-	call Random
-	and $1f
-	cp $18
-	jr nc, .asm_e0375
-	ld l, a
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0375
-	ld [hl], c
-	dec c
-	jr nz, .asm_e0375
-	xor a
-	ld [wc6e8], a
-	ld hl, wc6ea
-	ld bc, $18
-	call ByteFill
-	ret
-; e0398
-
-Functione0398: ; e0398
-	ld hl, 0
-	ld bc, 6
-	ld a, [wcf64]
-	call AddNTimes
-	ld b, $0
-	ld a, [wcf65]
-	ld c, a
-	add hl, bc
-	ret
-; e03ac
-
-Functione03ac: ; e03ac
-	ld a, [wcf66]
-	and a
-	jr nz, .asm_e03ba
-	hlcoord 2, 0
-	ld bc, $1018
-	jr .asm_e03c0
-
-.asm_e03ba
-	hlcoord 2, 6
-	ld bc, $4018
-
-.asm_e03c0
-	ret
-; e03c1
-
-Functione03c1: ; e03c1
-	xor a
-	ld [hBGMapMode], a
-	ld de, Unknown_e03ce
-	lb bc, 6, 5
-	call Functione04f7
-	ret
-; e03ce
-
-Unknown_e03ce: ; e03ce
-	db $08, $09, $09, $09, $0a
-	db $0b, $28, $2b, $28, $0c
-	db $0b, $2c, $2d, $2e, $0c
-	db $0b, $2f, $30, $31, $0c
-	db $0b, $32, $33, $34, $0c
-	db $0d, $0e, $0e, $0e, $0f
-; e03ec
-
-Functione03ec: ; e03ec
-	xor a
-	ld [hBGMapMode], a
-	push hl
-	push hl
-	ld de, Unknown_e043b
-	lb bc, 6, 5
-	call Functione04f7
-	ld a, [CurEnemyMoveNum]
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_e0459
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	pop hl
-	ld bc, $17
-	add hl, bc
-	ld [hl], e
-	ld bc, SCREEN_HEIGHT
-	add hl, bc
-	ld a, d
-	ld de, SCREEN_WIDTH
-	ld b, $3
-.asm_e0418
-	push hl
-	ld c, $3
-.asm_e041b
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_e041b
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .asm_e0418
-	pop hl
-	ld a, [hCGB]
-	and a
-	ret z
-	ld de, AttrMap - TileMap
-	add hl, de
-	ld a, [CurEnemyMoveNum]
-	and 3
-	inc a
-	lb bc, 6, 5
-	call Functione04e7
-	ret
-; e043b
+INCLUDE "engine/card_flip.asm"
+INCLUDE "engine/dummy_game.asm"
+INCLUDE "engine/billspc.asm"
 
-Unknown_e043b: ; e043b
-	db $18, $19, $19, $19, $1a
-	db $1b, $35, $7f, $7f, $1c
-	db $0b, $28, $28, $28, $0c
-	db $0b, $28, $28, $28, $0c
-	db $0b, $28, $28, $28, $0c
-	db $1d, $1e, $1e, $1e, $1f
-; e0459
-
-Unknown_e0459: ; e0459
-	db $f7,$4e, $f7,$57, $f7,$69, $f7,$60
-	db $f8,$4e, $f8,$57, $f8,$69, $f8,$60
-	db $f9,$4e, $f9,$57, $f9,$69, $f9,$60
-	db $fa,$4e, $fa,$57, $fa,$69, $fa,$60
-	db $fb,$4e, $fb,$57, $fb,$69, $fb,$60
-	db $fc,$4e, $fc,$57, $fc,$69, $fc,$60
-; e0489
-
-Functione0489: ; e0489
-	push hl
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	pop hl
-	call PrintTextBoxText
-	call Functione049c
-	ret
-; e049c
-
-Functione049c: ; e049c
-	hlcoord 9, 15
-	ld b, $1
-	ld c, $9
-	call TextBox
-	hlcoord 10, 16
-	ld de, String_e04bc
-	call PlaceString
-	hlcoord 15, 16
-	ld de, Coins
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
-	call PrintNum
-	ret
-; e04bc
-
-String_e04bc:
-	db "COIN@"
-; e04c1
-
-Functione04c1: ; e04c1 (38:44c1)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 0
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	ld a, $29
-	call ByteFill
-	hlcoord 9, 0
-	ld de, Unknown_e110c
-	lb bc, 12, 11
-	call Functione04f7
-	hlcoord 0, 12
-	lb bc, 4, 18
-	call TextBox
-	ret
-; e04e5 (38:44e5)
-
-Functione04e5: ; e04e5
-	ld a, $29
-
-Functione04e7: ; e04e7 (38:44e7)
-	push bc
-	push hl
-.asm_e04e9
-	ld [hli], a
-	dec c
-	jr nz, .asm_e04e9
-	pop hl
-	ld bc, $14
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, Functione04e7
-	ret
-
-Functione04f7: ; e04f7 (38:44f7)
-	push bc
-	push hl
-.asm_e04f9
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .asm_e04f9
-	pop hl
-	ld bc, $14
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, Functione04f7
-	ret
-; e0509 (38:4509)
-
-Functione0509: ; e0509
-	ld de, Sprites
-	ld a, [hli]
-.asm_e050d
-	push af
-	ld a, [hli]
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_e050d
-	ret
-; e0521
-
-Functione0521: ; e0521 (38:4521)
-	ld de, VTiles1 tile $76
-	ld hl, $8f62
-	ld bc, $9e
-	call CopyBytes
-	ld hl, $8ffe
-	xor a
-	ld [hli], a
-	ld [hl], a
-	ret
-; e0534 (38:4534)
-
-Functione0534: ; e0534
-	xor a
-	ld [hBGMapMode], a
-	ld a, [CurEnemyMoveNum]
-	ld e, a
-	ld d, 0
-	and 3
-	ld c, a
-	ld b, 0
-	ld a, e
-	and $1c
-	srl a
-	add Jumptable_e0553 % $100
-	ld l, a
-	ld a, 0
-	adc Jumptable_e0553 / $100
-	ld h, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e0553
-
-Jumptable_e0553: ; e0553
-	dw Functione055f
-	dw Functione0583
-	dw Functione05a7
-	dw Functione05cb
-	dw Functione05ef
-	dw Functione0613
-; e055f
-
-Functione055f: ; e055f
-	ld hl, wc6e6 + 8
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0575
-	hlcoord 13, 3
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $37
-	ret
-
-.asm_e0575
-	hlcoord 13, 3
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3d
-	ret
-; e0583
-
-Functione0583: ; e0583
-	ld hl, wc6e6
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0599
-	hlcoord 13, 4
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3b
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-
-.asm_e0599
-	hlcoord 13, 4
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3d
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-; e05a7
-
-Functione05a7: ; e05a7
-	ld hl, wc6e6 + 8
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e05bd
-	hlcoord 13, 6
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $38
-	ret
-
-.asm_e05bd
-	hlcoord 13, 6
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3d
-	ret
-; e05cb
-
-Functione05cb: ; e05cb
-	ld hl, wc6e6
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e05e1
-	hlcoord 13, 7
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3c
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-
-.asm_e05e1
-	hlcoord 13, 7
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3d
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-; e05ef
-
-Functione05ef: ; e05ef
-	ld hl, wc6e6 + 8
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0605
-	hlcoord 13, 9
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $39
-	ret
-
-.asm_e0605
-	hlcoord 13, 9
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3d
-	ret
-; e0613
-
-Functione0613: ; e0613
-	ld hl, wc6e6
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0629
-	hlcoord 13, 10
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3c
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-
-.asm_e0629
-	hlcoord 13, 10
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3d
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-; e0637
-
-Functione0637: ; e0637
-	call Functione0398
-	add hl, hl
-	ld de, Jumptable_e0643
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e0643
-
-Jumptable_e0643: ; e0643
-	dw Functione06a3
-	dw Functione06a3
-	dw Functione06a6
-	dw Functione06a6
-	dw Functione06b0
-	dw Functione06b0
-	dw Functione06a3
-	dw Functione06a3
-	dw Functione06ec
-	dw Functione06f6
-	dw Functione0702
-	dw Functione070e
-	dw Functione06c2
-	dw Functione0722
-	dw Functione0770
-	dw Functione0774
-	dw Functione0778
-	dw Functione077c
-	dw Functione06c2
-	dw Functione072c
-	dw Functione0780
-	dw Functione0784
-	dw Functione0788
-	dw Functione078c
-	dw Functione06cc
-	dw Functione0738
-	dw Functione0790
-	dw Functione0794
-	dw Functione0798
-	dw Functione079c
-	dw Functione06cc
-	dw Functione0744
-	dw Functione07a0
-	dw Functione07a4
-	dw Functione07a8
-	dw Functione07ac
-	dw Functione06d8
-	dw Functione0750
-	dw Functione07b0
-	dw Functione07b4
-	dw Functione07b8
-	dw Functione07bc
-	dw Functione06d8
-	dw Functione075c
-	dw Functione07c0
-	dw Functione07c4
-	dw Functione07c8
-	dw Functione07cc
-; e06a3
-
-Functione06a3: ; e06a3
-	jp Functione07db
-; e06a6
-
-Functione06a6: ; e06a6
-	ld a, [CurEnemyMoveNum]
-	and $2
-	jp nz, Functione07db
-	jr Functione06ba
-
-Functione06b0: ; e06b0
-	ld a, [CurEnemyMoveNum]
-	and $2
-	jr nz, Functione06ba
-	jp Functione07db
-
-Functione06ba: ; e06ba
-	ld c, $6
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e06c2
-
-Functione06c2: ; e06c2
-	ld a, [CurEnemyMoveNum]
-	and $18
-	jr z, Functione06e4
-	jp Functione07db
-
-Functione06cc: ; e06cc
-	ld a, [CurEnemyMoveNum]
-	and $18
-	cp $8
-	jr z, Functione06e4
-	jp Functione07db
-
-Functione06d8: ; e06d8
-	ld a, [CurEnemyMoveNum]
-	and $18
-	cp $10
-	jr z, Functione06e4
-	jp Functione07db
-
-Functione06e4: ; e06e4
-	ld c, $9
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e06ec
-
-Functione06ec: ; e06ec
-	ld a, [CurEnemyMoveNum]
-	and $3
-	jr z, Functione071a
-	jp Functione07db
-
-Functione06f6: ; e06f6
-	ld a, [CurEnemyMoveNum]
-	and $3
-	cp $1
-	jr z, Functione071a
-	jp Functione07db
-
-Functione0702: ; e0702
-	ld a, [CurEnemyMoveNum]
-	and $3
-	cp $2
-	jr z, Functione071a
-	jp Functione07db
-
-Functione070e: ; e070e
-	ld a, [CurEnemyMoveNum]
-	and $3
-	cp $3
-	jr z, Functione071a
-	jp Functione07db
-
-Functione071a: ; e071a
-	ld c, $c
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e0722
-
-Functione0722: ; e0722
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	jr z, Functione0768
-	jp Functione07db
-
-Functione072c: ; e072c
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $4
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0738: ; e0738
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $8
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0744: ; e0744
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $c
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0750: ; e0750
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $10
-	jr z, Functione0768
-	jp Functione07db
-
-Functione075c: ; e075c
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $14
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0768: ; e0768
-	ld c, $12
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e0770
-
-
-Functione0770: ; e0770
-	ld e, $0
-	jr Functione07ce
-
-Functione0774: ; e0774
-	ld e, $1
-	jr Functione07ce
-
-Functione0778: ; e0778
-	ld e, $2
-	jr Functione07ce
-
-Functione077c: ; e077c
-	ld e, $3
-	jr Functione07ce
-
-Functione0780: ; e0780
-	ld e, $4
-	jr Functione07ce
-
-Functione0784: ; e0784
-	ld e, $5
-	jr Functione07ce
-
-Functione0788: ; e0788
-	ld e, $6
-	jr Functione07ce
-
-Functione078c: ; e078c
-	ld e, $7
-	jr Functione07ce
-
-Functione0790: ; e0790
-	ld e, $8
-	jr Functione07ce
-
-Functione0794: ; e0794
-	ld e, $9
-	jr Functione07ce
-
-Functione0798: ; e0798
-	ld e, $a
-	jr Functione07ce
-
-Functione079c: ; e079c
-	ld e, $b
-	jr Functione07ce
-
-Functione07a0: ; e07a0
-	ld e, $c
-	jr Functione07ce
-
-Functione07a4: ; e07a4
-	ld e, $d
-	jr Functione07ce
-
-Functione07a8: ; e07a8
-	ld e, $e
-	jr Functione07ce
-
-Functione07ac: ; e07ac
-	ld e, $f
-	jr Functione07ce
-
-Functione07b0: ; e07b0
-	ld e, $10
-	jr Functione07ce
-
-Functione07b4: ; e07b4
-	ld e, $11
-	jr Functione07ce
-
-Functione07b8: ; e07b8
-	ld e, $12
-	jr Functione07ce
-
-Functione07bc: ; e07bc
-	ld e, $13
-	jr Functione07ce
-
-Functione07c0: ; e07c0
-	ld e, $14
-	jr Functione07ce
-
-Functione07c4: ; e07c4
-	ld e, $15
-	jr Functione07ce
-
-Functione07c8: ; e07c8
-	ld e, $16
-	jr Functione07ce
-
-Functione07cc: ; e07cc
-	ld e, $17
-
-Functione07ce: ; e07ce
-	ld a, [CurEnemyMoveNum]
-	cp e
-	jr nz, Functione07db
-	ld c, $48
-	ld de, SFX_2ND_PLACE
-	jr Functione07eb
-
-Functione07db: ; e07db
-	ld de, SFX_WRONG
-	call PlaySFX
-	ld hl, UnknownText_0xe0816
-	call Functione0489
-	call WaitSFX
-	ret
-
-Functione07eb: ; e07eb
-	push bc
-	push de
-	ld hl, UnknownText_0xe0811
-	call Functione0489
-	pop de
-	call PlaySFX
-	call WaitSFX
-	pop bc
-.asm_e07fb
-	push bc
-	call Functione0833
-	jr c, .asm_e0804
-	call Functione081b
-
-.asm_e0804
-	call Functione049c
-	ld c, 2
-	call DelayFrames
-	pop bc
-	dec c
-	jr nz, .asm_e07fb
-	ret
-; e0811
-
-UnknownText_0xe0811: ; 0xe0811
-	; Yeah!
-	text_jump UnknownText_0x1c5813
-	db "@"
-; 0xe0816
-
-UnknownText_0xe0816: ; 0xe0816
-	; Darn…
-	text_jump UnknownText_0x1c581a
-	db "@"
-; 0xe081b
-
-Functione081b: ; e081b
-	ld a, [Coins]
-	ld h, a
-	ld a, [Coins + 1]
-	ld l, a
-	inc hl
-	ld a, h
-	ld [Coins], a
-	ld a, l
-	ld [Coins + 1], a
-	ld de, SFX_PAY_DAY
-	call PlaySFX
-	ret
-; e0833
-
-Functione0833: ; e0833
-	ld a, [Coins]
-	cp 9999 / $100
-	jr c, .asm_e0847
-	jr z, .asm_e083e
-	jr .asm_e0845
-
-.asm_e083e
-	ld a, [Coins + 1]
-	cp 9999 % $100
-	jr c, .asm_e0847
-
-.asm_e0845
-	scf
-	ret
-
-.asm_e0847
-	and a
-	ret
-; e0849
-
-Functione0849: ; e0849
-	call Functione03ac
-	ld hl, Unknown_e0853
-	call Functione0509
-	ret
-; e0853
-
-Unknown_e0853: ; e0853
-	db 18
-	db $00, $00, $04, $00
-	db $00, $08, $06, $00
-	db $00, $10, $06, $00
-	db $00, $18, $06, $00
-	db $00, $20, $04, $20
-	db $08, $00, $05, $00
-	db $08, $20, $05, $20
-	db $10, $00, $05, $00
-	db $10, $20, $05, $20
-	db $18, $00, $05, $00
-	db $18, $20, $05, $20
-	db $20, $00, $05, $00
-	db $20, $20, $05, $20
-	db $28, $00, $04, $40
-	db $28, $08, $06, $40
-	db $28, $10, $06, $40
-	db $28, $18, $06, $40
-	db $28, $20, $04, $60
-; e089c
-
-Functione089c: ; e089c
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_LEFT
-	jp nz, Functione08b8
-	ld a, [hl]
-	and D_RIGHT
-	jp nz, Functione08ef
-	ld a, [hl]
-	and D_UP
-	jp nz, Functione090a
-	ld a, [hl]
-	and D_DOWN
-	jp nz, Functione093d
-	ret
-; e08b8
-
-Functione08b8: ; e08b8
-	ld hl, wcf65
-	ld a, [wcf64]
-	and a
-	jr z, .asm_e08d5
-	cp $1
-	jr z, .asm_e08cc
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	jp Functione0959
-
-.asm_e08cc
-	ld a, [hl]
-	cp $3
-	jr c, .asm_e08e2
-	dec [hl]
-	jp Functione0959
-
-.asm_e08d5
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $3
-	jr c, .asm_e08e2
-rept 2
-	dec [hl]
-endr
-	jp Functione0959
-
-.asm_e08e2
-	ld a, $2
-	ld [wcf64], a
-	ld a, $1
-	ld [wcf65], a
-	jp Functione0959
-; e08ef
-
-Functione08ef: ; e08ef
-	ld hl, wcf65
-	ld a, [wcf64]
-	and a
-	jr z, .asm_e08ff
-	ld a, [hl]
-	cp $5
-	ret nc
-	inc [hl]
-	jr Functione0959
-
-.asm_e08ff
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $4
-	ret nc
-rept 2
-	inc [hl]
-endr
-	jr Functione0959
-
-Functione090a: ; e090a
-	ld hl, wcf64
-	ld a, [wcf65]
-	and a
-	jr z, .asm_e0925
-	cp $1
-	jr z, .asm_e091d
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	jr Functione0959
-
-.asm_e091d
-	ld a, [hl]
-	cp $3
-	jr c, .asm_e0931
-	dec [hl]
-	jr Functione0959
-
-.asm_e0925
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $3
-	jr c, .asm_e0931
-rept 2
-	dec [hl]
-endr
-	jr Functione0959
-
-.asm_e0931
-	ld a, $1
-	ld [wcf64], a
-	ld a, $2
-	ld [wcf65], a
-	jr Functione0959
-
-Functione093d: ; e093d
-	ld hl, wcf64
-	ld a, [wcf65]
-	and a
-	jr z, .asm_e0950
-	ld hl, wcf64
-	ld a, [hl]
-	cp $7
-	ret nc
-	inc [hl]
-	jr Functione0959
-
-.asm_e0950
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $6
-	ret nc
-rept 2
-	inc [hl]
-endr
-
-Functione0959: ; e0959
-	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
-	call PlaySFX
-	ret
-; e0960
-
-Functione0960: ; e0960
-	call ClearSprites
-	ld a, [hCGB]
-	and a
-	jr nz, .asm_e096d
-	ld a, [hVBlankCounter]
-	and $4
-	ret nz
-
-.asm_e096d
-	call Functione0398
-rept 2
-	add hl, hl
-endr
-	ld de, Unknown_e0981
-	add hl, de
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call Functione0509
-	ret
-; e0981
-
-Unknown_e0981: ; e0981
-	dbbw $58, $10, Unknown_e0c26
-	dbbw $60, $10, Unknown_e0c26
-	dbbw $68, $10, Unknown_e0b8d
-	dbbw $68, $10, Unknown_e0b8d
-	dbbw $88, $10, Unknown_e0b8d
-	dbbw $88, $10, Unknown_e0b8d
-
-	dbbw $58, $18, Unknown_e0c26
-	dbbw $60, $18, Unknown_e0c26
-	dbbw $68, $18, Unknown_e0a5a
-	dbbw $78, $18, Unknown_e0a5a
-	dbbw $88, $18, Unknown_e0a5a
-	dbbw $98, $18, Unknown_e0a5a
-
-	dbbw $58, $28, Unknown_e0b14
-	dbbw $60, $28, Unknown_e0ac3
-	dbbw $68, $28, Unknown_e0a41
-	dbbw $78, $28, Unknown_e0a41
-	dbbw $88, $28, Unknown_e0a41
-	dbbw $98, $28, Unknown_e0a41
-	dbbw $58, $28, Unknown_e0b14
-
-	dbbw $60, $34, Unknown_e0ac3
-	dbbw $68, $34, Unknown_e0a41
-	dbbw $78, $34, Unknown_e0a41
-	dbbw $88, $34, Unknown_e0a41
-	dbbw $98, $34, Unknown_e0a41
-
-	dbbw $58, $40, Unknown_e0b14
-	dbbw $60, $40, Unknown_e0ac3
-	dbbw $68, $40, Unknown_e0a41
-	dbbw $78, $40, Unknown_e0a41
-	dbbw $88, $40, Unknown_e0a41
-	dbbw $98, $40, Unknown_e0a41
-	dbbw $58, $40, Unknown_e0b14
-
-	dbbw $60, $4c, Unknown_e0ac3
-	dbbw $68, $4c, Unknown_e0a41
-	dbbw $78, $4c, Unknown_e0a41
-	dbbw $88, $4c, Unknown_e0a41
-	dbbw $98, $4c, Unknown_e0a41
-
-	dbbw $58, $58, Unknown_e0b14
-	dbbw $60, $58, Unknown_e0ac3
-	dbbw $68, $58, Unknown_e0a41
-	dbbw $78, $58, Unknown_e0a41
-	dbbw $88, $58, Unknown_e0a41
-	dbbw $98, $58, Unknown_e0a41
-	dbbw $58, $58, Unknown_e0b14
-
-	dbbw $60, $64, Unknown_e0ac3
-	dbbw $68, $64, Unknown_e0a41
-	dbbw $78, $64, Unknown_e0a41
-	dbbw $88, $64, Unknown_e0a41
-	dbbw $98, $64, Unknown_e0a41
-; e0a41
-
-Unknown_e0a41: ; e0a41
-	db 6
-	db $00, $ff, $00, $80
-	db $00, $00, $02, $80
-	db $00, $08, $03, $80
-	db $05, $ff, $00, $c0
-	db $05, $00, $02, $c0
-	db $05, $08, $03, $80
-
-Unknown_e0a5a: ; e0a5a
-	db 26
-	db $00, $ff, $00, $80
-	db $00, $00, $02, $80
-	db $00, $08, $00, $a0
-	db $08, $ff, $01, $80
-	db $08, $08, $01, $a0
-	db $10, $ff, $01, $80
-	db $10, $08, $03, $80
-	db $18, $ff, $01, $80
-	db $18, $08, $03, $80
-	db $20, $ff, $01, $80
-	db $20, $08, $03, $80
-	db $28, $ff, $01, $80
-	db $28, $08, $03, $80
-	db $30, $ff, $01, $80
-	db $30, $08, $03, $80
-	db $38, $ff, $01, $80
-	db $38, $08, $03, $80
-	db $40, $ff, $01, $80
-	db $40, $08, $03, $80
-	db $48, $ff, $01, $80
-	db $48, $08, $03, $80
-	db $50, $ff, $01, $80
-	db $50, $08, $03, $80
-	db $51, $ff, $00, $c0
-	db $51, $00, $02, $c0
-	db $51, $08, $03, $80
-
-Unknown_e0ac3: ; e0ac3
-	db 20
-	db $00, $ff, $00, $80
-	db $00, $00, $02, $80
-	db $00, $08, $02, $80
-	db $00, $10, $03, $80
-	db $00, $18, $02, $80
-	db $00, $20, $03, $80
-	db $00, $28, $02, $80
-	db $00, $30, $03, $80
-	db $00, $38, $02, $80
-	db $00, $40, $03, $80
-	db $05, $ff, $00, $c0
-	db $05, $00, $02, $c0
-	db $05, $08, $02, $c0
-	db $05, $10, $03, $80
-	db $05, $18, $02, $c0
-	db $05, $20, $03, $80
-	db $05, $28, $02, $c0
-	db $05, $30, $03, $80
-	db $05, $38, $02, $c0
-	db $05, $40, $03, $80
-
-Unknown_e0b14: ; e0b14
-	db 30
-	db $00, $00, $00, $80
-	db $00, $08, $02, $80
-	db $00, $10, $02, $80
-	db $00, $18, $03, $80
-	db $00, $20, $02, $80
-	db $00, $28, $03, $80
-	db $00, $30, $02, $80
-	db $00, $38, $03, $80
-	db $00, $40, $02, $80
-	db $00, $48, $03, $80
-	db $08, $00, $01, $80
-	db $08, $18, $03, $80
-	db $08, $28, $03, $80
-	db $08, $38, $03, $80
-	db $08, $48, $03, $80
-	db $10, $00, $01, $80
-	db $10, $18, $03, $80
-	db $10, $28, $03, $80
-	db $10, $38, $03, $80
-	db $10, $48, $03, $80
-	db $11, $00, $00, $c0
-	db $11, $08, $02, $c0
-	db $11, $10, $02, $c0
-	db $11, $18, $03, $80
-	db $11, $20, $03, $80
-	db $11, $28, $03, $80
-	db $11, $30, $03, $80
-	db $11, $38, $03, $80
-	db $11, $40, $03, $80
-	db $11, $48, $03, $80
-
-Unknown_e0b8d: ; e0b8d
-	db 38
-	db $00, $ff, $00, $80
-	db $00, $18, $00, $a0
-	db $08, $ff, $01, $80
-	db $08, $18, $01, $a0
-	db $10, $ff, $01, $80
-	db $10, $18, $01, $a0
-	db $18, $ff, $01, $80
-	db $18, $08, $03, $80
-	db $18, $18, $03, $80
-	db $20, $ff, $01, $80
-	db $20, $08, $03, $80
-	db $20, $18, $03, $80
-	db $28, $ff, $01, $80
-	db $28, $08, $03, $80
-	db $28, $18, $03, $80
-	db $30, $ff, $01, $80
-	db $30, $08, $03, $80
-	db $30, $18, $03, $80
-	db $38, $ff, $01, $80
-	db $38, $08, $03, $80
-	db $38, $18, $03, $80
-	db $40, $ff, $01, $80
-	db $40, $08, $03, $80
-	db $40, $18, $03, $80
-	db $48, $ff, $01, $80
-	db $48, $08, $03, $80
-	db $48, $18, $03, $80
-	db $50, $ff, $01, $80
-	db $50, $08, $03, $80
-	db $50, $18, $03, $80
-	db $58, $ff, $01, $80
-	db $58, $08, $03, $80
-	db $58, $18, $03, $80
-	db $59, $ff, $00, $c0
-	db $59, $00, $02, $c0
-	db $59, $08, $03, $c0
-	db $59, $10, $02, $c0
-	db $59, $18, $03, $e0
-
-Unknown_e0c26: ; e0c26
-	db 4
-	db $00, $00, $00, $80
-	db $00, $08, $00, $a0
-	db $08, $00, $00, $c0
-	db $08, $08, $00, $e0
-; e0c37
-
-Functione0c37: ; e0c37 (38:4c37)
-	ld a, [hCGB]
-	and a
-	ret z
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	xor a
-	call ByteFill
-	hlcoord 12, 1, AttrMap
-	lb bc, 2, 2
-	ld a, $1
-	call Functione04e7
-	hlcoord 14, 1, AttrMap
-	lb bc, 2, 2
-	ld a, $2
-	call Functione04e7
-	hlcoord 16, 1, AttrMap
-	lb bc, 2, 2
-	ld a, $3
-	call Functione04e7
-	hlcoord 18, 1, AttrMap
-	lb bc, 2, 2
-	ld a, $4
-	call Functione04e7
-	hlcoord 9, 0, AttrMap
-	lb bc, 12, 1
-	ld a, $1
-	call Functione04e7
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, Palette_e0c93
-	ld de, Unkn1Pals
-	ld bc, $48
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	ret
-; e0c93 (38:4c93)
-
-Palette_e0c93: ; e0c93
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 29, 25, 00
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 13, 30
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 08, 17, 30
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 08, 31, 08
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 00, 00
-	RGB 31, 00, 00
-; e0cdb
-
-LZ_e0cdb: ; e0cdb
-INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
-
-GFX_e0cf6: ; e0cf6
-INCBIN "gfx/unknown/0e0cf6.2bpp"
-
-GFX_e0d06: ; e0d06
-INCBIN "gfx/unknown/0e0d06.2bpp"
-
-LZ_e0d16: ; e0d16
-INCBIN "gfx/unknown/0e0d16.2bpp.lz"
-
-LZ_e0ea8: ; e0ea8
-INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
-
-Unknown_e110c: ; e110c
-	db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27
-	db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b
-	db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d
-	db $ef, $25, $04, $00, $01, $00, $01, $00, $01, $00, $01
-	db $ef, $05, $14, $10, $11, $10, $11, $10, $11, $10, $11
-	db $ef, $16, $24, $20, $21, $20, $21, $20, $21, $20, $21
-	db $ef, $25, $04, $00, $02, $00, $02, $00, $02, $00, $02
-	db $ef, $05, $14, $10, $12, $10, $12, $10, $12, $10, $12
-	db $ef, $16, $24, $20, $22, $20, $22, $20, $22, $20, $22
-	db $ef, $25, $04, $00, $03, $00, $03, $00, $03, $00, $03
-	db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13
-	db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23
-; e1190
-
-Functione1190: ; e1190
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	xor a
-	ld [hBGMapMode], a
-	call DisableLCD
-	ld hl, wc608
-	ld bc, $1e0
-	xor a
-	call ByteFill
-	ld hl, GFX_e17c5
-	ld de, VTiles1 tile $60
-	ld bc, $40
-	call CopyBytes
-	ld hl, LZ_e1805
-	ld de, VTiles1 tile $6d
-	call Decompress
-	call Functione17a3
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $ee
-	call ByteFill
-	hlcoord 4, 3
-	lb bc, 12, 12
-	ld a, $ef
-	call Functione13ee
-	call Functione124e
-	call Functione13fe
-	call Functione127d
-	xor a
-	ld [hSCY], a
-	ld [hSCX], a
-	ld [rWY], a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ld a, $93
-	ld [rLCDC], a
-	call WaitBGMap
-	ld b, $18
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $24
-	call Functioncf8
-	xor a
-	ld [wd0ec], a
-	call DelayFrame
-.asm_e1217
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e123d
-	call Functione12ca
-	ld a, [wcf64]
-	and a
-	jr nz, .asm_e1230
-	ld a, [hVBlankCounter]
-	and $10
-	jr z, .asm_e1235
-
-.asm_e1230
-	call Functione14d9
-	jr .asm_e1238
-
-.asm_e1235
-	call ClearSprites
-
-.asm_e1238
-	call DelayFrame
-	jr .asm_e1217
-
-.asm_e123d
-	pop af
-	ld [hInMenu], a
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld a, $e3
-	ld [rLCDC], a
-	ret
-; e124e
-
-Functione124e: ; e124e
-	ld c, $1
-	ld b, $10
-.asm_e1252
-	call Random
-	and $f
-	ld hl, Unknown_e126d
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld e, [hl]
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e1252
-	ld [hl], c
-	inc c
-	dec b
-	jr nz, .asm_e1252
-	ret
-; e126d
-
-Unknown_e126d: ; e126d
-	db $00, $01, $02, $03
-	db $04, $05, $06, $0b
-	db $0c, $11, $12, $17
-	db $18, $1d, $1e, $23
-; e127d
-
-Functione127d: ; e127d
-	call Functione128d
-	hlcoord 5, 16
-	ld a, $f6
-	ld c, $a
-.asm_e1287
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_e1287
-	ret
-; e128d
-
-Functione128d: ; e128d
-	hlcoord 4, 15
-	ld a, $f0
-	ld [hli], a
-	ld bc, $a
-	ld a, $f1
-	call ByteFill
-	hlcoord 15, 15
-	ld a, $f2
-	ld [hli], a
-	hlcoord 4, 16
-	ld a, $f3
-	ld [hli], a
-	ld bc, $a
-	ld a, $ef
-	call ByteFill
-	hlcoord 15, 16
-	ld a, $f3
-	ld [hli], a
-	hlcoord 4, 17
-	ld a, $f4
-	ld [hli], a
-	ld bc, $a
-	ld a, $f1
-	call ByteFill
-	hlcoord 15, 17
-	ld a, $f5
-	ld [hl], a
-	ret
-; e12ca
-
-Functione12ca: ; e12ca
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_e12d9
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e12d9
-
-Jumptable_e12d9: ; e12d9
-	dw Functione12db
-; e12db
-
-Functione12db: ; e12db
-	ld a, [hJoyPressed]
-	and START
-	jp nz, Functione13de
-	ld a, [hJoyPressed]
-	and A_BUTTON
-	jp nz, Functione1376
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .asm_e1301
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .asm_e130d
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .asm_e1325
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .asm_e1345
-	ret
-
-.asm_e1301
-	ld hl, wcf65
-	ld a, [hl]
-	cp $6
-	ret c
-	sub $6
-	ld [hl], a
-	jr .asm_e1364
-
-.asm_e130d
-	ld hl, wcf65
-	ld a, [hl]
-	cp $19
-	ret z
-	cp $1a
-	ret z
-	cp $1b
-	ret z
-	cp $1c
-	ret z
-	cp $1e
-	ret nc
-	add $6
-	ld [hl], a
-	jr .asm_e1364
-
-.asm_e1325
-	ld hl, wcf65
-	ld a, [hl]
-	and a
-	ret z
-	cp $6
-	ret z
-	cp $c
-	ret z
-	cp $12
-	ret z
-	cp $18
-	ret z
-	cp $1e
-	ret z
-	cp $23
-	jr z, .asm_e1341
-	dec [hl]
-	jr .asm_e1364
-
-.asm_e1341
-	ld [hl], $1e
-	jr .asm_e1364
-
-.asm_e1345
-	ld hl, wcf65
-	ld a, [hl]
-	cp $5
-	ret z
-	cp $b
-	ret z
-	cp $11
-	ret z
-	cp $17
-	ret z
-	cp $1d
-	ret z
-	cp $23
-	ret z
-	cp $1e
-	jr z, .asm_e1362
-	inc [hl]
-	jr .asm_e1364
-
-.asm_e1362
-	ld [hl], $23
-
-.asm_e1364
-	ld a, [wcf64]
-	and a
-	jr nz, .asm_e136f
-	ld de, SFX_POUND
-	jr .asm_e1372
-
-.asm_e136f
-	ld de, SFX_MOVE_PUZZLE_PIECE
-
-.asm_e1372
-	call PlaySFX
-	ret
-; e1376
-
-Functione1376: ; e1376
-	ld a, [wcf64]
-	and a
-	jr nz, .asm_e139f
-	call Functione1475
-	and a
-	jr z, Functione13e4
-	ld de, SFX_MEGA_KICK
-	call PlaySFX
-	ld [hl], $0
-	ld [wcf66], a
-	call Functione14d9
-	call Functione1441
-	call WaitBGMap
-	call WaitSFX
-	ld a, $1
-	ld [wcf64], a
-	ret
-
-.asm_e139f
-	call Functione1475
-	and a
-	jr nz, Functione13e4
-	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
-	call PlaySFX
-	ld a, [wcf66]
-	ld [hl], a
-	call Functione141f
-	call WaitBGMap
-	xor a
-	ld [wcf66], a
-	call Functione14d9
-	xor a
-	ld [wcf64], a
-	call WaitSFX
-	call Functione14a0
-	ret nc
-	call Functione128d
-	call ClearSprites
-	ld de, SFX_1ST_PLACE
-	call PlaySFX
-	call WaitSFX
-	call SimpleWaitPressAorB
-	ld a, $1
-	ld [wd0ec], a
-
-Functione13de: ; e13de
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Functione13e4: ; e13e4
-	ld de, SFX_WRONG
-	call PlaySFX
-	call WaitSFX
-	ret
-; e13ee
-
-Functione13ee: ; e13ee
-	ld de, SCREEN_WIDTH
-.asm_e13f1
-	push bc
-	push hl
-.asm_e13f3
-	ld [hli], a
-	dec c
-	jr nz, .asm_e13f3
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_e13f1
-	ret
-; e13fe
-
-Functione13fe: ; e13fe
-	xor a
-	ld [wcf65], a
-	ld c, $24
-.asm_e1404
-	push bc
-	call Functione1475
-	ld [wcf66], a
-	and a
-	jr z, .asm_e1413
-	call Functione141f
-	jr .asm_e1416
-
-.asm_e1413
-	call Functione1441
-
-.asm_e1416
-	ld hl, wcf65
-	inc [hl]
-	pop bc
-	dec c
-	jr nz, .asm_e1404
-	ret
-; e141f
-
-Functione141f: ; e141f
-	ld a, $2
-	call Functione1463
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	push hl
-	call Functione1481
-	pop hl
-	ld de, SCREEN_WIDTH
-	ld b, $3
-.asm_e1431
-	ld c, $3
-	push hl
-.asm_e1434
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_e1434
-	add $9
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .asm_e1431
-	ret
-; e1441
-
-Functione1441: ; e1441
-	ld a, $2
-	call Functione1463
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	push hl
-	ld a, $4
-	call Functione1463
-	ld a, [hl]
-	pop hl
-	ld de, SCREEN_WIDTH
-	ld b, $3
-.asm_e1456
-	ld c, $3
-	push hl
-.asm_e1459
-	ld [hli], a
-	dec c
-	jr nz, .asm_e1459
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .asm_e1456
-	ret
-; e1463
-
-Functione1463: ; e1463
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_e1559
-	add hl, de
-	ld a, [wcf65]
-	ld e, a
-rept 4
-	add hl, de
-endr
-rept 2
-	add hl, de
-endr
-	ret
-; e1475
-
-Functione1475: ; e1475
-	ld hl, wc6d0
-	ld a, [wcf65]
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	ret
-; e1481
-
-Functione1481: ; e1481
-	ld a, [wcf66]
-	ld hl, Unknown_e148f
-	add l
-	ld l, a
-	ld a, $0
-	adc h
-	ld h, a
-	ld a, [hl]
-	ret
-; e148f
-
-Unknown_e148f: ; e148f
-	db $e0
-	db $00, $03, $06, $09
-	db $24, $27, $2a, $2d
-	db $48, $4b, $4e, $51
-	db $6c, $6f, $72, $75
-; e14a0
-
-Functione14a0: ; e14a0
-	ld hl, Unknown_e14b5
-	ld de, wc6d0
-	ld c, $24
-.asm_e14a8
-	ld a, [de]
-	cp [hl]
-	jr nz, .asm_e14b3
-	inc de
-	inc hl
-	dec c
-	jr nz, .asm_e14a8
-	scf
-	ret
-
-.asm_e14b3
-	and a
-	ret
-; e14b5
-
-Unknown_e14b5: ; e14b5
-	db $00, $00, $00, $00, $00, $00
-	db $00, $01, $02, $03, $04, $00
-	db $00, $05, $06, $07, $08, $00
-	db $00, $09, $0a, $0b, $0c, $00
-	db $00, $0d, $0e, $0f, $10, $00
-	db $00, $00, $00, $00, $00, $00
-; e14d9
-
-Functione14d9: ; e14d9
-	call Functione1481
-	ld [wd002], a
-	xor a
-	call Functione1463
-	ld a, [hli]
-	ld b, [hl]
-	ld c, a
-	ld a, [wd002]
-	cp $e0
-	jr z, .asm_e14f2
-	ld hl, Unknown_e150f
-	jr .asm_e14f5
-
-.asm_e14f2
-	ld hl, Unknown_e1534
-
-.asm_e14f5
-	ld de, Sprites
-.asm_e14f8
-	ld a, [hli]
-	cp $ff
-	ret z
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [wd002]
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	jr .asm_e14f8
-; e150f
-
-Unknown_e150f: ; e150f
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $f4, $04, $02, $00
-	db $fc, $f4, $0c, $00
-	db $fc, $fc, $0d, $00
-	db $fc, $04, $0e, $00
-	db $04, $f4, $18, $00
-	db $04, $fc, $19, $00
-	db $04, $04, $1a, $00
-	db $ff
-
-Unknown_e1534: ; e1534
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $f4, $04, $00, $20
-	db $fc, $f4, $02, $00
-	db $fc, $fc, $03, $00
-	db $fc, $04, $02, $20
-	db $04, $f4, $00, $40
-	db $04, $fc, $01, $40
-	db $04, $04, $00, $60
-	db $ff
-
-Unknown_e1559: ; e1559
-
-macro_e1559: macro
-	db \1, \2
-	dwcoord \3, \4
-	db \5, \6
-endm
-
-	macro_e1559 $1c, $1c,  1,  0, $ee, $00
-	macro_e1559 $34, $1c,  4,  0, $ee, $00
-	macro_e1559 $4c, $1c,  7,  0, $ee, $00
-	macro_e1559 $64, $1c, 10,  0, $ee, $00
-	macro_e1559 $7c, $1c, 13,  0, $ee, $00
-	macro_e1559 $94, $1c, 16,  0, $ee, $00
-	macro_e1559 $1c, $34,  1,  3, $ee, $00
-	macro_e1559 $34, $34,  4,  3, $ef, $00
-	macro_e1559 $4c, $34,  7,  3, $ef, $00
-	macro_e1559 $64, $34, 10,  3, $ef, $00
-	macro_e1559 $7c, $34, 13,  3, $ef, $00
-	macro_e1559 $94, $34, 16,  3, $ee, $00
-	macro_e1559 $1c, $4c,  1,  6, $ee, $00
-	macro_e1559 $34, $4c,  4,  6, $ef, $00
-	macro_e1559 $4c, $4c,  7,  6, $ef, $00
-	macro_e1559 $64, $4c, 10,  6, $ef, $00
-	macro_e1559 $7c, $4c, 13,  6, $ef, $00
-	macro_e1559 $94, $4c, 16,  6, $ee, $00
-	macro_e1559 $1c, $64,  1,  9, $ee, $00
-	macro_e1559 $34, $64,  4,  9, $ef, $00
-	macro_e1559 $4c, $64,  7,  9, $ef, $00
-	macro_e1559 $64, $64, 10,  9, $ef, $00
-	macro_e1559 $7c, $64, 13,  9, $ef, $00
-	macro_e1559 $94, $64, 16,  9, $ee, $00
-	macro_e1559 $1c, $7c,  1, 12, $ee, $00
-	macro_e1559 $34, $7c,  4, 12, $ef, $00
-	macro_e1559 $4c, $7c,  7, 12, $ef, $00
-	macro_e1559 $64, $7c, 10, 12, $ef, $00
-	macro_e1559 $7c, $7c, 13, 12, $ef, $00
-	macro_e1559 $94, $7c, 16, 12, $ee, $00
-	macro_e1559 $1c, $94,  1, 15, $ee, $00
-	macro_e1559 $34, $94,  4, 15, $ee, $00
-	macro_e1559 $4c, $94,  7, 15, $ee, $00
-	macro_e1559 $64, $94, 10, 15, $ee, $00
-	macro_e1559 $7c, $94, 13, 15, $ee, $00
-	macro_e1559 $94, $94, 16, 15, $ee, $00
-
-Functione1631: ; e1631
-	ld hl, VTiles2
-	ld de, VTiles0
-	ld b, $6
-.asm_e1639
-	push bc
-	push hl
-	push hl
-	call Functione1654
-	pop hl
-	ld bc, 8
-	add hl, bc
-	call Functione1654
-	pop hl
-	ld bc, $60
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_e1639
-	call Functione16c7
-	ret
-; e1654
-
-Functione1654: ; e1654
-	ld c, $6
-.asm_e1656
-	push bc
-	push hl
-	push hl
-	ld c, $4
-.asm_e165b
-	push bc
-	ld a, [hli]
-	and $f0
-	swap a
-	call Functione16aa
-	ld c, a
-	ld a, [hli]
-	and $f0
-	swap a
-	call Functione16aa
-	ld b, a
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	pop bc
-	dec c
-	jr nz, .asm_e165b
-	pop hl
-	ld c, $4
-.asm_e1681
-	push bc
-	ld a, [hli]
-	and $f
-	call Functione16aa
-	ld c, a
-	ld a, [hli]
-	and $f
-	call Functione16aa
-	ld b, a
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	pop bc
-	dec c
-	jr nz, .asm_e1681
-	pop hl
-	ld bc, $10
-	add hl, bc
-	pop bc
-	dec c
-	jr nz, .asm_e1656
-	ret
-; e16aa
-
-Functione16aa: ; e16aa
-	push hl
-	ld hl, Unknown_e16b7
-	add l
-	ld l, a
-	ld a, 0
-	adc h
-	ld h, a
-	ld a, [hl]
-	pop hl
-	ret
-; e16b7
-
-Unknown_e16b7: ; e16b7
-	db $00, $03, $0c, $0f
-	db $30, $33, $3c, $3f
-	db $c0, $c3, $cc, $cf
-	db $f0, $f3, $fc, $ff
-; e16c7
-
-Functione16c7: ; e16c7
-	ld hl, Unknown_e1703
-	ld a, $8
-.asm_e16cc
-	push af
-	push hl
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call Functione16e2
-	pop hl
-rept 4
-	inc hl
-endr
-	pop af
-	dec a
-	jr nz, .asm_e16cc
-	ret
-; e16e2
-
-Functione16e2: ; e16e2
-	lb bc, 4, 4
-.asm_e16e5
-	push bc
-.asm_e16e6
-	push de
-	push hl
-	ld b, $10
-.asm_e16ea
-	ld a, [de]
-	or [hl]
-	ld [hli], a
-	inc de
-	dec b
-	jr nz, .asm_e16ea
-	pop hl
-	ld de, $30
-	add hl, de
-	pop de
-	dec c
-	jr nz, .asm_e16e6
-	ld bc, $180
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_e16e5
-	ret
-; e1703
-
-Unknown_e1703: ; e1703
-	dw GFX_e1723 + $00, $8000
-	dw GFX_e1723 + $10, $8010
-	dw GFX_e1723 + $20, $8020
-	dw GFX_e1723 + $30, $80c0
-	dw GFX_e1723 + $40, $80e0
-	dw GFX_e1723 + $50, $8180
-	dw GFX_e1723 + $60, $8190
-	dw GFX_e1723 + $70, $81a0
-; e1723
-
-GFX_e1723: ; e1723
-INCBIN "gfx/unknown/0e1723.2bpp"
-
-Functione17a3: ; e17a3
-	ld a, [ScriptVar]
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_e17bd
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, VTiles2
-	call Decompress
-	call Functione1631
-	ret
-; e17bd
-
-Unknown_e17bd: ; e17bd
-	dw LZ_e1bab
-	dw LZ_e1c9b
-	dw LZ_e19fb
-	dw LZ_e18ab
-; e17c5
-
-GFX_e17c5: ; e17c5
-INCBIN "gfx/unknown/0e17c5.2bpp"
-
-LZ_e1805: ; e1805
-INCBIN "gfx/unknown/0e1805.2bpp.lz"
-
-LZ_e18ab: ; e18ab
-INCBIN "gfx/unknown/0e18ab.2bpp.lz"
-
-LZ_e19fb: ; e19fb
-INCBIN "gfx/unknown/0e19fb.2bpp.lz"
-
-LZ_e1bab: ; e1bab
-INCBIN "gfx/unknown/0e1bab.2bpp.lz"
-
-LZ_e1c9b: ; e1c9b
-INCBIN "gfx/unknown/0e1c9b.2bpp.lz"
-
-_DummyGame: ; e1e5b (38:5e5b)
-	call Functione1e67
-	call DelayFrame
-.asm_e1e61
-	call Functione1ebb
-	jr nc, .asm_e1e61
-	ret
-
-Functione1e67: ; e1e67 (38:5e67)
-	call DisableLCD
-	ld b, $8
-	call GetSGBLayout
-	callab Function8cf53
-	ld hl, LZ_e2221
-	ld de, VTiles2 tile $00
-	call Decompress
-	ld hl, Unknown_e00ed
-	ld de, VTiles0 tile $00
-	ld bc, $40
-	ld a, BANK(Unknown_e00ed)
-	call FarCopyBytes
-	ld a, $8
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], $0
-	hlcoord 0, 0
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	xor a
-	call ByteFill
-	xor a
-	ld [hSCY], a
-	ld [hSCX], a
-	ld [rWY], a
-	ld [wJumptableIndex], a
-	ld a, $1
-	ld [hBGMapMode], a
-	ld a, $e3
-	ld [rLCDC], a
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $e0
-	call Functioncf8
-	ret
-
-Functione1ebb: ; e1ebb (38:5ebb)
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e1ed0
-	call Functione1ed2
-	callab Function8cf69
-	call DelayFrame
-	and a
-	ret
-.asm_e1ed0
-	scf
-	ret
-
-Functione1ed2: ; e1ed2 (38:5ed2)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_e1ee1
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e1ee1 (38:5ee1)
-
-Jumptable_e1ee1: ; e1ee1
-	dw Functione1ef3
-	dw Functione1efb
-	dw Functione1f1c
-	dw Functione1f42
-	dw Functione1f61
-	dw Functione1f8b
-	dw Functione1fba
-	dw Functione1fcc
-	dw Functione2000
-; e1ef3
-
-Functione1ef3: ; e1ef3
-	call Functione2152
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e1efb
-
-Functione1efb: ; e1efb
-	call Functione00ed
-	jr nc, .asm_e1f06
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.asm_e1f06
-	call Functione209d
-	ld hl, wJumptableIndex
-	inc [hl]
-	xor a
-	ld [wc708], a
-	ld hl, wc703
-rept 4
-	ld [hli], a
-endr
-	ld [hl], a
-	ld [wc709], a
-
-Functione1f1c: ; e1f1c
-	ld hl, wc708
-	ld a, [hl]
-	cp $2d
-	jr nc, .asm_e1f30
-	inc [hl]
-	call Functione2183
-	xor a
-	ld [wc6fd], a
-	call Functione2128
-	ret
-
-.asm_e1f30
-	ld de, $341c
-	ld a, $c
-	call Function3b2a
-	ld a, $5
-	ld [wc702], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e1f42
-
-Functione1f42: ; e1f42
-	ld a, [wc702]
-	hlcoord 17, 0
-	add $f6
-	ld [hl], a
-	ld hl, wc702
-	ld a, [hl]
-	and a
-	jr nz, .asm_e1f58
-	ld a, $7
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e1f58
-	dec [hl]
-	xor a
-	ld [wcf64], a
-	ld hl, wJumptableIndex
-	inc [hl]
-
-Functione1f61: ; e1f61
-	ld a, [wcf64]
-	and a
-	ret z
-	dec a
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld [wc6fd], a
-	ld [wPlayerMinimized], a
-	ld a, e
-	ld [EnemyScreens], a
-	call Functione2183
-	call Functione2128
-	xor a
-	ld [wcf64], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e1f8b
-
-Functione1f8b: ; e1f8b
-	ld a, [wcf64]
-	and a
-	ret z
-	dec a
-	ld hl, EnemyScreens
-	cp [hl]
-	ret z
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld [wc6fd], a
-	ld [PlayerScreens], a
-	ld a, e
-	ld [wc701], a
-	call Functione2183
-	call Functione2128
-	ld a, $40
-	ld [wc708], a
-	ld hl, wJumptableIndex
-	inc [hl]
-
-Functione1fba: ; e1fba
-	ld hl, wc708
-	ld a, [hl]
-	and a
-	jr z, .asm_e1fc3
-	dec [hl]
-	ret
-
-.asm_e1fc3
-	call Functione2010
-	ld a, $3
-	ld [wJumptableIndex], a
-	ret
-; e1fcc
-
-Functione1fcc: ; e1fcc
-	ld a, [hJoypadPressed]
-	and A_BUTTON
-	ret z
-	xor a
-	ld [wc708], a
-.asm_e1fd5
-	ld hl, wc708
-	ld a, [hl]
-	cp $2d
-	jr nc, .asm_e1ff9
-	inc [hl]
-	push af
-	call Functione2183
-	pop af
-	push hl
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	pop hl
-	cp $ff
-	jr z, .asm_e1fd5
-	ld [wc6fd], a
-	call Functione2128
-	jr .asm_e1fd5
-
-.asm_e1ff9
-	call WaitPressAorB_BlinkCursor
-	ld hl, wJumptableIndex
-	inc [hl]
-
-Functione2000: ; e2000
-	call Functione00ed
-	jr nc, .asm_e200b
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.asm_e200b
-	xor a
-	ld [wJumptableIndex], a
-	ret
-; e2010
-
-Functione2010: ; e2010
-	ld hl, wPlayerMinimized
-	ld a, [hli]
-	cp [hl]
-	jr nz, .asm_e2066
-	ld a, [EnemyScreens]
-	call Functione2183
-	call Functione2142
-	ld a, [wc701]
-	call Functione2183
-	call Functione2142
-	ld a, [EnemyScreens]
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld [hl], $ff
-	ld a, [wc701]
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld [hl], $ff
-	ld hl, wc703
-.asm_e2044
-	ld a, [hli]
-	and a
-	jr nz, .asm_e2044
-	dec hl
-	ld a, [wPlayerMinimized]
-	ld [hl], a
-	ld [wc6fd], a
-	ld hl, wc709
-	ld e, [hl]
-rept 2
-	inc [hl]
-endr
-	ld d, $0
-	hlcoord 5, 0
-	add hl, de
-	call Functione2128
-	ld hl, UnknownText_0xe2083
-	call PrintText
-	ret
-
-.asm_e2066
-	xor a
-	ld [wc6fd], a
-	ld a, [EnemyScreens]
-	call Functione2183
-	call Functione2128
-	ld a, [wc701]
-	call Functione2183
-	call Functione2128
-	ld hl, UnknownText_0xe2098
-	call PrintText
-	ret
-; e2083
-
-UnknownText_0xe2083: ; 0xe2083
-	start_asm
-; 0xe2084
-
-Functione2084: ; e2084
-	push bc
-	hlcoord 2, 13
-	call Functione2128
-	ld hl, UnknownText_0xe2093
-	pop bc
-rept 3
-	inc bc
-endr
-	ret
-; e2093
-
-UnknownText_0xe2093: ; 0xe2093
-	; , yeah!
-	text_jump UnknownText_0x1c1a5b
-	db "@"
-; 0xe2098
-
-UnknownText_0xe2098: ; 0xe2098
-	; Darn…
-	text_jump UnknownText_0x1c1a65
-	db "@"
-; 0xe209d
-
-Functione209d: ; e209d
-	ld hl, wc6d0
-	ld bc, $2d
-	xor a
-	call ByteFill
-	call Functione2101
-	ld c, $2
-	ld b, [hl]
-	call Functione20e5
-	ld c, $8
-	ld b, [hl]
-	call Functione20e5
-	ld c, $4
-	ld b, [hl]
-	call Functione20e5
-	ld c, $7
-	ld b, [hl]
-	call Functione20e5
-	ld c, $3
-	ld b, [hl]
-	call Functione20e5
-	ld c, $6
-	ld b, [hl]
-	call Functione20e5
-	ld c, $1
-	ld b, [hl]
-	call Functione20e5
-	ld c, $5
-	ld hl, wc6d0
-	ld b, $2d
-.asm_e20db
-	ld a, [hl]
-	and a
-	jr nz, .asm_e20e0
-	ld [hl], c
-
-.asm_e20e0
-	inc hl
-	dec b
-	jr nz, .asm_e20db
-	ret
-; e20e5
-
-Functione20e5: ; e20e5
-	push hl
-	ld de, wc6d0
-.asm_e20e9
-	call Random
-	and $3f
-	cp $2d
-	jr nc, .asm_e20e9
-	ld l, a
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e20e9
-	ld [hl], c
-	dec b
-	jr nz, .asm_e20e9
-	pop hl
-	inc hl
-	ret
-; e2101
-
-Functione2101: ; e2101
-	ld a, [MenuSelection2]
-	dec a
-	ld l, a
-	ld h, 0
-rept 3
-	add hl, hl
-endr
-	ld de, Unknown_e2110
-	add hl, de
-	ret
-; e2110
-
-Unknown_e2110: ; e2110
-	db $02, $03, $06, $06, $06, $08, $08, $06
-	db $02, $02, $04, $06, $06, $08, $08, $09
-	db $02, $02, $02, $04, $07, $08, $08, $0c
-; e2128
-
-Functione2128: ; e2128
-	ld a, [wc6fd]
-	sla a
-	sla a
-	add $4
-	ld [hli], a
-	inc a
-	ld [hld], a
-	inc a
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hli], a
-	inc a
-	ld [hl], a
-	ld c, 3
-	call DelayFrames
-	ret
-; e2142
-
-Functione2142: ; e2142
-	ld a, $1
-	ld [hli], a
-	ld [hld], a
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	ld c, 3
-	call DelayFrames
-	ret
-; e2152
-
-Functione2152: ; e2152
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $1
-	call ByteFill
-	hlcoord 0, 0
-	ld de, String_e2177
-	call PlaceString
-	hlcoord 15, 0
-	ld de, String_e217d
-	call PlaceString
-	ld hl, UnknownText_0xe2176
-	call PrintText
-	ret
-; e2176
-
-UnknownText_0xe2176: ; 0xe2176
-	db "@"
-; 0xe2177
-
-String_e2177: db "とったもの@"
-String_e217d: db "あと かい@"
-; e2183
-
-Functione2183: ; e2183
-	ld d, $0
-.asm_e2185
-	sub $9
-	jr c, .asm_e218c
-	inc d
-	jr .asm_e2185
-
-.asm_e218c
-	add $9
-	ld e, a
-	hlcoord 1, 2
-	ld bc, $28
-.asm_e2195
-	ld a, d
-	and a
-	jr z, .asm_e219d
-	add hl, bc
-	dec d
-	jr .asm_e2195
-
-.asm_e219d
-	sla e
-	add hl, de
-	ret
-; e21a1
-
-Functione21a1: ; e21a1 (38:61a1)
-	ld a, [wJumptableIndex]
-	cp $7
-	jr nc, .quit
-	call JoyTextDelay
-	ld hl, hJoypadPressed ; $ffa3
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .pressed_a
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .pressed_left
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .pressed_right
-	ld a, [hl]
-	and D_UP
-	jr nz, .pressed_up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .pressed_down
-	ret
-
-.quit
-	ld hl, 0
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.pressed_a
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	inc a
-	ld [wcf64], a
-	ret
-
-.pressed_left
-	ld hl, $6
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	sub $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	dec [hl]
-	ret
-
-.pressed_right
-	ld hl, $6
-	add hl, bc
-	ld a, [hl]
-	cp $80
-	ret z
-	add $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	inc [hl]
-	ret
-
-.pressed_up
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	sub $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	sub $9
-	ld [hl], a
-	ret
-
-.pressed_down
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $40
-	ret z
-	add $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	add $9
-	ld [hl], a
-	ret
-; e2221 (38:6221)
-
-LZ_e2221: ; e2221
-INCBIN "gfx/unknown/0e2221.2bpp.lz"
-
-Functione2391: ; e2391 (38:6391)
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	xor a
-	ld [hMapAnims], a
-	call Functione2963
-	xor a
-	ld [wcb2e], a
-	call DelayFrame
-.asm_e23b4
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e23c6
-	call Functione23d5
-	call DelayFrame
-	jr .asm_e23b4
-.asm_e23c6
-	call ClearSprites
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	ret
-
-Functione23d5: ; e23d5 (38:63d5)
-	ld a, [wJumptableIndex]
-	ld hl, Jumptable_e23df
-	call Functione33df
-	jp [hl]
-
-Jumptable_e23df: ; e23df (38:63df)
-	dw Functione23e9
-	dw Functione241a
-	dw Functione245d
-	dw Functione247d
-	dw Functione2992
-
-
-Functione23e9: ; e23e9 (38:63e9)
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2d30
-	call Functione2a8e
-	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $ff
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	call WaitBGMap
-	call Functione2e01
-	call Functione298d
-	ret
-
-Functione241a: ; e241a (38:641a)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e2457
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e2443
-	call Functione29b5
-	and a
-	ret z
-	call Functione2e01
-	xor a
-	ld [hBGMapMode], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $1
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	ret
-.asm_e2443
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	jr z, .asm_e2457
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-; e2452 (38:6452)
-
-.asm_e2452
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e2457
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-
-Functione245d: ; e245d (38:645d)
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ld a, $1
-	ld [MenuSelection2], a
-	call Functione298d
-	ret
-
-Functione247d: ; e247d (38:647d)
-	ld hl, BillsPCDepositMenuDataHeader
-	call CopyMenuDataHeader
-	ld a, [MenuSelection2]
-	call Function1d4b
-	call InterpretMenu2
-	jp c, BillsPCDepositFuncCancel
-	ld a, [MenuSelection2]
-	dec a
-	and $3
-	ld e, a
-	ld d, 0
-	ld hl, BillsPCDepositJumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-BillsPCDepositJumptable: ; e24a1 (38:64a1)
-	dw BillsPCDepositFuncDeposit ; Deposit Pokemon
-	dw BillsPCDepositFuncStats ; Pokemon Stats
-	dw BillsPCDepositFuncRelease ; Release Pokemon
-	dw BillsPCDepositFuncCancel ; Cancel
-
-
-BillsPCDepositFuncDeposit: ; e24a9 (38:64a9)
-	call Functione2f18
-	jp c, BillsPCDepositFuncCancel
-	call Functione307c
-	jr c, .no_overflow_31
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ret
-.no_overflow_31
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ret
-
-BillsPCDepositFuncStats: ; e24c8 (38:64c8)
-	call LoadStandardMenuDataHeader
-	call Functione2f7e
-	call ExitMenu
-	call PCMonInfo
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ret
-
-BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
-	call Functione2f18
-	jr c, BillsPCDepositFuncCancel
-	call Functione2f5f
-	jr c, BillsPCDepositFuncCancel
-	ld a, [MenuSelection2]
-	push af
-	ld de, PCString_ReleasePKMN
-	call Functione2a6e
-	call LoadStandardMenuDataHeader
-	lb bc, 14, 11
-	call PlaceYesNoBox
-	ld a, [MenuSelection2]
-	dec a
-	call ExitMenu
-	and a
-	jr nz, .asm_e252c
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	xor a
-	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	call Functione3180
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	pop af
-	ret
-.asm_e252c
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	pop af
-	ld [MenuSelection2], a
-	ret
-
-BillsPCDepositFuncCancel: ; e2537 (38:6537)
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e253d (38:653d)
-
-BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d)
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
-	dw BillsPCDepositMenuData
-	db 1 ; default option
-; 0xe2545
-
-BillsPCDepositMenuData: ; 0xe2545 (38:6545)
-	db $80 ; flags
-	db 4 ; items
-	db "DEPOSIT@"
-	db "STATS@"
-	db "RELEASE@"
-	db "CANCEL@"
-; 0xe2564 (38:6564)
-
-Functione2564: ; e2564
-	hlcoord 0, 0
-	ld b, $4
-	ld c, $8
-	call ClearBox
-	hlcoord 0, 4
-	ld b, $a
-	ld c, $9
-	call ClearBox
-	hlcoord 0, 14
-	ld b, $2
-	ld c, $8
-	call ClearBox
-	ret
-; e2583
-
-Functione2583: ; e2583 (38:6583)
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	xor a
-	ld [hMapAnims], a
-	call Functione2963
-	ld a, $f
-	ld [wcb2e], a
-	call DelayFrame
-.asm_e25a7
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .no_overflow_49
-	call Functione25c8
-	call DelayFrame
-	jr .asm_e25a7
-.no_overflow_49
-	call ClearSprites
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	ret
-
-Functione25c8: ; e25c8 (38:65c8)
-	ld a, [wJumptableIndex]
-	ld hl, .jumptable
-	call Functione33df
-	jp [hl]
-
-.jumptable: ; e25d2 (38:65d2)
-	dw Functione25dc
-	dw Functione2612
-	dw Functione2655
-	dw BillsPC_Withdraw
-	dw Functione2992
-
-
-Functione25dc: ; e25dc (38:65dc)
-	ld a, $f
-	ld [wcb2e], a
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2d30
-	call Functione2a8e
-	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $ff
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	call WaitBGMap
-	call Functione2e01
-	call Functione298d
-	ret
-
-Functione2612: ; e2612 (38:6612)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e264f
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e263b
-	call Functione29b5
-	and a
-	ret z
-	call Functione2e01
-	xor a
-	ld [hBGMapMode], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $1
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	ret
-.asm_e263b
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	jr z, .asm_e264f
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-; e264a (38:664a)
-
-.asm_e264a
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e264f
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; e2655
-
-Functione2655: ; e2655 (38:6655)
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ld a, $1
-	ld [MenuSelection2], a
-	call Functione298d
-	ret
-
-BillsPC_Withdraw: ; e2675 (38:6675)
-	ld hl, .MenuDataHeader
-	call CopyMenuDataHeader
-	ld a, [MenuSelection2]
-	call Function1d4b
-	call InterpretMenu2
-	jp c, .cancel
-	ld a, [MenuSelection2]
-	dec a
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, .jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.jumptable: ; e2699 (38:6699) #mark
-	dw .withdraw ; Withdraw
-	dw .stats ; Stats
-	dw .release ; Release
-	dw .cancel ; Cancel
-
-
-.withdraw: ; e26a1 (38:66a1)
-	call Functione2f18
-	jp c, .cancel
-	call TryWithdrawPokemon
-	jr c, .FailedWithdraw
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ret
-.FailedWithdraw
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ret
-
-.stats: ; e26c0 (38:66c0)
-	call LoadStandardMenuDataHeader
-	call Functione2f7e
-	call ExitMenu
-	call PCMonInfo
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ret
-
-.release: ; e26d8 (38:66d8)
-	ld a, [MenuSelection2]
-	push af
-	call Functione2f5f
-	jr c, .FailedRelease
-	ld de, PCString_ReleasePKMN
-	call Functione2a6e
-	call LoadStandardMenuDataHeader
-	lb bc, 14, 11
-	call PlaceYesNoBox
-	ld a, [MenuSelection2]
-	dec a
-	call ExitMenu
-	and a
-	jr nz, .FailedRelease
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, PC_DEPOSIT
-	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	call Functione3180
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	pop af
-	ret
-.FailedRelease
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	pop af
-	ld [MenuSelection2], a
-	ret
-
-.cancel: ; e272b (38:672b)
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e2731 (38:6731)
-
-.MenuDataHeader: ; 0xe2731
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
-	dw .MenuData
-	db 1 ; default option
-; 0xe2739
-
-.MenuData: ; 0xe2739
-	db $80 ; flags
-	db 4 ; items
-	db "WITHDRAW@"
-	db "STATS@"
-	db "RELEASE@"
-	db "CANCEL@"
-; 0xe2759
-
-Functione2759: ; e2759
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	xor a
-	ld [hMapAnims], a
-	call Functione2963
-	ld a, [wCurBox]
-	and $f
-	inc a
-	ld [wcb2e], a
-	call DelayFrame
-.asm_e2781
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e2793
-	call Functione27a2
-	call DelayFrame
-	jr .asm_e2781
-
-.asm_e2793
-	call ClearSprites
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	ret
-; e27a2
-
-Functione27a2: ; e27a2
-	ld a, [wJumptableIndex]
-	ld hl, Jumptable_e27ac
-	call Functione33df
-	jp [hl]
-; e27ac
-
-Jumptable_e27ac: ; e27ac
-	dw Functione27ba
-	dw Functione27eb
-	dw Functione283d
-	dw Functione285d
-	dw Functione28df
-	dw Functione2903
-	dw Functione2992
-; e27ba
-
-Functione27ba: ; e27ba
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2d30
-	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call Functione2a80
-	call PCMonInfo
-	ld a, $ff
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	call WaitBGMap
-	call Functione2e01
-	call Functione298d
-	ret
-; e27eb
-
-Functione27eb: ; e27eb
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e2837
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e2823
-	call Functione29d0
-	jr c, .asm_e2816
-	and a
-	ret z
-	call Functione2e01
-	xor a
-	ld [hBGMapMode], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $1
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	ret
-
-.asm_e2816
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e2823
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	jr z, .asm_e2837
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e2837
-	ld a, $6
-	ld [wJumptableIndex], a
-	ret
-; e283d
-
-Functione283d: ; e283d
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ld a, $1
-	ld [MenuSelection2], a
-	call Functione298d
-	ret
-; e285d
-
-Functione285d: ; e285d
-	ld hl, MenuDataHeader_0xe28c3
-	call CopyMenuDataHeader
-	ld a, [MenuSelection2]
-	call Function1d4b
-	call InterpretMenu2
-	jp c, Functione28bd
-	ld a, [MenuSelection2]
-	dec a
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_e2881
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e2881
-
-Jumptable_e2881: ; e2881
-	dw Functione2887
-	dw Functione28a5
-	dw Functione28bd
-; e2887
-
-Functione2887: ; e2887
-	call Functione2f18
-	jp c, Functione28bd
-	ld a, [wcb2a]
-	ld [wcb2f], a
-	ld a, [wcb2b]
-	ld [wcb30], a
-	ld a, [wcb2e]
-	ld [wcb31], a
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; e28a5
-
-Functione28a5: ; e28a5
-	call LoadStandardMenuDataHeader
-	call Functione2f7e
-	call ExitMenu
-	call PCMonInfo
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ret
-; e28bd
-
-Functione28bd: ; e28bd
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e28c3
-
-MenuDataHeader_0xe28c3: ; 0xe28c3
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
-	dw MenuData2_0xe28cb
-	db 1 ; default option
-; 0xe28cb
-
-MenuData2_0xe28cb: ; 0xe28cb
-	db $80 ; flags
-	db 3 ; items
-	db "MOVE@"
-	db "STATS@"
-	db "CANCEL@"
-; 0xe28df
-
-Functione28df: ; e28df
-	xor a
-	ld [hBGMapMode], a
-	call Functione2d30
-	ld de, PCString_MoveToWhere
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call Functione2a80
-	call ClearSprites
-	call Functione2e8c
-	call WaitBGMap
-	call Functione298d
-	ret
-; e2903
-
-Functione2903: ; e2903
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e294b
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e2938
-	call Functione29f4
-	jr c, .asm_e292b
-	and a
-	ret z
-	call Functione2e8c
-	xor a
-	ld [hBGMapMode], a
-	call Functione2c2c
-	ld a, $1
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	ret
-
-.asm_e292b
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e2938
-	call Functione2ee5
-	jr c, .asm_e2946
-	call Functione31e7
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e2946
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e294b
-	ld a, [wcb2f]
-	ld [wcb2a], a
-	ld a, [wcb30]
-	ld [wcb2b], a
-	ld a, [wcb31]
-	ld [wcb2e], a
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e2963
-
-Functione2963: ; e2963 (38:6963)
-	call WhiteBGMap
-	call ClearSprites
-	call ClearTileMap
-	call Functione33e8
-	ld hl, OverworldMap
-	ld bc, $338
-	xor a
-	call ByteFill
-	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ret
-
-Functione298d: ; e298d (38:698d)
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Functione2992: ; e2992 (38:6992)
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Functione2998: ; e2998 (38:6998)
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	and a
-	jr z, .asm_e29b2
-	dec a
-	cp $1
-	jr z, .asm_e29b2
-	ld e, a
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-.asm_e29b2
-	jp Functione2a65
-
-Functione29b5: ; e29b5 (38:69b5)
-	ld hl, hJoyLast
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	ld e, a
-	and a
-	jr z, .asm_e29cd
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-.asm_e29cd
-	jp Functione2a65
-; e29d0 (38:69d0)
-
-Functione29d0: ; e29d0
-	ld hl, hJoyLast
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	ld e, a
-	and a
-	jr z, .asm_e29e8
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-
-.asm_e29e8
-	ld a, [hl]
-	and D_LEFT
-	jr nz, Functione2a48
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, Functione2a56
-	jr Functione2a65
-
-Functione29f4: ; e29f4
-	ld hl, hJoyLast
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	ld e, a
-	and a
-	jr z, .asm_e2a0c
-
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-
-.asm_e2a0c
-	ld a, [hl]
-	and D_LEFT
-	jr nz, Functione2a48
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, Functione2a56
-	jr Functione2a65
-
-Functione2a18: ; e2a18 (38:6a18)
-	ld hl, wcb2b
-	ld a, [hl]
-	and a
-	jr z, .asm_e2a22
-	dec [hl]
-	jr Functione2a68
-
-.asm_e2a22
-	ld hl, wcb2a
-	ld a, [hl]
-	and a
-	jr z, Functione2a65
-	dec [hl]
-	jr Functione2a68
-
-Functione2a2c: ; e2a2c (38:6a2c)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	inc a
-	cp e
-	jr nc, Functione2a65
-
-	ld hl, wcb2b
-	ld a, [hl]
-	inc a
-	cp d
-	jr nc, .asm_e2a42
-	inc [hl]
-	jr Functione2a68
-
-.asm_e2a42
-	ld hl, wcb2a
-	inc [hl]
-	jr Functione2a68
-; e2a48 (38:6a48)
-
-Functione2a48: ; e2a48
-	ld hl, wcb2e
-	ld a, [hl]
-	and a
-	jr z, .asm_e2a52
-	dec [hl]
-	jr Functione2a6c
-
-.asm_e2a52
-	ld [hl], $e
-	jr Functione2a6c
-
-Functione2a56: ; e2a56
-	ld hl, wcb2e
-	ld a, [hl]
-	cp $e
-	jr z, .asm_e2a61
-	inc [hl]
-	jr Functione2a6c
-
-.asm_e2a61
-	ld [hl], $0
-	jr Functione2a6c
-
-Functione2a65: ; e2a65 (38:6a65)
-	xor a
-	and a
-	ret
-
-Functione2a68: ; e2a68 (38:6a68)
-	ld a, $1
-	and a
-	ret
-; e2a6c (38:6a6c)
-
-Functione2a6c: ; e2a6c
-	scf
-	ret
-; e2a6e
-
-Functione2a6e: ; e2a6e (38:6a6e)
-	push de
-	hlcoord 0, 15
-	lb bc, 1, 18
-	call TextBox
-	pop de
-	hlcoord 1, 16
-	call PlaceString
-	ret
-; e2a80 (38:6a80)
-
-Functione2a80: ; e2a80
-	call Functione2a8e
-	hlcoord 8, 1
-	ld [hl], $5f
-	hlcoord 19, 1
-	ld [hl], $5e
-	ret
-; e2a8e
-
-Functione2a8e: ; e2a8e (38:6a8e)
-	hlcoord 8, 0
-	lb bc, 1, 10
-	call TextBox
-
-	ld a, [wcb2e]
-	and a
-	jr z, .party
-
-	cp NUM_BOXES + 1
-	jr nz, .gotbox
-
-	ld a, [wCurBox]
-	inc a
-.gotbox
-	dec a
-	ld hl, wBoxNames
-	ld bc, BOX_NAME_LENGTH
-	call AddNTimes
-	ld e, l
-	ld d, h
-	jr .print
-
-.party
-	ld de, String_e2abd
-.print
-	hlcoord 10, 1
-	call PlaceString
-	ret
-; e2abd (38:6abd)
-
-String_e2abd:
-	db "PARTY <PK><MN>@"
-; e2ac6
-
-PCMonInfo: ; e2ac6 (38:6ac6)
-; Display a monster's pic and
-; attributes when highlighting
-; it in a PC menu.
-
-; Includes the neat cascading
-; effect when showing the pic.
-
-; Example: Species, level, gender,
-; whether it's holding an item.
-
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	ret z
-
-	ld [wd265], a
-	hlcoord 1, 4
-	xor a
-	ld b, 7
-.asm_e2ae9
-	ld c, 7
-	push af
-	push hl
-.asm_e2aed
-	ld [hli], a
-	add 7
-	dec c
-	jr nz, .asm_e2aed
-	pop hl
-	ld de, 20
-	add hl, de
-	pop af
-	inc a
-	dec b
-	jr nz, .asm_e2ae9
-
-	call Functione2b6d
-	ld a, [wd265]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	ld hl, TempMonDVs
-	predef GetUnownLetter
-	call GetBaseData
-	ld de, VTiles2 tile $00
-	predef GetFrontpic
-	xor a
-	ld [wcb32], a
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-
-	cp EGG
-	ret z
-
-	call GetBasePokemonName
-	hlcoord 1, 14
-	call PlaceString
-
-	hlcoord 1, 12
-	call PrintLevel
-
-	ld a, $3
-	ld [MonType], a
-	callba GetGender
-	jr c, .asm_e2b4f
-	ld a, "♂"
-	jr nz, .printgender
-	ld a, "♀"
-.printgender
-	hlcoord 5, 12
-	ld [hl], a
-.asm_e2b4f
-
-	ld a, [TempMonItem]
-	and a
-	ret z
-
-	ld d, a
-	callab ItemIsMail
-	jr c, .mail
-	ld a, $5d ; item icon
-	jr .printitem
-.mail
-	ld a, $1
-	ld [wcb32], a
-	ld a, $5c ; mail icon
-.printitem
-	hlcoord 7, 12
-	ld [hl], a
-	ret
-
-Functione2b6d: ; e2b6d (38:6b6d)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld e, a
-	ld d, $0
-	ld hl, wc801
-rept 3
-	add hl, de
-endr
-	ld a, [hl]
-	and a
-	jr z, .asm_e2bc6
-	cp $f
-	jr z, .asm_e2bf5
-	ld b, a
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	push hl
-	ld bc, $35
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonLevel], a
-	pop hl
-	push hl
-	ld bc, $17
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonItem], a
-	pop hl
-	ld bc, $2b
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld de, TempMonDVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	call CloseSRAM
-	ret
-.asm_e2bc6
-	ld hl, PartyMon1Level
-	ld bc, $30
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonLevel], a
-	ld hl, PartyMon1Item
-	ld bc, $30
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonItem], a
-	ld hl, PartyMon1DVs
-	ld bc, $30
-	ld a, e
-	call AddNTimes
-	ld de, TempMonDVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	ret
-
-.asm_e2bf5
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxMon1Level
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonLevel], a
-
-	ld hl, sBoxMon1Item
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonItem], a
-
-	ld hl, sBoxMon1DVs
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld de, TempMonDVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-
-	call CloseSRAM
-	ret
-
-Functione2c2c: ; e2c2c (38:6c2c)
-	hlcoord 8, 2
-	lb bc, 10, 10
-	call TextBox
-
-	hlcoord 8, 2
-	ld [hl], "└"
-	hlcoord 19, 2
-	ld [hl], "┘"
-
-	ld a, [wcb2a]
-	ld e, a
-	ld d, 0
-	ld hl, OverworldMap
-rept 3
-	add hl, de
-endr
-	ld e, l
-	ld d, h
-	hlcoord 9, 4
-	ld a, [wcb2d]
-.asm_e2c53
-	push af
-	push de
-	push hl
-	call Functione2c6e
-	pop hl
-	ld de, $28
-	add hl, de
-	pop de
-rept 3
-	inc de
-endr
-	pop af
-	dec a
-	jr nz, .asm_e2c53
-	ret
-; e2c67 (38:6c67)
-
-String_e2c67:
-	db "CANCEL@"
-; e2c6e
-
-Functione2c6e: ; e2c6e (38:6c6e)
-	ld a, [de]
-	and a
-	ret z
-	cp $ff
-	jr nz, .asm_e2c7c
-	ld de, String_e2c67
-	call PlaceString
-	ret
-.asm_e2c7c
-	inc de
-	ld a, [de]
-	ld b, a
-	inc de
-	ld a, [de]
-	ld e, a
-	ld a, b
-	and a
-	jr z, .asm_e2cc8
-	cp $f
-	jr z, .asm_e2cf1
-	push hl
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	push hl
-	ld bc, $16
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	pop hl
-	and a
-	jr z, .asm_e2cc2
-	ld bc, $372
-	add hl, bc
-	ld bc, $b
-	ld a, e
-	call AddNTimes
-	ld de, StringBuffer1
-	ld bc, $b
-	call CopyBytes
-	call CloseSRAM
-	pop hl
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-.asm_e2cc2
-	call CloseSRAM
-	pop hl
-	jr .asm_e2d23
-.asm_e2cc8
-	push hl
-	ld hl, PartySpecies
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr z, .asm_e2cee
-	ld hl, PartyMonNicknames
-	ld bc, $b
-	ld a, e
-	call AddNTimes
-	ld de, StringBuffer1
-	ld bc, $b
-	call CopyBytes
-	pop hl
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-.asm_e2cee
-	pop hl
-	jr .asm_e2d23
-.asm_e2cf1
-	push hl
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr z, .asm_e2d1f
-	ld hl, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
-	ld a, e
-	call AddNTimes
-	ld de, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	call CloseSRAM
-	pop hl
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-.asm_e2d1f
-	call CloseSRAM
-	pop hl
-.asm_e2d23
-	ld de, String_e2d2a
-	call PlaceString
-	ret
-; e2d2a (38:6d2a)
-
-String_e2d2a:
-	db "-----@"
-; e2d30
-
-Functione2d30: ; e2d30 (38:6d30)
-	xor a
-	ld hl, OverworldMap
-	ld bc, $5a
-	call ByteFill
-	ld de, OverworldMap
-	xor a
-	ld [wd003], a
-	ld [wd004], a
-	ld a, [wcb2e]
-	and a
-	jr z, .asm_e2d87
-	cp $f
-	jr z, .asm_e2db7
-	ld b, a
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	inc hl
-.asm_e2d57
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_e2d79
-	and a
-	jr z, .asm_e2d79
-	ld [de], a
-	inc de
-	ld a, [wcb2e]
-	ld [de], a
-	inc de
-	ld a, [wd003]
-	ld [de], a
-	inc a
-	ld [wd003], a
-	inc de
-	inc hl
-	ld a, [wd004]
-	inc a
-	ld [wd004], a
-	jr .asm_e2d57
-.asm_e2d79
-	call CloseSRAM
-	ld a, $ff
-	ld [de], a
-	ld a, [wd004]
-	inc a
-	ld [wcb2c], a
-	ret
-.asm_e2d87
-	ld hl, PartySpecies
-.asm_e2d8a
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_e2dac
-	and a
-	jr z, .asm_e2dac
-	ld [de], a
-	inc de
-	ld a, [wcb2e]
-	ld [de], a
-	inc de
-	ld a, [wd003]
-	ld [de], a
-	inc a
-	ld [wd003], a
-	inc de
-	inc hl
-	ld a, [wd004]
-	inc a
-	ld [wd004], a
-	jr .asm_e2d8a
-.asm_e2dac
-	ld a, $ff
-	ld [de], a
-	ld a, [wd004]
-	inc a
-	ld [wcb2c], a
-	ret
-.asm_e2db7
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-.asm_e2dbf
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_e2de1
-	and a
-	jr z, .asm_e2de1
-	ld [de], a
-	inc de
-	ld a, [wcb2e]
-	ld [de], a
-	inc de
-	ld a, [wd003]
-	ld [de], a
-	inc a
-	ld [wd003], a
-	inc de
-	inc hl
-	ld a, [wd004]
-	inc a
-	ld [wd004], a
-	jr .asm_e2dbf
-.asm_e2de1
-	call CloseSRAM
-	ld a, $ff
-	ld [de], a
-	ld a, [wd004]
-	inc a
-	ld [wcb2c], a
-	ret
-
-Functione2def: ; e2def (38:6def)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld e, a
-	ld d, $0
-	ld hl, OverworldMap
-rept 3
-	add hl, de
-endr
-	ld a, [hl]
-	ret
-
-Functione2e01: ; e2e01 (38:6e01)
-	ld a, [wcb2c]
-	and a
-	jr nz, .asm_e2e0b
-	call ClearSprites
-	ret
-.asm_e2e0b
-	ld hl, Unknown_e2e2b
-	ld de, Sprites
-.done1
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wcb2b]
-	and $7
-	swap a
-	add [hl]
-	inc hl
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	jr .done1
-; e2e2b (38:6e2b)
-
-Unknown_e2e2b: ; e2e2b
-	db $26, $50, $00, $00
-	db $26, $58, $00, $00
-	db $26, $60, $00, $00
-	db $26, $68, $00, $00
-	db $26, $70, $00, $00
-	db $26, $78, $00, $00
-	db $26, $80, $00, $00
-	db $26, $88, $00, $00
-	db $26, $90, $00, $00
-	db $26, $97, $00, $00
-	db $39, $50, $00, $40
-	db $39, $58, $00, $40
-	db $39, $60, $00, $40
-	db $39, $68, $00, $40
-	db $39, $70, $00, $40
-	db $39, $78, $00, $40
-	db $39, $80, $00, $40
-	db $39, $88, $00, $40
-	db $39, $90, $00, $40
-	db $39, $97, $00, $40
-	db $2e, $4e, $01, $00
-	db $31, $4e, $01, $40
-	db $2e, $99, $01, $20
-	db $31, $99, $01, $60
-	db $ff
-; e2e8c
-
-Functione2e8c: ; e2e8c
-	ld hl, Unknown_e2eac
-	ld de, Sprites
-.asm_e2e92
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wcb2b]
-	and $7
-	swap a
-	add [hl]
-	inc hl
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	jr .asm_e2e92
-; e2eac
-
-Unknown_e2eac: ; e2eac
-	db $27, $50, $06, $00
-	db $2b, $58, $00, $40
-	db $2b, $60, $00, $40
-	db $2b, $68, $00, $40
-	db $2b, $70, $00, $40
-	db $2b, $78, $00, $40
-	db $2b, $80, $00, $40
-	db $2b, $88, $00, $40
-	db $2b, $90, $00, $40
-	db $27, $98, $07, $00
-	db $ff
-; e2ed5
-
-Functione2ed5: ; e2ed5
-.asm_e2ed5
-	push bc
-	push hl
-.asm_e2ed7
-	ld [hli], a
-	dec c
-	jr nz, .asm_e2ed7
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_e2ed5
-	ret
-; e2ee5
-
-Functione2ee5: ; e2ee5
-	ld hl, wcb2e
-	ld a, [wcb31]
-	cp [hl]
-	jr z, .asm_e2f00
-	ld a, [wcb2e]
-	and a
-	jr z, .asm_e2ef8
-	ld e, $15
-	jr .asm_e2efa
-
-.asm_e2ef8
-	ld e, $7
-
-.asm_e2efa
-	ld a, [wcb2c]
-	cp e
-	jr nc, .asm_e2f02
-
-.asm_e2f00
-	and a
-	ret
-
-.asm_e2f02
-	ld de, PCString_TheresNoRoom
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-; e2f18
-
-Functione2f18: ; e2f18 (38:6f18)
-	ld a, [wcb2e]
-	and a
-	jr nz, .Okay
-	ld a, [wcb2c]
-	cp $3
-	jr c, .ItsYourLastPokemon
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	callba CheckCurPartyMonFainted
-	jr c, .AllOthersFainted
-	ld a, [wcb32]
-	and a
-	jr nz, .HasMail
-.Okay
-	and a
-	ret
-.HasMail
-	ld de, PCString_RemoveMail
-	jr .NotOkay
-.AllOthersFainted
-	ld de, PCString_NoMoreUsablePKMN
-	jr .NotOkay
-.ItsYourLastPokemon
-	ld de, PCString_ItsYourLastPKMN
-.NotOkay
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-Functione2f5f: ; e2f5f (38:6f5f)
-	ld a, [CurPartySpecies]
-	cp EGG
-	jr z, .asm_e2f68
-	and a
-	ret
-.asm_e2f68
-	ld de, PCString_NoReleasingEGGS
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-Functione2f7e: ; e2f7e (38:6f7e)
-	call LowVolume
-	call Functione2fd6
-	ld a, $3
-	ld [MonType], a
-	predef StatsScreenInit
-	call Functione33e8
-	call MaxVolume
-	ret
-
-Functione2f95: ; e2f95 (38:6f95)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and A_BUTTON | B_BUTTON | D_RIGHT + D_LEFT
-	ld [wcf73], a
-	jr nz, .asm_e2fd0
-	ld a, [hl]
-	and D_DOWN | D_UP
-	ld [wcf73], a
-	jr nz, .asm_e2faa
-	jr .asm_e2fd0
-.asm_e2faa
-	call Functione2998
-	and a
-	jr z, .asm_e2fd1
-	call Functione2def
-	ld [wd265], a
-	call Functione2b6d
-	ld a, [wd265]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	ld hl, TempMonDVs
-	predef GetUnownLetter
-	call GetBaseData
-	call Functione2fd6
-.asm_e2fd0
-	ret
-.asm_e2fd1
-	xor a
-	ld [wcf73], a
-	ret
-
-Functione2fd6: ; e2fd6 (38:6fd6)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, [wcb2e]
-	and a
-	jr z, .asm_e3020
-	cp $f
-	jr nz, .asm_e3048
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-	call Functione3357
-	ld hl, sBoxMonNicknames
-	call Functione3363
-	ld hl, sBoxMonOT
-	call Functione3376
-	ld hl, sBoxMons
-	ld bc, BOXMON_STRUCT_LENGTH
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd018
-	ld bc, $30
-	call CopyBytes
-	call CloseSRAM
-	callba Function5088b
-	ret
-.asm_e3020
-	ld hl, PartySpecies
-	call Functione3357
-	ld hl, PartyMonNicknames
-	call Functione3363
-	ld hl, PartyMonOT
-	call Functione3376
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
-	ld bc, $30
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd018
-	ld bc, $30
-	call CopyBytes
-	ret
-.asm_e3048
-	ld b, a
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	push hl
-	inc hl
-	call Functione3357
-	pop hl
-	push hl
-	ld bc, $372
-	add hl, bc
-	call Functione3363
-	pop hl
-	push hl
-	ld bc, $296
-	add hl, bc
-	call Functione3376
-	pop hl
-	ld bc, $16
-	add hl, bc
-	ld bc, $20
-	call Functione3389
-	call CloseSRAM
-	callba Function5088b
-	ret
-
-Functione307c: ; e307c (38:707c)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld hl, PartyMonNicknames
-	ld a, [CurPartyMon]
-	call GetNick
-	ld a, PC_DEPOSIT
-	ld [wPokemonWithdrawDepositParameter], a
-	predef SentGetPkmnIntoFromBox
-	jr c, .asm_boxisfull
-	xor a
-	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	ld a, [CurPartySpecies]
-	call PlayCry
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-	hlcoord 0, 15
-	lb bc, 1, 18
-	call TextBox
-	call WaitBGMap
-	hlcoord 1, 16
-	ld de, PCString_Stored
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld de, StringBuffer1
-	call PlaceString
-	ld a, "!"
-	ld [bc], a
-	ld c, 50
-	call DelayFrames
-	and a
-	ret
-
-.asm_boxisfull
-	ld de, PCString_BoxFull
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-TryWithdrawPokemon: ; e30fa (38:70fa)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, BANK(sBoxMonNicknames)
-	call GetSRAMBank
-	ld a, [CurPartyMon]
-	ld hl, sBoxMonNicknames
-	call GetNick
-	call CloseSRAM
-	xor a
-	ld [wPokemonWithdrawDepositParameter], a
-	predef SentGetPkmnIntoFromBox
-	jr c, .PartyFull
-	ld a, PC_DEPOSIT
-	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	ld a, [CurPartySpecies]
-	call PlayCry
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-	hlcoord 0, 15
-	lb bc, 1, 18
-	call TextBox
-	call WaitBGMap
-	hlcoord 1, 16
-	ld de, PCString_Got
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld de, StringBuffer1
-	call PlaceString
-	ld a, $e7
-	ld [bc], a
-	ld c, 50
-	call DelayFrames
-	and a
-	ret
-
-.PartyFull
-	ld de, PCString_PartyFull
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-
-Functione3180: ; e3180 (38:7180)
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-	hlcoord 0, 15
-	lb bc, 1, 18
-	call TextBox
-
-	call WaitBGMap
-	ld a, [CurPartySpecies]
-	call GetCryIndex
-	jr c, .asm_e31ab
-	ld e, c
-	ld d, b
-	call PlayCryHeader
-.asm_e31ab
-
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	call GetPokemonName
-	hlcoord 1, 16
-	ld de, PCString_ReleasedPKMN
-	call PlaceString
-	ld c, 80
-	call DelayFrames
-	hlcoord 0, 15
-	lb bc, 1, 18
-	call TextBox
-	hlcoord 1, 16
-	ld de, PCString_Bye
-	call PlaceString
-	ld l, c
-	ld h, b
-	inc hl
-	ld de, StringBuffer1
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld [hl], $e7
-	ld c, 50
-	call DelayFrames
-	ret
-; e31e7 (38:71e7)
-
-Functione31e7: ; e31e7
-	push hl
-	push de
-	push bc
-	push af
-	hlcoord 0, 15
-	lb bc, 1, 18
-	call TextBox
-	hlcoord 1, 16
-	ld de, String_e3233
-	call PlaceString
-	ld c, 20
-	call DelayFrames
-	pop af
-	pop bc
-	pop de
-	pop hl
-	ld a, [wCurBox]
-	push af
-	ld bc, 0
-	ld a, [wcb31]
-	and a
-	jr nz, .asm_e3215
-	set 0, c
-
-.asm_e3215
-	ld a, [wcb2e]
-	and a
-	jr nz, .asm_e321d
-	set 1, c
-
-.asm_e321d
-	ld hl, Jumptable_e3245
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, Functione322a
-	push de
-	jp [hl]
-; e322a
-
-Functione322a: ; e322a
-	pop af
-	ld e, a
-	callba Function14ad5
-	ret
-; e3233
-
-String_e3233:
-	db "Saving… Leave ON!@"
-; e3245
-
-Jumptable_e3245: ; e3245
-	dw Functione324d
-	dw Functione3267
-	dw Functione327d
-	dw Functione3284
-; e324d
-
-Functione324d: ; e324d
-	ld hl, wcb31
-	ld a, [wcb2e]
-	cp [hl]
-	jr z, .asm_e325d
-	call Functione32b0
-	call Functione32fa
-	ret
-
-.asm_e325d
-	call Functione32b0
-	call Functione328e
-	call Functione32fa
-	ret
-; e3267
-
-Functione3267: ; e3267
-	call Functione3316
-	ld a, $1
-	ld [wc2cd], a
-	callba SaveGameData
-	xor a
-	ld [wc2cd], a
-	call Functione32fa
-	ret
-; e327d
-
-Functione327d: ; e327d
-	call Functione32b0
-	call Functione3346
-	ret
-; e3284
-
-Functione3284: ; e3284
-	call Functione3316
-	call Functione328e
-	call Functione3346
-	ret
-; e328e
-
-Functione328e: ; e328e
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld e, a
-	ld a, [wcb30]
-	ld hl, wcb2f
-	add [hl]
-	cp e
-	ret nc
-	ld hl, wcb2b
-	ld a, [hl]
-	and a
-	jr z, .asm_e32a8
-	dec [hl]
-	ret
-
-.asm_e32a8
-	ld hl, wcb2a
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret
-; e32b0
-
-Functione32b0: ; e32b0
-	ld a, [wcb31]
-	dec a
-	ld e, a
-	callba Function14ac2
-	ld a, [wcb30]
-	ld hl, wcb2f
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, $1
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-	call Functione3357
-	ld hl, sBoxMonNicknames
-	call Functione3363
-	ld hl, sBoxMonOT
-	call Functione3376
-	ld hl, sBoxMons
-	ld bc, BOXMON_STRUCT_LENGTH
-	call Functione3389
-	call CloseSRAM
-	callba Function5088b
-	ld a, PC_DEPOSIT
-	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	ret
-; e32fa
-
-Functione32fa: ; e32fa
-	ld a, [wcb2e]
-	dec a
-	ld e, a
-	callba Function14ac2
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	callba Function51322
-	ret
-; e3316
-
-Functione3316: ; e3316
-	ld a, [wcb30]
-	ld hl, wcb2f
-	add [hl]
-	ld [CurPartyMon], a
-	ld hl, PartySpecies
-	call Functione3357
-	ld hl, PartyMonNicknames
-	call Functione3363
-	ld hl, PartyMonOT
-	call Functione3376
-	ld hl, PartyMon1Species
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call Functione3389
-	xor a
-	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	ret
-; e3346
-
-Functione3346: ; e3346
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	callba Function5138b
-	ret
-; e3357
-
-Functione3357: ; e3357 (38:7357)
-	ld a, [CurPartyMon]
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld [CurPartySpecies], a
-	ret
-
-Functione3363: ; e3363 (38:7363)
-	ld bc, $b
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd002
-	ld bc, $b
-	call CopyBytes
-	ret
-
-Functione3376: ; e3376 (38:7376)
-	ld bc, $b
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd00d
-	ld bc, $b
-	call CopyBytes
-	ret
-
-Functione3389: ; e3389 (38:7389)
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd018
-	call CopyBytes
-	ret
-
-Functione3396: ; e3396 (38:7396)
-	dec b
-	ld c, b
-	ld b, 0
-	ld hl, Unknown_e33a6
-rept 3
-	add hl, bc
-endr
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-; e33a6 (38:73a6)
-
-Unknown_e33a6: ; e33a6
-	;  bank, address
-	dba sBox1
-	dba sBox2
-	dba sBox3
-	dba sBox4
-	dba sBox5
-	dba sBox6
-	dba sBox7
-	dba sBox8
-	dba sBox9
-	dba sBox10
-	dba sBox11
-	dba sBox12
-	dba sBox13
-	dba sBox14
-; e33d0
-
-Functione33d0: ; e33d0 (38:73d0)
-	ld b, a
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $fc
-	call Functioncf8
-	ret
-
-Functione33df: ; e33df (38:73df)
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-Functione33e8: ; e33e8 (38:73e8)
-	call DisableLCD
-	ld hl, VTiles2 tile $00
-	ld bc, $310
-	xor a
-	call ByteFill
-	call LoadStandardFont
-	call LoadFontsBattleExtra
-	ld hl, PCMailGFX
-	ld de, VTiles2 tile $5c
-	ld bc, $40
-	call CopyBytes
-	ld hl, PCSelectLZ
-	ld de, VTiles0 tile $00
-	call Decompress
-	ld a, 6
-	call SkipMusic
-	call EnableLCD
-	ret
-; e3419 (38:7419)
-
-PCSelectLZ: INCBIN "gfx/pc.2bpp.lz"
-PCMailGFX:  INCBIN "gfx/pc_mail.2bpp"
-; e34dd
-
-PCString_ChooseaPKMN: db "Choose a <PK><MN>.@"
-PCString_WhatsUp: db "What's up?@"
-PCString_ReleasePKMN: db "Release <PK><MN>?@"
-PCString_MoveToWhere: db "Move to where?@"
-PCString_ItsYourLastPKMN: db "It's your last <PK><MN>!@"
-PCString_TheresNoRoom: db "There's no room!@"
-PCString_NoMoreUsablePKMN: db "No more usable <PK><MN>!@"
-PCString_RemoveMail: db "Remove MAIL.@"
-PCString_ReleasedPKMN: db "Released <PK><MN>.@"
-PCString_Bye: db "Bye,@"
-PCString_Stored: db "Stored @"
-PCString_Got: db "Got @"
-PCString_Non: db "Non.@"
-PCString_BoxFull: db "The BOX is full.@"
-PCString_PartyFull: db "The party's full!@"
-PCString_NoReleasingEGGS: db "No releasing EGGS!@"
-; e35aa
-
-Functione35aa: ; e35aa (38:75aa)
-	call LoadStandardMenuDataHeader
-	call Functione35e2
-.loop
-	xor a
-	ld [hBGMapMode], a
-	call Functione36cf
-	call Functione379c
-	ld hl, Functione35aa_menudataheader
-	call CopyMenuDataHeader
-	xor a
-	ld [wd0e4], a
-	hlcoord 0, 4
-	lb bc, 8, 9
-	call TextBox
-	call HandleScrollingMenu
-	ld a, [wcf73]
-	cp $2
-	jr z, .done
-	call Functione37af
-	call Functione36f9
-	jr .loop
-.done
-	call WriteBackup
-	ret
-
-Functione35e2: ; e35e2 (38:75e2)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, " "
-	call ByteFill
-	ret
-; e35f1 (38:75f1)
-
-Functione35aa_menudataheader: ; 0xe35f1
-	db $40 ; flags
-	db 05, 01 ; start coords
-	db 12, 09 ; end coords
-	dw .menudata2
-	db 1 ; default option
-; 0xe35f9
-
-.menudata2: ; 0xe35f9
-	db $22 ; flags
-	db 4, 0
-	db 1
-	dba .boxes
-	dba .boxnames
-	dba NULL
-	dba Functione3632
-; e3609
-
-.boxes: ; e3609
-	db NUM_BOXES
-x = 1
-rept NUM_BOXES
-	db x
-x = x + 1
-endr
-	db -1
-; e3619
-
-.boxnames: ; e3619
-	push de
-	ld a, [MenuSelection]
-	dec a
-	call GetBoxName
-	pop hl
-	call PlaceString
-	ret
-; e3626
-
-GetBoxName: ; e3626 (38:7626)
-	ld bc, BOX_NAME_LENGTH
-	ld hl, wBoxNames
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ret
-; e3632 (38:7632)
-
-Functione3632: ; e3632
-	hlcoord 11, 7
-	lb bc, 5, 7
-	call TextBox
-	ld a, [MenuSelection]
-	cp -1
-	ret z
-	hlcoord 12, 9
-	ld de, String_e3663
-	call PlaceString
-	call GetBoxCount
-	ld [wd265], a
-	hlcoord 13, 11
-	ld de, wd265
-	lb bc, 1, 2
-	call PrintNum
-	ld de, String_e3668
-	call PlaceString
-	ret
-; e3663
-
-String_e3663: ; e3663
-	db "#MON@"
-; e3668
-
-String_e3668: ; e3668
-	; db "/20@"
-	db "/"
-	db "0" + MONS_PER_BOX / 10 ; "2"
-	db "0" + MONS_PER_BOX % 10 ; "0"
-	db "@"
-; e366c
-
-GetBoxCount: ; e366c (38:766c)
-	ld a, [wCurBox]
-	ld c, a
-	ld a, [MenuSelection]
-	dec a
-	cp c
-	jr z, .activebox
-	ld c, a
-	ld b, 0
-	ld hl, .boxbanks
-rept 3
-	add hl, bc
-endr
-	ld a, [hli]
-	ld b, a
-	call GetSRAMBank
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [hl]
-	call CloseSRAM
-	ld c, a
-	ld a, [wSavedAtLeastOnce]
-	and a
-	jr z, .newfile
-	ld a, c
-	ret
-
-.newfile
-	xor a
-	ret
-
-.activebox
-	ld a, BANK(sBoxCount)
-	ld b, a
-	call GetSRAMBank
-	ld hl, sBoxCount
-	ld a, [hl]
-	call CloseSRAM
-	ret
-; e36a5 (38:76a5)
-
-.boxbanks: ; e36a5
-	dba sBox1
-	dba sBox2
-	dba sBox3
-	dba sBox4
-	dba sBox5
-	dba sBox6
-	dba sBox7
-	dba sBox8
-	dba sBox9
-	dba sBox10
-	dba sBox11
-	dba sBox12
-	dba sBox13
-	dba sBox14
-; e36cf
-
-Functione36cf: ; e36cf (38:76cf)
-	hlcoord 0, 0
-	ld b, 2
-	ld c, 18
-	call TextBox
-	hlcoord 1, 2
-	ld de, String_e36f1
-	call PlaceString
-	ld a, [wCurBox]
-	and $f
-	call GetBoxName
-	hlcoord 11, 2
-	call PlaceString
-	ret
-; e36f1 (38:76f1)
-
-String_e36f1: ; e36f1
-	db "CURRENT@"
-; e36f9
-
-Functione36f9: ; e36f9 (38:76f9)
-	ld hl, MenuDataHeader_0xe377b
-	call LoadMenuDataHeader
-	call InterpretMenu2
-	call ExitMenu
-	ret c
-	ld a, [MenuSelection2]
-	cp $1
-	jr z, .asm_e3734
-	cp $2
-	jr z, .asm_e3745
-	cp $3
-	jr z, .asm_e3717
-	and a
-	ret
-
-.asm_e3717
-	call GetBoxCount
-	and a
-	jr z, .asm_e372f
-	ld e, l
-	ld d, h
-	ld a, [MenuSelection]
-	dec a
-	ld c, a
-	callba Function844bc
-	call Functione35e2
-	and a
-	ret
-
-.asm_e372f
-	call Functione37be
-	and a
-	ret
-
-.asm_e3734
-	ld a, [MenuSelection]
-	dec a
-	ld e, a
-	ld a, [wCurBox]
-	cp e
-	ret z
-	callba Function14a83
-	ret
-
-.asm_e3745
-	ld b, $4
-	ld de, wd002
-	callba NamingScreen
-	call ClearTileMap
-	call LoadStandardFont
-	call LoadFontsBattleExtra
-	ld a, [MenuSelection]
-	dec a
-	call GetBoxName
-	ld e, l
-	ld d, h
-	ld hl, wd002
-	ld c, $8
-	call InitString
-	ld a, [MenuSelection]
-	dec a
-	call GetBoxName
-	ld de, wd002
-	call CopyName2
-	ret
-; e3778 (38:7778)
-
-	hlcoord 11, 7 ; XXX
-
-MenuDataHeader_0xe377b: ; 0xe377b
-	db $40 ; flags
-	db 04, 11 ; start coords
-	db 13, 19 ; end coords
-	dw MenuData2_0xe3783
-	db 1 ; default option
-; 0xe3783
-
-MenuData2_0xe3783: ; 0xe3783
-	db $80 ; flags
-	db 4 ; items
-	db "SWITCH@"
-	db "NAME@"
-	db "PRINT@"
-	db "QUIT@"
-; 0xe379c
-
-Functione379c: ; e379c (38:779c)
-	ld de, String_e37a1
-	jr Functione37e3
-; e37a1 (38:77a1)
-
-String_e37a1: ; e37a1
-	db "Choose a BOX.@"
-; e37af
-
-Functione37af: ; e37af (38:77af)
-	ld de, String_e37b4
-	jr Functione37e3
-; e37b4 (38:77b4)
-
-String_e37b4: ; e37b4
-	db "What's up?@"
-; e37be
-
-Functione37be: ; e37be (38:77be)
-	ld de, String_e37d3
-	call Functione37e3
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	ret
-; e37d3 (38:77d3)
-
-String_e37d3: ; e37d3
-	db "There's no #MON.@"
-; e37e3
-
-Functione37e3: ; e37e3 (38:77e3)
-	push de
-	hlcoord 0, 14
-	lb bc, 2, 18
-	call TextBox
-	pop de
-	hlcoord 1, 16
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-
 SECTION "bank39", ROMX, BANK[$39]
 
 CopyrightGFX:: ; e4000
@@ -58697,7 +47606,7 @@
 	ld a, [hl]
 	push af
 	ld [hl], $1
-	call WhiteBGMap
+	call ClearBGPalettes
 	hlcoord 0, 0
 	ld b, $10
 	ld c, $12
@@ -59279,7 +48188,7 @@
 Functione4579: ; e4579
 	ld de, MUSIC_NONE
 	call PlayMusic
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
@@ -59669,7 +48578,7 @@
 	call PlayMusic
 
 .done
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -60690,7 +49599,7 @@
 
 IntroScene26: ; e50bb (39:50bb)
 ; Load the final scene.
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -60779,7 +49688,7 @@
 	ret
 
 .clear
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 
 .done
@@ -62369,7 +51278,7 @@
 	xor a
 	ld [hMapAnims], a
 	call LowVolume
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call UpdateSprites
 	call ClearSprites
@@ -66036,7 +54945,7 @@
 	jp CloseSRAM
 
 Function105153: ; 105153 (41:5153)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	ld hl, MysteryGiftGFX
 	ld de, VTiles2 tile $00
@@ -66335,7 +55244,7 @@
 	ret
 
 Function1057d7: ; 1057d7 (41:57d7)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	ld hl, MysteryGiftJP_GFX
 	ld de, VTiles2 tile $00
@@ -67101,7 +56010,7 @@
 ; 1dc381
 
 Function1dc381: ; 1dc381
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	xor a
@@ -67201,7 +56110,7 @@
 ; 1dc47b
 
 Function1dc47b: ; 1dc47b
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	xor a
--- a/maps/BattleTowerBattleRoom.asm
+++ b/maps/BattleTowerBattleRoom.asm
@@ -31,7 +31,7 @@
 	keeptextopen
 	loadmovesprites
 	special BattleTowerBattle ; calls predef startbattle
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	reloadmap
 	if_not_equal $0, Script_FailedBattleTowerChallenge
 	copybytetovar wNrOfBeatenBattleTowerTrainers ; wcf64
@@ -46,10 +46,10 @@
 	closetext
 	loadmovesprites
 	playmusic MUSIC_HEAL
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special LoadMapPalettes
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext Text_NextUpOpponentNo
@@ -73,7 +73,7 @@
 	special BattleTowerAction
 	playsound SFX_SAVE
 	waitbutton
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special Reset
 Script_DontSaveAndEndTheSession: ; 0x9f4a3
 	writetext Text_CancelYourBattleRoomChallenge
@@ -84,7 +84,7 @@
 	writebyte BATTLE_TOWER_ACTION_06
 	special BattleTowerAction
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	warpfacing UP, BATTLE_TOWER_1F, $7, $7
 	loadfont
 	jump UnknownScript_0x9e4b0
--- a/maps/BluesHouse.asm
+++ b/maps/BluesHouse.asm
@@ -30,10 +30,10 @@
 	writetext UnknownText_0x19b266
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x19b296
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -176,8 +176,8 @@
 	jump_step_up
 	db $38 ; movement
 	remove_fixed_facing
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	step_down
 	step_down
 	step_end
--- a/maps/Colosseum.asm
+++ b/maps/Colosseum.asm
@@ -49,7 +49,7 @@
 
 MapColosseumSignpost1Script:
 	special Special_Colosseum
-	newloadmap MAPSETUP_08
+	newloadmap MAPSETUP_LINKRETURN
 	end
 
 ChrisScript_0x193499:
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -84,7 +84,7 @@
 	follow PLAYER, $8
 	applymovement PLAYER, MovementData_0x99e5f
 	stopfollow
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playsound SFX_ENTER_DOOR
 	waitbutton
 	warp ECRUTEAK_CITY, $6, $1b
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -64,7 +64,7 @@
 	loadmovesprites
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
 	domaptrigger VERMILION_PORT, $1
@@ -77,7 +77,7 @@
 	loadmovesprites
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	setevent EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
 	domaptrigger OLIVINE_PORT, $1
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -35,7 +35,7 @@
 	writebyte $0
 	special Special_MagnetTrain
 	warpcheck
-	newloadmap MAPSETUP_09
+	newloadmap MAPSETUP_TRAIN
 	applymovement PLAYER, .MovementBoardTheTrain
 	wait $14
 	end
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -572,8 +572,8 @@
 	big_step_down
 	fix_facing
 	jump_step_up
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	remove_fixed_facing
 	big_step_up
 	big_step_up
@@ -664,8 +664,8 @@
 	big_step_left
 	fix_facing
 	jump_step_right
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	remove_fixed_facing
 	big_step_left
 	big_step_left
@@ -694,8 +694,8 @@
 	big_step_left
 	fix_facing
 	jump_step_right
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	remove_fixed_facing
 	big_step_right
 	big_step_right
--- a/maps/IndigoPlateauPokeCenter1F.asm
+++ b/maps/IndigoPlateauPokeCenter1F.asm
@@ -154,7 +154,7 @@
 	closetext
 	loadmovesprites
 	playsound SFX_WARP_TO
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	warp NEW_BARK_TOWN, $d, $6
 	end
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -125,7 +125,7 @@
 	pause 30
 	loadmovesprites
 	applymovement $3, MovementData_0x180f5b
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	pause 15
 	warpfacing UP, HALL_OF_FAME, $4, $d
 	end
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -35,11 +35,11 @@
 	writetext MobileBattleRoom_HealText
 	pause 20
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	special LoadMapPalettes
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	refreshscreen $0
 .two_:
--- a/maps/OlivineLighthouse6F.asm
+++ b/maps/OlivineLighthouse6F.asm
@@ -42,9 +42,9 @@
 	loadmovesprites
 	special RestartMapMusic
 	cry AMPHAROS
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	pause 10
-	special FadeInBGMap
+	special FadeInPalettes
 	loadfont
 	writetext UnknownText_0x60f3d
 	closetext
@@ -116,10 +116,10 @@
 	cry AMPHAROS
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
-	special FadeInBGMap
-	special FadeBlackBGMap
-	special FadeInBGMap
+	special FadeOutPalettes
+	special FadeInPalettes
+	special FadeOutPalettes
+	special FadeInPalettes
 	end
 
 ItemFragment_0x60c66:
@@ -131,8 +131,8 @@
 	slow_step_right
 	slow_step_up
 	slow_step_up
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	step_end
 
 MovementData_0x60c70:
@@ -153,7 +153,7 @@
 	slow_step_up
 	slow_step_up
 	slow_step_up
-	accelerate_last
+	step_sleep_8
 	step_end
 
 UnknownText_0x60c81:
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -39,7 +39,7 @@
 	waitbutton
 	applymovement PLAYER, MovementData_0x74a30
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x7490a
--- a/maps/Route35NationalParkgate.asm
+++ b/maps/Route35NationalParkgate.asm
@@ -75,7 +75,7 @@
 	loadmovesprites
 	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
@@ -112,7 +112,7 @@
 	special Special_GiveParkBalls
 	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	special Special_SelectRandomBugContestContestants
 	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
--- a/maps/Route36NationalParkgate.asm
+++ b/maps/Route36NationalParkgate.asm
@@ -83,7 +83,7 @@
 	loadmovesprites
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
@@ -166,7 +166,7 @@
 	special Special_GiveParkBalls
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	special Special_SelectRandomBugContestContestants
 	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
--- a/maps/SaffronTrainStation.asm
+++ b/maps/SaffronTrainStation.asm
@@ -35,7 +35,7 @@
 	writebyte $1
 	special Special_MagnetTrain
 	warpcheck
-	newloadmap MAPSETUP_09
+	newloadmap MAPSETUP_TRAIN
 	applymovement PLAYER, .MovementBoardTheTrain
 	wait $14
 	end
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -56,7 +56,7 @@
 	clearevent EVENT_AZALEA_TOWN_SLOWPOKES
 	clearevent EVENT_KURTS_HOUSE_SLOWPOKE
 	clearevent EVENT_KURTS_HOUSE_KURT_1
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special HealParty
 	pause 15
 	warp KURTS_HOUSE, $3, $3
@@ -121,15 +121,15 @@
 	step_left
 	step_left
 	step_up
-	accelerate_last
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
+	step_sleep_8
 	step_left
 	step_up
 	step_up
-	accelerate_last
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
+	step_sleep_8
 	turn_head_left
 	step_end
 
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -445,9 +445,9 @@
 	end
 
 VoltorbExplodingTrap:
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	cry VOLTORB
-	special FadeInBGMap
+	special FadeInPalettes
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata VOLTORB, 23
@@ -455,9 +455,9 @@
 	end
 
 GeodudeExplodingTrap:
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	cry GEODUDE
-	special FadeInBGMap
+	special FadeInPalettes
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata GEODUDE, 21
@@ -465,9 +465,9 @@
 	end
 
 KoffingExplodingTrap:
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	cry KOFFING
-	special FadeInBGMap
+	special FadeInPalettes
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata KOFFING, 21
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -155,11 +155,11 @@
 	writetext UnknownText_0x6da97
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special Mobile_HealParty
 	playsound SFX_FULL_HEAL
 	special HealParty
-	special FadeInBGMap
+	special FadeInPalettes
 	loadfont
 	writetext UnknownText_0x6daf7
 	closetext
@@ -449,17 +449,17 @@
 	step_end
 
 MovementData_0x6d258:
-	accelerate_last
+	step_sleep_8
 	step_left
 	step_left
 	turn_head_up
-	accelerate_last
+	step_sleep_8
 	step_right
 	step_right
 	step_right
 	step_right
 	turn_head_up
-	accelerate_last
+	step_sleep_8
 	step_left
 	step_left
 	turn_head_down
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -254,8 +254,8 @@
 	fix_facing
 	fast_jump_step_left
 	remove_fixed_facing
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	slow_step_right
 	big_step_down
 	big_step_down
--- a/maps/TimeCapsule.asm
+++ b/maps/TimeCapsule.asm
@@ -39,7 +39,7 @@
 
 MapTimeCapsuleSignpost1Script:
 	special Special_TimeCapsule
-	newloadmap MAPSETUP_08
+	newloadmap MAPSETUP_LINKRETURN
 	end
 
 ChrisScript_0x19351a:
--- a/maps/TradeCenter.asm
+++ b/maps/TradeCenter.asm
@@ -39,7 +39,7 @@
 
 MapTradeCenterSignpost1Script:
 	special Special_TradeCenter
-	newloadmap MAPSETUP_08
+	newloadmap MAPSETUP_LINKRETURN
 	end
 
 ChrisScript_0x19340b:
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -51,7 +51,7 @@
 	waitbutton
 	applymovement PLAYER, MovementData_0x74ef1
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	clearevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -226,10 +226,10 @@
 	writetext UnknownText_0x7c6b8
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x7c6d8
@@ -309,10 +309,10 @@
 	writetext UnknownText_0x7c80e
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x7c82a
--- a/misc/battle_tower_47.asm
+++ b/misc/battle_tower_47.asm
@@ -371,7 +371,7 @@
 	ld a, [MenuSelection2]
 	dec a
 	call Function11c254
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearScreen
 	call Function11d323
--- a/misc/mobile_22.asm
+++ b/misc/mobile_22.asm
@@ -1801,7 +1801,7 @@
 ; 89b14
 
 Function89b14: ; 89b14
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function89b07
 	call Function89b00
 	ret
@@ -1814,7 +1814,7 @@
 
 Function89b28: ; 89b28 (22:5b28)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893e2
 	call Call_ExitMenu
 	call Function891ab
@@ -2414,7 +2414,7 @@
 	jp Function89e36
 
 Function89ee1: ; 89ee1 (22:5ee1)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893e2
 	call Function8923c
 	callba Function4a3a7
@@ -2602,7 +2602,7 @@
 
 Function89ff6: ; 89ff6 (22:5ff6)
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -2937,7 +2937,7 @@
 	ret
 .asm_8a254
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call Function891de
 	and a
@@ -2944,7 +2944,7 @@
 	ret
 
 Function8a262: ; 8a262 (22:6262)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893e2
 	call Function8923c
 	callba Function4a3a7
@@ -3501,7 +3501,7 @@
 
 Function8a679: ; 8a679 (22:6679)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3546,7 +3546,7 @@
 
 Function8a6cd: ; 8a6cd (22:66cd)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3594,7 +3594,7 @@
 .asm_8a73f
 	call CloseSRAM
 .asm_8a742
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function89448
 	call Function891d3
 	call Function8b677
@@ -3657,7 +3657,7 @@
 	call DelayFrame
 	call JoyTextDelay
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	pop bc
@@ -3687,7 +3687,7 @@
 	pop af
 	ld [MenuSelection], a
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3781,7 +3781,7 @@
 
 Function8a8c3: ; 8a8c3 (22:68c3)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3969,7 +3969,7 @@
 	call Function89381
 	call CloseSRAM
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -4027,7 +4027,7 @@
 	call Function89193
 .asm_8aa9d
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -4101,7 +4101,7 @@
 
 Function8ab3b: ; 8ab3b (22:6b3b)
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -4140,7 +4140,7 @@
 	ret
 
 Function8ab93: ; 8ab93 (22:6b93)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call LoadStandardMenuDataHeader
 	callba Function105688
 	call ClearSprites
@@ -4183,7 +4183,7 @@
 	call PlayClickSFX
 .asm_8abe5
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -4228,7 +4228,7 @@
 	ld [MenuSelection], a
 	push de
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	pop bc
 	call Function89844
@@ -4337,7 +4337,7 @@
 	ld a, [MenuSelection]
 	ld [wd02f], a
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
--- a/misc/mobile_22_2.asm
+++ b/misc/mobile_22_2.asm
@@ -574,7 +574,7 @@
 	ret
 
 Function8b677: ; 8b677
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	call Function8b690
 	call Function8b6bb
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -48,7 +48,7 @@
 
 Function100057: ; 100057
 	call Function1000a4
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ld hl, VramState
 	res 1, [hl]
 	ret
@@ -74,7 +74,7 @@
 Function100082: ; 100082
 	xor a
 	ld hl, OverworldMap
-	ld bc, 1300
+	ld bc, OverworldMapEnd - OverworldMap
 	call ByteFill
 	di
 	call DoubleSpeed
@@ -312,7 +312,7 @@
 Function10020b: ; 10020b
 	xor a
 	ld [wc303], a
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	callba Function106464
 	call HideSprites
 	call DelayFrame
@@ -412,7 +412,7 @@
 ; 1002dc
 
 Function1002dc: ; 1002dc
-	ld a, MAPSETUP_08
+	ld a, MAPSETUP_LINKRETURN
 	ld [hMapEntryMethod], a
 	callba RunMapSetupScript
 	xor a
@@ -3048,7 +3048,7 @@
 ; 1013aa
 
 Function1013aa: ; 1013aa
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call Function2bae
 	callba Function106464
--- a/misc/mobile_41.asm
+++ b/misc/mobile_41.asm
@@ -951,7 +951,7 @@
 	call Function3e32
 	xor a
 	ld [hMobile], a
-	ld [$ffc9], a
+	ld [hFFC9], a
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -125,7 +125,7 @@
 Function1080b7: ; 1080b7
 	xor a
 	ld [wJumptableIndex], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -188,7 +188,7 @@
 Function108157: ; 108157
 	xor a
 	ld [wJumptableIndex], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -508,7 +508,7 @@
 ; 10839b
 
 Function10839b: ; 10839b
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -643,7 +643,7 @@
 ; 1084d7
 
 Function1084d7: ; 1084d7
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -712,7 +712,7 @@
 ; 108589
 
 Function108589: ; 108589
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -781,7 +781,7 @@
 
 Function108638: ; 108638
 	callba Function8d03d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -817,7 +817,7 @@
 
 Function108689: ; 108689
 	callba Function8d03d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -862,7 +862,7 @@
 ; 1086f4
 
 Function1086f4: ; 1086f4
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -1162,7 +1162,7 @@
 	ld c, $28
 	call Function1082cc
 	callba Function8d03d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -7708,7 +7708,7 @@
 	ld hl, wc708
 	ld bc, $11
 	call ByteFill
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	callba Function171c87
 	callba Function104061
@@ -7726,7 +7726,7 @@
 	jr Function1176ee
 .asm_117709
 	callba Function8cf53
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearScreen
 	call ClearSprites
 	ret
@@ -8172,7 +8172,7 @@
 	ld [wcf64], a
 	ld [wcf65], a
 	ld [wcf66], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	callba Function172e78
 	callba Function104000
@@ -8180,7 +8180,7 @@
 ; 0x117ab4
 
 Function117ab4: ; 0x117ab4
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	callba Function172e78
 	callba Function172eb9
@@ -8197,7 +8197,7 @@
 	callba Function104000
 	jr Function117acd
 .asm_117ae2
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	ret
 
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -43,7 +43,7 @@
 	pop af
 	ld [rSVBK], a
 	call Function118452
-	call Function222a
+	call ReturnToMapFromSubmenu
 Function11805e: ; 11805e (46:405e)
 	ret
 ; 11805f
@@ -84,7 +84,7 @@
 	pop af
 	ld [rSVBK], a
 	call Function118452
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ret
 ; 1180b8
 
@@ -130,7 +130,7 @@
 	pop af
 	ld [rSVBK], a
 	call Function118452
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ret
 ; 11811a
 
@@ -180,7 +180,7 @@
 	ld [rSVBK], a
 	call Function118452
 	call Function118180
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ret
 ; 118180
 
@@ -262,7 +262,7 @@
 	pop af
 	ld [rSVBK], a
 	call Function118452
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ret
 ; 118233
 
@@ -374,7 +374,7 @@
 	pop af
 	ld [rSVBK], a
 	call Function118452
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ret
 ; 118329
 
@@ -482,7 +482,7 @@
 	ld a, $f
 	ld [rIE], a
 	ld a, $1
-	ld [$ffc9], a
+	ld [hFFC9], a
 	ld [hMobile], a
 	ei
 	callba Function106462
@@ -512,7 +512,7 @@
 Function118452: ; 118452
 	di
 	xor a
-	ld [$ffc9], a
+	ld [hFFC9], a
 	ld [hMobile], a
 	ld [hVBlank], a
 	call NormalSpeed
@@ -5682,7 +5682,7 @@
 ; 11a9ce
 
 Function11a9ce: ; 11a9ce
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function2bae
 	call Call_ExitMenu
 	callba Function106462
@@ -5950,7 +5950,7 @@
 ; 11ad1b
 
 Function11ad1b: ; 11ad1b
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	callba Function17c000
--- a/misc/mobile_5b.asm
+++ b/misc/mobile_5b.asm
@@ -140,7 +140,7 @@
 ; 16c0ec
 
 Function16c0ec: ; 16c0ec
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearScreen
 	push af
 	ld a, $ff
@@ -885,7 +885,7 @@
 
 Function16d43b: ; 16d43b
 	call LoadStandardMenuDataHeader
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	callba Function16d421
--- a/misc/mobile_5c.asm
+++ b/misc/mobile_5c.asm
@@ -283,7 +283,7 @@
 ; 1704f1
 
 Function1704f1: ; 1704f1
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearScreen
 .asm_1704fa
@@ -1590,7 +1590,7 @@
 	ld [wcd4a], a
 	dec a
 	ld [wcd4b], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	callba Function171d2b
 	callba Function104061
@@ -1883,7 +1883,7 @@
 	dec [hl]
 	ret nz
 	call ExitMenu
-	call WhiteBGMap
+	call ClearBGPalettes
 	jr asm_171c60
 
 Function171c39: ; 171c39 (5c:5c39)
@@ -1895,7 +1895,7 @@
 	ld hl, wcd4c
 	dec [hl]
 	ret nz
-	call WhiteBGMap
+	call ClearBGPalettes
 	callba Function106462
 	callba Function106464
 	ld a, $2
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -561,7 +561,7 @@
 	ld a, d
 	ld [MusicFadeIDHi], a
 	call PlayMusic
-	call Function222a
+	call ReturnToMapFromSubmenu
 	call Function2b3c
 	ret
 ; 17d314
@@ -626,7 +626,7 @@
 	ld [wcd79], a
 	dec a
 	ld [wcd6c], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearScreen
 	callba Function104061
@@ -672,7 +672,7 @@
 ; 17d3f6
 
 Function17d3f6: ; 17d3f6
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearScreen
 	callba Function104061
@@ -1245,7 +1245,7 @@
 	call CloseSRAM
 	xor a
 	ld [wcd77], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 17d7b4
 
--- a/misc/unused_title.asm
+++ b/misc/unused_title.asm
@@ -3,7 +3,7 @@
 
 UnusedTitleScreen: ; 10c000
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call DisableLCD
 	xor a
--- a/wram.asm
+++ b/wram.asm
@@ -321,10 +321,10 @@
 wc2de:: ds 1
 wc2df:: ds 3
 wMovementPerson:: ds 1
-wMovementDataPointer:: ds 3
+wMovementDataPointer:: ds 3 ; dba
 wc2e6:: ds 4
 wc2ea:: ds 1
-wMovementPointer:: ds 2
+wMovementPointer:: ds 2 ; c2eb
 	ds 3
 wc2f0:: ds 1
 wc2f1:: ds 1
@@ -334,7 +334,8 @@
 wc2f5:: ds 1
 wc2f6:: ds 1
 wc2f7:: ds 1
-wc2f8:: ds 2
+wc2f8:: ds 1
+	ds 1
 
 TileDown:: ; c2fa
 	ds 1
@@ -1478,6 +1479,10 @@
 wd016:: ds 1
 wMartItem8BCD::
 wd017:: ds 1
+
+wd018_Mon:: party_struct wd018_Mon
+	ds wd018_Mon - @
+
 wd018:: ds 1
 wd019:: ds 1
 wMartItem9BCD::
@@ -1506,6 +1511,7 @@
 CurInput::
 EngineBuffer1:: ; d03e
 	ds 1
+
 wd03f::
 wJumpStdScriptBuffer::
 CurFruit:: ; d03f
@@ -2153,7 +2159,7 @@
 \1Palette:: ds 1
 \1Walking:: ds 1
 \1Direction:: ds 1
-	ds 1
+\1Object09:: ds 1
 \1StepDuration:: ds 1
 \1Action:: ds 1
 \1Object12:: ds 1