shithub: pokecrystal

Download patch

ref: d74d2542412ca5d58d9077801b35b8061a68b0cc
parent: 2d160dcece31b0cc0b6103a3d658a1dd0f7f0177
parent: 7e3394bb53bb9d20ff734316e9baa5945fd13c64
author: Bryan Bishop <[email protected]>
date: Thu Feb 27 17:41:47 EST 2014

Merge pull request #233 from yenatch/incbins

Get rid of incbins in banks 1, 2, 3, 9, a, b, e, 10.

--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -1565,7 +1565,7 @@
 	ld a, [OTPartyCount]
 	ld b, a
 	ld c, 0
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld de, $0030
 
 .asm_38d2c
@@ -1784,7 +1784,7 @@
 	ld a, [PartyCount]
 	ld b, a
 	ld c, 0
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld de, PartyMon2 - PartyMon1
 
 .loop
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -11,7 +11,7 @@
 	ld [BattleEnded], a
 	inc a
 	ld [$d264], a
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld bc, $002f
 	ld d, $3
 .asm_3c019
@@ -1234,7 +1234,7 @@
 	xor a
 	ld [hli], a
 	ld [hl], a
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld a, [CurBattleMon]
 	call GetPartyLocation
 	xor a
@@ -1250,7 +1250,7 @@
 	ld a, [IsInBattle]
 	dec a
 	ret z
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld a, [CurOTMon]
 	call GetPartyLocation
 	xor a
@@ -2177,7 +2177,7 @@
 	dec a
 	jr z, .asm_3ce16
 	ld a, [CurOTMon]
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	call GetPartyLocation
 	xor a
 	ld [hli], a
@@ -2355,7 +2355,7 @@
 	ld a, [OTPartyCount]
 	ld b, a
 	xor a
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld de, $0030
 .asm_3cf40
 	or [hl]
@@ -2832,7 +2832,7 @@
 	ld a, [$cfa9]
 	cp $1
 	jr z, .asm_3d20a
-	ld hl, PartyMon1Spd
+	ld hl, PartyMon1Speed
 	ld de, EnemyMonSpd
 	jp Function3d8b3
 ; 3d227
@@ -3390,7 +3390,7 @@
 	ld a, [CurOTMon]
 	cp b
 	jr z, .asm_3d5d0
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	push bc
 	ld a, b
 	call GetPartyLocation
@@ -3546,7 +3546,7 @@
 	ld a, [CurOTMon]
 	cp b
 	jr z, .asm_3d6a7
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	push bc
 	ld a, b
 	call GetPartyLocation
@@ -3778,7 +3778,7 @@
 	ld a, [PartyCount]
 	ld e, a
 	xor a
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld bc, $002f
 .asm_3d87e
 	or [hl]
@@ -3794,7 +3794,7 @@
 
 Function3d887: ; 3d887
 	ld a, [CurPartyMon]
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call GetPartyLocation
 	ld a, [hli]
 	or [hl]
@@ -6514,7 +6514,7 @@
 	
 .OpponentParty
 ; Get HP from the party struct
-	ld hl, (PartyMon1CurHP + 1) - PartyMon1 + OTPartyMon1
+	ld hl, (OTPartyMon1HP + 1)
 	ld a, [CurPartyMon]
 	call GetPartyLocation
 	ld a, [hld]
@@ -9021,18 +9021,18 @@
 ; 3fa01
 
 GetRoamMonHP: ; 3fa01
-; output: hl = RoamMonCurHP
+; output: hl = RoamMonHP
 	ld a, [TempEnemyMonSpecies]
 	ld b, a
 	ld a, [RoamMon1Species]
 	cp b
-	ld hl, RoamMon1CurHP
+	ld hl, RoamMon1HP
 	ret z
 	ld a, [RoamMon2Species]
 	cp b
-	ld hl, RoamMon2CurHP
+	ld hl, RoamMon2HP
 	ret z
-	ld hl, RoamMon3CurHP
+	ld hl, RoamMon3HP
 	ret
 ; 3fa19
 
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -1951,7 +1951,7 @@
 	ld e, 0
 	ld b, $20
 	ld c, 0
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 
 .asm_34a05
 	ld a, [CurOTMon]
@@ -2059,7 +2059,7 @@
 	push bc
 	ld a, [OTPartyCount]
 	ld e, a
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld b, $20
 	ld c, $0
 .asm_34a91
@@ -2254,7 +2254,7 @@
 	ld de, OTPartySpecies
 	ld b, $20
 	ld c, 0
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 
 .asm_34b82
 	ld a, [de]
@@ -7286,7 +7286,7 @@
 	jr z, .asm_3689a ; 368a3 $f5
 	push af
 	push bc
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	call GetPartyLocation
 	ld a, [hli]
 	or [hl]
@@ -7382,7 +7382,7 @@
 
 	push af
 	push bc
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call GetPartyLocation
 	ld a, [hli]
 	or [hl]
@@ -7437,7 +7437,7 @@
 	jr z, .asm_369ae
 
 	ld a, e
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call AddNTimes
 	ld a, [hli]
 	or [hl]
@@ -9860,7 +9860,7 @@
 
 
 CheckAnyOtherAlivePartyMons: ; 37ae9
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld a, [PartyCount]
 	ld d, a
 	ld a, [CurBattleMon]
@@ -9870,7 +9870,7 @@
 
 
 CheckAnyOtherAliveEnemyMons: ; 37af6
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld a, [OTPartyCount]
 	ld d, a
 	ld a, [CurOTMon]
binary files /dev/null b/gfx/battle/balls.2bpp differ
binary files /dev/null b/gfx/misc/badges.2bpp differ
binary files /dev/null b/gfx/misc/card_right_corner.2bpp differ
binary files /dev/null b/gfx/misc/card_status.2bpp differ
binary files a/gfx/misc/dude.lz b/gfx/misc/dude.lz differ
--- /dev/null
+++ b/gfx/misc/footprints.1bpp
@@ -1,0 +1,1 @@
+������������/�����������w'����������7'�����������o/����������7'���������7'�������������_�����������o/��������?������������?��������������������?����������?����������?���������?������������?�����������?'#��������������?���������������������������??��������������?�����������������������������?�����������������������??���������?������������������������������??�����������?������������������������������??�������������??�������������������������w7##���������������?�����������o'�������������������������ogGG����������������������������������������???���������???���������?��������������?������������??����������??�����������������������������������������������_�����������?������������������������������������������?������������oO�������������������������?��������?������������?����������?�����������?����������?�������������������������������??��������������oG�������������������??����������χ��������������O�����������O����������?��������?�����������������������������?���������������?�������������?������������ϟ?�����������???����������???����������������������������??��������������??������������?���������?�����������������������������???����������?������������������������?�������������?��������������??�������������???�����������?����������������������������??�������������������������������������������������������������_��������'����������7'�ތ�������ccC�����������Ç��������������������������������������������������������??��??���������????����������?�����������?����������?��������������������������/���������'��������������������������������������������������?���������ߟ����������????���������?������������?�����������������������?�������������?����������?������������?�������������LJ������������?�����������/�������������������������o����������������������������������������������������������?���������?�����������??����������??�����������������������������������������������������������������������������������������������������������OG������������������������?���������?������������??�����������ߏ����������������������������������������?����������?���������������������������������?�������������������������������������������?��������������sC�������������ϟ�����������?=q������������������������������������������������������������������������?������������?���������?�����������?�������������������������������������������������������������������������������������������������������������������������������������������������_O��������������������������������������������������������������������������������������������������������������������?�������������������������������������OG��������������?������������������������������������������������������������������������������������??��������?���������g������������������������������������������������������������������������������?���������?����������������?�����������oO����������?����������?�������������������������������������������ߏ���������ߏ���������?��������������ߟ��������???������������Ϗ���������������������������������������������������������������?�������������������??������������������������������������������������������������������������������?��������???�����������?�����������?��������������������������������������������������������������������������?��������������������?����������??���������;37��������������������������???���������ߟ�����������������������������?���������?��������������???����������������������������������???������������?������������???�������������
\ No newline at end of file
binary files /dev/null b/gfx/misc/leaders.2bpp differ
binary files a/gfx/misc/player.lz b/gfx/misc/player.lz differ
binary files a/gfx/misc/town_map.lz b/gfx/misc/town_map.lz differ
binary files /dev/null b/gfx/trade/arrow.2bpp differ
binary files /dev/null b/gfx/trade/ball.2bpp differ
binary files /dev/null b/gfx/trade/bubble.2bpp differ
binary files /dev/null b/gfx/trade/cable.2bpp differ
binary files /dev/null b/gfx/trade/game_boy.lz differ
binary files /dev/null b/gfx/trade/poof.2bpp differ
--- a/home/text.asm
+++ b/home/text.asm
@@ -1158,7 +1158,14 @@
 ; 156a
 
 Text_14:: ; 156a
-; TX_PREDEF
+; Print a string from one of the following:
+; 0: StringBuffer3
+; 1: StringBuffer4
+; 2: StringBuffer5
+; 3: StringBuffer2
+; 4: StringBuffer1
+; 5: EnemyMonNick
+; 6: BattleMonNick
 ; [$14][id]
 
 	ld a, [hli]
@@ -1165,10 +1172,10 @@
 	push hl
 	ld e, a
 	ld d, 0
-	ld hl, $4000
+	ld hl, Unknown_24000
 	add hl, de
 	add hl, de
-	ld a, $9
+	ld a, BANK(Unknown_24000)
 	call GetFarHalfword
 	ld d, h
 	ld e, l
--- a/macros.asm
+++ b/macros.asm
@@ -138,3 +138,39 @@
 	db $ff
 	ENDM
 
+
+; maps
+
+map: MACRO
+; This is a really silly hack to get around an rgbds bug.
+
+; Ideally:
+;	db GROUP_\1, MAP_\1
+
+\1\@  EQUS "GROUP_\1"
+\1\@2 EQUS "MAP_\1"
+	db \1\@, \1\@2
+ENDM
+
+roam_map: MACRO
+; A map and an arbitrary number of some more maps.
+
+	map \1
+	db \2
+
+IF \2 > 0
+	map \3
+ENDC
+IF \2 > 1
+	map \4
+ENDC
+IF \2 > 2
+	map \5
+ENDC
+IF \2 > 3
+	map \6
+ENDC
+	db 0
+ENDM
+
+
--- a/main.asm
+++ b/main.asm
@@ -61,7 +61,44 @@
 
 
 Data4273:: ; 4273
-INCBIN "baserom.gbc",$4273,$4357 - $4273
+	db $00, $00, $01, $02, $00, $00
+	db $06, $00, $01, $0c, $00, $00
+	db $03, $00, $01, $00, $00, $00
+	db $04, $00, $01, $00, $00, $00
+	db $01, $00, $01, $00, $00, $00
+	db $02, $00, $01, $00, $00, $00
+	db $06, $00, $01, $00, $00, $00
+	db $06, $01, $01, $00, $00, $00
+	db $06, $02, $01, $00, $00, $00
+	db $06, $03, $01, $00, $00, $00
+	db $05, $00, $01, $00, $00, $00
+	db $07, $00, $01, $02, $00, $00
+	db $08, $00, $01, $00, $00, $00
+	db $09, $00, $01, $00, $00, $00
+	db $0a, $00, $01, $00, $00, $00
+	db $0b, $00, $01, $00, $00, $00
+	db $0c, $00, $01, $00, $00, $00
+	db $0d, $00, $01, $00, $00, $00
+	db $0e, $00, $01, $00, $00, $00
+	db $0f, $00, $01, $02, $00, $00
+	db $10, $00, $01, $02, $00, $00
+	db $15, $00, $09, $2e, $01, $c0
+	db $16, $00, $0a, $2e, $00, $00
+	db $06, $00, $01, $0c, $00, $00
+	db $06, $00, $01, $2e, $10, $00
+	db $11, $00, $01, $2e, $00, $40
+	db $12, $00, $01, $02, $00, $00
+	db $13, $00, $00, $8e, $01, $00
+	db $14, $00, $08, $8e, $02, $00
+	db $17, $00, $00, $82, $00, $00
+	db $19, $02, $01, $00, $00, $00
+	db $18, $03, $01, $00, $00, $00
+	db $11, $00, $0c, $2e, $01, $c0
+	db $11, $00, $0d, $2e, $01, $c0
+	db $1a, $00, $0e, $8e, $01, $00
+	db $1b, $00, $0f, $8e, $02, $00
+	db $03, $00, $01, $00, $00, $20
+	db $00, $00, $01, $00, $00, $00
 ; 4357
 
 
@@ -5057,9 +5094,14 @@
 ; 63ca
 
 Data63ca: ; 63ca
-INCBIN "baserom.gbc",$63ca,$63e2 - $63ca
+	db $5c, $50, $00, $00
+	db $5c, $68, $5c, $58
+	db $5c, $68, $5c, $78
+	db $5c, $88, $5c, $78
+	db $00, $00, $5c, $78
+	db $00, $00, $5c, $58
+; 63e2
 
-
 Copyright: ; 63e2
 	call ClearTileMap
 	call Functione5f
@@ -6860,7 +6902,10 @@
 ; 8071
 
 Data8071: ; 8071
-INCBIN "baserom.gbc",$8071,$807e - $8071
+; A dummy map object used to initialize the player object.
+; Shorter than the actual amount copied by two bytes.
+; Said bytes seem to be unused.
+	db $01, $00, $00, $0b, $ff, $ff, $ff, $00, $00, $00, $00, $ff, $ff
 ; 807e
 
 Function807e:: ; 807e
@@ -9023,7 +9068,7 @@
 
 ; no known jump sources
 Functionc79c: ; c79c (3:479c)
-	ld de, $1c
+	ld de, ENGINE_HIVEBADGE
 	call CheckBadge
 	jr c, .asm_c7ac
 	call Functionc7ce
@@ -9039,7 +9084,7 @@
 
 ; no known jump sources
 Functionc7b2: ; c7b2 (3:47b2)
-	ld hl, Unknown_c7fe
+	ld hl, UnknownScript_0xc7fe
 	call Function31cd
 	ld a, $81
 	ret
@@ -9046,18 +9091,22 @@
 
 ; no known jump sources
 Functionc7bb: ; c7bb (3:47bb)
-	ld hl, Unknown_c7c9
+	ld hl, UnknownText_0xc7c9
 	call Function1d67
 	ld a, $80
 	ret
 
 UnknownText_0xc7c4: ; 0xc7c4
+	; used CUT!
 	text_jump UnknownText_0x1c05dd
-	db $50
+	db "@"
 ; 0xc7c9
 
-Unknown_c7c9: ; c7c9
-INCBIN "baserom.gbc",$c7c9,$c7ce - $c7c9
+UnknownText_0xc7c9: ; 0xc7c9
+	; There's nothing to CUT here.
+	text_jump UnknownText_0x1c05ec
+	db "@"
+; 0xc7ce
 
 Functionc7ce: ; c7ce
 	call GetFacingTileCoord
@@ -9069,7 +9118,7 @@
 	call Function2a66
 	ld c, [hl]
 	push hl
-	ld hl, $4862
+	ld hl, Unknown_c862
 	call Functionc840
 	pop hl
 	jr nc, .asm_c7fc
@@ -9089,8 +9138,9 @@
 	ret
 ; c7fe
 
-Unknown_c7fe: ; c7fe
-INCBIN "baserom.gbc",$c7fe,$c802 - $c7fe
+UnknownScript_0xc7fe: ; c7fe
+	reloadmappart
+	special $0035
 
 UnknownScript_0xc802: ; 0xc802
 	3callasm GetPartyNick
@@ -9151,8 +9201,60 @@
 	ret
 ; c862
 
-INCBIN "baserom.gbc",$c862,$c8ac - $c862
+Unknown_c862: ; c862
+	dbw $01, Unknown_c872
+	dbw $02, Unknown_c882
+	dbw $03, Unknown_c886
+	dbw $19, Unknown_c899
+	dbw $1f, Unknown_c8a0
+	db -1
+; c872
 
+Unknown_c872: ; c872
+	db $03, $02, $01
+	db $5b, $3c, $00
+	db $5f, $3d, $00
+	db $63, $3f, $00
+	db $67, $3e, $00
+	db -1
+; c882
+
+Unknown_c882: ; c882
+	db $03, $02, $01
+	db -1
+; c886
+
+Unknown_c886: ; c886
+	db $0b, $0a, $01
+	db $32, $6d, $00
+	db $33, $6c, $00
+	db $34, $6f, $00
+	db $35, $4c, $00
+	db $60, $6e, $00
+	db -1
+; c899
+
+Unknown_c899: ; c899
+	db $13, $03, $01
+	db $03, $04, $01
+	db -1
+; c8a0
+
+Unknown_c8a0: ; c8a0
+	db $0f, $17, $00
+	db -1
+; c8a4
+
+Unknown_c8a4: ; c8a4
+	dbw $01, Unknown_c8a8
+	db -1
+; c8a8
+
+Unknown_c8a8: ; c8a8
+	db $07, $36, $00
+	db -1
+; c8ac
+
 Functionc8ac: ; c8ac
 	call Functionc8b5
 	and $7f
@@ -9223,7 +9325,7 @@
 Functionc909: ; c909
 	call Functionc6ea
 .asm_c90c
-	ld hl, $491a
+	ld hl, Jumptable_c91a
 	call Functionc6f5
 	jr nc, .asm_c90c
 	and $7f
@@ -9278,7 +9380,7 @@
 	call GetSurfType
 	ld [Buffer2], a ; $d1eb (aliases: MovementType)
 	call GetPartyNick
-	ld hl, $4983
+	ld hl, UnknownScript_0xc983
 	call Function31cd
 	ld a, $81
 	ret
@@ -9285,7 +9387,7 @@
 
 ; no known jump sources
 Functionc971: ; c971 (3:4971)
-	ld hl, $49ae
+	ld hl, CantSurfText
 	call Function1d67
 	ld a, $80
 	ret
@@ -9292,15 +9394,15 @@
 
 ; no known jump sources
 Functionc97a: ; c97a (3:497a)
-	ld hl, $49b3
+	ld hl, AlreadySurfingText
 	call Function1d67
 	ld a, $80
 	ret
 ; c983 (3:4983)
 
-INCBIN "baserom.gbc",$c983,$c986 - $c983
+UnknownScript_0xc983: ; c983
+	special $0035
 
-
 UsedSurfScript: ; c986
 	2writetext UsedSurfText ; "used SURF!"
 	closetext
@@ -9867,7 +9969,7 @@
 
 Functioncc9c: ; cc9c
 	call GetPartyNick
-	ld hl, $4cbb
+	ld hl, UnknownScript_0xccbb
 	call Function31cd
 	ld a, $81
 	ret
@@ -9874,14 +9976,52 @@
 ; cca8
 
 Functioncca8: ; cca8
-	ld hl, $4cb6
+	ld hl, UnknownText_0xccb6
 	call Function1d67
 	ld a, $80
 	ret
 ; ccb1
 
-INCBIN "baserom.gbc",$ccb1,$cce5 - $ccb1
+UnknownText_0xccb1: ; 0xccb1
+	; Return to the last #MON CENTER.
+	text_jump UnknownText_0x1c071a
+	db "@"
+; 0xccb6
 
+UnknownText_0xccb6: ; 0xccb6
+	; Can't use that here.
+	text_jump UnknownText_0x1c073b
+	db "@"
+; 0xccbb
+
+UnknownScript_0xccbb: ; 0xccbb
+	reloadmappart
+	special $0035
+	2writetext UnknownText_0xccb1
+	pause 60
+	reloadmappart
+	loadmovesprites
+	playsound SFX_WARP_TO
+	applymovement $0, MovementData_0xcce1
+	3call UnknownScript_0x122c1
+	special $0000
+	writecode $8, $0
+	newloadmap $f4
+	playsound SFX_WARP_FROM
+	applymovement $0, MovementData_0xcce3
+	end
+; 0xcce1
+
+MovementData_0xcce1: ; cce1
+	teleport_from
+	step_end
+; cce3
+
+MovementData_0xcce3: ; cce3
+	teleport_to
+	step_end
+; cce5
+
 Functioncce5: ; cce5
 	call Functionccee
 	and $7f
@@ -10027,11 +10167,12 @@
 .asm_cd99
 	ld [ScriptVar], a ; $c2dd
 	ret
+; cd9d
 
 Functioncd9d: ; cd9d
 	call Functionc6ea
 .asm_cda0
-	ld hl, $4dae
+	ld hl, Jumptable_cdae
 	call Functionc6f5
 	jr nc, .asm_cda0
 	and $7f
@@ -10039,9 +10180,45 @@
 	ret
 ; cdae
 
-INCBIN "baserom.gbc",$cdae,$cdd9 - $cdae
+Jumptable_cdae: ; cdae
+	dw Functioncdb4
+	dw Functioncdca
+	dw Functioncdd3
+; cdb4
 
+Functioncdb4: ; cdb4
+	ld de, ENGINE_GLACIERBADGE
+	call CheckBadge
+	jr c, .asm_cdc7
+	call Functioncdde
+	jr c, .asm_cdc4
+	ld a, $1
+	ret
+
+.asm_cdc4
+	ld a, $2
+	ret
+
+.asm_cdc7
+	ld a, $80
+	ret
+; cdca
+
+Functioncdca: ; cdca
+	ld hl, UnknownScript_0xce0b
+	call Function31cd
+	ld a, $81
+	ret
+; cdd3
+
+Functioncdd3: ; cdd3
+	call Functionc779
+	ld a, $80
+	ret
+; cdd9
+
 UnknownText_0xcdd9: ; 0xcdd9
+	; used WHIRLPOOL!
 	text_jump UnknownText_0x1c0816
 	db "@"
 ; 0xcdde
@@ -10056,7 +10233,7 @@
 	call Function2a66
 	ld c, [hl]
 	push hl
-	ld hl, $48a4
+	ld hl, Unknown_c8a4
 	call Functionc840
 	pop hl
 	jr nc, .asm_ce09
@@ -10076,7 +10253,9 @@
 	ret
 ; ce0b
 
-INCBIN "baserom.gbc",$ce0b,$ce0f - $ce0b
+UnknownScript_0xce0b: ; 0xce0b
+	reloadmappart
+	special $0035
 
 UnknownScript_0xce0f: ; 0xce0f
 	3callasm GetPartyNick
@@ -10174,18 +10353,22 @@
 ; ce9d
 
 UnknownText_0xce9d: ; 0xce9d
+	; did a HEADBUTT!
 	text_jump UnknownText_0x1c0897
-	db $50
+	db "@"
 ; 0xcea2
 
 UnknownText_0xcea2: ; 0xcea2
+	; Nope. Nothing…
 	text_jump UnknownText_0x1c08ac
-	db $50
+	db "@"
 ; 0xcea7
 
 UnknownScript_0xcea7: ; 0xcea7
 	reloadmappart
 	special $0035
+
+UnknownScript_0xceab: ; 0xceab
 	3callasm GetPartyNick
 	2writetext UnknownText_0xce9d
 	reloadmappart
@@ -10207,11 +10390,11 @@
 ; 0xcec9
 
 TryHeadbuttOW:: ; cec9
-	ld d, $1d
+	ld d, HEADBUTT
 	call CheckPartyMove
 	jr c, .asm_ceda
-	ld a, $3
-	ld hl, $4edc
+	ld a, BANK(UnknownScript_0xcedc)
+	ld hl, UnknownScript_0xcedc
 	call CallScript
 	scf
 	ret
@@ -10221,8 +10404,21 @@
 	ret
 ; cedc
 
-INCBIN "baserom.gbc",$cedc,$ceeb - $cedc
+UnknownScript_0xcedc: ; 0xcedc
+	loadfont
+	2writetext UnknownText_0xcee6
+	yesorno
+	iftrue UnknownScript_0xceab
+	loadmovesprites
+	end
+; 0xcee6
 
+UnknownText_0xcee6: ; 0xcee6
+	; A #MON could be in this tree. Want to HEADBUTT it?
+	text_jump UnknownText_0x1c08bc
+	db "@"
+; 0xceeb
+
 Functionceeb: ; ceeb
 	call Functioncef4
 	and $7f
@@ -10349,7 +10545,7 @@
 	pop af
 	ld [Buffer2], a
 .asm_cf97
-	ld hl, $4fa5
+	ld hl, Jumptable_cfa5
 	call Functionc6f5
 	jr nc, .asm_cf97
 	and $7f
@@ -10357,10 +10553,212 @@
 	ret
 ; cfa5
 
+Jumptable_cfa5: ; cfa5
+	dw Functioncfaf
+	dw Functiond002
+	dw Functioncff4
+	dw Functioncff1
+	dw Functiond010
+; cfaf
 
-INCBIN "baserom.gbc",$cfa5,$d0b3 - $cfa5
+Functioncfaf: ; cfaf
+	ld a, [PlayerState]
+	cp $4
+	jr z, .asm_cfc4
+	cp $8
+	jr z, .asm_cfc4
+	call GetFacingTileCoord
+	call GetTileCollision
+	cp $1
+	jr z, .asm_cfc7
 
+.asm_cfc4
+	ld a, $3
+	ret
 
+.asm_cfc7
+	call Function2d19
+	and a
+	jr nz, .asm_cfd0
+	ld a, $4
+	ret
+
+.asm_cfd0
+	ld d, a
+	ld a, [Buffer2]
+	ld e, a
+	callba FishAction
+	ld a, d
+	and a
+	jr z, .asm_cfee
+	ld [$d22e], a
+	ld a, e
+	ld [CurPartyLevel], a
+	ld a, $4
+	ld [BattleType], a
+	ld a, $2
+	ret
+
+.asm_cfee
+	ld a, $1
+	ret
+; cff1
+
+Functioncff1: ; cff1
+	ld a, $80
+	ret
+; cff4
+
+Functioncff4: ; cff4
+	ld a, $1
+	ld [$d1ef], a
+	ld hl, UnknownScript_0xd035
+	call Function31cd
+	ld a, $81
+	ret
+; d002
+
+Functiond002: ; d002
+	ld a, $2
+	ld [$d1ef], a
+	ld hl, UnknownScript_0xd01e
+	call Function31cd
+	ld a, $81
+	ret
+; d010
+
+Functiond010: ; d010
+	ld a, $0
+	ld [$d1ef], a
+	ld hl, UnknownScript_0xd027
+	call Function31cd
+	ld a, $81
+	ret
+; d01e
+
+UnknownScript_0xd01e: ; 0xd01e
+	2call UnknownScript_0xd07c
+	2writetext UnknownText_0xd0a9
+	2jump UnknownScript_0xd02d
+; 0xd027
+
+UnknownScript_0xd027: ; 0xd027
+	2call UnknownScript_0xd07c
+	2writetext UnknownText_0xd0a9
+
+UnknownScript_0xd02d: ; 0xd02d
+	loademote $8
+	3callasm Functiond095
+	loadmovesprites
+	end
+; 0xd035
+
+UnknownScript_0xd035: ; 0xd035
+	2call UnknownScript_0xd07c
+	3callasm Functiond06c
+	iffalse UnknownScript_0xd046
+	applymovement $0, MovementData_0xd062
+	2jump UnknownScript_0xd04a
+; 0xd046
+
+UnknownScript_0xd046: ; 0xd046
+	applymovement $0, MovementData_0xd05c
+
+UnknownScript_0xd04a: ; 0xd04a
+	pause 40
+	applymovement $0, MovementData_0xd069
+	2writetext UnknownText_0xd0a4
+	3callasm Functiond095
+	loadmovesprites
+	battlecheck
+	startbattle
+	returnafterbattle
+	end
+; 0xd05c
+
+MovementData_0xd05c: ; d05c
+	db $51
+	db $51
+	db $51
+	db $51
+	show_emote
+	step_end
+; d062
+
+MovementData_0xd062: ; d062
+	db $51
+	db $51
+	db $51
+	db $51
+	show_person
+	show_emote
+	step_end
+; d069
+
+MovementData_0xd069: ; d069
+	hide_emote
+	db $52
+	step_end
+; d06c
+
+Functiond06c: ; d06c
+	ld a, [PlayerDirection]
+	and $c
+	cp $4
+	ld a, $1
+	jr z, .asm_d078
+	xor a
+
+.asm_d078
+	ld [ScriptVar], a
+	ret
+; d07c
+
+UnknownScript_0xd07c: ; 0xd07c
+	reloadmappart
+	loadvar $ffd4, $0
+	special $0035
+	loademote $9
+	3callasm Functionb84b3
+	loademote $0
+	applymovement $0, MovementData_0xd093
+	pause 40
+	end
+; 0xd093
+
+MovementData_0xd093: ; d093
+	db $52
+	step_end
+; d095
+
+Functiond095: ; d095
+	xor a
+	ld [hBGMapMode], a
+	ld a, $1
+	ld [PlayerAction], a
+	call Function1ad2
+	call Functione4a
+	ret
+; d0a4
+
+UnknownText_0xd0a4: ; 0xd0a4
+	; Oh! A bite!
+	text_jump UnknownText_0x1c0958
+	db "@"
+; 0xd0a9
+
+UnknownText_0xd0a9: ; 0xd0a9
+	; Not even a nibble!
+	text_jump UnknownText_0x1c0965
+	db "@"
+; 0xd0ae
+
+UnknownText_0xd0ae: ; 0xd0ae
+	; Looks like there's nothing here.
+	text_jump UnknownText_0x1c0979
+	db "@"
+; 0xd0b3
+
 Functiond0b3: ; d0b3
 	call Functiond0bc
 	and $7f
@@ -10379,17 +10777,17 @@
 	jr .asm_d110
 
 .asm_d0ce
-	ld hl, $513e
-	ld de, $514e
+	ld hl, UnknownScript_0xd13e
+	ld de, UnknownScript_0xd14e
 	call Functiond119
 	call Function31cd
 	xor a
 	ld [MusicFade], a
-	ld de, $0000
+	ld de, MUSIC_NONE
 	call PlayMusic
 	call DelayFrame
 	call MaxVolume
-	ld de, $0013
+	ld de, MUSIC_BICYCLE
 	ld a, e
 	ld [CurMusic], a
 	call PlayMusic
@@ -10400,14 +10798,14 @@
 	ld hl, BikeFlags
 	bit 1, [hl]
 	jr nz, .asm_d10b
-	ld hl, $5158
-	ld de, $516b
+	ld hl, UnknownScript_0xd158
+	ld de, UnknownScript_0xd16b
 	call Functiond119
 	ld a, $3
 	jr .asm_d113
 
 .asm_d10b
-	ld hl, $5171
+	ld hl, UnknownScript_0xd171
 	jr .asm_d113
 
 .asm_d110
@@ -10433,9 +10831,9 @@
 	call GetMapPermission
 	call CheckOutdoorMap
 	jr z, .asm_d133
-	cp $4
+	cp CAVE
 	jr z, .asm_d133
-	cp $6
+	cp GATE
 	jr z, .asm_d133
 	jr .asm_d13c
 
@@ -10451,8 +10849,69 @@
 	ret
 ; d13e
 
-INCBIN "baserom.gbc",$d13e,$d186 - $d13e
+UnknownScript_0xd13e: ; 0xd13e
+	reloadmappart
+	special $0035
+	writecode $8, $1
+	2writetext UnknownText_0xd17c
+	closetext
+	loadmovesprites
+	special $0038
+	end
+; 0xd14e
 
+UnknownScript_0xd14e: ; 0xd14e
+	writecode $8, $1
+	loadmovesprites
+	special $0038
+	end
+; 0xd156
+
+INCBIN "baserom.gbc", $d156, $d158 - $d156
+
+UnknownScript_0xd158: ; 0xd158
+	reloadmappart
+	special $0035
+	writecode $8, $0
+	2writetext UnknownText_0xd181
+	closetext
+UnknownScript_0xd163
+	loadmovesprites
+	special $0038
+	special $003c
+	end
+; 0xd16b
+
+UnknownScript_0xd16b: ; 0xd16b
+	writecode $8, $0
+	2jump UnknownScript_0xd163
+; 0xd171
+
+UnknownScript_0xd171: ; 0xd171
+	2writetext UnknownText_0xd177
+	closetext
+	loadmovesprites
+	end
+; 0xd177
+
+UnknownText_0xd177: ; 0xd177
+	; You can't get off here!
+	text_jump UnknownText_0x1c099a
+	db "@"
+; 0xd17c
+
+UnknownText_0xd17c: ; 0xd17c
+	; got on the @ .
+	text_jump UnknownText_0x1c09b2
+	db "@"
+; 0xd181
+
+UnknownText_0xd181: ; 0xd181
+	; got off the @ .
+	text_jump UnknownText_0x1c09c7
+	db "@"
+; 0xd186
+
 TryCutOW:: ; d186
 	ld d, CUT
 	call CheckPartyMove
@@ -12977,7 +13436,7 @@
 	dec a
 	ld hl, PartyMon1Nickname
 	call SkipNames
-	ld de, $6035
+	ld de, Stringe035
 	call CopyName2
 	ld a, [PartyCount]
 	dec a
@@ -12994,7 +13453,7 @@
 	ld [hl], a
 	ld a, [PartyCount]
 	dec a
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld bc, $0030
 	call AddNTimes
 	xor a
@@ -13004,9 +13463,10 @@
 	ret
 ; e035
 
-INCBIN "baserom.gbc",$e035,$e039 - $e035
+Stringe035: ; e035
+	db "EGG@"
+; e039
 
-
 Functione039: ; e039
 
 	ld hl, PartyCount
@@ -13560,7 +14020,7 @@
 	ld a, b
 	and a
 	ret z
-	ld hl, $63d9
+	ld hl, UnknownText_0xe3d9
 	call PrintText
 	ld a, $1
 	call GetSRAMBank
@@ -13580,9 +14040,12 @@
 	ret
 ; e3d9
 
-INCBIN "baserom.gbc",$e3d9,$e3de - $e3d9
+UnknownText_0xe3d9: ; 0xe3d9
+	; was sent to BILL's PC.
+	text_jump UnknownText_0x1c0feb
+	db "@"
+; 0xe3de
 
-
 Functione3de: ; e3de
 	push de
 	call Function1d6e
@@ -13612,13 +14075,17 @@
 	ld a, [PartyCount] ; $dcd7
 	and a
 	ret nz
-	ld hl, $6417
+	ld hl, UnknownText_0xe417
 	call Function1d67
 	scf
 	ret
 ; e417 (3:6417)
 
-INCBIN "baserom.gbc",$e417,$e41c - $e417
+UnknownText_0xe417: ; 0xe417
+	; You gotta have #MON to call!
+	text_jump UnknownText_0x1c1006
+	db "@"
+; 0xe41c
 
 ; known jump sources: e401 (3:6401)
 Functione41c: ; e41c (3:641c)
@@ -13630,7 +14097,7 @@
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	ld hl, $643a
+	ld hl, UnknownText_0xe43a
 	call PrintText
 	pop af
 	ld [Options], a ; $cfcc
@@ -13638,7 +14105,11 @@
 	ret
 ; e43a (3:643a)
 
-INCBIN "baserom.gbc",$e43a,$e43f - $e43a
+UnknownText_0xe43a: ; 0xe43a
+	; What?
+	text_jump UnknownText_0x1c1024
+	db "@"
+; 0xe43f
 
 ; known jump sources: e407 (3:6407)
 Functione43f: ; e43f (3:643f)
@@ -13647,7 +14118,7 @@
 
 ; known jump sources: e404 (3:6404)
 Functione443: ; e443 (3:6443)
-	ld hl, $646f
+	ld hl, MenuDataHeader_0xe46f
 	call LoadMenuDataHeader
 	ld a, $1
 .asm_e44b
@@ -13661,8 +14132,8 @@
 	ld a, [$cf88]
 	push af
 	ld a, [MenuSelection] ; $cf74
-	ld hl, $64ba
-	rst $28
+	ld hl, Jumptable_e4ba
+	rst JumpTable
 	pop bc
 	ld a, b
 	jr nc, .asm_e44b
@@ -13671,16 +14142,80 @@
 	ret
 ; e46f (3:646f)
 
-INCBIN "baserom.gbc",$e46f,$e4ba - $e46f
+MenuDataHeader_0xe46f: ; 0xe46f
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData2_0xe477
+	db 1 ; default option
+; 0xe477
 
+MenuData2_0xe477: ; 0xe477
+	db $80 ; flags
+	db 0 ; items
+	dw MenuItems_e4c4
+	dw Function1f79
+	dw Strings_e47f
+; 0xe47f
+
+Strings_e47f: ; e47f
+	db "WITHDRAW ", $e1, $e2, "@"
+	db "DEPOSIT ", $e1, $e2, "@"
+	db "CHANGE BOX@"
+	db "MOVE ", $e1, $e2, " W/O MAIL@"
+	db "SEE YA!@"
+
 ; no known jump sources
 Jumptable_e4ba: ; e4ba (3:64ba)
 	dw Functione559
 	dw Functione4fe
 	dw Functione583
+	dw Functione4cd
+	dw Functione4cb
+; e4c4
 
-INCBIN "baserom.gbc",$e4c0,$e4fe - $e4c0
+MenuItems_e4c4: ; e4c4
+	db 5
+	db 0 ; WITHDRAW
+	db 1;  DEPOSIT
+	db 2 ; CHANGE BOX
+	db 3 ; MOVE PKMN
+	db 4 ; SEE YA!
+	db -1
+; e4cb
 
+Functione4cb: ; e4cb
+	scf
+	ret
+; e4cd
+
+Functione4cd: ; e4cd
+	call Function1d6e
+	callba Function44781
+	jr nc, .asm_e4e0
+	ld hl, UnknownText_0xe4f9
+	call PrintText
+	jr .asm_e4f4
+
+.asm_e4e0
+	callba Function14b34
+	jr c, .asm_e4f4
+	callba Functione2759
+	call Function222a
+	call ClearPCItemScreen
+
+.asm_e4f4
+	call Function1c17
+	and a
+	ret
+; e4f9
+
+UnknownText_0xe4f9: ; 0xe4f9
+	; There is a #MON holding MAIL. Please remove the MAIL.
+	text_jump UnknownText_0x1c102b
+	db "@"
+; 0xe4fe
+
 ; no known jump sources
 Functione4fe: ; e4fe (3:64fe)
 	call Function1d6e
@@ -13692,11 +14227,43 @@
 	ret
 ; e512 (3:6512)
 
-INCBIN "baserom.gbc",$e512,$e538 - $e512
+Functione512: ; e512
+	ld a, [PartyCount]
+	and a
+	jr z, .asm_e51e
+	cp $2
+	jr c, .asm_e526
+	and a
+	ret
 
+.asm_e51e
+	ld hl, UnknownText_0xe52e
+	call Function1d67
+	scf
+	ret
 
+.asm_e526
+	ld hl, UnknownText_0xe533
+	call Function1d67
+	scf
+	ret
+; e52e
+
+UnknownText_0xe52e: ; 0xe52e
+	; You don't have a single #MON!
+	text_jump UnknownText_0x1c1062
+	db "@"
+; 0xe533
+
+UnknownText_0xe533: ; 0xe533
+	; You can't deposit your last #MON!
+	text_jump UnknownText_0x1c1080
+	db "@"
+; 0xe538
+
+
 Functione538: ; e538
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld de, $0030
 	ld b, $0
 .asm_e540
@@ -13737,8 +14304,26 @@
 	ret
 ; e56d (3:656d)
 
-INCBIN "baserom.gbc",$e56d,$e583 - $e56d
+Functione56d: ; e56d
+	ld a, [PartyCount]
+	cp $6
+	jr nc, .asm_e576
+	and a
+	ret
 
+.asm_e576
+	ld hl, UnknownText_0xe57e
+	call Function1d67
+	scf
+	ret
+; e57e
+
+UnknownText_0xe57e: ; 0xe57e
+	; You can't take any more #MON.
+	text_jump UnknownText_0x1c10a2
+	db "@"
+; 0xe583
+
 ; no known jump sources
 Functione583: ; e583 (3:6583)
 	callba Functione35aa
@@ -13780,8 +14365,125 @@
 	ret
 ; e5d9
 
-INCBIN "baserom.gbc",$e5d9,$e698 - $e5d9
+Functione5d9: ; e5d9
+	ld a, [$db72]
+	cp b
+	jr z, .asm_e5f1
+	ld a, b
+	ld hl, Unknown_e66e
+	ld bc, $0003
+	call AddNTimes
+	ld a, [hli]
+	push af
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop af
+	jr .asm_e5f6
 
+.asm_e5f1
+	ld a, $1
+	ld hl, BoxCount
+
+.asm_e5f6
+	call GetSRAMBank
+	ld a, [hl]
+	ld bc, $0016
+	add hl, bc
+	ld b, a
+	ld c, $0
+	ld de, EnemyMoveAnimation
+	ld a, b
+	and a
+	jr z, .asm_e66a
+.asm_e608
+	push hl
+	push bc
+	ld a, c
+	ld bc, $0000
+	add hl, bc
+	ld bc, $0020
+	call AddNTimes
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ld [CurSpecies], a
+	call GetBaseData
+	pop bc
+	pop hl
+	push hl
+	push bc
+	ld a, c
+	ld bc, $035c
+	add hl, bc
+	call SkipNames
+	call CopyBytes
+	pop bc
+	pop hl
+	push hl
+	push bc
+	ld a, c
+	ld bc, $001f
+	add hl, bc
+	ld bc, $0020
+	call AddNTimes
+	ld a, [hl]
+	ld [de], a
+	inc de
+	pop bc
+	pop hl
+	push hl
+	push bc
+	ld a, c
+	ld bc, $0015
+	add hl, bc
+	ld bc, $0020
+	call AddNTimes
+	ld a, [hli]
+	and $f0
+	ld b, a
+	ld a, [hl]
+	and $f0
+	swap a
+	or b
+	ld b, a
+	ld a, [BaseGender]
+	cp b
+	ld a, $1
+	jr c, .asm_e662
+	xor a
+
+.asm_e662
+	ld [de], a
+	inc de
+	pop bc
+	pop hl
+	inc c
+	dec b
+	jr nz, .asm_e608
+
+.asm_e66a
+	call CloseSRAM
+	ret
+; e66e
+
+Unknown_e66e: ; e66e
+	dbw 2, $a000
+	dbw 2, $a450
+	dbw 2, $a8a0
+	dbw 2, $acf0
+	dbw 2, $b140
+	dbw 2, $b590
+	dbw 2, $b9e0
+	dbw 3, $a000
+	dbw 3, $a450
+	dbw 3, $a8a0
+	dbw 3, $acf0
+	dbw 3, $b140
+	dbw 3, $b590
+	dbw 3, $b9e0
+; e698
+
 Functione698: ; e698
 	ld hl, BreedMon1Species
 	ld de, TempMonSpecies
@@ -14119,12 +14821,12 @@
 	ld a, [$d142]
 	and a
 	jr nz, .asm_1010a
-	ld hl, $413b
-	ld de, $4153
+	ld hl, MenuDataHeader_0x1013b
+	ld de, Jumptable_10153
 	jr .asm_10110
 .asm_1010a
-	ld hl, $4124
-	ld de, $4137
+	ld hl, MenuDataHeader_0x10124
+	ld de, Jumptable_10137
 .asm_10110
 	push de
 	call LoadMenuDataHeader
@@ -14138,7 +14840,49 @@
 	jp [hl]
 ; 10124 (4:4124)
 
-INCBIN "baserom.gbc",$10124,$10159 - $10124
+MenuDataHeader_0x10124: ; 0x10124
+	db $40 ; flags
+	db 07, 13 ; start coords
+	db 11, 19 ; end coords
+	dw MenuData2_0x1012c
+	db 1 ; default option
+; 0x1012c
+
+MenuData2_0x1012c: ; 0x1012c
+	db $c0 ; flags
+	db 2 ; items
+	db "USE@"
+	db "QUIT@"
+; 0x10137
+
+Jumptable_10137: ; 10137
+	dw Function10159
+	dw Function10492
+; 1013b
+
+MenuDataHeader_0x1013b: ; 0x1013b
+	db $40 ; flags
+	db 05, 13 ; start coords
+	db 11, 19 ; end coords
+	dw MenuData2_0x10143
+	db 1 ; default option
+; 0x10143
+
+MenuData2_0x10143: ; 0x10143
+	db $c0 ; flags
+	db 3 ; items
+	db "USE@"
+	db "GIVE@"
+	db "QUIT@"
+; 0x10153
+
+Jumptable_10153: ; 10153
+	dw Function10159
+	dw Function103fd
+	dw Function10492
+; 10159
+
+Function10159: ; 10159
 	callba Function2c7bf
 	ret c
 	callba Function2c7fb
@@ -14254,8 +14998,8 @@
 INCBIN "baserom.gbc",$10249,$10311 - $10249
 	callba CheckItemMenu
 	ld a, [$d142]
-	ld hl, $431f
-	rst $28
+	ld hl, Jumptable_1031f
+	rst JumpTable
 	ret
 
 ; no known jump sources
@@ -14309,6 +15053,8 @@
 ; 10364 (4:4364)
 
 INCBIN "baserom.gbc",$10364,$103fd - $10364
+
+Function103fd: ; 103fd
 	ld a, [PartyCount] ; $dcd7
 	and a
 	jp z, Function10486
@@ -14368,9 +15114,13 @@
 	ret
 ; 1048d (4:448d)
 
-INCBIN "baserom.gbc",$1048d,$10493 - $1048d
+INCBIN "baserom.gbc", $1048d, $10492 - $1048d
 
+Function10492: ; 10492
+	ret
+; 10493
 
+
 Function10493: ; 10493
 	ld hl, Options
 	set 4, [hl]
@@ -14571,8 +15321,8 @@
 INCBIN "baserom.gbc",$10601,$10629 - $10601
 	callba CheckItemContext
 	ld a, [$d142]
-	ld hl, $4637
-	rst $28
+	ld hl, Jumptable_10637
+	rst JumpTable
 	ret
 
 ; no known jump sources
@@ -18152,7 +18902,7 @@
 	dbw 10, Function12ee6 ; Softboiled
 	dbw 13, Function12ee6 ; MilkDrink
 	dbw 11, Function12f26 ; Headbutt
-	dbw  5, Function12e94 ; Flash
+	dbw  5, Function12e94 ; Waterfall
 	dbw 12, Function12f3b ; RockSmash
 	dbw 14, Function12f50 ; SweetScent
 	dbw 15, OpenPartyStats
@@ -19898,7 +20648,7 @@
 
 
 Function1369d: ; 1369d
-	call Function13900
+	call ContestScore
 	callba Function105f79
 	call Function13819
 	ld a, [$d00a]
@@ -19906,7 +20656,7 @@
 	ld a, [$d00b]
 	ld [$d265], a
 	call GetPokemonName
-	ld hl, $7719
+	ld hl, UnknownText_0x13719
 	call PrintText
 	ld a, [EndFlypoint]
 	call Function13730
@@ -19913,7 +20663,7 @@
 	ld a, [MovementBuffer]
 	ld [$d265], a
 	call GetPokemonName
-	ld hl, $7702
+	ld hl, UnknownText_0x13702
 	call PrintText
 	ld a, [DefaultFlypoint]
 	call Function13730
@@ -19920,13 +20670,70 @@
 	ld a, [$d003]
 	ld [$d265], a
 	call GetPokemonName
-	ld hl, $76eb
+	ld hl, UnknownText_0x136eb
 	call PrintText
 	jp Function13807
 ; 136eb
 
-INCBIN "baserom.gbc",$136eb,$13730 - $136eb
+UnknownText_0x136eb: ; 0x136eb
+	text_jump UnknownText_0x1c10fa
+	start_asm
+; 0x136f0
 
+Function136f0: ; 136f0
+	ld de, SFX_1ST_PLACE
+	call PlaySFX
+	call WaitSFX
+	ld hl, UnknownText_0x136fd
+	ret
+; 136fd
+
+UnknownText_0x136fd: ; 0x136fd
+	; The winning score was @  points!
+	text_jump UnknownText_0x1c113f
+	db "@"
+; 0x13702
+
+UnknownText_0x13702: ; 0x13702
+	; Placing second was @ , who caught a @ !@ @
+	text_jump UnknownText_0x1c1166
+	start_asm
+; 0x13707
+
+Function13707: ; 13707
+	ld de, SFX_2ND_PLACE
+	call PlaySFX
+	call WaitSFX
+	ld hl, UnknownText_0x13714
+	ret
+; 13714
+
+UnknownText_0x13714: ; 0x13714
+	; The score was @  points!
+	text_jump UnknownText_0x1c1196
+	db "@"
+; 0x13719
+
+UnknownText_0x13719: ; 0x13719
+	; Placing third was @ , who caught a @ !@ @
+	text_jump UnknownText_0x1c11b5
+	start_asm
+; 0x1371e
+
+Function1371e: ; 1371e
+	ld de, SFX_3RD_PLACE
+	call PlaySFX
+	call WaitSFX
+	ld hl, UnknownText_0x1372b
+	ret
+; 1372b
+
+UnknownText_0x1372b: ; 0x1372b
+	; The score was @  points!
+	text_jump UnknownText_0x1c11e4
+	db "@"
+; 0x13730
+
 Function13730: ; 13730
 	dec a
 	jr z, .asm_13777
@@ -20140,72 +20947,92 @@
 	ret
 ; 13900
 
-Function13900: ; 13900
+ContestScore: ; 13900
+; Determine the player's score in the Bug Catching Contest.
+
 	xor a
 	ld [hProduct], a
 	ld [hMultiplicand], a
-	ld a, [$df9c]
+
+	ld a, [wContestMonSpecies] ; Species
 	and a
-	jr z, .asm_1397e
-	ld a, [$dfc1]
-	call Function1397f
-	ld a, [$dfc1]
-	call Function1397f
-	ld a, [$dfc1]
-	call Function1397f
-	ld a, [$dfc1]
-	call Function1397f
-	ld a, [$dfc3]
-	call Function1397f
-	ld a, [$dfc5]
-	call Function1397f
-	ld a, [$dfc7]
-	call Function1397f
-	ld a, [$dfc9]
-	call Function1397f
-	ld a, [$dfcb]
-	call Function1397f
-	ld a, [$dfb1]
+	jr z, .done
+
+	; Tally the following:
+
+	; Max HP * 4
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+
+	; Stats
+	ld a, [wContestMonAttack  + 1]
+	call .AddContestStat
+	ld a, [wContestMonDefense + 1]
+	call .AddContestStat
+	ld a, [wContestMonSpeed   + 1]
+	call .AddContestStat
+	ld a, [wContestMonSpclAtk + 1]
+	call .AddContestStat
+	ld a, [wContestMonSpclDef + 1]
+	call .AddContestStat
+
+	; DVs
+	ld a, [wContestMonAtkDefDV]
 	ld b, a
-	and $2
+	and 2
 	add a
 	add a
 	ld c, a
+
 	swap b
 	ld a, b
-	and $2
+	and 2
 	add a
 	add c
 	ld d, a
-	ld a, [$dfb2]
+
+	ld a, [wContestMonSpdSpcDV]
 	ld b, a
-	and $2
+	and 2
 	ld c, a
+
 	swap b
 	ld a, b
-	and $2
+	and 2
 	srl a
 	add c
 	add c
 	add d
 	add d
-	call Function1397f
-	ld a, [$dfbf]
+
+	call .AddContestStat
+
+	; Remaining HP / 8
+	ld a, [wContestMonHP + 1]
 	srl a
 	srl a
 	srl a
-	call Function1397f
-	ld a, [$df9d]
+	call .AddContestStat
+
+	; Whether it's holding an item
+	ld a, [wContestMonItem]
 	and a
-	jr z, .asm_1397e
-	ld a, $1
-	call Function1397f
+	jr z, .done
 
-.asm_1397e
+	ld a, 1
+	call .AddContestStat
+
+.done
 	ret
 ; 1397f
 
-Function1397f: ; 1397f
+.AddContestStat: ; 1397f
 	ld hl, hMultiplicand
 	add [hl]
 	ld [hl], a
@@ -20311,7 +21138,7 @@
 INCBIN "baserom.gbc",$139fe,$13a12 - $139fe
 
 Function13a12: ; 13a12
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld a, [hli]
 	or [hl]
 	jr z, .asm_13a2b
@@ -22054,43 +22881,73 @@
 ; 149c6
 
 Function149c6: ; 149c6
-	ld de, $1
-	ld hl, $49d3
+	ld de, 1
+	ld hl, Unknown_149d3
 	ld a, [StandingTile] ; $d4e4
 	call IsInArray
 	ret
-; 149d3 (5:49d3)
+; 149d3
 
-INCBIN "baserom.gbc",$149d3,$149dd - $149d3
+Unknown_149d3: ; 149d3
+	db $71 ; door
+	db $79
+	db $7a ; stairs
+	db $73
+	db $7b ; cave entrance
+	db $74
+	db $7c ; warp pad
+	db $75
+	db $7d
+	db -1
+; 149dd
 
 Function149dd:: ; 149dd
 	ld a, [StandingTile]
-	ld hl, $49ea
-	ld de, $0001
+	ld hl, Unknown_149ea
+	ld de, 1
 	call IsInArray
 	ret
 ; 149ea
 
-INCBIN "baserom.gbc",$149ea,$149f5 - $149ea
+Unknown_149ea: ; 149ea
+	db $08
+	db $18 ; tall grass
+	db $14 ; tall grass
+	db $28
+	db $29
+	db $48
+	db $49
+	db $4a
+	db $4b
+	db $4c
+	db -1
+; 149f5
 
 Function149f5: ; 149f5
 	ld a, c
-	ld hl, $4a00
-	ld de, $0001
+	ld hl, Unknown_14a00
+	ld de, 1
 	call IsInArray
 	ret
 ; 14a00
 
-INCBIN "baserom.gbc",$14a00,$14a07 - $14a00
+Unknown_14a00: ; 14a00
+	db $12 ; cut tree
+	db $1a ; cut tree
+	db $10 ; tall grass
+	db $18 ; tall grass
+	db $14 ; tall grass
+	db $1c ; tall grass
+	db -1
+; 14a07
 
-
 Function14a07:: ; 14a07
 	ld a, [StandingTile]
 	ld de, $001f
-	cp $71
+	cp $71 ; door
 	ret z
 	ld de, $0013
-	cp $7c
+	cp $7c ; warp pad
 	ret z
 	ld de, $0023
 	ret
@@ -22172,8 +23029,27 @@
 	ret
 ; 14ac2
 
-INCBIN "baserom.gbc",$14ac2,$14b54 - $14ac2
+INCBIN "baserom.gbc", $14ac2, $14b34 - $14ac2
 
+Function14b34: ; 14b34
+	ld hl, $52a6
+	call Function1d4f
+	call YesNoBox
+	call Function1c07
+	jr c, .asm_14b52
+	call Function14b89
+	jr c, .asm_14b52
+	call Function14b54
+	call Function14be3
+	call Function14b5a
+	and a
+	ret
+
+.asm_14b52
+	scf
+	ret
+; 14b54
+
 Function14b54: ; 14b54
 	ld a, $1
 	ld [$c2cd], a
@@ -27297,9 +28173,16 @@
 
 SECTION "bank9", ROMX, BANK[$9]
 
-INCBIN "baserom.gbc",$24000,$2400e - $24000
+Unknown_24000:: ; 24000
+	dw StringBuffer3
+	dw StringBuffer4
+	dw StringBuffer5
+	dw StringBuffer2
+	dw StringBuffer1
+	dw EnemyMonNick
+	dw BattleMonNick
+; 2400e
 
-
 Function2400e:: ; 2400e
 	ld hl, Function1c66
 	ld a, [$cf94]
@@ -27564,7 +28447,7 @@
 
 
 Function241a8:: ; 241a8
-	call asm_24329
+	call Function24329
 Function241ab:: ; 241ab
 	ld hl, $cfa6
 	res 7, [hl]
@@ -27594,9 +28477,47 @@
 	ret
 ; 241d5
 
-INCBIN "baserom.gbc",$241d5,$24216 - $241d5
 
+Function241d5: ; 241d5
+	call Function24329
+.asm_241d8
+	call Function2431a
+	call $402d ; This call jumps to the middle of an instruction.
+	call Function241fa
+	jr nc, .asm_241f9
+	call Function24270
+	jr c, .asm_241f9
+	ld a, [$cfa5]
+	bit 7, a
+	jr nz, .asm_241f9
+	call Function1bdd
+	ld c, a
+	ld a, [$cfa8]
+	and c
+	jr z, .asm_241d8
 
+.asm_241f9
+	ret
+; 241fa
+
+Function241fa: ; 241fa
+.asm_241fa
+	call Function24259
+	ret c
+	ld c, $1
+	ld b, $3
+	call $462d ; So does this one.
+	ret c
+	callba Function100337
+	ret c
+	ld a, [$cfa5]
+	bit 7, a
+	jr z, .asm_241fa
+	and a
+	ret
+; 24216
+
+
 Function24216: ; 24216
 .asm_24216
 	call Function2431a
@@ -27792,11 +28713,11 @@
 	ld l, a
 	ld a, [hl]
 	cp $ed
-	jr nz, asm_24329
+	jr nz, Function24329
 	ld a, [$cfab]
 	ld [hl], a
 
-asm_24329
+Function24329: ; 24329
 	ld a, [$cfa1]
 	ld b, a
 	ld a, [$cfa2]
@@ -27978,10 +28899,9 @@
 	ret
 ; 24423
 
-INCBIN "baserom.gbc",$24423,$24426 - $24423
 
-
-Function24426: ; 24426
+Function24423: ; 24423
+	ld a, [VramState]
 	bit 0, a
 	ret z
 	xor a
@@ -28142,7 +29062,7 @@
 ; 24528
 
 Function24528:: ; 24528
-	ld hl, $4547
+	ld hl, MenuDataHeader_0x24547
 	call Function1d3c
 	call Function1ce1
 	call WaitBGMap
@@ -28156,7 +29076,13 @@
 	ret
 ; 24547
 
-INCBIN "baserom.gbc",$24547,$2454f - $24547
+MenuDataHeader_0x24547: ; 0x24547
+        db $40 ; flags
+        db 04, 06 ; start coords
+        db 13, 14 ; end coords
+        dw NULL
+        db 1 ; default option
+; 0x2454f
 
 Function2454f: ; 2454f
 	ld hl, $d81e
@@ -28299,9 +29225,9 @@
 	and $f
 	or b
 	bit 0, a
-	jp nz, .asm_24644
+	jp nz, Function24644
 	bit 1, a
-	jp nz, .asm_2466f
+	jp nz, Function2466f
 	bit 2, a
 	jp nz, Function24673
 	bit 3, a
@@ -28317,10 +29243,14 @@
 	jr .asm_24609
 ; 24640
 
-INCBIN "baserom.gbc",$24640,$24644 - $24640
+Function24640: ; 24640
+	ld a, $ff
+	and a
+	ret
+; 24644
 
 
-.asm_24644: ; 24644
+Function24644: ; 24644
 	call Function1bee
 	ld a, [$cfa9]
 	dec a
@@ -28335,12 +29265,13 @@
 	ld [$d107], a
 	ld a, [MenuSelection]
 	cp $ff
-	jr z, .asm_2466f
+	jr z, Function2466f
 	ld a, $1
 	scf
 	ret
+; 2466f
 
-.asm_2466f
+Function2466f: ; 2466f
 	ld a, $2
 	scf
 	ret
@@ -28650,18 +29581,12 @@
 	ld a, [$cf91]
 	bit 0, a
 	jr nz, .asm_24866
-	ld de, .data_2485f
+	ld de, .string_2485f
 	call PlaceString
 	ret
 
-.data_2485f
-	db $82
-	db $80
-	db $8d
-	db $82
-	db $84
-	db $8b
-	db $50
+.string_2485f
+	db "CANCEL@"
 
 .asm_24866
 	ld d, h
@@ -29012,8 +29937,8 @@
 	push hl
 	ld a, [$cf94]
 	ld c, a
-	ld b, $0
-	ld hl, $4a91
+	ld b, 0
+	ld hl, Unknown_24a91
 	add hl, bc
 	add hl, bc
 	ld c, [hl]
@@ -29023,7 +29948,9 @@
 	ret
 ; 24a91 (9:4a91)
 
-INCBIN "baserom.gbc",$24a91,$24a97 - $24a91
+Unknown_24a91: ; 24a91
+	dw 0, 1, 2
+; 24a97
 
 ; known jump sources: 249bc (9:49bc), 249c6 (9:49c6)
 Function24a97: ; 24a97 (9:4a97)
@@ -29085,21 +30012,21 @@
 ; 0x24ae8
 
 Function24ae8: ; 24ae8
-	ld hl, $4b15
+	ld hl, MenuDataHeader_0x24b15
 	call Function1d3c
-	jr asm_24b01
+	jr Function24b01
 
 Function24af0: ; 24af0
-	ld hl, $4b1d
+	ld hl, MenuDataHeader_0x24b1d
 	call Function1d3c
-	jr asm_24b01
+	jr Function24b01
 
 Function24af8: ; 24af8
-	ld hl, $4b15
+	ld hl, MenuDataHeader_0x24b15
 	ld de, $000b
 	call Function1e2e
 
-asm_24b01
+Function24b01: ; 24b01
 	call Function1cbb
 	call Function1cfd
 	ld de, $0015
@@ -29110,8 +30037,22 @@
 	ret
 ; 24b15
 
-INCBIN "baserom.gbc",$24b15,$24b25 - $24b15
+MenuDataHeader_0x24b15: ; 0x24b15
+        db $40 ; flags
+        db 00, 11 ; start coords
+        db 02, 19 ; end coords
+        dw NULL
+        db 1 ; default option
+; 0x24b1d
 
+MenuDataHeader_0x24b1d: ; 0x24b1d
+        db $40 ; flags
+        db 11, 00 ; start coords
+        db 13, 08 ; end coords
+        dw NULL
+        db 1 ; default option
+; 0x24b25
+
 Function24b25: ; 24b25
 	ld hl, $c4ab
 	ld b, $1
@@ -29790,7 +30731,7 @@
 
 
 Function24fbf: ; 24fbf
-	ld hl, $50ed
+	ld hl, MenuDataHeader_0x250ed
 	call LoadMenuDataHeader
 	call Function24ff9
 	ret
@@ -29804,7 +30745,7 @@
 	ld [Buffer1], a
 	ld a, e
 	ld [Buffer2], a
-	ld hl, $50f5
+	ld hl, MenuDataHeader_0x250f5
 	call LoadMenuDataHeader
 	call Function24ff9
 	ret
@@ -29816,7 +30757,7 @@
 	ld [Buffer1], a
 	ld a, e
 	ld [Buffer2], a
-	ld hl, $50fd
+	ld hl, MenuDataHeader_0x250fd
 	call LoadMenuDataHeader
 	call Function24ff9
 	ret
@@ -30006,9 +30947,30 @@
 	ret
 ; 250ed
 
+MenuDataHeader_0x250ed: ; 0x250ed
+        db $40 ; flags
+        db 09, 15 ; start coords
+        db 11, 19 ; end coords
+        dw Function25097
+        db 0 ; default option
+; 0x250f5
 
-INCBIN "baserom.gbc",$250ed,$25105 - $250ed
+MenuDataHeader_0x250f5: ; 0x250f5
+        db $40 ; flags
+        db 15, 07 ; start coords
+        db 17, 19 ; end coords
+        dw Function25098
+        db -1 ; default option
+; 0x250fd
 
+MenuDataHeader_0x250fd: ; 0x250fd
+        db $40 ; flags
+        db 15, 07 ; start coords
+        db 17, 19 ; end coords
+        dw Function2509f
+        db 0 ; default option
+; 0x25105
+
 Function25105: ; 25105
 	ld a, [VramState] ; $d0ed
 	push af
@@ -30045,15 +31007,15 @@
 	call ClearTileMap
 	call DisableLCD
 	callba Function8833e
-	ld hl, $65c3
+	ld hl, CardRightCornerGFX
 	ld de, $91c0
 	ld bc, $10
-	ld a, $9
+	ld a, BANK(CardRightCornerGFX)
 	call FarCopyBytes
-	ld hl, $5523
+	ld hl, CardStatusGFX
 	ld de, $9290
-	ld bc, $560
-	ld a, $9
+	ld bc, $60 + $500
+	ld a, BANK(CardStatusGFX)
 	call FarCopyBytes
 	call Function25299
 	ld hl, $c540
@@ -30078,7 +31040,7 @@
 	ld a, [$cf63]
 	ld e, a
 	ld d, $0
-	ld hl, $519d
+	ld hl, Jumptable_2519d
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -30116,9 +31078,9 @@
 	ld d, $6
 	call Function253b0
 	call WaitBGMap
-	ld de, $5523
+	ld de, CardStatusGFX
 	ld hl, $9290
-	ld bc, $956
+	lb bc, BANK(CardStatusGFX), $6 + $50
 	call Request2bpp
 	call Function2530a
 	call Function251ab
@@ -30138,7 +31100,14 @@
 	ret
 ; 251e9 (9:51e9)
 
-INCBIN "baserom.gbc",$251e9,$251f4 - $251e9
+Function251e9: ; 251e9
+	ld a, [KantoBadges]
+	and a
+	ret z
+	ld a, $4
+	ld [$cf63], a
+	ret
+; 251f4
 
 ; no known jump sources
 Function251f4: ; 251f4 (9:51f4)
@@ -30147,13 +31116,13 @@
 	ld d, $6
 	call Function253b0
 	call WaitBGMap
-	ld de, $5583
+	ld de, LeaderGFX
 	ld hl, $9290
-	ld bc, $956
+	lb bc, BANK(LeaderGFX), $56
 	call Request2bpp
-	ld de, $6043
+	ld de, BadgeGFX
 	ld hl, $8000
-	ld bc, $92c
+	lb bc, BANK(BadgeGFX), $2c
 	call Request2bpp
 	call Function2536c
 	call Function251ab
@@ -30161,12 +31130,12 @@
 
 ; no known jump sources
 Function25221: ; 25221 (9:5221)
-	ld hl, $54c9
+	ld hl, Unknown_254c9
 	call Function25438
 	ld hl, $ffa9
 	ld a, [hl]
 	and $1
-	jr nz, .asm_25246
+	jr nz, Function25246
 	ld a, [hl]
 	and $20
 	jr nz, .asm_25235
@@ -30177,8 +31146,16 @@
 	ret
 ; 2523b (9:523b)
 
-INCBIN "baserom.gbc",$2523b,$25246 - $2523b
-.asm_25246
+Function2523b: ; 2523b
+	ld a, [KantoBadges]
+	and a
+	ret z
+	ld a, $4
+	ld [$cf63], a
+	ret
+; 25246
+
+Function25246: ; 25246
 	ld a, $6
 	ld [$cf63], a
 	ret
@@ -30190,13 +31167,13 @@
 	ld d, $6
 	call Function253b0
 	call WaitBGMap
-	ld de, $5ae3
+	ld de, LeaderGFX2
 	ld hl, $9290
-	ld bc, $956
+	lb bc, BANK(LeaderGFX2), $56
 	call Request2bpp
-	ld de, $6303
+	ld de, BadgeGFX2
 	ld hl, $8000
-	ld bc, $92c
+	lb bc, BANK(BadgeGFX2), $2c
 	call Request2bpp
 	call Function2536c
 	call Function251ab
@@ -30204,7 +31181,7 @@
 
 ; no known jump sources
 Function25279: ; 25279 (9:5279)
-	ld hl, $54c9
+	ld hl, Unknown_254c9
 	call Function25438
 	ld hl, $ffa9
 	ld a, [hl]
@@ -30229,10 +31206,10 @@
 	ld d, $5
 	call Function253b0
 	ld hl, $c4ca
-	ld de, $52ec
+	ld de, String_252ec
 	call PlaceString
 	ld hl, $c4f2
-	ld de, $52f9
+	ld de, Tilemap_252f9
 	call Function253a8
 	ld hl, $c4cf
 	ld de, PlayerName ; $d47d
@@ -30246,7 +31223,7 @@
 	ld bc, $2306
 	call PrintNum
 	ld hl, $c4dd
-	ld de, $52fc
+	ld de, Tilemap_252fc
 	call Function253a8
 	ld hl, $c4c2
 	ld bc, $507
@@ -30257,15 +31234,25 @@
 	ret
 ; 252ec (9:52ec)
 
-INCBIN "baserom.gbc",$252ec,$2530a - $252ec
+String_252ec: ; 252ec
+	db "NAME/", $4e
+	db $4e
+	db "MONEY@"
 
+Tilemap_252f9: ; 252f9
+	db $27, $28, $ff ; ID NO
+
+Tilemap_252fc: ; 252fc
+	db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________>
+; 2530a
+
 ; known jump sources: 251d0 (9:51d0)
 Function2530a: ; 2530a (9:530a)
 	ld hl, $c56a
-	ld de, $534c
+	ld de, String_2534c
 	call PlaceString
 	ld hl, $c5d6
-	ld de, $535c
+	ld de, String_2535c
 	call PlaceString
 	ld hl, PokedexCaught ; $de99
 	ld b, $20
@@ -30276,7 +31263,7 @@
 	call PrintNum
 	call Function25415
 	ld hl, $c542
-	ld de, $5366
+	ld de, Tilemap_25366
 	call Function253a8
 	ld a, [StatusFlags] ; $d84c
 	bit 0, a
@@ -30287,12 +31274,24 @@
 	ret
 ; 2534c (9:534c)
 
-INCBIN "baserom.gbc",$2534c,$2536c - $2534c
+String_2534c: ; 2534c
+	db "#DEX", $4e
+	db "PLAY TIME@"
 
+String_2535b: ; 2535b
+	db "@"
+
+String_2535c: ; 2535c
+	db "  BADGES▶@"
+
+Tilemap_25366: ; 25366
+	db $29, $2a, $2b, $2c, $2d, $ff
+; 2536c
+
 ; known jump sources: 2521a (9:521a), 25272 (9:5272)
 Function2536c: ; 2536c (9:536c)
 	ld hl, $c542
-	ld de, $53a2
+	ld de, Tilemap_253a2
 	call Function253a8
 	ld hl, $c56a
 	ld a, $29
@@ -30318,12 +31317,14 @@
 	jr nz, .asm_2538d
 	xor a
 	ld [$cf64], a
-	ld hl, $54c9
+	ld hl, Unknown_254c9
 	call Function25448
 	ret
 ; 253a2 (9:53a2)
 
-INCBIN "baserom.gbc",$253a2,$253a8 - $253a2
+Tilemap_253a2: ; 253a2
+	db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES"
+; 253a8
 
 ; known jump sources: 252b0 (9:52b0), 252da (9:52da), 25339 (9:5339), 25372 (9:5372), 253ae (9:53ae)
 Function253a8: ; 253a8 (9:53a8)
@@ -30458,7 +31459,7 @@
 	ld a, [de]
 	ld c, a
 	ld de, Sprites ; $c400
-	ld b, $8
+	ld b, 8
 .asm_25453
 	srl c
 	push bc
@@ -30473,7 +31474,7 @@
 	ld a, [$cf64]
 	add l
 	ld l, a
-	ld a, $0
+	ld a, 0
 	adc h
 	ld h, a
 	ld a, [hl]
@@ -30493,10 +31494,10 @@
 	ld a, [$cf65]
 	and $80
 	jr nz, .asm_25487
-	ld hl, $54a7
+	ld hl, Unknown_254a7
 	jr .asm_2548a
 .asm_25487
-	ld hl, $54b8
+	ld hl, Unknown_254b8
 .asm_2548a
 	ld a, [hli]
 	cp $ff
@@ -30522,9 +31523,81 @@
 	jr .asm_2548a
 ; 254a7 (9:54a7)
 
-INCBIN "baserom.gbc",$254a7,$265d3 - $254a7
+Unknown_254a7: ; 254a7
+	db $00, $00, $00, $00
+	db $00, $08, $01, $00
+	db $08, $00, $02, $00
+	db $08, $08, $03, $00
+	db $ff
 
+Unknown_254b8: ; 254b8
+	db $00, $00, $01, $20
+	db $00, $08, $00, $20
+	db $08, $00, $03, $20
+	db $08, $08, $02, $20
+	db $ff
 
+Unknown_254c9: ; 254c9
+; Template OAM data for each badge on the trainer card.
+; Format:
+	; y, x, palette
+	; cycle 1: face tile, in1 tile, in2 tile, in3 tile
+	; cycle 2: face tile, in1 tile, in2 tile, in3 tile
+
+	dw JohtoBadges
+
+	; Zephyrbadge
+	db $68, $18, $00
+	db $00, $20, $24, $20 | $80
+	db $00, $20, $24, $20 | $80
+
+	; Hivebadge
+	db $68, $38, $00
+	db $04, $20, $24, $20 | $80
+	db $04, $20, $24, $20 | $80
+
+	; Plainbadge
+	db $68, $58, $00
+	db $08, $20, $24, $20 | $80
+	db $08, $20, $24, $20 | $80
+
+	; Fogbadge
+	db $68, $78, $00
+	db $0c, $20, $24, $20 | $80
+	db $0c, $20, $24, $20 | $80
+
+	; Mineralbadge
+	db $80, $38, $00
+	db $10, $20, $24, $20 | $80
+	db $10, $20, $24, $20 | $80
+
+	; Stormbadge
+	db $80, $18, $00
+	db $14, $20, $24, $20 | $80
+	db $14, $20, $24, $20 | $80
+
+	; Glacierbadge
+	db $80, $58, $00
+	db $18, $20, $24, $20 | $80
+	db $18, $20, $24, $20 | $80
+
+	; Risingbadge
+	; X-flips on alternate cycles.
+	db $80, $78, $00
+	db $1c, $20, $24, $20 | $80
+	db $1c | $80, $20, $24, $20 | $80
+; 25523
+
+CardStatusGFX: INCBIN "gfx/misc/card_status.2bpp"
+
+LeaderGFX:  INCBIN "gfx/misc/leaders.2bpp"
+LeaderGFX2: INCBIN "gfx/misc/leaders.2bpp"
+BadgeGFX:   INCBIN "gfx/misc/badges.2bpp"
+BadgeGFX2:  INCBIN "gfx/misc/badges.2bpp"
+
+CardRightCornerGFX: INCBIN "gfx/misc/card_right_corner.2bpp"
+
+
 ProfOaksPC: ; 0x265d3
 	ld hl, OakPCText1
 	call Function1d4f
@@ -30818,7 +31891,7 @@
 _KrisDecorationMenu: ; 0x2675c
 	ld a, [$cf76]
 	push af
-	ld hl, $679a
+	ld hl, MenuDataHeader_0x2679a
 	call LoadMenuDataHeader
 	xor a
 	ld [$d1ee], a
@@ -30833,7 +31906,7 @@
 	ld [$d1ef], a
 	jr c, .asm_2678e
 	ld a, [MenuSelection]
-	ld hl, $67aa
+	ld hl, Unknown_267aa
 	call Function1fa7
 	jr nc, .asm_2676f
 
@@ -30846,8 +31919,42 @@
 	ret
 ; 0x2679a
 
-INCBIN "baserom.gbc",$2679a,$26806 - $2679a
+MenuDataHeader_0x2679a: ; 0x2679a
+	db $40 ; flags
+	db 00, 05 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData2_0x267a2
+	db 1 ; default option
+; 0x267a2
 
+MenuData2_0x267a2: ; 0x267a2
+	db $a0 ; flags
+	db 0 ; items
+	dw $d002
+	dw Function1f8d
+	dw Unknown_267aa
+; 0x267aa
+
+Unknown_267aa: ; 267aa
+	dw Function268b5, .bed
+	dw Function268ca, .carpet
+	dw Function268df, .plant
+	dw Function268f3, .poster
+	dw Function26908, .game
+	dw Function2691d, .ornament
+	dw Function26945, .big_doll
+	dw Function26959, .exit
+
+.bed      db "BED@"
+.carpet   db "CARPET@"
+.plant    db "PLANT@"
+.poster   db "POSTER@"
+.game     db "GAME CONSOLE@"
+.ornament db "ORNAMENT@"
+.big_doll db "BIG DOLL@"
+.exit     db "EXIT@"
+; 26806
+
 Function26806: ; 26806
 	xor a
 	ld [$cf76], a
@@ -30876,7 +31983,7 @@
 	ld hl, StringBuffer2 ; $d086
 	inc [hl]
 	ld e, [hl]
-	ld d, $0
+	ld d, 0
 	add hl, de
 	ld [hl], a
 	ret
@@ -30883,7 +31990,7 @@
 
 ; known jump sources: 2680d (9:680d)
 Function2683a: ; 2683a (9:683a)
-	ld hl, $6855
+	ld hl, Jumptable_26855
 .asm_2683d
 	ld a, [hli]
 	ld e, a
@@ -30906,12 +32013,294 @@
 	ret
 ; 26855 (9:6855)
 
-INCBIN "baserom.gbc",$26855,$269dd - $26855
+Jumptable_26855: ; 26855
+	dwb Function268bd, 0 ; bed
+	dwb Function268d2, 1 ; carpet
+	dwb Function268e7, 2 ; plant
+	dwb Function268fb, 3 ; poster
+	dwb Function26910, 4 ; game console
+	dwb Function26925, 5 ; ornament
+	dwb Function2694d, 6 ; big doll
+	dw 0 ; end
+; 2686c
 
+Function2686c: ; 2686c
+	xor a
+	ld hl, DefaultFlypoint
+	ld [hli], a
+	ld a, $ff
+	ld bc, $0010
+	call ByteFill
+	ret
+; 2687a
 
+Function2687a: ; 2687a
+.asm_2687a
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_26890
+	push hl
+	push af
+	ld b, $2
+	call Function26a3b
+	ld a, c
+	and a
+	pop bc
+	ld a, b
+	call nz, Function26891
+	pop hl
+	jr .asm_2687a
 
+.asm_26890
+	ret
+; 26891
+
+Function26891: ; 26891
+	ld hl, DefaultFlypoint
+	inc [hl]
+	ld e, [hl]
+	ld d, $0
+	add hl, de
+	ld [hl], a
+	ret
+; 2689b
+
+Function2689b: ; 2689b
+	push bc
+	push hl
+	call Function2686c
+	pop hl
+	call Function2687a
+	pop bc
+	ld a, [DefaultFlypoint]
+	and a
+	ret z
+	ld a, c
+	call Function26891
+	ld a, $0
+	call Function26891
+	scf
+	ret
+; 268b5
+
+Function268b5: ; 268b5
+	call Function268bd
+	call Function2695b
+	xor a
+	ret
+; 268bd
+
+Function268bd: ; 268bd
+	ld hl, $68c5
+	ld c, 1
+	jp Function2689b
+; 268c5
+
+Unknown_268c5: ; 268c5
+	db 2, 3, 4, 5, $ff
+; 268ca
+
+Function268ca: ; 268ca
+	call Function268d2
+	call Function2695b
+	xor a
+	ret
+; 268d2
+
+Function268d2: ; 268d2
+	ld hl, Unknown_268da
+	ld c, 6
+	jp Function2689b
+; 268da
+
+Unknown_268da: ; 268da
+	db 7, 8, 9, 10, $ff
+; 268df
+
+Function268df: ; 268df
+	call Function268e7
+	call Function2695b
+	xor a
+	ret
+; 268e7
+
+Function268e7: ; 268e7
+	ld hl, Unknown_268ef
+	ld c, 11
+	jp Function2689b
+; 268ef
+
+Unknown_268ef: ; 268ef
+	db 12, 13, 14, $ff
+; 268f3
+
+Function268f3: ; 268f3
+	call Function268fb
+	call Function2695b
+	xor a
+	ret
+; 268fb
+
+Function268fb: ; 268fb
+	ld hl, Unknown_26903
+	ld c, 15
+	jp Function2689b
+; 26903
+
+Unknown_26903: ; 26903
+	db 16, 17, 18, 19, $ff
+; 26908
+
+Function26908: ; 26908
+	call Function26910
+	call Function2695b
+	xor a
+	ret
+; 26910
+
+Function26910: ; 26910
+	ld hl, Unknown_26918
+	ld c, 20
+	jp Function2689b
+; 26918
+
+Unknown_26918: ; 26918
+	db 21, 22, 23, 24, $ff
+; 2691d
+
+Function2691d: ; 2691d
+	call Function26925
+	call Function2695b
+	xor a
+	ret
+; 26925
+
+Function26925: ; 26925
+	ld hl, Unknown_2692d
+	ld c, 29
+	jp Function2689b
+; 2692d
+
+Unknown_2692d: ; 2692d
+	db 30, 31, 32, 33, 34, 35, 36, 37, 38, 39
+	db 40, 41, 42, 43, 44, 45, 46, 47, 48, 49
+	db 50, 51, 52, $ff
+; 26945
+
+Function26945: ; 26945
+	call Function2694d
+	call Function2695b
+	xor a
+	ret
+; 2694d
+
+Function2694d: ; 2694d
+	ld hl, Unknown_26955
+	ld c, 25
+	jp Function2689b
+; 26955
+
+Unknown_26955: ; 26955
+	db 26, 27, 28, $ff
+; 26959
+
+Function26959: ; 26959
+	scf
+	ret
+; 2695b
+
+Function2695b: ; 2695b
+	ld a, [DefaultFlypoint]
+	and a
+	jr z, .asm_269a9
+	cp $8
+	jr nc, .asm_2697b
+	xor a
+	ld [$cf76], a
+	ld hl, MenuDataHeader_0x269b5
+	call LoadMenuDataHeader
+	call Function1e5d
+	jr c, .asm_26977
+	call Function26a02
+
+.asm_26977
+	call Function1c07
+	ret
+
+.asm_2697b
+	ld hl, DefaultFlypoint
+	ld e, [hl]
+	dec [hl]
+	ld d, $0
+	add hl, de
+	ld [hl], $ff
+	call Function1d6e
+	ld hl, MenuDataHeader_0x269c5
+	call Function1d3c
+	xor a
+	ld [hBGMapMode], a
+	call Function352f
+	xor a
+	ld [$d0e4], a
+	call Function350c
+	ld a, [$cf73]
+	cp $2
+	jr z, .asm_269a5
+	call Function26a02
+
+.asm_269a5
+	call Function1c07
+	ret
+
+.asm_269a9
+	ld hl, UnknownText_0x269b0
+	call Function1d67
+	ret
+; 269b0
+
+UnknownText_0x269b0: ; 0x269b0
+	; There's nothing to choose.
+	text_jump UnknownText_0x1bc471
+	db "@"
+; 0x269b5
+
+MenuDataHeader_0x269b5: ; 0x269b5
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData2_0x269bd
+	db 1 ; default option
+; 0x269bd
+
+MenuData2_0x269bd: ; 0x269bd
+	db $a0 ; flags
+	db 0 ; items
+	dw $d002
+	dw Function269f3
+	dw DecorationAttributes
+; 0x269c5
+
+MenuDataHeader_0x269c5: ; 0x269c5
+	db $40 ; flags
+	db 01, 01 ; start coords
+	db 16, 18 ; end coords
+	dw MenuData2_0x269cd
+	db 1 ; default option
+; 0x269cd
+
+MenuData2_0x269cd: ; 0x269cd
+	db $10 ; flags
+        db 8, 0 ; rows, columns
+        db 1 ; horizontal spacing
+        dbw 0, $d002 ; text pointer
+        dbw BANK(Function269f3), Function269f3
+        dbw 0, 0
+        dbw 0, 0
+; 269dd
+
+
 Function269dd: ; 269dd
-	ld hl, $6a4f
+	ld hl, DecorationAttributes
 	ld bc, $0006
 	call AddNTimes
 	ret
@@ -30926,9 +32315,46 @@
 	ret
 ; 269f3
 
-INCBIN "baserom.gbc",$269f3,$26a30 - $269f3
+Function269f3: ; 269f3
+	ld a, [MenuSelection]
+	push de
+	call Function269dd
+	call Function26c72
+	pop hl
+	call PlaceString
+	ret
+; 26a02
 
+Function26a02: ; 26a02
+	ld a, [MenuSelection]
+	call Function269dd
+	ld de, $0002
+	add hl, de
+	ld a, [hl]
+	ld hl, $6a12
+	rst JumpTable
+	ret
+; 26a12
 
+Jumptable_26a12: ; 26a12
+	dw Function26ce3
+	dw Function26ce5
+	dw Function26ceb
+	dw Function26cf1
+	dw Function26cf7
+	dw Function26cfd
+	dw Function26d03
+	dw Function26d09
+	dw Function26d0f
+	dw Function26d15
+	dw Function26d1b
+	dw Function26d21
+	dw Function26d27
+	dw Function26db3
+	dw Function26dc9
+; 26a30
+
+
 Function26a30: ; 26a30
 	call Function269dd
 	ld de, $0003
@@ -30957,7 +32383,61 @@
 	ret
 ; 26a4f
 
-INCBIN "baserom.gbc",$26a4f,$26b8d - $26a4f
+DecorationAttributes: ; 26a4f
+	db $01, $00, $00, $00, $00, $00
+	db $01, $01, $02, $00, $00, $00
+	db $02, $12, $01, $a4, $02, $1b
+	db $02, $14, $01, $a5, $02, $1c
+	db $02, $15, $01, $a6, $02, $1d
+	db $02, $13, $01, $a7, $02, $1e
+	db $01, $01, $04, $00, $00, $00
+	db $03, $16, $03, $a8, $02, $08
+	db $03, $17, $03, $a9, $02, $0b
+	db $03, $18, $03, $aa, $02, $0e
+	db $03, $19, $03, $ab, $02, $11
+	db $01, $01, $06, $00, $00, $00
+	db $01, $02, $05, $ac, $02, $20
+	db $01, $03, $05, $ad, $02, $21
+	db $01, $04, $05, $ae, $02, $22
+	db $01, $01, $08, $00, $00, $00
+	db $01, $05, $07, $af, $02, $1f
+	db $04, $19, $07, $b0, $02, $23
+	db $04, $23, $07, $b1, $02, $24
+	db $04, $27, $07, $b2, $02, $25
+	db $01, $01, $0a, $00, $00, $00
+	db $01, $06, $09, $b3, $02, $5c
+	db $01, $07, $09, $b4, $02, $5b
+	db $01, $08, $09, $b5, $02, $51
+	db $01, $09, $09, $b6, $02, $57
+	db $01, $01, $0c, $00, $00, $00
+	db $06, $8f, $0b, $cf, $02, $33
+	db $06, $5f, $0b, $d0, $02, $50
+	db $06, $83, $0b, $d1, $02, $47
+	db $01, $01, $0e, $00, $00, $00
+	db $05, $19, $0d, $b7, $02, $8e
+	db $01, $0c, $0d, $b8, $02, $34
+	db $05, $23, $0d, $b9, $02, $8f
+	db $05, $27, $0d, $ba, $02, $94
+	db $05, $01, $0d, $bb, $02, $93
+	db $05, $04, $0d, $bc, $02, $90
+	db $05, $07, $0d, $bd, $02, $89
+	db $05, $3c, $0d, $be, $02, $8d
+	db $05, $32, $0d, $bf, $02, $8c
+	db $05, $78, $0d, $c0, $02, $92
+	db $05, $81, $0d, $c1, $02, $88
+	db $05, $2b, $0d, $c2, $02, $85
+	db $05, $5e, $0d, $c3, $02, $86
+	db $05, $5a, $0d, $c4, $02, $84
+	db $05, $58, $0d, $c5, $02, $95
+	db $05, $64, $0d, $c6, $02, $9b
+	db $05, $0d, $0d, $c7, $02, $83
+	db $05, $c9, $0d, $c8, $02, $80
+	db $05, $4a, $0d, $c9, $02, $81
+	db $05, $42, $0d, $ca, $02, $9a
+	db $05, $48, $0d, $cb, $02, $98
+	db $01, $0a, $0d, $cd, $02, $5e
+	db $01, $0b, $0d, $ce, $02, $5f
+; 26b8d
 
 
 DecorationNames: ; 26b8d
@@ -31086,9 +32566,355 @@
 	ret
 ; 26ce3
 
-INCBIN "baserom.gbc",$26ce3,$26eea - $26ce3
+Function26ce3: ; 26ce3
+	scf
+	ret
+; 26ce5
 
+Function26ce5: ; 26ce5
+	ld hl, Bed
+	jp Function26d2d
+; 26ceb
 
+Function26ceb: ; 26ceb
+	ld hl, Bed
+	jp Function26d86
+; 26cf1
+
+Function26cf1: ; 26cf1
+	ld hl, Carpet
+	jp Function26d2d
+; 26cf7
+
+Function26cf7: ; 26cf7
+	ld hl, Carpet
+	jp Function26d86
+; 26cfd
+
+Function26cfd: ; 26cfd
+	ld hl, Plant
+	jp Function26d2d
+; 26d03
+
+Function26d03: ; 26d03
+	ld hl, Plant
+	jp Function26d86
+; 26d09
+
+Function26d09: ; 26d09
+	ld hl, Poster
+	jp Function26d2d
+; 26d0f
+
+Function26d0f: ; 26d0f
+	ld hl, Poster
+	jp Function26d86
+; 26d15
+
+Function26d15: ; 26d15
+	ld hl, Console
+	jp Function26d2d
+; 26d1b
+
+Function26d1b: ; 26d1b
+	ld hl, Console
+	jp Function26d86
+; 26d21
+
+Function26d21: ; 26d21
+	ld hl, BigDoll
+	jp Function26d2d
+; 26d27
+
+Function26d27: ; 26d27
+	ld hl, BigDoll
+	jp Function26d86
+; 26d2d
+
+Function26d2d: ; 26d2d
+	ld a, [hl]
+	ld [Buffer1], a
+	push hl
+	call Function26d46
+	jr c, .asm_26d43
+	ld a, $1
+	ld [$d1ee], a
+	pop hl
+	ld a, [MenuSelection]
+	ld [hl], a
+	xor a
+	ret
+
+.asm_26d43
+	pop hl
+	xor a
+	ret
+; 26d46
+
+Function26d46: ; 26d46
+	ld a, [Buffer1]
+	and a
+	jr z, .asm_26d6d
+	ld b, a
+	ld a, [MenuSelection]
+	cp b
+	jr z, .asm_26d7e
+	ld a, [MenuSelection]
+	ld hl, StringBuffer4
+	call Function269e7
+	ld a, [Buffer1]
+	ld hl, StringBuffer3
+	call Function269e7
+	ld hl, UnknownText_0x26ee0
+	call Function1d67
+	xor a
+	ret
+
+.asm_26d6d
+	ld a, [MenuSelection]
+	ld hl, StringBuffer3
+	call Function269e7
+	ld hl, UnknownText_0x26edb
+	call Function1d67
+	xor a
+	ret
+
+.asm_26d7e
+	ld hl, UnknownText_0x26ee5
+	call Function1d67
+	scf
+	ret
+; 26d86
+
+Function26d86: ; 26d86
+	ld a, [hl]
+	ld [Buffer1], a
+	xor a
+	ld [hl], a
+	ld a, [Buffer1]
+	and a
+	jr z, .asm_26dab
+	ld a, $1
+	ld [$d1ee], a
+	ld a, [Buffer1]
+	ld [MenuSelection], a
+	ld hl, StringBuffer3
+	call Function269e7
+	ld hl, UnknownText_0x26ed1
+	call Function1d67
+	xor a
+	ret
+
+.asm_26dab
+	ld hl, UnknownText_0x26ed6
+	call Function1d67
+	xor a
+	ret
+; 26db3
+
+Function26db3: ; 26db3
+	ld hl, UnknownText_0x26e41
+	call Function26e70
+	jr c, .asm_26dc7
+	call Function26de3
+	jr c, .asm_26dc7
+	ld a, $1
+	ld [$d1ee], a
+	jr Function26dd6
+
+.asm_26dc7
+	xor a
+	ret
+
+Function26dc9: ; 26dc9
+	ld hl, UnknownText_0x26e6b
+	call Function26e70
+	jr nc, .asm_26dd3
+	xor a
+	ret
+
+.asm_26dd3
+	call Function26e46
+
+Function26dd6: ; 26dd6
+	call Function26e9a
+	ld a, [$d1ec]
+	ld [hl], a
+	ld a, [$d1ed]
+	ld [de], a
+	xor a
+	ret
+; 26de3
+
+Function26de3: ; 26de3
+	ld a, [$d1ec]
+	and a
+	jr z, .asm_26e11
+	ld b, a
+	ld a, [MenuSelection]
+	cp b
+	jr z, .asm_26e2b
+	ld a, b
+	ld hl, StringBuffer3
+	call Function269e7
+	ld a, [MenuSelection]
+	ld hl, StringBuffer4
+	call Function269e7
+	ld a, [MenuSelection]
+	ld [$d1ec], a
+	call Function26e33
+	ld hl, UnknownText_0x26ee0
+	call Function1d67
+	xor a
+	ret
+
+.asm_26e11
+	ld a, [MenuSelection]
+	ld [$d1ec], a
+	call Function26e33
+	ld a, [MenuSelection]
+	ld hl, StringBuffer3
+	call Function269e7
+	ld hl, UnknownText_0x26edb
+	call Function1d67
+	xor a
+	ret
+
+.asm_26e2b
+	ld hl, UnknownText_0x26ee5
+	call Function1d67
+	scf
+	ret
+; 26e33
+
+Function26e33: ; 26e33
+	ld a, [MenuSelection]
+	ld b, a
+	ld a, [$d1ed]
+	cp b
+	ret nz
+	xor a
+	ld [$d1ed], a
+	ret
+; 26e41
+
+UnknownText_0x26e41: ; 0x26e41
+	; Which side do you want to put it on?
+	text_jump UnknownText_0x1bc48c
+	db "@"
+; 0x26e46
+
+Function26e46: ; 26e46
+	ld a, [$d1ec]
+	and a
+	jr z, .asm_26e63
+	ld hl, StringBuffer3
+	call Function269e7
+	ld a, $1
+	ld [$d1ee], a
+	xor a
+	ld [$d1ec], a
+	ld hl, UnknownText_0x26ed1
+	call Function1d67
+	xor a
+	ret
+
+.asm_26e63
+	ld hl, UnknownText_0x26ed6
+	call Function1d67
+	xor a
+	ret
+; 26e6b
+
+UnknownText_0x26e6b: ; 0x26e6b
+	; Which side do you want to put away?
+	text_jump UnknownText_0x1bc4b2
+	db "@"
+; 0x26e70
+
+Function26e70: ; 26e70
+	call Function1d4f
+	ld hl, MenuDataHeader_0x26eab
+	call Function1dab
+	call Function1c07
+	call Function1c66
+	jr c, .asm_26e98
+	ld a, [$cfa9]
+	cp $3
+	jr z, .asm_26e98
+	ld [Buffer2], a
+	call Function26e9a
+	ld a, [hl]
+	ld [$d1ec], a
+	ld a, [de]
+	ld [$d1ed], a
+	xor a
+	ret
+
+.asm_26e98
+	scf
+	ret
+; 26e9a
+
+Function26e9a: ; 26e9a
+	ld hl, RightOrnament
+	ld de, LeftOrnament
+	ld a, [Buffer2]
+	cp $1
+	ret z
+	push hl
+	ld h, d
+	ld l, e
+	pop de
+	ret
+; 26eab
+
+MenuDataHeader_0x26eab: ; 0x26eab
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 07, 13 ; end coords
+	dw MenuData2_0x26eb3
+	db 1 ; default option
+; 0x26eb3
+
+MenuData2_0x26eb3: ; 0x26eb3
+	db $80 ; flags
+	db 3 ; items
+	db "RIGHT SIDE@"
+	db "LEFT SIDE@"
+	db "CANCEL@"
+; 0x26ed1
+
+UnknownText_0x26ed1: ; 0x26ed1
+	; Put away the @ .
+	text_jump UnknownText_0x1bc4d7
+	db "@"
+; 0x26ed6
+
+UnknownText_0x26ed6: ; 0x26ed6
+	; There's nothing to put away.
+	text_jump UnknownText_0x1bc4ec
+	db "@"
+; 0x26edb
+
+UnknownText_0x26edb: ; 0x26edb
+	; Set up the @ .
+	text_jump UnknownText_0x1bc509
+	db "@"
+; 0x26ee0
+
+UnknownText_0x26ee0: ; 0x26ee0
+	; Put away the @ and set up the @ .
+	text_jump UnknownText_0x1bc51c
+	db "@"
+; 0x26ee5
+
+UnknownText_0x26ee5: ; 0x26ee5
+	; That's already set up.
+	text_jump UnknownText_0x1bc546
+	db "@"
+; 0x26eea
+
 Function26eea: ; 26eea
 	ld a, c
 	ld h, d
@@ -31126,8 +32952,8 @@
 	push hl
 	push de
 	ld e, a
-	ld d, $0
-	ld hl, $6f2b
+	ld d, 0
+	ld hl, Unknown_26f2b
 	add hl, de
 	ld a, [hl]
 	pop de
@@ -31135,9 +32961,35 @@
 	ret
 ; 26f19
 
-INCBIN "baserom.gbc",$26f19,$26f59 - $26f19
+Function26f19: ; 26f19
+	ld hl, Unknown_26f2b
+.asm_26f1c
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_26f2a
+	push hl
+	ld b, $1
+	call Function26a3b
+	pop hl
+	jr .asm_26f1c
 
+.asm_26f2a
+	ret
+; 26f2b
 
+Unknown_26f2b: ; 26f2b
+	db $02, $03, $04, $05, $07
+	db $08, $09, $0a, $0c, $0d
+	db $0e, $10, $11, $12, $13
+	db $15, $16, $17, $18, $1e
+	db $1f, $20, $21, $22, $23
+	db $24, $25, $26, $27, $28
+	db $29, $2a, $2b, $2c, $2d
+	db $2e, $2f, $30, $31, $32
+	db $1a, $1b, $1c, $33, $34
+	db $ff
+; 26f59
+
 Function26f59:: ; 26f59
 	ld a, b
 	ld hl, Table26f5f
@@ -31155,11 +33007,11 @@
 
 Function26f69: ; 26f69
 	ld a, [Poster]
-	ld hl, $6f84
-	ld de, $0003
+	ld hl, Unknown_26f84
+	ld de, 3
 	call IsInArray
 	jr c, .asm_26f7d
-	ld de, $6fb8
+	ld de, UnknownScript_0x26fb8
 	ld b, $9
 	ret
 
@@ -31172,9 +33024,63 @@
 	ret
 ; 26f84
 
-INCBIN "baserom.gbc",$26f84,$26fb9 - $26f84
+Unknown_26f84: ; 26f84
+	dbw $10, UnknownScript_0x26f91
+	dbw $11, UnknownScript_0x26fa0
+	dbw $12, UnknownScript_0x26fa8
+	dbw $13, UnknownScript_0x26fb0
+	db $ff
+; 26f91
 
+UnknownScript_0x26f91: ; 0x26f91
+	loadfont
+	2writetext UnknownText_0x26f9b
+	closetext
+	special $0026
+	loadmovesprites
+	end
+; 0x26f9b
 
+UnknownText_0x26f9b: ; 0x26f9b
+	; It's the TOWN MAP.
+	text_jump UnknownText_0x1bc55d
+	db "@"
+; 0x26fa0
+
+UnknownScript_0x26fa0: ; 0x26fa0
+	jumptext UnknownText_0x26fa3
+; 0x26fa3
+
+UnknownText_0x26fa3: ; 0x26fa3
+	; It's a poster of a cute PIKACHU.
+	text_jump UnknownText_0x1bc570
+	db "@"
+; 0x26fa8
+
+UnknownScript_0x26fa8: ; 0x26fa8
+	jumptext UnknownText_0x26fab
+; 0x26fab
+
+UnknownText_0x26fab: ; 0x26fab
+	; It's a poster of a cute CLEFAIRY.
+	text_jump UnknownText_0x1bc591
+	db "@"
+; 0x26fb0
+
+UnknownScript_0x26fb0: ; 0x26fb0
+	jumptext UnknownText_0x26fb3
+; 0x26fb3
+
+UnknownText_0x26fb3: ; 0x26fb3
+	; It's a poster of a cute JIGGLYPUFF.
+	text_jump UnknownText_0x1bc5b3
+	db "@"
+; 0x26fb8
+
+UnknownScript_0x26fb8: ; 26fb8
+	end
+; 26fb9
+
 Function26fb9: ; 26fb9
 	ld a, [LeftOrnament]
 	jr Function26fc8
@@ -31191,22 +33097,37 @@
 	ld c, a
 	ld de, StringBuffer3
 	call Function26eea
-	ld b, $9
-	ld de, $6fd5
+	ld b, BANK(Unknown_26fd5)
+	ld de, Unknown_26fd5
 	ret
 ; 26fd5
 
-INCBIN "baserom.gbc",$26fd5,$26fdd - $26fd5
+Unknown_26fd5: ; 26fd5
+	dbw $53, UnknownText_0x26fd8
+; 26fd8
 
+UnknownText_0x26fd8: ; 0x26fd8
+	; It's an adorable @ .
+	text_jump UnknownText_0x1bc5d7
+	db "@"
+; 0x26fdd
 
 Function26fdd: ; 26fdd
-	ld b, $9
-	ld de, $6fe3
+	ld b, BANK(Unknown_26fe3)
+	ld de, Unknown_26fe3
 	ret
 ; 26fe3
 
-INCBIN "baserom.gbc",$26fe3,$26feb - $26fe3
+Unknown_26fe3: ; 26fe3
+	dbw $53, UnknownText_0x26fe6
+; 26fe6
 
+UnknownText_0x26fe6: ; 0x26fe6
+	; A giant doll! It's fluffy and cuddly.
+	text_jump UnknownText_0x1bc5ef
+	db "@"
+; 0x26feb
+
 Function26feb: ; 26feb
 	ld de, $0004
 	ld a, [Bed]
@@ -31383,7 +33304,7 @@
 	ld a, [de]
 	ld b, a
 	callba GetItem
-	ld hl, $71de
+	ld hl, Unknown_271de
 .asm_271b9
 	ld a, [hli]
 	cp b
@@ -31420,7 +33341,31 @@
 	ret
 ; 271de
 
-INCBIN "baserom.gbc",$271de,$271f4 - $271de
+Unknown_271de: ; 271de
+; Consumable items?
+	db HELD_BERRY
+	db $02
+	db $05
+	db HELD_HEAL_POISON
+	db HELD_HEAL_FREEZE
+	db HELD_HEAL_BURN
+	db HELD_HEAL_SLEEP
+	db HELD_HEAL_PARALYZE
+	db HELD_HEAL_STATUS
+	db $1e
+	db $1f
+	db $20
+	db $21
+	db $22
+	db $23
+	db $24
+	db $25
+	db $26
+	db $47
+	db HELD_ESCAPE
+	db HELD_CRITICAL_UP
+	db $ff
+; 271f4
 
 MoveEffectsPointers: ; 271f4
 INCLUDE "battle/moves/move_effects_pointers.asm"
@@ -31910,7 +33855,7 @@
 ; 283b2
 
 Function283b2: ; 283b2
-	ld de, Unknown_283ed
+	ld de, UnknownText_0x283ed
 	ld b, $a
 .asm_283b7
 	call DelayFrame
@@ -31941,8 +33886,11 @@
 	ret
 ; 283ed
 
-Unknown_283ed:
-INCBIN "baserom.gbc",$283ed,$283f2 - $283ed
+UnknownText_0x283ed: ; 0x283ed
+	; Too much time has elapsed. Please try again.
+	text_jump UnknownText_0x1c4183
+	db "@"
+; 0x283f2
 
 Function283f2: ; 283f2
 	ld a, $1
@@ -32548,7 +34496,21 @@
 ; 28785
 
 Unknown_28785: ; 28785
-INCBIN "baserom.gbc",$28785,$2879e - $28785
+; Alternate mappings for unused items.
+	db $19, LEFTOVERS
+	db $2d, BITTER_BERRY
+	db $32, GOLD_BERRY
+	db $5a, BERRY
+	db $64, BERRY
+	db $78, BERRY
+	db $87, BERRY
+	db $be, BERRY
+	db $c3, BERRY
+	db $dc, BERRY
+	db $fa, BERRY
+	db $ff, BERRY
+	db $00
+; 2879e
 
 Function2879e: ; 2879e
 .asm_2879e
@@ -33016,8 +34978,24 @@
 	ret
 ; 28b42
 
-INCBIN "baserom.gbc",$28b42,$28b68 - $28b42
+Function28b42: ; 28b42
+	ld hl, $c5e0
+	ld a, $7e
+	ld bc, $0028
+	call ByteFill
+	ld hl, $c5e1
+	ld a, $7f
+	ld bc, $0012
+	call ByteFill
+	ld hl, $c5e2
+	ld de, String_28b61
+	jp PlaceString
+; 28b61
 
+String_28b61: ; 28b61
+	db "CANCEL@"
+; 28b68
+
 Function28b68: ; 28b68
 	ld a, [$cf51]
 	ld hl, $c55a
@@ -33423,7 +35401,18 @@
 	ret
 ; 28f09
 
-INCBIN "baserom.gbc",$28f09,$28f24 - $28f09
+Function28f09: ; 28f09
+	hlcoord 0, 0
+	ld b, 6
+	ld c, 18
+	call Function28eef
+	hlcoord 0, 8
+	ld b, 6
+	ld c, 18
+	call Function28eef
+	callba Functionfb60d
+	ret
+; 28f24
 
 Function28f24: ; 28f24
 	xor a
@@ -33585,18 +35574,18 @@
 	ld bc, $0800
 	ld a, $7f
 	call ByteFill
-	ld hl, $599b
+	ld hl, TradeGameBoyLZ
 	ld de, $9310
 	call Decompress
-	ld hl, $591b
+	ld hl, TradeArrowGFX
 	ld de, $8ed0
 	ld bc, $0010
-	ld a, $a
+	ld a, BANK(TradeArrowGFX)
 	call FarCopyBytes
-	ld hl, $592b
+	ld hl, TradeArrowGFX + $10
 	ld de, $8ee0
 	ld bc, $0010
-	ld a, $a
+	ld a, BANK(TradeArrowGFX)
 	call FarCopyBytes
 	xor a
 	ld [hSCX], a
@@ -33658,8 +35647,588 @@
 ; 290af
 
 JumpTable290af: ; 290af
-INCBIN "baserom.gbc",$290af,$29491 - $290af
+	dw Function29114
+	dw Function2942e
+	dw Function29461
+	dw Function29348
+	dw Function2937e
+	dw Function29391
+	dw Function29129
+	dw Function291af
+	dw Function291c4
+	dw Function291d9
+	dw Function2925d
+	dw Function29220
+	dw Function2925d
+	dw Function29229
+	dw Function2913c
+	dw Function2925d
+	dw Function291e8
+	dw Function291fd
+	dw Function29211
+	dw Function29220
+	dw Function2925d
+	dw Function29229
+	dw Function29701
+	dw Function2973c
+	dw Function2975c
+	dw Function2977f
+	dw Function297a4
+	dw Function293a6
+	dw Function293b6
+	dw Function293d2
+	dw Function293de
+	dw Function293ea
+	dw Function2940c
+	dw Function294e7
+	dw Function294f0
+	dw Function2961b
+	dw Function2962c
+	dw Function29879
+	dw Function29886
+	dw Function29649
+	dw Function29660
+	dw Function2926d
+	dw Function29277
+	dw Function29123
+	dw Function29487
+	dw Function294f9
+	dw Function29502
+	dw Function2950c
+; 2910f
 
+Function2910f: ; 2910f
+	ld hl, $cf63
+	inc [hl]
+	ret
+; 29114
+
+Function29114: ; 29114
+	ld hl, BattleEnded
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld a, [de]
+	ld [$cf63], a
+	inc de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	ret
+; 29123
+
+Function29123: ; 29123
+	ld hl, $cf63
+	set 7, [hl]
+	ret
+; 29129
+
+Function29129: ; 29129
+	ld a, $ed
+	call Function292f6
+	ld a, [$c74c]
+	ld [$d265], a
+	xor a
+	ld de, $2c58
+	ld b, $0
+	jr Function2914e
+
+Function2913c: ; 2913c
+	ld a, $ee
+	call Function292f6
+	ld a, [$c74d]
+	ld [$d265], a
+	ld a, $2
+	ld de, $4c94
+	ld b, $4
+
+Function2914e: ; 2914e
+	push bc
+	push de
+	push bc
+	push de
+	push af
+	call DisableLCD
+	callab Function8cf53
+	ld hl, $9874
+	ld bc, $000c
+	ld a, $60
+	call ByteFill
+	pop af
+	call Function29281
+	xor a
+	ld [hSCX], a
+	ld a, $7
+	ld [hWX], a
+	ld a, $70
+	ld [hWY], a
+	call EnableLCD
+	call Function2985a
+	pop de
+	ld a, $11
+	call Function3b2a
+	ld hl, $000b
+	add hl, bc
+	pop bc
+	ld [hl], b
+	pop de
+	ld a, $12
+	call Function3b2a
+	ld hl, $000b
+	add hl, bc
+	pop bc
+	ld [hl], b
+	call WaitBGMap
+	ld b, $1b
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $d0
+	call Functioncf8
+	call Function2910f
+	ld a, $5c
+	ld [$cf64], a
+	ret
+; 291af
+
+Function291af: ; 291af
+	call Function2981d
+	ld a, [hSCX]
+	add $2
+	ld [hSCX], a
+	cp $50
+	ret nz
+	ld a, $1
+	call Function29281
+	call Function2910f
+	ret
+; 291c4
+
+Function291c4: ; 291c4
+	call Function2981d
+	ld a, [hSCX]
+	add $2
+	ld [hSCX], a
+	cp $a0
+	ret nz
+	ld a, $2
+	call Function29281
+	call Function2910f
+	ret
+; 291d9
+
+Function291d9: ; 291d9
+	call Function2981d
+	ld a, [hSCX]
+	add $2
+	ld [hSCX], a
+	and a
+	ret nz
+	call Function2910f
+	ret
+; 291e8
+
+Function291e8: ; 291e8
+	call Function2981d
+	ld a, [hSCX]
+	sub $2
+	ld [hSCX], a
+	cp $b0
+	ret nz
+	ld a, $1
+	call Function29281
+	call Function2910f
+	ret
+; 291fd
+
+Function291fd: ; 291fd
+	call Function2981d
+	ld a, [hSCX]
+	sub $2
+	ld [hSCX], a
+	cp $60
+	ret nz
+	xor a
+	call Function29281
+	call Function2910f
+	ret
+; 29211
+
+Function29211: ; 29211
+	call Function2981d
+	ld a, [hSCX]
+	sub $2
+	ld [hSCX], a
+	and a
+	ret nz
+	call Function2910f
+	ret
+; 29220
+
+Function29220: ; 29220
+	ld a, $80
+	ld [$cf64], a
+	call Function2910f
+	ret
+; 29229
+
+Function29229: ; 29229
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	callab Function8cf53
+	ld hl, VBGMap0
+	ld bc, $0800
+	ld a, $7f
+	call ByteFill
+	xor a
+	ld [hSCX], a
+	ld a, $90
+	ld [hWY], a
+	call EnableLCD
+	call Function2982b
+	call WaitBGMap
+	call Function297ed
+	call Function29114
+	ret
+; 2925d
+
+Function2925d: ; 2925d
+	call Function2981d
+	ld hl, $cf64
+	ld a, [hl]
+	and a
+	jr z, .asm_29269
+	dec [hl]
+	ret
+
+.asm_29269
+	call Function2910f
+	ret
+; 2926d
+
+Function2926d: ; 2926d
+	call Function29114
+	ld de, $00b7
+	call PlaySFX
+	ret
+; 29277
+
+Function29277: ; 29277
+	call Function29114
+	ld de, $00b8
+	call PlaySFX
+	ret
+; 29281
+
+Function29281: ; 29281
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_2928f
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 2928f
+
+Jumptable_2928f: ; 2928f
+	dw Function29297
+	dw Function292af
+	dw Function292be
+	dw Function29297
+; 29297
+
+Function29297: ; 29297
+	call Function297cf
+	ld hl, $c4e5
+	ld [hl], $5b
+	inc hl
+	ld bc, $000a
+	ld a, $60
+	call ByteFill
+	ld hl, $c4cb
+	call Function292ec
+	ret
+; 292af
+
+Function292af: ; 292af
+	call Function297cf
+	ld hl, $c4dc
+	ld bc, $0014
+	ld a, $60
+	call ByteFill
+	ret
+; 292be
+
+Function292be: ; 292be
+	call Function297cf
+	ld hl, $c4dc
+	ld bc, $0011
+	ld a, $60
+	call ByteFill
+	ld hl, $c4ed
+	ld a, $5d
+	ld [hl], a
+	ld a, $61
+	ld de, $0014
+	ld c, $3
+.asm_292d9
+	add hl, de
+	ld [hl], a
+	dec c
+	jr nz, .asm_292d9
+	add hl, de
+	ld a, $5f
+	ld [hld], a
+	ld a, $5b
+	ld [hl], a
+	ld hl, $c522
+	call Function292ec
+	ret
+; 292ec
+
+Function292ec: ; 292ec
+	ld de, TradeGameBoyTilemap
+	lb bc, 8, 6
+	call Function297db
+	ret
+; 292f6
+
+Function292f6: ; 292f6
+	push af
+	call WhiteBGMap
+	call WaitTop
+	ld a, $9c
+	ld [$ffd7], a
+	call ClearTileMap
+	ld hl, TileMap
+	ld bc, $0014
+	ld a, $7a
+	call ByteFill
+	ld hl, $c4b4
+	ld de, $c736
+	call PlaceString
+	ld hl, $c741
+	ld de, NULL
+.asm_2931e
+	ld a, [hli]
+	cp $50
+	jr z, .asm_29326
+	dec de
+	jr .asm_2931e
+
+.asm_29326
+	ld hl, $c4f0
+	add hl, de
+	ld de, $c741
+	call PlaceString
+	ld hl, $c4cf
+	ld bc, $0006
+	pop af
+	call ByteFill
+	call WaitBGMap
+	call WaitTop
+	ld a, $98
+	ld [$ffd7], a
+	call ClearTileMap
+	ret
+; 29348
+
+Function29348: ; 29348
+	call ClearTileMap
+	call WaitTop
+	ld a, $a0
+	ld [hSCX], a
+	call DelayFrame
+	ld hl, $c4d0
+	ld de, Tilemap_298f7
+	lb bc, 3, 12
+	call Function297db
+	call WaitBGMap
+	ld b, $1b
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	ld de, $0004
+	call PlaySFX
+	call Function2910f
+	ret
+; 2937e
+
+Function2937e: ; 2937e
+	ld a, [hSCX]
+	and a
+	jr z, .asm_29388
+	add $4
+	ld [hSCX], a
+	ret
+
+.asm_29388
+	ld c, $50
+	call DelayFrames
+	call Function29114
+	ret
+; 29391
+
+Function29391: ; 29391
+	ld a, [hSCX]
+	cp $a0
+	jr z, .asm_2939c
+	sub $4
+	ld [hSCX], a
+	ret
+
+.asm_2939c
+	call ClearTileMap
+	xor a
+	ld [hSCX], a
+	call Function29114
+	ret
+; 293a6
+
+Function293a6: ; 293a6
+	ld a, $8f
+	ld [hWX], a
+	ld a, $88
+	ld [hSCX], a
+	ld a, $50
+	ld [hWY], a
+	call Function29114
+	ret
+; 293b6
+
+Function293b6: ; 293b6
+	ld a, [hWX]
+	cp $7
+	jr z, .asm_293c7
+	sub $4
+	ld [hWX], a
+	ld a, [hSCX]
+	sub $4
+	ld [hSCX], a
+	ret
+
+.asm_293c7
+	ld a, $7
+	ld [hWX], a
+	xor a
+	ld [hSCX], a
+	call Function29114
+	ret
+; 293d2
+
+Function293d2: ; 293d2
+	ld a, $7
+	ld [hWX], a
+	ld a, $50
+	ld [hWY], a
+	call Function29114
+	ret
+; 293de
+
+Function293de: ; 293de
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	call Function29114
+	ret
+; 293ea
+
+Function293ea: ; 293ea
+	call WaitTop
+	ld a, $9c
+	ld [$ffd7], a
+	call WaitBGMap
+	ld a, $7
+	ld [hWX], a
+	xor a
+	ld [hWY], a
+	call DelayFrame
+	call WaitTop
+	ld a, $98
+	ld [$ffd7], a
+	call ClearTileMap
+	call Function2910f
+	ret
+; 2940c
+
+Function2940c: ; 2940c
+	ld a, [hWX]
+	cp $a1
+	jr nc, .asm_29417
+	add $4
+	ld [hWX], a
+	ret
+
+.asm_29417
+	ld a, $9c
+	ld [$ffd7], a
+	call WaitBGMap
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	ld a, $98
+	ld [$ffd7], a
+	call Function29114
+	ret
+; 2942e
+
+Function2942e: ; 2942e
+	call Function2951f
+	ld a, [PlayerSDefLevel]
+	ld [CurPartySpecies], a
+	ld a, [$c6fd]
+	ld [TempMonDVs], a
+	ld a, [$c6fe]
+	ld [$d124], a
+	ld b, $1a
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	call Function294bb
+	ld a, [PlayerSDefLevel]
+	call Function381e
+	jr c, .asm_2945d
+	ld e, c
+	ld d, b
+	call PlayCryHeader
+
+.asm_2945d
+	call Function29114
+	ret
+; 29461
+
+Function29461: ; 29461
+	call Function29549
+	ld a, [PlayerLightScreenCount]
+	ld [CurPartySpecies], a
+	ld a, [$c72f]
+	ld [TempMonDVs], a
+	ld a, [$c730]
+	ld [$d124], a
+	ld b, $1a
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	call Function294c0
+	call Function29114
+	ret
+; 29487
+
+Function29487: ; 29487
+	callba Function4d81e
+	call Function29114
+	ret
+; 29491
+
 Function29491: ; 29491
 	push de
 	push af
@@ -33686,15 +36255,266 @@
 	ret
 ; 294bb
 
-INCBIN "baserom.gbc",$294bb,$29676 - $294bb
+Function294bb: ; 294bb
+	ld de, VTiles0
+	jr Function294c3
 
+Function294c0: ; 294c0
+	ld de, $8310
+
+Function294c3: ; 294c3
+	call DelayFrame
+	ld hl, VTiles2
+	ld bc, $0a31
+	call Request2bpp
+	call WaitTop
+	call Function297cf
+	ld hl, $c4cf
+	xor a
+	ld [$ffad], a
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	call WaitBGMap
+	ret
+; 294e7
+
+Function294e7: ; 294e7
+	ld c, $50
+	call DelayFrames
+	call Function29114
+	ret
+; 294f0
+
+Function294f0: ; 294f0
+	ld c, $28
+	call DelayFrames
+	call Function29114
+	ret
+; 294f9
+
+Function294f9: ; 294f9
+	ld c, $60
+	call DelayFrames
+	call Function29114
+	ret
+; 29502
+
+Function29502: ; 29502
+	call Function29516
+	ret nz
+	ld c, $50
+	call DelayFrames
+	ret
+; 2950c
+
+Function2950c: ; 2950c
+	call Function29516
+	ret nz
+	ld c, $b4
+	call DelayFrames
+	ret
+; 29516
+
+Function29516: ; 29516
+	call Function29114
+	ld a, [PlayerLightScreenCount]
+	cp $fd
+	ret
+; 2951f
+
+Function2951f: ; 2951f
+	ld de, PlayerSDefLevel
+	ld a, [de]
+	cp $fd
+	jr z, Function295a1
+	call Function29573
+	ld de, PlayerSDefLevel
+	call Function295e3
+	ld de, PlayerAccLevel
+	call Function295ef
+	ld a, [$c701]
+	ld de, $c6f2
+	call Function295f6
+	ld de, PlayerScreens
+	call Function29611
+	call Function295d8
+	ret
+; 29549
+
+Function29549: ; 29549
+	ld de, PlayerLightScreenCount
+	ld a, [de]
+	cp $fd
+	jr z, Function295a1
+	call Function29573
+	ld de, PlayerLightScreenCount
+	call Function295e3
+	ld de, PlayerReflectCount
+	call Function295ef
+	ld a, [$c733]
+	ld de, $c724
+	call Function295f6
+	ld de, $c731
+	call Function29611
+	call Function295d8
+	ret
+; 29573
+
+Function29573: ; 29573
+	call WaitTop
+	call Function297cf
+	ld a, $9c
+	ld [$ffd7], a
+	ld hl, $c4a3
+	ld b, $6
+	ld c, $d
+	call TextBox
+	ld hl, $c4a4
+	ld de, String29591
+	call PlaceString
+	ret
+; 29591
+
+String29591: ; 29591
+	db "─── №.", $4e
+	db $4e
+	db "OT/", $4e
+	db $73, "№.@"
+; 295a1
+
+Function295a1: ; 295a1
+	call WaitTop
+	call Function297cf
+	ld a, $9c
+	ld [$ffd7], a
+	ld hl, $c4a3
+	ld b, $6
+	ld c, $d
+	call TextBox
+	ld hl, $c4cc
+	ld de, String295c2
+	call PlaceString
+	call Function295d8
+	ret
+; 295c2
+
+String295c2: ; 295c2
+	db "EGG", $4e
+	db "OT/?????", $4e
+	db $73, "№.?????@"
+; 295d8
+
+Function295d8: ; 295d8
+	call WaitBGMap
+	call WaitTop
+	ld a, $98
+	ld [$ffd7], a
+	ret
+; 295e3
+
+Function295e3: ; 295e3
+	ld hl, $c4aa
+	ld bc, $8103
+	call PrintNum
+	ld [hl], $7f
+	ret
+; 295ef
+
+Function295ef: ; 295ef
+	ld hl, $c4cc
+	call PlaceString
+	ret
+; 295f6
+
+Function295f6: ; 295f6
+	cp 3
+	jr c, .asm_295fb
+	xor a
+
+.asm_295fb
+	push af
+	ld hl, $c4f7
+	call PlaceString
+	inc bc
+	pop af
+	ld hl, Unknown_2960e
+	ld d, 0
+	ld e, a
+	add hl, de
+	ld a, [hl]
+	ld [bc], a
+	ret
+; 2960e
+
+Unknown_2960e: ; 2960e
+	db " ", "♂", "♀"
+; 29611
+
+Function29611: ; 29611
+	ld hl, $c51f
+	ld bc, $8205
+	call PrintNum
+	ret
+; 2961b
+
+Function2961b: ; 2961b
+	ld de, $5458
+	ld a, $e
+	call Function3b2a
+	call Function29114
+	ld a, $20
+	ld [$cf64], a
+	ret
+; 2962c
+
+Function2962c: ; 2962c
+	ld de, $5458
+	ld a, $e
+	call Function3b2a
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $dc
+	call Function29114
+	ld a, $38
+	ld [$cf64], a
+	ret
+; 29649
+
+Function29649: ; 29649
+	ld de, $5458
+	ld a, $f
+	call Function3b2a
+	call Function29114
+	ld a, $10
+	ld [$cf64], a
+	ld de, $0029
+	call PlaySFX
+	ret
+; 29660
+
+Function29660: ; 29660
+	ld a, $e4
+	call Functioncf8
+	ld de, $2858
+	ld a, $10
+	call Function3b2a
+	call Function29114
+	ld a, $40
+	ld [$cf64], a
+	ret
+; 29676
+
 ; no known jump sources
 Function29676: ; 29676 (a:5676)
 	ld hl, $b
 	add hl, bc
 	ld e, [hl]
-	ld d, $0
-	ld hl, $5686
+	ld d, 0
+	ld hl, Jumptable_29686
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -33701,6 +36521,7 @@
 	ld h, [hl]
 	ld l, a
 	jp [hl]
+; 29686
 
 ; no known jump sources
 Jumptable_29686: ; 29686 (a:5686)
@@ -33711,8 +36532,8 @@
 	dw Function296cf
 	dw Function296dd
 	dw Function296f2
+; 2969a
 
-
 ; known jump sources: 2969a (a:569a), 296ac (a:56ac), 296ba (a:56ba), 296da (a:56da), 296e8 (a:56e8)
 Function29694: ; 29694 (a:5694)
 	ld hl, $b
@@ -33807,8 +36628,168 @@
 	ret
 ; 29701 (a:5701)
 
-INCBIN "baserom.gbc",$29701,$297ed - $29701
+Function29701: ; 29701
+	ld a, [InLinkBattle]
+	cp $1
+	jr z, .asm_29725
+	ld hl, UnknownText_0x29737
+	call PrintText
+	ld c, $bd
+	call DelayFrames
+	ld hl, UnknownText_0x29732
+	call PrintText
+	call Function297c9
+	ld c, $80
+	call DelayFrames
+	call Function29114
+	ret
 
+.asm_29725
+	ld hl, UnknownText_0x29732
+	call PrintText
+	call Function297c9
+	call Function29114
+	ret
+; 29732
+
+UnknownText_0x29732: ; 0x29732
+	; was sent to @ .
+	text_jump UnknownText_0x1bc6e9
+	db "@"
+; 0x29737
+
+UnknownText_0x29737: ; 0x29737
+	; 
+	text_jump UnknownText_0x1bc701
+	db "@"
+; 0x2973c
+
+Function2973c: ; 2973c
+	ld hl, UnknownText_0x29752
+	call PrintText
+	call Function297c9
+	ld hl, UnknownText_0x29757
+	call PrintText
+	call Function297c9
+	call Function29114
+	ret
+; 29752
+
+UnknownText_0x29752: ; 0x29752
+	; bids farewell to
+	text_jump UnknownText_0x1bc703
+	db "@"
+; 0x29757
+
+UnknownText_0x29757: ; 0x29757
+	; .
+	text_jump UnknownText_0x1bc719
+	db "@"
+; 0x2975c
+
+Function2975c: ; 2975c
+	call WaitTop
+	ld hl, $c568
+	ld bc, $00a0
+	ld a, $7f
+	call ByteFill
+	call WaitBGMap
+	ld hl, UnknownText_0x2977a
+	call PrintText
+	call Function297c9
+	call Function29114
+	ret
+; 2977a
+
+UnknownText_0x2977a: ; 0x2977a
+	; Take good care of @ .
+	text_jump UnknownText_0x1bc71f
+	db "@"
+; 0x2977f
+
+Function2977f: ; 2977f
+	ld hl, UnknownText_0x2979a
+	call PrintText
+	call Function297c9
+	ld hl, UnknownText_0x2979f
+	call PrintText
+	call Function297c9
+	ld c, $e
+	call DelayFrames
+	call Function29114
+	ret
+; 2979a
+
+UnknownText_0x2979a: ; 0x2979a
+	; For @ 's @ ,
+	text_jump UnknownText_0x1bc739
+	db "@"
+; 0x2979f
+
+UnknownText_0x2979f: ; 0x2979f
+	; sends @ .
+	text_jump UnknownText_0x1bc74c
+	db "@"
+; 0x297a4
+
+Function297a4: ; 297a4
+	ld hl, UnknownText_0x297bf
+	call PrintText
+	call Function297c9
+	ld hl, UnknownText_0x297c4
+	call PrintText
+	call Function297c9
+	ld c, $e
+	call DelayFrames
+	call Function29114
+	ret
+; 297bf
+
+UnknownText_0x297bf: ; 0x297bf
+	; will trade @ @
+	text_jump UnknownText_0x1bc75e
+	db "@"
+; 0x297c4
+
+UnknownText_0x297c4: ; 0x297c4
+	; for @ 's @ .
+	text_jump UnknownText_0x1bc774
+	db "@"
+; 0x297c9
+
+Function297c9: ; 297c9
+	ld c, $50
+	call DelayFrames
+	ret
+; 297cf
+
+Function297cf: ; 297cf
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, $7f
+	call ByteFill
+	ret
+; 297db
+
+Function297db: ; 297db
+.asm_297db
+	push bc
+	push hl
+.asm_297dd
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_297dd
+	pop hl
+	ld bc, $0014
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_297db
+	ret
+; 297ed
+
 Function297ed: ; 297ed
 	ld a, [hSGB]
 	and a
@@ -33843,21 +36824,29 @@
 	ret
 ; 2981d
 
-INCBIN "baserom.gbc",$2981d,$2982b - $2981d
+Function2981d: ; 2981d
+	ld a, [$cf65]
+	and $7
+	ret nz
+	ld a, [rBGP]
+	xor $3c
+	call DmgToCgbBGPals
+	ret
+; 2982b
 
 Function2982b: ; 2982b
 	call DelayFrame
-	ld de, $5adb
+	ld de, TradeBallGFX
 	ld hl, $8620
-	ld bc, $0a06
+	lb bc, BANK(TradeBallGFX), $6
 	call Request2bpp
-	ld de, $5b3b
+	ld de, TradePoofGFX
 	ld hl, $8680
-	ld bc, $0a0c
+	lb bc, BANK(TradePoofGFX), $c
 	call Request2bpp
-	ld de, $593b
+	ld de, TradeCableGFX
 	ld hl, $8740
-	ld bc, $0a04
+	lb bc, BANK(TradeCableGFX), $4
 	call Request2bpp
 	xor a
 	ld hl, $c300
@@ -33866,8 +36855,111 @@
 	ret
 ; 2985a
 
-INCBIN "baserom.gbc",$2985a,$29bfb - $2985a
+Function2985a: ; 2985a
+	call DelayFrame
+	ld e, $3
+	callab Function8e83f
+	ld de, TradeBubbleGFX
+	ld hl, $8720
+	lb bc, BANK(TradeBubbleGFX), $4
+	call Request2bpp
+	xor a
+	ld hl, $c300
+	ld [hli], a
+	ld [hl], $62
+	ret
+; 29879
 
+Function29879: ; 29879
+	ld hl, $cf64
+	ld a, [hl]
+	and a
+	jr z, .asm_29882
+	dec [hl]
+	ret
+
+.asm_29882
+	call Function29114
+	ret
+; 29886
+
+Function29886: ; 29886
+	ld hl, $cf64
+	ld a, [hl]
+	and a
+	jr z, .asm_2988f
+	dec [hl]
+	ret
+
+.asm_2988f
+	call Function29114
+	ret
+; 29893
+
+
+Function29893: ; 29893
+; This function is unreferenced.
+; It was meant for use in Japanese versions, so the
+; constant used for copy length was changed by accident.
+
+	ld hl, Unknown_298b5
+
+	ld a, [hli]
+	ld [$c6d0], a
+	ld de, $c6e7
+	ld c, 13 ; jp: 8
+.asm_2989f
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_2989f
+
+	ld a, [hli]
+	ld [$c702], a
+	ld de, $c719
+	ld c, 13 ; jp: 8
+.asm_298ae
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_298ae
+	ret
+; 298b5
+
+Unknown_298b5: ; 298b5
+	db $03, "ゲーフり@@", $23, $01 ; GAME FREAK
+	db $06, "クりーチャ@", $56, $04 ; Creatures Inc.
+; 298c7
+
+
+TradeGameBoyTilemap: ; 298c7
+; 6x8
+	db $31, $32, $32, $32, $32, $33
+	db $34, $35, $36, $36, $37, $38
+	db $34, $39, $3a, $3a, $3b, $38
+	db $3c, $3d, $3e, $3e, $3f, $40
+	db $41, $42, $43, $43, $44, $45
+	db $46, $47, $43, $48, $49, $4a
+	db $41, $43, $4b, $4c, $4d, $4e
+	db $4f, $50, $50, $50, $51, $52
+; 297f7
+
+Tilemap_298f7: ; 297f7
+; 12x3
+	db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53
+	db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54
+	db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43
+; 2991b
+
+TradeArrowGFX:  INCBIN "gfx/trade/arrow.2bpp"
+TradeCableGFX:  INCBIN "gfx/trade/cable.2bpp"
+TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp"
+TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.lz"
+TradeBallGFX:   INCBIN "gfx/trade/ball.2bpp"
+TradePoofGFX:   INCBIN "gfx/trade/poof.2bpp"
+
 Function29bfb: ; 29bfb
 	ld hl, PartySpecies
 	ld b, $6
@@ -34398,8 +37490,23 @@
 	ret
 ; 29f54
 
-INCBIN "baserom.gbc",$29f54,$29ff8 - $29f54
+GFX_29f54: ; 29f54
+INCBIN "baserom.gbc", $29f54, $29fe4 - $29f54
+; 29fe4
 
+Function29fe4: ; 29fe4
+	ld a, $0
+	call GetSRAMBank
+	ld d, $0
+	ld b, $2
+	ld a, $3
+	call Predef
+	call CloseSRAM
+	ld a, c
+	and a
+	ret
+; 29ff8
+
 Function29ff8: ; 29ff8
 	call Function2a205
 	jr c, .asm_2a006
@@ -34671,7 +37778,7 @@
 	inc hl
 	inc hl
 	call Function1852
-	ld de, $61d9
+	ld de, Unknown_2a1d9
 	jr z, .asm_2a174
 	inc hl
 	inc hl
@@ -34678,7 +37785,7 @@
 	ld a, [TimeOfDay]
 	ld bc, $e
 	call AddNTimes
-	ld de, $61cb
+	ld de, Unknown_2a1cb
 
 .asm_2a174
 	push hl
@@ -34753,15 +37860,27 @@
 	ret
 ; 2a1cb
 
+Unknown_2a1cb: ; 2a1cb
+	db 30,  $0
+	db 60,  $2
+	db 80,  $4
+	db 90,  $6
+	db 95,  $8
+	db 99,  $a
+	db 100, $c
+; 2a1d9
 
-INCBIN "baserom.gbc",$2a1cb,$2a1df - $2a1cb
+Unknown_2a1d9: ; 2a1d9
+	db 60,  $0
+	db 90,  $2
+	db 100, $4
+; 2a1df
 
-
 Function2a1df:: ; 2a1df
 	ld a, [$dca1]
 	and a
 	jr z, .asm_2a1fe
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld bc, PartyMon2 - PartyMon1 - 1
 .asm_2a1eb
 	ld a, [hli]
@@ -34941,9 +38060,9 @@
 
 ; hp
 	xor a ; generate new stats
-	ld [RoamMon1CurHP], a
-	ld [RoamMon2CurHP], a
-;	ld [RoamMon3CurHP], a
+	ld [RoamMon1HP], a
+	ld [RoamMon2HP], a
+;	ld [RoamMon3HP], a
 
 	ret
 ; 2a2ce
@@ -35037,7 +38156,7 @@
 
 
 Function2a355: ; 2a355
-	ld hl, $640f
+	ld hl, RoamMaps
 .asm_2a358
 	ld a, [hl]
 	cp $ff
@@ -35066,7 +38185,7 @@
 	call Random
 	and $1f
 	jr z, Function2a3cd
-	and $3
+	and 3
 	cp [hl]
 	jr nc, .asm_2a36e
 	inc hl
@@ -35124,7 +38243,7 @@
 
 Function2a3cd: ; 2a3cd
 .asm_2a3cd
-	ld hl, $640f
+	ld hl, RoamMaps
 .asm_2a3d0
 	call Random
 	and $f
@@ -35170,7 +38289,29 @@
 	ret
 ; 2a40f
 
-INCBIN "baserom.gbc",$2a40f,$2a4a0 - $2a40f
+RoamMaps: ; 2a40f
+; Maps that roaming monsters can be on,
+; and possible maps they can jump to.
+; Notably missing are Route 40 and
+; Route 41, which are water routes.
+	roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46
+	roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31
+	roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36
+	roam_map ROUTE_32, 3, ROUTE_36, ROUTE_31, ROUTE_33
+	roam_map ROUTE_33, 2, ROUTE_32, ROUTE_34
+	roam_map ROUTE_34, 2, ROUTE_33, ROUTE_35
+	roam_map ROUTE_35, 2, ROUTE_34, ROUTE_36
+	roam_map ROUTE_36, 4, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37
+	roam_map ROUTE_37, 3, ROUTE_36, ROUTE_38, ROUTE_42
+	roam_map ROUTE_38, 3, ROUTE_37, ROUTE_39, ROUTE_42
+	roam_map ROUTE_39, 1, ROUTE_38
+	roam_map ROUTE_42, 4, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38
+	roam_map ROUTE_43, 2, ROUTE_42, ROUTE_44
+	roam_map ROUTE_44, 3, ROUTE_42, ROUTE_43, ROUTE_45
+	roam_map ROUTE_45, 2, ROUTE_44, ROUTE_46
+	roam_map ROUTE_46, 2, ROUTE_45, ROUTE_29
+	db $ff
+; 2a4a0
 
 Function2a4a0: ; 2a4a0
 	and a
@@ -35238,7 +38379,7 @@
 	ld a, c
 	ld [$d265], a
 	call GetPokemonName
-	ld hl, $651a
+	ld hl, UnknownText_0x2a51a
 	call PrintText
 	xor a
 	ld [ScriptVar], a
@@ -35250,7 +38391,11 @@
 	ret
 ; 2a51a
 
-INCBIN "baserom.gbc",$2a51a,$2a51f - $2a51a
+UnknownText_0x2a51a: ; 0x2a51a
+	; I just saw some rare @  in @ . I'll call you if I see another rare #MON, OK?
+	text_jump UnknownText_0x1bd34b
+	db "@"
+; 0x2a51f
 
 Function2a51f: ; 2a51f
 	callba Function90439
@@ -35391,10 +38536,10 @@
 
 Function2b930: ; 2b930
 	callba UpdateEnemyMonInParty
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call Function2b995
 	push bc
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	call Function2b995
 	ld a, c
 	pop bc
@@ -35411,10 +38556,10 @@
 	jr z, .asm_2b976
 	cp $2
 	jr z, .asm_2b97f
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call Function2b9a6
 	push de
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	call Function2b9a6
 	pop hl
 	ld a, d
@@ -35512,16 +38657,16 @@
 ; 2b9e1
 
 Function2b9e1: ; 2b9e1
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call Function2ba01
 	jr nz, .asm_2b9f2
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	call Function2ba01
 	ld e, $1
 	ret
 
 .asm_2b9f2
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	call Function2ba01
 	ld e, $0
 	ret nz
@@ -35560,13 +38705,11 @@
 
 ChrisBackpic: ; 2ba1a
 INCBIN "gfx/misc/player.lz"
-; 2bba1
+; 2bbaa
 
-db 0, 0, 0, 0, 0, 0, 0, 0, 0 ; filler
-
 DudeBackpic: ; 2bbaa
 INCBIN "gfx/misc/dude.lz"
-; 2bce1
+; 2bcea
 
 
 SECTION "bankB", ROMX, BANK[$B]
@@ -35593,7 +38736,7 @@
 
 Function2c01c: ; 2c01c
 	call Function2c0ad
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld de, PartyCount
 	call Function2c059
 	ld a, $60
@@ -35610,7 +38753,7 @@
 
 Function2c03a: ; 2c03a
 	call Function2c0c5
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld de, OTPartyCount
 	call Function2c059
 	ld hl, $cfc4
@@ -35758,7 +38901,7 @@
 
 Function2c10d: ; 2c10d
 	call Function2c165
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld de, PartyCount
 	call Function2c059
 	ld hl, $cfc4
@@ -35769,7 +38912,7 @@
 	ld [$d003], a
 	ld hl, Sprites
 	call Function2c143
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld de, OTPartyCount
 	call Function2c059
 	ld hl, $cfc4
@@ -35804,16 +38947,17 @@
 ; 2c165
 
 Function2c165: ; 2c165
-	ld de, $4172
+	ld de, GFX_2c172
 	ld hl, $8310
-	ld bc, $0b04
+	lb bc, BANK(GFX_2c172), 4
 	call Functiondc9
 	ret
 ; 2c172
 
-INCBIN "baserom.gbc",$2c172,$2c1b2 - $2c172
+GFX_2c172: ; 2c172
+INCBIN "gfx/battle/balls.2bpp"
+; 2c1b2
 
-
 Function2c1b2: ; 2c1b2
 	call WhiteBGMap
 	call Functione5f
@@ -35914,9 +39058,10 @@
 
 ; no known jump sources
 Function2c41a: ; 2c41a (b:441a)
+; More move AI.
 	ld a, c
-	ld de, $3
-	ld hl, $442c
+	ld de, 3
+	ld hl, Unknown_2c42c
 	call IsInArray
 	jp nc, Function2c545
 	inc hl
@@ -35926,16 +39071,56 @@
 	jp [hl]
 ; 2c42c (b:442c)
 
-INCBIN "baserom.gbc",$2c42c,$2c487 - $2c42c
+Unknown_2c42c: ; 2c42c
+	dbw EFFECT_DREAM_EATER,  Function2c524
+	dbw EFFECT_HEAL,         Function2c539
+	dbw EFFECT_LIGHT_SCREEN, Function2c487
+	dbw EFFECT_MIST,         Function2c48d
+	dbw EFFECT_FOCUS_ENERGY, Function2c493
+	dbw EFFECT_CONFUSE,      Function2c499
+	dbw EFFECT_TRANSFORM,    Function2c4a5
+	dbw EFFECT_REFLECT,      Function2c4ab
+	dbw EFFECT_SUBSTITUTE,   Function2c4b1
+	dbw EFFECT_LEECH_SEED,   Function2c4b7
+	dbw EFFECT_DISABLE,      Function2c4bd
+	dbw EFFECT_ENCORE,       Function2c4c2
+	dbw EFFECT_SNORE,        Function2c4c8
+	dbw EFFECT_SLEEP_TALK,   Function2c4c8
+	dbw EFFECT_MEAN_LOOK,    Function2c4d1
+	dbw EFFECT_NIGHTMARE,    Function2c4d7
+	dbw EFFECT_SPIKES,       Function2c4e3
+	dbw EFFECT_FORESIGHT,    Function2c4e9
+	dbw EFFECT_PERISH_SONG,  Function2c4ef
+	dbw EFFECT_SANDSTORM,    Function2c4f5
+	dbw EFFECT_ATTRACT,      Function2c4fe
+	dbw EFFECT_SAFEGUARD,    Function2c50c
+	dbw EFFECT_RAIN_DANCE,   Function2c512
+	dbw EFFECT_SUNNY_DAY,    Function2c51b
+	dbw EFFECT_TELEPORT,     Function2c541
+	dbw EFFECT_MORNING_SUN,  Function2c539
+	dbw EFFECT_SYNTHESIS,    Function2c539
+	dbw EFFECT_MOONLIGHT,    Function2c539
+	dbw EFFECT_SWAGGER,      Function2c52d
+	dbw EFFECT_FUTURE_SIGHT, Function2c533
+	db $ff
+; 2c487
+
+Function2c487: ; 2c487
 	ld a, [EnemyScreens] ; $c700
 	bit 3, a
 	ret
+
+Function2c48d: ; 2c48d
 	ld a, [EnemySubStatus4] ; $c670
 	bit 1, a
 	ret
+
+Function2c493: ; 2c493
 	ld a, [EnemySubStatus4] ; $c670
 	bit 2, a
 	ret
+
+Function2c499: ; 2c499
 	ld a, [PlayerSubStatus3] ; $c66a
 	bit 7, a
 	ret nz
@@ -35942,76 +39127,124 @@
 	ld a, [PlayerScreens] ; $c6ff
 	bit 2, a
 	ret
+
+Function2c4a5: ; 2c4a5
 	ld a, [EnemySubStatus5] ; $c671
 	bit 3, a
 	ret
+
+Function2c4ab: ; 2c4ab
 	ld a, [EnemyScreens] ; $c700
 	bit 4, a
 	ret
 ; 2c4b1 (b:44b1)
 
-INCBIN "baserom.gbc",$2c4b1,$2c4b7 - $2c4b1
+Function2c4b1: ; 2c4b1
+	ld a, [EnemySubStatus4]
+	bit 4, a
+	ret
+
+Function2c4b7: ; 2c4b7
 	ld a, [PlayerSubStatus4] ; $c66b
 	bit 7, a
 	ret
+
+Function2c4bd: ; 2c4bd
 	ld a, [PlayerDisableCount] ; $c675
 	and a
 	ret
+
+Function2c4c2: ; 2c4c2
 	ld a, [PlayerSubStatus5] ; $c66c
 	bit 4, a
 	ret
+
+Function2c4c8: ; 2c4c8
 	ld a, [EnemyMonStatus] ; $d214
 	and $7
-	jr z, .asm_2c541
+	jr z, Function2c541
 	jr Function2c545
+
+Function2c4d1: ; 2c4d1
 	ld a, [EnemySubStatus5] ; $c671
 	bit 7, a
 	ret
 ; 2c4d7 (b:44d7)
 
-INCBIN "baserom.gbc",$2c4d7,$2c4e3 - $2c4d7
+Function2c4d7: ; 2c4d7
+	ld a, [BattleMonStatus]
+	and a
+	jr z, Function2c541
+	ld a, [PlayerSubStatus1]
+	bit 0, a
+	ret
+
+Function2c4e3: ; 2c4e3
 	ld a, [PlayerScreens] ; $c6ff
 	bit 0, a
 	ret
+
+Function2c4e9: ; 2c4e9
 	ld a, [PlayerSubStatus1] ; $c668
 	bit 3, a
 	ret
+
+Function2c4ef: ; 2c4ef
 	ld a, [PlayerSubStatus1] ; $c668
 	bit 4, a
 	ret
+
+Function2c4f5: ; 2c4f5
 	ld a, [Weather] ; $c70a
 	cp $3
-	jr z, .asm_2c541
+	jr z, Function2c541
 	jr Function2c545
+
+Function2c4fe: ; 2c4fe
 	callba Function377f5
-	jr c, .asm_2c541
+	jr c, Function2c541
 	ld a, [PlayerSubStatus1] ; $c668
 	bit 7, a
 	ret
+
+Function2c50c: ; 2c50c
 	ld a, [EnemyScreens] ; $c700
 	bit 2, a
 	ret
+
+Function2c512: ; 2c512
 	ld a, [Weather] ; $c70a
 	cp $1
-	jr z, .asm_2c541
+	jr z, Function2c541
 	jr Function2c545
+
+Function2c51b: ; 2c51b
 	ld a, [Weather] ; $c70a
 	cp $2
-	jr z, .asm_2c541
+	jr z, Function2c541
 	jr Function2c545
+
+Function2c524: ; 2c524
 	ld a, [BattleMonStatus] ; $c63a
 	and $7
-	jr z, .asm_2c541
+	jr z, Function2c541
 	jr Function2c545
+
+Function2c52d: ; 2c52d
 	ld a, [PlayerSubStatus3] ; $c66a
 	bit 7, a
 	ret
+
+Function2c533: ; 2c533
 	ld a, [EnemyScreens] ; $c700
 	bit 5, a
 	ret
+
+Function2c539: ; 2c539
 	callba AICheckEnemyMaxHP
 	jr nc, Function2c545
-.asm_2c541
+
+Function2c541: ; 2c541
 	ld a, $1
 	and a
 	ret
@@ -36022,11 +39255,11 @@
 	ret
 
 Function2c547: ; 2c547
-	ld hl, $45ef
+	ld hl, UnknownText_0x2c5ef
 	call PrintText
 	call YesNoBox
 	jr c, .asm_2c5c3
-	ld hl, $45f4
+	ld hl, UnknownText_0x2c5f4
 	call PrintText
 	callba Function50000
 	jr c, .asm_2c5c3
@@ -36040,7 +39273,7 @@
 	ld a, [hl]
 	and a
 	jr z, .asm_2c5ca
-	ld hl, $45ea
+	ld hl, UnknownText_0x2c5ea
 	call PrintText
 	call Function1d6e
 	callba Function12f5b
@@ -36053,7 +39286,7 @@
 	ld a, [CurSpecies]
 	ld [$d265], a
 	call GetMoveName
-	ld hl, $45d6
+	ld hl, UnknownText_0x2c5d6
 	call PrintText
 	call YesNoBox
 	pop bc
@@ -36060,31 +39293,77 @@
 	jr c, .asm_2c5c3
 	call Function2c5f9
 	call WaitSFX
-	ld de, $0097
+	ld de, SFX_MOVE_DELETED
 	call PlaySFX
 	call WaitSFX
-	ld hl, $45db
+	ld hl, UnknownText_0x2c5db
 	call PrintText
 	ret
 
 .asm_2c5bc
-	ld hl, $45e0
+	ld hl, UnknownText_0x2c5e0
 	call PrintText
 	ret
 
 .asm_2c5c3
-	ld hl, $45e5
+	ld hl, UnknownText_0x2c5e5
 	call PrintText
 	ret
 
 .asm_2c5ca
-	ld hl, $45d1
+	ld hl, UnknownText_0x2c5d1
 	call PrintText
 	ret
 ; 2c5d1
 
-INCBIN "baserom.gbc",$2c5d1,$2c5f9 - $2c5d1
+UnknownText_0x2c5d1: ; 0x2c5d1
+	; That #MON knows only one move.
+	text_jump UnknownText_0x1c5eba
+	db "@"
+; 0x2c5d6
 
+UnknownText_0x2c5d6: ; 0x2c5d6
+	; Oh, make it forget @ ?
+	text_jump UnknownText_0x1c5eda
+	db "@"
+; 0x2c5db
+
+UnknownText_0x2c5db: ; 0x2c5db
+	; Done! Your #MON forgot the move.
+	text_jump UnknownText_0x1c5ef5
+	db "@"
+; 0x2c5e0
+
+UnknownText_0x2c5e0: ; 0x2c5e0
+	; An EGG doesn't know any moves!
+	text_jump UnknownText_0x1c5f17
+	db "@"
+; 0x2c5e5
+
+UnknownText_0x2c5e5: ; 0x2c5e5
+	; No? Come visit me again.
+	text_jump UnknownText_0x1c5f36
+	db "@"
+; 0x2c5ea
+
+UnknownText_0x2c5ea: ; 0x2c5ea
+	; Which move should it forget, then?
+	text_jump UnknownText_0x1c5f50
+	db "@"
+; 0x2c5ef
+
+UnknownText_0x2c5ef: ; 0x2c5ef
+	; Um… Oh, yes, I'm the MOVE DELETER. I can make #MON forget moves. Shall I make a #MON forget?
+	text_jump UnknownText_0x1c5f74
+	db "@"
+; 0x2c5f4
+
+UnknownText_0x2c5f4: ; 0x2c5f4
+	; Which #MON?
+	text_jump UnknownText_0x1c5fd1
+	db "@"
+; 0x2c5f9
+
 Function2c5f9: ; 2c5f9
 	ld a, b
 	push bc
@@ -36269,9 +39548,9 @@
 Function2c708: ; 2c708 (b:4708)
 	ld a, c
 	cp $25
-	jr nc, asm_2c722
-	ld hl, $4725
-	ld b, $0
+	jr nc, Function2c722
+	ld hl, Unknown_2c725
+	ld b, 0
 	add hl, bc
 	ld c, [hl]
 	ret
@@ -36280,21 +39559,43 @@
 Function2c715: ; 2c715 (b:4715)
 	ld a, c
 	cp $25
-	jr nc, asm_2c722
-	ld hl, $474a
-	ld b, $0
+	jr nc, Function2c722
+	ld hl, Unknown_2c74a
+	ld b, 0
 	add hl, bc
 	ld c, [hl]
 	ret
 
 ; known jump sources: 2c70b (b:470b), 2c718 (b:4718)
-asm_2c722: ; 2c722 (b:4722)
+Function2c722: ; 2c722 (b:4722)
 	ld c, $4
 	ret
 ; 2c725 (b:4725)
 
-INCBIN "baserom.gbc",$2c725,$2c76f - $2c725
+Unknown_2c725: ; 2c725
+; May or may not be items.
+	db $ad, $4e, $54, $50, $4f
+	db $4a, $29, $33, $31, $53
+	db $2c, $35, $21, $b9, $ba
+	db $bc, $6d, $ae, $27, $04
+	db $2a, $2b, $41, $3f, $18
+	db $16, $22, $17, $40, $15
+	db $28, $8c, $1a, $3e, $20
+	db $bb, $bd
+; 2c74a
 
+Unknown_2c74a: ; 2c74a
+; May or may not be items.
+	db $16, $1a, $1b, $1c, $1d
+	db $1e, $1f, $20, $21, $22
+	db $0d, $0e, $10, $23, $25
+	db $26, $08, $09, $0f, $11
+	db $17, $19, $01, $02, $04
+	db $05, $06, $07, $0a, $12
+	db $29, $0c, $2a, $14, $03
+	db $24, $27
+; 2c76f
+
 ; no known jump sources
 Function2c76f: ; 2c76f (b:476f)
 	ld a, $1
@@ -36356,14 +39657,14 @@
 	ld [$d262], a
 	call GetMoveName
 	call CopyName1
-	ld hl, $48bf
+	ld hl, UnknownText_0x2c8bf
 	ld a, [CurItem] ; $d106
-	cp $f3
+	cp HM_01
 	jr c, .asm_2c7e9
-	ld hl, $48c4
+	ld hl, UnknownText_0x2c8c4
 .asm_2c7e9
 	call PrintText
-	ld hl, $48c9
+	ld hl, UnknownText_0x2c8c9
 	call PrintText
 	call YesNoBox
 .asm_2c7f5
@@ -36433,10 +39734,10 @@
 	and a
 	jr nz, .asm_2c88b
 	push de
-	ld de, $19
+	ld de, SFX_WRONG
 	call PlaySFX
 	pop de
-	ld hl, $48ce
+	ld hl, UnknownText_0x2c8ce
 	call PrintText
 	jr .asm_2c8b6
 .asm_2c88b
@@ -36454,20 +39755,45 @@
 	ld c, $5
 	callab ChangeHappiness
 	call Function2cb0c
-	jr .asm_2c8bd
+	jr Function2c8bd
 .asm_2c8b6
 	and a
 	ret
 ; 2c8b8 (b:48b8)
 
-INCBIN "baserom.gbc",$2c8b8,$2c8bd - $2c8b8
-.asm_2c8bd
+Function2c8b8: ; 2c8b8
+	ld a, $2
+	ld [$d0ec], a
+
+Function2c8bd: ; 2c8bd
 	scf
 	ret
 ; 2c8bf (b:48bf)
 
-INCBIN "baserom.gbc",$2c8bf,$2c8d3 - $2c8bf
+UnknownText_0x2c8bf: ; 0x2c8bf
+	; Booted up a TM.
+	text_jump UnknownText_0x1c0373
+	db "@"
+; 0x2c8c4
 
+UnknownText_0x2c8c4: ; 0x2c8c4
+	; Booted up an HM.
+	text_jump UnknownText_0x1c0384
+	db "@"
+; 0x2c8c9
+
+UnknownText_0x2c8c9: ; 0x2c8c9
+	; It contained @ . Teach @ to a #MON?
+	text_jump UnknownText_0x1c0396
+	db "@"
+; 0x2c8ce
+
+UnknownText_0x2c8ce: ; 0x2c8ce
+	; is not compatible with @ . It can't learn @ .
+	text_jump UnknownText_0x1c03c2
+	db "@"
+; 0x2c8d3
+
 ; known jump sources: 2c773 (b:4773)
 Function2c8d3: ; 2c8d3 (b:48d3)
 	xor a
@@ -36714,7 +40040,7 @@
 	inc hl
 	inc hl
 	push de
-	ld de, $4aae
+	ld de, String_2caae
 	call PlaceString
 	pop de
 .asm_2ca85
@@ -36734,8 +40060,25 @@
 	ret
 ; 2ca95 (b:4a95)
 
-INCBIN "baserom.gbc",$2ca95,$2cab5 - $2ca95
+Function2ca95: ; 2ca95
+	pop hl
+	ld bc, $0003
+	add hl, bc
+	ld a, $f
+	call Predef
+	ld a, [$d265]
+	ld [$d262], a
+	call GetMoveName
+	push hl
+	call PlaceString
+	pop hl
+	ret
+; 2caae
 
+String_2caae: ; 2caae
+	db "CANCEL@"
+; 2cab5
+
 ; known jump sources: 2c98a (b:498a), 2c9c5 (b:49c5), 2c9f5 (b:49f5)
 Function2cab5: ; 2cab5 (b:4ab5)
 	ld hl, TMsHMs ; $d859
@@ -36758,7 +40101,7 @@
 Function2caca: ; 2caca (b:4aca)
 	ld hl, $c4e5
 	push de
-	ld de, $4aae
+	ld de, String_2caae
 	call PlaceString
 	pop de
 	ret
@@ -36766,14 +40109,50 @@
 ; known jump sources: 2c974 (b:4974), 2c9a5 (b:49a5)
 Function2cad6: ; 2cad6 (b:4ad6)
 	push de
-	ld de, $8
+	ld de, SFX_READ_TEXT_2
 	call PlaySFX
 	pop de
 	ret
 ; 2cadf (b:4adf)
 
-INCBIN "baserom.gbc",$2cadf,$2cb0c - $2cadf
+Function2cadf: ; 2cadf
+	call Function2c7a7
+	call Function2cafa
+	ld hl, UnknownText_0x2caf0
+	jr nc, .asm_2caed
+	ld hl, UnknownText_0x2caf5
 
+.asm_2caed
+	jp PrintText
+; 2caf0
+
+UnknownText_0x2caf0: ; 0x2caf0
+	; You have no room for any more @ S.
+	text_jump UnknownText_0x1c03fa
+	db "@"
+; 0x2caf5
+
+UnknownText_0x2caf5: ; 0x2caf5
+	; You received @ !
+	text_jump UnknownText_0x1c0421
+	db "@"
+; 0x2cafa
+
+Function2cafa: ; 2cafa
+	ld a, [$d265]
+	dec a
+	ld hl, TMsHMs
+	ld b, 0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	inc a
+	cp NUM_TMS * 2
+	ret nc
+	ld [hl], a
+	ret
+; 2cb0c
+
 ; known jump sources: 2c8b1 (b:48b1)
 Function2cb0c: ; 2cb0c (b:4b0c)
 	call Function2c7a7
@@ -36780,7 +40159,7 @@
 	ld a, [$d265]
 	dec a
 	ld hl, TMsHMs ; $d859
-	ld b, $0
+	ld b, 0
 	ld c, a
 	add hl, bc
 	ld a, [hl]
@@ -37007,7 +40386,7 @@
 	ld [$ffde], a
 	call DelayFrame
 	ld b, 6
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld de, PartyMon2 - PartyMon1 - 1
 .asm_2ee3d
 	ld a, [hli]
@@ -37018,7 +40397,7 @@
 	jr nz, .asm_2ee3d
 
 .asm_2ee45
-	ld de, PartyMon1Level - PartyMon1CurHP
+	ld de, PartyMon1Level - PartyMon1HP
 	add hl, de
 	ld a, [hl]
 	ld [BattleMonLevel], a
@@ -37280,13 +40659,13 @@
 	ld a, [$c731]
 	and a
 	jr nz, Function38041
-	ld hl, $55a1
+	ld hl, TrainerClassAttributes + 5
 	ld a, [$cfc0]
 	and a
 	jr nz, .asm_38032
 	ld a, [TrainerClass]
 	dec a
-	ld bc, $0007
+	ld bc, 7
 	call AddNTimes
 
 .asm_38032
@@ -37424,12 +40803,12 @@
 	ret nc
 	ld a, [TrainerClass]
 	dec a
-	ld hl, $55a1
-	ld bc, $0007
+	ld hl, TrainerClassAttributes + 5
+	ld bc, 7
 	call AddNTimes
 	ld b, h
 	ld c, l
-	ld hl, $4196
+	ld hl, Unknown_38196
 	ld de, $c650
 .asm_3812c
 	ld a, [hl]
@@ -37453,14 +40832,14 @@
 	inc hl
 	push hl
 	push de
-	ld de, $414a
+	ld de, .asm_3814a
 	push de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
-; 3814a
 
+.asm_3814a
 	pop de
 	pop hl
 	inc hl
@@ -37514,11 +40893,29 @@
 	ret
 ; 38196
 
-INCBIN "baserom.gbc",$38196,$381be - $38196
+Unknown_38196: ; 39196
+	dbw FULL_RESTORE, Function38208
+	dbw MAX_POTION,   Function38220
+	dbw HYPER_POTION, Function38284
+	dbw SUPER_POTION, Function38292
+	dbw POTION,       Function382a0
+	dbw X_ACCURACY,   Function382f9
+	dbw FULL_HEAL,    Function381be
+	dbw GUARD_SPEC,   Function38305
+	dbw DIRE_HIT,     Function38311
+	dbw X_ATTACK,     Function3831d
+	dbw X_DEFEND,     Function38329
+	dbw X_SPEED,      Function38335
+	dbw X_SPECIAL,    Function38341
+	db $ff
+; 381be
+
+Function381be: ; 381be
 	call Function381ca
 	jp c, Function38383
 	call Function383a3
 	jp Function38385
+; 381ca
 
 ; known jump sources: 381be (e:41be), 38214 (e:4214)
 Function381ca: ; 381ca (e:41ca)
@@ -37535,6 +40932,7 @@
 	cp $32
 	jp c, Function38385
 	jp Function38383
+
 .asm_381e7
 	ld a, [EnemySubStatus5] ; $c671
 	bit 0, a
@@ -37550,6 +40948,9 @@
 	and $27
 	jp z, Function38383
 	jp Function38385
+; 38208
+
+Function38208: ; 38208
 	call Function3822c
 	jp nc, Function3821a
 	ld a, [bc]
@@ -37562,6 +40963,9 @@
 Function3821a: ; 3821a (e:421a)
 	call Function383b5
 	jp Function38385
+; 38220
+
+Function38220: ; 38220
 	call Function3822c
 	jp c, Function38383
 	call Function383ae
@@ -37571,7 +40975,7 @@
 Function3822c: ; 3822c (e:422c)
 	ld a, [bc]
 	bit 6, a
-	jr nz, asm_38267
+	jr nz, Function38267
 	callab AICheckEnemyHalfHP
 	jp c, Function38383
 	ld a, [bc]
@@ -37592,7 +40996,8 @@
 	cp $32
 	jp c, Function38383
 	jr Function38281
-asm_38267: ; 38267 (e:4267)
+
+Function38267: ; 38267 (e:4267)
 	callab AICheckEnemyHalfHP
 	jp c, Function38383
 	callab AICheckEnemyQuarterHP
@@ -37604,22 +41009,127 @@
 ; known jump sources: 38246 (e:4246), 3824e (e:424e), 38265 (e:4265), 38276 (e:4276)
 Function38281: ; 38281 (e:4281)
 	jp Function38385
+; 38284
+
+Function38284: ; 38284
 	call Function3822c
 	jp c, Function38383
-	ld b, $c8
+	ld b, 200
 	call Function383f4
 	jp Function38385
 ; 38292 (e:4292)
 
-INCBIN "baserom.gbc",$38292,$38311 - $38292
+Function38292: ; 38292
+	call Function3822c
+	jp c, Function38383
+
+Function38298: ; 38298
+	ld b, 50
+	call Function383ee
+	jp Function38385
+; 382a0
+
+Function382a0: ; 382a0
+	call Function3822c
+	jp c, Function38383
+	ld b, 20
+	call Function383e8
+	jp Function38385
+; 382ae
+
+Function382ae: ; 382ae
+	callab AICheckEnemyMaxHP
+	jr c, .asm_382e4
+	push bc
+	ld de, EnemyMonMaxHPLo
+	ld hl, EnemyMonHPLo
+	ld a, [de]
+	sub [hl]
+	jr z, .asm_382e7
+	dec hl
+	dec de
+	ld c, a
+	sbc [hl]
+	and a
+	jr nz, .asm_382e7
+	ld a, c
+	cp b
+	jp c, .asm_382d5
+	callab AICheckEnemyQuarterHP
+	jr c, .asm_382e7
+
+.asm_382d5
+	pop bc
+	ld a, [bc]
+	bit 5, a
+	jp z, Function38385
+	call Random
+	cp $80
+	jp c, Function38385
+
+.asm_382e4
+	jp Function38383
+
+.asm_382e7
+	pop bc
+	ld a, [bc]
+	bit 5, a
+	jp z, Function38383
+	call Random
+	cp $64
+	jp c, Function38385
+	jp Function38383
+; 382f9
+
+Function382f9: ; 382f9
 	call Function3834d
 	jp c, Function38383
+	call Function384f7
+	jp Function38385
+; 38305
+
+Function38305: ; 38305
+	call Function3834d
+	jp c, Function38383
+	call Function38504
+	jp Function38385
+; 38311
+
+Function38311: ; 38311
+	call Function3834d
+	jp c, Function38383
 	call Function38511
 	jp Function38385
 ; 3831d (e:431d)
 
-INCBIN "baserom.gbc",$3831d,$3834d - $3831d
+Function3831d: ; 3831d
+	call Function3834d
+	jp c, Function38383
+	call Function38541
+	jp Function38385
+; 38329
 
+Function38329: ; 38329
+	call Function3834d
+	jp c, Function38383
+	call Function38547
+	jp Function38385
+; 38335
+
+Function38335: ; 38335
+	call Function3834d
+	jp c, Function38383
+	call Function3854d
+	jp Function38385
+; 38341
+
+Function38341: ; 38341
+	call Function3834d
+	jp c, Function38383
+	call Function38553
+	jp Function38385
+; 3834d
+
 ; known jump sources: 38311 (e:4311)
 Function3834d: ; 3834d (e:434d)
 	ld a, [EnemyTurnsTaken] ; $c6dc
@@ -37722,12 +41232,22 @@
 	jr asm_38436
 ; 383e8 (e:43e8)
 
-INCBIN "baserom.gbc",$383e8,$383f4 - $383e8
+Function383e8: ; 383e8
+	ld a, POTION
+	ld b, 20
+	jr Function383f8
 
+Function383ee: ; 383ee
+	ld a, SUPER_POTION
+	ld b, 50
+	jr Function383f8
+
 ; known jump sources: 3828c (e:428c)
 Function383f4: ; 383f4 (e:43f4)
-	ld a, $10
-	ld b, $c8
+	ld a, HYPER_POTION
+	ld b, 200
+
+Function383f8: ; 383f8
 	ld [$d1f1], a
 	ld hl, EnemyMonHPLo ; $d217
 	ld a, [hl]
@@ -37779,7 +41299,7 @@
 Function3844b: ; 3844b
 	ld a, [OTPartyCount]
 	ld c, a
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	ld d, 0
 .asm_38454
 	ld a, [hli]
@@ -38031,8 +41551,8 @@
 	call Function39550
 	ld a, [TrainerClass]
 	dec a
-	ld hl, $559c
-	ld bc, $0007
+	ld hl, TrainerClassAttributes
+	ld bc, 7
 	call AddNTimes
 	ld de, $c650
 	ld a, [hli]
@@ -38045,10 +41565,9 @@
 	ret
 ; 3959c
 
+INCLUDE "trainers/attributes.asm"
 
-INCBIN "baserom.gbc",$3959c,$39771 - $3959c
 
-
 Function39771: ; 39771
 	ld a, [$cfc0]
 	bit 0, a
@@ -38103,21 +41622,18 @@
 	ld b, $0
 	ld d, h
 	ld e, l
-	ld hl, $57e3
+	ld hl, Jumptable_397e3
 	add hl, bc
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld bc, .data_397d0
+	ld bc, .asm_397d0
 	push bc
 	jp [hl]
 
-.data_397d0
 .asm_397d0
-	db $c3
-	db $1b
-	db $59
+	jp Function3991b
 
 .asm_397d3
 	ld a, $0
@@ -38128,7 +41644,14 @@
 	jr .asm_397d0
 ; 397e3
 
-INCBIN "baserom.gbc",$397e3,$397eb - $397e3
+Jumptable_397e3: ; 397e3
+	dw Function397eb
+	dw Function39806
+	dw Function39871
+	dw Function3989d
+; 397eb
+
+Function397eb: ; 397eb
 	ld h, d
 	ld l, e
 .asm_397ed
@@ -38145,8 +41668,8 @@
 	call Predef
 	pop hl
 	jr .asm_397ed
+; 39806
 
-
 Function39806: ; 39806
 	ld h, d
 	ld l, e
@@ -38216,6 +41739,7 @@
 	jr .asm_39808
 ; 39871
 
+Function39871: ; 39871
 	ld h, d
 	ld l, e
 .asm_39873
@@ -38243,8 +41767,86 @@
 	jr .asm_39873
 ; 3989d (e:589d)
 
-INCBIN "baserom.gbc",$3989d,$3991b - $3989d
+Function3989d: ; 3989d
+	ld h, d
+	ld l, e
+.asm_3989f
+	ld a, [hli]
+	cp $ff
+	ret z
+	ld [CurPartyLevel], a
+	ld a, [hli]
+	ld [CurPartySpecies], a
+	ld a, $1
+	ld [MonType], a
+	push hl
+	ld a, $6
+	call Predef
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, $d289
+	ld bc, $0030
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+	ld a, [hli]
+	ld [de], a
+	push hl
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, $d28a
+	ld bc, $0030
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+	ld b, $4
+.asm_398da
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_398da
+	push hl
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1
+	ld bc, $0030
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, $0017
+	add hl, de
+	push hl
+	ld hl, $0002
+	add hl, de
+	pop de
+	ld b, $4
+.asm_398fc
+	ld a, [hli]
+	and a
+	jr z, .asm_39918
+	push hl
+	push bc
+	dec a
+	ld hl, Moves + MOVE_PP
+	ld bc, MOVE_LENGTH
+	call AddNTimes
+	ld a, BANK(Moves)
+	call GetFarByte
+	pop bc
+	pop hl
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_398fc
 
+.asm_39918
+	pop hl
+	jr .asm_3989f
+; 3991b
+
 ; known jump sources: 397d0 (e:57d0)
 Function3991b: ; 3991b (e:591b)
 	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
@@ -40326,31 +43928,37 @@
 	srl a
 	srl a
 	srl a
-	ld e, $0
+	ld e, 0
 	ld d, a
 	ld a, [$d265]
 	dec a
-	and $7
-	swap a
+	and 7
+	swap a ; * $10
 	ld l, a
-	ld h, $0
+	ld h, 0
 	add hl, de
-	ld de, $5434
+	ld de, Footprints
 	add hl, de
+
 	push hl
 	ld e, l
 	ld d, h
 	ld hl, $9620
-	ld bc, $3e02
+	lb bc, BANK(Footprints), 2
 	call Request1bpp
 	pop hl
-	ld de, $0080
+
+	; Whoever was editing footprints forgot to fix their
+	; tile editor. Now each bottom half is 8 tiles off.
+	ld de, $80
 	add hl, de
+
 	ld e, l
 	ld d, h
 	ld hl, $9640
-	ld bc, $3e02
+	lb bc, BANK(Footprints), 2
 	call Request1bpp
+
 	ret
 ; 414b7
 
@@ -41278,7 +44886,7 @@
 
 ; Apply AI scoring layers depending on the trainer class.
 .ApplyLayers
-	ld hl, $559f ; TrainerAI + 3 ; e:559c-5771
+	ld hl, TrainerClassAttributes + 3
 
 	ld a, [$cfc0]
 	bit 0, a
@@ -41290,7 +44898,7 @@
 	call AddNTimes
 
 .asm_4412f
-	ld bc, (CHECK_FLAG << 8) | 0
+	lb bc, CHECK_FLAG, 0
 	push bc
 	push hl
 
@@ -41941,8 +45549,30 @@
 	jp CloseSRAM
 ; 44781 (11:4781)
 
-INCBIN "baserom.gbc",$44781,$447a0 - $44781
+Function44781: ; 44781
+	ld a, [PartyCount]
+	and a
+	jr z, .asm_4479e
+	ld e, a
+	ld hl, PartyMon1Item
+.asm_4478b
+	ld d, [hl]
+	push hl
+	push de
+	callba ItemIsMail
+	pop de
+	pop hl
+	ret c
+	ld bc, $0030
+	add hl, bc
+	dec e
+	jr nz, .asm_4478b
 
+.asm_4479e
+	and a
+	ret
+; 447a0
+
 _KrisMailBoxMenu: ; 0x447a0
 	call InitMail
 	jr z, .nomail
@@ -46458,7 +50088,7 @@
 Function4ab06: ; 4ab06
 	ld a, [CurPartyMon]
 	ld bc, $0030
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call AddNTimes
 	ld a, [hli]
 	ld b, a
@@ -47951,7 +51581,31 @@
 	ret
 ; 4d81e
 
-INCBIN "baserom.gbc",$4d81e,$4d860 - $4d81e
+Function4d81e: ; 4d81e
+	ld a, [PlayerLightScreenCount]
+	call IsAPokemon
+	ret c
+	callba Function29549
+	ld a, [PlayerLightScreenCount]
+	ld [CurPartySpecies], a
+	ld a, [$c72f]
+	ld [TempMonDVs], a
+	ld a, [$c730]
+	ld [$d124], a
+	ld b, $1a
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	callba Function294c0
+	ld a, [PlayerLightScreenCount]
+	ld [CurPartySpecies], a
+	ld hl, $c4cf
+	ld d, $0
+	ld e, $3
+	ld a, $47
+	call Predef
+	ret
+; 4d860
 
 CheckPokerus: ; 4d860
 ; Return carry if a monster in your party has Pokerus
@@ -48962,7 +52616,7 @@
 
 ; known jump sources: 4deea (13:5eea)
 Function4df45: ; 4df45 (13:5f45)
-	ld hl, TempMonCurHP ; $d130
+	ld hl, TempMonHP ; $d130
 	ld a, [hli]
 	ld b, a
 	ld c, [hl]
@@ -50634,7 +54288,7 @@
 Function50117: ; 50117
 	ld a, b
 	ld bc, $0030
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call AddNTimes
 	ld a, [hli]
 	or [hl]
@@ -50674,7 +54328,7 @@
 	push hl
 	ld a, b
 	ld bc, $0030
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call AddNTimes
 	ld e, l
 	ld d, h
@@ -51638,7 +55292,7 @@
 CheckAnyFaintedMon: ; 507fb
 	ld de, PartyMon2 - PartyMon1
 	ld bc, PartySpecies
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -51754,7 +55408,7 @@
 	ld a, $c
 	call Predef
 	pop bc
-	ld hl, TempMonCurHP - TempMon
+	ld hl, TempMonHP - TempMon
 	add hl, bc
 	ld d, h
 	ld e, l
@@ -51962,9 +55616,9 @@
 	cp BOXMON
 	jr z, .asm_50b30
 
-	ld a, [TempMonCurHP]
+	ld a, [TempMonHP]
 	ld b, a
-	ld a, [TempMonCurHP + 1]
+	ld a, [TempMonHP + 1]
 	ld c, a
 
 ; Any HP?
@@ -52011,7 +55665,7 @@
 ; Print HP 
 	ld bc, $0015 ; move (1,1)
 	add hl, bc
-	ld de, TempMonCurHP
+	ld de, TempMonHP
 	ld a, [MonType]
 	cp BOXMON
 	jr nz, .asm_50b66
@@ -76238,8 +79892,58 @@
 	ret
 ; e2731 (38:6731)
 
-INCBIN "baserom.gbc",$e2731,$e2963 - $e2731
+INCBIN "baserom.gbc", $e2731, $e2759 - $e2731
 
+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, [$ffaa]
+	push af
+	ld a, $1
+	ld [$ffaa], a
+	xor a
+	ld [$ffde], a
+	call Functione2963
+	ld a, [$db72]
+	and $f
+	inc a
+	ld [$cb2e], a
+	call DelayFrame
+.asm_e2781
+	call Functiona57
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_e2793
+	call Functione27a2
+	call DelayFrame
+	jr .asm_e2781
+
+.asm_e2793
+	call ClearSprites
+	pop af
+	ld [$ffaa], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+; e27a2
+
+Functione27a2: ; e27a2
+	ld a, [$cf63]
+	ld hl, $67ac
+	call Functione33df
+	jp [hl]
+; e27ac
+
+INCBIN "baserom.gbc", $e27ac, $e2963 - $e27ac
+
 ; known jump sources: e23aa (38:63aa), e259c (38:659c)
 Functione2963: ; e2963 (38:6963)
 	call WhiteBGMap
@@ -80240,6 +83944,8 @@
 INCBIN "gfx/frames/9.1bpp"
 ; f89b0
 
+; TODO: Various misc graphics here.
+
 INCBIN "baserom.gbc", $f89b0, $f8a90 - $f89b0
 
 ShinyIcon: ; f8a90
@@ -80249,11 +83955,16 @@
 
 TownMapGFX: ; f8ba0
 INCBIN "gfx/misc/town_map.lz"
-; f8ea3
+; f8ea4
 
-INCBIN "baserom.gbc", $f8ea3, $fb449 - $f8ea3
+INCBIN "baserom.gbc", $f8ea4, $f9434 - $f8ea4
 
+Footprints: ; f9434
+INCBIN "gfx/misc/footprints.1bpp"
+; fb434
 
+INCBIN "baserom.gbc", $fb434, $fb449 - $fb434
+
 Functionfb449:: ; fb449
 	ld de, $4200
 	ld hl, VTiles1
@@ -80464,7 +84175,7 @@
 	jr z, .asm_fb5f8
 	push bc
 	ld a, c
-	ld hl, PartyMon1CurHP
+	ld hl, PartyMon1HP
 	call GetPartyLocation
 	pop bc
 	ld a, [hli]
@@ -80476,7 +84187,7 @@
 	dec b
 	jr nz, .asm_fb5e7
 	ld a, [$d003]
-	ld hl, OTPartyMon1CurHP
+	ld hl, OTPartyMon1HP
 	call GetPartyLocation
 	ld a, [hli]
 	or [hl]
--- a/text/phone/bill.asm
+++ b/text/phone/bill.asm
@@ -31,7 +31,7 @@
 	db "waiting!", $51
 	db $14, ", your BOX", $4f
 	db "has room for @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $55
 	db "more #MON.", $51
 	db "Get out there and", $4f
@@ -43,7 +43,7 @@
 	db $14, ", your BOX", $4f
 	db "has room for only", $55
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " more #MON.", $51
 	db "Maybe you should", $4f
 	db "switch your BOX.", $57
--- a/text/phone/extra.asm
+++ b/text/phone/extra.asm
@@ -222,7 +222,7 @@
 UnknownText_0x649dc: ; 0x649dc
 	db $0, "I'm always with my", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "It's so cute!", $4f
 	db "I just love it!", $57
@@ -232,7 +232,7 @@
 	db $0, "Changing the topic", $4f
 	db "here, I saw this", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " for the", $4f
 	db "first time.", $51
 	db "It was easy to", $4f
@@ -243,7 +243,7 @@
 	db $0, "I was wondering,", $4f
 	db "do you happen to", $55
 	db "have @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "?", $51
 	db "I can't seem to", $4f
 	db "catch one. What is", $51
@@ -260,7 +260,7 @@
 	db "Contest!", $51
 	db "I'll be here on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x64b48
 
@@ -274,11 +274,11 @@
 	db "caught you!", $51
 	db "A whole bunch of", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " have", $51
 	db "appeared around", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $51
 	db "You have to see", $4f
 	db "this!", $57
@@ -298,7 +298,7 @@
 	db "Let's battle. I'll", $4f
 	db "be waiting for you", $55
 	db "on @"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x64c5a
 
@@ -313,7 +313,7 @@
 
 UnknownText_0x64cbd: ; 0x64cbd
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s", $4f
 	db "getting stronger,", $51
 	db "exactly as I", $4f
@@ -324,7 +324,7 @@
 	db $0, "By the way, we", $4f
 	db "knocked out a wild", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " just", $4f
 	db "the other day.", $51
 	db "Studying up in", $4f
@@ -334,7 +334,7 @@
 UnknownText_0x64d4f: ; 0x64d4f
 	db $0, "By the way, a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " escaped", $55
 	db "on me yesterday.", $51
 	db "A computational", $4f
@@ -348,7 +348,7 @@
 	db "lot better!", $51
 	db "I'm hanging out on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Can you come down", $4f
 	db "for a battle?", $57
@@ -364,7 +364,7 @@
 	db "You can have it!", $4f
 	db "Why don't you come", $51
 	db "to @"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, $4f
 	db "and pick it up?", $57
 ; 0x64e90
@@ -382,7 +382,7 @@
 	db "my strategy!", $51
 	db "I'm waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x64f1a
 
@@ -393,13 +393,13 @@
 	db "gift right away?", $51
 	db "I'm waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x64f74
 
 UnknownText_0x64f74: ; 0x64f74
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " is", $4f
 	db "getting prettier!", $51
 	db "I've been taking", $4f
@@ -410,7 +410,7 @@
 	db $0, "It took only an", $4f
 	db "instant to KO a", $55
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "It must be because", $4f
 	db "you gave me some", $51
@@ -421,7 +421,7 @@
 UnknownText_0x6501c: ; 0x6501c
 	db $0, "You know what?", $4f
 	db "A wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $51
 	db "got away from me", $4f
 	db "again.", $51
@@ -434,7 +434,7 @@
 UnknownText_0x65091: ; 0x65091
 	db $0, "Right now, I'm on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "If you're close", $4f
 	db "by, let's battle!", $51
@@ -455,7 +455,7 @@
 	db "like it. Come get", $51
 	db "it! I'm waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x65161
 
@@ -475,7 +475,7 @@
 	db "battle me?", $51
 	db "I'm waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x6520f
 
@@ -487,7 +487,7 @@
 	db "to someone else.", $51
 	db "I'm waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x65271
 
@@ -495,7 +495,7 @@
 	db $0, "I recently began", $4f
 	db "observing wild", $55
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "I've been learning", $4f
 	db "all sorts of new", $51
@@ -511,7 +511,7 @@
 	db $0, "Oh yes, I managed", $4f
 	db "to knock out a", $51
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " a", $4f
 	db "while back.", $51
 	db "Well, considering", $4f
@@ -524,7 +524,7 @@
 	db $0, "Oh yes, I came", $4f
 	db "close to catching", $51
 	db "a wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ",", $4f
 	db "but it got away.", $51
 	db "For the longest", $4f
@@ -531,7 +531,7 @@
 	db "time, I've been", $51
 	db "wanting to observe", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ". Rats…", $57
 ; 0x65419
 
@@ -542,7 +542,7 @@
 	db "avoid rusting out.", $51
 	db "I'll be on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x65471
 
@@ -684,7 +684,7 @@
 	db "about our battle?", $51
 	db "The place is", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Hurry over--I'm", $4f
 	db "waiting.", $57
@@ -693,7 +693,7 @@
 UnknownText_0x65ab2: ; 0x65ab2
 	db $0, "Listen to this.", $4f
 	db "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $51
 	db "grins happily when", $4f
 	db "I pinch its cheek.", $51
@@ -706,10 +706,10 @@
 	db $0, "Oh, and recently,", $4f
 	db "my PIKACHU beat a", $55
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "A wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ",", $4f
 	db "I tell you!", $51
 	db "Don't you think", $4f
@@ -723,7 +723,7 @@
 UnknownText_0x65bc8: ; 0x65bc8
 	db $0, "Oh, and I saw a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " a", $55
 	db "little while ago.", $51
 	db "But it wasn't very", $4f
@@ -773,7 +773,7 @@
 	db $0, "What's wrong?", $51
 	db "I'm waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Come pick this up", $4f
 	db "anytime.", $57
@@ -781,7 +781,7 @@
 
 UnknownText_0x65de4: ; 0x65de4
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " has", $4f
 	db "grown again.", $51
 	db "It was only about", $4f
@@ -793,7 +793,7 @@
 UnknownText_0x65e42: ; 0x65e42
 	db $0, "Oh yeah, I KO'd a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "It was huge, like", $4f
 	db "this big even.", $51
@@ -805,7 +805,7 @@
 UnknownText_0x65eac: ; 0x65eac
 	db $0, "Oh yeah, I lost a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "It was huge, like", $4f
 	db "this big even.", $51
@@ -819,7 +819,7 @@
 	db "battle going!", $51
 	db "I'll be fishing on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Swing by if you", $4f
 	db "have the time.", $57
@@ -838,7 +838,7 @@
 	db "it's yours.", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x65ff2
 
@@ -856,7 +856,7 @@
 	db "You're lost?", $51
 	db "Our battle will be", $4f
 	db "on @"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x66087
 
@@ -865,7 +865,7 @@
 	db "good for you.", $51
 	db "Hustle over to", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x660be
 
@@ -884,7 +884,7 @@
 	db $0, "Oh yeah, I took", $4f
 	db "down this wild", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $4f
 	db "It wasn't rare", $51
 	db "enough to bother", $4f
@@ -914,7 +914,7 @@
 	db "worth your time!", $51
 	db "You know where--", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x662a9
 
@@ -1005,13 +1005,13 @@
 	db "rare #MON.", $51
 	db "Hurry over to", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x665ad
 
 UnknownText_0x665ad: ; 0x665ad
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s", $4f
 	db "adorable, don't", $51
 	db "you think so?", $4f
@@ -1024,7 +1024,7 @@
 	db $0, "Oh, and we had to", $4f
 	db "battle a wild", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " a while", $4f
 	db "ago…", $51
 	db "My CLEFAIRY came", $4f
@@ -1032,7 +1032,7 @@
 	db "Isn't that awful?", $51
 	db "I hate those nasty", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $57
 ; 0x66688
 
@@ -1040,7 +1040,7 @@
 	db $0, "Oh, and we had to", $4f
 	db "battle a wild", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " a while", $4f
 	db "ago…", $51
 	db "My CLEFAIRY got", $4f
@@ -1060,12 +1060,12 @@
 	db "I'll be waiting", $4f
 	db "with CLEFAIRY on", $55
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x66796
 
 UnknownText_0x66796: ; 0x66796
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "It's awful.", $4f
 	db "My CLEFAIRY…", $51
@@ -1089,7 +1089,7 @@
 	db "I'll give you one!", $51
 	db "Come collect it on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x66882
 
@@ -1107,7 +1107,7 @@
 	db "can wake it up…", $51
 	db "Please hurry to", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x6691d
 
@@ -1119,13 +1119,13 @@
 	db "CLEFAIRY.", $51
 	db "Please hurry to", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x66980
 
 UnknownText_0x66980: ; 0x66980
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s", $4f
 	db "become tougher.", $51
 	db "We've achieved", $4f
@@ -1135,7 +1135,7 @@
 UnknownText_0x669b2: ; 0x669b2
 	db $0, "We can easily beat", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "…Huh? You too?", $4f
 	db "Isn't that great?", $57
@@ -1144,7 +1144,7 @@
 UnknownText_0x669ed: ; 0x669ed
 	db $0, "But get this, a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $51
 	db "just barely eluded", $4f
 	db "us.", $51
@@ -1155,7 +1155,7 @@
 UnknownText_0x66a3a: ; 0x66a3a
 	db $0, "Right now, I'm on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "You know, where I", $4f
 	db "first met you?", $51
@@ -1177,7 +1177,7 @@
 	db $0, "Oh, ", $14, "!", $4f
 	db "Hurry, hurry!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $4f
 	db "FLY over now!", $57
 ; 0x66afc
@@ -1184,7 +1184,7 @@
 
 UnknownText_0x66afc: ; 0x66afc
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s", $4f
 	db "grown impressive!", $51
 	db "My fishing skills", $4f
@@ -1194,7 +1194,7 @@
 UnknownText_0x66b3e: ; 0x66b3e
 	db $0, "We beat a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "…", $51
 	db "You know, I have", $4f
 	db "more fun fishing", $51
@@ -1207,7 +1207,7 @@
 	db "we came this close", $51
 	db "to landing a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "I tell you, it was", $4f
 	db "huge. Believe me.", $57
@@ -1216,7 +1216,7 @@
 UnknownText_0x66bf3: ; 0x66bf3
 	db $0, "I'm fishing on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ",", $51
 	db "but nothing's", $4f
 	db "biting today.", $51
@@ -1234,7 +1234,7 @@
 	db "while fishing.", $51
 	db "Come pick it up on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x66ca7
 
@@ -1252,7 +1252,7 @@
 	db "They're not biting", $51
 	db "like before on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "…", $51
 	db "You have to come", $4f
 	db "for a battle!", $57
@@ -1264,7 +1264,7 @@
 	db "Hah? You don't", $4f
 	db "know where?", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "…", $4f
 	db "Just head from", $51
 	db "MAHOGANY toward", $4f
@@ -1327,7 +1327,7 @@
 UnknownText_0x66f9f: ; 0x66f9f
 	db $0, "Nothing can match", $4f
 	db "my @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " now.", $57
 ; 0x66fc0
 
@@ -1334,7 +1334,7 @@
 UnknownText_0x66fc0: ; 0x66fc0
 	db $0, "Yeah, we KO'd a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "That was OK, but I", $4f
 	db "wanted to get it…", $57
@@ -1344,7 +1344,7 @@
 	db $0, "And yesterday, we", $4f
 	db "spotted a wild", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $4f
 	db "We were debating", $51
 	db "whether to catch", $4f
@@ -1362,7 +1362,7 @@
 	db "right or what?", $51
 	db "Yep! We'll meet on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x670eb
 
@@ -1379,7 +1379,7 @@
 UnknownText_0x6712a: ; 0x6712a
 	db $0, "Haven't you gotten", $4f
 	db "to @"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "?", $51
 	db "Waiting here isn't", $4f
 	db "bad, but I'd sure", $55
@@ -1387,9 +1387,9 @@
 ; 0x6717a
 
 UnknownText_0x6717a: ; 0x6717a
-	text_from_ram $d099
+	text_from_ram StringBuffer3
 	db $0, "'s @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $4f
 	db "is much stronger", $55
 	db "than before!", $57
@@ -1399,7 +1399,7 @@
 	db $0, "And, and…", $4f
 	db "I just battled and", $55
 	db "beat @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "I've raised my", $4f
 	db "#MON properly!", $57
@@ -1408,7 +1408,7 @@
 UnknownText_0x671eb: ; 0x671eb
 	db $0, "But, but…", $51
 	db "A wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $4f
 	db "got away from me", $51
 	db "again. It's just", $4f
@@ -1422,7 +1422,7 @@
 	db "time!", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x67281
 
@@ -1443,6 +1443,6 @@
 	db "Come battle ERIN!", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x67308
--- a/text/phone/extra3.asm
+++ b/text/phone/extra3.asm
@@ -16,7 +16,7 @@
 
 UnknownText_0x1740c0: ; 0x1740c0
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s", $4f
 	db "intelligence keeps", $51
 	db "rising. It might", $4f
@@ -28,7 +28,7 @@
 	db $0, "The other day, I", $4f
 	db "easily defeated a", $55
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "I think swapping", $4f
 	db "tips with you is", $55
@@ -39,7 +39,7 @@
 	db $0, "Oh, and listen.", $4f
 	db "I missed catching", $51
 	db "a @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " by", $4f
 	db "just a tiny bit.", $51
 	db "If I'd been a bit", $4f
@@ -55,7 +55,7 @@
 	db "logically.", $51
 	db "I'll be in", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Give me a shout if", $4f
 	db "you're nearby.", $57
@@ -170,7 +170,7 @@
 	db "soon!", $51
 	db "I'll be at", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x174688
 
@@ -177,7 +177,7 @@
 UnknownText_0x174688: ; 0x174688
 	db $0, "I fancied up my", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " and", $51
 	db "made it even cuter", $4f
 	db "than before!", $57
@@ -201,7 +201,7 @@
 	db "A closer look", $4f
 	db "showed it was", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ". I was", $4f
 	db "quite miffed.", $57
 ; 0x1747ac
@@ -220,7 +220,7 @@
 	db "me out.", $51
 	db "I'll be at", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Please come see me", $4f
 	db "when you can.", $57
@@ -239,7 +239,7 @@
 	db "There's no need to", $4f
 	db "hurry. Come see me", $51
 	db "in @"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, $4f
 	db "when you can.", $57
 ; 0x1748ea
@@ -250,7 +250,7 @@
 	db "It won't be like", $4f
 	db "last time!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "'s", $4f
 	db "where I'm waiting", $51
 	db "for you. Hustle", $4f
@@ -275,7 +275,7 @@
 	db "not have forgotten", $55
 	db "about our battle!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $51
 	db "Hustle over quick!", $4f
 	db "I'm waiting!", $57
@@ -283,13 +283,13 @@
 
 UnknownText_0x174a24: ; 0x174a24
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $4f
 	db "might be greater", $55
 	db "than I imagined.", $51
 	db "I doubt I'll see a", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " that's", $55
 	db "better than mine.", $57
 ; 0x174a80
@@ -298,12 +298,12 @@
 	db $0, "Oh, and I managed", $4f
 	db "to barely defeat", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " the", $4f
 	db "other day.", $51
 	db "I've never seen a", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " get", $55
 	db "that strong…", $51
 	db "You shouldn't let", $4f
@@ -317,7 +317,7 @@
 	db $0, "And a while back,", $4f
 	db "I tried to catch a", $55
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "But it managed to", $4f
 	db "elude me.", $51
@@ -331,7 +331,7 @@
 	db $0, "Let's battle!", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Give me a shout", $4f
 	db "when you're close.", $57
@@ -352,7 +352,7 @@
 	db "aren't you here?", $51
 	db "I'll take you down", $4f
 	db "with @"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x174c7f
 
@@ -359,10 +359,10 @@
 UnknownText_0x174c7f: ; 0x174c7f
 	db $0, "Do you remember my", $4f
 	db "sweet @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "?", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " runs", $4f
 	db "very fast.", $51
 	db "It's exhilarating", $4f
@@ -374,7 +374,7 @@
 UnknownText_0x174cf6: ; 0x174cf6
 	db $0, "Oh, have you ever", $4f
 	db "seen a @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $55
 	db "before?", $51
 	db "I just battled", $4f
@@ -390,7 +390,7 @@
 UnknownText_0x174d86: ; 0x174d86
 	db $0, "Oh, I just saw a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "I was trying to", $4f
 	db "catch it when I", $51
@@ -412,7 +412,7 @@
 	db "I'll be waiting", $4f
 	db "for you around", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $4f
 	db "Look for me, OK?", $57
 ; 0x174eb7
@@ -432,7 +432,7 @@
 	db "Did you forget our", $4f
 	db "deal?", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "That's where I'm", $4f
 	db "waiting.", $57
@@ -441,7 +441,7 @@
 UnknownText_0x174f2f: ; 0x174f2f
 	db $0, "Hey listen, my", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s stick", $51
 	db "has this really", $4f
 	db "delicious aroma.", $51
@@ -453,7 +453,7 @@
 	db $0, "A while ago, my", $4f
 	db "FARFETCH'D KO'd", $55
 	db "this @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "You should have", $4f
 	db "seen FARFETCH'D", $51
@@ -464,7 +464,7 @@
 UnknownText_0x174ffd: ; 0x174ffd
 	db $0, "I ran into a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "…", $51
 	db "I was trying to", $4f
 	db "catch it, but it", $51
@@ -482,7 +482,7 @@
 	db "all worked up and", $4f
 	db "raring to go.", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "'s", $4f
 	db "where I'm at.", $51
 	db "Keep an eye out", $4f
@@ -501,7 +501,7 @@
 	db "you can have it.", $51
 	db "Catch up to me on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ",", $51
 	db "and I'll let you", $4f
 	db "have it.", $57
@@ -527,7 +527,7 @@
 	db "smack me with its", $4f
 	db "stick!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $51
 	db "Please come as", $4f
 	db "soon as you can!", $57
@@ -539,7 +539,7 @@
 	db "this gift?", $51
 	db "Catch up to me on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ",", $51
 	db "and I'll let you", $4f
 	db "have it.", $57
@@ -549,11 +549,11 @@
 	db $0, "Listen, dear…", $51
 	db "Do you recall my", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "?", $51
 	db "Yes, exactly. That", $4f
 	db "lovely @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "Wouldn't you agree", $4f
 	db "it's a perfect", $55
@@ -563,11 +563,11 @@
 UnknownText_0x17536b: ; 0x17536b
 	db $0, "Have I ever faced", $4f
 	db "a wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "?", $51
 	db "You need to ask?", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " I've", $4f
 	db "beaten on numerous", $55
 	db "occasions!", $57
@@ -581,7 +581,7 @@
 	db "I would never fail", $4f
 	db "to catch a wild", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "…", $4f
 	db "Oh! Never mind!", $57
 ; 0x17543a
@@ -591,7 +591,7 @@
 	db "battle!", $51
 	db "The place shall be", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $51
 	db "Don't make me", $4f
 	db "wait! Got it?", $57
@@ -615,7 +615,7 @@
 	db "I told you that", $4f
 	db "the place was", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $4f
 	db "Don't try to run!", $57
 ; 0x175530
@@ -622,7 +622,7 @@
 
 UnknownText_0x175530: ; 0x175530
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s", $4f
 	db "looking sharper", $55
 	db "than before!", $51
@@ -635,7 +635,7 @@
 UnknownText_0x175591: ; 0x175591
 	db $0, "Oh yeah, I took", $4f
 	db "down a @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $51
 	db "in the wild the", $4f
 	db "other day.", $51
@@ -648,7 +648,7 @@
 UnknownText_0x175611: ; 0x175611
 	db $0, "Oh yeah, I saw a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "I thought about", $4f
 	db "going for it, but", $51
@@ -664,7 +664,7 @@
 	db "I promise things", $4f
 	db "will be different!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "'s", $4f
 	db "where I'll be.", $51
 	db "Give me a shout", $4f
@@ -678,7 +678,7 @@
 UnknownText_0x17571d: ; 0x17571d
 	db $0, "I'm checking out", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s moves", $51
 	db "and devising some", $4f
 	db "strategies.", $51
@@ -694,7 +694,7 @@
 	db "battle already!", $51
 	db "I'm waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x1757d4
 
@@ -706,7 +706,7 @@
 	db "quickly for me.", $4f
 	db "It's overwhelming!", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "'s grow-", $4f
 	db "ing especially", $51
 	db "quickly. I think", $4f
@@ -716,7 +716,7 @@
 UnknownText_0x175869: ; 0x175869
 	db $0, "Oh yeah, we KO'd a", $4f
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $51
 	db "with one hit a", $4f
 	db "while back.", $51
@@ -729,7 +729,7 @@
 UnknownText_0x1758e4: ; 0x1758e4
 	db $0, "Oh yeah, a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " got", $51
 	db "away from me at", $4f
 	db "the last second.", $51
@@ -747,7 +747,7 @@
 	db "It won't be like", $4f
 	db "last time!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "'s", $4f
 	db "where I'll be.", $51
 	db "Let me know when", $4f
@@ -776,7 +776,7 @@
 	db "some with you.", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x175abe
 
@@ -793,7 +793,7 @@
 	db $0, "Let's battle", $4f
 	db "already!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, " is", $4f
 	db "where I am.", $51
 	db "Please get here as", $4f
@@ -804,7 +804,7 @@
 	db $0, "How come you're", $4f
 	db "not here yet?", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, " is", $4f
 	db "where I am.", $51
 	db "Please get here as", $4f
@@ -815,7 +815,7 @@
 	db $0, "I've been spending", $4f
 	db "more time with my", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " than I", $4f
 	db "have with my kids.", $51
 	db "That's a bit sad,", $4f
@@ -825,7 +825,7 @@
 UnknownText_0x175c24: ; 0x175c24
 	db $0, "I just beat a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "I told my kid, but", $4f
 	db "he scoffed that he", $51
@@ -838,7 +838,7 @@
 UnknownText_0x175c9f: ; 0x175c9f
 	db $0, "Yesterday a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " slipped", $51
 	db "away from me, in", $4f
 	db "front of my kid.", $51
@@ -858,7 +858,7 @@
 	db "For a kid, you're", $4f
 	db "quite agreeable.", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, " is", $4f
 	db "the spot!", $57
 ; 0x175db7
@@ -872,13 +872,13 @@
 	db $0, "Listen, I… Yowch!", $51
 	db "Uh, sorry! See,", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " are", $51
 	db "biting like there", $4f
 	db "is no tomorrow", $51
 	db "over here on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $51
 	db "Aiyee! Ouch!", $4f
 	db "One jabbed me!", $51
@@ -904,7 +904,7 @@
 	db "I'm waiting for", $51
 	db "you to show up on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "You shouldn't make", $4f
 	db "your elders wait!", $57
@@ -924,7 +924,7 @@
 	db $0, "Oh, you have to", $4f
 	db "hear this.", $51
 	db "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " is", $4f
 	db "so adorable!", $51
 	db "It always wants to", $4f
@@ -935,7 +935,7 @@
 	db $0, "And, and! Um…", $51
 	db "We beat a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " with", $51
 	db "just one hit a", $4f
 	db "little while ago.", $51
@@ -948,7 +948,7 @@
 	db "We just saw a", $4f
 	db "really gorgeous", $55
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "But I was on the", $4f
 	db "phone, so it got", $51
@@ -965,7 +965,7 @@
 	db "like to battle?", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "Let me know when", $4f
 	db "you get here!", $57
@@ -1107,12 +1107,12 @@
 	db $0, "Listen, listen!", $51
 	db "I saw a beautiful", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "!", $51
 	db "I wish I could", $4f
 	db "become a beautiful", $55
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " too.", $57
 ; 0x17686d
 
@@ -1126,7 +1126,7 @@
 UnknownText_0x1768b0: ; 0x1768b0
 	db $0, "Listen, listen!", $51
 	db "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, "…", $4f
 	db "it… so pretty…", $51
 	db "and… giggle… so", $4f
@@ -1155,7 +1155,7 @@
 	db "away!", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x176a2f
 
@@ -1163,7 +1163,7 @@
 	db $0, "The other day, I", $4f
 	db "was watching my", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " eat", $4f
 	db "some BERRIES.", $51
 	db "It looked like it", $4f
@@ -1180,7 +1180,7 @@
 	db $0, "Lately, I've been", $4f
 	db "running across", $51
 	db "wild @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $4f
 	db "quite often.", $51
 	db "They're easily", $4f
@@ -1191,7 +1191,7 @@
 	db $0, "Oh yeah, I was", $4f
 	db "battling this", $51
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " the", $4f
 	db "other day…", $51
 	db "It took off when I", $4f
@@ -1207,7 +1207,7 @@
 	db $0, "Come on--let's", $4f
 	db "battle right now!", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, " is", $4f
 	db "where I am.", $51
 	db "Come on down if", $4f
@@ -1224,18 +1224,18 @@
 	db "mind-blowing!", $51
 	db "I took a hike in", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, $55
 	db "yesterday, see?", $51
 	db "Well, there were", $4f
 	db "tons of @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $51
 	db "around! You have", $4f
 	db "to see it!", $51
 	db "I get this feeling", $4f
 	db "that @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, $51
 	db "may be timid.", $4f
 	db "I didn't see any", $51
@@ -1257,7 +1257,7 @@
 	db "our battle, have", $4f
 	db "you?", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $4f
 	db "I'm waiting!", $57
 ; 0x176dd1
@@ -1276,7 +1276,7 @@
 
 UnknownText_0x176e5d: ; 0x176e5d
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " is", $4f
 	db "looking more and", $51
 	db "more like me. It's", $4f
@@ -1287,7 +1287,7 @@
 	db $0, "And, you know?", $51
 	db "Now we can KO", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " easily.", $51
 	db "I should challenge", $4f
 	db "the GOLDENROD GYM.", $57
@@ -1297,7 +1297,7 @@
 	db $0, "And, you know?", $4f
 	db "We just failed to", $51
 	db "beat @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " by", $4f
 	db "a tiny margin.", $51
 	db "I'm guessing my", $4f
@@ -1315,7 +1315,7 @@
 	db "with me?", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x176fdb
 
@@ -1356,7 +1356,7 @@
 	db "battle soon!", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $57
 ; 0x17717c
 
@@ -1373,7 +1373,7 @@
 
 UnknownText_0x1771fd: ; 0x1771fd
 	db $0, "My @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " and", $4f
 	db "I are getting more", $51
 	db "in sync with each", $4f
@@ -1383,7 +1383,7 @@
 UnknownText_0x177237: ; 0x177237
 	db $0, "We battled a wild", $4f
 	db "@"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, " and", $51
 	db "managed to drop it", $4f
 	db "in a close match.", $51
@@ -1395,7 +1395,7 @@
 	db $0, "But, you know?", $51
 	db "I still haven't", $4f
 	db "caught @"
-	text_from_ram $d0ac
+	text_from_ram StringBuffer4
 	db $0, ".", $51
 	db "It's getting past", $4f
 	db "frustrating…", $57
@@ -1407,7 +1407,7 @@
 	db "again sometime?", $51
 	db "I'll be waiting on", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, ".", $51
 	db "…Could you take it", $4f
 	db "a little easier on", $55
@@ -1437,7 +1437,7 @@
 	db "You will come for", $4f
 	db "it, won't you?", $51
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, " is", $4f
 	db "where I am.", $57
 ; 0x177465
@@ -1458,7 +1458,7 @@
 	db "for our battle?", $51
 	db "Don't forget,", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x17750e
 
@@ -1469,6 +1469,6 @@
 	db "present!", $51
 	db "Hurry over to", $4f
 	db "@"
-	text_from_ram $d0bf
+	text_from_ram StringBuffer5
 	db $0, "!", $57
 ; 0x177561
--- a/text/phone/mom.asm
+++ b/text/phone/mom.asm
@@ -6,11 +6,11 @@
 UnknownText_0x1b4021: ; 0x1b4021
 	db $0, "Oh, so you're in", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Isn't that where", $4f
 	db "@"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, $51
 	db "is? Did you go", $4f
 	db "take a look?", $57
@@ -18,7 +18,7 @@
 MomPhoneGenericAreaText: ; 0x1b406b
 	db $0, "Really, you're in", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "?", $51
 	db "I've never gone", $4f
 	db "there. That's kind", $55
@@ -27,7 +27,7 @@
 MomPhoneNewBarkText: ; 0x1b40b1
 	db $0, "What? You're in", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "?", $51
 	db "Come see your MOM", $4f
 	db "sometime!", $57
@@ -35,7 +35,7 @@
 MomPhoneCherrygroveText: ; 0x1b40e4
 	db $0, "You're visiting", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "?", $51
 	db "How about coming", $4f
 	db "home for a bit?", $57
@@ -43,7 +43,7 @@
 UnknownText_0x1b411c: ; 0x1b411c
 	db $0, "Wow, you're in", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "?", $51
 	db "Good luck on your", $4f
 	db "#MON quest!", $57
@@ -59,7 +59,7 @@
 UnknownText_0x1b41a7: ; 0x1b41a7
 	db $0, "By the way, you've", $4f
 	db "saved up ¥@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Do you want to", $4f
 	db "keep on saving?", $57
@@ -77,7 +77,7 @@
 UnknownText_0x1b4249: ; 0x1b4249
 	db $0, "By the way, you've", $4f
 	db "saved up ¥@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Want to start", $4f
 	db "saving again?", $57
--- a/text/phone/trainers1.asm
+++ b/text/phone/trainers1.asm
@@ -1,7 +1,7 @@
 UnknownText_0x1b4dc5: ; 0x1b4dc5
 	db $0, "Hello. This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Good morning,", $4f
 	db $14, "!", $57
@@ -9,7 +9,7 @@
 UnknownText_0x1b4ded: ; 0x1b4ded
 	db $0, "Hello. This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "How's it going,", $4f
 	db $14, "?", $57
@@ -17,7 +17,7 @@
 UnknownText_0x1b4e16: ; 0x1b4e16
 	db $0, "Hello. This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Good evening,", $4f
 	db $14, "!", $57
@@ -26,7 +26,7 @@
 	db $0, $14, ", good", $4f
 	db "morning!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "How are you doing?", $57
 
@@ -33,7 +33,7 @@
 UnknownText_0x1b4e72: ; 0x1b4e72
 	db $0, $14, ", howdy!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Isn't it nice out?", $57
 
@@ -41,7 +41,7 @@
 	db $0, $14, ", good", $4f
 	db "evening!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Got a minute?", $57
 
@@ -49,7 +49,7 @@
 	db $0, "How are your", $4f
 	db "#MON doing?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " is", $4f
 	db "so curious, it's a", $51
 	db "problem. Maybe", $4f
@@ -58,7 +58,7 @@
 UnknownText_0x1b4f21: ; 0x1b4f21
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh! Good morning,", $4f
 	db $52, ".", $57
@@ -66,7 +66,7 @@
 UnknownText_0x1b4f4d: ; 0x1b4f4d
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh! Good day,", $4f
 	db $52, ".", $57
@@ -74,7 +74,7 @@
 UnknownText_0x1b4f75: ; 0x1b4f75
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh! Good evening,", $4f
 	db $52, ".", $57
@@ -83,7 +83,7 @@
 	db $0, "Hello, ", $52, ".", $4f
 	db "Good morning.", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Were you asleep?", $57
 
@@ -90,7 +90,7 @@
 UnknownText_0x1b4fda: ; 0x1b4fda
 	db $0, "Hi, ", $52, ".", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "How are you doing?", $57
 
@@ -97,7 +97,7 @@
 UnknownText_0x1b5004: ; 0x1b5004
 	db $0, "Hi, ", $52, ".", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Were you awake?", $57
 
@@ -105,7 +105,7 @@
 	db $0, "Keeping your", $4f
 	db "#MON happy?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " is", $4f
 	db "healthy. It eats a", $55
 	db "lot every day.", $57
@@ -113,7 +113,7 @@
 UnknownText_0x1b5073: ; 0x1b5073
 	db $0, "Yeah, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Huh? What's up,", $4f
 	db $52, "?", $57
@@ -121,7 +121,7 @@
 UnknownText_0x1b509b: ; 0x1b509b
 	db $0, "Yeah, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Huh? What's up", $4f
 	db $52, "?", $57
@@ -129,7 +129,7 @@
 UnknownText_0x1b50c2: ; 0x1b50c2
 	db $0, "Yeah, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Huh? What's up", $4f
 	db $52, "?", $57
@@ -138,7 +138,7 @@
 	db $0, "Yo, ", $52, "!", $4f
 	db "You awake?", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "How's it going?", $57
 
@@ -146,7 +146,7 @@
 	db $0, "Yo, ", $52, "! You", $4f
 	db "free right now?", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "How's it going?", $57
 
@@ -154,7 +154,7 @@
 	db $0, "Yo, ", $52, "!", $4f
 	db "Were you asleep?", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "How's it going?", $57
 
@@ -164,7 +164,7 @@
 	db "My #MON are a", $4f
 	db "bit too energetic.", $51
 	db "@"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, ",", $4f
 	db "especially.", $51
 	db "Every time it", $4f
@@ -175,7 +175,7 @@
 
 UnknownText_0x1b522b: ; 0x1b522b
 	db $0, "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, "'s", $4f
 	db "looking tougher", $55
 	db "than ever.", $51
@@ -185,7 +185,7 @@
 UnknownText_0x1b5270: ; 0x1b5270
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking…", $51
 	db "Hi, ", $14, "!", $4f
 	db "Good morning!", $57
@@ -193,7 +193,7 @@
 UnknownText_0x1b52a5: ; 0x1b52a5
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking…", $51
 	db "Hi, ", $14, "!", $57
 
@@ -200,7 +200,7 @@
 UnknownText_0x1b52cc: ; 0x1b52cc
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking…", $51
 	db "Hi, ", $14, "!", $4f
 	db "Good evening!", $57
@@ -209,7 +209,7 @@
 	db $0, $14, ", good", $4f
 	db "morning!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "How are you doing?", $57
 
@@ -216,7 +216,7 @@
 UnknownText_0x1b5335: ; 0x1b5335
 	db $0, "Hi, ", $14, "!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "How are you doing?", $57
 
@@ -224,7 +224,7 @@
 	db $0, $14, ", good", $4f
 	db "evening!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "How are you doing?", $57
 
@@ -232,7 +232,7 @@
 	db $0, "How are your", $4f
 	db "#MON doing?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, "'s", $4f
 	db "doing as great as", $55
 	db "ever.", $51
@@ -243,7 +243,7 @@
 UnknownText_0x1b53f7: ; 0x1b53f7
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh, ", $14, ".", $4f
 	db "Good morning.", $51
@@ -252,7 +252,7 @@
 UnknownText_0x1b5424: ; 0x1b5424
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh. Hi, ", $14, ".", $57
 
@@ -259,7 +259,7 @@
 UnknownText_0x1b5446: ; 0x1b5446
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh, ", $14, ".", $4f
 	db "Good evening.", $57
@@ -268,7 +268,7 @@
 	db $0, "Good morning,", $4f
 	db $14, "!", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Were you sleeping?", $57
 
@@ -275,7 +275,7 @@
 UnknownText_0x1b54a6: ; 0x1b54a6
 	db $0, $14, ", hi!", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Do you have some", $4f
 	db "time?", $57
@@ -284,7 +284,7 @@
 	db $0, "Hi, ", $14, ".", $4f
 	db "Good evening.", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "I hope you were", $4f
 	db "awake.", $57
@@ -304,7 +304,7 @@
 UnknownText_0x1b55ae: ; 0x1b55ae
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, ", $14, "?", $4f
 	db "Good morning!", $57
@@ -312,7 +312,7 @@
 UnknownText_0x1b55da: ; 0x1b55da
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, ", $14, "? Hi!", $57
 
@@ -319,7 +319,7 @@
 UnknownText_0x1b55fc: ; 0x1b55fc
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, ", $14, "?", $4f
 	db "Good evening!", $57
@@ -328,7 +328,7 @@
 	db $0, "Oh, ", $14, "?", $51
 	db "Tweet! Yeah, it's", $4f
 	db "me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b564c: ; 0x1b564c
@@ -335,7 +335,7 @@
 	db $0, "Oh, ", $14, "?", $51
 	db "Tweet! Yeah, it's", $4f
 	db "me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b5670: ; 0x1b5670
@@ -342,7 +342,7 @@
 	db $0, "Oh, ", $14, "?", $51
 	db "Tweet! Yeah, it's", $4f
 	db "me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b5694: ; 0x1b5694
@@ -349,7 +349,7 @@
 	db $0, "Are your #MON", $4f
 	db "still cooking?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " has", $4f
 	db "too much energy.", $51
 	db "Once it takes off,", $4f
@@ -359,7 +359,7 @@
 UnknownText_0x1b5702: ; 0x1b5702
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh. Hi, ", $52, ".", $4f
 	db "What's up?", $57
@@ -367,7 +367,7 @@
 UnknownText_0x1b572e: ; 0x1b572e
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, hi, ", $52, ",", $4f
 	db "what's up?", $57
@@ -375,7 +375,7 @@
 UnknownText_0x1b575a: ; 0x1b575a
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, hi, ", $52, ",", $4f
 	db "what's up?", $57
@@ -384,7 +384,7 @@
 	db $0, "You're slow! Hurry", $4f
 	db "up and answer!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b57b7: ; 0x1b57b7
@@ -391,7 +391,7 @@
 	db $0, "You're slow! Hurry", $4f
 	db "up and answer!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b57e8: ; 0x1b57e8
@@ -398,7 +398,7 @@
 	db $0, "You're slow! Hurry", $4f
 	db "up and answer!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b5819: ; 0x1b5819
@@ -414,7 +414,7 @@
 
 UnknownText_0x1b589a: ; 0x1b589a
 	db $0, "Hi, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here!", $51
 	db "Oh, ", $52, "? You", $4f
 	db "doing well?", $57
@@ -421,7 +421,7 @@
 
 UnknownText_0x1b58c2: ; 0x1b58c2
 	db $0, "Hi, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here!", $51
 	db "Oh, ", $52, "? You", $4f
 	db "doing well?", $57
@@ -428,7 +428,7 @@
 
 UnknownText_0x1b58ea: ; 0x1b58ea
 	db $0, "Hi, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here!", $51
 	db "Oh, ", $52, "? You", $4f
 	db "doing well?", $57
@@ -437,7 +437,7 @@
 	db $0, "Yo, ", $52, "!", $4f
 	db "How're you doing?", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ",", $4f
 	db "got a minute?", $57
 
@@ -445,7 +445,7 @@
 	db $0, "Yo, ", $52, "! How's", $4f
 	db "it going?", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Got a minute?", $57
 
@@ -453,7 +453,7 @@
 	db $0, "Yo, ", $52, "!", $4f
 	db "How're you doing?", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ",", $4f
 	db "got a minute?", $57
 
@@ -461,7 +461,7 @@
 	db $0, "How are your", $4f
 	db "#MON doing?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, "'s", $4f
 	db "raring to go, just", $55
 	db "like always.", $51
@@ -473,7 +473,7 @@
 UnknownText_0x1b5a3b: ; 0x1b5a3b
 	db $0, "Hello? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking.", $51
 	db "Oh. Hi, ", $14, "!", $4f
 	db "Good morning!", $57
@@ -481,7 +481,7 @@
 UnknownText_0x1b5a74: ; 0x1b5a74
 	db $0, "Hello? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking.", $51
 	db "Oh, hi, ", $14, "!", $57
 
@@ -488,7 +488,7 @@
 UnknownText_0x1b5a9f: ; 0x1b5a9f
 	db $0, "Hello? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking.", $51
 	db "Oh, hi, ", $14, "!", $4f
 	db "Good evening!", $57
@@ -497,7 +497,7 @@
 	db $0, $14, ", good", $4f
 	db "morning!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Isn't it nice out?", $57
 
@@ -504,7 +504,7 @@
 UnknownText_0x1b5b0b: ; 0x1b5b0b
 	db $0, $14, ", howdy!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Isn't it nice out?", $57
 
@@ -512,7 +512,7 @@
 	db $0, "Good evening,", $4f
 	db $14, "!", $51
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Were you awake?", $57
 
@@ -525,7 +525,7 @@
 	db "be a problem.", $51
 	db "Of all my #MON,", $4f
 	db "@"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " is the", $55
 	db "hardest to handle.", $51
 	db "Working with it is", $4f
@@ -555,19 +555,19 @@
 UnknownText_0x1b5d09: ; 0x1b5d09
 	db $0, "Hiya, it's Uncle", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b5d21: ; 0x1b5d21
 	db $0, "Hiya, it's Uncle", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b5d39: ; 0x1b5d39
 	db $0, "Hiya, it's Uncle", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b5d51: ; 0x1b5d51
@@ -579,7 +579,7 @@
 
 UnknownText_0x1b5d9f: ; 0x1b5d9f
 	db $0, "Hello, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "speaking.", $51
 	db "Oh, ", $14, ".", $4f
@@ -587,7 +587,7 @@
 
 UnknownText_0x1b5dcc: ; 0x1b5dcc
 	db $0, "Hello, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "speaking.", $51
 	db "Oh, ", $14, ".", $4f
@@ -595,7 +595,7 @@
 
 UnknownText_0x1b5df8: ; 0x1b5df8
 	db $0, "Hello, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "speaking.", $51
 	db "Oh, ", $14, ".", $4f
@@ -605,7 +605,7 @@
 	db $0, "Good morning,", $4f
 	db $14, ".", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Were you sleeping?", $57
 
@@ -612,7 +612,7 @@
 UnknownText_0x1b5e59: ; 0x1b5e59
 	db $0, "Hi, ", $14, ".", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "How are things", $4f
 	db "going for you?", $57
@@ -621,7 +621,7 @@
 	db $0, "Good evening,", $4f
 	db $14, ".", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Are you awake?", $57
 
@@ -632,7 +632,7 @@
 	db "your #MON?", $51
 	db "Me, I take my", $4f
 	db "@"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " to the", $51
 	db "#MON CENTER in", $4f
 	db "VIOLET every day,", $51
@@ -643,7 +643,7 @@
 
 UnknownText_0x1b5f7a: ; 0x1b5f7a
 	db $0, "Yeah, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " the", $4f
 	db "HIKER here.", $51
 	db "Ah, ", $52, "!", $57
@@ -650,7 +650,7 @@
 
 UnknownText_0x1b5f9e: ; 0x1b5f9e
 	db $0, "Yeah, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " the", $4f
 	db "HIKER here.", $51
 	db "Ah, ", $52, ",", $4f
@@ -658,7 +658,7 @@
 
 UnknownText_0x1b5fc9: ; 0x1b5fc9
 	db $0, "Yeah, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " the", $4f
 	db "HIKER here.", $51
 	db "Ah, ", $52, ", isn't", $4f
@@ -667,7 +667,7 @@
 UnknownText_0x1b5ff6: ; 0x1b5ff6
 	db $0, "Yo, ", $52, "?", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "the HIKER!", $57
 
@@ -675,7 +675,7 @@
 	db $0, "Hey, is this", $4f
 	db $52, "?", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "the HIKER!", $57
 
@@ -683,7 +683,7 @@
 	db $0, $52, ", you still", $4f
 	db "awake?", $51
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "the HIKER!", $57
 
@@ -691,7 +691,7 @@
 	db $0, "Are your #MON", $4f
 	db "as feisty as ever?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " and", $4f
 	db "me--we have energy", $51
 	db "to burn. We hike", $4f
@@ -702,7 +702,7 @@
 UnknownText_0x1b60f5: ; 0x1b60f5
 	db $0, "Yes? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking.", $51
 	db "Hey, ", $14, "!", $57
 
@@ -709,7 +709,7 @@
 UnknownText_0x1b611b: ; 0x1b611b
 	db $0, "Yes? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking.", $51
 	db "This must be", $4f
 	db $14, ".", $57
@@ -717,7 +717,7 @@
 UnknownText_0x1b6149: ; 0x1b6149
 	db $0, "Yes? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " speaking.", $51
 	db "Ah, ", $14, "!", $57
 
@@ -724,7 +724,7 @@
 UnknownText_0x1b616e: ; 0x1b616e
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db $14, ", right?", $57
 
@@ -731,7 +731,7 @@
 UnknownText_0x1b618f: ; 0x1b618f
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db $14, ", what are", $4f
 	db "you doing?", $57
@@ -739,7 +739,7 @@
 UnknownText_0x1b61bd: ; 0x1b61bd
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db $14, ", sorry to", $4f
 	db "call you so late.", $57
@@ -757,7 +757,7 @@
 UnknownText_0x1b626a: ; 0x1b626a
 	db $0, "Hello? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, ", $14, "!", $4f
 	db "Good morning!", $57
@@ -765,7 +765,7 @@
 UnknownText_0x1b6296: ; 0x1b6296
 	db $0, "Hello? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, ", $14, "!", $4f
 	db "Hi, how are you?", $57
@@ -773,7 +773,7 @@
 UnknownText_0x1b62c5: ; 0x1b62c5
 	db $0, "Hello? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, ", $14, "!", $4f
 	db "Good evening!", $57
@@ -781,7 +781,7 @@
 UnknownText_0x1b62f1: ; 0x1b62f1
 	db $0, $14, "?", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Good morning!", $57
 
@@ -788,7 +788,7 @@
 UnknownText_0x1b630e: ; 0x1b630e
 	db $0, $14, "?", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ". Is", $4f
 	db "this a bad time?", $57
 
@@ -795,7 +795,7 @@
 UnknownText_0x1b6331: ; 0x1b6331
 	db $0, $14, "?", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "Got time to chat?", $57
 
@@ -804,12 +804,12 @@
 	db "still tough?", $51
 	db "I train every day", $4f
 	db "with @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, ".", $57
 
 UnknownText_0x1b638c: ; 0x1b638c
 	db $0, "Hello? @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "here…", $51
 	db "Hey, ", $14, "!", $57
@@ -816,7 +816,7 @@
 
 UnknownText_0x1b63a8: ; 0x1b63a8
 	db $0, "Hello? @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "here…", $51
 	db "Wow, ", $14, "!", $57
@@ -823,7 +823,7 @@
 
 UnknownText_0x1b63c4: ; 0x1b63c4
 	db $0, "Hello? @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, $4f
 	db "here…", $51
 	db "Yippee, ", $14, "!", $57
@@ -833,7 +833,7 @@
 	db $14, "?", $51
 	db "It's your pal,", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b6407: ; 0x1b6407
@@ -841,7 +841,7 @@
 	db $14, "?", $51
 	db "It's your buddy", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b642c: ; 0x1b642c
@@ -849,13 +849,13 @@
 	db $14, "?", $51
 	db "It's your sidekick", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b6454: ; 0x1b6454
 	db $0, "Yeah, hello.", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "…Huh, ", $14, "? Yo!", $57
 
@@ -862,7 +862,7 @@
 UnknownText_0x1b647e: ; 0x1b647e
 	db $0, "Yeah, hello, you", $4f
 	db "got @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "…Huh, ", $14, "? Yo!", $57
 
@@ -869,7 +869,7 @@
 UnknownText_0x1b64a8: ; 0x1b64a8
 	db $0, "Yeah, hello, you", $4f
 	db "got @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "…Huh, ", $14, "? Yo!", $57
 
@@ -876,7 +876,7 @@
 UnknownText_0x1b64d2: ; 0x1b64d2
 	db $0, "Yeah, hello?", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " calling.", $51
 	db "What are you up", $4f
 	db "to, ", $14, "?", $57
@@ -884,7 +884,7 @@
 UnknownText_0x1b6506: ; 0x1b6506
 	db $0, "Yeah, hello?", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " calling.", $51
 	db "Where are you now,", $4f
 	db $14, "?", $57
@@ -892,7 +892,7 @@
 UnknownText_0x1b6539: ; 0x1b6539
 	db $0, "Yeah, hello?", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " calling.", $51
 	db "Are you awake now,", $4f
 	db $14, "?", $57
@@ -904,7 +904,7 @@
 
 UnknownText_0x1b659d: ; 0x1b659d
 	db $0, "Yup, it's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Is this ", $14, "?", $4f
 	db "Good morning!", $57
@@ -911,13 +911,13 @@
 
 UnknownText_0x1b65c7: ; 0x1b65c7
 	db $0, "Yup, it's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Is that ", $14, "?", $57
 
 UnknownText_0x1b65e3: ; 0x1b65e3
 	db $0, "Yup, it's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Is that ", $14, "?", $4f
 	db "Good evening!", $57
@@ -925,19 +925,19 @@
 UnknownText_0x1b660d: ; 0x1b660d
 	db $0, "Hello! It's me,", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b6624: ; 0x1b6624
 	db $0, "Hello! It's me,", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b663b: ; 0x1b663b
 	db $0, "Hello! It's me,", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b6652: ; 0x1b6652
@@ -952,7 +952,7 @@
 
 UnknownText_0x1b66c8: ; 0x1b66c8
 	db $0, "Hi, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " on the", $4f
 	db "line.", $51
 	db "Hey! It's ", $14, "!", $57
@@ -959,7 +959,7 @@
 
 UnknownText_0x1b66ec: ; 0x1b66ec
 	db $0, "Hi, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " on the", $4f
 	db "line.", $51
 	db "I know!", $4f
@@ -967,7 +967,7 @@
 
 UnknownText_0x1b6713: ; 0x1b6713
 	db $0, "Hi, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " on the", $4f
 	db "line.", $51
 	db $14, "?", $4f
@@ -977,7 +977,7 @@
 	db $0, "Uh, ", $14, "?", $51
 	db "It's me!", $4f
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b6757: ; 0x1b6757
@@ -984,7 +984,7 @@
 	db $0, "Uh, ", $14, "?", $51
 	db "It's me!", $4f
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b6776: ; 0x1b6776
@@ -991,12 +991,12 @@
 	db $0, "Uh, ", $14, "?", $51
 	db "It's me!", $4f
 	db "It's me, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b6795: ; 0x1b6795
 	db $0, "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " is", $4f
 	db "so full of energy,", $51
 	db "it's a little", $4f
@@ -1007,7 +1007,7 @@
 UnknownText_0x1b67e2: ; 0x1b67e2
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Hi, ", $14, "!", $4f
 	db "Good morning!", $57
@@ -1015,7 +1015,7 @@
 UnknownText_0x1b680e: ; 0x1b680e
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Hi, ", $14, ", good", $4f
 	db "day!", $57
@@ -1023,7 +1023,7 @@
 UnknownText_0x1b6836: ; 0x1b6836
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Hi, ", $14, ", good", $4f
 	db "evening!", $57
@@ -1032,7 +1032,7 @@
 	db $0, "Hi, ", $14, ", good", $4f
 	db "morning!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "How are you?", $57
 
@@ -1040,7 +1040,7 @@
 	db $0, "Hi, ", $14, ", good", $4f
 	db "day!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "How are you?", $57
 
@@ -1048,7 +1048,7 @@
 	db $0, "Hi, ", $14, ", good", $4f
 	db "evening!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $4f
 	db "How are you?", $57
 
@@ -1085,7 +1085,7 @@
 	db $0, $14, " pika, good", $4f
 	db "morning!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ", how", $4f
 	db "pika are you?", $57
 
@@ -1093,7 +1093,7 @@
 	db $0, $14, " pika, good", $4f
 	db "pika day!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ", how", $4f
 	db "pika are you?", $57
 
@@ -1101,7 +1101,7 @@
 	db $0, $14, " pika, good", $4f
 	db "evening!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ". Were", $4f
 	db "you pika awake?", $57
 
@@ -1109,7 +1109,7 @@
 	db $0, "You have to hear", $4f
 	db "this! My lovable", $51
 	db "@"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " looked", $4f
 	db "at me and grinned!", $51
 	db "It must be because", $4f
@@ -1119,7 +1119,7 @@
 UnknownText_0x1b6b39: ; 0x1b6b39
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, Good morning,", $4f
 	db $14, ".", $57
@@ -1127,7 +1127,7 @@
 UnknownText_0x1b6b65: ; 0x1b6b65
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "That voice…", $4f
 	db $14, ", right?", $57
@@ -1135,7 +1135,7 @@
 UnknownText_0x1b6b92: ; 0x1b6b92
 	db $0, "Hello, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "This must be", $4f
 	db $14, "!", $57
@@ -1143,7 +1143,7 @@
 UnknownText_0x1b6bb9: ; 0x1b6bb9
 	db $0, "Hello!", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db "Good morning! The", $4f
 	db "weather's great!", $57
@@ -1151,7 +1151,7 @@
 UnknownText_0x1b6bef: ; 0x1b6bef
 	db $0, "Hello!", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db "What a perfect day", $4f
 	db "for fishing!", $57
@@ -1159,7 +1159,7 @@
 UnknownText_0x1b6c23: ; 0x1b6c23
 	db $0, "Hello!", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db "It's a great night", $4f
 	db "for fishing!", $57
@@ -1172,7 +1172,7 @@
 
 UnknownText_0x1b6c96: ; 0x1b6c96
 	db $0, "Yes? @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db "Ah, ", $52, ". What", $4f
 	db "can I do for you?", $57
@@ -1179,7 +1179,7 @@
 
 UnknownText_0x1b6cc6: ; 0x1b6cc6
 	db $0, "Yes? @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db "Ah, ", $52, ". What", $4f
 	db "can I do for you?", $57
@@ -1186,7 +1186,7 @@
 
 UnknownText_0x1b6cf6: ; 0x1b6cf6
 	db $0, "Yes? @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db "Ah, ", $52, ". What", $4f
 	db "can I do for you?", $57
@@ -1196,7 +1196,7 @@
 	db "are you doing?", $51
 	db "Hey! It's me,", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b6d57: ; 0x1b6d57
@@ -1204,7 +1204,7 @@
 	db "are you doing?", $51
 	db "Hey, it's me,", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b6d88: ; 0x1b6d88
@@ -1212,7 +1212,7 @@
 	db "are you doing?", $51
 	db "Hey, it's me,", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b6db9: ; 0x1b6db9
@@ -1225,7 +1225,7 @@
 	db "don't you?", $4f
 	db "I'm impressed.", $51
 	db "Heh, my @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, $4f
 	db "is so tough, it", $51
 	db "doesn't need to go", $4f
@@ -1235,7 +1235,7 @@
 UnknownText_0x1b6e7c: ; 0x1b6e7c
 	db $0, "Yes? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh, ", $14, ".", $4f
 	db "Good morning.", $57
@@ -1243,7 +1243,7 @@
 UnknownText_0x1b6ea6: ; 0x1b6ea6
 	db $0, "Yes? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh, ", $14, ".", $4f
 	db "Hello.", $57
@@ -1251,7 +1251,7 @@
 UnknownText_0x1b6ec9: ; 0x1b6ec9
 	db $0, "Yes? This is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $51
 	db "Oh, ", $14, ", good", $4f
 	db "evening.", $57
@@ -1260,13 +1260,13 @@
 	db $0, "Is this ", $14, "?", $51
 	db "Good morning. This", $4f
 	db "is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b6f1c: ; 0x1b6f1c
 	db $0, "Is this ", $14, "?", $51
 	db "Hi, it's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b6f37: ; 0x1b6f37
@@ -1273,7 +1273,7 @@
 	db $0, "Is this ", $14, "?", $51
 	db "Good evening. This", $4f
 	db "is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, ".", $57
 
 UnknownText_0x1b6f60: ; 0x1b6f60
@@ -1285,7 +1285,7 @@
 	db "Don't push them", $4f
 	db "too hard.", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " is", $4f
 	db "cute and lively", $51
 	db "precisely because", $4f
@@ -1296,7 +1296,7 @@
 UnknownText_0x1b7019: ; 0x1b7019
 	db $0, "Yes, hello?", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here!", $51
 	db "Morning, ", $14, "!", $51
 	db "Are you using bird", $4f
@@ -1305,7 +1305,7 @@
 UnknownText_0x1b7057: ; 0x1b7057
 	db $0, "Yes, hello?", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here!", $51
 	db "Hi, ", $14, "!", $51
 	db "Are your bird", $4f
@@ -1314,7 +1314,7 @@
 UnknownText_0x1b7092: ; 0x1b7092
 	db $0, "Yes, hello?", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here!", $51
 	db "Evening, ", $14, "!", $4f
 	db "Are you letting", $51
@@ -1325,7 +1325,7 @@
 	db $0, "Good morning,", $4f
 	db $14, "!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "Good morning!", $57
 
@@ -1332,7 +1332,7 @@
 UnknownText_0x1b7112: ; 0x1b7112
 	db $0, "Hi, ", $14, "!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "Remember me?", $57
 
@@ -1340,7 +1340,7 @@
 	db $0, "Good evening,", $4f
 	db $14, "!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "Are you free now?", $57
 
@@ -1348,7 +1348,7 @@
 	db $0, "Are you and your", $4f
 	db "#MON fine?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, $4f
 	db "looks like it will", $51
 	db "get tough enough", $4f
@@ -1359,7 +1359,7 @@
 UnknownText_0x1b71d5: ; 0x1b71d5
 	db $0, "Hello, you have", $4f
 	db "reached @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Ah, ", $14, ".", $57
 
@@ -1366,7 +1366,7 @@
 UnknownText_0x1b71fc: ; 0x1b71fc
 	db $0, "Hello, you have", $4f
 	db "reached @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Ah, ", $14, ", is", $4f
 	db "it?", $57
@@ -1374,7 +1374,7 @@
 UnknownText_0x1b722a: ; 0x1b722a
 	db $0, "Hello, you have", $4f
 	db "reached @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Ah, if it isn't", $4f
 	db $14, ".", $57
@@ -1381,7 +1381,7 @@
 
 UnknownText_0x1b725c: ; 0x1b725c
 	db $0, "Ah, it's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Have you got a", $4f
 	db "moment?", $57
@@ -1388,13 +1388,13 @@
 
 UnknownText_0x1b7283: ; 0x1b7283
 	db $0, "Ah, it's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Can you talk now?", $57
 
 UnknownText_0x1b72a5: ; 0x1b72a5
 	db $0, "Ah, it's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Sorry for calling", $4f
 	db "so late.", $57
@@ -1403,24 +1403,24 @@
 	db $0, "Have your #MON", $4f
 	db "grown any?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " has", $4f
 	db "grown quite a bit.", $57
 
 UnknownText_0x1b730b: ; 0x1b730b
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db $52, "! Beautiful", $4f
 	db "morning, hey?", $57
 
 UnknownText_0x1b7331: ; 0x1b7331
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db $52, "! Beautiful", $4f
 	db "weather, hey?", $57
 
 UnknownText_0x1b7357: ; 0x1b7357
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, " here…", $51
 	db $52, "! Beautiful", $4f
 	db "moonlight, hey?", $57
@@ -1428,25 +1428,25 @@
 UnknownText_0x1b737f: ; 0x1b737f
 	db $0, "Hey, ", $52, "!", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b7397: ; 0x1b7397
 	db $0, "Hey, ", $52, "!", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b73af: ; 0x1b73af
 	db $0, "Hey, ", $52, "!", $4f
 	db "This is @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $57
 
 UnknownText_0x1b73c7: ; 0x1b73c7
 	db $0, "Yup, yup!", $4f
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Hah, and here's", $4f
 	db $14, "!", $57
@@ -1454,7 +1454,7 @@
 UnknownText_0x1b73ef: ; 0x1b73ef
 	db $0, "Yup, yup!", $4f
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Hah, and here's", $4f
 	db $14, "!", $57
@@ -1462,7 +1462,7 @@
 UnknownText_0x1b7417: ; 0x1b7417
 	db $0, "Yup, yup!", $4f
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Hah, and here's", $4f
 	db $14, "!", $57
@@ -1470,7 +1470,7 @@
 UnknownText_0x1b743f: ; 0x1b743f
 	db $0, $14, ", it's", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Have you had a", $4f
 	db "proper breakfast?", $57
@@ -1478,7 +1478,7 @@
 UnknownText_0x1b746f: ; 0x1b746f
 	db $0, $14, ", it's", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Have you had a", $4f
 	db "proper lunch?", $57
@@ -1486,7 +1486,7 @@
 UnknownText_0x1b749b: ; 0x1b749b
 	db $0, $14, ", it's", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $51
 	db "Have you had a", $4f
 	db "proper dinner?", $57
@@ -1495,7 +1495,7 @@
 	db $0, "Are your #MON", $4f
 	db "looking good?", $51
 	db "My @"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " and", $4f
 	db "me--we're looking", $51
 	db "mighty dandy!", $4f
@@ -1504,7 +1504,7 @@
 UnknownText_0x1b751a: ; 0x1b751a
 	db $0, "Yes, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh. Hi, ", $14, "!", $4f
 	db "Good morning!", $57
@@ -1512,7 +1512,7 @@
 UnknownText_0x1b7548: ; 0x1b7548
 	db $0, "Yes, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, hi, ", $14, "!", $4f
 	db "Yahoo!", $57
@@ -1520,7 +1520,7 @@
 UnknownText_0x1b756f: ; 0x1b756f
 	db $0, "Yes, this is", $4f
 	db "@"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "…", $51
 	db "Oh, hi, ", $14, "!", $57
 
@@ -1527,7 +1527,7 @@
 UnknownText_0x1b758f: ; 0x1b758f
 	db $0, $14, "!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "Good morning!", $57
 
@@ -1534,7 +1534,7 @@
 UnknownText_0x1b75ac: ; 0x1b75ac
 	db $0, $14, "!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "Working hard?", $57
 
@@ -1541,7 +1541,7 @@
 UnknownText_0x1b75c9: ; 0x1b75c9
 	db $0, $14, "!", $51
 	db "It's @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "!", $4f
 	db "Were you up?", $57
 
@@ -1549,10 +1549,10 @@
 	db $0, "Are you raising", $4f
 	db "your #MON?", $51
 	db "Hey, @"
-	TX_RAM $d099
+	TX_RAM StringBuffer3
 	db $0, "'s", $4f
 	db "@"
-	TX_RAM $d0ac
+	TX_RAM StringBuffer4
 	db $0, " is", $55
 	db "looking good!", $57
 
--- /dev/null
+++ b/trainers/attributes.asm
@@ -1,0 +1,425 @@
+
+AI_STATUS_RED    EQU 1 << 0
+AI_STAT_MODS_RED EQU 1 << 1
+AI_TYPES_RED     EQU 1 << 2
+AI_OFFENSIVE     EQU 1 << 3
+AI_SMART         EQU 1 << 4
+AI_OPPORTUNIST   EQU 1 << 5
+AI_AGGRESSIVE    EQU 1 << 6
+AI_CAUTIOUS      EQU 1 << 7
+AI_STATUS_IMMUNE EQU 1 << 8
+AI_RISKY         EQU 1 << 9
+AI_10            EQU 1 << 10
+AI_11            EQU 1 << 11
+AI_12            EQU 1 << 12
+AI_13            EQU 1 << 13
+AI_14            EQU 1 << 14
+AI_15            EQU 1 << 15
+
+
+TrainerClassAttributes: ; 3959c
+
+; Falkner
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Whitney
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Bugsy
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Morty
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Pryce
+	db HYPER_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Jasmine
+	db HYPER_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Chuck
+	db FULL_HEAL, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Clair
+	db FULL_HEAL, HYPER_POTION ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Rival1
+	db NONE, NONE ; items
+	db 15 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Pokemon Prof
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_AGGRESSIVE | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Will
+	db MAX_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Cal
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Bruno
+	db MAX_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Karen
+	db FULL_HEAL, MAX_POTION ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Koga
+	db FULL_HEAL, FULL_RESTORE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Champion
+	db FULL_HEAL, FULL_RESTORE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Brock
+	db HYPER_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Misty
+	db FULL_HEAL, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Lt Surge
+	db HYPER_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Scientist
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Erika
+	db HYPER_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Youngster
+	db NONE, NONE ; items
+	db 4 ; base reward
+	dw AI_STATUS_RED | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Schoolboy
+	db NONE, NONE ; items
+	db 8 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $41, $00
+
+; Bird Keeper
+	db NONE, NONE ; items
+	db 6 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Lass
+	db NONE, NONE ; items
+	db 6 ; base reward
+	dw AI_STATUS_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $41, $00
+
+; Janine
+	db DIRE_HIT, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Cooltrainerm
+	db NONE, NONE ; items
+	db 12 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Cooltrainerf
+	db NONE, NONE ; items
+	db 12 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Beauty
+	db NONE, NONE ; items
+	db 22 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Pokemaniac
+	db NONE, NONE ; items
+	db 15 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_OFFENSIVE | AI_AGGRESSIVE | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Gruntm
+	db NONE, NONE ; items
+	db 10 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Gentleman
+	db NONE, NONE ; items
+	db 18 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_AGGRESSIVE | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Skier
+	db NONE, NONE ; items
+	db 18 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Teacher
+	db NONE, NONE ; items
+	db 18 ; base reward
+	dw AI_STATUS_RED | AI_OPPORTUNIST | AI_AGGRESSIVE | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Sabrina
+	db HYPER_POTION, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Bug Catcher
+	db NONE, NONE ; items
+	db 4 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Fisher
+	db NONE, NONE ; items
+	db 10 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $41, $00
+
+; Swimmerm
+	db NONE, NONE ; items
+	db 2 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_OFFENSIVE | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Swimmerf
+	db NONE, NONE ; items
+	db 5 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Sailor
+	db NONE, NONE ; items
+	db 10 ; base reward
+	dw AI_STATUS_RED | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Super Nerd
+	db NONE, NONE ; items
+	db 8 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Rival2
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Guitarist
+	db NONE, NONE ; items
+	db 8 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Hiker
+	db NONE, NONE ; items
+	db 8 ; base reward
+	dw AI_STATUS_RED | AI_OFFENSIVE | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Biker
+	db NONE, NONE ; items
+	db 8 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Blaine
+	db MAX_POTION, FULL_HEAL ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Burglar
+	db NONE, NONE ; items
+	db 22 ; base reward
+	dw AI_STATUS_RED | AI_OFFENSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Firebreather
+	db NONE, NONE ; items
+	db 12 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Juggler
+	db NONE, NONE ; items
+	db 10 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Blackbelt T
+	db NONE, NONE ; items
+	db 6 ; base reward
+	dw AI_STATUS_RED | AI_OFFENSIVE | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Executivem
+	db NONE, NONE ; items
+	db 18 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Psychic T
+	db NONE, NONE ; items
+	db 8 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Picnicker
+	db NONE, NONE ; items
+	db 5 ; base reward
+	dw AI_STATUS_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Camper
+	db NONE, NONE ; items
+	db 5 ; base reward
+	dw AI_STATUS_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Executivef
+	db NONE, NONE ; items
+	db 18 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Sage
+	db NONE, NONE ; items
+	db 8 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Medium
+	db NONE, NONE ; items
+	db 10 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Boarder
+	db NONE, NONE ; items
+	db 18 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Pokefanm
+	db NONE, NONE ; items
+	db 20 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Kimono Girl
+	db NONE, NONE ; items
+	db 18 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Twins
+	db NONE, NONE ; items
+	db 5 ; base reward
+	dw NONE
+	db $41, $00
+
+; Pokefanf
+	db NONE, NONE ; items
+	db 20 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Red
+	db FULL_RESTORE, FULL_RESTORE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Blue
+	db FULL_RESTORE, FULL_RESTORE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Officer
+	db NONE, NONE ; items
+	db 10 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_STATUS_IMMUNE
+	db $44, $00
+
+; Gruntf
+	db NONE, NONE ; items
+	db 10 ; base reward
+	dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; Mysticalman
+	db NONE, NONE ; items
+	db 25 ; base reward
+	dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY
+	db $44, $00
+
+; 39771
+
--- a/wram.asm
+++ b/wram.asm
@@ -1,6 +1,62 @@
 INCLUDE "includes.asm"
 
 
+party_struct: MACRO
+
+\1Species::  db
+\1Item::     db
+
+\1Moves::
+\1Move1::    db
+\1Move2::    db
+\1Move3::    db
+\1Move4::    db
+
+\1ID::       dw
+\1Exp::      ds 3 ; Big endian
+\1StatExp::
+\1HPExp::    dw
+\1AtkExp::   dw
+\1DefExp::   dw
+\1SpdExp::   dw
+\1SpclExp::  dw
+
+\1DVs::
+\1AtkDefDV:: db
+\1SpdSpcDV:: db
+
+\1PP::
+\1PPMove1::  db
+\1PPMove2::  db
+\1PPMove3::  db
+\1PPMove4::  db
+
+\1Happiness::     db
+\1PokerusStatus:: db
+
+\1CaughtData::
+\1CaughtTime::
+\1CaughtLevel::    db
+\1CaughtGender::
+\1CaughtLocation:: db
+
+\1Level:: db
+
+\1Status::   db
+\1Unused::   db
+
+; Stats are big endian.
+\1HP::       dw
+\1MaxHP::    dw
+\1Attack::   dw
+\1Defense::  dw
+\1Speed::    dw
+\1SpclAtk::  dw
+\1SpclDef::  dw
+
+ENDM
+
+
 SECTION "tiles0",VRAM[$8000],BANK[0]
 VTiles0::
 SECTION "tiles1",VRAM[$8800],BANK[0]
@@ -980,8 +1036,10 @@
 	ds 19
 StringBuffer4:: ; d0ac
 	ds 19
+StringBuffer5:: ; d0bf
+	ds 19
 
-	ds 21
+	ds 2
 
 CurBattleMon:: ; d0d4
 	ds 1
@@ -1072,7 +1130,7 @@
 	ds 1
 ; d12f
 	ds 1
-TempMonCurHP:: ; d130
+TempMonHP:: ; d130
 	ds 2
 TempMonMaxHP:: ; d132
 	ds 2
@@ -1441,96 +1499,18 @@
 	ds 1 ; any empty slots including the 7th must be FF
 	     ; or the routine will keep going
 
-OTPartyMon1::
-OTPartyMon1Species:: ; d288
-	ds 1
-OTPartyMon1Item:: ; d289
-	ds 1
-
-OTPartyMon1Moves:: ; d28a
-OTPartyMon1Move1:: ; d28a
-	ds 1
-OTPartyMon1Move2:: ; d28b
-	ds 1
-OTPartyMon1Move3:: ; d28c
-	ds 1
-OTPartyMon1Move4:: ; d28d
-	ds 1
-	
-OTPartyMon1ID:: ; d28e
-	ds 2
-OTPartyMon1Exp:: ; d290
-	ds 3
-OTPartyMon1HPExp:: ; d293
-	ds 2
-OTPartyMon1AtkExp:: ; d295
-	ds 2
-OTPartyMon1DefExp:: ; d297
-	ds 2
-OTPartyMon1SpdExp:: ; d299
-	ds 2
-OTPartyMon1SpclExp:: ; d29b
-	ds 2
-
-OTPartyMon1DVs:: ; d29d
-OTPartyMon1AtkDefDV:: ; d29d
-	ds 1
-OTPartyMon1SpdSpclDV:: ; d29e
-	ds 1
-
-OTPartyMon1PP:: ; d29f
-OTPartyMon1PPMove1:: ; d29f
-	ds 1
-OTPartyMon1PPMove2:: ; d2a0
-	ds 1
-OTPartyMon1PPMove3:: ; d2a1
-	ds 1
-OTPartyMon1PPMove4:: ; d2a2
-	ds 1
-
-OTPartyMon1Happiness:: ; d2a3
-	ds 1
-OTPartyMon1PokerusStatus:: ; d2a4
-	ds 1
-
-OTPartyMon1CaughtData:: ; d2a5
-OTPartyMon1CaughtGender:: ; d2a5
-OTPartyMon1CaughtLocation:: ; d2a5
-	ds 1
-OTPartyMon1CaughtTime:: ; d2a6
-	ds 1
-OTPartyMon1Level:: ; d2a7
-	ds 1
-	
-OTPartyMon1Status:: ; d2a8
-	ds 1
-OTPartyMon1Unused:: ; d2a9
-	ds 1
-OTPartyMon1CurHP:: ; d2aa
-	ds 2
-OTPartyMon1MaxHP:: ; d2ac
-	ds 2
-OTPartyMon1Atk:: ; d2ae
-	ds 2
-OTPartyMon1Def:: ; d2b0
-	ds 2
-OTPartyMon1Spd:: ; d2b2
-	ds 2
-OTPartyMon1SpclAtk:: ; d2b4
-	ds 2
-OTPartyMon1SpclDef:: ; d2b6
-	ds 2
-
+OTPartyMon1:: ; d288
+	party_struct OTPartyMon1
 OTPartyMon2:: ; d2b8
-	ds 48
+	party_struct OTPartyMon2
 OTPartyMon3:: ; d2e8
-	ds 48
+	party_struct OTPartyMon3
 OTPartyMon4:: ; d318
-	ds 48
+	party_struct OTPartyMon4
 OTPartyMon5:: ; d348
-	ds 48
+	party_struct OTPartyMon5
 OTPartyMon6:: ; d378
-	ds 48
+	party_struct OTPartyMon6
 
 
 OTPartyMonOT::
@@ -1915,88 +1895,18 @@
 	ds 1 ; legacy functions don't check PartyCount
 		 
 PartyMons::
-PartyMon1::
-PartyMon1Species:: ; dcdf
-	ds 1
-PartyMon1Item:: ; dce0
-	ds 1
-
-PartyMon1Moves:: ; dce1
-PartyMon1Move1:: ; dce1
-	ds 1
-PartyMon1Move2:: ; dce2
-	ds 1
-PartyMon1Move3:: ; dce3
-	ds 1
-PartyMon1Move4:: ; dce4
-	ds 1
-
-PartyMon1ID:: ; dce5
-	ds 2
-PartyMon1Exp:: ; dce7
-	ds 3
-
-PartyMon1StatExp::
-PartyMon1HPExp:: ; dcea
-	ds 2
-PartyMon1AtkExp:: ; dcec
-	ds 2
-PartyMon1DefExp:: ; dcee
-	ds 2
-PartyMon1SpdExp:: ; dcf0
-	ds 2
-PartyMon1SpclExp:: ; dcf2
-	ds 2
-
-PartyMon1DVs:: ; dcf4
-; hp = %1000 for each dv
-	ds 1 ; atk/def
-	ds 1 ; spd/spc
-PartyMon1PP:: ; dcf6
-	ds 4
-PartyMon1Happiness:: ; dcfa
-	ds 1
-PartyMon1PokerusStatus:: ; dcfb
-	ds 1
-PartyMon1CaughtData:: ; dcfc
-PartyMon1CaughtTime:: ; dcfc
-PartyMon1CaughtLevel:: ; dcfc
-	ds 1
-PartyMon1CaughtGender:: ; dcfd
-PartyMon1CaughtLocation:: ; dcfd
-	ds 1
-PartyMon1Level:: ; dcfe
-	ds 1
-PartyMon1Status:: ; dcff
-	ds 1
-; dd00 unused
-	ds 1
-PartyMon1CurHP:: ; dd01
-	ds 2
-PartyMon1MaxHP:: ; dd03
-	ds 2
-PartyMon1Atk:: ; dd05
-	ds 2
-PartyMon1Def:: ; dd07
-	ds 2
-PartyMon1Spd:: ; dd09
-	ds 2
-PartyMon1SpclAtk:: ; dd0b
-	ds 2
-PartyMon1SpclDef:: ; dd0d
-	ds 2
-
-
+PartyMon1:: ; dcdf
+	party_struct PartyMon1
 PartyMon2:: ; dd0f
-	ds 48
+	party_struct PartyMon2
 PartyMon3:: ; dd3f
-	ds 48
+	party_struct PartyMon3
 PartyMon4:: ; dd6f
-	ds 48
+	party_struct PartyMon4
 PartyMon5:: ; dd9f
-	ds 48
+	party_struct PartyMon5
 PartyMon6:: ; ddcf
-	ds 48
+	party_struct PartyMon6
 
 PartyMonOT::
 PartyMon1OT:: ; ddff
@@ -2089,7 +1999,13 @@
 	ds 1
 	ds 31
 
-SECTION "RoamMons",WRAMX[$dfcf],BANK[1]
+	ds 1
+
+wContestMon:: ; df9c
+	party_struct wContestMon
+
+	ds 3
+
 RoamMon1Species:: ; dfcf
 	ds 1
 RoamMon1Level:: ; dfd0
@@ -2098,7 +2014,7 @@
 	ds 1
 RoamMon1MapNumber:: ; dfd2
 	ds 1
-RoamMon1CurHP:: ; dfd3
+RoamMon1HP:: ; dfd3
 	ds 1
 RoamMon1DVs:: ; dfd4
 	ds 2
@@ -2111,7 +2027,7 @@
 	ds 1
 RoamMon2MapNumber:: ; dfd9
 	ds 1
-RoamMon2CurHP:: ; dfda
+RoamMon2HP:: ; dfda
 	ds 1
 RoamMon2DVs:: ; dfdb
 	ds 2
@@ -2124,7 +2040,7 @@
 	ds 1
 RoamMon3MapNumber:: ; dfe0
 	ds 1
-RoamMon3CurHP:: ; dfe1
+RoamMon3HP:: ; dfe1
 	ds 1
 RoamMon3DVs:: ; dfe2
 	ds 2