shithub: pokecrystal

Download patch

ref: 0b5471f385d3cc66bb4ae7aa4191ce3af9f50cac
parent: 006fc875971c92f2249f47b5fd120c5df76c6883
parent: d5ddd9e54ec2422d6f1cd7c561c1750512d0a81d
author: yenatch <yenatch@gmail.com>
date: Mon Jul 20 22:04:38 EDT 2015

Merge pull request #302 from PikalaxALT/more_enum

More enum

--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -413,10 +413,9 @@
 	; hl << 4
 	; each wavepattern is $0f bytes long
 	; so seeking is done in $10s
+rept 4
 	add hl, hl
-	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld de, WaveSamples
 	add hl, de
 	; load wavepattern into $ff30-$ff3f
@@ -1292,8 +1291,9 @@
 	ld d, $00
 	; load ptr to noise sample set in hl
 	ld hl, Drumkits
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1306,8 +1306,9 @@
 	; use 'pitch' to seek noise sample set
 	ld e, a
 	ld d, $00
+rept 2
 	add hl, de
-	add hl, de
+endr
 	; load sample pointer into NoiseSampleAddress
 	ld a, [hli]
 	ld [NoiseSampleAddressLo], a
@@ -1328,8 +1329,9 @@
 	ld d, $00
 	; seek command pointer
 	ld hl, MusicCommands
+rept 2
 	add hl, de
-	add hl, de
+endr
 	; jump to the new pointer
 	ld a, [hli]
 	ld h, [hl]
@@ -1572,8 +1574,9 @@
 	inc hl
 	ld d, [hl]
 	; skip pointer
+rept 2
 	inc de
-	inc de
+endr
 	; update address
 	ld [hl], d
 	dec hl
@@ -1623,8 +1626,9 @@
 	inc hl
 	ld d, [hl]
 	; skip pointer
+rept 2
 	inc de
-	inc de
+endr
 	; update address
 	ld [hl], d
 	dec hl
@@ -2378,9 +2382,9 @@
 	
 ; 3-byte pointers (bank, address)
 	ld hl, Cries
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	
 	ld a, [hli]
 	ld [MusicBank], a
@@ -2595,9 +2599,9 @@
 	
 ; get sfx ptr
 	ld hl, SFX
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	
 ; bank
 	ld a, [hli]
@@ -2692,8 +2696,9 @@
 	ld c, a
 	ld b, $00
 	ld hl, ChannelPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld c, [hl]
 	inc hl
 	ld b, [hl] ; bc = channel pointer
@@ -3157,8 +3162,9 @@
 ; doesn't seem to be used, but functionally identical to SoundRestart
 	ld hl, rNR50
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld a, $80
 	ld [hli], a
 	ld hl, rNR10
--- a/audio/music/goldenrodcity.asm
+++ b/audio/music/goldenrodcity.asm
@@ -275,8 +275,9 @@
 	vibrato $8, $23
 	notetype $c, $25
 Music_GoldenrodCity_branch_eb58c: ; eb58c
+rept 2
 	callchannel Music_GoldenrodCity_branch_eb5aa
-	callchannel Music_GoldenrodCity_branch_eb5aa
+endr
 	callchannel Music_GoldenrodCity_branch_eb5d2
 	note __, 3
 	octave 3
--- a/audio/music/johtowildbattle.asm
+++ b/audio/music/johtowildbattle.asm
@@ -492,8 +492,9 @@
 	note G_, 2
 	loopchannel 7, Music_JohtoWildBattle_branch_f5fdb
 	note F#, 4
+rept 2
 	callchannel Music_JohtoWildBattle_branch_f6055
-	callchannel Music_JohtoWildBattle_branch_f6055
+endr
 Music_JohtoWildBattle_branch_f5fe8: ; f5fe8
 	note D_, 2
 	note G_, 2
--- a/audio/music/kantowildbattle.asm
+++ b/audio/music/kantowildbattle.asm
@@ -325,22 +325,25 @@
 	note F_, 1
 	note F#, 1
 	notetype $6, $b7
+rept 2
 	callchannel Music_KantoWildBattle_branch_ed307
-	callchannel Music_KantoWildBattle_branch_ed307
+endr
 	forceoctave $1
+rept 2
 	callchannel Music_KantoWildBattle_branch_ed307
-	callchannel Music_KantoWildBattle_branch_ed307
+endr
 	forceoctave $0
+rept 4
 	callchannel Music_KantoWildBattle_branch_ed307
-	callchannel Music_KantoWildBattle_branch_ed307
-	callchannel Music_KantoWildBattle_branch_ed307
-	callchannel Music_KantoWildBattle_branch_ed307
+endr
 	forceoctave $1
+rept 2
 	callchannel Music_KantoWildBattle_branch_ed307
-	callchannel Music_KantoWildBattle_branch_ed307
+endr
 	forceoctave $0
+rept 2
 	callchannel Music_KantoWildBattle_branch_ed307
-	callchannel Music_KantoWildBattle_branch_ed307
+endr
 	note __, 16
 	octave 3
 	note A#, 16
--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -193,9 +193,9 @@
 	jr z, .has_item
 
 	dec de
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	jr .loop
 
 .has_item
@@ -213,8 +213,9 @@
 	pop de
 	pop hl
 
+rept 2
 	inc hl
-	inc hl
+endr
 	jr c, .loop
 
 .used_item
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -133,8 +133,9 @@
 	call AI_50_50
 	jr c, .checkmove
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jr .checkmove
 
 .discourage
@@ -141,8 +142,9 @@
 	call Random
 	cp 30
 	jr c, .checkmove
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	jr .checkmove
 ; 38635
 
@@ -151,7 +153,7 @@
 AI_Types: ; 38635
 ; Dismiss any move that the player is immune to.
 ; Encourage super-effective moves.
-; Discourage not very effective moves unless 
+; Discourage not very effective moves unless
 ; all damaging moves are of the same type.
 
 	ld hl, Buffer1 - 1
@@ -262,8 +264,9 @@
 	and a
 	jr nz, .checkmove
 
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	jr .checkmove
 ; 386be
 
@@ -417,8 +420,9 @@
 .asm_387f0
 	call AI_50_50
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 387f7
 
@@ -529,8 +533,9 @@
 	call AI_50_50
 	ret c
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38882
@@ -555,8 +560,9 @@
 	cp 180
 	jr nc, .asm_3888b
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jr .asm_3888b
 
 .asm_388a2
@@ -596,9 +602,9 @@
 	ret c
 
 .asm_388c6
+rept 3
 	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	ret
 ; 388ca
 
@@ -610,9 +616,9 @@
 	call Random
 	cp 25
 	ret c
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 388d4
 
@@ -639,8 +645,9 @@
 	jr nc, .asm_38911
 
 .asm_388ef
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_388f2
@@ -669,8 +676,9 @@
 	jr c, .asm_38911
 
 .asm_3890f
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 
 ; 30% chance to end up here if enemy's HP is full and player is not badly poisoned.	
 ; 77% chance to end up here if enemy's HP is above 50% but not full.
@@ -714,8 +722,9 @@
 	call Random
 	cp $50
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 ; Player is seeded.
@@ -747,8 +756,9 @@
 	call AI_80_20
 	ret c
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 3895b
 
@@ -818,8 +828,9 @@
 	jr nc, .asm_389bf
 
 .asm_3899d
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_389a0
@@ -848,8 +859,9 @@
 	jr c, .asm_389bf
 
 .asm_389bd
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 
 ; We only end up here if the move has not been already encouraged.	
 .asm_389bf
@@ -888,8 +900,9 @@
 	call Random
 	cp $50
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 ; Player is seeded.
@@ -963,9 +976,9 @@
 AI_Smart_Whirlwind: ; 38a2a
 ; Whirlwind, Roar.
 
-; Discourage this move if the player has not shown 
+; Discourage this move if the player has not shown
 ; a super-effective move against the enemy.
-; Consider player's type(s) if its moves are unknown. 
+; Consider player's type(s) if its moves are unknown.
 
 	push hl
 	callab Function3484e
@@ -997,8 +1010,9 @@
 	call Random
 	cp $19
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38a4e
 
@@ -1079,8 +1093,9 @@
 	ret nc
 	call AI_50_50
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38a9c
 
@@ -1185,8 +1200,9 @@
 .asm_38b09
 	call AI_80_20
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38b10
@@ -1208,9 +1224,9 @@
 	call AICompareSpeed
 	ret nc
 	
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38b20
 
@@ -1231,7 +1247,7 @@
 	call AICheckPlayerQuarterHP
 	jr nc, .asm_38b3a
 	
-; 80% chance to greatly encourage this move 
+; 80% chance to greatly encourage this move
 ; if enemy is slower than player and its HP is above 25%.	
 	call AICompareSpeed
 	ret c
@@ -1239,8 +1255,9 @@
 	ret nc
 	call AI_80_20
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38b3a
@@ -1272,8 +1289,9 @@
 	call Random
 	cp 30
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38b5c
 
@@ -1510,14 +1528,15 @@
 	call Random
 	cp $46
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38c81
+rept 3
 	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	ret
 
 .EncoreMoves:
@@ -1587,15 +1606,15 @@
 	cp $1
 	jr z, .asm_38cc7
 
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38cc7
+rept 3
 	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	ret
 ; 38ccb
 
@@ -1607,9 +1626,9 @@
 	ld a, [EnemyMonStatus]
 	and $20
 	ret z
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38cd5
 
@@ -1666,8 +1685,9 @@
 	call Random
 	cp $64
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38d16
 
@@ -1708,9 +1728,9 @@
 	jr z, .next
 
 	; status
+rept 3
 	dec hl
-	dec hl
-	dec hl
+endr
 	ld a, [hl]
 	or c
 	ld c, a
@@ -1735,8 +1755,9 @@
 	ret z
 	call AI_50_50
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .no_status
@@ -1774,9 +1795,9 @@
 	ld a, [BattleMonHP]
 	sbc b
 	ret nc
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38d93
 
@@ -1879,7 +1900,7 @@
 	bit SUBSTATUS_TOXIC, a
 	jr nz, .asm_38e26
 
-; 80% chance to greatly encourage this move if the player is either 
+; 80% chance to greatly encourage this move if the player is either
 ; in love, identified, stuck in Rollout, or has a Nightmare.	
 	ld a, [PlayerSubStatus1]
 	and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ROLLOUT | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE
@@ -1900,9 +1921,9 @@
 .asm_38e26
 	call AI_80_20
 	ret c
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38e2e
 
@@ -1952,11 +1973,9 @@
 	ld a, [EnemyMonStatus]
 	bit FRZ, a
 	ret z
+rept 5
 	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38e5c
 
@@ -1988,13 +2007,15 @@
 	ret nc
 	call AI_80_20
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38e90
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 .asm_38e92
 	inc [hl]
 .asm_38e93
@@ -2044,8 +2065,9 @@
 	call AI_50_50
 	ret c
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38ed2
 
@@ -2097,8 +2119,9 @@
 	call Random
 	cp 20
 	ret c
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 ; 38f1d
 
@@ -2128,8 +2151,9 @@
 	call Random
 	cp 100
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 38f4a
 
@@ -2235,9 +2259,9 @@
 	call AI_80_20
 	ret c
 
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38fcb
@@ -2248,8 +2272,9 @@
 	call AI_50_50
 	ret c
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_38fd8
@@ -2271,14 +2296,15 @@
 
 	cp 2
 	jr c, .end
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 
 	cp 3
 	jr c, .end
+rept 3
 	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 
 .end
 
@@ -2318,8 +2344,9 @@
 	call Random
 	cp 200
 	ret nc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .asm_39020
@@ -2379,8 +2406,9 @@
 
 	call AICompareSpeed
 	ret nc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 .could_dig
@@ -2427,8 +2455,9 @@
 .asm_3907d
 	call AI_50_50
 	ret c
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 39084
 
@@ -2453,8 +2482,9 @@
 	call AI_80_20
 	ret c
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 3909e
 
@@ -2581,9 +2611,9 @@
 ; 3911e
 
 AIBadWeatherType: ; 3911e
+rept 3
 	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	ret
 ; 39122
 
@@ -2606,8 +2636,9 @@
 	ret nz
 
 .good
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 39134
 
@@ -2702,8 +2733,9 @@
 	ret
 
 .asm_39188
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 ; 3918b
 
@@ -2788,8 +2820,9 @@
 	call AICompareSpeed
 	ret nc
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 ; Try to predict if the player will use Fly this turn.	
@@ -2816,8 +2849,9 @@
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
 	ret z
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 39200
 
@@ -2852,8 +2886,9 @@
 	cp 25 ; 1/10
 	ret c
 
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 
 .asm_3921e
@@ -2860,8 +2895,9 @@
 	call AI_80_20
 	ret c
 
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 ; 39225
 
@@ -2955,8 +2991,9 @@
 	ld c, [hl]
 	sla c
 	rl b
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hld]
 	cp c
 	ld a, [hl]
@@ -2976,8 +3013,9 @@
 	ld c, [hl]
 	sla c
 	rl b
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hld]
 	cp c
 	ld a, [hl]
@@ -3001,8 +3039,9 @@
 	rl b
 	sla c
 	rl b
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hld]
 	cp c
 	ld a, [hl]
@@ -3024,8 +3063,9 @@
 	rl b
 	sla c
 	rl b
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hld]
 	cp c
 	ld a, [hl]
@@ -3292,7 +3332,7 @@
 	call AIGetEnemyMove
 
 ; Ignore this move if its power is 0 or 1.
-; Moves such as Seismic Toss, Hidden Power, 
+; Moves such as Seismic Toss, Hidden Power,
 ; Counter and Fissure have a base power of 1.	
 	ld a, [wEnemyMoveStruct + MOVE_POWER]
 	cp 2
@@ -3529,11 +3569,9 @@
 	jr nc, .nextmove
 
 	pop hl
+rept 5
 	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	push hl
 
 .nextmove
--- a/battle/anim_commands.asm
+++ b/battle/anim_commands.asm
@@ -265,9 +265,9 @@
 	ld a, [hl]
 	and $f0
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_cc249
 	ret
@@ -341,8 +341,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, BattleAnimCommands
+rept 2
 	add hl, de
-	add hl, de
+endr
 
 	ld a, [hli]
 	ld h, [hl]
@@ -488,8 +489,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 2
 	inc de
-	inc de
+endr
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -517,8 +519,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 2
 	inc de
-	inc de
+endr
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -544,8 +547,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 2
 	inc de
-	inc de
+endr
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -572,8 +576,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 2
 	inc de
-	inc de
+endr
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -601,8 +606,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 2
 	inc de
-	inc de
+endr
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -700,10 +706,9 @@
 	push hl
 	ld l, a
 	ld h, $0
+rept 4
 	add hl, hl
-	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld de, $8310
 	add hl, de
 	ld a, [BattleAnimByte]
@@ -797,8 +802,9 @@
 	ld a, [hl]
 	and a
 	jr z, .asm_cc537
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_cc52f
 
 .asm_cc537
@@ -852,8 +858,9 @@
 	ld a, [hl]
 	and a
 	jr z, .asm_cc589
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_cc581
 
 .asm_cc589
@@ -1243,10 +1250,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Datacc871
+rept 4
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 
 	ld a, [rSVBK] ; $ff00+$70
 	push af
@@ -1392,8 +1398,9 @@
 	inc hl
 	ld d, [hl]
 	ld hl, BattleAnimations
+rept 2
 	add hl, de
-	add hl, de
+endr
 	call Function3ae1
 	call BattleAnimAssignPals
 	call BattleAnimDelayFrame
--- a/battle/anim_objects.asm
+++ b/battle/anim_objects.asm
@@ -36,12 +36,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, BattleAnimObjects
+rept 6
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld e, l
 	ld d, h
 	ld hl, $0
@@ -71,8 +68,9 @@
 	ld a, [BattleAnimTemps + 2]
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld a, [BattleAnimTemps + 3]
 	ld [hli], a
 	xor a
@@ -80,8 +78,9 @@
 	dec a
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ret
 
@@ -516,8 +515,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Jumptable_ccfce
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -670,10 +670,9 @@
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
+rept 4
 	inc [hl]
-	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	ld d, $10
 	push af
 	push de
@@ -937,8 +936,9 @@
 	ld [hl], a
 	ld hl, $7
 	add hl, bc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 .asm_cd245
 	call Functioncc9bd
@@ -1739,8 +1739,9 @@
 	ld [hl], a
 	ld hl, $f
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 
 Functioncd6c5: ; cd6c5 (33:56c5)
 	ret
@@ -1760,8 +1761,9 @@
 	call Functioncc9bd
 	ret
 asm_cd6da: ; cd6da (33:56da)
+rept 2
 	inc a
-	inc a
+endr
 	ld [hl], a
 	sub $10
 	ret c
@@ -2128,8 +2130,9 @@
 	call Functionce7bf
 	ld hl, $f
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld a, [hl]
 	and $1f
 	ret nz
@@ -2550,8 +2553,9 @@
 	ld a, [hl]
 	cp $98
 	ret nc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld hl, $1
 	add hl, bc
 	set 0, [hl]
@@ -2587,8 +2591,9 @@
 	ld a, [hl]
 	cp $98
 	ret nc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
@@ -2722,8 +2727,9 @@
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld d, $2
 	call Functionce734
 	ld hl, $9
@@ -2871,8 +2877,9 @@
 	ld hl, $10
 	add hl, bc
 	ld a, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld d, $10
 	call Functionce734
 	ld d, a
@@ -3083,8 +3090,9 @@
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld d, $4
 	call Functionce734
 	ld hl, $9
@@ -3112,8 +3120,9 @@
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ld d, $10
 	call Functionce734
 	ld hl, $a
@@ -3353,8 +3362,9 @@
 	ld [hl], a
 	ld hl, $b
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld a, [hl]
 	and $7
 	ret nz
@@ -3394,8 +3404,9 @@
 	ld [hl], a
 	ld hl, $b
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld a, [hl]
 	and $3
 	ret nz
@@ -3404,8 +3415,9 @@
 	ld a, [hl]
 	cp $d0
 	jr z, .asm_ce007
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 .asm_ce007
 	call Functioncc9bd
@@ -3930,8 +3942,9 @@
 	ld [hl], a
 	ld hl, $10
 	add hl, bc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ret
 
 Functionce2fd: ; ce2fd (33:62fd)
@@ -4077,8 +4090,9 @@
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	push af
 	ld d, $2
 	call Functionce734
@@ -4317,8 +4331,9 @@
 	ld a, [hl]
 	cp $10
 	jr nc, .asm_ce52e
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld d, a
 	ld hl, $b
 	add hl, bc
@@ -4428,12 +4443,14 @@
 	jr c, .asm_ce5b0
 	ld hl, $7
 	add hl, bc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ld hl, $8
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 .asm_ce5b0
 	call Functioncc9bd
@@ -4446,8 +4463,9 @@
 	ld hl, $b
 	add hl, bc
 	ld a, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	push af
 	push de
 	call Functionce734
@@ -4474,10 +4492,9 @@
 	ld a, [hl]
 	cp $d0
 	jr z, .asm_ce5ea
+rept 4
 	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 .asm_ce5ea
 	call Functioncc9bd
@@ -4510,10 +4527,9 @@
 	ld a, [hl]
 	cp $4
 	jr z, Functionce618
+rept 4
 	inc [hl]
-	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	ret
 
 Functionce618: ; ce618 (33:6618)
@@ -4529,10 +4545,9 @@
 	ld a, [hl]
 	cp $d8
 	ret z
+rept 4
 	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
+endr
 	ret
 
 Functionce62f: ; ce62f (33:662f)
@@ -4567,8 +4582,9 @@
 	ld [hl], a
 	ld hl, $9
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 
 Functionce65c: ; ce65c (33:665c)
@@ -4754,8 +4770,9 @@
 	ld a, d
 	ld d, 0
 	ld hl, Unknown_ce77f
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -4864,8 +4881,9 @@
 	ld [hl], a
 	ld hl, $000d
 	add hl, bc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jr .asm_ce7d1
 
 .asm_ce815
@@ -4886,8 +4904,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Unknown_ce85e
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -4904,8 +4923,9 @@
 	ld l, a
 	ld h, 0
 	ld de, Unknown_ceeae
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	add hl, de
 	ret
 ; ce846
@@ -4915,8 +4935,9 @@
 	push hl
 	ld l, a
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, AnimObjGFX
 	add hl, de
 	ld c, [hl]
--- a/battle/bg_effects.asm
+++ b/battle/bg_effects.asm
@@ -61,8 +61,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, BattleBGEffects
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -708,9 +709,9 @@
 	ld l, a
 	ld a, [BattleAnimTemps + 2]
 	ld h, a
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hl]
 	cp $ff
 	jr z, Functionc8434
@@ -756,8 +757,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Unknown_c849c
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -771,9 +773,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Unknown_c84a8
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld b, a
 	and $f
@@ -793,8 +795,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Unknown_c849c
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1012,8 +1015,9 @@
 	ld a, [hl]
 	cp $20
 	jr nc, .asm_c85fc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	call Functionc8f9a
 	ret
 .asm_c85fc
@@ -1388,8 +1392,9 @@
 	call Functionc901b
 	ld hl, $2
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 
 Functionc8801: ; c8801 (32:4801)
@@ -1792,8 +1797,9 @@
 	call Functionc901b
 	ld hl, $3
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 
 Functionc8a36: ; c8a36 (32:4a36)
@@ -1877,8 +1883,9 @@
 	ld h, $d2
 .asm_c8aa5
 	ld [hl], e
+rept 2
 	inc hl
-	inc hl
+endr
 	dec a
 	jr nz, .asm_c8aa5
 	ret
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -469,13 +469,13 @@
 	cp $2
 	jr z, .asm_3c341
 	call BattleRandom
-	cp $80
+	cp 1 + (50 percent)
 	jp c, .asm_3c3f1
 	jp Function3c3f3
 
 .asm_3c341
 	call BattleRandom
-	cp $80
+	cp 1 + (50 percent)
 	jp c, Function3c3f3
 	jp .asm_3c3f1
 
@@ -555,13 +555,13 @@
 	cp $2
 	jr z, .asm_3c3e9
 	call BattleRandom
-	cp $80
+	cp 1 + (50 percent)
 	jp c, .asm_3c3f1
 	jp Function3c3f3
 
 .asm_3c3e9
 	call BattleRandom
-	cp $80
+	cp 1 + (50 percent)
 	jp c, Function3c3f3
 .asm_3c3f1
 	scf
@@ -798,7 +798,7 @@
 
 	call BattleRandom
 	ld b, a
-	cp $80
+	cp 1 + (50 percent)
 	jr nc, .Stay
 
 	push bc
@@ -810,7 +810,7 @@
 	jr c, .Flee
 
 	ld a, b
-	cp $1a
+	cp 1 + (10 percent)
 	jr nc, .Stay
 
 	ld a, [TempEnemyMonSpecies]
@@ -1607,7 +1607,7 @@
 	and a
 	ret nz
 	call BattleRandom
-	cp $19
+	cp 10 percent
 	ret nc
 	xor a
 	ld [BattleMonStatus], a
@@ -1628,7 +1628,7 @@
 	and a
 	ret nz
 	call BattleRandom
-	cp $19
+	cp 10 percent
 	ret nc
 	xor a
 	ld [EnemyMonStatus], a
@@ -1840,8 +1840,9 @@
 	dec a
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -2452,7 +2453,7 @@
 	and a
 	ld a, b
 	call z, Function3d0ea
-	callab Function39939
+	callab Battle_GetTrainerName
 	ld hl, BattleText_0x809da
 	call StdBattleTextBox
 	call IsMobileBattle
@@ -2493,7 +2494,7 @@
 	call DelayFrames
 	call EmptyBattleTextBox
 	ld c, $3
-	callba Function11c000
+	callba StoreText
 	call Functiona80
 	ld hl, wPayDayMoney
 	ld a, [hli]
@@ -2552,8 +2553,9 @@
 	dec a
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -2591,8 +2593,9 @@
 	rl [hl]
 	ret nc
 	ld a, $ff
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ret
 ; 3d0ab
@@ -2882,7 +2885,7 @@
 	call ClearSprites
 	call WhiteBGMap
 	call Function3eda6
-	call Function1c07
+	call ExitMenu
 	call Function309d
 	call WaitBGMap
 	call ClearSGB
@@ -2903,7 +2906,7 @@
 	call ClearPalettes
 	call DelayFrame
 	call Function3eda6
-	call Function1c17
+	call WriteBackup
 	call ClearSGB
 	call Function32f9
 	call Function3f26d
@@ -3100,7 +3103,7 @@
 
 	call EmptyBattleTextBox
 	ld c, 2
-	callba Function11c000
+	callba StoreText
 	call Functiona80
 	call ClearTileMap
 	call WhiteBGMap
@@ -3644,7 +3647,7 @@
 Function3d74b: ; 3d74b
 	ld a, [CurPartyMon]
 	push af
-	callab Function39939
+	callab Battle_GetTrainerName
 	ld hl, BattleText_0x80aca
 	call StdBattleTextBox
 	lb bc, 1, 7
@@ -3685,7 +3688,7 @@
 Function3d7a0: ; 3d7a0
 	xor a
 	ld [hBGMapMode], a
-	call Function1c07
+	call ExitMenu
 	call ClearSprites
 	hlcoord 1, 0
 	lb bc, 4, 10
@@ -3695,7 +3698,7 @@
 ; 3d7b8
 
 Function3d7b8: ; 3d7b8
-	callab Function39939
+	callab Battle_GetTrainerName
 	ld hl, BattleText_0x80af8
 	call StdBattleTextBox
 	jp WaitBGMap
@@ -3756,10 +3759,9 @@
 	ld [LastPlayerCounterMove], a
 	ld [LastEnemyMove], a
 	ld hl, EnemySubStatus1
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld [EnemyDisableCount], a
 	ld [EnemyFuryCutterCount], a
@@ -4033,9 +4035,9 @@
 	ld de, BattleMonDVs
 	ld bc, 2 + NUM_MOVES + 1 ; DVs, PP, happiness ; BattleMonLevel - BattleMonDVs
 	call CopyBytes
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld de, BattleMonLevel
 	ld bc, 1 + 1 + 1 + 2 + 2 * 6 ; level, status, unused, stats
 	call CopyBytes
@@ -4125,9 +4127,9 @@
 	ld de, EnemyMonDVs
 	ld bc, 2 + NUM_MOVES + 1
 	call CopyBytes
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld de, EnemyMonLevel
 	ld bc, 1 + 1 + 1 + 2 + 2 * 6
 	call CopyBytes
@@ -4250,15 +4252,14 @@
 	ld [LastPlayerCounterMove], a
 	ld [LastPlayerMove], a
 	ld hl, PlayerSubStatus1
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld hl, PlayerUsedMoves
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld [PlayerDisableCount], a
 	ld [PlayerFuryCutterCount], a
@@ -4359,7 +4360,7 @@
 	jr z, .asm_3dcc0
 
 	ld a, [wc71a]
-	call Function399f
+	call UpdateBattleMon
 	ld hl, BattleMonHP
 	ld a, [hli]
 	or [hl]
@@ -4694,8 +4695,9 @@
 	ld a, [hli]
 	cp $ff
 	jr z, .asm_3def9
+rept 2
 	inc hl
-	inc hl
+endr
 	cp b
 	jr nz, .asm_3dec7
 	pop bc
@@ -4702,8 +4704,9 @@
 	ld a, [bc]
 	ld [wd265], a
 	push bc
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -5211,7 +5214,7 @@
 	call Function3ed9f
 	call Function3f43d
 	call Function3f47c
-	call Function1c07
+	call ExitMenu
 	call WaitBGMap
 	call Function3ee27
 	call Function309d
@@ -5248,7 +5251,7 @@
 	call Function3f47c
 	ld a, $1
 	ld [wcfa9], a
-	call Function1c07
+	call ExitMenu
 	call Function3df2c
 	call WaitBGMap
 	call Function309d
@@ -5272,7 +5275,7 @@
 BattleMenu_PKMN: ; 3e28d
 	call Function1d6e
 Function3e290:
-	call Function1c07
+	call ExitMenu
 	call Function1d6e
 	call WhiteBGMap
 Function3e299:
@@ -5312,7 +5315,7 @@
 	call ClearPalettes
 	call DelayFrame
 	call Function3eda6
-	call Function1c17
+	call WriteBackup
 	call Function309d
 	call ClearSGB
 	call Function32f9
@@ -5395,7 +5398,7 @@
 	call DelayFrame
 	call ClearSprites
 	call Function3eda6
-	call Function1c17
+	call WriteBackup
 	call ClearSGB
 	call Function32f9
 	ld a, [CurPartyMon]
@@ -5411,7 +5414,7 @@
 	jr z, .asm_3e3c1
 	call Function1d6e
 	call Function3e8e4
-	call Function1c17
+	call WriteBackup
 
 .asm_3e3c1
 	call Function3e7c1
@@ -5769,8 +5772,9 @@
 	ld a, [wcfa9]
 	ld b, a
 	ld a, [wd0eb]
+rept 2
 	inc a
-	inc a
+endr
 	cp b
 	jp nz, .asm_3e57a
 	ld a, $1
@@ -5953,8 +5957,9 @@
 	ld bc, $0102
 	call PrintNum
 	pop hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld [hl], "/"
 	inc hl
 	ld de, wd265
@@ -6202,26 +6207,26 @@
 	ld hl, EnemyMonSpecies
 	ld bc, EnemyMonEnd - EnemyMon
 	call ByteFill
-	
+
 ; We don't need to be here if we're in a link battle
 	ld a, [InLinkBattle]
 	and a
 	jp nz, Function3dabd
-	
+
 	ld a, [wcfc0] ; ????
 	bit 0, a
 	jp nz, Function3dabd
-	
+
 ; Make sure everything knows what species we're working with
 	ld a, [TempEnemyMonSpecies]
 	ld [EnemyMonSpecies], a
 	ld [CurSpecies], a
 	ld [CurPartySpecies], a
-	
+
 ; Grab the BaseData for this species
 	call GetBaseData
-	
 
+
 ; Let's get the item:
 
 ; Is the item predetermined?
@@ -6228,7 +6233,7 @@
 	ld a, [IsInBattle]
 	dec a
 	jr z, .WildItem
-	
+
 ; If we're in a trainer battle, the item is in the party struct
 	ld a, [CurPartyMon]
 	ld hl, OTPartyMon1Item
@@ -6235,8 +6240,8 @@
 	call GetPartyLocation ; bc = PartyMon[CurPartyMon] - PartyMons
 	ld a, [hl]
 	jr .UpdateItem
-	
-	
+
+
 .WildItem
 ; In a wild battle, we pull from the item slots in BaseData
 
@@ -6246,7 +6251,7 @@
 	cp BATTLETYPE_FORCEITEM
 	ld a, [BaseItems]
 	jr z, .UpdateItem
-	
+
 ; Failing that, it's all up to chance
 ;  Effective chances:
 ;    75% None
@@ -6255,33 +6260,33 @@
 
 ; 25% chance of getting an item
 	call BattleRandom
-	cp a, $c0
+	cp a, 1 + (75 percent)
 	ld a, NO_ITEM
 	jr c, .UpdateItem
-	
+
 ; From there, an 8% chance for Item2
 	call BattleRandom
-	cp a, $14 ; 8% of 25% = 2% Item2
+	cp a, 8 percent ; 8% of 25% = 2% Item2
 	ld a, [BaseItems]
 	jr nc, .UpdateItem
 	ld a, [BaseItems+1]
-	
-	
+
+
 .UpdateItem
 	ld [EnemyMonItem], a
-	
-	
+
+
 ; Initialize DVs
-	
+
 ; If we're in a trainer battle, DVs are predetermined
 	ld a, [IsInBattle]
 	and a
 	jr z, .InitDVs
-	
+
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
 	jr z, .InitDVs
-	
+
 ; Unknown
 	ld hl, wc6f2
 	ld de, EnemyMonDVs
@@ -6291,12 +6296,12 @@
 	ld a, [hl]
 	ld [de], a
 	jp .Happiness
-	
-	
+
+
 .InitDVs
-	
+
 ; Trainer DVs
-	
+
 ; All trainers have preset DVs, determined by class
 ; See GetTrainerDVs for more on that
 	callba GetTrainerDVs
@@ -6304,8 +6309,8 @@
 	ld a, [IsInBattle]
 	dec a
 	jr nz, .UpdateDVs
-	
-	
+
+
 ; Wild DVs
 ; Here's where the fun starts
 
@@ -6314,7 +6319,7 @@
 	ld a, [BattleType]
 	cp a, BATTLETYPE_ROAMING
 	jr nz, .NotRoaming
-	
+
 ; Grab HP
 	call GetRoamMonHP
 	ld a, [hl]
@@ -6322,7 +6327,7 @@
 	and a
 ; We'll do something with the result in a minute
 	push af
-	
+
 ; Grab DVs
 	call GetRoamMonDVs
 	inc hl
@@ -6334,7 +6339,7 @@
 	pop af
 ; If the RoamMon struct has already been initialized, we're done
 	jr nz, .UpdateDVs
-	
+
 ; If it hasn't, we need to initialize the DVs
 ; (HP is initialized at the end of the battle)
 	call GetRoamMonDVs
@@ -6348,7 +6353,7 @@
 ; We're done with DVs
 	jr .UpdateDVs
 
-	
+
 .NotRoaming
 ; Register a contains BattleType
 
@@ -6360,7 +6365,7 @@
 	ld b, ATKDEFDV_SHINY ; $ea
 	ld c, SPDSPCDV_SHINY ; $aa
 	jr .UpdateDVs
-	
+
 .GenerateDVs
 ; Generate new random DVs
 	call BattleRandom
@@ -6367,7 +6372,7 @@
 	ld b, a
 	call BattleRandom
 	ld c, a
-	
+
 .UpdateDVs
 ; Input DVs in register bc
 	ld hl, EnemyMonDVs
@@ -6374,22 +6379,22 @@
 	ld a, b
 	ld [hli], a
 	ld [hl], c
-	
-	
+
+
 ; We've still got more to do if we're dealing with a wild monster
 	ld a, [IsInBattle]
 	dec a
 	jr nz, .Happiness
-	
-	
+
+
 ; Species-specfic:
-	
-	
+
+
 ; Unown
 	ld a, [TempEnemyMonSpecies]
 	cp a, UNOWN
 	jr nz, .Magikarp
-	
+
 ; Get letter based on DVs
 	ld hl, EnemyMonDVs
 	predef GetUnownLetter
@@ -6397,25 +6402,25 @@
 ; If combined with forced shiny battletype, causes an infinite loop
 	call CheckUnownLetter
 	jr c, .GenerateDVs ; try again
-	
-	
+
+
 .Magikarp
 ; Skimming this part recommended
-	
+
 	ld a, [TempEnemyMonSpecies]
 	cp a, MAGIKARP
 	jr nz, .Happiness
-	
+
 ; Get Magikarp's length
 	ld de, EnemyMonDVs
 	ld bc, PlayerID
 	callab CalcMagikarpLength
-	
+
 ; We're clear if the length is < 1536
 	ld a, [MagikarpLength]
 	cp a, $06 ; $600 = 1536
 	jr nz, .CheckMagikarpArea
-	
+
 ; 5% chance of skipping size checks
 	call Random
 	cp a, $0c ; / $100
@@ -6424,7 +6429,7 @@
 	ld a, [MagikarpLength + 1]
 	cp a, $50
 	jr nc, .GenerateDVs
-	
+
 ; 20% chance of skipping this check
 	call Random
 	cp a, $32 ; / $100
@@ -6433,15 +6438,15 @@
 	ld a, [MagikarpLength + 1]
 	cp a, $40
 	jr nc, .GenerateDVs
-	
+
 .CheckMagikarpArea
 ; The z checks are supposed to be nz
 ; Instead, all maps in GROUP_LAKE_OF_RAGE (mahogany area)
 ; and routes 20 and 44 are treated as Lake of Rage
-	
+
 ; This also means Lake of Rage Magikarp can be smaller than ones
 ; caught elsewhere rather than the other way around
-	
+
 ; Intended behavior enforces a minimum size at Lake of Rage
 ; The real behavior prevents size flooring in the Lake of Rage area
 	ld a, [MapGroup]
@@ -6458,10 +6463,10 @@
 	ld a, [MagikarpLength]
 	cp a, 1024 >> 8
 	jr c, .GenerateDVs ; try again
-	
-	
+
+
 ; Finally done with DVs
-	
+
 .Happiness
 ; Set happiness
 	ld a, BASE_HAPPINESS
@@ -6474,21 +6479,21 @@
 	ld b, $00
 	ld hl, LinkBattleRNs + 7 ; ?
 	predef Functione167
-	
+
 ; If we're in a trainer battle,
 ; get the rest of the parameters from the party struct
 	ld a, [IsInBattle]
 	cp a, TRAINER_BATTLE
 	jr z, .OpponentParty
-	
+
 ; If we're in a wild battle, check wild-specific stuff
 	and a
 	jr z, .TreeMon
-	
+
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
 	jp nz, .Moves
-	
+
 .TreeMon
 ; If we're headbutting trees, some monsters enter battle asleep
 	call CheckSleepingTreeMon
@@ -6496,26 +6501,26 @@
 	jr c, .UpdateStatus
 ; Otherwise, no status
 	xor a
-	
+
 .UpdateStatus
 	ld hl, EnemyMonStatus
 	ld [hli], a
-	
+
 ; Unused byte
 	xor a
 	ld [hli], a
-	
+
 ; Full HP...
 	ld a, [EnemyMonMaxHP]
 	ld [hli], a
 	ld a, [EnemyMonMaxHP + 1]
 	ld [hl], a
-	
+
 ; ...unless it's a RoamMon
 	ld a, [BattleType]
 	cp a, BATTLETYPE_ROAMING
 	jr nz, .Moves
-	
+
 ; Grab HP
 	call GetRoamMonHP
 	ld a, [hl]
@@ -6526,7 +6531,7 @@
 	ld a, [hl]
 	ld [EnemyMonHP + 1], a
 	jr .Moves
-	
+
 .InitRoamHP
 ; HP only uses the lo byte in the RoamMon struct since
 ; Raikou/Entei/Suicune will have < 256 hp at level 40
@@ -6533,8 +6538,8 @@
 	ld a, [EnemyMonHP + 1]
 	ld [hl], a
 	jr .Moves
-	
-	
+
+
 .OpponentParty
 ; Get HP from the party struct
 	ld hl, (OTPartyMon1HP + 1)
@@ -6544,17 +6549,17 @@
 	ld [EnemyMonHP + 1], a
 	ld a, [hld]
 	ld [EnemyMonHP], a
-	
+
 ; Make sure everything knows which monster the opponent is using
 	ld a, [CurPartyMon]
 	ld [CurOTMon], a
-	
+
 ; Get status from the party struct
 	dec hl
 	ld a, [hl] ; OTPartyMonStatus
 	ld [EnemyMonStatus], a
-	
-	
+
+
 .Moves
 	ld hl, BaseType1
 	ld de, EnemyMonType1
@@ -6563,7 +6568,7 @@
 	inc de
 	ld a, [hl]
 	ld [de], a
-	
+
 ; Get moves
 	ld de, EnemyMonMoves
 ; Are we in a trainer battle?
@@ -6577,33 +6582,33 @@
 	ld bc, NUM_MOVES
 	call CopyBytes
 	jr .PP
-	
+
 .WildMoves
 ; Clear EnemyMonMoves
 	xor a
 	ld h, d
 	ld l, e
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 ; Make sure the predef knows this isn't a partymon
 	ld [MagikarpLength], a
 ; Fill moves based on level
 	predef FillMoves
-	
+
 .PP
 ; Trainer battle?
 	ld a, [IsInBattle]
 	cp a, TRAINER_BATTLE
 	jr z, .TrainerPP
-	
+
 ; Fill wild PP
 	ld hl, EnemyMonMoves
 	ld de, EnemyMonPP
 	predef FillPP
 	jr .Finish
-	
+
 .TrainerPP
 ; Copy PP from the party struct
 	ld hl, OTPartyMon1PP
@@ -6612,7 +6617,7 @@
 	ld de, EnemyMonPP
 	ld bc, NUM_MOVES
 	call CopyBytes
-	
+
 .Finish
 ; Only the first five base stats are copied...
 	ld hl, BaseStats
@@ -6673,7 +6678,7 @@
 	ld a, [BattleType]
 	cp a, BATTLETYPE_TREE
 	jr nz, .NotSleeping
-	
+
 ; Get list for the time of day
 	ld hl, .Morn
 	ld a, [TimeOfDay]
@@ -6682,7 +6687,7 @@
 	ld hl, .Day
 	jr z, .Check
 	ld hl, .Nite
-	
+
 .Check
 	ld a, [TempEnemyMonSpecies]
 	ld de, 1 ; length of species id
@@ -6689,7 +6694,7 @@
 	call IsInArray
 ; If it's a match, the opponent is asleep
 	ret c
-	
+
 .NotSleeping
 	and a
 	ret
@@ -6728,17 +6733,17 @@
 
 CheckUnownLetter: ; 3eb75
 ; Return carry if the Unown letter hasn't been unlocked yet
-	
+
 	ld a, [UnlockedUnowns]
 	ld c, a
 	ld de, 0
-	
+
 .loop
-	
+
 ; Don't check this set unless it's been unlocked
 	srl c
 	jr nc, .next
-	
+
 ; Is our letter in the set?
 	ld hl, .LetterSets
 	add hl, de
@@ -6745,7 +6750,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	
+
 	push de
 	ld a, [UnownLetter]
 	ld de, 1
@@ -6753,32 +6758,33 @@
 	call IsInArray
 	pop bc
 	pop de
-	
+
 	jr c, .match
-	
+
 .next
 ; Make sure we haven't gone past the end of the table
+rept 2
 	inc e
-	inc e
+endr
 	ld a, e
 	cp a, .Set1 - .LetterSets
 	jr c, .loop
-	
+
 ; Hasn't been unlocked, or the letter is invalid
 	scf
 	ret
-	
+
 .match
 ; Valid letter
 	and a
 	ret
-	
+
 .LetterSets
 	dw .Set1
 	dw .Set2
 	dw .Set3
 	dw .Set4
-	
+
 .Set1
 	;  A   B   C   D   E   F   G   H   I   J   K
 	db 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, $ff
@@ -6791,7 +6797,7 @@
 .Set4
 	;  X   Y   Z
 	db 24, 25, 26, $ff
-	
+
 ; 3ebc7
 
 
@@ -7109,8 +7115,9 @@
 ; Swap badges 3 (PlainBadge) and 5 (MineralBadge).
 	ld d, a
 	and %00000100
+rept 2
 	add a
-	add a
+endr
 	ld b, a
 	ld a, d
 	and %00010000
@@ -7129,8 +7136,9 @@
 	ld a, b
 	srl b
 	call c, BoostStat
+rept 2
 	inc hl
-	inc hl
+endr
 ; Check every other badge.
 	srl b
 	dec c
@@ -7259,8 +7267,9 @@
 
 	; a * 5 + 1
 	ld c, a
+rept 2
 	add a
-	add a
+endr
 	add c
 	inc a
 
@@ -7392,8 +7401,9 @@
 	ld [de], a
 
 .asm_3eea9
+rept 2
 	inc de
-	inc de
+endr
 	dec c
 	jr nz, .asm_3ee7c
 	xor a
@@ -7468,8 +7478,9 @@
 	inc [hl]
 	jr nz, .asm_3ef3d
 	ld a, $ff
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 .asm_3ef3d
@@ -7607,7 +7618,7 @@
 	ld [hBGMapMode], a
 
 .asm_3f035
-	callba Function2709e
+	callba LevelUpHappinessMod
 	ld a, [CurBattleMon]
 	ld b, a
 	ld a, [CurPartyMon]
@@ -7797,8 +7808,9 @@
 	inc [hl]
 	jr nz, .asm_3f186
 	ld a, $ff
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 .asm_3f186
@@ -8690,8 +8702,9 @@
 	rl [hl]
 	jr nc, .asm_3f73d
 	ld a, $ff
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 .asm_3f73d
@@ -8990,7 +9003,7 @@
 	ret nz
 
 .asm_3f9ca
-	callab Function2a30d
+	callab UpdateRoamMons
 	ret
 ; 3f9d1
 
@@ -9083,11 +9096,13 @@
 	ld d, $5
 .asm_3fa62
 	push hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hl]
+rept 2
 	dec hl
-	dec hl
+endr
 	and a
 	jr z, .asm_3fa85
 	push de
@@ -9187,8 +9202,9 @@
 	ld c, $1
 .asm_3faed
 	ld a, b
+rept 2
 	add b
-	add b
+endr
 	ld e, a
 	ld d, $0
 	ld hl, DefaultFlypoint
@@ -9195,8 +9211,9 @@
 	add hl, de
 	push hl
 	ld a, c
+rept 2
 	add c
-	add c
+endr
 	ld e, a
 	ld d, $0
 	ld hl, DefaultFlypoint
@@ -9455,7 +9472,7 @@
 	ld c, 20
 	call DelayFrames
 
-	callba Function39939
+	callba Battle_GetTrainerName
 
 	ld hl, WantsToBattleText
 	jr .asm_3fd0e
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -50,8 +50,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, MoveEffectsPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, BANK(MoveEffectsPointers)
 	call GetFarHalfword
 
@@ -100,8 +101,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, BattleCommandPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	pop bc
 
 	ld a, BANK(BattleCommandPointers)
@@ -1062,8 +1064,9 @@
 	jp nz, EndMoveEffect
 
 	; SubStatus5
+rept 2
 	inc de
-	inc de
+endr
 
 	ld a, [de]
 	bit SUBSTATUS_TRANSFORMED, a
@@ -1259,8 +1262,9 @@
 	jr nc, .ScopeLens
 
 ; +2 critical level
+rept 2
 	inc c
-	inc c
+endr
 
 .ScopeLens
 	push bc
@@ -1500,8 +1504,9 @@
 	pop hl
 
 .asm_347b3
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_34743
 
 .end
@@ -1746,11 +1751,9 @@
 	jr c, .loop
 
 	; neutral
+rept 5
 	inc c
-	inc c
-	inc c
-	inc c
-	inc c
+endr
 	cp 10
 	jr z, .loop
 
@@ -2239,8 +2242,9 @@
 	ld b, [hl]
 	inc hl
 	ld c, [hl]
+rept 2
 	inc hl
-	inc hl
+endr
 	srl c
 	rl b
 	srl c
@@ -3344,8 +3348,9 @@
 	ld a, [BattleScriptBufferLoc + 1]
 	ld h, a
 	ld a, $ff
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ret
 ; 352b1
@@ -3983,9 +3988,9 @@
 	sla c
 	rl b
 .asm_35604
+rept 3
 	dec hl
-	dec hl
-	dec hl
+endr
 	ld a, [hli]
 	ld l, [hl]
 	ld h, a
@@ -4039,8 +4044,9 @@
 
 	xor a
 	ld hl, hDividend
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 ; Level * 2
@@ -4061,8 +4067,9 @@
 	pop bc
 
 ; + 2
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 
 ; * bp
 	inc hl
@@ -4523,9 +4530,9 @@
 	set SUBSTATUS_ENCORED, [hl]
 	call BattleRandom
 	and $3
+rept 3
 	inc a
-	inc a
-	inc a
+endr
 	ld [de], a
 	call Function36abf
 	jr nz, .asm_3591a
@@ -4650,8 +4657,9 @@
 	ld [wd1ec], a
 	ld a, [hl]
 	ld [wd1ed], a
+rept 2
 	dec de
-	dec de
+endr
 	ld a, [de]
 	dec de
 	add b
@@ -4664,12 +4672,12 @@
 	ld a, [CurDamage + 1]
 	rr a
 	ld [CurDamage + 1], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
+rept 3
 	inc de
-	inc de
-	inc de
+endr
 
 	; fallthrough
 ; 359ac
@@ -5142,8 +5150,9 @@
 	call GetMoveName
 	call BattleRandom
 	and 3
+rept 2
 	inc a
-	inc a
+endr
 	ld b, a
 	ld a, [hl]
 	and $3f
@@ -6854,8 +6863,9 @@
 	dec c
 	ld b, 0
 	ld hl, Table0x364e6
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 
 	xor a
 	ld [hMultiplicand], a
@@ -7009,8 +7019,9 @@
 	ld [wEnemyMoveStruct + MOVE_EFFECT], a
 	call BattleRandom
 	and 1
+rept 2
 	inc a
-	inc a
+endr
 	ld [bc], a
 	ld a, 1
 	ld [wc689], a
@@ -7046,8 +7057,9 @@
 	set 7, [hl]
 	call BattleRandom
 	and $1
+rept 2
 	inc a
-	inc a
+endr
 	inc de
 	ld [de], a
 .asm_3674c
@@ -7885,9 +7897,9 @@
 	ret nz
 	call BattleRandom
 	and 3
+rept 3
 	inc a
-	inc a
-	inc a
+endr
 	ld [hl], a
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -7899,8 +7911,9 @@
 	ld a, [hli]
 	cp b
 	jr z, .asm_36c69
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_36c61
 
 .asm_36c69
@@ -7981,8 +7994,9 @@
 	ld [Buffer2], a
 	ld a, [hl]
 	ld [Buffer1], a
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, [hl]
 	ld [wd1ec], a
 	sub c
@@ -8083,8 +8097,9 @@
 	set SUBSTATUS_CONFUSED, [hl]
 	call BattleRandom
 	and 3
+rept 2
 	inc a
-	inc a
+endr
 	ld [bc], a
 
 	ld a, BATTLE_VARS_MOVE_EFFECT
@@ -8263,8 +8278,9 @@
 	rr b
 	srl a
 	rr b
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, b
 	ld [de], a
 	ld a, [hld]
@@ -8853,8 +8869,9 @@
 	ld a, [hli]
 	ld [de], a
 	inc hl
+rept 2
 	inc de
-	inc de
+endr
 	ld bc, NUM_MOVES
 	call CopyBytes
 	ld a, [hBattleTurn]
@@ -9655,8 +9672,9 @@
 	ld a, [hli]
 	cp b
 	jr nc, .ok
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .loop
 .ok
 	ld d, [hl]
@@ -9710,7 +9728,7 @@
 ; Return to battle scene
 	call ClearPalettes
 	callba Function3ed9f
-	call Function1c17
+	call WriteBackup
 	call ClearSprites
 	hlcoord 1, 0
 	lb bc, 4, 10
@@ -9779,7 +9797,7 @@
 	call Function1d6e
 	ld hl, Function3e8e4
 	call CallBattleCore
-	call Function1c17
+	call WriteBackup
 
 	xor a
 	ld [wd0ec], a
@@ -9810,7 +9828,7 @@
 	add NUM_MOVES
 	ld [wBattleAction], a
 .asm_37aa8
-	jp Function1c17
+	jp WriteBackup
 ; 37aab
 
 
@@ -10045,14 +10063,16 @@
 	inc c
 	cp WEATHER_SUN
 	jr z, .Heal
+rept 2
 	dec c
-	dec c
+endr
 
 .Heal
 	ld b, 0
 	ld hl, .Multipliers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 
 	ld a, [hli]
 	ld h, [hl]
--- a/battle/hidden_power.asm
+++ b/battle/hidden_power.asm
@@ -45,8 +45,9 @@
 
 ; Multiply by 5
 	ld b, a
+rept 2
 	add a
-	add a
+endr
 	add b
 
 ; Add Special & 3
@@ -74,8 +75,9 @@
 	ld a, [hl]
 	and 3 << 4
 	swap a
+rept 2
 	add a
-	add a
+endr
 	or b
 
 ; Skip Normal
--- a/battle/magikarp_length.asm
+++ b/battle/magikarp_length.asm
@@ -141,8 +141,9 @@
 	; hl = de * 10
 	ld h, d
 	ld l, e
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	add hl, de
 	add hl, hl
 
--- a/constants.asm
+++ b/constants.asm
@@ -19,7 +19,9 @@
 INCLUDE "constants/music_constants.asm"
 INCLUDE "constants/sfx_constants.asm"
 INCLUDE "constants/animation_constants.asm"
+INCLUDE "constants/phone_constants.asm"
 INCLUDE "constants/gfx_constants.asm"
 INCLUDE "constants/pokemon_data_constants.asm"
 INCLUDE "constants/misc_constants.asm"
 INCLUDE "constants/std_constants.asm"
+INCLUDE "constants/deco_constants.asm"
--- a/constants/battle_constants.asm
+++ b/constants/battle_constants.asm
@@ -5,32 +5,35 @@
 
 REST_TURNS EQU 2
 
-ATTACK EQU 0
-DEFENSE EQU 1
-SPEED EQU 2
-SP_ATTACK EQU 3
-SP_DEFENSE EQU 4
-ACCURACY EQU 5
-EVASION EQU 6
+	const_def
+	const ATTACK
+	const DEFENSE
+	const SPEED
+	const SP_ATTACK
+	const SP_DEFENSE
+	const ACCURACY
+	const EVASION
 
 ; move struct
-MOVE_LENGTH EQU 7
-MOVE_ANIM EQU 0
-MOVE_EFFECT EQU 1
-MOVE_POWER EQU 2
-MOVE_TYPE EQU 3
-MOVE_ACC EQU 4
-MOVE_PP EQU 5
-MOVE_CHANCE EQU 6
+	const_def
+	const MOVE_ANIM
+	const MOVE_EFFECT
+	const MOVE_POWER
+	const MOVE_TYPE
+	const MOVE_ACC
+	const MOVE_PP
+	const MOVE_CHANCE
+	const MOVE_LENGTH
 
 ; stat constants
-NUM_STATS EQU 6
-STAT_HP EQU 1
-STAT_ATK EQU 2
-STAT_DEF EQU 3
-STAT_SPD EQU 4
-STAT_SATK EQU 5
-STAT_SDEF EQU 6
+const_value SET 1
+	const STAT_HP
+	const STAT_ATK
+	const STAT_DEF
+	const STAT_SPD
+	const STAT_SATK
+	const STAT_SDEF
+NUM_STATS EQU const_value
 STAT_MIN_NORMAL EQU 5
 STAT_MIN_HP EQU 10
 
@@ -39,263 +42,276 @@
 SPDSPCDV_SHINY EQU $AA
 
 ; battle classes
-WILD_BATTLE EQU 1
-TRAINER_BATTLE EQU 2
+const_value SET 1
+	const WILD_BATTLE
+	const TRAINER_BATTLE
 
 ; battle types
-BATTLETYPE_NORMAL EQU $00
-BATTLETYPE_CANLOSE EQU $01
-BATTLETYPE_TUTORIAL EQU $03
-BATTLETYPE_FISH EQU $04
-BATTLETYPE_ROAMING EQU $05
-BATTLETYPE_CONTEST EQU $06
-BATTLETYPE_SHINY EQU $07
-BATTLETYPE_TREE EQU $08
-BATTLETYPE_TRAP EQU $09
-BATTLETYPE_FORCEITEM EQU $0a
-BATTLETYPE_CELEBI EQU $0b
-BATTLETYPE_SUICUNE EQU $0c
+	const_def
+	const BATTLETYPE_NORMAL
+	const BATTLETYPE_CANLOSE
+	const BATTLETYPE_DEBUG
+	const BATTLETYPE_TUTORIAL
+	const BATTLETYPE_FISH
+	const BATTLETYPE_ROAMING
+	const BATTLETYPE_CONTEST
+	const BATTLETYPE_SHINY
+	const BATTLETYPE_TREE
+	const BATTLETYPE_TRAP
+	const BATTLETYPE_FORCEITEM
+	const BATTLETYPE_CELEBI
+	const BATTLETYPE_SUICUNE
 
 ; battle variables
-BATTLE_VARS_SUBSTATUS1 EQU 0
-BATTLE_VARS_SUBSTATUS2 EQU 1
-BATTLE_VARS_SUBSTATUS3 EQU 2
-BATTLE_VARS_SUBSTATUS4 EQU 3
-BATTLE_VARS_SUBSTATUS5 EQU 4
-BATTLE_VARS_SUBSTATUS1_OPP EQU 5
-BATTLE_VARS_SUBSTATUS2_OPP EQU 6
-BATTLE_VARS_SUBSTATUS3_OPP EQU 7
-BATTLE_VARS_SUBSTATUS4_OPP EQU 8
-BATTLE_VARS_SUBSTATUS5_OPP EQU 9
-BATTLE_VARS_STATUS EQU 10
-BATTLE_VARS_STATUS_OPP EQU 11
-BATTLE_VARS_MOVE_ANIM EQU 12
-BATTLE_VARS_MOVE_EFFECT EQU 13
-BATTLE_VARS_MOVE_POWER EQU 14
-BATTLE_VARS_MOVE_TYPE EQU 15
-BATTLE_VARS_MOVE EQU 16
-BATTLE_VARS_LAST_COUNTER_MOVE EQU 17
-BATTLE_VARS_LAST_COUNTER_MOVE_OPP EQU 18
-BATTLE_VARS_LAST_MOVE EQU 19
-BATTLE_VARS_LAST_MOVE_OPP EQU 20
+	const_def
+	const BATTLE_VARS_SUBSTATUS1
+	const BATTLE_VARS_SUBSTATUS2
+	const BATTLE_VARS_SUBSTATUS3
+	const BATTLE_VARS_SUBSTATUS4
+	const BATTLE_VARS_SUBSTATUS5
+	const BATTLE_VARS_SUBSTATUS1_OPP
+	const BATTLE_VARS_SUBSTATUS2_OPP
+	const BATTLE_VARS_SUBSTATUS3_OPP
+	const BATTLE_VARS_SUBSTATUS4_OPP
+	const BATTLE_VARS_SUBSTATUS5_OPP
+	const BATTLE_VARS_STATUS
+	const BATTLE_VARS_STATUS_OPP
+	const BATTLE_VARS_MOVE_ANIM
+	const BATTLE_VARS_MOVE_EFFECT
+	const BATTLE_VARS_MOVE_POWER
+	const BATTLE_VARS_MOVE_TYPE
+	const BATTLE_VARS_MOVE
+	const BATTLE_VARS_LAST_COUNTER_MOVE
+	const BATTLE_VARS_LAST_COUNTER_MOVE_OPP
+	const BATTLE_VARS_LAST_MOVE
+	const BATTLE_VARS_LAST_MOVE_OPP
 
 ; status
-SLP EQU 7 ; 7 turns
-PSN EQU 3
-BRN EQU 4
-FRZ EQU 5
-PAR EQU 6
+const_value SET 3
+	const PSN
+	const BRN
+	const FRZ
+	const PAR
+	const SLP ; 7 turns
 
 ; substatus
-SUBSTATUS_IN_LOVE      EQU 7
-SUBSTATUS_ROLLOUT      EQU 6
-SUBSTATUS_ENDURE       EQU 5
-SUBSTATUS_PERISH       EQU 4
-SUBSTATUS_IDENTIFIED   EQU 3
-SUBSTATUS_PROTECT      EQU 2
-SUBSTATUS_CURSE        EQU 1
-SUBSTATUS_NIGHTMARE    EQU 0
+	enum_start 7, -1
+	enum SUBSTATUS_IN_LOVE
+	enum SUBSTATUS_ROLLOUT
+	enum SUBSTATUS_ENDURE
+	enum SUBSTATUS_PERISH
+	enum SUBSTATUS_IDENTIFIED
+	enum SUBSTATUS_PROTECT
+	enum SUBSTATUS_CURSE
+	enum SUBSTATUS_NIGHTMARE
 
 SUBSTATUS_CURLED       EQU 0
 
-SUBSTATUS_CONFUSED     EQU 7
-SUBSTATUS_FLYING       EQU 6
-SUBSTATUS_UNDERGROUND  EQU 5
-SUBSTATUS_CHARGED      EQU 4
-SUBSTATUS_FLINCHED     EQU 3
-SUBSTATUS_IN_LOOP      EQU 2
-SUBSTATUS_RAMPAGE      EQU 1
-SUBSTATUS_BIDE         EQU 0
+	enum_start 7, -1
+	enum SUBSTATUS_CONFUSED
+	enum SUBSTATUS_FLYING
+	enum SUBSTATUS_UNDERGROUND
+	enum SUBSTATUS_CHARGED
+	enum SUBSTATUS_FLINCHED
+	enum SUBSTATUS_IN_LOOP
+	enum SUBSTATUS_RAMPAGE
+	enum SUBSTATUS_BIDE
 
-SUBSTATUS_LEECH_SEED   EQU 7
-SUBSTATUS_RAGE         EQU 6
-SUBSTATUS_RECHARGE     EQU 5
-SUBSTATUS_SUBSTITUTE   EQU 4
-;                      EQU 3
-SUBSTATUS_FOCUS_ENERGY EQU 2
-SUBSTATUS_MIST         EQU 1
-SUBSTATUS_X_ACCURACY   EQU 0
+	enum_start 7, -1
+	enum SUBSTATUS_LEECH_SEED
+	enum SUBSTATUS_RAGE
+	enum SUBSTATUS_RECHARGE
+	enum SUBSTATUS_SUBSTITUTE
+	enum SUBSTATUS_UNKNOWN_1
+	enum SUBSTATUS_FOCUS_ENERGY
+	enum SUBSTATUS_MIST
+	enum SUBSTATUS_X_ACCURACY
 
-SUBSTATUS_CANT_RUN     EQU 7
-SUBSTATUS_DESTINY_BOND EQU 6
-SUBSTATUS_LOCK_ON      EQU 5
-SUBSTATUS_ENCORED      EQU 4
-SUBSTATUS_TRANSFORMED  EQU 3
-;                      EQU 2
-;                      EQU 1
-SUBSTATUS_TOXIC        EQU 0
+	enum_start 7, -1
+	enum SUBSTATUS_CANT_RUN
+	enum SUBSTATUS_DESTINY_BOND
+	enum SUBSTATUS_LOCK_ON
+	enum SUBSTATUS_ENCORED
+	enum SUBSTATUS_TRANSFORMED
+	enum SUBSTATUS_UNKNOWN_2
+	enum SUBSTATUS_UNKNOWN_3
+	enum SUBSTATUS_TOXIC
 
 ; environmental
-SCREENS_REFLECT      EQU 4
-SCREENS_LIGHT_SCREEN EQU 3
-SCREENS_SAFEGUARD    EQU 2
-SCREENS_SPIKES       EQU 0
+	enum_start 4, -1
+	enum SCREENS_REFLECT
+	enum SCREENS_LIGHT_SCREEN
+	enum SCREENS_SAFEGUARD
+	enum SCREENS_UNUSED
+	enum SCREENS_SPIKES
 
 ; weather
-WEATHER_NONE EQU 0
-WEATHER_RAIN EQU 1
-WEATHER_SUN EQU 2
-WEATHER_SANDSTORM EQU 3
-WEATHER_RAIN_END EQU 4
-WEATHER_SUN_END EQU 5
-WEATHER_SANDSTORM_END EQU 6
+	const_def
+	const WEATHER_NONE
+	const WEATHER_RAIN
+	const WEATHER_SUN
+	const WEATHER_SANDSTORM
+	const WEATHER_RAIN_END
+	const WEATHER_SUN_END
+	const WEATHER_SANDSTORM_END
 
 
 ; move effects
-EFFECT_NORMAL_HIT          EQU $00
-EFFECT_SLEEP               EQU $01
-EFFECT_POISON_HIT          EQU $02
-EFFECT_LEECH_HIT           EQU $03
-EFFECT_BURN_HIT            EQU $04
-EFFECT_FREEZE_HIT          EQU $05
-EFFECT_PARALYZE_HIT        EQU $06
-EFFECT_EXPLOSION           EQU $07
-EFFECT_DREAM_EATER         EQU $08
-EFFECT_MIRROR_MOVE         EQU $09
-EFFECT_ATTACK_UP           EQU $0a
-EFFECT_DEFENSE_UP          EQU $0b
-EFFECT_SPEED_UP            EQU $0c
-EFFECT_SP_ATK_UP           EQU $0d
-EFFECT_SP_DEF_UP           EQU $0e
-EFFECT_ACCURACY_UP         EQU $0f
-EFFECT_EVASION_UP          EQU $10
-EFFECT_ALWAYS_HIT          EQU $11
-EFFECT_ATTACK_DOWN         EQU $12
-EFFECT_DEFENSE_DOWN        EQU $13
-EFFECT_SPEED_DOWN          EQU $14
-EFFECT_SP_ATK_DOWN         EQU $15
-EFFECT_SP_DEF_DOWN         EQU $16
-EFFECT_ACCURACY_DOWN       EQU $17
-EFFECT_EVASION_DOWN        EQU $18
-EFFECT_HAZE                EQU $19
-EFFECT_BIDE                EQU $1a
-EFFECT_RAMPAGE             EQU $1b
-EFFECT_WHIRLWIND           EQU $1c
-EFFECT_MULTI_HIT           EQU $1d
-EFFECT_CONVERSION          EQU $1e
-EFFECT_FLINCH_HIT          EQU $1f
-EFFECT_HEAL                EQU $20
-EFFECT_TOXIC               EQU $21
-EFFECT_PAY_DAY             EQU $22
-EFFECT_LIGHT_SCREEN        EQU $23
-EFFECT_TRI_ATTACK          EQU $24
-EFFECT_UNUSED_25           EQU $25 ; unused
-EFFECT_OHKO                EQU $26
-EFFECT_RAZOR_WIND          EQU $27
-EFFECT_SUPER_FANG          EQU $28
-EFFECT_STATIC_DAMAGE       EQU $29
-EFFECT_BIND                EQU $2a
-EFFECT_UNUSED_2B           EQU $2b ; unused
-EFFECT_DOUBLE_HIT          EQU $2c
-EFFECT_JUMP_KICK           EQU $2d
-EFFECT_MIST                EQU $2e
-EFFECT_FOCUS_ENERGY        EQU $2f
-EFFECT_RECOIL_HIT          EQU $30
-EFFECT_CONFUSE             EQU $31
-EFFECT_ATTACK_UP_2         EQU $32
-EFFECT_DEFENSE_UP_2        EQU $33
-EFFECT_SPEED_UP_2          EQU $34
-EFFECT_SP_ATK_UP_2         EQU $35
-EFFECT_SP_DEF_UP_2         EQU $36
-EFFECT_ACCURACY_UP_2       EQU $37
-EFFECT_EVASION_UP_2        EQU $38
-EFFECT_TRANSFORM           EQU $39
-EFFECT_ATTACK_DOWN_2       EQU $3a
-EFFECT_DEFENSE_DOWN_2      EQU $3b
-EFFECT_SPEED_DOWN_2        EQU $3c
-EFFECT_SP_ATK_DOWN_2       EQU $3d
-EFFECT_SP_DEF_DOWN_2       EQU $3e
-EFFECT_ACCURACY_DOWN_2     EQU $3f
-EFFECT_EVASION_DOWN_2      EQU $40
-EFFECT_REFLECT             EQU $41
-EFFECT_POISON              EQU $42
-EFFECT_PARALYZE            EQU $43
-EFFECT_ATTACK_DOWN_HIT     EQU $44
-EFFECT_DEFENSE_DOWN_HIT    EQU $45
-EFFECT_SPEED_DOWN_HIT      EQU $46
-EFFECT_SP_ATK_DOWN_HIT     EQU $47
-EFFECT_SP_DEF_DOWN_HIT     EQU $48
-EFFECT_ACCURACY_DOWN_HIT   EQU $49
-EFFECT_EVASION_DOWN_HIT    EQU $4a
-EFFECT_SKY_ATTACK          EQU $4b
-EFFECT_CONFUSE_HIT         EQU $4c
-EFFECT_TWINEEDLE           EQU $4d
-EFFECT_UNUSED_4E           EQU $4e ; unused
-EFFECT_SUBSTITUTE          EQU $4f
-EFFECT_HYPER_BEAM          EQU $50
-EFFECT_RAGE                EQU $51
-EFFECT_MIMIC               EQU $52
-EFFECT_METRONOME           EQU $53
-EFFECT_LEECH_SEED          EQU $54
-EFFECT_SPLASH              EQU $55
-EFFECT_DISABLE             EQU $56
-EFFECT_LEVEL_DAMAGE        EQU $57
-EFFECT_PSYWAVE             EQU $58
-EFFECT_COUNTER             EQU $59
-EFFECT_ENCORE              EQU $5a
-EFFECT_PAIN_SPLIT          EQU $5b
-EFFECT_SNORE               EQU $5c
-EFFECT_CONVERSION2         EQU $5d
-EFFECT_LOCK_ON             EQU $5e
-EFFECT_SKETCH              EQU $5f
-EFFECT_DEFROST_OPPONENT    EQU $60
-EFFECT_SLEEP_TALK          EQU $61
-EFFECT_DESTINY_BOND        EQU $62
-EFFECT_REVERSAL            EQU $63
-EFFECT_SPITE               EQU $64
-EFFECT_FALSE_SWIPE         EQU $65
-EFFECT_HEAL_BELL           EQU $66
-EFFECT_PRIORITY_HIT        EQU $67
-EFFECT_TRIPLE_KICK         EQU $68
-EFFECT_THIEF               EQU $69
-EFFECT_MEAN_LOOK           EQU $6a
-EFFECT_NIGHTMARE           EQU $6b
-EFFECT_FLAME_WHEEL         EQU $6c
-EFFECT_CURSE               EQU $6d
-EFFECT_UNUSED_6E           EQU $6e ; unused
-EFFECT_PROTECT             EQU $6f
-EFFECT_SPIKES              EQU $70
-EFFECT_FORESIGHT           EQU $71
-EFFECT_PERISH_SONG         EQU $72
-EFFECT_SANDSTORM           EQU $73
-EFFECT_ENDURE              EQU $74
-EFFECT_ROLLOUT             EQU $75
-EFFECT_SWAGGER             EQU $76
-EFFECT_FURY_CUTTER         EQU $77
-EFFECT_ATTRACT             EQU $78
-EFFECT_RETURN              EQU $79
-EFFECT_PRESENT             EQU $7a
-EFFECT_FRUSTRATION         EQU $7b
-EFFECT_SAFEGUARD           EQU $7c
-EFFECT_SACRED_FIRE         EQU $7d
-EFFECT_MAGNITUDE           EQU $7e
-EFFECT_BATON_PASS          EQU $7f
-EFFECT_PURSUIT             EQU $80
-EFFECT_RAPID_SPIN          EQU $81
-EFFECT_UNUSED_82           EQU $82 ; unused
-EFFECT_UNUSED_83           EQU $83 ; unused
-EFFECT_MORNING_SUN         EQU $84
-EFFECT_SYNTHESIS           EQU $85
-EFFECT_MOONLIGHT           EQU $86
-EFFECT_HIDDEN_POWER        EQU $87
-EFFECT_RAIN_DANCE          EQU $88
-EFFECT_SUNNY_DAY           EQU $89
-EFFECT_STEEL_WING          EQU $8a
-EFFECT_METAL_CLAW          EQU $8b
-EFFECT_ANCIENTPOWER        EQU $8c
-EFFECT_FAKE_OUT            EQU $8d
-EFFECT_BELLY_DRUM          EQU $8e
-EFFECT_PSYCH_UP            EQU $8f
-EFFECT_MIRROR_COAT         EQU $90
-EFFECT_SKULL_BASH          EQU $91
-EFFECT_TWISTER             EQU $92
-EFFECT_EARTHQUAKE          EQU $93
-EFFECT_FUTURE_SIGHT        EQU $94
-EFFECT_GUST                EQU $95
-EFFECT_STOMP               EQU $96
-EFFECT_SOLARBEAM           EQU $97
-EFFECT_THUNDER             EQU $98
-EFFECT_TELEPORT            EQU $99
-EFFECT_BEAT_UP             EQU $9a
-EFFECT_FLY                 EQU $9b
-EFFECT_DEFENSE_CURL        EQU $9c
+	const_def
+	const EFFECT_NORMAL_HIT
+	const EFFECT_SLEEP
+	const EFFECT_POISON_HIT
+	const EFFECT_LEECH_HIT
+	const EFFECT_BURN_HIT
+	const EFFECT_FREEZE_HIT
+	const EFFECT_PARALYZE_HIT
+	const EFFECT_EXPLOSION
+	const EFFECT_DREAM_EATER
+	const EFFECT_MIRROR_MOVE
+	const EFFECT_ATTACK_UP
+	const EFFECT_DEFENSE_UP
+	const EFFECT_SPEED_UP
+	const EFFECT_SP_ATK_UP
+	const EFFECT_SP_DEF_UP
+	const EFFECT_ACCURACY_UP
+	const EFFECT_EVASION_UP
+	const EFFECT_ALWAYS_HIT
+	const EFFECT_ATTACK_DOWN
+	const EFFECT_DEFENSE_DOWN
+	const EFFECT_SPEED_DOWN
+	const EFFECT_SP_ATK_DOWN
+	const EFFECT_SP_DEF_DOWN
+	const EFFECT_ACCURACY_DOWN
+	const EFFECT_EVASION_DOWN
+	const EFFECT_HAZE
+	const EFFECT_BIDE
+	const EFFECT_RAMPAGE
+	const EFFECT_WHIRLWIND
+	const EFFECT_MULTI_HIT
+	const EFFECT_CONVERSION
+	const EFFECT_FLINCH_HIT
+	const EFFECT_HEAL
+	const EFFECT_TOXIC
+	const EFFECT_PAY_DAY
+	const EFFECT_LIGHT_SCREEN
+	const EFFECT_TRI_ATTACK
+	const EFFECT_UNUSED_25
+	const EFFECT_OHKO
+	const EFFECT_RAZOR_WIND
+	const EFFECT_SUPER_FANG
+	const EFFECT_STATIC_DAMAGE
+	const EFFECT_BIND
+	const EFFECT_UNUSED_2B
+	const EFFECT_DOUBLE_HIT
+	const EFFECT_JUMP_KICK
+	const EFFECT_MIST
+	const EFFECT_FOCUS_ENERGY
+	const EFFECT_RECOIL_HIT
+	const EFFECT_CONFUSE
+	const EFFECT_ATTACK_UP_2
+	const EFFECT_DEFENSE_UP_2
+	const EFFECT_SPEED_UP_2
+	const EFFECT_SP_ATK_UP_2
+	const EFFECT_SP_DEF_UP_2
+	const EFFECT_ACCURACY_UP_2
+	const EFFECT_EVASION_UP_2
+	const EFFECT_TRANSFORM
+	const EFFECT_ATTACK_DOWN_2
+	const EFFECT_DEFENSE_DOWN_2
+	const EFFECT_SPEED_DOWN_2
+	const EFFECT_SP_ATK_DOWN_2
+	const EFFECT_SP_DEF_DOWN_2
+	const EFFECT_ACCURACY_DOWN_2
+	const EFFECT_EVASION_DOWN_2
+	const EFFECT_REFLECT
+	const EFFECT_POISON
+	const EFFECT_PARALYZE
+	const EFFECT_ATTACK_DOWN_HIT
+	const EFFECT_DEFENSE_DOWN_HIT
+	const EFFECT_SPEED_DOWN_HIT
+	const EFFECT_SP_ATK_DOWN_HIT
+	const EFFECT_SP_DEF_DOWN_HIT
+	const EFFECT_ACCURACY_DOWN_HIT
+	const EFFECT_EVASION_DOWN_HIT
+	const EFFECT_SKY_ATTACK
+	const EFFECT_CONFUSE_HIT
+	const EFFECT_TWINEEDLE
+	const EFFECT_UNUSED_4E
+	const EFFECT_SUBSTITUTE
+	const EFFECT_HYPER_BEAM
+	const EFFECT_RAGE
+	const EFFECT_MIMIC
+	const EFFECT_METRONOME
+	const EFFECT_LEECH_SEED
+	const EFFECT_SPLASH
+	const EFFECT_DISABLE
+	const EFFECT_LEVEL_DAMAGE
+	const EFFECT_PSYWAVE
+	const EFFECT_COUNTER
+	const EFFECT_ENCORE
+	const EFFECT_PAIN_SPLIT
+	const EFFECT_SNORE
+	const EFFECT_CONVERSION2
+	const EFFECT_LOCK_ON
+	const EFFECT_SKETCH
+	const EFFECT_DEFROST_OPPONENT
+	const EFFECT_SLEEP_TALK
+	const EFFECT_DESTINY_BOND
+	const EFFECT_REVERSAL
+	const EFFECT_SPITE
+	const EFFECT_FALSE_SWIPE
+	const EFFECT_HEAL_BELL
+	const EFFECT_PRIORITY_HIT
+	const EFFECT_TRIPLE_KICK
+	const EFFECT_THIEF
+	const EFFECT_MEAN_LOOK
+	const EFFECT_NIGHTMARE
+	const EFFECT_FLAME_WHEEL
+	const EFFECT_CURSE
+	const EFFECT_UNUSED_6E
+	const EFFECT_PROTECT
+	const EFFECT_SPIKES
+	const EFFECT_FORESIGHT
+	const EFFECT_PERISH_SONG
+	const EFFECT_SANDSTORM
+	const EFFECT_ENDURE
+	const EFFECT_ROLLOUT
+	const EFFECT_SWAGGER
+	const EFFECT_FURY_CUTTER
+	const EFFECT_ATTRACT
+	const EFFECT_RETURN
+	const EFFECT_PRESENT
+	const EFFECT_FRUSTRATION
+	const EFFECT_SAFEGUARD
+	const EFFECT_SACRED_FIRE
+	const EFFECT_MAGNITUDE
+	const EFFECT_BATON_PASS
+	const EFFECT_PURSUIT
+	const EFFECT_RAPID_SPIN
+	const EFFECT_UNUSED_82
+	const EFFECT_UNUSED_83
+	const EFFECT_MORNING_SUN
+	const EFFECT_SYNTHESIS
+	const EFFECT_MOONLIGHT
+	const EFFECT_HIDDEN_POWER
+	const EFFECT_RAIN_DANCE
+	const EFFECT_SUNNY_DAY
+	const EFFECT_STEEL_WING
+	const EFFECT_METAL_CLAW
+	const EFFECT_ANCIENTPOWER
+	const EFFECT_FAKE_OUT
+	const EFFECT_BELLY_DRUM
+	const EFFECT_PSYCH_UP
+	const EFFECT_MIRROR_COAT
+	const EFFECT_SKULL_BASH
+	const EFFECT_TWISTER
+	const EFFECT_EARTHQUAKE
+	const EFFECT_FUTURE_SIGHT
+	const EFFECT_GUST
+	const EFFECT_STOMP
+	const EFFECT_SOLARBEAM
+	const EFFECT_THUNDER
+	const EFFECT_TELEPORT
+	const EFFECT_BEAT_UP
+	const EFFECT_FLY
+	const EFFECT_DEFENSE_CURL
--- /dev/null
+++ b/constants/deco_constants.asm
@@ -1,0 +1,105 @@
+const_value = 1
+	const DECO_PLANT
+	const DECO_BED
+	const DECO_CARPET
+	const DECO_POSTER
+	const DECO_DOLL
+	const DECO_BIGDOLL
+
+const_value = 1
+	const PUT_IT_AWAY
+	const MAGNAPLANT
+	const TROPICPLANT
+	const JUMBOPLANT
+	const TOWN_MAP_D
+	const FAMICOM
+	const SUPER_NES
+	const NINTENDO_64
+	const VIRTUAL_BOY
+	const GOLD_TROPHY
+	const SILVER_TROPHY
+	const SURF_PIKA_DOLL
+	const _BED
+	const _CARPET
+	const _POSTER
+	const _DOLL
+	const BIG_
+	const FEATHERY_BED
+	const PIKACHU_BED
+	const PINK_BED
+	const POLKADOT_BED
+	const RED_CARPET
+	const BLUE_CARPET
+	const YELLOW_CARPET
+	const GREEN_CARPET
+
+const_value = 1
+	const SET_UP_BED
+	const PUT_AWAY_BED
+	const SET_UP_CARPET
+	const PUT_AWAY_CARPET
+	const SET_UP_PLANT
+	const PUT_AWAY_PLANT
+	const SET_UP_POSTER
+	const PUT_AWAY_POSTER
+	const SET_UP_CONSOLE
+	const PUT_AWAY_CONSOLE
+	const SET_UP_BIG_DOLL
+	const PUT_AWAY_BIG_DOLL
+	const SET_UP_DOLL
+	const PUT_AWAY_DOLL
+	const SET_UP_ORNAMENT
+	const PUT_AWAY_ORNAMENT
+
+const_value = 2
+	const DECO_FEATHERY_BED ; 2
+	const DECO_PINK_BED ; 3
+	const DECO_POLKADOT_BED ; 4
+	const DECO_PIKACHU_BED ; 5
+const_value = const_value + 1
+	const DECO_RED_CARPET ; 7
+	const DECO_BLUE_CARPET ; 8
+	const DECO_YELLOW_CARPET ; 9
+	const DECO_GREEN_CARPET ; a
+const_value = const_value + 1
+	const DECO_MAGNAPLANT ; c
+	const DECO_TROPICPLANT ; d
+	const DECO_JUMBOPLANT ; e
+const_value = const_value + 1
+	const DECO_TOWN_MAP ; 10
+	const DECO_PIKACHU_POSTER ; 11
+	const DECO_CLEFAIRY_POSTER ; 12
+	const DECO_JIGGLYPUFF_POSTER ; 13
+const_value = const_value + 1
+	const DECO_FAMICOM ; 15
+	const DECO_SNES ; 16
+	const DECO_N64 ; 17
+	const DECO_VIRTUAL_BOY ; 18
+const_value = const_value + 1
+	const DECO_BIG_SNORLAX_DOLL ; 1a
+	const DECO_BIG_ONIX_DOLL ; 1b
+	const DECO_BIG_LAPRAS_DOLL ; 1c
+const_value = const_value + 1
+	const DECO_PIKACHU_DOLL ; 1e
+	const DECO_SURF_PIKACHU_DOLL ; 1f
+	const DECO_CLEFAIRY_DOLL ; 20
+	const DECO_JIGGLYPUFF_DOLL ; 21
+	const DECO_BULBASAUR_DOLL ; 22
+	const DECO_CHARMANDER_DOLL ; 23
+	const DECO_SQUIRTLE_DOLL ; 24
+	const DECO_POLIWAG_DOLL ; 25
+	const DECO_DIGLETT_DOLL ; 26
+	const DECO_STARMIE_DOLL ; 27
+	const DECO_MAGIKARP_DOLL ; 28
+	const DECO_ODDISH_DOLL ; 29
+	const DECO_GENGAR_DOLL ; 2a
+	const DECO_SHELLDER_DOLL ; 2b
+	const DECO_GRIMER_DOLL ; 2c
+	const DECO_VOLTORB_DOLL ; 2d
+	const DECO_WEEDLE_DOLL ; 2e
+	const DECO_UNOWN_DOLL ; 2f
+	const DECO_GEODUDE_DOLL ; 30
+	const DECO_MACHOP_DOLL ; 31
+	const DECO_TENTACOOL_DOLL ; 32
+	const DECO_GOLD_TROPHY_DOLL ; 33
+	const DECO_SILVER_TROPHY_DOLL ; 34
--- a/constants/engine_flags.asm
+++ b/constants/engine_flags.asm
@@ -16,13 +16,13 @@
 	const ENGINE_POKERUS
 	const ENGINE_ROCKET_SIGNAL_ON_CH20
 	const ENGINE_CREDITS_SKIP
-	const ENGINE_BUG_CONTEST_ON
+	const ENGINE_BUG_CONTEST_ON ; 10
 	const ENGINE_BUG_CONTEST_TIMER
 	const ENGINE_12
 	const ENGINE_ROCKETS_IN_RADIO_TOWER
 	const ENGINE_BIKE_SHOP_CALL_ENABLED
 	const ENGINE_GIVE_POKERUS
-	const ENGINE_16
+	const ENGINE_FLORIA
 	const ENGINE_ROCKETS_IN_MAHOGANY
 	const ENGINE_STRENGTH_ACTIVE
 	const ENGINE_ALWAYS_ON_BIKE
@@ -32,7 +32,7 @@
 	const ENGINE_PLAINBADGE
 	const ENGINE_FOGBADGE
 	const ENGINE_MINERALBADGE
-	const ENGINE_STORMBADGE
+	const ENGINE_STORMBADGE ; 20
 	const ENGINE_GLACIERBADGE
 	const ENGINE_RISINGBADGE
 	const ENGINE_BOULDERBADGE
@@ -48,7 +48,7 @@
 	const ENGINE_UNLOCKED_UNOWNS_3
 	const ENGINE_UNLOCKED_UNOWNS_4
 	const ENGINE_UNLOCKED_UNOWNS_5
-	const ENGINE_UNLOCKED_UNOWNS_6
+	const ENGINE_UNLOCKED_UNOWNS_6 ; 30
 	const ENGINE_UNLOCKED_UNOWNS_7
 	const ENGINE_UNLOCKED_UNOWNS_8
 	const ENGINE_FLYPOINT_KRISS_HOUSE
@@ -64,7 +64,7 @@
 	const ENGINE_FLYPOINT_CELADON
 	const ENGINE_FLYPOINT_FUCHSIA
 	const ENGINE_FLYPOINT_CINNABAR
-	const ENGINE_FLYPOINT_INDIGO_PLATEAU
+	const ENGINE_FLYPOINT_INDIGO_PLATEAU ; 40
 	const ENGINE_FLYPOINT_NEW_BARK
 	const ENGINE_FLYPOINT_CHERRYGROVE
 	const ENGINE_FLYPOINT_VIOLET
@@ -80,8 +80,8 @@
 	const ENGINE_FLYPOINT_UNUSED
 	const ENGINE_LUCKY_NUMBER_SHOW
 	const ENGINE_4F
-	const ENGINE_KURT_MAKING_BALLS
-	const ENGINE_51
+	const ENGINE_KURT_MAKING_BALLS ; 50
+	const ENGINE_DAILY_BUG_CONTEST
 	const ENGINE_SPECIAL_WILDDATA
 	const ENGINE_TIME_CAPSULE
 	const ENGINE_ALL_FRUIT_TREES
@@ -94,9 +94,9 @@
 	const ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	const ENGINE_TEA_IN_BLUES_HOUSE
 	const ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
-	const ENGINE_5E
-	const ENGINE_5F
-	const ENGINE_60
+	const ENGINE_DAILY_MOVE_TUTOR
+	const ENGINE_BUENAS_PASSWORD
+	const ENGINE_BUENAS_PASSWORD_2 ; 60
 	const ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
 	const ENGINE_62
 	const ENGINE_PLAYER_IS_FEMALE
@@ -112,7 +112,7 @@
 	const ENGINE_RALPH
 	const ENGINE_LIZ
 	const ENGINE_ANTHONY
-	const ENGINE_TODD
+	const ENGINE_TODD ; 70
 	const ENGINE_GINA
 	const ENGINE_ARNIE
 	const ENGINE_ALAN
@@ -128,37 +128,37 @@
 	const ENGINE_BEVERLY_HAS_NUGGET
 	const ENGINE_JOSE_HAS_STAR_PIECE
 	const ENGINE_WADE_HAS_ITEM
-	const ENGINE_GINA_HAS_LEAF_STONE
+	const ENGINE_GINA_HAS_LEAF_STONE ; 80
 	const ENGINE_ALAN_HAS_FIRE_STONE
-	const ENGINE_LIZ_HAS_THUNDERSTONE
+	const ENGINE_DANA_HAS_THUNDERSTONE
 	const ENGINE_DEREK_HAS_NUGGET
 	const ENGINE_TULLY_HAS_WATER_STONE
 	const ENGINE_TIFFANY_HAS_PINK_BOW
 	const ENGINE_WILTON_HAS_ITEM
-	const ENGINE_87
-	const ENGINE_88
-	const ENGINE_89
-	const ENGINE_8A
-	const ENGINE_8B
-	const ENGINE_8C
-	const ENGINE_8D
-	const ENGINE_8E
-	const ENGINE_8F
-	const ENGINE_90
-	const ENGINE_91
-	const ENGINE_92
-	const ENGINE_93
-	const ENGINE_94
-	const ENGINE_95
-	const ENGINE_96
-	const ENGINE_97
-	const ENGINE_98
-	const ENGINE_99
-	const ENGINE_9A
-	const ENGINE_9B
-	const ENGINE_9C
-	const ENGINE_9D
-	const ENGINE_9E
+	const ENGINE_JACK_MONDAY_MORNING
+	const ENGINE_HUEY_WEDNESDAY_NIGHT
+	const ENGINE_GAVEN_THURSDAY_MORNING
+	const ENGINE_BETH_FRIDAY_AFTERNOON
+	const ENGINE_JOSE_SATURDAY_NIGHT
+	const ENGINE_REENA_SUNDAY_MORNING
+	const ENGINE_JOEY_MONDAY_AFTERNOON
+	const ENGINE_WADE_TUESDAY_NIGHT
+	const ENGINE_RALPH_WEDNESDAY_MORNING
+	const ENGINE_LIZ_THURSDAY_AFTERNOON ; 90
+	const ENGINE_ANTHONY_FRIDAY_NIGHT
+	const ENGINE_TODD_SATURDAY_MORNING
+	const ENGINE_GINA_SUNDAY_AFTERNOON
+	const ENGINE_ARNIE_TUESDAY_MORNING
+	const ENGINE_ALAN_WEDNESDAY_AFTERNOON
+	const ENGINE_DANA_THURSDAY_NIGHT
+	const ENGINE_CHAD_FRIDAY_MORNING
+	const ENGINE_TULLY_SUNDAY_NIGHT
+	const ENGINE_BRENT_MONDAY_MORNING
+	const ENGINE_TIFFANY_TUESDAY_AFTERNOON
+	const ENGINE_VANCE_WEDNESDAY_NIGHT
+	const ENGINE_WILTON_THRUSDAY_MORNING
+	const ENGINE_PARRY_FRIDAY_AFTERNOON
+	const ENGINE_ERIN_SATURDAY_NIGHT
 	const ENGINE_KRIS_IN_CABLE_CLUB
-	const ENGINE_DUNSPARCE_SWARM
+	const ENGINE_DUNSPARCE_SWARM ; a0
 	const ENGINE_YANMA_SWARM
--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -1,14 +1,16 @@
 
 	const_def
 
-	const EVENT_000
-	const EVENT_001
-	const EVENT_002
-	const EVENT_003
-	const EVENT_004
-	const EVENT_005
-	const EVENT_006
-	const EVENT_007
+; These first eight flags are reset upon reloading the map.
+	const EVENT_GAVE_KURT_APRICORNS ; 000
+	const EVENT_RECEIVED_BALLS_FROM_KURT
+	const EVENT_DRAGON_SHRINE_QUESTION_2
+	const EVENT_DRAGON_SHRINE_QUESTION_3
+	const EVENT_DRAGON_SHRINE_QUESTION_4
+	const EVENT_DRAGON_SHRINE_QUESTION_5
+	const EVENT_JUST_RECEIVED_DRATINI
+	const EVENT_IN_YOUR_ROOM
+; Johto story events
 	const EVENT_GOT_TM31_MUD_SLAP
 	const EVENT_GOT_TM49_FURY_CUTTER
 	const EVENT_GOT_TM01_DYNAMICPUNCH
@@ -49,23 +51,23 @@
 	const EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
 	const EVENT_MADE_UNOWN_APPEAR_IN_RUINS
 	const EVENT_FAST_SHIP_DESTINATION_OLIVINE
-	const EVENT_030
-	const EVENT_031
-	const EVENT_032
-	const EVENT_033
-	const EVENT_034
-	const EVENT_035
-	const EVENT_036
+	const EVENT_FAST_SHIP_FIRST_TIME
+	const EVENT_FAST_SHIP_HAS_ARRIVED
+	const EVENT_FAST_SHIP_FOUND_GIRL
+	const EVENT_FAST_SHIP_LAZY_SAILOR
+	const EVENT_FAST_SHIP_INFORMED_ABOUT_LAZY_SAILOR
+	const EVENT_KURT_GAVE_YOU_LURE_BALL
+	const EVENT_INITIALIZED_EVENTS
 	const EVENT_JASMINE_EXPLAINED_AMPHYS_SICKNESS
-	const EVENT_038
-	const EVENT_039
-	const EVENT_03A
+	const EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
+	const EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
+	const EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
 	const EVENT_03B
 	const EVENT_03C
 	const EVENT_HEALED_MOOMOO
 	const EVENT_GOT_TM13_SNORE_FROM_MOOMOO_FARM
 	const EVENT_TALKED_TO_FARMER_ABOUT_MOOMOO
-	const EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
+	const EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST ; 040
 	const EVENT_DUDE_TALKED_TO_YOU
 	const EVENT_LEARNED_TO_CATCH_POKEMON
 	const EVENT_ELM_CALLED_ABOUT_STOLEN_POKEMON
@@ -75,13 +77,13 @@
 	const EVENT_GOT_SUNNY_DAY_FROM_RADIO_TOWER
 	const EVENT_GOT_PINK_BOW_FROM_MARY
 	const EVENT_USED_BASEMENT_KEY
-	const EVENT_04A
+	const EVENT_RECEIVED_CARD_KEY
 	const EVENT_GOT_TM08_ROCK_SMASH
-	const EVENT_04C
+	const EVENT_LANCE_HEALED_YOU_IN_TEAM_ROCKET_BASE
 	const EVENT_GOT_MYSTIC_WATER_IN_CHERRYGROVE
 	const EVENT_GOT_TM05_ROAR
 	const EVENT_GOT_EEVEE
-	const EVENT_GOT_KENYA
+	const EVENT_GOT_KENYA ; 050
 	const EVENT_GAVE_KENYA
 	const EVENT_GOT_HP_UP_FROM_RANDY
 	const EVENT_GOT_TM50_NIGHTMARE
@@ -97,7 +99,7 @@
 	const EVENT_GOT_MIRACLE_SEED_IN_ROUTE_32
 	const EVENT_GOT_CHARCOAL_IN_CHARCOAL_KILN
 	const EVENT_GOT_TM02_HEADBUTT
-	const EVENT_DECIDED_TO_HELP_LANCE
+	const EVENT_DECIDED_TO_HELP_LANCE ; 060
 	const EVENT_GOT_TYROGUE_FROM_KIYO
 	const EVENT_MET_FRIEDA_OF_FRIDAY
 	const EVENT_GOT_POISON_BARB_FROM_FRIEDA
@@ -112,7 +114,7 @@
 	const EVENT_MET_SANTOS_OF_SATURDAY
 	const EVENT_GOT_SPELL_TAG_FROM_SANTOS
 	const EVENT_MET_MONICA_OF_MONDAY
-	const EVENT_GOT_SHARP_BEAK_FROM_MONICA
+	const EVENT_GOT_SHARP_BEAK_FROM_MONICA ; 070
 	const EVENT_GOT_SOFT_SAND_FROM_KATE
 	const EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
 	const EVENT_GOT_BLACKGLASSES_IN_DARK_CAVE
@@ -119,7 +121,7 @@
 	const EVENT_GOT_KINGS_ROCK_IN_SLOWPOKE_WELL
 	const EVENT_GOT_TM47_STEEL_WING
 	const EVENT_GOT_TM37_SANDSTORM
-	const EVENT_076
+	const EVENT_FIRST_TIME_BANKING_WITH_MOM
 	const EVENT_TOLD_ELM_ABOUT_TOGEPI_OVER_THE_PHONE
 	const EVENT_GOT_CLEAR_BELL
 	const EVENT_GOT_SILVER_WING
@@ -126,68 +128,70 @@
 	const EVENT_GOT_TM12_SWEET_SCENT
 	const EVENT_RELEASED_THE_BEASTS
 	const EVENT_GOT_MASTER_BALL_FROM_ELM
-	const EVENT_07D
-	const EVENT_07E
-	const EVENT_07F
-	const EVENT_080
+; Johto Signpost Items
+	const EVENT_TIN_TOWER_4F_HIDDEN_MAX_POTION
+	const EVENT_TIN_TOWER_5F_HIDDEN_FULL_RESTORE
+	const EVENT_TIN_TOWER_5F_HIDDEN_CARBOS
+	const EVENT_BURNED_TOWER_1F_HIDDEN_ETHER ; 080
 	const EVENT_081
 	const EVENT_082
 	const EVENT_083
-	const EVENT_084
-	const EVENT_085
-	const EVENT_FOUND_REVIVE_IN_ROCKET_BASE_B1F
-	const EVENT_087
-	const EVENT_088
-	const EVENT_089
-	const EVENT_08A
-	const EVENT_08B
-	const EVENT_08C
-	const EVENT_08D
-	const EVENT_08E
-	const EVENT_08F
-	const EVENT_090
-	const EVENT_091
-	const EVENT_092
-	const EVENT_093
-	const EVENT_094
-	const EVENT_095
-	const EVENT_096
-	const EVENT_097
-	const EVENT_098
-	const EVENT_099
-	const EVENT_09A
-	const EVENT_09B
-	const EVENT_09C
-	const EVENT_09D
-	const EVENT_09E
-	const EVENT_09F
-	const EVENT_0A0
-	const EVENT_0A1
-	const EVENT_0A2
-	const EVENT_0A3
-	const EVENT_0A4
-	const EVENT_0A5
-	const EVENT_0A6
-	const EVENT_0A7
-	const EVENT_0A8
-	const EVENT_0A9
-	const EVENT_0AA
-	const EVENT_0AB
-	const EVENT_0AC
-	const EVENT_0AD
-	const EVENT_0AE
-	const EVENT_0AF
-	const EVENT_0B0
-	const EVENT_0B1
-	const EVENT_0B2
-	const EVENT_0B3
-	const EVENT_0B4
-	const EVENT_0B5
-	const EVENT_0B6
-	const EVENT_0B7
-	const EVENT_0B8
+	const EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL
+	const EVENT_OLIVINE_LIGHTHOUSE_5F_HIDDEN_HYPER_POTION
+	const EVENT_TEAM_ROCKET_BASE_B1F_HIDDEN_REVIVE
+	const EVENT_TEAM_ROCKET_BASE_B2F_HIDDEN_FULL_HEAL
+	const EVENT_ILEX_FOREST_HIDDEN_ETHER
+	const EVENT_ILEX_FOREST_HIDDEN_SUPER_POTION
+	const EVENT_ILEX_FOREST_HIDDEN_FULL_HEAL
+	const EVENT_WAREHOUSE_ENTRANCE_HIDDEN_PARLYZ_HEAL
+	const EVENT_WAREHOUSE_ENTRANCE_HIDDEN_SUPER_POTION
+	const EVENT_WAREHOUSE_ENTRANCE_HIDDEN_ANTIDOTE
+	const EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HIDDEN_MAX_POTION
+	const EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HIDDEN_REVIVE
+	const EVENT_MOUNT_MORTAR_1F_OUTSIDE_HIDDEN_HYPER_POTION
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_HIDDEN_MAX_REPEL
+	const EVENT_MOUNT_MORTAR_2F_INSIDE_HIDDEN_FULL_RESTORE
+	const EVENT_MOUNT_MORTAR_B1F_HIDDEN_MAX_REVIVE
+	const EVENT_ICE_PATH_B1F_HIDDEN_MAX_POTION
+	const EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_HIDDEN_CARBOS
+	const EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_HIDDEN_ICE_HEAL
+	const EVENT_WHIRL_ISLAND_B1F_HIDDEN_RARE_CANDY
+	const EVENT_WHIRL_ISLAND_B1F_HIDDEN_ULTRA_BALL
+	const EVENT_WHIRL_ISLAND_B1F_HIDDEN_FULL_RESTORE
+	const EVENT_SILVER_CAVE_ROOM_1_HIDDEN_DIRE_HIT
+	const EVENT_SILVER_CAVE_ROOM_1_HIDDEN_ULTRA_BALL
+	const EVENT_SILVER_CAVE_ROOM_2_HIDDEN_MAX_POTION
+	const EVENT_DARK_CAVE_VIOLET_ENTRANCE_HIDDEN_ELIXER
+	const EVENT_VICTORY_ROAD_HIDDEN_MAX_POTION
+	const EVENT_VICTORY_ROAD_HIDDEN_FULL_HEAL
+	const EVENT_DRAGONS_DEN_B1F_HIDDEN_REVIVE
+	const EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_POTION
+	const EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_ELIXER
+	const EVENT_ROUTE_28_HIDDEN_RARE_CANDY
+	const EVENT_ROUTE_30_HIDDEN_POTION
+	const EVENT_ROUTE_32_HIDDEN_GREAT_BALL
+	const EVENT_ROUTE_32_HIDDEN_SUPER_POTION
+	const EVENT_ROUTE_34_HIDDEN_RARE_CANDY
+	const EVENT_ROUTE_34_HIDDEN_SUPER_POTION
+	const EVENT_ROUTE_37_HIDDEN_ETHER
+	const EVENT_ROUTE_39_HIDDEN_NUGGET
+	const EVENT_ROUTE_40_HIDDEN_HYPER_POTION
+	const EVENT_ROUTE_41_HIDDEN_MAX_ETHER
+	const EVENT_ROUTE_42_HIDDEN_MAX_POTION
+	const EVENT_ROUTE_44_HIDDEN_ELIXER
+	const EVENT_ROUTE_45_HIDDEN_PP_UP
+	const EVENT_VIOLET_CITY_HIDDEN_HYPER_POTION
+	const EVENT_AZALEA_TOWN_HIDDEN_FULL_HEAL
+	const EVENT_CIANWOOD_CITY_HIDDEN_REVIVE
+	const EVENT_CIANWOOD_CITY_HIDDEN_MAX_ETHER
+	const EVENT_ECRUTEAK_CITY_HIDDEN_HYPER_POTION
+	const EVENT_LAKE_OF_RAGE_HIDDEN_FULL_RESTORE
+	const EVENT_LAKE_OF_RAGE_HIDDEN_RARE_CANDY
+	const EVENT_LAKE_OF_RAGE_HIDDEN_MAX_POTION
+	const EVENT_SILVER_CAVE_OUTSIDE_HIDDEN_FULL_RESTORE
+; Crystal-exclusive events in Johto
 	const EVENT_MET_FLORIA
-	const EVENT_0BA
+	const EVENT_TALKED_TO_FLORIA_AT_FLOWER_SHOP
 	const EVENT_BUGGING_KURT_TOO_MUCH
 	const EVENT_TALKED_TO_RUINS_COWARD
 	const EVENT_GOT_DRATINI
@@ -201,6 +205,7 @@
 	const EVENT_0C5
 	const EVENT_0C6
 	const EVENT_0C7
+; Kanto story events
 	const EVENT_GOT_NUGGET_FROM_GUY
 	const EVENT_RETURNED_MACHINE_PART
 	const EVENT_MET_MANAGER_AT_POWER_PLANT
@@ -229,39 +234,41 @@
 	const EVENT_TALKED_TO_OAK_IN_KANTO
 	const EVENT_GOT_HP_UP_FROM_VERMILION_GUY
 	const EVENT_GOT_TM29_PSYCHIC
-	const EVENT_0E4
-	const EVENT_0E5
-	const EVENT_0E6
-	const EVENT_0E7
-	const EVENT_0E8
-	const EVENT_0E9
-	const EVENT_0EA
-	const EVENT_0EB
-	const EVENT_0EC
-	const EVENT_0ED
-	const EVENT_0EE
-	const EVENT_0EF
-	const EVENT_0F0
-	const EVENT_0F1
-	const EVENT_0F2
-	const EVENT_0F3
-	const EVENT_0F4
-	const EVENT_0F5
-	const EVENT_0F6
-	const EVENT_0F7
-	const EVENT_0F8
+; Kanto Signpost Items
+	const EVENT_DIGLETTS_CAVE_HIDDEN_MAX_REVIVE
+	const EVENT_UNDERGROUND_HIDDEN_FULL_RESTORE
+	const EVENT_UNDERGROUND_HIDDEN_X_SPECIAL
+	const EVENT_ROCK_TUNNEL_1F_HIDDEN_X_ACCURACY
+	const EVENT_ROCK_TUNNEL_1F_HIDDEN_X_DEFEND
+	const EVENT_ROCK_TUNNEL_B1F_HIDDEN_MAX_POTION
+	const EVENT_OLIVINE_PORT_HIDDEN_PROTEIN
+	const EVENT_VERMILION_PORT_HIDDEN_IRON
+	const EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE
+	const EVENT_ROUTE_2_HIDDEN_MAX_ETHER
+	const EVENT_ROUTE_2_HIDDEN_FULL_HEAL
+	const EVENT_ROUTE_2_HIDDEN_FULL_RESTORE
+	const EVENT_ROUTE_2_HIDDEN_REVIVE
+	const EVENT_ROUTE_4_HIDDEN_ULTRA_BALL
+	const EVENT_ROUTE_9_HIDDEN_ETHER
+	const EVENT_ROUTE_12_HIDDEN_ELIXER
+	const EVENT_ROUTE_13_HIDDEN_CALCIUM
+	const EVENT_ROUTE_11_HIDDEN_REVIVE
+	const EVENT_ROUTE_17_HIDDEN_MAX_ETHER
+	const EVENT_ROUTE_17_HIDDEN_MAX_ELIXER
+	const EVENT_ROUTE_25_HIDDEN_POTION
 	const EVENT_FOUND_LEFTOVERS_IN_CELADON_CAFE
 	const EVENT_FOUND_BERSERK_GENE_IN_CERULEAN_CITY
 	const EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM
-	const EVENT_0FC
-	const EVENT_0FD
-	const EVENT_0FE
-	const EVENT_0FF
-	const EVENT_100
-	const EVENT_101
-	const EVENT_102
-	const EVENT_103
-	const EVENT_104
+	const EVENT_VERMILION_CITY_HIDDEN_FULL_HEAL
+	const EVENT_CELADON_CITY_HIDDEN_PP_UP
+	const EVENT_CINNABAR_ISLAND_HIDDEN_RARE_CANDY
+	const EVENT_BURNED_TOWER_1F_HIDDEN_ULTRA_BALL
+	const EVENT_GINA_GAVE_LEAF_STONE
+	const EVENT_ALAN_GAVE_FIRE_STONE
+	const EVENT_DANA_GAVE_THUNDERSTONE
+	const EVENT_TULLY_GAVE_WATER_STONE
+	const EVENT_TIFFANY_GAVE_PINK_BOW
+; ???
 	const EVENT_105
 	const EVENT_106
 	const EVENT_107
@@ -601,13 +608,15 @@
 	const EVENT_255
 	const EVENT_256
 	const EVENT_257
-	const EVENT_258
-	const EVENT_259
-	const EVENT_25A
-	const EVENT_25B
-	const EVENT_25C
-	const EVENT_25D
-	const EVENT_25E
+; Kurt events
+	const EVENT_GAVE_KURT_RED_APRICORN
+	const EVENT_GAVE_KURT_BLU_APRICORN
+	const EVENT_GAVE_KURT_YLW_APRICORN
+	const EVENT_GAVE_KURT_GRN_APRICORN
+	const EVENT_GAVE_KURT_WHT_APRICORN
+	const EVENT_GAVE_KURT_BLK_APRICORN
+	const EVENT_GAVE_KURT_PNK_APRICORN
+; Phone events
 	const EVENT_JACK_ASKED_FOR_PHONE_NUMBER
 	const EVENT_260
 	const EVENT_BEVERLY_ASKED_FOR_PHONE_NUMBER
@@ -619,7 +628,7 @@
 	const EVENT_GOT_CARBOS_FROM_VANCE
 	const EVENT_GOT_IRON_FROM_PARRY
 	const EVENT_GOT_CALCIUM_FROM_ERIN
-	const EVENT_26A
+	const EVENT_KENJI_ON_BREAK
 	const EVENT_GAVEN_ASKED_FOR_PHONE_NUMBER
 	const EVENT_26C
 	const EVENT_BETH_ASKED_FOR_PHONE_NUMBER
@@ -641,7 +650,7 @@
 	const EVENT_TODD_ASKED_FOR_PHONE_NUMBER
 	const EVENT_27E
 	const EVENT_GINA_ASKED_FOR_PHONE_NUMBER
-	const EVENT_280
+	const EVENT_280 ; 280
 	const EVENT_IRWIN_ASKED_FOR_PHONE_NUMBER
 	const EVENT_282
 	const EVENT_ARNIE_ASKED_FOR_PHONE_NUMBER
@@ -657,7 +666,7 @@
 	const EVENT_DEREK_ASKED_FOR_PHONE_NUMBER
 	const EVENT_28E
 	const EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
-	const EVENT_290
+	const EVENT_290 ; 290
 	const EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
 	const EVENT_292
 	const EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
@@ -673,57 +682,60 @@
 	const EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
 	const EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	const EVENT_29F
-	const EVENT_2A0
-	const EVENT_2A1
-	const EVENT_2A2
-	const EVENT_2A3
-	const EVENT_2A4
-	const EVENT_2A5
-	const EVENT_2A6
-	const EVENT_2A7
-	const EVENT_2A8
-	const EVENT_2A9
-	const EVENT_2AA
-	const EVENT_2AB
-	const EVENT_2AC
-	const EVENT_2AD
-	const EVENT_2AE
-	const EVENT_2AF
-	const EVENT_2B0
-	const EVENT_2B1
-	const EVENT_2B2
-	const EVENT_2B3
-	const EVENT_2B4
-	const EVENT_2B5
-	const EVENT_2B6
-	const EVENT_2B7
-	const EVENT_2B8
-	const EVENT_2B9
-	const EVENT_2BA
-	const EVENT_2BB
-	const EVENT_2BC
-	const EVENT_2BD
-	const EVENT_2BE
-	const EVENT_2BF
-	const EVENT_2C0
-	const EVENT_2C1
-	const EVENT_2C2
-	const EVENT_2C3
-	const EVENT_2C4
-	const EVENT_2C5
-	const EVENT_2C6
-	const EVENT_2C7
-	const EVENT_2C8
-	const EVENT_2C9
-	const EVENT_2CA
-	const EVENT_2CB
-	const EVENT_2CC
-	const EVENT_2CD
-	const EVENT_2CE
-	const EVENT_2CF
-	const EVENT_2D0
-	const EVENT_2D1
-	const EVENT_2D2
+; Ruins Of Alph puzzles
+	const EVENT_SOLVED_HO_OH_PUZZLE ; 2a0
+	const EVENT_SOLVED_KABUTO_PUZZLE
+	const EVENT_SOLVED_OMANYTE_PUZZLE
+	const EVENT_SOLVED_AERODACTYL_PUZZLE
+; Decorations
+	const EVENT_DECO_BED_1
+	const EVENT_DECO_BED_2
+	const EVENT_DECO_BED_3
+	const EVENT_DECO_BED_4
+	const EVENT_DECO_CARPET_1
+	const EVENT_DECO_CARPET_2
+	const EVENT_DECO_CARPET_3
+	const EVENT_DECO_CARPET_4
+	const EVENT_DECO_PLANT_1
+	const EVENT_DECO_PLANT_2
+	const EVENT_DECO_PLANT_3
+	const EVENT_DECO_PLANT_4
+	const EVENT_DECO_POSTER_1 ; 2b0
+	const EVENT_DECO_POSTER_2
+	const EVENT_DECO_POSTER_3
+	const EVENT_DECO_FAMICOM
+	const EVENT_DECO_SNES
+	const EVENT_DECO_N64
+	const EVENT_DECO_VIRTUAL_BOY
+	const EVENT_DECO_PIKACHU_DOLL
+	const EVENT_DECO_SURFING_PIKACHU_DOLL
+	const EVENT_DECO_CLEFAIRY_DOLL
+	const EVENT_DECO_JIGGLYPUFF_DOLL
+	const EVENT_DECO_BULBASAUR_DOLL
+	const EVENT_DECO_CHARMANDER_DOLL
+	const EVENT_DECO_SQUIRTLE_DOLL
+	const EVENT_DECO_POLIWAG_DOLL
+	const EVENT_DECO_DIGLETT_DOLL
+	const EVENT_DECO_STARMIE_DOLL ; 2c0
+	const EVENT_DECO_MAGIKARP_DOLL
+	const EVENT_DECO_ODDISH_DOLL
+	const EVENT_DECO_GENGAR_DOLL
+	const EVENT_DECO_SHELLDER_DOLL
+	const EVENT_DECO_GRIMER_DOLL
+	const EVENT_DECO_VOLTORB_DOLL
+	const EVENT_DECO_WEEDLE_DOLL
+	const EVENT_DECO_UNOWN_DOLL
+	const EVENT_DECO_GEODUDE_DOLL
+	const EVENT_DECO_MACHOP_DOLL
+	const EVENT_DECO_TENTACOOL_DOLL
+	const EVENT_KRISS_ROOM_POSTER
+	const EVENT_DECO_GOLD_TROPHY
+	const EVENT_DECO_SILVER_TROPHY
+	const EVENT_DECO_BIG_SNORLAX_DOLL
+	const EVENT_DECO_BIG_ONIX_DOLL ; 2d0
+	const EVENT_DECO_BIG_LAPRAS_DOLL
+; More Johto events
+	const EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
 	const EVENT_SWITCH_1
 	const EVENT_SWITCH_2
 	const EVENT_SWITCH_3
@@ -737,7 +749,7 @@
 	const EVENT_SWITCH_10
 	const EVENT_SWITCH_11
 	const EVENT_SWITCH_12
-	const EVENT_SWITCH_13
+	const EVENT_SWITCH_13 ; 2e0
 	const EVENT_SWITCH_14
 	const EVENT_UNCOVERED_STAIRCASE_IN_MAHOGANY_MART
 	const EVENT_TURNED_OFF_SECURITY_CAMERAS
@@ -753,7 +765,7 @@
 	const EVENT_EXPLODING_TRAP_5
 	const EVENT_EXPLODING_TRAP_6
 	const EVENT_EXPLODING_TRAP_7
-	const EVENT_EXPLODING_TRAP_8
+	const EVENT_EXPLODING_TRAP_8 ; 2f0
 	const EVENT_EXPLODING_TRAP_9
 	const EVENT_EXPLODING_TRAP_10
 	const EVENT_EXPLODING_TRAP_11
@@ -769,7 +781,7 @@
 	const EVENT_EXPLODING_TRAP_21
 	const EVENT_EXPLODING_TRAP_22
 	const EVENT_LEARNED_HAIL_GIOVANNI
-	const EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
+	const EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER ; 300
 	const EVENT_LEARNED_SLOWPOKETAIL
 	const EVENT_LEARNED_RATICATE_TAIL
 	const EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
@@ -777,21 +789,21 @@
 	const EVENT_WAREHOUSE_LAYOUT_2
 	const EVENT_WAREHOUSE_LAYOUT_3
 	const EVENT_WAREHOUSE_BLOCKED_OFF
-	const EVENT_308
-	const EVENT_309
-	const EVENT_WILLS_ROOM_EXIT_OPEN
+	const EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	const EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	const EVENT_KOGAS_ROOM_EXIT_OPEN
+	const EVENT_WILLS_ROOM_EXIT_OPEN
 	const EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	const EVENT_KOGAS_ROOM_EXIT_OPEN
+	const EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	const EVENT_BRUNOS_ROOM_EXIT_OPEN
 	const EVENT_KARENS_ROOM_ENTRANCE_CLOSED
-	const EVENT_KARENS_ROOM_EXIT_OPEN
+	const EVENT_KARENS_ROOM_EXIT_OPEN ; 310
 	const EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	const EVENT_312
-	const EVENT_313
-	const EVENT_314
-	const EVENT_315
-	const EVENT_316
+	const EVENT_LANCES_ROOM_EXIT_OPEN
+	const EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+	const EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+	const EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+	const EVENT_CONTEST_OFFICER_HAS_BERRY
 	const EVENT_FOUGHT_HO_OH
 	const EVENT_FOUGHT_LUGIA
 	const EVENT_BEAT_RIVAL_IN_MT_MOON
@@ -801,11 +813,12 @@
 	const EVENT_SHOWED_STARYU_TO_BILLS_GRANDPA
 	const EVENT_SHOWED_GROWLITHE_VULPIX_TO_BILLS_GRANDPA
 	const EVENT_SHOWED_PICHU_TO_BILLS_GRANDPA
-	const EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
+	const EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA ; 320
 	const EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
 	const EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
 	const EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
 	const EVENT_GOT_THUNDERSTONE_FROM_BILLS_GRANDPA
+; More Crystal-specific events
 	const EVENT_LISTENED_TO_INITIAL_RADIO
 	const EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
 	const EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
@@ -834,6 +847,7 @@
 	const EVENT_GOT_ODD_EGG
 	const EVENT_33F
 	const EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
+; ???
 	const EVENT_341
 	const EVENT_342
 	const EVENT_343
@@ -1001,6 +1015,8 @@
 	const EVENT_3E5
 	const EVENT_3E6
 	const EVENT_3E7
+; Trainer Flags
+; Swimmer F
 	const EVENT_BEAT_SWIMMERF_ELAINE
 	const EVENT_BEAT_SWIMMERF_PAULA
 	const EVENT_BEAT_SWIMMERF_KAYLEE
@@ -1008,18 +1024,19 @@
 	const EVENT_BEAT_SWIMMERF_DENISE
 	const EVENT_BEAT_SWIMMERF_KARA
 	const EVENT_BEAT_SWIMMERF_WENDY
-	const EVENT_3EF
-	const EVENT_3F0
-	const EVENT_3F1
-	const EVENT_3F2
+	const EVENT_BEAT_SWIMMERF_LISA
+	const EVENT_BEAT_SWIMMERF_JILL
+	const EVENT_BEAT_SWIMMERF_MARY
+	const EVENT_BEAT_SWIMMERF_KATIE
 	const EVENT_BEAT_SWIMMERF_DAWN
-	const EVENT_3F4
+	const EVENT_BEAT_SWIMMERF_TARA
 	const EVENT_BEAT_SWIMMERF_NICOLE
 	const EVENT_BEAT_SWIMMERF_LORI
-	const EVENT_3F7
+	const EVENT_BEAT_SWIMMERF_JODY
 	const EVENT_BEAT_SWIMMERF_NIKKI
 	const EVENT_BEAT_SWIMMERF_DIANA
 	const EVENT_BEAT_SWIMMERF_BRIANA
+; Bird Keeper
 	const EVENT_BEAT_BIRD_KEEPER_ROD
 	const EVENT_BEAT_BIRD_KEEPER_ABE
 	const EVENT_BEAT_BIRD_KEEPER_BRYAN
@@ -1031,17 +1048,19 @@
 	const EVENT_BEAT_BIRD_KEEPER_ROY
 	const EVENT_BEAT_BIRD_KEEPER_BORIS
 	const EVENT_BEAT_BIRD_KEEPER_BOB
-	const EVENT_406
-	const EVENT_BEAT_BIRD_KEEPER_PETER
 	const EVENT_BEAT_BIRD_KEEPER_JOSE
+	const EVENT_BEAT_BIRD_KEEPER_PETER
+	const EVENT_BEAT_BIRD_KEEPER_JOSE2
 	const EVENT_BEAT_BIRD_KEEPER_PERRY
 	const EVENT_BEAT_BIRD_KEEPER_BRET
-	const EVENT_40B
-	const EVENT_40C
-	const EVENT_40D
+	const EVENT_BEAT_BIRD_KEEPER_JOSE3
+	const EVENT_BEAT_BIRD_KEEPER_VANCE2
+	const EVENT_BEAT_BIRD_KEEPER_VANCE3
+; Boarder
 	const EVENT_BEAT_BOARDER_RONALD
 	const EVENT_BEAT_BOARDER_BRAD
 	const EVENT_BEAT_BOARDER_DOUGLAS
+; Sage
 	const EVENT_BEAT_SAGE_CHOW
 	const EVENT_BEAT_SAGE_NICO
 	const EVENT_BEAT_SAGE_JIN
@@ -1051,6 +1070,7 @@
 	const EVENT_BEAT_SAGE_EDMOND
 	const EVENT_BEAT_SAGE_NEAL
 	const EVENT_BEAT_SAGE_LI
+; Camper
 	const EVENT_BEAT_CAMPER_ROLAND
 	const EVENT_BEAT_CAMPER_TODD
 	const EVENT_BEAT_CAMPER_IVAN
@@ -1059,23 +1079,26 @@
 	const EVENT_BEAT_CAMPER_LLOYD
 	const EVENT_BEAT_CAMPER_DEAN
 	const EVENT_BEAT_CAMPER_SID
-	const EVENT_422
-	const EVENT_423
+	const EVENT_BEAT_CAMPER_HERVEY
+	const EVENT_BEAT_CAMPER_DALE
 	const EVENT_BEAT_CAMPER_TED
-	const EVENT_425
-	const EVENT_426
-	const EVENT_427
-	const EVENT_428
-	const EVENT_429
-	const EVENT_42A
+	const EVENT_BEAT_CAMPER_TODD2
+	const EVENT_BEAT_CAMPER_TODD3
+	const EVENT_BEAT_CAMPER_THOMAS
+	const EVENT_BEAT_CAMPER_LEROY
+	const EVENT_BEAT_CAMPER_DAVID
+	const EVENT_BEAT_CAMPER_JOHN
 	const EVENT_BEAT_CAMPER_JERRY
 	const EVENT_BEAT_CAMPER_SPENCER
+; Burglar
 	const EVENT_BEAT_BURGLAR_DUNCAN
 	const EVENT_BEAT_BURGLAR_EDDIE
 	const EVENT_BEAT_BURGLAR_COREY
+; Unknown
 	const EVENT_430
-	const EVENT_431
-	const EVENT_432
+; Biker
+	const EVENT_BEAT_BIKER_BENNY
+	const EVENT_BEAT_BIKER_KAZU
 	const EVENT_BEAT_BIKER_DWAYNE
 	const EVENT_BEAT_BIKER_HARRIS
 	const EVENT_BEAT_BIKER_ZEKE
@@ -1083,6 +1106,7 @@
 	const EVENT_BEAT_BIKER_RILEY
 	const EVENT_BEAT_BIKER_JOEL
 	const EVENT_BEAT_BIKER_GLENN
+; Psychic
 	const EVENT_BEAT_PSYCHIC_NATHAN
 	const EVENT_BEAT_PSYCHIC_FRANKLIN
 	const EVENT_BEAT_PSYCHIC_HERMAN
@@ -1095,14 +1119,16 @@
 	const EVENT_BEAT_PSYCHIC_GILBERT
 	const EVENT_BEAT_PSYCHIC_JARED
 	const EVENT_BEAT_PSYCHIC_RODNEY
+; Firebreather
 	const EVENT_BEAT_FIREBREATHER_OTIS
-	const EVENT_447
-	const EVENT_448
+	const EVENT_BEAT_FIREBREATHER_DICK
+	const EVENT_BEAT_FIREBREATHER_NED
 	const EVENT_BEAT_FIREBREATHER_BURT
 	const EVENT_BEAT_FIREBREATHER_BILL
 	const EVENT_BEAT_FIREBREATHER_WALT
 	const EVENT_BEAT_FIREBREATHER_RAY
 	const EVENT_BEAT_FIREBREATHER_LYLE
+; Fisher
 	const EVENT_BEAT_FISHER_JUSTIN
 	const EVENT_BEAT_FISHER_RALPH
 	const EVENT_BEAT_FISHER_ARNOLD
@@ -1118,21 +1144,23 @@
 	const EVENT_BEAT_FISHER_MARTIN
 	const EVENT_BEAT_FISHER_STEPHEN
 	const EVENT_BEAT_FISHER_BARNEY
-	const EVENT_45D
-	const EVENT_45E
-	const EVENT_45F
-	const EVENT_460
-	const EVENT_461
+	const EVENT_BEAT_FISHER_RALPH2
+	const EVENT_BEAT_FISHER_RALPH3
+	const EVENT_BEAT_FISHER_TULLY2
+	const EVENT_BEAT_FISHER_TULLY3
+	const EVENT_BEAT_FISHER_WILTON2
 	const EVENT_BEAT_FISHER_SCOTT
-	const EVENT_463
+	const EVENT_BEAT_FISHER_WILTON3
+; Twins
 	const EVENT_BEAT_TWINS_AMY_AND_MAY
 	const EVENT_BEAT_TWINS_ANN_AND_ANNE
-	const EVENT_466
-	const EVENT_467
+	const EVENT_BEAT_TWINS_ANN_AND_ANNE2
+	const EVENT_BEAT_TWINS_AMY_AND_MAY2
 	const EVENT_BEAT_TWINS_JO_AND_ZOE
-	const EVENT_469
+	const EVENT_BEAT_TWINS_JO_AND_ZOE2
 	const EVENT_BEAT_TWINS_MEG_AND_PEG
-	const EVENT_46B
+	const EVENT_BEAT_TWINS_MEG_AND_PEG2
+; Schoolboy
 	const EVENT_BEAT_SCHOOLBOY_JACK
 	const EVENT_BEAT_SCHOOLBOY_KIP
 	const EVENT_BEAT_SCHOOLBOY_ALAN
@@ -1145,12 +1173,13 @@
 	const EVENT_BEAT_SCHOOLBOY_CHAD
 	const EVENT_BEAT_SCHOOLBOY_NATE
 	const EVENT_BEAT_SCHOOLBOY_RICKY
-	const EVENT_478
-	const EVENT_479
-	const EVENT_47A
-	const EVENT_47B
-	const EVENT_47C
-	const EVENT_47D
+	const EVENT_BEAT_SCHOOLBOY_JACK2
+	const EVENT_BEAT_SCHOOLBOY_JACK3
+	const EVENT_BEAT_SCHOOLBOY_ALAN2
+	const EVENT_BEAT_SCHOOLBOY_ALAN3
+	const EVENT_BEAT_SCHOOLBOY_CHAD2
+	const EVENT_BEAT_SCHOOLBOY_CHAD3
+; Picnicker
 	const EVENT_BEAT_PICNICKER_LIZ
 	const EVENT_BEAT_PICNICKER_GINA
 	const EVENT_BEAT_PICNICKER_BROOKE
@@ -1159,39 +1188,44 @@
 	const EVENT_BEAT_PICNICKER_HOPE
 	const EVENT_BEAT_PICNICKER_SHARON
 	const EVENT_BEAT_PICNICKER_DEBRA
-	const EVENT_486
+	const EVENT_BEAT_PICNICKER_GINA2
 	const EVENT_BEAT_PICNICKER_ERIN
-	const EVENT_488
-	const EVENT_489
+	const EVENT_BEAT_PICNICKER_LIZ2
+	const EVENT_BEAT_PICNICKER_LIZ3
 	const EVENT_BEAT_PICNICKER_HEIDI
 	const EVENT_BEAT_PICNICKER_EDNA
-	const EVENT_48C
-	const EVENT_48D
-	const EVENT_48E
-	const EVENT_48F
+	const EVENT_BEAT_PICNICKER_GINA3
+	const EVENT_BEAT_PICNICKER_TIFFANY2
+	const EVENT_BEAT_PICNICKER_TIFFANY3
+	const EVENT_BEAT_PICNICKER_ERIN2
 	const EVENT_BEAT_PICNICKER_TANYA
 	const EVENT_BEAT_PICNICKER_TIFFANY
-	const EVENT_492
+	const EVENT_BEAT_PICNICKER_ERIN3
+; Guitarist
 	const EVENT_BEAT_GUITARIST_CLYDE
 	const EVENT_BEAT_GUITARIST_VINCENT
+; Juggler
 	const EVENT_BEAT_JUGGLER_IRWIN
 	const EVENT_BEAT_JUGGLER_FRITZ
 	const EVENT_BEAT_JUGGLER_HORTON
-	const EVENT_498
-	const EVENT_499
+	const EVENT_BEAT_JUGGLER_IRWIN2
+	const EVENT_BEAT_JUGGLER_IRWIN3
+; Gentleman
 	const EVENT_BEAT_GENTLEMAN_PRESTON
 	const EVENT_BEAT_GENTLEMAN_EDWARD
 	const EVENT_BEAT_GENTLEMAN_GREGORY
-	const EVENT_49D
+	const EVENT_BEAT_GENTLEMAN_VIRGIL
 	const EVENT_BEAT_GENTLEMAN_ALFRED
+; Scientist
 	const EVENT_BEAT_SCIENTIST_ROSS
 	const EVENT_BEAT_SCIENTIST_MITCH
 	const EVENT_BEAT_SCIENTIST_JED
 	const EVENT_BEAT_SCIENTIST_MARC
 	const EVENT_BEAT_SCIENTIST_RICH
-	const EVENT_4A4
+; Blackbelt
+	const EVENT_BEAT_BLACKBELT_KENJI2
 	const EVENT_BEAT_BLACKBELT_YOSHI
-	const EVENT_4A6
+	const EVENT_BEAT_BLACKBELT_KENJI3
 	const EVENT_BEAT_BLACKBELT_LAO
 	const EVENT_BEAT_BLACKBELT_NOB
 	const EVENT_BEAT_BLACKBELT_KIYO
@@ -1198,22 +1232,24 @@
 	const EVENT_BEAT_BLACKBELT_LUNG
 	const EVENT_BEAT_BLACKBELT_KENJI
 	const EVENT_BEAT_BLACKBELT_WAI
+; Beauti
 	const EVENT_BEAT_BEAUTY_VICTORIA
 	const EVENT_BEAT_BEAUTY_SAMANTHA
-	const EVENT_4AF
-	const EVENT_4B0
-	const EVENT_4B1
+	const EVENT_BEAT_BEAUTY_JULIE
+	const EVENT_BEAT_BEAUTY_JACLYN
+	const EVENT_BEAT_BEAUTY_BRENDA
 	const EVENT_BEAT_BEAUTY_CASSIE
-	const EVENT_4B3
-	const EVENT_4B4
-	const EVENT_4B5
-	const EVENT_4B6
-	const EVENT_4B7
-	const EVENT_4B8
-	const EVENT_4B9
+	const EVENT_BEAT_BEAUTY_CAROLINE
+	const EVENT_BEAT_BEAUTY_CARLENE
+	const EVENT_BEAT_BEAUTY_JESSICA
+	const EVENT_BEAT_BEAUTY_RACHAEL
+	const EVENT_BEAT_BEAUTY_ANGELICA
+	const EVENT_BEAT_BEAUTY_KENDRA
+	const EVENT_BEAT_BEAUTY_VERONICA
 	const EVENT_BEAT_BEAUTY_JULIA
-	const EVENT_4BB
+	const EVENT_BEAT_BEAUTY_THERESA
 	const EVENT_BEAT_BEAUTY_VALERIE
+; Johto Gym Leaders
 	const EVENT_BEAT_FALKNER
 	const EVENT_BEAT_BUGSY
 	const EVENT_BEAT_WHITNEY
@@ -1222,6 +1258,7 @@
 	const EVENT_BEAT_CHUCK
 	const EVENT_BEAT_PRYCE
 	const EVENT_BEAT_CLAIR
+; Kanto Gym Leaders
 	const EVENT_BEAT_BROCK
 	const EVENT_BEAT_MISTY
 	const EVENT_BEAT_LTSURGE
@@ -1230,6 +1267,7 @@
 	const EVENT_BEAT_SABRINA
 	const EVENT_BEAT_BLAINE
 	const EVENT_BEAT_BLUE
+; PokefanM
 	const EVENT_BEAT_POKEFANM_WILLIAM
 	const EVENT_BEAT_POKEFANM_DEREK
 	const EVENT_BEAT_POKEFANM_ROBERT
@@ -1239,20 +1277,24 @@
 	const EVENT_BEAT_POKEFANM_BRANDON
 	const EVENT_BEAT_POKEFANM_JEREMY
 	const EVENT_BEAT_POKEFANM_COLIN
-	const EVENT_4D6
-	const EVENT_4D7
+	const EVENT_BEAT_POKEFANM_DEREK2
+	const EVENT_BEAT_POKEFANM_DEREK3
 	const EVENT_BEAT_POKEFANM_ALEX
+; PokefanF
 	const EVENT_BEAT_POKEFANF_BEVERLY
 	const EVENT_BEAT_POKEFANF_RUTH
-	const EVENT_4DB
-	const EVENT_4DC
+	const EVENT_BEAT_POKEFANF_BEVERLY2
+	const EVENT_BEAT_POKEFANF_BEVERLY3
 	const EVENT_BEAT_POKEFANF_GEORGIA
+; Unknown
 	const EVENT_4DE
+; Kimono Girl
 	const EVENT_BEAT_KIMONO_GIRL_NAOKO
 	const EVENT_BEAT_KIMONO_GIRL_SAYO
 	const EVENT_BEAT_KIMONO_GIRL_ZUKI
 	const EVENT_BEAT_KIMONO_GIRL_KUNI
 	const EVENT_BEAT_KIMONO_GIRL_MIKI
+; Pokemaniac
 	const EVENT_BEAT_POKEMANIAC_LARRY
 	const EVENT_BEAT_POKEMANIAC_ANDREW
 	const EVENT_BEAT_POKEMANIAC_CALVIN
@@ -1261,11 +1303,12 @@
 	const EVENT_BEAT_POKEMANIAC_BRENT
 	const EVENT_BEAT_POKEMANIAC_RON
 	const EVENT_BEAT_POKEMANIAC_ETHAN
-	const EVENT_4EC
-	const EVENT_4ED
+	const EVENT_BEAT_POKEMANIAC_BRENT2
+	const EVENT_BEAT_POKEMANIAC_BRENT3
 	const EVENT_BEAT_POKEMANIAC_ISSAC
 	const EVENT_BEAT_POKEMANIAC_DONALD
 	const EVENT_BEAT_POKEMANIAC_ZACH
+; GruntM
 	const EVENT_BEAT_ROCKET_GRUNTM_1
 	const EVENT_BEAT_ROCKET_GRUNTM_2
 	const EVENT_BEAT_ROCKET_GRUNTM_3
@@ -1277,7 +1320,6 @@
 	const EVENT_BEAT_ROCKET_GRUNTM_9
 	const EVENT_BEAT_ROCKET_GRUNTM_10
 	const EVENT_BEAT_ROCKET_GRUNTM_11
-	const EVENT_4FC
 	const EVENT_BEAT_ROCKET_GRUNTM_12
 	const EVENT_BEAT_ROCKET_GRUNTM_13
 	const EVENT_BEAT_ROCKET_GRUNTM_14
@@ -1285,23 +1327,26 @@
 	const EVENT_BEAT_ROCKET_GRUNTM_16
 	const EVENT_BEAT_ROCKET_GRUNTM_17
 	const EVENT_BEAT_ROCKET_GRUNTM_18
-	const EVENT_504
-	const EVENT_505
-	const EVENT_506
-	const EVENT_507
 	const EVENT_BEAT_ROCKET_GRUNTM_19
 	const EVENT_BEAT_ROCKET_GRUNTM_20
-	const EVENT_50A
-	const EVENT_50B
 	const EVENT_BEAT_ROCKET_GRUNTM_21
 	const EVENT_BEAT_ROCKET_GRUNTM_22
-	const EVENT_50E
-	const EVENT_50F
+	const EVENT_BEAT_ROCKET_GRUNTM_23
+	const EVENT_BEAT_ROCKET_GRUNTM_24
+	const EVENT_BEAT_ROCKET_GRUNTM_25
+	const EVENT_BEAT_ROCKET_GRUNTM_26
+	const EVENT_BEAT_ROCKET_GRUNTM_27
+	const EVENT_BEAT_ROCKET_GRUNTM_28
+	const EVENT_BEAT_ROCKET_GRUNTM_29
+	const EVENT_BEAT_ROCKET_GRUNTM_30
+	const EVENT_BEAT_ROCKET_GRUNTM_31
+; GruntF
 	const EVENT_BEAT_ROCKET_GRUNTF_1
 	const EVENT_BEAT_ROCKET_GRUNTF_2
 	const EVENT_BEAT_ROCKET_GRUNTF_3
 	const EVENT_BEAT_ROCKET_GRUNTF_4
 	const EVENT_BEAT_ROCKET_GRUNTF_5
+; Lass
 	const EVENT_BEAT_LASS_CARRIE
 	const EVENT_BEAT_LASS_BRIDGET
 	const EVENT_BEAT_LASS_ALICE
@@ -1313,11 +1358,12 @@
 	const EVENT_BEAT_LASS_MICHELLE
 	const EVENT_BEAT_LASS_DANA
 	const EVENT_BEAT_LASS_ELLEN
-	const EVENT_520
-	const EVENT_521
-	const EVENT_522
-	const EVENT_523
-	const EVENT_524
+	const EVENT_BEAT_LASS_CONNIE2
+	const EVENT_BEAT_LASS_CONNIE3
+	const EVENT_BEAT_LASS_DANA2
+	const EVENT_BEAT_LASS_DANA3
+; Hiker
+	const EVENT_BEAT_HIKER_ANTHONY2
 	const EVENT_BEAT_HIKER_RUSSELL
 	const EVENT_BEAT_HIKER_PHILLIP
 	const EVENT_BEAT_HIKER_LEONARD
@@ -1328,7 +1374,7 @@
 	const EVENT_BEAT_HIKER_PARRY
 	const EVENT_BEAT_HIKER_TIMOTHY
 	const EVENT_BEAT_HIKER_BAILEY
-	const EVENT_52F
+	const EVENT_BEAT_HIKER_ANTHONY3
 	const EVENT_BEAT_HIKER_TIM
 	const EVENT_BEAT_HIKER_NOLAND
 	const EVENT_BEAT_HIKER_SIDNEY
@@ -1335,8 +1381,9 @@
 	const EVENT_BEAT_HIKER_KENNY
 	const EVENT_BEAT_HIKER_JIM
 	const EVENT_BEAT_HIKER_DANIEL
-	const EVENT_536
-	const EVENT_537
+	const EVENT_BEAT_HIKER_PARRY2
+	const EVENT_BEAT_HIKER_PARRY3
+; Bug Catcher
 	const EVENT_BEAT_BUG_CATCHER_DON
 	const EVENT_BEAT_BUG_CATCHER_ROB
 	const EVENT_BEAT_BUG_CATCHER_ED
@@ -1346,32 +1393,35 @@
 	const EVENT_BEAT_BUG_CATCHER_JOSH
 	const EVENT_BEAT_BUG_CATCHER_ARNIE
 	const EVENT_BEAT_BUG_CATCHER_KEN
-	const EVENT_541
-	const EVENT_542
+	const EVENT_BEAT_BUG_CATCHER_WADE2
+	const EVENT_BEAT_BUG_CATCHER_WADE3
 	const EVENT_BEAT_BUG_CATCHER_DOUG
-	const EVENT_544
-	const EVENT_545
+	const EVENT_BEAT_BUG_CATCHER_ARNIE2
+	const EVENT_BEAT_BUG_CATCHER_ARNIE3
+; Officer
 	const EVENT_BEAT_OFFICER_KEITH
 	const EVENT_BEAT_OFFICER_DIRK
+; CooltrainerM
 	const EVENT_BEAT_COOLTRAINERM_NICK
 	const EVENT_BEAT_COOLTRAINERM_AARON
 	const EVENT_BEAT_COOLTRAINERM_PAUL
 	const EVENT_BEAT_COOLTRAINERM_CODY
 	const EVENT_BEAT_COOLTRAINERM_MIKE
-	const EVENT_54D
-	const EVENT_54E
+	const EVENT_BEAT_COOLTRAINERM_GAVEN2
+	const EVENT_BEAT_COOLTRAINERM_GAVEN3
 	const EVENT_BEAT_COOLTRAINERM_RYAN
 	const EVENT_BEAT_COOLTRAINERM_JAKE
 	const EVENT_BEAT_COOLTRAINERM_GAVEN
 	const EVENT_BEAT_COOLTRAINERM_BLAKE
 	const EVENT_BEAT_COOLTRAINERM_BRIAN
-	const EVENT_554
-	const EVENT_555
-	const EVENT_556
+	const EVENT_BEAT_COOLTRAINERM_ERICK
+	const EVENT_BEAT_COOLTRAINERM_ANDY
+	const EVENT_BEAT_COOLTRAINERM_TYLER
 	const EVENT_BEAT_COOLTRAINERM_SEAN
 	const EVENT_BEAT_COOLTRAINERM_KEVIN
-	const EVENT_559
+	const EVENT_BEAT_COOLTRAINERM_STEVE
 	const EVENT_BEAT_COOLTRAINERM_ALLEN
+; CooltrainerF
 	const EVENT_BEAT_COOLTRAINERF_GWEN
 	const EVENT_BEAT_COOLTRAINERF_LOIS
 	const EVENT_BEAT_COOLTRAINERF_FRAN
@@ -1383,21 +1433,24 @@
 	const EVENT_BEAT_COOLTRAINERF_BETH
 	const EVENT_BEAT_COOLTRAINERF_REENA
 	const EVENT_BEAT_COOLTRAINERF_MEGAN
-	const EVENT_566
+	const EVENT_BEAT_COOLTRAINERF_BETH2
 	const EVENT_BEAT_COOLTRAINERF_CAROL
 	const EVENT_BEAT_COOLTRAINERF_QUINN
 	const EVENT_BEAT_COOLTRAINERF_EMMA
 	const EVENT_BEAT_COOLTRAINERF_CYBIL
 	const EVENT_BEAT_COOLTRAINERF_JENN
-	const EVENT_56C
-	const EVENT_56D
-	const EVENT_56E
+	const EVENT_BEAT_COOLTRAINERF_BETH3
+	const EVENT_BEAT_COOLTRAINERF_REENA2
+	const EVENT_BEAT_COOLTRAINERF_REENA3
+; ExecutiveF
 	const EVENT_BEAT_ROCKET_EXECUTIVEF_1
 	const EVENT_BEAT_ROCKET_EXECUTIVEF_2
+; ExecutiveM
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_1
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_2
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_3
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_4
+; Sailor
 	const EVENT_BEAT_SAILOR_EUGENE
 	const EVENT_BEAT_SAILOR_HUEY
 	const EVENT_BEAT_SAILOR_TERRELL
@@ -1408,27 +1461,31 @@
 	const EVENT_BEAT_SAILOR_KENNETH
 	const EVENT_BEAT_SAILOR_STANLY
 	const EVENT_BEAT_SAILOR_HARRY
-	const EVENT_57F
-	const EVENT_580
+	const EVENT_BEAT_SAILOR_HUEY2
+	const EVENT_BEAT_SAILOR_HUEY3
+; Super Nerd
 	const EVENT_BEAT_SUPER_NERD_STAN
 	const EVENT_BEAT_SUPER_NERD_ERIC
-	const EVENT_583
-	const EVENT_584
-	const EVENT_585
+	const EVENT_BEAT_SUPER_NERD_GREGG
+	const EVENT_BEAT_SUPER_NERD_JAY
+	const EVENT_BEAY_SUPER_NERD_DAVE
 	const EVENT_BEAT_SUPER_NERD_SAM
 	const EVENT_BEAT_SUPER_NERD_TOM
 	const EVENT_BEAT_SUPER_NERD_PAT
 	const EVENT_BEAT_SUPER_NERD_SHAWN
 	const EVENT_BEAT_SUPER_NERD_TERU
+; Medium
 	const EVENT_BEAT_MEDIUM_MARTHA
 	const EVENT_BEAT_MEDIUM_GRACE
-	const EVENT_58D
-	const EVENT_58E
-	const EVENT_58F
+	const EVENT_BEAT_MEDIUM_BETHANY
+	const EVENT_BEAT_MEDIUM_MARGRET
+	const EVENT_BEAT_MEDIUM_ETHEL
 	const EVENT_BEAT_MEDIUM_REBECCA
 	const EVENT_BEAT_MEDIUM_DORIS
+; Skier
 	const EVENT_BEAT_SKIER_ROXANNE
 	const EVENT_BEAT_SKIER_CLARISSA
+; SwimmerM
 	const EVENT_BEAT_SWIMMERM_HAROLD
 	const EVENT_BEAT_SWIMMERM_SIMON
 	const EVENT_BEAT_SWIMMERM_RANDALL
@@ -1437,19 +1494,20 @@
 	const EVENT_BEAT_SWIMMERM_BERKE
 	const EVENT_BEAT_SWIMMERM_KIRK
 	const EVENT_BEAT_SWIMMERM_MATHEW
-	const EVENT_59C
-	const EVENT_59D
-	const EVENT_59E
-	const EVENT_59F
-	const EVENT_5A0
+	const EVENT_BEAT_SWIMMERM_HAL
+	const EVENT_BEAT_SWIMMERM_PATON
+	const EVENT_BEAT_SWIMMERM_DARYL
+	const EVENT_BEAT_SWIMMERM_WALTER
+	const EVENT_BEAT_SWIMMERM_TONY
 	const EVENT_BEAT_SWIMMERM_JEROME
 	const EVENT_BEAT_SWIMMERM_TUCKER
-	const EVENT_5A3
+	const EVENT_BEAT_SWIMMERM_RICK
 	const EVENT_BEAT_SWIMMERM_CAMERON
 	const EVENT_BEAT_SWIMMERM_SETH
-	const EVENT_5A6
-	const EVENT_5A7
+	const EVENT_BEAT_SWIMMERM_JAMES
+	const EVENT_BEAT_SWIMMERM_LEWIS
 	const EVENT_BEAT_SWIMMERM_PARKER
+; Youngster
 	const EVENT_BEAT_YOUNGSTER_JOEY
 	const EVENT_BEAT_YOUNGSTER_MIKEY
 	const EVENT_BEAT_YOUNGSTER_ALBERT
@@ -1456,20 +1514,23 @@
 	const EVENT_BEAT_YOUNGSTER_GORDON
 	const EVENT_BEAT_YOUNGSTER_SAMUEL
 	const EVENT_BEAT_YOUNGSTER_IAN
-	const EVENT_5AF
-	const EVENT_5B0
+	const EVENT_BEAT_YOUNGSTER_JOEY2
+	const EVENT_BEAT_YOUNGSTER_JOEY3
 	const EVENT_BEAT_YOUNGSTER_WARREN
 	const EVENT_BEAT_YOUNGSTER_JIMMY
 	const EVENT_BEAT_YOUNGSTER_OWEN
 	const EVENT_BEAT_YOUNGSTER_JASON
+; Teacher
 	const EVENT_BEAT_TEACHER_COLETTE
 	const EVENT_BEAT_TEACHER_HILLARY
 	const EVENT_BEAT_TEACHER_SHIRLEY
+; Elite Four and Champion
 	const EVENT_BEAT_ELITE_4_WILL
 	const EVENT_BEAT_ELITE_4_KOGA
 	const EVENT_BEAT_ELITE_4_BRUNO
 	const EVENT_BEAT_ELITE_4_KAREN
 	const EVENT_BEAT_CHAMPION_LANCE
+; New to Crystal
 	const EVENT_BEAT_COOLTRAINERM_DARIN
 	const EVENT_BEAT_COOLTRAINERF_CARA
 	const EVENT_BEAT_TWINS_LEA_AND_PIA
@@ -1485,6 +1546,7 @@
 	const EVENT_BEAT_SAGE_GAKU
 	const EVENT_BEAT_SAGE_MASA
 	const EVENT_BEAT_SAGE_KOJI
+; ???
 	const EVENT_5CC
 	const EVENT_5CD
 	const EVENT_5CE
@@ -1601,346 +1663,353 @@
 	const EVENT_63D
 	const EVENT_63E
 	const EVENT_63F
-	const EVENT_640
-	const EVENT_641
-	const EVENT_642
-	const EVENT_643
-	const EVENT_644
-	const EVENT_645
-	const EVENT_646
-	const EVENT_647
-	const EVENT_648
-	const EVENT_649
-	const EVENT_64A
-	const EVENT_64B
-	const EVENT_64C
-	const EVENT_64D
-	const EVENT_64E
-	const EVENT_64F
-	const EVENT_650
-	const EVENT_651
-	const EVENT_652
-	const EVENT_653
-	const EVENT_654
-	const EVENT_655
-	const EVENT_656
-	const EVENT_657
-	const EVENT_658
-	const EVENT_659
-	const EVENT_65A
-	const EVENT_65B
-	const EVENT_65C
-	const EVENT_65D
-	const EVENT_65E
-	const EVENT_65F
-	const EVENT_660
-	const EVENT_661
-	const EVENT_662
-	const EVENT_663
-	const EVENT_664
-	const EVENT_665
-	const EVENT_666
-	const EVENT_667
-	const EVENT_668
-	const EVENT_669
-	const EVENT_66A
-	const EVENT_66B
-	const EVENT_66C
-	const EVENT_66D
-	const EVENT_66E
-	const EVENT_66F
-	const EVENT_670
-	const EVENT_671
-	const EVENT_672
-	const EVENT_673
-	const EVENT_674
-	const EVENT_675
-	const EVENT_676
-	const EVENT_677
-	const EVENT_678
-	const EVENT_679
-	const EVENT_67A
-	const EVENT_67B
-	const EVENT_67C
-	const EVENT_67D
-	const EVENT_67E
-	const EVENT_67F
-	const EVENT_680
-	const EVENT_681
-	const EVENT_682
-	const EVENT_683
-	const EVENT_684
-	const EVENT_685
-	const EVENT_686
-	const EVENT_687
-	const EVENT_688
-	const EVENT_689
-	const EVENT_68A
-	const EVENT_68B
-	const EVENT_68C
-	const EVENT_68D
-	const EVENT_68E
-	const EVENT_68F
-	const EVENT_690
-	const EVENT_691
-	const EVENT_692
-	const EVENT_693
-	const EVENT_694
-	const EVENT_695
-	const EVENT_696
-	const EVENT_697
-	const EVENT_698
-	const EVENT_699
-	const EVENT_69A
-	const EVENT_69B
-	const EVENT_69C
-	const EVENT_69D
-	const EVENT_69E
-	const EVENT_69F
-	const EVENT_6A0
-	const EVENT_6A1
-	const EVENT_6A2
-	const EVENT_6A3
-	const EVENT_6A4
-	const EVENT_6A5
-	const EVENT_6A6
-	const EVENT_6A7
-	const EVENT_6A8
-	const EVENT_6A9
-	const EVENT_6AA
-	const EVENT_6AB
-	const EVENT_6AC
-	const EVENT_6AD
-	const EVENT_6AE
-	const EVENT_6AF
-	const EVENT_6B0
-	const EVENT_6B1
-	const EVENT_6B2
-	const EVENT_6B3
-	const EVENT_6B4
-	const EVENT_6B5
-	const EVENT_6B6
-	const EVENT_6B7
-	const EVENT_6B8
-	const EVENT_6B9
-	const EVENT_6BA
-	const EVENT_6BB
-	const EVENT_6BC
-	const EVENT_6BD
-	const EVENT_6BE
-	const EVENT_6BF
-	const EVENT_6C0
-	const EVENT_6C1
-	const EVENT_6C2
-	const EVENT_6C3
+; Sprite visibility: When these events are cleared, the sprite becomes visible; when set, the sprite is hidden.
+; The map script command macros `disappear` and `appear` set/clear these flags and immediately apply the effect on visibility.
+; The map script command macros `setevent` and `clearevent` set/clear these flags, and their effects will be seen when the map is reloaded.
+; Johto items: 0x640
+	const EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
+	const EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
+	const EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
+	const EVENT_VIOLET_CITY_PP_UP
+	const EVENT_VIOLET_CITY_RARE_CANDY
+	const EVENT_LAKE_OF_RAGE_ELIXER
+	const EVENT_LAKE_OF_RAGE_TM_DETECT
+	const EVENT_SPROUT_TOWER1F_PARLYZ_HEAL
+	const EVENT_SPROUT_TOWER2F_X_ACCURACY
+	const EVENT_SPROUT_TOWER_3F_POTION
+	const EVENT_SPROUT_TOWER_3F_ESCAPE_ROPE
+	const EVENT_TIN_TOWER_3F_FULL_HEAL
+	const EVENT_TIN_TOWER_4F_ULTRA_BALL
+	const EVENT_TIN_TOWER_4F_PP_UP
+	const EVENT_TIN_TOWER_4F_ESCAPE_ROPE
+	const EVENT_TIN_TOWER_5F_RARE_CANDY
+	const EVENT_TIN_TOWER_7F_MAX_REVIVE
+	const EVENT_TIN_TOWER_8F_NUGGET
+	const EVENT_TIN_TOWER_8F_MAX_ELIXER
+	const EVENT_TIN_TOWER_8F_FULL_RESTORE
+	const EVENT_TEAM_ROCKET_BASE_B3F_ULTRA_BALL
+	const EVENT_UNDERGROUND_WAREHOUSE_ULTRA_BALL
+	const EVENT_BURNED_TOWER_1F_HP_UP
+	const EVENT_BURNED_TOWER_B1F_TM_ENDURE
+	const EVENT_NATIONAL_PARK_PARLYZ_HEAL
+	const EVENT_NATIONAL_PARK_TM_DIG
+	const EVENT_UNION_CAVE_1F_GREAT_BALL
+	const EVENT_UNION_CAVE_1F_X_ATTACK
+	const EVENT_UNION_CAVE_1F_POTION
+	const EVENT_UNION_CAVE_1F_AWAKENING
+	const EVENT_UNION_CAVE_B1F_TM_SWIFT
+	const EVENT_UNION_CAVE_B1F_X_DEFEND
+	const EVENT_UNION_CAVE_B2F_ELIXER
+	const EVENT_UNION_CAVE_B2F_HYPER_POTION
+	const EVENT_SLOWPOKE_WELL_B1F_SUPER_POTION
+	const EVENT_SLOWPOKE_WELL_B2F_TM_RAIN_DANCE
+	const EVENT_OLIVINE_LIGHTHOUSE_3F_ETHER
+	const EVENT_OLIVINE_LIGHTHOUSE_5F_RARE_CANDY
+	const EVENT_OLIVINE_LIGHTHOUSE_5F_SUPER_REPEL
+	const EVENT_OLIVINE_LIGHTHOUSE_5F_TM_SWAGGER
+	const EVENT_OLIVINE_LIGHTHOUSE_6F_SUPER_POTION
+	const EVENT_TEAM_ROCKET_BASE_B1F_HYPER_POTION
+	const EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
+	const EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
+	const EVENT_TEAM_ROCKET_BASE_B2F_TM_THIEF
+	const EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
+	const EVENT_TEAM_ROCKET_BASE_B3F_X_SPECIAL
+	const EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL
+	const EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL
+	const EVENT_ILEX_FOREST_REVIVE
+	const EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
+	const EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_SMOKE_BALL
+	const EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_FULL_HEAL
+	const EVENT_GOLDENROD_DEPT_STORE_B1F_ETHER
+	const EVENT_GOLDENROD_DEPT_STORE_B1F_AMULET_COIN
+	const EVENT_GOLDENROD_DEPT_STORE_B1F_BURN_HEAL
+	const EVENT_GOLDENROD_DEPT_STORE_B1F_ULTRA_BALL
+	const EVENT_UNDERGROUND_WAREHOUSE_MAX_ETHER
+	const EVENT_UNDERGROUND_WAREHOUSE_TM_SLEEP_TALK
+	const EVENT_MOUNT_MORTAR_1F_OUTSIDE_ETHER
+	const EVENT_MOUNT_MORTAR_1F_OUTSIDE_REVIVE
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_ESCAPE_ROPE
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_REVIVE
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_HYPER_POTION
+	const EVENT_MOUNT_MORTAR_2F_INSIDE_MAX_POTION
+	const EVENT_MOUNT_MORTAR_2F_INSIDE_RARE_CANDY
+	const EVENT_MOUNT_MORTAR_2F_INSIDE_TM_DEFENSE_CURL
+	const EVENT_MOUNT_MORTAR_2F_INSIDE_DRAGON_SCALE
+	const EVENT_MOUNT_MORTAR_2F_INSIDE_ELIXER
+	const EVENT_MOUNT_MORTAR_2F_INSIDE_ESCAPE_ROPE
+	const EVENT_MOUNT_MORTAR_B1F_HYPER_POTION
+	const EVENT_MOUNT_MORTAR_B1F_CARBOS
+	const EVENT_GOT_HM07_WATERFALL
+	const EVENT_ICE_PATH_1F_PP_UP
+	const EVENT_ICE_PATH_B1F_IRON
+	const EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_FULL_HEAL
+	const EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_MAX_POTION
+	const EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_TM_REST
+	const EVENT_ICE_PATH_B3F_NEVERMELTICE
+	const EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
+	const EVENT_WHIRL_ISLAND_SW_ULTRA_BALL
+	const EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
+	const EVENT_WHIRL_ISLAND_B1F_CARBOS
+	const EVENT_WHIRL_ISLAND_B1F_CALCIUM
+	const EVENT_WHIRL_ISLAND_B1F_NUGGET
+	const EVENT_WHIRL_ISLAND_B1F_ESCAPE_ROPE
+	const EVENT_WHIRL_ISLAND_B2F_FULL_RESTORE
+	const EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
+	const EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
+	const EVENT_SILVER_CAVE_ROOM_1_MAX_ELIXER
+	const EVENT_SILVER_CAVE_ROOM_1_PROTEIN
+	const EVENT_SILVER_CAVE_ROOM_1_ESCAPE_ROPE
+	const EVENT_SILVER_CAVE_ITEM_ROOMS_MAX_REVIVE
+	const EVENT_SILVER_CAVE_ITEM_ROOMS_FULL_RESTORE
+	const EVENT_DARK_CAVE_VIOLET_ENTRANCE_POTION
+	const EVENT_DARK_CAVE_VIOLET_ENTRANCE_FULL_HEAL
+	const EVENT_DARK_CAVE_VIOLET_ENTRANCE_HYPER_POTION
+	const EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_REVIVE
+	const EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_TM_SNORE
+	const EVENT_VICTORY_ROAD_TM_EARTHQUAKE
+	const EVENT_VICTORY_ROAD_MAX_REVIVE
+	const EVENT_VICTORY_ROAD_FULL_RESTORE
+	const EVENT_VICTORY_ROAD_FULL_HEAL
+	const EVENT_VICTORY_ROAD_HP_UP
+	const EVENT_DRAGONS_DEN_B1F_DRAGON_FANG
+	const EVENT_TOHJO_FALLS_MOON_STONE
+	const EVENT_ROUTE_26_MAX_ELIXER
+	const EVENT_ROUTE_27_TM_SOLARBEAM
+	const EVENT_ROUTE_27_RARE_CANDY
+	const EVENT_ROUTE_29_POTION
+	const EVENT_ROUTE_31_POTION
+	const EVENT_ROUTE_31_POKE_BALL
+	const EVENT_ROUTE_32_GREAT_BALL
+	const EVENT_ROUTE_32_REPEL
+	const EVENT_ROUTE_35_TM_ROLLOUT
+	const EVENT_ROUTE_42_ULTRA_BALL
+	const EVENT_ROUTE_42_SUPER_POTION
+	const EVENT_ROUTE_43_MAX_ETHER
+	const EVENT_ROUTE_44_MAX_REVIVE
+	const EVENT_ROUTE_44_ULTRA_BALL
+	const EVENT_ROUTE_45_NUGGET
+	const EVENT_ROUTE_45_REVIVE
+	const EVENT_ROUTE_45_ELIXER
+	const EVENT_ROUTE_45_MAX_POTION
+	const EVENT_ROUTE_46_X_SPEED
+; Johto people
+	const EVENT_RIVAL_NEW_BARK_TOWN
+	const EVENT_RIVAL_CHERRYGROVE_CITY
+	const EVENT_RIVAL_AZALEA_TOWN
+	const EVENT_RIVAL_TEAM_ROCKET_BASE
+	const EVENT_RIVAL_UNDERGROUND_PATH
+	const EVENT_RIVAL_VICTORY_ROAD
+	const EVENT_RIVAL_OLIVINE_CITY
 	const EVENT_RIVAL_SPROUT_TOWER
-	const EVENT_6C5
-	const EVENT_6C6
-	const EVENT_6C7
-	const EVENT_6C8
-	const EVENT_6C9
-	const EVENT_6CA
-	const EVENT_6CB
-	const EVENT_6CC
-	const EVENT_6CD
-	const EVENT_6CE
-	const EVENT_6CF
-	const EVENT_6D0
-	const EVENT_6D1
-	const EVENT_6D2
-	const EVENT_6D3
-	const EVENT_6D4
-	const EVENT_6D5
-	const EVENT_6D6
-	const EVENT_6D7
-	const EVENT_6D8
-	const EVENT_6D9
-	const EVENT_6DA
-	const EVENT_6DB
-	const EVENT_6DC
-	const EVENT_6DD
-	const EVENT_6DE
-	const EVENT_6DF
-	const EVENT_6E0
-	const EVENT_6E1
-	const EVENT_6E2
-	const EVENT_6E3
-	const EVENT_6E4
-	const EVENT_6E5
-	const EVENT_6E6
-	const EVENT_6E7
-	const EVENT_6E8
-	const EVENT_6E9
-	const EVENT_6EA
-	const EVENT_6EB
-	const EVENT_6EC
-	const EVENT_6ED
-	const EVENT_6EE
-	const EVENT_6EF
-	const EVENT_6F0
-	const EVENT_6F1
+	const EVENT_RIVAL_BURNED_TOWER
+	const EVENT_RIVAL_DRAGONS_DEN
+	const EVENT_KRISS_HOUSE_MOM_1
+	const EVENT_KRISS_HOUSE_MOM_2
+	const EVENT_MR_POKEMONS_HOUSE_OAK
+	const EVENT_VIOLET_CITY_EARL
+	const EVENT_EARLS_ACADEMY_EARL
+	const EVENT_GOLDENROD_CITY_ROCKET_SCOUT
+	const EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+	const EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	const EVENT_GOLDENROD_CITY_CIVILIANS
+	const EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	const EVENT_RADIO_TOWER_BLACKBELT_BLOCKS_STAIRS
+	const EVENT_OLIVINE_LIGHTHOUSE_JASMINE
+	const EVENT_OLIVINE_GYM_JASMINE
+	const EVENT_LAKE_OF_RAGE_LANCE
+	const EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+	const EVENT_TEAM_ROCKET_BASE_B2F_LANCE
+	const EVENT_TEAM_ROCKET_BASE_B3F_LANCE_PASSWORDS
+	const EVENT_DRAGONS_DEN_CLAIR
+	const EVENT_TEAM_ROCKET_BASE_SECURITY_GRUNTS
+	const EVENT_TEAM_ROCKET_BASE_POPULATION
+	const EVENT_TEAM_ROCKET_BASE_B3F_EXECUTIVE
+	const EVENT_ROUTE_43_GATE_ROCKETS
+	const EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+	const EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
+	const EVENT_TEAM_ROCKET_BASE_B2F_DRAGONITE
+	const EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+	const EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+	const EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+	const EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
+	const EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
+	const EVENT_DAYCARE_MAN_IN_DAYCARE
+	const EVENT_DAYCARE_MAN_ON_ROUTE_34
+	const EVENT_DAYCARE_MON_1
+	const EVENT_DAYCARE_MON_2
+	const EVENT_ILEX_FOREST_FARFETCHD
+	const EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_BEHIND_COUNTER
+	const EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
+	const EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_IN_WALKWAY
+	const EVENT_ILEX_FOREST_LASS
+	const EVENT_COPYCAT_1
+	const EVENT_COPYCAT_2
+	const EVENT_GOLDENROD_SALE_OFF
+	const EVENT_GOLDENROD_SALE_ON
 	const EVENT_6F2
-	const EVENT_6F3
-	const EVENT_6F4
-	const EVENT_6F5
-	const EVENT_6F6
-	const EVENT_6F7
-	const EVENT_6F8
-	const EVENT_6F9
-	const EVENT_6FA
-	const EVENT_6FB
-	const EVENT_6FC
-	const EVENT_6FD
-	const EVENT_6FE
+	const EVENT_ILEX_FOREST_APPRENTICE
+	const EVENT_ILEX_FOREST_CHARCOAL_MASTER
+	const EVENT_CHARCOAL_KILN_FARFETCH_D
+	const EVENT_CHARCOAL_KILN_APPRENTICE
+	const EVENT_CHARCOAL_KILN_BOSS
+	const EVENT_ROUTE_36_SUDOWOODO
+	const EVENT_AZALEA_TOWN_SLOWPOKES
+	const EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
+	const EVENT_SLOWPOKE_WELL_SLOWPOKES
+	const EVENT_SLOWPOKE_WELL_ROCKETS
+	const EVENT_KURTS_HOUSE_SLOWPOKE
+	const EVENT_GUIDE_GENT_IN_HIS_HOUSE
 	const EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
 	const EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
 	const EVENT_ELMS_AIDE_IN_LAB
-	const EVENT_702
-	const EVENT_703
-	const EVENT_704
-	const EVENT_705
+	const EVENT_COP_IN_ELMS_LAB
+	const EVENT_RUINS_OF_ALPH_OUTSIDE_SCIENTIST
+	const EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
+	const EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
 	const EVENT_BOULDER_IN_BLACKTHORN_GYM_1
 	const EVENT_BOULDER_IN_BLACKTHORN_GYM_2
 	const EVENT_BOULDER_IN_BLACKTHORN_GYM_3
-	const EVENT_709
-	const EVENT_70A
-	const EVENT_70B
-	const EVENT_70C
 	const EVENT_BOULDER_IN_ICE_PATH_1
 	const EVENT_BOULDER_IN_ICE_PATH_2
 	const EVENT_BOULDER_IN_ICE_PATH_3
 	const EVENT_BOULDER_IN_ICE_PATH_4
-	const EVENT_711
+	const EVENT_BOULDER_IN_ICE_PATH_1A
+	const EVENT_BOULDER_IN_ICE_PATH_2A
+	const EVENT_BOULDER_IN_ICE_PATH_3A
+	const EVENT_BOULDER_IN_ICE_PATH_4A
+	const EVENT_MYSTERY_GIFT_DELIVERY_GUY
 	const EVENT_MET_BILL
-	const EVENT_713
-	const EVENT_714
-	const EVENT_715
-	const EVENT_716
-	const EVENT_717
-	const EVENT_718
-	const EVENT_719
-	const EVENT_71A
-	const EVENT_71B
-	const EVENT_71C
-	const EVENT_71D
-	const EVENT_71E
-	const EVENT_71F
-	const EVENT_720
-	const EVENT_721
-	const EVENT_722
-	const EVENT_723
-	const EVENT_724
-	const EVENT_725
-	const EVENT_726
-	const EVENT_727
-	const EVENT_728
-	const EVENT_729
-	const EVENT_72A
-	const EVENT_72B
-	const EVENT_72C
-	const EVENT_72D
-	const EVENT_72E
-	const EVENT_72F
-	const EVENT_730
-	const EVENT_731
-	const EVENT_732
-	const EVENT_733
-	const EVENT_734
-	const EVENT_735
-	const EVENT_736
-	const EVENT_737
-	const EVENT_738
-	const EVENT_739
-	const EVENT_73A
-	const EVENT_73B
-	const EVENT_73C
-	const EVENT_73D
-	const EVENT_73E
-	const EVENT_73F
-	const EVENT_740
-	const EVENT_741
-	const EVENT_742
-	const EVENT_743
-	const EVENT_744
-	const EVENT_745
-	const EVENT_746
-	const EVENT_747
-	const EVENT_748
-	const EVENT_749
-	const EVENT_74A
-	const EVENT_74B
-	const EVENT_74C
-	const EVENT_74D
-	const EVENT_74E
+	const EVENT_ECRUTEAK_POKE_CENTER_BILL
+	const EVENT_ROUTE_30_BATTLE
+	const EVENT_ROUTE_30_YOUNGSTER_JOEY
+	const EVENT_BUG_CATCHING_CONTESTANT_1A
+	const EVENT_BUG_CATCHING_CONTESTANT_2A
+	const EVENT_BUG_CATCHING_CONTESTANT_3A
+	const EVENT_BUG_CATCHING_CONTESTANT_4A
+	const EVENT_BUG_CATCHING_CONTESTANT_5A
+	const EVENT_BUG_CATCHING_CONTESTANT_6A
+	const EVENT_BUG_CATCHING_CONTESTANT_7A
+	const EVENT_BUG_CATCHING_CONTESTANT_8A
+	const EVENT_BUG_CATCHING_CONTESTANT_9A
+	const EVENT_BUG_CATCHING_CONTESTANT_10A
+	const EVENT_BUG_CATCHING_CONTESTANT_1B
+	const EVENT_BUG_CATCHING_CONTESTANT_2B
+	const EVENT_BUG_CATCHING_CONTESTANT_3B
+	const EVENT_BUG_CATCHING_CONTESTANT_4B
+	const EVENT_BUG_CATCHING_CONTESTANT_5B
+	const EVENT_BUG_CATCHING_CONTESTANT_6B
+	const EVENT_BUG_CATCHING_CONTESTANT_7B
+	const EVENT_BUG_CATCHING_CONTESTANT_8B
+	const EVENT_BUG_CATCHING_CONTESTANT_9B
+	const EVENT_BUG_CATCHING_CONTESTANT_10B
+	const EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
+	const EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
+	const EVENT_FAST_SHIP_1F_GENTLEMAN
+	const EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+	const EVENT_FAST_SHIP_B1F_SAILOR_LEFT
+	const EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
+	const EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
+	const EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+	const EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
+	const EVENT_OLIVINE_PORT_PASSAGE_POKEFAN_M
+	const EVENT_ROUTE_35_NATIONAL_PARK_GATE_YOUNGSTER
+	const EVENT_LAKE_OF_RAGE_CIVILIANS
+	const EVENT_MAHOGANY_MART_OWNERS
+	const EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	const EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+	const EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	const EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	const EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	const EVENT_TIN_TOWER_ROOF_HO_OH
+	const EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
+	const EVENT_KURTS_HOUSE_KURT_1
+	const EVENT_KURTS_HOUSE_KURT_2
+	const EVENT_SLOWPOKE_WELL_KURT ; 740
+	const EVENT_KRISS_HOUSE_2F_CONSOLE
+	const EVENT_KRISS_HOUSE_2F_DOLL_1
+	const EVENT_KRISS_HOUSE_2F_DOLL_2
+	const EVENT_KRISS_HOUSE_2F_BIG_DOLL
+	const EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+	const EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
+	const EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+	const EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
+	const EVENT_GOLDENROD_TRAIN_STATION_GENTLEMAN
+	const EVENT_BURNED_TOWER_B1F_BEASTS_1
+	const EVENT_BURNED_TOWER_B1F_BEASTS_2
+	const EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
+	const EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
+	const EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
 	const EVENT_OPENED_MT_SILVER
-	const EVENT_FOUGHT_SNORLAX
-	const EVENT_751
-	const EVENT_752
-	const EVENT_753
-	const EVENT_754
-	const EVENT_755
-	const EVENT_756
-	const EVENT_757
-	const EVENT_758
-	const EVENT_759
-	const EVENT_75A
-	const EVENT_75B
-	const EVENT_75C
-	const EVENT_75D
-	const EVENT_75E
-	const EVENT_75F
-	const EVENT_760
-	const EVENT_761
+	const EVENT_FOUGHT_SNORLAX ; 750
+	const EVENT_LAKE_OF_RAGE_RED_GYARADOS
+	const EVENT_WAREHOUSE_ENTRANCE_GRANNY
+	const EVENT_WAREHOUSE_ENTRANCE_GRAMPS
+	const EVENT_WAREHOUSE_ENTRANCE_OLDER_HAIRCUT_BROTHER
+	const EVENT_WAREHOUSE_ENTRANCE_YOUNGER_HAIRCUT_BROTHER
+	const EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_EAST
+	const EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_GYM
+	const EVENT_ROUTE_32_FRIEDA_OF_FRIDAY
+	const EVENT_ROUTE_29_TUSCANY_OF_TUESDAY
+	const EVENT_ROUTE_36_ARTHUR_OF_THURSDAY
+	const EVENT_ROUTE_37_SUNNY_OF_SUNDAY
+	const EVENT_LAKE_OF_RAGE_WESLEY_OF_WEDNESDAY
+	const EVENT_BLACKTHORN_CITY_SANTOS_OF_SATURDAY
+	const EVENT_ROUTE_40_MONICA_OF_MONDAY
+	const EVENT_LANCES_ROOM_OAK_AND_MARY
+	const EVENT_UNION_CAVE_B2F_LAPRAS ; 760
+	const EVENT_TEAM_ROCKET_DISBANDED
 	const EVENT_RED_IN_MT_SILVER
-	const EVENT_763
-	const EVENT_764
-	const EVENT_765
-	const EVENT_766
-	const EVENT_RANG_CLEAR_BELL
-	const EVENT_768
+	const EVENT_GOLDENROD_DEPT_STORE_5F_HAPPINESS_EVENT_LADY
+	const EVENT_BURNED_TOWER_MORTY
+	const EVENT_BURNED_TOWER_1F_EUSINE
+	const EVENT_RANG_CLEAR_BELL_1
+	const EVENT_RANG_CLEAR_BELL_2
+	const EVENT_FLORIA_AT_FLOWER_SHOP
 	const EVENT_FLORIA_AT_SUDOWOODO
-	const EVENT_76A
-	const EVENT_76B
-	const EVENT_76C
-	const EVENT_76D
-	const EVENT_76E
+	const EVENT_GOLDENROD_CITY_MOVE_TUTOR
+	const EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
+; Kanto people
+	const EVENT_ROUTE_24_ROCKET
+	const EVENT_CERULEAN_GYM_ROCKET
+	const EVENT_ROUTE_25_MISTY_BOYFRIEND
 	const EVENT_TRAINERS_IN_CERULEAN_GYM
-	const EVENT_770
-	const EVENT_771
-	const EVENT_772
-	const EVENT_773
-	const EVENT_774
+	const EVENT_VERMILION_CITY_SNORLAX ; 770
+	const EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
+	const EVENT_SAFFRON_TRAIN_STATION_POPULATION
+	const EVENT_COPYCATS_HOUSE_2F_DOLL
+	const EVENT_VERMILION_FAN_CLUB_DOLL
 	const EVENT_BLUE_IN_CINNABAR
-	const EVENT_776
-	const EVENT_777
-	const EVENT_778
-	const EVENT_779
-	const EVENT_77A
-	const EVENT_77B
+	const EVENT_VIRIDIAN_GYM_BLUE
+	const EVENT_SEAFOAM_GYM_GYM_GUY
+	const EVENT_MT_MOON_SQUARE_ROCK
+	const EVENT_MT_MOON_SQUARE_CLEFAIRY
+	const EVENT_MT_MOON_RIVAL
+	const EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
 	const EVENT_TELEPORT_GUY
 	const EVENT_PICKED_UP_FOCUS_BAND
-	const EVENT_77E
-	const EVENT_77F
-	const EVENT_780
-	const EVENT_781
-	const EVENT_782
-	const EVENT_783
-	const EVENT_784
-	const EVENT_785
-	const EVENT_786
-	const EVENT_787
-	const EVENT_788
-	const EVENT_789
-	const EVENT_78A
-	const EVENT_78B
-	const EVENT_78C
-	const EVENT_78D
-	const EVENT_78E
-	const EVENT_78F
-	const EVENT_790
-	const EVENT_791
-	const EVENT_792
-	const EVENT_793
+	const EVENT_ROCK_TUNNEL_1F_ELIXER
+	const EVENT_ROCK_TUNNEL_1F_TM_STEEL_WING
+	const EVENT_ROCK_TUNNEL_B1F_IRON ; 780
+	const EVENT_ROCK_TUNNEL_B1F_PP_UP
+	const EVENT_ROCK_TUNNEL_B1F_REVIVE
+	const EVENT_ROUTE_2_DIRE_HIT
+	const EVENT_ROUTE_2_MAX_POTION
+	const EVENT_ROUTE_2_CARBOS
+	const EVENT_ROUTE_2_ELIXER
+	const EVENT_ROUTE_4_HP_UP
+	const EVENT_ROUTE_12_CALCIUM
+	const EVENT_ROUTE_12_NUGGET
+	const EVENT_ROUTE_15_PP_UP
+	const EVENT_ROUTE_25_PROTEIN
+; New to Crystal
+	const EVENT_KURTS_HOUSE_GRANDDAUGHTER_1
+	const EVENT_KURTS_HOUSE_GRANDDAUGHTER_2
+	const EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
+	const EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
+	const EVENT_DRAGON_SHRINE_CLAIR ; 790
+	const EVENT_BATTLE_TOWER_BATTLE_ROOM_YOUNGSTER
+	const EVENT_KRISS_HOUSE_1F_NEIGHBOR
+	const EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
 	const EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
 	const EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
 	const EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
@@ -1953,53 +2022,52 @@
 	const EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
 	const EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
 	const EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
-	const EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
+	const EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM ; 7a0
 	const EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
 	const EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
 	const EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
-	const EVENT_7A4
-	const EVENT_7A5
-	const EVENT_7A6
-	const EVENT_7A7
-	const EVENT_7A8
-	const EVENT_7A9
+	const EVENT_AZALEA_TOWN_KURT
+	const EVENT_ILEX_FOREST_KURT
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_POTION
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_NUGGET
+	const EVENT_ECRUTEAK_GYM_GRAMPS
+	const EVENT_ECRUTEAK_CITY_GRAMPS
 	const EVENT_EUSINE_IN_BURNED_TOWER
-	const EVENT_7AB
-	const EVENT_7AC
-	const EVENT_7AD
+	const EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	const EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
+	const EVENT_CIANWOOD_CITY_EUSINE
 	const EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
 	const EVENT_SAW_SUICUNE_ON_ROUTE_42
-	const EVENT_SAW_SUICUNE_ON_ROUTE_36
-	const EVENT_7B1
-	const EVENT_7B2
-	const EVENT_7B3
-	const EVENT_7B4
-	const EVENT_7B5
-	const EVENT_7B6
+	const EVENT_SAW_SUICUNE_ON_ROUTE_36 ; 7b0
+	const EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
+	const EVENT_TIN_TOWER_1F_SUICUNE
+	const EVENT_TIN_TOWER_1F_ENTEI
+	const EVENT_TIN_TOWER_1F_RAIKOU
+	const EVENT_TIN_TOWER_1F_EUSINE
+	const EVENT_TIN_TOWER_1F_WISE_TRIO_1
 	const EVENT_SET_WHEN_FOUGHT_HO_OH
-	const EVENT_7B8
-	const EVENT_7B9
-	const EVENT_7BA
-	const EVENT_7BB
-	const EVENT_7BC
-	const EVENT_7BD
-	const EVENT_7BE
-	const EVENT_7BF
-	const EVENT_7C0
-	const EVENT_7C1
-	const EVENT_7C2
-	const EVENT_7C3
-	const EVENT_7C4
-	const EVENT_7C5
-	const EVENT_7C6
-	const EVENT_7C7
-	const EVENT_7C8
-	const EVENT_7C9
-	const EVENT_7CA
-	const EVENT_7CB
-	const EVENT_7CC
-	const EVENT_7CD
-	const EVENT_7CE
-	const EVENT_7CF
-
-NUM_EVENTS EQU const_value
+	const EVENT_ROUTE_30_ANTIDOTE
+	const EVENT_ILEX_FOREST_X_ATTACK
+	const EVENT_ILEX_FOREST_ANTIDOTE
+	const EVENT_ILEX_FOREST_ETHER
+	const EVENT_ROUTE_34_NUGGET
+	const EVENT_ROUTE_44_MAX_REPEL
+	const EVENT_ICE_PATH_1F_PROTEIN
+	const EVENT_DRAGONS_DEN_B1F_CALCIUM
+	const EVENT_DRAGONS_DEN_B1F_MAX_ELIXER ; 7c0
+	const EVENT_SILVER_CAVE_ROOM_1_ULTRA_BALL
+	const EVENT_SILVER_CAVE_ROOM_2_CALCIUM
+	const EVENT_SILVER_CAVE_ROOM_2_ULTRA_BALL
+	const EVENT_SILVER_CAVE_ROOM_2_PP_UP
+	const EVENT_TIN_TOWER_1F_WISE_TRIO_2
+	const EVENT_TIN_TOWER_6F_MAX_POTION
+	const EVENT_TIN_TOWER_9F_HP_UP
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_IRON
+	const EVENT_MOUNT_MORTAR_1F_INSIDE_ULTRA_BALL
+	const EVENT_MOUNT_MORTAR_B1F_FULL_RESTORE
+	const EVENT_MOUNT_MORTAR_B1F_MAX_ETHER
+	const EVENT_MOUNT_MORTAR_B1F_PP_UP
+	const EVENT_RADIO_TOWER_5F_ULTRA_BALL
+	const EVENT_DARK_CAVE_VIOLET_ENTRANCE_DIRE_HIT
+	const EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+NUM_EVENTS EQU const_value ; 7d0
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -1,39 +1,40 @@
-ANIM_GFX_HIT        EQU 1
-ANIM_GFX_CUT        EQU 2
-ANIM_GFX_FIRE       EQU 3
-ANIM_GFX_WATER      EQU 4
-ANIM_GFX_LIGHTNING  EQU 5
-ANIM_GFX_PLANT      EQU 6
-ANIM_GFX_SMOKE      EQU 7
-ANIM_GFX_EXPLOSION  EQU 8
-ANIM_GFX_ROCKS      EQU 9
-ANIM_GFX_ICE        EQU 10
-ANIM_GFX_POKE_BALL  EQU 11
-ANIM_GFX_POISON     EQU 12
-ANIM_GFX_BUBBLE     EQU 13
-ANIM_GFX_NOISE      EQU 14
-ANIM_GFX_POWDER     EQU 15
-ANIM_GFX_BEAM       EQU 16
-ANIM_GFX_SPEED      EQU 17
-ANIM_GFX_CHARGE     EQU 18
-ANIM_GFX_WIND       EQU 19
-ANIM_GFX_WHIP       EQU 20
-ANIM_GFX_EGG        EQU 21
-ANIM_GFX_ROPE       EQU 22
-ANIM_GFX_PSYCHIC    EQU 23
-ANIM_GFX_REFLECT    EQU 24
-ANIM_GFX_STATUS     EQU 25
-ANIM_GFX_SAND       EQU 26
-ANIM_GFX_WEB        EQU 27
-ANIM_GFX_HAZE       EQU 28
-ANIM_GFX_HORN       EQU 29
-ANIM_GFX_FLOWER     EQU 30
-ANIM_GFX_MISC       EQU 31
-ANIM_GFX_SKY_ATTACK EQU 32
-ANIM_GFX_GLOBE      EQU 33
-ANIM_GFX_SHAPES     EQU 34
-ANIM_GFX_OBJECTS    EQU 35
-ANIM_GFX_SHINE      EQU 36
-ANIM_GFX_ANGELS     EQU 37
-ANIM_GFX_WAVE       EQU 38
-ANIM_GFX_AEROBLAST  EQU 39
+const_value SET 1
+	const ANIM_GFX_HIT
+	const ANIM_GFX_CUT
+	const ANIM_GFX_FIRE
+	const ANIM_GFX_WATER
+	const ANIM_GFX_LIGHTNING
+	const ANIM_GFX_PLANT
+	const ANIM_GFX_SMOKE
+	const ANIM_GFX_EXPLOSION
+	const ANIM_GFX_ROCKS
+	const ANIM_GFX_ICE
+	const ANIM_GFX_POKE_BALL
+	const ANIM_GFX_POISON
+	const ANIM_GFX_BUBBLE
+	const ANIM_GFX_NOISE
+	const ANIM_GFX_POWDER
+	const ANIM_GFX_BEAM
+	const ANIM_GFX_SPEED
+	const ANIM_GFX_CHARGE
+	const ANIM_GFX_WIND
+	const ANIM_GFX_WHIP
+	const ANIM_GFX_EGG
+	const ANIM_GFX_ROPE
+	const ANIM_GFX_PSYCHIC
+	const ANIM_GFX_REFLECT
+	const ANIM_GFX_STATUS
+	const ANIM_GFX_SAND
+	const ANIM_GFX_WEB
+	const ANIM_GFX_HAZE
+	const ANIM_GFX_HORN
+	const ANIM_GFX_FLOWER
+	const ANIM_GFX_MISC
+	const ANIM_GFX_SKY_ATTACK
+	const ANIM_GFX_GLOBE
+	const ANIM_GFX_SHAPES
+	const ANIM_GFX_OBJECTS
+	const ANIM_GFX_SHINE
+	const ANIM_GFX_ANGELS
+	const ANIM_GFX_WAVE
+	const ANIM_GFX_AEROBLAST
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -266,6 +266,7 @@
 MOON_STONE_RED EQU 10 ; BURN_HEAL
 FULL_HEAL_RED  EQU 52 ; X_SPEED
 
+MAIL_MAX_LENGTH EQU $20
 
 ; pockets
 ITEM     EQU 1
@@ -291,7 +292,7 @@
 	const HELD_7
 	const HELD_CLEANSE_TAG
 
-const_value = 10
+const_value SET 10
 	const HELD_HEAL_POISON
 	const HELD_HEAL_FREEZE
 	const HELD_HEAL_BURN
@@ -300,7 +301,7 @@
 	const HELD_HEAL_STATUS
 	const HELD_HEAL_CONFUSION
 
-const_value = 20
+const_value SET 20
 	const HELD_PREVENT_POISON
 	const HELD_PREVENT_BURN
 	const HELD_PREVENT_FREEZE
@@ -308,7 +309,7 @@
 	const HELD_PREVENT_PARALYZE
 	const HELD_PREVENT_CONFUSE
 
-const_value = 30
+const_value SET 30
 	const HELD_30
 	const HELD_ATTACK_UP
 	const HELD_DEFENSE_UP
@@ -318,12 +319,12 @@
 	const HELD_ACCURACY_UP
 	const HELD_EVASION_UP
 
-const_value = 40
+const_value SET 40
 	const HELD_40
 	const HELD_41
 	const HELD_METAL_POWDER
 
-const_value = 50
+const_value SET 50
 	const HELD_NORMAL_BOOST
 	const HELD_FIGHTING_BOOST
 	const HELD_FLYING_BOOST
@@ -342,7 +343,7 @@
 	const HELD_DARK_BOOST
 	const HELD_STEEL_BOOST
 
-const_value = 70
+const_value SET 70
 	const HELD_CATCH_CHANCE
 	const HELD_71
 	const HELD_ESCAPE
@@ -353,3 +354,13 @@
 	const HELD_BRIGHTPOWDER
 	const HELD_4E
 	const HELD_FOCUS_BAND
+
+	const_def
+	const ITEMATTR_PRICE
+	const ITEMATTR_PRICE_HI
+	const ITEMATTR_EFFECT
+	const ITEMATTR_PARAM
+	const ITEMATTR_PERMISSIONS
+	const ITEMATTR_POCKET
+	const ITEMATTR_HELP
+NUM_ITEMATTRS EQU const_value
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -2,1806 +2,754 @@
 MAP_N_A   EQU -1
 
 ; map group ids
-GROUP_OLIVINE_POKECENTER_1F EQU $01
-GROUP_OLIVINE_GYM EQU $01
-GROUP_OLIVINE_VOLTORB_HOUSE EQU $01
-GROUP_OLIVINE_HOUSE_BETA EQU $01
-GROUP_OLIVINE_PUNISHMENT_SPEECH_HOUSE EQU $01
-GROUP_OLIVINE_GOOD_ROD_HOUSE EQU $01
-GROUP_OLIVINE_CAFE EQU $01
-GROUP_OLIVINE_MART EQU $01
-GROUP_ROUTE_38_ECRUTEAK_GATE EQU $01
-GROUP_ROUTE_39_BARN EQU $01
-GROUP_ROUTE_39_FARMHOUSE EQU $01
-GROUP_ROUTE_38 EQU $01
-GROUP_ROUTE_39 EQU $01
-GROUP_OLIVINE_CITY EQU $01
-GROUP_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE EQU $02
-GROUP_MAHOGANY_GYM EQU $02
-GROUP_MAHOGANY_POKECENTER_1F EQU $02
-GROUP_ROUTE_42_ECRUTEAK_GATE EQU $02
-GROUP_ROUTE_42 EQU $02
-GROUP_ROUTE_44 EQU $02
-GROUP_MAHOGANY_TOWN EQU $02
-GROUP_SPROUT_TOWER_1F EQU $03
-GROUP_SPROUT_TOWER_2F EQU $03
-GROUP_SPROUT_TOWER_3F EQU $03
-GROUP_TIN_TOWER_1F EQU $03
-GROUP_TIN_TOWER_2F EQU $03
-GROUP_TIN_TOWER_3F EQU $03
-GROUP_TIN_TOWER_4F EQU $03
-GROUP_TIN_TOWER_5F EQU $03
-GROUP_TIN_TOWER_6F EQU $03
-GROUP_TIN_TOWER_7F EQU $03
-GROUP_TIN_TOWER_8F EQU $03
-GROUP_TIN_TOWER_9F EQU $03
-GROUP_BURNED_TOWER_1F EQU $03
-GROUP_BURNED_TOWER_B1F EQU $03
-GROUP_NATIONAL_PARK EQU $03
-GROUP_NATIONAL_PARK_BUG_CONTEST EQU $03
-GROUP_RADIO_TOWER_1F EQU $03
-GROUP_RADIO_TOWER_2F EQU $03
-GROUP_RADIO_TOWER_3F EQU $03
-GROUP_RADIO_TOWER_4F EQU $03
-GROUP_RADIO_TOWER_5F EQU $03
-GROUP_RUINS_OF_ALPH_OUTSIDE EQU $03
-GROUP_RUINS_OF_ALPH_HO_OH_CHAMBER EQU $03
-GROUP_RUINS_OF_ALPH_KABUTO_CHAMBER EQU $03
-GROUP_RUINS_OF_ALPH_OMANYTE_CHAMBER EQU $03
-GROUP_RUINS_OF_ALPH_AERODACTYL_CHAMBER EQU $03
-GROUP_RUINS_OF_ALPH_INNER_CHAMBER EQU $03
-GROUP_RUINS_OF_ALPH_RESEARCH_CENTER EQU $03
-GROUP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM EQU $03
-GROUP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM EQU $03
-GROUP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM EQU $03
-GROUP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM EQU $03
-GROUP_RUINS_OF_ALPH_HO_OH_WORD_ROOM EQU $03
-GROUP_RUINS_OF_ALPH_KABUTO_WORD_ROOM EQU $03
-GROUP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM EQU $03
-GROUP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM EQU $03
-GROUP_UNION_CAVE_1F EQU $03
-GROUP_UNION_CAVE_B1F EQU $03
-GROUP_UNION_CAVE_B2F EQU $03
-GROUP_SLOWPOKE_WELL_B1F EQU $03
-GROUP_SLOWPOKE_WELL_B2F EQU $03
-GROUP_OLIVINE_LIGHTHOUSE_1F EQU $03
-GROUP_OLIVINE_LIGHTHOUSE_2F EQU $03
-GROUP_OLIVINE_LIGHTHOUSE_3F EQU $03
-GROUP_OLIVINE_LIGHTHOUSE_4F EQU $03
-GROUP_OLIVINE_LIGHTHOUSE_5F EQU $03
-GROUP_OLIVINE_LIGHTHOUSE_6F EQU $03
-GROUP_MAHOGANY_MART_1F EQU $03
-GROUP_TEAM_ROCKET_BASE_B1F EQU $03
-GROUP_TEAM_ROCKET_BASE_B2F EQU $03
-GROUP_TEAM_ROCKET_BASE_B3F EQU $03
-GROUP_ILEX_FOREST EQU $03
-GROUP_WAREHOUSE_ENTRANCE EQU $03
-GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES EQU $03
-GROUP_GOLDENROD_DEPT_STORE_B1F EQU $03
-GROUP_UNDERGROUND_WAREHOUSE EQU $03
-GROUP_MOUNT_MORTAR_1F_OUTSIDE EQU $03
-GROUP_MOUNT_MORTAR_1F_INSIDE EQU $03
-GROUP_MOUNT_MORTAR_2F_INSIDE EQU $03
-GROUP_MOUNT_MORTAR_B1F EQU $03
-GROUP_ICE_PATH_1F EQU $03
-GROUP_ICE_PATH_B1F EQU $03
-GROUP_ICE_PATH_B2F_MAHOGANY_SIDE EQU $03
-GROUP_ICE_PATH_B2F_BLACKTHORN_SIDE EQU $03
-GROUP_ICE_PATH_B3F EQU $03
-GROUP_WHIRL_ISLAND_NW EQU $03
-GROUP_WHIRL_ISLAND_NE EQU $03
-GROUP_WHIRL_ISLAND_SW EQU $03
-GROUP_WHIRL_ISLAND_CAVE EQU $03
-GROUP_WHIRL_ISLAND_SE EQU $03
-GROUP_WHIRL_ISLAND_B1F EQU $03
-GROUP_WHIRL_ISLAND_B2F EQU $03
-GROUP_WHIRL_ISLAND_LUGIA_CHAMBER EQU $03
-GROUP_SILVER_CAVE_ROOM_1 EQU $03
-GROUP_SILVER_CAVE_ROOM_2 EQU $03
-GROUP_SILVER_CAVE_ROOM_3 EQU $03
-GROUP_SILVER_CAVE_ITEM_ROOMS EQU $03
-GROUP_DARK_CAVE_VIOLET_ENTRANCE EQU $03
-GROUP_DARK_CAVE_BLACKTHORN_ENTRANCE EQU $03
-GROUP_DRAGONS_DEN_1F EQU $03
-GROUP_DRAGONS_DEN_B1F EQU $03
-GROUP_DRAGON_SHRINE EQU $03
-GROUP_TOHJO_FALLS EQU $03
-GROUP_DIGLETTS_CAVE EQU $03
-GROUP_MOUNT_MOON EQU $03
-GROUP_UNDERGROUND EQU $03
-GROUP_ROCK_TUNNEL_1F EQU $03
-GROUP_ROCK_TUNNEL_B1F EQU $03
-GROUP_SAFARI_ZONE_FUCHSIA_GATE_BETA EQU $03
-GROUP_SAFARI_ZONE_BETA EQU $03
-GROUP_VICTORY_ROAD EQU $03
-GROUP_ECRUTEAK_HOUSE EQU $04
-GROUP_WISE_TRIOS_ROOM EQU $04
-GROUP_ECRUTEAK_POKECENTER_1F EQU $04
-GROUP_ECRUTEAK_LUGIA_SPEECH_HOUSE EQU $04
-GROUP_DANCE_THEATRE EQU $04
-GROUP_ECRUTEAK_MART EQU $04
-GROUP_ECRUTEAK_GYM EQU $04
-GROUP_ECRUTEAK_ITEMFINDER_HOUSE EQU $04
-GROUP_ECRUTEAK_CITY EQU $04
-GROUP_BLACKTHORN_GYM_1F EQU $05
-GROUP_BLACKTHORN_GYM_2F EQU $05
-GROUP_BLACKTHORN_DRAGON_SPEECH_HOUSE EQU $05
-GROUP_BLACKTHORN_DODRIO_TRADE_HOUSE EQU $05
-GROUP_BLACKTHORN_MART EQU $05
-GROUP_BLACKTHORN_POKECENTER_1F EQU $05
-GROUP_MOVE_DELETERS_HOUSE EQU $05
-GROUP_ROUTE_45 EQU $05
-GROUP_ROUTE_46 EQU $05
-GROUP_BLACKTHORN_CITY EQU $05
-GROUP_CINNABAR_POKECENTER_1F EQU $06
-GROUP_CINNABAR_POKECENTER_2F_BETA EQU $06
-GROUP_ROUTE_19___FUCHSIA_GATE EQU $06
-GROUP_SEAFOAM_GYM EQU $06
-GROUP_ROUTE_19 EQU $06
-GROUP_ROUTE_20 EQU $06
-GROUP_ROUTE_21 EQU $06
-GROUP_CINNABAR_ISLAND EQU $06
-GROUP_CERULEAN_GYM_BADGE_SPEECH_HOUSE EQU $07
-GROUP_CERULEAN_POLICE_STATION EQU $07
-GROUP_CERULEAN_TRADE_SPEECH_HOUSE EQU $07
-GROUP_CERULEAN_POKECENTER_1F EQU $07
-GROUP_CERULEAN_POKECENTER_2F_BETA EQU $07
-GROUP_CERULEAN_GYM EQU $07
-GROUP_CERULEAN_MART EQU $07
-GROUP_ROUTE_10_POKECENTER_1F EQU $07
-GROUP_ROUTE_10_POKECENTER_2F_BETA EQU $07
-GROUP_POWER_PLANT EQU $07
-GROUP_BILLS_HOUSE EQU $07
-GROUP_ROUTE_4 EQU $07
-GROUP_ROUTE_9 EQU $07
-GROUP_ROUTE_10A EQU $07
-GROUP_ROUTE_10_NORTH EQU $07
-GROUP_ROUTE_24 EQU $07
-GROUP_ROUTE_25 EQU $07
-GROUP_CERULEAN_CITY EQU $07
-GROUP_AZALEA_POKECENTER_1F EQU $08
-GROUP_CHARCOAL_KILN EQU $08
-GROUP_AZALEA_MART EQU $08
-GROUP_KURTS_HOUSE EQU $08
-GROUP_AZALEA_GYM EQU $08
-GROUP_ROUTE_33 EQU $08
-GROUP_AZALEA_TOWN EQU $08
-GROUP_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE EQU $09
-GROUP_LAKE_OF_RAGE_MAGIKARP_HOUSE EQU $09
-GROUP_ROUTE_43_MAHOGANY_GATE EQU $09
-GROUP_ROUTE_43_GATE EQU $09
-GROUP_ROUTE_43 EQU $09
-GROUP_LAKE_OF_RAGE EQU $09
-GROUP_ROUTE_32 EQU $0a
-GROUP_ROUTE_35 EQU $0a
-GROUP_ROUTE_36 EQU $0a
-GROUP_ROUTE_37 EQU $0a
-GROUP_VIOLET_CITY EQU $0a
-GROUP_VIOLET_MART EQU $0a
-GROUP_VIOLET_GYM EQU $0a
-GROUP_EARLS_POKEMON_ACADEMY EQU $0a
-GROUP_VIOLET_NICKNAME_SPEECH_HOUSE EQU $0a
-GROUP_VIOLET_POKECENTER_1F EQU $0a
-GROUP_VIOLET_ONIX_TRADE_HOUSE EQU $0a
-GROUP_ROUTE_32_RUINS_OF_ALPH_GATE EQU $0a
-GROUP_ROUTE_32_POKECENTER_1F EQU $0a
-GROUP_ROUTE_35_GOLDENROD_GATE EQU $0a
-GROUP_ROUTE_35_NATIONAL_PARK_GATE EQU $0a
-GROUP_ROUTE_36_RUINS_OF_ALPH_GATE EQU $0a
-GROUP_ROUTE_36_NATIONAL_PARK_GATE EQU $0a
-GROUP_ROUTE_34 EQU $0b
-GROUP_GOLDENROD_CITY EQU $0b
-GROUP_GOLDENROD_GYM EQU $0b
-GROUP_GOLDENROD_BIKE_SHOP EQU $0b
-GROUP_GOLDENROD_HAPPINESS_RATER EQU $0b
-GROUP_GOLDENROD_BILLS_HOUSE EQU $0b
-GROUP_GOLDENROD_MAGNET_TRAIN_STATION EQU $0b
-GROUP_GOLDENROD_FLOWER_SHOP EQU $0b
-GROUP_GOLDENROD_PP_SPEECH_HOUSE EQU $0b
-GROUP_GOLDENROD_NAME_RATERS_HOUSE EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_1F EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_2F EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_3F EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_4F EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_5F EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_6F EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_ELEVATOR EQU $0b
-GROUP_GOLDENROD_DEPT_STORE_ROOF EQU $0b
-GROUP_GOLDENROD_GAME_CORNER EQU $0b
-GROUP_GOLDENROD_POKECENTER_1F EQU $0b
-GROUP_GOLDENROD_POKECOM_CENTER_2F_MOBILE EQU $0b
-GROUP_ILEX_FOREST_AZALEA_GATE EQU $0b
-GROUP_ROUTE_34_ILEX_FOREST_GATE EQU $0b
-GROUP_DAY_CARE EQU $0b
-GROUP_ROUTE_6 EQU $0c
-GROUP_ROUTE_11 EQU $0c
-GROUP_VERMILION_CITY EQU $0c
-GROUP_VERMILION_HOUSE_FISHING_SPEECH_HOUSE EQU $0c
-GROUP_VERMILION_POKECENTER_1F EQU $0c
-GROUP_VERMILION_POKECENTER_2F_BETA EQU $0c
-GROUP_POKEMON_FAN_CLUB EQU $0c
-GROUP_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE EQU $0c
-GROUP_VERMILION_MART EQU $0c
-GROUP_VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE EQU $0c
-GROUP_VERMILION_GYM EQU $0c
-GROUP_ROUTE_6_SAFFRON_GATE EQU $0c
-GROUP_ROUTE_6_UNDERGROUND_ENTRANCE EQU $0c
-GROUP_ROUTE_1 EQU $0d
-GROUP_PALLET_TOWN EQU $0d
-GROUP_REDS_HOUSE_1F EQU $0d
-GROUP_REDS_HOUSE_2F EQU $0d
-GROUP_BLUES_HOUSE EQU $0d
-GROUP_OAKS_LAB EQU $0d
-GROUP_ROUTE_3 EQU $0e
-GROUP_PEWTER_CITY EQU $0e
-GROUP_PEWTER_NIDORAN_SPEECH_HOUSE EQU $0e
-GROUP_PEWTER_GYM EQU $0e
-GROUP_PEWTER_MART EQU $0e
-GROUP_PEWTER_POKECENTER_1F EQU $0e
-GROUP_PEWTER_POKECENTER_2F_BETA EQU $0e
-GROUP_PEWTER_SNOOZE_SPEECH_HOUSE EQU $0e
-GROUP_OLIVINE_PORT EQU $0f
-GROUP_VERMILION_PORT EQU $0f
-GROUP_FAST_SHIP_1F EQU $0f
-GROUP_FAST_SHIP_CABINS_NNW_NNE_NE EQU $0f
-GROUP_FAST_SHIP_CABINS_SW_SSW_NW EQU $0f
-GROUP_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN EQU $0f
-GROUP_FAST_SHIP_B1F EQU $0f
-GROUP_OLIVINE_PORT_PASSAGE EQU $0f
-GROUP_VERMILION_PORT_PASSAGE EQU $0f
-GROUP_MOUNT_MOON_SQUARE EQU $0f
-GROUP_MOUNT_MOON_GIFT_SHOP EQU $0f
-GROUP_TIN_TOWER_ROOF EQU $0f
-GROUP_ROUTE_23 EQU $10
-GROUP_INDIGO_PLATEAU_POKECENTER_1F EQU $10
-GROUP_WILLS_ROOM EQU $10
-GROUP_KOGAS_ROOM EQU $10
-GROUP_BRUNOS_ROOM EQU $10
-GROUP_KARENS_ROOM EQU $10
-GROUP_LANCES_ROOM EQU $10
-GROUP_HALL_OF_FAME EQU $10
-GROUP_ROUTE_13 EQU $11
-GROUP_ROUTE_14 EQU $11
-GROUP_ROUTE_15 EQU $11
-GROUP_ROUTE_18 EQU $11
-GROUP_FUCHSIA_CITY EQU $11
-GROUP_FUCHSIA_MART EQU $11
-GROUP_SAFARI_ZONE_MAIN_OFFICE EQU $11
-GROUP_FUCHSIA_GYM EQU $11
-GROUP_FUCHSIA_BILL_SPEECH_HOUSE EQU $11
-GROUP_FUCHSIA_POKECENTER_1F EQU $11
-GROUP_FUCHSIA_POKECENTER_2F_BETA EQU $11
-GROUP_SAFARI_ZONE_WARDENS_HOME EQU $11
-GROUP_ROUTE_15_FUCHSIA_GATE EQU $11
-GROUP_ROUTE_8 EQU $12
-GROUP_ROUTE_12 EQU $12
-GROUP_ROUTE_10B EQU $12
-GROUP_ROUTE_10_SOUTH EQU $12
-GROUP_LAVENDER_TOWN EQU $12
-GROUP_LAVENDER_POKECENTER_1F EQU $12
-GROUP_LAVENDER_POKECENTER_2F_BETA EQU $12
-GROUP_MR_FUJIS_HOUSE EQU $12
-GROUP_LAVENDER_TOWN_SPEECH_HOUSE EQU $12
-GROUP_LAVENDER_NAME_RATER EQU $12
-GROUP_LAVENDER_MART EQU $12
-GROUP_SOUL_HOUSE EQU $12
-GROUP_LAV_RADIO_TOWER_1F EQU $12
-GROUP_ROUTE_8_SAFFRON_GATE EQU $12
-GROUP_ROUTE_12_SUPER_ROD_HOUSE EQU $12
-GROUP_ROUTE_28 EQU $13
-GROUP_SILVER_CAVE_OUTSIDE EQU $13
-GROUP_SILVER_CAVE_POKECENTER_1F EQU $13
-GROUP_ROUTE_28_FAMOUS_SPEECH_HOUSE EQU $13
-GROUP_POKECENTER_2F EQU $14
-GROUP_TRADE_CENTER EQU $14
-GROUP_COLOSSEUM EQU $14
-GROUP_TIME_CAPSULE EQU $14
-GROUP_MOBILE_TRADE_ROOM_MOBILE EQU $14
-GROUP_MOBILE_BATTLE_ROOM EQU $14
-GROUP_ROUTE_7 EQU $15
-GROUP_ROUTE_16 EQU $15
-GROUP_ROUTE_17 EQU $15
-GROUP_CELADON_CITY EQU $15
-GROUP_CELADON_DEPT_STORE_1F EQU $15
-GROUP_CELADON_DEPT_STORE_2F EQU $15
-GROUP_CELADON_DEPT_STORE_3F EQU $15
-GROUP_CELADON_DEPT_STORE_4F EQU $15
-GROUP_CELADON_DEPT_STORE_5F EQU $15
-GROUP_CELADON_DEPT_STORE_6F EQU $15
-GROUP_CELADON_DEPT_STORE_ELEVATOR EQU $15
-GROUP_CELADON_MANSION_1F EQU $15
-GROUP_CELADON_MANSION_2F EQU $15
-GROUP_CELADON_MANSION_3F EQU $15
-GROUP_CELADON_MANSION_ROOF EQU $15
-GROUP_CELADON_MANSION_ROOF_HOUSE EQU $15
-GROUP_CELADON_POKECENTER_1F EQU $15
-GROUP_CELADON_POKECENTER_2F_BETA EQU $15
-GROUP_CELADON_GAME_CORNER EQU $15
-GROUP_CELADON_GAME_CORNER_PRIZE_ROOM EQU $15
-GROUP_CELADON_GYM EQU $15
-GROUP_CELADON_CAFE EQU $15
-GROUP_ROUTE_16_FUCHSIA_SPEECH_HOUSE EQU $15
-GROUP_ROUTE_16_GATE EQU $15
-GROUP_ROUTE_7_SAFFRON_GATE EQU $15
-GROUP_ROUTE_17_18_GATE EQU $15
-GROUP_ROUTE_40 EQU $16
-GROUP_ROUTE_41 EQU $16
-GROUP_CIANWOOD_CITY EQU $16
-GROUP_MANIAS_HOUSE EQU $16
-GROUP_CIANWOOD_GYM EQU $16
-GROUP_CIANWOOD_POKECENTER_1F EQU $16
-GROUP_CIANWOOD_PHARMACY EQU $16
-GROUP_CIANWOOD_CITY_PHOTO_STUDIO EQU $16
-GROUP_CIANWOOD_LUGIA_SPEECH_HOUSE EQU $16
-GROUP_POKE_SEERS_HOUSE EQU $16
-GROUP_BATTLE_TOWER_1F EQU $16
-GROUP_BATTLE_TOWER_BATTLE_ROOM EQU $16
-GROUP_BATTLE_TOWER_ELEVATOR EQU $16
-GROUP_BATTLE_TOWER_HALLWAY EQU $16
-GROUP_ROUTE_40_BATTLE_TOWER_GATE EQU $16
-GROUP_BATTLE_TOWER_OUTSIDE EQU $16
-GROUP_ROUTE_2 EQU $17
-GROUP_ROUTE_22 EQU $17
-GROUP_VIRIDIAN_CITY EQU $17
-GROUP_VIRIDIAN_GYM EQU $17
-GROUP_VIRIDIAN_NICKNAME_SPEECH_HOUSE EQU $17
-GROUP_TRAINER_HOUSE_1F EQU $17
-GROUP_TRAINER_HOUSE_B1F EQU $17
-GROUP_VIRIDIAN_MART EQU $17
-GROUP_VIRIDIAN_POKECENTER_1F EQU $17
-GROUP_VIRIDIAN_POKECENTER_2F_BETA EQU $17
-GROUP_ROUTE_2_NUGGET_SPEECH_HOUSE EQU $17
-GROUP_ROUTE_2_GATE EQU $17
-GROUP_VICTORY_ROAD_GATE EQU $17
-GROUP_ROUTE_26 EQU $18
-GROUP_ROUTE_27 EQU $18
-GROUP_ROUTE_29 EQU $18
-GROUP_NEW_BARK_TOWN EQU $18
-GROUP_ELMS_LAB EQU $18
-GROUP_KRISS_HOUSE_1F EQU $18
-GROUP_KRISS_HOUSE_2F EQU $18
-GROUP_KRISS_NEIGHBORS_HOUSE EQU $18
-GROUP_ELMS_HOUSE EQU $18
-GROUP_ROUTE_26_HEAL_SPEECH_HOUSE EQU $18
-GROUP_ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE EQU $18
-GROUP_ROUTE_27_SANDSTORM_HOUSE EQU $18
-GROUP_ROUTE_29_46_GATE EQU $18
-GROUP_ROUTE_5 EQU $19
-GROUP_SAFFRON_CITY EQU $19
-GROUP_FIGHTING_DOJO EQU $19
-GROUP_SAFFRON_GYM EQU $19
-GROUP_SAFFRON_MART EQU $19
-GROUP_SAFFRON_POKECENTER_1F EQU $19
-GROUP_SAFFRON_POKECENTER_2F_BETA EQU $19
-GROUP_MR_PSYCHICS_HOUSE EQU $19
-GROUP_SAFFRON_TRAIN_STATION EQU $19
-GROUP_SILPH_CO_1F EQU $19
-GROUP_COPYCATS_HOUSE_1F EQU $19
-GROUP_COPYCATS_HOUSE_2F EQU $19
-GROUP_ROUTE_5_UNDERGROUND_ENTRANCE EQU $19
-GROUP_ROUTE_5_SAFFRON_CITY_GATE EQU $19
-GROUP_ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE EQU $19
-GROUP_ROUTE_30 EQU $1a
-GROUP_ROUTE_31 EQU $1a
-GROUP_CHERRYGROVE_CITY EQU $1a
-GROUP_CHERRYGROVE_MART EQU $1a
-GROUP_CHERRYGROVE_POKECENTER_1F EQU $1a
-GROUP_CHERRYGROVE_GYM_SPEECH_HOUSE EQU $1a
-GROUP_GUIDE_GENTS_HOUSE EQU $1a
-GROUP_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE EQU $1a
-GROUP_ROUTE_30_BERRY_SPEECH_HOUSE EQU $1a
-GROUP_MR_POKEMONS_HOUSE EQU $1a
-GROUP_ROUTE_31_VIOLET_GATE EQU $1a
+	const_def
+	newgroup
+	mapgroup OLIVINE_POKECENTER_1F, 4, 5
+	mapgroup OLIVINE_GYM, 8, 5
+	mapgroup OLIVINE_VOLTORB_HOUSE, 4, 4
+	mapgroup OLIVINE_HOUSE_BETA, 4, 4
+	mapgroup OLIVINE_PUNISHMENT_SPEECH_HOUSE, 4, 4
+	mapgroup OLIVINE_GOOD_ROD_HOUSE, 4, 4
+	mapgroup OLIVINE_CAFE, 4, 4
+	mapgroup OLIVINE_MART, 4, 6
+	mapgroup ROUTE_38_ECRUTEAK_GATE, 4, 5
+	mapgroup ROUTE_39_BARN, 4, 4
+	mapgroup ROUTE_39_FARMHOUSE, 4, 4
+	mapgroup ROUTE_38, 9, 20
+	mapgroup ROUTE_39, 18, 10
+	mapgroup OLIVINE_CITY, 18, 20
 
-; map ids
-MAP_OLIVINE_POKECENTER_1F EQU $01
-MAP_OLIVINE_GYM EQU $02
-MAP_OLIVINE_VOLTORB_HOUSE EQU $03
-MAP_OLIVINE_HOUSE_BETA EQU $04
-MAP_OLIVINE_PUNISHMENT_SPEECH_HOUSE EQU $05
-MAP_OLIVINE_GOOD_ROD_HOUSE EQU $06
-MAP_OLIVINE_CAFE EQU $07
-MAP_OLIVINE_MART EQU $08
-MAP_ROUTE_38_ECRUTEAK_GATE EQU $09
-MAP_ROUTE_39_BARN EQU $0a
-MAP_ROUTE_39_FARMHOUSE EQU $0b
-MAP_ROUTE_38 EQU $0c
-MAP_ROUTE_39 EQU $0d
-MAP_OLIVINE_CITY EQU $0e
-MAP_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE EQU $01
-MAP_MAHOGANY_GYM EQU $02
-MAP_MAHOGANY_POKECENTER_1F EQU $03
-MAP_ROUTE_42_ECRUTEAK_GATE EQU $04
-MAP_ROUTE_42 EQU $05
-MAP_ROUTE_44 EQU $06
-MAP_MAHOGANY_TOWN EQU $07
-MAP_SPROUT_TOWER_1F EQU $01
-MAP_SPROUT_TOWER_2F EQU $02
-MAP_SPROUT_TOWER_3F EQU $03
-MAP_TIN_TOWER_1F EQU $04
-MAP_TIN_TOWER_2F EQU $05
-MAP_TIN_TOWER_3F EQU $06
-MAP_TIN_TOWER_4F EQU $07
-MAP_TIN_TOWER_5F EQU $08
-MAP_TIN_TOWER_6F EQU $09
-MAP_TIN_TOWER_7F EQU $0a
-MAP_TIN_TOWER_8F EQU $0b
-MAP_TIN_TOWER_9F EQU $0c
-MAP_BURNED_TOWER_1F EQU $0d
-MAP_BURNED_TOWER_B1F EQU $0e
-MAP_NATIONAL_PARK EQU $0f
-MAP_NATIONAL_PARK_BUG_CONTEST EQU $10
-MAP_RADIO_TOWER_1F EQU $11
-MAP_RADIO_TOWER_2F EQU $12
-MAP_RADIO_TOWER_3F EQU $13
-MAP_RADIO_TOWER_4F EQU $14
-MAP_RADIO_TOWER_5F EQU $15
-MAP_RUINS_OF_ALPH_OUTSIDE EQU $16
-MAP_RUINS_OF_ALPH_HO_OH_CHAMBER EQU $17
-MAP_RUINS_OF_ALPH_KABUTO_CHAMBER EQU $18
-MAP_RUINS_OF_ALPH_OMANYTE_CHAMBER EQU $19
-MAP_RUINS_OF_ALPH_AERODACTYL_CHAMBER EQU $1a
-MAP_RUINS_OF_ALPH_INNER_CHAMBER EQU $1b
-MAP_RUINS_OF_ALPH_RESEARCH_CENTER EQU $1c
-MAP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM EQU $1d
-MAP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM EQU $1e
-MAP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM EQU $1f
-MAP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM EQU $20
-MAP_RUINS_OF_ALPH_HO_OH_WORD_ROOM EQU $21
-MAP_RUINS_OF_ALPH_KABUTO_WORD_ROOM EQU $22
-MAP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM EQU $23
-MAP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM EQU $24
-MAP_UNION_CAVE_1F EQU $25
-MAP_UNION_CAVE_B1F EQU $26
-MAP_UNION_CAVE_B2F EQU $27
-MAP_SLOWPOKE_WELL_B1F EQU $28
-MAP_SLOWPOKE_WELL_B2F EQU $29
-MAP_OLIVINE_LIGHTHOUSE_1F EQU $2a
-MAP_OLIVINE_LIGHTHOUSE_2F EQU $2b
-MAP_OLIVINE_LIGHTHOUSE_3F EQU $2c
-MAP_OLIVINE_LIGHTHOUSE_4F EQU $2d
-MAP_OLIVINE_LIGHTHOUSE_5F EQU $2e
-MAP_OLIVINE_LIGHTHOUSE_6F EQU $2f
-MAP_MAHOGANY_MART_1F EQU $30
-MAP_TEAM_ROCKET_BASE_B1F EQU $31
-MAP_TEAM_ROCKET_BASE_B2F EQU $32
-MAP_TEAM_ROCKET_BASE_B3F EQU $33
-MAP_ILEX_FOREST EQU $34
-MAP_WAREHOUSE_ENTRANCE EQU $35
-MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES EQU $36
-MAP_GOLDENROD_DEPT_STORE_B1F EQU $37
-MAP_UNDERGROUND_WAREHOUSE EQU $38
-MAP_MOUNT_MORTAR_1F_OUTSIDE EQU $39
-MAP_MOUNT_MORTAR_1F_INSIDE EQU $3a
-MAP_MOUNT_MORTAR_2F_INSIDE EQU $3b
-MAP_MOUNT_MORTAR_B1F EQU $3c
-MAP_ICE_PATH_1F EQU $3d
-MAP_ICE_PATH_B1F EQU $3e
-MAP_ICE_PATH_B2F_MAHOGANY_SIDE EQU $3f
-MAP_ICE_PATH_B2F_BLACKTHORN_SIDE EQU $40
-MAP_ICE_PATH_B3F EQU $41
-MAP_WHIRL_ISLAND_NW EQU $42
-MAP_WHIRL_ISLAND_NE EQU $43
-MAP_WHIRL_ISLAND_SW EQU $44
-MAP_WHIRL_ISLAND_CAVE EQU $45
-MAP_WHIRL_ISLAND_SE EQU $46
-MAP_WHIRL_ISLAND_B1F EQU $47
-MAP_WHIRL_ISLAND_B2F EQU $48
-MAP_WHIRL_ISLAND_LUGIA_CHAMBER EQU $49
-MAP_SILVER_CAVE_ROOM_1 EQU $4a
-MAP_SILVER_CAVE_ROOM_2 EQU $4b
-MAP_SILVER_CAVE_ROOM_3 EQU $4c
-MAP_SILVER_CAVE_ITEM_ROOMS EQU $4d
-MAP_DARK_CAVE_VIOLET_ENTRANCE EQU $4e
-MAP_DARK_CAVE_BLACKTHORN_ENTRANCE EQU $4f
-MAP_DRAGONS_DEN_1F EQU $50
-MAP_DRAGONS_DEN_B1F EQU $51
-MAP_DRAGON_SHRINE EQU $52
-MAP_TOHJO_FALLS EQU $53
-MAP_DIGLETTS_CAVE EQU $54
-MAP_MOUNT_MOON EQU $55
-MAP_UNDERGROUND EQU $56
-MAP_ROCK_TUNNEL_1F EQU $57
-MAP_ROCK_TUNNEL_B1F EQU $58
-MAP_SAFARI_ZONE_FUCHSIA_GATE_BETA EQU $59
-MAP_SAFARI_ZONE_BETA EQU $5a
-MAP_VICTORY_ROAD EQU $5b
-MAP_ECRUTEAK_HOUSE EQU $01
-MAP_WISE_TRIOS_ROOM EQU $02
-MAP_ECRUTEAK_POKECENTER_1F EQU $03
-MAP_ECRUTEAK_LUGIA_SPEECH_HOUSE EQU $04
-MAP_DANCE_THEATRE EQU $05
-MAP_ECRUTEAK_MART EQU $06
-MAP_ECRUTEAK_GYM EQU $07
-MAP_ECRUTEAK_ITEMFINDER_HOUSE EQU $08
-MAP_ECRUTEAK_CITY EQU $09
-MAP_BLACKTHORN_GYM_1F EQU $01
-MAP_BLACKTHORN_GYM_2F EQU $02
-MAP_BLACKTHORN_DRAGON_SPEECH_HOUSE EQU $03
-MAP_BLACKTHORN_DODRIO_TRADE_HOUSE EQU $04
-MAP_BLACKTHORN_MART EQU $05
-MAP_BLACKTHORN_POKECENTER_1F EQU $06
-MAP_MOVE_DELETERS_HOUSE EQU $07
-MAP_ROUTE_45 EQU $08
-MAP_ROUTE_46 EQU $09
-MAP_BLACKTHORN_CITY EQU $0a
-MAP_CINNABAR_POKECENTER_1F EQU $01
-MAP_CINNABAR_POKECENTER_2F_BETA EQU $02
-MAP_ROUTE_19___FUCHSIA_GATE EQU $03
-MAP_SEAFOAM_GYM EQU $04
-MAP_ROUTE_19 EQU $05
-MAP_ROUTE_20 EQU $06
-MAP_ROUTE_21 EQU $07
-MAP_CINNABAR_ISLAND EQU $08
-MAP_CERULEAN_GYM_BADGE_SPEECH_HOUSE EQU $01
-MAP_CERULEAN_POLICE_STATION EQU $02
-MAP_CERULEAN_TRADE_SPEECH_HOUSE EQU $03
-MAP_CERULEAN_POKECENTER_1F EQU $04
-MAP_CERULEAN_POKECENTER_2F_BETA EQU $05
-MAP_CERULEAN_GYM EQU $06
-MAP_CERULEAN_MART EQU $07
-MAP_ROUTE_10_POKECENTER_1F EQU $08
-MAP_ROUTE_10_POKECENTER_2F_BETA EQU $09
-MAP_POWER_PLANT EQU $0a
-MAP_BILLS_HOUSE EQU $0b
-MAP_ROUTE_4 EQU $0c
-MAP_ROUTE_9 EQU $0d
-MAP_ROUTE_10A EQU $0e
-MAP_ROUTE_10_NORTH EQU $0e
-MAP_ROUTE_24 EQU $0f
-MAP_ROUTE_25 EQU $10
-MAP_CERULEAN_CITY EQU $11
-MAP_AZALEA_POKECENTER_1F EQU $01
-MAP_CHARCOAL_KILN EQU $02
-MAP_AZALEA_MART EQU $03
-MAP_KURTS_HOUSE EQU $04
-MAP_AZALEA_GYM EQU $05
-MAP_ROUTE_33 EQU $06
-MAP_AZALEA_TOWN EQU $07
-MAP_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE EQU $01
-MAP_LAKE_OF_RAGE_MAGIKARP_HOUSE EQU $02
-MAP_ROUTE_43_MAHOGANY_GATE EQU $03
-MAP_ROUTE_43_GATE EQU $04
-MAP_ROUTE_43 EQU $05
-MAP_LAKE_OF_RAGE EQU $06
-MAP_ROUTE_32 EQU $01
-MAP_ROUTE_35 EQU $02
-MAP_ROUTE_36 EQU $03
-MAP_ROUTE_37 EQU $04
-MAP_VIOLET_CITY EQU $05
-MAP_VIOLET_MART EQU $06
-MAP_VIOLET_GYM EQU $07
-MAP_EARLS_POKEMON_ACADEMY EQU $08
-MAP_VIOLET_NICKNAME_SPEECH_HOUSE EQU $09
-MAP_VIOLET_POKECENTER_1F EQU $0a
-MAP_VIOLET_ONIX_TRADE_HOUSE EQU $0b
-MAP_ROUTE_32_RUINS_OF_ALPH_GATE EQU $0c
-MAP_ROUTE_32_POKECENTER_1F EQU $0d
-MAP_ROUTE_35_GOLDENROD_GATE EQU $0e
-MAP_ROUTE_35_NATIONAL_PARK_GATE EQU $0f
-MAP_ROUTE_36_RUINS_OF_ALPH_GATE EQU $10
-MAP_ROUTE_36_NATIONAL_PARK_GATE EQU $11
-MAP_ROUTE_34 EQU $01
-MAP_GOLDENROD_CITY EQU $02
-MAP_GOLDENROD_GYM EQU $03
-MAP_GOLDENROD_BIKE_SHOP EQU $04
-MAP_GOLDENROD_HAPPINESS_RATER EQU $05
-MAP_GOLDENROD_BILLS_HOUSE EQU $06
-MAP_GOLDENROD_MAGNET_TRAIN_STATION EQU $07
-MAP_GOLDENROD_FLOWER_SHOP EQU $08
-MAP_GOLDENROD_PP_SPEECH_HOUSE EQU $09
-MAP_GOLDENROD_NAME_RATERS_HOUSE EQU $0a
-MAP_GOLDENROD_DEPT_STORE_1F EQU $0b
-MAP_GOLDENROD_DEPT_STORE_2F EQU $0c
-MAP_GOLDENROD_DEPT_STORE_3F EQU $0d
-MAP_GOLDENROD_DEPT_STORE_4F EQU $0e
-MAP_GOLDENROD_DEPT_STORE_5F EQU $0f
-MAP_GOLDENROD_DEPT_STORE_6F EQU $10
-MAP_GOLDENROD_DEPT_STORE_ELEVATOR EQU $11
-MAP_GOLDENROD_DEPT_STORE_ROOF EQU $12
-MAP_GOLDENROD_GAME_CORNER EQU $13
-MAP_GOLDENROD_POKECENTER_1F EQU $14
-MAP_GOLDENROD_POKECOM_CENTER_2F_MOBILE EQU $15
-MAP_ILEX_FOREST_AZALEA_GATE EQU $16
-MAP_ROUTE_34_ILEX_FOREST_GATE EQU $17
-MAP_DAY_CARE EQU $18
-MAP_ROUTE_6 EQU $01
-MAP_ROUTE_11 EQU $02
-MAP_VERMILION_CITY EQU $03
-MAP_VERMILION_HOUSE_FISHING_SPEECH_HOUSE EQU $04
-MAP_VERMILION_POKECENTER_1F EQU $05
-MAP_VERMILION_POKECENTER_2F_BETA EQU $06
-MAP_POKEMON_FAN_CLUB EQU $07
-MAP_VERMILION_MAGNET_TRAIN_SPEECH_HOUSE EQU $08
-MAP_VERMILION_MART EQU $09
-MAP_VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE EQU $0a
-MAP_VERMILION_GYM EQU $0b
-MAP_ROUTE_6_SAFFRON_GATE EQU $0c
-MAP_ROUTE_6_UNDERGROUND_ENTRANCE EQU $0d
-MAP_ROUTE_1 EQU $01
-MAP_PALLET_TOWN EQU $02
-MAP_REDS_HOUSE_1F EQU $03
-MAP_REDS_HOUSE_2F EQU $04
-MAP_BLUES_HOUSE EQU $05
-MAP_OAKS_LAB EQU $06
-MAP_ROUTE_3 EQU $01
-MAP_PEWTER_CITY EQU $02
-MAP_PEWTER_NIDORAN_SPEECH_HOUSE EQU $03
-MAP_PEWTER_GYM EQU $04
-MAP_PEWTER_MART EQU $05
-MAP_PEWTER_POKECENTER_1F EQU $06
-MAP_PEWTER_POKECENTER_2F_BETA EQU $07
-MAP_PEWTER_SNOOZE_SPEECH_HOUSE EQU $08
-MAP_OLIVINE_PORT EQU $01
-MAP_VERMILION_PORT EQU $02
-MAP_FAST_SHIP_1F EQU $03
-MAP_FAST_SHIP_CABINS_NNW_NNE_NE EQU $04
-MAP_FAST_SHIP_CABINS_SW_SSW_NW EQU $05
-MAP_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN EQU $06
-MAP_FAST_SHIP_B1F EQU $07
-MAP_OLIVINE_PORT_PASSAGE EQU $08
-MAP_VERMILION_PORT_PASSAGE EQU $09
-MAP_MOUNT_MOON_SQUARE EQU $0a
-MAP_MOUNT_MOON_GIFT_SHOP EQU $0b
-MAP_TIN_TOWER_ROOF EQU $0c
-MAP_ROUTE_23 EQU $01
-MAP_INDIGO_PLATEAU_POKECENTER_1F EQU $02
-MAP_WILLS_ROOM EQU $03
-MAP_KOGAS_ROOM EQU $04
-MAP_BRUNOS_ROOM EQU $05
-MAP_KARENS_ROOM EQU $06
-MAP_LANCES_ROOM EQU $07
-MAP_HALL_OF_FAME EQU $08
-MAP_ROUTE_13 EQU $01
-MAP_ROUTE_14 EQU $02
-MAP_ROUTE_15 EQU $03
-MAP_ROUTE_18 EQU $04
-MAP_FUCHSIA_CITY EQU $05
-MAP_FUCHSIA_MART EQU $06
-MAP_SAFARI_ZONE_MAIN_OFFICE EQU $07
-MAP_FUCHSIA_GYM EQU $08
-MAP_FUCHSIA_BILL_SPEECH_HOUSE EQU $09
-MAP_FUCHSIA_POKECENTER_1F EQU $0a
-MAP_FUCHSIA_POKECENTER_2F_BETA EQU $0b
-MAP_SAFARI_ZONE_WARDENS_HOME EQU $0c
-MAP_ROUTE_15_FUCHSIA_GATE EQU $0d
-MAP_ROUTE_8 EQU $01
-MAP_ROUTE_12 EQU $02
-MAP_ROUTE_10B EQU $03
-MAP_ROUTE_10_SOUTH EQU $03
-MAP_LAVENDER_TOWN EQU $04
-MAP_LAVENDER_POKECENTER_1F EQU $05
-MAP_LAVENDER_POKECENTER_2F_BETA EQU $06
-MAP_MR_FUJIS_HOUSE EQU $07
-MAP_LAVENDER_TOWN_SPEECH_HOUSE EQU $08
-MAP_LAVENDER_NAME_RATER EQU $09
-MAP_LAVENDER_MART EQU $0a
-MAP_SOUL_HOUSE EQU $0b
-MAP_LAV_RADIO_TOWER_1F EQU $0c
-MAP_ROUTE_8_SAFFRON_GATE EQU $0d
-MAP_ROUTE_12_SUPER_ROD_HOUSE EQU $0e
-MAP_ROUTE_28 EQU $01
-MAP_SILVER_CAVE_OUTSIDE EQU $02
-MAP_SILVER_CAVE_POKECENTER_1F EQU $03
-MAP_ROUTE_28_FAMOUS_SPEECH_HOUSE EQU $04
-MAP_POKECENTER_2F EQU $01
-MAP_TRADE_CENTER EQU $02
-MAP_COLOSSEUM EQU $03
-MAP_TIME_CAPSULE EQU $04
-MAP_MOBILE_TRADE_ROOM_MOBILE EQU $05
-MAP_MOBILE_BATTLE_ROOM EQU $06
-MAP_ROUTE_7 EQU $01
-MAP_ROUTE_16 EQU $02
-MAP_ROUTE_17 EQU $03
-MAP_CELADON_CITY EQU $04
-MAP_CELADON_DEPT_STORE_1F EQU $05
-MAP_CELADON_DEPT_STORE_2F EQU $06
-MAP_CELADON_DEPT_STORE_3F EQU $07
-MAP_CELADON_DEPT_STORE_4F EQU $08
-MAP_CELADON_DEPT_STORE_5F EQU $09
-MAP_CELADON_DEPT_STORE_6F EQU $0a
-MAP_CELADON_DEPT_STORE_ELEVATOR EQU $0b
-MAP_CELADON_MANSION_1F EQU $0c
-MAP_CELADON_MANSION_2F EQU $0d
-MAP_CELADON_MANSION_3F EQU $0e
-MAP_CELADON_MANSION_ROOF EQU $0f
-MAP_CELADON_MANSION_ROOF_HOUSE EQU $10
-MAP_CELADON_POKECENTER_1F EQU $11
-MAP_CELADON_POKECENTER_2F_BETA EQU $12
-MAP_CELADON_GAME_CORNER EQU $13
-MAP_CELADON_GAME_CORNER_PRIZE_ROOM EQU $14
-MAP_CELADON_GYM EQU $15
-MAP_CELADON_CAFE EQU $16
-MAP_ROUTE_16_FUCHSIA_SPEECH_HOUSE EQU $17
-MAP_ROUTE_16_GATE EQU $18
-MAP_ROUTE_7_SAFFRON_GATE EQU $19
-MAP_ROUTE_17_18_GATE EQU $1a
-MAP_ROUTE_40 EQU $01
-MAP_ROUTE_41 EQU $02
-MAP_CIANWOOD_CITY EQU $03
-MAP_MANIAS_HOUSE EQU $04
-MAP_CIANWOOD_GYM EQU $05
-MAP_CIANWOOD_POKECENTER_1F EQU $06
-MAP_CIANWOOD_PHARMACY EQU $07
-MAP_CIANWOOD_CITY_PHOTO_STUDIO EQU $08
-MAP_CIANWOOD_LUGIA_SPEECH_HOUSE EQU $09
-MAP_POKE_SEERS_HOUSE EQU $0a
-MAP_BATTLE_TOWER_1F EQU $0b
-MAP_BATTLE_TOWER_BATTLE_ROOM EQU $0c
-MAP_BATTLE_TOWER_ELEVATOR EQU $0d
-MAP_BATTLE_TOWER_HALLWAY EQU $0e
-MAP_ROUTE_40_BATTLE_TOWER_GATE EQU $0f
-MAP_BATTLE_TOWER_OUTSIDE EQU $10
-MAP_ROUTE_2 EQU $01
-MAP_ROUTE_22 EQU $02
-MAP_VIRIDIAN_CITY EQU $03
-MAP_VIRIDIAN_GYM EQU $04
-MAP_VIRIDIAN_NICKNAME_SPEECH_HOUSE EQU $05
-MAP_TRAINER_HOUSE_1F EQU $06
-MAP_TRAINER_HOUSE_B1F EQU $07
-MAP_VIRIDIAN_MART EQU $08
-MAP_VIRIDIAN_POKECENTER_1F EQU $09
-MAP_VIRIDIAN_POKECENTER_2F_BETA EQU $0a
-MAP_ROUTE_2_NUGGET_SPEECH_HOUSE EQU $0b
-MAP_ROUTE_2_GATE EQU $0c
-MAP_VICTORY_ROAD_GATE EQU $0d
-MAP_ROUTE_26 EQU $01
-MAP_ROUTE_27 EQU $02
-MAP_ROUTE_29 EQU $03
-MAP_NEW_BARK_TOWN EQU $04
-MAP_ELMS_LAB EQU $05
-MAP_KRISS_HOUSE_1F EQU $06
-MAP_KRISS_HOUSE_2F EQU $07
-MAP_KRISS_NEIGHBORS_HOUSE EQU $08
-MAP_ELMS_HOUSE EQU $09
-MAP_ROUTE_26_HEAL_SPEECH_HOUSE EQU $0a
-MAP_ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE EQU $0b
-MAP_ROUTE_27_SANDSTORM_HOUSE EQU $0c
-MAP_ROUTE_29_46_GATE EQU $0d
-MAP_ROUTE_5 EQU $01
-MAP_SAFFRON_CITY EQU $02
-MAP_FIGHTING_DOJO EQU $03
-MAP_SAFFRON_GYM EQU $04
-MAP_SAFFRON_MART EQU $05
-MAP_SAFFRON_POKECENTER_1F EQU $06
-MAP_SAFFRON_POKECENTER_2F_BETA EQU $07
-MAP_MR_PSYCHICS_HOUSE EQU $08
-MAP_SAFFRON_TRAIN_STATION EQU $09
-MAP_SILPH_CO_1F EQU $0a
-MAP_COPYCATS_HOUSE_1F EQU $0b
-MAP_COPYCATS_HOUSE_2F EQU $0c
-MAP_ROUTE_5_UNDERGROUND_ENTRANCE EQU $0d
-MAP_ROUTE_5_SAFFRON_CITY_GATE EQU $0e
-MAP_ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE EQU $0f
-MAP_ROUTE_30 EQU $01
-MAP_ROUTE_31 EQU $02
-MAP_CHERRYGROVE_CITY EQU $03
-MAP_CHERRYGROVE_MART EQU $04
-MAP_CHERRYGROVE_POKECENTER_1F EQU $05
-MAP_CHERRYGROVE_GYM_SPEECH_HOUSE EQU $06
-MAP_GUIDE_GENTS_HOUSE EQU $07
-MAP_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE EQU $08
-MAP_ROUTE_30_BERRY_SPEECH_HOUSE EQU $09
-MAP_MR_POKEMONS_HOUSE EQU $0a
-MAP_ROUTE_31_VIOLET_GATE EQU $0b
+	newgroup
+	mapgroup MAHOGANY_RED_GYARADOS_SPEECH_HOUSE, 4, 4
+	mapgroup MAHOGANY_GYM, 9, 5
+	mapgroup MAHOGANY_POKECENTER_1F, 4, 5
+	mapgroup ROUTE_42_ECRUTEAK_GATE, 4, 5
+	mapgroup ROUTE_42, 9, 30
+	mapgroup ROUTE_44, 9, 30
+	mapgroup MAHOGANY_TOWN, 9, 10
+
+	newgroup
+	mapgroup SPROUT_TOWER_1F, 8, 10
+	mapgroup SPROUT_TOWER_2F, 8, 10
+	mapgroup SPROUT_TOWER_3F, 8, 10
+	mapgroup TIN_TOWER_1F, 9, 10
+	mapgroup TIN_TOWER_2F, 9, 10
+	mapgroup TIN_TOWER_3F, 9, 10
+	mapgroup TIN_TOWER_4F, 9, 10
+	mapgroup TIN_TOWER_5F, 9, 10
+	mapgroup TIN_TOWER_6F, 9, 10
+	mapgroup TIN_TOWER_7F, 9, 10
+	mapgroup TIN_TOWER_8F, 9, 10
+	mapgroup TIN_TOWER_9F, 9, 10
+	mapgroup BURNED_TOWER_1F, 9, 10
+	mapgroup BURNED_TOWER_B1F, 9, 10
+	mapgroup NATIONAL_PARK, 27, 20
+	mapgroup NATIONAL_PARK_BUG_CONTEST, 27, 20
+	mapgroup RADIO_TOWER_1F, 4, 9
+	mapgroup RADIO_TOWER_2F, 4, 9
+	mapgroup RADIO_TOWER_3F, 4, 9
+	mapgroup RADIO_TOWER_4F, 4, 9
+	mapgroup RADIO_TOWER_5F, 4, 9
+	mapgroup RUINS_OF_ALPH_OUTSIDE, 18, 10
+	mapgroup RUINS_OF_ALPH_HO_OH_CHAMBER, 5, 4
+	mapgroup RUINS_OF_ALPH_KABUTO_CHAMBER, 5, 4
+	mapgroup RUINS_OF_ALPH_OMANYTE_CHAMBER, 5, 4
+	mapgroup RUINS_OF_ALPH_AERODACTYL_CHAMBER, 5, 4
+	mapgroup RUINS_OF_ALPH_INNER_CHAMBER, 14, 10
+	mapgroup RUINS_OF_ALPH_RESEARCH_CENTER, 4, 4
+	mapgroup RUINS_OF_ALPH_HO_OH_ITEM_ROOM, 5, 4
+	mapgroup RUINS_OF_ALPH_KABUTO_ITEM_ROOM, 5, 4
+	mapgroup RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, 5, 4
+	mapgroup RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, 5, 4
+	mapgroup RUINS_OF_ALPH_HO_OH_WORD_ROOM, 12, 10
+	mapgroup RUINS_OF_ALPH_KABUTO_WORD_ROOM, 7, 10
+	mapgroup RUINS_OF_ALPH_OMANYTE_WORD_ROOM, 8, 10
+	mapgroup RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, 7, 10
+	mapgroup UNION_CAVE_1F, 18, 10
+	mapgroup UNION_CAVE_B1F, 18, 10
+	mapgroup UNION_CAVE_B2F, 18, 10
+	mapgroup SLOWPOKE_WELL_B1F, 9, 10
+	mapgroup SLOWPOKE_WELL_B2F, 9, 10
+	mapgroup OLIVINE_LIGHTHOUSE_1F, 9, 10
+	mapgroup OLIVINE_LIGHTHOUSE_2F, 9, 10
+	mapgroup OLIVINE_LIGHTHOUSE_3F, 9, 10
+	mapgroup OLIVINE_LIGHTHOUSE_4F, 9, 10
+	mapgroup OLIVINE_LIGHTHOUSE_5F, 9, 10
+	mapgroup OLIVINE_LIGHTHOUSE_6F, 9, 10
+	mapgroup MAHOGANY_MART_1F, 4, 4
+	mapgroup TEAM_ROCKET_BASE_B1F, 9, 15
+	mapgroup TEAM_ROCKET_BASE_B2F, 9, 15
+	mapgroup TEAM_ROCKET_BASE_B3F, 9, 15
+	mapgroup ILEX_FOREST, 27, 15
+	mapgroup WAREHOUSE_ENTRANCE, 18, 15
+	mapgroup UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, 18, 15
+	mapgroup GOLDENROD_DEPT_STORE_B1F, 9, 10
+	mapgroup UNDERGROUND_WAREHOUSE, 9, 10
+	mapgroup MOUNT_MORTAR_1F_OUTSIDE, 18, 20
+	mapgroup MOUNT_MORTAR_1F_INSIDE, 27, 20
+	mapgroup MOUNT_MORTAR_2F_INSIDE, 18, 20
+	mapgroup MOUNT_MORTAR_B1F, 18, 20
+	mapgroup ICE_PATH_1F, 18, 20
+	mapgroup ICE_PATH_B1F, 18, 10
+	mapgroup ICE_PATH_B2F_MAHOGANY_SIDE, 9, 10
+	mapgroup ICE_PATH_B2F_BLACKTHORN_SIDE, 9, 5
+	mapgroup ICE_PATH_B3F, 9, 10
+	mapgroup WHIRL_ISLAND_NW, 9, 5
+	mapgroup WHIRL_ISLAND_NE, 9, 10
+	mapgroup WHIRL_ISLAND_SW, 9, 10
+	mapgroup WHIRL_ISLAND_CAVE, 9, 5
+	mapgroup WHIRL_ISLAND_SE, 9, 5
+	mapgroup WHIRL_ISLAND_B1F, 18, 20
+	mapgroup WHIRL_ISLAND_B2F, 18, 10
+	mapgroup WHIRL_ISLAND_LUGIA_CHAMBER, 9, 10
+	mapgroup SILVER_CAVE_ROOM_1, 18, 10
+	mapgroup SILVER_CAVE_ROOM_2, 18, 15
+	mapgroup SILVER_CAVE_ROOM_3, 18, 10
+	mapgroup SILVER_CAVE_ITEM_ROOMS, 9, 10
+	mapgroup DARK_CAVE_VIOLET_ENTRANCE, 18, 20
+	mapgroup DARK_CAVE_BLACKTHORN_ENTRANCE, 18, 15
+	mapgroup DRAGONS_DEN_1F, 9, 5
+	mapgroup DRAGONS_DEN_B1F, 18, 20
+	mapgroup DRAGON_SHRINE, 5, 5
+	mapgroup TOHJO_FALLS, 9, 15
+	mapgroup DIGLETTS_CAVE, 18, 10
+	mapgroup MOUNT_MOON, 9, 15
+	mapgroup UNDERGROUND, 14, 3
+	mapgroup ROCK_TUNNEL_1F, 18, 15
+	mapgroup ROCK_TUNNEL_B1F, 18, 15
+	mapgroup SAFARI_ZONE_FUCHSIA_GATE_BETA, 4, 5
+	mapgroup SAFARI_ZONE_BETA, 18, 10
+	mapgroup VICTORY_ROAD, 36, 10
 
-; map dimensions
-OLIVINE_POKECENTER_1F_HEIGHT EQU 4
-OLIVINE_POKECENTER_1F_WIDTH EQU 5
-OLIVINE_GYM_HEIGHT EQU 8
-OLIVINE_GYM_WIDTH EQU 5
-OLIVINE_VOLTORB_HOUSE_HEIGHT EQU 4
-OLIVINE_VOLTORB_HOUSE_WIDTH EQU 4
-OLIVINE_HOUSE_BETA_HEIGHT EQU 4
-OLIVINE_HOUSE_BETA_WIDTH EQU 4
-OLIVINE_PUNISHMENT_SPEECH_HOUSE_HEIGHT EQU 4
-OLIVINE_PUNISHMENT_SPEECH_HOUSE_WIDTH EQU 4
-OLIVINE_GOOD_ROD_HOUSE_HEIGHT EQU 4
-OLIVINE_GOOD_ROD_HOUSE_WIDTH EQU 4
-OLIVINE_CAFE_HEIGHT EQU 4
-OLIVINE_CAFE_WIDTH EQU 4
-OLIVINE_MART_HEIGHT EQU 4
-OLIVINE_MART_WIDTH EQU 6
-ROUTE_38_ECRUTEAK_GATE_HEIGHT EQU 4
-ROUTE_38_ECRUTEAK_GATE_WIDTH EQU 5
-ROUTE_39_BARN_HEIGHT EQU 4
-ROUTE_39_BARN_WIDTH EQU 4
-ROUTE_39_FARMHOUSE_HEIGHT EQU 4
-ROUTE_39_FARMHOUSE_WIDTH EQU 4
-ROUTE_38_HEIGHT EQU 9
-ROUTE_38_WIDTH EQU 20
-ROUTE_39_HEIGHT EQU 18
-ROUTE_39_WIDTH EQU 10
-OLIVINE_CITY_HEIGHT EQU 18
-OLIVINE_CITY_WIDTH EQU 20
-MAHOGANY_RED_GYARADOS_SPEECH_HOUSE_HEIGHT EQU 4
-MAHOGANY_RED_GYARADOS_SPEECH_HOUSE_WIDTH EQU 4
-MAHOGANY_GYM_HEIGHT EQU 9
-MAHOGANY_GYM_WIDTH EQU 5
-MAHOGANY_POKECENTER_1F_HEIGHT EQU 4
-MAHOGANY_POKECENTER_1F_WIDTH EQU 5
-ROUTE_42_ECRUTEAK_GATE_HEIGHT EQU 4
-ROUTE_42_ECRUTEAK_GATE_WIDTH EQU 5
-ROUTE_42_HEIGHT EQU 9
-ROUTE_42_WIDTH EQU 30
-ROUTE_44_HEIGHT EQU 9
-ROUTE_44_WIDTH EQU 30
-MAHOGANY_TOWN_HEIGHT EQU 9
-MAHOGANY_TOWN_WIDTH EQU 10
-SPROUT_TOWER_1F_HEIGHT EQU 8
-SPROUT_TOWER_1F_WIDTH EQU 10
-SPROUT_TOWER_2F_HEIGHT EQU 8
-SPROUT_TOWER_2F_WIDTH EQU 10
-SPROUT_TOWER_3F_HEIGHT EQU 8
-SPROUT_TOWER_3F_WIDTH EQU 10
-TIN_TOWER_1F_HEIGHT EQU 9
-TIN_TOWER_1F_WIDTH EQU 10
-TIN_TOWER_2F_HEIGHT EQU 9
-TIN_TOWER_2F_WIDTH EQU 10
-TIN_TOWER_3F_HEIGHT EQU 9
-TIN_TOWER_3F_WIDTH EQU 10
-TIN_TOWER_4F_HEIGHT EQU 9
-TIN_TOWER_4F_WIDTH EQU 10
-TIN_TOWER_5F_HEIGHT EQU 9
-TIN_TOWER_5F_WIDTH EQU 10
-TIN_TOWER_6F_HEIGHT EQU 9
-TIN_TOWER_6F_WIDTH EQU 10
-TIN_TOWER_7F_HEIGHT EQU 9
-TIN_TOWER_7F_WIDTH EQU 10
-TIN_TOWER_8F_HEIGHT EQU 9
-TIN_TOWER_8F_WIDTH EQU 10
-TIN_TOWER_9F_HEIGHT EQU 9
-TIN_TOWER_9F_WIDTH EQU 10
-BURNED_TOWER_1F_HEIGHT EQU 9
-BURNED_TOWER_1F_WIDTH EQU 10
-BURNED_TOWER_B1F_HEIGHT EQU 9
-BURNED_TOWER_B1F_WIDTH EQU 10
-NATIONAL_PARK_HEIGHT EQU 27
-NATIONAL_PARK_WIDTH EQU 20
-NATIONAL_PARK_BUG_CONTEST_HEIGHT EQU 27
-NATIONAL_PARK_BUG_CONTEST_WIDTH EQU 20
-RADIO_TOWER_1F_HEIGHT EQU 4
-RADIO_TOWER_1F_WIDTH EQU 9
-RADIO_TOWER_2F_HEIGHT EQU 4
-RADIO_TOWER_2F_WIDTH EQU 9
-RADIO_TOWER_3F_HEIGHT EQU 4
-RADIO_TOWER_3F_WIDTH EQU 9
-RADIO_TOWER_4F_HEIGHT EQU 4
-RADIO_TOWER_4F_WIDTH EQU 9
-RADIO_TOWER_5F_HEIGHT EQU 4
-RADIO_TOWER_5F_WIDTH EQU 9
-RUINS_OF_ALPH_OUTSIDE_HEIGHT EQU 18
-RUINS_OF_ALPH_OUTSIDE_WIDTH EQU 10
-RUINS_OF_ALPH_HO_OH_CHAMBER_HEIGHT EQU 5
-RUINS_OF_ALPH_HO_OH_CHAMBER_WIDTH EQU 4
-RUINS_OF_ALPH_KABUTO_CHAMBER_HEIGHT EQU 5
-RUINS_OF_ALPH_KABUTO_CHAMBER_WIDTH EQU 4
-RUINS_OF_ALPH_OMANYTE_CHAMBER_HEIGHT EQU 5
-RUINS_OF_ALPH_OMANYTE_CHAMBER_WIDTH EQU 4
-RUINS_OF_ALPH_AERODACTYL_CHAMBER_HEIGHT EQU 5
-RUINS_OF_ALPH_AERODACTYL_CHAMBER_WIDTH EQU 4
-RUINS_OF_ALPH_INNER_CHAMBER_HEIGHT EQU 14
-RUINS_OF_ALPH_INNER_CHAMBER_WIDTH EQU 10
-RUINS_OF_ALPH_RESEARCH_CENTER_HEIGHT EQU 4
-RUINS_OF_ALPH_RESEARCH_CENTER_WIDTH EQU 4
-RUINS_OF_ALPH_HO_OH_ITEM_ROOM_HEIGHT EQU 5
-RUINS_OF_ALPH_HO_OH_ITEM_ROOM_WIDTH EQU 4
-RUINS_OF_ALPH_KABUTO_ITEM_ROOM_HEIGHT EQU 5
-RUINS_OF_ALPH_KABUTO_ITEM_ROOM_WIDTH EQU 4
-RUINS_OF_ALPH_OMANYTE_ITEM_ROOM_HEIGHT EQU 5
-RUINS_OF_ALPH_OMANYTE_ITEM_ROOM_WIDTH EQU 4
-RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM_HEIGHT EQU 5
-RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM_WIDTH EQU 4
-RUINS_OF_ALPH_HO_OH_WORD_ROOM_HEIGHT EQU 12
-RUINS_OF_ALPH_HO_OH_WORD_ROOM_WIDTH EQU 10
-RUINS_OF_ALPH_KABUTO_WORD_ROOM_HEIGHT EQU 7
-RUINS_OF_ALPH_KABUTO_WORD_ROOM_WIDTH EQU 10
-RUINS_OF_ALPH_OMANYTE_WORD_ROOM_HEIGHT EQU 8
-RUINS_OF_ALPH_OMANYTE_WORD_ROOM_WIDTH EQU 10
-RUINS_OF_ALPH_AERODACTYL_WORD_ROOM_HEIGHT EQU 7
-RUINS_OF_ALPH_AERODACTYL_WORD_ROOM_WIDTH EQU 10
-UNION_CAVE_1F_HEIGHT EQU 18
-UNION_CAVE_1F_WIDTH EQU 10
-UNION_CAVE_B1F_HEIGHT EQU 18
-UNION_CAVE_B1F_WIDTH EQU 10
-UNION_CAVE_B2F_HEIGHT EQU 18
-UNION_CAVE_B2F_WIDTH EQU 10
-SLOWPOKE_WELL_B1F_HEIGHT EQU 9
-SLOWPOKE_WELL_B1F_WIDTH EQU 10
-SLOWPOKE_WELL_B2F_HEIGHT EQU 9
-SLOWPOKE_WELL_B2F_WIDTH EQU 10
-OLIVINE_LIGHTHOUSE_1F_HEIGHT EQU 9
-OLIVINE_LIGHTHOUSE_1F_WIDTH EQU 10
-OLIVINE_LIGHTHOUSE_2F_HEIGHT EQU 9
-OLIVINE_LIGHTHOUSE_2F_WIDTH EQU 10
-OLIVINE_LIGHTHOUSE_3F_HEIGHT EQU 9
-OLIVINE_LIGHTHOUSE_3F_WIDTH EQU 10
-OLIVINE_LIGHTHOUSE_4F_HEIGHT EQU 9
-OLIVINE_LIGHTHOUSE_4F_WIDTH EQU 10
-OLIVINE_LIGHTHOUSE_5F_HEIGHT EQU 9
-OLIVINE_LIGHTHOUSE_5F_WIDTH EQU 10
-OLIVINE_LIGHTHOUSE_6F_HEIGHT EQU 9
-OLIVINE_LIGHTHOUSE_6F_WIDTH EQU 10
-MAHOGANY_MART_1F_HEIGHT EQU 4
-MAHOGANY_MART_1F_WIDTH EQU 4
-TEAM_ROCKET_BASE_B1F_HEIGHT EQU 9
-TEAM_ROCKET_BASE_B1F_WIDTH EQU 15
-TEAM_ROCKET_BASE_B2F_HEIGHT EQU 9
-TEAM_ROCKET_BASE_B2F_WIDTH EQU 15
-TEAM_ROCKET_BASE_B3F_HEIGHT EQU 9
-TEAM_ROCKET_BASE_B3F_WIDTH EQU 15
-ILEX_FOREST_HEIGHT EQU 27
-ILEX_FOREST_WIDTH EQU 15
-WAREHOUSE_ENTRANCE_HEIGHT EQU 18
-WAREHOUSE_ENTRANCE_WIDTH EQU 15
-UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HEIGHT EQU 18
-UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_WIDTH EQU 15
-GOLDENROD_DEPT_STORE_B1F_HEIGHT EQU 9
-GOLDENROD_DEPT_STORE_B1F_WIDTH EQU 10
-UNDERGROUND_WAREHOUSE_HEIGHT EQU 9
-UNDERGROUND_WAREHOUSE_WIDTH EQU 10
-MOUNT_MORTAR_1F_OUTSIDE_HEIGHT EQU 18
-MOUNT_MORTAR_1F_OUTSIDE_WIDTH EQU 20
-MOUNT_MORTAR_1F_INSIDE_HEIGHT EQU 27
-MOUNT_MORTAR_1F_INSIDE_WIDTH EQU 20
-MOUNT_MORTAR_2F_INSIDE_HEIGHT EQU 18
-MOUNT_MORTAR_2F_INSIDE_WIDTH EQU 20
-MOUNT_MORTAR_B1F_HEIGHT EQU 18
-MOUNT_MORTAR_B1F_WIDTH EQU 20
-ICE_PATH_1F_HEIGHT EQU 18
-ICE_PATH_1F_WIDTH EQU 20
-ICE_PATH_B1F_HEIGHT EQU 18
-ICE_PATH_B1F_WIDTH EQU 10
-ICE_PATH_B2F_MAHOGANY_SIDE_HEIGHT EQU 9
-ICE_PATH_B2F_MAHOGANY_SIDE_WIDTH EQU 10
-ICE_PATH_B2F_BLACKTHORN_SIDE_HEIGHT EQU 9
-ICE_PATH_B2F_BLACKTHORN_SIDE_WIDTH EQU 5
-ICE_PATH_B3F_HEIGHT EQU 9
-ICE_PATH_B3F_WIDTH EQU 10
-WHIRL_ISLAND_NW_HEIGHT EQU 9
-WHIRL_ISLAND_NW_WIDTH EQU 5
-WHIRL_ISLAND_NE_HEIGHT EQU 9
-WHIRL_ISLAND_NE_WIDTH EQU 10
-WHIRL_ISLAND_SW_HEIGHT EQU 9
-WHIRL_ISLAND_SW_WIDTH EQU 10
-WHIRL_ISLAND_CAVE_HEIGHT EQU 9
-WHIRL_ISLAND_CAVE_WIDTH EQU 5
-WHIRL_ISLAND_SE_HEIGHT EQU 9
-WHIRL_ISLAND_SE_WIDTH EQU 5
-WHIRL_ISLAND_B1F_HEIGHT EQU 18
-WHIRL_ISLAND_B1F_WIDTH EQU 20
-WHIRL_ISLAND_B2F_HEIGHT EQU 18
-WHIRL_ISLAND_B2F_WIDTH EQU 10
-WHIRL_ISLAND_LUGIA_CHAMBER_HEIGHT EQU 9
-WHIRL_ISLAND_LUGIA_CHAMBER_WIDTH EQU 10
-SILVER_CAVE_ROOM_1_HEIGHT EQU 18
-SILVER_CAVE_ROOM_1_WIDTH EQU 10
-SILVER_CAVE_ROOM_2_HEIGHT EQU 18
-SILVER_CAVE_ROOM_2_WIDTH EQU 15
-SILVER_CAVE_ROOM_3_HEIGHT EQU 18
-SILVER_CAVE_ROOM_3_WIDTH EQU 10
-SILVER_CAVE_ITEM_ROOMS_HEIGHT EQU 9
-SILVER_CAVE_ITEM_ROOMS_WIDTH EQU 10
-DARK_CAVE_VIOLET_ENTRANCE_HEIGHT EQU 18
-DARK_CAVE_VIOLET_ENTRANCE_WIDTH EQU 20
-DARK_CAVE_BLACKTHORN_ENTRANCE_HEIGHT EQU 18
-DARK_CAVE_BLACKTHORN_ENTRANCE_WIDTH EQU 15
-DRAGONS_DEN_1F_HEIGHT EQU 9
-DRAGONS_DEN_1F_WIDTH EQU 5
-DRAGONS_DEN_B1F_HEIGHT EQU 18
-DRAGONS_DEN_B1F_WIDTH EQU 20
-DRAGON_SHRINE_HEIGHT EQU 5
-DRAGON_SHRINE_WIDTH EQU 5
-TOHJO_FALLS_HEIGHT EQU 9
-TOHJO_FALLS_WIDTH EQU 15
-DIGLETTS_CAVE_HEIGHT EQU 18
-DIGLETTS_CAVE_WIDTH EQU 10
-MOUNT_MOON_HEIGHT EQU 9
-MOUNT_MOON_WIDTH EQU 15
-UNDERGROUND_HEIGHT EQU 14
-UNDERGROUND_WIDTH EQU 3
-ROCK_TUNNEL_1F_HEIGHT EQU 18
-ROCK_TUNNEL_1F_WIDTH EQU 15
-ROCK_TUNNEL_B1F_HEIGHT EQU 18
-ROCK_TUNNEL_B1F_WIDTH EQU 15
-SAFARI_ZONE_FUCHSIA_GATE_BETA_HEIGHT EQU 4
-SAFARI_ZONE_FUCHSIA_GATE_BETA_WIDTH EQU 5
-SAFARI_ZONE_BETA_HEIGHT EQU 18
-SAFARI_ZONE_BETA_WIDTH EQU 10
-VICTORY_ROAD_HEIGHT EQU 36
-VICTORY_ROAD_WIDTH EQU 10
-ECRUTEAK_HOUSE_HEIGHT EQU 9
-ECRUTEAK_HOUSE_WIDTH EQU 10
-WISE_TRIOS_ROOM_HEIGHT EQU 4
-WISE_TRIOS_ROOM_WIDTH EQU 4
-ECRUTEAK_POKECENTER_1F_HEIGHT EQU 4
-ECRUTEAK_POKECENTER_1F_WIDTH EQU 5
-ECRUTEAK_LUGIA_SPEECH_HOUSE_HEIGHT EQU 4
-ECRUTEAK_LUGIA_SPEECH_HOUSE_WIDTH EQU 4
-DANCE_THEATRE_HEIGHT EQU 7
-DANCE_THEATRE_WIDTH EQU 6
-ECRUTEAK_MART_HEIGHT EQU 4
-ECRUTEAK_MART_WIDTH EQU 6
-ECRUTEAK_GYM_HEIGHT EQU 9
-ECRUTEAK_GYM_WIDTH EQU 5
-ECRUTEAK_ITEMFINDER_HOUSE_HEIGHT EQU 4
-ECRUTEAK_ITEMFINDER_HOUSE_WIDTH EQU 4
-ECRUTEAK_CITY_HEIGHT EQU 18
-ECRUTEAK_CITY_WIDTH EQU 20
-BLACKTHORN_GYM_1F_HEIGHT EQU 9
-BLACKTHORN_GYM_1F_WIDTH EQU 5
-BLACKTHORN_GYM_2F_HEIGHT EQU 9
-BLACKTHORN_GYM_2F_WIDTH EQU 5
-BLACKTHORN_DRAGON_SPEECH_HOUSE_HEIGHT EQU 4
-BLACKTHORN_DRAGON_SPEECH_HOUSE_WIDTH EQU 4
-BLACKTHORN_DODRIO_TRADE_HOUSE_HEIGHT EQU 4
-BLACKTHORN_DODRIO_TRADE_HOUSE_WIDTH EQU 4
-BLACKTHORN_MART_HEIGHT EQU 4
-BLACKTHORN_MART_WIDTH EQU 6
-BLACKTHORN_POKECENTER_1F_HEIGHT EQU 4
-BLACKTHORN_POKECENTER_1F_WIDTH EQU 5
-MOVE_DELETERS_HOUSE_HEIGHT EQU 4
-MOVE_DELETERS_HOUSE_WIDTH EQU 4
-ROUTE_45_HEIGHT EQU 45
-ROUTE_45_WIDTH EQU 10
-ROUTE_46_HEIGHT EQU 18
-ROUTE_46_WIDTH EQU 10
-BLACKTHORN_CITY_HEIGHT EQU 18
-BLACKTHORN_CITY_WIDTH EQU 20
-CINNABAR_POKECENTER_1F_HEIGHT EQU 4
-CINNABAR_POKECENTER_1F_WIDTH EQU 5
-CINNABAR_POKECENTER_2F_BETA_HEIGHT EQU 4
-CINNABAR_POKECENTER_2F_BETA_WIDTH EQU 8
-ROUTE_19___FUCHSIA_GATE_HEIGHT EQU 4
-ROUTE_19___FUCHSIA_GATE_WIDTH EQU 5
-SEAFOAM_GYM_HEIGHT EQU 4
-SEAFOAM_GYM_WIDTH EQU 5
-ROUTE_19_HEIGHT EQU 18
-ROUTE_19_WIDTH EQU 10
-ROUTE_20_HEIGHT EQU 9
-ROUTE_20_WIDTH EQU 30
-ROUTE_21_HEIGHT EQU 18
-ROUTE_21_WIDTH EQU 10
-CINNABAR_ISLAND_HEIGHT EQU 9
-CINNABAR_ISLAND_WIDTH EQU 10
-CERULEAN_GYM_BADGE_SPEECH_HOUSE_HEIGHT EQU 4
-CERULEAN_GYM_BADGE_SPEECH_HOUSE_WIDTH EQU 4
-CERULEAN_POLICE_STATION_HEIGHT EQU 4
-CERULEAN_POLICE_STATION_WIDTH EQU 4
-CERULEAN_TRADE_SPEECH_HOUSE_HEIGHT EQU 4
-CERULEAN_TRADE_SPEECH_HOUSE_WIDTH EQU 4
-CERULEAN_POKECENTER_1F_HEIGHT EQU 4
-CERULEAN_POKECENTER_1F_WIDTH EQU 5
-CERULEAN_POKECENTER_2F_BETA_HEIGHT EQU 4
-CERULEAN_POKECENTER_2F_BETA_WIDTH EQU 8
-CERULEAN_GYM_HEIGHT EQU 8
-CERULEAN_GYM_WIDTH EQU 5
-CERULEAN_MART_HEIGHT EQU 4
-CERULEAN_MART_WIDTH EQU 6
-ROUTE_10_POKECENTER_1F_HEIGHT EQU 4
-ROUTE_10_POKECENTER_1F_WIDTH EQU 5
-ROUTE_10_POKECENTER_2F_BETA_HEIGHT EQU 4
-ROUTE_10_POKECENTER_2F_BETA_WIDTH EQU 8
-POWER_PLANT_HEIGHT EQU 9
-POWER_PLANT_WIDTH EQU 10
-BILLS_HOUSE_HEIGHT EQU 4
-BILLS_HOUSE_WIDTH EQU 4
-ROUTE_4_HEIGHT EQU 9
-ROUTE_4_WIDTH EQU 20
-ROUTE_9_HEIGHT EQU 9
-ROUTE_9_WIDTH EQU 30
-ROUTE_10_NORTH_HEIGHT EQU 9
-ROUTE_10_NORTH_WIDTH EQU 10
-ROUTE_24_HEIGHT EQU 9
-ROUTE_24_WIDTH EQU 10
-ROUTE_25_HEIGHT EQU 9
-ROUTE_25_WIDTH EQU 30
-CERULEAN_CITY_HEIGHT EQU 18
-CERULEAN_CITY_WIDTH EQU 20
-AZALEA_POKECENTER_1F_HEIGHT EQU 4
-AZALEA_POKECENTER_1F_WIDTH EQU 5
-CHARCOAL_KILN_HEIGHT EQU 4
-CHARCOAL_KILN_WIDTH EQU 4
-AZALEA_MART_HEIGHT EQU 4
-AZALEA_MART_WIDTH EQU 6
-KURTS_HOUSE_HEIGHT EQU 4
-KURTS_HOUSE_WIDTH EQU 8
-AZALEA_GYM_HEIGHT EQU 8
-AZALEA_GYM_WIDTH EQU 5
-ROUTE_33_HEIGHT EQU 9
-ROUTE_33_WIDTH EQU 10
-AZALEA_TOWN_HEIGHT EQU 9
-AZALEA_TOWN_WIDTH EQU 20
-LAKE_OF_RAGE_HIDDEN_POWER_HOUSE_HEIGHT EQU 4
-LAKE_OF_RAGE_HIDDEN_POWER_HOUSE_WIDTH EQU 4
-LAKE_OF_RAGE_MAGIKARP_HOUSE_HEIGHT EQU 4
-LAKE_OF_RAGE_MAGIKARP_HOUSE_WIDTH EQU 4
-ROUTE_43_MAHOGANY_GATE_HEIGHT EQU 4
-ROUTE_43_MAHOGANY_GATE_WIDTH EQU 5
-ROUTE_43_GATE_HEIGHT EQU 4
-ROUTE_43_GATE_WIDTH EQU 5
-ROUTE_43_HEIGHT EQU 27
-ROUTE_43_WIDTH EQU 10
-LAKE_OF_RAGE_HEIGHT EQU 18
-LAKE_OF_RAGE_WIDTH EQU 20
-ROUTE_32_HEIGHT EQU 45
-ROUTE_32_WIDTH EQU 10
-ROUTE_35_HEIGHT EQU 18
-ROUTE_35_WIDTH EQU 10
-ROUTE_36_HEIGHT EQU 9
-ROUTE_36_WIDTH EQU 30
-ROUTE_37_HEIGHT EQU 9
-ROUTE_37_WIDTH EQU 10
-VIOLET_CITY_HEIGHT EQU 18
-VIOLET_CITY_WIDTH EQU 20
-VIOLET_MART_HEIGHT EQU 4
-VIOLET_MART_WIDTH EQU 6
-VIOLET_GYM_HEIGHT EQU 8
-VIOLET_GYM_WIDTH EQU 5
-EARLS_POKEMON_ACADEMY_HEIGHT EQU 8
-EARLS_POKEMON_ACADEMY_WIDTH EQU 4
-VIOLET_NICKNAME_SPEECH_HOUSE_HEIGHT EQU 4
-VIOLET_NICKNAME_SPEECH_HOUSE_WIDTH EQU 4
-VIOLET_POKECENTER_1F_HEIGHT EQU 4
-VIOLET_POKECENTER_1F_WIDTH EQU 5
-VIOLET_ONIX_TRADE_HOUSE_HEIGHT EQU 4
-VIOLET_ONIX_TRADE_HOUSE_WIDTH EQU 4
-ROUTE_32_RUINS_OF_ALPH_GATE_HEIGHT EQU 4
-ROUTE_32_RUINS_OF_ALPH_GATE_WIDTH EQU 5
-ROUTE_32_POKECENTER_1F_HEIGHT EQU 4
-ROUTE_32_POKECENTER_1F_WIDTH EQU 5
-ROUTE_35_GOLDENROD_GATE_HEIGHT EQU 4
-ROUTE_35_GOLDENROD_GATE_WIDTH EQU 5
-ROUTE_35_NATIONAL_PARK_GATE_HEIGHT EQU 4
-ROUTE_35_NATIONAL_PARK_GATE_WIDTH EQU 4
-ROUTE_36_RUINS_OF_ALPH_GATE_HEIGHT EQU 4
-ROUTE_36_RUINS_OF_ALPH_GATE_WIDTH EQU 5
-ROUTE_36_NATIONAL_PARK_GATE_HEIGHT EQU 4
-ROUTE_36_NATIONAL_PARK_GATE_WIDTH EQU 5
-ROUTE_34_HEIGHT EQU 27
-ROUTE_34_WIDTH EQU 10
-GOLDENROD_CITY_HEIGHT EQU 18
-GOLDENROD_CITY_WIDTH EQU 20
-GOLDENROD_GYM_HEIGHT EQU 9
-GOLDENROD_GYM_WIDTH EQU 10
-GOLDENROD_BIKE_SHOP_HEIGHT EQU 4
-GOLDENROD_BIKE_SHOP_WIDTH EQU 4
-GOLDENROD_HAPPINESS_RATER_HEIGHT EQU 4
-GOLDENROD_HAPPINESS_RATER_WIDTH EQU 4
-GOLDENROD_BILLS_HOUSE_HEIGHT EQU 4
-GOLDENROD_BILLS_HOUSE_WIDTH EQU 4
-GOLDENROD_MAGNET_TRAIN_STATION_HEIGHT EQU 9
-GOLDENROD_MAGNET_TRAIN_STATION_WIDTH EQU 10
-GOLDENROD_FLOWER_SHOP_HEIGHT EQU 4
-GOLDENROD_FLOWER_SHOP_WIDTH EQU 4
-GOLDENROD_PP_SPEECH_HOUSE_HEIGHT EQU 4
-GOLDENROD_PP_SPEECH_HOUSE_WIDTH EQU 4
-GOLDENROD_NAME_RATERS_HOUSE_HEIGHT EQU 4
-GOLDENROD_NAME_RATERS_HOUSE_WIDTH EQU 4
-GOLDENROD_DEPT_STORE_1F_HEIGHT EQU 4
-GOLDENROD_DEPT_STORE_1F_WIDTH EQU 8
-GOLDENROD_DEPT_STORE_2F_HEIGHT EQU 4
-GOLDENROD_DEPT_STORE_2F_WIDTH EQU 8
-GOLDENROD_DEPT_STORE_3F_HEIGHT EQU 4
-GOLDENROD_DEPT_STORE_3F_WIDTH EQU 8
-GOLDENROD_DEPT_STORE_4F_HEIGHT EQU 4
-GOLDENROD_DEPT_STORE_4F_WIDTH EQU 8
-GOLDENROD_DEPT_STORE_5F_HEIGHT EQU 4
-GOLDENROD_DEPT_STORE_5F_WIDTH EQU 8
-GOLDENROD_DEPT_STORE_6F_HEIGHT EQU 4
-GOLDENROD_DEPT_STORE_6F_WIDTH EQU 8
-GOLDENROD_DEPT_STORE_ELEVATOR_HEIGHT EQU 2
-GOLDENROD_DEPT_STORE_ELEVATOR_WIDTH EQU 2
-GOLDENROD_DEPT_STORE_ROOF_HEIGHT EQU 4
-GOLDENROD_DEPT_STORE_ROOF_WIDTH EQU 8
-GOLDENROD_GAME_CORNER_HEIGHT EQU 7
-GOLDENROD_GAME_CORNER_WIDTH EQU 10
-GOLDENROD_POKECENTER_1F_HEIGHT EQU 4
-GOLDENROD_POKECENTER_1F_WIDTH EQU 5
-GOLDENROD_POKECOM_CENTER_2F_MOBILE_HEIGHT EQU 16
-GOLDENROD_POKECOM_CENTER_2F_MOBILE_WIDTH EQU 16
-ILEX_FOREST_AZALEA_GATE_HEIGHT EQU 4
-ILEX_FOREST_AZALEA_GATE_WIDTH EQU 5
-ROUTE_34_ILEX_FOREST_GATE_HEIGHT EQU 4
-ROUTE_34_ILEX_FOREST_GATE_WIDTH EQU 5
-DAY_CARE_HEIGHT EQU 4
-DAY_CARE_WIDTH EQU 5
-ROUTE_6_HEIGHT EQU 9
-ROUTE_6_WIDTH EQU 10
-ROUTE_11_HEIGHT EQU 9
-ROUTE_11_WIDTH EQU 20
-VERMILION_CITY_HEIGHT EQU 18
-VERMILION_CITY_WIDTH EQU 20
-VERMILION_HOUSE_FISHING_SPEECH_HOUSE_HEIGHT EQU 4
-VERMILION_HOUSE_FISHING_SPEECH_HOUSE_WIDTH EQU 4
-VERMILION_POKECENTER_1F_HEIGHT EQU 4
-VERMILION_POKECENTER_1F_WIDTH EQU 5
-VERMILION_POKECENTER_2F_BETA_HEIGHT EQU 4
-VERMILION_POKECENTER_2F_BETA_WIDTH EQU 8
-POKEMON_FAN_CLUB_HEIGHT EQU 4
-POKEMON_FAN_CLUB_WIDTH EQU 5
-VERMILION_MAGNET_TRAIN_SPEECH_HOUSE_HEIGHT EQU 4
-VERMILION_MAGNET_TRAIN_SPEECH_HOUSE_WIDTH EQU 4
-VERMILION_MART_HEIGHT EQU 4
-VERMILION_MART_WIDTH EQU 6
-VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE_HEIGHT EQU 4
-VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE_WIDTH EQU 4
-VERMILION_GYM_HEIGHT EQU 9
-VERMILION_GYM_WIDTH EQU 5
-ROUTE_6_SAFFRON_GATE_HEIGHT EQU 4
-ROUTE_6_SAFFRON_GATE_WIDTH EQU 5
-ROUTE_6_UNDERGROUND_ENTRANCE_HEIGHT EQU 4
-ROUTE_6_UNDERGROUND_ENTRANCE_WIDTH EQU 4
-ROUTE_1_HEIGHT EQU 18
-ROUTE_1_WIDTH EQU 10
-PALLET_TOWN_HEIGHT EQU 9
-PALLET_TOWN_WIDTH EQU 10
-REDS_HOUSE_1F_HEIGHT EQU 4
-REDS_HOUSE_1F_WIDTH EQU 4
-REDS_HOUSE_2F_HEIGHT EQU 4
-REDS_HOUSE_2F_WIDTH EQU 4
-BLUES_HOUSE_HEIGHT EQU 4
-BLUES_HOUSE_WIDTH EQU 4
-OAKS_LAB_HEIGHT EQU 6
-OAKS_LAB_WIDTH EQU 5
-ROUTE_3_HEIGHT EQU 9
-ROUTE_3_WIDTH EQU 30
-PEWTER_CITY_HEIGHT EQU 18
-PEWTER_CITY_WIDTH EQU 20
-PEWTER_NIDORAN_SPEECH_HOUSE_HEIGHT EQU 4
-PEWTER_NIDORAN_SPEECH_HOUSE_WIDTH EQU 4
-PEWTER_GYM_HEIGHT EQU 7
-PEWTER_GYM_WIDTH EQU 5
-PEWTER_MART_HEIGHT EQU 4
-PEWTER_MART_WIDTH EQU 6
-PEWTER_POKECENTER_1F_HEIGHT EQU 4
-PEWTER_POKECENTER_1F_WIDTH EQU 5
-PEWTER_POKECENTER_2F_BETA_HEIGHT EQU 4
-PEWTER_POKECENTER_2F_BETA_WIDTH EQU 8
-PEWTER_SNOOZE_SPEECH_HOUSE_HEIGHT EQU 4
-PEWTER_SNOOZE_SPEECH_HOUSE_WIDTH EQU 4
-OLIVINE_PORT_HEIGHT EQU 18
-OLIVINE_PORT_WIDTH EQU 10
-VERMILION_PORT_HEIGHT EQU 18
-VERMILION_PORT_WIDTH EQU 10
-FAST_SHIP_1F_HEIGHT EQU 9
-FAST_SHIP_1F_WIDTH EQU 16
-FAST_SHIP_CABINS_NNW_NNE_NE_HEIGHT EQU 16
-FAST_SHIP_CABINS_NNW_NNE_NE_WIDTH EQU 4
-FAST_SHIP_CABINS_SW_SSW_NW_HEIGHT EQU 16
-FAST_SHIP_CABINS_SW_SSW_NW_WIDTH EQU 4
-FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_HEIGHT EQU 17
-FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_WIDTH EQU 5
-FAST_SHIP_B1F_HEIGHT EQU 8
-FAST_SHIP_B1F_WIDTH EQU 16
-OLIVINE_PORT_PASSAGE_HEIGHT EQU 9
-OLIVINE_PORT_PASSAGE_WIDTH EQU 10
-VERMILION_PORT_PASSAGE_HEIGHT EQU 9
-VERMILION_PORT_PASSAGE_WIDTH EQU 10
-MOUNT_MOON_SQUARE_HEIGHT EQU 9
-MOUNT_MOON_SQUARE_WIDTH EQU 15
-MOUNT_MOON_GIFT_SHOP_HEIGHT EQU 4
-MOUNT_MOON_GIFT_SHOP_WIDTH EQU 4
-TIN_TOWER_ROOF_HEIGHT EQU 9
-TIN_TOWER_ROOF_WIDTH EQU 10
-ROUTE_23_HEIGHT EQU 9
-ROUTE_23_WIDTH EQU 10
-INDIGO_PLATEAU_POKECENTER_1F_HEIGHT EQU 7
-INDIGO_PLATEAU_POKECENTER_1F_WIDTH EQU 9
-WILLS_ROOM_HEIGHT EQU 9
-WILLS_ROOM_WIDTH EQU 5
-KOGAS_ROOM_HEIGHT EQU 9
-KOGAS_ROOM_WIDTH EQU 5
-BRUNOS_ROOM_HEIGHT EQU 9
-BRUNOS_ROOM_WIDTH EQU 5
-KARENS_ROOM_HEIGHT EQU 9
-KARENS_ROOM_WIDTH EQU 5
-LANCES_ROOM_HEIGHT EQU 12
-LANCES_ROOM_WIDTH EQU 5
-HALL_OF_FAME_HEIGHT EQU 7
-HALL_OF_FAME_WIDTH EQU 5
-ROUTE_13_HEIGHT EQU 9
-ROUTE_13_WIDTH EQU 30
-ROUTE_14_HEIGHT EQU 18
-ROUTE_14_WIDTH EQU 10
-ROUTE_15_HEIGHT EQU 9
-ROUTE_15_WIDTH EQU 20
-ROUTE_18_HEIGHT EQU 9
-ROUTE_18_WIDTH EQU 10
-FUCHSIA_CITY_HEIGHT EQU 18
-FUCHSIA_CITY_WIDTH EQU 20
-FUCHSIA_MART_HEIGHT EQU 4
-FUCHSIA_MART_WIDTH EQU 6
-SAFARI_ZONE_MAIN_OFFICE_HEIGHT EQU 4
-SAFARI_ZONE_MAIN_OFFICE_WIDTH EQU 4
-FUCHSIA_GYM_HEIGHT EQU 9
-FUCHSIA_GYM_WIDTH EQU 5
-FUCHSIA_BILL_SPEECH_HOUSE_HEIGHT EQU 4
-FUCHSIA_BILL_SPEECH_HOUSE_WIDTH EQU 4
-FUCHSIA_POKECENTER_1F_HEIGHT EQU 4
-FUCHSIA_POKECENTER_1F_WIDTH EQU 5
-FUCHSIA_POKECENTER_2F_BETA_HEIGHT EQU 4
-FUCHSIA_POKECENTER_2F_BETA_WIDTH EQU 8
-SAFARI_ZONE_WARDENS_HOME_HEIGHT EQU 4
-SAFARI_ZONE_WARDENS_HOME_WIDTH EQU 5
-ROUTE_15_FUCHSIA_GATE_HEIGHT EQU 4
-ROUTE_15_FUCHSIA_GATE_WIDTH EQU 5
-ROUTE_8_HEIGHT EQU 9
-ROUTE_8_WIDTH EQU 20
-ROUTE_12_HEIGHT EQU 27
-ROUTE_12_WIDTH EQU 10
-ROUTE_10_SOUTH_HEIGHT EQU 9
-ROUTE_10_SOUTH_WIDTH EQU 10
-LAVENDER_TOWN_HEIGHT EQU 9
-LAVENDER_TOWN_WIDTH EQU 10
-LAVENDER_POKECENTER_1F_HEIGHT EQU 4
-LAVENDER_POKECENTER_1F_WIDTH EQU 5
-LAVENDER_POKECENTER_2F_BETA_HEIGHT EQU 4
-LAVENDER_POKECENTER_2F_BETA_WIDTH EQU 8
-MR_FUJIS_HOUSE_HEIGHT EQU 4
-MR_FUJIS_HOUSE_WIDTH EQU 5
-LAVENDER_TOWN_SPEECH_HOUSE_HEIGHT EQU 4
-LAVENDER_TOWN_SPEECH_HOUSE_WIDTH EQU 4
-LAVENDER_NAME_RATER_HEIGHT EQU 4
-LAVENDER_NAME_RATER_WIDTH EQU 4
-LAVENDER_MART_HEIGHT EQU 4
-LAVENDER_MART_WIDTH EQU 6
-SOUL_HOUSE_HEIGHT EQU 4
-SOUL_HOUSE_WIDTH EQU 5
-LAV_RADIO_TOWER_1F_HEIGHT EQU 4
-LAV_RADIO_TOWER_1F_WIDTH EQU 10
-ROUTE_8_SAFFRON_GATE_HEIGHT EQU 4
-ROUTE_8_SAFFRON_GATE_WIDTH EQU 5
-ROUTE_12_SUPER_ROD_HOUSE_HEIGHT EQU 4
-ROUTE_12_SUPER_ROD_HOUSE_WIDTH EQU 4
-ROUTE_28_HEIGHT EQU 9
-ROUTE_28_WIDTH EQU 20
-SILVER_CAVE_OUTSIDE_HEIGHT EQU 18
-SILVER_CAVE_OUTSIDE_WIDTH EQU 20
-SILVER_CAVE_POKECENTER_1F_HEIGHT EQU 4
-SILVER_CAVE_POKECENTER_1F_WIDTH EQU 5
-ROUTE_28_FAMOUS_SPEECH_HOUSE_HEIGHT EQU 4
-ROUTE_28_FAMOUS_SPEECH_HOUSE_WIDTH EQU 4
-POKECENTER_2F_HEIGHT EQU 4
-POKECENTER_2F_WIDTH EQU 8
-TRADE_CENTER_HEIGHT EQU 4
-TRADE_CENTER_WIDTH EQU 5
-COLOSSEUM_HEIGHT EQU 4
-COLOSSEUM_WIDTH EQU 5
-TIME_CAPSULE_HEIGHT EQU 4
-TIME_CAPSULE_WIDTH EQU 5
-MOBILE_TRADE_ROOM_MOBILE_HEIGHT EQU 4
-MOBILE_TRADE_ROOM_MOBILE_WIDTH EQU 5
-MOBILE_BATTLE_ROOM_HEIGHT EQU 4
-MOBILE_BATTLE_ROOM_WIDTH EQU 5
-ROUTE_7_HEIGHT EQU 9
-ROUTE_7_WIDTH EQU 10
-ROUTE_16_HEIGHT EQU 9
-ROUTE_16_WIDTH EQU 10
-ROUTE_17_HEIGHT EQU 45
-ROUTE_17_WIDTH EQU 10
-CELADON_CITY_HEIGHT EQU 18
-CELADON_CITY_WIDTH EQU 20
-CELADON_DEPT_STORE_1F_HEIGHT EQU 4
-CELADON_DEPT_STORE_1F_WIDTH EQU 8
-CELADON_DEPT_STORE_2F_HEIGHT EQU 4
-CELADON_DEPT_STORE_2F_WIDTH EQU 8
-CELADON_DEPT_STORE_3F_HEIGHT EQU 4
-CELADON_DEPT_STORE_3F_WIDTH EQU 8
-CELADON_DEPT_STORE_4F_HEIGHT EQU 4
-CELADON_DEPT_STORE_4F_WIDTH EQU 8
-CELADON_DEPT_STORE_5F_HEIGHT EQU 4
-CELADON_DEPT_STORE_5F_WIDTH EQU 8
-CELADON_DEPT_STORE_6F_HEIGHT EQU 4
-CELADON_DEPT_STORE_6F_WIDTH EQU 8
-CELADON_DEPT_STORE_ELEVATOR_HEIGHT EQU 2
-CELADON_DEPT_STORE_ELEVATOR_WIDTH EQU 2
-CELADON_MANSION_1F_HEIGHT EQU 5
-CELADON_MANSION_1F_WIDTH EQU 4
-CELADON_MANSION_2F_HEIGHT EQU 5
-CELADON_MANSION_2F_WIDTH EQU 4
-CELADON_MANSION_3F_HEIGHT EQU 5
-CELADON_MANSION_3F_WIDTH EQU 4
-CELADON_MANSION_ROOF_HEIGHT EQU 5
-CELADON_MANSION_ROOF_WIDTH EQU 4
-CELADON_MANSION_ROOF_HOUSE_HEIGHT EQU 4
-CELADON_MANSION_ROOF_HOUSE_WIDTH EQU 4
-CELADON_POKECENTER_1F_HEIGHT EQU 4
-CELADON_POKECENTER_1F_WIDTH EQU 5
-CELADON_POKECENTER_2F_BETA_HEIGHT EQU 4
-CELADON_POKECENTER_2F_BETA_WIDTH EQU 8
-CELADON_GAME_CORNER_HEIGHT EQU 7
-CELADON_GAME_CORNER_WIDTH EQU 10
-CELADON_GAME_CORNER_PRIZE_ROOM_HEIGHT EQU 3
-CELADON_GAME_CORNER_PRIZE_ROOM_WIDTH EQU 3
-CELADON_GYM_HEIGHT EQU 9
-CELADON_GYM_WIDTH EQU 5
-CELADON_CAFE_HEIGHT EQU 4
-CELADON_CAFE_WIDTH EQU 6
-ROUTE_16_FUCHSIA_SPEECH_HOUSE_HEIGHT EQU 4
-ROUTE_16_FUCHSIA_SPEECH_HOUSE_WIDTH EQU 4
-ROUTE_16_GATE_HEIGHT EQU 4
-ROUTE_16_GATE_WIDTH EQU 5
-ROUTE_7_SAFFRON_GATE_HEIGHT EQU 4
-ROUTE_7_SAFFRON_GATE_WIDTH EQU 5
-ROUTE_17_18_GATE_HEIGHT EQU 4
-ROUTE_17_18_GATE_WIDTH EQU 5
-ROUTE_40_HEIGHT EQU 18
-ROUTE_40_WIDTH EQU 10
-ROUTE_41_HEIGHT EQU 27
-ROUTE_41_WIDTH EQU 25
-CIANWOOD_CITY_HEIGHT EQU 27
-CIANWOOD_CITY_WIDTH EQU 15
-MANIAS_HOUSE_HEIGHT EQU 4
-MANIAS_HOUSE_WIDTH EQU 4
-CIANWOOD_GYM_HEIGHT EQU 9
-CIANWOOD_GYM_WIDTH EQU 5
-CIANWOOD_POKECENTER_1F_HEIGHT EQU 4
-CIANWOOD_POKECENTER_1F_WIDTH EQU 5
-CIANWOOD_PHARMACY_HEIGHT EQU 4
-CIANWOOD_PHARMACY_WIDTH EQU 4
-CIANWOOD_CITY_PHOTO_STUDIO_HEIGHT EQU 4
-CIANWOOD_CITY_PHOTO_STUDIO_WIDTH EQU 4
-CIANWOOD_LUGIA_SPEECH_HOUSE_HEIGHT EQU 4
-CIANWOOD_LUGIA_SPEECH_HOUSE_WIDTH EQU 4
-POKE_SEERS_HOUSE_HEIGHT EQU 4
-POKE_SEERS_HOUSE_WIDTH EQU 4
-BATTLE_TOWER_1F_HEIGHT EQU 5
-BATTLE_TOWER_1F_WIDTH EQU 8
-BATTLE_TOWER_BATTLE_ROOM_HEIGHT EQU 4
-BATTLE_TOWER_BATTLE_ROOM_WIDTH EQU 4
-BATTLE_TOWER_ELEVATOR_HEIGHT EQU 2
-BATTLE_TOWER_ELEVATOR_WIDTH EQU 2
-BATTLE_TOWER_HALLWAY_HEIGHT EQU 2
-BATTLE_TOWER_HALLWAY_WIDTH EQU 11
-ROUTE_40_BATTLE_TOWER_GATE_HEIGHT EQU 4
-ROUTE_40_BATTLE_TOWER_GATE_WIDTH EQU 5
-BATTLE_TOWER_OUTSIDE_HEIGHT EQU 14
-BATTLE_TOWER_OUTSIDE_WIDTH EQU 10
-ROUTE_2_HEIGHT EQU 27
-ROUTE_2_WIDTH EQU 10
-ROUTE_22_HEIGHT EQU 9
-ROUTE_22_WIDTH EQU 20
-VIRIDIAN_CITY_HEIGHT EQU 18
-VIRIDIAN_CITY_WIDTH EQU 20
-VIRIDIAN_GYM_HEIGHT EQU 9
-VIRIDIAN_GYM_WIDTH EQU 5
-VIRIDIAN_NICKNAME_SPEECH_HOUSE_HEIGHT EQU 4
-VIRIDIAN_NICKNAME_SPEECH_HOUSE_WIDTH EQU 4
-TRAINER_HOUSE_1F_HEIGHT EQU 7
-TRAINER_HOUSE_1F_WIDTH EQU 5
-TRAINER_HOUSE_B1F_HEIGHT EQU 8
-TRAINER_HOUSE_B1F_WIDTH EQU 5
-VIRIDIAN_MART_HEIGHT EQU 4
-VIRIDIAN_MART_WIDTH EQU 6
-VIRIDIAN_POKECENTER_1F_HEIGHT EQU 4
-VIRIDIAN_POKECENTER_1F_WIDTH EQU 5
-VIRIDIAN_POKECENTER_2F_BETA_HEIGHT EQU 4
-VIRIDIAN_POKECENTER_2F_BETA_WIDTH EQU 8
-ROUTE_2_NUGGET_SPEECH_HOUSE_HEIGHT EQU 4
-ROUTE_2_NUGGET_SPEECH_HOUSE_WIDTH EQU 4
-ROUTE_2_GATE_HEIGHT EQU 4
-ROUTE_2_GATE_WIDTH EQU 5
-VICTORY_ROAD_GATE_HEIGHT EQU 9
-VICTORY_ROAD_GATE_WIDTH EQU 10
-ROUTE_26_HEIGHT EQU 54
-ROUTE_26_WIDTH EQU 10
-ROUTE_27_HEIGHT EQU 9
-ROUTE_27_WIDTH EQU 40
-ROUTE_29_HEIGHT EQU 9
-ROUTE_29_WIDTH EQU 30
-NEW_BARK_TOWN_HEIGHT EQU 9
-NEW_BARK_TOWN_WIDTH EQU 10
-ELMS_LAB_HEIGHT EQU 6
-ELMS_LAB_WIDTH EQU 5
-KRISS_HOUSE_1F_HEIGHT EQU 4
-KRISS_HOUSE_1F_WIDTH EQU 5
-KRISS_HOUSE_2F_HEIGHT EQU 3
-KRISS_HOUSE_2F_WIDTH EQU 4
-KRISS_NEIGHBORS_HOUSE_HEIGHT EQU 4
-KRISS_NEIGHBORS_HOUSE_WIDTH EQU 4
-ELMS_HOUSE_HEIGHT EQU 4
-ELMS_HOUSE_WIDTH EQU 4
-ROUTE_26_HEAL_SPEECH_HOUSE_HEIGHT EQU 4
-ROUTE_26_HEAL_SPEECH_HOUSE_WIDTH EQU 4
-ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE_HEIGHT EQU 4
-ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE_WIDTH EQU 4
-ROUTE_27_SANDSTORM_HOUSE_HEIGHT EQU 4
-ROUTE_27_SANDSTORM_HOUSE_WIDTH EQU 4
-ROUTE_29_46_GATE_HEIGHT EQU 4
-ROUTE_29_46_GATE_WIDTH EQU 5
-ROUTE_5_HEIGHT EQU 9
-ROUTE_5_WIDTH EQU 10
-SAFFRON_CITY_HEIGHT EQU 18
-SAFFRON_CITY_WIDTH EQU 20
-FIGHTING_DOJO_HEIGHT EQU 6
-FIGHTING_DOJO_WIDTH EQU 5
-SAFFRON_GYM_HEIGHT EQU 9
-SAFFRON_GYM_WIDTH EQU 10
-SAFFRON_MART_HEIGHT EQU 4
-SAFFRON_MART_WIDTH EQU 6
-SAFFRON_POKECENTER_1F_HEIGHT EQU 4
-SAFFRON_POKECENTER_1F_WIDTH EQU 5
-SAFFRON_POKECENTER_2F_BETA_HEIGHT EQU 4
-SAFFRON_POKECENTER_2F_BETA_WIDTH EQU 8
-MR_PSYCHICS_HOUSE_HEIGHT EQU 4
-MR_PSYCHICS_HOUSE_WIDTH EQU 4
-SAFFRON_TRAIN_STATION_HEIGHT EQU 9
-SAFFRON_TRAIN_STATION_WIDTH EQU 10
-SILPH_CO_1F_HEIGHT EQU 4
-SILPH_CO_1F_WIDTH EQU 8
-COPYCATS_HOUSE_1F_HEIGHT EQU 4
-COPYCATS_HOUSE_1F_WIDTH EQU 4
-COPYCATS_HOUSE_2F_HEIGHT EQU 3
-COPYCATS_HOUSE_2F_WIDTH EQU 5
-ROUTE_5_UNDERGROUND_ENTRANCE_HEIGHT EQU 4
-ROUTE_5_UNDERGROUND_ENTRANCE_WIDTH EQU 4
-ROUTE_5_SAFFRON_CITY_GATE_HEIGHT EQU 4
-ROUTE_5_SAFFRON_CITY_GATE_WIDTH EQU 5
-ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE_HEIGHT EQU 4
-ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE_WIDTH EQU 4
-ROUTE_30_HEIGHT EQU 27
-ROUTE_30_WIDTH EQU 10
-ROUTE_31_HEIGHT EQU 9
-ROUTE_31_WIDTH EQU 20
-CHERRYGROVE_CITY_HEIGHT EQU 9
-CHERRYGROVE_CITY_WIDTH EQU 20
-CHERRYGROVE_MART_HEIGHT EQU 4
-CHERRYGROVE_MART_WIDTH EQU 6
-CHERRYGROVE_POKECENTER_1F_HEIGHT EQU 4
-CHERRYGROVE_POKECENTER_1F_WIDTH EQU 5
-CHERRYGROVE_GYM_SPEECH_HOUSE_HEIGHT EQU 4
-CHERRYGROVE_GYM_SPEECH_HOUSE_WIDTH EQU 4
-GUIDE_GENTS_HOUSE_HEIGHT EQU 4
-GUIDE_GENTS_HOUSE_WIDTH EQU 4
-CHERRYGROVE_EVOLUTION_SPEECH_HOUSE_HEIGHT EQU 4
-CHERRYGROVE_EVOLUTION_SPEECH_HOUSE_WIDTH EQU 4
-ROUTE_30_BERRY_SPEECH_HOUSE_HEIGHT EQU 4
-ROUTE_30_BERRY_SPEECH_HOUSE_WIDTH EQU 4
-MR_POKEMONS_HOUSE_HEIGHT EQU 4
-MR_POKEMONS_HOUSE_WIDTH EQU 4
-ROUTE_31_VIOLET_GATE_HEIGHT EQU 4
-ROUTE_31_VIOLET_GATE_WIDTH EQU 5
+	newgroup
+	mapgroup ECRUTEAK_HOUSE, 9, 10
+	mapgroup WISE_TRIOS_ROOM, 4, 4
+	mapgroup ECRUTEAK_POKECENTER_1F, 4, 5
+	mapgroup ECRUTEAK_LUGIA_SPEECH_HOUSE, 4, 4
+	mapgroup DANCE_THEATRE, 7, 6
+	mapgroup ECRUTEAK_MART, 4, 6
+	mapgroup ECRUTEAK_GYM, 9, 5
+	mapgroup ECRUTEAK_ITEMFINDER_HOUSE, 4, 4
+	mapgroup ECRUTEAK_CITY, 18, 20
+
+	newgroup
+	mapgroup BLACKTHORN_GYM_1F, 9, 5
+	mapgroup BLACKTHORN_GYM_2F, 9, 5
+	mapgroup BLACKTHORN_DRAGON_SPEECH_HOUSE, 4, 4
+	mapgroup BLACKTHORN_DODRIO_TRADE_HOUSE, 4, 4
+	mapgroup BLACKTHORN_MART, 4, 6
+	mapgroup BLACKTHORN_POKECENTER_1F, 4, 5
+	mapgroup MOVE_DELETERS_HOUSE, 4, 4
+	mapgroup ROUTE_45, 45, 10
+	mapgroup ROUTE_46, 18, 10
+	mapgroup BLACKTHORN_CITY, 18, 20
+
+	newgroup
+	mapgroup CINNABAR_POKECENTER_1F, 4, 5
+	mapgroup CINNABAR_POKECENTER_2F_BETA, 4, 8
+	mapgroup ROUTE_19___FUCHSIA_GATE, 4, 5
+	mapgroup SEAFOAM_GYM, 4, 5
+	mapgroup ROUTE_19, 18, 10
+	mapgroup ROUTE_20, 9, 30
+	mapgroup ROUTE_21, 18, 10
+	mapgroup CINNABAR_ISLAND, 9, 10
+
+	newgroup
+	mapgroup CERULEAN_GYM_BADGE_SPEECH_HOUSE, 4, 4
+	mapgroup CERULEAN_POLICE_STATION, 4, 4
+	mapgroup CERULEAN_TRADE_SPEECH_HOUSE, 4, 4
+	mapgroup CERULEAN_POKECENTER_1F, 4, 5
+	mapgroup CERULEAN_POKECENTER_2F_BETA, 4, 8
+	mapgroup CERULEAN_GYM, 8, 5
+	mapgroup CERULEAN_MART, 4, 6
+	mapgroup ROUTE_10_POKECENTER_1F, 4, 5
+	mapgroup ROUTE_10_POKECENTER_2F_BETA, 4, 8
+	mapgroup POWER_PLANT, 9, 10
+	mapgroup BILLS_HOUSE, 4, 4
+	mapgroup ROUTE_4, 9, 20
+	mapgroup ROUTE_9, 9, 30
+	mapgroup ROUTE_10_NORTH, 9, 10
+	mapgroup ROUTE_24, 9, 10
+	mapgroup ROUTE_25, 9, 30
+	mapgroup CERULEAN_CITY, 18, 20
+
+	newgroup
+	mapgroup AZALEA_POKECENTER_1F, 4, 5
+	mapgroup CHARCOAL_KILN, 4, 4
+	mapgroup AZALEA_MART, 4, 6
+	mapgroup KURTS_HOUSE, 4, 8
+	mapgroup AZALEA_GYM, 8, 5
+	mapgroup ROUTE_33, 9, 10
+	mapgroup AZALEA_TOWN, 9, 20
+
+	newgroup
+	mapgroup LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, 4, 4
+	mapgroup LAKE_OF_RAGE_MAGIKARP_HOUSE, 4, 4
+	mapgroup ROUTE_43_MAHOGANY_GATE, 4, 5
+	mapgroup ROUTE_43_GATE, 4, 5
+	mapgroup ROUTE_43, 27, 10
+	mapgroup LAKE_OF_RAGE, 18, 20
+
+	newgroup
+	mapgroup ROUTE_32, 45, 10
+	mapgroup ROUTE_35, 18, 10
+	mapgroup ROUTE_36, 9, 30
+	mapgroup ROUTE_37, 9, 10
+	mapgroup VIOLET_CITY, 18, 20
+	mapgroup VIOLET_MART, 4, 6
+	mapgroup VIOLET_GYM, 8, 5
+	mapgroup EARLS_POKEMON_ACADEMY, 8, 4
+	mapgroup VIOLET_NICKNAME_SPEECH_HOUSE, 4, 4
+	mapgroup VIOLET_POKECENTER_1F, 4, 5
+	mapgroup VIOLET_ONIX_TRADE_HOUSE, 4, 4
+	mapgroup ROUTE_32_RUINS_OF_ALPH_GATE, 4, 5
+	mapgroup ROUTE_32_POKECENTER_1F, 4, 5
+	mapgroup ROUTE_35_GOLDENROD_GATE, 4, 5
+	mapgroup ROUTE_35_NATIONAL_PARK_GATE, 4, 4
+	mapgroup ROUTE_36_RUINS_OF_ALPH_GATE, 4, 5
+	mapgroup ROUTE_36_NATIONAL_PARK_GATE, 4, 5
+
+	newgroup
+	mapgroup ROUTE_34, 27, 10
+	mapgroup GOLDENROD_CITY, 18, 20
+	mapgroup GOLDENROD_GYM, 9, 10
+	mapgroup GOLDENROD_BIKE_SHOP, 4, 4
+	mapgroup GOLDENROD_HAPPINESS_RATER, 4, 4
+	mapgroup GOLDENROD_BILLS_HOUSE, 4, 4
+	mapgroup GOLDENROD_MAGNET_TRAIN_STATION, 9, 10
+	mapgroup GOLDENROD_FLOWER_SHOP, 4, 4
+	mapgroup GOLDENROD_PP_SPEECH_HOUSE, 4, 4
+	mapgroup GOLDENROD_NAME_RATERS_HOUSE, 4, 4
+	mapgroup GOLDENROD_DEPT_STORE_1F, 4, 8
+	mapgroup GOLDENROD_DEPT_STORE_2F, 4, 8
+	mapgroup GOLDENROD_DEPT_STORE_3F, 4, 8
+	mapgroup GOLDENROD_DEPT_STORE_4F, 4, 8
+	mapgroup GOLDENROD_DEPT_STORE_5F, 4, 8
+	mapgroup GOLDENROD_DEPT_STORE_6F, 4, 8
+	mapgroup GOLDENROD_DEPT_STORE_ELEVATOR, 2, 2
+	mapgroup GOLDENROD_DEPT_STORE_ROOF, 4, 8
+	mapgroup GOLDENROD_GAME_CORNER, 7, 10
+	mapgroup GOLDENROD_POKECENTER_1F, 4, 5
+	mapgroup GOLDENROD_POKECOM_CENTER_2F_MOBILE, 16, 16
+	mapgroup ILEX_FOREST_AZALEA_GATE, 4, 5
+	mapgroup ROUTE_34_ILEX_FOREST_GATE, 4, 5
+	mapgroup DAYCARE, 4, 5
+
+	newgroup
+	mapgroup ROUTE_6, 9, 10
+	mapgroup ROUTE_11, 9, 20
+	mapgroup VERMILION_CITY, 18, 20
+	mapgroup VERMILION_HOUSE_FISHING_SPEECH_HOUSE, 4, 4
+	mapgroup VERMILION_POKECENTER_1F, 4, 5
+	mapgroup VERMILION_POKECENTER_2F_BETA, 4, 8
+	mapgroup POKEMON_FAN_CLUB, 4, 5
+	mapgroup VERMILION_MAGNET_TRAIN_SPEECH_HOUSE, 4, 4
+	mapgroup VERMILION_MART, 4, 6
+	mapgroup VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE, 4, 4
+	mapgroup VERMILION_GYM, 9, 5
+	mapgroup ROUTE_6_SAFFRON_GATE, 4, 5
+	mapgroup ROUTE_6_UNDERGROUND_ENTRANCE, 4, 4
+
+	newgroup
+	mapgroup ROUTE_1, 18, 10
+	mapgroup PALLET_TOWN, 9, 10
+	mapgroup REDS_HOUSE_1F, 4, 4
+	mapgroup REDS_HOUSE_2F, 4, 4
+	mapgroup BLUES_HOUSE, 4, 4
+	mapgroup OAKS_LAB, 6, 5
+
+	newgroup
+	mapgroup ROUTE_3, 9, 30
+	mapgroup PEWTER_CITY, 18, 20
+	mapgroup PEWTER_NIDORAN_SPEECH_HOUSE, 4, 4
+	mapgroup PEWTER_GYM, 7, 5
+	mapgroup PEWTER_MART, 4, 6
+	mapgroup PEWTER_POKECENTER_1F, 4, 5
+	mapgroup PEWTER_POKECENTER_2F_BETA, 4, 8
+	mapgroup PEWTER_SNOOZE_SPEECH_HOUSE, 4, 4
+
+	newgroup
+	mapgroup OLIVINE_PORT, 18, 10
+	mapgroup VERMILION_PORT, 18, 10
+	mapgroup FAST_SHIP_1F, 9, 16
+	mapgroup FAST_SHIP_CABINS_NNW_NNE_NE, 16, 4
+	mapgroup FAST_SHIP_CABINS_SW_SSW_NW, 16, 4
+	mapgroup FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, 17, 5
+	mapgroup FAST_SHIP_B1F, 8, 16
+	mapgroup OLIVINE_PORT_PASSAGE, 9, 10
+	mapgroup VERMILION_PORT_PASSAGE, 9, 10
+	mapgroup MOUNT_MOON_SQUARE, 9, 15
+	mapgroup MOUNT_MOON_GIFT_SHOP, 4, 4
+	mapgroup TIN_TOWER_ROOF, 9, 10
+
+	newgroup
+	mapgroup ROUTE_23, 9, 10
+	mapgroup INDIGO_PLATEAU_POKECENTER_1F, 7, 9
+	mapgroup WILLS_ROOM, 9, 5
+	mapgroup KOGAS_ROOM, 9, 5
+	mapgroup BRUNOS_ROOM, 9, 5
+	mapgroup KARENS_ROOM, 9, 5
+	mapgroup LANCES_ROOM, 12, 5
+	mapgroup HALL_OF_FAME, 7, 5
+
+	newgroup
+	mapgroup ROUTE_13, 9, 30
+	mapgroup ROUTE_14, 18, 10
+	mapgroup ROUTE_15, 9, 20
+	mapgroup ROUTE_18, 9, 10
+	mapgroup FUCHSIA_CITY, 18, 20
+	mapgroup FUCHSIA_MART, 4, 6
+	mapgroup SAFARI_ZONE_MAIN_OFFICE, 4, 4
+	mapgroup FUCHSIA_GYM, 9, 5
+	mapgroup FUCHSIA_BILL_SPEECH_HOUSE, 4, 4
+	mapgroup FUCHSIA_POKECENTER_1F, 4, 5
+	mapgroup FUCHSIA_POKECENTER_2F_BETA, 4, 8
+	mapgroup SAFARI_ZONE_WARDENS_HOME, 4, 5
+	mapgroup ROUTE_15_FUCHSIA_GATE, 4, 5
+
+	newgroup
+	mapgroup ROUTE_8, 9, 20
+	mapgroup ROUTE_12, 27, 10
+	mapgroup ROUTE_10_SOUTH, 9, 10
+	mapgroup LAVENDER_TOWN, 9, 10
+	mapgroup LAVENDER_POKECENTER_1F, 4, 5
+	mapgroup LAVENDER_POKECENTER_2F_BETA, 4, 8
+	mapgroup MR_FUJIS_HOUSE, 4, 5
+	mapgroup LAVENDER_TOWN_SPEECH_HOUSE, 4, 4
+	mapgroup LAVENDER_NAME_RATER, 4, 4
+	mapgroup LAVENDER_MART, 4, 6
+	mapgroup SOUL_HOUSE, 4, 5
+	mapgroup LAV_RADIO_TOWER_1F, 4, 10
+	mapgroup ROUTE_8_SAFFRON_GATE, 4, 5
+	mapgroup ROUTE_12_SUPER_ROD_HOUSE, 4, 4
+
+	newgroup
+	mapgroup ROUTE_28, 9, 20
+	mapgroup SILVER_CAVE_OUTSIDE, 18, 20
+	mapgroup SILVER_CAVE_POKECENTER_1F, 4, 5
+	mapgroup ROUTE_28_FAMOUS_SPEECH_HOUSE, 4, 4
+
+	newgroup
+	mapgroup POKECENTER_2F, 4, 8
+	mapgroup TRADE_CENTER, 4, 5
+	mapgroup COLOSSEUM, 4, 5
+	mapgroup TIME_CAPSULE, 4, 5
+	mapgroup MOBILE_TRADE_ROOM_MOBILE, 4, 5
+	mapgroup MOBILE_BATTLE_ROOM, 4, 5
+
+	newgroup
+	mapgroup ROUTE_7, 9, 10
+	mapgroup ROUTE_16, 9, 10
+	mapgroup ROUTE_17, 45, 10
+	mapgroup CELADON_CITY, 18, 20
+	mapgroup CELADON_DEPT_STORE_1F, 4, 8
+	mapgroup CELADON_DEPT_STORE_2F, 4, 8
+	mapgroup CELADON_DEPT_STORE_3F, 4, 8
+	mapgroup CELADON_DEPT_STORE_4F, 4, 8
+	mapgroup CELADON_DEPT_STORE_5F, 4, 8
+	mapgroup CELADON_DEPT_STORE_6F, 4, 8
+	mapgroup CELADON_DEPT_STORE_ELEVATOR, 2, 2
+	mapgroup CELADON_MANSION_1F, 5, 4
+	mapgroup CELADON_MANSION_2F, 5, 4
+	mapgroup CELADON_MANSION_3F, 5, 4
+	mapgroup CELADON_MANSION_ROOF, 5, 4
+	mapgroup CELADON_MANSION_ROOF_HOUSE, 4, 4
+	mapgroup CELADON_POKECENTER_1F, 4, 5
+	mapgroup CELADON_POKECENTER_2F_BETA, 4, 8
+	mapgroup CELADON_GAME_CORNER, 7, 10
+	mapgroup CELADON_GAME_CORNER_PRIZE_ROOM, 3, 3
+	mapgroup CELADON_GYM, 9, 5
+	mapgroup CELADON_CAFE, 4, 6
+	mapgroup ROUTE_16_FUCHSIA_SPEECH_HOUSE, 4, 4
+	mapgroup ROUTE_16_GATE, 4, 5
+	mapgroup ROUTE_7_SAFFRON_GATE, 4, 5
+	mapgroup ROUTE_17_18_GATE, 4, 5
+
+	newgroup
+	mapgroup ROUTE_40, 18, 10
+	mapgroup ROUTE_41, 27, 25
+	mapgroup CIANWOOD_CITY, 27, 15
+	mapgroup MANIAS_HOUSE, 4, 4
+	mapgroup CIANWOOD_GYM, 9, 5
+	mapgroup CIANWOOD_POKECENTER_1F, 4, 5
+	mapgroup CIANWOOD_PHARMACY, 4, 4
+	mapgroup CIANWOOD_CITY_PHOTO_STUDIO, 4, 4
+	mapgroup CIANWOOD_LUGIA_SPEECH_HOUSE, 4, 4
+	mapgroup POKE_SEERS_HOUSE, 4, 4
+	mapgroup BATTLE_TOWER_1F, 5, 8
+	mapgroup BATTLE_TOWER_BATTLE_ROOM, 4, 4
+	mapgroup BATTLE_TOWER_ELEVATOR, 2, 2
+	mapgroup BATTLE_TOWER_HALLWAY, 2, 11
+	mapgroup ROUTE_40_BATTLE_TOWER_GATE, 4, 5
+	mapgroup BATTLE_TOWER_OUTSIDE, 14, 10
+
+	newgroup
+	mapgroup ROUTE_2, 27, 10
+	mapgroup ROUTE_22, 9, 20
+	mapgroup VIRIDIAN_CITY, 18, 20
+	mapgroup VIRIDIAN_GYM, 9, 5
+	mapgroup VIRIDIAN_NICKNAME_SPEECH_HOUSE, 4, 4
+	mapgroup TRAINER_HOUSE_1F, 7, 5
+	mapgroup TRAINER_HOUSE_B1F, 8, 5
+	mapgroup VIRIDIAN_MART, 4, 6
+	mapgroup VIRIDIAN_POKECENTER_1F, 4, 5
+	mapgroup VIRIDIAN_POKECENTER_2F_BETA, 4, 8
+	mapgroup ROUTE_2_NUGGET_SPEECH_HOUSE, 4, 4
+	mapgroup ROUTE_2_GATE, 4, 5
+	mapgroup VICTORY_ROAD_GATE, 9, 10
 
+	newgroup
+	mapgroup ROUTE_26, 54, 10
+	mapgroup ROUTE_27, 9, 40
+	mapgroup ROUTE_29, 9, 30
+	mapgroup NEW_BARK_TOWN, 9, 10
+	mapgroup ELMS_LAB, 6, 5
+	mapgroup KRISS_HOUSE_1F, 4, 5
+	mapgroup KRISS_HOUSE_2F, 3, 4
+	mapgroup KRISS_NEIGHBORS_HOUSE, 4, 4
+	mapgroup ELMS_HOUSE, 4, 4
+	mapgroup ROUTE_26_HEAL_SPEECH_HOUSE, 4, 4
+	mapgroup ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, 4, 4
+	mapgroup ROUTE_27_SANDSTORM_HOUSE, 4, 4
+	mapgroup ROUTE_29_46_GATE, 4, 5
+
+	newgroup
+	mapgroup ROUTE_5, 9, 10
+	mapgroup SAFFRON_CITY, 18, 20
+	mapgroup FIGHTING_DOJO, 6, 5
+	mapgroup SAFFRON_GYM, 9, 10
+	mapgroup SAFFRON_MART, 4, 6
+	mapgroup SAFFRON_POKECENTER_1F, 4, 5
+	mapgroup SAFFRON_POKECENTER_2F_BETA, 4, 8
+	mapgroup MR_PSYCHICS_HOUSE, 4, 4
+	mapgroup SAFFRON_TRAIN_STATION, 9, 10
+	mapgroup SILPH_CO_1F, 4, 8
+	mapgroup COPYCATS_HOUSE_1F, 4, 4
+	mapgroup COPYCATS_HOUSE_2F, 3, 5
+	mapgroup ROUTE_5_UNDERGROUND_ENTRANCE, 4, 4
+	mapgroup ROUTE_5_SAFFRON_CITY_GATE, 4, 5
+	mapgroup ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE, 4, 4
+
+	newgroup
+	mapgroup ROUTE_30, 27, 10
+	mapgroup ROUTE_31, 9, 20
+	mapgroup CHERRYGROVE_CITY, 9, 20
+	mapgroup CHERRYGROVE_MART, 4, 6
+	mapgroup CHERRYGROVE_POKECENTER_1F, 4, 5
+	mapgroup CHERRYGROVE_GYM_SPEECH_HOUSE, 4, 4
+	mapgroup GUIDE_GENTS_HOUSE, 4, 4
+	mapgroup CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, 4, 4
+	mapgroup ROUTE_30_BERRY_SPEECH_HOUSE, 4, 4
+	mapgroup MR_POKEMONS_HOUSE, 4, 4
+	mapgroup ROUTE_31_VIOLET_GATE, 4, 5
+
 ; elevator floors
-_B4F  EQU $0
-_B3F  EQU $1
-_B2F  EQU $2
-_B1F  EQU $3
-_1F   EQU $4
-_2F   EQU $5
-_3F   EQU $6
-_4F   EQU $7
-_5F   EQU $8
-_6F   EQU $9
-_7F   EQU $a
-_8F   EQU $b
-_9F   EQU $c
-_10F  EQU $d
-_11F  EQU $e
-_ROOF EQU $f
 
+	const_def
+	const _B4F
+	const _B3F
+	const _B2F
+	const _B1F
+	const _1F
+	const _2F
+	const _3F
+	const _4F
+	const _5F
+	const _6F
+	const _7F
+	const _8F
+	const _9F
+	const _10F
+	const _11F
+	const _ROOF
+
 ; connection directions
-EAST EQU 1
-WEST EQU 2
-SOUTH EQU 4
-NORTH EQU 8
 
+	const_def
+	shift_const EAST
+	shift_const WEST
+	shift_const SOUTH
+	shift_const NORTH
+
 ; sprites
-SPRITE_CHRIS                 EQU $01
-SPRITE_CHRIS_BIKE            EQU $02
-SPRITE_GAMEBOY_KID           EQU $03
-SPRITE_SILVER                EQU $04
-SPRITE_OAK                   EQU $05
-SPRITE_RED                   EQU $06
-SPRITE_BLUE                  EQU $07
-SPRITE_BILL                  EQU $08
-SPRITE_ELDER                 EQU $09
-SPRITE_JANINE                EQU $0a
-SPRITE_KURT                  EQU $0b
-SPRITE_MOM                   EQU $0c
-SPRITE_BLAINE                EQU $0d
-SPRITE_REDS_MOM              EQU $0e
-SPRITE_DAISY                 EQU $0f
-SPRITE_ELM                   EQU $10
-SPRITE_WILL                  EQU $11
-SPRITE_FALKNER               EQU $12
-SPRITE_WHITNEY               EQU $13
-SPRITE_BUGSY                 EQU $14
-SPRITE_MORTY                 EQU $15
-SPRITE_CHUCK                 EQU $16
-SPRITE_JASMINE               EQU $17
-SPRITE_PRYCE                 EQU $18
-SPRITE_CLAIR                 EQU $19
-SPRITE_BROCK                 EQU $1a
-SPRITE_KAREN                 EQU $1b
-SPRITE_BRUNO                 EQU $1c
-SPRITE_MISTY                 EQU $1d
-SPRITE_LANCE                 EQU $1e
-SPRITE_SURGE                 EQU $1f
-SPRITE_ERIKA                 EQU $20
-SPRITE_KOGA                  EQU $21
-SPRITE_SABRINA               EQU $22
-SPRITE_COOLTRAINER_M         EQU $23
-SPRITE_COOLTRAINER_F         EQU $24
-SPRITE_BUG_CATCHER           EQU $25
-SPRITE_TWIN                  EQU $26
-SPRITE_YOUNGSTER             EQU $27
-SPRITE_LASS                  EQU $28
-SPRITE_TEACHER               EQU $29
-SPRITE_BUENA                 EQU $2a
-SPRITE_SUPER_NERD            EQU $2b
-SPRITE_ROCKER                EQU $2c
-SPRITE_POKEFAN_M             EQU $2d
-SPRITE_POKEFAN_F             EQU $2e
-SPRITE_GRAMPS                EQU $2f
-SPRITE_GRANNY                EQU $30
-SPRITE_SWIMMER_GUY           EQU $31
-SPRITE_SWIMMER_GIRL          EQU $32
-SPRITE_BIG_SNORLAX           EQU $33
-SPRITE_SURFING_PIKACHU       EQU $34
-SPRITE_ROCKET                EQU $35
-SPRITE_ROCKET_GIRL           EQU $36
-SPRITE_NURSE                 EQU $37
-SPRITE_LINK_RECEPTIONIST     EQU $38
-SPRITE_CLERK                 EQU $39
-SPRITE_FISHER                EQU $3a
-SPRITE_FISHING_GURU          EQU $3b
-SPRITE_SCIENTIST             EQU $3c
-SPRITE_KIMONO_GIRL           EQU $3d
-SPRITE_SAGE                  EQU $3e
-SPRITE_UNUSED_GUY            EQU $3f
-SPRITE_GENTLEMAN             EQU $40
-SPRITE_BLACK_BELT            EQU $41
-SPRITE_RECEPTIONIST          EQU $42
-SPRITE_OFFICER               EQU $43
-SPRITE_CAL                   EQU $44
-SPRITE_SLOWPOKE              EQU $45
-SPRITE_CAPTAIN               EQU $46
-SPRITE_BIG_LAPRAS            EQU $47
-SPRITE_GYM_GUY               EQU $48
-SPRITE_SAILOR                EQU $49
-SPRITE_BIKER                 EQU $4a
-SPRITE_PHARMACIST            EQU $4b
-SPRITE_MONSTER               EQU $4c
-SPRITE_FAIRY                 EQU $4d
-SPRITE_BIRD                  EQU $4e
-SPRITE_DRAGON                EQU $4f
-SPRITE_BIG_ONIX              EQU $50
-SPRITE_N64                   EQU $51
-SPRITE_SUDOWOODO             EQU $52
-SPRITE_SURF                  EQU $53
-SPRITE_POKE_BALL             EQU $54
-SPRITE_POKEDEX               EQU $55
-SPRITE_PAPER                 EQU $56
-SPRITE_VIRTUAL_BOY           EQU $57
-SPRITE_OLD_LINK_RECEPTIONIST EQU $58
-SPRITE_ROCK                  EQU $59
-SPRITE_BOULDER               EQU $5a
-SPRITE_SNES                  EQU $5b
-SPRITE_FAMICOM               EQU $5c
-SPRITE_FRUIT_TREE            EQU $5d
-SPRITE_GOLD_TROPHY           EQU $5e
-SPRITE_SILVER_TROPHY         EQU $5f
-SPRITE_KRIS                  EQU $60
-SPRITE_KRIS_BIKE             EQU $61
-SPRITE_KURT_OUTSIDE          EQU $62
-SPRITE_SUICUNE               EQU $63
-SPRITE_ENTEI                 EQU $64
-SPRITE_RAIKOU                EQU $65
-SPRITE_STANDING_YOUNGSTER    EQU $66
+	const_def
+	const SPRITE_NONE ; 00
+	const SPRITE_CHRIS ; 01
+	const SPRITE_CHRIS_BIKE ; 02
+	const SPRITE_GAMEBOY_KID ; 03
+	const SPRITE_SILVER ; 04
+	const SPRITE_OAK ; 05
+	const SPRITE_RED ; 06
+	const SPRITE_BLUE ; 07
+	const SPRITE_BILL ; 08
+	const SPRITE_ELDER ; 09
+	const SPRITE_JANINE ; 0a
+	const SPRITE_KURT ; 0b
+	const SPRITE_MOM ; 0c
+	const SPRITE_BLAINE ; 0d
+	const SPRITE_REDS_MOM ; 0e
+	const SPRITE_DAISY ; 0f
+	const SPRITE_ELM ; 10
+	const SPRITE_WILL ; 11
+	const SPRITE_FALKNER ; 12
+	const SPRITE_WHITNEY ; 13
+	const SPRITE_BUGSY ; 14
+	const SPRITE_MORTY ; 15
+	const SPRITE_CHUCK ; 16
+	const SPRITE_JASMINE ; 17
+	const SPRITE_PRYCE ; 18
+	const SPRITE_CLAIR ; 19
+	const SPRITE_BROCK ; 1a
+	const SPRITE_KAREN ; 1b
+	const SPRITE_BRUNO ; 1c
+	const SPRITE_MISTY ; 1d
+	const SPRITE_LANCE ; 1e
+	const SPRITE_SURGE ; 1f
+	const SPRITE_ERIKA ; 20
+	const SPRITE_KOGA ; 21
+	const SPRITE_SABRINA ; 22
+	const SPRITE_COOLTRAINER_M ; 23
+	const SPRITE_COOLTRAINER_F ; 24
+	const SPRITE_BUG_CATCHER ; 25
+	const SPRITE_TWIN ; 26
+	const SPRITE_YOUNGSTER ; 27
+	const SPRITE_LASS ; 28
+	const SPRITE_TEACHER ; 29
+	const SPRITE_BUENA ; 2a
+	const SPRITE_SUPER_NERD ; 2b
+	const SPRITE_ROCKER ; 2c
+	const SPRITE_POKEFAN_M ; 2d
+	const SPRITE_POKEFAN_F ; 2e
+	const SPRITE_GRAMPS ; 2f
+	const SPRITE_GRANNY ; 30
+	const SPRITE_SWIMMER_GUY ; 31
+	const SPRITE_SWIMMER_GIRL ; 32
+	const SPRITE_BIG_SNORLAX ; 33
+	const SPRITE_SURFING_PIKACHU ; 34
+	const SPRITE_ROCKET ; 35
+	const SPRITE_ROCKET_GIRL ; 36
+	const SPRITE_NURSE ; 37
+	const SPRITE_LINK_RECEPTIONIST ; 38
+	const SPRITE_CLERK ; 39
+	const SPRITE_FISHER ; 3a
+	const SPRITE_FISHING_GURU ; 3b
+	const SPRITE_SCIENTIST ; 3c
+	const SPRITE_KIMONO_GIRL ; 3d
+	const SPRITE_SAGE ; 3e
+	const SPRITE_UNUSED_GUY ; 3f
+	const SPRITE_GENTLEMAN ; 40
+	const SPRITE_BLACK_BELT ; 41
+	const SPRITE_RECEPTIONIST ; 42
+	const SPRITE_OFFICER ; 43
+	const SPRITE_CAL ; 44
+	const SPRITE_SLOWPOKE ; 45
+	const SPRITE_CAPTAIN ; 46
+	const SPRITE_BIG_LAPRAS ; 47
+	const SPRITE_GYM_GUY ; 48
+	const SPRITE_SAILOR ; 49
+	const SPRITE_BIKER ; 4a
+	const SPRITE_PHARMACIST ; 4b
+	const SPRITE_MONSTER ; 4c
+	const SPRITE_FAIRY ; 4d
+	const SPRITE_BIRD ; 4e
+	const SPRITE_DRAGON ; 4f
+	const SPRITE_BIG_ONIX ; 50
+	const SPRITE_N64 ; 51
+	const SPRITE_SUDOWOODO ; 52
+	const SPRITE_SURF ; 53
+	const SPRITE_POKE_BALL ; 54
+	const SPRITE_POKEDEX ; 55
+	const SPRITE_PAPER ; 56
+	const SPRITE_VIRTUAL_BOY ; 57
+	const SPRITE_OLD_LINK_RECEPTIONIST ; 58
+	const SPRITE_ROCK ; 59
+	const SPRITE_BOULDER ; 5a
+	const SPRITE_SNES ; 5b
+	const SPRITE_FAMICOM ; 5c
+	const SPRITE_FRUIT_TREE ; 5d
+	const SPRITE_GOLD_TROPHY ; 5e
+	const SPRITE_SILVER_TROPHY ; 5f
+	const SPRITE_KRIS ; 60
+	const SPRITE_KRIS_BIKE ; 61
+	const SPRITE_KURT_OUTSIDE ; 62
+	const SPRITE_SUICUNE ; 63
+	const SPRITE_ENTEI ; 64
+	const SPRITE_RAIKOU ; 65
+	const SPRITE_STANDING_YOUNGSTER ; 66
 
-SPRITE_POKEMON EQU $80
-SPRITE_UNOWN      EQU $80
-SPRITE_GEODUDE    EQU $81
-SPRITE_GROWLITHE  EQU $82
-SPRITE_WEEDLE     EQU $83
-SPRITE_SHELLDER   EQU $84
-SPRITE_ODDISH     EQU $85
-SPRITE_GENGAR     EQU $86
-SPRITE_ZUBAT      EQU $87
-SPRITE_MAGIKARP   EQU $88
-SPRITE_SQUIRTLE   EQU $89
-SPRITE_TOGEPI     EQU $8a
-SPRITE_BUTTERFREE EQU $8b
-SPRITE_DIGLETT    EQU $8c
-SPRITE_POLIWAG    EQU $8d
-SPRITE_PIKACHU    EQU $8e
-SPRITE_CLEFAIRY   EQU $8f
-SPRITE_CHARMANDER EQU $90
-SPRITE_JYNX       EQU $91
-SPRITE_STARMIE    EQU $92
-SPRITE_BULBASAUR  EQU $93
-SPRITE_JIGGLYPUFF EQU $94
-SPRITE_GRIMER     EQU $95
-SPRITE_EKANS      EQU $96
-SPRITE_PARAS      EQU $97
-SPRITE_TENTACOOL  EQU $98
-SPRITE_TAUROS     EQU $99
-SPRITE_MACHOP     EQU $9a
-SPRITE_VOLTORB    EQU $9b
-SPRITE_LAPRAS     EQU $9c
-SPRITE_RHYDON     EQU $9d
-SPRITE_MOLTRES    EQU $9e
-SPRITE_SNORLAX    EQU $9f
-SPRITE_GYARADOS   EQU $a0
-SPRITE_LUGIA      EQU $a1
-SPRITE_HO_OH      EQU $a2
+const_value SET $80
 
-SPRITE_DAYCARE_MON_1 EQU $e0
-SPRITE_DAYCARE_MON_2 EQU $e1
+SPRITE_POKEMON EQU const_value
+	const SPRITE_UNOWN ; 80
+	const SPRITE_GEODUDE ; 81
+	const SPRITE_GROWLITHE ; 82
+	const SPRITE_WEEDLE ; 83
+	const SPRITE_SHELLDER ; 84
+	const SPRITE_ODDISH ; 85
+	const SPRITE_GENGAR ; 86
+	const SPRITE_ZUBAT ; 87
+	const SPRITE_MAGIKARP ; 88
+	const SPRITE_SQUIRTLE ; 89
+	const SPRITE_TOGEPI ; 8a
+	const SPRITE_BUTTERFREE ; 8b
+	const SPRITE_DIGLETT ; 8c
+	const SPRITE_POLIWAG ; 8d
+	const SPRITE_PIKACHU ; 8e
+	const SPRITE_CLEFAIRY ; 8f
+	const SPRITE_CHARMANDER ; 90
+	const SPRITE_JYNX ; 91
+	const SPRITE_STARMIE ; 92
+	const SPRITE_BULBASAUR ; 93
+	const SPRITE_JIGGLYPUFF ; 94
+	const SPRITE_GRIMER ; 95
+	const SPRITE_EKANS ; 96
+	const SPRITE_PARAS ; 97
+	const SPRITE_TENTACOOL ; 98
+	const SPRITE_TAUROS ; 99
+	const SPRITE_MACHOP ; 9a
+	const SPRITE_VOLTORB ; 9b
+	const SPRITE_LAPRAS ; 9c
+	const SPRITE_RHYDON ; 9d
+	const SPRITE_MOLTRES ; 9e
+	const SPRITE_SNORLAX ; 9f
+	const SPRITE_GYARADOS ; a0
+	const SPRITE_LUGIA ; a1
+	const SPRITE_HO_OH ; a2
 
-SPRITE_VARS EQU $f0
-SPRITE_CONSOLE EQU $f0
-SPRITE_DOLL_1 EQU $f1
-SPRITE_DOLL_2 EQU $f2
-SPRITE_BIG_DOLL EQU $f3
-SPRITE_WEIRD_TREE EQU $f4
-SPRITE_OLIVINE_RIVAL EQU $f5
-SPRITE_AZALEA_ROCKET EQU $f6
-SPRITE_FUSCHIA_GYM_1 EQU $f7
-SPRITE_FUSCHIA_GYM_2 EQU $f8
-SPRITE_FUSCHIA_GYM_3 EQU $f9
-SPRITE_FUSCHIA_GYM_4 EQU $fa
-SPRITE_COPYCAT EQU $fb
-SPRITE_JANINE_IMPERSONATOR EQU $fc
+const_value SET $e0
+	const SPRITE_DAYCARE_MON_1 ; e0
+	const SPRITE_DAYCARE_MON_2 ; e1
 
+const_value SET $f0
+SPRITE_VARS EQU const_value
+	const SPRITE_CONSOLE ; f0
+	const SPRITE_DOLL_1 ; f1
+	const SPRITE_DOLL_2 ; f2
+	const SPRITE_BIG_DOLL ; f3
+	const SPRITE_WEIRD_TREE ; f4
+	const SPRITE_OLIVINE_RIVAL ; f5
+	const SPRITE_AZALEA_ROCKET ; f6
+	const SPRITE_FUCHSIA_GYM_1 ; f7
+	const SPRITE_FUCHSIA_GYM_2 ; f8
+	const SPRITE_FUCHSIA_GYM_3 ; f9
+	const SPRITE_FUCHSIA_GYM_4 ; fa
+	const SPRITE_COPYCAT ; fb
+	const SPRITE_JANINE_IMPERSONATOR ; fc
+
 ; sprite types
-WALKING_SPRITE  EQU 1
-STANDING_SPRITE EQU 2
-STILL_SPRITE    EQU 3
+const_value SET 1
+	const WALKING_SPRITE
+	const STANDING_SPRITE
+	const STILL_SPRITE
 
 ; sprite palettes
-PAL_OW_RED    EQU 0
-PAL_OW_BLUE   EQU 1
-PAL_OW_GREEN  EQU 2
-PAL_OW_BROWN  EQU 3
-PAL_OW_PINK   EQU 4
-PAL_OW_SILVER EQU 5
-PAL_OW_TREE   EQU 6
-PAL_OW_ROCK   EQU 7
+	const_def
+	const PAL_OW_RED
+	const PAL_OW_BLUE
+	const PAL_OW_GREEN
+	const PAL_OW_BROWN
+	const PAL_OW_PINK
+	const PAL_OW_SILVER
+	const PAL_OW_TREE
+	const PAL_OW_ROCK
 
 ; permissions
-TOWN EQU 1
-ROUTE EQU 2
-INDOOR EQU 3
-CAVE EQU 4
+const_value SET 1
+	const TOWN
+	const ROUTE
+	const INDOOR
+	const CAVE
+	const PERM_5
+	const GATE
+	const DUNGEON
 
-GATE EQU 6
-DUNGEON EQU 7
-
 ; object struct
-OBJECT_00 EQU $0
-OBJECT_01 EQU $1
-OBJECT_SPRITE EQU $2
-OBJECT_03 EQU $3
-OBJECT_04 EQU $4
-OBJECT_FLAGS EQU $5
-OBJECT_PALETTE EQU $6
-OBJECT_07 EQU $7
-OBJECT_08 EQU $8
-OBJECT_09 EQU $9
-OBJECT_STEP_DURATION EQU $a
-OBJECT_11 EQU $b
-OBJECT_12 EQU $c
-OBJECT_FACING EQU $d
-OBJECT_STANDING_TILE EQU $e
-OBJECT_NEXT_TILE EQU $f
-OBJECT_MAP_X EQU $10
-OBJECT_MAP_Y EQU $11
-OBJECT_NEXT_MAP_X EQU $12
-OBJECT_NEXT_MAP_Y EQU $13
-OBJECT_20 EQU $14
-OBJECT_21 EQU $15
-OBJECT_22 EQU $16
-OBJECT_SPRITE_X EQU $17
-OBJECT_SPRITE_Y EQU $18
-OBJECT_SPRITE_X_OFFSET EQU $19
-OBJECT_SPRITE_Y_OFFSET EQU $1a
-OBJECT_27 EQU $1b
-OBJECT_28 EQU $1c
-OBJECT_29 EQU $1d
-OBJECT_30 EQU $1e
-OBJECT_31 EQU $1f
-OBJECT_32 EQU $20
+	const_def
+	const OBJECT_SPRITE
+	const OBJECT_MAP_OBJECT_INDEX
+	const OBJECT_SPRITE_TILE
+	const OBJECT_03
+	const OBJECT_04
+	const OBJECT_FLAGS
+	const OBJECT_PALETTE
+	const OBJECT_DIRECTION_WALKING
+	const OBJECT_FACING
+	const OBJECT_09
+	const OBJECT_STEP_DURATION
+	const OBJECT_11
+	const OBJECT_12
+	const OBJECT_FACING_STEP
+	const OBJECT_STANDING_TILE
+	const OBJECT_NEXT_TILE
+	const OBJECT_MAP_X
+	const OBJECT_MAP_Y
+	const OBJECT_NEXT_MAP_X
+	const OBJECT_NEXT_MAP_Y
+	const OBJECT_20
+	const OBJECT_21
+	const OBJECT_22
+	const OBJECT_SPRITE_X
+	const OBJECT_SPRITE_Y
+	const OBJECT_SPRITE_X_OFFSET
+	const OBJECT_SPRITE_Y_OFFSET
+	const OBJECT_27
+	const OBJECT_28
+	const OBJECT_29
+	const OBJECT_30
+	const OBJECT_31
+	const OBJECT_32
 ; 33-39 are not used
+
+; map object struct
+	const_def
+	const MAPOBJECT_OBJECT_STRUCT_ID ; 0
+	const MAPOBJECT_SPRITE ; 1
+	const MAPOBJECT_Y_COORD ; 2
+	const MAPOBJECT_X_COORD ; 3
+	const MAPOBJECT_FACING ; 4
+	const MAPOBJECT_MOVEMENT ; 5
+	const MAPOBJECT_HOUR ; 6
+	const MAPOBJECT_TIMEOFDAY ; 7
+	const MAPOBJECT_COLOR ; 8
+	const MAPOBJECT_RANGE ; 9
+	const MAPOBJECT_SCRIPT_POINTER ; a
+	const MAPOBJECT_POINTER_HI ; b
+	const MAPOBJECT_EVENT_FLAG ; c
+	const MAPOBJECT_FLAG_HI ; d
+	const MAPOBJECT_E ; unused
+	const MAPOBJECT_F ; unused
+
+MAPOBJECT_SCREEN_HEIGHT EQU 11
+MAPOBJECT_SCREEN_WIDTH EQU 12
+OBJECT_STRUCT_3_DATA_WIDTH EQU 6
+OBJECT_STRUCT_3_DATA_HEIGHT EQU 37
+
+OW_DOWN  EQU $0
+OW_UP    EQU $4
+OW_LEFT  EQU $8
+OW_RIGHT EQU $c
+
+	const_def
+	const EMOTE_SHOCK ; 0
+	const EMOTE_QUESTION ; 1
+	const EMOTE_HAPPY ; 2
+	const EMOTE_SAD ; 3
+	const EMOTE_HEART ; 4
+	const EMOTE_BOLT ; 5
+	const EMOTE_SLEEP ; 6
+	const EMOTE_FISH ; 7
+	const EMOTE_ROD_DOWN ; 8
+	const EMOTE_ROD_UP ; 9
+	const EMOTE_ROD_LEFT ; a
+	const EMOTE_ROD_RIGHT ; b
+
+	const_def
+	const SIGNPOST_READ
+	const SIGNPOST_UP
+	const SIGNPOST_DOWN
+	const SIGNPOST_RIGHT
+	const SIGNPOST_LEFT
+	const SIGNPOST_IFSET
+	const SIGNPOST_IFNOTSET
+	const SIGNPOST_ITEM
+	const SIGNPOST_COPY
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -12,6 +12,7 @@
 PKMN_NAME_LENGTH EQU 11
 MOVE_NAME_LENGTH EQU 13
 ITEM_NAME_LENGTH EQU 13
+TRAINER_CLASS_NAME_LENGTH EQU 13
 NAME_LENGTH EQU 11
 LV_CHAR EQU $6e
 
@@ -96,3 +97,9 @@
 SWITCH_SOMETIMES   EQU 1 << SWITCH_SOMETIMES_F
 SWITCH_RARELY      EQU 1 << SWITCH_RARELY_F
 SWITCH_OFTEN       EQU 1 << SWITCH_OFTEN_F
+SPRITE_GFX_LIST_CAPACITY EQU $20
+
+const_value = 1
+	const MOM_ITEM
+	const MOM_DOLL
+
--- a/constants/music_constants.asm
+++ b/constants/music_constants.asm
@@ -1,106 +1,107 @@
-MUSIC_NONE EQU 0
-MUSIC_TITLE EQU 1
-MUSIC_ROUTE_1 EQU 2
-MUSIC_ROUTE_3 EQU 3
-MUSIC_ROUTE_12 EQU 4
-MUSIC_MAGNET_TRAIN EQU 5
-MUSIC_KANTO_GYM_LEADER_BATTLE EQU 6
-MUSIC_KANTO_TRAINER_BATTLE EQU 7
-MUSIC_KANTO_WILD_BATTLE EQU 8
-MUSIC_POKEMON_CENTER EQU 9
-MUSIC_HIKER_ENCOUNTER EQU 10
-MUSIC_LASS_ENCOUNTER EQU 11
-MUSIC_OFFICER_ENCOUNTER EQU 12
-MUSIC_HEAL EQU 13
-MUSIC_LAVENDER_TOWN EQU 14
-MUSIC_ROUTE_2 EQU 15
-MUSIC_MT_MOON EQU 16
-MUSIC_SHOW_ME_AROUND EQU 17
-MUSIC_GAME_CORNER EQU 18
-MUSIC_BICYCLE EQU 19
-MUSIC_HALL_OF_FAME EQU 20
-MUSIC_VIRIDIAN_CITY EQU 21
-MUSIC_CELADON_CITY EQU 22
-MUSIC_TRAINER_VICTORY EQU 23
-MUSIC_WILD_VICTORY EQU 24
-MUSIC_GYM_VICTORY EQU 25
-MUSIC_MT_MOON_SQUARE EQU 26
-MUSIC_GYM EQU 27
-MUSIC_PALLET_TOWN EQU 28
-MUSIC_POKEMON_TALK EQU 29
-MUSIC_PROF_OAK EQU 30
-MUSIC_RIVAL_ENCOUNTER EQU 31
-MUSIC_RIVAL_AFTER EQU 32
-MUSIC_SURF EQU 33
-MUSIC_EVOLUTION EQU 34
-MUSIC_NATIONAL_PARK EQU 35
-MUSIC_CREDITS EQU 36
-MUSIC_AZALEA_TOWN EQU 37
-MUSIC_CHERRYGROVE_CITY EQU 38
-MUSIC_KIMONO_ENCOUNTER EQU 39
-MUSIC_UNION_CAVE EQU 40
-MUSIC_JOHTO_WILD_BATTLE EQU 41
-MUSIC_JOHTO_TRAINER_BATTLE EQU 42
-MUSIC_ROUTE_30 EQU 43
-MUSIC_ECRUTEAK_CITY EQU 44
-MUSIC_VIOLET_CITY EQU 45
-MUSIC_JOHTO_GYM_LEADER_BATTLE EQU 46
-MUSIC_CHAMPION_BATTLE EQU 47
-MUSIC_RIVAL_BATTLE EQU 48
-MUSIC_ROCKET_BATTLE EQU 49
-MUSIC_PROF_ELM EQU 50
-MUSIC_DARK_CAVE EQU 51
-MUSIC_ROUTE_29 EQU 52
-MUSIC_ROUTE_36 EQU 53
-MUSIC_SS_AQUA EQU 54
-MUSIC_YOUNGSTER_ENCOUNTER EQU 55
-MUSIC_BEAUTY_ENCOUNTER EQU 56
-MUSIC_ROCKET_ENCOUNTER EQU 57
-MUSIC_POKEMANIAC_ENCOUNTER EQU 58
-MUSIC_SAGE_ENCOUNTER EQU 59
-MUSIC_NEW_BARK_TOWN EQU 60
-MUSIC_GOLDENROD_CITY EQU 61
-MUSIC_VERMILION_CITY EQU 62
-MUSIC_POKEMON_CHANNEL EQU 63
-MUSIC_POKE_FLUTE_CHANNEL EQU 64
-MUSIC_TIN_TOWER EQU 65
-MUSIC_SPROUT_TOWER EQU 66
-MUSIC_BURNED_TOWER EQU 67
-MUSIC_LIGHTHOUSE EQU 68
-MUSIC_LAKE_OF_RAGE EQU 69
-MUSIC_INDIGO_PLATEAU EQU 70
-MUSIC_ROUTE_37 EQU 71
-MUSIC_ROCKET_HIDEOUT EQU 72
-MUSIC_DRAGONS_DEN EQU 73
-MUSIC_JOHTO_WILD_BATTLE_NIGHT EQU 74
-MUSIC_RUINS_OF_ALPH_RADIO EQU 75
-MUSIC_CAPTURE EQU 76
-MUSIC_ROUTE_26 EQU 77
-MUSIC_MOM EQU 78
-MUSIC_VICTORY_ROAD EQU 79
-MUSIC_POKEMON_LULLABY EQU 80
-MUSIC_POKEMON_MARCH EQU 81
-MUSIC_GS_OPENING EQU 82
-MUSIC_GS_OPENING_2 EQU 83
-MUSIC_MAIN_MENU EQU 84
-MUSIC_RUINS_OF_ALPH_INTERIOR EQU 85
-MUSIC_ROCKET_OVERTURE EQU 86
-MUSIC_DANCING_HALL EQU 87
-MUSIC_BUG_CATCHING_CONTEST_RANKING EQU 88
-MUSIC_BUG_CATCHING_CONTEST EQU 89
-MUSIC_LAKE_OF_RAGE_ROCKET_RADIO EQU 90
-MUSIC_PRINTER EQU 91
-MUSIC_POST_CREDITS EQU 92
+	const_def
 
-MUSIC_CLAIR EQU 93
-MUSIC_MOBILE_ADAPTER_MENU EQU 94
-MUSIC_MOBILE_ADAPTER EQU 95
-MUSIC_BUENAS_PASSWORD EQU 96
-MUSIC_MYSTICALMAN_ENCOUNTER EQU 97
-MUSIC_CRYSTAL_OPENING EQU 98
-MUSIC_BATTLE_TOWER_THEME EQU 99
-MUSIC_SUICUNE_BATTLE EQU 100
-MUSIC_BATTLE_TOWER_LOBBY EQU 101
-MUSIC_MOBILE_CENTER EQU 102
+	const MUSIC_NONE
+	const MUSIC_TITLE
+	const MUSIC_ROUTE_1
+	const MUSIC_ROUTE_3
+	const MUSIC_ROUTE_12
+	const MUSIC_MAGNET_TRAIN
+	const MUSIC_KANTO_GYM_LEADER_BATTLE
+	const MUSIC_KANTO_TRAINER_BATTLE
+	const MUSIC_KANTO_WILD_BATTLE
+	const MUSIC_POKEMON_CENTER
+	const MUSIC_HIKER_ENCOUNTER
+	const MUSIC_LASS_ENCOUNTER
+	const MUSIC_OFFICER_ENCOUNTER
+	const MUSIC_HEAL
+	const MUSIC_LAVENDER_TOWN
+	const MUSIC_ROUTE_2
+	const MUSIC_MT_MOON
+	const MUSIC_SHOW_ME_AROUND
+	const MUSIC_GAME_CORNER
+	const MUSIC_BICYCLE
+	const MUSIC_HALL_OF_FAME
+	const MUSIC_VIRIDIAN_CITY
+	const MUSIC_CELADON_CITY
+	const MUSIC_TRAINER_VICTORY
+	const MUSIC_WILD_VICTORY
+	const MUSIC_GYM_VICTORY
+	const MUSIC_MT_MOON_SQUARE
+	const MUSIC_GYM
+	const MUSIC_PALLET_TOWN
+	const MUSIC_POKEMON_TALK
+	const MUSIC_PROF_OAK
+	const MUSIC_RIVAL_ENCOUNTER
+	const MUSIC_RIVAL_AFTER
+	const MUSIC_SURF
+	const MUSIC_EVOLUTION
+	const MUSIC_NATIONAL_PARK
+	const MUSIC_CREDITS
+	const MUSIC_AZALEA_TOWN
+	const MUSIC_CHERRYGROVE_CITY
+	const MUSIC_KIMONO_ENCOUNTER
+	const MUSIC_UNION_CAVE
+	const MUSIC_JOHTO_WILD_BATTLE
+	const MUSIC_JOHTO_TRAINER_BATTLE
+	const MUSIC_ROUTE_30
+	const MUSIC_ECRUTEAK_CITY
+	const MUSIC_VIOLET_CITY
+	const MUSIC_JOHTO_GYM_LEADER_BATTLE
+	const MUSIC_CHAMPION_BATTLE
+	const MUSIC_RIVAL_BATTLE
+	const MUSIC_ROCKET_BATTLE
+	const MUSIC_PROF_ELM
+	const MUSIC_DARK_CAVE
+	const MUSIC_ROUTE_29
+	const MUSIC_ROUTE_36
+	const MUSIC_SS_AQUA
+	const MUSIC_YOUNGSTER_ENCOUNTER
+	const MUSIC_BEAUTY_ENCOUNTER
+	const MUSIC_ROCKET_ENCOUNTER
+	const MUSIC_POKEMANIAC_ENCOUNTER
+	const MUSIC_SAGE_ENCOUNTER
+	const MUSIC_NEW_BARK_TOWN
+	const MUSIC_GOLDENROD_CITY
+	const MUSIC_VERMILION_CITY
+	const MUSIC_POKEMON_CHANNEL
+	const MUSIC_POKE_FLUTE_CHANNEL
+	const MUSIC_TIN_TOWER
+	const MUSIC_SPROUT_TOWER
+	const MUSIC_BURNED_TOWER
+	const MUSIC_LIGHTHOUSE
+	const MUSIC_LAKE_OF_RAGE
+	const MUSIC_INDIGO_PLATEAU
+	const MUSIC_ROUTE_37
+	const MUSIC_ROCKET_HIDEOUT
+	const MUSIC_DRAGONS_DEN
+	const MUSIC_JOHTO_WILD_BATTLE_NIGHT
+	const MUSIC_RUINS_OF_ALPH_RADIO
+	const MUSIC_CAPTURE
+	const MUSIC_ROUTE_26
+	const MUSIC_MOM
+	const MUSIC_VICTORY_ROAD
+	const MUSIC_POKEMON_LULLABY
+	const MUSIC_POKEMON_MARCH
+	const MUSIC_GS_OPENING
+	const MUSIC_GS_OPENING_2
+	const MUSIC_MAIN_MENU
+	const MUSIC_RUINS_OF_ALPH_INTERIOR
+	const MUSIC_ROCKET_OVERTURE
+	const MUSIC_DANCING_HALL
+	const MUSIC_BUG_CATCHING_CONTEST_RANKING
+	const MUSIC_BUG_CATCHING_CONTEST
+	const MUSIC_LAKE_OF_RAGE_ROCKET_RADIO
+	const MUSIC_PRINTER
+	const MUSIC_POST_CREDITS
+	const MUSIC_CLAIR
+	const MUSIC_MOBILE_ADAPTER_MENU
+	const MUSIC_MOBILE_ADAPTER
+	const MUSIC_BUENAS_PASSWORD
+	const MUSIC_MYSTICALMAN_ENCOUNTER
+	const MUSIC_CRYSTAL_OPENING
+	const MUSIC_BATTLE_TOWER_THEME
+	const MUSIC_SUICUNE_BATTLE
+	const MUSIC_BATTLE_TOWER_LOBBY
+	const MUSIC_MOBILE_CENTER
 
 MUSIC_MAHOGANY_MART EQU 100 ; leftover from gold
--- /dev/null
+++ b/constants/phone_constants.asm
@@ -1,0 +1,52 @@
+
+	const_def
+	const PHONE_00
+	const PHONE_MOM
+	const PHONE_OAK
+	const PHONE_BILL
+	const PHONE_ELM
+	const PHONE_SCHOOLBOY_JACK
+	const PHONE_POKEFAN_BEVERLY
+	const PHONE_SAILOR_HUEY
+	const PHONE_08
+	const PHONE_09
+	const PHONE_0A
+	const PHONE_COOLTRAINERM_GAVEN
+	const PHONE_COOLTRAINERF_BETH
+	const PHONE_BIRDKEEPER_JOSE
+	const PHONE_COOLTRAINERF_REENA
+	const PHONE_YOUNGSTER_JOEY
+	const PHONE_BUG_CATCHER_WADE
+	const PHONE_FISHER_RALPH
+	const PHONE_PICNICKER_LIZ
+	const PHONE_HIKER_ANTHONY
+	const PHONE_CAMPER_TODD
+	const PHONE_PICNICKER_GINA
+	const PHONE_JUGGLER_IRWIN
+	const PHONE_BUG_CATCHER_ARNIE
+	const PHONE_SCHOOLBOY_ALAN
+	const PHONE_19
+	const PHONE_LASS_DANA
+	const PHONE_SCHOOLBOY_CHAD
+	const PHONE_POKEFANM_DEREK
+	const PHONE_FISHER_TULLY
+	const PHONE_POKEMANIAC_BRENT
+	const PHONE_PICNICKER_TIFFANY
+	const PHONE_BIRDKEEPER_VANCE
+	const PHONE_FISHER_WILTON
+	const PHONE_BLACKBELT_KENJI
+	const PHONE_HIKER_PARRY
+	const PHONE_PICNICKER_ERIN
+	const PHONE_BUENA
+
+	const_def
+	const ELMCALL_NONE
+	const ELMCALL_POKERUS
+	const ELMCALL_ROBBED
+	const ELMCALL_ASSISTANT
+	const ELMCALL_WEIRDBROADCAST
+	const ELMCALL_SSTICKET
+	const ELMCALL_UNKNOWN
+	const MOMCALL_WORRIED
+	const ELMCALL_MASTERBALL
+
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -1,5 +1,5 @@
-NUM_POKEMON EQU 251
 
+; pokemon
 const_value set 1
 	const BULBASAUR
 	const IVYSAUR
@@ -253,4 +253,37 @@
 	const HO_OH
 	const CELEBI
 
+const_value SET const_value + -1
+
+NUM_POKEMON EQU const_value
+
 EGG EQU 253
+
+; pokemon structure in RAM
+MON_SPECIES            EQUS "PartyMon1Species - PartyMon1"
+MON_ITEM               EQUS "PartyMon1Item - PartyMon1"
+MON_MOVES              EQUS "PartyMon1Moves - PartyMon1"
+MON_ID                 EQUS "PartyMon1ID - PartyMon1"
+MON_EXP                EQUS "PartyMon1Exp - PartyMon1"
+MON_HP_EXP             EQUS "PartyMon1HPExp - PartyMon1"
+MON_ATK_EXP            EQUS "PartyMon1AtkExp - PartyMon1"
+MON_DEF_EXP            EQUS "PartyMon1DefExp - PartyMon1"
+MON_SPD_EXP            EQUS "PartyMon1SpdExp - PartyMon1"
+MON_SPC_EXP            EQUS "PartyMon1SpcExp - PartyMon1"
+MON_DVS                EQUS "PartyMon1DVs - PartyMon1"
+MON_PP                 EQUS "PartyMon1PP - PartyMon1"
+MON_HAPPINESS          EQUS "PartyMon1Happiness - PartyMon1"
+MON_PKRUS              EQUS "PartyMon1PokerusStatus - PartyMon1"
+MON_CAUGHTTIME         EQUS "PartyMon1CaughtTime - PartyMon1"
+MON_CAUGHTGENDER       EQUS "PartyMon1CaughtGender - PartyMon1"
+MON_LEVEL              EQUS "PartyMon1Level - PartyMon1"
+MON_STATUS             EQUS "PartyMon1Status - PartyMon1"
+MON_HP                 EQUS "PartyMon1HP - PartyMon1"
+MON_MAXHP              EQUS "PartyMon1MaxHP - PartyMon1"
+MON_ATK                EQUS "PartyMon1Attack - PartyMon1"
+MON_DEF                EQUS "PartyMon1Defense - PartyMon1"
+MON_SPD                EQUS "PartyMon1Speed - PartyMon1"
+MON_SAT                EQUS "PartyMon1SpclAtk - PartyMon1"
+MON_SDF                EQUS "PartyMon1SpclDef - PartyMon1"
+BOXMON_STRUCT_LENGTH   EQUS "PartyMon1Status - PartyMon1"
+PARTYMON_STRUCT_LENGTH EQUS "PartyMon1StatsEnd - PartyMon1"
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -1,75 +1,80 @@
 ; growth rate
-MEDIUM_FAST EQU 0
-MEDIUM_SLOW EQU 3
-SLOW        EQU 4
-FAST        EQU 5
+	const_def
+	const MEDIUM_FAST
+	const SLIGHTLY_FAST
+	const SLIGHTLY_SLOW
+	const MEDIUM_SLOW
+	const SLOW
+	const FAST
 
 ; egg group constants
+const_value SET 1
+	const MONSTER
+	const AMPHIBIAN
+	const INSECT
+	const AVIAN
+	const FIELD
+	const FAIRY
+	const PLANT
+	const HUMANSHAPE
+	const INVERTEBRATE
+	const INANIMATE
+	const AMORPHOUS
+	const FISH
+	const LADIES_MAN
+	const REPTILE
+	const NO_EGGS
 
-MONSTER       EQU $01
-AMPHIBIAN     EQU $02
-INSECT        EQU $03
-AVIAN         EQU $04
-FIELD         EQU $05
-FAIRY         EQU $06
-PLANT         EQU $07
-HUMANSHAPE    EQU $08
-INVERTEBRATE  EQU $09
-INANIMATE     EQU $0A
-AMORPHOUS     EQU $0B
-FISH          EQU $0C
-LADIES_MAN    EQU $0D
-REPTILE       EQU $0E
-NO_EGGS       EQU $0F
 
-
 ; menu sprites
-ICON_POLIWAG       EQU $01
-ICON_JIGGLYPUFF    EQU $02
-ICON_DIGLETT       EQU $03
-ICON_PIKACHU       EQU $04
-ICON_STARYU        EQU $05
-ICON_FISH          EQU $06
-ICON_BIRD          EQU $07
-ICON_MONSTER       EQU $08
-ICON_CLEFAIRY      EQU $09
-ICON_ODDISH        EQU $0a
-ICON_BUG           EQU $0b
-ICON_GHOST         EQU $0c
-ICON_LAPRAS        EQU $0d
-ICON_HUMANSHAPE    EQU $0e
-ICON_FOX           EQU $0f
-ICON_EQUINE        EQU $10
-ICON_SHELL         EQU $11
-ICON_BLOB          EQU $12
-ICON_SERPENT       EQU $13
-ICON_VOLTORB       EQU $14
-ICON_SQUIRTLE      EQU $15
-ICON_BULBASAUR     EQU $16
-ICON_CHARMANDER    EQU $17
-ICON_CATERPILLAR   EQU $18
-ICON_UNOWN         EQU $19
-ICON_GEODUDE       EQU $1a
-ICON_FIGHTER       EQU $1b
-ICON_EGG           EQU $1c
-ICON_JELLYFISH     EQU $1d
-ICON_MOTH          EQU $1e
-ICON_BAT           EQU $1f
-ICON_SNORLAX       EQU $20
-ICON_HO_OH         EQU $21
-ICON_LUGIA         EQU $22
-ICON_GYARADOS      EQU $23
-ICON_SLOWPOKE      EQU $24
-ICON_SUDOWOODO     EQU $25
-ICON_BIGMON        EQU $26
+const_value SET 1
+	const ICON_POLIWAG
+	const ICON_JIGGLYPUFF
+	const ICON_DIGLETT
+	const ICON_PIKACHU
+	const ICON_STARYU
+	const ICON_FISH
+	const ICON_BIRD
+	const ICON_MONSTER
+	const ICON_CLEFAIRY
+	const ICON_ODDISH
+	const ICON_BUG
+	const ICON_GHOST
+	const ICON_LAPRAS
+	const ICON_HUMANSHAPE
+	const ICON_FOX
+	const ICON_EQUINE
+	const ICON_SHELL
+	const ICON_BLOB
+	const ICON_SERPENT
+	const ICON_VOLTORB
+	const ICON_SQUIRTLE
+	const ICON_BULBASAUR
+	const ICON_CHARMANDER
+	const ICON_CATERPILLAR
+	const ICON_UNOWN
+	const ICON_GEODUDE
+	const ICON_FIGHTER
+	const ICON_EGG
+	const ICON_JELLYFISH
+	const ICON_MOTH
+	const ICON_BAT
+	const ICON_SNORLAX
+	const ICON_HO_OH
+	const ICON_LUGIA
+	const ICON_GYARADOS
+	const ICON_SLOWPOKE
+	const ICON_SUDOWOODO
+	const ICON_BIGMON
 
 
 ; evolution types
-EVOLVE_LEVEL     EQU 1
-EVOLVE_ITEM      EQU 2
-EVOLVE_TRADE     EQU 3
-EVOLVE_HAPPINESS EQU 4
-EVOLVE_STAT      EQU 5
+const_value SET 1
+	const EVOLVE_LEVEL
+	const EVOLVE_ITEM
+	const EVOLVE_TRADE
+	const EVOLVE_HAPPINESS
+	const EVOLVE_STAT
 
 
 BASE_HAPPINESS        EQU 70
@@ -77,12 +82,14 @@
 
 ; happiness evolution triggers
 HAPPINESS_TO_EVOLVE EQU 220
-TR_ANYTIME EQU 1
-TR_MORNDAY EQU 2
-TR_NITE    EQU 3
+const_value SET 1
+	const TR_ANYTIME
+	const TR_MORNDAY
+	const TR_NITE
 
 
 ; stat evolution triggers
-ATK_GT_DEF EQU 1
-ATK_LT_DEF EQU 2
-ATK_EQ_DEF EQU 3
+const_value SET 1
+	const ATK_GT_DEF
+	const ATK_LT_DEF
+	const ATK_EQ_DEF
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -1,208 +1,210 @@
-SFX_DEX_FANFARE_50_79           EQU $00
-SFX_ITEM                        EQU $01
-SFX_CAUGHT_MON                  EQU $02
-SFX_POKEBALLS_PLACED_ON_TABLE   EQU $03
-SFX_POTION                      EQU $04
-SFX_FULL_HEAL                   EQU $05
-SFX_MENU                        EQU $06
-SFX_READ_TEXT                   EQU $07
-SFX_READ_TEXT_2                 EQU $08
-SFX_DEX_FANFARE_20_49           EQU $09
-SFX_DEX_FANFARE_80_109          EQU $0a
-SFX_POISON                      EQU $0b
-SFX_GOT_SAFARI_BALLS            EQU $0c
-SFX_BOOT_PC                     EQU $0d
-SFX_SHUT_DOWN_PC                EQU $0e
-SFX_CHOOSE_PC_OPTION            EQU $0f
-SFX_ESCAPE_ROPE                 EQU $10
-SFX_PUSH_BUTTON                 EQU $11
-SFX_SECOND_PART_OF_ITEMFINDER   EQU $12
-SFX_WARP_TO                     EQU $13
-SFX_WARP_FROM                   EQU $14
-SFX_CHANGE_DEX_MODE             EQU $15
-SFX_JUMP_OVER_LEDGE             EQU $16
-SFX_GRASS_RUSTLE                EQU $17
-SFX_FLY                         EQU $18
-SFX_WRONG                       EQU $19
-SFX_SQUEAK                      EQU $1a
-SFX_STRENGTH                    EQU $1b
-SFX_BOAT                        EQU $1c
-SFX_WALL_OPEN                   EQU $1d
-SFX_PLACE_PUZZLE_PIECE_DOWN     EQU $1e
-SFX_ENTER_DOOR                  EQU $1f
-SFX_SWITCH_POKEMON              EQU $20
-SFX_TALLY                       EQU $21
-SFX_TRANSACTION                 EQU $22
-SFX_EXIT_BUILDING               EQU $23
-SFX_BUMP                        EQU $24
-SFX_SAVE                        EQU $25
-SFX_POKEFLUTE                   EQU $26
-SFX_ELEVATOR_END                EQU $27
-SFX_THROW_BALL                  EQU $28
-SFX_BALL_POOF                   EQU $29
-SFX_UNKNOWN_2A                  EQU $2a
-SFX_RUN                         EQU $2b
-SFX_SLOT_MACHINE_START          EQU $2c
-SFX_FANFARE                     EQU $2d
-SFX_PECK                        EQU $2e
-SFX_KINESIS                     EQU $2f
-SFX_LICK                        EQU $30
-SFX_POUND                       EQU $31
-SFX_MOVE_PUZZLE_PIECE           EQU $32
-SFX_COMET_PUNCH                 EQU $33
-SFX_MEGA_PUNCH                  EQU $34
-SFX_SCRATCH                     EQU $35
-SFX_VICEGRIP                    EQU $36
-SFX_RAZOR_WIND                  EQU $37
-SFX_CUT                         EQU $38
-SFX_WING_ATTACK                 EQU $39
-SFX_WHIRLWIND                   EQU $3a
-SFX_BIND                        EQU $3b
-SFX_VINE_WHIP                   EQU $3c
-SFX_DOUBLE_KICK                 EQU $3d
-SFX_MEGA_KICK                   EQU $3e
-SFX_HEADBUTT                    EQU $3f
-SFX_HORN_ATTACK                 EQU $40
-SFX_TACKLE                      EQU $41
-SFX_POISON_STING                EQU $42
-SFX_POWDER                      EQU $43
-SFX_DOUBLESLAP                  EQU $44
-SFX_BITE                        EQU $45
-SFX_JUMP_KICK                   EQU $46
-SFX_STOMP                       EQU $47
-SFX_TAIL_WHIP                   EQU $48
-SFX_KARATE_CHOP                 EQU $49
-SFX_SUBMISSION                  EQU $4a
-SFX_WATER_GUN                   EQU $4b
-SFX_SWORDS_DANCE                EQU $4c
-SFX_THUNDER                     EQU $4d
-SFX_SUPERSONIC                  EQU $4e
-SFX_LEER                        EQU $4f
-SFX_EMBER                       EQU $50
-SFX_BUBBLEBEAM                  EQU $51
-SFX_HYDRO_PUMP                  EQU $52
-SFX_SURF                        EQU $53
-SFX_PSYBEAM                     EQU $54
-SFX_CHARGE                      EQU $55
-SFX_THUNDERSHOCK                EQU $56
-SFX_PSYCHIC                     EQU $57
-SFX_SCREECH                     EQU $58
-SFX_BONE_CLUB                   EQU $59
-SFX_SHARPEN                     EQU $5a
-SFX_EGG_BOMB                    EQU $5b
-SFX_SING                        EQU $5c
-SFX_HYPER_BEAM                  EQU $5d
-SFX_SHINE                       EQU $5e
-SFX_UNKNOWN_5F                  EQU $5f
-SFX_UNKNOWN_60                  EQU $60
-SFX_UNKNOWN_61                  EQU $61
-SFX_UNKNOWN_62                  EQU $62
-SFX_UNKNOWN_63                  EQU $63
-SFX_BURN                        EQU $64
-SFX_TITLE_SCREEN_ENTRANCE       EQU $65
-SFX_UNKNOWN_66                  EQU $66
-SFX_GET_COIN_FROM_SLOTS         EQU $67
-SFX_PAY_DAY                     EQU $68
-SFX_METRONOME                   EQU $69
-SFX_CALL                        EQU $6a
-SFX_HANG_UP                     EQU $6b
-SFX_NO_SIGNAL                   EQU $6c
-SFX_SANDSTORM                   EQU $6d
-SFX_ELEVATOR                    EQU $6e
-SFX_PROTECT                     EQU $6f
-SFX_SKETCH                      EQU $70
-SFX_RAIN_DANCE                  EQU $71
-SFX_AEROBLAST                   EQU $72
-SFX_SPARK                       EQU $73
-SFX_CURSE                       EQU $74
-SFX_RAGE                        EQU $75
-SFX_THIEF                       EQU $76
-SFX_THIEF_2                     EQU $77
-SFX_SPIDER_WEB                  EQU $78
-SFX_MIND_READER                 EQU $79
-SFX_NIGHTMARE                   EQU $7a
-SFX_SNORE                       EQU $7b
-SFX_SWEET_KISS                  EQU $7c
-SFX_SWEET_KISS_2                EQU $7d
-SFX_BELLY_DRUM                  EQU $7e
-SFX_UNKNOWN_7F                  EQU $7f
-SFX_SLUDGE_BOMB                 EQU $80
-SFX_FORESIGHT                   EQU $81
-SFX_SPITE                       EQU $82
-SFX_OUTRAGE                     EQU $83
-SFX_PERISH_SONG                 EQU $84
-SFX_GIGA_DRAIN                  EQU $85
-SFX_ATTRACT                     EQU $86
-SFX_KINESIS_2                   EQU $87
-SFX_ZAP_CANNON                  EQU $88
-SFX_MEAN_LOOK                   EQU $89
-SFX_HEAL_BELL                   EQU $8a
-SFX_RETURN                      EQU $8b
-SFX_EXP_BAR                     EQU $8c
-SFX_MILK_DRINK                  EQU $8d
-SFX_PRESENT                     EQU $8e
-SFX_MORNING_SUN                 EQU $8f
-SFX_LEVEL_UP                    EQU $90
-SFX_KEY_ITEM                    EQU $91
-SFX_FANFARE_2                   EQU $92
-SFX_REGISTER_PHONE_NUMBER       EQU $93
-SFX_3RD_PLACE                   EQU $94
-SFX_GET_EGG_FROM_DAYCARE_MAN    EQU $95
-SFX_GET_EGG_FROM_DAYCARE_LADY   EQU $96
-SFX_MOVE_DELETED                EQU $97
-SFX_2ND_PLACE                   EQU $98
-SFX_1ST_PLACE                   EQU $99
-SFX_CHOOSE_A_CARD               EQU $9a
-SFX_GET_TM                      EQU $9b
-SFX_GET_BADGE                   EQU $9c
-SFX_QUIT_SLOTS                  EQU $9d
-SFX_EGG_CRACK                   EQU $9e
-SFX_DEX_FANFARE_LESS_THAN_20    EQU $9f
-SFX_DEX_FANFARE_140_169         EQU $a0
-SFX_DEX_FANFARE_170_199         EQU $a1
-SFX_DEX_FANFARE_200_229         EQU $a2
-SFX_DEX_FANFARE_230_PLUS        EQU $a3
-SFX_EVOLVED                     EQU $a4
-SFX_MASTER_BALL                 EQU $a5
-SFX_EGG_HATCH                   EQU $a6
-SFX_GS_INTRO_CHARIZARD_FIREBALL EQU $a7
-SFX_GS_INTRO_POKEMON_APPEARS    EQU $a8
-SFX_FLASH                       EQU $a9
-SFX_GAME_FREAK_LOGO_GS          EQU $aa
-SFX_NOT_VERY_EFFECTIVE          EQU $ab
-SFX_DAMAGE                      EQU $ac
-SFX_SUPER_EFFECTIVE             EQU $ad
-SFX_BALL_BOUNCE                 EQU $ae
-SFX_MOONLIGHT                   EQU $af
-SFX_ENCORE                      EQU $b0
-SFX_BEAT_UP                     EQU $b1
-SFX_BATON_PASS                  EQU $b2
-SFX_BALL_WIGGLE                 EQU $b3
-SFX_SWEET_SCENT                 EQU $b4
-SFX_SWEET_SCENT_2               EQU $b5
-SFX_HIT_END_OF_EXP_BAR          EQU $b6
-SFX_GIVE_TRADEMON               EQU $b7
-SFX_GET_TRADEMON                EQU $b8
-SFX_TRAIN_ARRIVED               EQU $b9
-SFX_STOP_SLOT                   EQU $ba
-SFX_2_BOOPS                     EQU $bb
-SFX_GLASS_TING                  EQU $bc
-SFX_GLASS_TING_2                EQU $bd
+	const_def
 
-SFX_INTRO_UNOWN_1               EQU $be
-SFX_INTRO_UNOWN_2               EQU $bf
-SFX_INTRO_UNOWN_3               EQU $c0
-SFX_DITTO_POP_UP                EQU $c1
-SFX_DITTO_TRANSFORM             EQU $c2
-SFX_INTRO_SUICUNE_1             EQU $c3
-SFX_INTRO_PICHU                 EQU $c4
-SFX_INTRO_SUICUNE_2             EQU $c5
-SFX_INTRO_SUICUNE_3             EQU $c6
-SFX_DITTO_BOUNCE                EQU $c7
-SFX_INTRO_SUICUNE_4             EQU $c8
-SFX_GAME_FREAK_PRESENTS         EQU $c9
-SFX_TINGLE                      EQU $ca
-SFX_UNKNOWN_CB                  EQU $cb
-SFX_TWO_PC_BEEPS                EQU $cc
-SFX_4_NOTE_DITTY                EQU $cd
-SFX_TWINKLE                     EQU $ce
+	const SFX_DEX_FANFARE_50_79
+	const SFX_ITEM
+	const SFX_CAUGHT_MON
+	const SFX_POKEBALLS_PLACED_ON_TABLE
+	const SFX_POTION
+	const SFX_FULL_HEAL
+	const SFX_MENU
+	const SFX_READ_TEXT
+	const SFX_READ_TEXT_2
+	const SFX_DEX_FANFARE_20_49
+	const SFX_DEX_FANFARE_80_109
+	const SFX_POISON
+	const SFX_GOT_SAFARI_BALLS
+	const SFX_BOOT_PC
+	const SFX_SHUT_DOWN_PC
+	const SFX_CHOOSE_PC_OPTION
+	const SFX_ESCAPE_ROPE
+	const SFX_PUSH_BUTTON
+	const SFX_SECOND_PART_OF_ITEMFINDER
+	const SFX_WARP_TO
+	const SFX_WARP_FROM
+	const SFX_CHANGE_DEX_MODE
+	const SFX_JUMP_OVER_LEDGE
+	const SFX_GRASS_RUSTLE
+	const SFX_FLY
+	const SFX_WRONG
+	const SFX_SQUEAK
+	const SFX_STRENGTH
+	const SFX_BOAT
+	const SFX_WALL_OPEN
+	const SFX_PLACE_PUZZLE_PIECE_DOWN
+	const SFX_ENTER_DOOR
+	const SFX_SWITCH_POKEMON
+	const SFX_TALLY
+	const SFX_TRANSACTION
+	const SFX_EXIT_BUILDING
+	const SFX_BUMP
+	const SFX_SAVE
+	const SFX_POKEFLUTE
+	const SFX_ELEVATOR_END
+	const SFX_THROW_BALL
+	const SFX_BALL_POOF
+	const SFX_UNKNOWN_2A
+	const SFX_RUN
+	const SFX_SLOT_MACHINE_START
+	const SFX_FANFARE
+	const SFX_PECK
+	const SFX_KINESIS
+	const SFX_LICK
+	const SFX_POUND
+	const SFX_MOVE_PUZZLE_PIECE
+	const SFX_COMET_PUNCH
+	const SFX_MEGA_PUNCH
+	const SFX_SCRATCH
+	const SFX_VICEGRIP
+	const SFX_RAZOR_WIND
+	const SFX_CUT
+	const SFX_WING_ATTACK
+	const SFX_WHIRLWIND
+	const SFX_BIND
+	const SFX_VINE_WHIP
+	const SFX_DOUBLE_KICK
+	const SFX_MEGA_KICK
+	const SFX_HEADBUTT
+	const SFX_HORN_ATTACK
+	const SFX_TACKLE
+	const SFX_POISON_STING
+	const SFX_POWDER
+	const SFX_DOUBLESLAP
+	const SFX_BITE
+	const SFX_JUMP_KICK
+	const SFX_STOMP
+	const SFX_TAIL_WHIP
+	const SFX_KARATE_CHOP
+	const SFX_SUBMISSION
+	const SFX_WATER_GUN
+	const SFX_SWORDS_DANCE
+	const SFX_THUNDER
+	const SFX_SUPERSONIC
+	const SFX_LEER
+	const SFX_EMBER
+	const SFX_BUBBLEBEAM
+	const SFX_HYDRO_PUMP
+	const SFX_SURF
+	const SFX_PSYBEAM
+	const SFX_CHARGE
+	const SFX_THUNDERSHOCK
+	const SFX_PSYCHIC
+	const SFX_SCREECH
+	const SFX_BONE_CLUB
+	const SFX_SHARPEN
+	const SFX_EGG_BOMB
+	const SFX_SING
+	const SFX_HYPER_BEAM
+	const SFX_SHINE
+	const SFX_UNKNOWN_5F
+	const SFX_UNKNOWN_60
+	const SFX_UNKNOWN_61
+	const SFX_UNKNOWN_62
+	const SFX_UNKNOWN_63
+	const SFX_BURN
+	const SFX_TITLE_SCREEN_ENTRANCE
+	const SFX_UNKNOWN_66
+	const SFX_GET_COIN_FROM_SLOTS
+	const SFX_PAY_DAY
+	const SFX_METRONOME
+	const SFX_CALL
+	const SFX_HANG_UP
+	const SFX_NO_SIGNAL
+	const SFX_SANDSTORM
+	const SFX_ELEVATOR
+	const SFX_PROTECT
+	const SFX_SKETCH
+	const SFX_RAIN_DANCE
+	const SFX_AEROBLAST
+	const SFX_SPARK
+	const SFX_CURSE
+	const SFX_RAGE
+	const SFX_THIEF
+	const SFX_THIEF_2
+	const SFX_SPIDER_WEB
+	const SFX_MIND_READER
+	const SFX_NIGHTMARE
+	const SFX_SNORE
+	const SFX_SWEET_KISS
+	const SFX_SWEET_KISS_2
+	const SFX_BELLY_DRUM
+	const SFX_UNKNOWN_7F
+	const SFX_SLUDGE_BOMB
+	const SFX_FORESIGHT
+	const SFX_SPITE
+	const SFX_OUTRAGE
+	const SFX_PERISH_SONG
+	const SFX_GIGA_DRAIN
+	const SFX_ATTRACT
+	const SFX_KINESIS_2
+	const SFX_ZAP_CANNON
+	const SFX_MEAN_LOOK
+	const SFX_HEAL_BELL
+	const SFX_RETURN
+	const SFX_EXP_BAR
+	const SFX_MILK_DRINK
+	const SFX_PRESENT
+	const SFX_MORNING_SUN
+	const SFX_LEVEL_UP
+	const SFX_KEY_ITEM
+	const SFX_FANFARE_2
+	const SFX_REGISTER_PHONE_NUMBER
+	const SFX_3RD_PLACE
+	const SFX_GET_EGG_FROM_DAYCARE_MAN
+	const SFX_GET_EGG_FROM_DAYCARE_LADY
+	const SFX_MOVE_DELETED
+	const SFX_2ND_PLACE
+	const SFX_1ST_PLACE
+	const SFX_CHOOSE_A_CARD
+	const SFX_GET_TM
+	const SFX_GET_BADGE
+	const SFX_QUIT_SLOTS
+	const SFX_EGG_CRACK
+	const SFX_DEX_FANFARE_LESS_THAN_20
+	const SFX_DEX_FANFARE_140_169
+	const SFX_DEX_FANFARE_170_199
+	const SFX_DEX_FANFARE_200_229
+	const SFX_DEX_FANFARE_230_PLUS
+	const SFX_EVOLVED
+	const SFX_MASTER_BALL
+	const SFX_EGG_HATCH
+	const SFX_GS_INTRO_CHARIZARD_FIREBALL
+	const SFX_GS_INTRO_POKEMON_APPEARS
+	const SFX_FLASH
+	const SFX_GAME_FREAK_LOGO_GS
+	const SFX_NOT_VERY_EFFECTIVE
+	const SFX_DAMAGE
+	const SFX_SUPER_EFFECTIVE
+	const SFX_BALL_BOUNCE
+	const SFX_MOONLIGHT
+	const SFX_ENCORE
+	const SFX_BEAT_UP
+	const SFX_BATON_PASS
+	const SFX_BALL_WIGGLE
+	const SFX_SWEET_SCENT
+	const SFX_SWEET_SCENT_2
+	const SFX_HIT_END_OF_EXP_BAR
+	const SFX_GIVE_TRADEMON
+	const SFX_GET_TRADEMON
+	const SFX_TRAIN_ARRIVED
+	const SFX_STOP_SLOT
+	const SFX_2_BOOPS
+	const SFX_GLASS_TING
+	const SFX_GLASS_TING_2
+
+	const SFX_INTRO_UNOWN_1
+	const SFX_INTRO_UNOWN_2
+	const SFX_INTRO_UNOWN_3
+	const SFX_DITTO_POP_UP
+	const SFX_DITTO_TRANSFORM
+	const SFX_INTRO_SUICUNE_1
+	const SFX_INTRO_PICHU
+	const SFX_INTRO_SUICUNE_2
+	const SFX_INTRO_SUICUNE_3
+	const SFX_DITTO_BOUNCE
+	const SFX_INTRO_SUICUNE_4
+	const SFX_GAME_FREAK_PRESENTS
+	const SFX_TINGLE
+	const SFX_UNKNOWN_CB
+	const SFX_TWO_PC_BEEPS
+	const SFX_4_NOTE_DITTY
+	const SFX_TWINKLE
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -1,625 +1,609 @@
-NUM_TRAINER_CLASSES EQU $44
-
 ; trainer groups
-FALKNER      EQU $01
-WHITNEY      EQU $02
-BUGSY        EQU $03
-MORTY        EQU $04
-PRYCE        EQU $05
-JASMINE      EQU $06
-CHUCK        EQU $07
-CLAIR        EQU $08
-RIVAL1       EQU $09
-POKEMON_PROF EQU $0A
-WILL         EQU $0B
-CAL          EQU $0C
-BRUNO        EQU $0D
-KAREN        EQU $0E
-KOGA         EQU $0F
-CHAMPION     EQU $10
-BROCK        EQU $11
-MISTY        EQU $12
-LT_SURGE     EQU $13
-SCIENTIST    EQU $14
-ERIKA        EQU $15
-YOUNGSTER    EQU $16
-SCHOOLBOY    EQU $17
-BIRD_KEEPER  EQU $18
-LASS         EQU $19
-JANINE       EQU $1A
-COOLTRAINERM EQU $1B
-COOLTRAINERF EQU $1C
-BEAUTY       EQU $1D
-POKEMANIAC   EQU $1E
-GRUNTM       EQU $1F
-GENTLEMAN    EQU $20
-SKIER        EQU $21
-TEACHER      EQU $22
-SABRINA      EQU $23
-BUG_CATCHER  EQU $24
-FISHER       EQU $25
-SWIMMERM     EQU $26
-SWIMMERF     EQU $27
-SAILOR       EQU $28
-SUPER_NERD   EQU $29
-RIVAL2       EQU $2A
-GUITARIST    EQU $2B
-HIKER        EQU $2C
-BIKER        EQU $2D
-BLAINE       EQU $2E
-BURGLAR      EQU $2F
-FIREBREATHER EQU $30
-JUGGLER      EQU $31
-BLACKBELT_T  EQU $32
-EXECUTIVEM   EQU $33
-PSYCHIC_T    EQU $34
-PICNICKER    EQU $35
-CAMPER       EQU $36
-EXECUTIVEF   EQU $37
-SAGE         EQU $38
-MEDIUM       EQU $39
-BOARDER      EQU $3A
-POKEFANM     EQU $3B
-KIMONO_GIRL  EQU $3C
-TWINS        EQU $3D
-POKEFANF     EQU $3E
-RED          EQU $3F
-BLUE         EQU $40
-OFFICER      EQU $41
-GRUNTF       EQU $42
-MYSTICALMAN  EQU $43
+	enum_start 1
+	trainerclass FALKNER ; 1
 
-; Rival1
-RIVAL1_1 EQU $01
-RIVAL1_2 EQU $02
-RIVAL1_3 EQU $03
-RIVAL1_4 EQU $04
-RIVAL1_5 EQU $05
-RIVAL1_6 EQU $06
-RIVAL1_7 EQU $07
-RIVAL1_8 EQU $08
-RIVAL1_9 EQU $09
-RIVAL1_10 EQU $0a
-RIVAL1_11 EQU $0b
-RIVAL1_12 EQU $0c
-RIVAL1_13 EQU $0d
-RIVAL1_14 EQU $0e
-RIVAL1_15 EQU $0f
+	trainerclass WHITNEY ; 2
 
-; PokemonProf
-; no trainers
+	trainerclass BUGSY ; 3
 
-; SpecialPKMN1
-CAL1 EQU $01
-CAL2 EQU $02
-CAL3 EQU $03
+	trainerclass MORTY ; 4
 
-; Champion
-LANCE EQU $01
+	trainerclass PRYCE ; 5
 
-; Scientist
-ROSS EQU $01
-MITCH EQU $02
-JED EQU $03
-MARC EQU $04
-RICH EQU $05
+	trainerclass JASMINE ; 6
 
-; Youngster
-JOEY1 EQU $01
-MIKEY EQU $02
-ALBERT EQU $03
-GORDON EQU $04
-SAMUEL EQU $05
-IAN EQU $06
-JOEY2 EQU $07
-JOEY3 EQU $08
-WARREN EQU $09
-JIMMY EQU $0a
-OWEN EQU $0b
-JASON EQU $0c
-JOEY4 EQU $0d
-JOEY5 EQU $0e
+	trainerclass CHUCK ; 7
 
-; Schoolboy
-JACK1 EQU $01
-KIPP EQU $02
-ALAN1 EQU $03
-JOHNNY EQU $04
-DANNY EQU $05
-TOMMY EQU $06
-DUDLEY EQU $07
-JOE EQU $08
-BILLY EQU $09
-CHAD1 EQU $0a
-NATE EQU $0b
-RICKY EQU $0c
-JACK2 EQU $0d
-JACK3 EQU $0e
-ALAN2 EQU $0f
-ALAN3 EQU $10
-CHAD2 EQU $11
-CHAD3 EQU $12
-JACK4 EQU $13
-JACK5 EQU $14
-ALAN4 EQU $15
-ALAN5 EQU $16
-CHAD4 EQU $17
-CHAD5 EQU $18
+	trainerclass CLAIR ; 8
 
-; BirdKeeper
-ROD EQU $01
-ABE EQU $02
-BRYAN EQU $03
-THEO EQU $04
-TOBY EQU $05
-DENIS EQU $06
-VANCE1 EQU $07
-HANK EQU $08
-ROY EQU $09
-BORIS EQU $0a
-BOB EQU $0b
-JOSE1 EQU $0c
-PETER EQU $0d
-JOSE2 EQU $0e
-PERRY EQU $0f
-BRET EQU $10
-JOSE3 EQU $11
-VANCE2 EQU $12
-VANCE3 EQU $13
+	trainerclass RIVAL1 ; 9
+	const RIVAL1_1
+	const RIVAL1_2
+	const RIVAL1_3
+	const RIVAL1_4
+	const RIVAL1_5
+	const RIVAL1_6
+	const RIVAL1_7
+	const RIVAL1_8
+	const RIVAL1_9
+	const RIVAL1_10
+	const RIVAL1_11
+	const RIVAL1_12
+	const RIVAL1_13
+	const RIVAL1_14
+	const RIVAL1_15
 
-; Lass
-CARRIE EQU $01
-BRIDGET EQU $02
-ALICE EQU $03
-KRISE EQU $04
-CONNIE1 EQU $05
-LINDA EQU $06
-LAURA EQU $07
-SHANNON EQU $08
-MICHELLE EQU $09
-DANA1 EQU $0a
-ELLEN EQU $0b
-CONNIE2 EQU $0c
-CONNIE3 EQU $0d
-DANA2 EQU $0e
-DANA3 EQU $0f
-DANA4 EQU $10
-DANA5 EQU $11
+	trainerclass POKEMON_PROF ; a
 
-; CooltrainerM
-NICK EQU $01
-AARON EQU $02
-PAUL EQU $03
-CODY EQU $04
-MIKE EQU $05
-GAVEN1 EQU $06
-GAVEN2 EQU $07
-RYAN EQU $08
-JAKE EQU $09
-GAVEN3 EQU $0a
-BLAKE EQU $0b
-BRIAN EQU $0c
-ERICK EQU $0d
-ANDY EQU $0e
-TYLER EQU $0f
-SEAN EQU $10
-KEVIN EQU $11
-STEVE EQU $12
-ALLEN EQU $13
-DARIN EQU $14
+	trainerclass WILL ; b
 
-; CooltrainerF
-GWEN EQU $01
-LOIS EQU $02
-FRAN EQU $03
-LOLA EQU $04
-KATE EQU $05
-IRENE EQU $06
-KELLY EQU $07
-JOYCE EQU $08
-BETH1 EQU $09
-REENA1 EQU $0a
-MEGAN EQU $0b
-BETH2 EQU $0c
-CAROL EQU $0d
-QUINN EQU $0e
-EMMA EQU $0f
-CYBIL EQU $10
-JENN EQU $11
-BETH3 EQU $12
-REENA2 EQU $13
-REENA3 EQU $14
-CARA EQU $15
+	trainerclass CAL ; c
+	const CAL1
+	const CAL2
+	const CAL3
 
-; Beauty
-VICTORIA EQU $01
-SAMANTHA EQU $02
-JULIE EQU $03
-JACLYN EQU $04
-BRENDA EQU $05
-CASSIE EQU $06
-CAROLINE EQU $07
-CARLENE EQU $08
-JESSICA EQU $09
-RACHAEL EQU $0a
-ANGELICA EQU $0b
-KENDRA EQU $0c
-VERONICA EQU $0d
-JULIA EQU $0e
-THERESA EQU $0f
-VALERIE EQU $10
-OLIVIA EQU $11
+	trainerclass BRUNO ; d
 
-; Pokemaniac
-LARRY EQU $01
-ANDREW EQU $02
-CALVIN EQU $03
-SHANE EQU $04
-BEN EQU $05
-BRENT1 EQU $06
-RON EQU $07
-ETHAN EQU $08
-BRENT2 EQU $09
-BRENT3 EQU $0a
-ISSAC EQU $0b
-DONALD EQU $0c
-ZACH EQU $0d
-BRENT4 EQU $0e
-MILLER EQU $0f
+	trainerclass KAREN ; e
 
-; Gentleman
-PRESTON EQU $01
-EDWARD EQU $02
-GREGORY EQU $03
-VIRGIL EQU $04
-ALFRED EQU $05
+	trainerclass KOGA ; f
 
-; Skier
-ROXANNE EQU $01
-CLARISSA EQU $02
+	trainerclass CHAMPION ; 10
+	const LANCE
 
-; Teacher
-COLETTE EQU $01
-HILLARY EQU $02
-SHIRLEY EQU $03
+	trainerclass BROCK ; 11
 
-; BugCatcher
-DON EQU $01
-ROB EQU $02
-ED EQU $03
-WADE1 EQU $04
-BUG_CATCHER_BENNY EQU $05
-AL EQU $06
-JOSH EQU $07
-ARNIE1 EQU $08
-KEN EQU $09
-WADE2 EQU $0a
-WADE3 EQU $0b
-DOUG EQU $0c
-ARNIE2 EQU $0d
-ARNIE3 EQU $0e
-WADE4 EQU $0f
-WADE5 EQU $10
-ARNIE4 EQU $11
-ARNIE5 EQU $12
-WAYNE EQU $13
+	trainerclass MISTY ; 12
 
-; Fisher
-JUSTIN EQU $01
-RALPH1 EQU $02
-ARNOLD EQU $03
-KYLE EQU $04
-HENRY EQU $05
-MARVIN EQU $06
-TULLY1 EQU $07
-ANDRE EQU $08
-RAYMOND EQU $09
-WILTON1 EQU $0a
-EDGAR EQU $0b
-JONAH EQU $0c
-MARTIN EQU $0d
-STEPHEN EQU $0e
-BARNEY EQU $0f
-RALPH2 EQU $10
-RALPH3 EQU $11
-TULLY2 EQU $12
-TULLY3 EQU $13
-WILTON2 EQU $14
-SCOTT EQU $15
-WILTON3 EQU $16
-RALPH4 EQU $17
-RALPH5 EQU $18
-TULLY4 EQU $19
+	trainerclass LT_SURGE ; 13
 
-; SwimmerM
-HAROLD EQU $01
-SIMON EQU $02
-RANDALL EQU $03
-CHARLIE EQU $04
-GEORGE EQU $05
-BERKE EQU $06
-KIRK EQU $07
-MATHEW EQU $08
-HAL EQU $09
-PATON EQU $0a
-DARYL EQU $0b
-WALTER EQU $0c
-TONY EQU $0d
-JEROME EQU $0e
-TUCKER EQU $0f
-RICK EQU $10
-CAMERON EQU $11
-SETH EQU $12
-JAMES EQU $13
-LEWIS EQU $14
-PARKER EQU $15
+	trainerclass SCIENTIST ; 14
+	const ROSS
+	const MITCH
+	const JED
+	const MARC
+	const RICH
+
+	trainerclass ERIKA ; 15
+
+	trainerclass YOUNGSTER ; 16
+	const JOEY1
+	const MIKEY
+	const ALBERT
+	const GORDON
+	const SAMUEL
+	const IAN
+	const JOEY2
+	const JOEY3
+	const WARREN
+	const JIMMY
+	const OWEN
+	const JASON
+	const JOEY4
+	const JOEY5
+
+	trainerclass SCHOOLBOY ; 17
+	const JACK1
+	const KIPP
+	const ALAN1
+	const JOHNNY
+	const DANNY
+	const TOMMY
+	const DUDLEY
+	const JOE
+	const BILLY
+	const CHAD1
+	const NATE
+	const RICKY
+	const JACK2
+	const JACK3
+	const ALAN2
+	const ALAN3
+	const CHAD2
+	const CHAD3
+	const JACK4
+	const JACK5
+	const ALAN4
+	const ALAN5
+	const CHAD4
+	const CHAD5
+
+	trainerclass BIRD_KEEPER ; 18
+	const ROD
+	const ABE
+	const BRYAN
+	const THEO
+	const TOBY
+	const DENIS
+	const VANCE1
+	const HANK
+	const ROY
+	const BORIS
+	const BOB
+	const JOSE1
+	const PETER
+	const JOSE2
+	const PERRY
+	const BRET
+	const JOSE3
+	const VANCE2
+	const VANCE3
+
+	trainerclass LASS ; 19
+	const CARRIE
+	const BRIDGET
+	const ALICE
+	const KRISE
+	const CONNIE1
+	const LINDA
+	const LAURA
+	const SHANNON
+	const MICHELLE
+	const DANA1
+	const ELLEN
+	const CONNIE2
+	const CONNIE3
+	const DANA2
+	const DANA3
+	const DANA4
+	const DANA5
+
+	trainerclass JANINE ; 1a
+
+	trainerclass COOLTRAINERM ; 1b
+	const NICK
+	const AARON
+	const PAUL
+	const CODY
+	const MIKE
+	const GAVEN1
+	const GAVEN2
+	const RYAN
+	const JAKE
+	const GAVEN3
+	const BLAKE
+	const BRIAN
+	const ERICK
+	const ANDY
+	const TYLER
+	const SEAN
+	const KEVIN
+	const STEVE
+	const ALLEN
+	const DARIN
+
+	trainerclass COOLTRAINERF ; 1c
+	const GWEN
+	const LOIS
+	const FRAN
+	const LOLA
+	const KATE
+	const IRENE
+	const KELLY
+	const JOYCE
+	const BETH1
+	const REENA1
+	const MEGAN
+	const BETH2
+	const CAROL
+	const QUINN
+	const EMMA
+	const CYBIL
+	const JENN
+	const BETH3
+	const REENA2
+	const REENA3
+	const CARA
+
+	trainerclass BEAUTY ; 1d
+	const VICTORIA
+	const SAMANTHA
+	const JULIE
+	const JACLYN
+	const BRENDA
+	const CASSIE
+	const CAROLINE
+	const CARLENE
+	const JESSICA
+	const RACHAEL
+	const ANGELICA
+	const KENDRA
+	const VERONICA
+	const JULIA
+	const THERESA
+	const VALERIE
+	const OLIVIA
 
-; SwimmerF
-ELAINE EQU $01
-PAULA EQU $02
-KAYLEE EQU $03
-SUSIE EQU $04
-DENISE EQU $05
-KARA EQU $06
-WENDY EQU $07
-LISA EQU $08
-JILL EQU $09
-MARY EQU $0a
-KATIE EQU $0b
-DAWN EQU $0c
-TARA EQU $0d
-NICOLE EQU $0e
-LORI EQU $0f
-JODY EQU $10
-NIKKI EQU $11
-DIANA EQU $12
-BRIANA EQU $13
+	trainerclass POKEMANIAC ; 1e
+	const LARRY
+	const ANDREW
+	const CALVIN
+	const SHANE
+	const BEN
+	const BRENT1
+	const RON
+	const ETHAN
+	const BRENT2
+	const BRENT3
+	const ISSAC
+	const DONALD
+	const ZACH
+	const BRENT4
+	const MILLER
 
-; Sailor
-EUGENE EQU $01
-HUEY1 EQU $02
-TERRELL EQU $03
-KENT EQU $04
-ERNEST EQU $05
-JEFF EQU $06
-GARRETT EQU $07
-KENNETH EQU $08
-STANLY EQU $09
-HARRY EQU $0a
-HUEY2 EQU $0b
-HUEY3 EQU $0c
-HUEY4 EQU $0d
+	trainerclass GRUNTM ; 1f
 
-; SuperNerd
-STAN EQU $01
-ERIC EQU $02
-GREGG EQU $03
-JAY EQU $04
-DAVE EQU $05
-SAM EQU $06
-TOM EQU $07
-PAT EQU $08
-SHAWN EQU $09
-TERU EQU $0a
-RUSS EQU $0b
-NORTON EQU $0c
-HUGH EQU $0d
-MARKUS EQU $0e
+	trainerclass GENTLEMAN ; 20
+	const PRESTON
+	const EDWARD
+	const GREGORY
+	const VIRGIL
+	const ALFRED
 
-; Guitarist
-CLYDE EQU $01
-VINCENT EQU $02
+	trainerclass SKIER ; 21
+	const ROXANNE
+	const CLARISSA
 
-; Hiker
-ANTHONY1 EQU $01
-RUSSELL EQU $02
-PHILLIP EQU $03
-LEONARD EQU $04
-ANTHONY2 EQU $05
-BENJAMIN EQU $06
-ERIK EQU $07
-MICHAEL EQU $08
-PARRY1 EQU $09
-TIMOTHY EQU $0a
-BAILEY EQU $0b
-ANTHONY3 EQU $0c
-TIM EQU $0d
-NOLAND EQU $0e
-SIDNEY EQU $0f
-KENNY EQU $10
-JIM EQU $11
-DANIEL EQU $12
-PARRY2 EQU $13
-PARRY3 EQU $14
-ANTHONY4 EQU $15
-ANTHONY5 EQU $16
+	trainerclass TEACHER ; 22
+	const COLETTE
+	const HILLARY
+	const SHIRLEY
 
-; Biker
-BIKER_BENNY EQU $01
-KAZU EQU $02
-DWAYNE EQU $03
-HARRIS EQU $04
-ZEKE EQU $05
-CHARLES EQU $06
-RILEY EQU $07
-JOEL EQU $08
-GLENN EQU $09
+	trainerclass SABRINA ; 23
 
-; Burglar
-DUNCAN EQU $01
-EDDIE EQU $02
-COREY EQU $03
+	trainerclass BUG_CATCHER ; 24
+	const DON
+	const ROB
+	const ED
+	const WADE1
+	const BUG_CATCHER_BENNY
+	const AL
+	const JOSH
+	const ARNIE1
+	const KEN
+	const WADE2
+	const WADE3
+	const DOUG
+	const ARNIE2
+	const ARNIE3
+	const WADE4
+	const WADE5
+	const ARNIE4
+	const ARNIE5
+	const WAYNE
 
-; Firebreather
-OTIS EQU $01
-DICK EQU $02
-NED EQU $03
-BURT EQU $04
-BILL EQU $05
-WALT EQU $06
-RAY EQU $07
-LYLE EQU $08
+	trainerclass FISHER ; 25
+	const JUSTIN
+	const RALPH1
+	const ARNOLD
+	const KYLE
+	const HENRY
+	const MARVIN
+	const TULLY1
+	const ANDRE
+	const RAYMOND
+	const WILTON1
+	const EDGAR
+	const JONAH
+	const MARTIN
+	const STEPHEN
+	const BARNEY
+	const RALPH2
+	const RALPH3
+	const TULLY2
+	const TULLY3
+	const WILTON2
+	const SCOTT
+	const WILTON3
+	const RALPH4
+	const RALPH5
+	const TULLY4
 
-; Juggler
-IRWIN1 EQU $01
-FRITZ EQU $02
-HORTON EQU $03
-IRWIN2 EQU $04
-IRWIN3 EQU $05
-IRWIN4 EQU $06
+	trainerclass SWIMMERM ; 26
+	const HAROLD
+	const SIMON
+	const RANDALL
+	const CHARLIE
+	const GEORGE
+	const BERKE
+	const KIRK
+	const MATHEW
+	const HAL
+	const PATON
+	const DARYL
+	const WALTER
+	const TONY
+	const JEROME
+	const TUCKER
+	const RICK
+	const CAMERON
+	const SETH
+	const JAMES
+	const LEWIS
+	const PARKER
 
-; Blackbelt
-KENJI1 EQU $01
-YOSHI EQU $02
-KENJI2 EQU $03
-LAO EQU $04
-NOB EQU $05
-KIYO EQU $06
-LUNG EQU $07
-KENJI3 EQU $08
-WAI EQU $09
+	trainerclass SWIMMERF ; 27
+	const ELAINE
+	const PAULA
+	const KAYLEE
+	const SUSIE
+	const DENISE
+	const KARA
+	const WENDY
+	const LISA
+	const JILL
+	const MARY
+	const KATIE
+	const DAWN
+	const TARA
+	const NICOLE
+	const LORI
+	const JODY
+	const NIKKI
+	const DIANA
+	const BRIANA
 
-; Psychic
-NATHAN EQU $01
-FRANKLIN EQU $02
-HERMAN EQU $03
-FIDEL EQU $04
-GREG EQU $05
-NORMAN EQU $06
-MARK EQU $07
-PHIL EQU $08
-RICHARD EQU $09
-GILBERT EQU $0a
-JARED EQU $0b
-RODNEY EQU $0c
+	trainerclass SAILOR ; 28
+	const EUGENE
+	const HUEY1
+	const TERRELL
+	const KENT
+	const ERNEST
+	const JEFF
+	const GARRETT
+	const KENNETH
+	const STANLY
+	const HARRY
+	const HUEY2
+	const HUEY3
+	const HUEY4
 
-; Picnicker
-LIZ1 EQU $01
-GINA1 EQU $02
-BROOKE EQU $03
-KIM EQU $04
-CINDY EQU $05
-HOPE EQU $06
-SHARON EQU $07
-DEBRA EQU $08
-GINA2 EQU $09
-ERIN1 EQU $0a
-LIZ2 EQU $0b
-LIZ3 EQU $0c
-HEIDI EQU $0d
-EDNA EQU $0e
-GINA3 EQU $0f
-TIFFANY1 EQU $10
-TIFFANY2 EQU $11
-ERIN2 EQU $12
-TANYA EQU $13
-TIFFANY3 EQU $14
-ERIN3 EQU $15
-LIZ4 EQU $16
-LIZ5 EQU $17
-GINA4 EQU $18
-GINA5 EQU $19
-TIFFANY4 EQU $1a
+	trainerclass SUPER_NERD ; 29
+	const STAN
+	const ERIC
+	const GREGG
+	const JAY
+	const DAVE
+	const SAM
+	const TOM
+	const PAT
+	const SHAWN
+	const TERU
+	const RUSS
+	const NORTON
+	const HUGH
+	const MARKUS
 
-; Camper
-ROLAND EQU $01
-TODD1 EQU $02
-IVAN EQU $03
-ELLIOT EQU $04
-BARRY EQU $05
-LLOYD EQU $06
-DEAN EQU $07
-SID EQU $08
-HARVEY EQU $09
-DALE EQU $0a
-TED EQU $0b
-TODD2 EQU $0c
-TODD3 EQU $0d
-THOMAS EQU $0e
-LEROY EQU $0f
-DAVID EQU $10
-JOHN EQU $11
-JERRY EQU $12
-SPENCER EQU $13
-TODD4 EQU $14
-TODD5 EQU $15
-QUENTIN EQU $16
+	trainerclass RIVAL2 ; 2a
 
-; Sage
-CHOW EQU $01
-NICO EQU $02
-JIN EQU $03
-TROY EQU $04
-JEFFREY EQU $05
-PING EQU $06
-EDMOND EQU $07
-NEAL EQU $08
-LI EQU $09
-GAKU EQU $0a
-MASA EQU $0b
-KOJI EQU $0c
+	trainerclass GUITARIST ; 2b
+	const CLYDE
+	const VINCENT
 
-; Medium
-MARTHA EQU $01
-GRACE EQU $02
-BETHANY EQU $03
-MARGRET EQU $04
-ETHEL EQU $05
-REBECCA EQU $06
-DORIS EQU $07
+	trainerclass HIKER ; 2c
+	const ANTHONY1
+	const RUSSELL
+	const PHILLIP
+	const LEONARD
+	const ANTHONY2
+	const BENJAMIN
+	const ERIK
+	const MICHAEL
+	const PARRY1
+	const TIMOTHY
+	const BAILEY
+	const ANTHONY3
+	const TIM
+	const NOLAND
+	const SIDNEY
+	const KENNY
+	const JIM
+	const DANIEL
+	const PARRY2
+	const PARRY3
+	const ANTHONY4
+	const ANTHONY5
 
-; Boarder
-RONALD EQU $01
-BRAD EQU $02
-DOUGLAS EQU $03
+	trainerclass BIKER ; 2d
+	const BIKER_BENNY
+	const KAZU
+	const DWAYNE
+	const HARRIS
+	const ZEKE
+	const CHARLES
+	const RILEY
+	const JOEL
+	const GLENN
 
-; PokefanM
-WILLIAM EQU $01
-DEREK1 EQU $02
-ROBERT EQU $03
-JOSHUA EQU $04
-CARTER EQU $05
-TREVOR EQU $06
-BRANDON EQU $07
-JEREMY EQU $08
-COLIN EQU $09
-DEREK2 EQU $0a
-DEREK3 EQU $0b
-ALEX EQU $0c
-REX EQU $0d
-ALLAN EQU $0e
+	trainerclass BLAINE ; 2e
 
-; KimonoGirl
-NAOKO1 EQU $01
-NAOKO2 EQU $02
-SAYO EQU $03
-ZUKI EQU $04
-KUNI EQU $05
-MIKI EQU $06
+	trainerclass BURGLAR ; 2f
+	const DUNCAN
+	const EDDIE
+	const COREY
 
-; Twins
-AMYANDMAY1 EQU $01
-ANNANDANNE1 EQU $02
-ANNANDANNE2 EQU $03
-AMYANDMAY2 EQU $04
-JOANDZOE1 EQU $05
-JOANDZOE2 EQU $06
-MEGANDPEG1 EQU $07
-MEGANDPEG2 EQU $08
-LEAANDPIA1 EQU $09
-LEAANDPIA2 EQU $0a
+	trainerclass FIREBREATHER ; 30
+	const OTIS
+	const DICK
+	const NED
+	const BURT
+	const BILL
+	const WALT
+	const RAY
+	const LYLE
 
-; PokefanF
-BEVERLY1 EQU $01
-RUTH EQU $02
-BEVERLY2 EQU $03
-BEVERLY3 EQU $04
-GEORGIA EQU $05
-JAIME EQU $06
+	trainerclass JUGGLER ; 31
+	const IRWIN1
+	const FRITZ
+	const HORTON
+	const IRWIN2
+	const IRWIN3
+	const IRWIN4
 
-; Officer
-KEITH EQU $01
-DIRK EQU $02
+	trainerclass BLACKBELT_T ; 32
+	const KENJI1
+	const YOSHI
+	const KENJI2
+	const LAO
+	const NOB
+	const KIYO
+	const LUNG
+	const KENJI3
+	const WAI
 
-; Mysticalman
-EUSINE EQU $01
+	trainerclass EXECUTIVEM ; 33
+
+	trainerclass PSYCHIC_T ; 34
+	const NATHAN
+	const FRANKLIN
+	const HERMAN
+	const FIDEL
+	const GREG
+	const NORMAN
+	const MARK
+	const PHIL
+	const RICHARD
+	const GILBERT
+	const JARED
+	const RODNEY
+
+	trainerclass PICNICKER ; 35
+	const LIZ1
+	const GINA1
+	const BROOKE
+	const KIM
+	const CINDY
+	const HOPE
+	const SHARON
+	const DEBRA
+	const GINA2
+	const ERIN1
+	const LIZ2
+	const LIZ3
+	const HEIDI
+	const EDNA
+	const GINA3
+	const TIFFANY1
+	const TIFFANY2
+	const ERIN2
+	const TANYA
+	const TIFFANY3
+	const ERIN3
+	const LIZ4
+	const LIZ5
+	const GINA4
+	const GINA5
+	const TIFFANY4
+
+	trainerclass CAMPER ; 36
+	const ROLAND
+	const TODD1
+	const IVAN
+	const ELLIOT
+	const BARRY
+	const LLOYD
+	const DEAN
+	const SID
+	const HARVEY
+	const DALE
+	const TED
+	const TODD2
+	const TODD3
+	const THOMAS
+	const LEROY
+	const DAVID
+	const JOHN
+	const JERRY
+	const SPENCER
+	const TODD4
+	const TODD5
+	const QUENTIN
+
+	trainerclass EXECUTIVEF ; 37
+
+	trainerclass SAGE ; 38
+	const CHOW
+	const NICO
+	const JIN
+	const TROY
+	const JEFFREY
+	const PING
+	const EDMOND
+	const NEAL
+	const LI
+	const GAKU
+	const MASA
+	const KOJI
+
+	trainerclass MEDIUM ; 39
+	const MARTHA
+	const GRACE
+	const BETHANY
+	const MARGRET
+	const ETHEL
+	const REBECCA
+	const DORIS
+
+	trainerclass BOARDER ; 3a
+	const RONALD
+	const BRAD
+	const DOUGLAS
+
+	trainerclass POKEFANM ; 3b
+	const WILLIAM
+	const DEREK1
+	const ROBERT
+	const JOSHUA
+	const CARTER
+	const TREVOR
+	const BRANDON
+	const JEREMY
+	const COLIN
+	const DEREK2
+	const DEREK3
+	const ALEX
+	const REX
+	const ALLAN
+
+	trainerclass KIMONO_GIRL ; 3c
+	const NAOKO1
+	const NAOKO2
+	const SAYO
+	const ZUKI
+	const KUNI
+	const MIKI
+
+	trainerclass TWINS ; 3d
+	const AMYANDMAY1
+	const ANNANDANNE1
+	const ANNANDANNE2
+	const AMYANDMAY2
+	const JOANDZOE1
+	const JOANDZOE2
+	const MEGANDPEG1
+	const MEGANDPEG2
+	const LEAANDPIA1
+	const LEAANDPIA2
+
+	trainerclass POKEFANF ; 3e
+	const BEVERLY1
+	const RUTH
+	const BEVERLY2
+	const BEVERLY3
+	const GEORGIA
+	const JAIME
+
+	trainerclass RED ; 3f
+
+	trainerclass BLUE ; 40
+
+	trainerclass OFFICER ; 41
+	const KEITH
+	const DIRK
+
+	trainerclass GRUNTF ; 42
+
+	trainerclass MYSTICALMAN ; 43
+	const EUSINE
+
+NUM_TRAINER_CLASSES EQU __enum__
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -68,3 +68,6 @@
 PLAYER_SLIP      EQU 2
 PLAYER_SURF      EQU 4
 PLAYER_SURF_PIKA EQU 8
+
+OBJECT_STRUCT_LENGTH EQU 40
+NUM_OBJECT_STRUCTS EQU 13
--- a/data/wild/fish.asm
+++ b/data/wild/fish.asm
@@ -6,26 +6,18 @@
 	push af
 	push bc
 	push hl
-	
+
 ; Get the fishing group for this map.
 	ld b, e
 	call GetFishGroupHeader
-	
+
 	ld hl, FishGroupHeaders
-	; encounter chance
+rept 7
 	add hl, de
-	; pointer to old rod data
-	add hl, de
-	add hl, de
-	; pointer to good rod data
-	add hl, de
-	add hl, de
-	; pointer to super rod data
-	add hl, de
-	add hl, de
-	
+endr
+
 	call Fish
-	
+
 	pop hl
 	pop bc
 	pop af
@@ -52,30 +44,31 @@
 	inc hl
 	ld e, b
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	
+
 ; Encounter chance for this monster:
 	call Random
-	
+
 .CheckEncounter
 	cp [hl]
 	jr z, .ReadMon
 	jr c, .ReadMon
-	
+
 ; Next monster...
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	jr .CheckEncounter
-	
+
 .ReadMon
 ; We're done with the encounter chance
 	inc hl
-	
+
 ; Species 0 triggers a read from a time-based encounter table.
 	ld a, [hli]
 	ld d, a
@@ -85,11 +78,11 @@
 ; Level
 	ld e, [hl]
 	ret
-	
+
 .NoBite
 	ld de, 0
 	ret
-	
+
 .TimeEncounter
 
 ; The level byte is repurposed as the index for the new table.
@@ -96,10 +89,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, TimeFishGroups
+rept 4
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 
 ; One nightmon, then one daymon
 	ld a, [TimeOfDay]
@@ -106,9 +98,10 @@
 	and 3
 	cp NITE
 	jr c, .TimeSpecies
+rept 2
 	inc hl
-	inc hl
-	
+endr
+
 .TimeSpecies
 	ld d, [hl]
 	inc hl
@@ -122,11 +115,11 @@
 ; Return fishing encounter group header d in de.
 
 	push hl
-	ld hl, wdc1e
+	ld hl, DailyFlags
 	bit 2, [hl]
 	pop hl
 	jr z, .end
-	
+
 ; Groups 11 and 12 have special attributes.
 	ld a, d
 	cp 11
@@ -133,13 +126,13 @@
 	jr z, .group11
 	cp 12
 	jr z, .group12
-	
+
 .end
 	dec d
 	ld e, d
 	ld d, 0
 	ret
-	
+
 .group11
 	ld a, [wdfce]
 	cp 1
@@ -146,7 +139,7 @@
 	jr nz, .end
 	ld d, 6
 	jr .end
-	
+
 .group12
 	ld a, [wdfce]
 	cp 2
--- a/engine/buena_phone_scripts.asm
+++ b/engine/buena_phone_scripts.asm
@@ -2,7 +2,7 @@
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0xa0b73
 	checkcode VAR_HOUR
-	if_greater_than $11, UnknownScript_0xa0b4b
+	if_greater_than 17, UnknownScript_0xa0b4b
 	scall UnknownScript_0xa0b32
 	jump UnknownScript_0xa0c0e
 
@@ -37,7 +37,7 @@
 
 UnknownScript_0xa0b4f:
 	checkcode VAR_HOUR
-	if_greater_than $11, UnknownScript_0xa0b6e
+	if_greater_than 17, UnknownScript_0xa0b6e
 	checkmorn
 	iftrue UnknownScript_0xa0b64
 	checkday
@@ -68,27 +68,27 @@
 UnknownScript_0xa0b77:
 	checkevent EVENT_BEAT_ELITE_FOUR
 	iftrue UnknownScript_0xa0b82
-	random $b
+	random 11
 	jump UnknownScript_0xa0b84
 
 UnknownScript_0xa0b82:
-	random $e
+	random 14
 
 UnknownScript_0xa0b84:
-	if_equal $0, UnknownScript_0xa0bbc
-	if_equal $1, UnknownScript_0xa0bc2
-	if_equal $2, UnknownScript_0xa0bc8
-	if_equal $3, UnknownScript_0xa0bce
-	if_equal $4, UnknownScript_0xa0bd4
-	if_equal $5, UnknownScript_0xa0bda
-	if_equal $6, UnknownScript_0xa0be0
-	if_equal $7, UnknownScript_0xa0be6
-	if_equal $8, UnknownScript_0xa0bec
-	if_equal $9, UnknownScript_0xa0bf2
-	if_equal $a, UnknownScript_0xa0bf8
-	if_equal $b, UnknownScript_0xa0bfe
-	if_equal $c, UnknownScript_0xa0c04
-	if_equal $d, UnknownScript_0xa0c0a
+	if_equal 0, UnknownScript_0xa0bbc
+	if_equal 1, UnknownScript_0xa0bc2
+	if_equal 2, UnknownScript_0xa0bc8
+	if_equal 3, UnknownScript_0xa0bce
+	if_equal 4, UnknownScript_0xa0bd4
+	if_equal 5, UnknownScript_0xa0bda
+	if_equal 6, UnknownScript_0xa0be0
+	if_equal 7, UnknownScript_0xa0be6
+	if_equal 8, UnknownScript_0xa0bec
+	if_equal 9, UnknownScript_0xa0bf2
+	if_equal 10, UnknownScript_0xa0bf8
+	if_equal 11, UnknownScript_0xa0bfe
+	if_equal 12, UnknownScript_0xa0c04
+	if_equal 13, UnknownScript_0xa0c0a
 
 UnknownScript_0xa0bbc:
 	writetext UnknownText_0xa0efb
@@ -149,10 +149,10 @@
 	end
 
 UnknownScript_0xa0c0e:
-	random $3
-	if_equal $0, UnknownScript_0xa0c1c
-	if_equal $1, UnknownScript_0xa0c20
-	if_equal $2, UnknownScript_0xa0c24
+	random 3
+	if_equal 0, UnknownScript_0xa0c1c
+	if_equal 1, UnknownScript_0xa0c20
+	if_equal 2, UnknownScript_0xa0c24
 
 UnknownScript_0xa0c1c:
 	writetext UnknownText_0xa1c88
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -262,10 +262,9 @@
 	bit 7, a
 	jr z, .asm_8bd7
 	and $7f
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 .asm_8bd7
 
 asm_8bd7
@@ -361,8 +360,9 @@
 .asm_8c5a
 	ld l, c
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld bc, Palettes_a8be
 	add hl, bc
 	ld bc, $0004
@@ -398,8 +398,9 @@
 	ld hl, Unknown_8f6a
 	ld b, 0
 	dec c
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -420,9 +421,9 @@
 Function8cb4: ; 8cb4
 	ld l, e
 	ld h, 0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld de, Palettes_8d05
 	add hl, de
 	call CheckCGB
@@ -433,8 +434,9 @@
 	ld bc, $0010
 	call CopyBytes
 	pop hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld [wcda9 + 3], a
 	ld a, [hli]
@@ -556,9 +558,9 @@
 Function9625: ; 9625
 	ld l, a
 	ld h, $0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld bc, Palettes_9df6
 	add hl, bc
 	ret
@@ -639,15 +641,13 @@
 	ld c, $8
 .asm_9683
 	ld a, $ff
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	xor a
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	dec c
 	jr nz, .asm_9683
 	pop af
@@ -806,8 +806,9 @@
 Function976b: ; 976b
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
+rept 2
+	add hl,hl
+endr
 	ld bc, TrainerPalettes
 	add hl, bc
 	ret
@@ -896,9 +897,9 @@
 Function97ee: ; 97ee
 	ld l, a
 	ld h, $0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld bc, PokemonPalettes
 	add hl, bc
 	ret
@@ -912,10 +913,9 @@
 	call CheckShininess
 	pop hl
 	ret nc
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	ret
 ; 9809
 
@@ -1139,8 +1139,9 @@
 	jr nz, .asm_99a6
 	ld a, $20
 	ld [rJOYP], a
+rept 2
 	ld a, [rJOYP]
-	ld a, [rJOYP]
+endr
 	call Function9a7a
 	call Function9a7a
 	ld a, $30
@@ -1149,19 +1150,16 @@
 	call Function9a7a
 	ld a, $10
 	ld [rJOYP], a
+rept 6
 	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
+endr
 	call Function9a7a
 	call Function9a7a
 	ld a, $30
 	ld [rJOYP], a
+rept 3
 	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
+endr
 	call Function9a7a
 	call Function9a7a
 	ld a, [rJOYP]
@@ -1943,21 +1941,22 @@
 	callba Function494ac
 	jr c, .asm_b230
 
-	ld a, [wd19a]
+	ld a, [wPermission]
 	and 7
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_b279
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	ld a, [TimeOfDayPal]
 	and 3
+rept 3
 	add a
-	add a
-	add a
+endr
 	ld e, a
 	ld d, 0
 	add hl, de
@@ -1975,9 +1974,9 @@
 	push hl
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
-	add hl, hl
+rept 3
+	add hl,hl
+endr
 	ld de, TilesetBGPalette
 	add hl, de
 	ld e, l
@@ -2008,7 +2007,7 @@
 	ld a, $5 ; BANK(Unkn2Pals)
 	call FarCopyWRAM
 
-	ld a, [wd19a]
+	ld a, [wPermission]
 	cp 1
 	jr z, .asm_b253
 	cp 2
@@ -2017,9 +2016,9 @@
 	ld a, [MapGroup]
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
-	add hl, hl
+rept 3
+	add hl,hl
+endr
 	ld de, RoofPals
 	add hl, de
 	ld a, [TimeOfDayPal]
@@ -2026,10 +2025,9 @@
 	and 3
 	cp NITE
 	jr c, .asm_b26d
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 .asm_b26d
 	ld de, Unkn1Pals + 8 * 6 + 2
 	ld bc, 4
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -260,8 +260,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_109937
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -326,8 +327,9 @@
 	cp $30
 	jr c, Function109986
 	ld a, [wcf66]
+rept 2
 	dec a
-	dec a
+endr
 	ld [wcf66], a
 	ld hl, LYOverrides + $1f
 	call Function1099a3
@@ -397,8 +399,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, CreditsStrings
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -582,10 +585,9 @@
 	dec c
 	jr nz, .asm_109b08
 	pop hl
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	dec b
 	jr nz, .asm_109b01
 	ret
@@ -735,8 +737,9 @@
 	ld [hl], a
 	ld a, [wcf65]
 	and 3
+rept 2
 	add a
-	add a
+endr
 	add e
 	add a
 	ld e, a
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -100,26 +100,26 @@
 	dwb wdc9d, %00000001 ; lucky number show
 	dwb StatusFlags2, %00001000
 
-	dwb wdc1e, %00000001 ; kurt making balls  ; $50
-	dwb wdc1e, %00000010
-	dwb wdc1e, %00000100 ; special wilddata?
-	dwb wdc1e, %00001000 ; time capsule (24h wait)
-	dwb wdc1e, %00010000 ; all fruit trees
-	dwb wdc1e, %00100000 ; shuckle given
-	dwb wdc1e, %01000000 ; goldenrod underground merchant closed
-	dwb wdc1e, %10000000 ; fought in trainer hall today
+	dwb DailyFlags, %00000001 ; kurt making balls  ; $50
+	dwb DailyFlags, %00000010
+	dwb DailyFlags, %00000100 ; special wilddata?
+	dwb DailyFlags, %00001000 ; time capsule (24h wait)
+	dwb DailyFlags, %00010000 ; all fruit trees
+	dwb DailyFlags, %00100000 ; shuckle given
+	dwb DailyFlags, %01000000 ; goldenrod underground merchant closed
+	dwb DailyFlags, %10000000 ; fought in trainer hall today
 
-	dwb wdc1f, %00000001 ; mt moon square clefairy  ; $58
-	dwb wdc1f, %00000010 ; union cave lapras
-	dwb wdc1f, %00000100 ; goldenrod underground haircut used
-	dwb wdc1f, %00001000 ; goldenrod mall happiness event floor05 person07
-	dwb wdc1f, %00010000 ; tea in blues house
-	dwb wdc1f, %00100000 ; indigo plateau rival fight
-	dwb wdc1f, %01000000
-	dwb wdc1f, %10000000
+	dwb WeeklyFlags, %00000001 ; mt moon square clefairy  ; $58
+	dwb WeeklyFlags, %00000010 ; union cave lapras
+	dwb WeeklyFlags, %00000100 ; goldenrod underground haircut used
+	dwb WeeklyFlags, %00001000 ; goldenrod mall happiness event floor05 person07
+	dwb WeeklyFlags, %00010000 ; tea in blues house
+	dwb WeeklyFlags, %00100000 ; indigo plateau rival fight
+	dwb WeeklyFlags, %01000000
+	dwb WeeklyFlags, %10000000
 
-	dwb wdc20, %00000001 ; $60
-	dwb wdc20, %00000010 ; goldenrod dept store sale is on
+	dwb SwarmFlags, %00000001 ; $60
+	dwb SwarmFlags, %00000010 ; goldenrod dept store sale is on
 
 	dwb GameTimerPause, %10000000 ; $62
 
@@ -194,5 +194,5 @@
 
 	dwb wd45b, %00000100 ; female player has been transformed into male
 
-	dwb wdc20, %00000100 ; dunsparce swarm   ; $a0
-	dwb wdc20, %00001000 ; yanma swarm
+	dwb SwarmFlags, %00000100 ; dunsparce swarm   ; $a0
+	dwb SwarmFlags, %00001000 ; yanma swarm
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -24,91 +24,91 @@
 ; 966cb
 
 
-Function966cb: ; 966cb
+ClearAllScriptFlags3: ; 966cb
 	xor a
 	ld [ScriptFlags3], a
 	ret
 ; 966d0
 
-Function966d0:: ; 966d0
+SetAll_ScriptFlags3:: ; 966d0
 	ld a, $ff
 	ld [ScriptFlags3], a
 	ret
 ; 966d6
 
-Function966d6: ; 966d6
+CheckBit5_ScriptFlags3: ; 966d6
 	ld hl, ScriptFlags3
 	bit 5, [hl]
 	ret
 ; 966dc
 
-Function966dc: ; 966dc
+ResetBit2_ScriptFlags3: ; 966dc
 	ld hl, ScriptFlags3
 	res 2, [hl]
 	ret
 ; 966e2
 
-Function966e2: ; 966e2
+ResetBit1_ScriptFlags3: ; 966e2
 	ld hl, ScriptFlags3
 	res 1, [hl]
 	ret
 ; 966e8
 
-Function966e8: ; 966e8
+ResetBit0_ScriptFlags3: ; 966e8
 	ld hl, ScriptFlags3
 	res 0, [hl]
 	ret
 ; 966ee
 
-Function966ee: ; 966ee
+ResetBit4_ScriptFlags3: ; 966ee
 	ld hl, ScriptFlags3
 	res 4, [hl]
 	ret
 ; 966f4
 
-Function966f4: ; 966f4
+SetBit2_ScriptFlags3: ; 966f4
 	ld hl, ScriptFlags3
 	set 2, [hl]
 	ret
 ; 966fa
 
-Function966fa: ; 966fa
+SetBit1_ScriptFlags3: ; 966fa
 	ld hl, ScriptFlags3
 	set 1, [hl]
 	ret
 ; 96700
 
-Function96700: ; 96700
+SetBit0_ScriptFlags3: ; 96700
 	ld hl, ScriptFlags3
 	set 0, [hl]
 	ret
 ; 96706
 
-Function96706: ; 96706
+SetBit4_ScriptFlags3: ; 96706
 	ld hl, ScriptFlags3
 	set 4, [hl]
 	ret
 ; 9670c
 
-Function9670c: ; 9670c
+CheckBit2_ScriptFlags3: ; 9670c
 	ld hl, ScriptFlags3
 	bit 2, [hl]
 	ret
 ; 96712
 
-Function96712: ; 96712
+CheckBit1_ScriptFlags3: ; 96712
 	ld hl, ScriptFlags3
 	bit 1, [hl]
 	ret
 ; 96718
 
-Function96718: ; 96718
+CheckBit0_ScriptFlags3: ; 96718
 	ld hl, ScriptFlags3
 	bit 0, [hl]
 	ret
 ; 9671e
 
-Function9671e: ; 9671e
+CheckBit4_ScriptFlags3: ; 9671e
 	ld hl, ScriptFlags3
 	bit 4, [hl]
 	ret
@@ -135,20 +135,20 @@
 	ld [wd454], a
 	call Function968d1
 	callba RunMapSetupScript
-	call Function966cb
+	call ClearAllScriptFlags3
 
 	ld a, [$ff9f]
 	cp $f7
-	jr nz, .asm_9675a
-	call Function966d0
-.asm_9675a
+	jr nz, .dontset
+	call SetAll_ScriptFlags3
+.dontset
 
 	ld a, [$ff9f]
 	cp $f3
-	jr nz, .asm_96764
+	jr nz, .dontresetpoison
 	xor a
 	ld [PoisonStepCount], a
-.asm_96764
+.dontresetpoison
 
 	xor a
 	ld [$ff9f], a
@@ -197,7 +197,7 @@
 
 .events ; 967a1
 	call PlayerEvents
-	call Function966cb
+	call ClearAllScriptFlags3
 	callba ScriptEvents
 	ret
 ; 967ae
@@ -245,7 +245,7 @@
 ; 967e1
 
 Function967e1: ; 967e1
-	callba Function5920
+	callba RefreshMapAppearDisappear
 	callba Functiond4d2
 	callba Functionb8098
 	ret
@@ -254,19 +254,19 @@
 Function967f4: ; 967f4
 	ld a, [wd150]
 	bit 5, a
-	jr z, .asm_96806
+	jr z, .events
 	bit 6, a
-	jr z, .asm_9680c
+	jr z, .noevents
 	bit 4, a
-	jr nz, .asm_9680c
-	call Function966d0
+	jr nz, .noevents
+	call SetAll_ScriptFlags3
 
-.asm_96806
+.events
 	ld a, 0 ; events
 	ld [MapEventStatus], a
 	ret
 
-.asm_9680c
+.noevents
 	ld a, 1 ; no events
 	ld [MapEventStatus], a
 	ret
@@ -293,30 +293,30 @@
 	call Function968e4
 
 	call CheckTrainerBattle3
-	jr c, .asm_96848
+	jr c, .ok
 
 	call CheckTileEvent
-	jr c, .asm_96848
+	jr c, .ok
 
 	call Function97c30
-	jr c, .asm_96848
+	jr c, .ok
 
 	call Function968ec
-	jr c, .asm_96848
+	jr c, .ok
 
 	call Function9693a
-	jr c, .asm_96848
+	jr c, .ok
 
 	call OWPlayerInput
-	jr c, .asm_96848
+	jr c, .ok
 
 	xor a
 	ret
 
 
-.asm_96848
+.ok
 	push af
-	callba Function96c56
+	callba EnableScriptMode
 	pop af
 
 	ld [ScriptRunning], a
@@ -323,14 +323,14 @@
 	call Function96beb
 	ld a, [ScriptRunning]
 	cp 4
-	jr z, .asm_96865
+	jr z, .ok2
 	cp 9
-	jr z, .asm_96865
+	jr z, .ok2
 
 	xor a
 	ld [wc2da], a
 
-.asm_96865
+.ok2
 	scf
 	ret
 ; 96867
@@ -340,13 +340,13 @@
 	nop
 	nop
 	call CheckTrainerBattle2
-	jr nc, .asm_96872
+	jr nc, .nope
 
 	ld a, 1
 	scf
 	ret
 
-.asm_96872
+.nope
 	xor a
 	ret
 ; 96874
@@ -355,60 +355,60 @@
 CheckTileEvent: ; 96874
 ; Check for warps, tile triggers or wild battles.
 
-	call Function9670c
-	jr z, .asm_96886
+	call CheckBit2_ScriptFlags3
+	jr z, .bit2
 
-	callba Function104820
-	jr c, .asm_968a6
+	callba CheckMovingOffEdgeOfMap
+	jr c, .return4
 
 	call Function2238
-	jr c, .asm_968aa
+	jr c, .return6
 
-.asm_96886
-	call Function96712
-	jr z, .asm_96890
+.bit2
+	call CheckBit1_ScriptFlags3
+	jr z, .bit1
 
-	call Function2ad4
-	jr c, .asm_968ba
+	call CheckCurrentMapXYTriggers
+	jr c, .movement
 
-.asm_96890
-	call Function96718
-	jr z, .asm_96899
+.bit1
+	call CheckBit0_ScriptFlags3
+	jr z, .bit0
 
 	call CountStep
 	ret c
 
-.asm_96899
-	call Function9671e
-	jr z, .asm_968a4
+.bit0
+	call CheckBit4_ScriptFlags3
+	jr z, .ok
 
 	call Function97cc0
 	ret c
-	jr .asm_968a4
+	jr .ok
 
-.asm_968a4
+.ok
 	xor a
 	ret
 
-.asm_968a6
+.return4
 	ld a, 4
 	scf
 	ret
 
-.asm_968aa
+.return6
 	ld a, [StandingTile]
 	call CheckPitTile
-	jr nz, .asm_968b6
+	jr nz, .pittile
 	ld a, 6
 	scf
 	ret
 
-.asm_968b6
+.pittile
 	ld a, 5
 	scf
 	ret
 
-.asm_968ba
+.movement
 	ld hl, MovementAnimation
 	ld a, [hli]
 	ld h, [hl]
@@ -450,7 +450,7 @@
 ; 968e4
 
 Function968e4: ; 968e4
-	call Function966d6
+	call CheckBit5_ScriptFlags3
 	ret z
 	call Function2f3e
 	ret
@@ -459,12 +459,12 @@
 Function968ec: ; 968ec
 	ld a, [wdc07]
 	and a
-	jr z, .asm_96938
+	jr z, .nope
 
 	ld c, a
-	call Function211b
+	call CheckTriggers
 	cp c
-	jr nc, .asm_96938
+	jr nc, .nope
 
 	ld e, a
 	ld d, 0
@@ -472,11 +472,10 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-
+rept 4
+	add hl,de
+endr
+	
 	call GetMapScriptHeaderBank
 	call GetFarHalfword
 	call GetMapScriptHeaderBank
@@ -485,12 +484,12 @@
 	ld hl, ScriptFlags
 	res 3, [hl]
 
-	callba Function96c56
+	callba EnableScriptMode
 	callba ScriptEvents
 
 	ld hl, ScriptFlags
 	bit 3, [hl]
-	jr z, .asm_96938
+	jr z, .nope
 
 	ld hl, ScriptDelay + 2
 	ld a, [hli]
@@ -501,7 +500,7 @@
 	scf
 	ret
 
-.asm_96938
+.nope
 	xor a
 	ret
 ; 9693a
@@ -531,8 +530,8 @@
 	ret
 
 .elevator
-	ld a, BANK(UnknownScript_0x135f8)
-	ld hl, UnknownScript_0x135f8
+	ld a, BANK(BugCatchingContestOverScript)
+	ld hl, BugCatchingContestOverScript
 	call CallScript
 	scf
 	ret
@@ -608,8 +607,8 @@
 .IsObject
 	call PlayTalkObject
 	ld a, [hConnectedMapWidth]
-	call Function1ae5
-	ld hl, $0001
+	call GetObjectStruct
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	ld [$ffe0], a
@@ -616,17 +615,17 @@
 
 	ld a, [$ffe0]
 	call GetMapObject
-	ld hl, $0008
+	ld hl, MAPOBJECT_COLOR
 	add hl, bc
 	ld a, [hl]
-	and $f
+	and %00001111
 
 ; Bug: If IsInArray returns nc, data at bc will be executed as code.
 	push bc
 	ld de, 3
-	ld hl, .data_969ee
+	ld hl, .pointers
 	call IsInArray
-	jr nc, .asm_969ec
+	jr nc, .nope_bugged
 	pop bc
 
 	inc hl
@@ -635,11 +634,11 @@
 	ld l, a
 	jp [hl]
 
-.asm_969ec
+.nope_bugged
 	xor a
 	ret
 
-.data_969ee
+.pointers
 	dbw 0, .zero
 	dbw 1, .one
 	dbw 2, .two
@@ -647,11 +646,11 @@
 	dbw 4, .four
 	dbw 5, .five
 	dbw 6, .six
-	db $ff
+	db -1
 ; 96a04
 
 .zero ; 96a04
-	ld hl, $000a
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
@@ -663,7 +662,7 @@
 ; 96a12
 
 .one ; 96a12
-	ld hl, $000a
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
@@ -712,7 +711,7 @@
 	ret
 
 .IsSign
-	ld a, [MartPointer]
+	ld a, [wd040]
 	ld hl, .signs
 	rst JumpTable
 	ret
@@ -726,7 +725,7 @@
 	dw .ifset
 	dw .ifnotset
 	dw .itemifset
-	dw .asm_96aa2
+	dw .copy
 ; 96a59
 
 .up
@@ -767,13 +766,13 @@
 	ld de, EngineBuffer1
 	ld bc, 3
 	call FarCopyBytes
-	ld a, BANK(UnknownScript_0x13625)
-	ld hl, UnknownScript_0x13625
+	ld a, BANK(SignpostItemScript)
+	ld hl, SignpostItemScript
 	call CallScript
 	scf
 	ret
 
-.asm_96aa2
+.copy
 	call CheckSignFlag
 	jr nz, .dontread
 	call GetMapScriptHeaderBank
@@ -785,18 +784,19 @@
 .ifset
 	call CheckSignFlag
 	jr z, .dontread
-	jr .asm_96ac1
+	jr .thenread
 
 .ifnotset
 	call CheckSignFlag
 	jr nz, .dontread
 
-.asm_96ac1
+.thenread
 	push hl
 	call PlayTalkObject
 	pop hl
+rept 2
 	inc hl
-	inc hl
+endr
 	call GetMapScriptHeaderBank
 	call GetFarHalfword
 	call GetMapScriptHeaderBank
@@ -820,7 +820,7 @@
 	call GetFarHalfword
 	ld e, l
 	ld d, h
-	ld b, $2
+	ld b, $2 ; check
 	call EventFlagAction
 	ld a, c
 	and a
@@ -878,8 +878,8 @@
 
 .three ; 96b20
 ; force the player to move in some direction
-	ld a, BANK(UnknownScript_0x1253d)
-	ld hl, UnknownScript_0x1253d
+	ld a, BANK(Script_ForcedMovement)
+	ld hl, Script_ForcedMovement
 	call CallScript
 ;	ld a, -1
 	ld c, a
@@ -941,8 +941,8 @@
 StartMenuCallback:
 SelectMenuCallback: ; 96b66
 	copybytetovar $ffa0
-	if_equal $80, .Script
-	if_equal $ff, .Asm
+	if_equal %10000000, .Script
+	if_equal -1, .Asm
 	end
 ; 96b72
 
@@ -959,13 +959,13 @@
 CountStep: ; 96b79
 	ld a, [InLinkBattle]
 	and a
-	jr nz, .asm_96bc9
+	jr nz, .done
 
 	callba Function90136
-	jr c, .asm_96bcb
+	jr c, .setminus1
 
 	call Function96bd7
-	jr c, .asm_96bcb
+	jr c, .setminus1
 
 	ld hl, PoisonStepCount
 	inc [hl]
@@ -981,7 +981,7 @@
 	jr nz, .asm_96bab
 
 	callba Function16f3e
-	jr nz, .asm_96bcf
+	jr nz, .set8
 
 .asm_96bab
 	callba DaycareStep
@@ -989,25 +989,25 @@
 	ld hl, PoisonStepCount
 	ld a, [hl]
 	cp 4
-	jr c, .asm_96bc3
+	jr c, .poisoned
 	ld [hl], 0
 
 	callba Function505da
-	jr c, .asm_96bcb
+	jr c, .setminus1
 
-.asm_96bc3
+.poisoned
 	callba Function97db3
 
-.asm_96bc9
+.done
 	xor a
 	ret
 
-.asm_96bcb
+.setminus1
 	ld a, -1
 	scf
 	ret
 
-.asm_96bcf
+.set8
 	ld a, 8
 	scf
 	ret
@@ -1015,7 +1015,7 @@
 
 
 Function96bd3: ; 96bd3
-	ld a, $7
+	ld a, 7
 	scf
 	ret
 ; 96bd7
@@ -1027,8 +1027,8 @@
 	dec a
 	ld [wdca1], a
 	ret nz
-	ld a, BANK(UnknownScript_0x13619)
-	ld hl, UnknownScript_0x13619
+	ld a, BANK(RepelWoreOffScript)
+	ld hl, RepelWoreOffScript
 	call CallScript
 	scf
 	ret
@@ -1038,17 +1038,17 @@
 	ld a, [ScriptRunning]
 	and a
 	ret z
-	cp $ff
+	cp -1
 	ret z
-	cp $a
+	cp 10
 	ret nc
 
 	ld c, a
 	ld b, 0
 	ld hl, ScriptPointers96c0c
-	add hl, bc
-	add hl, bc
-	add hl, bc
+rept 3
+	add hl,bc
+endr
 	ld a, [hli]
 	ld [ScriptBank], a
 	ld a, [hli]
@@ -1059,20 +1059,20 @@
 ; 96c0c
 
 ScriptPointers96c0c: ; 96c0c
-	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
-	dbw BANK(UnknownScript_0xbe675), UnknownScript_0xbe675
-	dbw BANK(UnknownScript_0xbe66a), UnknownScript_0xbe66a
-	dbw BANK(UnknownScript_0x122ce), UnknownScript_0x122ce
+	dbw BANK(Invalid_0x96c2d), Invalid_0x96c2d
+	dbw BANK(SeenByTrainerScript), SeenByTrainerScript
+	dbw BANK(TalkToTrainerScript), TalkToTrainerScript
+	dbw BANK(FindItemInBallScript), FindItemInBallScript
 	dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d
-	dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34
+	dbw BANK(WarpToNewMapScript), WarpToNewMapScript
 	dbw BANK(FallIntoMapScript), FallIntoMapScript
 	dbw BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
-	dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f
+	dbw BANK(HatchEggScript), HatchEggScript
 	dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f
-	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
+	dbw BANK(Invalid_0x96c2d), Invalid_0x96c2d
 ; 96c2d
 
-UnknownScript_0x96c2d: ; 96c2d
+Invalid_0x96c2d: ; 96c2d
 	end
 ; 96c2e
 
@@ -1080,12 +1080,12 @@
 	end
 ; 96c2f
 
-UnknownScript_0x96c2f: ; 96c2f
-	callasm Function16f5e
+HatchEggScript: ; 96c2f
+	callasm OverworldHatchEgg
 	end
 ; 96c34
 
-UnknownScript_0x96c34: ; 96c34
+WarpToNewMapScript: ; 96c34
 	warpsound
 	newloadmap $f5
 	end
@@ -1116,7 +1116,7 @@
 
 UnknownScript_0x96c4f: ; 96c4f
 	deactivatefacing $3
-	callasm Function96706
+	callasm SetBit4_ScriptFlags3
 	end
 ; 96c56
 
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -1,7 +1,7 @@
 ; More overworld event handling.
 
 
-Function97c28:: ; 97c28
+WarpToSpawnPoint:: ; 97c28
 	ld hl, StatusFlags2
 	res 1, [hl]
 	res 2, [hl]
@@ -48,13 +48,13 @@
 	call GetFacingTileCoord
 	ld [EngineBuffer1], a
 	ld c, a
-	callba Function1365b
-	jr c, .asm_97cb9
+	callba CheckFacingTileForStd
+	jr c, .done
 
 	call CheckCutTreeTile
 	jr nz, .whirlpool
 	callba TryCutOW
-	jr .asm_97cb9
+	jr .done
 
 .whirlpool
 	ld a, [EngineBuffer1]
@@ -61,7 +61,7 @@
 	call CheckWhirlpoolTile
 	jr nz, .waterfall
 	callba TryWhirlpoolOW
-	jr .asm_97cb9
+	jr .done
 
 .waterfall
 	ld a, [EngineBuffer1]
@@ -68,7 +68,7 @@
 	call CheckWaterfallTile
 	jr nz, .headbutt
 	callba TryWaterfallOW
-	jr .asm_97cb9
+	jr .done
 
 .headbutt
 	ld a, [EngineBuffer1]
@@ -75,19 +75,19 @@
 	call CheckHeadbuttTreeTile
 	jr nz, .surf
 	callba TryHeadbuttOW
-	jr c, .asm_97cb9
-	jr .asm_97cb7
+	jr c, .done
+	jr .noevent
 
 .surf
 	callba TrySurfOW
-	jr nc, .asm_97cb7
-	jr .asm_97cb9
+	jr nc, .noevent
+	jr .done
 
-.asm_97cb7
+.noevent
 	xor a
 	ret
 
-.asm_97cb9
+.done
 	call PlayClickSFX
 	ld a, $ff
 	scf
@@ -125,8 +125,8 @@
 	jr .asm_97cf4
 
 .asm_97ced
-	ld a, BANK(UnknownScript_0x135eb)
-	ld hl, UnknownScript_0x135eb
+	ld a, BANK(BugCatchingContestBattleScript)
+	ld hl, BugCatchingContestBattleScript
 	jr .asm_97cf4
 
 .asm_97cf4
@@ -146,7 +146,7 @@
 	ld hl, StatusFlags
 	bit 5, [hl]
 	jr nz, .asm_97d21
-	ld a, [wd19a]
+	ld a, [wPermission]
 	cp $4
 	jr z, .asm_97d17
 	cp $7
@@ -271,21 +271,21 @@
 Function97db5: ; 97db5
 	ld hl, StatusFlags2
 	bit 4, [hl]
-	jr z, .asm_97df7
+	jr z, .NoCall
 	ld a, [PlayerState]
-	cp $1
-	jr nz, .asm_97df7
-	call Function2d05
+	cp 1
+	jr nz, .NoCall
+	call GetMapHeaderPhoneServiceNybble
 	and a
-	jr nz, .asm_97df7
+	jr nz, .NoCall
 	ld hl, wdca1 + 1
 	ld a, [hli]
 	ld d, a
 	ld e, [hl]
-	cp $ff
+	cp -1
 	jr nz, .asm_97dd8
 	ld a, e
-	cp $ff
+	cp -1
 	jr z, .asm_97ddc
 
 .asm_97dd8
@@ -297,20 +297,20 @@
 .asm_97ddc
 	ld a, d
 	cp $4
-	jr c, .asm_97df7
-	ld a, [wdc31]
+	jr c, .NoCall
+	ld a, [wSpecialPhoneCallID]
 	and a
-	jr nz, .asm_97df7
-	ld a, $6
-	ld [wdc31], a
+	jr nz, .NoCall
+	ld a, 6
+	ld [wSpecialPhoneCallID], a
 	xor a
-	ld [wdc31 + 1], a
+	ld [wSpecialPhoneCallID + 1], a
 	ld hl, StatusFlags2
 	res 4, [hl]
 	scf
 	ret
 
-.asm_97df7
+.NoCall
 	xor a
 	ret
 ; 97df9
@@ -317,14 +317,14 @@
 
 Function97df9:: ; 97df9
 	ld hl, wd6de
-	ld de, $0006
-	ld c, $4
+	ld de, 6
+	ld c, 4
 	xor a
-.asm_97e02
+.loop
 	ld [hl], a
 	add hl, de
 	dec c
-	jr nz, .asm_97e02
+	jr nz, .loop
 	ret
 ; 97e08
 
@@ -439,9 +439,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Table97e94
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	push af
 	ld a, [hli]
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -43,7 +43,7 @@
 ; 4404c
 
 TryResetFruitTrees: ; 4404c
-	ld hl, wdc1e
+	ld hl, DailyFlags
 	bit 4, [hl]
 	ret nz
 	jp ResetFruitTrees
@@ -66,11 +66,11 @@
 ResetFruitTrees: ; 4406a
 	xor a
 	ld hl, FruitTreeFlags
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
-	ld hl, wdc1e
+	ld hl, DailyFlags
 	set 4, [hl]
 	ret
 ; 44078
--- a/engine/landmarks.asm
+++ b/engine/landmarks.asm
@@ -3,8 +3,9 @@
 	push hl
 	ld l, e
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Landmarks
 	add hl, de
 	ld a, [hli]
@@ -23,8 +24,9 @@
 
 	ld l, e
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Landmarks + 2
 	add hl, de
 	ld a, [hli]
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -1,7 +1,7 @@
 
 INCLUDE "engine/facings.asm"
 
-Data4273:: ; 4273
+ObjectStruct3_Data:: ; 4273
 	db $00, $00, $01, $02, $00, $00
 	db $06, $00, $01, $0c, $00, $00
 	db $03, $00, $01, $00, $00, $00
@@ -45,26 +45,26 @@
 
 Function4357:: ; 4357
 	push bc
-	ld hl, OBJECT_01
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	push af
 	ld h, b
 	ld l, c
-	ld bc, ObjectStruct2 - ObjectStruct1
+	ld bc, OBJECT_STRUCT_LENGTH
 	xor a
 	call ByteFill
 	pop af
-	cp $ff
-	jr z, .asm_4379
+	cp -1
+	jr z, .ok
 	bit 7, a
-	jr nz, .asm_4379
+	jr nz, .ok
 	call GetMapObject
-	ld hl, OBJECT_00
+	ld hl, OBJECT_SPRITE
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], -1
 
-.asm_4379
+.ok
 	pop bc
 	ret
 ; 437b
@@ -86,24 +86,24 @@
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub e
-	jr c, .asm_43b2
-	cp $c
-	jr nc, .asm_43b2
+	jr c, .ok
+	cp MAPOBJECT_SCREEN_WIDTH
+	jr nc, .ok
 	ld a, [YCoord]
 	ld e, a
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub e
-	jr c, .asm_43b2
-	cp $b
-	jr nc, .asm_43b2
-	jr .asm_43dc
+	jr c, .ok
+	cp MAPOBJECT_SCREEN_HEIGHT
+	jr nc, .ok
+	jr .yes
 
-.asm_43b2
+.ok
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	set 6, [hl]
@@ -112,36 +112,36 @@
 	ld hl, OBJECT_20
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub e
-	jr c, .asm_43de
-	cp $c
-	jr nc, .asm_43de
+	jr c, .ok2
+	cp MAPOBJECT_SCREEN_WIDTH
+	jr nc, .ok2
 	ld a, [YCoord]
 	ld e, a
 	ld hl, OBJECT_21
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub e
-	jr c, .asm_43de
-	cp $b
-	jr nc, .asm_43de
+	jr c, .ok2
+	cp MAPOBJECT_SCREEN_HEIGHT
+	jr nc, .ok2
 
-.asm_43dc
+.yes
 	and a
 	ret
 
-.asm_43de
+.ok2
 	ld hl, OBJECT_04
 	add hl, bc
 	bit 1, [hl]
-	jr nz, .asm_43eb
+	jr nz, .yes2
 	call Function4357
 	scf
 	ret
 
-.asm_43eb
+.yes2
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	set 6, [hl]
@@ -154,23 +154,23 @@
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_4409
+	jr z, .zero
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	bit 5, [hl]
-	jr nz, .asm_4426
-	cp $1
-	jr z, .asm_4414
-	jr .asm_4421
+	jr nz, .not_bit5
+	cp 1
+	jr z, .one
+	jr .ok
 
-.asm_4409
+.zero
 	call Function47bc
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	bit 5, [hl]
-	jr nz, .asm_4426
+	jr nz, .not_bit5
 
-.asm_4414
+.one
 	call Function47dd
 	ld hl, OBJECT_09
 	add hl, bc
@@ -177,15 +177,15 @@
 	ld a, [hl]
 	and a
 	ret z
-	cp $1
+	cp 1
 	ret z
 
-.asm_4421
+.ok
 	ld hl, Pointers4b45
 	rst JumpTable
 	ret
 
-.asm_4426
+.not_bit5
 	ret
 ; 4427
 
@@ -226,8 +226,9 @@
 	ld a, [hl]
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
+rept 2
+	add hl,hl
+endr
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -274,16 +275,16 @@
 ; 44a3
 
 Function44a3: ; 44a3
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], -1
 	ret
 ; 44aa
 
 Function44aa: ; 44aa
 	call GetSpriteDirection
-	or $0
-	ld hl, OBJECT_FACING
+	or 0
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], a
 	ret
@@ -290,10 +291,10 @@
 ; 44b5
 
 Function44b5: ; 44b5
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld a, [hl]
-	and $1
+	and 1
 	jr nz, Function44c1
 	jp Function44aa
 ; 44c1
@@ -307,16 +308,16 @@
 	add hl, bc
 	ld a, [hl]
 	inc a
-	and $f
+	and %00001111
 	ld [hl], a
 	rrca
 	rrca
-	and $3
+	and %00000011
 	ld d, a
 	call GetSpriteDirection
-	or $0
+	or 0
 	or d
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], a
 	ret
@@ -330,17 +331,17 @@
 	ld hl, OBJECT_12
 	add hl, bc
 	ld a, [hl]
-	add $2
-	and $f
+	add 2
+	and %00001111
 	ld [hl], a
 	rrca
 	rrca
-	and $3
+	and %00000011
 	ld d, a
 	call GetSpriteDirection
-	or $0
+	or 0
 	or d
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], a
 	ret
@@ -358,12 +359,12 @@
 	rrca
 	rrca
 	rrca
-	and $3
+	and %00000011
 	ld d, a
 	call GetSpriteDirection
-	or $0
+	or 0
 	or d
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], a
 	ret
@@ -371,11 +372,11 @@
 
 Function4529: ; 4529
 	call Function453f
-	ld hl, OBJECT_08
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
-	or $0
-	ld hl, OBJECT_FACING
+	or 0
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], a
 	ret
@@ -390,21 +391,21 @@
 	ld hl, OBJECT_12
 	add hl, bc
 	ld a, [hl]
-	and $f0
+	and %11110000
 	ld e, a
 	ld a, [hl]
 	inc a
-	and $f
+	and %00001111
 	ld d, a
-	cp $4
-	jr c, .asm_4558
+	cp 4
+	jr c, .ok
 	ld d, 0
 	ld a, e
 	add $10
-	and $30
+	and %00110000
 	ld e, a
 
-.asm_4558
+.ok
 	ld a, d
 	or e
 	ld [hl], a
@@ -413,7 +414,7 @@
 	ld hl, .Directions
 	add hl, de
 	ld a, [hl]
-	ld hl, OBJECT_08
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld [hl], a
 	ret
@@ -420,7 +421,7 @@
 ; 456a
 
 .Directions ; 456a
-	db $00, $0c, $04, $08
+	db DOWN << 2, RIGHT << 2, UP << 2, LEFT << 2
 ; 456e
 
 Function456e: ; 456e
@@ -428,7 +429,7 @@
 	rrca
 	rrca
 	add $10
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], a
 	ret
@@ -435,7 +436,7 @@
 ; 457b
 
 Function457b: ; 457b
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], $15
 	ret
@@ -442,7 +443,7 @@
 ; 4582
 
 Function4582: ; 4582
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], $14
 	ret
@@ -449,7 +450,7 @@
 ; 4589
 
 Function4589: ; 4589
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], $17
 	ret
@@ -460,11 +461,11 @@
 	add hl, bc
 	ld a, [hl]
 	inc a
-	and $f
+	and %00001111
 	ld [hl], a
-	and $8
+	and %00001000
 	jr z, Function45a4
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], $4
 	ret
@@ -471,9 +472,9 @@
 ; 45a4
 
 Function45a4: ; 45a4
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ret
 ; 45ab
 
@@ -483,11 +484,11 @@
 	ld a, [hl]
 	inc a
 	ld [hl], a
-	and $c
+	and %00001100
 	rrca
 	rrca
 	add $18
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], a
 	ret
@@ -494,7 +495,7 @@
 ; 45be
 
 Function45be: ; 45be
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], $16
 	ret
@@ -501,16 +502,16 @@
 ; 45c5
 
 Function45c5: ; 45c5
-	ld a, [VariableSprites + 3]
+	ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS]
 	ld d, $17
-	cp $33
-	jr z, .asm_45d4
-	cp $47
-	jr z, .asm_45d4
+	cp SPRITE_BIG_SNORLAX
+	jr z, .ok
+	cp SPRITE_BIG_LAPRAS
+	jr z, .ok
 	ld d, $16
 
-.asm_45d4
-	ld hl, OBJECT_FACING
+.ok
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], d
 	ret
@@ -522,13 +523,13 @@
 	inc [hl]
 	ld a, [hl]
 
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	and 2
 	ld a, $1c
-	jr z, .asm_45eb
+	jr z, .ok
 	inc a
-.asm_45eb
+.ok
 	ld [hl], a
 	ret
 ; 45ed
@@ -538,14 +539,14 @@
 	add hl, bc
 	inc [hl]
 	ld a, [hl]
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	and 4
 	ld a, $1e
-	jr z, .asm_45fe
+	jr z, .ok
 	inc a
 
-.asm_45fe
+.ok
 	ld [hl], a
 	ret
 ; 4600
@@ -605,13 +606,13 @@
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	bit 3, [hl]
-	jr z, .asm_464f
+	jr z, .ok
 	ld hl, OBJECT_STANDING_TILE
 	add hl, bc
 	ld a, [hl]
 	call Function4661
 
-.asm_464f
+.ok
 	ld hl, OBJECT_STANDING_TILE
 	add hl, bc
 	ld a, [hl]
@@ -626,17 +627,17 @@
 
 Function4661: ; 4661
 	call Function188e
-	jr z, .asm_466b
+	jr z, .set
 	call Function1875
-	jr c, .asm_4672
+	jr c, .reset
 
-.asm_466b
+.set
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	set 3, [hl]
 	ret
 
-.asm_4672
+.reset
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	res 3, [hl]
@@ -655,33 +656,34 @@
 	ld [hl], a
 	ld hl, OBJECT_27
 	add hl, bc
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 4690
 
 Function4690: ; 4690
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], a
 	ld hl, OBJECT_04
 	add hl, bc
 	bit 2, [hl]
-	jr nz, .asm_46a6
+	jr nz, .ok
 
+rept 2
 	add a
-	add a
-	and $c
-	ld hl, OBJECT_08
+endr
+	and %00001100
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld [hl], a
 
-.asm_46a6
+.ok
 	; fallthrough
 ; 46a6
 
@@ -745,12 +747,13 @@
 
 GetStepVector: ; 46e9
 ; Return (x, y, duration, speed) in (d, e, a, h).
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
-	and $f
+	and %00001111
+rept 2
 	add a
-	add a
+endr
 	ld l, a
 	ld h, 0
 	ld de, StepVectors
@@ -793,10 +796,10 @@
 ; 4738
 
 Function4738: ; 4738
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
-	and $3
+	and %00000011
 	ld [wd151], a
 	call Function46d7
 	ld a, [wd14e]
@@ -814,7 +817,7 @@
 	push bc
 	ld e, a
 	ld d, 0
-	ld hl, OBJECT_01
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	call GetMapObject
@@ -825,32 +828,32 @@
 ; 4769
 
 Function4769: ; 4769
-	ld hl, OBJECT_01
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_477d
+	cp -1
+	jr z, .ok
 	push bc
 	call GetMapObject
-	ld hl, $0004
+	ld hl, MAPOBJECT_FACING
 	add hl, bc
 	ld a, [hl]
 	pop bc
 	ret
 
-.asm_477d
-	ld a, $6
+.ok
+	ld a, 6
 	ret
 ; 4780
 
-Function4780: ; 4780
+ClearObjectStructField27: ; 4780
 	ld hl, OBJECT_27
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ret
 ; 4787
 
-Function4787: ; 4787
+IncrementObjectStructField27: ; 4787
 	ld hl, OBJECT_27
 	add hl, bc
 	inc [hl]
@@ -857,7 +860,7 @@
 	ret
 ; 478d
 
-Function478d: ; 478d
+DecrementObjectStructField27: ; 478d
 	ld hl, OBJECT_27
 	add hl, bc
 	dec [hl]
@@ -864,7 +867,7 @@
 	ret
 ; 4793
 
-Function4793: ; 4793
+JumptoObjectStructField27: ; 4793
 	ld hl, OBJECT_27
 	add hl, bc
 	ld a, [hl]
@@ -873,14 +876,14 @@
 	ret
 ; 479b
 
-Function479b: ; 479b
+ClearObjectStructField28: ; 479b
 	ld hl, OBJECT_28
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ret
 ; 47a2
 
-Function47a2: ; 47a2
+IncrementObjectStructField28: ; 47a2
 	ld hl, OBJECT_28
 	add hl, bc
 	inc [hl]
@@ -887,7 +890,7 @@
 	ret
 ; 47a8
 
-Function47a8: ; 47a8
+JumptoObjectStructField28: ; 47a8
 	ld hl, OBJECT_28
 	add hl, bc
 	ld a, [hl]
@@ -896,7 +899,7 @@
 	ret
 ; 47b0
 
-Function47b0: ; 47b0
+GetValueObjectStructField28: ; 47b0
 	ld hl, OBJECT_28
 	add hl, bc
 	ld a, [hl]
@@ -903,7 +906,7 @@
 	ret
 ; 47b6
 
-Function47b6: ; 47b6
+SetValueObjectStructField28: ; 47b6
 	ld hl, OBJECT_28
 	add hl, bc
 	ld [hl], a
@@ -927,12 +930,12 @@
 	call Function467b
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 47dd
 
 Function47dd: ; 47dd
-	call Function479b
+	call ClearObjectStructField28
 	call Function1a2f
 	ld a, [hl]
 	ld hl, .Pointers
@@ -978,7 +981,7 @@
 Function4822: ; 4822
 	call Random
 	ld a, [hRandomAdd]
-	and 1
+	and %00000001
 	jp Function4af0
 ; 482c
 
@@ -985,8 +988,8 @@
 Function482c: ; 482c
 	call Random
 	ld a, [hRandomAdd]
-	and 1
-	or 2
+	and %00000001
+	or  %00000010
 	jp Function4af0
 ; 4838
 
@@ -993,7 +996,7 @@
 Function4838: ; 4838
 	call Random
 	ld a, [hRandomAdd]
-	and 3
+	and %00000011
 	jp Function4af0
 ; 4842
 
@@ -1000,8 +1003,8 @@
 Function4842: ; 4842
 	call Random
 	ld a, [hRandomAdd]
-	and $c
-	ld hl, OBJECT_08
+	and %00001100
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld [hl], a
 	jp Function4b1d
@@ -1008,19 +1011,19 @@
 ; 4851
 
 Function4851: ; 4851
-	ld hl, OBJECT_08
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
-	and $c
+	and %00001100
 	ld d, a
 	call Random
 	ld a, [hRandomAdd]
-	and $c
+	and %00001100
 	cp d
-	jr nz, .asm_4865
-	xor $c
+	jr nz, .keep
+	xor %00001100
 
-.asm_4865
+.keep
 	ld [hl], a
 	jp Function4b26
 ; 4869
@@ -1030,10 +1033,10 @@
 	call Function467b
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $5
+	ld [hl], 5
 	ret
 ; 487c
 
@@ -1084,7 +1087,7 @@
 ; 48ac
 
 Function48ac: ; 48ac
-	call Function4793
+	call JumptoObjectStructField27
 	dw Function48b3
 	dw Function48f8
 ; 48b3
@@ -1094,20 +1097,20 @@
 	add hl, bc
 	ld a, [hl]
 	call CheckPitTile
-	jr z, .asm_48f5
+	jr z, .on_pit
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	bit 2, [hl]
 	res 2, [hl]
-	jr z, .asm_48ee
+	jr z, .ok
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
-	and $3
-	or $0
+	and %00000011
+	or 0
 	call Function4690
 	call Function6ec1
-	jr c, .asm_48eb
+	jr c, .ok2
 	ld de, SFX_STRENGTH
 	call PlaySFX
 	call Function5538
@@ -1117,24 +1120,24 @@
 	ld [hl], $f
 	ret
 
-.asm_48eb
+.ok2
 	call Function462a
 
-.asm_48ee
-	ld hl, OBJECT_07
+.ok
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 
-.asm_48f5
-	call Function4787
+.on_pit
+	call IncrementObjectStructField27
 	; fallthrough
 ; 48f8
 
 Function48f8: ; 48f8
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 48ff
 
@@ -1149,89 +1152,89 @@
 	add hl, bc
 	ld a, [hl]
 	push bc
-	call Function1ae5
-	ld hl, OBJECT_07
+	call GetObjectStruct
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_494a
+	cp STANDING
+	jr z, .standing
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld a, [hl]
 	cp d
-	jr z, .asm_492d
-	jr c, .asm_4929
-	ld a, $3
-	jr .asm_493d
+	jr z, .equal
+	jr c, .less
+	ld a, 3
+	jr .done
 
-.asm_4929
-	ld a, $2
-	jr .asm_493d
+.less
+	ld a, 2
+	jr .done
 
-.asm_492d
+.equal
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld a, [hl]
 	cp e
-	jr z, .asm_494a
-	jr c, .asm_493b
-	ld a, $0
-	jr .asm_493d
+	jr z, .standing
+	jr c, .less2
+	ld a, 0
+	jr .done
 
-.asm_493b
-	ld a, $1
+.less2
+	ld a, 1
 
-.asm_493d
+.done
 	ld d, a
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
-	and $c
+	and %00001100
 	or d
 	pop bc
 	jp Function5412
 
-.asm_494a
+.standing
 	pop bc
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4958
 
 Function4958: ; 4958
 	call Function467b
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $9
+	ld [hl], 9
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $4
+	ld [hl], 4
 	ret
 ; 496e
 
 Function496e: ; 496e
 	call Function467b
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $a
+	ld [hl], 10
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $4
+	ld [hl], 4
 	ret
 ; 4984
 
 Function4984: ; 4984
-	call Function4793
+	call JumptoObjectStructField27
 	dw Function4996
 	dw Function499c
 	dw Function49b8
@@ -1238,7 +1241,7 @@
 ; 498d
 
 Function498d: ; 498d
-	call Function4793
+	call JumptoObjectStructField27
 	dw Function4996
 	dw Function499c
 	dw Function49c4
@@ -1246,7 +1249,7 @@
 
 Function4996: ; 4996
 	call Function467b
-	call Function4787
+	call IncrementObjectStructField27
 	; fallthrough
 ; 499c
 
@@ -1253,7 +1256,7 @@
 Function499c: ; 499c
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
@@ -1263,46 +1266,46 @@
 	ld [hl], a
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $3
-	call Function4787
+	ld [hl], 3
+	call IncrementObjectStructField27
 	ret
 ; 49b8
 
 Function49b8: ; 49b8
-	ld de, .data_49c0
+	ld de, .DirectionData_49c0
 	call Function49d0
 	jr Function4984
 ; 49c0
 
-.data_49c0 ; 49c0
-	db $0c, $08, $00, $04
+.DirectionData_49c0 ; 49c0
+	db RIGHT << 2, LEFT << 2, DOWN << 2, UP << 2
 ; 49c4
 
 Function49c4: ; 49c4
-	ld de, .data_49cc
+	ld de, .DirectionData_49cc
 	call Function49d0
 	jr Function498d
 ; 49cc
 
-.data_49cc ; 49cc
-	db $08, $0c, $04, $00
+.DirectionData_49cc ; 49cc
+	db LEFT << 2, RIGHT << 2, UP << 2, DOWN << 2
 ; 49d0
 
 Function49d0: ; 49d0
-	ld hl, OBJECT_08
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
-	and $c
+	and %00001100
 	rrca
 	rrca
 	push hl
 	ld l, a
-	ld h, $0
+	ld h, 0
 	add hl, de
 	ld a, [hl]
 	pop hl
 	ld [hl], a
-	call Function478d
+	call DecrementObjectStructField27
 	ret
 ; 49e5
 
@@ -1316,28 +1319,28 @@
 	ld a, [hl]
 	inc a
 	add a
-	add $0
+	add 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, de
 	ld a, [hl]
 	and 3
 	ld d, $e
-	cp 0
-	jr z, .asm_4a0f
-	cp 1
-	jr z, .asm_4a0f
+	cp DOWN
+	jr z, .ok
+	cp UP
+	jr z, .ok
 	ld d, $c
 
-.asm_4a0f
+.ok
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
 	ld [hl], d
 	ld hl, OBJECT_SPRITE_X_OFFSET
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $13
@@ -1349,16 +1352,16 @@
 	call Function4aa8
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $8
+	ld [hl], 8
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
 	ld [hl], $f0
 	ld hl, OBJECT_SPRITE_X_OFFSET
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $13
@@ -1379,15 +1382,16 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, de
 	ld a, [hl]
-	and 3
+	and %00000011
 	ld e, a
 	ld d, 0
 	ld hl, .data_4a81
-	add hl, de
-	add hl, de
+rept 2
+	add hl,de
+endr
 	ld d, [hl]
 	inc hl
 	ld e, [hl]
@@ -1420,7 +1424,7 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, de
 	ld a, [hl]
-	add $ff
+	add -1
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
@@ -1435,7 +1439,7 @@
 	add hl, bc
 	ld a, [hl]
 	push bc
-	call Function1ae5
+	call GetObjectStruct
 	ld d, b
 	ld e, c
 	pop bc
@@ -1451,7 +1455,7 @@
 	call Function467b
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
@@ -1470,20 +1474,20 @@
 
 Function4ade: ; 4ade
 	ld d, a
-	and $3f
+	and %00111111
 	ld e, a
 	ld a, d
 	rlca
 	rlca
-	and $3
+	and %00000011
 	ld d, a
 	inc d
-	ld a, $1
-.asm_4aeb
+	ld a, 1
+.loop
 	dec d
 	ret z
 	add a
-	jr .asm_4aeb
+	jr .loop
 ; 4af0
 
 Function4af0: ; 4af0
@@ -1493,20 +1497,20 @@
 	call Function463f
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $2
+	ld [hl], 2
 	ld hl, wd4cf
 	ld a, [$ffaf]
 	cp [hl]
-	jr z, .asm_4b10
+	jr z, .ok
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $7
 	ret
 
-.asm_4b10
+.ok
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $6
+	ld [hl], 6
 	ret
 
 Function4b17: ; 4b17
@@ -1518,7 +1522,7 @@
 Function4b1d: ; 4b1d
 	call Random
 	ld a, [hRandomAdd]
-	and $7f
+	and %01111111
 	jr Function4b2d
 ; 4b26
 
@@ -1525,7 +1529,7 @@
 Function4b26: ; 4b26
 	call Random
 	ld a, [hRandomAdd]
-	and $1f
+	and %00011111
 	; fallthrough
 ; 4b2d
 
@@ -1533,15 +1537,15 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $3
+	ld [hl], 3
 	ret
 ; 4b45
 
@@ -1581,12 +1585,12 @@
 	ret nz
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4b86
 
 Function4b86: ; 4b86
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4b8d
 	dw Function4ba9
 ; 4b8d
@@ -1603,7 +1607,7 @@
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	res 3, [hl]
-	call Function47a2
+	call IncrementObjectStructField28
 	ret
 ; 4ba9
 
@@ -1617,12 +1621,12 @@
 	call Function4600
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4bbf
 
 Function4bbf: ; 4bbf
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4bca
 	dw Function4bd2
 	dw Function4bf2
@@ -1632,7 +1636,7 @@
 Function4bca: ; 4bca
 	ld hl, wd150
 	set 7, [hl]
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4bd2
 
@@ -1650,7 +1654,7 @@
 	ld hl, wd150
 	set 6, [hl]
 	set 4, [hl]
-	call Function47a2
+	call IncrementObjectStructField28
 	ret
 ; 4bf2
 
@@ -1658,7 +1662,7 @@
 	call Function46a6
 	ld hl, wd150
 	set 7, [hl]
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4bfd
 
@@ -1674,12 +1678,12 @@
 	call Function4600
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4c18
 
 Function4c18: ; 4c18
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4c23
 	dw Function4c32
 	dw Function4c42
@@ -1689,11 +1693,11 @@
 Function4c23: ; 4c23
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $10
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4c32
 
@@ -1700,12 +1704,12 @@
 Function4c32: ; 4c32
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $4
+	ld [hl], 4
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function47a2
+	call IncrementObjectStructField28
 	ret
 ; 4c42
 
@@ -1712,7 +1716,7 @@
 Function4c42: ; 4c42
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_31
 	add hl, bc
 	ld [hl], $10
@@ -1722,7 +1726,7 @@
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	res 3, [hl]
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4c5d
 
@@ -1729,7 +1733,7 @@
 Function4c5d: ; 4c5d
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $4
+	ld [hl], 4
 	ld hl, OBJECT_31
 	add hl, bc
 	inc [hl]
@@ -1747,15 +1751,15 @@
 	ret nz
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4c89
 
 Function4c89: ; 4c89
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4c9a
 	dw Function4caa
 	dw Function4cb3
@@ -1768,11 +1772,11 @@
 Function4c9a: ; 4c9a
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $10
-	call Function47a2
+	call IncrementObjectStructField28
 	ret
 ; 4caa
 
@@ -1781,7 +1785,7 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4cb3
 
@@ -1788,14 +1792,14 @@
 Function4cb3: ; 4cb3
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_31
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $10
-	call Function47a2
+	call IncrementObjectStructField28
 	ret
 ; 4cc9
 
@@ -1802,7 +1806,7 @@
 Function4cc9: ; 4cc9
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $4
+	ld [hl], 4
 	ld hl, OBJECT_31
 	add hl, bc
 	inc [hl]
@@ -1818,7 +1822,7 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4ceb
 
@@ -1826,7 +1830,7 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $10
-	call Function47a2
+	call IncrementObjectStructField28
 	ret
 ; 4cf5
 
@@ -1833,7 +1837,7 @@
 Function4cf5: ; 4cf5
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $4
+	ld [hl], 4
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -1843,18 +1847,18 @@
 Function4d01: ; 4d01
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4d14
 
 Function4d14: ; 4d14
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4d1f
 	dw Function4d2e
 	dw Function4d4f
@@ -1864,11 +1868,11 @@
 Function4d1f: ; 4d1f
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $10
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4d2e
 
@@ -1879,17 +1883,17 @@
 	ret nz
 	ld hl, OBJECT_11
 	add hl, bc
-	ld [hl], $2
+	ld [hl], 2
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_31
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $10
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4d4f
 
@@ -1909,7 +1913,7 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function47a2
+	call IncrementObjectStructField28
 ;	fallthrough
 ; 4d6b
 
@@ -1916,18 +1920,18 @@
 Function4d6b: ; 4d6b
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4d7e
 
 Function4d7e: ; 4d7e
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4d85
 	dw Function4d94
 ; 4d85
@@ -1935,11 +1939,11 @@
 Function4d85: ; 4d85
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $8
+	ld [hl], 8
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
-	ld [hl], $0
-	call Function47a2
+	ld [hl], 0
+	call IncrementObjectStructField28
 	; fallthrough
 ; 4d94
 
@@ -1955,10 +1959,10 @@
 	ret nz
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4daf
 
@@ -1971,12 +1975,12 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld a, [hl]
-	and $1
-	ld a, $1
-	jr z, .asm_4dc2
-	ld a, $0
+	and %00000001
+	ld a, 1
+	jr z, .yes
+	ld a, 0
 
-.asm_4dc2
+.yes
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], a
@@ -1987,12 +1991,12 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld a, [hl]
-	and $1
-	ld a, $4
-	jr z, .asm_4dd5
-	ld a, $5
+	and %00000001
+	ld a, 4
+	jr z, .yes
+	ld a, 5
 
-.asm_4dd5
+.yes
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], a
@@ -2000,9 +2004,9 @@
 ; 4ddd
 
 Function4ddd: ; 4ddd
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -2009,14 +2013,14 @@
 	ret nz
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4df0
 
 Function4df0: ; 4df0
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -2031,12 +2035,12 @@
 	ret nz
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4e0c
 
 Function4e0c: ; 4e0c
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4e13
 	dw Function4e21
 ; 4e13
@@ -2044,18 +2048,18 @@
 Function4e13: ; 4e13
 	call Function4769
 	call Function1a47
-	ld hl, OBJECT_08
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld [hl], a
-	call Function47a2
+	call IncrementObjectStructField28
 	; fallthrough
 ; 4e21
 
 Function4e21: ; 4e21
 	call Function4fb2
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 4e2b
 
@@ -2067,12 +2071,12 @@
 	dec [hl]
 	ret nz
 	call Function4600
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4e47
 
@@ -2088,7 +2092,7 @@
 
 Function4e56: ; 4e56
 ; AnimateStep?
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4e5d
 	dw Function4e65
 ; 4e5d
@@ -2096,7 +2100,7 @@
 Function4e5d: ; 4e5d
 	ld hl, wd150
 	set 7, [hl]
-	call Function47a2
+	call IncrementObjectStructField28
 	; fallthrough
 ; 4e65
 
@@ -2109,17 +2113,17 @@
 	ld hl, wd150
 	set 6, [hl]
 	call Function4600
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4e83
 
 Function4e83: ; 4e83
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4e8e
 	dw Function4ea4
 	dw Function4ead
@@ -2127,17 +2131,17 @@
 ; 4e8e
 
 Function4e8e: ; 4e8e
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_12
 	add hl, bc
 	ld a, [hl]
-	ld [hl], $2
+	ld [hl], 2
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $2
-	call Function47a2
+	ld [hl], 2
+	call IncrementObjectStructField28
 	; fallthrough
 ; 4ea4
 
@@ -2146,7 +2150,7 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function47a2
+	call IncrementObjectStructField28
 	; fallthrough
 ; 4ead
 
@@ -2154,13 +2158,13 @@
 	ld hl, OBJECT_29
 	add hl, bc
 	ld a, [hl]
-	ld hl, OBJECT_08
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld [hl], a
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $2
-	call Function47a2
+	call IncrementObjectStructField28
 	; fallthrough
 ; 4ec0
 
@@ -2171,7 +2175,7 @@
 	ret nz
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4ecd
 
@@ -2188,7 +2192,7 @@
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld e, [hl]
-	ld hl, OBJECT_01
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	ld b, a
@@ -2198,12 +2202,12 @@
 	add hl, bc
 	res 2, [hl]
 	call Function4600
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4f04
 
@@ -2213,11 +2217,11 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, OBJECT_00
+	ld hl, OBJECT_SPRITE
 	add hl, de
 	ld a, [hl]
 	and a
-	jr z, .asm_4f30
+	jr z, .nope
 	ld hl, OBJECT_SPRITE_X
 	add hl, de
 	ld a, [hl]
@@ -2238,12 +2242,12 @@
 	dec [hl]
 	ret nz
 
-.asm_4f30
+.nope
 	jp Function4357
 ; 4f33
 
 Function4f33: ; 4f33
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4f3a
 	dw Function4f43
 ; 4f3a
@@ -2253,7 +2257,7 @@
 	ld hl, OBJECT_29
 	add hl, bc
 	ld [hl], a
-	call Function47a2
+	call IncrementObjectStructField28
 	; fallthrough
 ; 4f43
 
@@ -2267,7 +2271,7 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
-	jr z, .asm_4f68
+	jr z, .ok
 	ld a, [hl]
 	call Function4f6c
 	ld hl, OBJECT_29
@@ -2279,7 +2283,7 @@
 	ld [wd14f], a
 	ret
 
-.asm_4f68
+.ok
 	call Function4357
 	ret
 ; 4f6c
@@ -2296,11 +2300,11 @@
 ; 4f77
 
 Function4f77: ; 4f77
-	call Function47a8 ; ????
+	call JumptoObjectStructField28 ; ????
 ; 4f7a
 
 Function4f7a: ; 4f7a
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4f83
 	dw Function4f83
 	dw Function4f83
@@ -2307,7 +2311,7 @@
 ; 4f83
 
 Function4f83: ; 4f83
-	call Function47a8
+	call JumptoObjectStructField28
 	dw Function4f8a
 	dw Function4f99
 ; 4f8a
@@ -2319,7 +2323,7 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], $10
-	call Function47a2
+	call IncrementObjectStructField28
 ; 4f99
 
 Function4f99: ; 4f99
@@ -2332,10 +2336,10 @@
 	ld [hl], $60
 	ld hl, OBJECT_12
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $1
+	ld [hl], 1
 	ret
 ; 4fb2
 
@@ -2350,7 +2354,7 @@
 	ld a, [hl]
 	srl a
 	srl a
-	and 7
+	and %00000111
 	ld l, a
 	ld h, 0
 	ld de, .y
@@ -2448,19 +2452,19 @@
 ; 5041
 
 Function5041: ; 5041
-	call Function5055
-.asm_5044
+	call CopyMovementPointer
+.loop
 	xor a
 	ld [wc2ea], a
-	call Function505e
-	call Function506b
+	call GetMovementByte
+	call DoMovementFunction
 	ld a, [wc2ea]
 	and a
-	jr nz, .asm_5044
+	jr nz, .loop
 	ret
 ; 5055
 
-Function5055: ; 5055
+CopyMovementPointer: ; 5055
 	ld a, l
 	ld [wc2eb], a
 	ld a, h
@@ -2468,7 +2472,7 @@
 	ret
 ; 505e
 
-Function505e: ; 505e
+GetMovementByte: ; 505e
 	ld hl, wc2eb
 	ld a, [hli]
 	ld h, [hl]
@@ -2477,12 +2481,12 @@
 ; 5065
 
 Function5065: ; 5065
-	ld a, $1
+	ld a, 1
 	ld [wc2ea], a
 	ret
 ; 506b
 
-Function506b: ; 506b
+DoMovementFunction: ; 506b
 	push af
 	call Function54b8
 	pop af
@@ -2500,7 +2504,7 @@
 Function54b8: ; 54b8
 	ld e, a
 	ld a, [wd4ce]
-	cp $ff
+	cp -1
 	ret z
 	ld a, [wd4cd]
 	ld d, a
@@ -2534,9 +2538,9 @@
 	ld hl, wd4d0
 	ld a, [hl]
 	and a
-	jr z, .asm_5503
-	cp $ff
-	jr z, .asm_5503
+	jr z, .done
+	cp -1
+	jr z, .done
 	dec [hl]
 	ld e, a
 	ld d, 0
@@ -2543,16 +2547,16 @@
 	ld hl, wd4d1
 	add hl, de
 	inc e
-	ld a, $ff
-.asm_54fc
+	ld a, -1
+.loop
 	ld d, [hl]
 	ld [hld], a
 	ld a, d
 	dec e
-	jr nz, .asm_54fc
+	jr nz, .loop
 	ret
 
-.asm_5503
+.done
 	call Function550a
 	ret c
 	ld a, $3e
@@ -2561,20 +2565,20 @@
 
 Function550a: ; 550a
 	ld a, [wd4cd]
-	cp $ff
-	jr z, .asm_5520
+	cp -1
+	jr z, .nope
 	push bc
-	call Function1ae5
-	ld hl, OBJECT_00
+	call GetObjectStruct
+	ld hl, OBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	pop bc
 	and a
-	jr z, .asm_5520
+	jr z, .nope
 	and a
 	ret
 
-.asm_5520
+.nope
 	ld a, $ff
 	ld [wd4ce], a
 	ld a, $47
@@ -2657,31 +2661,31 @@
 Function5582: ; 5582
 	ld de, ObjectStructs
 	ld a, $d
-.asm_5587
+.loop
 	push af
 	ld hl, OBJECT_04
 	add hl, de
 	bit 7, [hl]
-	jr z, .asm_55a1
-	ld hl, OBJECT_00
+	jr z, .next
+	ld hl, OBJECT_SPRITE
 	add hl, de
 	ld a, [hl]
 	and a
-	jr z, .asm_55a1
+	jr z, .next
 	push bc
 	xor a
-	ld bc, ObjectStruct2 - ObjectStruct1
+	ld bc, OBJECT_STRUCT_LENGTH
 	call ByteFill
 	pop bc
 
-.asm_55a1
-	ld hl, ObjectStruct2 - ObjectStruct1
+.next
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, de
 	ld d, h
 	ld e, l
 	pop af
 	dec a
-	jr nz, .asm_5587
+	jr nz, .loop
 	ret
 ; 55ac
 
@@ -2696,9 +2700,9 @@
 
 Function55b9: ; 55b9
 	ld hl, wc2f0
-	ld [hl], $ff
+	ld [hl], -1
 	inc hl
-	ld [hl], $ff
+	ld [hl], -1
 	inc hl
 	ld a, [de]
 	inc de
@@ -2722,7 +2726,7 @@
 	inc hl
 	ld [hl], e
 	inc hl
-	ld [hl], $ff
+	ld [hl], -1
 	ret
 ; 55e0
 
@@ -2732,46 +2736,46 @@
 	ret z
 	ld bc, ObjectStructs
 	xor a
-.asm_55ea
+.loop
 	ld [$ffaf], a
-	call Function1af1
-	jr z, .asm_55f4
+	call GetObjectSprite
+	jr z, .ok
 	call Function565c
 
-.asm_55f4
-	ld hl, ObjectStruct2 - ObjectStruct1
+.ok
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	ld a, [$ffaf]
 	inc a
-	cp $d
-	jr nz, .asm_55ea
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	ret
 ; 5602
 
 Function5602: ; 5602
 	call Function5645
-	ld a, $0
+	ld a, 0
 	call Function5629
 	ld a, [wd459]
 	bit 7, a
-	jr z, .asm_5619
+	jr z, .ok
 	ld a, [$ffe0]
 	and a
-	jr z, .asm_5619
+	jr z, .ok
 	call Function5629
 
-.asm_5619
-	call Function5920
+.ok
+	call RefreshMapAppearDisappear
 	ret
 ; 561d
 
 Function561d: ; 561d
 	call Function5645
-	ld a, $0
+	ld a, 0
 	call Function5629
-	call Function5920
+	call RefreshMapAppearDisappear
 	ret
 ; 5629
 
@@ -2779,15 +2783,15 @@
 	cp $10
 	ret nc
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
 	cp $d
 	ret nc
-	call Function1ae5
-	call Function1af1
+	call GetObjectStruct
+	call GetObjectSprite
 	ret z
 	call Function5673
 	ret
@@ -2796,17 +2800,17 @@
 Function5645: ; 5645
 	xor a
 	ld bc, ObjectStructs
-.asm_5649
+.loop
 	ld [$ffaf], a
 	call Function5680
-	ld hl, ObjectStruct2 - ObjectStruct1
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	ld a, [$ffaf]
 	inc a
-	cp $d
-	jr nz, .asm_5649
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	ret
 ; 565c
 
@@ -2832,9 +2836,9 @@
 ; 5680
 
 Function5680: ; 5680
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	scf
 	ret
 ; 5688
@@ -2867,26 +2871,26 @@
 	inc e
 	ld a, [XCoord]
 	cp d
-	jr z, .asm_56bc
-	jr nc, .asm_56cb
+	jr z, .equal_x
+	jr nc, .nope
 	add $b
 	cp d
-	jr c, .asm_56cb
+	jr c, .nope
 
-.asm_56bc
+.equal_x
 	ld a, [YCoord]
 	cp e
-	jr z, .asm_56c9
-	jr nc, .asm_56cb
+	jr z, .equal_y
+	jr nc, .nope
 	add $a
 	cp e
-	jr c, .asm_56cb
+	jr c, .nope
 
-.asm_56c9
+.equal_y
 	xor a
 	ret
 
-.asm_56cb
+.nope
 	scf
 	ret
 ; 56cd
@@ -2902,27 +2906,27 @@
 	add [hl]
 	add d
 	cp $f0
-	jr nc, .asm_56e5
+	jr nc, .ok1
 	cp $a0
-	jp nc, .asm_5768
+	jp nc, .nope
 
-.asm_56e5
-	and $7
-	ld d, $2
-	cp $4
-	jr c, .asm_56ef
-	ld d, $3
+.ok1
+	and %00000111
+	ld d, 2
+	cp 4
+	jr c, .ok2
+	ld d, 3
 
-.asm_56ef
+.ok2
 	ld a, [hl]
 	srl a
 	srl a
 	srl a
 	cp $14
-	jr c, .asm_56fc
+	jr c, .ok3
 	sub $20
 
-.asm_56fc
+.ok3
 	ld [$ffbd], a
 	ld a, [wd14d]
 	ld e, a
@@ -2934,43 +2938,43 @@
 	add [hl]
 	add e
 	cp $f0
-	jr nc, .asm_5715
+	jr nc, .ok4
 	cp $90
-	jr nc, .asm_5768
+	jr nc, .nope
 
-.asm_5715
-	and $7
-	ld e, $2
-	cp $4
-	jr c, .asm_571f
-	ld e, $3
+.ok4
+	and %00000111
+	ld e, 2
+	cp 4
+	jr c, .ok5
+	ld e, 3
 
-.asm_571f
+.ok5
 	ld a, [hl]
 	srl a
 	srl a
 	srl a
 	cp $12
-	jr c, .asm_572c
+	jr c, .ok6
 	sub $20
 
-.asm_572c
+.ok6
 	ld [$ffbe], a
 	ld hl, OBJECT_PALETTE
 	add hl, bc
 	bit 7, [hl]
-	jr z, .asm_573e
+	jr z, .ok7
 	ld a, d
-	add $2
+	add 2
 	ld d, a
 	ld a, e
-	add $2
+	add 2
 	ld e, a
 
-.asm_573e
+.ok7
 	ld a, d
 	ld [$ffbf], a
-.asm_5741
+.loop
 	ld a, [$ffbf]
 	ld d, a
 	ld a, [$ffbe]
@@ -2977,14 +2981,14 @@
 	add e
 	dec a
 	cp $12
-	jr nc, .asm_5763
+	jr nc, .ok9
 	ld b, a
-.asm_574d
+.next
 	ld a, [$ffbd]
 	add d
 	dec a
 	cp $14
-	jr nc, .asm_5760
+	jr nc, .ok8
 	ld c, a
 	push bc
 	call GetTileCoord
@@ -2991,19 +2995,19 @@
 	pop bc
 	ld a, [hl]
 	cp $60
-	jr nc, .asm_5768
+	jr nc, .nope
 
-.asm_5760
+.ok8
 	dec d
-	jr nz, .asm_574d
+	jr nz, .next
 
-.asm_5763
+.ok9
 	dec e
-	jr nz, .asm_5741
+	jr nz, .loop
 	and a
 	ret
 
-.asm_5768
+.nope
 	scf
 	ret
 ; 576a
@@ -3019,7 +3023,7 @@
 	ld [wd14e], a
 	ld [wd14f], a
 	ld [wd150], a
-	ld a, $ff
+	ld a, -1
 	ld [wd151], a
 	ret
 ; 5781
@@ -3027,21 +3031,21 @@
 Function5781: ; 5781
 	ld bc, ObjectStructs
 	xor a
-.asm_5785
+.loop
 	ld [$ffaf], a
-	call Function1af1
-	jr z, .asm_578f
+	call GetObjectSprite
+	jr z, .next
 	call Function437b
 
-.asm_578f
-	ld hl, ObjectStruct2 - ObjectStruct1
+.next
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	ld a, [$ffaf]
 	inc a
-	cp $d
-	jr nz, .asm_5785
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	ret
 ; 579d
 
@@ -3053,8 +3057,8 @@
 	ld [wd04e], a
 	ld [wd4e2], a
 	call Function57bc
-	callba Function149c6
-	call c, Function57d9
+	callba CheckWarpCollision
+	call c, SpawnInFacingDown
 	call Function57ca
 	ret
 ; 57bc
@@ -3062,11 +3066,11 @@
 Function57bc: ; 57bc
 	ld hl, wd45b
 	bit 7, [hl]
-	jr nz, .asm_57c4
+	jr nz, .ok
 	ret
 
-.asm_57c4
-	ld a, $0
+.ok
+	ld a, 0
 	ld [PlayerAction], a
 	ret
 ; 57ca
@@ -3076,20 +3080,21 @@
 	bit 5, [hl]
 	ret z
 	ld a, [wd45b]
-	and $3
+	and 3
+rept 2
 	add a
-	add a
+endr
 	jr Function57db
 ; 57d9
 
-Function57d9: ; 57d9
-	ld a, $0
+SpawnInFacingDown: ; 57d9
+	ld a, 0
 	; fallthrough
 ; 57db
 
 Function57db: ; 57db
 	ld bc, PlayerStruct
-	call Function1af8
+	call SetSpriteDirection
 	ret
 ; 57e2
 
@@ -3098,7 +3103,7 @@
 	and $80
 	ret z
 	ld bc, $0000 ; debug?
-	ld hl, OBJECT_08
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
 	or d
@@ -3105,13 +3110,13 @@
 	ld [hl], a
 	ld a, d
 	swap a
-	and $7
+	and %00000111
 	ld d, a
 	ld bc, PlayerStruct
 	ld hl, OBJECT_PALETTE
 	add hl, bc
 	ld a, [hl]
-	and $f8
+	and %11111000
 	or d
 	ld [hl], a
 	ret
@@ -3144,7 +3149,7 @@
 ; 5826
 
 Function5826: ; 5826
-	ld a, $ff
+	ld a, -1
 	ld [wd4cd], a
 	ret
 ; 582c
@@ -3160,7 +3165,7 @@
 	ld [hl], $13
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld a, [$ffb0]
 	ld [wd4ce], a
 	ret
@@ -3168,16 +3173,16 @@
 
 Function5847: ; 5847
 	ld a, [wd4ce]
-	cp $ff
+	cp -1
 	ret z
-	call Function1ae5
+	call GetObjectStruct
 	callba Function58e3
-	ld a, $ff
+	ld a, -1
 	ld [wd4ce], a
 	ret
 ; 585c
 
-Function585c:: ; 585c
+SetFlagsForMovement_1:: ; 585c
 	ld a, c
 	call Function18de
 	ret c
@@ -3204,33 +3209,33 @@
 Function587a: ; 587a
 	ld bc, ObjectStructs
 	xor a
-.asm_587e
+.loop
 	push af
-	call Function1af1
-	jr z, .asm_588a
+	call GetObjectSprite
+	jr z, .next
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	set 5, [hl]
 
-.asm_588a
-	ld hl, ObjectStruct2 - ObjectStruct1
+.next
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	pop af
 	inc a
-	cp $d
-	jr nz, .asm_587e
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	ret
 ; 5897
 
-Function5897:: ; 5897
+_SetFlagsForMovement_2:: ; 5897
 	ld a, [wd4cd]
-	cp $ff
+	cp -1
 	ret z
 	push bc
-	call Function1ae5
-	ld hl, OBJECT_01
+	call GetObjectStruct
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	pop bc
@@ -3237,9 +3242,9 @@
 	cp c
 	ret nz
 	ld a, [wd4ce]
-	cp $ff
+	cp -1
 	ret z
-	call Function1ae5
+	call GetObjectStruct
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	res 5, [hl]
@@ -3250,23 +3255,23 @@
 	push bc
 	ld bc, ObjectStructs
 	xor a
-.asm_58be
+.loop
 	push af
-	call Function1af1
-	jr z, .asm_58ca
+	call GetObjectSprite
+	jr z, .next
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	res 5, [hl]
 
-.asm_58ca
-	ld hl, ObjectStruct2 - ObjectStruct1
+.next
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	pop af
 	inc a
-	cp $d
-	jr nz, .asm_58be
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	pop bc
 	ret
 ; 58d8
@@ -3281,14 +3286,14 @@
 ; 58e3
 
 Function58e3: ; 58e3
-	ld hl, OBJECT_01
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
-	cp $ff
+	cp -1
 	jp z, Function5903
 	push bc
 	call GetMapObject
-	ld hl, $0004
+	ld hl, MAPOBJECT_FACING
 	add hl, bc
 	ld a, [hl]
 	pop bc
@@ -3297,7 +3302,7 @@
 	ld [hl], a
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ret
 ; 5903
 
@@ -3315,7 +3320,7 @@
 	ld [hl], a
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ret
 
 .data_591c
@@ -3322,7 +3327,7 @@
 	db 6, 7, 8, 9
 ; 5920
 
-Function5920:: ; 5920
+RefreshMapAppearDisappear:: ; 5920
 	ld a, [VramState]
 	bit 0, a
 	ret z
@@ -3330,7 +3335,7 @@
 	ld [$ffbd], a
 	ld a, [hOAMUpdate]
 	push af
-	ld a, $1
+	ld a, 1
 	ld [hOAMUpdate], a
 	call Function5991
 	call Function593a
@@ -3343,10 +3348,10 @@
 	ld a, [VramState]
 	bit 1, a
 	ld b, $a0
-	jr z, .asm_5945
+	jr z, .ok
 	ld b, $70
 
-.asm_5945
+.ok
 	ld a, [$ffbd]
 	cp b
 	ret nc
@@ -3355,11 +3360,11 @@
 	ld de, OBJECT_04
 	ld a, b
 	ld c, $a0
-.asm_5952
+.loop
 	ld [hl], c
 	add hl, de
 	cp l
-	jr nz, .asm_5952
+	jr nz, .loop
 	ret
 ; 5958
 
@@ -3372,12 +3377,12 @@
 	ld a, [wd14d]
 	ld e, a
 	ld bc, ObjectStructs
-	ld a, $d
+	ld a, NUM_OBJECT_STRUCTS
 
-.asm_5968
+.loop
 	push af
-	call Function1af1
-	jr z, .asm_597c
+	call GetObjectSprite
+	jr z, .skip
 
 	ld hl, OBJECT_SPRITE_X
 	add hl, bc
@@ -3391,14 +3396,14 @@
 	add e
 	ld [hl], a
 
-.asm_597c
-	ld hl, ObjectStruct2 - ObjectStruct1
+.skip
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	pop af
 	dec a
-	jr nz, .asm_5968
+	jr nz, .loop
 
 	xor a
 	ld [wd14c], a
@@ -3431,10 +3436,10 @@
 	ld hl, wc2eb
 .loop
 	push hl
-	call Function1af1
+	call GetObjectSprite
 	jr z, .skip
 
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld a, [hl]
 	cp -1
@@ -3453,7 +3458,7 @@
 	jr .add
 
 .skip
-	ld hl, ObjectStruct2 - ObjectStruct1
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
@@ -3461,7 +3466,7 @@
 	jr .next
 
 .add
-	ld hl, ObjectStruct2 - ObjectStruct1
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
@@ -3473,7 +3478,7 @@
 .next
 	inc d
 	ld a, d
-	cp $d
+	cp NUM_OBJECT_STRUCTS
 	jr nz, .loop
 	ret
 ; 59f3
@@ -3483,7 +3488,7 @@
 .next
 	ld a, [hli]
 	ld d, a
-	and $f0
+	and %11110000
 	ret z
 	cp c
 	jr nz, .next
@@ -3491,7 +3496,7 @@
 	push bc
 	push hl
 	ld a, d
-	and $f
+	and %00001111
 	call Function5ac2
 	call Function5a0d
 	pop hl
@@ -3500,44 +3505,44 @@
 ; 5a0d
 
 Function5a0d: ; 5a0d
-	ld hl, OBJECT_SPRITE
+	ld hl, OBJECT_SPRITE_TILE
 	add hl, bc
 	ld a, [hl]
-	and $7f
+	and %01111111
 	ld [$ffc1], a
 
 	xor a
 	bit 7, [hl]
-	jr nz, .asm_5a1d
-	or 8
-.asm_5a1d
+	jr nz, .skip1
+	or %00001000
+.skip1
 
 	ld hl, OBJECT_FLAGS
 	add hl, bc
 	ld e, [hl]
 	bit 7, e
-	jr z, .asm_5a28
-	or $80
-.asm_5a28
+	jr z, .skip2
+	or %10000000
+.skip2
 
 	bit 4, e
-	jr z, .asm_5a2e
-	or $10
-.asm_5a2e
+	jr z, .skip3
+	or %00010000
+.skip3
 
 	ld hl, OBJECT_PALETTE
 	add hl, bc
 	ld d, a
 	ld a, [hl]
-	and 7
+	and %00000111
 	or d
 	ld d, a
 
 	xor a
 	bit 3, e
-	jr z, .asm_5a3f
-	or $80
-.asm_5a3f
+	jr z, .skip4
+	or %10000000
+.skip4
 	ld [$ffc2], a
 
 	ld hl, OBJECT_SPRITE_X
@@ -3570,7 +3575,7 @@
 	add e
 	ld [$ffc0], a
 
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld a, [hl]
 	cp -1
@@ -3616,9 +3621,9 @@
 
 	ld a, [$ffc1]
 	bit 2, e
-	jr z, .asm_5aa3
+	jr z, .nope1
 	xor a
-.asm_5aa3
+.nope1
 	add [hl]
 	inc hl
 
@@ -3627,11 +3632,11 @@
 
 	ld a, e
 	bit 1, a
-	jr z, .asm_5aaf
+	jr z, .nope2
 	ld a, [$ffc2]
 	or e
-.asm_5aaf
-	and $f0
+.nope2
+	and %11110000
 	or d
 	ld [bc], a
 	inc c
@@ -3657,8 +3662,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, .Addresses
-	add hl, bc
-	add hl, bc
+rept 2
+	add hl,bc
+endr
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -6,8 +6,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, MapSetupScripts
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -259,9 +260,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, MapSetupCommands
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 
 	; bank
 	ld b, [hl]
@@ -293,76 +294,76 @@
 ; 15440
 
 MapSetupCommands: ; 15440
-	dbw BANK(EnableLCD), EnableLCD
-	dbw BANK(DisableLCD), DisableLCD
-	dbw BANK(SoundRestart), SoundRestart
-	dbw BANK(PlayMapMusic), PlayMapMusic
-	dbw BANK(RestartMapMusic), RestartMapMusic
-	dbw BANK(FadeToMapMusic), FadeToMapMusic
-	dbw BANK(Function15574), Function15574
-	dbw BANK(EnterMapMusic), EnterMapMusic
-	dbw BANK(Function15587), Function15587
-	dbw BANK(Function3cae), Function3cae
-	dbw BANK(Function24cd), Function24cd
-	dbw BANK(Function28e3), Function28e3
-	dbw BANK(Function289d), Function289d
-	dbw BANK(Function2879), Function2879
-	dbw BANK(Function1047cf), Function1047cf
-	dbw BANK(LoadTilesetHeader), LoadTilesetHeader
-	dbw BANK(Function104750), Function104750
-	dbw BANK(Function1047eb), Function1047eb
-	dbw BANK(Function29ff8), Function29ff8
-	dbw BANK(Function1047f0), Function1047f0
-	dbw BANK(Function1045b0), Function1045b0
-	dbw BANK(Function1045c4), Function1045c4
-	dbw BANK(Function154d7), Function154d7
-	dbw BANK(LoadSpawnPoint), LoadSpawnPoint
-	dbw BANK(EnterMapConnection), EnterMapConnection
-	dbw BANK(Function1046c6), Function1046c6
-	dbw BANK(Function2309), Function2309
-	dbw BANK(Function2317), Function2317
-	dbw BANK(WhiteBGMap), WhiteBGMap
-	dbw BANK(Function8c084), Function8c084
-	dbw BANK(Function8c079), Function8c079
-	dbw BANK(Function10486d), Function10486d
-	dbw BANK(Function248a), Function248a
-	dbw BANK(Function57d9), Function57d9
-	dbw BANK(Function8029), Function8029
-	dbw BANK(Function80b8), Function80b8
-	dbw BANK(Function154eb), Function154eb
-	dbw BANK(Function154f1), Function154f1
-	dbw BANK(Function2a30d), Function2a30d
-	dbw BANK(Function2a394), Function2a394
-	dbw BANK(Function15567), Function15567
-	dbw BANK(Function154cf), Function154cf
-	dbw BANK(Function154d3), Function154d3
-	dbw BANK(Function1556d), Function1556d
-	dbw BANK(Function154ca), Function154ca
-	dbw BANK(Functionb8000), Functionb8000
+	dbw BANK(EnableLCD), EnableLCD ; 00
+	dbw BANK(DisableLCD), DisableLCD ; 01
+	dbw BANK(SoundRestart), SoundRestart ; 02
+	dbw BANK(PlayMapMusic), PlayMapMusic ; 03
+	dbw BANK(RestartMapMusic), RestartMapMusic ; 04
+	dbw BANK(FadeToMapMusic), FadeToMapMusic ; 05
+	dbw BANK(FadeOutMapAndMusic), FadeOutMapAndMusic ; 06
+	dbw BANK(EnterMapMusic), EnterMapMusic ; 07
+	dbw BANK(ForceMapMusic), ForceMapMusic ; 08
+	dbw BANK(CrankUpTheVolume), CrankUpTheVolume ; 09
+	dbw BANK(LoadBlockData), LoadBlockData ; 0a
+	dbw BANK(LoadNeighboringBlockData), LoadNeighboringBlockData ; 0b
+	dbw BANK(SaveScreen), SaveScreen ; 0c
+	dbw BANK(BufferScreen), BufferScreen ; 0d
+	dbw BANK(LoadGraphics), LoadGraphics ; 0e
+	dbw BANK(LoadTilesetHeader), LoadTilesetHeader ; 0f
+	dbw BANK(LoadMapTimeOfDay), LoadMapTimeOfDay ; 10
+	dbw BANK(LoadMapPalettes), LoadMapPalettes ; 11
+	dbw BANK(LoadWildMonData), LoadWildMonData ; 12
+	dbw BANK(RefreshMapSprites), RefreshMapSprites ; 13
+	dbw BANK(RunCallback_05_03), RunCallback_05_03 ; 14
+	dbw BANK(RunCallback_03), RunCallback_03 ; 15
+	dbw BANK(LoadObjectsRunCallback_02), LoadObjectsRunCallback_02 ; 16
+	dbw BANK(LoadSpawnPoint), LoadSpawnPoint ; 17
+	dbw BANK(EnterMapConnection), EnterMapConnection ; 18
+	dbw BANK(LoadWarpData), LoadWarpData ; 19
+	dbw BANK(LoadMapAttributes), LoadMapAttributes ; 1a
+	dbw BANK(LoadMapAttributes_IgnoreHidden), LoadMapAttributes_IgnoreHidden ; 1b
+	dbw BANK(WhiteBGMap), WhiteBGMap ; 1c
+	dbw BANK(FadeBlackBGMap), FadeBlackBGMap ; 1d
+	dbw BANK(FadeInBGMap), FadeInBGMap ; 1e
+	dbw BANK(GetCoordOfUpperLeftCorner), GetCoordOfUpperLeftCorner ; 1f
+	dbw BANK(RestoreFacingAfterWarp), RestoreFacingAfterWarp ; 20
+	dbw BANK(SpawnInFacingDown), SpawnInFacingDown ; 21
+	dbw BANK(GetSpawnCoord), GetSpawnCoord ; 22
+	dbw BANK(RefreshPlayerCoords), RefreshPlayerCoords ; 23
+	dbw BANK(DelayClearingOldSprites), DelayClearingOldSprites ; 24
+	dbw BANK(DelayLoadingNewSprites), DelayLoadingNewSprites ; 25
+	dbw BANK(UpdateRoamMons), UpdateRoamMons ; 26
+	dbw BANK(RestoreRoamMons), RestoreRoamMons ; 27
+	dbw BANK(FadeOldMapMusic), FadeOldMapMusic ; 28
+	dbw BANK(ActivateMapAnims), ActivateMapAnims ; 29
+	dbw BANK(SuspendMapAnims), SuspendMapAnims ; 2a
+	dbw BANK(RetainOldPalettes), RetainOldPalettes ; 2b
+	dbw BANK(DontScrollText), DontScrollText ; 2c
+	dbw BANK(ReturnFromMapSetupScript), ReturnFromMapSetupScript ; 2d
 ; 154ca
 
 
-Function154ca: ; 154ca
+DontScrollText: ; 154ca
 	xor a
 	ld [wc2d7], a
 	ret
 ; 154cf
 
-Function154cf: ; 154cf
+ActivateMapAnims: ; 154cf
 	ld a, $1
 	ld [$ffde], a
 	ret
 ; 154d3
 
-Function154d3: ; 154d3
+SuspendMapAnims: ; 154d3
 	xor a
 	ld [$ffde], a
 	ret
 ; 154d7
 
-Function154d7: ; 154d7
+LoadObjectsRunCallback_02: ; 154d7
 	ld a, $2
-	call Function263b
+	call RunMapCallback
 	callba Function2454f
 	callba Function8177
 	ret
@@ -372,13 +373,13 @@
 	ret
 ; 154eb
 
-Function154eb: ; 154eb
+DelayClearingOldSprites: ; 154eb
 	ld hl, wd45b
 	set 7, [hl]
 	ret
 ; 154f1
 
-Function154f1: ; 154f1
+DelayLoadingNewSprites: ; 154f1
 	ld hl, wd45b
 	set 6, [hl]
 	ret
@@ -386,14 +387,14 @@
 Function154f7: ; 154f7
 	nop
 	call Function1550c
-	jr c, .asm_15508
+	jr c, .ok
 	call Function1554e
-	jr c, .asm_15508
+	jr c, .ok
 	call Function1551a
-	jr c, .asm_15508
+	jr c, .ok
 	ret
-.asm_15508
-	call Functione4a
+.ok
+	call Special_ReplaceKrisSprite
 	ret
 
 Function1550c: ; 1550c (5:550c)
@@ -401,7 +402,7 @@
 	ld hl, BikeFlags
 	bit 1, [hl]
 	ret z
-	ld a, $1
+	ld a, PLAYER_BIKE
 	ld [PlayerState], a
 	scf
 	ret
@@ -408,64 +409,64 @@
 
 Function1551a: ; 1551a (5:551a)
 	ld a, [PlayerState]
-	cp $0
-	jr z, .asm_1554c
-	cp $2
-	jr z, .asm_1554c
-	cp $4
-	jr z, .asm_15545
-	cp $8
-	jr z, .asm_15545
+	cp PLAYER_NORMAL
+	jr z, .nope
+	cp PLAYER_SLIP
+	jr z, .nope
+	cp PLAYER_SURF
+	jr z, .surfing
+	cp PLAYER_SURF_PIKA
+	jr z, .surfing
 	call GetMapPermission
 	cp $3
-	jr z, .asm_1553e
+	jr z, .checkbiking
 	cp $5
-	jr z, .asm_1553e
+	jr z, .checkbiking
 	cp $7
-	jr z, .asm_1553e
-	jr .asm_1554c
-.asm_1553e
+	jr z, .checkbiking
+	jr .nope
+.checkbiking
 	ld a, [PlayerState]
-	cp $1
-	jr nz, .asm_1554c
-.asm_15545
-	ld a, $0
+	cp PLAYER_BIKE
+	jr nz, .nope
+.surfing
+	ld a, PLAYER_NORMAL
 	ld [PlayerState], a
 	scf
 	ret
-.asm_1554c
+.nope
 	and a
 	ret
 
 Function1554e: ; 1554e (5:554e)
 	call Function1852
-	jr nz, .asm_15565
+	jr nz, .ret_nc
 	ld a, [PlayerState]
-	cp $4
-	jr z, .asm_15563
-	cp $8
-	jr z, .asm_15563
-	ld a, $4
+	cp PLAYER_SURF
+	jr z, .surfing
+	cp PLAYER_SURF_PIKA
+	jr z, .surfing
+	ld a, PLAYER_SURF
 	ld [PlayerState], a
-.asm_15563
+.surfing
 	scf
 	ret
-.asm_15565
+.ret_nc
 	and a
 	ret
 ; 15567
 
-Function15567: ; 15567
+FadeOldMapMusic: ; 15567
 	ld a, 6
 	call SkipMusic
 	ret
 ; 1556d
 
-Function1556d: ; 1556d
+RetainOldPalettes: ; 1556d
 	callba _UpdateTimePals
 	ret
 
-Function15574: ; 15574
+FadeOutMapAndMusic: ; 15574
 	ld e, 0
 	ld a, [MusicFadeIDLo]
 	ld d, 0
@@ -472,18 +473,18 @@
 	ld a, [MusicFadeIDHi]
 	ld a, $4
 	ld [MusicFade], a
-	call Function4b6
+	call FadeToWhite
 	ret
 ; 15587
 
-Function15587: ; 15587
+ForceMapMusic: ; 15587
 	ld a, [PlayerState]
-	cp $1
-	jr nz, .asm_15596
+	cp PLAYER_BIKE
+	jr nz, .notbiking
 	call VolumeOff
 	ld a, $88
 	ld [MusicFade], a
-.asm_15596
-	call Function3d2f
+.notbiking
+	call TryRestartMapMusic
 	ret
 ; 1559a
--- a/engine/more_phone_scripts.asm
+++ b/engine/more_phone_scripts.asm
@@ -1476,7 +1476,7 @@
 	iftrue UnknownScript_0xa0a1d
 	checknite
 	iftrue UnknownScript_0xa0a25
-	setevent EVENT_26A
+	setevent EVENT_KENJI_ON_BREAK
 	farwritetext UnknownText_0x66f11
 	keeptextopen
 	jump UnknownScript_0xa0484
@@ -1656,5 +1656,5 @@
 UnknownScript_0xa0b09:
 	farwritetext UnknownText_0x174000
 	clearflag ENGINE_BIKE_SHOP_CALL_ENABLED
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	end
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -130,7 +130,7 @@
 	ld hl, $000b
 	add hl, bc
 	ld [hl], $4
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -150,7 +150,7 @@
 	ld hl, $000c
 	add hl, bc
 	ld [hl], a
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -174,7 +174,7 @@
 ; 5196
 
 Function5196: ; 5196
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -228,7 +228,7 @@
 	ld hl, $001b
 	add hl, bc
 	ld [hl], $0
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -302,7 +302,7 @@
 ; parameters:
 ;	duration (DecimalParam)
 
-	call Function505e
+	call GetMovementByte
 	jr Function5247
 
 Function5247: ; 5247
@@ -411,7 +411,7 @@
 ; parameters:
 ;	displacement (DecimalParam)
 
-	call Function505e
+	call GetMovementByte
 	call Function5565
 	jp Function5065
 ; 52de
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -62,7 +62,7 @@
 
 Function10067: ; 10067 (4:4067)
 	ld hl, MenuDataHeader_0x10a4f
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0d9]
 	ld [wcf88], a
 	ld a, [wd0df]
@@ -90,7 +90,7 @@
 
 Function100a6: ; 100a6 (4:40a6)
 	ld hl, MenuDataHeader_0x10a7f
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0da]
 	ld [wcf88], a
 	ld a, [wd0e0]
@@ -137,8 +137,8 @@
 .asm_10110
 	push de
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	pop hl
 	ret c
 	ld a, [wcfa9]
@@ -220,7 +220,7 @@
 
 Function10198: ; 10198 (4:4198)
 	ld hl, MenuDataHeader_0x10aaf
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0db]
 	ld [wcf88], a
 	ld a, [wd0e1]
@@ -289,8 +289,8 @@
 .asm_10235
 	push de
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	pop hl
 	ret c
 	ld a, [wcfa9]
@@ -495,15 +495,15 @@
 	call Function10889
 	callba Function24fbf
 	push af
-	call Function1c07
+	call ExitMenu
 	pop af
 	jr c, .asm_1039c
 	call Function10a1d
 	ld hl, UnknownText_0x10ae9
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	push af
-	call Function1c07
+	call ExitMenu
 	pop af
 	jr c, .asm_1039c
 	ld hl, NumItems
@@ -709,7 +709,7 @@
 
 Function104fa: ; 104fa (4:44fa)
 	ld hl, MenuDataHeader_0x10a4f
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0d9]
 	ld [wcf88], a
 	ld a, [wd0df]
@@ -737,7 +737,7 @@
 
 Function10539: ; 10539 (4:4539)
 	ld hl, MenuDataHeader_0x10a7f
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0da]
 	ld [wcf88], a
 	ld a, [wd0e0]
@@ -788,7 +788,7 @@
 
 Function105a6: ; 105a6 (4:45a6)
 	ld hl, MenuDataHeader_0x10aaf
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0db]
 	ld [wcf88], a
 	ld a, [wd0e1]
@@ -821,8 +821,8 @@
 .asm_105ed
 	push de
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	pop hl
 	ret c
 	ld a, [wcfa9]
@@ -992,7 +992,7 @@
 	xor a
 	call Function10762
 	ld hl, MenuDataHeader_0x10a67
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0d9]
 	ld [wcf88], a
 	ld a, [wd0df]
@@ -1008,7 +1008,7 @@
 	ld a, $2
 	call Function10762
 	ld hl, MenuDataHeader_0x10a97
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0da]
 	ld [wcf88], a
 	ld a, [wd0e0]
@@ -1033,7 +1033,7 @@
 	ld a, $1
 	call Function10762
 	ld hl, MenuDataHeader_0x10ac7
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd0db]
 	ld [wcf88], a
 	ld a, [wd0e1]
@@ -1223,7 +1223,7 @@
 	push hl
 	call Function10762
 	pop hl
-	call Function1d3c
+	call CopyMenuDataHeader
 	call Function350c
 	ret
 
@@ -1235,8 +1235,9 @@
 Function1086b: ; 1086b
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1285,8 +1286,9 @@
 
 .asm_108b3
 	ld hl, PackGFXPointers
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -1673,7 +1675,7 @@
 ; 0x10b0c
 
 UnknownText_0x10b0c: ; 0x10b0c
-	; 
+	;
 	text_jump UnknownText_0x1c0c83
 	db "@"
 ; 0x10b11
--- a/engine/phone_scripts.asm
+++ b/engine/phone_scripts.asm
@@ -2,6 +2,8 @@
 	farwritetext UnusedPhoneText
 	end
 
+; Mom
+
 MomPhoneScript: ; 0xbceaa
 	checkevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
 	iftrue .bcec5
@@ -14,7 +16,7 @@
 	jump MomPhoneNoPokemonScript
 
 .bcec5 ; 0xbcec5
-	checkevent EVENT_007
+	checkevent EVENT_IN_YOUR_ROOM
 	iftrue MomPhoneHangUpScript
 	farwritetext MomPhoneGreetingText
 	keeptextopen
@@ -139,12 +141,14 @@
 MomPhoneLectureScript: ; 0xbcfb1
 	setevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
 	setflag ENGINE_DST
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	farwritetext MomPhoneLectureText
 	yesorno
 	iftrue MomPhoneSaveMoneyScript
 	jump MomPhoneWontSaveMoneyScript
 
+; Bill
+
 BillPhoneScript1: ; 0xbcfc5
 	checkday
 	iftrue .daygreet
@@ -187,6 +191,8 @@
 	closetext
 	end
 
+; Elm
+
 ElmPhoneScript1: ; 0xbd00d
 	checkcode VAR_POKERUS
 	if_equal $1, .pokerus
@@ -247,7 +253,7 @@
 
 .pokerus ; 0xbd079
 	farwritetext ElmPhonePokerusText
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	end
 
 ElmPhoneScript2: ; 0xbd081
@@ -258,18 +264,18 @@
 	if_equal $5, .gift
 	if_equal $8, .gift
 	farwritetext ElmPhonePokerusText
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	end
 
 .disaster ; 0xbd09f
 	farwritetext ElmPhoneDisasterText
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	setevent EVENT_ELM_CALLED_ABOUT_STOLEN_POKEMON
 	end
 
 .assistant ; 0xbd0aa
 	farwritetext ElmPhoneEggAssistantText
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	clearevent EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
 	setevent EVENT_ELMS_AIDE_IN_LAB
 	end
@@ -276,30 +282,31 @@
 
 .rocket ; 0xbd0b8
 	farwritetext ElmPhoneRocketText
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	end
 
 .gift ; 0xbd0c0
 	farwritetext ElmPhoneGiftText
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	end
 
 .unused ; 0xbd0c8
 	farwritetext ElmPhoneUnusedText
-	specialphonecall $0000
+	specialphonecall ELMCALL_NONE
 	end
 ; bd0d0
 
+; Jack
 
 UnknownScript_0xbd0d0:
-	trainertotext SCHOOLBOY, 1, $0
+	trainertotext SCHOOLBOY, JACK1, $0
 	checkflag ENGINE_JACK
 	iftrue UnknownScript_0xbd0f3
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_87
+	checkflag ENGINE_JACK_MONDAY_MORNING
 	iftrue UnknownScript_0xbd0ef
 	checkcode VAR_WEEKDAY
-	if_not_equal $1, UnknownScript_0xbd0ef
+	if_not_equal MONDAY, UnknownScript_0xbd0ef
 	checkmorn
 	iftrue UnknownScript_0xbd12a
 
@@ -311,13 +318,13 @@
 	farjump UnknownScript_0xa0a2d
 
 UnknownScript_0xbd0fa:
-	trainertotext SCHOOLBOY, 1, $0
+	trainertotext SCHOOLBOY, JACK1, $0
 	farscall UnknownScript_0xbe1b6
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd13b
 	checkflag ENGINE_JACK
 	iftrue UnknownScript_0xbd11e
-	checkflag ENGINE_87
+	checkflag ENGINE_JACK_MONDAY_MORNING
 	iftrue UnknownScript_0xbd11e
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd12d
@@ -328,7 +335,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd12a:
-	setflag ENGINE_87
+	setflag ENGINE_JACK_MONDAY_MORNING
 
 UnknownScript_0xbd12d:
 	displaylocation NATIONAL_PARK, $2
@@ -341,8 +348,10 @@
 UnknownScript_0xbd13b:
 	farjump UnknownScript_0xa0654
 
+; Beverly
+
 UnknownScript_0xbd13f:
-	trainertotext POKEFANF, 1, $0
+	trainertotext POKEFANF, BEVERLY1, $0
 	farscall UnknownScript_0xbe0b6
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue UnknownScript_0xbd151
@@ -353,7 +362,7 @@
 	farjump UnknownScript_0xa0aa5
 
 UnknownScript_0xbd158:
-	trainertotext POKEFANF, 1, $0
+	trainertotext POKEFANF, BEVERLY1, $0
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue UnknownScript_0xbd16e
@@ -368,15 +377,17 @@
 	displaylocation NATIONAL_PARK, $2
 	farjump UnknownScript_0xa061e
 
+; Huey
+
 UnknownScript_0xbd17c:
-	trainertotext SAILOR, 2, $0
+	trainertotext SAILOR, HUEY1, $0
 	checkflag ENGINE_HUEY
 	iftrue UnknownScript_0xbd1a2
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_88
+	checkflag ENGINE_HUEY_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbd19b
 	checkcode VAR_WEEKDAY
-	if_not_equal $3, UnknownScript_0xbd19b
+	if_not_equal WEDNESDAY, UnknownScript_0xbd19b
 	checknite
 	iftrue UnknownScript_0xbd1cd
 
@@ -389,11 +400,11 @@
 	farjump UnknownScript_0xa0a32
 
 UnknownScript_0xbd1a9:
-	trainertotext SAILOR, 2, $0
+	trainertotext SAILOR, HUEY1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_HUEY
 	iftrue UnknownScript_0xbd1c9
-	checkflag ENGINE_88
+	checkflag ENGINE_HUEY_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbd1c9
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbd1d0
@@ -403,7 +414,7 @@
 	farjump UnknownScript_0xbe622
 
 UnknownScript_0xbd1cd:
-	setflag ENGINE_88
+	setflag ENGINE_HUEY_WEDNESDAY_NIGHT
 
 UnknownScript_0xbd1d0:
 	displaylocation LIGHTHOUSE, $2
@@ -410,15 +421,17 @@
 	setflag ENGINE_HUEY
 	farjump UnknownScript_0xa0376
 
+; Gaven
+
 UnknownScript_0xbd1da:
-	trainertotext COOLTRAINERM, 10, $0
+	trainertotext COOLTRAINERM, GAVEN3, $0
 	checkflag ENGINE_GAVEN
 	iftrue UnknownScript_0xbd1fd
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_89
+	checkflag ENGINE_GAVEN_THURSDAY_MORNING
 	iftrue UnknownScript_0xbd1f9
 	checkcode VAR_WEEKDAY
-	if_not_equal $4, UnknownScript_0xbd1f9
+	if_not_equal THURSDAY, UnknownScript_0xbd1f9
 	checkmorn
 	iftrue UnknownScript_0xbd22c
 
@@ -430,11 +443,11 @@
 	farjump UnknownScript_0xa0a37
 
 UnknownScript_0xbd204:
-	trainertotext COOLTRAINERM, 10, $0
+	trainertotext COOLTRAINERM, GAVEN3, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_GAVEN
 	iftrue UnknownScript_0xbd220
-	checkflag ENGINE_89
+	checkflag ENGINE_GAVEN_THURSDAY_MORNING
 	iftrue UnknownScript_0xbd220
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd22f
@@ -445,7 +458,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd22c:
-	setflag ENGINE_89
+	setflag ENGINE_GAVEN_THURSDAY_MORNING
 
 UnknownScript_0xbd22f:
 	displaylocation ROUTE_26, $2
@@ -455,15 +468,17 @@
 UnknownScript_0xbd239:
 	farjump UnknownScript_0xa0584
 
+; Beth
+
 UnknownScript_0xbd23d:
-	trainertotext COOLTRAINERF, 9, $0
+	trainertotext COOLTRAINERF, BETH1, $0
 	checkflag ENGINE_BETH
 	iftrue UnknownScript_0xbd260
 	farscall UnknownScript_0xbe0b6
-	checkflag ENGINE_8A
+	checkflag ENGINE_BETH_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbd25c
 	checkcode VAR_WEEKDAY
-	if_not_equal $5, UnknownScript_0xbd25c
+	if_not_equal FRIDAY, UnknownScript_0xbd25c
 	checkday
 	iftrue UnknownScript_0xbd287
 
@@ -475,11 +490,11 @@
 	farjump UnknownScript_0xa0a3c
 
 UnknownScript_0xbd267:
-	trainertotext COOLTRAINERF, 9, $0
+	trainertotext COOLTRAINERF, BETH1, $0
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_BETH
 	iftrue UnknownScript_0xbd283
-	checkflag ENGINE_8A
+	checkflag ENGINE_BETH_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbd283
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd28a
@@ -488,7 +503,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xbd287:
-	setflag ENGINE_8A
+	setflag ENGINE_BETH_FRIDAY_AFTERNOON
 
 UnknownScript_0xbd28a:
 	displaylocation ROUTE_26, $2
@@ -495,17 +510,19 @@
 	setflag ENGINE_BETH
 	farjump UnknownScript_0xa037e
 
+; Jose
+
 UnknownScript_0xbd294:
-	trainertotext BIRD_KEEPER, 14, $0
+	trainertotext BIRD_KEEPER, JOSE2, $0
 	checkflag ENGINE_JOSE
 	iftrue UnknownScript_0xbd2bd
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_8B
+	checkflag ENGINE_JOSE_SATURDAY_NIGHT
 	iftrue UnknownScript_0xbd2b9
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
 	iftrue UnknownScript_0xbd2c4
 	checkcode VAR_WEEKDAY
-	if_not_equal $6, UnknownScript_0xbd2b9
+	if_not_equal SATURDAY, UnknownScript_0xbd2b9
 	checknite
 	iftrue UnknownScript_0xbd301
 
@@ -521,11 +538,11 @@
 	farjump UnknownScript_0xa0a41
 
 UnknownScript_0xbd2cb:
-	trainertotext BIRD_KEEPER, 14, $0
+	trainertotext BIRD_KEEPER, JOSE2, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_JOSE
 	iftrue UnknownScript_0xbd2f5
-	checkflag ENGINE_8B
+	checkflag ENGINE_JOSE_SATURDAY_NIGHT
 	iftrue UnknownScript_0xbd2f5
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
 	iftrue UnknownScript_0xbd2f5
@@ -540,7 +557,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd301:
-	setflag ENGINE_8B
+	setflag ENGINE_JOSE_SATURDAY_NIGHT
 
 UnknownScript_0xbd304:
 	displaylocation ROUTE_27, $2
@@ -555,15 +572,17 @@
 	displaylocation ROUTE_27, $2
 	farjump UnknownScript_0xa05e6
 
+; Reena
+
 UnknownScript_0xbd31c:
-	trainertotext COOLTRAINERF, 10, $0
+	trainertotext COOLTRAINERF, REENA1, $0
 	checkflag ENGINE_REENA
 	iftrue UnknownScript_0xbd33f
 	farscall UnknownScript_0xbe0b6
-	checkflag ENGINE_8C
+	checkflag ENGINE_REENA_SUNDAY_MORNING
 	iftrue UnknownScript_0xbd33b
 	checkcode VAR_WEEKDAY
-	if_not_equal $0, UnknownScript_0xbd33b
+	if_not_equal SUNDAY, UnknownScript_0xbd33b
 	checkmorn
 	iftrue UnknownScript_0xbd366
 
@@ -575,11 +594,11 @@
 	farjump UnknownScript_0xa0a46
 
 UnknownScript_0xbd346:
-	trainertotext COOLTRAINERF, 10, $0
+	trainertotext COOLTRAINERF, REENA1, $0
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_REENA
 	iftrue UnknownScript_0xbd362
-	checkflag ENGINE_8C
+	checkflag ENGINE_REENA_SUNDAY_MORNING
 	iftrue UnknownScript_0xbd362
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd369
@@ -588,7 +607,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xbd366:
-	setflag ENGINE_8C
+	setflag ENGINE_REENA_SUNDAY_MORNING
 
 UnknownScript_0xbd369:
 	displaylocation ROUTE_27, $2
@@ -595,15 +614,17 @@
 	setflag ENGINE_REENA
 	farjump UnknownScript_0xa037e
 
+; Joey
+
 UnknownScript_0xbd373:
-	trainertotext YOUNGSTER, 1, $0
+	trainertotext YOUNGSTER, JOEY1, $0
 	checkflag ENGINE_JOEY
 	iftrue UnknownScript_0xbd399
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_8D
+	checkflag ENGINE_JOEY_MONDAY_AFTERNOON
 	iftrue UnknownScript_0xbd392
 	checkcode VAR_WEEKDAY
-	if_not_equal $1, UnknownScript_0xbd392
+	if_not_equal MONDAY, UnknownScript_0xbd392
 	checkday
 	iftrue UnknownScript_0xbd3c4
 
@@ -616,11 +637,11 @@
 	farjump UnknownScript_0xa0a4b
 
 UnknownScript_0xbd3a0:
-	trainertotext YOUNGSTER, 1, $0
+	trainertotext YOUNGSTER, JOEY1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_JOEY
 	iftrue UnknownScript_0xbd3c0
-	checkflag ENGINE_8D
+	checkflag ENGINE_JOEY_MONDAY_AFTERNOON
 	iftrue UnknownScript_0xbd3c0
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbd3c7
@@ -630,7 +651,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd3c4:
-	setflag ENGINE_8D
+	setflag ENGINE_JOEY_MONDAY_AFTERNOON
 
 UnknownScript_0xbd3c7:
 	displaylocation ROUTE_30, $2
@@ -637,17 +658,19 @@
 	setflag ENGINE_JOEY
 	farjump UnknownScript_0xa0376
 
+; Wade
+
 UnknownScript_0xbd3d1:
-	trainertotext BUG_CATCHER, 4, $0
+	trainertotext BUG_CATCHER, WADE1, $0
 	checkflag ENGINE_WADE
 	iftrue UnknownScript_0xbd41a
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_8E
+	checkflag ENGINE_WADE_TUESDAY_NIGHT
 	iftrue UnknownScript_0xbd3f6
 	checkflag ENGINE_WADE_HAS_ITEM
 	iftrue UnknownScript_0xbd421
 	checkcode VAR_WEEKDAY
-	if_not_equal $2, UnknownScript_0xbd3f6
+	if_not_equal TUESDAY, UnknownScript_0xbd3f6
 	checknite
 	iftrue UnknownScript_0xbd484
 
@@ -654,12 +677,12 @@
 UnknownScript_0xbd3f6:
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd412
-	checkflag ENGINE_51
+	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbd412
 	checkcode VAR_WEEKDAY
-	if_equal $2, UnknownScript_0xbd416
-	if_equal $4, UnknownScript_0xbd416
-	if_equal $6, UnknownScript_0xbd416
+	if_equal TUESDAY, UnknownScript_0xbd416
+	if_equal THURSDAY, UnknownScript_0xbd416
+	if_equal SATURDAY, UnknownScript_0xbd416
 
 UnknownScript_0xbd412:
 	farjump UnknownScript_0xa0938
@@ -676,21 +699,21 @@
 	farjump UnknownScript_0xa0ab5
 
 UnknownScript_0xbd428:
-	trainertotext BUG_CATCHER, 4, $0
+	trainertotext BUG_CATCHER, WADE1, $0
 	farscall UnknownScript_0xbe1b6
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd44c
-	checkflag ENGINE_51
+	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbd44c
 	checkcode VAR_WEEKDAY
-	if_equal $2, UnknownScript_0xbd480
-	if_equal $4, UnknownScript_0xbd480
-	if_equal $6, UnknownScript_0xbd480
+	if_equal TUESDAY, UnknownScript_0xbd480
+	if_equal THURSDAY, UnknownScript_0xbd480
+	if_equal SATURDAY, UnknownScript_0xbd480
 
 UnknownScript_0xbd44c:
 	checkflag ENGINE_WADE
 	iftrue UnknownScript_0xbd474
-	checkflag ENGINE_8E
+	checkflag ENGINE_WADE_TUESDAY_NIGHT
 	iftrue UnknownScript_0xbd474
 	checkflag ENGINE_WADE_HAS_ITEM
 	iftrue UnknownScript_0xbd474
@@ -710,7 +733,7 @@
 	farjump UnknownScript_0xa05a4
 
 UnknownScript_0xbd484:
-	setflag ENGINE_8E
+	setflag ENGINE_WADE_TUESDAY_NIGHT
 
 UnknownScript_0xbd487:
 	displaylocation ROUTE_31, $2
@@ -751,15 +774,17 @@
 UnknownScript_0xbd4ce:
 	farjump UnknownScript_0xa05e6
 
+; Ralph
+
 UnknownScript_0xbd4d2:
-	trainertotext FISHER, 2, $0
+	trainertotext FISHER, RALPH1, $0
 	checkflag ENGINE_RALPH
 	iftrue UnknownScript_0xbd4fb
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_8F
+	checkflag ENGINE_RALPH_WEDNESDAY_MORNING
 	iftrue UnknownScript_0xbd4f1
 	checkcode VAR_WEEKDAY
-	if_not_equal $3, UnknownScript_0xbd4f1
+	if_not_equal WEDNESDAY, UnknownScript_0xbd4f1
 	checkmorn
 	iftrue UnknownScript_0xbd537
 
@@ -777,13 +802,13 @@
 	farjump UnknownScript_0xa0af5
 
 UnknownScript_0xbd509:
-	trainertotext FISHER, 2, $0
+	trainertotext FISHER, RALPH1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd52b
 	checkflag ENGINE_RALPH
 	iftrue UnknownScript_0xbd52b
-	checkflag ENGINE_8F
+	checkflag ENGINE_RALPH_WEDNESDAY_MORNING
 	iftrue UnknownScript_0xbd52b
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd53a
@@ -794,7 +819,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd537:
-	setflag ENGINE_8F
+	setflag ENGINE_RALPH_WEDNESDAY_MORNING
 
 UnknownScript_0xbd53a:
 	displaylocation ROUTE_32, $2
@@ -814,15 +839,17 @@
 UnknownScript_0xbd55c:
 	farjump UnknownScript_0xa0000
 
+; Liz
+
 UnknownScript_0xbd560:
-	trainertotext PICNICKER, 1, $0
+	trainertotext PICNICKER, LIZ1, $0
 	checkflag ENGINE_LIZ
 	iftrue UnknownScript_0xbd586
 	farscall UnknownScript_0xbe0b6
-	checkflag ENGINE_90
+	checkflag ENGINE_LIZ_THURSDAY_AFTERNOON
 	iftrue UnknownScript_0xbd57f
 	checkcode VAR_WEEKDAY
-	if_not_equal $4, UnknownScript_0xbd57f
+	if_not_equal THURSDAY, UnknownScript_0xbd57f
 	checkday
 	iftrue UnknownScript_0xbd5c3
 
@@ -835,13 +862,13 @@
 	farjump UnknownScript_0xa0a5a
 
 UnknownScript_0xbd58d:
-	trainertotext PICNICKER, 1, $0
+	trainertotext PICNICKER, LIZ1, $0
 	farscall UnknownScript_0xbde45
 	if_equal $0, UnknownScript_0xbd5d0
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_LIZ
 	iftrue UnknownScript_0xbd5a9
-	checkflag ENGINE_90
+	checkflag ENGINE_LIZ_THURSDAY_AFTERNOON
 	iftrue UnknownScript_0xbd5a9
 
 UnknownScript_0xbd5a9:
@@ -856,7 +883,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xbd5c3:
-	setflag ENGINE_90
+	setflag ENGINE_LIZ_THURSDAY_AFTERNOON
 
 UnknownScript_0xbd5c6:
 	displaylocation ROUTE_32, $2
@@ -879,53 +906,55 @@
 	if_equal $8, UnknownScript_0xbd62a
 
 UnknownScript_0xbd5fa:
-	trainerclassname $1b, $1
+	trainerclassname COOLTRAINERM, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd600:
-	trainerclassname $1d, $1
+	trainerclassname BEAUTY, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd606:
-	trainerclassname $1f, $1
+	trainerclassname GRUNTM, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd60c:
-	trainerclassname $22, $1
+	trainerclassname TEACHER, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd612:
-	trainerclassname $27, $1
+	trainerclassname SWIMMERF, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd618:
-	trainerclassname $3c, $1
+	trainerclassname KIMONO_GIRL, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd61e:
-	trainerclassname $21, $1
+	trainerclassname SKIER, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd624:
-	trainerclassname $39, $1
+	trainerclassname MEDIUM, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd62a:
-	trainerclassname $3b, $1
+	trainerclassname POKEFANM, $1
 	jump UnknownScript_0xbd630
 
 UnknownScript_0xbd630:
 	farjump UnknownScript_0xa06da
 
+; Anthony
+
 UnknownScript_0xbd634:
-	trainertotext HIKER, 5, $0
+	trainertotext HIKER, ANTHONY2, $0
 	checkflag ENGINE_ANTHONY
 	iftrue UnknownScript_0xbd65d
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_91
+	checkflag ENGINE_ANTHONY_FRIDAY_NIGHT
 	iftrue UnknownScript_0xbd653
 	checkcode VAR_WEEKDAY
-	if_not_equal $5, UnknownScript_0xbd653
+	if_not_equal FRIDAY, UnknownScript_0xbd653
 	checknite
 	iftrue UnknownScript_0xbd699
 
@@ -943,13 +972,13 @@
 	farjump UnknownScript_0xa0afa
 
 UnknownScript_0xbd66b:
-	trainertotext HIKER, 5, $0
+	trainertotext HIKER, ANTHONY2, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd68d
 	checkflag ENGINE_ANTHONY
 	iftrue UnknownScript_0xbd68d
-	checkflag ENGINE_91
+	checkflag ENGINE_ANTHONY_FRIDAY_NIGHT
 	iftrue UnknownScript_0xbd68d
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd69c
@@ -960,7 +989,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd699:
-	setflag ENGINE_91
+	setflag ENGINE_ANTHONY_FRIDAY_NIGHT
 
 UnknownScript_0xbd69c:
 	displaylocation ROUTE_33, $2
@@ -979,15 +1008,17 @@
 UnknownScript_0xbd6bd:
 	farjump UnknownScript_0xa0000
 
+; Todd
+
 UnknownScript_0xbd6c1:
-	trainertotext CAMPER, 2, $0
+	trainertotext CAMPER, TODD1, $0
 	checkflag ENGINE_TODD
 	iftrue UnknownScript_0xbd6ea
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_92
+	checkflag ENGINE_TODD_SATURDAY_MORNING
 	iftrue UnknownScript_0xbd6e0
 	checkcode VAR_WEEKDAY
-	if_not_equal $6, UnknownScript_0xbd6e0
+	if_not_equal SATURDAY, UnknownScript_0xbd6e0
 	checkmorn
 	iftrue UnknownScript_0xbd72b
 
@@ -1004,11 +1035,11 @@
 	farjump UnknownScript_0xa0b04
 
 UnknownScript_0xbd6f5:
-	trainertotext CAMPER, 2, $0
+	trainertotext CAMPER, TODD1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_TODD
 	iftrue UnknownScript_0xbd717
-	checkflag ENGINE_92
+	checkflag ENGINE_TODD_SATURDAY_MORNING
 	iftrue UnknownScript_0xbd717
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd71f
@@ -1025,7 +1056,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd72b:
-	setflag ENGINE_92
+	setflag ENGINE_TODD_SATURDAY_MORNING
 
 UnknownScript_0xbd72e:
 	displaylocation ROUTE_34, $2
@@ -1039,17 +1070,19 @@
 	setflag ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
 	farjump UnknownScript_0xa0644
 
+; Gina
+
 UnknownScript_0xbd743:
-	trainertotext PICNICKER, 2, $0
+	trainertotext PICNICKER, GINA1, $0
 	checkflag ENGINE_GINA
 	iftrue UnknownScript_0xbd776
 	farscall UnknownScript_0xbe0b6
-	checkflag ENGINE_93
+	checkflag ENGINE_GINA_SUNDAY_AFTERNOON
 	iftrue UnknownScript_0xbd768
 	checkflag ENGINE_GINA_HAS_LEAF_STONE
 	iftrue UnknownScript_0xbd77d
 	checkcode VAR_WEEKDAY
-	if_not_equal $0, UnknownScript_0xbd768
+	if_not_equal SUNDAY, UnknownScript_0xbd768
 	checkday
 	iftrue UnknownScript_0xbd7cc
 
@@ -1070,17 +1103,17 @@
 	farjump UnknownScript_0xa0abd
 
 UnknownScript_0xbd784:
-	trainertotext PICNICKER, 2, $0
+	trainertotext PICNICKER, GINA1, $0
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0xbd7d9
 	checkflag ENGINE_GINA
 	iftrue UnknownScript_0xbd7c8
-	checkflag ENGINE_93
+	checkflag ENGINE_GINA_SUNDAY_AFTERNOON
 	iftrue UnknownScript_0xbd7c8
 	checkflag ENGINE_GINA_HAS_LEAF_STONE
 	iftrue UnknownScript_0xbd7c8
-	checkevent EVENT_100
+	checkevent EVENT_GINA_GAVE_LEAF_STONE
 	iftrue UnknownScript_0xbd7b2
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd7dd
@@ -1097,7 +1130,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xbd7cc:
-	setflag ENGINE_93
+	setflag ENGINE_GINA_SUNDAY_AFTERNOON
 
 UnknownScript_0xbd7cf:
 	displaylocation ROUTE_34, $2
@@ -1112,8 +1145,10 @@
 	displaylocation ROUTE_34, $2
 	farjump UnknownScript_0xa061e
 
+; Irwin
+
 UnknownScript_0xbd7e7:
-	trainertotext JUGGLER, 1, $0
+	trainertotext JUGGLER, IRWIN1, $0
 	farscall UnknownScript_0xbde4e
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0xbd7f9
@@ -1123,7 +1158,7 @@
 	farjump UnknownScript_0xa05be
 
 UnknownScript_0xbd7fd:
-	trainertotext JUGGLER, 1, $0
+	trainertotext JUGGLER, IRWIN1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0xbd80f
@@ -1132,15 +1167,17 @@
 UnknownScript_0xbd80f:
 	farjump UnknownScript_0xa05be
 
+; Arnie
+
 UnknownScript_0xbd813:
-	trainertotext BUG_CATCHER, 8, $0
+	trainertotext BUG_CATCHER, ARNIE1, $0
 	checkflag ENGINE_ARNIE
 	iftrue UnknownScript_0xbd83c
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_94
+	checkflag ENGINE_ARNIE_TUESDAY_MORNING
 	iftrue UnknownScript_0xbd832
 	checkcode VAR_WEEKDAY
-	if_not_equal $2, UnknownScript_0xbd832
+	if_not_equal TUESDAY, UnknownScript_0xbd832
 	checkmorn
 	iftrue UnknownScript_0xbd87a
 
@@ -1158,11 +1195,11 @@
 	farjump UnknownScript_0xa0aff
 
 UnknownScript_0xbd84a:
-	trainertotext BUG_CATCHER, 8, $0
+	trainertotext BUG_CATCHER, ARNIE1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_ARNIE
 	iftrue UnknownScript_0xbd866
-	checkflag ENGINE_94
+	checkflag ENGINE_ARNIE_TUESDAY_MORNING
 	iftrue UnknownScript_0xbd866
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd87d
@@ -1175,7 +1212,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd87a:
-	setflag ENGINE_94
+	setflag ENGINE_ARNIE_TUESDAY_MORNING
 
 UnknownScript_0xbd87d:
 	displaylocation ROUTE_35, $2
@@ -1197,17 +1234,19 @@
 UnknownScript_0xbd8a2:
 	farjump UnknownScript_0xa0000
 
+; Alan
+
 UnknownScript_0xbd8a6:
-	trainertotext SCHOOLBOY, 3, $0
+	trainertotext SCHOOLBOY, ALAN1, $0
 	checkflag ENGINE_ALAN
 	iftrue UnknownScript_0xbd8cf
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_95
+	checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
 	iftrue UnknownScript_0xbd8cb
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
 	iftrue UnknownScript_0xbd8d6
 	checkcode VAR_WEEKDAY
-	if_not_equal $3, UnknownScript_0xbd8cb
+	if_not_equal WEDNESDAY, UnknownScript_0xbd8cb
 	checkday
 	iftrue UnknownScript_0xbd919
 
@@ -1223,17 +1262,17 @@
 	farjump UnknownScript_0xa0ac5
 
 UnknownScript_0xbd8dd:
-	trainertotext SCHOOLBOY, 3, $0
+	trainertotext SCHOOLBOY, ALAN1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_ALAN
 	iftrue UnknownScript_0xbd915
-	checkflag ENGINE_95
+	checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
 	iftrue UnknownScript_0xbd915
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
 	iftrue UnknownScript_0xbd915
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbd91c
-	checkevent EVENT_101
+	checkevent EVENT_ALAN_GAVE_FIRE_STONE
 	iftrue UnknownScript_0xbd90d
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd926
@@ -1246,7 +1285,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbd919:
-	setflag ENGINE_95
+	setflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
 
 UnknownScript_0xbd91c:
 	displaylocation ROUTE_36, $2
@@ -1258,17 +1297,19 @@
 	displaylocation ROUTE_36, $2
 	farjump UnknownScript_0xa05e6
 
+; Dana
+
 UnknownScript_0xbd930:
-	trainertotext LASS, 10, $0
+	trainertotext LASS, DANA1, $0
 	checkflag ENGINE_DANA
 	iftrue UnknownScript_0xbd959
 	farscall UnknownScript_0xbe0b6
-	checkflag ENGINE_96
+	checkflag ENGINE_DANA_THURSDAY_NIGHT
 	iftrue UnknownScript_0xbd955
-	checkflag ENGINE_LIZ_HAS_THUNDERSTONE
+	checkflag ENGINE_DANA_HAS_THUNDERSTONE
 	iftrue UnknownScript_0xbd960
 	checkcode VAR_WEEKDAY
-	if_not_equal $4, UnknownScript_0xbd955
+	if_not_equal THURSDAY, UnknownScript_0xbd955
 	checknite
 	iftrue UnknownScript_0xbd9ab
 
@@ -1284,17 +1325,17 @@
 	farjump UnknownScript_0xa0acd
 
 UnknownScript_0xbd967:
-	trainertotext LASS, 10, $0
+	trainertotext LASS, DANA1, $0
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_DANA
 	iftrue UnknownScript_0xbd99f
-	checkflag ENGINE_96
+	checkflag ENGINE_DANA_THURSDAY_NIGHT
 	iftrue UnknownScript_0xbd99f
-	checkflag ENGINE_LIZ_HAS_THUNDERSTONE
+	checkflag ENGINE_DANA_HAS_THUNDERSTONE
 	iftrue UnknownScript_0xbd99f
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbd9ae
-	checkevent EVENT_102
+	checkevent EVENT_DANA_GAVE_THUNDERSTONE
 	iftrue UnknownScript_0xbd997
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbd9bc
@@ -1309,7 +1350,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xbd9ab:
-	setflag ENGINE_96
+	setflag ENGINE_DANA_THURSDAY_NIGHT
 
 UnknownScript_0xbd9ae:
 	displaylocation ROUTE_38, $2
@@ -1320,19 +1361,21 @@
 	farjump UnknownScript_0xa0592
 
 UnknownScript_0xbd9bc:
-	setflag ENGINE_LIZ_HAS_THUNDERSTONE
+	setflag ENGINE_DANA_HAS_THUNDERSTONE
 	displaylocation ROUTE_38, $2
 	farjump UnknownScript_0xa061e
 
+; Chad
+
 UnknownScript_0xbd9c6:
-	trainertotext SCHOOLBOY, 10, $0
+	trainertotext SCHOOLBOY, CHAD1, $0
 	checkflag ENGINE_CHAD
 	iftrue UnknownScript_0xbd9e9
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_97
+	checkflag ENGINE_CHAD_FRIDAY_MORNING
 	iftrue UnknownScript_0xbd9e5
 	checkcode VAR_WEEKDAY
-	if_not_equal $5, UnknownScript_0xbd9e5
+	if_not_equal FRIDAY, UnknownScript_0xbd9e5
 	checkmorn
 	iftrue UnknownScript_0xbda20
 
@@ -1344,13 +1387,13 @@
 	farjump UnknownScript_0xa0a7d
 
 UnknownScript_0xbd9f0:
-	trainertotext SCHOOLBOY, 10, $0
+	trainertotext SCHOOLBOY, CHAD1, $0
 	farscall UnknownScript_0xbe1b6
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbda31
 	checkflag ENGINE_CHAD
 	iftrue UnknownScript_0xbda14
-	checkflag ENGINE_97
+	checkflag ENGINE_CHAD_FRIDAY_MORNING
 	iftrue UnknownScript_0xbda14
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbda23
@@ -1361,7 +1404,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbda20:
-	setflag ENGINE_97
+	setflag ENGINE_CHAD_FRIDAY_MORNING
 
 UnknownScript_0xbda23:
 	displaylocation ROUTE_38, $2
@@ -1375,18 +1418,18 @@
 	farjump UnknownScript_0xa0754
 
 UnknownScript_0xbda35:
-	trainertotext POKEFANM, 2, $0
+	trainertotext POKEFANM, DEREK1, $0
 	farscall UnknownScript_0xbde4e
 	checkflag ENGINE_DEREK_HAS_NUGGET
 	iftrue UnknownScript_0xbda67
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbda5f
-	checkflag ENGINE_51
+	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbda5f
 	checkcode VAR_WEEKDAY
-	if_equal $2, UnknownScript_0xbda63
-	if_equal $4, UnknownScript_0xbda63
-	if_equal $6, UnknownScript_0xbda63
+	if_equal TUESDAY, UnknownScript_0xbda63
+	if_equal THURSDAY, UnknownScript_0xbda63
+	if_equal SATURDAY, UnknownScript_0xbda63
 
 UnknownScript_0xbda5f:
 	farjump UnknownScript_0xa0988
@@ -1399,16 +1442,16 @@
 	farjump UnknownScript_0xa0ad5
 
 UnknownScript_0xbda6e:
-	trainertotext POKEFANM, 2, $0
+	trainertotext POKEFANM, DEREK1, $0
 	farscall UnknownScript_0xbe1b6
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbda92
-	checkflag ENGINE_51
+	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbda92
 	checkcode VAR_WEEKDAY
-	if_equal $2, UnknownScript_0xbda9e
-	if_equal $4, UnknownScript_0xbda9e
-	if_equal $6, UnknownScript_0xbda9e
+	if_equal TUESDAY, UnknownScript_0xbda9e
+	if_equal THURSDAY, UnknownScript_0xbda9e
+	if_equal SATURDAY, UnknownScript_0xbda9e
 
 UnknownScript_0xbda92:
 	farscall UnknownScript_0xbde45
@@ -1424,16 +1467,16 @@
 	farjump UnknownScript_0xa05e6
 
 UnknownScript_0xbdaac:
-	trainertotext FISHER, 7, $0
+	trainertotext FISHER, TULLY1, $0
 	checkflag ENGINE_TULLY
 	iftrue UnknownScript_0xbdad5
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_98
+	checkflag ENGINE_TULLY_SUNDAY_NIGHT
 	iftrue UnknownScript_0xbdad1
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
 	iftrue UnknownScript_0xbdadc
 	checkcode VAR_WEEKDAY
-	if_not_equal $0, UnknownScript_0xbdad1
+	if_not_equal SUNDAY, UnknownScript_0xbdad1
 	checknite
 	iftrue UnknownScript_0xbdb1f
 
@@ -1449,17 +1492,17 @@
 	farjump UnknownScript_0xa0add
 
 UnknownScript_0xbdae3:
-	trainertotext FISHER, 7, $0
+	trainertotext FISHER, TULLY1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_TULLY
 	iftrue UnknownScript_0xbdb1b
-	checkflag ENGINE_98
+	checkflag ENGINE_TULLY_SUNDAY_NIGHT
 	iftrue UnknownScript_0xbdb1b
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
 	iftrue UnknownScript_0xbdb1b
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbdb22
-	checkevent EVENT_103
+	checkevent EVENT_TULLY_GAVE_WATER_STONE
 	iftrue UnknownScript_0xbdb13
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbdb2c
@@ -1472,7 +1515,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbdb1f:
-	setflag ENGINE_98
+	setflag ENGINE_TULLY_SUNDAY_NIGHT
 
 UnknownScript_0xbdb22:
 	displaylocation ROUTE_42, $2
@@ -1485,14 +1528,14 @@
 	farjump UnknownScript_0xa05e6
 
 UnknownScript_0xbdb36:
-	trainertotext POKEMANIAC, 6, $0
+	trainertotext POKEMANIAC, BRENT1, $0
 	checkflag ENGINE_BRENT
 	iftrue UnknownScript_0xbdb59
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_99
+	checkflag ENGINE_BRENT_MONDAY_MORNING
 	iftrue UnknownScript_0xbdb55
 	checkcode VAR_WEEKDAY
-	if_not_equal $1, UnknownScript_0xbdb55
+	if_not_equal MONDAY, UnknownScript_0xbdb55
 	checkmorn
 	iftrue UnknownScript_0xbdb88
 
@@ -1504,13 +1547,13 @@
 	farjump UnknownScript_0xa0a87
 
 UnknownScript_0xbdb60:
-	trainertotext POKEMANIAC, 6, $0
+	trainertotext POKEMANIAC, BRENT1, $0
 	farscall UnknownScript_0xbe1b6
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbdb95
 	checkflag ENGINE_BRENT
 	iftrue UnknownScript_0xbdb84
-	checkflag ENGINE_99
+	checkflag ENGINE_BRENT_MONDAY_MORNING
 	iftrue UnknownScript_0xbdb84
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbdb8b
@@ -1519,7 +1562,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbdb88:
-	setflag ENGINE_99
+	setflag ENGINE_BRENT_MONDAY_MORNING
 
 UnknownScript_0xbdb8b:
 	displaylocation ROUTE_43, $2
@@ -1530,16 +1573,16 @@
 	farjump UnknownScript_0xa07ce
 
 UnknownScript_0xbdb99:
-	trainertotext PICNICKER, 20, $0
+	trainertotext PICNICKER, TIFFANY3, $0
 	checkflag ENGINE_TIFFANY
 	iftrue UnknownScript_0xbdbc2
 	farscall UnknownScript_0xbe0b6
-	checkflag ENGINE_9A
+	checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
 	iftrue UnknownScript_0xbdbbe
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
 	iftrue UnknownScript_0xbdbc9
 	checkcode VAR_WEEKDAY
-	if_not_equal $2, UnknownScript_0xbdbbe
+	if_not_equal TUESDAY, UnknownScript_0xbdbbe
 	checkday
 	iftrue UnknownScript_0xbdc14
 
@@ -1555,19 +1598,19 @@
 	farjump UnknownScript_0xa0ae5
 
 UnknownScript_0xbdbd0:
-	trainertotext PICNICKER, 20, $0
+	trainertotext PICNICKER, TIFFANY3, $0
 	farscall UnknownScript_0xbde45
 	if_equal $0, UnknownScript_0xbdc21
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_TIFFANY
 	iftrue UnknownScript_0xbdc10
-	checkflag ENGINE_9A
+	checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
 	iftrue UnknownScript_0xbdc10
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
 	iftrue UnknownScript_0xbdc10
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbdc17
-	checkevent EVENT_104
+	checkevent EVENT_TIFFANY_GAVE_PINK_BOW
 	iftrue UnknownScript_0xbdc08
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbdc69
@@ -1580,7 +1623,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xbdc14:
-	setflag ENGINE_9A
+	setflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
 
 UnknownScript_0xbdc17:
 	displaylocation ROUTE_43, $2
@@ -1628,15 +1671,17 @@
 	displaylocation ROUTE_43, $2
 	farjump UnknownScript_0xa061e
 
+; Vance
+
 UnknownScript_0xbdc73:
-	trainertotext BIRD_KEEPER, 7, $0
+	trainertotext BIRD_KEEPER, VANCE1, $0
 	checkflag ENGINE_VANCE
 	iftrue UnknownScript_0xbdc96
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_9B
+	checkflag ENGINE_VANCE_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbdc92
 	checkcode VAR_WEEKDAY
-	if_not_equal $3, UnknownScript_0xbdc92
+	if_not_equal WEDNESDAY, UnknownScript_0xbdc92
 	checknite
 	iftrue UnknownScript_0xbdcc1
 
@@ -1648,11 +1693,11 @@
 	farjump UnknownScript_0xa0a91
 
 UnknownScript_0xbdc9d:
-	trainertotext BIRD_KEEPER, 7, $0
+	trainertotext BIRD_KEEPER, VANCE1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_VANCE
 	iftrue UnknownScript_0xbdcbd
-	checkflag ENGINE_9B
+	checkflag ENGINE_VANCE_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbdcbd
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbdcc4
@@ -1662,7 +1707,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbdcc1:
-	setflag ENGINE_9B
+	setflag ENGINE_VANCE_WEDNESDAY_NIGHT
 
 UnknownScript_0xbdcc4:
 	displaylocation ROUTE_44, $2
@@ -1670,16 +1715,16 @@
 	farjump UnknownScript_0xa0376
 
 UnknownScript_0xbdcce:
-	trainertotext FISHER, 10, $0
+	trainertotext FISHER, WILTON1, $0
 	checkflag ENGINE_WILTON
 	iftrue UnknownScript_0xbdcf7
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_9C
+	checkflag ENGINE_WILTON_THRUSDAY_MORNING
 	iftrue UnknownScript_0xbdcf3
 	checkflag ENGINE_WILTON_HAS_ITEM
 	iftrue UnknownScript_0xbdcfe
 	checkcode VAR_WEEKDAY
-	if_not_equal $4, UnknownScript_0xbdcf3
+	if_not_equal THURSDAY, UnknownScript_0xbdcf3
 	checkmorn
 	iftrue UnknownScript_0xbdd33
 
@@ -1695,11 +1740,11 @@
 	farjump UnknownScript_0xa0aed
 
 UnknownScript_0xbdd05:
-	trainertotext FISHER, 10, $0
+	trainertotext FISHER, WILTON1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_WILTON
 	iftrue UnknownScript_0xbdd2f
-	checkflag ENGINE_9C
+	checkflag ENGINE_WILTON_THRUSDAY_MORNING
 	iftrue UnknownScript_0xbdd2f
 	checkflag ENGINE_WILTON_HAS_ITEM
 	iftrue UnknownScript_0xbdd2f
@@ -1712,7 +1757,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbdd33:
-	setflag ENGINE_9C
+	setflag ENGINE_WILTON_THRUSDAY_MORNING
 
 UnknownScript_0xbdd36:
 	displaylocation ROUTE_44, $2
@@ -1745,25 +1790,29 @@
 UnknownScript_0xbdd6d:
 	farjump UnknownScript_0xa05e6
 
+; Kenji
+
 UnknownScript_0xbdd71:
-	trainertotext BLACKBELT_T, 8, $0
+	trainertotext BLACKBELT_T, KENJI3, $0
 	farscall UnknownScript_0xbde4e
 	farjump UnknownScript_0xa09ee
 
 UnknownScript_0xbdd7d:
-	trainertotext BLACKBELT_T, 8, $0
+	trainertotext BLACKBELT_T, KENJI3, $0
 	farscall UnknownScript_0xbe1b6
 	farjump UnknownScript_0xa064c
 
+; Parry
+
 UnknownScript_0xbdd89:
-	trainertotext HIKER, 9, $0
+	trainertotext HIKER, PARRY1, $0
 	checkflag ENGINE_PARRY
 	iftrue UnknownScript_0xbddac
 	farscall UnknownScript_0xbde4e
-	checkflag ENGINE_9D
+	checkflag ENGINE_PARRY_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbdda8
 	checkcode VAR_WEEKDAY
-	if_not_equal $5, UnknownScript_0xbdda8
+	if_not_equal FRIDAY, UnknownScript_0xbdda8
 	checkday
 	iftrue UnknownScript_0xbddd7
 
@@ -1775,11 +1824,11 @@
 	farjump UnknownScript_0xa0a9b
 
 UnknownScript_0xbddb3:
-	trainertotext HIKER, 9, $0
+	trainertotext HIKER, PARRY1, $0
 	farscall UnknownScript_0xbe1b6
 	checkflag ENGINE_PARRY
 	iftrue UnknownScript_0xbddd3
-	checkflag ENGINE_9D
+	checkflag ENGINE_PARRY_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbddd3
 	farscall UnknownScript_0xbde3f
 	if_equal $0, UnknownScript_0xbddda
@@ -1789,7 +1838,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xbddd7:
-	setflag ENGINE_9D
+	setflag ENGINE_PARRY_FRIDAY_AFTERNOON
 
 UnknownScript_0xbddda:
 	displaylocation ROUTE_45, $2
@@ -1796,15 +1845,17 @@
 	setflag ENGINE_PARRY
 	farjump UnknownScript_0xa0376
 
+; Erin
+
 UnknownScript_0xbdde4:
-	trainertotext PICNICKER, 10, $0
+	trainertotext PICNICKER, ERIN1, $0
 	checkflag ENGINE_ERIN
 	iftrue UnknownScript_0xbde07
 	farscall UnknownScript_0xbe0b6
-	checkflag ENGINE_9E
+	checkflag ENGINE_ERIN_SATURDAY_NIGHT
 	iftrue UnknownScript_0xbde03
 	checkcode VAR_WEEKDAY
-	if_not_equal $6, UnknownScript_0xbde03
+	if_not_equal SATURDAY, UnknownScript_0xbde03
 	checknite
 	iftrue UnknownScript_0xbde32
 
@@ -1816,11 +1867,11 @@
 	farjump UnknownScript_0xa0aa0
 
 UnknownScript_0xbde0e:
-	trainertotext PICNICKER, 10, $0
+	trainertotext PICNICKER, ERIN1, $0
 	farscall UnknownScript_0xbe41e
 	checkflag ENGINE_ERIN
 	iftrue UnknownScript_0xbde2e
-	checkflag ENGINE_9E
+	checkflag ENGINE_ERIN_SATURDAY_NIGHT
 	iftrue UnknownScript_0xbde2e
 	farscall UnknownScript_0xbde42
 	if_equal $0, UnknownScript_0xbde35
@@ -1830,7 +1881,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xbde32:
-	setflag ENGINE_9E
+	setflag ENGINE_ERIN_SATURDAY_NIGHT
 
 UnknownScript_0xbde35:
 	displaylocation ROUTE_46, $2
@@ -1863,26 +1914,26 @@
 	checknite
 	iftrue UnknownScript_0xbdfec
 	checkcode VAR_CALLERID
-	if_equal $5, UnknownScript_0xbdeaa
-	if_equal $7, UnknownScript_0xbdeb0
-	if_equal $b, UnknownScript_0xbdeb6
-	if_equal $d, UnknownScript_0xbdebc
-	if_equal $f, UnknownScript_0xbdec2
-	if_equal $10, UnknownScript_0xbdec8
-	if_equal $11, UnknownScript_0xbdece
-	if_equal $13, UnknownScript_0xbded4
-	if_equal $14, UnknownScript_0xbdeda
-	if_equal $16, UnknownScript_0xbdee0
-	if_equal $17, UnknownScript_0xbdee6
-	if_equal $18, UnknownScript_0xbdeec
-	if_equal $1b, UnknownScript_0xbdef2
-	if_equal $1c, UnknownScript_0xbdef8
-	if_equal $1d, UnknownScript_0xbdefe
-	if_equal $1e, UnknownScript_0xbdf04
-	if_equal $20, UnknownScript_0xbdf0a
-	if_equal $21, UnknownScript_0xbdf10
-	if_equal $22, UnknownScript_0xbdf16
-	if_equal $23, UnknownScript_0xbdf1c
+	if_equal PHONE_SCHOOLBOY_JACK,       UnknownScript_0xbdeaa
+	if_equal PHONE_SAILOR_HUEY,          UnknownScript_0xbdeb0
+	if_equal PHONE_COOLTRAINERM_GAVEN,   UnknownScript_0xbdeb6
+	if_equal PHONE_BIRDKEEPER_JOSE,      UnknownScript_0xbdebc
+	if_equal PHONE_YOUNGSTER_JOEY,       UnknownScript_0xbdec2
+	if_equal PHONE_BUG_CATCHER_WADE,     UnknownScript_0xbdec8
+	if_equal PHONE_FISHER_RALPH,         UnknownScript_0xbdece
+	if_equal PHONE_HIKER_ANTHONY,        UnknownScript_0xbded4
+	if_equal PHONE_CAMPER_TODD,          UnknownScript_0xbdeda
+	if_equal PHONE_JUGGLER_IRWIN,        UnknownScript_0xbdee0
+	if_equal PHONE_BUG_CATCHER_ARNIE,    UnknownScript_0xbdee6
+	if_equal PHONE_SCHOOLBOY_ALAN,       UnknownScript_0xbdeec
+	if_equal PHONE_SCHOOLBOY_CHAD,       UnknownScript_0xbdef2
+	if_equal PHONE_POKEFANM_DEREK,       UnknownScript_0xbdef8
+	if_equal PHONE_FISHER_TULLY,         UnknownScript_0xbdefe
+	if_equal PHONE_POKEMANIAC_BRENT,     UnknownScript_0xbdf04
+	if_equal PHONE_BIRDKEEPER_VANCE,     UnknownScript_0xbdf0a
+	if_equal PHONE_FISHER_WILTON,        UnknownScript_0xbdf10
+	if_equal PHONE_BLACKBELT_KENJI,      UnknownScript_0xbdf16
+	if_equal PHONE_HIKER_PARRY,          UnknownScript_0xbdf1c
 
 UnknownScript_0xbdeaa:
 	farwritetext UnknownText_0x1b4dc5
@@ -1986,26 +2037,26 @@
 
 UnknownScript_0xbdf22:
 	checkcode VAR_CALLERID
-	if_equal $5, UnknownScript_0xbdf74
-	if_equal $7, UnknownScript_0xbdf7a
-	if_equal $b, UnknownScript_0xbdf80
-	if_equal $d, UnknownScript_0xbdf86
-	if_equal $f, UnknownScript_0xbdf8c
-	if_equal $10, UnknownScript_0xbdf92
-	if_equal $11, UnknownScript_0xbdf98
-	if_equal $13, UnknownScript_0xbdf9e
-	if_equal $14, UnknownScript_0xbdfa4
-	if_equal $16, UnknownScript_0xbdfaa
-	if_equal $17, UnknownScript_0xbdfb0
-	if_equal $18, UnknownScript_0xbdfb6
-	if_equal $1b, UnknownScript_0xbdfbc
-	if_equal $1c, UnknownScript_0xbdfc2
-	if_equal $1d, UnknownScript_0xbdfc8
-	if_equal $1e, UnknownScript_0xbdfce
-	if_equal $20, UnknownScript_0xbdfd4
-	if_equal $21, UnknownScript_0xbdfda
-	if_equal $22, UnknownScript_0xbdfe0
-	if_equal $23, UnknownScript_0xbdfe6
+	if_equal PHONE_SCHOOLBOY_JACK,       UnknownScript_0xbdf74
+	if_equal PHONE_SAILOR_HUEY,          UnknownScript_0xbdf7a
+	if_equal PHONE_COOLTRAINERM_GAVEN,   UnknownScript_0xbdf80
+	if_equal PHONE_BIRDKEEPER_JOSE,      UnknownScript_0xbdf86
+	if_equal PHONE_YOUNGSTER_JOEY,       UnknownScript_0xbdf8c
+	if_equal PHONE_BUG_CATCHER_WADE,     UnknownScript_0xbdf92
+	if_equal PHONE_FISHER_RALPH,         UnknownScript_0xbdf98
+	if_equal PHONE_HIKER_ANTHONY,        UnknownScript_0xbdf9e
+	if_equal PHONE_CAMPER_TODD,          UnknownScript_0xbdfa4
+	if_equal PHONE_JUGGLER_IRWIN,        UnknownScript_0xbdfaa
+	if_equal PHONE_BUG_CATCHER_ARNIE,    UnknownScript_0xbdfb0
+	if_equal PHONE_SCHOOLBOY_ALAN,       UnknownScript_0xbdfb6
+	if_equal PHONE_SCHOOLBOY_CHAD,       UnknownScript_0xbdfbc
+	if_equal PHONE_POKEFANM_DEREK,       UnknownScript_0xbdfc2
+	if_equal PHONE_FISHER_TULLY,         UnknownScript_0xbdfc8
+	if_equal PHONE_POKEMANIAC_BRENT,     UnknownScript_0xbdfce
+	if_equal PHONE_BIRDKEEPER_VANCE,     UnknownScript_0xbdfd4
+	if_equal PHONE_FISHER_WILTON,        UnknownScript_0xbdfda
+	if_equal PHONE_BLACKBELT_KENJI,      UnknownScript_0xbdfe0
+	if_equal PHONE_HIKER_PARRY,          UnknownScript_0xbdfe6
 
 UnknownScript_0xbdf74:
 	farwritetext UnknownText_0x1b4ded
@@ -2109,26 +2160,26 @@
 
 UnknownScript_0xbdfec:
 	checkcode VAR_CALLERID
-	if_equal $5, UnknownScript_0xbe03e
-	if_equal $7, UnknownScript_0xbe044
-	if_equal $b, UnknownScript_0xbe04a
-	if_equal $d, UnknownScript_0xbe050
-	if_equal $f, UnknownScript_0xbe056
-	if_equal $10, UnknownScript_0xbe05c
-	if_equal $11, UnknownScript_0xbe062
-	if_equal $13, UnknownScript_0xbe068
-	if_equal $14, UnknownScript_0xbe06e
-	if_equal $16, UnknownScript_0xbe074
-	if_equal $17, UnknownScript_0xbe07a
-	if_equal $18, UnknownScript_0xbe080
-	if_equal $1b, UnknownScript_0xbe086
-	if_equal $1c, UnknownScript_0xbe08c
-	if_equal $1d, UnknownScript_0xbe092
-	if_equal $1e, UnknownScript_0xbe098
-	if_equal $20, UnknownScript_0xbe09e
-	if_equal $21, UnknownScript_0xbe0a4
-	if_equal $22, UnknownScript_0xbe0aa
-	if_equal $23, UnknownScript_0xbe0b0
+	if_equal PHONE_SCHOOLBOY_JACK,       UnknownScript_0xbe03e
+	if_equal PHONE_SAILOR_HUEY,          UnknownScript_0xbe044
+	if_equal PHONE_COOLTRAINERM_GAVEN,   UnknownScript_0xbe04a
+	if_equal PHONE_BIRDKEEPER_JOSE,      UnknownScript_0xbe050
+	if_equal PHONE_YOUNGSTER_JOEY,       UnknownScript_0xbe056
+	if_equal PHONE_BUG_CATCHER_WADE,     UnknownScript_0xbe05c
+	if_equal PHONE_FISHER_RALPH,         UnknownScript_0xbe062
+	if_equal PHONE_HIKER_ANTHONY,        UnknownScript_0xbe068
+	if_equal PHONE_CAMPER_TODD,          UnknownScript_0xbe06e
+	if_equal PHONE_JUGGLER_IRWIN,        UnknownScript_0xbe074
+	if_equal PHONE_BUG_CATCHER_ARNIE,    UnknownScript_0xbe07a
+	if_equal PHONE_SCHOOLBOY_ALAN,       UnknownScript_0xbe080
+	if_equal PHONE_SCHOOLBOY_CHAD,       UnknownScript_0xbe086
+	if_equal PHONE_POKEFANM_DEREK,       UnknownScript_0xbe08c
+	if_equal PHONE_FISHER_TULLY,         UnknownScript_0xbe092
+	if_equal PHONE_POKEMANIAC_BRENT,     UnknownScript_0xbe098
+	if_equal PHONE_BIRDKEEPER_VANCE,     UnknownScript_0xbe09e
+	if_equal PHONE_FISHER_WILTON,        UnknownScript_0xbe0a4
+	if_equal PHONE_BLACKBELT_KENJI,      UnknownScript_0xbe0aa
+	if_equal PHONE_HIKER_PARRY,          UnknownScript_0xbe0b0
 
 UnknownScript_0xbe03e:
 	farwritetext UnknownText_0x1b4e16
@@ -2236,14 +2287,14 @@
 	checknite
 	iftrue UnknownScript_0xbe164
 	checkcode VAR_CALLERID
-	if_equal $6, UnknownScript_0xbe0e2
-	if_equal $c, UnknownScript_0xbe0e8
-	if_equal $e, UnknownScript_0xbe0ee
-	if_equal $12, UnknownScript_0xbe0f4
-	if_equal $15, UnknownScript_0xbe0fa
-	if_equal $1a, UnknownScript_0xbe100
-	if_equal $1f, UnknownScript_0xbe106
-	if_equal $24, UnknownScript_0xbe10c
+	if_equal PHONE_POKEFAN_BEVERLY,       UnknownScript_0xbe0e2
+	if_equal PHONE_COOLTRAINERF_BETH,     UnknownScript_0xbe0e8
+	if_equal PHONE_COOLTRAINERF_REENA,    UnknownScript_0xbe0ee
+	if_equal PHONE_PICNICKER_LIZ,         UnknownScript_0xbe0f4
+	if_equal PHONE_PICNICKER_GINA,        UnknownScript_0xbe0fa
+	if_equal PHONE_LASS_DANA,             UnknownScript_0xbe100
+	if_equal PHONE_PICNICKER_TIFFANY,     UnknownScript_0xbe106
+	if_equal PHONE_PICNICKER_ERIN,        UnknownScript_0xbe10c
 
 UnknownScript_0xbe0e2:
 	farwritetext UnknownText_0x1b4f21
@@ -2287,14 +2338,14 @@
 
 UnknownScript_0xbe112:
 	checkcode VAR_CALLERID
-	if_equal $6, UnknownScript_0xbe134
-	if_equal $c, UnknownScript_0xbe13a
-	if_equal $e, UnknownScript_0xbe140
-	if_equal $12, UnknownScript_0xbe146
-	if_equal $15, UnknownScript_0xbe14c
-	if_equal $1a, UnknownScript_0xbe152
-	if_equal $1f, UnknownScript_0xbe158
-	if_equal $24, UnknownScript_0xbe15e
+	if_equal PHONE_POKEFAN_BEVERLY,       UnknownScript_0xbe134
+	if_equal PHONE_COOLTRAINERF_BETH,     UnknownScript_0xbe13a
+	if_equal PHONE_COOLTRAINERF_REENA,    UnknownScript_0xbe140
+	if_equal PHONE_PICNICKER_LIZ,         UnknownScript_0xbe146
+	if_equal PHONE_PICNICKER_GINA,        UnknownScript_0xbe14c
+	if_equal PHONE_LASS_DANA,             UnknownScript_0xbe152
+	if_equal PHONE_PICNICKER_TIFFANY,     UnknownScript_0xbe158
+	if_equal PHONE_PICNICKER_ERIN,        UnknownScript_0xbe15e
 
 UnknownScript_0xbe134:
 	farwritetext UnknownText_0x1b4f4d
@@ -2338,14 +2389,14 @@
 
 UnknownScript_0xbe164:
 	checkcode VAR_CALLERID
-	if_equal $6, UnknownScript_0xbe186
-	if_equal $c, UnknownScript_0xbe18c
-	if_equal $e, UnknownScript_0xbe192
-	if_equal $12, UnknownScript_0xbe198
-	if_equal $15, UnknownScript_0xbe19e
-	if_equal $1a, UnknownScript_0xbe1a4
-	if_equal $1f, UnknownScript_0xbe1aa
-	if_equal $24, UnknownScript_0xbe1b0
+	if_equal PHONE_POKEFAN_BEVERLY,       UnknownScript_0xbe186
+	if_equal PHONE_COOLTRAINERF_BETH,     UnknownScript_0xbe18c
+	if_equal PHONE_COOLTRAINERF_REENA,    UnknownScript_0xbe192
+	if_equal PHONE_PICNICKER_LIZ,         UnknownScript_0xbe198
+	if_equal PHONE_PICNICKER_GINA,        UnknownScript_0xbe19e
+	if_equal PHONE_LASS_DANA,             UnknownScript_0xbe1a4
+	if_equal PHONE_PICNICKER_TIFFANY,     UnknownScript_0xbe1aa
+	if_equal PHONE_PICNICKER_ERIN,        UnknownScript_0xbe1b0
 
 UnknownScript_0xbe186:
 	farwritetext UnknownText_0x1b4f75
@@ -2393,26 +2444,26 @@
 	checknite
 	iftrue UnknownScript_0xbe354
 	checkcode VAR_CALLERID
-	if_equal $5, UnknownScript_0xbe212
-	if_equal $7, UnknownScript_0xbe218
-	if_equal $b, UnknownScript_0xbe21e
-	if_equal $d, UnknownScript_0xbe224
-	if_equal $f, UnknownScript_0xbe22a
-	if_equal $10, UnknownScript_0xbe230
-	if_equal $11, UnknownScript_0xbe236
-	if_equal $13, UnknownScript_0xbe23c
-	if_equal $14, UnknownScript_0xbe242
-	if_equal $16, UnknownScript_0xbe248
-	if_equal $17, UnknownScript_0xbe24e
-	if_equal $18, UnknownScript_0xbe254
-	if_equal $1b, UnknownScript_0xbe25a
-	if_equal $1c, UnknownScript_0xbe260
-	if_equal $1d, UnknownScript_0xbe266
-	if_equal $1e, UnknownScript_0xbe26c
-	if_equal $20, UnknownScript_0xbe272
-	if_equal $21, UnknownScript_0xbe278
-	if_equal $22, UnknownScript_0xbe27e
-	if_equal $23, UnknownScript_0xbe284
+	if_equal PHONE_SCHOOLBOY_JACK,       UnknownScript_0xbe212
+	if_equal PHONE_SAILOR_HUEY,          UnknownScript_0xbe218
+	if_equal PHONE_COOLTRAINERM_GAVEN,   UnknownScript_0xbe21e
+	if_equal PHONE_BIRDKEEPER_JOSE,      UnknownScript_0xbe224
+	if_equal PHONE_YOUNGSTER_JOEY,       UnknownScript_0xbe22a
+	if_equal PHONE_BUG_CATCHER_WADE,     UnknownScript_0xbe230
+	if_equal PHONE_FISHER_RALPH,         UnknownScript_0xbe236
+	if_equal PHONE_HIKER_ANTHONY,        UnknownScript_0xbe23c
+	if_equal PHONE_CAMPER_TODD,          UnknownScript_0xbe242
+	if_equal PHONE_JUGGLER_IRWIN,        UnknownScript_0xbe248
+	if_equal PHONE_BUG_CATCHER_ARNIE,    UnknownScript_0xbe24e
+	if_equal PHONE_SCHOOLBOY_ALAN,       UnknownScript_0xbe254
+	if_equal PHONE_SCHOOLBOY_CHAD,       UnknownScript_0xbe25a
+	if_equal PHONE_POKEFANM_DEREK,       UnknownScript_0xbe260
+	if_equal PHONE_FISHER_TULLY,         UnknownScript_0xbe266
+	if_equal PHONE_POKEMANIAC_BRENT,     UnknownScript_0xbe26c
+	if_equal PHONE_BIRDKEEPER_VANCE,     UnknownScript_0xbe272
+	if_equal PHONE_FISHER_WILTON,        UnknownScript_0xbe278
+	if_equal PHONE_BLACKBELT_KENJI,      UnknownScript_0xbe27e
+	if_equal PHONE_HIKER_PARRY,          UnknownScript_0xbe284
 
 UnknownScript_0xbe212:
 	farwritetext UnknownText_0x1b4e3e
@@ -2516,26 +2567,26 @@
 
 UnknownScript_0xbe28a:
 	checkcode VAR_CALLERID
-	if_equal $5, UnknownScript_0xbe2dc
-	if_equal $7, UnknownScript_0xbe2e2
-	if_equal $b, UnknownScript_0xbe2e8
-	if_equal $d, UnknownScript_0xbe2ee
-	if_equal $f, UnknownScript_0xbe2f4
-	if_equal $10, UnknownScript_0xbe2fa
-	if_equal $11, UnknownScript_0xbe300
-	if_equal $13, UnknownScript_0xbe306
-	if_equal $14, UnknownScript_0xbe30c
-	if_equal $16, UnknownScript_0xbe312
-	if_equal $17, UnknownScript_0xbe318
-	if_equal $18, UnknownScript_0xbe31e
-	if_equal $1b, UnknownScript_0xbe324
-	if_equal $1c, UnknownScript_0xbe32a
-	if_equal $1d, UnknownScript_0xbe330
-	if_equal $1e, UnknownScript_0xbe336
-	if_equal $20, UnknownScript_0xbe33c
-	if_equal $21, UnknownScript_0xbe342
-	if_equal $22, UnknownScript_0xbe348
-	if_equal $23, UnknownScript_0xbe34e
+	if_equal PHONE_SCHOOLBOY_JACK,       UnknownScript_0xbe2dc
+	if_equal PHONE_SAILOR_HUEY,          UnknownScript_0xbe2e2
+	if_equal PHONE_COOLTRAINERM_GAVEN,   UnknownScript_0xbe2e8
+	if_equal PHONE_BIRDKEEPER_JOSE,      UnknownScript_0xbe2ee
+	if_equal PHONE_YOUNGSTER_JOEY,       UnknownScript_0xbe2f4
+	if_equal PHONE_BUG_CATCHER_WADE,     UnknownScript_0xbe2fa
+	if_equal PHONE_FISHER_RALPH,         UnknownScript_0xbe300
+	if_equal PHONE_HIKER_ANTHONY,        UnknownScript_0xbe306
+	if_equal PHONE_CAMPER_TODD,          UnknownScript_0xbe30c
+	if_equal PHONE_JUGGLER_IRWIN,        UnknownScript_0xbe312
+	if_equal PHONE_BUG_CATCHER_ARNIE,    UnknownScript_0xbe318
+	if_equal PHONE_SCHOOLBOY_ALAN,       UnknownScript_0xbe31e
+	if_equal PHONE_SCHOOLBOY_CHAD,       UnknownScript_0xbe324
+	if_equal PHONE_POKEFANM_DEREK,       UnknownScript_0xbe32a
+	if_equal PHONE_FISHER_TULLY,         UnknownScript_0xbe330
+	if_equal PHONE_POKEMANIAC_BRENT,     UnknownScript_0xbe336
+	if_equal PHONE_BIRDKEEPER_VANCE,     UnknownScript_0xbe33c
+	if_equal PHONE_FISHER_WILTON,        UnknownScript_0xbe342
+	if_equal PHONE_BLACKBELT_KENJI,      UnknownScript_0xbe348
+	if_equal PHONE_HIKER_PARRY,          UnknownScript_0xbe34e
 
 UnknownScript_0xbe2dc:
 	farwritetext UnknownText_0x1b4e72
@@ -2639,26 +2690,26 @@
 
 UnknownScript_0xbe354:
 	checkcode VAR_CALLERID
-	if_equal $5, UnknownScript_0xbe3a6
-	if_equal $7, UnknownScript_0xbe3ac
-	if_equal $b, UnknownScript_0xbe3b2
-	if_equal $d, UnknownScript_0xbe3b8
-	if_equal $f, UnknownScript_0xbe3be
-	if_equal $10, UnknownScript_0xbe3c4
-	if_equal $11, UnknownScript_0xbe3ca
-	if_equal $13, UnknownScript_0xbe3d0
-	if_equal $14, UnknownScript_0xbe3d6
-	if_equal $16, UnknownScript_0xbe3dc
-	if_equal $17, UnknownScript_0xbe3e2
-	if_equal $18, UnknownScript_0xbe3e8
-	if_equal $1b, UnknownScript_0xbe3ee
-	if_equal $1c, UnknownScript_0xbe3f4
-	if_equal $1d, UnknownScript_0xbe3fa
-	if_equal $1e, UnknownScript_0xbe400
-	if_equal $20, UnknownScript_0xbe406
-	if_equal $21, UnknownScript_0xbe40c
-	if_equal $22, UnknownScript_0xbe412
-	if_equal $23, UnknownScript_0xbe418
+	if_equal PHONE_SCHOOLBOY_JACK,       UnknownScript_0xbe3a6
+	if_equal PHONE_SAILOR_HUEY,          UnknownScript_0xbe3ac
+	if_equal PHONE_COOLTRAINERM_GAVEN,   UnknownScript_0xbe3b2
+	if_equal PHONE_BIRDKEEPER_JOSE,      UnknownScript_0xbe3b8
+	if_equal PHONE_YOUNGSTER_JOEY,       UnknownScript_0xbe3be
+	if_equal PHONE_BUG_CATCHER_WADE,     UnknownScript_0xbe3c4
+	if_equal PHONE_FISHER_RALPH,         UnknownScript_0xbe3ca
+	if_equal PHONE_HIKER_ANTHONY,        UnknownScript_0xbe3d0
+	if_equal PHONE_CAMPER_TODD,          UnknownScript_0xbe3d6
+	if_equal PHONE_JUGGLER_IRWIN,        UnknownScript_0xbe3dc
+	if_equal PHONE_BUG_CATCHER_ARNIE,    UnknownScript_0xbe3e2
+	if_equal PHONE_SCHOOLBOY_ALAN,       UnknownScript_0xbe3e8
+	if_equal PHONE_SCHOOLBOY_CHAD,       UnknownScript_0xbe3ee
+	if_equal PHONE_POKEFANM_DEREK,       UnknownScript_0xbe3f4
+	if_equal PHONE_FISHER_TULLY,         UnknownScript_0xbe3fa
+	if_equal PHONE_POKEMANIAC_BRENT,     UnknownScript_0xbe400
+	if_equal PHONE_BIRDKEEPER_VANCE,     UnknownScript_0xbe406
+	if_equal PHONE_FISHER_WILTON,        UnknownScript_0xbe40c
+	if_equal PHONE_BLACKBELT_KENJI,      UnknownScript_0xbe412
+	if_equal PHONE_HIKER_PARRY,          UnknownScript_0xbe418
 
 UnknownScript_0xbe3a6:
 	farwritetext UnknownText_0x1b4e9e
@@ -2766,14 +2817,14 @@
 	checknite
 	iftrue UnknownScript_0xbe4cc
 	checkcode VAR_CALLERID
-	if_equal $6, UnknownScript_0xbe44a
-	if_equal $c, UnknownScript_0xbe450
-	if_equal $e, UnknownScript_0xbe456
-	if_equal $12, UnknownScript_0xbe45c
-	if_equal $15, UnknownScript_0xbe462
-	if_equal $1a, UnknownScript_0xbe468
-	if_equal $1f, UnknownScript_0xbe46e
-	if_equal $24, UnknownScript_0xbe474
+	if_equal PHONE_POKEFAN_BEVERLY,       UnknownScript_0xbe44a
+	if_equal PHONE_COOLTRAINERF_BETH,     UnknownScript_0xbe450
+	if_equal PHONE_COOLTRAINERF_REENA,    UnknownScript_0xbe456
+	if_equal PHONE_PICNICKER_LIZ,         UnknownScript_0xbe45c
+	if_equal PHONE_PICNICKER_GINA,        UnknownScript_0xbe462
+	if_equal PHONE_LASS_DANA,             UnknownScript_0xbe468
+	if_equal PHONE_PICNICKER_TIFFANY,     UnknownScript_0xbe46e
+	if_equal PHONE_PICNICKER_ERIN,        UnknownScript_0xbe474
 
 UnknownScript_0xbe44a:
 	farwritetext UnknownText_0x1b4fa1
@@ -2817,14 +2868,14 @@
 
 UnknownScript_0xbe47a:
 	checkcode VAR_CALLERID
-	if_equal $6, UnknownScript_0xbe49c
-	if_equal $c, UnknownScript_0xbe4a2
-	if_equal $e, UnknownScript_0xbe4a8
-	if_equal $12, UnknownScript_0xbe4ae
-	if_equal $15, UnknownScript_0xbe4b4
-	if_equal $1a, UnknownScript_0xbe4ba
-	if_equal $1f, UnknownScript_0xbe4c0
-	if_equal $24, UnknownScript_0xbe4c6
+	if_equal PHONE_POKEFAN_BEVERLY,       UnknownScript_0xbe49c
+	if_equal PHONE_COOLTRAINERF_BETH,     UnknownScript_0xbe4a2
+	if_equal PHONE_COOLTRAINERF_REENA,    UnknownScript_0xbe4a8
+	if_equal PHONE_PICNICKER_LIZ,         UnknownScript_0xbe4ae
+	if_equal PHONE_PICNICKER_GINA,        UnknownScript_0xbe4b4
+	if_equal PHONE_LASS_DANA,             UnknownScript_0xbe4ba
+	if_equal PHONE_PICNICKER_TIFFANY,     UnknownScript_0xbe4c0
+	if_equal PHONE_PICNICKER_ERIN,        UnknownScript_0xbe4c6
 
 UnknownScript_0xbe49c:
 	farwritetext UnknownText_0x1b4fda
@@ -2868,14 +2919,14 @@
 
 UnknownScript_0xbe4cc:
 	checkcode VAR_CALLERID
-	if_equal $6, UnknownScript_0xbe4ee
-	if_equal $c, UnknownScript_0xbe4f4
-	if_equal $e, UnknownScript_0xbe4fa
-	if_equal $12, UnknownScript_0xbe500
-	if_equal $15, UnknownScript_0xbe506
-	if_equal $1a, UnknownScript_0xbe50c
-	if_equal $1f, UnknownScript_0xbe512
-	if_equal $24, UnknownScript_0xbe518
+	if_equal PHONE_POKEFAN_BEVERLY,       UnknownScript_0xbe4ee
+	if_equal PHONE_COOLTRAINERF_BETH,     UnknownScript_0xbe4f4
+	if_equal PHONE_COOLTRAINERF_REENA,    UnknownScript_0xbe4fa
+	if_equal PHONE_PICNICKER_LIZ,         UnknownScript_0xbe500
+	if_equal PHONE_PICNICKER_GINA,        UnknownScript_0xbe506
+	if_equal PHONE_LASS_DANA,             UnknownScript_0xbe50c
+	if_equal PHONE_PICNICKER_TIFFANY,     UnknownScript_0xbe512
+	if_equal PHONE_PICNICKER_ERIN,        UnknownScript_0xbe518
 
 UnknownScript_0xbe4ee:
 	farwritetext UnknownText_0x1b5004
@@ -2919,23 +2970,23 @@
 
 UnknownScript_0xbe51e:
 	checkcode VAR_CALLERID
-	if_equal $5, UnknownScript_0xbe564
-	if_equal $b, UnknownScript_0xbe570
-	if_equal $d, UnknownScript_0xbe576
-	if_equal $f, UnknownScript_0xbe57c
-	if_equal $10, UnknownScript_0xbe582
-	if_equal $11, UnknownScript_0xbe588
-	if_equal $13, UnknownScript_0xbe58e
-	if_equal $14, UnknownScript_0xbe594
-	if_equal $17, UnknownScript_0xbe59a
-	if_equal $18, UnknownScript_0xbe5a0
-	if_equal $1b, UnknownScript_0xbe5a6
-	if_equal $1c, UnknownScript_0xbe5ac
-	if_equal $1d, UnknownScript_0xbe5b2
-	if_equal $1e, UnknownScript_0xbe5b8
-	if_equal $20, UnknownScript_0xbe5be
-	if_equal $21, UnknownScript_0xbe5c4
-	if_equal $23, UnknownScript_0xbe5ca
+	if_equal PHONE_SCHOOLBOY_JACK,       UnknownScript_0xbe564
+	if_equal PHONE_COOLTRAINERM_GAVEN,   UnknownScript_0xbe570
+	if_equal PHONE_BIRDKEEPER_JOSE,      UnknownScript_0xbe576
+	if_equal PHONE_YOUNGSTER_JOEY,       UnknownScript_0xbe57c
+	if_equal PHONE_BUG_CATCHER_WADE,     UnknownScript_0xbe582
+	if_equal PHONE_FISHER_RALPH,         UnknownScript_0xbe588
+	if_equal PHONE_HIKER_ANTHONY,        UnknownScript_0xbe58e
+	if_equal PHONE_CAMPER_TODD,          UnknownScript_0xbe594
+	if_equal PHONE_BUG_CATCHER_ARNIE,    UnknownScript_0xbe59a
+	if_equal PHONE_SCHOOLBOY_ALAN,       UnknownScript_0xbe5a0
+	if_equal PHONE_SCHOOLBOY_CHAD,       UnknownScript_0xbe5a6
+	if_equal PHONE_POKEFANM_DEREK,       UnknownScript_0xbe5ac
+	if_equal PHONE_FISHER_TULLY,         UnknownScript_0xbe5b2
+	if_equal PHONE_POKEMANIAC_BRENT,     UnknownScript_0xbe5b8
+	if_equal PHONE_BIRDKEEPER_VANCE,     UnknownScript_0xbe5be
+	if_equal PHONE_FISHER_WILTON,        UnknownScript_0xbe5c4
+	if_equal PHONE_HIKER_PARRY,          UnknownScript_0xbe5ca
 
 UnknownScript_0xbe564:
 	farwritetext UnknownText_0x1b4ecd
@@ -3029,14 +3080,14 @@
 
 UnknownScript_0xbe5d0:
 	checkcode VAR_CALLERID
-	if_equal $6, UnknownScript_0xbe5f2
-	if_equal $c, UnknownScript_0xbe5f8
-	if_equal $e, UnknownScript_0xbe5fe
-	if_equal $12, UnknownScript_0xbe604
-	if_equal $15, UnknownScript_0xbe60a
-	if_equal $1a, UnknownScript_0xbe610
-	if_equal $1f, UnknownScript_0xbe616
-	if_equal $24, UnknownScript_0xbe61c
+	if_equal PHONE_POKEFAN_BEVERLY,       UnknownScript_0xbe5f2
+	if_equal PHONE_COOLTRAINERF_BETH,     UnknownScript_0xbe5f8
+	if_equal PHONE_COOLTRAINERF_REENA,    UnknownScript_0xbe5fe
+	if_equal PHONE_PICNICKER_LIZ,         UnknownScript_0xbe604
+	if_equal PHONE_PICNICKER_GINA,        UnknownScript_0xbe60a
+	if_equal PHONE_LASS_DANA,             UnknownScript_0xbe610
+	if_equal PHONE_PICNICKER_TIFFANY,     UnknownScript_0xbe616
+	if_equal PHONE_PICNICKER_ERIN,        UnknownScript_0xbe61c
 
 UnknownScript_0xbe5f2:
 	farwritetext UnknownText_0x1b502b
@@ -3104,27 +3155,27 @@
 String_be662: db "Brother@"
 
 
-UnknownScript_0xbe66a:: ; 0xbe66a
+TalkToTrainerScript:: ; 0xbe66a
 	faceplayer
 	trainerstatus $2
-	iftrue UnknownScript_0xbe698
+	iftrue AlreadyBeatenTrainerScript
 	loadtrainerdata
 	playrammusic
-	jump UnknownScript_0xbe68a
+	jump StartBattleWithMapTrainerScript
 ; 0xbe675
 
-UnknownScript_0xbe675:: ; 0xbe675
+SeenByTrainerScript:: ; 0xbe675
 	loadtrainerdata
 	playrammusic
-	showemote $0, $fe, 30
+	showemote EMOTE_SHOCK, -2, 30
 	callasm Function831e
 	applymovement2 MovementBuffer
-	writepersonxy $fe
-	faceperson $0, $fe
-	jump UnknownScript_0xbe68a
+	writepersonxy -2
+	faceperson $0, -2
+	jump StartBattleWithMapTrainerScript
 ; 0xbe68a
 
-UnknownScript_0xbe68a: ; 0xbe68a
+StartBattleWithMapTrainerScript: ; 0xbe68a
 	loadfont
 	trainertext $0
 	closetext
@@ -3132,9 +3183,9 @@
 	loadtrainerdata
 	startbattle
 	returnafterbattle
-	trainerstatus $1
-	loadvar wd04d, $ff
+	trainerstatus 1
+	loadvar wd04d, -1
 
-UnknownScript_0xbe698:
+AlreadyBeatenTrainerScript:
 	scripttalkafter
 ; 0xbe699
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -899,10 +899,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_40a3e + 2
+rept 4
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1339,10 +1338,9 @@
 	jr z, .asm_40a39
 	push af
 	ld hl, Unknown_40a3e
+rept 4
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1883,15 +1881,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Strings_40fe4
+rept 9
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld e, l
 	ld d, h
 	pop hl
@@ -2406,8 +2398,9 @@
 Function41432: ; 41432
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
--- /dev/null
+++ b/engine/predef.asm
@@ -1,0 +1,108 @@
+GetPredefPointer:: ; 854b
+; Return the bank and address of PredefID in a and PredefAddress.
+
+; Save hl for later (back in Predef)
+	ld a, h
+	ld [PredefTemp], a
+	ld a, l
+	ld [PredefTemp + 1], a
+
+	push de
+	ld a, [PredefID]
+	ld e, a
+	ld d, 0
+	ld hl, PredefPointers
+rept 3
+	add hl,de
+endr
+	pop de
+
+	ld a, [hli]
+	ld [PredefAddress + 1], a
+	ld a, [hli]
+	ld [PredefAddress], a
+	ld a, [hl]
+
+	ret
+; 856b
+
+PredefPointers:: ; 856b
+; $4b Predef pointers
+; address, bank
+
+	add_predef LearnMove ; $0
+	add_predef Predef1
+	add_predef HealParty
+	add_predef FlagPredef
+	add_predef Functionc699
+	add_predef FillPP
+	add_predef Functiond88c
+	add_predef Functionda96
+	add_predef Functiondb3f ; $8
+	add_predef Functionde6e
+	add_predef GiveEgg
+	add_predef Functionc6e0
+	add_predef Functione167
+	add_predef Functione17b
+	add_predef CanLearnTMHMMove
+	add_predef GetTMHMMove
+	add_predef Function28eef ; $ 10
+	add_predef PrintMoveDesc
+	add_predef UpdatePlayerHUD
+	add_predef FillBox
+	add_predef Function3d873
+	add_predef UpdateEnemyHUD
+	add_predef StartBattle
+	add_predef FillInExpBar
+	add_predef Function3f43d ; $18
+	add_predef Function3f47c
+	add_predef LearnLevelMoves
+	add_predef FillMoves
+	add_predef Function421e6
+	add_predef Function28f63
+	add_predef Function28f24
+	add_predef Function5084a
+	add_predef ListMoves ; $20
+	add_predef Function50d2e
+	add_predef Function50cdb
+	add_predef Function50c50
+	add_predef GetGender
+	add_predef StatsScreenInit
+	add_predef DrawPlayerHP
+	add_predef DrawEnemyHP
+	add_predef PrintTempMonStats ; $28
+	add_predef GetTypeName
+	add_predef PrintMoveType
+	add_predef PrintType
+	add_predef PrintMonTypes
+	add_predef GetUnownLetter
+	add_predef Functioncbcdd
+	add_predef Predef2F
+	add_predef Function9853 ; $30
+	add_predef Function864c
+	add_predef Function91d11
+	add_predef CheckContestMon
+	add_predef Function8c20f
+	add_predef Function8c000
+	add_predef Function8c000_2
+	add_predef PlayBattleAnim
+	add_predef Predef38 ; $38
+	add_predef Predef39
+	add_predef Functionfd1d0
+	add_predef PartyMonItemName
+	add_predef GetFrontpic
+	add_predef GetBackpic
+	add_predef Function5108b
+	add_predef GetTrainerPic
+	add_predef DecompressPredef ; $40
+	add_predef Function347d3
+	add_predef ConvertMon_1to2
+	add_predef Functionfb877
+	add_predef Functiond0000
+	add_predef Function50d0a
+	add_predef Functiond00a3
+	add_predef Functiond008e
+	add_predef Functiond0669 ; $48
+	add_predef Functiond066e
+	dbw $ff, Function2d43 ; ????
+; 864c
--- /dev/null
+++ b/engine/radio.asm
@@ -1,0 +1,2115 @@
+PlayRadioShow: ; b8612
+	ld a, [wd002]
+	cp 8
+	jr nc, .ok
+	ld a, [StatusFlags2]
+	bit 0, a
+	jr z, .ok
+	call IsInJohto
+	and a
+	jr nz, .ok
+	ld a, 7
+	ld [wd002], a
+.ok
+	ld a, [wd002]
+	ld e, a
+	ld d, 0
+	ld hl, RadioJumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+RadioJumptable: ; b863a (2e:463a)
+	dw MaryOakShow1
+	dw MaryOakShow2
+	dw BenMonMusic1
+	dw DJReed1
+	dw Functionb8f12
+	dw Functionb8cbf
+	dw Functionb8b50
+	dw Functionb8e72
+	dw Functionb8ef7
+	dw Functionb8f00
+	dw Functionb8f09
+	dw Functionb8752
+	dw Functionb875a
+	dw Functionb8762
+	dw Functionb8810
+	dw Functionb8818
+	dw Functionb883e
+	dw Functionb8854
+	dw Functionb88d9
+	dw Functionb8a6c
+	dw Functionb8aa4
+	dw Functionb8aac
+	dw Functionb8ab4
+	dw Functionb8b40
+	dw Functionb8b48
+	dw Functionb8b63
+	dw Functionb8b6b
+	dw Functionb8b7d
+	dw Functionb8b8f
+	dw Functionb8b5b
+	dw Functionb8bf5
+	dw Functionb8bfd
+	dw Functionb8c05
+	dw Functionb8c0d
+	dw Functionb8c15
+	dw Functionb8c1d
+	dw Functionb8c25
+	dw Functionb8c3e
+	dw Functionb8c46
+	dw Functionb8c4e
+	dw Functionb8c56
+	dw Functionb8c5e
+	dw Functionb8c6e
+	dw Functionb8c76
+	dw Functionb8cca
+	dw Functionb8cd2
+	dw Functionb8cf2
+	dw Functionb8d56
+	dw Functionb8ded
+	dw Functionb8e28
+	dw Functionb8e7d
+	dw Functionb8e85
+	dw Functionb8e8d
+	dw Functionb8e95
+	dw Functionb8e9d
+	dw Functionb8ea5
+	dw Functionb8ead
+	dw Functionb8eb5
+	dw Functionb8ebd
+	dw Functionb896e
+	dw Functionb8994
+	dw Functionb89a9
+	dw Functionb89c6
+	dw Functionb89d7
+	dw Functionb8f3f
+	dw Functionb8f47
+	dw Functionb8f55
+	dw Functionb909c
+	dw Functionb90a4
+	dw Functionb90ac
+	dw Functionb90c5
+	dw Functionb90d2
+	dw Functionb90da
+	dw Functionb90e2
+	dw Functionb90ea
+	dw Functionb90f2
+	dw Functionb90fa
+	dw Functionb9102
+	dw Functionb910a
+	dw Functionb9112
+	dw Functionb911a
+	dw Functionb9122
+	dw Functionb912a
+	dw Functionb9152
+	dw Functionb8728
+	dw Functionb8abc
+	dw Functionb8ac4
+	dw Functionb8acc
+
+
+Functionb86ea: ; b86ea (2e:46ea)
+	ld [wd003], a
+	ld hl, wd00c
+	ld a, [wd005]
+	cp $2
+	jr nc, .asm_b870a
+	inc hl
+	ld [hl], $0
+	inc a
+	ld [wd005], a
+	cp $2
+	jr nz, .asm_b870a
+	bccoord 1, 16
+	call Function13e5
+	jr .asm_b870d
+.asm_b870a
+	call PrintTextBoxText
+.asm_b870d
+	ld a, $54
+	ld [wd002], a
+	ld a, $64
+	ld [wd004], a
+	ret
+; b8718 (2e:4718)
+
+Functionb8718: ; b8718
+	push hl
+	ld b, $28
+.asm_b871b
+	ld a, [hl]
+	cp $e8
+	jr nz, .asm_b8722
+	ld [hl], $7f
+
+.asm_b8722
+	inc hl
+	dec b
+	jr nz, .asm_b871b
+	pop hl
+	ret
+; b8728
+
+Functionb8728: ; b8728 (2e:4728)
+	ld hl, wd004
+	ld a, [hl]
+	and a
+	jr z, .asm_b8731
+	dec [hl]
+	ret
+.asm_b8731
+	ld a, [wd003]
+	ld [wd002], a
+	ld a, [wd005]
+	cp $1
+	call nz, Functionb8a0b
+	jp Functionb8a17
+
+MaryOakShow1: ; b8742 (2e:4742)
+	ld a, $5
+	ld [wd006], a
+	call Functionb91eb
+	ld hl, UnknownText_0xb8820
+	ld a, $b
+	jp NextRadioLine
+
+Functionb8752: ; b8752 (2e:4752)
+	ld hl, UnknownText_0xb8825
+	ld a, $c
+	jp NextRadioLine
+
+Functionb875a: ; b875a (2e:475a)
+	ld hl, UnknownText_0xb882a
+	ld a, $d
+	jp NextRadioLine
+
+Functionb8762: ; b8762 (2e:4762)
+	call Random
+	and $1f
+	cp $f
+	jr nc, Functionb8762
+	ld hl, Unknown_b87f2
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld b, [hl]
+	inc hl
+	ld c, [hl]
+	push bc
+
+	ld hl, WildMons1
+.loop
+	ld a, BANK(WildMons1)
+	call GetFarByte
+	cp $ff
+	jr z, .done2
+	inc hl
+	cp b
+	jr nz, .next
+	ld a, BANK(WildMons1)
+	call GetFarByte
+	cp c
+	jr z, .done
+.next
+	dec hl
+	ld de, $2f
+	add hl, de
+	jr .loop
+
+.done
+rept 4
+	inc hl
+endr
+
+.not3
+	call Random
+	and 3
+	cp 3
+	jr z, .not3
+
+	ld bc, $e
+	call AddNTimes
+.loop2
+	call Random
+	and 7
+	cp 2
+	jr c, .loop2
+	cp 5
+	jr nc, .loop2
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	inc hl
+	ld a, BANK(WildMons1)
+	call GetFarByte
+	ld [wd265], a
+	ld [CurPartySpecies], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	ld de, wd050
+	ld bc, $b
+	call CopyBytes
+
+	pop bc
+	call GetWorldMapLocation
+	ld e, a
+	callba GetLandmarkName
+	ld hl, UnknownText_0xb882f
+	call Functionb91dc
+	ld a, $e
+	jp Functionb86ea
+
+.done2
+	pop bc
+	ld a, $0
+	jp Functionb86ea
+; b87f2 (2e:47f2)
+
+Unknown_b87f2: ; b87f2
+	map ROUTE_29
+	map ROUTE_46
+	map ROUTE_30
+	map ROUTE_32
+	map ROUTE_34
+	map ROUTE_35
+	map ROUTE_37
+	map ROUTE_38
+	map ROUTE_39
+	map ROUTE_42
+	map ROUTE_43
+	map ROUTE_44
+	map ROUTE_45
+	map ROUTE_36
+	map ROUTE_31
+; b8810
+
+Functionb8810: ; b8810 (2e:4810)
+	ld hl, UnknownText_0xb8834
+	ld a, $f
+	jp NextRadioLine
+
+Functionb8818: ; b8818 (2e:4818)
+	ld hl, UnknownText_0xb8839
+	ld a, $10
+	jp NextRadioLine
+; b8820 (2e:4820)
+
+UnknownText_0xb8820: ; 0xb8820
+	; MARY: PROF.OAK'S
+	text_jump UnknownText_0x1bc81a
+	db "@"
+; 0xb8825
+
+UnknownText_0xb8825: ; 0xb8825
+	; #MON TALK!
+	text_jump UnknownText_0x1bc82d
+	db "@"
+; 0xb882a
+
+UnknownText_0xb882a: ; 0xb882a
+	; With me, MARY!
+	text_jump UnknownText_0x1bc83a
+	db "@"
+; 0xb882f
+
+UnknownText_0xb882f: ; 0xb882f
+	; OAK: @ @
+	text_jump UnknownText_0x1bc84b
+	db "@"
+; 0xb8834
+
+UnknownText_0xb8834: ; 0xb8834
+	; may be seen around
+	text_jump UnknownText_0x1bc858
+	db "@"
+; 0xb8839
+
+UnknownText_0xb8839: ; 0xb8839
+	; @ .
+	text_jump UnknownText_0x1bc86d
+	db "@"
+; 0xb883e
+
+Functionb883e: ; b883e (2e:483e)
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, UnknownText_0xb884f
+	ld a, $11
+	jp NextRadioLine
+; b884f (2e:484f)
+
+UnknownText_0xb884f: ; 0xb884f
+	; MARY: @ 's
+	text_jump UnknownText_0x1bc876
+	db "@"
+; 0xb8854
+
+Functionb8854: ; b8854 (2e:4854)
+	call Random
+	and $f
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_b8869
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, $12
+	jp NextRadioLine
+; b8869 (2e:4869)
+
+Unknown_b8869: ; b8869
+	dw UnknownText_0xb8889
+	dw UnknownText_0xb888e
+	dw UnknownText_0xb8893
+	dw UnknownText_0xb8898
+	dw UnknownText_0xb889d
+	dw UnknownText_0xb88a2
+	dw UnknownText_0xb88a7
+	dw UnknownText_0xb88ac
+	dw UnknownText_0xb88b1
+	dw UnknownText_0xb88b6
+	dw UnknownText_0xb88bb
+	dw UnknownText_0xb88c0
+	dw UnknownText_0xb88c5
+	dw UnknownText_0xb88ca
+	dw UnknownText_0xb88cf
+	dw UnknownText_0xb88d4
+; b8889
+
+UnknownText_0xb8889: ; 0xb8889
+	; sweet and adorably
+	text_jump UnknownText_0x1bc885
+	db "@"
+; 0xb888e
+
+UnknownText_0xb888e: ; 0xb888e
+	; wiggly and slickly
+	text_jump UnknownText_0x1bc89a
+	db "@"
+; 0xb8893
+
+UnknownText_0xb8893: ; 0xb8893
+	; aptly named and
+	text_jump UnknownText_0x1bc8af
+	db "@"
+; 0xb8898
+
+UnknownText_0xb8898: ; 0xb8898
+	; undeniably kind of
+	text_jump UnknownText_0x1bc8c1
+	db "@"
+; 0xb889d
+
+UnknownText_0xb889d: ; 0xb889d
+	; so, so unbearably
+	text_jump UnknownText_0x1bc8d6
+	db "@"
+; 0xb88a2
+
+UnknownText_0xb88a2: ; 0xb88a2
+	; wow, impressively
+	text_jump UnknownText_0x1bc8ea
+	db "@"
+; 0xb88a7
+
+UnknownText_0xb88a7: ; 0xb88a7
+	; almost poisonously
+	text_jump UnknownText_0x1bc8fe
+	db "@"
+; 0xb88ac
+
+UnknownText_0xb88ac: ; 0xb88ac
+	; ooh, so sensually
+	text_jump UnknownText_0x1bc913
+	db "@"
+; 0xb88b1
+
+UnknownText_0xb88b1: ; 0xb88b1
+	; so mischievously
+	text_jump UnknownText_0x1bc927
+	db "@"
+; 0xb88b6
+
+UnknownText_0xb88b6: ; 0xb88b6
+	; so very topically
+	text_jump UnknownText_0x1bc93a
+	db "@"
+; 0xb88bb
+
+UnknownText_0xb88bb: ; 0xb88bb
+	; sure addictively
+	text_jump UnknownText_0x1bc94e
+	db "@"
+; 0xb88c0
+
+UnknownText_0xb88c0: ; 0xb88c0
+	; looks in water is
+	text_jump UnknownText_0x1bc961
+	db "@"
+; 0xb88c5
+
+UnknownText_0xb88c5: ; 0xb88c5
+	; evolution must be
+	text_jump UnknownText_0x1bc975
+	db "@"
+; 0xb88ca
+
+UnknownText_0xb88ca: ; 0xb88ca
+	; provocatively
+	text_jump UnknownText_0x1bc989
+	db "@"
+; 0xb88cf
+
+UnknownText_0xb88cf: ; 0xb88cf
+	; so flipped out and
+	text_jump UnknownText_0x1bc999
+	db "@"
+; 0xb88d4
+
+UnknownText_0xb88d4: ; 0xb88d4
+	; heart-meltingly
+	text_jump UnknownText_0x1bc9ae
+	db "@"
+; 0xb88d9
+
+Functionb88d9: ; b88d9 (2e:48d9)
+	call Random
+	and $f
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_b88fe
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wd006]
+	dec a
+	ld [wd006], a
+	ld a, $d
+	jr nz, .asm_b88fb
+	ld a, $5
+	ld [wd006], a
+	ld a, $3b
+.asm_b88fb
+	jp NextRadioLine
+; b88fe (2e:48fe)
+
+Unknown_b88fe: ; b88fe
+	dw UnknownText_0xb891e
+	dw UnknownText_0xb8923
+	dw UnknownText_0xb8928
+	dw UnknownText_0xb892d
+	dw UnknownText_0xb8932
+	dw UnknownText_0xb8937
+	dw UnknownText_0xb893c
+	dw UnknownText_0xb8941
+	dw UnknownText_0xb8946
+	dw UnknownText_0xb894b
+	dw UnknownText_0xb8950
+	dw UnknownText_0xb8955
+	dw UnknownText_0xb895a
+	dw UnknownText_0xb895f
+	dw UnknownText_0xb8964
+	dw UnknownText_0xb8969
+; b891e
+
+UnknownText_0xb891e: ; 0xb891e
+	; cute.
+	text_jump UnknownText_0x1bc9c0
+	db "@"
+; 0xb8923
+
+UnknownText_0xb8923: ; 0xb8923
+	; weird.
+	text_jump UnknownText_0x1bc9c8
+	db "@"
+; 0xb8928
+
+UnknownText_0xb8928: ; 0xb8928
+	; pleasant.
+	text_jump UnknownText_0x1bc9d1
+	db "@"
+; 0xb892d
+
+UnknownText_0xb892d: ; 0xb892d
+	; bold, sort of.
+	text_jump UnknownText_0x1bc9dd
+	db "@"
+; 0xb8932
+
+UnknownText_0xb8932: ; 0xb8932
+	; frightening.
+	text_jump UnknownText_0x1bc9ee
+	db "@"
+; 0xb8937
+
+UnknownText_0xb8937: ; 0xb8937
+	; suave & debonair!
+	text_jump UnknownText_0x1bc9fd
+	db "@"
+; 0xb893c
+
+UnknownText_0xb893c: ; 0xb893c
+	; powerful.
+	text_jump UnknownText_0x1bca11
+	db "@"
+; 0xb8941
+
+UnknownText_0xb8941: ; 0xb8941
+	; exciting.
+	text_jump UnknownText_0x1bca1d
+	db "@"
+; 0xb8946
+
+UnknownText_0xb8946: ; 0xb8946
+	; groovy!
+	text_jump UnknownText_0x1bca29
+	db "@"
+; 0xb894b
+
+UnknownText_0xb894b: ; 0xb894b
+	; inspiring.
+	text_jump UnknownText_0x1bca33
+	db "@"
+; 0xb8950
+
+UnknownText_0xb8950: ; 0xb8950
+	; friendly.
+	text_jump UnknownText_0x1bca40
+	db "@"
+; 0xb8955
+
+UnknownText_0xb8955: ; 0xb8955
+	; hot, hot, hot!
+	text_jump UnknownText_0x1bca4c
+	db "@"
+; 0xb895a
+
+UnknownText_0xb895a: ; 0xb895a
+	; stimulating.
+	text_jump UnknownText_0x1bca5d
+	db "@"
+; 0xb895f
+
+UnknownText_0xb895f: ; 0xb895f
+	; guarded.
+	text_jump UnknownText_0x1bca6c
+	db "@"
+; 0xb8964
+
+UnknownText_0xb8964: ; 0xb8964
+	; lovely.
+	text_jump UnknownText_0x1bca77
+	db "@"
+; 0xb8969
+
+UnknownText_0xb8969: ; 0xb8969
+	; speedy.
+	text_jump UnknownText_0x1bca81
+	db "@"
+; 0xb896e
+
+Functionb896e: ; b896e (2e:496e)
+	callba Function91868
+	ld hl, UnknownText_0xb8993
+	call PrintText
+	call WaitBGMap
+	ld hl, UnknownText_0xb898e
+	call PrintText
+	ld a, $3c
+	ld [wd002], a
+	ld a, $64
+	ld [wd004], a
+	ret
+; b898e (2e:498e)
+
+UnknownText_0xb898e: ; 0xb898e
+	; #MON
+	text_jump UnknownText_0x1bca8b
+	db "@"
+; 0xb8993
+
+UnknownText_0xb8993: ; 0xb8993
+	db "@"
+; 0xb8994
+
+Functionb8994: ; b8994 (2e:4994)
+	ld hl, wd004
+	dec [hl]
+	ret nz
+	hlcoord 9, 14
+	ld de, String_b89a4
+	ld a, $3d
+	jp Functionb8a00
+; b89a4 (2e:49a4)
+
+String_b89a4:
+	db "#MON@"
+; b89a9
+
+Functionb89a9: ; b89a9 (2e:49a9)
+	ld hl, wd004
+	dec [hl]
+	ret nz
+	hlcoord 1, 16
+	ld de, String_b89b9
+	ld a, $3e
+	jp Functionb8a00
+; b89b9 (2e:49b9)
+
+String_b89b9:
+	db "#MON Channel@"
+; b89c6
+
+Functionb89c6: ; b89c6 (2e:49c6)
+	ld hl, wd004
+	dec [hl]
+	ret nz
+	hlcoord 12, 16
+	ld de, String_b89d6
+	ld a, $3f
+	jp Functionb8a00
+; b89d6 (2e:49d6)
+
+String_b89d6:
+	db "@"
+; b89d7
+
+Functionb89d7: ; b89d7 (2e:49d7)
+	ld hl, wd004
+	dec [hl]
+	ret nz
+	ld de, $1d
+	callab Function91854
+	ld hl, UnknownText_0xb89ff
+	call PrintText
+	ld a, $d
+	ld [wd003], a
+	xor a
+	ld [wd005], a
+	ld a, $54
+	ld [wd002], a
+	ld a, $a
+	ld [wd004], a
+	ret
+; b89ff (2e:49ff)
+
+UnknownText_0xb89ff: ; 0xb89ff
+	db "@"
+; 0xb8a00
+
+Functionb8a00: ; b8a00 (2e:4a00)
+	ld [wd002], a
+	ld a, $64
+	ld [wd004], a
+	jp PlaceString
+
+Functionb8a0b: ; b8a0b (2e:4a0b)
+	hlcoord 0, 15
+	decoord 0, 13
+	ld bc, $28
+	jp CopyBytes
+
+Functionb8a17: ; b8a17 (2e:4a17)
+	hlcoord 1, 15
+	ld bc, $12
+	ld a, $7f
+	call ByteFill
+	hlcoord 1, 16
+	ld bc, $12
+	ld a, $7f
+	jp ByteFill
+
+Functionb8a2d: ; b8a2d (2e:4a2d)
+	push hl
+	push de
+	ld a, [CurPartySpecies]
+	dec a
+	rlca
+	rlca
+	and 3
+	ld hl, .pokedexbanks
+	ld d, 0
+	ld e, a
+	add hl, de
+	ld a, [hl]
+	pop de
+	pop hl
+	ret
+; b8a42 (2e:4a42)
+
+.pokedexbanks
+	db BANK(PokedexEntries1)
+	db BANK(PokedexEntries2)
+	db BANK(PokedexEntries3)
+	db BANK(PokedexEntries4)
+; b8a46
+
+MaryOakShow2: ; b8a46 (2e:4a46)
+	call Functionb91eb
+.asm_b8a49
+	call Random
+	cp CELEBI
+	jr nc, .asm_b8a49
+	ld c, a
+	push bc
+	ld a, c
+	call CheckCaughtMon
+	pop bc
+	jr z, .asm_b8a49
+	inc c
+	ld a, c
+	ld [CurPartySpecies], a
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, UnknownText_0xb8b30
+	ld a, $13
+	jp NextRadioLine
+
+Functionb8a6c: ; b8a6c (2e:4a6c)
+	ld a, [CurPartySpecies]
+	dec a
+	ld hl, PokedexDataPointerTable
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld a, BANK(PokedexDataPointerTable)
+	call GetFarHalfword
+	call Functionb8a2d
+	push af
+	push hl
+	call Functionb8af3
+	dec hl
+	ld [hl], $57
+	ld hl, wd26b
+	call Functionb91dc
+	pop hl
+	pop af
+	call Functionb8b11
+rept 4
+	inc hl
+endr
+	ld a, l
+	ld [wd26b], a
+	ld a, h
+	ld [wd26c], a
+	ld a, $14
+	jp Functionb86ea
+
+Functionb8aa4: ; b8aa4 (2e:4aa4)
+	call Functionb8ad4
+	ld a, $15
+	jp Functionb86ea
+
+Functionb8aac: ; b8aac (2e:4aac)
+	call Functionb8ad4
+	ld a, $16
+	jp Functionb86ea
+
+Functionb8ab4: ; b8ab4 (2e:4ab4)
+	call Functionb8ad4
+	ld a, $55
+	jp Functionb86ea
+
+Functionb8abc: ; b8abc (2e:4abc)
+	call Functionb8ad4
+	ld a, $56
+	jp Functionb86ea
+
+Functionb8ac4: ; b8ac4 (2e:4ac4)
+	call Functionb8ad4
+	ld a, $57
+	jp Functionb86ea
+
+Functionb8acc: ; b8acc (2e:4acc)
+	call Functionb8ad4
+	ld a, $1
+	jp Functionb86ea
+
+Functionb8ad4: ; b8ad4 (2e:4ad4)
+	ld a, [wd26b]
+	ld l, a
+	ld a, [wd26c]
+	ld h, a
+	ld a, [wd26d]
+	push af
+	push hl
+	call Functionb8af3
+	dec hl
+	ld [hl], $57
+	ld hl, wd26b
+	call Functionb91dc
+	pop hl
+	pop af
+	call Functionb8b11
+	ret
+
+Functionb8af3: ; b8af3 (2e:4af3)
+	ld de, wd26d
+	ld bc, $13
+	call FarCopyBytes
+	ld hl, wd26b
+	ld [hl], $0
+	inc hl
+	ld [hl], $4f
+	inc hl
+.asm_b8b05
+	ld a, [hli]
+	cp $50
+	ret z
+	cp $4e
+	ret z
+	cp $5f
+	ret z
+	jr .asm_b8b05
+
+Functionb8b11: ; b8b11 (2e:4b11)
+	ld d, a
+.asm_b8b12
+	ld a, d
+	call GetFarByte
+	inc hl
+	cp $50
+	jr z, .asm_b8b23
+	cp $4e
+	jr z, .asm_b8b23
+	cp $5f
+	jr nz, .asm_b8b12
+.asm_b8b23
+	ld a, l
+	ld [wd26b], a
+	ld a, h
+	ld [wd26c], a
+	ld a, d
+	ld [wd26d], a
+	ret
+; b8b30 (2e:4b30)
+
+UnknownText_0xb8b30: ; 0xb8b30
+	; @ @
+	text_jump UnknownText_0x1bca91
+	db "@"
+; 0xb8b35
+
+BenMonMusic1: ; b8b35 (2e:4b35)
+	call Functionb8b90
+	ld hl, UnknownText_0xb8baa
+	ld a, $17
+	jp NextRadioLine
+
+Functionb8b40: ; b8b40 (2e:4b40)
+	ld hl, UnknownText_0xb8baf
+	ld a, $18
+	jp NextRadioLine
+
+Functionb8b48: ; b8b48 (2e:4b48)
+	ld hl, UnknownText_0xb8bb4
+	ld a, $19
+	jp NextRadioLine
+
+Functionb8b50: ; b8b50 (2e:4b50)
+	call Functionb8b90
+	ld hl, UnknownText_0xb8bb9
+	ld a, $1d
+	jp NextRadioLine
+
+Functionb8b5b: ; b8b5b (2e:4b5b)
+	ld hl, UnknownText_0xb8bbe
+	ld a, $19
+	jp NextRadioLine
+
+Functionb8b63: ; b8b63 (2e:4b63)
+	ld hl, UnknownText_0xb8bc3
+	ld a, $1a
+	jp NextRadioLine
+
+Functionb8b6b: ; b8b6b (2e:4b6b)
+	call GetWeekday
+	and 1
+	ld hl, UnknownText_0xb8bc8
+	jr z, .asm_b8b78
+	ld hl, UnknownText_0xb8bcd
+.asm_b8b78
+	ld a, $1b
+	jp NextRadioLine
+
+Functionb8b7d: ; b8b7d (2e:4b7d)
+	call GetWeekday
+	and 1
+	ld hl, UnknownText_0xb8bd2
+	jr z, .asm_b8b8a
+	ld hl, UnknownText_0xb8bd7
+.asm_b8b8a
+	ld a, $1c
+	jp NextRadioLine
+
+Functionb8b8f: ; b8b8f (2e:4b8f)
+	ret
+
+Functionb8b90: ; b8b90 (2e:4b90)
+	call Function1052
+	call PrintText
+	ld de, MUSIC_POKEMON_MARCH
+	call GetWeekday
+	and 1
+	jr z, .done
+	ld de, MUSIC_POKEMON_LULLABY
+.done
+	callab Function91854
+	ret
+; b8baa (2e:4baa)
+
+UnknownText_0xb8baa: ; 0xb8baa
+	; BEN: #MON MUSIC
+	text_jump UnknownText_0x1bca99
+	db "@"
+; 0xb8baf
+
+UnknownText_0xb8baf: ; 0xb8baf
+	; CHANNEL!
+	text_jump UnknownText_0x1bcaab
+	db "@"
+; 0xb8bb4
+
+UnknownText_0xb8bb4: ; 0xb8bb4
+	; It's me, DJ BEN!
+	text_jump UnknownText_0x1bcab6
+	db "@"
+; 0xb8bb9
+
+UnknownText_0xb8bb9: ; 0xb8bb9
+	; FERN: #MUSIC!
+	text_jump UnknownText_0x1bcac8
+	db "@"
+; 0xb8bbe
+
+UnknownText_0xb8bbe: ; 0xb8bbe
+	; With DJ FERN!
+	text_jump UnknownText_0x1bcad8
+	db "@"
+; 0xb8bc3
+
+UnknownText_0xb8bc3: ; 0xb8bc3
+	; Today's @ ,
+	text_jump UnknownText_0x1bcae8
+	db "@"
+; 0xb8bc8
+
+UnknownText_0xb8bc8: ; 0xb8bc8
+	; so let us jam to
+	text_jump UnknownText_0x1bcaf6
+	db "@"
+; 0xb8bcd
+
+UnknownText_0xb8bcd: ; 0xb8bcd
+	; so chill out to
+	text_jump UnknownText_0x1bcb09
+	db "@"
+; 0xb8bd2
+
+UnknownText_0xb8bd2: ; 0xb8bd2
+	; #MON March!
+	text_jump UnknownText_0x1bcb1b
+	db "@"
+; 0xb8bd7
+
+UnknownText_0xb8bd7: ; 0xb8bd7
+	; #MON Lullaby!
+	text_jump UnknownText_0x1bcb29
+	db "@"
+; 0xb8bdc
+
+DJReed1: ; b8bdc (2e:4bdc)
+	call Functionb91eb
+	callab Functionc434
+	jr nc, .asm_b8bed
+	callab Functionc422
+.asm_b8bed
+	ld hl, UnknownText_0xb8c7e
+	ld a, $1e
+	jp NextRadioLine
+
+Functionb8bf5: ; b8bf5 (2e:4bf5)
+	ld hl, UnknownText_0xb8c83
+	ld a, $1f
+	jp NextRadioLine
+
+Functionb8bfd: ; b8bfd (2e:4bfd)
+	ld hl, UnknownText_0xb8c88
+	ld a, $20
+	jp NextRadioLine
+
+Functionb8c05: ; b8c05 (2e:4c05)
+	ld hl, UnknownText_0xb8c8d
+	ld a, $21
+	jp NextRadioLine
+
+Functionb8c0d: ; b8c0d (2e:4c0d)
+	ld hl, UnknownText_0xb8c92
+	ld a, $22
+	jp NextRadioLine
+
+Functionb8c15: ; b8c15 (2e:4c15)
+	ld hl, UnknownText_0xb8c97
+	ld a, $23
+	jp NextRadioLine
+
+Functionb8c1d: ; b8c1d (2e:4c1d)
+	ld hl, UnknownText_0xb8c9c
+	ld a, $24
+	jp NextRadioLine
+
+Functionb8c25: ; b8c25 (2e:4c25)
+	ld hl, StringBuffer1
+	ld de, wdc9f
+	ld bc, $8205
+	call PrintNum
+	ld a, $50
+	ld [StringBuffer1 + 5], a
+	ld hl, UnknownText_0xb8ca1
+	ld a, $25
+	jp NextRadioLine
+
+Functionb8c3e: ; b8c3e (2e:4c3e)
+	ld hl, UnknownText_0xb8ca6
+	ld a, $26
+	jp NextRadioLine
+
+Functionb8c46: ; b8c46 (2e:4c46)
+	ld hl, UnknownText_0xb8c9c
+	ld a, $27
+	jp NextRadioLine
+
+Functionb8c4e: ; b8c4e (2e:4c4e)
+	ld hl, UnknownText_0xb8ca1
+	ld a, $28
+	jp NextRadioLine
+
+Functionb8c56: ; b8c56 (2e:4c56)
+	ld hl, UnknownText_0xb8cab
+	ld a, $29
+	jp NextRadioLine
+
+Functionb8c5e: ; b8c5e (2e:4c5e)
+	ld hl, UnknownText_0xb8cb0
+	call Random
+	and a
+	ld a, $3
+	jr nz, .asm_b8c6b
+	ld a, $2a
+.asm_b8c6b
+	jp NextRadioLine
+
+Functionb8c6e: ; b8c6e (2e:4c6e)
+	ld hl, UnknownText_0xb8cb5
+	ld a, $2b
+	jp NextRadioLine
+
+Functionb8c76: ; b8c76 (2e:4c76)
+	ld hl, UnknownText_0xb8cba
+	ld a, $3
+	jp NextRadioLine
+; b8c7e (2e:4c7e)
+
+UnknownText_0xb8c7e: ; 0xb8c7e
+	; REED: Yeehaw! How
+	text_jump UnknownText_0x1bcb39
+	db "@"
+; 0xb8c83
+
+UnknownText_0xb8c83: ; 0xb8c83
+	; y'all doin' now?
+	text_jump UnknownText_0x1bcb4d
+	db "@"
+; 0xb8c88
+
+UnknownText_0xb8c88: ; 0xb8c88
+	; Whether you're up
+	text_jump UnknownText_0x1bcb60
+	db "@"
+; 0xb8c8d
+
+UnknownText_0xb8c8d: ; 0xb8c8d
+	; or way down low,
+	text_jump UnknownText_0x1bcb73
+	db "@"
+; 0xb8c92
+
+UnknownText_0xb8c92: ; 0xb8c92
+	; don't you miss the
+	text_jump UnknownText_0x1bcb86
+	db "@"
+; 0xb8c97
+
+UnknownText_0xb8c97: ; 0xb8c97
+	; LUCKY NUMBER SHOW!
+	text_jump UnknownText_0x1bcb9a
+	db "@"
+; 0xb8c9c
+
+UnknownText_0xb8c9c: ; 0xb8c9c
+	; This week's Lucky
+	text_jump UnknownText_0x1bcbaf
+	db "@"
+; 0xb8ca1
+
+UnknownText_0xb8ca1: ; 0xb8ca1
+	; Number is @ !
+	text_jump UnknownText_0x1bcbc2
+	db "@"
+; 0xb8ca6
+
+UnknownText_0xb8ca6: ; 0xb8ca6
+	; I'll repeat that!
+	text_jump UnknownText_0x1bcbd6
+	db "@"
+; 0xb8cab
+
+UnknownText_0xb8cab: ; 0xb8cab
+	; Match it and go to
+	text_jump UnknownText_0x1bcbe9
+	db "@"
+; 0xb8cb0
+
+UnknownText_0xb8cb0: ; 0xb8cb0
+	; the RADIO TOWER!
+	text_jump UnknownText_0x1bcbfe
+	db "@"
+; 0xb8cb5
+
+UnknownText_0xb8cb5: ; 0xb8cb5
+	; …Repeating myself
+	text_jump UnknownText_0x1bcc11
+	db "@"
+; 0xb8cba
+
+UnknownText_0xb8cba: ; 0xb8cba
+	; gets to be a drag…
+	text_jump UnknownText_0x1bcc25
+	db "@"
+; 0xb8cbf
+
+Functionb8cbf: ; b8cbf (2e:4cbf)
+	call Functionb91eb
+	ld hl, UnknownText_0xb8ce3
+	ld a, $2c
+	jp NextRadioLine
+
+Functionb8cca: ; b8cca (2e:4cca)
+	ld hl, UnknownText_0xb8ce8
+	ld a, $2d
+	jp NextRadioLine
+
+Functionb8cd2: ; b8cd2 (2e:4cd2)
+	ld hl, UnknownText_0xb8ced
+	call Random
+	cp $7b
+	ld a, $2e
+	jr c, .asm_b8ce0
+	ld a, $30
+.asm_b8ce0
+	jp NextRadioLine
+; b8ce3 (2e:4ce3)
+
+UnknownText_0xb8ce3: ; 0xb8ce3
+	; PLACES AND PEOPLE!
+	text_jump UnknownText_0x1bcc3a
+	db "@"
+; 0xb8ce8
+
+UnknownText_0xb8ce8: ; 0xb8ce8
+	; Brought to you by
+	text_jump UnknownText_0x1bcc4f
+	db "@"
+; 0xb8ced
+
+UnknownText_0xb8ced: ; 0xb8ced
+	; me, DJ LILY!
+	text_jump UnknownText_0x1bcc63
+	db "@"
+; 0xb8cf2
+
+Functionb8cf2: ; b8cf2 (2e:4cf2)
+	call Random
+	and $7f
+	inc a
+	cp $43
+	jr nc, Functionb8cf2
+	push af
+	ld hl, Unknown_b8d3e
+	ld a, [StatusFlags]
+	bit 6, a
+	jr z, .NotMet
+	ld hl, Unknown_b8d43
+	ld a, [KantoBadges]
+	cp %11111111
+	jr nz, .NotMet
+	ld hl, Unknown_b8d4b
+.NotMet
+	pop af
+	ld c, a
+	ld de, $1
+	push bc
+	call IsInArray
+	pop bc
+	jr c, Functionb8cf2
+	push bc
+	callab Function3952d
+	ld de, StringBuffer1
+	call CopyName1
+	pop bc
+	ld b, $1
+	callab GetTrainerName
+	ld hl, UnknownText_0xb8d51
+	ld a, $2f
+	jp NextRadioLine
+; b8d3e (2e:4d3e)
+
+Unknown_b8d3e: db $0b, $0d, $0e, $0f, $10
+Unknown_b8d43: db $11, $12, $13, $15, $1a, $23, $2e, $40
+Unknown_b8d4b: db $09, $0a, $0c, $2a, $3f
+               db $ff
+; b8d51
+
+UnknownText_0xb8d51: ; 0xb8d51
+	; @  @ @
+	text_jump UnknownText_0x1bcc72
+	db "@"
+; 0xb8d56
+
+Functionb8d56: ; b8d56 (2e:4d56)
+	call Random
+	and $f
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_b8d7d
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Random
+	cp $a
+	ld a, $5
+	jr c, .asm_b8d7a
+	call Random
+	cp $7b
+	ld a, $2e
+	jr c, .asm_b8d7a
+	ld a, $30
+.asm_b8d7a
+	jp NextRadioLine
+; b8d7d (2e:4d7d)
+
+Unknown_b8d7d: ; b8d7d
+	dw UnknownText_0xb8d9d
+	dw UnknownText_0xb8da2
+	dw UnknownText_0xb8da7
+	dw UnknownText_0xb8dac
+	dw UnknownText_0xb8db1
+	dw UnknownText_0xb8db6
+	dw UnknownText_0xb8dbb
+	dw UnknownText_0xb8dc0
+	dw UnknownText_0xb8dc5
+	dw UnknownText_0xb8dca
+	dw UnknownText_0xb8dcf
+	dw UnknownText_0xb8dd4
+	dw UnknownText_0xb8dd9
+	dw UnknownText_0xb8dde
+	dw UnknownText_0xb8de3
+	dw UnknownText_0xb8de8
+; b8d9d
+
+UnknownText_0xb8d9d: ; 0xb8d9d
+	; is cute.
+	text_jump UnknownText_0x1bcc80
+	db "@"
+; 0xb8da2
+
+UnknownText_0xb8da2: ; 0xb8da2
+	; is sort of lazy.
+	text_jump UnknownText_0x1bcc8b
+	db "@"
+; 0xb8da7
+
+UnknownText_0xb8da7: ; 0xb8da7
+	; is always happy.
+	text_jump UnknownText_0x1bcc9e
+	db "@"
+; 0xb8dac
+
+UnknownText_0xb8dac: ; 0xb8dac
+	; is quite noisy.
+	text_jump UnknownText_0x1bccb1
+	db "@"
+; 0xb8db1
+
+UnknownText_0xb8db1: ; 0xb8db1
+	; is precocious.
+	text_jump UnknownText_0x1bccc3
+	db "@"
+; 0xb8db6
+
+UnknownText_0xb8db6: ; 0xb8db6
+	; is somewhat bold.
+	text_jump UnknownText_0x1bccd4
+	db "@"
+; 0xb8dbb
+
+UnknownText_0xb8dbb: ; 0xb8dbb
+	; is too picky!
+	text_jump UnknownText_0x1bcce8
+	db "@"
+; 0xb8dc0
+
+UnknownText_0xb8dc0: ; 0xb8dc0
+	; is sort of OK.
+	text_jump UnknownText_0x1bccf8
+	db "@"
+; 0xb8dc5
+
+UnknownText_0xb8dc5: ; 0xb8dc5
+	; is just so-so.
+	text_jump UnknownText_0x1bcd09
+	db "@"
+; 0xb8dca
+
+UnknownText_0xb8dca: ; 0xb8dca
+	; is actually great.
+	text_jump UnknownText_0x1bcd1a
+	db "@"
+; 0xb8dcf
+
+UnknownText_0xb8dcf: ; 0xb8dcf
+	; is just my type.
+	text_jump UnknownText_0x1bcd2f
+	db "@"
+; 0xb8dd4
+
+UnknownText_0xb8dd4: ; 0xb8dd4
+	; is so cool, no?
+	text_jump UnknownText_0x1bcd42
+	db "@"
+; 0xb8dd9
+
+UnknownText_0xb8dd9: ; 0xb8dd9
+	; is inspiring!
+	text_jump UnknownText_0x1bcd54
+	db "@"
+; 0xb8dde
+
+UnknownText_0xb8dde: ; 0xb8dde
+	; is kind of weird.
+	text_jump UnknownText_0x1bcd64
+	db "@"
+; 0xb8de3
+
+UnknownText_0xb8de3: ; 0xb8de3
+	; is right for me?
+	text_jump UnknownText_0x1bcd78
+	db "@"
+; 0xb8de8
+
+UnknownText_0xb8de8: ; 0xb8de8
+	; is definitely odd!
+	text_jump UnknownText_0x1bcd8b
+	db "@"
+; 0xb8ded
+
+Functionb8ded: ; b8ded (2e:4ded)
+	call Random
+	cp $9
+	jr nc, Functionb8ded
+	ld hl, Unknown_b8e11
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld b, [hl]
+	inc hl
+	ld c, [hl]
+	call GetWorldMapLocation
+	ld e, a
+	callba GetLandmarkName
+	ld hl, UnknownText_0xb8e23
+	ld a, $31
+	jp NextRadioLine
+; b8e11 (2e:4e11)
+
+Unknown_b8e11: ; b8e11
+	map PALLET_TOWN
+	map ROUTE_22
+	map PEWTER_CITY
+	map CERULEAN_POLICE_STATION
+	map ROUTE_12
+	map ROUTE_11
+	map ROUTE_16
+	map ROUTE_14
+	map CINNABAR_POKECENTER_2F_BETA
+; b8e23
+
+UnknownText_0xb8e23: ; 0xb8e23
+	; @ @
+	text_jump UnknownText_0x1bcda0
+	db "@"
+; 0xb8e28
+
+Functionb8e28: ; b8e28 (2e:4e28)
+	call Random
+	and $f
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_b8e52
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Functionb91dc
+	call Random
+	cp $a
+	ld a, $5
+	jr c, .asm_b8e4f
+	call Random
+	cp $7b
+	ld a, $2e
+	jr c, .asm_b8e4f
+	ld a, $30
+.asm_b8e4f
+	jp Functionb86ea
+; b8e52 (2e:4e52)
+
+Unknown_b8e52: ; b8e52
+	dw UnknownText_0xb8d9d
+	dw UnknownText_0xb8da2
+	dw UnknownText_0xb8da7
+	dw UnknownText_0xb8dac
+	dw UnknownText_0xb8db1
+	dw UnknownText_0xb8db6
+	dw UnknownText_0xb8dbb
+	dw UnknownText_0xb8dc0
+	dw UnknownText_0xb8dc5
+	dw UnknownText_0xb8dca
+	dw UnknownText_0xb8dcf
+	dw UnknownText_0xb8dd4
+	dw UnknownText_0xb8dd9
+	dw UnknownText_0xb8dde
+	dw UnknownText_0xb8de3
+	dw UnknownText_0xb8de8
+; b8e72
+
+Functionb8e72: ; b8e72 (2e:4e72)
+	call Functionb91eb
+	ld hl, UnknownText_0xb8ec5
+	ld a, $32
+	jp NextRadioLine
+
+Functionb8e7d: ; b8e7d (2e:4e7d)
+	ld hl, UnknownText_0xb8eca
+	ld a, $33
+	jp NextRadioLine
+
+Functionb8e85: ; b8e85 (2e:4e85)
+	ld hl, UnknownText_0xb8ecf
+	ld a, $34
+	jp NextRadioLine
+
+Functionb8e8d: ; b8e8d (2e:4e8d)
+	ld hl, UnknownText_0xb8ed4
+	ld a, $35
+	jp NextRadioLine
+
+Functionb8e95: ; b8e95 (2e:4e95)
+	ld hl, UnknownText_0xb8ed9
+	ld a, $36
+	jp NextRadioLine
+
+Functionb8e9d: ; b8e9d (2e:4e9d)
+	ld hl, UnknownText_0xb8ede
+	ld a, $37
+	jp NextRadioLine
+
+Functionb8ea5: ; b8ea5 (2e:4ea5)
+	ld hl, UnknownText_0xb8ee3
+	ld a, $38
+	jp NextRadioLine
+
+Functionb8ead: ; b8ead (2e:4ead)
+	ld hl, UnknownText_0xb8ee8
+	ld a, $39
+	jp NextRadioLine
+
+Functionb8eb5: ; b8eb5 (2e:4eb5)
+	ld hl, UnknownText_0xb8eed
+	ld a, $3a
+	jp NextRadioLine
+
+Functionb8ebd: ; b8ebd (2e:4ebd)
+	ld hl, UnknownText_0xb8ef2
+	ld a, $7
+	jp NextRadioLine
+; b8ec5 (2e:4ec5)
+
+UnknownText_0xb8ec5: ; 0xb8ec5
+	; … …Ahem, we are
+	text_jump UnknownText_0x1bcda8
+	db "@"
+; 0xb8eca
+
+UnknownText_0xb8eca: ; 0xb8eca
+	; TEAM ROCKET!
+	text_jump UnknownText_0x1bcdba
+	db "@"
+; 0xb8ecf
+
+UnknownText_0xb8ecf: ; 0xb8ecf
+	; After three years
+	text_jump UnknownText_0x1bcdc9
+	db "@"
+; 0xb8ed4
+
+UnknownText_0xb8ed4: ; 0xb8ed4
+	; of preparation, we
+	text_jump UnknownText_0x1bcddd
+	db "@"
+; 0xb8ed9
+
+UnknownText_0xb8ed9: ; 0xb8ed9
+	; have risen again
+	text_jump UnknownText_0x1bcdf2
+	db "@"
+; 0xb8ede
+
+UnknownText_0xb8ede: ; 0xb8ede
+	; from the ashes!
+	text_jump UnknownText_0x1bce05
+	db "@"
+; 0xb8ee3
+
+UnknownText_0xb8ee3: ; 0xb8ee3
+	; GIOVANNI! @ Can you
+	text_jump UnknownText_0x1bce17
+	db "@"
+; 0xb8ee8
+
+UnknownText_0xb8ee8: ; 0xb8ee8
+	; hear?@  We did it!
+	text_jump UnknownText_0x1bce2e
+	db "@"
+; 0xb8eed
+
+UnknownText_0xb8eed: ; 0xb8eed
+	; @ Where is our boss?
+	text_jump UnknownText_0x1bce44
+	db "@"
+; 0xb8ef2
+
+UnknownText_0xb8ef2: ; 0xb8ef2
+	; @ Is he listening?
+	text_jump UnknownText_0x1bce5c
+	db "@"
+; 0xb8ef7
+
+Functionb8ef7: ; b8ef7 (2e:4ef7)
+	call Functionb91eb
+	ld a, $1
+	ld [wd005], a
+	ret
+
+Functionb8f00: ; b8f00 (2e:4f00)
+	call Functionb91eb
+	ld a, $1
+	ld [wd005], a
+	ret
+
+Functionb8f09: ; b8f09 (2e:4f09)
+	call Functionb91eb
+	ld a, $1
+	ld [wd005], a
+	ret
+
+Functionb8f12: ; b8f12 (2e:4f12)
+	call Functionb9169
+	jp nc, Functionb8f22
+	ld a, [wd005]
+	and a
+	jp z, Functionb912a
+	jp Functionb90c5
+
+Functionb8f22: ; b8f22 (2e:4f22)
+	call Functionb91eb
+	ld a, [hBGMapMode] ; $ff00+$d4
+	push af
+	xor a
+	ld [hBGMapMode], a ; $ff00+$d4
+	ld de, String_b9171
+	hlcoord 2, 9
+	call PlaceString
+	pop af
+	ld [hBGMapMode], a ; $ff00+$d4
+	ld hl, UnknownText_0xb9182
+	ld a, $40
+	jp NextRadioLine
+
+Functionb8f3f: ; b8f3f (2e:4f3f)
+	ld hl, UnknownText_0xb9187
+	ld a, $41
+	jp NextRadioLine
+
+Functionb8f47: ; b8f47 (2e:4f47)
+	call Functionb9169
+	ld hl, UnknownText_0xb918c
+	jp c, Functionb90b9
+	ld a, $42
+	jp NextRadioLine
+
+Functionb8f55: ; b8f55 (2e:4f55)
+	call Functionb9169
+	jp c, Functionb90c5
+	ld a, [wdc4a]
+	ld hl, WeeklyFlags
+	bit 7, [hl]
+	jr nz, .asm_b8f83
+.asm_b8f65
+	call Random
+	and $f
+	cp $b
+	jr nc, .asm_b8f65
+	swap a
+	ld e, a
+.asm_b8f71
+	call Random
+	and $3
+	cp $3
+	jr nc, .asm_b8f71
+	add e
+	ld [wdc4a], a
+	ld hl, WeeklyFlags
+	set 7, [hl]
+.asm_b8f83
+	ld c, a
+	call Functionb8f8f
+	ld hl, UnknownText_0xb9191
+	ld a, $43
+	jp NextRadioLine
+
+Functionb8f8f: ; b8f8f
+	ld a, c
+	swap a
+	and $f
+	ld hl, Unknown_b8ff9
+	ld d, 0
+	ld e, a
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hli]
+	ld b, a
+	push hl
+	inc hl
+	ld a, c
+	and $f
+	ld c, a
+	push hl
+	ld hl, Jumptable_b8fb8
+	ld e, b
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop de
+	call _hl_
+	pop hl
+	ld c, [hl]
+	ret
+; b8fb8
+
+
+Jumptable_b8fb8: ; b8fb8 (2e:4fb8)
+	dw Functionb8fc0
+	dw Functionb8fc7
+	dw Functionb8fce
+	dw Functionb8fde
+
+
+Functionb8fc0: ; b8fc0 (2e:4fc0)
+	call Functionb8fd5
+	call GetPokemonName
+	ret
+
+Functionb8fc7: ; b8fc7 (2e:4fc7)
+	call Functionb8fd5
+	call GetItemName
+	ret
+
+Functionb8fce: ; b8fce (2e:4fce)
+	call Functionb8fd5
+	call GetMoveName
+	ret
+
+Functionb8fd5: ; b8fd5 (2e:4fd5)
+	ld h, 0
+	ld l, c
+	add hl, de
+	ld a, [hl]
+	ld [wd265], a
+	ret
+
+Functionb8fde: ; b8fde (2e:4fde)
+	ld a, c
+	and a
+	jr z, .asm_b8feb
+.asm_b8fe2
+	ld a, [de]
+	inc de
+	cp $50
+	jr nz, .asm_b8fe2
+	dec c
+	jr nz, .asm_b8fe2
+.asm_b8feb
+	ld hl, StringBuffer1
+.asm_b8fee
+	ld a, [de]
+	inc de
+	ld [hli], a
+	cp $50
+	jr nz, .asm_b8fee
+	ld de, StringBuffer1
+	ret
+; b8ff9 (2e:4ff9)
+
+Unknown_b8ff9: ; b8ff9
+	dw Unknown_b900f
+	dw Unknown_b9014
+	dw Unknown_b9019
+	dw Unknown_b901e
+	dw Unknown_b9023
+	dw Unknown_b9028
+	dw Unknown_b902d
+	dw Unknown_b905a
+	dw Unknown_b906d
+	dw Unknown_b9072
+	dw Unknown_b9077
+; b900f
+
+Unknown_b900f: db 0, 10, CYNDAQUIL, TOTODILE, CHIKORITA
+Unknown_b9014: db 1, 12, FRESH_WATER, SODA_POP, LEMONADE
+Unknown_b9019: db 1, 12, POTION, ANTIDOTE, PARLYZ_HEAL
+Unknown_b901e: db 1, 12, POKE_BALL, GREAT_BALL, ULTRA_BALL
+Unknown_b9023: db 0, 10, PIKACHU, RATTATA, GEODUDE
+Unknown_b9028: db 0, 10, HOOTHOOT, SPINARAK, DROWZEE
+Unknown_b902d: db 3, 16, "NEW BARK TOWN@", "CHERRYGROVE CITY@", "AZALEA TOWN@"
+Unknown_b905a: db 3,  6, "FLYING@", "BUG@", "GRASS@"
+Unknown_b906d: db 2, 12, TACKLE, GROWL, MUD_SLAP
+Unknown_b9072: db 1, 12, X_ATTACK, X_DEFEND, X_SPEED
+Unknown_b9077: db 3, 13, "#MON Talk@", "#MON Music@", "Lucky Channel@"
+; b909c
+
+Functionb909c: ; b909c (2e:509c)
+	ld hl, UnknownText_0xb9196
+	ld a, $44
+	jp NextRadioLine
+
+Functionb90a4: ; b90a4 (2e:50a4)
+	ld hl, UnknownText_0xb919b
+	ld a, $45
+	jp NextRadioLine
+
+Functionb90ac: ; b90ac (2e:50ac)
+	call Functionb9169
+	ld hl, UnknownText_0xb91a0
+	jr c, Functionb90b9
+	ld a, $4
+	jp NextRadioLine
+
+Functionb90b9: ; b90b9 (2e:50b9)
+	push hl
+	ld hl, WeeklyFlags
+	res 7, [hl]
+	pop hl
+	ld a, $46
+	jp NextRadioLine
+
+Functionb90c5: ; b90c5 (2e:50c5)
+	ld hl, WeeklyFlags
+	res 7, [hl]
+	ld hl, UnknownText_0xb91d2
+	ld a, $47
+	jp NextRadioLine
+
+Functionb90d2: ; b90d2 (2e:50d2)
+	ld hl, UnknownText_0xb91a5
+	ld a, $48
+	jp NextRadioLine
+
+Functionb90da: ; b90da (2e:50da)
+	ld hl, UnknownText_0xb91aa
+	ld a, $49
+	jp NextRadioLine
+
+Functionb90e2: ; b90e2 (2e:50e2)
+	ld hl, UnknownText_0xb91af
+	ld a, $4a
+	jp NextRadioLine
+
+Functionb90ea: ; b90ea (2e:50ea)
+	ld hl, UnknownText_0xb91b4
+	ld a, $4b
+	jp NextRadioLine
+
+Functionb90f2: ; b90f2 (2e:50f2)
+	ld hl, UnknownText_0xb91b9
+	ld a, $4c
+	jp NextRadioLine
+
+Functionb90fa: ; b90fa (2e:50fa)
+	ld hl, UnknownText_0xb91be
+	ld a, $4d
+	jp NextRadioLine
+
+Functionb9102: ; b9102 (2e:5102)
+	ld hl, UnknownText_0xb91c3
+	ld a, $4e
+	jp NextRadioLine
+
+Functionb910a: ; b910a (2e:510a)
+	ld hl, UnknownText_0xb91c8
+	ld a, $4f
+	jp NextRadioLine
+
+Functionb9112: ; b9112 (2e:5112)
+	ld hl, UnknownText_0xb91cd
+	ld a, $50
+	jp NextRadioLine
+
+Functionb911a: ; b911a (2e:511a)
+	ld hl, UnknownText_0xb91d2
+	ld a, $51
+	jp NextRadioLine
+
+Functionb9122: ; b9122 (2e:5122)
+	ld hl, UnknownText_0xb91d2
+	ld a, $52
+	jp NextRadioLine
+
+Functionb912a: ; b912a (2e:512a)
+	ld a, [hBGMapMode] ; $ff00+$d4
+	push af
+	callba NoRadioMusic
+	callba NoRadioName
+	pop af
+	ld [hBGMapMode], a ; $ff00+$d4
+	ld hl, WeeklyFlags
+	res 7, [hl]
+	ld a, $4
+	ld [wd002], a
+	xor a
+	ld [wd005], a
+	ld hl, UnknownText_0xb91d7
+	ld a, $53
+	jp NextRadioLine
+
+Functionb9152: ; b9152 (2e:5152)
+	ld a, $4
+	ld [wd002], a
+	xor a
+	ld [wd005], a
+	call Functionb9169
+	jp nc, Functionb8f12
+	ld hl, UnknownText_0xb91d7
+	ld a, $53
+	jp NextRadioLine
+
+Functionb9169: ; b9169 (2e:5169)
+	call UpdateTime
+	ld a, [hHours] ; $ff00+$94
+	cp $12
+	ret
+; b9171 (2e:5171)
+
+String_b9171:
+	db "BUENA'S PASSWORD@"
+; b9182
+
+UnknownText_0xb9182: ; 0xb9182
+	; BUENA: BUENA here!
+	text_jump UnknownText_0x1bce72
+	db "@"
+; 0xb9187
+
+UnknownText_0xb9187: ; 0xb9187
+	; Today's password!
+	text_jump UnknownText_0x1bce87
+	db "@"
+; 0xb918c
+
+UnknownText_0xb918c: ; 0xb918c
+	; Let me think… It's
+	text_jump UnknownText_0x1bce9a
+	db "@"
+; 0xb9191
+
+UnknownText_0xb9191: ; 0xb9191
+	; @ !
+	text_jump UnknownText_0x1bceae
+	db "@"
+; 0xb9196
+
+UnknownText_0xb9196: ; 0xb9196
+	; Don't forget it!
+	text_jump UnknownText_0x1bceb7
+	db "@"
+; 0xb919b
+
+UnknownText_0xb919b: ; 0xb919b
+	; I'm in GOLDENROD's
+	text_jump UnknownText_0x1bcec9
+	db "@"
+; 0xb91a0
+
+UnknownText_0xb91a0: ; 0xb91a0
+	; RADIO TOWER!
+	text_jump UnknownText_0x1bcedc
+	db "@"
+; 0xb91a5
+
+UnknownText_0xb91a5: ; 0xb91a5
+	; BUENA: Oh my…
+	text_jump UnknownText_0x1bceeb
+	db "@"
+; 0xb91aa
+
+UnknownText_0xb91aa: ; 0xb91aa
+	; It's midnight! I
+	text_jump UnknownText_0x1bcefb
+	db "@"
+; 0xb91af
+
+UnknownText_0xb91af: ; 0xb91af
+	; have to shut down!
+	text_jump UnknownText_0x1bcf0d
+	db "@"
+; 0xb91b4
+
+UnknownText_0xb91b4: ; 0xb91b4
+	; Thanks for tuning
+	text_jump UnknownText_0x1bcf22
+	db "@"
+; 0xb91b9
+
+UnknownText_0xb91b9: ; 0xb91b9
+	; in to the end! But
+	text_jump UnknownText_0x1bcf36
+	db "@"
+; 0xb91be
+
+UnknownText_0xb91be: ; 0xb91be
+	; don't stay up too
+	text_jump UnknownText_0x1bcf4b
+	db "@"
+; 0xb91c3
+
+UnknownText_0xb91c3: ; 0xb91c3
+	; late! Presented to
+	text_jump UnknownText_0x1bcf5e
+	db "@"
+; 0xb91c8
+
+UnknownText_0xb91c8: ; 0xb91c8
+	; you by DJ BUENA!
+	text_jump UnknownText_0x1bcf73
+	db "@"
+; 0xb91cd
+
+UnknownText_0xb91cd: ; 0xb91cd
+	; I'm outta here!
+	text_jump UnknownText_0x1bcf86
+	db "@"
+; 0xb91d2
+
+UnknownText_0xb91d2: ; 0xb91d2
+	; …
+	text_jump UnknownText_0x1bcf96
+	db "@"
+; 0xb91d7
+
+UnknownText_0xb91d7: ; 0xb91d7
+	;
+	text_jump UnknownText_0x1bcf99
+	db "@"
+; 0xb91dc
+
+Functionb91dc: ; b91dc (2e:51dc)
+	ld a, [hl]
+	cp $16 ; TX_FAR
+	jp z, FarJumpText
+	ld de, wd00c
+	ld bc, $28
+	jp CopyBytes
+
+Functionb91eb: ; b91eb (2e:51eb)
+	ld a, [wd005]
+	and a
+	ret nz
+	call Function1052
+	call PrintText
+	ld hl, RadioChannelSongs
+	ld a, [wd002]
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	callab Function91854
+	ret
+; b920b (2e:520b)
+
+RadioChannelSongs: ; b920b
+	dw MUSIC_POKEMON_TALK
+	dw MUSIC_POKEMON_CENTER
+	dw MUSIC_TITLE
+	dw MUSIC_GAME_CORNER
+	dw MUSIC_BUENAS_PASSWORD
+	dw MUSIC_VIRIDIAN_CITY
+	dw MUSIC_BICYCLE
+	dw MUSIC_ROCKET_OVERTURE
+	dw MUSIC_POKE_FLUTE_CHANNEL
+	dw MUSIC_RUINS_OF_ALPH_RADIO
+	dw MUSIC_LAKE_OF_RAGE_ROCKET_RADIO
+; b9221
+
+NextRadioLine: ; b9221 (2e:5221)
+	push af
+	call Functionb91dc
+	pop af
+	jp Functionb86ea
+; b9229
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -1,9 +1,9 @@
 ; Event scripting commands.
 
 
-Function96c56:: ; 96c56
+EnableScriptMode:: ; 96c56
 	push af
-	ld a, 1
+	ld a, SCRIPT_READ
 	ld [ScriptMode], a
 	pop af
 	ret
@@ -346,7 +346,7 @@
 	faceplayer
 JumpTextScript: ; 0x96e7a
 	loadfont
-	repeattext $ff, $ff
+	repeattext -1, -1
 	closetext
 	loadmovesprites
 	end
@@ -385,7 +385,7 @@
 	ld h, a
 	ld a, [ScriptBank]
 	ld b, a
-	call Function269a
+	call MapTextbox
 	ret
 ; 0x96eab
 
@@ -400,7 +400,7 @@
 	ld l, a
 	call GetScriptByte
 	ld h, a
-	call Function269a
+	call MapTextbox
 	ret
 ; 0x96ebb
 
@@ -414,11 +414,11 @@
 	ld l, a
 	call GetScriptByte
 	ld h, a
-	cp $ff
-	jr nz, .asm_96ed8 ; 0x96ec5 $11
+	cp -1
+	jr nz, .done ; 0x96ec5 $11
 	ld a, l
-	cp $ff
-	jr nz, .asm_96ed8 ; 0x96eca $c
+	cp -1
+	jr nz, .done ; 0x96eca $c
 	ld hl, wd44e
 	ld a, [hli]
 	ld b, a
@@ -425,9 +425,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call Function269a
+	call MapTextbox
 	ret
-.asm_96ed8
+.done
 	ret
 ; 0x96ed9
 
@@ -434,7 +434,7 @@
 Script_closetext: ; 0x96ed9
 ; script command 0x54
 
-	jp Functiona46
+	jp CloseText
 ; 0x96edc
 
 Script_keeptextopen: ; 0x96edc
@@ -445,7 +445,7 @@
 	ld a, $1
 	ld [$ffd8], a
 	call WaitBGMap
-	call Functionaaf
+	call KeepTextOpen
 	pop af
 	ld [$ffd8], a
 	ret
@@ -456,9 +456,9 @@
 
 	call YesNoBox
 	ld a, 0
-	jr c, .asm_96ef6 ; 0x96ef2 $2
+	jr c, .no ; 0x96ef2 $2
 	ld a, 1
-.asm_96ef6
+.no
 	ld [ScriptVar], a
 	ret
 ; 0x96efa
@@ -474,8 +474,8 @@
 	ld h, a
 	ld de, LoadMenuDataHeader
 	ld a, [ScriptBank]
-	call Function26b7
-	call Function1ad2
+	call Call_a_de
+	call DrawOnMap
 	ret
 ; 0x96f0f
 
@@ -482,8 +482,8 @@
 Script_writebackup: ; 0x96f0f
 ; script command 0x50
 
-	call Function1c17
-	call Function1ad2
+	call WriteBackup
+	call DrawOnMap
 	ret
 ; 0x96f16
 
@@ -498,7 +498,7 @@
 	ld a, [ScriptVar]
 .ok
 	ld [CurPartySpecies], a
-	callba Function244e3
+	callba Pokepic
 	ret
 ; 0x96f29
 
@@ -505,7 +505,7 @@
 Script_pokepicyesorno: ; 0x96f29
 ; script command 0x57
 
-	callba Function24528
+	callba PokepicYesOrNo
 	ret
 ; 0x96f30
 
@@ -513,7 +513,7 @@
 ; script command 0x59
 
 	ld a, [ScriptBank]
-	ld hl, Function1d81
+	ld hl, InterpretMenu2
 	rst FarCall
 	ld a, [wcfa9]
 	jr nc, .ok
@@ -527,7 +527,7 @@
 ; script command 0x58
 
 	ld a, [ScriptBank]
-	ld hl, Function202a
+	ld hl, InterpretMenu
 	rst FarCall
 	ld a, [wcf88]
 	jr nc, .ok
@@ -543,10 +543,10 @@
 ;     pointer (PointerLabelBeforeBank)
 ;     memory (SingleByteParam)
 
-	call Function106c
+	call SetUpTextBox
 	call GetScriptByte
 	ld c, a
-	callba Function11c000
+	callba StoreText
 	ret
 ; 0x96f60
 
@@ -559,8 +559,8 @@
 	call Script_giveitem
 	call CurItemName
 	ld de, StringBuffer1
-	ld a, $1
-	call Function976c8
+	ld a, 1
+	call CopyConvertedText
 	ld b, BANK(GiveItemScript)
 	ld de, GiveItemScript
 	jp ScriptCall
@@ -600,18 +600,18 @@
 ;     var (SingleByteParam)
 
 	call GetScriptByte
-	cp $ff
+	cp -1
 	jr nz, .ok
 	ld a, [ScriptVar]
 .ok
 	ld [CurItem], a
 	call GetScriptByte
-	call Function9769e
+	call GetVarAction
 	ld a, [de]
 	ld [wd10c], a
 	ld hl, NumItems
 	call ReceiveItem
-	ld a, $1
+	ld a, 1
 	jr c, .ok2
 	xor a
 .ok2
@@ -618,8 +618,8 @@
 	ld [ScriptVar], a
 	call CurItemName
 	ld de, StringBuffer1
-	ld a, $1
-	call Function976c8
+	ld a, 1
+	call CopyConvertedText
 	ld b, BANK(GiveItemScript)
 	ld de, GiveItemScript
 	jp ScriptCall
@@ -632,7 +632,7 @@
 	call CurItemName
 	ld b, BANK(PutItemInPocketText)
 	ld hl, PutItemInPocketText
-	call Function269a
+	call MapTextbox
 	ret
 ; 0x96fd5
 
@@ -643,7 +643,7 @@
 	call CurItemName
 	ld b, BANK(PocketIsFullText)
 	ld hl, PocketIsFullText
-	call Function269a
+	call MapTextbox
 	ret
 ; 0x96fe4
 
@@ -746,7 +746,7 @@
 	ld d, a
 	ld a, [ScriptBank]
 	ld b, a
-	callba Function1342d
+	callba Elevator
 	ret c
 	ld a, $1
 	ld [ScriptVar], a
@@ -775,7 +775,7 @@
 	ld d, a
 	ld a, [ScriptBank]
 	ld b, a
-	callba Function9029a
+	callba PhoneCall
 	ret
 ; 0x970b7
 
@@ -782,7 +782,7 @@
 Script_hangup: ; 0x970b7
 ; script command 0x99
 
-	callba Function902eb
+	callba HangUp
 	ret
 ; 0x970be
 
@@ -792,20 +792,20 @@
 ;     number (SingleByteParam)
 
 	call YesNoBox
-	jr c, .asm_970d6 ; 0x970c1 $13
+	jr c, .refused ; 0x970c1 $13
 	call GetScriptByte
 	ld c, a
-	callba Function90000
-	jr c, .asm_970d2 ; 0x970cd $3
+	callba AddPhoneNumber
+	jr c, .phonefull ; 0x970cd $3
 	xor a
-	jr .asm_970db ; 0x970d0 $9
-.asm_970d2
-	ld a, $1
-	jr .asm_970db ; 0x970d4 $5
-.asm_970d6
+	jr .done ; 0x970d0 $9
+.phonefull
+	ld a, 1
+	jr .done ; 0x970d4 $5
+.refused
 	call GetScriptByte
-	ld a, $2
-.asm_970db
+	ld a, 2
+.done
 	ld [ScriptVar], a
 	ret
 ; 0x970df
@@ -817,7 +817,7 @@
 
 	call GetScriptByte
 	ld b, a
-	callba Function26f59
+	callba DescribeDecoration
 	ld h, d
 	ld l, e
 	jp ScriptJump
@@ -848,7 +848,7 @@
 	ld d, a
 	call GetScriptByte
 	ld e, a
-	callba Functionc403
+	callba LoadWildData
 	ret
 ; 0x9710f
 
@@ -859,16 +859,17 @@
 
 	call GetScriptByte
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, WalkingX
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	ld a, [EngineBuffer1]
 	ld b, a
-	call Function269a
+	call MapTextbox
 	ret
 ; 0x97125
 
@@ -901,7 +902,7 @@
 	ld a, c
 	and a
 	ret z
-	ld a, $1
+	ld a, 1
 	ld [ScriptVar], a
 	ret
 ; 0x9714c
@@ -912,12 +913,12 @@
 ;     win_text_pointer (TextPointerLabelParam)
 ;     loss_text_pointer (TextPointerLabelParam)
 
-	ld hl, WalkingTile
+	ld hl, wWinTextPointer ; d047
 	call GetScriptByte
 	ld [hli], a
 	call GetScriptByte
 	ld [hli], a
-	ld hl, wd048 + 1
+	ld hl, wLossTextPointer ; d049; this is unnecessary
 	call GetScriptByte
 	ld [hli], a
 	call GetScriptByte
@@ -937,7 +938,7 @@
 Script_talkaftercheck: ; 0x9716b
 ; script command 0x67
 
-	ld a, $1
+	ld a, 1
 	ld [ScriptVar], a
 	ld a, [wd04d]
 	and a
@@ -1042,7 +1043,7 @@
 	ret
 ; 0x971e3
 
-Function971e3: ; 0x971e3
+GetScriptPerson: ; 0x971e3
 	and a
 	ret z
 	cp $fe
@@ -1057,7 +1058,7 @@
 ;     person (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	ld [$ffe0], a
 	ret
 ; 0x971f3
@@ -1069,17 +1070,17 @@
 ;     data (MovementPointerLabelParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	ld c, a
 ; 971fa
 
-Function971fa: ; 971fa
+ApplyMovement: ; 971fa
 	push bc
 	ld a, c
-	callba Function585c
+	callba SetFlagsForMovement_1
 	pop bc
 	push bc
-	call Function97221
+	call SetFlagsForMovement_2
 	pop bc
 	call GetScriptByte
 	ld l, a
@@ -1087,7 +1088,7 @@
 	ld h, a
 	ld a, [ScriptBank]
 	ld b, a
-	call Function26c7
+	call GetMovementData
 	ret c
 	ld a, SCRIPT_WAIT_MOVEMENT
 	ld [ScriptMode], a
@@ -1095,8 +1096,8 @@
 	ret
 ; 0x97221
 
-Function97221: ; 0x97221
-	callba Function5897
+SetFlagsForMovement_2: ; 0x97221
+	callba _SetFlagsForMovement_2
 	ret
 ; 0x97228
 
@@ -1107,7 +1108,7 @@
 
 	ld a, [$ffe0]
 	ld c, a
-	jp Function971fa
+	jp ApplyMovement
 ; 0x9722e
 
 Script_faceplayer: ; 0x9722e
@@ -1119,14 +1120,15 @@
 	ld d, $0
 	ld a, [$ffe0]
 	ld e, a
-	callba Function8417
+	callba GetRelativeFacing
 	ld a, d
+rept 2
 	add a
-	add a
+endr
 	ld e, a
 	ld a, [$ffe0]
 	ld d, a
-	call Function9728b
+	call ApplyPersonFacing
 	ret
 ; 0x97248
 
@@ -1137,7 +1139,7 @@
 ;     person2 (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	cp $fe
 	jr c, .asm_97254 ; 0x97250 $2
 	ld a, [$ffe0]
@@ -1144,7 +1146,7 @@
 .asm_97254
 	ld e, a
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	cp $fe
 	jr nz, .asm_97261 ; 0x9725d $2
 	ld a, [$ffe0]
@@ -1151,15 +1153,16 @@
 .asm_97261
 	ld d, a
 	push de
-	callba Function8417
+	callba GetRelativeFacing
 	pop bc
 	ret c
 	ld a, d
+rept 2
 	add a
-	add a
+endr
 	ld e, a
 	ld d, c
-	call Function9728b
+	call ApplyPersonFacing
 	ret
 ; 0x97274
 
@@ -1170,7 +1173,7 @@
 ;     facing (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	cp $fe
 	jr nz, .asm_97280 ; 0x9727c $2
 	ld a, [$ffe0]
@@ -1177,40 +1180,41 @@
 .asm_97280
 	ld d, a
 	call GetScriptByte
+rept 2
 	add a
-	add a
+endr
 	ld e, a
-	call Function9728b
+	call ApplyPersonFacing
 	ret
 ; 0x9728b
 
-Function9728b: ; 0x9728b
+ApplyPersonFacing: ; 0x9728b
 	ld a, d
 	push de
 	call Function18de
-	jr c, .asm_972b9 ; 0x97290 $27
-	ld hl, $0000
+	jr c, .not_visible ; 0x97290 $27
+	ld hl, OBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	push bc
 	call Function1836
 	pop bc
-	jr c, .asm_972b9 ; 0x9729c $1b
-	ld hl, $0004
+	jr c, .not_visible ; 0x9729c $1b
+	ld hl, OBJECT_04
 	add hl, bc
 	bit 2, [hl]
-	jr nz, .asm_972b9 ; 0x972a4 $13
+	jr nz, .not_visible ; 0x972a4 $13
 	pop de
 	ld a, e
-	call Function1af8
+	call SetSpriteDirection
 	ld hl, VramState
 	bit 6, [hl]
 	jr nz, .asm_972b5 ; 0x972b0 $3
 	call Function972bc
 .asm_972b5
-	call Function1ad2
+	call DrawOnMap
 	ret
-.asm_972b9
+.not_visible
 	pop de
 	scf
 	ret
@@ -1252,11 +1256,11 @@
 ;     person (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
-	call Function1956
+	call GetScriptPerson
+	call _CopyObjectStruct
 	ld a, [$ffaf]
-	ld b, $0
-	call Function9730b
+	ld b, 0 ; clear
+	call ApplyEventActionAppearDisappear
 	ret
 ; 0x972ee
 
@@ -1266,36 +1270,36 @@
 ;     person (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
-	cp $fe
-	jr nz, .asm_972fa ; 0x972f6 $2
+	call GetScriptPerson
+	cp -2
+	jr nz, .skip ; 0x972f6 $2
 	ld a, [$ffe0]
-.asm_972fa
-	call Function199f
+.skip
+	call DeleteObjectStruct
 	ld a, [$ffaf]
-	ld b, $1
-	call Function9730b
-	callba Function5920
+	ld b, 1 ; set
+	call ApplyEventActionAppearDisappear
+	callba RefreshMapAppearDisappear
 	ret
 ; 0x9730b
 
-Function9730b: ; 0x9730b
+ApplyEventActionAppearDisappear: ; 0x9730b
 	push bc
 	call GetMapObject
-	ld hl, $000c
+	ld hl, MAPOBJECT_EVENT_FLAG
 	add hl, bc
 	pop bc
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld a, $ff
+	ld a, -1
 	cp e
-	jr nz, .asm_97321 ; 0x9731a $5
+	jr nz, .okay ; 0x9731a $5
 	cp d
-	jr nz, .asm_97321 ; 0x9731d $2
+	jr nz, .okay ; 0x9731d $2
 	xor a
 	ret
-.asm_97321
+.okay
 	call EventFlagAction
 	ret
 ; 0x97325
@@ -1307,10 +1311,10 @@
 ;     person1 (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	ld b, a
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	ld c, a
 	callba Function5803
 	ret
@@ -1331,7 +1335,7 @@
 ;     y (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	ld b, a
 	call GetScriptByte
 	add $4
@@ -1349,7 +1353,7 @@
 ;     person (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	cp $fe
 	jr nz, .asm_97367 ; 0x97363 $2
 	ld a, [$ffe0]
@@ -1366,10 +1370,10 @@
 ;     person1 (SingleByteParam)
 
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	ld b, a
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	ld c, a
 	callba Function839e
 	ret
@@ -1400,7 +1404,7 @@
 	call GetScriptByte
 	ld [ScriptVar], a
 	call GetScriptByte
-	call Function971e3
+	call GetScriptPerson
 	cp $fe
 	jr z, .asm_973a8 ; 0x973a4 $2
 	ld [$ffe0], a
@@ -1525,7 +1529,7 @@
 Script_startbattle: ; 0x97436
 ; script command 0x5f
 
-	call Function2879
+	call BufferScreen
 	predef StartBattle
 	ld a, [wd0ee]
 	and $3f
@@ -1540,7 +1544,7 @@
 
 	call GetScriptByte
 	ld [BattleType], a
-	call Function2879
+	call BufferScreen
 	callba Function4e554
 	jp Script_reloadmap
 ; 0x97459
@@ -1582,7 +1586,7 @@
 	ld a, $f3
 	ld [$ff9f], a
 	ld a, $1
-	call Function261b
+	call LoadMapStatus
 	call StopScript
 	ret
 ; 0x974a2
@@ -1638,9 +1642,9 @@
 	inc [hl]
 	ld d, $0
 	ld hl, wd43d
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	pop de
 	ld a, [ScriptBank]
 	ld [hli], a
@@ -1811,9 +1815,9 @@
 	call GetScriptByte
 	ld d, a
 	ld hl, StdScripts
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, BANK(StdScripts)
 	call GetFarByte
 	ld b, a
@@ -1858,7 +1862,7 @@
 Script_checktriggers: ; 0x975c2
 ; script command 0x13
 
-	call Function211b
+	call CheckTriggers
 	jr z, .asm_975cb ; 0x975c5 $4
 	ld [ScriptVar], a
 	ret
@@ -2051,7 +2055,7 @@
 ;     variable_id (SingleByteParam)
 
 	call GetScriptByte
-	call Function9769e
+	call GetVarAction
 	ld a, [de]
 	ld [ScriptVar], a
 	ret
@@ -2063,7 +2067,7 @@
 ;     variable_id (SingleByteParam)
 
 	call GetScriptByte
-	call Function9769e
+	call GetVarAction
 	ld a, [ScriptVar]
 	ld [de], a
 	ret
@@ -2076,15 +2080,15 @@
 ;     value (SingleByteParam)
 
 	call GetScriptByte
-	call Function9769e
+	call GetVarAction
 	call GetScriptByte
 	ld [de], a
 	ret
 ; 0x9769e
 
-Function9769e: ; 0x9769e
+GetVarAction: ; 0x9769e
 	ld c, a
-	callba Function80648
+	callba _GetVarAction
 	ret
 ; 0x976a6
 
@@ -2103,19 +2107,19 @@
 Script_pokenamemem: ; 0x976ae
 ; script command 0x40
 ; parameters:
-;     pokemon (PokemonParam)
+;     pokemon (PokemonParam); leave $0 to draw from script var
 ;     memory (SingleByteParam)
 
 	call GetScriptByte
 	and a
-	jr nz, .asm_976b7 ; 0x976b2 $3
+	jr nz, .gotit ; 0x976b2 $3
 	ld a, [ScriptVar]
-.asm_976b7
+.gotit
 	ld [wd265], a
 	call GetPokemonName
 	ld de, StringBuffer1
 
-Unknown_976c0: ; 0x976c0
+ConvertMemToText: ; 0x976c0
 	call GetScriptByte
 	cp 3
 	jr c, .ok
@@ -2122,9 +2126,9 @@
 	xor a
 .ok
 
-Function976c8: ; 976c8
+CopyConvertedText: ; 976c8
 	ld hl, StringBuffer3
-	ld bc, 19
+	ld bc, StringBuffer4 - StringBuffer3
 	call AddNTimes
 	call CopyName2
 	ret
@@ -2138,13 +2142,13 @@
 
 	call GetScriptByte
 	and a
-	jr nz, .asm_976de ; 0x976d9 $3
+	jr nz, .ok ; 0x976d9 $3
 	ld a, [ScriptVar]
-.asm_976de
+.ok
 	ld [wd265], a
 	call GetItemName
 	ld de, StringBuffer1
-	jr Unknown_976c0 ; 0x976e7 $d7
+	jr ConvertMemToText ; 0x976e7 $d7
 ; 0x976e9
 
 Script_mapnametotext: ; 0x976e9
@@ -2158,11 +2162,11 @@
 	ld c, a
 	call GetWorldMapLocation
 
-Unknown_976f4: ; 0x976f4
+ConvertLandmarkToText: ; 0x976f4
 	ld e, a
 	callba GetLandmarkName
 	ld de, StringBuffer1
-	jp Unknown_976c0
+	jp ConvertMemToText
 ; 0x97701
 
 Script_displaylocation: ; 0x97701
@@ -2172,7 +2176,7 @@
 ;     memory (SingleByteParam)
 
 	call GetScriptByte
-	jr Unknown_976f4 ; 0x97704 $ee
+	jr ConvertLandmarkToText ; 0x97704 $ee
 ; 0x97706
 
 Script_trainertotext: ; 0x97706
@@ -2186,8 +2190,8 @@
 	ld c, a
 	call GetScriptByte
 	ld b, a
-	callba Function3994c
-	jr Unknown_976c0 ; 0x97714 $aa
+	callba GetTrainerName
+	jr ConvertMemToText ; 0x97714 $aa
 ; 0x97716
 
 Script_name: ; 0x97716
@@ -2200,12 +2204,12 @@
 	call GetScriptByte
 	ld [wcf61], a
 
-Unknown_9771c: ; 0x9771c
+ContinueToGetName: ; 0x9771c
 	call GetScriptByte
 	ld [CurSpecies], a
 	call GetName
 	ld de, StringBuffer1
-	jp Unknown_976c0
+	jp ConvertMemToText
 ; 0x9772b
 
 Script_trainerclassname: ; 0x9772b
@@ -2216,7 +2220,7 @@
 
 	ld a, TRAINER_NAME
 	ld [wcf61], a
-	jr Unknown_9771c ; 0x97730 $ea
+	jr ContinueToGetName ; 0x97730 $ea
 ; 0x97732
 
 Script_readmoney: ; 0x97732
@@ -2225,13 +2229,13 @@
 ;     account (SingleByteParam)
 ;     memory (SingleByteParam)
 
-	call Function97771
-	call Function97861
+	call ResetStringBuffer1
+	call GetMoneyAccount
 	ld hl, StringBuffer1
 	ld bc, $4306
 	call PrintNum
 	ld de, StringBuffer1
-	jp Unknown_976c0
+	jp ConvertMemToText
 ; 0x97747
 
 Script_readcoins: ; 0x97747
@@ -2239,13 +2243,13 @@
 ; parameters:
 ;     memory (SingleByteParam)
 
-	call Function97771
+	call ResetStringBuffer1
 	ld hl, StringBuffer1
 	ld de, Coins
 	ld bc, $4206
 	call PrintNum
 	ld de, StringBuffer1
-	jp Unknown_976c0
+	jp ConvertMemToText
 ; 0x9775c
 
 Script_RAM2MEM: ; 0x9775c
@@ -2253,18 +2257,18 @@
 ; parameters:
 ;     memory (SingleByteParam)
 
-	call Function97771
+	call ResetStringBuffer1
 	ld de, ScriptVar
 	ld hl, StringBuffer1
 	ld bc, $4103
 	call PrintNum
 	ld de, StringBuffer1
-	jp Unknown_976c0
+	jp ConvertMemToText
 ; 0x97771
 
-Function97771: ; 0x97771
+ResetStringBuffer1: ; 0x97771
 	ld hl, StringBuffer1
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	ld a, "@"
 	call ByteFill
 	ret
@@ -2284,7 +2288,7 @@
 	ld hl, CopyName1
 	rst FarCall
 	ld de, StringBuffer2
-	jp Unknown_976c0
+	jp ConvertMemToText
 ; 0x97792
 
 Script_givepokeitem: ; 0x97792
@@ -2301,12 +2305,12 @@
 	ld b, a
 	push bc
 	inc hl
-	ld bc, $0020
+	ld bc, MAIL_MAX_LENGTH
 	ld de, wd002
 	ld a, [ScriptBank]
 	call FarCopyBytes
 	pop bc
-	callba Function446cc
+	callba GivePokeItem
 	ret
 ; 0x977b7
 
@@ -2332,20 +2336,20 @@
 ;     quantity (SingleByteParam)
 
 	call GetScriptByte
-	cp $ff
-	jr nz, .asm_977d4 ; 0x977cf $3
+	cp -1
+	jr nz, .ok ; 0x977cf $3
 	ld a, [ScriptVar]
-.asm_977d4
+.ok
 	ld [CurItem], a
 	call GetScriptByte
 	ld [wd10c], a
 	ld hl, NumItems
 	call ReceiveItem
-	jr nc, .asm_977eb ; 0x977e3 $6
+	jr nc, .full ; 0x977e3 $6
 	ld a, $1
 	ld [ScriptVar], a
 	ret
-.asm_977eb
+.full
 	xor a
 	ld [ScriptVar], a
 	ret
@@ -2396,9 +2400,9 @@
 ;     account (SingleByteParam)
 ;     money (MoneyByteParam)
 
-	call Function97861
-	call Function9786d
-	callba Function15fd7
+	call GetMoneyAccount
+	call LoadMoneyAmountToMem
+	callba GiveMoney
 	ret
 ; 0x97836
 
@@ -2408,9 +2412,9 @@
 ;     account (SingleByteParam)
 ;     money (MoneyByteParam)
 
-	call Function97861
-	call Function9786d
-	callba Function15ffa
+	call GetMoneyAccount
+	call LoadMoneyAmountToMem
+	callba TakeMoney
 	ret
 ; 0x97843
 
@@ -2420,12 +2424,12 @@
 ;     account (SingleByteParam)
 ;     money (MoneyByteParam)
 
-	call Function97861
-	call Function9786d
-	callba Function1600b
+	call GetMoneyAccount
+	call LoadMoneyAmountToMem
+	callba CheckMoney
 ; 0x9784f
 
-Unknown_9784f: ; 0x9784f
+CheckMoneyAction: ; 0x9784f
 	jr c, .two
 	jr z, .one
 	ld a, 0
@@ -2440,7 +2444,7 @@
 	ret
 ; 0x97861
 
-Function97861: ; 0x97861
+GetMoneyAccount: ; 0x97861
 	call GetScriptByte
 	and a
 	ld de, Money
@@ -2449,8 +2453,8 @@
 	ret
 ; 0x9786d
 
-Function9786d: ; 0x9786d
-	ld bc, $ffc3
+LoadMoneyAmountToMem: ; 0x9786d
+	ld bc, hMoneyTemp
 	push bc
 	call GetScriptByte
 	ld [bc], a
@@ -2469,8 +2473,8 @@
 ; parameters:
 ;     coins (CoinByteParam)
 
-	call Function978a0
-	callba Function1606f
+	call LoadCoinAmountToMem
+	callba GiveCoins
 	ret
 ; 0x9788b
 
@@ -2479,8 +2483,8 @@
 ; parameters:
 ;     coins (CoinByteParam)
 
-	call Function978a0
-	callba Function1608f
+	call LoadCoinAmountToMem
+	callba TakeCoins
 	ret
 ; 0x97895
 
@@ -2489,17 +2493,17 @@
 ; parameters:
 ;     coins (CoinByteParam)
 
-	call Function978a0
-	callba Function160a1
-	jr Unknown_9784f
+	call LoadCoinAmountToMem
+	callba CheckCoins
+	jr CheckMoneyAction
 ; 978a0
 
-Function978a0: ; 978a0
+LoadCoinAmountToMem: ; 978a0
 	call GetScriptByte
 	ld [$ffc4], a
 	call GetScriptByte
-	ld [$ffc3], a
-	ld bc, $ffc3
+	ld [hMoneyTemp], a
+	ld bc, hMoneyTemp
 	ret
 ; 0x978ae
 
@@ -2510,7 +2514,7 @@
 
 	xor a
 	ld [ScriptVar], a
-	callba Functionc000
+	callba CheckTime
 	call GetScriptByte
 	and c
 	ret z
@@ -2545,7 +2549,7 @@
 	ld [ScriptVar], a
 	call GetScriptByte
 	ld c, a
-	callba Function90000
+	callba AddPhoneNumber
 	ret nc
 	ld a, $1
 	ld [ScriptVar], a
@@ -2561,7 +2565,7 @@
 	ld [ScriptVar], a
 	call GetScriptByte
 	ld c, a
-	callba Function9000f
+	callba DelCellNum
 	ret nc
 	ld a, $1
 	ld [ScriptVar], a
@@ -2572,12 +2576,13 @@
 ; script command 0x2a
 ; parameters:
 ;     person (SingleByteParam)
+; returns false if the cell number is not in your phone
 
 	xor a
 	ld [ScriptVar], a
 	call GetScriptByte
 	ld c, a
-	callba Function90019
+	callba CheckCellNum
 	ret nc
 	ld a, $1
 	ld [ScriptVar], a
@@ -2590,16 +2595,17 @@
 ;     call_id (MultiByteParam)
 
 	call GetScriptByte
-	ld [wdc31], a
+	ld [wSpecialPhoneCallID], a
 	call GetScriptByte
-	ld [wdc31 + 1], a
+	ld [wSpecialPhoneCallID + 1], a
 	ret
 ; 0x97926
 
 Script_checkphonecall: ; 0x97926
 ; script command 0x9d
+; returns false if no special phone call is stored
 
-	ld a, [wdc31]
+	ld a, [wSpecialPhoneCallID]
 	and a
 	jr z, .ok
 	ld a, 1
@@ -2637,7 +2643,7 @@
 	call GetScriptByte
 	call GetScriptByte
 .ok
-	callba Functione277
+	callba GivePoke
 	ld a, b
 	ld [ScriptVar], a
 	ret
@@ -2648,6 +2654,7 @@
 ; parameters:
 ;     pkmn (PokemonParam)
 ;     level (DecimalParam)
+; if no room in the party, return 0 in ScriptVar; else, return 2
 
 	xor a
 	ld [ScriptVar], a
@@ -2658,7 +2665,7 @@
 	ld [CurPartyLevel], a
 	callba GiveEgg
 	ret nc
-	ld a, $2
+	ld a, 2
 	ld [ScriptVar], a
 	ret
 ; 0x97988
@@ -2672,7 +2679,7 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, $1
+	ld b, SET_FLAG
 	call EventFlagAction
 	ret
 ; 0x97996
@@ -2686,7 +2693,7 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, $0
+	ld b, RESET_FLAG
 	call EventFlagAction
 	ret
 ; 0x979a4
@@ -2700,13 +2707,13 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, $2
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
-	jr z, .asm_979b7 ; 0x979b3 $2
-	ld a, $1
-.asm_979b7
+	jr z, .false ; 0x979b3 $2
+	ld a, 1
+.false
 	ld [ScriptVar], a
 	ret
 ; 0x979bb
@@ -2720,8 +2727,8 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, $1
-	call Function979ee
+	ld b, 1 ; set
+	call _EngineFlagAction
 	ret
 ; 0x979c9
 
@@ -2734,8 +2741,8 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, $0
-	call Function979ee
+	ld b, 0 ; clear
+	call _EngineFlagAction
 	ret
 ; 0x979d7
 
@@ -2748,18 +2755,18 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, $2
-	call Function979ee
+	ld b, 2 ; check
+	call _EngineFlagAction
 	ld a, c
 	and a
-	jr z, .asm_979ea ; 0x979e6 $2
-	ld a, $1
-.asm_979ea
+	jr z, .false ; 0x979e6 $2
+	ld a, 1
+.false
 	ld [ScriptVar], a
 	ret
 ; 0x979ee
 
-Function979ee: ; 0x979ee
+_EngineFlagAction: ; 0x979ee
 	callba EngineFlagAction
 	ret
 ; 0x979f5
@@ -2808,7 +2815,7 @@
 	set 5, a
 	or c
 	ld [wd45b], a
-; 0x97a1d
+; fall through
 
 Script_warp: ; 0x97a1d
 ; script command 0x3c
@@ -2818,9 +2825,10 @@
 ;     x (SingleByteParam)
 ;     y (SingleByteParam)
 
+; This seems to be some sort of error handling case.
 	call GetScriptByte
 	and a
-	jr z, .asm_97a4a ; 0x97a21 $27
+	jr z, .not_ok ; 0x97a21 $27
 	ld [MapGroup], a
 	call GetScriptByte
 	ld [MapNumber], a
@@ -2828,24 +2836,24 @@
 	ld [XCoord], a
 	call GetScriptByte
 	ld [YCoord], a
-	ld a, $ff
+	ld a, -1
 	ld [wd001], a
-	ld a, $f1
+	ld a, -15
 	ld [$ff9f], a
-	ld a, $1
-	call Function261b
+	ld a, 1
+	call LoadMapStatus
 	call StopScript
 	ret
-.asm_97a4a
+.not_ok
 	call GetScriptByte
 	call GetScriptByte
 	call GetScriptByte
-	ld a, $ff
+	ld a, -1
 	ld [wd001], a
-	ld a, $fb
+	ld a, -5
 	ld [$ff9f], a
-	ld a, $1
-	call Function261b
+	ld a, 1
+	call LoadMapStatus
 	call StopScript
 	ret
 ; 0x97a65
@@ -2882,7 +2890,7 @@
 Script_reloadmapmusic: ; 0x97a85
 ; script command 0x83
 
-	ld a, $1
+	ld a, 1
 	ld [wc2c1], a
 	ret
 ; 0x97a8b
@@ -2913,7 +2921,7 @@
 	ld b, a
 	callba Function97e5c
 	ret c
-	ld a, $1
+	ld a, 1
 	ld [ScriptVar], a
 	ret
 ; 0x97ab3
@@ -2929,8 +2937,8 @@
 	ld [MapBlockDataPointer], a
 	call GetScriptByte
 	ld [MapBlockDataPointer + 1], a
-	call Function24e4
-	call Function2879
+	call ChangeMap
+	call BufferScreen
 	ret
 ; 0x97acc
 
@@ -2942,15 +2950,15 @@
 ;     block (SingleByteParam)
 
 	call GetScriptByte
-	add $4
+	add 4
 	ld d, a
 	call GetScriptByte
-	add $4
+	add 4
 	ld e, a
-	call Function2a66
+	call GetBlockLocation
 	call GetScriptByte
 	ld [hl], a
-	call Function2879
+	call BufferScreen
 	ret
 ; 0x97ae3
 
@@ -2962,7 +2970,7 @@
 	call Function2173
 	call Function2914
 	callba Function104061
-	call Function1ad2
+	call DrawOnMap
 	ret
 ; 0x97af6
 
@@ -2971,12 +2979,12 @@
 
 	call Function224a
 	ret nc
-	callba Function966d0
+	callba SetAll_ScriptFlags3
 	ret
 ; 0x97b01
 
 Function97b01: ; 0x97b01
-	callba Function966d0
+	callba SetAll_ScriptFlags3
 	ret
 ; 0x97b08
 
@@ -2987,8 +2995,8 @@
 
 	call GetScriptByte
 	ld [$ff9f], a
-	ld a, $1
-	call Function261b
+	ld a, 1
+	call LoadMapStatus
 	call StopScript
 	ret
 ; 0x97b16
@@ -3064,14 +3072,14 @@
 
 	call GetScriptByte
 	and a
-	jr z, .asm_97b50 ; 0x97b4b $3
+	jr z, .loop ; 0x97b4b $3
 	ld [ScriptDelay], a
-.asm_97b50
+.loop
 	ld c, 2
 	call DelayFrames
 	ld hl, ScriptDelay
 	dec [hl]
-	jr nz, .asm_97b50 ; 0x97b59 $f5
+	jr nz, .loop ; 0x97b59 $f5
 	ret
 ; 0x97b5c
 
@@ -3082,9 +3090,9 @@
 
 	call GetScriptByte
 	and a
-	jr z, .asm_97b65 ; 0x97b60 $3
+	jr z, .no_time ; 0x97b60 $3
 	ld [ScriptDelay], a
-.asm_97b65
+.no_time
 	ld a, SCRIPT_WAIT
 	ld [ScriptMode], a
 	call StopScript
@@ -3104,9 +3112,9 @@
 ; script command 0x91
 
 	call ExitScriptSubroutine
-	jr c, .asm_97b7a
+	jr c, .resume
 	ret
-.asm_97b7a
+.resume
 	xor a
 	ld [ScriptRunning], a
 	ld a, SCRIPT_OFF
@@ -3121,8 +3129,8 @@
 ; script command 0x90
 
 	call ExitScriptSubroutine
-	jr c, .asm_97b91
-.asm_97b91
+	jr c, .dummy
+.dummy
 	ld hl, ScriptFlags
 	res 0, [hl]
 	call StopScript
@@ -3135,17 +3143,17 @@
 	ld hl, wd43c
 	ld a, [hl]
 	and a
-	jr z, .asm_97bbe ; 0x97b9f $1d
+	jr z, .done ; 0x97b9f $1d
 	dec [hl]
 	ld e, [hl]
 	ld d, $0
 	ld hl, wd43d
-	add hl, de
-	add hl, de
-	add hl, de
+rept 3
+	add hl,de
+endr
 	ld a, [hli]
 	ld b, a
-	and $7f
+	and " "
 	ld [ScriptBank], a
 	ld a, [hli]
 	ld e, a
@@ -3155,7 +3163,7 @@
 	ld [ScriptPos + 1], a
 	and a
 	ret
-.asm_97bbe
+.done
 	scf
 	ret
 ; 0x97bc0
@@ -3196,7 +3204,7 @@
 DisplayCredits:
 	call Script_resetfuncs
 	ld a, $3
-	call Function261b
+	call LoadMapStatus
 	call StopScript
 	ret
 ; 0x97c051
@@ -3208,13 +3216,13 @@
 
 	push bc
 	call GetScriptByte
-.asm_97c09
+.loop
 	push af
 	ld c, 6
 	call DelayFrames
 	pop af
 	dec a
-	jr nz, .asm_97c09 ; 0x97c11 $f6
+	jr nz, .loop ; 0x97c11 $f6
 	pop bc
 	ret
 ; 0x97c15
@@ -3229,7 +3237,7 @@
 ; 0x97c20
 
 
-Function97c20: ; 97c20
+Function97c20: ; 97c20 unreferenced
 	ld a, [.byte]
 	ld [ScriptVar], a
 	ret
--- a/engine/spawn_points.asm
+++ b/engine/spawn_points.asm
@@ -18,7 +18,7 @@
 	spawn VIRIDIAN,    VIRIDIAN_CITY,              23, 26
 	spawn PEWTER,      PEWTER_CITY,                13, 26
 	spawn CERULEAN,    CERULEAN_CITY,              19, 22
-	spawn ROCK_TUNNEL, ROUTE_10A,                  11,  2
+	spawn ROCK_TUNNEL, ROUTE_10_NORTH,             11,  2
 	spawn VERMILION,   VERMILION_CITY,              9,  6
 	spawn LAVENDER,    LAVENDER_TOWN,               5,  6
 	spawn SAFFRON,     SAFFRON_CITY,                9, 30
@@ -41,22 +41,24 @@
 	spawn BLACKTHORN,  BLACKTHORN_CITY,            21, 30
 	spawn MT_SILVER,   SILVER_CAVE_OUTSIDE,        23, 20
 	spawn FAST_SHIP,   FAST_SHIP_CABINS_SW_SSW_NW,  6,  2
+NUM_SPAWNS EQU const_value
+const_value = -1
+	spawn N_A,         N_A,                        -1, -1
 
-	db -1, -1, -1, -1
 
-	const NUM_SPAWNS
 
-
 LoadSpawnPoint: ; 1531f
+	; loads the spawn point in wd001
 	push hl
 	push de
 	ld a, [wd001]
-	cp -1
-	jr z, .asm_15341
+	cp SPAWN_N_A
+	jr z, .spawn_n_a
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
+rept 2 ; multiply hl by 4
+	add hl,hl
+endr
 	ld de, SpawnPoints
 	add hl, de
 	ld a, [hli]
@@ -67,7 +69,7 @@
 	ld [XCoord], a
 	ld a, [hli]
 	ld [YCoord], a
-.asm_15341
+.spawn_n_a
 	pop de
 	pop hl
 	ret
@@ -75,32 +77,33 @@
 
 
 IsSpawnPoint: ; 15344
+; Checks if the map loaded in de is a spawn point.  Returns carry if it's a spawn point.
 	ld hl, SpawnPoints
 	ld c, 0
-.asm_15349
+.loop
 	ld a, [hl]
-	cp -1
-	jr z, .asm_1535f
+	cp SPAWN_N_A
+	jr z, .nope
 	cp d
-	jr nz, .asm_15356
+	jr nz, .next
 	inc hl
 	ld a, [hld]
 	cp e
-	jr z, .asm_15361
+	jr z, .yes
 
-.asm_15356
+.next
 	push bc
 	ld bc, 4
 	add hl, bc
 	pop bc
 	inc c
-	jr .asm_15349
+	jr .loop
 
-.asm_1535f
+.nope
 	and a
 	ret
 
-.asm_15361
+.yes
 	scf
 	ret
 ; 15363
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -2,9 +2,9 @@
 Special:: ; c01b
 ; Run script special de.
 	ld hl, SpecialsPointers
-	add hl, de
-	add hl, de
-	add hl, de
+rept 3
+	add hl,de
+endr
 	ld b, [hl]
 	inc hl
 	ld a, [hli]
@@ -16,64 +16,68 @@
 ; c029
 
 SpecialsPointers:: ; c029
-	add_special Function97c28
-	add_special Function29ce8
-	add_special Function29d11
-	add_special Function29d92
-	add_special Function29e66
-	add_special Function29e82
-	add_special Function29efa
-	add_special Function29eee
-	add_special Function29c92
-	add_special Function29cf1
-	add_special Function29cfa
-	add_special Function29bfb
-	add_special Function29c7b
-	add_special Function29ec4
-	add_special Function29ed9
-	add_special Function29eaf
-	add_special Function29f47
-	add_special Functionc2f6
-	add_special Functionc309
-	add_special Function1050b9
-	add_special Functionc34a
-	add_special Function4d9e5
-	add_special Function13a12
-	add_special Function13a31
-	add_special Function135db
-	add_special Functionfbb32
-	add_special Functionfbcd2
+	add_special WarpToSpawnPoint
+
+; Communications
+	add_special Special_SetBitsForLinkTradeRequest
+	add_special Special_WaitForLinkedFriend
+	add_special Special_CheckLinkTimeout
+	add_special Special_TryQuickSave
+	add_special Special_CheckBothSelectedSameRoom
+	add_special Special_FailedLinkToPast
+	add_special Special_CloseLink
+	add_special Special_AbortLink
+	add_special Special_SetBitsForBattleRequest
+	add_special Special_SetBitsForTimeCapsuleRequest
+	add_special Special_CheckTimeCapsuleCompatibility
+	add_special Special_EnterTimeCapsule
+	add_special Special_TradeCenter
+	add_special Special_Colosseum
+	add_special Special_TimeCapsule
+	add_special Special_CableClubCheckWhichChris
+	add_special Special_CheckMysteryGift
+	add_special Special_GetMysteryGiftItem
+	add_special Special_UnlockMysteryGift
+
+; Bug Catching Contest
+	add_special BugContestJudging
+	add_special CheckPartyFullAfterContest
+	add_special CheckFirstMonFainted
+	add_special ContestReturnMons
+	add_special Special_GiveParkBalls
+	add_special Special_CheckMagikarpLength
+	add_special Special_MagikarpHouseSign
 	add_special HealParty
-	add_special Function1559a
-	add_special Functionc2e7
-	add_special Function166d6
-	add_special Function1672a
-	add_special Function16936
+	add_special PokemonCenterPC
+	add_special Special_KrissHousePC
+	add_special Special_DayCareMan
+	add_special Special_DayCareLady
+	add_special Special_DayCareManOutside
 	add_special MoveDeletion
-	add_special Function16218
-	add_special Function8cc04
+	add_special Special_BankOfMom
+	add_special Special_MagnetTrain
 	add_special SpecialNameRival
-	add_special Function90913
-	add_special Functionc2c0
-	add_special Functionc2cd
-	add_special Functionc355
-	add_special Functionc360
-	add_special Functionc373
-	add_special Functionc380
-	add_special Functionc38d
-	add_special Functionc3db
-	add_special Function8c084
-	add_special Function8c092
-	add_special Function8c0b6
-	add_special Function8c079
-	add_special Function8c0ab
-	add_special Functiond91
+	add_special Special_SetDayOfWeek
+	add_special Special_TownMap
+	add_special Special_UnownPrinter
+	add_special MapRadio
+	add_special Special_UnownPuzzle
+	add_special Special_SlotMachine
+	add_special Special_CardFlip
+	add_special Special_DummyNonfunctionalGameCornerGame
+	add_special Special_WhiteBGMapBufferScreen
+	add_special FadeBlackBGMap
+	add_special Special_BattleTowerFade
+	add_special Special_FadeBlackQuickly
+	add_special FadeInBGMap
+	add_special Special_FadeInQuickly
+	add_special Special_ReloadSpritesNoPalettes
 	add_special WhiteBGMap
 	add_special UpdateTimePals
 	add_special ClearTileMap
-	add_special Function1ad2
-	add_special Functione4a
-	add_special Functionc230
+	add_special DrawOnMap
+	add_special Special_ReplaceKrisSprite
+	add_special Special_GameCornerPrizeMonCheckDex
 	add_special SpecialSeenMon
 	add_special WaitSFX
 	add_special PlayMapMusic
@@ -87,10 +91,10 @@
 	add_special Functionc3ef
 	add_special Function17421
 	add_special Function17440
-	add_special Function139a8
+	add_special Special_SelectRandomBugContestContestants
 	add_special Functionc3fc
-	add_special Function26feb
-	add_special Function27043
+	add_special ToggleMaptileDecorations
+	add_special ToggleDecorationsVisibility
 	add_special SpecialGiveShuckle
 	add_special SpecialReturnShuckle
 	add_special Function73f7
@@ -105,12 +109,12 @@
 	add_special Function88018
 	add_special SpecialNameRater
 	add_special Functionc2da
-	add_special Function718d
+	add_special GetFirstPokemonHappiness
 	add_special Function71ac
 	add_special Function2a4ab
 	add_special Function2a51f
 	add_special RandomPhoneMon
-	add_special Function14209
+	add_special RunCallback_04
 	add_special Functionfb841
 	add_special SpecialSnorlaxAwake
 	add_special Function7413
@@ -148,10 +152,10 @@
 	add_special Function101225
 	add_special Function101231
 	add_special Function4925b
-	add_special Function8adef
+	add_special SpecialOmanyteChamber
 	add_special Function11c1ab
 	add_special Function170687
-	add_special Function8ae68
+	add_special Special_DisplayUnownWords
 	add_special Function17d224
 	add_special Function17d2b6
 	add_special Function17d2ce
@@ -170,10 +174,10 @@
 	add_special SpecialMonCheck
 	add_special Functionc225
 	add_special Function170bd2
-	add_special Function10366e
+	add_special Mobile_SelectThreeMons
 	add_special Function1037eb
 	add_special Function10383c
-	add_special Function1060a2
+	add_special Mobile_HealParty
 	add_special Function14168
 	add_special Function1037c2
 	add_special Function10630f
@@ -180,7 +184,7 @@
 	add_special Function103780
 	add_special Function10387b
 	add_special Function4ae12
-	add_special Function1047eb
+	add_special LoadMapPalettes
 	add_special Function4a927
 	add_special Function90a54
 	add_special Function90a88
@@ -198,7 +202,7 @@
 	ret
 ; c230
 
-Functionc230: ; c230
+Special_GameCornerPrizeMonCheckDex: ; c230
 	ld a, [ScriptVar]
 	dec a
 	call CheckCaughtMon
@@ -263,7 +267,7 @@
 SpecialNameRival: ; 0xc29d
 	ld b, $2 ; rival
 	ld de, RivalName
-	callba Function116b7
+	callba _NamingScreen
 	; default to "SILVER"
 	ld hl, RivalName
 	ld de, DefaultRivalName
@@ -279,7 +283,7 @@
 	ret
 ; c2c0
 
-Functionc2c0: ; c2c0
+Special_TownMap: ; c2c0
 	call FadeToMenu
 	callba Function9191c
 	call Function2b4d
@@ -286,7 +290,7 @@
 	ret
 ; c2cd
 
-Functionc2cd: ; c2cd
+Special_UnownPrinter: ; c2cd
 	call FadeToMenu
 	callba Function16be4
 	call Function2b4d
@@ -300,7 +304,7 @@
 	ret
 ; c2e7
 
-Functionc2e7: ; c2e7
+Special_KrissHousePC: ; c2e7
 	xor a
 	ld [ScriptVar], a
 	callba Function156d9
@@ -309,21 +313,21 @@
 	ret
 ; c2f6
 
-Functionc2f6: ; c2f6
+Special_CheckMysteryGift: ; c2f6
 	ld a, $0
 	call GetSRAMBank
 	ld a, [$abe2]
 	and a
-	jr z, .asm_c302
+	jr z, .no
 	inc a
 
-.asm_c302
+.no
 	ld [ScriptVar], a
 	call CloseSRAM
 	ret
 ; c309
 
-Functionc309: ; c309
+Special_GetMysteryGiftItem: ; c309
 	ld a, $0
 	call GetSRAMBank
 	ld a, [$abe2]
@@ -358,21 +362,21 @@
 	db "@"
 ; 0xc34a
 
-Functionc34a: ; c34a
-	callba Function1369d
+BugContestJudging: ; c34a
+	callba _BugContestJudging
 	ld a, b
 	ld [ScriptVar], a
 	ret
 ; c355
 
-Functionc355: ; c355
+MapRadio: ; c355
 	ld a, [ScriptVar]
 	ld e, a
-	callba Function91a53
+	callba PlayRadio
 	ret
 ; c360
 
-Functionc360: ; c360
+Special_UnownPuzzle: ; c360
 	call FadeToMenu
 	callba Functione1190
 	ld a, [wd0ec]
@@ -381,34 +385,34 @@
 	ret
 ; c373
 
-Functionc373: ; c373
-	call Functionc3ae
+Special_SlotMachine: ; c373
+	call Special_CheckCoins
 	ret c
-	ld a, BANK(Function926c7)
-	ld hl, Function926c7
-	call Functionc39a
+	ld a, BANK(_SlotMachine)
+	ld hl, _SlotMachine
+	call Special_StartGameCornerGame
 	ret
 ; c380
 
-Functionc380: ; c380
-	call Functionc3ae
+Special_CardFlip: ; c380
+	call Special_CheckCoins
 	ret c
-	ld a, BANK(Functione00ee)
-	ld hl, Functione00ee
-	call Functionc39a
+	ld a, BANK(_CardFlip)
+	ld hl, _CardFlip
+	call Special_StartGameCornerGame
 	ret
 ; c38d
 
-Functionc38d: ; c38d
-	call Functionc3ae
+Special_DummyNonfunctionalGameCornerGame: ; c38d
+	call Special_CheckCoins
 	ret c
-	ld a, BANK(Functione1e5b)
-	ld hl, Functione1e5b
-	call Functionc39a
+	ld a, BANK(_DummyGame)
+	ld hl, _DummyGame
+	call Special_StartGameCornerGame
 	ret
 ; c39a
 
-Functionc39a: ; c39a
+Special_StartGameCornerGame: ; c39a
 	call Function31cf
 	call FadeToMenu
 	ld hl, wd0e8
@@ -423,7 +427,7 @@
 	ret
 ; c3ae
 
-Functionc3ae: ; c3ae
+Special_CheckCoins: ; c3ae
 	ld hl, Coins
 	ld a, [hli]
 	or [hl]
@@ -461,9 +465,9 @@
 	db "@"
 ; 0xc3db
 
-Functionc3db: ; c3db
+Special_WhiteBGMapBufferScreen: ; c3db
 	call WhiteBGMap
-	call Function2879
+	call BufferScreen
 	ret
 ; c3e2
 
@@ -492,10 +496,11 @@
 ; c403
 
 
-Functionc403:: ; c403
+LoadWildData:: ; c403
 	ld a, c
 	and a
-	jr nz, .asm_c410
+	jr nz, .swarm_route35
+; swarm dark cave violet entrance
 	ld a, d
 	ld [wdfcc], a
 	ld a, e
@@ -502,7 +507,7 @@
 	ld [wdfcd], a
 	ret
 
-.asm_c410
+.swarm_route35
 	ld a, d
 	ld [wdc5a], a
 	ld a, e
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -46,10 +46,10 @@
 	dbw BANK(RematchGiftFScript), RematchGiftFScript
 	dbw BANK(GymStatue1Script), GymStatue1Script
 	dbw BANK(GymStatue2Script), GymStatue2Script
-	dbw BANK(UnknownScript_0xbcdb9), UnknownScript_0xbcdb9
-	dbw BANK(UnknownScript_0xbcdc3), UnknownScript_0xbcdc3
+	dbw BANK(ReceiveItemScript), ReceiveItemScript
+	dbw BANK(ReceiveTogepiEggScript), ReceiveTogepiEggScript
 	dbw BANK(PCScript), PCScript
-	dbw BANK(UnknownScript_0xbcdcd), UnknownScript_0xbcdcd
+	dbw BANK(GameCornerCoinVendorScript), GameCornerCoinVendorScript
 	dbw BANK(HappinessCheckScript), HappinessCheckScript
 
 PokeCenterNurseScript:
@@ -107,12 +107,12 @@
 
 	farwritetext UnknownText_0x1b01bd
 	pause 20
-	special Function1060a2
+	special Mobile_HealParty
 	spriteface $fe, LEFT
 	pause 10
 	special HealParty
 	playmusic MUSIC_NONE
-	writebyte 0
+	writebyte 0 ; Machine is at a Pokemon Center
 	special HealMachineAnim
 	pause 30
 	special RestartMapMusic
@@ -159,7 +159,7 @@
 
 .pokerus_done
 	setflag ENGINE_POKERUS
-	specialphonecall 1 ; elm calls about pokerus
+	specialphonecall ELMCALL_POKERUS
 	end
 
 DifficultBookshelfScript:
@@ -184,7 +184,7 @@
 	loadfont
 	farwritetext TownMapText
 	closetext
-	special Functionc2c0
+	special Special_TownMap
 	loadmovesprites
 	end
 
@@ -204,7 +204,7 @@
 Radio1Script:
 	loadfont
 	writebyte $0
-	special Functionc355
+	special MapRadio
 	loadmovesprites
 	end
 
@@ -212,7 +212,7 @@
 ; Lucky Channel
 	loadfont
 	writebyte $4
-	special Functionc355
+	special MapRadio
 	loadmovesprites
 	end
 
@@ -221,7 +221,7 @@
 
 PCScript:
 	loadfont
-	special Function1559a
+	special PokemonCenterPC
 	loadmovesprites
 	end
 
@@ -287,362 +287,362 @@
 	db "SATURDAY@"
 
 GoldenrodRocketsScript:
-	clearevent EVENT_6CD
+	clearevent EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
 	end
 
 RadioTowerRocketsScript:
 	setflag ENGINE_ROCKETS_IN_RADIO_TOWER
-	setevent EVENT_6CF
-	setevent EVENT_6D1
-	clearevent EVENT_6CE
+	setevent EVENT_GOLDENROD_CITY_CIVILIANS
+	setevent EVENT_RADIO_TOWER_BLACKBELT_BLOCKS_STAIRS
+	clearevent EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	clearevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
-	setevent EVENT_756
-	specialphonecall $0004
+	setevent EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_EAST
+	specialphonecall ELMCALL_WEIRDBROADCAST
 	domaptrigger GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, $1
 	end
 
 BugContestResultsWarpScript:
 	special WhiteBGMap
-	scall UnknownScript_0xbc380
-	setevent EVENT_747
-	clearevent EVENT_748
-	setevent EVENT_2D2
+	scall BugContestResults_CopyContestantsToResults
+	setevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+	clearevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
+	setevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
 	warp GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE, $0, $4
-	applymovement $0, MovementData_0xbcea1
+	applymovement $0, Movement_ContestResults_WalkAfterWarp
 
 BugContestResultsScript:
 	clearflag ENGINE_BUG_CONTEST_TIMER
-	clearevent EVENT_2D2
-	clearevent EVENT_313
-	clearevent EVENT_314
-	clearevent EVENT_315
-	clearevent EVENT_316
+	clearevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
+	clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+	clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+	clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+	clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
 	loadfont
-	farwritetext UnknownText_0x1b05bf
+	farwritetext ContestResults_ReadyToJudgeText
 	closetext
-	special Functionc34a
+	special BugContestJudging
 	RAM2MEM $0
-	if_equal $1, UnknownScript_0xbc31e
-	if_equal $2, UnknownScript_0xbc332
-	if_equal $3, UnknownScript_0xbc343
-	farwritetext UnknownText_0x1b0681
+	if_equal 1, BugContestResults_FirstPlace
+	if_equal 2, BugContestResults_SecondPlace
+	if_equal 3, BugContestResults_ThirdPlace
+	farwritetext ContestResults_ConsolationPrizeText
 	keeptextopen
 	waitbutton
 	verbosegiveitem BERRY, 1
-	iffalse UnknownScript_0xbc375
+	iffalse BugContestResults_NoRoomForBerry
 
-UnknownScript_0xbc2a9:
-	farwritetext UnknownText_0x1b06b7
+BugContestResults_DidNotWin
+	farwritetext ContestResults_DidNotWinText
 	keeptextopen
-	jump UnknownScript_0xbc2b6
+	jump BugContestResults_FinishUp
 ; 0xbc2b1
 
-UnknownScript_0xbc2b1: ; 0xbc2b1
-	farwritetext UnknownText_0x1b065b
+BugContestResults_ReturnAfterWinnersPrize ; 0xbc2b1
+	farwritetext ContestResults_JoinUsNextTimeText
 	keeptextopen
 
-UnknownScript_0xbc2b6:
-	checkevent EVENT_308
-	iffalse UnknownScript_0xbc2c4
-	farwritetext UnknownText_0x1b06d9
+BugContestResults_FinishUp
+	checkevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+	iffalse BugContestResults_DidNotLeaveMons
+	farwritetext ContestResults_ReturnPartyText
 	closetext
-	special Function13a31
-UnknownScript_0xbc2c4:
-	special Function4d9e5
-	if_equal $0, UnknownScript_0xbc2d4
-	if_equal $2, UnknownScript_0xbc2d4
-	farwritetext UnknownText_0x1b070d
+	special ContestReturnMons
+BugContestResults_DidNotLeaveMons
+	special CheckPartyFullAfterContest
+	if_equal $0, BugContestResults_CleanUp
+	if_equal $2, BugContestResults_CleanUp
+	farwritetext ContestResults_PartyFullText
 	closetext
-UnknownScript_0xbc2d4:
+BugContestResults_CleanUp
 	loadmovesprites
 	dotrigger $0
 	domaptrigger GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE, $0
-	setevent EVENT_716
-	setevent EVENT_717
-	setevent EVENT_718
-	setevent EVENT_719
-	setevent EVENT_71A
-	setevent EVENT_71B
-	setevent EVENT_71C
-	setevent EVENT_71D
-	setevent EVENT_71E
-	setevent EVENT_71F
-	setevent EVENT_720
-	setevent EVENT_721
-	setevent EVENT_722
-	setevent EVENT_723
-	setevent EVENT_724
-	setevent EVENT_725
-	setevent EVENT_726
-	setevent EVENT_727
-	setevent EVENT_728
-	setevent EVENT_729
-	setflag ENGINE_51
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10B
+	setflag ENGINE_DAILY_BUG_CONTEST
 	special PlayMapMusic
 	end
 ; 0xbc31e
 
-UnknownScript_0xbc31e: ; 0xbc31e
-	setevent EVENT_000
+BugContestResults_FirstPlace ; 0xbc31e
+	setevent EVENT_GAVE_KURT_APRICORNS
 	itemtotext SUN_STONE, $1
-	farwritetext UnknownText_0x1b0621
+	farwritetext ContestResults_PlayerWonAPrizeText
 	closetext
 	verbosegiveitem SUN_STONE, 1
-	iffalse UnknownScript_0xbc354
-	jump UnknownScript_0xbc2b1
+	iffalse BugContestResults_NoRoomForSunStone
+	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc332
 
-UnknownScript_0xbc332: ; 0xbc332
+BugContestResults_SecondPlace ; 0xbc332
 	itemtotext EVERSTONE, $1
-	farwritetext UnknownText_0x1b0621
+	farwritetext ContestResults_PlayerWonAPrizeText
 	closetext
 	verbosegiveitem EVERSTONE, 1
-	iffalse UnknownScript_0xbc35f
-	jump UnknownScript_0xbc2b1
+	iffalse BugContestResults_NoRoomForEverstone
+	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc343
 
-UnknownScript_0xbc343: ; 0xbc343
+BugContestResults_ThirdPlace ; 0xbc343
 	itemtotext GOLD_BERRY, $1
-	farwritetext UnknownText_0x1b0621
+	farwritetext ContestResults_PlayerWonAPrizeText
 	closetext
 	verbosegiveitem GOLD_BERRY, 1
-	iffalse UnknownScript_0xbc36a
-	jump UnknownScript_0xbc2b1
+	iffalse BugContestResults_NoRoomForGoldBerry
+	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc354
 
-UnknownScript_0xbc354: ; 0xbc354
+BugContestResults_NoRoomForSunStone ; 0xbc354
 	farwritetext UnknownText_0x1b08cc
 	keeptextopen
-	setevent EVENT_313
-	jump UnknownScript_0xbc2b1
+	setevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc35f
 
-UnknownScript_0xbc35f: ; 0xbc35f
+BugContestResults_NoRoomForEverstone ; 0xbc35f
 	farwritetext UnknownText_0x1b08cc
 	keeptextopen
-	setevent EVENT_314
-	jump UnknownScript_0xbc2b1
+	setevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc36a
 
-UnknownScript_0xbc36a: ; 0xbc36a
+BugContestResults_NoRoomForGoldBerry ; 0xbc36a
 	farwritetext UnknownText_0x1b08cc
 	keeptextopen
-	setevent EVENT_315
-	jump UnknownScript_0xbc2b1
+	setevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc375
 
-UnknownScript_0xbc375: ; 0xbc375
+BugContestResults_NoRoomForBerry ; 0xbc375
 	farwritetext UnknownText_0x1b08cc
 	keeptextopen
-	setevent EVENT_316
-	jump UnknownScript_0xbc2a9
+	setevent EVENT_CONTEST_OFFICER_HAS_BERRY
+	jump BugContestResults_DidNotWin
 ; 0xbc380
 
-UnknownScript_0xbc380: ; 0xbc380
-	checkevent EVENT_716
+BugContestResults_CopyContestantsToResults ; 0xbc380
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
 	iftrue .skip1
-	clearevent EVENT_720
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_1B
 .skip1
-	checkevent EVENT_717
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
 	iftrue .skip2
-	clearevent EVENT_721
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_2B
 .skip2
-	checkevent EVENT_718
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
 	iftrue .skip3
-	clearevent EVENT_722
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_3B
 .skip3
-	checkevent EVENT_719
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
 	iftrue .skip4
-	clearevent EVENT_723
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_4B
 .skip4
-	checkevent EVENT_71A
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
 	iftrue .skip5
-	clearevent EVENT_724
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_5B
 .skip5
-	checkevent EVENT_71B
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
 	iftrue .skip6
-	clearevent EVENT_725
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_6B
 .skip6
-	checkevent EVENT_71C
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
 	iftrue .skip7
-	clearevent EVENT_726
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_7B
 .skip7
-	checkevent EVENT_71D
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
 	iftrue .skip8
-	clearevent EVENT_727
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_8B
 .skip8
-	checkevent EVENT_71E
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
 	iftrue .skip9
-	clearevent EVENT_728
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_9B
 .skip9
-	checkevent EVENT_71F
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
 	iftrue .skip10
-	clearevent EVENT_729
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_10B
 .skip10
 	end
 
 InitializeEventsScript:
-	setevent EVENT_6CB
-	setevent EVENT_6CE
-	setevent EVENT_6CD
-	setevent EVENT_6D0
-	setevent EVENT_6F3
-	setevent EVENT_6E9
-	setevent EVENT_6F4
-	setevent EVENT_6D5
-	setevent EVENT_6DE
-	setevent EVENT_6DD
-	setevent EVENT_6DF
-	setevent EVENT_6C0
-	setevent EVENT_6E4
+	setevent EVENT_EARLS_ACADEMY_EARL
+	setevent EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	setevent EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+	setevent EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	setevent EVENT_ILEX_FOREST_APPRENTICE
+	setevent EVENT_ILEX_FOREST_FARFETCHD
+	setevent EVENT_ILEX_FOREST_CHARCOAL_MASTER
+	setevent EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+	setevent EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
+	setevent EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+	setevent EVENT_TEAM_ROCKET_BASE_B2F_DRAGONITE
+	setevent EVENT_RIVAL_TEAM_ROCKET_BASE
+	setevent EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
 	setevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
-	setevent EVENT_6BE
-	setevent EVENT_6BF
-	setevent EVENT_6C1
-	setevent EVENT_6F9
-	setevent EVENT_6FD
+	setevent EVENT_RIVAL_CHERRYGROVE_CITY
+	setevent EVENT_RIVAL_AZALEA_TOWN
+	setevent EVENT_RIVAL_UNDERGROUND_PATH
+	setevent EVENT_AZALEA_TOWN_SLOWPOKES
+	setevent EVENT_KURTS_HOUSE_SLOWPOKE
 	setevent EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
 	setevent EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
-	setevent EVENT_702
-	setevent EVENT_703
-	setevent EVENT_704
-	setevent EVENT_BOULDER_IN_ICE_PATH_1
-	setevent EVENT_BOULDER_IN_ICE_PATH_2
-	setevent EVENT_BOULDER_IN_ICE_PATH_3
-	setevent EVENT_BOULDER_IN_ICE_PATH_4
-	setevent EVENT_715
-	setevent EVENT_716
-	setevent EVENT_717
-	setevent EVENT_718
-	setevent EVENT_719
-	setevent EVENT_71A
-	setevent EVENT_71B
-	setevent EVENT_71C
-	setevent EVENT_71D
-	setevent EVENT_71E
-	setevent EVENT_71F
-	setevent EVENT_720
-	setevent EVENT_721
-	setevent EVENT_722
-	setevent EVENT_723
-	setevent EVENT_724
-	setevent EVENT_725
-	setevent EVENT_726
-	setevent EVENT_727
-	setevent EVENT_728
-	setevent EVENT_729
-	setevent EVENT_72C
-	setevent EVENT_72F
-	setevent EVENT_72D
-	setevent EVENT_735
-	setevent EVENT_736
-	setevent EVENT_73C
-	setevent EVENT_73D
-	setevent EVENT_741
-	setevent EVENT_742
-	setevent EVENT_743
-	setevent EVENT_744
-	setevent EVENT_2A4
-	setevent EVENT_2AF
-	setevent EVENT_749
-	setevent EVENT_6D3
-	setevent EVENT_74D
+	setevent EVENT_COP_IN_ELMS_LAB
+	setevent EVENT_RUINS_OF_ALPH_OUTSIDE_SCIENTIST
+	setevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
+	setevent EVENT_BOULDER_IN_ICE_PATH_1A
+	setevent EVENT_BOULDER_IN_ICE_PATH_2A
+	setevent EVENT_BOULDER_IN_ICE_PATH_3A
+	setevent EVENT_BOULDER_IN_ICE_PATH_4A
+	setevent EVENT_ROUTE_30_YOUNGSTER_JOEY
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10B
+	setevent EVENT_FAST_SHIP_1F_GENTLEMAN
+	setevent EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
+	setevent EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+	setevent EVENT_LAKE_OF_RAGE_CIVILIANS
+	setevent EVENT_MAHOGANY_MART_OWNERS
+	setevent EVENT_TIN_TOWER_ROOF_HO_OH
+	setevent EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
+	setevent EVENT_KRISS_HOUSE_2F_CONSOLE
+	setevent EVENT_KRISS_HOUSE_2F_DOLL_1
+	setevent EVENT_KRISS_HOUSE_2F_DOLL_2
+	setevent EVENT_KRISS_HOUSE_2F_BIG_DOLL
+	setevent EVENT_DECO_BED_1
+	setevent EVENT_DECO_PLANT_4
+	setevent EVENT_GOLDENROD_TRAIN_STATION_GENTLEMAN
+	setevent EVENT_OLIVINE_GYM_JASMINE
+	setevent EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
 	setevent EVENT_MET_BILL
-	setevent EVENT_713
-	setevent EVENT_711
-	setevent EVENT_6D4
+	setevent EVENT_ECRUTEAK_POKE_CENTER_BILL
+	setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+	setevent EVENT_LAKE_OF_RAGE_LANCE
 	setevent EVENT_WAREHOUSE_LAYOUT_1
 	setevent EVENT_WAREHOUSE_BLOCKED_OFF
-	setevent EVENT_6D8
-	setevent EVENT_6C3
-	setevent EVENT_6C2
-	setevent EVENT_6C6
-	setevent EVENT_75F
-	setevent EVENT_731
-	setevent EVENT_74A
+	setevent EVENT_DRAGONS_DEN_CLAIR
+	setevent EVENT_RIVAL_OLIVINE_CITY
+	setevent EVENT_RIVAL_VICTORY_ROAD
+	setevent EVENT_RIVAL_DRAGONS_DEN
+	setevent EVENT_LANCES_ROOM_OAK_AND_MARY
+	setevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+	setevent EVENT_BURNED_TOWER_B1F_BEASTS_1
 	setevent EVENT_RED_IN_MT_SILVER
-	setevent EVENT_738
-	setevent EVENT_73A
-	setevent EVENT_73B
-	setevent EVENT_733
-	setevent EVENT_73F
-	setevent EVENT_78D
-	setevent EVENT_766
-	setevent EVENT_768
+	setevent EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+	setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	setevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	setevent EVENT_OLIVINE_PORT_PASSAGE_POKEFAN_M
+	setevent EVENT_KURTS_HOUSE_KURT_2
+	setevent EVENT_KURTS_HOUSE_GRANDDAUGHTER_2
+	setevent EVENT_RANG_CLEAR_BELL_1
+	setevent EVENT_FLORIA_AT_FLOWER_SHOP
 	setevent EVENT_FLORIA_AT_SUDOWOODO
-	setevent EVENT_76A
-	setevent EVENT_78E
-	setevent EVENT_78F
-	setevent EVENT_790
-	setevent EVENT_791
-	setevent EVENT_793
-	setevent EVENT_7A4
-	setevent EVENT_7A4
-	setevent EVENT_7A5
-	setevent EVENT_6EC
-	setevent EVENT_6ED
-	setevent EVENT_6F0
-	setevent EVENT_7A9
+	setevent EVENT_GOLDENROD_CITY_MOVE_TUTOR
+	setevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
+	setevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
+	setevent EVENT_DRAGON_SHRINE_CLAIR
+	setevent EVENT_BATTLE_TOWER_BATTLE_ROOM_YOUNGSTER
+	setevent EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
+	setevent EVENT_AZALEA_TOWN_KURT
+	setevent EVENT_AZALEA_TOWN_KURT
+	setevent EVENT_ILEX_FOREST_KURT
+	setevent EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_IN_WALKWAY
+	setevent EVENT_ILEX_FOREST_LASS
+	setevent EVENT_GOLDENROD_SALE_OFF
+	setevent EVENT_ECRUTEAK_CITY_GRAMPS
 	setevent EVENT_EUSINE_IN_BURNED_TOWER
-	setevent EVENT_6C8
-	setevent EVENT_7AC
-	setevent EVENT_7AD
-	setevent EVENT_7B5
-	setevent EVENT_7B6
-	setevent EVENT_7C5
+	setevent EVENT_KRISS_HOUSE_MOM_2
+	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
+	setevent EVENT_CIANWOOD_CITY_EUSINE
+	setevent EVENT_TIN_TOWER_1F_EUSINE
+	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	setevent EVENT_SET_WHEN_FOUGHT_HO_OH
 	setevent EVENT_SAW_SUICUNE_ON_ROUTE_36
 	setevent EVENT_SAW_SUICUNE_ON_ROUTE_42
 	setevent EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
-	setevent EVENT_7CF
+	setevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	setflag ENGINE_ROCKET_SIGNAL_ON_CH20
 	setflag ENGINE_ROCKETS_IN_MAHOGANY
-	variablesprite $4, $52
-	variablesprite $5, $4
-	variablesprite $6, $35
-	variablesprite $7, $a
-	variablesprite $8, $a
-	variablesprite $9, $a
-	variablesprite $a, $a
-	variablesprite $b, $28
-	variablesprite $c, $28
+	variablesprite SPRITE_WEIRD_TREE, SPRITE_SUDOWOODO
+	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SILVER
+	variablesprite SPRITE_AZALEA_ROCKET, SPRITE_ROCKET
+	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_JANINE
+	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_JANINE
+	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_JANINE
+	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_JANINE
+	variablesprite SPRITE_COPYCAT, SPRITE_LASS
+	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
 	setevent EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM
-	setevent EVENT_76D
-	setevent EVENT_76C
-	setevent EVENT_76E
+	setevent EVENT_CERULEAN_GYM_ROCKET
+	setevent EVENT_ROUTE_24_ROCKET
+	setevent EVENT_ROUTE_25_MISTY_BOYFRIEND
 	setevent EVENT_TRAINERS_IN_CERULEAN_GYM
-	setevent EVENT_773
-	setevent EVENT_776
-	setevent EVENT_777
-	setevent EVENT_779
-	setevent EVENT_772
-	setevent EVENT_77B
-	setevent EVENT_036
+	setevent EVENT_COPYCATS_HOUSE_2F_DOLL
+	setevent EVENT_VIRIDIAN_GYM_BLUE
+	setevent EVENT_SEAFOAM_GYM_GYM_GUY
+	setevent EVENT_MT_MOON_SQUARE_CLEFAIRY
+	setevent EVENT_SAFFRON_TRAIN_STATION_POPULATION
+	setevent EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
+	setevent EVENT_INITIALIZED_EVENTS
 	return
 
 AskNumber1MScript:
 	special RandomPhoneMon
 	checkcode VAR_CALLERID
-	if_equal $5, .Jack
-	if_equal $7, .Huey
-	if_equal $b, .Gaven
-	if_equal $d, .Jose
-	if_equal $f, .Joey
-	if_equal $10, .Wade
-	if_equal $11, .Ralph
-	if_equal $13, .Anthony
-	if_equal $14, .Todd
-	if_equal $16, .Irwin
-	if_equal $17, .Arnie
-	if_equal $18, .Alan
-	if_equal $1b, .Chad
-	if_equal $1c, .Derek
-	if_equal $1d, .Tully
-	if_equal $1e, .Brent
-	if_equal $20, .Vance
-	if_equal $21, .Wilton
-	if_equal $22, .Kenji
-	if_equal $23, .Parry
+	if_equal PHONE_SCHOOLBOY_JACK, .Jack
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_FISHER_RALPH, .Ralph
+	if_equal PHONE_HIKER_ANTHONY, .Anthony
+	if_equal PHONE_CAMPER_TODD, .Todd
+	if_equal PHONE_JUGGLER_IRWIN, .Irwin
+	if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_SCHOOLBOY_CHAD, .Chad
+	if_equal PHONE_POKEFANM_DEREK, .Derek
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_POKEMANIAC_BRENT, .Brent
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_BLACKBELT_KENJI, .Kenji
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Jack
 	farwritetext JackAskNumber1Text
@@ -708,26 +708,26 @@
 AskNumber2MScript:
 	special RandomPhoneMon
 	checkcode VAR_CALLERID
-	if_equal $5, .Jack
-	if_equal $7, .Huey
-	if_equal $b, .Gaven
-	if_equal $d, .Jose
-	if_equal $f, .Joey
-	if_equal $10, .Wade
-	if_equal $11, .Ralph
-	if_equal $13, .Anthony
-	if_equal $14, .Todd
-	if_equal $16, .Irwin
-	if_equal $17, .Arnie
-	if_equal $18, .Alan
-	if_equal $1b, .Chad
-	if_equal $1c, .Derek
-	if_equal $1d, .Tully
-	if_equal $1e, .Brent
-	if_equal $20, .Vance
-	if_equal $21, .Wilton
-	if_equal $22, .Kenji
-	if_equal $23, .Parry
+	if_equal PHONE_SCHOOLBOY_JACK, .Jack
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_FISHER_RALPH, .Ralph
+	if_equal PHONE_HIKER_ANTHONY, .Anthony
+	if_equal PHONE_CAMPER_TODD, .Todd
+	if_equal PHONE_JUGGLER_IRWIN, .Irwin
+	if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_SCHOOLBOY_CHAD, .Chad
+	if_equal PHONE_POKEFANM_DEREK, .Derek
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_POKEMANIAC_BRENT, .Brent
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_BLACKBELT_KENJI, .Kenji
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Jack
 	farwritetext JackAskNumber2Text
@@ -799,26 +799,26 @@
 
 NumberAcceptedMScript:
 	checkcode VAR_CALLERID
-	if_equal $5, .Jack
-	if_equal $7, .Huey
-	if_equal $b, .Gaven
-	if_equal $d, .Jose
-	if_equal $f, .Joey
-	if_equal $10, .Wade
-	if_equal $11, .Ralph
-	if_equal $13, .Anthony
-	if_equal $14, .Todd
-	if_equal $16, .Irwin
-	if_equal $17, .Arnie
-	if_equal $18, .Alan
-	if_equal $1b, .Chad
-	if_equal $1c, .Derek
-	if_equal $1d, .Tully
-	if_equal $1e, .Brent
-	if_equal $20, .Vance
-	if_equal $21, .Wilton
-	if_equal $22, .Kenji
-	if_equal $23, .Parry
+	if_equal PHONE_SCHOOLBOY_JACK, .Jack
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_FISHER_RALPH, .Ralph
+	if_equal PHONE_HIKER_ANTHONY, .Anthony
+	if_equal PHONE_CAMPER_TODD, .Todd
+	if_equal PHONE_JUGGLER_IRWIN, .Irwin
+	if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_SCHOOLBOY_CHAD, .Chad
+	if_equal PHONE_POKEFANM_DEREK, .Derek
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_POKEMANIAC_BRENT, .Brent
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_BLACKBELT_KENJI, .Kenji
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Jack
 	farwritetext JackNumberAcceptedText
@@ -923,26 +923,26 @@
 
 NumberDeclinedMScript:
 	checkcode VAR_CALLERID
-	if_equal $5, .Jack
-	if_equal $7, .Huey
-	if_equal $b, .Gaven
-	if_equal $d, .Jose
-	if_equal $f, .Joey
-	if_equal $10, .Wade
-	if_equal $11, .Ralph
-	if_equal $13, .Anthony
-	if_equal $14, .Todd
-	if_equal $16, .Irwin
-	if_equal $17, .Arnie
-	if_equal $18, .Alan
-	if_equal $1b, .Chad
-	if_equal $1c, .Derek
-	if_equal $1d, .Tully
-	if_equal $1e, .Brent
-	if_equal $20, .Vance
-	if_equal $21, .Wilton
-	if_equal $22, .Kenji
-	if_equal $23, .Parry
+	if_equal PHONE_SCHOOLBOY_JACK, .Jack
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_FISHER_RALPH, .Ralph
+	if_equal PHONE_HIKER_ANTHONY, .Anthony
+	if_equal PHONE_CAMPER_TODD, .Todd
+	if_equal PHONE_JUGGLER_IRWIN, .Irwin
+	if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_SCHOOLBOY_CHAD, .Chad
+	if_equal PHONE_POKEFANM_DEREK, .Derek
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_POKEMANIAC_BRENT, .Brent
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_BLACKBELT_KENJI, .Kenji
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Jack
 	farwritetext JackNumberDeclinedText
@@ -1047,26 +1047,26 @@
 
 PhoneFullMScript:
 	checkcode VAR_CALLERID
-	if_equal $5, .Jack
-	if_equal $7, .Huey
-	if_equal $b, .Gaven
-	if_equal $d, .Jose
-	if_equal $f, .Joey
-	if_equal $10, .Wade
-	if_equal $11, .Ralph
-	if_equal $13, .Anthony
-	if_equal $14, .Todd
-	if_equal $16, .Irwin
-	if_equal $17, .Arnie
-	if_equal $18, .Alan
-	if_equal $1b, .Chad
-	if_equal $1c, .Derek
-	if_equal $1d, .Tully
-	if_equal $1e, .Brent
-	if_equal $20, .Vance
-	if_equal $21, .Wilton
-	if_equal $22, .Kenji
-	if_equal $23, .Parry
+	if_equal PHONE_SCHOOLBOY_JACK, .Jack
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_FISHER_RALPH, .Ralph
+	if_equal PHONE_HIKER_ANTHONY, .Anthony
+	if_equal PHONE_CAMPER_TODD, .Todd
+	if_equal PHONE_JUGGLER_IRWIN, .Irwin
+	if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_SCHOOLBOY_CHAD, .Chad
+	if_equal PHONE_POKEFANM_DEREK, .Derek
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_POKEMANIAC_BRENT, .Brent
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_BLACKBELT_KENJI, .Kenji
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Jack
 	farwritetext JackPhoneFullText
@@ -1171,23 +1171,23 @@
 
 RematchMScript:
 	checkcode VAR_CALLERID
-	if_equal $5, .Jack
-	if_equal $7, .Huey
-	if_equal $b, .Gaven
-	if_equal $d, .Jose
-	if_equal $f, .Joey
-	if_equal $10, .Wade
-	if_equal $11, .Ralph
-	if_equal $13, .Anthony
-	if_equal $14, .Todd
-	if_equal $17, .Arnie
-	if_equal $18, .Alan
-	if_equal $1b, .Chad
-	if_equal $1d, .Tully
-	if_equal $1e, .Brent
-	if_equal $20, .Vance
-	if_equal $21, .Wilton
-	if_equal $23, .Parry
+	if_equal PHONE_SCHOOLBOY_JACK, .Jack
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_FISHER_RALPH, .Ralph
+	if_equal PHONE_HIKER_ANTHONY, .Anthony
+	if_equal PHONE_CAMPER_TODD, .Todd
+	if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_SCHOOLBOY_CHAD, .Chad
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_POKEMANIAC_BRENT, .Brent
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Jack
 	farwritetext JackRematchText
@@ -1277,13 +1277,13 @@
 
 GiftMScript:
 	checkcode VAR_CALLERID
-	if_equal $d, .Jose
-	if_equal $10, .Wade
-	if_equal $18, .Alan
-	if_equal $1c, .Derek
-	if_equal $1d, .Tully
-	if_equal $21, .Wilton
-	if_equal $22, .Kenji
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_POKEFANM_DEREK, .Derek
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_BLACKBELT_KENJI, .Kenji
 
 .Jose
 	farwritetext JoseGiftText
@@ -1316,17 +1316,17 @@
 
 PackFullMScript:
 	checkcode VAR_CALLERID
-	if_equal $7, .Huey
-	if_equal $d, .Jose
-	if_equal $f, .Joey
-	if_equal $10, .Wade
-	if_equal $18, .Alan
-	if_equal $1c, .Derek
-	if_equal $1d, .Tully
-	if_equal $20, .Vance
-	if_equal $21, .Wilton
-	if_equal $22, .Kenji
-	if_equal $23, .Parry
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_BIRDKEEPER_JOSE, .Jose
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BUG_CATCHER_WADE, .Wade
+	if_equal PHONE_SCHOOLBOY_ALAN, .Alan
+	if_equal PHONE_POKEFANM_DEREK, .Derek
+	if_equal PHONE_FISHER_TULLY, .Tully
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_FISHER_WILTON, .Wilton
+	if_equal PHONE_BLACKBELT_KENJI, .Kenji
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Huey
 	farwritetext HueyPackFullText
@@ -1387,10 +1387,10 @@
 RematchGiftMScript:
 	loadfont
 	checkcode VAR_CALLERID
-	if_equal $7, .Huey
-	if_equal $f, .Joey
-	if_equal $20, .Vance
-	if_equal $23, .Parry
+	if_equal PHONE_SAILOR_HUEY, .Huey
+	if_equal PHONE_YOUNGSTER_JOEY, .Joey
+	if_equal PHONE_BIRDKEEPER_VANCE, .Vance
+	if_equal PHONE_HIKER_PARRY, .Parry
 
 .Huey
 	farwritetext HueyRematchGiftText
@@ -1411,14 +1411,14 @@
 
 AskNumber1FScript:
 	checkcode VAR_CALLERID
-	if_equal $6, .Beverly
-	if_equal $c, .Beth
-	if_equal $e, .Reena
-	if_equal $12, .Liz
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
-	if_equal $24, .Erin
+	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
+	if_equal PHONE_COOLTRAINERF_BETH, .Beth
+	if_equal PHONE_COOLTRAINERF_REENA, .Reena
+	if_equal PHONE_PICNICKER_LIZ, .Liz
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Beverly
 	farwritetext BeverlyAskNumber1Text
@@ -1447,14 +1447,14 @@
 
 AskNumber2FScript:
 	checkcode VAR_CALLERID
-	if_equal $6, .Beverly
-	if_equal $c, .Beth
-	if_equal $e, .Reena
-	if_equal $12, .Liz
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
-	if_equal $24, .Erin
+	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
+	if_equal PHONE_COOLTRAINERF_BETH, .Beth
+	if_equal PHONE_COOLTRAINERF_REENA, .Reena
+	if_equal PHONE_PICNICKER_LIZ, .Liz
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Beverly
 	farwritetext BeverlyAskNumber2Text
@@ -1490,14 +1490,14 @@
 
 NumberAcceptedFScript: ; 0xbcbd3
 	checkcode VAR_CALLERID
-	if_equal $6, .Beverly
-	if_equal $c, .Beth
-	if_equal $e, .Reena
-	if_equal $12, .Liz
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
-	if_equal $24, .Erin
+	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
+	if_equal PHONE_COOLTRAINERF_BETH, .Beth
+	if_equal PHONE_COOLTRAINERF_REENA, .Reena
+	if_equal PHONE_PICNICKER_LIZ, .Liz
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Beverly
 	farwritetext BeverlyNumberAcceptedText
@@ -1542,14 +1542,14 @@
 
 NumberDeclinedFScript:
 	checkcode VAR_CALLERID
-	if_equal $6, .Beverly
-	if_equal $c, .Beth
-	if_equal $e, .Reena
-	if_equal $12, .Liz
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
-	if_equal $24, .Erin
+	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
+	if_equal PHONE_COOLTRAINERF_BETH, .Beth
+	if_equal PHONE_COOLTRAINERF_REENA, .Reena
+	if_equal PHONE_PICNICKER_LIZ, .Liz
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Beverly
 	farwritetext BeverlyNumberDeclinedText
@@ -1594,14 +1594,14 @@
 
 PhoneFullFScript:
 	checkcode VAR_CALLERID
-	if_equal $6, .Beverly
-	if_equal $c, .Beth
-	if_equal $e, .Reena
-	if_equal $12, .Liz
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
-	if_equal $24, .Erin
+	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
+	if_equal PHONE_COOLTRAINERF_BETH, .Beth
+	if_equal PHONE_COOLTRAINERF_REENA, .Reena
+	if_equal PHONE_PICNICKER_LIZ, .Liz
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Beverly
 	farwritetext BeverlyPhoneFullText
@@ -1646,13 +1646,13 @@
 
 RematchFScript:
 	checkcode VAR_CALLERID
-	if_equal $c, .Beth
-	if_equal $e, .Reena
-	if_equal $12, .Liz
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
-	if_equal $24, .Erin
+	if_equal PHONE_COOLTRAINERF_BETH, .Beth
+	if_equal PHONE_COOLTRAINERF_REENA, .Reena
+	if_equal PHONE_PICNICKER_LIZ, .Liz
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Beth
 	farwritetext BethRematchText
@@ -1692,10 +1692,10 @@
 
 GiftFScript:
 	checkcode VAR_CALLERID
-	if_equal $6, .Beverly
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
+	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
 
 .Beverly
 	farwritetext BeverlyGiftText
@@ -1716,11 +1716,11 @@
 
 PackFullFScript:
 	checkcode VAR_CALLERID
-	if_equal $6, .Beverly
-	if_equal $15, .Gina
-	if_equal $1a, .Dana
-	if_equal $1f, .Tiffany
-	if_equal $24, .Erin
+	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
+	if_equal PHONE_PICNICKER_GINA, .Gina
+	if_equal PHONE_LASS_DANA, .Dana
+	if_equal PHONE_PICNICKER_TIFFANY, .Tiffany
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Beverly
 	farwritetext BeverlyPackFullText
@@ -1750,7 +1750,7 @@
 
 RematchGiftFScript:
 	checkcode VAR_CALLERID
-	if_equal $24, .Erin
+	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Erin
 	loadfont
@@ -1761,7 +1761,7 @@
 GymStatue1Script:
 	mapnametotext $0
 	loadfont
-	farwritetext UnknownText_0x1b074e
+	farwritetext GymStatue_CityGymText
 	closetext
 	loadmovesprites
 	end
@@ -1769,99 +1769,99 @@
 GymStatue2Script:
 	mapnametotext $0
 	loadfont
-	farwritetext UnknownText_0x1b074e
+	farwritetext GymStatue_CityGymText
 	keeptextopen
-	farwritetext UnknownText_0x1b075c
+	farwritetext GymStatue_WinningTrainersText
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0xbcdb9: ; 0xbcdb9
+ReceiveItemScript: ; 0xbcdb9
 	waitbutton
-	farwritetext UnknownText_0x1b0648
+	farwritetext ReceivedItemText
 	playsound SFX_ITEM
 	waitbutton
 	end
 ; 0xbcdc3
 
-UnknownScript_0xbcdc3: ; 0xbcdc3
+ReceiveTogepiEggScript: ; 0xbcdc3
 	waitbutton
-	farwritetext UnknownText_0x1b0648
+	farwritetext ReceivedItemText
 	playsound SFX_GET_EGG_FROM_DAYCARE_LADY
 	waitbutton
 	end
 ; 0xbcdcd
 
-UnknownScript_0xbcdcd: ; 0xbcdcd
+GameCornerCoinVendorScript: ; 0xbcdcd
 	faceplayer
 	loadfont
-	farwritetext UnknownText_0x1b077f
+	farwritetext CoinVendor_WelcomeText
 	keeptextopen
 	checkitem COIN_CASE
-	iftrue UnknownScript_0xbcde0
-	farwritetext UnknownText_0x1b079c
+	iftrue CoinVendor_IntroScript
+	farwritetext CoinVendor_NoCoinCaseText
 	closetext
 	loadmovesprites
 	end
 ; 0xbcde0
 
-UnknownScript_0xbcde0: ; 0xbcde0
-	farwritetext UnknownText_0x1b07e3
+CoinVendor_IntroScript: ; 0xbcde0
+	farwritetext CoinVendor_IntroText
 
-UnknownScript_0xbcde4: ; 0xbcde4
+CoinVendor_SellCoinsMenuScript: ; 0xbcde4
 	special Function24b4e
-	loadmenudata MenuDataHeader_0xbce54
+	loadmenudata CoinVendor_MenuDataHeader
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0xbcdf7
-	if_equal $2, UnknownScript_0xbce1b
-	jump UnknownScript_0xbce4d
+	if_equal $1, CoinVendor_Buy50CoinsScript
+	if_equal $2, CoinVendor_Buy500CoinsScript
+	jump CoinVendor_CancelScript
 ; 0xbcdf7
 
-UnknownScript_0xbcdf7: ; 0xbcdf7
+CoinVendor_Buy50CoinsScript: ; 0xbcdf7
 	checkcoins 9949
-	if_equal $0, UnknownScript_0xbce46
+	if_equal $0, CoinVendor_CoinCaseFullScript
 	checkmoney $0, 1000
-	if_equal $2, UnknownScript_0xbce3f
+	if_equal $2, CoinVendor_NotEnoughMoneyScript
 	givecoins 50
 	takemoney $0, 1000
 	waitbutton
 	playsound SFX_TRANSACTION
-	farwritetext UnknownText_0x1b0830
+	farwritetext CoinVendor_Buy50CoinsText
 	closetext
-	jump UnknownScript_0xbcde4
+	jump CoinVendor_SellCoinsMenuScript
 ; 0xbce1b
 
-UnknownScript_0xbce1b: ; 0xbce1b
+CoinVendor_Buy500CoinsScript: ; 0xbce1b
 	checkcoins 9499
-	if_equal $0, UnknownScript_0xbce46
+	if_equal $0, CoinVendor_CoinCaseFullScript
 	checkmoney $0, 10000
-	if_equal $2, UnknownScript_0xbce3f
+	if_equal $2, CoinVendor_NotEnoughMoneyScript
 	givecoins 500
 	takemoney $0, 10000
 	waitbutton
 	playsound SFX_TRANSACTION
-	farwritetext UnknownText_0x1b084f
+	farwritetext CoinVendor_Buy500CoinsText
 	closetext
-	jump UnknownScript_0xbcde4
+	jump CoinVendor_SellCoinsMenuScript
 ; 0xbce3f
 
-UnknownScript_0xbce3f: ; 0xbce3f
-	farwritetext UnknownText_0x1b086f
+CoinVendor_NotEnoughMoneyScript: ; 0xbce3f
+	farwritetext CoinVendor_NotEnoughMoneyText
 	closetext
 	loadmovesprites
 	end
 ; 0xbce46
 
-UnknownScript_0xbce46: ; 0xbce46
-	farwritetext UnknownText_0x1b088c
+CoinVendor_CoinCaseFullScript: ; 0xbce46
+	farwritetext CoinVendor_CoinCaseFullText
 	closetext
 	loadmovesprites
 	end
 ; 0xbce4d
 
-UnknownScript_0xbce4d: ; 0xbce4d
-	farwritetext UnknownText_0x1b08ad
+CoinVendor_CancelScript: ; 0xbce4d
+	farwritetext CoinVendor_CancelText
 	closetext
 	loadmovesprites
 	end
@@ -1868,15 +1868,15 @@
 ; 0xbce54
 
 
-MenuDataHeader_0xbce54: ; 0xbce54
+CoinVendor_MenuDataHeader: ; 0xbce54
 	db $40 ; flags
 	db 04, 00 ; start coords
 	db 11, 15 ; end coords
-	dw MenuData2_0xbce5c
+	dw CoinVendor_MenuData2
 	db 1 ; default option
 ; 0xbce5c
 
-MenuData2_0xbce5c: ; 0xbce5c
+CoinVendor_MenuData2: ; 0xbce5c
 	db $80 ; flags
 	db 3 ; items
 	db " 50 :  ¥1000@"
@@ -1888,7 +1888,7 @@
 HappinessCheckScript:
 	faceplayer
 	loadfont
-	special Function718d
+	special GetFirstPokemonHappiness
 	if_less_than 50, .Unhappy
 	if_less_than 150, .KindaHappy
 	farwritetext HappinessText3
@@ -1908,7 +1908,7 @@
 	loadmovesprites
 	end
 
-MovementData_0xbcea1: ; bcea1
+Movement_ContestResults_WalkAfterWarp: ; bcea1
 	step_right
 	step_down
 	turn_head_up
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -345,8 +345,9 @@
 	ld b, a
 	ld a, e
 	ld [hli], a
+rept 2
 	inc e
-	inc e
+endr
 	ld a, $80
 	ld [hli], a
 	dec c
@@ -371,9 +372,9 @@
 	ld a, [hl]
 	add 2
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .loop
 	
--- a/event/dratini.asm
+++ b/event/dratini.asm
@@ -37,8 +37,9 @@
 
 	; get address of mon's first move
 	pop de
+rept 2
 	inc de
-	inc de
+endr
 
 .GiveMoves
 	ld a, [hl]
--- a/event/move_deleter.asm
+++ b/event/move_deleter.asm
@@ -5,7 +5,7 @@
 	jr c, .asm_2c5c3
 	ld hl, UnknownText_0x2c5f4
 	call PrintText
-	callba Function50000
+	callba SelectMonFromParty
 	jr c, .asm_2c5c3
 	ld a, [CurPartySpecies]
 	cp EGG
--- a/event/name_rater.asm
+++ b/event/name_rater.asm
@@ -1,24 +1,31 @@
 NameRater: ; fb6ed
-	ld hl, UnknownText_0xfb80f
+; Introduce himself
+	ld hl, NameRaterIntroText
 	call PrintText
 	call YesNoBox
-	jp c, .asm_fb77e
-	ld hl, UnknownText_0xfb814
+	jp c, .cancel
+; Select a Pokemon from your party
+	ld hl, NameRaterWhichMonText
 	call PrintText
-	callba Function50000
-	jr c, .asm_fb77e
+	callba SelectMonFromParty
+	jr c, .cancel
+; He can't rename an egg...
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_fb783
+	jr z, .egg
+; ... or a Pokemon you got from a trade.
 	call GetCurNick
-	call Functionfb78a
-	jr c, .asm_fb779
-	ld hl, UnknownText_0xfb819
+	call CheckIfMonIsYourOT
+	jr c, .traded
+; This name is good, but we can do better.  How about it?
+	ld hl, NameRaterIsGoodText
 	call PrintText
 	call YesNoBox
-	jr c, .asm_fb77e
-	ld hl, UnknownText_0xfb81e
+	jr c, .cancel
+; What name shall I give it then?
+	ld hl, NameRaterWhichNameText
 	call PrintText
+; Load the new nickname into StringBuffer2
 	xor a
 	ld [MonType], a
 	ld a, [CurPartySpecies]
@@ -27,49 +34,53 @@
 	call GetBaseData
 	ld b, 0
 	ld de, StringBuffer2
-	callba Function116b7
-	call Functionfb7be
-	ld hl, UnknownText_0xfb837
-	jr c, .asm_fb76c
-	call Functionfb7d3
-	ld hl, UnknownText_0xfb837
-	jr c, .asm_fb76c
+	callba _NamingScreen
+; If the new name is empty, treat it as unchanged.
+	call IsNewNameEmpty
+	ld hl, NameRaterSameAsBeforeText
+	jr c, .samename
+; If the new name is the same as the old name, treat it as unchanged.
+	call CompareNewToOld
+	ld hl, NameRaterSameAsBeforeText
+	jr c, .samename
+; Copy the new name from StringBuffer2
 	ld hl, PartyMonNicknames
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld e, l
 	ld d, h
 	ld hl, StringBuffer2
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
-	ld hl, UnknownText_0xfb823
+	ld hl, NameRaterEvenBetterText
 
-.asm_fb76c
+.samename
 	push hl
 	call GetCurNick
-	ld hl, UnknownText_0xfb83c
+	ld hl, NameRaterDoneText
 	call PrintText
 	pop hl
-	jr .asm_fb786
+	jr .done
 
-.asm_fb779
-	ld hl, UnknownText_0xfb82d
-	jr .asm_fb786
+.traded
+	ld hl, NameRaterTradedText
+	jr .done
 
-.asm_fb77e
-	ld hl, UnknownText_0xfb828
-	jr .asm_fb786
+.cancel
+	ld hl, NameRaterCancelText
+	jr .done
 
-.asm_fb783
-	ld hl, UnknownText_0xfb832
+.egg
+	ld hl, NameRaterEggText
 
-.asm_fb786
+.done
 	call PrintText
 	ret
 ; fb78a
 
-Functionfb78a: ; fb78a
+CheckIfMonIsYourOT: ; fb78a
+; Checks to see if the partymon loaded in [CurPartyMon] has the different OT as you.  Returns carry if not.
 	ld hl, PartyMonOT
 	ld bc, NAME_LENGTH
 	ld a, [CurPartyMon]
@@ -76,99 +87,103 @@
 	call AddNTimes
 	ld de, PlayerName
 	ld c, NAME_LENGTH
-	call .asm_fb7b1
-	jr c, .asm_fb7bc
+	call .loop
+	jr c, .nope
+
 	ld hl, PartyMon1ID
 	ld bc, PartyMon2 - PartyMon1
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld de, PlayerID
-	ld c, $2
-.asm_fb7b1
+	ld c, 2 ; number of bytes in which your ID is stored
+.loop
 	ld a, [de]
 	cp [hl]
-	jr nz, .asm_fb7bc
+	jr nz, .nope
 	inc hl
 	inc de
 	dec c
-	jr nz, .asm_fb7b1
+	jr nz, .loop
 	and a
 	ret
 
-.asm_fb7bc
+.nope
 	scf
 	ret
 ; fb7be
 
-Functionfb7be: ; fb7be
+IsNewNameEmpty: ; fb7be
+; Checks to see if the nickname loaded in StringBuffer2 is empty.  If so, return carry.
 	ld hl, StringBuffer2
-	ld c, 10
-.asm_fb7c3
+	ld c, PKMN_NAME_LENGTH - 1
+.loop
 	ld a, [hli]
 	cp "@"
-	jr z, .asm_fb7cf
+	jr z, .terminator
 	cp " "
-	jr nz, .asm_fb7d1
+	jr nz, .nonspace
 	dec c
-	jr nz, .asm_fb7c3
+	jr nz, .loop
 
-.asm_fb7cf
+.terminator
 	scf
 	ret
 
-.asm_fb7d1
+.nonspace
 	and a
 	ret
 ; fb7d3
 
-Functionfb7d3: ; fb7d3
+CompareNewToOld: ; fb7d3
+; Compares the nickname in StringBuffer2 to the previous nickname.  If they are the same, return carry.
 	ld hl, PartyMonNicknames
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	push hl
-	call Functionfb802
+	call GetNicknameLength
 	ld b, c
 	ld hl, StringBuffer2
-	call Functionfb802
+	call GetNicknameLength
 	pop hl
 	ld a, c
 	cp b
-	jr nz, .asm_fb7fe
+	jr nz, .different
 	ld de, StringBuffer2
-.asm_fb7f2
+.loop
 	ld a, [de]
 	cp "@"
-	jr z, .asm_fb800
+	jr z, .terminator
 	cp [hl]
-	jr nz, .asm_fb7fe
+	jr nz, .different
 	inc hl
 	inc de
-	jr .asm_fb7f2
+	jr .loop
 
-.asm_fb7fe
+.different
 	and a
 	ret
 
-.asm_fb800
+.terminator
 	scf
 	ret
 ; fb802
 
-Functionfb802: ; fb802
+GetNicknameLength: ; fb802
+; Gets the length of the name starting at hl and returns it in c.
 	ld c, 0
-.asm_fb804
+.loop
 	ld a, [hli]
 	cp "@"
 	ret z
 	inc c
 	ld a, c
-	cp 10
-	jr nz, .asm_fb804
+	cp PKMN_NAME_LENGTH - 1
+	jr nz, .loop
 	ret
 ; fb80f
 
-UnknownText_0xfb80f: ; 0xfb80f
+NameRaterIntroText: ; 0xfb80f
 	; Hello, hello! I'm the NAME RATER.
 	; I rate the names of #MON.
 	; Would you like me to rate names?
@@ -176,13 +191,13 @@
 	db "@"
 ; 0xfb814
 
-UnknownText_0xfb814: ; 0xfb814
+NameRaterWhichMonText: ; 0xfb814
 	; Which #MON's nickname should I rate for you?
 	text_jump UnknownText_0x1c00a0
 	db "@"
 ; 0xfb819
 
-UnknownText_0xfb819: ; 0xfb819
+NameRaterIsGoodText: ; 0xfb819
 	; Hm… @ … That's a fairly decent name.
 	; But, how about a slightly better nickname?
 	; Want me to give it a better name?
@@ -190,25 +205,25 @@
 	db "@"
 ; 0xfb81e
 
-UnknownText_0xfb81e: ; 0xfb81e
+NameRaterWhichNameText: ; 0xfb81e
 	; All right. What name should we give it, then?
 	text_jump UnknownText_0x1c0142
 	db "@"
 ; 0xfb823
 
-UnknownText_0xfb823: ; 0xfb823
+NameRaterEvenBetterText: ; 0xfb823
 	; That's a better name than before! Well done!
 	text_jump UnknownText_0x1c0171
 	db "@"
 ; 0xfb828
 
-UnknownText_0xfb828: ; 0xfb828
+NameRaterCancelText: ; 0xfb828
 	; OK, then. Come again sometime.
 	text_jump UnknownText_0x1c019e
 	db "@"
 ; 0xfb82d
 
-UnknownText_0xfb82d: ; 0xfb82d
+NameRaterTradedText: ; 0xfb82d
 	; Hm… @ ? What a great name! It's perfect.
 	; Treat @ with loving care.
 	text_jump UnknownText_0x1c01be
@@ -215,20 +230,20 @@
 	db "@"
 ; 0xfb832
 
-UnknownText_0xfb832: ; 0xfb832
+NameRaterEggText: ; 0xfb832
 	; Whoa… That's just an EGG.
 	text_jump UnknownText_0x1c0208
 	db "@"
 ; 0xfb837
 
-UnknownText_0xfb837: ; 0xfb837
-	; It might look the same as before,
+NameRaterSameAsBeforeText: ; 0xfb837
+	; It might look the different as before,
 	; but this new name is much better! Well done!
 	text_jump UnknownText_0x1c0222
 	db "@"
 ; 0xfb83c
 
-UnknownText_0xfb83c: ; 0xfb83c
+NameRaterDoneText: ; 0xfb83c
 	; All right. This #MON is now named @ .
 	text_jump UnknownText_0x1c0272
 	db "@"
--- a/event/poke_seer.asm
+++ b/event/poke_seer.asm
@@ -14,7 +14,7 @@
 	call Functiona36
 
 	ld b, $6
-	callba Function50000
+	callba SelectMonFromParty
 	jr c, .cancel
 
 	ld a, [CurPartySpecies]
@@ -287,8 +287,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, SeerTexts
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
--- a/gbhw.asm
+++ b/gbhw.asm
@@ -51,7 +51,7 @@
 rTAC_ON        EQU 2
 rTAC_4096_HZ   EQU 0
 rTAC_262144_HZ EQU 1
-rTAC_65536_HZ  EQU 2 
+rTAC_65536_HZ  EQU 2
 rTAC_16384_HZ  EQU 3
 rIF         EQU $ff0f ; Interrupt Flag (R/W)
 rNR10       EQU $ff10 ; Channel 1 Sweep register (R/W)
--- a/gfx/pics/animation.asm
+++ b/gfx/pics/animation.asm
@@ -110,8 +110,9 @@
 	ld c, e
 	ld b, 0
 	ld hl, PokeAnims
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld b, [hl]
 	ld c, a
@@ -507,8 +508,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [w2_d174]
 	call GetFarHalfword
 	ld a, l
@@ -530,8 +532,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [w2_d177]
 	call GetFarHalfword
 	ld a, [w2_d177]
@@ -948,8 +951,9 @@
 	dec a
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, c
 	ld [w2_d174], a
 	call GetFarHalfword
@@ -1018,8 +1022,9 @@
 	dec a
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, b
 	call GetFarHalfword
 	ld a, l
@@ -1057,8 +1062,9 @@
 	dec a
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [w2_d17a]
 	call GetFarHalfword
 	ld a, l
--- a/home.asm
+++ b/home.asm
@@ -481,7 +481,7 @@
 ; 31cd
 
 
-Function31cd:: ; 31cd
+ExitMenuCallScript:: ; 31cd
 ; Push pointer hl in the current bank to wd0e8.
 	ld a, [hROMBank]
 
@@ -499,6 +499,7 @@
 StringCmp:: ; 31db
 ; Compare c bytes at de and hl.
 ; Return z if they all match.
+.loop
 	ld a, [de]
 	cp [hl]
 	ret nz
@@ -505,7 +506,7 @@
 	inc de
 	inc hl
 	dec c
-	jr nz, StringCmp
+	jr nz, .loop
 	ret
 ; 0x31e4
 
@@ -714,7 +715,7 @@
 	ld a, [hCGB]
 	and a
 	jr nz, .cgb
-	
+
 ; DMG: just change palettes to 0 (white)
 	xor a
 	ld [rBGP], a
@@ -721,7 +722,7 @@
 	ld [rOBP0], a
 	ld [rOBP1], a
 	ret
-	
+
 .cgb
 	ld a, [rSVBK]
 	push af
@@ -754,11 +755,11 @@
 	ld a, [hCGB]
 	and a
 	jr nz, .sgb
-	
+
 	ld a, [hSGB]
 	and a
 	ret z
-	
+
 .sgb
 	predef_jump Function864c ; LoadSGBLayout
 ; 334e
@@ -835,7 +836,12 @@
 	dbw 0, PartyMonOT
 	dbw 0, OTPartyMonOT
 	dbw BANK(TrainerClassNames), TrainerClassNames
-	dbw $04, MoveDescriptions ; ????
+; 33c0
+
+Function33c0:
+	inc b
+	ld d, d
+	ld c, e
 ; 33c3
 
 GetName:: ; 33c3
@@ -866,9 +872,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, NamesPointers
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	rst Bankswitch
 	ld a, [hli]
@@ -880,7 +886,7 @@
 	call GetNthString
 
 	ld de, StringBuffer1
-	ld bc, $000d
+	ld bc, ITEM_NAME_LENGTH
 	call CopyBytes
 
 .done
@@ -961,8 +967,9 @@
 	ld e, a
 	ld h, 0
 	ld l, a
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	add hl, de
 	add hl, hl
 	ld de, PokemonNames
@@ -1209,7 +1216,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function3574
 
 	pop bc
@@ -1235,7 +1242,7 @@
 	call Function35de
 	jr nc, .asm_3597
 	call Function2631
-	callba Function96c56
+	callba EnableScriptMode
 	scf
 	ret
 
@@ -1336,8 +1343,9 @@
 	inc hl
 
 .asm_35f8
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_35e6
 
 .asm_35fc
@@ -1355,7 +1363,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call CheckTrainerBattle
 
 	pop bc
@@ -1380,7 +1388,7 @@
 	push de
 
 ; Has a sprite
-	ld hl, $0001
+	ld hl, MAPOBJECT_SPRITE
 	add hl, de
 	ld a, [hl]
 	and a
@@ -1387,7 +1395,7 @@
 	jr z, .next
 
 ; Is a trainer
-	ld hl, $0008
+	ld hl, MAPOBJECT_COLOR
 	add hl, de
 	ld a, [hl]
 	and $f
@@ -1395,19 +1403,19 @@
 	jr nz, .next
 
 ; Is visible on the map
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, de
 	ld a, [hl]
-	cp $ff
+	cp -1
 	jr z, .next
 
 ; Is facing the player...
-	call Function1ae5
+	call GetObjectStruct
 	call FacingPlayerDistance_bc
 	jr nc, .next
 
 ; ...within their sight range
-	ld hl, $0009
+	ld hl, MAPOBJECT_RANGE
 	add hl, de
 	ld a, [hl]
 	cp b
@@ -1416,7 +1424,7 @@
 ; And hasn't already been beaten
 	push bc
 	push de
-	ld hl, $000a
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -1430,7 +1438,7 @@
 	pop de
 	pop bc
 	and a
-	jr z, .asm_3666
+	jr z, .startbattle
 
 .next
 	pop de
@@ -1446,7 +1454,7 @@
 	xor a
 	ret
 
-.asm_3666
+.startbattle
 	pop de
 	pop af
 	ld [$ffe0], a
@@ -1458,9 +1466,9 @@
 ; 3674
 
 Function3674:: ; 3674
-	ld a, $1
+	ld a, 1
 	ld [CurFruit], a
-	ld a, $ff
+	ld a, -1
 	ld [wd040], a
 
 Function367e:: ; 367e
@@ -1468,7 +1476,7 @@
 	ld [EngineBuffer1], a
 	ld a, [$ffe0]
 	call GetMapObject
-	ld hl, $000a
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, bc
 	ld a, [EngineBuffer1]
 	call GetFarHalfword
@@ -1498,11 +1506,11 @@
 ; Return carry if the sprite at bc is facing the player,
 ; and its distance in d.
 
-	ld hl, $0010 ; x
+	ld hl, OBJECT_MAP_X ; x
 	add hl, bc
 	ld d, [hl]
 
-	ld hl, $0011 ; y
+	ld hl, OBJECT_MAP_Y ; y
 	add hl, bc
 	ld e, [hl]
 
@@ -1565,13 +1573,13 @@
 ; 36f5
 
 
-Function36f5:: ; 36f5
+CheckTrainerFlag:: ; 36f5
 	push bc
-	ld hl, $0001
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	call GetMapObject
-	ld hl, $000a
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
@@ -1581,7 +1589,7 @@
 	ld d, h
 	ld e, l
 	push de
-	ld b, $2
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	pop de
 	ld a, c
@@ -1594,19 +1602,19 @@
 Function3718:: ; 3718
 	ld a, [BattleType]
 	cp BATTLETYPE_CANLOSE
-	jr .asm_3724
+	jr .canlose
 
 	ld hl, WalkingTile
-	jr .asm_3731
+	jr .ok
 
-.asm_3724
+.canlose
 	ld a, [wd0ee]
 	ld hl, WalkingTile
 	and $f
-	jr z, .asm_3731
+	jr z, .ok
 	ld hl, wd048 + 1
 
-.asm_3731
+.ok
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1784,7 +1792,7 @@
 	push af
 	ld a, BANK(BaseData)
 	rst Bankswitch
-	
+
 ; Egg doesn't have BaseData
 	ld a, [CurSpecies]
 	cp EGG
@@ -1799,16 +1807,16 @@
 	ld bc, BaseData1 - BaseData0
 	call CopyBytes
 	jr .end
-	
+
 .egg
 ; ????
 	ld de, UnknownEggPic
-	
+
 ; Sprite dimensions
 	ld b, $55 ; 5x5
 	ld hl, BasePicSize
 	ld [hl], b
-	
+
 ; ????
 	ld hl, BasePadding
 	ld [hl], e
@@ -1819,12 +1827,12 @@
 	inc hl
 	ld [hl], d
 	jr .end
-	
+
 .end
 ; Replace Pokedex # with species
 	ld a, [CurSpecies]
 	ld [BaseDexNo], a
-	
+
 	pop af
 	rst Bankswitch
 	pop hl
@@ -2102,10 +2110,12 @@
 	push bc
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	call Function3f35
 	pop bc
 	pop hl
@@ -2129,10 +2139,12 @@
 	push bc
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	call Function3f35
 	pop bc
 	pop hl
@@ -2253,8 +2265,9 @@
 	ld c, $8
 .asm_3fa5
 	ld a, [de]
+rept 2
 	inc de
-	inc de
+endr
 	cpl
 	ld [hl], $0
 	inc hl
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -158,12 +158,9 @@
 	ld [MBC3RomBank], a
 
 	ld hl, CryHeaders
+rept 6
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 
 	ld e, [hl]
 	inc hl
@@ -321,7 +318,7 @@
 	ret
 ; 3cae
 
-Function3cae:: ; 3cae
+CrankUpTheVolume:: ; 3cae
 	ld a, 4 | 1 << 7
 	ld [MusicFade], a
 	ret
@@ -423,7 +420,7 @@
 	ret
 ; 3d2f
 
-Function3d2f:: ; 3d2f
+TryRestartMapMusic:: ; 3d2f
 	ld a, [wc2c1]
 	and a
 	jr z, RestartMapMusic
--- a/home/battle.asm
+++ b/home/battle.asm
@@ -91,7 +91,7 @@
 
 	ld a, [CurBattleMon]
 
-Function399f:: ; 399f
+UpdateBattleMon:: ; 399f
 	ld hl, PartyMon1Level
 	call GetPartyLocation
 
@@ -153,8 +153,9 @@
 	ld hl, .battlevarpairs
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 
 	ld a, [hli]
 	ld h, [hl]
@@ -174,8 +175,9 @@
 	ld b, 0
 
 	ld hl, .vars
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 
 	ld a, [hli]
 	ld h, [hl]
@@ -260,7 +262,7 @@
 ; 3a90
 
 
-Function3a90:: ; 3a90
+FarJumpText:: ; 3a90
 	inc hl
 	ld a, [hROMBank]
 	push af
@@ -310,7 +312,7 @@
 	push hl
 	call SpeechTextBox
 	call MobileTextBorder
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	pop hl
 	call PrintTextBoxText
--- a/home/copy.asm
+++ b/home/copy.asm
@@ -56,7 +56,7 @@
 	ld a, b
 	rst Bankswitch
 
-.asm_e09
+.loop
 	ld a, d
 	ld [rHDMA1], a
 	ld a, e
@@ -70,7 +70,7 @@
 	ld [rHDMA4], a
 	ld a, c
 	cp $8
-	jr c, .asm_e3c
+	jr c, .done
 	sub $8
 	ld c, a
 	ld a, $f
@@ -77,20 +77,20 @@
 	ld [hDMATransfer], a
 	call DelayFrame
 	ld a, l
-	add $0
+	add 0
 	ld l, a
 	ld a, h
-	adc $1
+	adc 1
 	ld h, a
 	ld a, e
-	add $0
+	add 0
 	ld e, a
 	ld a, d
-	adc $1
+	adc 1
 	ld d, a
-	jr .asm_e09
+	jr .loop
 
-.asm_e3c
+.done
 	ld a, c
 	and $7f
 	ld [hDMATransfer], a
@@ -105,7 +105,7 @@
 
 
 
-Functione4a:: ; e4a
+Special_ReplaceKrisSprite:: ; e4a
 	callba Function14135
 	ret
 ; e51
@@ -195,8 +195,9 @@
 .loop
 	ld a, [de]
 	inc de
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 .dec
 	dec c
 	jr nz, .loop
@@ -406,9 +407,9 @@
 	push af
 	ld h, 0
 	ld l, c
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld b, h
 	ld c, l
 	pop af
--- a/home/cry.asm
+++ b/home/cry.asm
@@ -66,12 +66,9 @@
 	rst Bankswitch
 
 	ld hl, CryHeaders
+rept 6
 	add hl, bc
-	add hl, bc
-	add hl, bc
-	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 
 	ld e, [hl]
 	inc hl
--- a/home/fade.asm
+++ b/home/fade.asm
@@ -36,7 +36,7 @@
 	jr FadeOut
 ; 4b6
 
-Function4b6:: ; 4b6
+FadeToWhite:: ; 4b6
 	ld a, [hCGB]
 	and a
 	jr z, .asm_4c2
--- a/home/flag.asm
+++ b/home/flag.asm
@@ -1,4 +1,4 @@
-Function2e50:: ; 2e50
+ResetMapBufferEventFlags:: ; 2e50
 	xor a
 	ld hl, EventFlags
 	ld [hli], a
@@ -5,7 +5,7 @@
 	ret
 ; 2e56
 
-Function2e56:: ; 2e56
+ResetBikeFlags:: ; 2e56
 	xor a
 	ld hl, BikeFlags
 	ld [hli], a
@@ -13,8 +13,8 @@
 	ret
 ; 2e5d
 
-Function2e5d:: ; 2e5d
-	ld a, [wd19a]
+ResetFlashIfOutOfCave:: ; 2e5d
+	ld a, [wPermission]
 	cp $2
 	jr z, .asm_2e69
 	cp $1
--- a/home/joypad.asm
+++ b/home/joypad.asm
@@ -42,8 +42,9 @@
 	ld a, D_PAD
 	ld [rJOYP], a
 ; Read twice to give the request time to take.
+rept 2
 	ld a, [rJOYP]
-	ld a, [rJOYP]
+endr
 	
 ; The Joypad register output is in the lo nybble (inversed).
 ; We make the hi nybble of our new container d-pad input.
@@ -59,12 +60,9 @@
 	ld a, BUTTONS
 	ld [rJOYP], a
 ; Wait for input to stabilize.
+rept 6
 	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
+endr
 ; Buttons take the lo nybble.
 	cpl
 	and $f
@@ -211,8 +209,9 @@
 	jr nz, .next
 	
 ; The current input is overwritten.
+rept 2
 	dec hl
-	dec hl
+endr
 	ld b, NO_INPUT
 	jr .finishauto
 	
@@ -312,7 +311,7 @@
 	jr Functiona36
 ; a46
 
-Functiona46:: ; a46
+CloseText:: ; a46
 	ld a, [hOAMUpdate]
 	push af
 	ld a, 1
@@ -387,7 +386,7 @@
 	ret
 ; aaf
 
-Functionaaf:: ; aaf
+KeepTextOpen:: ; aaf
 	ld a, [InLinkBattle]
 	and a
 	jr nz, .asm_ac1
--- a/home/map.asm
+++ b/home/map.asm
@@ -1,6 +1,6 @@
 ; Functions dealing with rendering and interacting with maps.
 
-Function210f:: ; 210f
+Clearwc7e8:: ; 210f
 	ld hl, wc7e8
 	ld bc, $0018
 	ld a, $0
@@ -8,41 +8,49 @@
 	ret
 ; 211b
 
-Function211b:: ; 211b
+CheckTriggers:: ; 211b
+; Checks wCurrentMapTriggerPointer.  If it's empty, returns -1 in a.  Otherwise, returns the active trigger ID in a.
 	push hl
-	ld hl, BikeFlags + 2
+	ld hl, wCurrentMapTriggerPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	or h
 	ld a, [hl]
-	jr nz, .asm_2128
-	ld a, $ff
+	jr nz, .triggerexists
+	ld a, -1
 
-.asm_2128
+.triggerexists
 	pop hl
 	ret
 ; 212a
 
 GetCurrentMapTrigger:: ; 212a
+; Grabs the wram map trigger pointer for the current map and loads it into wCurrentMapTriggerPointer.
+; If there are no triggers, both bytes of wCurrentMapTriggerPointer are wiped clean.
+; Copy the current map group and number into bc.  This is needed for GetMapTrigger.
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
+; Blank out wCurrentMapTriggerPointer; this is the default scenario.
 	xor a
-	ld [BikeFlags + 2], a
-	ld [BikeFlags + 3], a
+	ld [wCurrentMapTriggerPointer], a
+	ld [wCurrentMapTriggerPointer + 1], a
 	call GetMapTrigger
-	ret c
+	ret c ; The map is not in the trigger table
+; Load the trigger table pointer from de into wCurrentMapTriggerPointer
 	ld a, e
-	ld [BikeFlags + 2], a
+	ld [wCurrentMapTriggerPointer], a
 	ld a, d
-	ld [BikeFlags + 3], a
+	ld [wCurrentMapTriggerPointer + 1], a
 	xor a
 	ret
 ; 2147
 
 GetMapTrigger:: ; 2147
+; Searches the trigger table for the map group and number loaded in bc, and returns the wram pointer in de.
+; If the map is not in the trigger table, returns carry.
 	push bc
 	ld a, [hROMBank]
 	push af
@@ -50,34 +58,34 @@
 	rst Bankswitch
 
 	ld hl, MapTriggers
-.asm_2151
+.loop
 	push hl
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_2167
+	ld a, [hli] ; map group, or terminator
+	cp -1
+	jr z, .end ; the current map is not in the trigger table
 	cp b
-	jr nz, .asm_2160
-	ld a, [hli]
+	jr nz, .next ; map group did not match
+	ld a, [hli] ; map number
 	cp c
-	jr nz, .asm_2160
-	jr .asm_216a
+	jr nz, .next ; map number did not match
+	jr .found ; we found our map
 
-.asm_2160
+.next
 	pop hl
-	ld de, $0004
+	ld de, 4 ; size of an entry in the trigger table
 	add hl, de
-	jr .asm_2151
+	jr .loop
 
-.asm_2167
+.end
 	scf
-	jr .asm_216d
+	jr .done
 
-.asm_216a
+.found
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 
-.asm_216d
+.done
 	pop hl
 	pop bc
 	ld a, b
@@ -142,9 +150,9 @@
 	add a
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
-	add hl, hl
+rept 3
+	add hl,hl
+endr
 	ld a, [TilesetBlocksAddress]
 	add l
 	ld l, a
@@ -234,7 +242,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function2266
 
 	pop de
@@ -295,8 +303,9 @@
 ; 22a3
 
 Function22a3:: ; 22a3
+rept 2
 	inc hl
-	inc hl
+endr
 	scf
 	ret
 ; 22a7
@@ -305,7 +314,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function22b4
 
 	pop af
@@ -379,9 +388,9 @@
 ; 2309
 
 
-Function2309:: ; 2309
+LoadMapAttributes:: ; 2309
 	call Function2326
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function234f
 	xor a
 	call Function2336
@@ -388,9 +397,9 @@
 	ret
 ; 2317
 
-Function2317:: ; 2317
+LoadMapAttributes_IgnoreHidden:: ; 2317
 	call Function2326
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function234f
 	ld a, $1
 	call Function2336
@@ -412,8 +421,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
+endr
 	call Function23da
 	call Function23f1
 	call Function2408
@@ -548,7 +558,7 @@
 Function23f1:: ; 23f1
 	ld a, [hli]
 	ld c, a
-	ld [wdbfe], a
+	ld [wCurrentMapXYTriggerCount], a
 	ld a, l
 	ld [wdbff], a
 	ld a, h
@@ -564,7 +574,7 @@
 Function2408:: ; 2408
 	ld a, [hli]
 	ld c, a
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld a, l
 	ld [wdc02], a
 	ld a, h
@@ -656,7 +666,7 @@
 	ret
 ; 248a
 
-Function248a:: ; 248a
+RestoreFacingAfterWarp:: ; 248a
 	call GetMapScriptHeaderBank
 	rst Bankswitch
 
@@ -664,9 +674,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, [WarpNumber]
 	dec a
 	ld c, a
@@ -683,7 +693,7 @@
 	call Function24ba
 
 .asm_24b3
-	callba Function10486d
+	callba GetCoordOfUpperLeftCorner
 	ret
 ; 24ba
 
@@ -697,21 +707,21 @@
 	ret
 ; 24cd
 
-Function24cd:: ; 24cd
+LoadBlockData:: ; 24cd
 	ld hl, OverworldMap
 	ld bc, OverworldMapEnd - OverworldMap
 	ld a, 0
 	call ByteFill
-	call Function24e4
+	call ChangeMap
 	call FillMapConnections
 	ld a, $1
-	call Function263b
+	call RunMapCallback
 	ret
 ; 24e4
 
 
 
-Function24e4:: ; 24e4
+ChangeMap:: ; 24e4
 	ld a, [hROMBank]
 	push af
 
@@ -722,9 +732,9 @@
 	ld [hConnectionStripLength], a
 	ld c, a
 	ld b, 0
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld c, 3
 	add hl, bc
 	ld a, [MapBlockDataBank]
@@ -938,7 +948,7 @@
 	ret
 ; 261b
 
-Function261b:: ; 261b
+LoadMapStatus:: ; 261b
 	ld [MapStatus], a
 	ret
 ; 261f
@@ -968,11 +978,12 @@
 	jr CallScript
 ; 263b
 
-Function263b:: ; 263b
+RunMapCallback:: ; 263b
+; Will run the first callback found in the map header with execution index equal to a.
 	ld b, a
 	ld a, [hROMBank]
 	push af
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function2653
 	jr nc, .done
 
@@ -980,7 +991,7 @@
 	ld b, a
 	ld d, h
 	ld e, l
-	call Function2674
+	call ExecuteCallbackScript
 
 .done
 	pop af
@@ -999,18 +1010,18 @@
 	ld l, a
 	or h
 	ret z
-	ld de, $0003
-.asm_2664
+	ld de, 3
+.loop
 	ld a, [hl]
 	cp b
-	jr z, .asm_266e
+	jr z, .done
 	add hl, de
 	dec c
-	jr nz, .asm_2664
+	jr nz, .loop
 	xor a
 	ret
 
-.asm_266e
+.done
 	inc hl
 	ld a, [hli]
 	ld h, [hl]
@@ -1019,7 +1030,7 @@
 	ret
 ; 2674
 
-Function2674:: ; 2674
+ExecuteCallbackScript:: ; 2674
 	callba Function974f3
 	ld a, [ScriptMode]
 	push af
@@ -1027,7 +1038,7 @@
 	ld a, [hl]
 	push af
 	set 1, [hl]
-	callba Function96c56
+	callba EnableScriptMode
 	callba ScriptEvents
 	pop af
 	ld [ScriptFlags], a
@@ -1036,7 +1047,7 @@
 	ret
 ; 269a
 
-Function269a:: ; 269a
+MapTextbox:: ; 269a
 	ld a, [hROMBank]
 	push af
 
@@ -1059,7 +1070,7 @@
 	ret
 ; 26b7
 
-Function26b7:: ; 26b7
+Call_a_de:: ; 26b7
 ; Call a:de.
 
 	ld [hBuffer], a
@@ -1079,7 +1090,7 @@
 	ret
 ; 26c7
 
-Function26c7:: ; 26c7
+GetMovementData:: ; 26c7
 	ld a, [hROMBank]
 	push af
 	ld a, b
@@ -1315,8 +1326,9 @@
 	ld a, d
 	ld [hli], a
 	ld a, e
+rept 2
 	inc a
-	inc a
+endr
 	and $1f
 	ld b, a
 	ld a, e
@@ -1412,7 +1424,7 @@
 	ret
 ; 2879
 
-Function2879:: ; 2879
+BufferScreen:: ; 2879
 	ld hl, wd194
 	ld a, [hli]
 	ld h, [hl]
@@ -1441,7 +1453,7 @@
 	ret
 ; 289d
 
-Function289d:: ; 289d
+SaveScreen:: ; 289d
 	ld hl, wd194
 	ld a, [hli]
 	ld h, [hl]
@@ -1491,7 +1503,7 @@
 	jr Function28f7
 
 
-Function28e3:: ; 28e3
+LoadNeighboringBlockData:: ; 28e3
 	ld hl, wd194
 	ld a, [hli]
 	ld h, [hl]
@@ -1607,13 +1619,13 @@
 	ld a, [TileDown]
 	and $7
 	cp $2
-	jr z, .asm_299f
+	jr z, .ok
 	cp $6
-	jr z, .asm_299f
+	jr z, .ok
 	cp $7
 	ret nz
 
-.asm_299f
+.ok
 	ld a, [TilePermissions]
 	or $8
 	ld [TilePermissions], a
@@ -1626,13 +1638,13 @@
 	ld a, [TileUp]
 	and $7
 	cp $3
-	jr z, .asm_29bc
+	jr z, .ok
 	cp $4
-	jr z, .asm_29bc
+	jr z, .ok
 	cp $5
 	ret nz
 
-.asm_29bc
+.ok
 	ld a, [TilePermissions]
 	or $4
 	ld [TilePermissions], a
@@ -1645,13 +1657,13 @@
 	ld a, [TileRight]
 	and $7
 	cp $1
-	jr z, .asm_29d9
+	jr z, .ok
 	cp $5
-	jr z, .asm_29d9
+	jr z, .ok
 	cp $7
 	ret nz
 
-.asm_29d9
+.ok
 	ld a, [TilePermissions]
 	or $1
 	ld [TilePermissions], a
@@ -1664,13 +1676,13 @@
 	ld a, [TileLeft]
 	and $7
 	cp $0
-	jr z, .asm_29f6
+	jr z, .ok
 	cp $4
-	jr z, .asm_29f6
+	jr z, .ok
 	cp $6
 	ret nz
 
-.asm_29f6
+.ok
 	ld a, [TilePermissions]
 	or $2
 	ld [TilePermissions], a
@@ -1696,8 +1708,9 @@
 	srl a
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
+rept 2
+	add hl,hl
+endr
 	ld de, .Directions
 	add hl, de
 
@@ -1733,14 +1746,15 @@
 
 
 Function2a3c:: ; 2a3c
-	call Function2a66
+	call GetBlockLocation
 	ld a, [hl]
 	and a
-	jr z, .asm_2a63
+	jr z, .nope
 	ld l, a
 	ld h, $0
-	add hl, hl
-	add hl, hl
+rept 2
+	add hl,hl
+endr
 	ld a, [TilesetCollisionAddress]
 	ld c, a
 	ld a, [TilesetCollisionAddress + 1]
@@ -1747,51 +1761,52 @@
 	ld b, a
 	add hl, bc
 	rr d
-	jr nc, .asm_2a56
+	jr nc, .nocarry
 	inc hl
 
-.asm_2a56
+.nocarry
 	rr e
-	jr nc, .asm_2a5c
+	jr nc, .nocarry2
+rept 2
 	inc hl
-	inc hl
+endr
 
-.asm_2a5c
+.nocarry2
 	ld a, [TilesetCollisionBank]
 	call GetFarByte
 	ret
 
-.asm_2a63
-	ld a, $ff
+.nope
+	ld a, -1
 	ret
 ; 2a66
 
-Function2a66:: ; 2a66
+GetBlockLocation:: ; 2a66
 	ld a, [MapWidth]
-	add $6
+	add 6
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, wc801
 	add hl, bc
 	ld a, e
 	srl a
-	jr z, .asm_2a84
+	jr z, .nope
 	and a
-.asm_2a78
+.loop
 	srl a
-	jr nc, .asm_2a7d
+	jr nc, .ok
 	add hl, bc
 
-.asm_2a7d
+.ok
 	sla c
 	rl b
 	and a
-	jr nz, .asm_2a78
+	jr nz, .loop
 
-.asm_2a84
+.nope
 	ld c, d
 	srl c
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ret
 ; 2a8b
@@ -1799,7 +1814,9 @@
 
 CheckFacingSign:: ; 2a8b
 	call GetFacingTileCoord
+; Load facing into b.
 	ld b, a
+; Convert the coordinates at de to within-boundaries coordinates.
 	ld a, d
 	sub 4
 	ld d, a
@@ -1806,14 +1823,15 @@
 	ld a, e
 	sub 4
 	ld e, a
-	ld a, [wdc01]
+; If there are no signposts, we don't need to be here.
+	ld a, [wCurrentMapSignpostCount]
 	and a
 	ret z
 	ld c, a
 	ld a, [hROMBank]
 	push af
-	call Function2c52
-	call Function2aaa
+	call SwitchToMapScriptHeaderBank
+	call CheckIfFacingTileCoordIsSign
 	pop hl
 	ld a, h
 	rst Bankswitch
@@ -1820,53 +1838,56 @@
 	ret
 ; 2aaa
 
-Function2aaa:: ; 2aaa
+CheckIfFacingTileCoordIsSign:: ; 2aaa
+; Checks to see if you are facing a signpost.  If so, copies it into EngineBuffer1 and sets carry.
 	ld hl, wdc02
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-.asm_2ab0
+.loop
 	push hl
 	ld a, [hli]
 	cp e
-	jr nz, .asm_2abb
+	jr nz, .next
 	ld a, [hli]
 	cp d
-	jr nz, .asm_2abb
-	jr .asm_2ac8
+	jr nz, .next
+	jr .copysign
 
-.asm_2abb
+.next
 	pop hl
-	ld a, 5
+	ld a, 5 ; signpost event length
 	add l
 	ld l, a
-	jr nc, .asm_2ac3
+	jr nc, .nocarry
 	inc h
 
-.asm_2ac3
+.nocarry
 	dec c
-	jr nz, .asm_2ab0
+	jr nz, .loop
 	xor a
 	ret
 
-.asm_2ac8
+.copysign
 	pop hl
 	ld de, EngineBuffer1
-	ld bc, 5
+	ld bc, 5 ; signpost event length
 	call CopyBytes
 	scf
 	ret
 ; 2ad4
 
-Function2ad4:: ; 2ad4
-	ld a, [wdbfe]
+CheckCurrentMapXYTriggers:: ; 2ad4
+; If there are no xy triggers, we don't need to be here.
+	ld a, [wCurrentMapXYTriggerCount]
 	and a
 	ret z
+; Copy the trigger count into c.
 	ld c, a
 	ld a, [hROMBank]
 	push af
-	call Function2c52
-	call Function2ae7
+	call SwitchToMapScriptHeaderBank
+	call CheckStandingOnXYTrigger
 	pop hl
 	ld a, h
 	rst Bankswitch
@@ -1873,54 +1894,58 @@
 	ret
 ; 2ae7
 
-Function2ae7:: ; 2ae7
+CheckStandingOnXYTrigger:: ; 2ae7
+; Checks to see if you are standing on an xy-trigger.  If yes, copies the trigger to EngineBuffer1 and sets carry.
 	ld hl, wdbff
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call Function211b
+; Load the active trigger ID into b
+	call CheckTriggers
 	ld b, a
+; Load your current coordinates into de.  This will be used to check if your position is in the xy-trigger table for the current map.
 	ld a, [MapX]
-	sub $4
+	sub 4
 	ld d, a
 	ld a, [MapY]
-	sub $4
+	sub 4
 	ld e, a
-.asm_2afd
+
+.loop
 	push hl
 	ld a, [hli]
 	cp b
-	jr z, .asm_2b06
-	cp $ff
-	jr nz, .asm_2b10
+	jr z, .got_id
+	cp -1
+	jr nz, .next
 
-.asm_2b06
+.got_id
 	ld a, [hli]
 	cp e
-	jr nz, .asm_2b10
+	jr nz, .next
 	ld a, [hli]
 	cp d
-	jr nz, .asm_2b10
-	jr .asm_2b1d
+	jr nz, .next
+	jr .copytrigger
 
-.asm_2b10
+.next
 	pop hl
-	ld a, $8
+	ld a, $8 ; xy-trigger size
 	add l
 	ld l, a
-	jr nc, .asm_2b18
+	jr nc, .nocarry
 	inc h
 
-.asm_2b18
+.nocarry
 	dec c
-	jr nz, .asm_2afd
+	jr nz, .loop
 	xor a
 	ret
 
-.asm_2b1d
+.copytrigger
 	pop hl
 	ld de, EngineBuffer1
-	ld bc, $0008
+	ld bc, $0008 ; xy-trigger size
 	call CopyBytes
 	scf
 	ret
@@ -1931,7 +1956,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call Function1d6e
-	callba Function8c084
+	callba FadeBlackBGMap
 	call ClearSprites
 	call Function2ed3
 	ret
@@ -1941,7 +1966,7 @@
 Function2b3c:: ; 2b3c
 	call WhiteBGMap
 	call Function2bae
-	call Function1ad2
+	call DrawOnMap
 	call Function1d7d
 	call Functiond90
 	jr Function2b5c
@@ -1951,7 +1976,7 @@
 	call WhiteBGMap
 	call Function1d7d
 	call Function2bae
-	call Function1ad2
+	call DrawOnMap
 	call Functiond90
 ; 2b5c
 
@@ -1960,7 +1985,7 @@
 	call GetSGBLayout
 	callba Function49409
 	call Function3200
-	callba Function8c079
+	callba FadeInBGMap
 	call Function2ee4
 	ret
 ; 2b74
@@ -1978,7 +2003,7 @@
 	call TextBox
 	ld hl, VramState
 	set 0, [hl]
-	call Function1ad2
+	call DrawOnMap
 	call Function3200
 	ld b, $9
 	call GetSGBLayout
@@ -2041,8 +2066,9 @@
 	ld c, b
 	ld b, 0
 	ld hl, MapGroupPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 
 	ld a, [hli]
 	ld h, [hl]
@@ -2139,7 +2165,7 @@
 	ret
 ; 2c52
 
-Function2c52:: ; 2c52
+SwitchToMapScriptHeaderBank:: ; 2c52
 	ld a, [MapScriptHeaderBank]
 	rst Bankswitch
 	ret
@@ -2292,23 +2318,23 @@
 	jr .done
 ; 2cff
 
-Function2cff:: ; 2cff
-	call Function2d0d
+GetMapHeaderTimeOfDayNybble:: ; 2cff
+	call GetPhoneServiceTimeOfDayByte
 	and $f
 	ret
 ; 2d05
 
-Function2d05:: ; 2d05
-	call Function2d0d
+GetMapHeaderPhoneServiceNybble:: ; 2d05
+	call GetPhoneServiceTimeOfDayByte
 	and $f0
 	swap a
 	ret
 ; 2d0d
 
-Function2d0d:: ; 2d0d
+GetPhoneServiceTimeOfDayByte:: ; 2d0d
 	push hl
 	push bc
-	ld de, $0007
+	ld de, 7 ; phone service and time of day
 	call GetMapHeaderMember
 	ld a, c
 	pop bc
@@ -2320,7 +2346,7 @@
 	push de
 	push hl
 	push bc
-	ld de, $0008
+	ld de, 8 ; fishing group
 	call GetMapHeaderMember
 	ld a, c
 	pop bc
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -19,33 +19,34 @@
 	push hl
 	push bc
 	ld hl, UsedSprites + 2
-	ld c, $1f
+	ld c, SPRITE_GFX_LIST_CAPACITY - 1
 	ld b, a
 	ld a, [hConnectionStripLength]
-	cp $0
-	jr z, .asm_182b
+	cp 0
+	jr z, .nope
 	ld a, b
-.asm_181d
+.loop
 	cp [hl]
-	jr z, .asm_1830
+	jr z, .found
+rept 2
 	inc hl
-	inc hl
+endr
 	dec c
-	jr nz, .asm_181d
+	jr nz, .loop
 	ld a, [UsedSprites + 1]
 	scf
-	jr .asm_1833
+	jr .done
 
-.asm_182b
+.nope
 	ld a, [UsedSprites + 1]
-	jr .asm_1833
+	jr .done
 
-.asm_1830
+.found
 	inc hl
 	xor a
 	ld a, [hl]
 
-.asm_1833
+.done
 	pop bc
 	pop hl
 	ret
@@ -125,13 +126,13 @@
 	ld d, a
 	and $f0
 	cp $10
-	jr z, .asm_1882
+	jr z, .ok_10
 	cp $20
-	jr z, .asm_1888
+	jr z, .ok_20
 	scf
 	ret
 
-.asm_1882
+.ok_10
 	ld a, d
 	and 7
 	ret z
@@ -138,7 +139,7 @@
 	scf
 	ret
 
-.asm_1888
+.ok_20
 	ld a, d
 	and 7
 	ret z
@@ -223,7 +224,7 @@
 GetMapObject:: ; 18d2
 ; Return the location of map object a in bc.
 	ld hl, MapObjects
-	ld bc, $10
+	ld bc, OBJECT_LENGTH
 	call AddNTimes
 	ld b, h
 	ld c, l
@@ -232,93 +233,94 @@
 
 
 Function18de:: ; 18de
+; Sets carry if the object is not visible on the screen.
 	ld [hConnectionStripLength], a
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_18f3
+	cp -1
+	jr z, .not_visible
 	ld [hConnectedMapWidth], a
-	call Function1ae5
+	call GetObjectStruct
 	and a
 	ret
 
-.asm_18f3
+.not_visible
 	scf
 	ret
 ; 18f5
 
 Function18f5:: ; 18f5
-	ld hl, $0006
+	ld hl, MAPOBJECT_HOUR
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr nz, .asm_1921
-	ld hl, $0007
+	cp -1
+	jr nz, .check_hour
+	ld hl, MAPOBJECT_TIMEOFDAY
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_191c
-	ld hl, .data_191e
+	cp -1
+	jr z, .timeofday_always
+	ld hl, .TimeOfDayValues_191e
 	ld a, [TimeOfDay]
 	add l
 	ld l, a
-	jr nc, .asm_1912
+	jr nc, .ok
 	inc h
 
-.asm_1912
+.ok
 	ld a, [hl]
-	ld hl, $0007
+	ld hl, MAPOBJECT_TIMEOFDAY
 	add hl, bc
 	and [hl]
-	jr nz, .asm_191c
+	jr nz, .timeofday_always
 	scf
 	ret
 
-.asm_191c
+.timeofday_always
 	and a
 	ret
 
-.data_191e
-	db $1
-	db $2
-	db $4
+.TimeOfDayValues_191e
+	db 1 << MORN ; 1
+	db 1 << DAY  ; 2
+	db 1 << NITE ; 4
 
-.asm_1921
-	ld hl, $0006
+.check_hour
+	ld hl, MAPOBJECT_HOUR
 	add hl, bc
 	ld d, [hl]
-	ld hl, $0007
+	ld hl, MAPOBJECT_TIMEOFDAY
 	add hl, bc
 	ld e, [hl]
 	ld hl, hHours
 	ld a, d
 	cp e
-	jr z, .asm_1949
-	jr c, .asm_193f
+	jr z, .yes
+	jr c, .check_timeofday
 	ld a, [hl]
 	cp d
-	jr nc, .asm_1949
+	jr nc, .yes
 	cp e
-	jr c, .asm_1949
-	jr z, .asm_1949
-	jr .asm_194b
+	jr c, .yes
+	jr z, .yes
+	jr .no
 
-.asm_193f
+.check_timeofday
 	ld a, e
 	cp [hl]
-	jr c, .asm_194b
+	jr c, .no
 	ld a, [hl]
 	cp d
-	jr nc, .asm_1949
-	jr .asm_194b
+	jr nc, .yes
+	jr .no
 
-.asm_1949
+.yes
 	and a
 	ret
 
-.asm_194b
+.no
 	scf
 	ret
 ; 194d
@@ -326,18 +328,18 @@
 Function194d:: ; 194d
 	ld [hConnectionStripLength], a
 	call GetMapObject
-	call Function80e7
+	call CopyObjectStruct
 	ret
 ; 1956
 
 
 
-Function1956:: ; 1956
+_CopyObjectStruct:: ; 1956
 	ld [hConnectionStripLength], a
 	call Function271e
 	ld a, [hConnectionStripLength]
 	call GetMapObject
-	callba Function80e7
+	callba CopyObjectStruct
 	ret
 ; 1967
 
@@ -344,16 +346,16 @@
 Function1967:: ; 1967
 	ld [hConnectionStripLength], a
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
-	ld [hl], $ff
+	ld [hl], -1
 	push af
 	call Function1985
 	pop af
-	call Function1ae5
+	call GetObjectStruct
 	callba Function4357
 	ret
 ; 1985
@@ -361,20 +363,20 @@
 Function1985:: ; 1985
 	ld hl, wd4cd
 	cp [hl]
-	jr z, .asm_1990
+	jr z, .ok
 	ld hl, wd4ce
 	cp [hl]
 	ret nz
 
-.asm_1990
+.ok
 	callba Function581f
-	ld a, $ff
+	ld a, -1
 	ld [wd4cd], a
 	ld [wd4ce], a
 	ret
 ; 199f
 
-Function199f:: ; 199f
+DeleteObjectStruct:: ; 199f
 	call Function1967
 	call Function2712
 	ret
@@ -385,11 +387,11 @@
 	call GetMapObject
 	ld d, b
 	ld e, c
-	ld a, $ff
+	ld a, -1
 	ld [de], a
 	inc de
 	pop hl
-	ld bc, $000f
+	ld bc, OBJECT_LENGTH - 1
 	call CopyBytes
 	ret
 ; 19b8
@@ -396,17 +398,17 @@
 
 Function19b8:: ; 19b8
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
 	push af
-	ld [hl], $ff
+	ld [hl], -1
 	inc hl
-	ld bc, $000f
+	ld bc, OBJECT_LENGTH - 1
 	xor a
 	call ByteFill
 	pop af
-	cp $ff
+	cp -1
 	ret z
 	cp $d
 	ret nc
@@ -413,13 +415,13 @@
 	ld b, a
 	ld a, [wd4cd]
 	cp b
-	jr nz, .asm_19de
-	ld a, $ff
+	jr nz, .ok
+	ld a, -1
 	ld [wd4cd], a
 
-.asm_19de
+.ok
 	ld a, b
-	call Function1ae5
+	call GetObjectStruct
 	callba Function4357
 	ret
 ; 19e9
@@ -437,12 +439,12 @@
 	ld a, [wc2e2]
 	call Function18de
 	ret c
-	ld hl, $0003
+	ld hl, OBJECT_03
 	add hl, bc
 	ld [hl], $14
-	ld hl, $0009
+	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, VramState
 	set 7, [hl]
 	and a
@@ -455,24 +457,24 @@
 	push bc
 	push de
 	ld hl, ObjectStructs
-	ld de, $0028
-	ld c, $d
-.asm_1a1d
+	ld de, OBJECT_STRUCT_LENGTH
+	ld c, NUM_OBJECT_STRUCTS
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_1a28
+	jr z, .empty
 	add hl, de
 	dec c
-	jr nz, .asm_1a1d
+	jr nz, .loop
 	xor a
-	jr .asm_1a2c
+	jr .done
 
-.asm_1a28
+.empty
 	ld a, $d
 	sub c
 	scf
 
-.asm_1a2c
+.done
 	pop de
 	pop bc
 	ret
@@ -481,23 +483,20 @@
 
 
 Function1a2f:: ; 1a2f
-	ld hl, $0003
+	ld hl, OBJECT_03
 	add hl, bc
 	ld a, [hl]
-	cp $25
-	jr c, .asm_1a39
+	cp OBJECT_STRUCT_3_DATA_HEIGHT
+	jr c, .ok
 	xor a
 
-.asm_1a39
-	ld hl, Data4273
+.ok
+	ld hl, ObjectStruct3_Data
 	ld e, a
 	ld d, 0
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+rept OBJECT_STRUCT_3_DATA_WIDTH
+	add hl,de
+endr
 	ld a, [hl]
 	ret
 ; 1a47
@@ -507,17 +506,15 @@
 	push de
 	ld e, a
 	ld d, 0
-	ld hl, Data4273 + 1
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	ld a, BANK(Data4273)
+	ld hl, ObjectStruct3_Data + 1
+rept OBJECT_STRUCT_3_DATA_WIDTH
+	add hl,de
+endr
+	ld a, BANK(ObjectStruct3_Data)
 	call GetFarByte
+rept 2
 	add a
-	add a
+endr
 	and $c
 	pop de
 	pop bc
@@ -529,7 +526,7 @@
 	ld l, a
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(Data4273)
+	ld a, BANK(ObjectStruct3_Data)
 	rst Bankswitch
 	ld a, l
 	push bc
@@ -544,19 +541,16 @@
 ; 1a71
 
 Function1a71:: ; 1a71
-	ld hl, $0003
+	ld hl, OBJECT_03
 	add hl, de
 	ld [hl], a
 	push de
 	ld e, a
 	ld d, 0
-	ld hl, Data4273 + 1
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+	ld hl, ObjectStruct3_Data + 1
+rept OBJECT_STRUCT_3_DATA_WIDTH
+	add hl,de
+endr
 	ld b, h
 	ld c, l
 	pop de
@@ -565,27 +559,27 @@
 	rlca
 	rlca
 	and $c
-	ld hl, $0008
+	ld hl, OBJECT_FACING
 	add hl, de
 	ld [hl], a
 	ld a, [bc]
 	inc bc
-	ld hl, $000b
+	ld hl, OBJECT_11
 	add hl, de
 	ld [hl], a
 	ld a, [bc]
 	inc bc
-	ld hl, $0004
+	ld hl, OBJECT_04
 	add hl, de
 	ld [hl], a
 	ld a, [bc]
 	inc bc
-	ld hl, $0005
+	ld hl, OBJECT_FLAGS
 	add hl, de
 	ld [hl], a
 	ld a, [bc]
 	inc bc
-	ld hl, $0006
+	ld hl, OBJECT_PALETTE
 	add hl, de
 	ld [hl], a
 	ret
@@ -599,12 +593,12 @@
 
 	ld a, [hli]
 	ld d, [hl]
-	ld hl, $001b
+	ld hl, OBJECT_27
 	add hl, bc
 	add [hl]
 	ld e, a
 	ld a, d
-	adc $0
+	adc 0
 	ld d, a
 	inc [hl]
 	ld a, [de]
@@ -616,13 +610,13 @@
 	ret
 ; 1ac6
 
-Function1ac6:: ; 1ac6
+SetVramState_Bit0:: ; 1ac6
 	ld hl, VramState
 	set 0, [hl]
 	ret
 ; 1acc
 
-Function1acc:: ; 1acc
+ResetVramState_Bit0:: ; 1acc
 	ld hl, VramState
 	res 0, [hl]
 	ret
@@ -629,18 +623,18 @@
 ; 1ad2
 
 
-Function1ad2:: ; 1ad2
+DrawOnMap:: ; 1ad2
 	ld a, [VramState]
 	bit 0, a
 	ret z
 	callba Function55e0
-	callba Function5920
+	callba RefreshMapAppearDisappear
 	ret
 ; 1ae5
 
 
-Function1ae5:: ; 1ae5
-	ld bc, $0028
+GetObjectStruct:: ; 1ae5
+	ld bc, OBJECT_STRUCT_LENGTH
 	ld hl, ObjectStructs
 	call AddNTimes
 	ld b, h
@@ -648,8 +642,8 @@
 	ret
 ; 1af1
 
-Function1af1:: ; 1af1
-	ld hl, $0000
+GetObjectSprite:: ; 1af1
+	ld hl, OBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -656,15 +650,15 @@
 	ret
 ; 1af8
 
-Function1af8:: ; 1af8
+SetSpriteDirection:: ; 1af8
 	push af
-	ld hl, $0008
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
-	and $f3
+	and %11110011
 	ld e, a
 	pop af
-	and $c
+	and %00001100
 	or e
 	ld [hl], a
 	ret
@@ -672,9 +666,9 @@
 
 
 GetSpriteDirection:: ; 1b07
-	ld hl, $0008
+	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
-	and $c
+	and %00001100
 	ret
 ; 1b0f
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -2,11 +2,11 @@
 
 
 LoadMenuDataHeader:: ; 0x1d35
-	call Function1d3c
+	call CopyMenuDataHeader
 	call Function1c00
 	ret
 
-Function1d3c:: ; 0x1d3c
+CopyMenuDataHeader:: ; 0x1d3c
 	ld de, wcf81
 	ld bc, $0010
 	call CopyBytes
@@ -21,9 +21,9 @@
 ; 1d4f
 
 
-Function1d4f:: ; 1d4f
+MenuTextBox:: ; 1d4f
 	push hl
-	call Function1d58
+	call LoadMenuTextBox
 	pop hl
 	jp PrintText
 ; 1d57
@@ -32,7 +32,7 @@
 	ret
 ; 1d58
 
-Function1d58:: ; 1d58
+LoadMenuTextBox:: ; 1d58
 	ld hl, MenuDataHeader_0x1d5f
 	call LoadMenuDataHeader
 	ret
@@ -46,9 +46,9 @@
 	db 0 ; default option
 ; 1d67
 
-Function1d67:: ; 1d67
-	call Function1d4f
-	call Function1c17
+MenuTextBoxBackup:: ; 1d67
+	call MenuTextBox
+	call WriteBackup
 	ret
 ; 1d6e
 
@@ -67,15 +67,15 @@
 ; 1d7d
 
 Function1d7d:: ; 1d7d
-	call Function1c07
+	call ExitMenu
 	ret
 ; 1d81
 
-Function1d81:: ; 0x1d81
+InterpretMenu2:: ; 0x1d81
 	xor a
 	ld [hBGMapMode], a
 	call Function1cbb
-	call Function1ad2
+	call DrawOnMap
 	call Function1c89
 	call Function321c
 	call Function1c66
@@ -95,10 +95,10 @@
 	ret
 ; 0x1dab
 
-Function1dab:: ; 1dab
+GetMenu2:: ; 1dab
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c17
+	call InterpretMenu2
+	call WriteBackup
 	ld a, [wcfa9]
 	ret
 ; 1db8
@@ -111,8 +111,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
+endr
 	pop af
 	call GetNthString
 	ld d, h
@@ -138,7 +139,7 @@
 ; Return nc (yes) or c (no).
 	push bc
 	ld hl, YesNoMenuDataHeader
-	call Function1d3c
+	call CopyMenuDataHeader
 	pop bc
 	ld a, b
 	cp $e
@@ -158,11 +159,11 @@
 	call Function1c00
 
 Function1dfe:: ; 1dfe
-	call Function1d81
+	call InterpretMenu2
 	push af
 	ld c, $f
 	call DelayFrames
-	call Function1c17
+	call WriteBackup
 	pop af
 	jr c, .asm_1e16
 	ld a, [wcfa9]
@@ -201,7 +202,7 @@
 
 Function1e35:: ; 1e35
 	push de
-	call Function1d3c
+	call CopyMenuDataHeader
 	pop de
 	ld a, [wcf83]
 	ld h, a
@@ -252,7 +253,7 @@
 MenuWriteText:: ; 0x1e8c
 	xor a
 	ld [hBGMapMode], a
-	call Function1ebd ; sort out the text 
+	call Function1ebd ; sort out the text
 	call Function1eda ; actually write it
 	call Function2e31
 	ld a, [hOAMUpdate]
@@ -439,8 +440,9 @@
 	push de
 	ld a, [MenuSelection]
 	call Function1fb1
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -451,8 +453,9 @@
 
 Function1f9e:: ; 1f9e
 	call Function1fb1
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -475,10 +478,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 4
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ret
 ; 1fbf
 
@@ -497,8 +499,9 @@
 	ld [rSVBK], a
 	xor a
 	ld hl, $dfff
+rept 2
 	ld [hld], a
-	ld [hld], a
+endr
 	ld a, l
 	ld [wcf71], a
 	ld a, h
@@ -530,7 +533,7 @@
 ; 2009
 
 
-PlayClickSFX:: ; 2009 
+PlayClickSFX:: ; 2009
 	push de
 	ld de, SFX_READ_TEXT_2
 	call PlaySFX
@@ -539,9 +542,9 @@
 ; 0x2012
 
 Function2012:: ; 2012
-	call Function1d4f
-	call Functiona46
-	call Function1c07
+	call MenuTextBox
+	call CloseText
+	call ExitMenu
 	ret
 ; 201c
 
@@ -559,7 +562,7 @@
 	ret
 ; 202a
 
-Function202a:: ; 202a
+InterpretMenu:: ; 202a
 	ld a, [hROMBank]
 	ld [wcf94], a
 	callba Function2400e
--- a/home/movement.asm
+++ b/home/movement.asm
@@ -102,8 +102,9 @@
 	push hl
 	ld l, b
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld e, a
 	ld d, 0
 	add hl, de
@@ -131,12 +132,13 @@
 	dec b
 	jr nz, .asm_1bb8
 	ld a, $1
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	pop bc
 	pop hl
 	ret
@@ -193,7 +195,7 @@
 	ret
 ; 1c07
 
-Function1c07:: ; 0x1c07
+ExitMenu:: ; 0x1c07
 	push af
 	callab Function243e8
 	pop af
@@ -203,11 +205,11 @@
 	callab Function2446d
 	ret
 
-Function1c17:: ; 0x1c17
+WriteBackup:: ; 0x1c17
 	push af
-	call Function1c07
+	call ExitMenu
 	call Function321c
-	call Function1ad2
+	call DrawOnMap
 	pop af
 	ret
 
--- a/home/palettes.asm
+++ b/home/palettes.asm
@@ -302,7 +302,7 @@
 ; d91
 
 
-Functiond91:: ; d91
+Special_ReloadSpritesNoPalettes:: ; d91
 	ld a, [hCGB]
 	and a
 	ret z
--- a/home/text.asm
+++ b/home/text.asm
@@ -126,10 +126,12 @@
 ; Fill text box width c height b at hl with pal 7
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	ld a, TEXTBOX_PAL
 .col
 	push bc
@@ -169,7 +171,7 @@
 
 
 PrintText:: ; 1057
-	call Function106c
+	call SetUpTextBox
 Function105a:: ; 105a
 	push hl
 	hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
@@ -183,10 +185,10 @@
 	ret
 ; 106c
 
-Function106c:: ; 106c
+SetUpTextBox:: ; 106c
 	push hl
 	call SpeechTextBox
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	pop hl
 	ret
@@ -385,7 +387,7 @@
 	ld de, String12a2
 	call PlaceString
 	push bc
-	callab Function39939
+	callab Battle_GetTrainerName
 	pop hl
 	ld de, StringBuffer1
 	jr Function126a
@@ -517,7 +519,7 @@
 .asm_1301
 
 	call Function13b6
-	call Functionaaf
+	call KeepTextOpen
 	hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
 	lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
 	call ClearBox
@@ -540,7 +542,7 @@
 	call Function13b6
 
 	push de
-	call Functionaaf
+	call KeepTextOpen
 	pop de
 
 	ld a, [InLinkBattle]
@@ -590,7 +592,7 @@
 .ok
 
 	call Function13b6
-	call Functionaaf
+	call KeepTextOpen
 	ld a, [InLinkBattle]
 	cp $3
 	jr z, DoneText
@@ -626,10 +628,12 @@
 	inc de
 	dec c
 	jr nz, .row
+rept 2
 	inc de
-	inc de
+endr
+rept 2
 	inc hl
-	inc hl
+endr
 	pop af
 	dec a
 	jr nz, .col
@@ -719,8 +723,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, TextCommands
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -904,7 +909,7 @@
 	push hl
 	call Function13c7
 	push bc
-	call Functionaaf
+	call KeepTextOpen
 	pop bc
 	call Function13cd
 	pop hl
@@ -992,8 +997,9 @@
 	jr z, .done
 	cp b
 	jr z, .play
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .loop
 
 .play
@@ -1066,7 +1072,7 @@
 ; display arrow
 	push hl
 	push bc
-	call Functionaaf
+	call KeepTextOpen
 	pop bc
 	pop hl
 	ret
@@ -1088,8 +1094,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_24000
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, BANK(Unknown_24000)
 	call GetFarHalfword
 	ld d, h
@@ -1110,8 +1117,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, .Days
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
--- a/home/tilemap.asm
+++ b/home/tilemap.asm
@@ -175,11 +175,13 @@
 	ld a, c
 	ld b, h
 	ld c, l
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	add hl, bc
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld c, a
 	xor a
 	ld b, a
@@ -203,11 +205,13 @@
 	ld a, c
 	ld b, h
 	ld c, l
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	add hl, bc
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld c, a
 	xor a
 	ld b, a
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -19,8 +19,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, .VBlanks
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -363,7 +364,7 @@
 ; bg map
 ; tiles
 ; joypad
-; 
+;
 
 	ld a, [hROMBank]
 	ld [hROMBankBackup], a
--- a/home/video.asm
+++ b/home/video.asm
@@ -77,8 +77,9 @@
 
 ; We've done 2 16x8 blocks
 	ld a, [$ffdc]
+rept 2
 	dec a
-	dec a
+endr
 	ld [$ffdc], a
 
 	jr nz, .next
--- a/home/window.asm
+++ b/home/window.asm
@@ -40,8 +40,8 @@
 	call Function2e31
 	ld a, $90
 	ld [hWY], a
-	call Functione4a
-	callba Functionb8000
+	call Special_ReplaceKrisSprite
+	callba ReturnFromMapSetupScript
 	callba Function106594
 	ret
 ; 2e08
@@ -83,7 +83,7 @@
 	ld [hBGMapMode], a
 	ld a, $1
 	ld [hOAMUpdate], a
-	call Function1ad2
+	call DrawOnMap
 	xor a
 	ld [hOAMUpdate], a
 	call DelayFrame
--- a/hram.asm
+++ b/hram.asm
@@ -41,6 +41,8 @@
 
 hMathBuffer        EQU $ffb8
 
+hMoneyTemp         EQU $ffc3
+
 hLCDStatCustom     EQU $ffc6
 
 hSerialSend        EQU $ffcd
--- a/items/item_attributes.asm
+++ b/items/item_attributes.asm
@@ -1,2051 +1,777 @@
+item_attribute: macro
+	; price, effect, param, permissions, pocket, battle permissions
+	dw \1
+	db \2, \3, \4, \5, \6
+	endm
+
 Item1Attributes:
 
 ; MASTER BALL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 0, NONE, 0, CANT_SELECT, BALL, $06
 
 Item2Attributes:
 
 ; ULTRA BALL
-	dw 1200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 1200, NONE, 0, CANT_SELECT, BALL, $06
 
 ; BRIGHTPOWDER
-	dw 10 ; price
-	db HELD_BRIGHTPOWDER ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, $00
 
 ; GREAT BALL
-	dw 600 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 600, NONE, 0, CANT_SELECT, BALL, $06
 
 ; # BALL
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 200, NONE, 0, CANT_SELECT, BALL, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; BICYCLE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; MOON STONE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; ANTIDOTE
-	dw 100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 100, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; BURN HEAL
-	dw 250 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 250, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; ICE HEAL
-	dw 250 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 250, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; AWAKENING
-	dw 250 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 250, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; PARLYZ HEAL
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; FULL RESTORE
-	dw 3000 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 3000, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; MAX POTION
-	dw 2500 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 2500, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; HYPER POTION
-	dw 1200 ; price
-	db NONE ; effect
-	db 200 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 1200, NONE, 200, CANT_SELECT, ITEM, $55
 
 ; SUPER POTION
-	dw 700 ; price
-	db NONE ; effect
-	db 50 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 700, NONE, 50, CANT_SELECT, ITEM, $55
 
 ; POTION
-	dw 300 ; price
-	db NONE ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 300, NONE, 20, CANT_SELECT, ITEM, $55
 
 ; ESCAPE ROPE
-	dw 550 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $60 ; overworld
+	item_attribute 550, NONE, 0, CANT_SELECT, ITEM, $60
 
 ; REPEL
-	dw 350 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 350, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; MAX ELIXER
-	dw 4500 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 4500, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; FIRE STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; THUNDERSTONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; WATER STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; HP UP
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; PROTEIN
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; IRON
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; CARBOS
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; LUCKY PUNCH
-	dw 10 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; CALCIUM
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; RARE CANDY
-	dw 4800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 4800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; X ACCURACY
-	dw 950 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 950, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; LEAF STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; METAL POWDER
-	dw 10 ; price
-	db HELD_METAL_POWDER ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10, HELD_METAL_POWDER, 10, CANT_SELECT, ITEM, $00
 
 ; NUGGET
-	dw 10000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; # DOLL
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 1000, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; FULL HEAL
-	dw 600 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 600, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; REVIVE
-	dw 1500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 1500, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; MAX REVIVE
-	dw 4000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 4000, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; GUARD SPEC.
-	dw 700 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 700, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; SUPER REPEL
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; MAX REPEL
-	dw 700 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 700, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; DIRE HIT
-	dw 650 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 650, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; FRESH WATER
-	dw 200 ; price
-	db NONE ; effect
-	db 50 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 200, NONE, 50, CANT_SELECT, ITEM, $55
 
 ; SODA POP
-	dw 300 ; price
-	db NONE ; effect
-	db 60 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 300, NONE, 60, CANT_SELECT, ITEM, $55
 
 ; LEMONADE
-	dw 350 ; price
-	db NONE ; effect
-	db 80 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 350, NONE, 80, CANT_SELECT, ITEM, $55
 
 ; X ATTACK
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; X DEFEND
-	dw 550 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 550, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; X SPEED
-	dw 350 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 350, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; X SPECIAL
-	dw 350 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 350, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; COIN CASE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $40 ; current menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $40
 
 ; ITEMFINDER
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; EXP.SHARE
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 3000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; OLD ROD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; GOOD ROD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; SILVER LEAF
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 1000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SUPER ROD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; PP UP
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; ETHER
-	dw 1200 ; price
-	db NONE ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 1200, NONE, 10, CANT_SELECT, ITEM, $55
 
 ; MAX ETHER
-	dw 2000 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 2000, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; ELIXER
-	dw 3000 ; price
-	db NONE ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 3000, NONE, 10, CANT_SELECT, ITEM, $55
 
 ; RED SCALE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; SECRETPOTION
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; S.S.TICKET
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; MYSTERY EGG
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; CLEAR BELL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; SILVER WING
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; MOOMOO MILK
-	dw 500 ; price
-	db NONE ; effect
-	db 100 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 500, NONE, 100, CANT_SELECT, ITEM, $55
 
 ; QUICK CLAW
-	dw 100 ; price
-	db HELD_QUICK_CLAW ; effect
-	db 60 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, $00
 
 ; PSNCUREBERRY
-	dw 10 ; price
-	db HELD_HEAL_POISON ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_POISON, 0, CANT_SELECT, ITEM, $55
 
 ; GOLD LEAF
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 1000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SOFT SAND
-	dw 100 ; price
-	db HELD_GROUND_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_GROUND_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; SHARP BEAK
-	dw 100 ; price
-	db HELD_FLYING_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_FLYING_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; PRZCUREBERRY
-	dw 10 ; price
-	db HELD_HEAL_PARALYZE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_PARALYZE, 0, CANT_SELECT, ITEM, $55
 
 ; BURNT BERRY
-	dw 10 ; price
-	db HELD_HEAL_FREEZE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_FREEZE, 0, CANT_SELECT, ITEM, $55
 
 ; ICE BERRY
-	dw 10 ; price
-	db HELD_HEAL_BURN ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_BURN, 0, CANT_SELECT, ITEM, $55
 
 ; POISON BARB
-	dw 100 ; price
-	db HELD_POISON_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_POISON_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; KING'S ROCK
-	dw 100 ; price
-	db HELD_TRADE_EVOLVE ; effect
-	db 30 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_TRADE_EVOLVE, 30, CANT_SELECT, ITEM, $00
 
 ; BITTER BERRY
-	dw 10 ; price
-	db HELD_HEAL_CONFUSION ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $05 ; heal menu (battle only)
+	item_attribute 10, HELD_HEAL_CONFUSION, 0, CANT_SELECT, ITEM, $05
 
 ; MINT BERRY
-	dw 10 ; price
-	db HELD_HEAL_SLEEP ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_SLEEP, 0, CANT_SELECT, ITEM, $55
 
 ; RED APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TINYMUSHROOM
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BIG MUSHROOM
-	dw 5000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 5000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SILVERPOWDER
-	dw 100 ; price
-	db HELD_BUG_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_BUG_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BLU APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; AMULET COIN
-	dw 100 ; price
-	db HELD_AMULET_COIN ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_AMULET_COIN, 10, CANT_SELECT, ITEM, $00
 
 ; YLW APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; GRN APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; CLEANSE TAG
-	dw 200 ; price
-	db HELD_CLEANSE_TAG ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_CLEANSE_TAG, 0, CANT_SELECT, ITEM, $00
 
 ; MYSTIC WATER
-	dw 100 ; price
-	db HELD_WATER_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_WATER_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; TWISTEDSPOON
-	dw 100 ; price
-	db HELD_PSYCHIC_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_PSYCHIC_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; WHT APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BLACKBELT
-	dw 100 ; price
-	db HELD_FIGHTING_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_FIGHTING_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BLK APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; PNK APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BLACKGLASSES
-	dw 100 ; price
-	db HELD_DARK_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_DARK_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; SLOWPOKETAIL
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; PINK BOW
-	dw 100 ; price
-	db HELD_NORMAL_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; STICK
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SMOKE BALL
-	dw 200 ; price
-	db HELD_ESCAPE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_ESCAPE, 0, CANT_SELECT, ITEM, $00
 
 ; NEVERMELTICE
-	dw 100 ; price
-	db HELD_ICE_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_ICE_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; MAGNET
-	dw 100 ; price
-	db HELD_ELECTRIC_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_ELECTRIC_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; MIRACLEBERRY
-	dw 10 ; price
-	db HELD_HEAL_STATUS ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_STATUS, 0, CANT_SELECT, ITEM, $55
 
 ; PEARL
-	dw 1400 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 1400, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BIG PEARL
-	dw 7500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 7500, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; EVERSTONE
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SPELL TAG
-	dw 100 ; price
-	db HELD_GHOST_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_GHOST_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; RAGECANDYBAR
-	dw 300 ; price
-	db NONE ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 300, NONE, 20, CANT_SELECT, ITEM, $55
 
 ; GS BALL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; BLUE CARD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $40 ; current menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $40
 
 ; MIRACLE SEED
-	dw 100 ; price
-	db HELD_GRASS_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_GRASS_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; THICK CLUB
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; FOCUS BAND
-	dw 200 ; price
-	db HELD_FOCUS_BAND ; effect
-	db 30 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_FOCUS_BAND, 30, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; ENERGYPOWDER
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; ENERGY ROOT
-	dw 800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 800, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; HEAL POWDER
-	dw 450 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 450, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; REVIVAL HERB
-	dw 2800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 2800, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; HARD STONE
-	dw 100 ; price
-	db HELD_ROCK_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_ROCK_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; LUCKY EGG
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; CARD KEY
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $60
 
 ; MACHINE PART
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; EGG TICKET
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; LOST ITEM
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; STARDUST
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 2000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; STAR PIECE
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BASEMENT KEY
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $60
 
 ; PASS
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; CHARCOAL
-	dw 9800 ; price
-	db HELD_FIRE_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 9800, HELD_FIRE_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BERRY JUICE
-	dw 100 ; price
-	db HELD_BERRY ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 100, HELD_BERRY, 20, CANT_SELECT, ITEM, $55
 
 ; SCOPE LENS
-	dw 200 ; price
-	db HELD_CRITICAL_UP ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_CRITICAL_UP, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; METAL COAT
-	dw 100 ; price
-	db HELD_STEEL_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_STEEL_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; DRAGON FANG
-	dw 100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; LEFTOVERS
-	dw 200 ; price
-	db HELD_LEFTOVERS ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_LEFTOVERS, 10, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; MYSTERYBERRY
-	dw 10 ; price
-	db HELD_RESTORE_PP ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_RESTORE_PP, -1, CANT_SELECT, ITEM, $55
 
 ; DRAGON SCALE
-	dw 2100 ; price
-	db HELD_DRAGON_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 2100, HELD_DRAGON_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BERSERK GENE
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; SACRED ASH
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $60 ; overworld
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $60
 
 ; HEAVY BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; FLOWER MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; LEVEL BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; LURE BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; FAST BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; LIGHT BALL
-	dw 100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; FRIEND BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; MOON BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; LOVE BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; NORMAL BOX
-	dw 10 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 10, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; GORGEOUS BOX
-	dw 10 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 10, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; SUN STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; POLKADOT BOW
-	dw 100 ; price
-	db HELD_NORMAL_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; UP-GRADE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BERRY
-	dw 10 ; price
-	db HELD_BERRY ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_BERRY, 10, CANT_SELECT, ITEM, $55
 
 ; GOLD BERRY
-	dw 10 ; price
-	db HELD_BERRY ; effect
-	db 30 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_BERRY, 30, CANT_SELECT, ITEM, $55
 
 ; SQUIRTBOTTLE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $60
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; PARK BALL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 0, NONE, 0, CANT_SELECT, BALL, $06
 
 ; RAINBOW WING
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; BRICK PIECE
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SURF MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; LITEBLUEMAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; PORTRAITMAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; LOVELY MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; EON MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; MORPH MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BLUESKY MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; MUSIC MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; MIRAGE MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TM01
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM02
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM03
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM04
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TM05
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM06
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM07
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM08
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM09
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM10
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM11
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM12
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM13
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM14
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM15
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM16
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM17
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM18
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM19
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM20
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM21
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM22
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM23
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM24
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM25
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM26
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM27
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM28
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TM29
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM30
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM31
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM32
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM33
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM34
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM35
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM36
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM37
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM38
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM39
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM40
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM41
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM42
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM43
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM44
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM45
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM46
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM47
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM48
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM49
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM50
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; HM01
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM02
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM03
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM04
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM05
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM06
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM07
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; ?
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
--- a/items/item_descriptions.asm
+++ b/items/item_descriptions.asm
@@ -21,8 +21,9 @@
 	dec a
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -253,8 +253,9 @@
 	jr z, .asm_e906
 	cp c
 	jr z, .asm_e8fe
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_e8f2
 
 .asm_e8fe
@@ -287,8 +288,9 @@
 
 	ld h, d
 	ld l, e
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld d, h
 	ld e, l
 	ld a, d
@@ -603,7 +605,7 @@
 	ld b, 0
 	callba Function116c1
 
-	call Function4b6
+	call FadeToWhite
 
 	call Functione51
 
@@ -685,7 +687,7 @@
 	ld hl, UnknownText_0xedeb
 	call PrintText
 
-	call Function4b6
+	call FadeToWhite
 	call Functione51
 	jr .asm_ebe2
 
@@ -802,8 +804,9 @@
 	dec a
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, BANK(PokedexDataPointerTable)
 	call GetFarHalfword
 
@@ -816,8 +819,9 @@
 
 	call GetPokedexEntryBank
 	push bc
+rept 2
 	inc hl
-	inc hl
+endr
 	call GetFarHalfword
 
 	srl h
@@ -863,8 +867,9 @@
 	ld a, c
 	cp [hl]
 	jr c, .heavymon
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .lookup
 
 .heavymon
@@ -923,8 +928,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, EvosAttacksPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, BANK(EvosAttacksPointers)
 	call GetFarHalfword
 	pop bc
@@ -936,9 +942,9 @@
 	pop bc
 	ret nz
 
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 
 ; Moon Stone's constant from Pokémon Red is used.
 ; No Pokémon evolve with Burn Heal,
@@ -1177,7 +1183,7 @@
 
 
 Bicycle: ; ee08
-	callba Functiond0b3
+	callba BikeFunction
 	ret
 ; ee0f
 
@@ -1415,7 +1421,7 @@
 	ld a, [hl]
 	adc b
 	ld [hl], a
-	callba Function2709e
+	callba LevelUpHappinessMod
 
 	ld a, $f8
 	call Functionf24a
@@ -2119,8 +2125,9 @@
 	jr z, .asm_f3a9
 	cp d
 	jr z, .done
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .next
 
 .asm_f3a9
@@ -2209,7 +2216,7 @@
 .asm_f440
 	push bc
 	ld hl, UnknownText_0xf44a
-	call Function1d67
+	call MenuTextBoxBackup
 	pop bc
 	jr Functionf419
 ; f44a (3:744a)
@@ -2224,7 +2231,7 @@
 EscapeRope: ; f44f
 	xor a
 	ld [wd0ec], a
-	callba Functioncb95
+	callba EscapeRopeFunction
 
 	ld a, [wd0ec]
 	cp 1
@@ -2322,8 +2329,9 @@
 .asm_f4ce
 	cp [hl]
 	jr z, .asm_f4d5
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_f4ce
 
 .asm_f4d5
@@ -2492,13 +2500,13 @@
 ; f5b1
 
 Function_0xf5b1: ; f5b1
-	callba Functioncf8e
+	callba FishFunction
 	ret
 ; f5b8
 
 
 Itemfinder: ; f5b8
-	callba Function12580
+	callba ItemFinder
 	ret
 ; f5bf
 
@@ -2810,7 +2818,7 @@
 ; f769
 
 Function_0xf769: ; f769
-	callba Function26f02
+	callba SetSpecificDecorationFlag
 
 	ld hl, UnknownText_0xf778
 	call PrintText
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -665,8 +665,9 @@
 	ld hl, Unknown_112037
 	ld de, $cb74
 	call Function110000
+rept 2
 	inc de
-	inc de
+endr
 	pop hl
 	ld bc, $0000
 	call Function110007
@@ -724,9 +725,9 @@
 	ld a, $c8
 	ld [hli], a
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld a, $ff
 	ld [$c86e], a
@@ -947,9 +948,9 @@
 	ld a, $c8
 	ld [hli], a
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld a, $ff
 	ld [$c86e], a
@@ -1110,8 +1111,9 @@
 	ld hl, Unknown_112072
 	ld b, $5
 	call Function110000
+rept 2
 	inc de
-	inc de
+endr
 	ld bc, $0001
 	ld hl, Unknown_11209e
 	call Function110007
@@ -1377,8 +1379,9 @@
 	ld hl, Unknown_112072
 	ld b, $5
 	call Function110000
+rept 2
 	inc de
-	inc de
+endr
 	ld hl, Unknown_1120c8
 	call Function110007
 	pop hl
@@ -1542,10 +1545,12 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 2
 	inc de
-	inc de
+endr
+rept 2
 	dec bc
-	dec bc
+endr
 	ld hl, $c98f
 	ld a, e
 	ld [hli], a
@@ -1565,8 +1570,9 @@
 	xor a
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	xor a
 	ld [$c86b], a
 	ld de, $cb47
@@ -1606,8 +1612,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 2
 	inc de
-	inc de
+endr
 	ld a, e
 	ld [hli], a
 	ld a, d
@@ -1618,8 +1625,9 @@
 	ld [$c86e], a
 	ld [$c86f], a
 	jr z, .asm_110b5c
+rept 2
 	dec bc
-	dec bc
+endr
 	ld a, [$c993]
 	or a
 	jp nz, .asm_110bd5
@@ -1885,10 +1893,12 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 2
 	inc de
-	inc de
+endr
+rept 2
 	dec bc
-	dec bc
+endr
 	ld hl, $c98f
 	ld a, e
 	ld [hli], a
@@ -1908,8 +1918,9 @@
 	xor a
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	xor a
 	ld [$c86b], a
 	ld de, $cb47
@@ -2124,14 +2135,16 @@
 	ld [$c833], a
 	ld a, [hli]
 	ld [$c834], a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, l
 	ld [$c97f], a
 	ld a, h
 	ld [$c980], a
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -2253,9 +2266,9 @@
 .asm_110ee3
 	ld hl, $c98b
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	pop bc
 	pop de
@@ -2273,8 +2286,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 2
 	inc hl
-	inc hl
+endr
 	xor a
 	ld [$c994], a
 
@@ -2320,8 +2334,9 @@
 	ld hl, $c866
 	ld b, $4
 	call Function110000
+rept 2
 	inc de
-	inc de
+endr
 	ld b, $6
 	call Function111f63
 	ld a, [$cabc]
@@ -2393,8 +2408,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 2
 	inc de
-	inc de
+endr
 	ld a, e
 	ld [hli], a
 	ld a, d
@@ -2404,8 +2420,9 @@
 	or c
 	ld [$c86e], a
 	ld [$c86f], a
+rept 2
 	dec bc
-	dec bc
+endr
 	jp z, Function1111ca
 	ld a, [$c991]
 	or a
@@ -2701,22 +2718,23 @@
 	push de
 	push bc
 	push hl
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld [$c833], a
 	ld a, [hli]
 	ld [$c834], a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, l
 	ld [$c97f], a
 	ld a, h
 	ld [$c980], a
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -2794,8 +2812,9 @@
 	ld a, [hld]
 	cp $2f
 	jr nz, .asm_1112a4
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hl]
 	cp $30
 	jr c, .asm_1112cc
@@ -2849,8 +2868,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, e
 	ld [hli], a
 	ld a, d
@@ -2868,8 +2888,9 @@
 	ld [$c9ac], a
 	ld a, [hli]
 	ld [$c9ad], a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld [$c876], a
 	ld a, [hl]
@@ -2885,8 +2906,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -3061,9 +3083,9 @@
 	push hl
 	ld hl, $c829
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld de, $cb47
 	ld hl, Unknown_112072
@@ -3076,8 +3098,9 @@
 	cp $81
 	jr nc, .asm_111485
 	ld c, a
+rept 2
 	inc a
-	inc a
+endr
 	ld [de], a
 	inc de
 	ld a, $ff
@@ -3089,8 +3112,9 @@
 	ld b, c
 	call Function110000
 	ld b, c
+rept 2
 	inc b
-	inc b
+endr
 	call Function111f63
 	ld hl, $c822
 	set 7, [hl]
@@ -3417,8 +3441,9 @@
 	ld a, b
 	srl a
 	srl a
+rept 2
 	add b
-	add b
+endr
 	ld [hl], a
 	ret
 
@@ -3558,9 +3583,9 @@
 	ld [$c800], a
 	xor a
 	ld hl, $c80a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld hl, $c81f
 	ld a, [hli]
 	ld b, a
@@ -4087,8 +4112,9 @@
 	ld [$c800], a
 	xor a
 	ld hl, $c80a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld hl, $c815
 	ld a, [$c820]
@@ -4291,8 +4317,9 @@
 .asm_111c52
 	ld b, a
 	ld a, [$ca3f]
+rept 2
 	dec a
-	dec a
+endr
 	cp b
 	jr c, .asm_111c6e
 .asm_111c5b
@@ -5563,8 +5590,9 @@
 	xor a
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	pop de
 	ld a, $1
 	ld [$c994], a
@@ -5689,21 +5717,24 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 2
 	inc de
-	inc de
+endr
 	ld a, $80
 	ld [hli], a
 	ld a, $c8
 	ld [hli], a
+rept 2
 	dec bc
-	dec bc
+endr
 	ld a, $fa
 	ld [hli], a
 	ld a, $0
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld de, $cb47
 	ld hl, Unknown_112072
 	ld b, $6
@@ -6191,8 +6222,9 @@
 	ld de, $cb4c
 	ld a, $1
 	ld [de], a
+rept 2
 	inc de
-	inc de
+endr
 	ld b, $1
 	call Function111f63
 	jr .asm_112941
@@ -6425,8 +6457,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, e
 	ld [hli], a
 	ld a, d
@@ -6923,8 +6956,9 @@
 	ld hl, $c821
 	res 2, [hl]
 	ld hl, $c86b
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 
 .asm_112d82
 	ld hl, $c86b
@@ -7083,8 +7117,9 @@
 	cp $1
 	ld a, $32
 	jr z, .asm_112e95
+rept 2
 	inc de
-	inc de
+endr
 	inc a
 
 .asm_112e95
@@ -7463,8 +7498,9 @@
 .asm_1130d6
 	ld a, [$c82b]
 	ld c, a
+rept 2
 	dec b
-	dec b
+endr
 	ld a, b
 	ld [$c82d], a
 	jr z, .asm_11310d
@@ -7472,8 +7508,9 @@
 	ld d, a
 	ld a, [$c872]
 	ld e, a
+rept 2
 	dec de
-	dec de
+endr
 	xor a
 	or d
 	jr nz, .asm_1130f5
@@ -7492,8 +7529,9 @@
 	ld e, a
 	ld a, [$c875]
 	ld d, a
+rept 2
 	inc de
-	inc de
+endr
 	call Function110000
 
 .asm_11310d
@@ -7606,8 +7644,9 @@
 	ld a, b
 	ld [de], a
 	inc de
+rept 2
 	dec b
-	dec b
+endr
 	call Function110000
 	xor a
 	ld [de], a
@@ -7629,8 +7668,9 @@
 	inc b
 	cp $a
 	jr nz, .asm_1131b7
+rept 2
 	inc hl
-	inc hl
+endr
 	dec b
 	ld c, b
 	call Function110000
@@ -7674,8 +7714,9 @@
 	ld hl, $c821
 	res 2, [hl]
 	ld hl, $c86b
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ld a, $4
 	ret
 ; 113206
@@ -7698,8 +7739,9 @@
 	ld e, a
 	ld a, [$c875]
 	ld d, a
+rept 2
 	inc de
-	inc de
+endr
 	call Function110000
 	ld a, [$c991]
 	ld [$c993], a
@@ -7970,8 +8012,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -7982,8 +8025,9 @@
 	ld a, [hld]
 	cp $2f
 	jr nz, .asm_11344c
+rept 2
 	inc hl
-	inc hl
+endr
 	ld e, l
 	ld d, h
 .asm_113455
@@ -8001,8 +8045,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -8099,8 +8144,9 @@
 	ret
 
 .asm_1134f0
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	jr .asm_1134fc
 
 .asm_1134f4
@@ -8585,10 +8631,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, h
 	ld [$cc0d], a
 	ld a, l
@@ -9126,9 +9171,9 @@
 	ld bc, $0003
 
 .asm_113ccf
+rept 3
 	dec bc
-	dec bc
-	dec bc
+endr
 	ld a, c
 	ld [$cc10], a
 	ld a, b
@@ -9164,8 +9209,9 @@
 	ld a, $3f
 	and c
 	ld [hld], a
+rept 2
 	dec hl
-	dec hl
+endr
 	pop de
 	ld b, h
 	ld c, l
@@ -9276,10 +9322,9 @@
 	ld c, a
 	ld a, [$cc11]
 	ld b, a
+rept 4
 	dec bc
-	dec bc
-	dec bc
-	dec bc
+endr
 	ld a, b
 	or c
 	jr z, .asm_113dae
@@ -9513,8 +9558,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hld]
 	dec hl
 	xor $80
@@ -9555,8 +9601,9 @@
 	ld l, a
 	ld e, l
 	ld d, h
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, l
 	ld d, h
 	ld hl, $c815
@@ -9616,8 +9663,9 @@
 	ld l, a
 	ld e, l
 	ld d, h
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, l
 	ld d, h
 	ld hl, $c815
--- a/macros.asm
+++ b/macros.asm
@@ -13,6 +13,7 @@
 INCLUDE "macros/predef.asm"
 INCLUDE "macros/rst.asm"
 INCLUDE "macros/mobile.asm"
+INCLUDE "macros/trainer.asm"
 
 
 
@@ -37,6 +38,11 @@
 dbbw: MACRO
 	db \1, \2
 	dw \3
+	ENDM
+
+dbww: MACRO
+	db \1
+	dw \2, \3
 	ENDM
 
 dbwww: MACRO
--- a/macros/charmap.asm
+++ b/macros/charmap.asm
@@ -281,5 +281,6 @@
 	charmap "<TARGET>", $59
 	charmap "<USER>",   $5a
 	charmap "<ENEMY>",  $3f
+	charmap "<PKMN>",   $4a
 
 	charmap "<PLAY_G>", $14 ; <PLAYER> + gender
--- a/macros/enum.asm
+++ b/macros/enum.asm
@@ -29,3 +29,8 @@
 \1 EQU const_value
 const_value = const_value + 1
 ENDM
+
+shift_const: MACRO
+\1 EQU 1 << const_value
+const_value = const_value + 1
+ENDM
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -690,7 +690,7 @@
 	enum variablesprite_command
 variablesprite: macro
 	db variablesprite_command
-	db \1 ; byte
+	db \1 - SPRITE_VARS ; byte
 	db \2 ; sprite
 	endm
 
--- a/macros/map.asm
+++ b/macros/map.asm
@@ -67,7 +67,7 @@
 
 
 map_header: MACRO
-	; label, tileset, permission, location, music, time of day, fishing group
+	; label, tileset, permission, location, music, phone service flag, time of day, fishing group
 \1_MapHeader:
 	db BANK(\1_SecondMapHeader), \2, \3
 	dw \1_SecondMapHeader
@@ -161,4 +161,19 @@
 	dw OverworldMap + \2_WIDTH + 7
 endc
 
+ENDM
+
+mapgroup: MACRO
+; map id, height, width
+\1\@  EQUS "GROUP_\1"
+\1\@2 EQUS "MAP_\1"
+\1\@ EQU const_value
+	enum \1\@2
+\1_HEIGHT EQU \2
+\1_WIDTH EQU \3
+ENDM
+
+newgroup: MACRO
+const_value = const_value + 1
+	enum_start 1
 ENDM
--- a/macros/movement.asm
+++ b/macros/movement.asm
@@ -1,285 +1,384 @@
+	enum_start
+
+	enum movement_turn_head_down
 turn_head_down: macro
-	db $00
+	db movement_turn_head_down ; $00
 	endm
 
+	enum movement_turn_head_up
 turn_head_up: macro
-	db $01
+	db movement_turn_head_up ; $01
 	endm
 
+	enum movement_turn_head_left
 turn_head_left: macro
-	db $02
+	db movement_turn_head_left ; $02
 	endm
 
+	enum movement_turn_head_right
 turn_head_right: macro
-	db $03
+	db movement_turn_head_right ; $03
 	endm
 
+	enum movement_half_step_down
 half_step_down: macro
-	db $04
+	db movement_half_step_down ; $04
 	endm
 
+	enum movement_half_step_up
 half_step_up: macro
-	db $05
+	db movement_half_step_up ; $05
 	endm
 
+	enum movement_half_step_left
 half_step_left: macro
-	db $06
+	db movement_half_step_left ; $06
 	endm
 
+	enum movement_half_step_right
 half_step_right: macro
-	db $07
+	db movement_half_step_right ; $07
 	endm
 
+	enum movement_slow_step_down
 slow_step_down: macro
-	db $08
+	db movement_slow_step_down ; $08
 	endm
 
+	enum movement_slow_step_up
 slow_step_up: macro
-	db $09
+	db movement_slow_step_up ; $09
 	endm
 
+	enum movement_slow_step_left
 slow_step_left: macro
-	db $0a
+	db movement_slow_step_left ; $0a
 	endm
 
+	enum movement_slow_step_right
 slow_step_right: macro
-	db $0b
+	db movement_slow_step_right ; $0b
 	endm
 
+	enum movement_step_down
 step_down: macro
-	db $0c
+	db movement_step_down ; $0c
 	endm
 
+	enum movement_step_up
 step_up: macro
-	db $0d
+	db movement_step_up ; $0d
 	endm
 
+	enum movement_step_left
 step_left: macro
-	db $0e
+	db movement_step_left ; $0e
 	endm
 
+	enum movement_step_right
 step_right: macro
-	db $0f
+	db movement_step_right ; $0f
 	endm
 
+	enum movement_big_step_down
 big_step_down: macro
-	db $10
+	db movement_big_step_down ; $10
 	endm
 
+	enum movement_big_step_up
 big_step_up: macro
-	db $11
+	db movement_big_step_up ; $11
 	endm
 
+	enum movement_big_step_left
 big_step_left: macro
-	db $12
+	db movement_big_step_left ; $12
 	endm
 
+	enum movement_big_step_right
 big_step_right: macro
-	db $13
+	db movement_big_step_right ; $13
 	endm
 
+	enum movement_slow_slide_step_down
 slow_slide_step_down: macro
-	db $14
+	db movement_slow_slide_step_down ; $14
 	endm
 
+	enum movement_slow_slide_step_up
 slow_slide_step_up: macro
-	db $15
+	db movement_slow_slide_step_up ; $15
 	endm
 
+	enum movement_slow_slide_step_left
 slow_slide_step_left: macro
-	db $16
+	db movement_slow_slide_step_left ; $16
 	endm
 
+	enum movement_slow_slide_step_right
 slow_slide_step_right: macro
-	db $17
+	db movement_slow_slide_step_right ; $17
 	endm
 
+	enum movement_slide_step_down
 slide_step_down: macro
-	db $18
+	db movement_slide_step_down ; $18
 	endm
 
+	enum movement_slide_step_up
 slide_step_up: macro
-	db $19
+	db movement_slide_step_up ; $19
 	endm
 
+	enum movement_slide_step_left
 slide_step_left: macro
-	db $1a
+	db movement_slide_step_left ; $1a
 	endm
 
+	enum movement_slide_step_right
 slide_step_right: macro
-	db $1b
+	db movement_slide_step_right ; $1b
 	endm
 
+	enum movement_fast_slide_step_down
 fast_slide_step_down: macro
-	db $1c
+	db movement_fast_slide_step_down ; $1c
 	endm
 
+	enum movement_fast_slide_step_up
 fast_slide_step_up: macro
-	db $1d
+	db movement_fast_slide_step_up ; $1d
 	endm
 
+	enum movement_fast_slide_step_left
 fast_slide_step_left: macro
-	db $1e
+	db movement_fast_slide_step_left ; $1e
 	endm
 
+	enum movement_fast_slide_step_right
 fast_slide_step_right: macro
-	db $1f
+	db movement_fast_slide_step_right ; $1f
 	endm
 
+	enum movement_turn_away_down
 turn_away_down: macro
-	db $20
+	db movement_turn_away_down ; $20
 	endm
 
+	enum movement_turn_away_up
 turn_away_up: macro
-	db $21
+	db movement_turn_away_up ; $21
 	endm
 
+	enum movement_turn_away_left
 turn_away_left: macro
-	db $22
+	db movement_turn_away_left ; $22
 	endm
 
+	enum movement_turn_away_right
 turn_away_right: macro
-	db $23
+	db movement_turn_away_right ; $23
 	endm
 
+	enum movement_turn_in_down
 turn_in_down: macro
-	db $24
+	db movement_turn_in_down ; $24
 	endm
 
+	enum movement_turn_in_up
 turn_in_up: macro
-	db $25
+	db movement_turn_in_up ; $25
 	endm
 
+	enum movement_turn_in_left
 turn_in_left: macro
-	db $26
+	db movement_turn_in_left ; $26
 	endm
 
+	enum movement_turn_in_right
 turn_in_right: macro
-	db $27
+	db movement_turn_in_right ; $27
 	endm
 
+	enum movement_turn_waterfall_down
 turn_waterfall_down: macro
-	db $28
+	db movement_turn_waterfall_down ; $28
 	endm
 
+	enum movement_turn_waterfall_up
 turn_waterfall_up: macro
-	db $29
+	db movement_turn_waterfall_up ; $29
 	endm
 
+	enum movement_turn_waterfall_left
 turn_waterfall_left: macro
-	db $2a
+	db movement_turn_waterfall_left ; $2a
 	endm
 
+	enum movement_turn_waterfall_right
 turn_waterfall_right: macro
-	db $2b
+	db movement_turn_waterfall_right ; $2b
 	endm
 
+	enum movement_slow_jump_step_down
 slow_jump_step_down: macro
-	db $2c
+	db movement_slow_jump_step_down ; $2c
 	endm
 
+	enum movement_slow_jump_step_up
 slow_jump_step_up: macro
-	db $2d
+	db movement_slow_jump_step_up ; $2d
 	endm
 
+	enum movement_slow_jump_step_left
 slow_jump_step_left: macro
-	db $2e
+	db movement_slow_jump_step_left ; $2e
 	endm
 
+	enum movement_slow_jump_step_right
 slow_jump_step_right: macro
-	db $2f
+	db movement_slow_jump_step_right ; $2f
 	endm
 
+	enum movement_jump_step_down
 jump_step_down: macro
-	db $30
+	db movement_jump_step_down ; $30
 	endm
 
+	enum movement_jump_step_up
 jump_step_up: macro
-	db $31
+	db movement_jump_step_up ; $31
 	endm
 
+	enum movement_jump_step_left
 jump_step_left: macro
-	db $32
+	db movement_jump_step_left ; $32
 	endm
 
+	enum movement_jump_step_right
 jump_step_right: macro
-	db $33
+	db movement_jump_step_right ; $33
 	endm
 
+	enum movement_fast_jump_step_down
 fast_jump_step_down: macro
-	db $34
+	db movement_fast_jump_step_down ; $34
 	endm
 
+	enum movement_fast_jump_step_up
 fast_jump_step_up: macro
-	db $35
+	db movement_fast_jump_step_up ; $35
 	endm
 
+	enum movement_fast_jump_step_left
 fast_jump_step_left: macro
-	db $36
+	db movement_fast_jump_step_left ; $36
 	endm
 
+	enum movement_fast_jump_step_right
 fast_jump_step_right: macro
-	db $37
+	db movement_fast_jump_step_right ; $37
 	endm
 
+__enum__ = $3a
+
+	enum movement_remove_fixed_facing
 remove_fixed_facing: macro
-	db $3a
+	db movement_remove_fixed_facing ; $3a
 	endm
 
+	enum movement_fix_facing
 fix_facing: macro
-	db $3b
+	db movement_fix_facing ; $3b
 	endm
 
+	enum movement_return_dig
+return_dig: macro
+	db movement_return_dig
+	db \1
+	endm
+
+	enum movement_hide_person
 hide_person: macro
-	db $3d
+	db movement_hide_person ; $3d
 	endm
 
+	enum movement_show_person
 show_person: macro
-	db $3e
+	db movement_show_person ; $3e
 	endm
 
+__enum__ = $45
+
+	enum movement_accelerate_last
 accelerate_last: macro
-	db $45
+	db movement_accelerate_last ; $45
 	endm
 
+	enum movement_step_sleep
 step_sleep: macro
-	db $46
+	db movement_step_sleep ; $46
 	db \1 ; duration
 	endm
 
+	enum movement_step_end
 step_end: macro
-	db $47
+	db movement_step_end ; $47
 	endm
 
+__enum__ = $49
+
+	enum movement_remove_person
 remove_person: macro
-	db $49
+	db movement_remove_person ; $49
 	endm
 
+__enum__ = $4c
+
+	enum movement_teleport_from
 teleport_from: macro
-	db $4c
+	db movement_teleport_from ; $4c
 	endm
 
+	enum movement_teleport_to
 teleport_to: macro
-	db $4d
+	db movement_teleport_to ; $4d
 	endm
 
+	enum movement_skyfall
 skyfall: macro
-	db $4e
+	db movement_skyfall ; $4e
 	endm
 
+	enum movement_step_wait5
 step_wait5: macro
-	db $4f
+	db movement_step_wait5 ; $4f
 	endm
 
+__enum__ = $51
+
+	enum movement_fish_got_bite
+fish_got_bite: macro
+	db movement_fish_got_bite
+	endm
+
+	enum movement_fish_got_bite_2
+fish_got_bite_2: macro
+	db movement_fish_got_bite_2
+	endm
+
+	enum movement_hide_emote
 hide_emote: macro
-	db $53
+	db movement_hide_emote ; $53
 	endm
 
+	enum movement_show_emote
 show_emote: macro
-	db $54
+	db movement_show_emote ; $54
 	endm
 
+	enum movement_step_shake
 step_shake: macro
-	db $55
+	db movement_step_shake ; $55
 	db \1 ; displacement
 	endm
--- a/macros/predef.asm
+++ b/macros/predef.asm
@@ -1,7 +1,6 @@
 add_predef: MACRO
 \1Predef::
-	dw \1
-	db BANK(\1)
+	dwb \1, BANK(\1)
 ENDM
 
 predef_id: MACRO
--- /dev/null
+++ b/macros/trainer.asm
@@ -1,0 +1,11 @@
+trainerclass: MACRO
+	enum \1
+const_value = 1
+ENDM
+
+trainer: MACRO
+	; flag, group, id, seen text, win text, lost text, talk-again text
+	dw \1
+	db \2, \3
+	dw \4, \5, \6, \7
+ENDM
--- a/main.asm
+++ b/main.asm
@@ -11,15 +11,15 @@
 
 	ld a, [IsInBattle]
 	and a
-	jr z, .asm_4012
+	jr z, .notinbattle
 
 	call TextBox
-	jr .asm_4017
+	jr .incave
 
-.asm_4012
+.notinbattle
 	predef Function28eef
 
-.asm_4017
+.incave
 	hlcoord 4, 11
 	ld de, .Waiting
 	call PlaceString
@@ -118,7 +118,7 @@
 MysteryGift: ; 5b54
 	call UpdateTime
 	callba Function11548
-	callba Function1048ba
+	callba DoMysteryGift
 	ret
 ; 5b64
 
@@ -130,12 +130,12 @@
 NewGame: ; 5b6b
 	xor a
 	ld [wc2cc], a
-	call Function5ba7
+	call ResetWRAM
 	call Function5b44
 	call Function5b8f
 	call OakSpeech
-	call Function5d23
-	ld a, $1
+	call InitializeWorld
+	ld a, 1
 	ld [wc2d8], a
 
 	ld a, 0 ; SPAWN_HOME
@@ -148,24 +148,24 @@
 
 Function5b8f: ; 5b8f
 	callba Function10632f
-	jr c, .asm_5b9e
+	jr c, .ok
 	callba Function48dcb
 	ret
 
-.asm_5b9e
-	ld c, $0
+.ok
+	ld c, 0
 	callba Function4802f
 	ret
 ; 5ba7
 
-Function5ba7: ; 5ba7
+ResetWRAM: ; 5ba7
 	xor a
 	ld [hBGMapMode], a
-	call Function5bae
+	call _ResetWRAM
 	ret
 ; 5bae
 
-Function5bae: ; 5bae
+_ResetWRAM: ; 5bae
 
 	ld hl, Sprites
 	ld bc, Options - Sprites
@@ -207,7 +207,7 @@
 	ld [wCurBox], a
 	ld [wd4b4], a
 
-	call Function5ca6
+	call SetDefaultBoxNames
 
 	ld a, 1
 	call GetSRAMBank
@@ -214,7 +214,7 @@
 	ld hl, sBoxCount
 	call Function5ca1
 	call CloseSRAM
-	
+
 	ld hl, NumItems
 	call Function5ca1
 
@@ -301,10 +301,10 @@
 	ret
 ; 5ca6
 
-Function5ca6: ; 5ca6
+SetDefaultBoxNames: ; 5ca6
 	ld hl, wBoxNames
 	ld c, 0
-.asm_5cab
+.loop
 	push hl
 	ld de, .Box
 	call CopyName2
@@ -312,12 +312,12 @@
 	ld a, c
 	inc a
 	cp 10
-	jr c, .asm_5cbe
+	jr c, .less
 	sub 10
 	ld [hl], "1"
 	inc hl
 
-.asm_5cbe
+.less
 	add "0"
 	ld [hli], a
 	ld [hl], "@"
@@ -327,7 +327,7 @@
 	inc c
 	ld a, c
 	cp NUM_BOXES
-	jr c, .asm_5cab
+	jr c, .loop
 	ret
 
 .Box
@@ -376,9 +376,9 @@
 .Mom    db "MOM@"
 ; 5d23
 
-Function5d23: ; 5d23
+InitializeWorld: ; 5d23
 	call Function610f
-	callba Function8029
+	callba GetSpawnCoord
 	callba Function113d6
 	ret
 ; 5d33
@@ -411,7 +411,7 @@
 ; 5d65
 
 Continue: ; 5d65
-	callba Function14ea5
+	callba TryLoadSaveFile
 	jr c, .asm_5dd6
 	callba Function150b9
 	call Function1d6e
@@ -422,13 +422,13 @@
 	call DelayFrames
 	call Function5e34
 	jr nc, .asm_5d8c
-	call Function1c17
+	call WriteBackup
 	jr .asm_5dd6
 
 .asm_5d8c
 	call Function5e48
 	jr nc, .asm_5d96
-	call Function1c17
+	call WriteBackup
 	jr .asm_5dd6
 
 .asm_5d96
@@ -440,11 +440,11 @@
 	ld [MusicFadeIDHi], a
 	call WhiteBGMap
 	call Function5df0
-	call Function1c17
+	call WriteBackup
 	call ClearTileMap
 	ld c, $14
 	call DelayFrames
-	callba Function2a394
+	callba RestoreRoamMons
 	callba Function105091
 	callba Function140ae
 	ld a, [wd4b5]
@@ -582,7 +582,7 @@
 	call Function5f1c
 	call Function5f40
 	call Functione5f
-	call Function1ad2
+	call DrawOnMap
 	ret
 ; 5eaf
 
@@ -591,7 +591,7 @@
 	call Function5f1c
 	call Function5f48
 	call Functione5f
-	call Function1ad2
+	call DrawOnMap
 	ret
 ; 5ebf
 
@@ -734,7 +734,7 @@
 	call PlayMusic
 
 	call Function4a3
-	call Function4b6
+	call FadeToWhite
 	xor a
 	ld [CurPartySpecies], a
 	ld a, POKEMON_PROF
@@ -743,11 +743,11 @@
 
 	ld b, $1c
 	call GetSGBLayout
-	call Function616a
+	call Intro_FadeInFrontpic
 
 	ld hl, OakText1
 	call PrintText
-	call Function4b6
+	call FadeToWhite
 	call ClearTileMap
 
 	ld a, WOOPER
@@ -764,13 +764,13 @@
 
 	ld b, $1c
 	call GetSGBLayout
-	call Function6182
+	call Intro_WipeInFrontpic
 
 	ld hl, OakText2
 	call PrintText
 	ld hl, OakText4
 	call PrintText
-	call Function4b6
+	call FadeToWhite
 	call ClearTileMap
 
 	xor a
@@ -781,11 +781,11 @@
 
 	ld b, $1c
 	call GetSGBLayout
-	call Function616a
+	call Intro_FadeInFrontpic
 
 	ld hl, OakText5
 	call PrintText
-	call Function4b6
+	call FadeToWhite
 	call ClearTileMap
 
 	xor a
@@ -794,7 +794,7 @@
 
 	ld b, $1c
 	call GetSGBLayout
-	call Function616a
+	call Intro_FadeInFrontpic
 
 	ld hl, OakText6
 	call PrintText
@@ -842,7 +842,7 @@
 	ld a, [wcfa9]
 	dec a
 	jr z, .NewName
-	call Function60fa
+	call StorePlayerName
 	callba Function8c1d
 	callba MovePlayerPicLeft
 	ret
@@ -852,7 +852,7 @@
 	ld de, PlayerName
 	callba Function116c1
 
-	call Function4b6
+	call FadeToWhite
 	call ClearTileMap
 
 	call Functione5f
@@ -884,17 +884,17 @@
 
 Function60e9: ; 60e9
 	call LoadMenuDataHeader
-	call Function1d81
+	call InterpretMenu2
 	ld a, [wcfa9]
 	dec a
 	call Function1db8
-	call Function1c17
+	call WriteBackup
 	ret
 ; 60fa
 
-Function60fa: ; 60fa
-	ld a, $50
-	ld bc, $000b
+StorePlayerName: ; 60fa
+	ld a, "@"
+	ld bc, NAME_LENGTH
 	ld hl, PlayerName
 	call ByteFill
 	ld hl, PlayerName
@@ -952,12 +952,12 @@
 	ld c, 50
 	call DelayFrames
 
-	call Function4b6
+	call FadeToWhite
 	call ClearTileMap
 	ret
 ; 616a
 
-Function616a: ; 616a
+Intro_FadeInFrontpic: ; 616a
 	ld hl, IntroFadePalettes
 	ld b, IntroFadePalettesEnd - IntroFadePalettes
 .asm_616f
@@ -980,13 +980,13 @@
 IntroFadePalettesEnd
 ; 6182
 
-Function6182: ; 6182
+Intro_WipeInFrontpic: ; 6182
 	ld a, $77
 	ld [hWX], a
 	call DelayFrame
 	ld a, $e4
 	call DmgToCgbBGPals
-.asm_618e
+.loop
 	call DelayFrame
 	ld a, [hWX]
 	sub $8
@@ -993,7 +993,7 @@
 	cp $ff
 	ret z
 	ld [hWX], a
-	jr .asm_618e
+	jr .loop
 ; 619c
 
 Function619c: ; 619c
@@ -1002,7 +1002,7 @@
 	xor a
 	ld [$ffad], a
 	hlcoord 6, 4
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	ret
 ; 61b4
@@ -1014,7 +1014,7 @@
 	xor a
 	ld [$ffad], a
 	hlcoord 6, 4
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	ret
 ; 61cd
@@ -1032,7 +1032,7 @@
 	inc de
 
 	ld c, a
-.asm_61e4
+.loop
 	ld a, [de]
 	inc de
 	ld [hli], a
@@ -1046,14 +1046,14 @@
 	ld b, 0
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_61f8
+	jr z, .male
 	ld b, 1
-.asm_61f8
+.male
 	ld a, b
 
 	ld [hli], a
 	dec c
-	jr nz, .asm_61e4
+	jr nz, .loop
 	ret
 ; 61fe
 
@@ -1078,9 +1078,9 @@
 	ld [rSVBK], a
 	call TitleScreen
 	call DelayFrame
-.asm_6226
+.loop
 	call Function627b
-	jr nc, .asm_6226
+	jr nc, .loop
 	call ClearSprites
 	call WhiteBGMap
 	pop af
@@ -1102,14 +1102,15 @@
 	call UpdateTimePals
 	ld a, [wcf64]
 	cp $5
-	jr c, .asm_625e
+	jr c, .ok
 	xor a
-.asm_625e
+.ok
 	ld e, a
 	ld d, 0
-	ld hl, .data_626a
+	ld hl, .jumptable_626a
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1116,7 +1117,7 @@
 	jp [hl]
 ; 626a
 
-.data_626a
+.jumptable_626a
 	dw Function5ae8
 	dw Function6389
 	dw Function620b
@@ -1133,7 +1134,7 @@
 Function627b: ; 627b
 	ld a, [wcf63]
 	bit 7, a
-	jr nz, .asm_6290
+	jr nz, .true
 	call TitleScreenScene
 	callba Function10eea7
 	call DelayFrame
@@ -1140,7 +1141,7 @@
 	and a
 	ret
 
-.asm_6290
+.true
 	scf
 	ret
 ; 6292
@@ -1161,8 +1162,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, .scenes
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1202,7 +1204,7 @@
 ; Reversed signage for every other line's position.
 ; This is responsible for the interlaced effect.
 	ld a, e
-	xor $ff
+	xor -1
 	inc a
 
 	ld b, 8 * 10 / 2 ; logo height / 2
@@ -1222,7 +1224,7 @@
 	inc [hl]
 	xor a
 	ld [hLCDStatCustom], a
-	
+
 ; Play the title screen music.
 	ld de, MUSIC_TITLE
 	call PlayMusic
@@ -1306,10 +1308,10 @@
 .check_start
 	ld a, [hl]
 	and START | A_BUTTON
-	jr nz, .continue
+	jr nz, .incave
 	ret
 
-.continue
+.incave
 	ld a, 0
 	jr .done
 
@@ -1389,8 +1391,9 @@
 	add hl, bc
 	ld l, [hl]
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Data63ca
 	add hl, de
 	ld a, [wcf65]
@@ -1399,8 +1402,9 @@
 	srl a
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	and a
 	ret z
@@ -2201,7 +2205,7 @@
 	call Function6f7f
 	ret nc
 	push af
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
 	and 3
@@ -2217,7 +2221,7 @@
 ; 6f5b
 
 .data_6f5b
-	db 1, 2, 8, 4
+	db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT
 ; 6f5f
 
 Function6f5f: ; 6f5f
@@ -2227,7 +2231,7 @@
 	call Function6f7f
 	ret nc
 	push af
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	and 3
 	ld e, a
@@ -2242,7 +2246,7 @@
 ; 6f7b
 
 .data_6f7b
-	db 2, 1, 4, 8
+	db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT
 ; 6f7f
 
 Function6f7f: ; 6f7f
@@ -2249,13 +2253,13 @@
 	ld d, a
 	and $f0
 	cp $b0
-	jr z, .asm_6f8c
+	jr z, .done
 	cp $c0
-	jr z, .asm_6f8c
+	jr z, .done
 	xor a
 	ret
 
-.asm_6f8c
+.done
 	ld a, d
 	and 7
 	ld e, a
@@ -2273,7 +2277,7 @@
 ; 6fa1
 
 Function6fa1: ; 6fa1
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
 	and 3
@@ -2353,15 +2357,15 @@
 	ld [$ffaf], a
 	call Function7041
 	ret nc
-	ld hl, OBJECT_07
+	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_7007
+	cp STANDING
+	jr z, .standing
 	xor a
 	ret
 
-.asm_7007
+.standing
 	scf
 	ret
 ; 7009
@@ -2379,7 +2383,7 @@
 
 Function7015: ; 7015
 	ld a, [$ffaf]
-	call Function1ae5
+	call GetObjectStruct
 	call Function7021
 	call Function7041
 	ret
@@ -2393,23 +2397,23 @@
 	ld e, [hl]
 	call GetSpriteDirection
 	and a
-	jr z, .asm_703b
-	cp $4
-	jr z, .asm_703d
-	cp $8
-	jr z, .asm_703f
+	jr z, .down
+	cp OW_UP
+	jr z, .up
+	cp OW_LEFT
+	jr z, .left
 	inc d
 	ret
 
-.asm_703b
+.down
 	inc e
 	ret
 
-.asm_703d
+.up
 	dec e
 	ret
 
-.asm_703f
+.left
 	dec d
 	ret
 ; 7041
@@ -2417,71 +2421,71 @@
 Function7041: ; 7041
 	ld bc, ObjectStructs
 	xor a
-.asm_7045
+.loop
 	ld [$ffb0], a
-	call Function1af1
-	jr z, .asm_7093
+	call GetObjectSprite
+	jr z, .nope
 	ld hl, OBJECT_04
 	add hl, bc
 	bit 7, [hl]
-	jr nz, .asm_7093
+	jr nz, .nope
 	ld hl, OBJECT_PALETTE
 	add hl, bc
 	bit 7, [hl]
-	jr z, .asm_7063
+	jr z, .got
 	call Function7171
-	jr nc, .asm_707b
-	jr .asm_7073
+	jr nc, .ok
+	jr .ok2
 
-.asm_7063
+.got
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
 	cp d
-	jr nz, .asm_707b
+	jr nz, .ok
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld a, [hl]
 	cp e
-	jr nz, .asm_707b
+	jr nz, .ok
 
-.asm_7073
+.ok2
 	ld a, [$ffaf]
 	ld l, a
 	ld a, [$ffb0]
 	cp l
-	jr nz, .asm_70a2
+	jr nz, .setcarry
 
-.asm_707b
+.ok
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld a, [hl]
 	cp d
-	jr nz, .asm_7093
+	jr nz, .nope
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld a, [hl]
 	cp e
-	jr nz, .asm_7093
+	jr nz, .nope
 	ld a, [$ffaf]
 	ld l, a
 	ld a, [$ffb0]
 	cp l
-	jr nz, .asm_70a2
+	jr nz, .setcarry
 
-.asm_7093
-	ld hl, ObjectStruct2 - ObjectStruct1
+.nope
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	ld a, [$ffb0]
 	inc a
-	cp $d
-	jr nz, .asm_7045
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	and a
 	ret
 
-.asm_70a2
+.setcarry
 	scf
 	ret
 ; 70a4
@@ -2584,9 +2588,9 @@
 	ld e, a
 	ld bc, ObjectStructs
 	xor a
-.asm_711f
+.loop
 	ld [$ffb0], a
-	call Function1af1
+	call GetObjectSprite
 	jr z, .asm_7160
 	ld hl, OBJECT_03
 	add hl, bc
@@ -2627,14 +2631,14 @@
 	jr .asm_716f
 
 .asm_7160
-	ld hl, ObjectStruct2 - ObjectStruct1
+	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
 	ld a, [$ffb0]
 	inc a
-	cp $d
-	jr nz, .asm_711f
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	xor a
 	ret
 
@@ -2667,24 +2671,24 @@
 	ret
 ; 718d
 
-Function718d: ; 718d
+GetFirstPokemonHappiness: ; 718d
 	ld hl, PartyMon1Happiness
 	ld bc, PartyMon2 - PartyMon1
 	ld de, PartySpecies
-.asm_7196
+.loop
 	ld a, [de]
 	cp EGG
-	jr nz, .asm_719f
+	jr nz, .done
 	inc de
 	add hl, bc
-	jr .asm_7196
+	jr .loop
 
-.asm_719f
+.done
 	ld [wd265], a
 	ld a, [hl]
 	ld [ScriptVar], a
 	call GetPokemonName
-	jp Function746e
+	jp CopyPokemonName_Buffer1_Buffer3
 ; 71ac
 
 Function71ac: ; 71ac
@@ -2692,13 +2696,13 @@
 	ld [wd265], a
 	cp EGG
 	ld a, $1
-	jr z, .asm_71b9
+	jr z, .egg
 	xor a
 
-.asm_71b9
+.egg
 	ld [ScriptVar], a
 	call GetPokemonName
-	jp Function746e
+	jp CopyPokemonName_Buffer1_Buffer3
 ; 71c2
 
 
@@ -2729,19 +2733,19 @@
 	ld a, [de]
 	cp 100
 	ld e, 0
-	jr c, .asm_71ef
+	jr c, .ok
 	inc e
 	cp 200
-	jr c, .asm_71ef
+	jr c, .ok
 	inc e
 
-.asm_71ef
+.ok
 	dec c
 	ld b, 0
 	ld hl, .Actions
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld d, 0
 	add hl, de
 	ld a, [hl]
@@ -2751,16 +2755,16 @@
 	ld a, [de]
 	jr nc, .negative
 	add [hl]
-	jr nc, .asm_720d
-	ld a, $ff
-	jr .asm_720d
+	jr nc, .done
+	ld a, -1
+	jr .done
 
 .negative
 	add [hl]
-	jr c, .asm_720d
+	jr c, .done
 	xor a
 
-.asm_720d
+.done
 	ld [de], a
 	ld a, [IsInBattle]
 	and a
@@ -2776,14 +2780,14 @@
 ; 7221
 
 .Actions
-	db  +5,  +3,  +2
-	db  +5,  +3,  +2
+	db  +5,  +3,  +2 ; Gained a level
+	db  +5,  +3,  +2 ; Used a stat-boosting item (vitamin or X-item)
 	db  +1,  +1,  +0
 	db  +3,  +2,  +1 ; Battled a Gym Leader
 	db  +1,  +1,  +0 ; Learned a move
-	db  -1,  -1,  -1
+	db  -1,  -1,  -1 ; Lost to an enemy
 	db  -5,  -5, -10
-	db  -5,  -5, -10
+	db  -5,  -5, -10 ; Lost to a much weaker enemy
 	db  +1,  +1,  +1
 	db  +3,  +3,  +1
 	db  +5,  +5,  +2
@@ -2790,11 +2794,11 @@
 	db  +1,  +1,  +1
 	db  +3,  +3,  +1
 	db +10, +10,  +4
-	db  -5,  -5, -10
-	db -10, -10, -15
-	db -15, -15, -20
+	db  -5,  -5, -10 ; Used Heal Powder or Energypowder (bitter)
+	db -10, -10, -15 ; Used Energy Root (bitter)
+	db -15, -15, -20 ; Used Revival Herb (bitter)
 	db  +3,  +3,  +1
-	db +10,  +6,  +4
+	db +10,  +6,  +4 ; Gained a level in the place where it was caught
 ; 725a
 
 
@@ -2971,7 +2975,7 @@
 	call CopyName2
 
 ; Engine flag for this event.
-	ld hl, wdc1e
+	ld hl, DailyFlags
 	set 5, [hl]
 
 	ld a, 1
@@ -2991,7 +2995,7 @@
 
 
 SpecialReturnShuckle: ; 737e
-	callba Function50000
+	callba SelectMonFromParty
 	jr c, .asm_73e6
 
 	ld a, [CurPartySpecies]
@@ -3063,13 +3067,13 @@
 ; 73f7
 
 Function73f7: ; 73f7
-	callba Function50000
+	callba SelectMonFromParty
 	jr c, .asm_740e
 	ld a, [CurPartySpecies]
 	ld [ScriptVar], a
 	ld [wd265], a
 	call GetPokemonName
-	jp Function746e
+	jp CopyPokemonName_Buffer1_Buffer3
 
 .asm_740e
 	xor a
@@ -3090,26 +3094,26 @@
 
 Function7420: ; 7420
 	push hl
-	callba Function50000
+	callba SelectMonFromParty
 	pop hl
-	jr c, .asm_744e
+	jr c, .nope
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_7453
+	jr z, .egg
 	push hl
 	call GetCurNick
-	call Function746e
+	call CopyPokemonName_Buffer1_Buffer3
 	pop hl
 	call Random
-.next
+.loop
 	sub [hl]
-	jr c, .asm_7444
+	jr c, .ok
+rept 3
 	inc hl
-	inc hl
-	inc hl
-	jr .next
+endr
+	jr .loop
 
-.asm_7444
+.ok
 	inc hl
 	ld a, [hli]
 	ld [ScriptVar], a
@@ -3117,12 +3121,12 @@
 	call ChangeHappiness
 	ret
 
-.asm_744e
+.nope
 	xor a
 	ld [ScriptVar], a
 	ret
 
-.asm_7453
+.egg
 	ld a, $1
 	ld [ScriptVar], a
 	ret
@@ -3142,10 +3146,10 @@
 	db $ff, $02, $12
 ; 746e
 
-Function746e: ; 746e
+CopyPokemonName_Buffer1_Buffer3: ; 746e
 	ld hl, StringBuffer1
 	ld de, StringBuffer3
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	jp CopyBytes
 ; 747a
 
@@ -3163,11 +3167,11 @@
 	ld [hBGMapMode], a
 	call WhiteBGMap
 	call ClearSprites
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, TileMapEnd - TileMap
 	ld a, " "
 	call ByteFill
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, AttrMapEnd - AttrMap
 	ld a, $7
 	call ByteFill
@@ -3176,7 +3180,7 @@
 	ret
 ; 8029
 
-Function8029: ; 8029
+GetSpawnCoord: ; 8029
 	ld a, $ff
 	ld [wd4cd], a
 	ld [wd4ce], a
@@ -3187,18 +3191,18 @@
 	call Function808f
 	ld a, $0
 	call GetMapObject
-	ld hl, $0008
+	ld hl, MAPOBJECT_COLOR
 	add hl, bc
 	ld e, $80
 	ld a, [wd45b]
 	bit 2, a
-	jr nz, .asm_8059
+	jr nz, .ok
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_8059
-	ld e, $90
+	jr z, .ok
+	ld e, (PAL_OW_BLUE << 4) | $80
 
-.asm_8059
+.ok
 	ld [hl], e
 	ld a, $0
 	ld [$ffaf], a
@@ -3216,7 +3220,8 @@
 ; 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
+	person_event SPRITE_CHRIS, 0, 0, OW_LEFT | $3, $ff, -1, -1, $0, 0, $0000, -1
+	; db $01, $00, $00, $0b, $ff, $ff, $ff, $00, $00, $00, $00, $ff, $ff
 ; 807e
 
 Function807e:: ; 807e
@@ -3224,10 +3229,10 @@
 	ld a, b
 	call GetMapObject
 	pop de
-	ld hl, $0003
+	ld hl, MAPOBJECT_X_COORD
 	add hl, bc
 	ld [hl], d
-	ld hl, $0002
+	ld hl, MAPOBJECT_Y_COORD
 	add hl, bc
 	ld [hl], e
 	ret
@@ -3236,10 +3241,10 @@
 Function808f: ; 808f
 	push bc
 	ld a, [XCoord]
-	add $4
+	add 4
 	ld d, a
 	ld a, [YCoord]
-	add $4
+	add 4
 	ld e, a
 	pop bc
 	call Function807e
@@ -3264,25 +3269,25 @@
 	ret
 ; 80b8
 
-Function80b8: ; 80b8
+RefreshPlayerCoords: ; 80b8
 	ld a, [XCoord]
-	add $4
+	add 4
 	ld d, a
 	ld hl, MapX
 	sub [hl]
 	ld [hl], d
-	ld hl, MapObjects + 3
+	ld hl, MapObjects + MAPOBJECT_X_COORD
 	ld [hl], d
 	ld hl, MapX2
 	ld [hl], d
 	ld d, a
 	ld a, [YCoord]
-	add $4
+	add 4
 	ld e, a
 	ld hl, MapY
 	sub [hl]
 	ld [hl], e
-	ld hl, MapObjects + 2
+	ld hl, MapObjects + MAPOBJECT_Y_COORD
 	ld [hl], e
 	ld hl, MapY2
 	ld [hl], e
@@ -3294,27 +3299,27 @@
 ; 80e7
 
 
-Function80e7:: ; 80e7
+CopyObjectStruct:: ; 80e7
 	call Function2707
 	and a
 	ret nz
-	ld hl, ObjectStructs + (ObjectStruct2 - ObjectStruct1) * 1
+	ld hl, ObjectStructs + OBJECT_STRUCT_LENGTH * 1
 	ld a, 1
-	ld de, ObjectStruct2 - ObjectStruct1
-.asm_80f4
+	ld de, OBJECT_STRUCT_LENGTH
+.loop
 	ld [$ffb0], a
 	ld a, [hl]
 	and a
-	jr z, .asm_8104
+	jr z, .done
 	add hl, de
 	ld a, [$ffb0]
 	inc a
-	cp $d
-	jr nz, .asm_80f4
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
 	scf
 	ret
 
-.asm_8104
+.done
 	ld d, h
 	ld e, l
 	call Function8116
@@ -3335,12 +3340,12 @@
 
 Function811d: ; 811d
 	ld a, [$ffb0]
-	ld hl, OBJECT_00
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld [hl], a
 	ld a, [$ffaf]
 	ld [wc2f0], a
-	ld hl, OBJECT_01
+	ld hl, MAPOBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	ld [wc2f1], a
@@ -3349,33 +3354,33 @@
 	ld a, [hl]
 	call GetSpritePalette
 	ld [wc2f3], a
-	ld hl, OBJECT_08
+	ld hl, MAPOBJECT_COLOR
 	add hl, bc
 	ld a, [hl]
 	and $f0
-	jr z, .asm_814e
+	jr z, .no_color
 	swap a
 	and $7
 	ld [wc2f3], a
 
-.asm_814e
-	ld hl, OBJECT_04
+.no_color
+	ld hl, MAPOBJECT_FACING
 	add hl, bc
 	ld a, [hl]
 	ld [wc2f4], a
-	ld hl, OBJECT_09
+	ld hl, MAPOBJECT_RANGE
 	add hl, bc
 	ld a, [hl]
 	ld [wc2f5], a
-	ld hl, OBJECT_03
+	ld hl, MAPOBJECT_X_COORD
 	add hl, bc
 	ld a, [hl]
 	ld [wc2f6], a
-	ld hl, OBJECT_SPRITE
+	ld hl, MAPOBJECT_Y_COORD
 	add hl, bc
 	ld a, [hl]
 	ld [wc2f7], a
-	ld hl, OBJECT_FLAGS
+	ld hl, MAPOBJECT_MOVEMENT
 	add hl, bc
 	ld a, [hl]
 	ld [wc2f8], a
@@ -3384,45 +3389,45 @@
 
 Function8177: ; 8177
 	ld bc, MapObjects + OBJECT_LENGTH
-	ld a, $1
-.asm_817c
+	ld a, 1
+.loop
 	ld [$ffaf], a
-	ld hl, $0001
+	ld hl, MAPOBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_81bb
-	ld hl, $0000
+	jr z, .next
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr nz, .asm_81bb
+	cp -1
+	jr nz, .next
 	ld a, [XCoord]
 	ld d, a
 	ld a, [YCoord]
 	ld e, a
-	ld hl, $0003
+	ld hl, MAPOBJECT_X_COORD
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub d
-	jr c, .asm_81bb
-	cp $c
-	jr nc, .asm_81bb
-	ld hl, $0002
+	jr c, .next
+	cp MAPOBJECT_SCREEN_WIDTH
+	jr nc, .next
+	ld hl, MAPOBJECT_Y_COORD
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub e
-	jr c, .asm_81bb
-	cp $b
-	jr nc, .asm_81bb
+	jr c, .next
+	cp MAPOBJECT_SCREEN_HEIGHT
+	jr nc, .next
 	push bc
-	call Function80e7
+	call CopyObjectStruct
 	pop bc
 	jp c, Function81c9
 
-.asm_81bb
+.next
 	ld hl, OBJECT_LENGTH
 	add hl, bc
 	ld b, h
@@ -3429,8 +3434,8 @@
 	ld c, l
 	ld a, [$ffaf]
 	inc a
-	cp $10
-	jr nz, .asm_817c
+	cp NUM_OBJECTS
+	jr nz, .loop
 	ret
 ; 81c9
 
@@ -3469,39 +3474,39 @@
 	ld a, [XCoord]
 	ld e, a
 	ld bc, MapObjects + OBJECT_LENGTH
-	ld a, $1
-.asm_81f4
+	ld a, 1
+.loop
 	ld [$ffaf], a
-	ld hl, $0001
+	ld hl, MAPOBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_8224
-	ld hl, $0002
+	jr z, .next
+	ld hl, MAPOBJECT_Y_COORD
 	add hl, bc
 	ld a, d
 	cp [hl]
-	jr nz, .asm_8224
-	ld hl, $0000
+	jr nz, .next
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr nz, .asm_8224
-	ld hl, $0003
+	cp -1
+	jr nz, .next
+	ld hl, MAPOBJECT_X_COORD
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub e
-	jr c, .asm_8224
-	cp $c
-	jr nc, .asm_8224
+	jr c, .next
+	cp MAPOBJECT_SCREEN_WIDTH
+	jr nc, .next
 	push de
 	push bc
-	call Function80e7
+	call CopyObjectStruct
 	pop bc
 	pop de
 
-.asm_8224
+.next
 	ld hl, OBJECT_LENGTH
 	add hl, bc
 	ld b, h
@@ -3508,14 +3513,14 @@
 	ld c, l
 	ld a, [$ffaf]
 	inc a
-	cp $10
-	jr nz, .asm_81f4
+	cp NUM_OBJECTS
+	jr nz, .loop
 	ret
 ; 8232
 
 Function8232: ; 8232
 	ld a, [XCoord]
-	sub $1
+	sub 1
 	jr Function823e
 
 Function8239: ; 8239
@@ -3527,39 +3532,39 @@
 	ld a, [YCoord]
 	ld d, a
 	ld bc, MapObjects + OBJECT_LENGTH
-	ld a, $1
-.asm_8248
+	ld a, 1
+.loop
 	ld [$ffaf], a
-	ld hl, $0001
+	ld hl, MAPOBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_8278
-	ld hl, $0003
+	jr z, .next
+	ld hl, MAPOBJECT_X_COORD
 	add hl, bc
 	ld a, e
 	cp [hl]
-	jr nz, .asm_8278
-	ld hl, $0000
+	jr nz, .next
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr nz, .asm_8278
-	ld hl, $0002
+	cp -1
+	jr nz, .next
+	ld hl, MAPOBJECT_Y_COORD
 	add hl, bc
 	ld a, [hl]
-	add $1
+	add 1
 	sub d
-	jr c, .asm_8278
-	cp $b
-	jr nc, .asm_8278
+	jr c, .next
+	cp MAPOBJECT_SCREEN_HEIGHT
+	jr nc, .next
 	push de
 	push bc
-	call Function80e7
+	call CopyObjectStruct
 	pop bc
 	pop de
 
-.asm_8278
+.next
 	ld hl, OBJECT_LENGTH
 	add hl, bc
 	ld b, h
@@ -3566,8 +3571,8 @@
 	ld c, l
 	ld a, [$ffaf]
 	inc a
-	cp $10
-	jr nz, .asm_8248
+	cp NUM_OBJECTS
+	jr nz, .loop
 	ret
 ; 8286
 
@@ -3574,7 +3579,7 @@
 
 Function8286: ; 8286
 	ld a, [wc2f0]
-	ld hl, OBJECT_01
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, de
 	ld [hl], a
 	ld a, [wc2f4]
@@ -3589,17 +3594,17 @@
 	ld a, [wc2f6]
 	call Function82f1
 	ld a, [wc2f1]
-	ld hl, OBJECT_00
+	ld hl, OBJECT_SPRITE
 	add hl, de
 	ld [hl], a
 	ld a, [wc2f2]
-	ld hl, OBJECT_SPRITE
+	ld hl, OBJECT_SPRITE_TILE
 	add hl, de
 	ld [hl], a
 	ld hl, OBJECT_09
 	add hl, de
 	ld [hl], $0
-	ld hl, OBJECT_FACING
+	ld hl, OBJECT_FACING_STEP
 	add hl, de
 	ld [hl], $ff
 	ld a, [wc2f8]
@@ -3675,8 +3680,8 @@
 	jr z, Function833b
 	ld a, [$ffe0]
 	ld b, a
-	ld c, $0
-	ld d, $1
+	ld c, 0
+	ld d, 1
 	call Function8341
 	call Function1b35
 
@@ -3691,19 +3696,19 @@
 	push bc
 	ld a, c
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	call Function1ae5
+	call GetObjectStruct
 	ld d, b
 	ld e, c
 	pop bc
 	ld a, b
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	call Function1ae5
+	call GetObjectStruct
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -3834,34 +3839,37 @@
 	ret
 ; 8417
 
-Function8417:: ; 8417
+GetRelativeFacing:: ; 8417
+; Determines which way map object e would have to turn to face map object d.  Returns carry if it's impossible for whatever reason.
 	ld a, d
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $d
-	jr nc, .asm_8437
+	cp NUM_OBJECT_STRUCTS
+	jr nc, .carry
 	ld d, a
 	ld a, e
 	call GetMapObject
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
-	cp $d
-	jr nc, .asm_8437
+	cp NUM_OBJECT_STRUCTS
+	jr nc, .carry
 	ld e, a
-	call Function8439
+	call .GetFacing_e_relativeto_d
 	ret
 
-.asm_8437
+.carry
 	scf
 	ret
 ; 8439
 
-Function8439: ; 8439
+.GetFacing_e_relativeto_d: ; 8439
+; Determines which way object e would have to turn to face object d.  Returns carry if it's impossible.
+; load the coordinates of object d into bc
 	ld a, d
-	call Function1ae5
+	call GetObjectStruct
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -3870,8 +3878,9 @@
 	ld c, [hl]
 	ld b, a
 	push bc
+; load the coordinates of object e into de
 	ld a, e
-	call Function1ae5
+	call GetObjectStruct
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld d, [hl]
@@ -3879,55 +3888,61 @@
 	add hl, bc
 	ld e, [hl]
 	pop bc
+; |x1 - x2|
 	ld a, b
 	sub d
-	jr z, .asm_846c
-	jr nc, .asm_8460
+	jr z, .same_x_1
+	jr nc, .b_right_of_d_1
 	cpl
 	inc a
 
-.asm_8460
+.b_right_of_d_1
+; |y1 - y2|
 	ld h, a
 	ld a, c
 	sub e
-	jr z, .asm_847a
-	jr nc, .asm_8469
+	jr z, .same_y_1
+	jr nc, .c_below_e_1
 	cpl
 	inc a
 
-.asm_8469
+.c_below_e_1
+; |y1 - y2| - |x1 - x2|
 	sub h
-	jr c, .asm_847a
+	jr c, .same_y_1
 
-.asm_846c
+.same_x_1
+; compare the y coordinates
 	ld a, c
 	cp e
-	jr z, .asm_8488
-	jr c, .asm_8476
-	ld d, $0
+	jr z, .same_x_and_y
+	jr c, .c_directly_below_e
+; c directly above e
+	ld d, DOWN
 	and a
 	ret
 
-.asm_8476
-	ld d, $1
+.c_directly_below_e
+	ld d, UP
 	and a
 	ret
 
-.asm_847a
+.same_y_1
 	ld a, b
 	cp d
-	jr z, .asm_8488
-	jr c, .asm_8484
-	ld d, $3
+	jr z, .same_x_and_y
+	jr c, .b_directly_right_of_d
+; b directly left of d
+	ld d, RIGHT
 	and a
 	ret
 
-.asm_8484
-	ld d, $2
+.b_directly_right_of_d
+	ld d, LEFT
 	and a
 	ret
 
-.asm_8488
+.same_x_and_y
 	scf
 	ret
 ; 848a
@@ -3934,14 +3949,14 @@
 
 Function848a: ; 848a
 	call Function849d
-	jr c, .asm_8497
+	jr c, .same
 	ld [wd4d1], a
 	xor a
 	ld [wd4d0], a
 	ret
 
-.asm_8497
-	ld a, $ff
+.same
+	ld a, -1
 	ld [wd4d0], a
 	ret
 ; 849d
@@ -3948,7 +3963,7 @@
 
 Function849d: ; 849d
 	ld a, [wd4cd]
-	call Function1ae5
+	call GetObjectStruct
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld d, [hl]
@@ -3956,39 +3971,39 @@
 	add hl, bc
 	ld e, [hl]
 	ld a, [wd4ce]
-	call Function1ae5
+	call GetObjectStruct
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, d
 	cp [hl]
-	jr z, .asm_84c5
-	jr c, .asm_84c1
+	jr z, .check_y
+	jr c, .left
 	and a
-	ld a, $f
+	ld a, $c + RIGHT
 	ret
 
-.asm_84c1
+.left
 	and a
-	ld a, $e
+	ld a, $c + LEFT
 	ret
 
-.asm_84c5
+.check_y
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld a, e
 	cp [hl]
-	jr z, .asm_84d7
-	jr c, .asm_84d3
+	jr z, .same_xy
+	jr c, .up
 	and a
-	ld a, $c
+	ld a, $c + DOWN
 	ret
 
-.asm_84d3
+.up
 	and a
-	ld a, $d
+	ld a, $c + UP
 	ret
 
-.asm_84d7
+.same_xy
 	scf
 	ret
 ; 84d9
@@ -4021,8 +4036,9 @@
 	ld a, d
 	ld d, 0
 	ld hl, SineWave
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -4048,124 +4064,17 @@
 ; 854b
 
 
-GetPredefPointer:: ; 854b
-; Return the bank and address of PredefID in a and PredefAddress.
+INCLUDE "engine/predef.asm"
 
-; Save hl for later (back in Predef)
-	ld a, h
-	ld [PredefTemp], a
-	ld a, l
-	ld [PredefTemp + 1], a
 
-	push de
-	ld a, [PredefID]
-	ld e, a
-	ld d, 0
-	ld hl, PredefPointers
-	add hl, de
-	add hl, de
-	add hl, de
-	pop de
-
-	ld a, [hli]
-	ld [PredefAddress + 1], a
-	ld a, [hli]
-	ld [PredefAddress], a
-	ld a, [hl]
-
-	ret
-; 856b
-
-PredefPointers:: ; 856b
-; $4b Predef pointers
-; address, bank
-
-	add_predef LearnMove ; $0
-	add_predef Predef1
-	add_predef HealParty
-	add_predef FlagPredef
-	add_predef Functionc699
-	add_predef FillPP
-	add_predef Functiond88c
-	add_predef Functionda96
-	add_predef Functiondb3f ; $8
-	add_predef Functionde6e
-	add_predef GiveEgg
-	add_predef Functionc6e0
-	add_predef Functione167
-	add_predef Functione17b
-	add_predef CanLearnTMHMMove
-	add_predef GetTMHMMove
-	add_predef Function28eef ; $ 10
-	add_predef PrintMoveDesc
-	add_predef UpdatePlayerHUD
-	add_predef FillBox
-	add_predef Function3d873
-	add_predef UpdateEnemyHUD
-	add_predef StartBattle
-	add_predef FillInExpBar
-	add_predef Function3f43d ; $18
-	add_predef Function3f47c
-	add_predef LearnLevelMoves
-	add_predef FillMoves
-	add_predef Function421e6
-	add_predef Function28f63
-	add_predef Function28f24
-	add_predef Function5084a
-	add_predef ListMoves ; $20
-	add_predef Function50d2e
-	add_predef Function50cdb
-	add_predef Function50c50
-	add_predef GetGender
-	add_predef StatsScreenInit
-	add_predef DrawPlayerHP
-	add_predef DrawEnemyHP
-	add_predef PrintTempMonStats ; $28
-	add_predef GetTypeName
-	add_predef PrintMoveType
-	add_predef PrintType
-	add_predef PrintMonTypes
-	add_predef GetUnownLetter
-	add_predef Functioncbcdd
-	add_predef Predef2F
-	add_predef Function9853 ; $30
-	add_predef Function864c
-	add_predef Function91d11
-	add_predef CheckContestMon
-	add_predef Function8c20f
-	add_predef Function8c000
-	add_predef Function8c000_2
-	add_predef PlayBattleAnim
-	add_predef Predef38 ; $38
-	add_predef Predef39
-	add_predef Functionfd1d0
-	add_predef PartyMonItemName
-	add_predef GetFrontpic
-	add_predef GetBackpic
-	add_predef Function5108b
-	add_predef GetTrainerPic
-	add_predef DecompressPredef ; $40
-	add_predef Function347d3
-	add_predef Functionfb908
-	add_predef Functionfb877
-	add_predef Functiond0000
-	add_predef Function50d0a
-	add_predef Functiond00a3
-	add_predef Functiond008e
-	add_predef Functiond0669 ; $48
-	add_predef Functiond066e
-	dbw $ff, Function2d43 ; ????
-; 864c
-
-
 INCLUDE "engine/color.asm"
 
 
 SECTION "bank3", ROMX, BANK[$3]
 
-Functionc000:: ; c000
+CheckTime:: ; c000
 	ld a, [TimeOfDay]
-	ld hl, Datac012
+	ld hl, TimeOfDayTable
 	ld de, 2
 	call IsInArray
 	inc hl
@@ -4177,7 +4086,7 @@
 	ret
 ; c012
 
-Datac012: ; c012
+TimeOfDayTable: ; c012
 	db MORN, 1
 	db DAY,  2
 	db NITE, 4
@@ -4319,10 +4228,10 @@
 
 .two
 	dec e
-	jr nz, .asm_c583
+	jr nz, .two_skip
 	ld a, "0"
 	ld [$ffb3], a
-.asm_c583
+.two_skip
 
 	ld c, 0
 	ld a, [$ffb6]
@@ -4337,11 +4246,11 @@
 	ld b, a
 	ld a, [$ffb3]
 	or c
-	jr nz, .asm_c59b
+	jr nz, .money
 	call .PrintLeadingZero
-	jr .asm_c5ad
+	jr .money_leading_zero
 
-.asm_c59b
+.money
 	call .PrintYen
 	push af
 	ld a, "0"
@@ -4351,11 +4260,11 @@
 	ld [$ffb3], a
 	inc e
 	dec e
-	jr nz, .asm_c5ad
+	jr nz, .money_leading_zero
 	inc hl
 	ld [hl], $f2 ; XXX
 
-.asm_c5ad
+.money_leading_zero
 	call .AdvancePointer
 	call .PrintYen
 	ld a, "0"
@@ -4371,14 +4280,14 @@
 	push af
 	ld a, [$ffb3]
 	and a
-	jr nz, .asm_c5c9
+	jr nz, .stop
 	bit 5, d
-	jr z, .asm_c5c9
+	jr z, .stop
 	ld a, "¥"
 	ld [hli], a
 	res 5, d
 
-.asm_c5c9
+.stop
 	pop af
 	ret
 ; c5cb
@@ -4390,13 +4299,13 @@
 	ld [$ffb3], a
 .ok
 	ld c, 0
-.asm_c5d4
+.loop
 	ld a, [$ffb7]
 	ld b, a
 	ld a, [$ffb4]
 	ld [$ffba], a
 	cp b
-	jr c, .asm_c624
+	jr c, .skip1
 	sub b
 	ld [$ffb4], a
 	ld a, [$ffb8]
@@ -4404,14 +4313,14 @@
 	ld a, [$ffb5]
 	ld [$ffbb], a
 	cp b
-	jr nc, .asm_c5f6
+	jr nc, .skip2
 	ld a, [$ffb4]
 	or 0
-	jr z, .asm_c620
+	jr z, .skip3
 	dec a
 	ld [$ffb4], a
 	ld a, [$ffb5]
-.asm_c5f6
+.skip2
 	sub b
 	ld [$ffb5], a
 	ld a, [$ffb9]
@@ -4419,44 +4328,44 @@
 	ld a, [$ffb6]
 	ld [$ffbc], a
 	cp b
-	jr nc, .asm_c616
+	jr nc, .skip4
 	ld a, [$ffb5]
 	and a
-	jr nz, .asm_c611
+	jr nz, .skip5
 	ld a, [$ffb4]
 	and a
-	jr z, .asm_c61c
+	jr z, .skip6
 	dec a
 	ld [$ffb4], a
 	xor a
-.asm_c611
+.skip5
 	dec a
 	ld [$ffb5], a
 	ld a, [$ffb6]
-.asm_c616
+.skip4
 	sub b
 	ld [$ffb6], a
 	inc c
-	jr .asm_c5d4
-.asm_c61c
+	jr .loop
+.skip6
 	ld a, [$ffbb]
 	ld [$ffb5], a
-.asm_c620
+.skip3
 	ld a, [$ffba]
 	ld [$ffb4], a
-.asm_c624
+.skip1
 	ld a, [$ffb3]
 	or c
 	jr z, .PrintLeadingZero
 	ld a, [$ffb3]
 	and a
-	jr nz, .asm_c637
+	jr nz, .done
 	bit 5, d
-	jr z, .asm_c637
+	jr z, .done
 	ld a, $f0
 	ld [hli], a
 	res 5, d
-.asm_c637
+.done
 	ld a, "0"
 	add c
 	ld [hl], a
@@ -4497,7 +4406,7 @@
 	ld hl, PartySpecies
 .loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .done
 	cp EGG
 	jr z, .next
@@ -4522,7 +4431,7 @@
 	ld d, h
 	ld e, l
 
-	ld hl, PartyMon1Status - PartyMon1Species 
+	ld hl, PartyMon1Status - PartyMon1Species
 	add hl, de
 	xor a
 	ld [hli], a
@@ -4534,8 +4443,9 @@
 	; bc = PartyMon1HP - PartyMon1Species
 	ld b, h
 	ld c, l
+rept 2
 	dec bc
-	dec bc
+endr
 
 	ld a, [hli]
 	ld [bc], a
@@ -4550,7 +4460,7 @@
 Functionc699: ; c699
 	ld a, b
 	or c
-	jr z, .asm_c6dd
+	jr z, .zero
 	push hl
 	xor a
 	ld [hMultiplicand], a
@@ -4563,7 +4473,7 @@
 	call Multiply
 	ld a, d
 	and a
-	jr z, .asm_c6cc
+	jr z, .divide
 	srl d
 	rr e
 	srl d
@@ -4579,7 +4489,7 @@
 	ld a, b
 	ld [$ffb5], a
 
-.asm_c6cc
+.divide
 	ld a, e
 	ld [hMultiplier], a
 	ld b, $4
@@ -4592,7 +4502,7 @@
 	ld e, $1
 	ret
 
-.asm_c6dd
+.zero
 	ld e, $0
 	ret
 ; c6e0
@@ -4605,24 +4515,24 @@
 ; c6ea
 
 
-Functionc6ea: ; c6ea
+ClearBuffer1: ; c6ea
 	xor a
 	ld hl, Buffer1
-	ld bc, $0007
+	ld bc, 7
 	call ByteFill
 	ret
 ; c6f5
 
-Functionc6f5: ; c6f5
+FieldMoveJumptable: ; c6f5
 	ld a, [Buffer1]
 	rst JumpTable
 	ld [Buffer1], a
 	bit 7, a
-	jr nz, .asm_c702
+	jr nz, .okay
 	and a
 	ret
 
-.asm_c702
+.okay
 	and $7f
 	scf
 	ret
@@ -4666,7 +4576,7 @@
 	call CheckEngineFlag
 	ret nc
 	ld hl, BadgeRequiredText
-	call Function1d67 ; push text to queue
+	call MenuTextBoxBackup ; push text to queue
 	scf
 	ret
 ; c73d
@@ -4693,7 +4603,7 @@
 	ld a, [hl]
 	and a
 	jr z, .no
-	cp a, $ff
+	cp a, -1
 	jr z, .no
 	cp a, EGG
 	jr z, .next
@@ -4725,9 +4635,9 @@
 ; c779
 
 
-Functionc779: ; c779
+FieldMoveFailed: ; c779
 	ld hl, UnknownText_0xc780
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 ; c780
 
@@ -4736,11 +4646,11 @@
 	db "@"
 ; 0xc785
 
-Functionc785: ; c785
-	call Functionc6ea
+CutFunction: ; c785
+	call ClearBuffer1
 .loop
-	ld hl, Jumptable_c796
-	call Functionc6f5
+	ld hl, .Jumptable
+	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
@@ -4748,36 +4658,36 @@
 ; c796
 
 
-Jumptable_c796: ; c796 (3:4796)
-	dw Functionc79c
-	dw Functionc7b2
-	dw Functionc7bb
+.Jumptable: ; c796 (3:4796)
+	dw .CheckAble
+	dw .DoCut
+	dw .FailCut
 
 
-Functionc79c: ; c79c (3:479c)
+.CheckAble: ; c79c (3:479c)
 	ld de, ENGINE_HIVEBADGE
 	call CheckBadge
-	jr c, .asm_c7ac
-	call Functionc7ce
-	jr c, .asm_c7af
+	jr c, .nohivebadge
+	call CheckMapForSomethingToCut
+	jr c, .nothingtocut
 	ld a, $1
 	ret
-.asm_c7ac
+.nohivebadge
 	ld a, $80
 	ret
-.asm_c7af
+.nothingtocut
 	ld a, $2
 	ret
 
-Functionc7b2: ; c7b2 (3:47b2)
-	ld hl, UnknownScript_0xc7fe
-	call Function31cd
+.DoCut: ; c7b2 (3:47b2)
+	ld hl, Script_CutFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-Functionc7bb: ; c7bb (3:47bb)
+.FailCut: ; c7bb (3:47bb)
 	ld hl, UnknownText_0xc7c9
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 
@@ -4793,20 +4703,20 @@
 	db "@"
 ; 0xc7ce
 
-Functionc7ce: ; c7ce
+CheckMapForSomethingToCut: ; c7ce
 	call GetFacingTileCoord
 	ld c, a
 	push de
-	callba Function149f5
+	callba CheckCutCollision
 	pop de
-	jr nc, .asm_c7fc
-	call Function2a66
+	jr nc, .fail
+	call GetBlockLocation
 	ld c, [hl]
 	push hl
-	ld hl, Unknown_c862
-	call Functionc840
+	ld hl, CutTreeBlockPointers
+	call CheckOverworldTileArrays
 	pop hl
-	jr nc, .asm_c7fc
+	jr nc, .fail
 	ld a, l
 	ld [wd1ec], a
 	ld a, h
@@ -4818,25 +4728,25 @@
 	xor a
 	ret
 
-.asm_c7fc
+.fail
 	scf
 	ret
 ; c7fe
 
-UnknownScript_0xc7fe: ; c7fe
+Script_CutFromMenu: ; c7fe
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xc802: ; 0xc802
+Script_Cut: ; 0xc802
 	callasm GetPartyNick
 	writetext UnknownText_0xc7c4
 	reloadmappart
-	callasm Functionc810
+	callasm CutDownTreeOrGrass
 	loadmovesprites
 	end
 ; 0xc810
 
-Functionc810: ; c810
+CutDownTreeOrGrass: ; c810
 	ld hl, wd1ec
 	ld a, [hli]
 	ld h, [hl]
@@ -4846,26 +4756,26 @@
 	xor a
 	ld [hBGMapMode], a
 	call Function2173
-	call Function1ad2
+	call DrawOnMap
 	call DelayFrame
 	ld a, [wd1ef]
 	ld e, a
 	callba Function8c940
-	call Function2879
+	call BufferScreen
 	call Function2914
-	call Function1ad2
+	call DrawOnMap
 	call DelayFrame
 	call Functione51
 	ret
 ; c840
 
-Functionc840: ; c840
+CheckOverworldTileArrays: ; c840
 	push bc
 	ld a, [wd199]
 	ld de, 3
 	call IsInArray
 	pop bc
-	jr nc, .asm_c860
+	jr nc, .nope
 	inc hl
 	ld a, [hli]
 	ld h, [hl]
@@ -4873,7 +4783,7 @@
 	ld de, 3
 	ld a, c
 	call IsInArray
-	jr nc, .asm_c860
+	jr nc, .nope
 	inc hl
 	ld b, [hl]
 	inc hl
@@ -4881,21 +4791,23 @@
 	scf
 	ret
 
-.asm_c860
+.nope
 	xor a
 	ret
 ; c862
 
-Unknown_c862: ; c862
-	dbw $01, Unknown_c872
-	dbw $02, Unknown_c882
-	dbw $03, Unknown_c886
-	dbw $19, Unknown_c899
-	dbw $1f, Unknown_c8a0
+CutTreeBlockPointers: ; c862
+; Which tileset are we in?
+	dbw $01, .one
+	dbw $02, .two
+	dbw $03, .three
+	dbw $19, .twentyfive
+	dbw $1f, .thirtyone
 	db -1
 ; c872
 
-Unknown_c872: ; c872
+.one: ; Johto OW
+; Which meta tile are we facing, which should we replace it with, and does it affect encounters?
 	db $03, $02, $01
 	db $5b, $3c, $00
 	db $5f, $3d, $00
@@ -4904,12 +4816,12 @@
 	db -1
 ; c882
 
-Unknown_c882: ; c882
+.two: ; Goldenrod area
 	db $03, $02, $01
 	db -1
 ; c886
 
-Unknown_c886: ; c886
+.three: ; Kanto OW
 	db $0b, $0a, $01
 	db $32, $6d, $00
 	db $33, $6c, $00
@@ -4919,23 +4831,23 @@
 	db -1
 ; c899
 
-Unknown_c899: ; c899
+.twentyfive: ; National Park
 	db $13, $03, $01
 	db $03, $04, $01
 	db -1
 ; c8a0
 
-Unknown_c8a0: ; c8a0
+.thirtyone: ; Ilex Forest
 	db $0f, $17, $00
 	db -1
 ; c8a4
 
-Unknown_c8a4: ; c8a4
-	dbw $01, Unknown_c8a8
+WhirlpoolBlockPointers: ; c8a4
+	dbw $01, .one
 	db -1
 ; c8a8
 
-Unknown_c8a8: ; c8a8
+.one: ; c8a8
 	db $07, $36, $00
 	db -1
 ; c8ac
@@ -4951,40 +4863,40 @@
 ; Flash
 	ld de, ENGINE_ZEPHYRBADGE
 	callba CheckBadge
-	jr c, .asm_c8dd
+	jr c, .nozephyrbadge
 	push hl
-	callba Function8ae30
+	callba SpecialAerodactylChamber
 	pop hl
-	jr c, .asm_c8d1
+	jr c, .useflash
 	ld a, [wd847]
-	cp $ff
-	jr nz, .asm_c8d7
+	cp -1
+	jr nz, .notadarkcave
 
-.asm_c8d1
-	call Functionc8e0
+.useflash
+	call UseFlash
 	ld a, $81
 	ret
 
-.asm_c8d7
-	call Functionc779
+.notadarkcave
+	call FieldMoveFailed
 	ld a, $80
 	ret
 
-.asm_c8dd
+.nozephyrbadge
 	ld a, $80
 	ret
 ; c8e0
 
-Functionc8e0: ; c8e0
-	ld hl, UnknownScript_0xc8e6
-	jp Function31cd
+UseFlash: ; c8e0
+	ld hl, Script_UseFlash
+	jp ExitMenuCallScript
 ; c8e6
 
-UnknownScript_0xc8e6: ; 0xc8e6
+Script_UseFlash: ; 0xc8e6
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xc8f3
-	callasm Function8c7e1
+	callasm BlindingFlash
 	loadmovesprites
 	end
 ; 0xc8f3
@@ -5007,12 +4919,12 @@
 	db "@"
 ; 0xc909
 
-Functionc909: ; c909
-	call Functionc6ea
-.asm_c90c
-	ld hl, Jumptable_c91a
-	call Functionc6f5
-	jr nc, .asm_c90c
+SurfFunction: ; c909
+	call ClearBuffer1
+.loop
+	ld hl, .Jumptable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
@@ -5019,68 +4931,68 @@
 ; c91a
 
 
-Jumptable_c91a: ; c91a (3:491a)
-	dw Functionc922
-	dw Functionc95f
-	dw Functionc971
-	dw Functionc97a
+.Jumptable: ; c91a (3:491a)
+	dw .TrySurf
+	dw .DoSurf
+	dw .FailSurf
+	dw .AlreadySurfing
 
 
-Functionc922: ; c922 (3:4922)
+.TrySurf: ; c922 (3:4922)
 	ld de, ENGINE_FOGBADGE
 	call CheckBadge
 	jr c, .asm_c956
 	ld hl, BikeFlags
 	bit 1, [hl] ; always on bike
-	jr nz, .asm_c95c
+	jr nz, .cannotsurf
 	ld a, [PlayerState]
 	cp PLAYER_SURF
-	jr z, .asm_c959
+	jr z, .alreadysurfing
 	cp PLAYER_SURF_PIKA
-	jr z, .asm_c959
+	jr z, .alreadysurfing
 	call GetFacingTileCoord
 	call GetTileCollision
 	cp $1
-	jr nz, .asm_c95c
+	jr nz, .cannotsurf
 	call CheckDirection
-	jr c, .asm_c95c
+	jr c, .cannotsurf
 	callba CheckFacingObject
-	jr c, .asm_c95c
+	jr c, .cannotsurf
 	ld a, $1
 	ret
 .asm_c956
 	ld a, $80
 	ret
-.asm_c959
+.alreadysurfing
 	ld a, $3
 	ret
-.asm_c95c
+.cannotsurf
 	ld a, $2
 	ret
 
-Functionc95f: ; c95f (3:495f)
+.DoSurf: ; c95f (3:495f)
 	call GetSurfType
 	ld [Buffer2], a ; wd1eb (aliases: MovementType)
 	call GetPartyNick
-	ld hl, UnknownScript_0xc983
-	call Function31cd
+	ld hl, SurfFromMenuScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-Functionc971: ; c971 (3:4971)
+.FailSurf: ; c971 (3:4971)
 	ld hl, CantSurfText
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 
-Functionc97a: ; c97a (3:497a)
+.AlreadySurfing: ; c97a (3:497a)
 	ld hl, AlreadySurfingText
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; c983 (3:4983)
 
-UnknownScript_0xc983: ; c983
+SurfFromMenuScript: ; c983
 	special UpdateTimePals
 
 UsedSurfScript: ; c986
@@ -5093,11 +5005,11 @@
 	copybytetovar Buffer2
 	writevarcode VAR_MOVEMENT
 
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	special PlayMapMusic
 ; step into the water
 	special Function8379 ; (slow_step_x, step_end)
-	applymovement 0, MovementBuffer ; PLAYER, MovementBuffer
+	applymovement $0, MovementBuffer ; PLAYER, MovementBuffer
 	end
 ; c9a2
 
@@ -5239,11 +5151,11 @@
 ; ca3b
 
 
-Functionca3b: ; ca3b
-	call Functionc6ea
+FlyFunction: ; ca3b
+	call ClearBuffer1
 .asm_ca3e
 	ld hl, .data_ca4c
-	call Functionc6f5
+	call FieldMoveJumptable
 	jr nc, .asm_ca3e
 	and $7f
 	ld [wd0ec], a
@@ -5251,40 +5163,40 @@
 ; ca4c
 
 .data_ca4c
- 	dw Functionca52
- 	dw Functionca94
- 	dw Functionca9d
+ 	dw .TryFly
+ 	dw .DoFly
+ 	dw .FailFly
 ; ca52
 
 
-Functionca52: ; ca52
+.TryFly: ; ca52
 ; Fly
 	ld de, ENGINE_STORMBADGE
 	call CheckBadge
-	jr c, .asm_ca85
+	jr c, .nostormbadge
 	call GetMapPermission
 	call CheckOutdoorMap
-	jr z, .asm_ca64
+	jr z, .outdoors
 	jr .indoors
 
-.asm_ca64
+.outdoors
 	xor a
 	ld [$ffde], a
 	call Function1d6e
 	call ClearSprites
-	callba Function91af3
+	callba _FlyMap
 	ld a, e
 	cp -1
-	jr z, .asm_ca8b
+	jr z, .illegal
 	cp $1c ; NUM_SPAWNS
-	jr nc, .asm_ca8b
+	jr nc, .illegal
 
 	ld [wd001], a
-	call Function1c17
+	call WriteBackup
 	ld a, $1
 	ret
 
-.asm_ca85
+.nostormbadge
 	ld a, $82
 	ret
 
@@ -5292,34 +5204,34 @@
 	ld a, $2
 	ret
 
-.asm_ca8b
-	call Function1c17
+.illegal
+	call WriteBackup
 	call WaitBGMap
 	ld a, $80
 	ret
 ; ca94
 
-Functionca94: ; ca94
-	ld hl, UnknownScript_0xcaa3
-	call Function31cd
+.DoFly: ; ca94
+	ld hl, .FlyScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; ca9d
 
-Functionca9d: ; ca9d
-	call Functionc779
+.FailFly: ; ca9d
+	call FieldMoveFailed
 	ld a, $82
 	ret
 ; caa3
 
-UnknownScript_0xcaa3: ; 0xcaa3
+.FlyScript: ; 0xcaa3
 	reloadmappart
 	callasm HideSprites
 	special UpdateTimePals
 	callasm Function8caed
 	farscall UnknownScript_0x122c1
-	special Function97c28
-	callasm Function154f1
+	special WarpToSpawnPoint
+	callasm DelayLoadingNewSprites
 	writecode VAR_MOVEMENT, $0
 	newloadmap $fc
 	callasm Function8cb33
@@ -5331,58 +5243,58 @@
 Functioncacb: ; cacb
 	callba Function561d
 	call DelayFrame
-	call Functione4a
+	call Special_ReplaceKrisSprite
 	callba Function106594
 	ret
 ; cade
 
 Functioncade: ; cade
-	call Functioncae7
+	call AttemptToWaterfall
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cae7
 
-Functioncae7: ; cae7
+AttemptToWaterfall: ; cae7
 ; Waterfall
 	ld de, ENGINE_RISINGBADGE
 	callba CheckBadge
 	ld a, $80
 	ret c
-	call Functioncb07
-	jr c, .asm_cb01
-	ld hl, UnknownScript_0xcb1c
-	call Function31cd
+	call CheckMapCanWaterfall
+	jr c, .failed
+	ld hl, Script_WaterfallFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-.asm_cb01
-	call Functionc779
+.failed
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; cb07
 
-Functioncb07: ; cb07
+CheckMapCanWaterfall: ; cb07
 	ld a, [PlayerDirection]
 	and $c
 	cp FACE_UP
-	jr nz, .asm_cb1a
+	jr nz, .failed
 	ld a, [TileUp]
 	call CheckWaterfallTile
-	jr nz, .asm_cb1a
+	jr nz, .failed
 	xor a
 	ret
 
-.asm_cb1a
+.failed
 	scf
 	ret
 ; cb1c
 
-UnknownScript_0xcb1c: ; 0xcb1c
+Script_WaterfallFromMenu: ; 0xcb1c
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xcb20: ; 0xcb20
+Script_UsedWaterfall: ; 0xcb20
 	callasm GetPartyNick
 	writetext UnknownText_0xcb51
 	closetext
@@ -5390,12 +5302,12 @@
 	playsound SFX_BUBBLEBEAM
 .loop
 	applymovement $0, WaterfallStep
-	callasm Functioncb38
+	callasm CheckContinueWaterfall
 	iffalse .loop
 	end
 ; 0xcb38
 
-Functioncb38: ; cb38
+CheckContinueWaterfall: ; cb38
 	xor a
 	ld [ScriptVar], a
 	ld a, [StandingTile]
@@ -5420,27 +5332,27 @@
 TryWaterfallOW:: ; cb56
 	ld d, WATERFALL
 	call CheckPartyMove
-	jr c, .asm_cb74
+	jr c, .failed
 	ld de, ENGINE_RISINGBADGE
 	call CheckEngineFlag
-	jr c, .asm_cb74
-	call Functioncb07
-	jr c, .asm_cb74
-	ld a, BANK(UnknownScript_0xcb86)
-	ld hl, UnknownScript_0xcb86
+	jr c, .failed
+	call CheckMapCanWaterfall
+	jr c, .failed
+	ld a, BANK(Script_AskWaterfall)
+	ld hl, Script_AskWaterfall
 	call CallScript
 	scf
 	ret
 
-.asm_cb74
-	ld a, BANK(UnknownScript_0xcb7e)
-	ld hl, UnknownScript_0xcb7e
+.failed
+	ld a, BANK(Script_CantDoWaterfall)
+	ld hl, Script_CantDoWaterfall
 	call CallScript
 	scf
 	ret
 ; cb7e
 
-UnknownScript_0xcb7e: ; 0xcb7e
+Script_CantDoWaterfall: ; 0xcb7e
 	jumptext UnknownText_0xcb81
 ; 0xcb81
 
@@ -5449,11 +5361,11 @@
 	db "@"
 ; 0xcb86
 
-UnknownScript_0xcb86: ; 0xcb86
+Script_AskWaterfall: ; 0xcb86
 	loadfont
 	writetext UnknownText_0xcb90
 	yesorno
-	iftrue UnknownScript_0xcb20
+	iftrue Script_UsedWaterfall
 	loadmovesprites
 	end
 ; 0xcb90
@@ -5464,89 +5376,89 @@
 ; 0xcb95
 
 
-Functioncb95: ; cb95
-	call Functionc6ea
+EscapeRopeFunction: ; cb95
+	call ClearBuffer1
 	ld a, $1
-	jr asm_cba1
+	jr dig_incave
 
-Functioncb9c: ; cb9c
-	call Functionc6ea
+DigFunction: ; cb9c
+	call ClearBuffer1
 	ld a, $2
 
-asm_cba1
+dig_incave
 	ld [Buffer2], a
-.asm_cba4
-	ld hl, Tablecbb2
-	call Functionc6f5
-	jr nc, .asm_cba4
+.loop
+	ld hl, .DigTable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cbb2
 
-Tablecbb2: ; cbb2
-	dw Functioncbb8
-	dw Functioncbd8
-	dw Functioncc06
+.DigTable: ; cbb2
+	dw .CheckCanDig
+	dw .DoDig
+	dw .FailDig
 ; cbb8
 
-Functioncbb8: ; cbb8
+.CheckCanDig: ; cbb8
 	call GetMapPermission
 	cp $4
-	jr z, .asm_cbc6
+	jr z, .incave
 	cp $7
-	jr z, .asm_cbc6
-.asm_cbc3
+	jr z, .incave
+.fail
 	ld a, $2
 	ret
 
-.asm_cbc6
+.incave
 	ld hl, wdca9
 	ld a, [hli]
 	and a
-	jr z, .asm_cbc3
+	jr z, .fail
 	ld a, [hli]
 	and a
-	jr z, .asm_cbc3
+	jr z, .fail
 	ld a, [hl]
 	and a
-	jr z, .asm_cbc3
+	jr z, .fail
 	ld a, $1
 	ret
 ; cbd8
 
-Functioncbd8: ; cbd8
+.DoDig: ; cbd8
 	ld hl, wdca9
 	ld de, wd146
-	ld bc, $0003
+	ld bc, 3
 	call CopyBytes
 	call GetPartyNick
 	ld a, [Buffer2]
 	cp $2
-	jr nz, .asm_cbf7
-	ld hl, UnknownScript_0xcc35
-	call Function31cd
+	jr nz, .escaperope
+	ld hl, UsedDigScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-.asm_cbf7
-	callba Function8ae4e
-	ld hl, UnknownScript_0xcc2b
-	call Function31cd
+.escaperope
+	callba SpecialKabutoChamber
+	ld hl, UsedEscapeRopeScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cc06
 
-Functioncc06: ; cc06
+.FailDig: ; cc06
 	ld a, [Buffer2]
 	cp $2
-	jr nz, .asm_cc19
+	jr nz, .failescaperope
 	ld hl, UnknownText_0xcc26
-	call Function1d4f
+	call MenuTextBox
 	call Functiona80
-	call Function1c17
+	call WriteBackup
 
-.asm_cc19
+.failescaperope
 	ld a, $80
 	ret
 ; cc1c
@@ -5569,25 +5481,25 @@
 	db "@"
 ; 0xcc2b
 
-UnknownScript_0xcc2b: ; 0xcc2b
+UsedEscapeRopeScript: ; 0xcc2b
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xcc21
-	jump UnknownScript_0xcc3c
+	jump UsedDigOrEscapeRopeScript
 ; 0xcc35
 
-UnknownScript_0xcc35: ; 0xcc35
+UsedDigScript: ; 0xcc35
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xcc1c
 
-UnknownScript_0xcc3c: ; 0xcc3c
+UsedDigOrEscapeRopeScript: ; 0xcc3c
 	closetext
 	loadmovesprites
 	playsound SFX_WARP_TO
 	applymovement $0, MovementData_0xcc59
 	farscall UnknownScript_0x122c1
-	special Function97c28
+	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
 	newloadmap $f5
 	playsound SFX_WARP_FROM
@@ -5603,62 +5515,62 @@
 ; 0xcc5d
 
 MovementData_0xcc5d: ; 0xcc5d
-	db $3c, $58
+	return_dig $58
 	turn_away_down
 	step_end
 ; 0xcc61
 
-Functioncc61: ; cc61
-	call Functionc6ea
-.asm_cc64
-	ld hl, Tablecc72
-	call Functionc6f5
-	jr nc, .asm_cc64
+TeleportFunction: ; cc61
+	call ClearBuffer1
+.loop
+	ld hl, .Jumptable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cc72
 
-Tablecc72: ; cc72
-	dw Functioncc78
-	dw Functioncc9c
-	dw Functioncca8
+.Jumptable: ; cc72
+	dw .TryTeleport
+	dw .DoTeleport
+	dw .FailTeleport
 ; cc78
 
-Functioncc78: ; cc78
+.TryTeleport: ; cc78
 	call GetMapPermission
 	call CheckOutdoorMap
-	jr z, .asm_cc82
-	jr .asm_cc99
+	jr z, .CheckIfSpawnPoint
+	jr .nope
 
-.asm_cc82
+.CheckIfSpawnPoint
 	ld a, [wdcb2]
 	ld d, a
 	ld a, [wdcb3]
 	ld e, a
 	callba IsSpawnPoint
-	jr nc, .asm_cc99
+	jr nc, .nope
 	ld a, c
 	ld [wd001], a
 	ld a, $1
 	ret
 
-.asm_cc99
+.nope
 	ld a, $2
 	ret
 ; cc9c
 
-Functioncc9c: ; cc9c
+.DoTeleport: ; cc9c
 	call GetPartyNick
-	ld hl, UnknownScript_0xccbb
-	call Function31cd
+	ld hl, Script_UsedTeleport
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cca8
 
-Functioncca8: ; cca8
+.FailTeleport: ; cca8
 	ld hl, UnknownText_0xccb6
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; ccb1
@@ -5675,7 +5587,7 @@
 	db "@"
 ; 0xccbb
 
-UnknownScript_0xccbb: ; 0xccbb
+Script_UsedTeleport: ; 0xccbb
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xccb1
@@ -5685,7 +5597,7 @@
 	playsound SFX_WARP_TO
 	applymovement $0, MovementData_0xcce1
 	farscall UnknownScript_0x122c1
-	special Function97c28
+	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
 	newloadmap $f4
 	playsound SFX_WARP_FROM
@@ -5703,24 +5615,24 @@
 	step_end
 ; cce5
 
-Functioncce5: ; cce5
-	call Functionccee
+StrengthFunction: ; cce5
+	call .TryStrength
 	and $7f
 	ld [wd0ec], a
 	ret
 ; ccee
 
-Functionccee: ; ccee
+.TryStrength: ; ccee
 ; Strength
 	ld de, ENGINE_PLAINBADGE
 	call CheckBadge
-	jr c, Functioncd06
-	jr Functioncd09
+	jr c, FailedStrength
+	jr StartToUseStrength
 ; ccf8
 
-Functionccf8: ; ccf8
+AlreadyUsingStrength: ; ccf8
 	ld hl, UnknownText_0xcd01
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; cd01
@@ -5730,14 +5642,14 @@
 	db "@"
 ; 0xcd06
 
-Functioncd06: ; cd06
+FailedStrength: ; cd06
 	ld a, $80
 	ret
 ; cd09
 
-Functioncd09: ; cd09
-	ld hl, UnknownScript_0xcd29
-	call Function31cd
+StartToUseStrength: ; cd09
+	ld hl, Script_StrengthFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cd12
@@ -5760,11 +5672,11 @@
 	ret
 ; cd29
 
-UnknownScript_0xcd29: ; 0xcd29
+Script_StrengthFromMenu: ; 0xcd29
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xcd2d: ; 0xcd2d
+Script_UsedStrength: ; 0xcd2d
 	callasm Functioncd12
 	writetext UnknownText_0xcd41
 	copybytetovar wd1ef
@@ -5786,25 +5698,25 @@
 ; 0xcd4b
 
 AskStrengthScript:
-	callasm Functioncd78
-	iffalse UnknownScript_0xcd5f
-	if_equal $1, UnknownScript_0xcd59
-	jump UnknownScript_0xcd5c
+	callasm TryStrengthOW
+	iffalse .AskStrength
+	if_equal $1, .DontMeetRequirements
+	jump .AlreadyUsedStrength
 ; 0xcd59
 
-UnknownScript_0xcd59: ; 0xcd59
+.DontMeetRequirements: ; 0xcd59
 	jumptext UnknownText_0xcd73
 ; 0xcd5c
 
-UnknownScript_0xcd5c: ; 0xcd5c
+.AlreadyUsedStrength: ; 0xcd5c
 	jumptext UnknownText_0xcd6e
 ; 0xcd5f
 
-UnknownScript_0xcd5f: ; 0xcd5f
+.AskStrength: ; 0xcd5f
 	loadfont
 	writetext UnknownText_0xcd69
 	yesorno
-	iftrue UnknownScript_0xcd2d
+	iftrue Script_UsedStrength
 	loadmovesprites
 	end
 ; 0xcd69
@@ -5827,41 +5739,41 @@
 	db "@"
 ; 0xcd78
 
-Functioncd78: ; cd78
+TryStrengthOW: ; cd78
 	ld d, STRENGTH
 	call CheckPartyMove
-	jr c, .asm_cd92
+	jr c, .nope
 
 	ld de, ENGINE_PLAINBADGE
 	call CheckEngineFlag
-	jr c, .asm_cd92
+	jr c, .nope
 
 	ld hl, BikeFlags
 	bit 0, [hl]
-	jr z, .asm_cd96
+	jr z, .already_using
 
 	ld a, 2
-	jr .asm_cd99
+	jr .done
 
-.asm_cd92
+.nope
 	ld a, 1
-	jr .asm_cd99
+	jr .done
 
-.asm_cd96
+.already_using
 	xor a
-	jr .asm_cd99
+	jr .done
 
-.asm_cd99
+.done
 	ld [ScriptVar], a
 	ret
 ; cd9d
 
-Functioncd9d: ; cd9d
-	call Functionc6ea
-.asm_cda0
+WhirlpoolFunction: ; cd9d
+	call ClearBuffer1
+.loop
 	ld hl, Jumptable_cdae
-	call Functionc6f5
-	jr nc, .asm_cda0
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
@@ -5868,38 +5780,38 @@
 ; cdae
 
 Jumptable_cdae: ; cdae
-	dw Functioncdb4
-	dw Functioncdca
-	dw Functioncdd3
+	dw .TryWhirlpool
+	dw .DoWhirlpool
+	dw .FailWhirlpool
 ; cdb4
 
-Functioncdb4: ; cdb4
+.TryWhirlpool: ; cdb4
 	ld de, ENGINE_GLACIERBADGE
 	call CheckBadge
-	jr c, .asm_cdc7
-	call Functioncdde
-	jr c, .asm_cdc4
+	jr c, .noglacierbadge
+	call TryWhirlpoolMenu
+	jr c, .failed
 	ld a, $1
 	ret
 
-.asm_cdc4
+.failed
 	ld a, $2
 	ret
 
-.asm_cdc7
+.noglacierbadge
 	ld a, $80
 	ret
 ; cdca
 
-Functioncdca: ; cdca
-	ld hl, UnknownScript_0xce0b
-	call Function31cd
+.DoWhirlpool: ; cdca
+	ld hl, Script_WhirlpoolFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cdd3
 
-Functioncdd3: ; cdd3
-	call Functionc779
+.FailWhirlpool: ; cdd3
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; cdd9
@@ -5910,20 +5822,20 @@
 	db "@"
 ; 0xcdde
 
-Functioncdde: ; cdde
+TryWhirlpoolMenu: ; cdde
 	call GetFacingTileCoord
 	ld c, a
 	push de
 	call CheckWhirlpoolTile
 	pop de
-	jr c, .asm_ce09
-	call Function2a66
+	jr c, .failed
+	call GetBlockLocation
 	ld c, [hl]
 	push hl
-	ld hl, Unknown_c8a4
-	call Functionc840
+	ld hl, WhirlpoolBlockPointers
+	call CheckOverworldTileArrays
 	pop hl
-	jr nc, .asm_ce09
+	jr nc, .failed
 	ld a, l
 	ld [wd1ec], a
 	ld a, h
@@ -5935,25 +5847,25 @@
 	xor a
 	ret
 
-.asm_ce09
+.failed
 	scf
 	ret
 ; ce0b
 
-UnknownScript_0xce0b: ; 0xce0b
+Script_WhirlpoolFromMenu: ; 0xce0b
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xce0f: ; 0xce0f
+Script_UsedWhirlpool: ; 0xce0f
 	callasm GetPartyNick
 	writetext UnknownText_0xcdd9
 	reloadmappart
-	callasm Functionce1d
+	callasm DisappearWhirlpool
 	loadmovesprites
 	end
 ; 0xce1d
 
-Functionce1d: ; ce1d
+DisappearWhirlpool: ; ce1d
 	ld hl, wd1ec
 	ld a, [hli]
 	ld h, [hl]
@@ -5966,7 +5878,7 @@
 	ld a, [wd1ef]
 	ld e, a
 	callba Function8c7d4
-	call Function2879
+	call BufferScreen
 	call Function2914
 	ret
 ; ce3e
@@ -5974,27 +5886,27 @@
 TryWhirlpoolOW:: ; ce3e
 	ld d, WHIRLPOOL
 	call CheckPartyMove
-	jr c, .asm_ce5c
+	jr c, .failed
 	ld de, ENGINE_GLACIERBADGE
 	call CheckEngineFlag
-	jr c, .asm_ce5c
-	call Functioncdde
-	jr c, .asm_ce5c
-	ld a, BANK(UnknownScript_0xce6e)
-	ld hl, UnknownScript_0xce6e
+	jr c, .failed
+	call TryWhirlpoolMenu
+	jr c, .failed
+	ld a, BANK(Script_AskWhirlpoolOW)
+	ld hl, Script_AskWhirlpoolOW
 	call CallScript
 	scf
 	ret
 
-.asm_ce5c
-	ld a, BANK(UnknownScript_0xce66)
-	ld hl, UnknownScript_0xce66
+.failed
+	ld a, BANK(Script_MightyWhirlpool)
+	ld hl, Script_MightyWhirlpool
 	call CallScript
 	scf
 	ret
 ; ce66
 
-UnknownScript_0xce66: ; 0xce66
+Script_MightyWhirlpool: ; 0xce66
 	jumptext UnknownText_0xce69
 ; 0xce69
 
@@ -6003,11 +5915,11 @@
 	db "@"
 ; 0xce6e
 
-UnknownScript_0xce6e: ; 0xce6e
+Script_AskWhirlpoolOW: ; 0xce6e
 	loadfont
 	writetext UnknownText_0xce78
 	yesorno
-	iftrue UnknownScript_0xce0f
+	iftrue Script_UsedWhirlpool
 	loadmovesprites
 	end
 ; 0xce78
@@ -6018,25 +5930,25 @@
 ; 0xce7d
 
 
-Functionce7d: ; ce7d
-	call Functionce86
+HeadbuttFunction: ; ce7d
+	call TryHeadbuttFromMenu
 	and $7f
 	ld [wd0ec], a
 	ret
 ; ce86
 
-Functionce86: ; ce86
+TryHeadbuttFromMenu: ; ce86
 	call GetFacingTileCoord
 	call CheckHeadbuttTreeTile
 	jr nz, .no_tree
 
 	ld hl, HeadbuttFromMenuScript
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
 .no_tree
-	call Functionc779
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; ce9d
@@ -6111,15 +6023,15 @@
 ; 0xceeb
 
 
-Functionceeb: ; ceeb
-	call Functioncef4
+RockSmashFunction: ; ceeb
+	call TryRockSmashFromMenu
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cef4
 
-Functioncef4: ; cef4
-	call Functioncf0d
+TryRockSmashFromMenu: ; cef4
+	call GetFacingObject
 	jr c, .no_rock
 	ld a, d
 	cp $18
@@ -6126,28 +6038,28 @@
 	jr nz, .no_rock
 
 	ld hl, RockSmashFromMenuScript
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
 .no_rock
-	call Functionc779
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; cf0d
 
-Functioncf0d: ; cf0d
+GetFacingObject: ; cf0d
 	callba CheckFacingObject
-	jr nc, .asm_cf2c
+	jr nc, .fail
 
 	ld a, [$ffb0]
-	call Function1ae5
-	ld hl, $0001
+	call GetObjectStruct
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	ld [$ffe0], a
 	call GetMapObject
-	ld hl, $0004
+	ld hl, MAPOBJECT_FACING
 	add hl, bc
 	ld a, [hl]
 	ld d, a
@@ -6154,7 +6066,7 @@
 	and a
 	ret
 
-.asm_cf2c
+.fail
 	scf
 	ret
 ; cf2e
@@ -6171,7 +6083,7 @@
 	playsound SFX_STRENGTH
 	earthquake 84
 	applymovement2 MovementData_0xcf55
-	disappear $fe
+	disappear -2
 
 	callasm RockMonEncounter
 	copybytetovar wd22e
@@ -6233,52 +6145,52 @@
 	ret
 
 
-Functioncf8e: ; cf8e
+FishFunction: ; cf8e
 	ld a, e
 	push af
-	call Functionc6ea
+	call ClearBuffer1
 	pop af
 	ld [Buffer2], a
-.asm_cf97
-	ld hl, Jumptable_cfa5
-	call Functionc6f5
-	jr nc, .asm_cf97
+.loop
+	ld hl, .FishTable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cfa5
 
-Jumptable_cfa5: ; cfa5
-	dw Functioncfaf
-	dw Functiond002
-	dw Functioncff4
-	dw Functioncff1
-	dw Functiond010
+.FishTable: ; cfa5
+	dw .TryFish
+	dw .FishNoBite
+	dw .FishGotSomething
+	dw .SurfingFish
+	dw .FailFish
 ; cfaf
 
-Functioncfaf: ; cfaf
+.TryFish: ; cfaf
 	ld a, [PlayerState]
 	cp PLAYER_SURF
-	jr z, .asm_cfc4
+	jr z, .surfing
 	cp PLAYER_SURF_PIKA
-	jr z, .asm_cfc4
+	jr z, .surfing
 	call GetFacingTileCoord
 	call GetTileCollision
 	cp $1
-	jr z, .asm_cfc7
+	jr z, .facingwater
 
-.asm_cfc4
+.surfing
 	ld a, $3
 	ret
 
-.asm_cfc7
+.facingwater
 	call Function2d19
 	and a
-	jr nz, .asm_cfd0
+	jr nz, .goodtofish
 	ld a, $4
 	ret
 
-.asm_cfd0
+.goodtofish
 	ld d, a
 	ld a, [Buffer2]
 	ld e, a
@@ -6285,7 +6197,7 @@
 	callba FishAction
 	ld a, d
 	and a
-	jr z, .asm_cfee
+	jr z, .nonibble
 	ld [wd22e], a
 	ld a, e
 	ld [CurPartyLevel], a
@@ -6294,76 +6206,76 @@
 	ld a, $2
 	ret
 
-.asm_cfee
+.nonibble
 	ld a, $1
 	ret
 ; cff1
 
-Functioncff1: ; cff1
+.SurfingFish: ; cff1
 	ld a, $80
 	ret
 ; cff4
 
-Functioncff4: ; cff4
+.FishGotSomething: ; cff4
 	ld a, $1
 	ld [wd1ef], a
-	ld hl, UnknownScript_0xd035
-	call Function31cd
+	ld hl, Script_GotABite
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; d002
 
-Functiond002: ; d002
+.FishNoBite: ; d002
 	ld a, $2
 	ld [wd1ef], a
-	ld hl, UnknownScript_0xd01e
-	call Function31cd
+	ld hl, Script_NotEvenANibble
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; d010
 
-Functiond010: ; d010
+.FailFish: ; d010
 	ld a, $0
 	ld [wd1ef], a
-	ld hl, UnknownScript_0xd027
-	call Function31cd
+	ld hl, Script_NotEvenANibble2
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; d01e
 
-UnknownScript_0xd01e: ; 0xd01e
-	scall UnknownScript_0xd07c
+Script_NotEvenANibble: ; 0xd01e
+	scall Script_FishCastRod
 	writetext UnknownText_0xd0a9
-	jump UnknownScript_0xd02d
+	jump Script_NotEvenANibble_FallThrough
 ; 0xd027
 
-UnknownScript_0xd027: ; 0xd027
-	scall UnknownScript_0xd07c
+Script_NotEvenANibble2: ; 0xd027
+	scall Script_FishCastRod
 	writetext UnknownText_0xd0a9
 
-UnknownScript_0xd02d: ; 0xd02d
+Script_NotEvenANibble_FallThrough: ; 0xd02d
 	loademote $8
-	callasm Functiond095
+	callasm PutTheRodAway
 	loadmovesprites
 	end
 ; 0xd035
 
-UnknownScript_0xd035: ; 0xd035
-	scall UnknownScript_0xd07c
-	callasm Functiond06c
-	iffalse UnknownScript_0xd046
+Script_GotABite: ; 0xd035
+	scall Script_FishCastRod
+	callasm Fishing_CheckFacingUp
+	iffalse .FacingUp
 	applymovement $0, MovementData_0xd062
-	jump UnknownScript_0xd04a
+	jump .FightTheHookedPokemon
 ; 0xd046
 
-UnknownScript_0xd046: ; 0xd046
+.FacingUp: ; 0xd046
 	applymovement $0, MovementData_0xd05c
 
-UnknownScript_0xd04a: ; 0xd04a
+.FightTheHookedPokemon: ; 0xd04a
 	pause 40
 	applymovement $0, MovementData_0xd069
 	writetext UnknownText_0xd0a4
-	callasm Functiond095
+	callasm PutTheRodAway
 	loadmovesprites
 	battlecheck
 	startbattle
@@ -6372,19 +6284,19 @@
 ; 0xd05c
 
 MovementData_0xd05c: ; d05c
-	db $51
-	db $51
-	db $51
-	db $51
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
 	show_emote
 	step_end
 ; d062
 
 MovementData_0xd062: ; d062
-	db $51
-	db $51
-	db $51
-	db $51
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
 	show_person
 	show_emote
 	step_end
@@ -6392,24 +6304,24 @@
 
 MovementData_0xd069: ; d069
 	hide_emote
-	db $52
+	fish_got_bite_2
 	step_end
 ; d06c
 
-Functiond06c: ; d06c
+Fishing_CheckFacingUp: ; d06c
 	ld a, [PlayerDirection]
 	and $c
 	cp $4
 	ld a, $1
-	jr z, .asm_d078
+	jr z, .up
 	xor a
 
-.asm_d078
+.up
 	ld [ScriptVar], a
 	ret
 ; d07c
 
-UnknownScript_0xd07c: ; 0xd07c
+Script_FishCastRod: ; 0xd07c
 	reloadmappart
 	loadvar $ffd4, $0
 	special UpdateTimePals
@@ -6426,13 +6338,13 @@
 	step_end
 ; d095
 
-Functiond095: ; d095
+PutTheRodAway: ; d095
 	xor a
 	ld [hBGMapMode], a
 	ld a, $1
 	ld [PlayerAction], a
-	call Function1ad2
-	call Functione4a
+	call DrawOnMap
+	call Special_ReplaceKrisSprite
 	ret
 ; d0a4
 
@@ -6454,28 +6366,28 @@
 	db "@"
 ; 0xd0b3
 
-Functiond0b3: ; d0b3
-	call Functiond0bc
+BikeFunction: ; d0b3
+	call .TryBike
 	and $7f
 	ld [wd0ec], a
 	ret
 ; d0bc
 
-Functiond0bc: ; d0bc
-	call Functiond121
-	jr c, .asm_d110
+.TryBike: ; d0bc
+	call .CheckEnvironment
+	jr c, .CannotUseBike
 	ld a, [PlayerState]
 	cp PLAYER_NORMAL
-	jr z, .asm_d0ce
+	jr z, .GetOnBike
 	cp PLAYER_BIKE
-	jr z, .asm_d0f7
-	jr .asm_d110
+	jr z, .GetOffBike
+	jr .CannotUseBike
 
-.asm_d0ce
-	ld hl, UnknownScript_0xd13e
-	ld de, UnknownScript_0xd14e
-	call Functiond119
-	call Function31cd
+.GetOnBike
+	ld hl, Script_GetOnBike
+	ld de, Script_GetOnBike_Register
+	call .CheckIfRegistered
+	call ExitMenuCallScript
 	xor a
 	ld [MusicFade], a
 	ld de, MUSIC_NONE
@@ -6489,31 +6401,31 @@
 	ld a, $1
 	ret
 
-.asm_d0f7
+.GetOffBike
 	ld hl, BikeFlags
 	bit 1, [hl]
-	jr nz, .asm_d10b
-	ld hl, UnknownScript_0xd158
-	ld de, UnknownScript_0xd16b
-	call Functiond119
+	jr nz, .CantGetOffBike
+	ld hl, Script_GetOffBike
+	ld de, Script_GetOffBike_Register
+	call .CheckIfRegistered
 	ld a, $3
-	jr .asm_d113
+	jr .done
 
-.asm_d10b
+.CantGetOffBike
 	ld hl, UnknownScript_0xd171
-	jr .asm_d113
+	jr .done
 
-.asm_d110
+.CannotUseBike
 	ld a, $0
 	ret
 
-.asm_d113
-	call Function31cd
+.done
+	call ExitMenuCallScript
 	ld a, $1
 	ret
 ; d119
 
-Functiond119: ; d119
+.CheckIfRegistered: ; d119
 	ld a, [wd0ef]
 	and a
 	ret z
@@ -6522,29 +6434,29 @@
 	ret
 ; d121
 
-Functiond121: ; d121
+.CheckEnvironment: ; d121
 	call GetMapPermission
 	call CheckOutdoorMap
-	jr z, .asm_d133
+	jr z, .ok
 	cp CAVE
-	jr z, .asm_d133
+	jr z, .ok
 	cp GATE
-	jr z, .asm_d133
-	jr .asm_d13c
+	jr z, .ok
+	jr .nope
 
-.asm_d133
+.ok
 	call Function184a
 	and $f
-	jr nz, .asm_d13c
+	jr nz, .nope
 	xor a
 	ret
 
-.asm_d13c
+.nope
 	scf
 	ret
 ; d13e
 
-UnknownScript_0xd13e: ; 0xd13e
+Script_GetOnBike: ; 0xd13e
 	reloadmappart
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, $1
@@ -6551,14 +6463,14 @@
 	writetext UnknownText_0xd17c
 	closetext
 	loadmovesprites
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	end
 ; 0xd14e
 
-UnknownScript_0xd14e: ; 0xd14e
+Script_GetOnBike_Register: ; 0xd14e
 	writecode VAR_MOVEMENT, $1
 	loadmovesprites
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	end
 ; 0xd156
 
@@ -6566,7 +6478,7 @@
 	nop
 	ret
 
-UnknownScript_0xd158: ; 0xd158
+Script_GetOffBike: ; 0xd158
 	reloadmappart
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, $0
@@ -6575,12 +6487,12 @@
 
 UnknownScript_0xd163:
 	loadmovesprites
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	special PlayMapMusic
 	end
 ; 0xd16b
 
-UnknownScript_0xd16b: ; 0xd16b
+Script_GetOffBike_Register: ; 0xd16b
 	writecode VAR_MOVEMENT, $0
 	jump UnknownScript_0xd163
 ; 0xd171
@@ -6639,17 +6551,17 @@
 	writetext UnknownText_0xd1c8
 	yesorno
 	iffalse .script_d1b8
-	callasm Functiond1ba
-	iftrue UnknownScript_0xc802
+	callasm .CheckMap
+	iftrue Script_Cut
 .script_d1b8
 	loadmovesprites
 	end
 ; 0xd1ba
 
-Functiond1ba: ; d1ba
+.CheckMap: ; d1ba
 	xor a
 	ld [ScriptVar], a
-	call Functionc7ce
+	call CheckMapForSomethingToCut
 	ret c
 	ld a, 1
 	ld [ScriptVar], a
@@ -6672,54 +6584,54 @@
 
 
 _ReceiveItem:: ; d1d5
-	call Functiond27b
-	jp nz, Functiond29c
+	call CheckHLequTMsHMsEnd
+	jp nz, PutItemInPocket
 	push hl
 	call CheckItemPocket
 	pop de
 	ld a, [wd142]
 	dec a
-	ld hl, Tabled1e9
+	ld hl, .Pockets
 	rst JumpTable
 	ret
 ; d1e9
 
-Tabled1e9: ; d1e9
-	dw Functiond1f1
-	dw Functiond1f6
-	dw Functiond1fb
-	dw Functiond201
+.Pockets: ; d1e9
+	dw .Item
+	dw .KeyItem
+	dw .Ball
+	dw .TMHM
 ; d1f1
 
-Functiond1f1: ; d1f1
+.Item: ; d1f1
 	ld h, d
 	ld l, e
-	jp Functiond29c
+	jp PutItemInPocket
 ; d1f6
 
-Functiond1f6: ; d1f6
+.KeyItem: ; d1f6
 	ld h, d
 	ld l, e
-	jp Functiond35a
+	jp ReceiveKeyItem
 ; d1fb
 
-Functiond1fb: ; d1fb
+.Ball: ; d1fb
 	ld hl, NumBalls
-	jp Functiond29c
+	jp PutItemInPocket
 ; d201
 
-Functiond201: ; d201
+.TMHM: ; d201
 	ld h, d
 	ld l, e
 	ld a, [CurItem]
 	ld c, a
 	call GetTMHMNumber
-	jp Functiond3c4
+	jp ReceiveTMHM
 ; d20d
 
 
 _TossItem:: ; d20d
-	call Functiond27b
+	call CheckHLequTMsHMsEnd
 	jr nz, .asm_d241
 	push hl
 	call CheckItemPocket
@@ -6726,11 +6638,11 @@
 	pop de
 	ld a, [wd142]
 	dec a
-	ld hl, .data_d220
+	ld hl, .Pockets
 	rst JumpTable
 	ret
 
-.data_d220
+.Pockets
 	dw .Item
 	dw .KeyItem
 	dw .Ball
@@ -6739,7 +6651,7 @@
 
 .Ball ; d228
 	ld hl, NumBalls
-	jp Functiond2ff
+	jp RemoveItemFromPocket
 ; d22e
 
 .TMHM ; d22e
@@ -6748,13 +6660,13 @@
 	ld a, [CurItem]
 	ld c, a
 	call GetTMHMNumber
-	jp Functiond3d8
+	jp TossTMHM
 ; d23a
 
 .KeyItem ; d23a
 	ld h, d
 	ld l, e
-	jp Functiond374
+	jp TossKeyItem
 ; d23f
 
 .Item ; d23f
@@ -6763,11 +6675,11 @@
 ; d241
 
 .asm_d241
-	jp Functiond2ff
+	jp RemoveItemFromPocket
 ; d244
 
 _CheckItem:: ; d244
-	call Functiond27b
+	call CheckHLequTMsHMsEnd
 	jr nz, .asm_d278
 	push hl
 	call CheckItemPocket
@@ -6774,11 +6686,11 @@
 	pop de
 	ld a, [wd142]
 	dec a
-	ld hl, .data_d257
+	ld hl, .Pockets
 	rst JumpTable
 	ret
 
-.data_d257
+.Pockets
 	dw .Item
 	dw .KeyItem
 	dw .Ball
@@ -6787,7 +6699,7 @@
 
 .Ball ; d25f
 	ld hl, NumBalls
-	jp Functiond349
+	jp CheckTheItem
 ; d265
 
 .TMHM ; d265
@@ -6796,13 +6708,13 @@
 	ld a, [CurItem]
 	ld c, a
 	call GetTMHMNumber
-	jp Functiond3fb
+	jp CheckTMHM
 ; d271
 
 .KeyItem ; d271
 	ld h, d
 	ld l, e
-	jp Functiond3b1
+	jp CheckKeyItems
 ; d276
 
 .Item ; d276
@@ -6811,10 +6723,10 @@
 ; d278
 
 .asm_d278
-	jp Functiond349
+	jp CheckTheItem
 ; d27b
 
-Functiond27b: ; d27b
+CheckHLequTMsHMsEnd: ; d27b
 	ld a, l
 	cp TMsHMsEnd % $100
 	ret nz
@@ -6846,7 +6758,7 @@
 	ret
 ; d29c
 
-Functiond29c: ; d29c
+PutItemInPocket: ; d29c
 	ld d, h
 	ld e, l
 	inc hl
@@ -6853,34 +6765,34 @@
 	ld a, [CurItem]
 	ld c, a
 	ld b, 0
-.asm_d2a5
+.loop
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_d2bd
+	cp -1
+	jr z, .terminator
 	cp c
-	jr nz, .asm_d2ba
-	ld a, $63
+	jr nz, .next
+	ld a, 99
 	sub [hl]
 	add b
 	ld b, a
 	ld a, [wd10c]
 	cp b
-	jr z, .asm_d2c6
-	jr c, .asm_d2c6
+	jr z, .ok
+	jr c, .ok
 
-.asm_d2ba
+.next
 	inc hl
-	jr .asm_d2a5
+	jr .loop
 
-.asm_d2bd
+.terminator
 	call GetPocketCapacity
 	ld a, [de]
 	cp c
-	jr c, .asm_d2c6
+	jr c, .ok
 	and a
 	ret
 
-.asm_d2c6
+.ok
 	ld h, d
 	ld l, e
 	ld a, [CurItem]
@@ -6887,43 +6799,43 @@
 	ld c, a
 	ld a, [wd10c]
 	ld [wd10d], a
-.asm_d2d2
+.loop2
 	inc hl
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_d2ef
+	cp -1
+	jr z, .terminator2
 	cp c
-	jr nz, .asm_d2d2
+	jr nz, .loop2
 	ld a, [wd10d]
 	add [hl]
-	cp $64
-	jr nc, .asm_d2e6
+	cp 100
+	jr nc, .newstack
 	ld [hl], a
-	jr .asm_d2fd
+	jr .done
 
-.asm_d2e6
-	ld [hl], $63
-	sub $63
+.newstack
+	ld [hl], 99
+	sub 99
 	ld [wd10d], a
-	jr .asm_d2d2
+	jr .loop2
 
-.asm_d2ef
+.terminator2
 	dec hl
 	ld a, [CurItem]
 	ld [hli], a
 	ld a, [wd10d]
 	ld [hli], a
-	ld [hl], $ff
+	ld [hl], -1
 	ld h, d
 	ld l, e
 	inc [hl]
 
-.asm_d2fd
+.done
 	scf
 	ret
 ; d2ff
 
-Functiond2ff: ; d2ff
+RemoveItemFromPocket: ; d2ff
 	ld d, h
 	ld e, l
 	ld a, [hli]
@@ -6930,150 +6842,152 @@
 	ld c, a
 	ld a, [wd107]
 	cp c
-	jr nc, .asm_d318
+	jr nc, .ok
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [CurItem]
 	cp [hl]
 	inc hl
-	jr z, .asm_d327
+	jr z, .skip
 	ld h, d
 	ld l, e
 	inc hl
 
-.asm_d318
+.ok
 	ld a, [CurItem]
 	ld b, a
-.asm_d31c
+.loop
 	ld a, [hli]
 	cp b
-	jr z, .asm_d327
-	cp $ff
-	jr z, .asm_d347
+	jr z, .skip
+	cp -1
+	jr z, .nope
 	inc hl
-	jr .asm_d31c
+	jr .loop
 
-.asm_d327
+.skip
 	ld a, [wd10c]
 	ld b, a
 	ld a, [hl]
 	sub b
-	jr c, .asm_d347
+	jr c, .nope
 	ld [hl], a
 	ld [wd10d], a
 	and a
-	jr nz, .asm_d345
+	jr nz, .yup
 	dec hl
 	ld b, h
 	ld c, l
+rept 2
 	inc hl
-	inc hl
-.asm_d33b
+endr
+.loop2
 	ld a, [hli]
 	ld [bc], a
 	inc bc
-	cp $ff
-	jr nz, .asm_d33b
+	cp -1
+	jr nz, .loop2
 	ld h, d
 	ld l, e
 	dec [hl]
 
-.asm_d345
+.yup
 	scf
 	ret
 
-.asm_d347
+.nope
 	and a
 	ret
 ; d349
 
-Functiond349: ; d349
+CheckTheItem: ; d349
 	ld a, [CurItem]
 	ld c, a
-.asm_d34d
+.loop
 	inc hl
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_d358
+	cp -1
+	jr z, .done
 	cp c
-	jr nz, .asm_d34d
+	jr nz, .loop
 	scf
 	ret
 
-.asm_d358
+.done
 	and a
 	ret
 ; d35a
 
-Functiond35a: ; d35a
+ReceiveKeyItem: ; d35a
 	ld hl, NumKeyItems
 	ld a, [hli]
-	cp $19
-	jr nc, .asm_d372
+	cp MAX_KEY_ITEMS
+	jr nc, .nope
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, [CurItem]
 	ld [hli], a
-	ld [hl], $ff
+	ld [hl], -1
 	ld hl, NumKeyItems
 	inc [hl]
 	scf
 	ret
 
-.asm_d372
+.nope
 	and a
 	ret
 ; d374
 
-Functiond374: ; d374
+TossKeyItem: ; d374
 	ld a, [wd107]
 	ld e, a
-	ld d, $0
+	ld d, 0
 	ld hl, NumKeyItems
 	ld a, [hl]
 	cp e
-	jr nc, .asm_d387
-	call Functiond396
+	jr nc, .ok
+	call .Toss
 	ret nc
-	jr .asm_d38a
+	jr .ok2
 
-.asm_d387
+.ok
 	dec [hl]
 	inc hl
 	add hl, de
 
-.asm_d38a
+.ok2
 	ld d, h
 	ld e, l
 	inc hl
-.asm_d38d
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
-	cp $ff
-	jr nz, .asm_d38d
+	cp -1
+	jr nz, .loop
 	scf
 	ret
 ; d396
 
-Functiond396: ; d396
+.Toss: ; d396
 	ld hl, NumKeyItems
 	ld a, [CurItem]
 	ld c, a
-.asm_d39d
+.loop3
 	inc hl
 	ld a, [hl]
 	cp c
-	jr z, .asm_d3a8
-	cp $ff
-	jr nz, .asm_d39d
+	jr z, .ok3
+	cp -1
+	jr nz, .loop3
 	xor a
 	ret
 
-.asm_d3a8
+.ok3
 	ld a, [NumKeyItems]
 	dec a
 	ld [NumKeyItems], a
@@ -7081,20 +6995,20 @@
 	ret
 ; d3b1
 
-Functiond3b1: ; d3b1
+CheckKeyItems: ; d3b1
 	ld a, [CurItem]
 	ld c, a
 	ld hl, KeyItems
-.asm_d3b8
+.loop
 	ld a, [hli]
 	cp c
-	jr z, .asm_d3c2
-	cp $ff
-	jr nz, .asm_d3b8
+	jr z, .done
+	cp -1
+	jr nz, .loop
 	and a
 	ret
 
-.asm_d3c2
+.done
 	scf
 	ret
 ; d3c4
@@ -7101,27 +7015,27 @@
 
 
 
-Functiond3c4: ; d3c4
+ReceiveTMHM: ; d3c4
 	dec c
-	ld b, $0
+	ld b, 0
 	ld hl, TMsHMs
 	add hl, bc
 	ld a, [wd10c]
 	add [hl]
-	cp $64
-	jr nc, .asm_d3d6
+	cp 100
+	jr nc, .toomany
 	ld [hl], a
 	scf
 	ret
 
-.asm_d3d6
+.toomany
 	and a
 	ret
 ; d3d8
 
-Functiond3d8: ; d3d8
+TossTMHM: ; d3d8
 	dec c
-	ld b, $0
+	ld b, 0
 	ld hl, TMsHMs
 	add hl, bc
 	ld a, [wd10c]
@@ -7128,26 +7042,26 @@
 	ld b, a
 	ld a, [hl]
 	sub b
-	jr c, .asm_d3f9
+	jr c, .nope
 	ld [hl], a
 	ld [wd10d], a
-	jr nz, .asm_d3f7
+	jr nz, .yup
 	ld a, [wd0e2]
 	and a
-	jr z, .asm_d3f7
+	jr z, .yup
 	dec a
 	ld [wd0e2], a
 
-.asm_d3f7
+.yup
 	scf
 	ret
 
-.asm_d3f9
+.nope
 	and a
 	ret
 ; d3fb
 
-Functiond3fb: ; d3fb
+CheckTMHM: ; d3fb
 	dec c
 	ld b, $0
 	ld hl, TMsHMs
@@ -7186,7 +7100,7 @@
 GetNumberedTMHM: ; d417
 ; Return the item id of a TM/HM by number c.
 
-	ld a, c 
+	ld a, c
 
 ; Skip any gaps.
 	cp ITEM_C3 - (TM01 - 1)
@@ -7208,7 +7122,7 @@
 
 _CheckTossableItem:: ; d427
 ; Return 1 in wd142 and carry if CurItem can't be removed from the bag.
-	ld a, 4
+	ld a, ITEMATTR_PERMISSIONS
 	call GetItemAttr
 	bit 7, a
 	jr nz, Functiond47f
@@ -7218,7 +7132,7 @@
 
 CheckSelectableItem: ; d432
 ; Return 1 in wd142 and carry if CurItem can't be selected.
-	ld a, 4
+	ld a, ITEMATTR_PERMISSIONS
 	call GetItemAttr
 	bit 6, a
 	jr nz, Functiond47f
@@ -7228,7 +7142,7 @@
 
 CheckItemPocket:: ; d43d
 ; Return the pocket for CurItem in wd142.
-	ld a, 5
+	ld a, ITEMATTR_POCKET
 	call GetItemAttr
 	and $f
 	ld [wd142], a
@@ -7237,7 +7151,7 @@
 
 CheckItemContext: ; d448
 ; Return the context for CurItem in wd142.
-	ld a, 6
+	ld a, ITEMATTR_HELP
 	call GetItemAttr
 	and $f
 	ld [wd142], a
@@ -7246,7 +7160,7 @@
 
 CheckItemMenu: ; d453
 ; Return the menu for CurItem in wd142.
-	ld a, 6
+	ld a, ITEMATTR_HELP
 	call GetItemAttr
 	swap a
 	and $f
@@ -7271,7 +7185,7 @@
 	ld a, [CurItem]
 	dec a
 	ld c, a
-	ld a, 7
+	ld a, NUM_ITEMATTRS
 	call AddNTimes
 	ld a, BANK(ItemAttributes)
 	call GetFarByte
@@ -7293,10 +7207,10 @@
 ; Return the price of CurItem in de.
 	push hl
 	push bc
-	ld a, $0
+	ld a, ITEMATTR_PRICE
 	call GetItemAttr
 	ld e, a
-	ld a, $1
+	ld a, ITEMATTR_PRICE_HI
 	call GetItemAttr
 	ld d, a
 	pop bc
@@ -7364,7 +7278,7 @@
 
 Jumptable_d4f2: ; d4f2 (3:54f2)
 	dw Function2914
-	dw Function2879
+	dw BufferScreen
 	dw Functiond509
 	dw Functiond510
 	dw Functiond508
@@ -7833,9 +7747,10 @@
 .asm_d795
 	push hl
 	add hl, de
-	ld a, $7f
+	ld a, " "
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hld], a
 	dec hl
 	ld a, [wd1ec]
@@ -8118,10 +8033,9 @@
 
 .asm_d950
 	pop de
+rept 4
 	inc de
-	inc de
-	inc de
-	inc de
+endr
 	ld a, [PlayerID]
 	ld [de], a
 	inc de
@@ -8188,15 +8102,15 @@
 	inc de
 	push hl
 	push de
+rept 2
 	inc hl
-	inc hl
+endr
 	call FillPP
 	pop de
 	pop hl
+rept 4
 	inc de
-	inc de
-	inc de
-	inc de
+endr
 	ld a, $46
 	ld [de], a
 	inc de
@@ -8610,8 +8524,9 @@
 	ld a, [CurPartySpecies]
 	cp EGG
 	jr z, .asm_dc9e
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld [de], a
 	ld a, [hl]
@@ -9359,8 +9274,9 @@
 	ld a, c
 	cp $6
 	jr nz, .asm_e193
+rept 2
 	dec hl
-	dec hl
+endr
 
 .asm_e193
 	sla c
@@ -9397,14 +9313,15 @@
 	ld a, [hl]
 	swap a
 	and $1
+rept 3
 	add a
-	add a
-	add a
+endr
 	ld b, a
 	ld a, [hli]
 	and $1
+rept 2
 	add a
-	add a
+endr
 	add b
 	ld b, a
 	ld a, [hl]
@@ -9529,7 +9446,7 @@
 	ret
 ; e277
 
-Functione277:: ; e277
+GivePoke:: ; e277
 	push de
 	push bc
 	xor a
@@ -9606,8 +9523,9 @@
 	ld a, [ScriptBank]
 	call FarCopyBytes
 	pop hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [ScriptBank]
 	call GetFarHalfword
 	pop bc
@@ -9751,7 +9669,7 @@
 	and a
 	ret nz
 	ld hl, UnknownText_0xe417
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; e417 (3:6417)
@@ -9810,7 +9728,7 @@
 	ld a, b
 	jr nc, .asm_e44b
 .asm_e46b
-	call Function1c17
+	call WriteBackup
 	ret
 ; e46f (3:646f)
 
@@ -9876,7 +9794,7 @@
 	call ClearPCItemScreen
 
 .asm_e4f4
-	call Function1c17
+	call WriteBackup
 	and a
 	ret
 ; e4f9
@@ -9892,7 +9810,7 @@
 	callba Functione2391
 	call Function222a
 	call ClearPCItemScreen
-	call Function1c17
+	call WriteBackup
 	and a
 	ret
 ; e512 (3:6512)
@@ -9908,13 +9826,13 @@
 
 .asm_e51e
 	ld hl, UnknownText_0xe52e
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 
 .asm_e526
 	ld hl, UnknownText_0xe533
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; e52e
@@ -9968,7 +9886,7 @@
 	callba Functione2583
 	call Function222a
 	call ClearPCItemScreen
-	call Function1c17
+	call WriteBackup
 	and a
 	ret
 ; e56d (3:656d)
@@ -9982,7 +9900,7 @@
 
 .asm_e576
 	ld hl, UnknownText_0xe57e
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; e57e
@@ -10004,8 +9922,8 @@
 	ld [hBGMapMode], a
 	call WhiteBGMap
 	call ClearSprites
-	ld hl, TileMap
-	ld bc, 18 * 20
+	hlcoord 0, 0
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	ld a, " "
 	call ByteFill
 	hlcoord 0,0
@@ -10458,26 +10376,23 @@
 	call Function11420
 	ret nc
 	xor a
-	ld hl, wdc1e
+	ld hl, DailyFlags
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld hl, wdc4c
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld hl, wdc50
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld hl, wdc54
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld hl, wdc58
 	ld a, [hl]
 	and a
@@ -10587,7 +10502,7 @@
 ; 1151c
 
 Function1151c: ; 1151c
-	ld hl, wdc1e
+	ld hl, DailyFlags
 	set 2, [hl]
 	ret
 ; 11522
@@ -10594,7 +10509,7 @@
 
 Function11522: ; 11522
 	and a
-	ld hl, wdc1e
+	ld hl, DailyFlags
 	bit 2, [hl]
 	ret nz
 	scf
@@ -10732,16 +10647,17 @@
 ; 115d6
 
 Function115d6: ; 115d6
+rept 2
 	inc hl
-	inc hl
+endr
 	xor a
 	jr Function115eb
 ; 115db
 
 Function115db: ; 115db
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, [hSeconds]
 	ld c, a
 	sub [hl]
@@ -10936,7 +10852,7 @@
 	db 0 ; end
 ; 116b7
 
-Function116b7: ; 0x116b7
+_NamingScreen: ; 0x116b7
 	call Function2ed3
 	call Function116c1
 	call Function2b74
@@ -11000,8 +10916,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1172e
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -11209,8 +11126,8 @@
 
 Function118a8: ; 118a8
 	call WaitTop
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $60
 	call ByteFill
 	hlcoord 1, 1
@@ -11321,8 +11238,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, Jumptable_11977
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -11570,8 +11488,9 @@
 	jr nz, .asm_11ade
 	ld a, $4
 .asm_11ade
+rept 2
 	dec a
-	dec a
+endr
 	ld e, a
 	add a
 	add e
@@ -11782,7 +11701,7 @@
 	srl a
 	srl a
 	ld d, a
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $14
 .asm_11c43
 	ld a, d
@@ -11974,13 +11893,13 @@
 
 Function11f84: ; 11f84 (4:5f84)
 	call WaitTop
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $78
 	ld a, $60
 	call ByteFill
 	hlcoord 0, 6
 	ld bc, $f0
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	hlcoord 1, 1
 	ld bc, $412
@@ -11989,21 +11908,21 @@
 
 Function11fa9: ; 11fa9 (4:5fa9)
 	hlcoord 1, 7
-	ld b, $6
-.asm_11fae
-	ld c, $13
-.asm_11fb0
+	ld b, 6
+.next
+	ld c, SCREEN_WIDTH - 1
+.loop
 	ld a, [de]
 	ld [hli], a
 	inc de
 	dec c
-	jr nz, .asm_11fb0
+	jr nz, .loop
 	push de
-	ld de, $15
+	ld de, 21
 	add hl, de
 	pop de
 	dec b
-	jr nz, .asm_11fae
+	jr nz, .next
 	ret
 
 Function11fc0: ; 11fc0 (4:5fc0)
@@ -12047,8 +11966,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_12017
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -12262,8 +12182,9 @@
 	jr nz, .asm_1215f
 	ld a, $4
 .asm_1215f
+rept 2
 	dec a
-	dec a
+endr
 	ld e, a
 	add a
 	add e
@@ -12338,8 +12259,9 @@
 	jr nz, .asm_121c3
 	push hl
 	ld hl, wc6d2
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jr .asm_121c8
 
 .asm_121c3
@@ -12386,15 +12308,15 @@
 UnknownScript_0x122c1: ; 0x122c1
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iffalse .script_122cd
-	setflag ENGINE_51
-	special Function13a31
+	setflag ENGINE_DAILY_BUG_CONTEST
+	special ContestReturnMons
 .script_122cd
 	end
 ; 0x122ce
 
-UnknownScript_0x122ce:: ; 0x122ce
+FindItemInBallScript:: ; 0x122ce
 	callasm Function122f8
-	iffalse UnknownScript_0x122e3
+	iffalse NoRoomForItemInBallScript
 	disappear $fe
 	loadfont
 	writetext UnknownText_0x122ee
@@ -12405,7 +12327,7 @@
 	end
 ; 0x122e3
 
-UnknownScript_0x122e3: ; 0x122e3
+NoRoomForItemInBallScript: ; 0x122e3
 	loadfont
 	writetext UnknownText_0x122ee
 	closetext
@@ -12448,9 +12370,14 @@
 ; 12324
 
 HealMachineAnim: ; 12324
+	; If you have no Pokemon, don't change the buffer.  This can lead to some glitchy effects if you have no Pokemon.
 	ld a, [PartyCount]
 	and a
 	ret z
+	; The location of the healing machine relative to the player is stored in ScriptVar.
+	; 0: Up and left (Pokemon Center)
+	; 1: Left (Elm's Lab)
+	; 2: Up (Hall of Fame)
 	ld a, [ScriptVar]
 	ld [Buffer1], a
 	ld a, [rOBP1]
@@ -12469,8 +12396,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_12365
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -12661,9 +12589,9 @@
 	ld [hld], a
 	ld a, e
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_12486
 	pop de
@@ -12718,7 +12646,7 @@
 UnknownScript_0x124ce: ; 0x124ce
 	writetext UnknownText_0x124f5
 	closetext
-	special Function8c084
+	special FadeBlackBGMap
 	pause 40
 	special HealParty
 	checkflag ENGINE_BUG_CONTEST_TIMER
@@ -12726,7 +12654,7 @@
 	callasm HalveMoney
 	callasm Function12527
 	farscall UnknownScript_0x122c1
-	special Function97c28
+	special WarpToSpawnPoint
 	newloadmap $f1
 	resetfuncs
 
@@ -12783,20 +12711,20 @@
 	ld e, a
 	callba IsSpawnPoint
 	ld a, c
-	jr c, .asm_12539
+	jr c, .yes
 	xor a
 
-.asm_12539
+.yes
 	ld [wd001], a
 	ret
 ; 1253d
 
-UnknownScript_0x1253d:: ; 0x1253d
+Script_ForcedMovement:: ; 0x1253d
 	checkcode VAR_FACING
-	if_equal $0, UnknownScript_0x12555
-	if_equal $1, UnknownScript_0x12550
-	if_equal $2, UnknownScript_0x1255f
-	if_equal $3, UnknownScript_0x1255a
+	if_equal DOWN, UnknownScript_0x12555
+	if_equal UP, UnknownScript_0x12550
+	if_equal LEFT, UnknownScript_0x1255f
+	if_equal RIGHT, UnknownScript_0x1255a
 	end
 ; 0x12550
 
@@ -12861,8 +12789,8 @@
 ; 0x12580
 
 
-Function12580: ; 12580
-	callba Functionb8172
+ItemFinder: ; 12580
+	callba CheckForSignpostItems
 	jr c, .asm_1258d
 	ld hl, UnknownScript_0x125ba
 	jr .asm_12590
@@ -12871,7 +12799,7 @@
 	ld hl, UnknownScript_0x125ad
 
 .asm_12590
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -12952,7 +12880,7 @@
 	jr .Select
 
 .Reopen
-	call Function1ad2
+	call DrawOnMap
 	call UpdateTimePals
 	call .SetUpMenuItems
 	ld a, [wd0d2]
@@ -12973,13 +12901,14 @@
 	ld hl, .MenuReturns
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
-	
+
 .MenuReturns
 	dw .Reopen
 	dw .Exit
@@ -12998,7 +12927,7 @@
 	pop af
 	ld [hOAMUpdate], a
 .ReturnEnd
-	call Function1c07
+	call ExitMenu
 .ReturnEnd2
 	call Function2dcf
 	call UpdateTimePals
@@ -13031,7 +12960,7 @@
 ; 12691
 
 .ReturnFour ; 12691
-	call Function1c07
+	call ExitMenu
 	ld a, $80
 	ld [$ffa0], a
 	ret
@@ -13038,7 +12967,7 @@
 ; 12699
 
 .ReturnThree ; 12699
-	call Function1c07
+	call ExitMenu
 	ld a, $80
 	ld [$ffa0], a
 	jr .ReturnEnd2
@@ -13045,7 +12974,7 @@
 ; 126a2
 
 .ReturnTwo ; 126a2
-	call Function1c07
+	call ExitMenu
 	ld hl, wd0e9
 	ld a, [hli]
 	ld h, [hl]
@@ -13067,7 +12996,7 @@
 	call .DrawMenuAccount_
 	call MenuFunc_1e7f
 	call .DrawBugContestStatus
-	call Function1ad2
+	call DrawOnMap
 	call Functiond90
 	call Function2b5c
 	ret
@@ -13157,8 +13086,9 @@
 	push de
 	ld a, [MenuSelection]
 	call .GetMenuAccountTextPointer
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -13171,12 +13101,11 @@
 	push de
 	ld a, [MenuSelection]
 	cp $ff
-	jr z, .none 
+	jr z, .none
 	call .GetMenuAccountTextPointer
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -13196,12 +13125,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 6
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ret
 ; 12829
 
@@ -13349,8 +13275,8 @@
 	ld hl, .EndTheContestText
 	call Function12cf5
 	jr c, .asm_12903
-	ld a, BANK(UnknownScript_0x1360b)
-	ld hl, UnknownScript_0x1360b
+	ld a, BANK(BugCatchingContestReturnToGateScript)
+	ld hl, BugCatchingContestReturnToGateScript
 	call Function31cf
 	ld a, 4
 	ret
@@ -13367,7 +13293,7 @@
 StartMenu_Save: ; 1290b
 ; Save the game.
 
-	call Function2879
+	call BufferScreen
 	callba Function14a1a
 	jr nc, .asm_12919
 	ld a, 0
@@ -13503,7 +13429,7 @@
 	and a
 	ret nz
 	ld hl, TMsHMs
-	ld b, $39
+	ld b, NUM_TMS + NUM_HMS
 .asm_129e9
 	ld a, [hli]
 	and a
@@ -13524,18 +13450,18 @@
 	and a
 	jr nz, .asm_12a3f
 	ld hl, UnknownText_0x12a45
-	call Function1d4f
+	call MenuTextBox
 	callba Function24fbf
 	push af
-	call Function1c17
-	call Function1c07
+	call WriteBackup
+	call ExitMenu
 	pop af
 	jr c, .asm_12a42
 	ld hl, UnknownText_0x12a4a
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	push af
-	call Function1c07
+	call ExitMenu
 	pop af
 	jr c, .asm_12a42
 	pop hl
@@ -13543,8 +13469,8 @@
 	call TossItem
 	call PartyMonItemName
 	ld hl, UnknownText_0x12a4f
-	call Function1d4f
-	call Function1c07
+	call MenuTextBox
+	call ExitMenu
 	and a
 	ret
 .asm_12a3f
@@ -13575,7 +13501,7 @@
 
 Function12a54: ; 12a54 (4:6a54)
 	ld hl, UnknownText_0x12a5b
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 ; 12a5b (4:6a5b)
 
@@ -13722,8 +13648,8 @@
 
 	ld hl, GiveTakeItemMenuData
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	jr c, .asm_12ba6
 
 	call GetCurNick
@@ -13740,7 +13666,7 @@
 	call Function12ba9
 	call ClearPalettes
 	call Functione58
-	call Function1c07
+	call ExitMenu
 	ld a, 0
 	ret
 
@@ -13780,7 +13706,7 @@
 
 .next
 	ld hl, CantBeHeldText
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .loop
 
 .quit
@@ -13808,13 +13734,13 @@
 .asm_12bf4
 	call Function12cea
 	ld hl, MadeHoldText
-	call Function1d67
+	call MenuTextBoxBackup
 	call GivePartyItem
 	ret
 
 .asm_12c01
 	ld hl, PleaseRemoveMailText
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 
 .asm_12c08
@@ -13835,7 +13761,7 @@
 	jr nc, .asm_12c3c
 
 	ld hl, TookAndMadeHoldText
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, [wd265]
 	ld [CurItem], a
 	call GivePartyItem
@@ -13846,7 +13772,7 @@
 	ld [CurItem], a
 	call Function12cdf
 	ld hl, ItemStorageIsFullText
-	call Function1d67
+	call MenuTextBoxBackup
 
 .asm_12c4b
 	ret
@@ -13887,17 +13813,17 @@
 	ld [hl], NO_ITEM
 	call GetItemName
 	ld hl, TookFromText
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12c9a
 
 .asm_12c8c
 	ld hl, IsntHoldingAnythingText
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12c9a
 
 .asm_12c94
 	ld hl, ItemStorageIsFullText
-	call Function1d67
+	call MenuTextBoxBackup
 
 .asm_12c9a
 	ret
@@ -13984,9 +13910,9 @@
 	jp TossItem
 
 Function12cf5: ; 12cf5
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
-	jp Function1c07
+	jp ExitMenu
 ; 12cfe
 
 
@@ -14027,8 +13953,8 @@
 	jr z, .asm_12d6d
 	ld hl, MenuDataHeader_0x12dc9
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	jp c, .asm_12dc6
 	ld a, [wcfa9]
 	cp $1
@@ -14051,12 +13977,12 @@
 	callba Function4456e
 	jr c, .asm_12d92
 	ld hl, UnknownText_0x12dfb
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12d92
 	ld hl, UnknownText_0x12df6
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12d9a
@@ -14072,12 +13998,12 @@
 	ld [hl], $0
 	call GetCurNick
 	ld hl, UnknownText_0x12de7
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12dbe
 	ld hl, UnknownText_0x12dec
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12dc6
@@ -14150,7 +14076,7 @@
 
 
 Function12e1b: ; 12e1b
-	callba Functionc785
+	callba CutFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12e2d
@@ -14165,7 +14091,7 @@
 
 
 Function12e30: ; 12e30
-	callba Functionca3b
+	callba FlyFunction
 	ld a, [wd0ec]
 	cp $2
 	jr z, .asm_12e4c
@@ -14204,7 +14130,7 @@
 ; 12e6a
 
 Function12e6a: ; 12e6a
-	callba Functioncce5
+	callba StrengthFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12e7c
@@ -14218,7 +14144,7 @@
 ; 12e7f
 
 Function12e7f: ; 12e7f
-	callba Functioncd9d
+	callba WhirlpoolFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12e91
@@ -14246,7 +14172,7 @@
 ; 12ea9
 
 Function12ea9: ; 12ea9
-	callba Functioncc61
+	callba TeleportFunction
 	ld a, [wd0ec]
 	and a
 	jr z, .asm_12eba
@@ -14260,7 +14186,7 @@
 ; 12ebd
 
 Function12ebd: ; 12ebd
-	callba Functionc909
+	callba SurfFunction
 	ld a, [wd0ec]
 	and a
 	jr z, .asm_12ece
@@ -14274,7 +14200,7 @@
 ; 12ed1
 
 Function12ed1: ; 12ed1
-	callba Functioncb9c
+	callba DigFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12ee3
@@ -14332,7 +14258,7 @@
 ; 12f26
 
 Function12f26: ; 12f26
-	callba Functionce7d
+	callba HeadbuttFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12f38
@@ -14346,7 +14272,7 @@
 ; 12f3b
 
 Function12f3b: ; 12f3b
-	callba Functionceeb
+	callba RockSmashFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12f4d
@@ -14360,7 +14286,7 @@
 ; 12f50
 
 Function12f50: ; 12f50
-	callba Function506bc
+	callba DoMovementFunctionc
 	ld b, $4
 	ld a, $2
 	ret
@@ -14889,8 +14815,8 @@
 	call Function2e08
 	ld b, BANK(ItemMayBeRegisteredText)
 	ld hl, ItemMayBeRegisteredText
-	call Function269a
-	call Functiona46
+	call MapTextbox
+	call CloseText
 	jp Function2dcf
 ; 13340
 
@@ -14926,8 +14852,9 @@
 	inc hl
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	call .IsSameItem
 	jr c, .NoRegisteredItem
 	and a
@@ -14951,8 +14878,9 @@
 	inc hl
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	call .IsSameItem
 	jr c, .NoRegisteredItem
 	ret
@@ -15070,7 +14998,7 @@
 ; 1342d
 
 
-Function1342d:: ; 1342d
+Elevator:: ; 1342d
 	call Function1344a
 	call Function1347d
 	jr c, .asm_13448
@@ -15142,8 +15070,9 @@
 	call GetFarByte
 	cp $ff
 	jr z, .asm_134be
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [EngineBuffer1]
 	call GetFarByte
 	inc hl
@@ -15193,17 +15122,17 @@
 
 Function134dd: ; 134dd
 	call Function1d6e
-	ld hl, UnknownText_0x1350d
+	ld hl, Elevator_WhichFloorText
 	call PrintText
-	call Function13512
-	ld hl, MenuDataHeader_0x13550
-	call Function1d3c
+	call Elevator_GetCurrentFloorText
+	ld hl, Elevator_MenuDataHeader
+	call CopyMenuDataHeader
 	call Function352f
-	call Function1ad2
+	call DrawOnMap
 	xor a
 	ld [wd0e4], a
 	call Function350c
-	call Function1c17
+	call WriteBackup
 	ld a, [wcf73]
 	cp $2
 	jr z, .asm_1350b
@@ -15216,7 +15145,7 @@
 	ret
 ; 1350d
 
-UnknownText_0x1350d: ; 0x1350d
+Elevator_WhichFloorText: ; 0x1350d
 	; Which floor?
 	text_jump UnknownText_0x1bd2bc
 	db "@"
@@ -15223,31 +15152,31 @@
 ; 0x13512
 
 
-Function13512: ; 13512
+Elevator_GetCurrentFloorText: ; 13512
 	ld hl, Options
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $4
 	ld c, $8
 	call TextBox
 	hlcoord 1, 2
-	ld de, String_13537
+	ld de, Elevator_CurrentFloorText
 	call PlaceString
 	hlcoord 4, 4
-	call Function1353f
+	call Elevator_GetCurrentFloorString
 	pop af
 	ld [Options], a
 	ret
 ; 13537
 
-String_13537: ; 13537
+Elevator_CurrentFloorText: ; 13537
 	db "Now on:@"
 ; 1353f
 
 
-Function1353f: ; 1353f
+Elevator_GetCurrentFloorString: ; 1353f
 	push hl
 	ld a, [wd041]
 	ld e, a
@@ -15256,34 +15185,34 @@
 	add hl, de
 	ld a, [hl]
 	pop de
-	call Function1356b
+	call GetFloorString
 	ret
 ; 13550
 
-MenuDataHeader_0x13550: ; 0x13550
+Elevator_MenuDataHeader: ; 0x13550
 	db $40 ; flags
 	db 01, 12 ; start coords
 	db 09, 18 ; end coords
-	dw MenuData2_0x13558
+	dw Elevator_MenuData2
 	db 1 ; default option
 ; 0x13558
 
-MenuData2_0x13558: ; 0x13558
+Elevator_MenuData2: ; 0x13558
 	db $10 ; flags
 	db 4, 0 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, OBPals + 8 * 6
-	dbw BANK(Function13568), Function13568
+	dbw BANK(GetElevatorFlorStrings), GetElevatorFlorStrings
 	dbw BANK(NULL), NULL
 	dbw BANK(NULL), NULL
 ; 13568
 
-Function13568: ; 13568
+GetElevatorFlorStrings: ; 13568
 	ld a, [MenuSelection]
 
-Function1356b: ; 1356b
+GetFloorString: ; 1356b
 	push de
-	call Function13575
+	call FloorToString
 	ld d, h
 	ld e, l
 	pop hl
@@ -15290,13 +15219,14 @@
 	jp PlaceString
 ; 13575
 
-Function13575: ; 13575
+FloorToString: ; 13575
 	push de
 	ld e, a
 	ld d, 0
 	ld hl, .floors
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -15357,40 +15287,40 @@
 ; 135db
 
 
-Function135db: ; 135db
+Special_GiveParkBalls: ; 135db
 	xor a
 	ld [wdf9c], a
-	ld a, $14
+	ld a, 20
 	ld [wdc79], a
 	callba Function11490
 	ret
 ; 135eb
 
-UnknownScript_0x135eb:: ; 0x135eb
+BugCatchingContestBattleScript:: ; 0x135eb
 	writecode VAR_BATTLETYPE, BATTLETYPE_CONTEST
 	battlecheck
 	startbattle
 	returnafterbattle
 	copybytetovar wdc79
-	iffalse UnknownScript_0x13603
+	iffalse BugCatchingContestOutOfBallsScript
 	end
 ; 0x135f8
 
-UnknownScript_0x135f8:: ; 0x135f8
+BugCatchingContestOverScript:: ; 0x135f8
 	playsound SFX_ELEVATOR_END
 	loadfont
 	writetext UnknownText_0x1360f
 	closetext
-	jump UnknownScript_0x1360b
+	jump BugCatchingContestReturnToGateScript
 ; 0x13603
 
-UnknownScript_0x13603: ; 0x13603
+BugCatchingContestOutOfBallsScript: ; 0x13603
 	playsound SFX_ELEVATOR_END
 	loadfont
 	writetext UnknownText_0x13614
 	closetext
 
-UnknownScript_0x1360b: ; 0x1360b
+BugCatchingContestReturnToGateScript: ; 0x1360b
 	loadmovesprites
 	jumpstd bugcontestresultswarp
 ; 0x1360f
@@ -15407,7 +15337,7 @@
 	db "@"
 ; 0x13619
 
-UnknownScript_0x13619:: ; 0x13619
+RepelWoreOffScript:: ; 0x13619
 	loadfont
 	writetext UnknownText_0x13620
 	closetext
@@ -15421,14 +15351,14 @@
 	db "@"
 ; 0x13625
 
-UnknownScript_0x13625:: ; 0x13625
+SignpostItemScript:: ; 0x13625
 	loadfont
 	copybytetovar Unkn2Pals
-	itemtotext $0, $0
+	itemtotext 0, 0
 	writetext UnknownText_0x13645
-	giveitem $ff, $1
+	giveitem -1, 1
 	iffalse UnknownScript_0x1363e
-	callasm Function1364f
+	callasm SetMemEvent
 	specialsound
 	itemnotify
 	jump UnknownScript_0x13643
@@ -15456,22 +15386,23 @@
 	db "@"
 ; 0x1364f
 
-Function1364f: ; 1364f
+SetMemEvent: ; 1364f
 	ld hl, EngineBuffer1 ; wd03e (aliases: MenuItemsList, CurFruitTree, CurInput)
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
-	ld b, $1
+	ld b, SET_FLAG
 	call EventFlagAction
 	ret
 
 
-Function1365b:: ; 1365b
+CheckFacingTileForStd:: ; 1365b
+; Checks to see if the tile you're facing has a std script associated with it.  If so, executes the script and returns carry.
 	ld a, c
-	ld de, .table2 - .table1
+	ld de, 3
 	ld hl, .table1
 	call IsInArray
-	jr nc, .asm_1367f
+	jr nc, .notintable
 
 	ld a, jumpstd_command
 	ld [wd03f], a
@@ -15480,13 +15411,13 @@
 	ld [wd03f + 1], a
 	ld a, [hli]
 	ld [wd03f + 2], a
-	ld a, BANK(UnknownScript_0x1369a)
-	ld hl, UnknownScript_0x1369a
+	ld a, BANK(Script_JumpStdFromRAM)
+	ld hl, Script_JumpStdFromRAM
 	call CallScript
 	scf
 	ret
 
-.asm_1367f
+.notintable
 	xor a
 	ret
 ; 13681
@@ -15493,8 +15424,7 @@
 
 .table1
 	dbw $91, magazinebookshelf
-.table2
-	dbw $93, $0031 ; pc
+	dbw $93, pcscript
 	dbw $94, radio1
 	dbw $95, townmap
 	dbw $96, merchandiseshelf
@@ -15504,215 +15434,226 @@
 	db $ff ; end
 ; 1369a
 
-UnknownScript_0x1369a: ; 0x1369a
+Script_JumpStdFromRAM: ; 0x1369a
 	jump wd03f
 ; 0x1369d
 
 
-Function1369d: ; 1369d
+_BugContestJudging: ; 1369d
 	call ContestScore
 	callba Function105f79
 	call Function13819
 	ld a, [wd00a]
-	call Function13730
+	call LoadContestantName
 	ld a, [wd00b]
 	ld [wd265], a
 	call GetPokemonName
-	ld hl, UnknownText_0x13719
+	ld hl, BugContest_ThirdPlaceText
 	call PrintText
 	ld a, [EndFlypoint]
-	call Function13730
+	call LoadContestantName
 	ld a, [MovementBuffer]
 	ld [wd265], a
 	call GetPokemonName
-	ld hl, UnknownText_0x13702
+	ld hl, BugContest_SecondPlaceText
 	call PrintText
 	ld a, [DefaultFlypoint]
-	call Function13730
+	call LoadContestantName
 	ld a, [wd003]
 	ld [wd265], a
 	call GetPokemonName
-	ld hl, UnknownText_0x136eb
+	ld hl, BugContest_FirstPlaceText
 	call PrintText
 	jp Function13807
 ; 136eb
 
-UnknownText_0x136eb: ; 0x136eb
-	text_jump UnknownText_0x1c10fa
+BugContest_FirstPlaceText: ; 0x136eb
+	text_jump ContestJudging_FirstPlaceText
 	start_asm
 ; 0x136f0
 
-Function136f0: ; 136f0
+BugContest_FirstPlace: ; 136f0
 	ld de, SFX_1ST_PLACE
 	call PlaySFX
 	call WaitSFX
-	ld hl, UnknownText_0x136fd
+	ld hl, BugContest_FirstPlaceScoreText
 	ret
 ; 136fd
 
-UnknownText_0x136fd: ; 0x136fd
+BugContest_FirstPlaceScoreText: ; 0x136fd
 	; The winning score was @  points!
-	text_jump UnknownText_0x1c113f
+	text_jump ContestJudging_FirstPlaceScoreText
 	db "@"
 ; 0x13702
 
-UnknownText_0x13702: ; 0x13702
+BugContest_SecondPlaceText: ; 0x13702
 	; Placing second was @ , who caught a @ !@ @
-	text_jump UnknownText_0x1c1166
+	text_jump ContestJudging_SecondPlaceText
 	start_asm
 ; 0x13707
 
-Function13707: ; 13707
+BugContest_SecondPlace: ; 13707
 	ld de, SFX_2ND_PLACE
 	call PlaySFX
 	call WaitSFX
-	ld hl, UnknownText_0x13714
+	ld hl, BugContest_SecondPlaceScoreText
 	ret
 ; 13714
 
-UnknownText_0x13714: ; 0x13714
+BugContest_SecondPlaceScoreText: ; 0x13714
 	; The score was @  points!
-	text_jump UnknownText_0x1c1196
+	text_jump ContestJudging_SecondPlaceScoreText
 	db "@"
 ; 0x13719
 
-UnknownText_0x13719: ; 0x13719
+BugContest_ThirdPlaceText: ; 0x13719
 	; Placing third was @ , who caught a @ !@ @
-	text_jump UnknownText_0x1c11b5
+	text_jump ContestJudging_ThirdPlaceText
 	start_asm
 ; 0x1371e
 
-Function1371e: ; 1371e
+BugContest_ThirdPlace: ; 1371e
 	ld de, SFX_3RD_PLACE
 	call PlaySFX
 	call WaitSFX
-	ld hl, UnknownText_0x1372b
+	ld hl, BugContest_ThirdPlaceScoreText
 	ret
 ; 1372b
 
-UnknownText_0x1372b: ; 0x1372b
+BugContest_ThirdPlaceScoreText: ; 0x1372b
 	; The score was @  points!
-	text_jump UnknownText_0x1c11e4
+	text_jump ContestJudging_ThirdPlaceScoreText
 	db "@"
 ; 0x13730
 
-Function13730: ; 13730
+LoadContestantName: ; 13730
+
+; If a = 0, get your name.
 	dec a
-	jr z, .asm_13777
+	jr z, .done
+; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a.
 	ld c, a
 	ld b, 0
-	ld hl, Unknown_13783
+	ld hl, BugContestantPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+; Copy the Trainer Class to c.
 	ld a, [hli]
 	ld c, a
+; Save hl and bc for later.
 	push hl
 	push bc
+; Get the Trainer Class name and copy it into wd016.
 	callab Function3952d
 	ld hl, StringBuffer1
 	ld de, wd016
-	ld bc, $000d
+	ld bc, TRAINER_CLASS_NAME_LENGTH
 	call CopyBytes
 	ld hl, wd016
-.asm_13757
+; Delete the trailing terminator and replace it with a space.
+.next
 	ld a, [hli]
-	cp $50
-	jr nz, .asm_13757
+	cp "@"
+	jr nz, .next
 	dec hl
-	ld [hl], $7f
+	ld [hl], " "
 	inc hl
 	ld d, h
 	ld e, l
+; Restore the Trainer Class ID and Trainer ID pointer.  Save de for later.
 	pop bc
 	pop hl
 	push de
+; Get the name of the trainer with class c and ID b.
 	ld a, [hl]
 	ld b, a
-	callab Function3994c
+	callab GetTrainerName
+; Append the name to wd016.
 	ld hl, StringBuffer1
 	pop de
-	ld bc, $000a
+	ld bc, NAME_LENGTH - 1
 	jp CopyBytes
 
-.asm_13777
+.done
 	ld hl, PlayerName
 	ld de, wd016
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	jp CopyBytes
 ; 13783
 
-Unknown_13783: ; 13783
-	dw Unknown_13799
-	dw Unknown_13799
-	dw Unknown_137a4
-	dw Unknown_137af
-	dw Unknown_137ba
-	dw Unknown_137c5
-	dw Unknown_137d0
-	dw Unknown_137db
-	dw Unknown_137e6
-	dw Unknown_137f1
-	dw Unknown_137fc
+BugContestantPointers: ; 13783
+	dw BugContestant_BugCatcherDon ; This reverts back to the player
+	dw BugContestant_BugCatcherDon
+	dw BugContestant_BugCatcherEd
+	dw BugContestant_CooltrainerMNick
+	dw BugContestant_PokefanMWilliam
+	dw BugContestant_BugCatcherBenny
+	dw BugContestant_CamperBarry
+	dw BugContestant_PicnickerCindy
+	dw BugContestant_BugCatcherJosh
+	dw BugContestant_YoungsterSamuel
+	dw BugContestant_SchoolboyKipp
 ; 13799
 
-Unknown_13799:
+BugContestant_BugCatcherDon:
 	db BUG_CATCHER, DON
 	dbw KAKUNA,     300
 	dbw METAPOD,    285
 	dbw CATERPIE,   226
 
-Unknown_137a4:
+BugContestant_BugCatcherEd:
 	db BUG_CATCHER, ED
 	dbw BUTTERFREE, 286
 	dbw BUTTERFREE, 251
 	dbw CATERPIE,   237
 
-Unknown_137af:
+BugContestant_CooltrainerMNick:
 	db COOLTRAINERM, NICK
 	dbw SCYTHER,    357
 	dbw BUTTERFREE, 349
 	dbw PINSIR,     368
 
-Unknown_137ba:
+BugContestant_PokefanMWilliam:
 	db POKEFANM, WILLIAM
 	dbw PINSIR,     332
 	dbw BUTTERFREE, 324
 	dbw VENONAT,    321
 
-Unknown_137c5:
+BugContestant_BugCatcherBenny:
 	db BUG_CATCHER, BUG_CATCHER_BENNY
 	dbw BUTTERFREE, 318
 	dbw WEEDLE,     295
 	dbw CATERPIE,   285
 
-Unknown_137d0:
+BugContestant_CamperBarry:
 	db CAMPER, BARRY
 	dbw PINSIR,     366
 	dbw VENONAT,    329
 	dbw KAKUNA,     314
 
-Unknown_137db:
+BugContestant_PicnickerCindy:
 	db PICNICKER, CINDY
 	dbw BUTTERFREE, 341
 	dbw METAPOD,    301
 	dbw CATERPIE,   264
 
-Unknown_137e6:
+BugContestant_BugCatcherJosh:
 	db BUG_CATCHER, JOSH
 	dbw SCYTHER,    326
 	dbw BUTTERFREE, 292
 	dbw METAPOD,    282
 
-Unknown_137f1:
+BugContestant_YoungsterSamuel:
 	db YOUNGSTER, SAMUEL
 	dbw WEEDLE,     270
 	dbw PINSIR,     282
 	dbw CATERPIE,   251
 
-Unknown_137fc:
+BugContestant_SchoolboyKipp:
 	db SCHOOLBOY, KIPP
 	dbw VENONAT,    267
 	dbw PARAS,      254
@@ -15721,17 +15662,17 @@
 
 Function13807: ; 13807
 	ld hl, wd00a
-	ld de, $fffc
-	ld b, $3
-.asm_1380f
+	ld de, -4
+	ld b, 3
+.loop
 	ld a, [hl]
-	cp $1
-	jr z, .asm_13818
+	cp 1
+	jr z, .done
 	add hl, de
 	dec b
-	jr nz, .asm_1380f
+	jr nz, .loop
 
-.asm_13818
+.done
 	ret
 ; 13819
 
@@ -15739,7 +15680,7 @@
 	call Function13833
 	call Function138b0
 	ld hl, wd00e
-	ld a, $1
+	ld a, 1
 	ld [hli], a
 	ld a, [wdf9c]
 	ld [hli], a
@@ -15753,12 +15694,12 @@
 
 Function13833: ; 13833
 	ld hl, DefaultFlypoint
-	ld b, $c
+	ld b, 12
 	xor a
-.asm_13839
+.loop
 	ld [hli], a
 	dec b
-	jr nz, .asm_13839
+	jr nz, .loop
 	ret
 ; 1383e
 
@@ -15765,9 +15706,9 @@
 Function1383e: ; 1383e
 	ld de, wd010
 	ld hl, wd004
-	ld c, $2
+	ld c, 2
 	call StringCmp
-	jr c, .asm_1386b
+	jr c, .next
 	ld hl, EndFlypoint
 	ld de, wd00a
 	ld bc, $0004
@@ -15774,36 +15715,36 @@
 	call CopyBytes
 	ld hl, DefaultFlypoint
 	ld de, EndFlypoint
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	ld hl, DefaultFlypoint
 	call Function138a0
-	jr .asm_1389f
+	jr .done
 
-.asm_1386b
+.next
 	ld de, wd010
 	ld hl, wd008
-	ld c, $2
+	ld c, 2
 	call StringCmp
-	jr c, .asm_1388c
+	jr c, .next2
 	ld hl, EndFlypoint
 	ld de, wd00a
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	ld hl, EndFlypoint
 	call Function138a0
-	jr .asm_1389f
+	jr .done
 
-.asm_1388c
+.next2
 	ld de, wd010
 	ld hl, wd00c
-	ld c, $2
+	ld c, 2
 	call StringCmp
-	jr c, .asm_1389f
+	jr c, .done
 	ld hl, wd00a
 	call Function138a0
 
-.asm_1389f
+.done
 	ret
 ; 138a0
 
@@ -15825,37 +15766,40 @@
 ; 138b0
 
 Function138b0: ; 138b0
-	ld e, $0
-.asm_138b2
+	ld e, 0
+.loop
 	push de
-	call Function139ed
+	call Special_CheckBugContestContestantFlag
 	pop de
-	jr nz, .asm_138f9
+	jr nz, .done
 	ld a, e
+rept 2
 	inc a
-	inc a
+endr
 	ld [wd00e], a
 	dec a
 	ld c, a
 	ld b, 0
-	ld hl, Unknown_13783
+	ld hl, BugContestantPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+rept 2
 	inc hl
-	inc hl
-.asm_138cd
+endr
+.loop2
 	call Random
-	and $3
-	cp $3
-	jr z, .asm_138cd
+	and 3
+	cp 3
+	jr z, .loop2
 	ld c, a
-	ld b, $0
+	ld b, 0
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld [wd00f], a
 	ld a, [hli]
@@ -15862,9 +15806,9 @@
 	ld h, [hl]
 	ld l, a
 	call Random
-	and $7
+	and 7
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, h
 	ld [wd010], a
@@ -15874,11 +15818,11 @@
 	call Function1383e
 	pop de
 
-.asm_138f9
+.done
 	inc e
 	ld a, e
-	cp $a
-	jr nz, .asm_138b2
+	cp 10
+	jr nz, .loop
 	ret
 ; 13900
 
@@ -15921,8 +15865,9 @@
 	ld a, [wContestMonDVs + 0]
 	ld b, a
 	and 2
+rept 2
 	add a
-	add a
+endr
 	ld c, a
 
 	swap b
@@ -15941,10 +15886,12 @@
 	ld a, b
 	and 2
 	srl a
+rept 2
 	add c
-	add c
+endr
+rept 2
 	add d
-	add d
+endr
 
 	call .AddContestStat
 
@@ -15979,20 +15926,20 @@
 
 ; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
 ApplyPokerusTick: ; 13988
-	ld hl, PartyMon1PokerusStatus
+	ld hl, PartyMon1PokerusStatus ; PartyMon1 + MON_PKRS
 	ld a, [PartyCount]
 	and a
 	ret z
 	ld c, a
-.asm_13991
+.loop
 	ld a, [hl]
 	and $f
-	jr z, .asm_139a0
+	jr z, .does_not_have_pokerus
 	sub b
-	jr nc, .asm_1399a
+	jr nc, .ok
 	xor a
 
-.asm_1399a
+.ok
 	ld d, a
 	ld a, [hl]
 	and $f0
@@ -15999,95 +15946,111 @@
 	add d
 	ld [hl], a
 
-.asm_139a0
+.does_not_have_pokerus
 	ld de, PartyMon2 - PartyMon1
 	add hl, de
 	dec c
-	jr nz, .asm_13991
+	jr nz, .loop
 	ret
 ; 139a8
 
-Function139a8: ; 139a8
-	ld c, $a
-	ld hl, Unknown_139fe
-.asm_139ad
+Special_SelectRandomBugContestContestants: ; 139a8
+; Select five random people to participate in the current contest.
+
+; First we have to make sure that any old data is cleared away.
+	ld c, 10 ; Number of people to choose from.
+	ld hl, BugCatchingContestantEventFlagTable
+.loop1
 	push bc
 	push hl
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $0
+	ld b, RESET_FLAG
 	call EventFlagAction
 	pop hl
+rept 2
 	inc hl
-	inc hl
+endr
 	pop bc
 	dec c
-	jr nz, .asm_139ad
-	ld c, $5
-.asm_139c0
+	jr nz, .loop1
+
+; Now that that's out of the way, we can get on to the good stuff.
+	ld c, 5
+.loop2
 	push bc
-.asm_139c1
+.next
+; Choose a flag at uniform random to be set.
 	call Random
-	cp $fa
-	jr nc, .asm_139c1
-	ld c, $19
+	cp $fa ; 250
+	jr nc, .next
+	ld c, $19 ; 25
 	call SimpleDivide
 	ld e, b
 	ld d, 0
-	ld hl, Unknown_139fe
+	ld hl, BugCatchingContestantEventFlagTable
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 	push de
-	ld b, $2
+; If we've already set it, it doesn't count.
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	pop de
 	ld a, c
 	and a
-	jr nz, .asm_139c1
-	ld b, $1
+	jr nz, .next
+; Set the flag.  This will cause that sprite to not be visible in the contest.
+	ld b, SET_FLAG
 	call EventFlagAction
 	pop bc
+; Check if we're done.  If so, return.  Otherwise, choose the next victim.
 	dec c
-	jr nz, .asm_139c0
+	jr nz, .loop2
 	ret
 ; 139ed
 
-Function139ed: ; 139ed
-	ld hl, Unknown_139fe
+Special_CheckBugContestContestantFlag: ; 139ed
+; Checks the flag of the Bug Catching Contestant whose index is loaded in a.
+
+; Bug: If a >= 10 when this is called, it will read beyond the table.
+
+	ld hl, BugCatchingContestantEventFlagTable
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $2
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ret
 ; 139fe
 
-Unknown_139fe: ; 139fe
-	dw $0716
-	dw $0717
-	dw $0718
-	dw $0719
-	dw $071a
-	dw $071b
-	dw $071c
-	dw $071d
-	dw $071e
-	dw $071f
+BugCatchingContestantEventFlagTable: ; 139fe
+	dw EVENT_BUG_CATCHING_CONTESTANT_1A
+	dw EVENT_BUG_CATCHING_CONTESTANT_2A
+	dw EVENT_BUG_CATCHING_CONTESTANT_3A
+	dw EVENT_BUG_CATCHING_CONTESTANT_4A
+	dw EVENT_BUG_CATCHING_CONTESTANT_5A
+	dw EVENT_BUG_CATCHING_CONTESTANT_6A
+	dw EVENT_BUG_CATCHING_CONTESTANT_7A
+	dw EVENT_BUG_CATCHING_CONTESTANT_8A
+	dw EVENT_BUG_CATCHING_CONTESTANT_9A
+	dw EVENT_BUG_CATCHING_CONTESTANT_10A
 ; 13a12
 
-Function13a12: ; 13a12
+CheckFirstMonFainted: ; 13a12
 	ld hl, PartyMon1HP
 	ld a, [hli]
 	or [hl]
-	jr z, .asm_13a2b
+	jr z, .fainted
 	ld hl, PartyCount
 	ld a, 1
 	ld [hli], a
@@ -16099,13 +16062,13 @@
 	ld [ScriptVar], a
 	ret
 
-.asm_13a2b
+.fainted
 	ld a, $1
 	ld [ScriptVar], a
 	ret
 ; 13a31
 
-Function13a31: ; 13a31
+ContestReturnMons: ; 13a31
 	ld hl, PartySpecies + 1
 	ld a, [wdf9b]
 	ld [hl], a
@@ -16422,7 +16385,7 @@
 ; get time of day based on the current hour
 	ld a, [hHours] ; hour
 	ld hl, TimesOfDay
-	
+
 .check
 ; if we're within the given time period,
 ; get the corresponding time of day
@@ -16429,11 +16392,12 @@
 	cp [hl]
 	jr c, .match
 ; else, get the next entry
+rept 2
 	inc hl
-	inc hl
+endr
 ; try again
 	jr .check
-	
+
 .match
 ; get time of day
 	inc hl
@@ -16626,7 +16590,7 @@
 	push af
 	res 7, [hl]
 	set 6, [hl]
-	call Function14209
+	call RunCallback_04
 	pop af
 	ld [wd13e], a
 	ret
@@ -16638,7 +16602,7 @@
 	push af
 	set 7, [hl]
 	res 6, [hl]
-	call Function14209
+	call RunCallback_04
 	pop af
 	ld [wd13e], a
 	ret
@@ -16647,7 +16611,7 @@
 
 Function14168:: ; 14168
 	call Function1416f
-	call Function14209
+	call RunCallback_04
 	ret
 ; 1416f
 
@@ -16753,8 +16717,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, OutdoorSprites
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -16770,9 +16735,9 @@
 ; 14209
 
 
-Function14209: ; 14209
+RunCallback_04: ; 14209
 	ld a, $4
-	call Function263b
+	call RunMapCallback
 	call Function1439b
 	call Function14215
 	ret
@@ -16808,21 +16773,25 @@
 	call GetMonSprite
 	ret c
 
-	ld hl, SpriteHeaders
+	ld hl, SpriteHeaders ; address
 	dec a
 	ld c, a
 	ld b, 0
 	ld a, 6
 	call AddNTimes
+	; load the address into de
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
+	; load the length into c
 	ld a, [hli]
 	swap a
 	ld c, a
+	; load the sprite bank into both b and h
 	ld b, [hl]
 	ld a, [hli]
+	; load the sprite type into l
 	ld l, [hl]
 	ld h, a
 	ret
@@ -16865,7 +16834,7 @@
 .Mon
 	ld e, a
 	and a
-	jr z, .asm_1429f
+	jr z, .NoBreedmon
 
 	callba Function8e82b
 
@@ -16884,7 +16853,7 @@
 	and a
 	jp nz, GetMonSprite
 
-.asm_1429f
+.NoBreedmon
 	ld a, 1
 	ld l, 1
 	ld h, 0
@@ -16895,11 +16864,11 @@
 
 Function142a7:: ; 142a7
 	cp SPRITE_POKEMON
-	jr nc, .asm_142c2
+	jr nc, .is_pokemon
 
 	push hl
 	push bc
-	ld hl, SpriteHeaders + 4
+	ld hl, SpriteHeaders + 4 ; type
 	dec a
 	ld c, a
 	ld b, 0
@@ -16909,11 +16878,11 @@
 	pop bc
 	pop hl
 	cp 3
-	jr nz, .asm_142c2
+	jr nz, .is_pokemon
 	scf
 	ret
 
-.asm_142c2
+.is_pokemon
 	and a
 	ret
 ; 142c4
@@ -16922,7 +16891,7 @@
 _GetSpritePalette:: ; 142c4
 	ld a, c
 	call GetMonSprite
-	jr c, .asm_142d8
+	jr c, .is_pokemon
 
 	ld hl, SpriteHeaders + 5 ; palette
 	dec a
@@ -16933,7 +16902,7 @@
 	ld c, [hl]
 	ret
 
-.asm_142d8
+.is_pokemon
 	xor a
 	ld c, a
 	ret
@@ -16956,7 +16925,7 @@
 	push bc
 	ld b, a
 	ld hl, UsedSprites + 2
-	ld c, $1f
+	ld c, SPRITE_GFX_LIST_CAPACITY - 1
 .loop
 	ld a, [hl]
 	cp b
@@ -16963,8 +16932,9 @@
 	jr z, .exists
 	and a
 	jr z, .new
+rept 2
 	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .loop
 
@@ -16990,10 +16960,10 @@
 
 LoadSpriteGFX: ; 14306
 ; Bug: b is not preserved, so
-; it's useless as a loop count.
+; it's useless as a next count.
 
 	ld hl, UsedSprites
-	ld b, $20
+	ld b, SPRITE_GFX_LIST_CAPACITY
 .loop
 	ld a, [hli]
 	and a
@@ -17020,14 +16990,15 @@
 
 ; Run backwards through UsedSprites to find the last one.
 
-	ld c, $20
-	ld de, UsedSprites + ($20 - 1) * 2
+	ld c, SPRITE_GFX_LIST_CAPACITY
+	ld de, UsedSprites + (SPRITE_GFX_LIST_CAPACITY - 1) * 2
 .FindLastSprite
 	ld a, [de]
 	and a
 	jr nz, .FoundLastSprite
+rept 2
 	dec de
-	dec de
+endr
 	dec c
 	jr nz, .FindLastSprite
 .FoundLastSprite
@@ -17048,7 +17019,7 @@
 .CheckFollowing
 	ld a, [de]
 	cp [hl]
-	jr nc, .next
+	jr nc, .loop
 
 ; Swap the two sprites.
 
@@ -17068,15 +17039,17 @@
 
 ; Keep doing this until everything's in order.
 
-.next
+.loop
+rept 2
 	dec de
-	dec de
+endr
 	dec c
 	jr nz, .CheckFollowing
 
 	pop hl
+rept 2
 	inc hl
-	inc hl
+endr
 	pop de
 	pop bc
 	dec c
@@ -17092,7 +17065,7 @@
 ; Crystal introduces a second table in VRAM bank 0.
 
 	ld hl, UsedSprites
-	ld c, $20
+	ld c, SPRITE_GFX_LIST_CAPACITY
 	ld b, 0
 .FirstTableLength
 ; Keep going until the end of the list.
@@ -17106,10 +17079,10 @@
 ; Spill over into the second table after $80 tiles.
 	add b
 	cp $80
-	jr z, .next
+	jr z, .loop
 	jr nc, .SecondTable
 
-.next
+.loop
 	ld [hl], b
 	inc hl
 	ld b, a
@@ -17172,7 +17145,7 @@
 
 Function1439b: ; 1439b
 	ld hl, UsedSprites
-	ld c, $20
+	ld c, SPRITE_GFX_LIST_CAPACITY
 .asm_143a0
 	ld a, [wd13e]
 	res 5, a
@@ -17219,10 +17192,9 @@
 	pop bc
 	ld l, c
 	ld h, $0
+rept 4
 	add hl, hl
-	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	pop de
 	add hl, de
 	ld d, h
@@ -17249,10 +17221,9 @@
 	and $7f
 	ld l, a
 	ld h, $0
+rept 4
 	add hl, hl
-	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld a, l
 	add $0
 	ld l, a
@@ -17396,8 +17367,8 @@
 	db LUGIA
 	db HO_OH
 ; 144b8
-	
 
+
 OutdoorSprites: ; 144b8
 ; Valid sprite IDs for each map group.
 
@@ -18135,15 +18106,15 @@
 	ret
 ; 149c6
 
-Function149c6: ; 149c6
+CheckWarpCollision: ; 149c6
 	ld de, 1
-	ld hl, Unknown_149d3
+	ld hl, .blocks
 	ld a, [StandingTile]
 	call IsInArray
 	ret
 ; 149d3
 
-Unknown_149d3: ; 149d3
+.blocks: ; 149d3
 	db $71 ; door
 	db $79
 	db $7a ; stairs
@@ -18158,13 +18129,13 @@
 
 Function149dd:: ; 149dd
 	ld a, [StandingTile]
-	ld hl, Unknown_149ea
+	ld hl, .blocks
 	ld de, 1
 	call IsInArray
 	ret
 ; 149ea
 
-Unknown_149ea: ; 149ea
+.blocks: ; 149ea
 	db $08
 	db $18 ; tall grass
 	db $14 ; tall grass
@@ -18178,15 +18149,15 @@
 	db -1
 ; 149f5
 
-Function149f5: ; 149f5
+CheckCutCollision: ; 149f5
 	ld a, c
-	ld hl, Unknown_14a00
+	ld hl, .blocks
 	ld de, 1
 	call IsInArray
 	ret
 ; 14a00
 
-Unknown_14a00: ; 14a00
+.blocks: ; 14a00
 	db $12 ; cut tree
 	db $1a ; cut tree
 	db $10 ; tall grass
@@ -18212,21 +18183,21 @@
 	call Function1d6e
 	callba Function5e9a
 	call SpeechTextBox
-	call Function1ad2
+	call DrawOnMap
 	callba Function4cf45
 	ld hl, UnknownText_0x15283
-	call Function14baf
-	jr nz, .asm_14a4a
-	call Function14b89
-	jr c, .asm_14a4a
-	call Function14b54
-	call Function14be3
-	call Function14b5a
-	call Function1c07
+	call SaveTheGame_yesorno
+	jr nz, .refused
+	call CheckForExistingSaveFile
+	jr c, .refused
+	call SetWRAMStateForSave
+	call _SavingDontTurnOffThePower
+	call ClearWRAMStateAfterSave
+	call ExitMenu
 	and a
 	ret
-.asm_14a4a
-	call Function1c07
+.refused
+	call ExitMenu
 	call Functiond90
 	callba Function4cf45
 	scf
@@ -18233,16 +18204,16 @@
 	ret
 
 Function14a58: ; 14a58
-	call Function14b54
+	call SetWRAMStateForSave
 	callba Function14056
 	callba Function1050d9
-	call Function14df7
+	call SavePartyData
 	call Function14e13
-	call Function14e76
+	call LoadSavedPartyData
 	call Function14e8b
 	callba Function44725
 	callba Function1406a
-	call Function14b5a
+	call ClearWRAMStateAfterSave
 	ret
 ; 14a83
 
@@ -18250,41 +18221,41 @@
 Function14a83: ; 14a83 (5:4a83)
 	push de
 	ld hl, UnknownText_0x152a1
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
-	call Function1c07
-	jr c, .asm_14ab0
-	call Function14b89
-	jr c, .asm_14ab0
-	call Function14b54
-	call Function14c99
+	call ExitMenu
+	jr c, .refused
+	call CheckForExistingSaveFile
+	jr c, .refused
+	call SetWRAMStateForSave
+	call SavingDontTurnOffThePower
 	call Function14e0c
 	pop de
 	ld a, e
 	ld [wCurBox], a
 	call Function15021
-	call Function14be6
-	call Function14b5a
+	call SavedTheGame
+	call ClearWRAMStateAfterSave
 	and a
 	ret
-.asm_14ab0
+.refused
 	pop de
 	ret
 
 Function14ab2: ; 14ab2
-	call Function14b89
-	jr c, .asm_14ac1
-	call Function14b54
-	call Function14be3
-	call Function14b5a
+	call CheckForExistingSaveFile
+	jr c, .refused
+	call SetWRAMStateForSave
+	call _SavingDontTurnOffThePower
+	call ClearWRAMStateAfterSave
 	and a
 
-.asm_14ac1
+.refused
 	ret
 ; 14ac2
 
 Function14ac2: ; 14ac2
-	call Function14b54
+	call SetWRAMStateForSave
 	push de
 	call Function14e0c
 	pop de
@@ -18291,12 +18262,12 @@
 	ld a, e
 	ld [wCurBox], a
 	call Function15021
-	call Function14b5a
+	call ClearWRAMStateAfterSave
 	ret
 ; 14ad5
 
 Function14ad5: ; 14ad5
-	call Function14b54
+	call SetWRAMStateForSave
 	push de
 	call Function14e0c
 	pop de
@@ -18307,20 +18278,20 @@
 	callba Function14056
 	callba Function1050d9
 	call Function14da9
-	call Function14dbb
-	call Function14dd7
-	call Function14df7
+	call SaveOptionsSelection
+	call SavePlayerData
+	call SavePartyData
 	call Function14e13
 	call Function14e2d
-	call Function14e40
-	call Function14e55
-	call Function14e76
+	call LoadSavedOptions
+	call LoadSavedPlayerData
+	call LoadSavedPartyData
 	call Function14e8b
 	callba Function44725
 	callba Function106187
 	callba Function1406a
 	call Function15021
-	call Function14b5a
+	call ClearWRAMStateAfterSave
 	ld de, SFX_SAVE
 	call PlaySFX
 	ld c, $18
@@ -18330,15 +18301,15 @@
 
 Function14b34: ; 14b34
 	ld hl, UnknownText_0x152a6
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
-	call Function1c07
+	call ExitMenu
 	jr c, .asm_14b52
-	call Function14b89
+	call CheckForExistingSaveFile
 	jr c, .asm_14b52
-	call Function14b54
-	call Function14be3
-	call Function14b5a
+	call SetWRAMStateForSave
+	call _SavingDontTurnOffThePower
+	call ClearWRAMStateAfterSave
 	and a
 	ret
 
@@ -18347,13 +18318,13 @@
 	ret
 ; 14b54
 
-Function14b54: ; 14b54
+SetWRAMStateForSave: ; 14b54
 	ld a, $1
 	ld [wc2cd], a
 	ret
 ; 14b5a
 
-Function14b5a: ; 14b5a
+ClearWRAMStateAfterSave: ; 14b5a
 	xor a
 	ld [wc2cd], a
 	ret
@@ -18366,7 +18337,7 @@
 	ld hl, $bdd9
 	ld de, $be3b
 	ld bc, $0b1a
-.asm_14b6d
+.loop
 	ld a, [hld]
 	ld [de], a
 	dec de
@@ -18373,10 +18344,10 @@
 	dec bc
 	ld a, c
 	or b
-	jr nz, .asm_14b6d
+	jr nz, .loop
 	ld hl, OverworldMap
 	ld de, $b2c0
-	ld bc, $0062
+	ld bc, 7 * 14
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -18387,44 +18358,44 @@
 	ret
 ; 14b89
 
-Function14b89: ; 14b89
+CheckForExistingSaveFile: ; 14b89
 	ld a, [wcfcd]
 	and a
-	jr z, .asm_14ba8
+	jr z, .getridofpreviousplayersave
 	call Function14bcb
-	jr z, .asm_14b9e
+	jr z, .yoursavefile
 	ld hl, UnknownText_0x15297
-	call Function14baf
-	jr nz, .asm_14bad
-	jr .asm_14ba8
+	call SaveTheGame_yesorno
+	jr nz, .refused
+	jr .getridofpreviousplayersave
 
-.asm_14b9e
+.yoursavefile
 	ld hl, UnknownText_0x15292
-	call Function14baf
-	jr nz, .asm_14bad
-	jr .asm_14bab
+	call SaveTheGame_yesorno
+	jr nz, .refused
+	jr .ok
 
-.asm_14ba8
-	call Function14cbb
+.getridofpreviousplayersave
+	call GetRidOfPreviousPlayersSave
 
-.asm_14bab
+.ok
 	and a
 	ret
 
-.asm_14bad
+.refused
 	scf
 	ret
 ; 14baf
 
-Function14baf: ; 14baf
+SaveTheGame_yesorno: ; 14baf
 	ld b, BANK(UnknownText_0x15283)
-	call Function269a
-	call Function1d58
+	call MapTextbox
+	call LoadMenuTextBox
 	lb bc, 0, 7
 	call PlaceYesNoBox
 	ld a, [wcfa9]
 	dec a
-	call Function1c17
+	call WriteBackup
 	push af
 	call Functiond90
 	pop af
@@ -18448,23 +18419,29 @@
 	ret
 ; 14be3
 
-Function14be3: ; 14be3
-	call Function14c99
-Function14be6: ; 14be6
+_SavingDontTurnOffThePower: ; 14be3
+	call SavingDontTurnOffThePower
+SavedTheGame: ; 14be6
 	call Function14c10
+	; wait 32 frames
 	ld c, $20
 	call DelayFrames
+	; copy the original text speed setting to the stack
 	ld a, [Options]
 	push af
-	ld a, $3
+	; set text speed super slow
+	ld a, 3
 	ld [Options], a
+	; <PLAYER> saved the game!
 	ld hl, UnknownText_0x1528d
 	call PrintText
+	; restore the original text speed setting
 	pop af
 	ld [Options], a
 	ld de, SFX_SAVE
 	call WaitPlaySFX
 	call WaitSFX
+	; wait 30 frames
 	ld c, $1e
 	call DelayFrames
 	ret
@@ -18472,20 +18449,20 @@
 
 
 Function14c10: ; 14c10
-	ld a, $1
+	ld a, 1
 	ld [wcfcd], a
 	callba Function14056
 	callba Function1050d9
 	call Function14da9
-	call Function14dbb
-	call Function14dd7
-	call Function14df7
+	call SaveOptionsSelection
+	call SavePlayerData
+	call SavePartyData
 	call Function14e0c
 	call Function14e13
 	call Function14e2d
-	call Function14e40
-	call Function14e55
-	call Function14e76
+	call LoadSavedOptions
+	call LoadSavedPlayerData
+	call LoadSavedPartyData
 	call Function14e8b
 	call Function14c6b
 	callba Function44725
@@ -18541,20 +18518,26 @@
 	jr .asm_14c93
 ; 14c99
 
-Function14c99: ; 14c99
+SavingDontTurnOffThePower: ; 14c99
+	; Prevent joypad interrupts
 	xor a
 	ld [hJoypadReleased], a
 	ld [hJoypadPressed], a
 	ld [hJoypadSum], a
 	ld [hJoypadDown], a
+	; Save the text speed setting to the stack
 	ld a, [Options]
 	push af
+	; Set the text speed to super slow
 	ld a, $3
 	ld [Options], a
+	; SAVING... DON'T TURN OFF THE POWER.
 	ld hl, UnknownText_0x15288
 	call PrintText
+	; Restore the text speed setting
 	pop af
 	ld [Options], a
+	; Wait for 16 frames
 	ld c, $10
 	call DelayFrames
 	ret
@@ -18561,7 +18544,7 @@
 ; 14cbb
 
 
-Function14cbb: ; 14cbb
+GetRidOfPreviousPlayersSave: ; 14cbb
 	call Function151fb
 	call Function14d06
 	call Function14ce2
@@ -18610,11 +18593,12 @@
 ; 14d18
 
 Function14d18: ; 14d18
+; copy Unknown_14d2c to SRA4:a007
 	ld a, $4
 	call GetSRAMBank
 	ld hl, Unknown_14d2c
 	ld de, $a007
-	ld bc, $0030
+	ld bc, 48
 	call CopyBytes
 	jp CloseSRAM
 ; 14d2c
@@ -18649,10 +18633,10 @@
 	ld a, [$a60b]
 	ld b, $0
 	and a
-	jr z, .asm_14d7b
+	jr z, .ok
 	ld b, $2
 
-.asm_14d7b
+.ok
 	ld a, b
 	ld [$a60b], a
 	call CloseSRAM
@@ -18683,7 +18667,7 @@
 	ld a, [wd4b4]
 	and a
 	ret nz
-	call Function14cbb
+	call GetRidOfPreviousPlayersSave
 	ret
 ; 14da9
 
@@ -18690,19 +18674,20 @@
 Function14da9: ; 14da9
 	ld a, $1
 	call GetSRAMBank
-	ld a, $63
+	ld a, 99
 	ld [$a008], a
-	ld a, $7f
+	ld a, " "
 	ld [$ad0f], a
 	jp CloseSRAM
 ; 14dbb
 
-Function14dbb: ; 14dbb
+SaveOptionsSelection: ; 14dbb
+; Copy Options to SRA1:a000
 	ld a, $1
 	call GetSRAMBank
 	ld hl, Options
 	ld de, $a000
-	ld bc, $0008
+	ld bc, OptionsEnd - Options
 	call CopyBytes
 	ld a, [Options]
 	and $ef
@@ -18710,26 +18695,28 @@
 	jp CloseSRAM
 ; 14dd7
 
-Function14dd7: ; 14dd7
+SavePlayerData: ; 14dd7
+; Copy 2122 bytes starting at PlayerID to SRA1:a009
 	ld a, $1
 	call GetSRAMBank
 	ld hl, PlayerID
 	ld de, $a009
-	ld bc, $082a
+	ld bc, VisitedSpawns - PlayerID
 	call CopyBytes
 	ld hl, VisitedSpawns
 	ld de, $a833
-	ld bc, $0032
+	ld bc, PartyCount - VisitedSpawns
 	call CopyBytes
 	jp CloseSRAM
 ; 14df7
 
-Function14df7: ; 14df7
+SavePartyData: ; 14df7
+; Copy your party to SRA1:a865.
 	ld a, $1
 	call GetSRAMBank
 	ld hl, PartyCount
 	ld de, $a865
-	ld bc, $031e
+	ld bc, wdff5 - PartyCount
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -18758,46 +18745,46 @@
 Function14e2d: ; 14e2d
 	ld a, $0
 	call GetSRAMBank
-	ld a, $63
+	ld a, 99
 	ld [$b208], a
-	ld a, $7f
+	ld a, " "
 	ld [$bf0f], a
 	call CloseSRAM
 	ret
 ; 14e40
 
-Function14e40: ; 14e40
+LoadSavedOptions: ; 14e40
 	ld a, $0
 	call GetSRAMBank
 	ld hl, Options
 	ld de, $b200
-	ld bc, $0008
+	ld bc, OptionsEnd - Options
 	call CopyBytes
 	call CloseSRAM
 	ret
 ; 14e55
 
-Function14e55: ; 14e55
+LoadSavedPlayerData: ; 14e55
 	ld a, $0
 	call GetSRAMBank
 	ld hl, PlayerID
 	ld de, $b209
-	ld bc, $082a
+	ld bc, VisitedSpawns - PlayerID
 	call CopyBytes
 	ld hl, VisitedSpawns
 	ld de, $ba33
-	ld bc, $0032
+	ld bc, PartyCount - VisitedSpawns
 	call CopyBytes
 	call CloseSRAM
 	ret
 ; 14e76
 
-Function14e76: ; 14e76
+LoadSavedPartyData: ; 14e76
 	ld a, $0
 	call GetSRAMBank
 	ld hl, PartyCount
 	ld de, $ba65
-	ld bc, $031e
+	ld bc, wdff5 - PartyCount
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -18818,9 +18805,9 @@
 ; 14ea5
 
 
-Function14ea5: ; 14ea5 (5:4ea5)
+TryLoadSaveFile: ; 14ea5 (5:4ea5)
 	call Function15028
-	jr nz, .asm_14ed6
+	jr nz, .trytowrite
 	call Function14fd7
 	call Function1500c
 	call Function15021
@@ -18828,15 +18815,15 @@
 	callba Function10619d
 	callba Function1050ea
 	call Function14e2d
-	call Function14e40
-	call Function14e55
-	call Function14e76
+	call LoadSavedOptions
+	call LoadSavedPlayerData
+	call LoadSavedPartyData
 	call Function14e8b
 	and a
 	ret
-.asm_14ed6
+.trytowrite
 	call Function1507c
-	jr nz, .asm_14f07
+	jr nz, .corrupt
 	call Function15046
 	call Function15067
 	call Function15021
@@ -18844,13 +18831,13 @@
 	callba Function10619d
 	callba Function1050ea
 	call Function14da9
-	call Function14dbb
-	call Function14dd7
-	call Function14df7
+	call SaveOptionsSelection
+	call SavePlayerData
+	call SavePartyData
 	call Function14e13
 	and a
 	ret
-.asm_14f07
+.corrupt
 	ld a, [Options]
 	push af
 	set 4, a
@@ -18892,7 +18879,7 @@
 	call GetSRAMBank
 	ld hl, $b244
 	ld de, StartDay
-	ld bc, $0008
+	ld bc, 8
 	call CopyBytes
 	ld hl, $b5da
 	ld de, StatusFlags
@@ -18904,7 +18891,7 @@
 .asm_14f6c
 	ld hl, DefaultOptions
 	ld de, Options
-	ld bc, $0008
+	ld bc, OptionsEnd - Options
 	call CopyBytes
 	call Function67e
 	ret
@@ -18921,25 +18908,24 @@
 	db $00
 ; 14f84
 
-
 Function14f84: ; 14f84
 	ld a, $1
 	call GetSRAMBank
 	ld a, [$a008]
-	cp $63
-	jr nz, .asm_14fab
+	cp 99
+	jr nz, .nope
 	ld a, [$ad0f]
-	cp $7f
-	jr nz, .asm_14fab
+	cp " "
+	jr nz, .nope
 	ld hl, $a000
 	ld de, Options
-	ld bc, $0008
+	ld bc, OptionsEnd - Options
 	call CopyBytes
 	call CloseSRAM
 	ld a, $1
 	ld [wcfcd], a
 
-.asm_14fab
+.nope
 	call CloseSRAM
 	ret
 ; 14faf
@@ -18948,19 +18934,19 @@
 	ld a, $0
 	call GetSRAMBank
 	ld a, [$b208]
-	cp $63
-	jr nz, .asm_14fd3
+	cp 99
+	jr nz, .nope
 	ld a, [$bf0f]
-	cp $7f
-	jr nz, .asm_14fd3
+	cp " "
+	jr nz, .nope
 	ld hl, $b200
 	ld de, Options
-	ld bc, $0008
+	ld bc, OptionsEnd - Options
 	call CopyBytes
 	ld a, $2
 	ld [wcfcd], a
 
-.asm_14fd3
+.nope
 	call CloseSRAM
 	ret
 ; 14fd7
@@ -18971,11 +18957,11 @@
 	call GetSRAMBank
 	ld hl, $a009
 	ld de, PlayerID
-	ld bc, $82a
+	ld bc, VisitedSpawns - PlayerID
 	call CopyBytes
 	ld hl, $a833
 	ld de, VisitedSpawns
-	ld bc, $32
+	ld bc, PartyCount - VisitedSpawns
 	call CopyBytes
 	call CloseSRAM
 	ld a, $1
@@ -18994,7 +18980,7 @@
 	call GetSRAMBank
 	ld hl, $a865
 	ld de, PartyCount
-	ld bc, $031e
+	ld bc, wdff5 - PartyCount
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -19028,11 +19014,11 @@
 	call GetSRAMBank
 	ld hl, $b209
 	ld de, PlayerID
-	ld bc, $82a
+	ld bc, VisitedSpawns - PlayerID
 	call CopyBytes
 	ld hl, $ba33
 	ld de, VisitedSpawns
-	ld bc, $32
+	ld bc, PartyCount - VisitedSpawns
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -19042,7 +19028,7 @@
 	call GetSRAMBank
 	ld hl, $ba65
 	ld de, PartyCount
-	ld bc, $31e
+	ld bc, wdff5 - PartyCount
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -19070,7 +19056,7 @@
 	call GetSRAMBank
 	ld hl, PlayerGender
 	ld de, $be3d
-	ld bc, $0007
+	ld bc, wd479 - PlayerGender
 	call CopyBytes
 	ld hl, wd479
 	ld a, [hli]
@@ -19086,7 +19072,7 @@
 	call GetSRAMBank
 	ld hl, $be3d
 	ld de, PlayerGender
-	ld bc, $7
+	ld bc, wd479 - PlayerGender
 	call CopyBytes
 	ld hl, wd479
 	ld a, [$a60e]
@@ -19107,11 +19093,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_1522d
+rept 5
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	push af
 	ld a, [hli]
@@ -19247,7 +19231,7 @@
 Function151fb: ; 151fb
 	ld hl, Unknown_1522d
 	ld c, $e
-.asm_15200
+.outerloop
 	push bc
 	ld a, [hli]
 	call GetSRAMBank
@@ -19258,11 +19242,11 @@
 	xor a
 	ld [de], a
 	inc de
-	ld a, $ff
+	ld a, -1
 	ld [de], a
 	inc de
 	ld bc, $044c
-.asm_15213
+.loop
 	xor a
 	ld [de], a
 	inc de
@@ -19269,12 +19253,12 @@
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_15213
+	jr nz, .loop
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
-	ld a, $ff
+	ld a, -1
 	ld [de], a
 	inc de
 	xor a
@@ -19282,43 +19266,43 @@
 	call CloseSRAM
 	pop bc
 	dec c
-	jr nz, .asm_15200
+	jr nz, .outerloop
 	ret
 ; 1522d
 
 Unknown_1522d: ; 1522d
 ; dbww bank, address, address
-	db $02, $00, $a0, $4e, $a4 ; 2, $a000, $a44e
-	db $02, $50, $a4, $9e, $a8 ; 2, $a450, $a89e
-	db $02, $a0, $a8, $ee, $ac ; 2, $a8a0, $acee
-	db $02, $f0, $ac, $3e, $b1 ; 2, $acf0, $b13e
-	db $02, $40, $b1, $8e, $b5 ; 2, $b140, $b5de
-	db $02, $90, $b5, $de, $b9 ; 2, $b590, $b9de
-	db $02, $e0, $b9, $2e, $be ; 2, $b9e0, $be2e
+	dbww $02, $a000, $a44e ; 2, $a000, $a44e
+	dbww $02, $a450, $a89e ; 2, $a450, $a89e
+	dbww $02, $a8a0, $acee ; 2, $a8a0, $acee
+	dbww $02, $acf0, $b13e ; 2, $acf0, $b13e
+	dbww $02, $b140, $b58e ; 2, $b140, $b5de
+	dbww $02, $b590, $b9de ; 2, $b590, $b9de
+	dbww $02, $b9e0, $be2e ; 2, $b9e0, $be2e
 
-	db $03, $00, $a0, $4e, $a4 ; 3, $a000, $a44e
-	db $03, $50, $a4, $9e, $a8 ; 3, $a450, $a89e
-	db $03, $a0, $a8, $ee, $ac ; 3, $a8a0, $acee
-	db $03, $f0, $ac, $3e, $b1 ; 3, $acf0, $b13e
-	db $03, $40, $b1, $8e, $b5 ; 3, $b140, $b58e
-	db $03, $90, $b5, $de, $b9 ; 3, $b590, $b9de
-	db $03, $e0, $b9, $2e, $be ; 3, $b9e0, $be2e
+	dbww $03, $a000, $a44e ; 3, $a000, $a44e
+	dbww $03, $a450, $a89e ; 3, $a450, $a89e
+	dbww $03, $a8a0, $acee ; 3, $a8a0, $acee
+	dbww $03, $acf0, $b13e ; 3, $acf0, $b13e
+	dbww $03, $b140, $b58e ; 3, $b140, $b58e
+	dbww $03, $b590, $b9de ; 3, $b590, $b9de
+	dbww $03, $b9e0, $be2e ; 3, $b9e0, $be2e
 ; 15273
 
 
 Function15273: ; 15273
-	ld de, $0000
-.asm_15276
+	ld de, 0
+.loop
 	ld a, [hli]
 	add e
 	ld e, a
-	ld a, $0
+	ld a, 0
 	adc d
 	ld d, a
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_15276
+	jr nz, .loop
 	ret
 ; 15283
 
@@ -19376,73 +19360,81 @@
 
 INCLUDE "engine/map_setup.asm"
 
-Function1559a: ; 1559a
-	call Function15650
+PokemonCenterPC: ; 1559a
+	call PC_CheckPartyForPokemon
 	ret c
-	call Function156b3
+	call PC_PlayBootSound
 	ld hl, UnknownText_0x15a27
-	call Function15a20
+	call PC_DisplayText
 	ld hl, UnknownText_0x15a2c
-	call Function157bb
-	ld hl, MenuDataHeader_0x155d6
+	call PC_DisplayTextWaitMenu
+	ld hl, .TopMenu
 	call LoadMenuDataHeader
-.asm_155b3
+.loop
 	xor a
 	ld [hBGMapMode], a
 	call Function1563e
 	ld [wcf76], a
 	call Function1e5d
-	jr c, .asm_155cc
+	jr c, .shutdown
 	ld a, [MenuSelection]
-	ld hl, Unknown_155e6
+	ld hl, .JumpTable
 	call Function1fa7
-	jr nc, .asm_155b3
+	jr nc, .loop
 
-.asm_155cc
+.shutdown
 	call Function156b8
-	call Function1c07
-	call Function1c17
+	call ExitMenu
+	call WriteBackup
 	ret
 ; 155d6
 
-MenuDataHeader_0x155d6: ; 0x155d6
+.TopMenu: ; 0x155d6
 	db $48 ; flags
 	db 00, 00 ; start coords
 	db 12, 15 ; end coords
-	dw MenuData2_0x155de
+	dw .MenuData2
 	db 1 ; default option
 ; 0x155de
 
-MenuData2_0x155de: ; 0x155de
+.MenuData2: ; 0x155de
 	db $a0 ; flags
 	db 0 ; items
-	dw Unknown_1562c
+	dw .WhichPC
 	dw Function1f8d
-	dw Unknown_155e6
+	dw .JumpTable
 ; 0x155e6
 
-Unknown_155e6: ; 155e6
-	dw Function15679, String_155fa
-	dw Function15668, String_15600
-	dw Function15689, String_15609
-	dw Function1569a, String_15616
-	dw Function156ab, String_15623
+.JumpTable: ; 155e6
+	dw Function15679, .String_PlayersPC
+	dw Function15668, .String_BillsPC
+	dw Function15689, .String_OaksPC
+	dw Function1569a, .String_HallOfFame
+	dw Function156ab, .String_TurnOff
 ; 155fa
 
-String_155fa:	db "<PLAYER>'s PC@"
-String_15600:	db "BILL's PC@"
-String_15609:	db "PROF.OAK's PC@"
-String_15616:	db "HALL OF FAME@"
-String_15623:	db "TURN OFF@"
+.String_PlayersPC:	db "<PLAYER>'s PC@"
+.String_BillsPC:	db "BILL's PC@"
+.String_OaksPC:	    db "PROF.OAK's PC@"
+.String_HallOfFame:	db "HALL OF FAME@"
+.String_TurnOff:	db "TURN OFF@"
 ; 1562c
 
-Unknown_1562c: ; 1562c
-	db 3
-	db 1, 0, 4, $ff
-	db 4
-	db 1, 0, 2, 4, $ff
-	db 5
-	db 1, 0, 2, 3, 4, $ff
+.WhichPC: ; 1562c
+	; before pokedex
+	db  3 ; items
+	db  1, 0, 4 ; bill's, player's, turn off
+	db -1
+
+	; before Hall Of Fame
+	db  4 ; items
+	db  1, 0, 2, 4 ; bill's, player's, oak's, turn off
+	db -1
+
+	; postgame
+	db  5 ; items
+	db  1, 0, 2, 3, 4 ; bill's, player's, oak's, hall of fame, turn off
+	db -1
 ; 1563e
 
 Function1563e: ; 1563e
@@ -19460,7 +19452,7 @@
 	ret
 ; 15650
 
-Function15650: ; 15650
+PC_CheckPartyForPokemon: ; 15650
 	ld a, [PartyCount]
 	and a
 	ret nz
@@ -19467,7 +19459,7 @@
 	ld de, SFX_CHOOSE_PC_OPTION
 	call PlaySFX
 	ld hl, UnknownText_0x15663
-	call Function15a20
+	call PC_DisplayText
 	scf
 	ret
 ; 15663
@@ -19481,7 +19473,7 @@
 Function15668: ; 15668
 	call Function156c2
 	ld hl, UnknownText_0x15a31
-	call Function15a20
+	call PC_DisplayText
 	callba Functione3fd
 	and a
 	ret
@@ -19490,7 +19482,7 @@
 Function15679: ; 15679
 	call Function156c2
 	ld hl, UnknownText_0x15a36
-	call Function15a20
+	call PC_DisplayText
 	ld b, $0
 	call Function15704
 	and a
@@ -19500,7 +19492,7 @@
 Function15689: ; 15689
 	call Function156c2
 	ld hl, UnknownText_0x15a3b
-	call Function15a20
+	call PC_DisplayText
 	callba ProfOaksPC
 	and a
 	ret
@@ -19522,7 +19514,7 @@
 	ret
 ; 156b3
 
-Function156b3: ; 156b3
+PC_PlayBootSound: ; 156b3
 	ld de, SFX_BOOT_PC
 	jr Function156d0
 
@@ -19550,9 +19542,9 @@
 ; 156d9
 
 Function156d9: ; 156d9
-	call Function156b3
+	call PC_PlayBootSound
 	ld hl, UnknownText_0x156ff
-	call Function15a20
+	call PC_DisplayText
 	ld b, $1
 	call Function15704
 	and a
@@ -19559,7 +19551,7 @@
 	jr nz, .asm_156f9
 	call Function2173
 	call Function321c
-	call Function1ad2
+	call DrawOnMap
 	call Function156b8
 	ld c, $0
 	ret
@@ -19580,9 +19572,9 @@
 	ld a, b
 	ld [wcf76], a
 	ld hl, UnknownText_0x157cc
-	call Function157bb
+	call PC_DisplayTextWaitMenu
 	call Function15715
-	call Function1c07
+	call ExitMenu
 	ret
 ; 15715
 
@@ -19604,7 +19596,7 @@
 	xor a
 
 .asm_15732
-	call Function1c07
+	call ExitMenu
 	ret
 ; 15736
 
@@ -19654,7 +19646,7 @@
 	db TOSS_ITEM
 	db MAIL_BOX
 	db TURN_OFF
-	db $ff
+	db -1
 
 .KrissPCMenuList2
 	db 6
@@ -19664,14 +19656,14 @@
 	db MAIL_BOX
 	db DECORATION
 	db LOG_OFF
-	db $ff
+	db -1
 
-Function157bb: ; 157bb
+PC_DisplayTextWaitMenu: ; 157bb
 	ld a, [Options]
 	push af
 	set 4, a
 	ld [Options], a
-	call Function1d4f
+	call MenuTextBox
 	pop af
 	ld [Options], a
 	ret
@@ -19712,10 +19704,10 @@
 
 .askquantity
 	ld hl, .HowManyText
-	call Function1d4f
+	call MenuTextBox
 	callba Function24fbf
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	jr c, .done
 
 .withdraw
@@ -19734,15 +19726,15 @@
 	call TossItem
 	predef PartyMonItemName
 	ld hl, .WithdrewText
-	call Function1d4f
+	call MenuTextBox
 	xor a
 	ld [hBGMapMode], a
-	call Function1c07
+	call ExitMenu
 	ret
 
 .PackFull
 	ld hl, .NoRoomText
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 
 .done
@@ -19823,7 +19815,7 @@
 	callba Function129d5
 	ret nc
 	ld hl, UnknownText_0x158c7
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; 0x158c7
@@ -19884,11 +19876,11 @@
 
 .asm_1591d
 	ld hl, .HowManyText
-	call Function1d4f
+	call MenuTextBox
 	callba Function24fbf
 	push af
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	pop af
 	jr c, .asm_1596c
 
@@ -19951,7 +19943,7 @@
 	ld a, $0
 	ld [wc2ce], a
 	ld hl, MenuData15a08
-	call Function1d3c
+	call CopyMenuDataHeader
 	hlcoord 0, 0
 	ld b, $a
 	ld c, $12
@@ -20030,9 +20022,9 @@
 	dbw BANK(Function24ac3), Function24ac3
 	dbw BANK(Function244c3), Function244c3
 
-Function15a20: ; 15a20
-	call Function1d4f
-	call Function1c07
+PC_DisplayText: ; 15a20
+	call MenuTextBox
+	call ExitMenu
 	ret
 ; 15a27
 
@@ -20078,7 +20070,7 @@
 	call GetMart
 	ld a, c
 	ld [EngineBuffer1], a
-	call Function15b10
+	call LoadMartPointer
 	ld a, [EngineBuffer1]
 	ld hl, .dialogs
 	rst JumpTable
@@ -20090,7 +20082,7 @@
 	dw HerbShop
 	dw BargainShop
 	dw Pharmacist
-	dw VendingMachine
+	dw RooftopSale
 ; 15a61
 
 MartDialog: ; 15a61
@@ -20114,9 +20106,9 @@
 ; 15a84
 
 BargainShop: ; 15a84
-	ld b, BANK(Unknown_15c51)
-	ld de, Unknown_15c51
-	call Function15b10
+	ld b, BANK(BargainShopData)
+	ld de, BargainShopData
+	call LoadMartPointer
 	call Function15c25
 	call Function1d6e
 	ld hl, UnknownText_0x15e6d
@@ -20126,7 +20118,7 @@
 	ld a, [hli]
 	or [hl]
 	jr z, .asm_15aa7
-	ld hl, wdc1e
+	ld hl, DailyFlags
 	set 6, [hl]
 
 .asm_15aa7
@@ -20146,17 +20138,17 @@
 	ret
 ; 15ac4
 
-VendingMachine: ; 15ac4
-	ld b, BANK(Unknown_15aee)
-	ld de, Unknown_15aee
+RooftopSale: ; 15ac4
+	ld b, BANK(RooftopSaleData1)
+	ld de, RooftopSaleData1
 	ld hl, StatusFlags
-	bit 6, [hl]
-	jr z, .asm_15ad5
-	ld b, BANK(Unknown_15aff)
-	ld de, Unknown_15aff
+	bit 6, [hl] ; hall of fame
+	jr z, .ok
+	ld b, BANK(RooftopSaleData2)
+	ld de, RooftopSaleData2
 
-.asm_15ad5
-	call Function15b10
+.ok
+	call LoadMartPointer
 	call Function15c25
 	call Function1d6e
 	ld hl, UnknownText_0x15f83
@@ -20167,15 +20159,27 @@
 	ret
 ; 15aee
 
-Unknown_15aee: ; 15aee
-	db $05, $05, $96, $00, $04, $f4, $01, $11, $f4, $01, $26, $f4, $01, $27, $b0, $04, $ff
-Unknown_15aff: ; 15aff
-	db $05, $10, $e8, $03, $0e, $d0, $07, $26, $f4, $01, $02, $e8, $03, $1b, $78, $1e, $ff
+RooftopSaleData1: ; 15aee
+	db 5
+	dbw POKE_BALL,     150
+	dbw GREAT_BALL,    500
+	dbw SUPER_POTION,  500
+	dbw FULL_HEAL,     500
+	dbw REVIVE,       1200
+	db -1
+RooftopSaleData2: ; 15aff
+	db 5
+	dbw HYPER_POTION, 1000
+	dbw FULL_RESTORE, 2000
+	dbw FULL_HEAL,     500
+	dbw ULTRA_BALL,   1000
+	dbw PROTEIN,      7800
+	db -1
 ; 15b10
 
-Function15b10: ; 15b10
+LoadMartPointer: ; 15b10
 	ld a, b
-	ld [wd03f], a
+	ld [MartPointerBank], a
 	ld a, e
 	ld [MartPointer], a
 	ld a, d
@@ -20201,8 +20205,9 @@
 
 .IsAMart
 	ld hl, Marts
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -20239,8 +20244,8 @@
 
 Function15b6e: ; 15b6e
 	ld hl, MenuDataHeader_0x15f88
-	call Function1d3c
-	call Function1d81
+	call CopyMenuDataHeader
+	call InterpretMenu2
 	jr c, .asm_15b84
 	ld a, [wcfa9]
 	cp $1
@@ -20259,7 +20264,7 @@
 ; 15b8d
 
 Function15b8d: ; 15b8d
-	call Function1c07
+	call ExitMenu
 	call ReadMart
 	call Function15c62
 	and a
@@ -20268,7 +20273,7 @@
 ; 15b9a
 
 Function15b9a: ; 15b9a
-	call Function1c07
+	call ExitMenu
 	call Function15eb3
 	ld a, $5
 	ret
@@ -20275,7 +20280,7 @@
 ; 15ba3
 
 Function15ba3: ; 15ba3
-	call Function1c07
+	call ExitMenu
 	ld hl, UnknownText_0x15fb4
 	call Function15fcd
 	ld a, $ff
@@ -20302,7 +20307,7 @@
 	ld [de], a
 	inc hl
 	inc de
-	cp $ff
+	cp -1
 	jr nz, .CopyMart
 	ld hl, DefaultFlypoint
 	ld de, CurMart + 1
@@ -20336,13 +20341,13 @@
 	ld [StringBuffer2 + 1], a
 	ld hl, StringBuffer1
 	ld de, StringBuffer2
-	ld bc, $82 << 8 + 6 ; 6 digits
+	lb bc, $82, 6 ; 6 digits
 	call PrintNum
 	pop hl
 
 	ld de, StringBuffer1
 	ld c, 6 / 2 ; 6 digits
-.asm_15c0b
+.loop
 	call .TileToNum
 	swap a
 	ld b, a
@@ -20350,7 +20355,7 @@
 	or b
 	ld [hli], a
 	dec c
-	jr nz, .asm_15c0b
+	jr nz, .loop
 	ret
 ; 15c1a
 
@@ -20375,12 +20380,12 @@
 	inc hl
 	ld bc, wd002
 	ld de, CurMart + 1
-.asm_15c33
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
-	cp $ff
-	jr z, .asm_15c4b
+	cp -1
+	jr z, .done
 
 	push de
 	ld a, [hli]
@@ -20395,9 +20400,9 @@
 	ld c, l
 	pop hl
 	pop de
-	jr .asm_15c33
+	jr .loop
 
-.asm_15c4b
+.done
 	pop hl
 	ld a, [hl]
 	ld [CurMart], a
@@ -20404,8 +20409,14 @@
 	ret
 ; 15c51
 
-Unknown_15c51: ; 15c51
-	db $05, $24, $94, $11, $6e, $8a, $02, $6f, $ac, $0d, $83, $84, $03, $84, $f8, $11, $ff
+BargainShopData: ; 15c51
+	db 5
+	dbw NUGGET,     4500
+	dbw PEARL,       650
+	dbw BIG_PEARL,  3500
+	dbw STARDUST,    900
+	dbw STAR_PIECE, 4600
+	db -1
 ; 15c62
 
 
@@ -20432,8 +20443,9 @@
 	pop af
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -20443,8 +20455,9 @@
 
 Function15c91: ; 15c91
 	call Function15ca3
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hl]
 	and a
 	jp z, Function15d83
@@ -20458,9 +20471,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, .data_15cb0
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ret
 ; 15cb0
 
@@ -20508,9 +20521,9 @@
 
 Function15cef: ; 15cef
 	callba Function24ae8
-	call Function1ad2
+	call DrawOnMap
 	ld hl, MenuDataHeader_0x15e18
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [WalkingX]
 	ld [wcf88], a
 	ld a, [WalkingY]
@@ -20533,9 +20546,9 @@
 	call Function15d97
 	jr c, .asm_15d68
 	ld de, Money
-	ld bc, $ffc3
+	ld bc, hMoneyTemp
 	ld a, $3
-	call Function1600b
+	call CheckMoney
 	jr c, .asm_15d79
 	ld hl, NumItems
 	call ReceiveItem
@@ -20548,8 +20561,8 @@
 	call FlagAction
 	call Function15fc3
 	ld de, Money
-	ld bc, $ffc3
-	call Function15ffa
+	ld bc, hMoneyTemp
+	call TakeMoney
 	ld a, $4
 	call Function15c7d
 	call Functiona36
@@ -20584,7 +20597,7 @@
 	ld a, $0
 	call Function15c7d
 	callba Function24fc9
-	call Function1c07
+	call ExitMenu
 	ret
 ; 15d97
 
@@ -20616,9 +20629,9 @@
 	ld h, [hl]
 	ld l, a
 	inc hl
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	inc hl
 	ld a, [hli]
 	ld [$ffc5], a
@@ -20625,7 +20638,7 @@
 	ld a, [hl]
 	ld [$ffc4], a
 	xor a
-	ld [$ffc3], a
+	ld [hMoneyTemp], a
 	and a
 	ret
 
@@ -20644,7 +20657,7 @@
 	ld a, $63
 	ld [wd10d], a
 	callba Function24fcf
-	call Function1c07
+	call ExitMenu
 	ret
 ; 15df9
 
@@ -20657,9 +20670,9 @@
 	ld h, [hl]
 	ld l, a
 	inc hl
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	inc hl
 	ld e, [hl]
 	inc hl
@@ -20703,9 +20716,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, DefaultFlypoint
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	push de
 	ld d, h
 	ld e, l
@@ -20864,7 +20877,7 @@
 
 Function15ed3: ; 15ed3
 	ld hl, UnknownText_0x15edb
-	call Function1d67
+	call MenuTextBoxBackup
 	and a
 	ret
 ; 15edb
@@ -20914,7 +20927,7 @@
 	call PrintText
 	callba Function24af8
 	callba Function24fe1
-	call Function1c07
+	call ExitMenu
 	jr c, .asm_15f6e
 	hlcoord 1, 14
 	ld bc, $0312
@@ -20924,8 +20937,8 @@
 	call YesNoBox
 	jr c, .asm_15f6e
 	ld de, Money
-	ld bc, $ffc3
-	call Function15fd7
+	ld bc, hMoneyTemp
+	call GiveMoney
 	ld a, [wd107]
 	ld hl, NumItems
 	call TossItem
@@ -20940,7 +20953,7 @@
 	call Functiona36
 
 .asm_15f6e
-	call Function1c07
+	call ExitMenu
 	and a
 	ret
 ; 15f73
@@ -21030,21 +21043,21 @@
 ; 15fcd
 
 Function15fcd: ; 15fcd
-	call Function1d4f
+	call MenuTextBox
 	call Functiona36
-	call Function1c07
+	call ExitMenu
 	ret
 ; 15fd7
 
-Function15fd7:: ; 15fd7
+GiveMoney:: ; 15fd7
 	ld a, $3
 	call Function16053
-	ld bc, Unknown_15ff7
+	ld bc, MaxMoney
 	ld a, $3
-	call Function1600b
+	call CheckMoney
 	jr z, .asm_15ff5
 	jr c, .asm_15ff5
-	ld hl, Unknown_15ff7
+	ld hl, MaxMoney
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -21061,12 +21074,12 @@
 	ret
 ; 15ff7
 
-Unknown_15ff7: ; 15ff7
+MaxMoney: ; 15ff7
 	dt 999999
 ; 15ffa
 
 
-Function15ffa:: ; 15ffa
+TakeMoney:: ; 15ffa
 	ld a, $3
 	call Function16035
 	jr nc, .asm_16009
@@ -21084,9 +21097,9 @@
 	ret
 ; 1600b
 
-Function1600b:: ; 1600b
+CheckMoney:: ; 1600b
 	ld a, $3
-Function1600d: ; 1600d
+CheckFunds: ; 1600d
 	push hl
 	push de
 	push bc
@@ -21196,13 +21209,13 @@
 	ret
 ; 1606f
 
-Function1606f:: ; 1606f
+GiveCoins:: ; 1606f
 	ld a, $2
 	ld de, Coins
 	call Function16055
 	ld a, $2
 	ld bc, Unknown_1608d
-	call Function1600d
+	call CheckFunds
 	jr c, .asm_1608b
 	ld hl, Unknown_1608d
 	ld a, [hli]
@@ -21223,7 +21236,7 @@
 ; 1608f
 
 
-Function1608f:: ; 1608f
+TakeCoins:: ; 1608f
 	ld a, $2
 	ld de, Coins
 	call Function16037
@@ -21240,10 +21253,10 @@
 	ret
 ; 160a1
 
-Function160a1:: ; 160a1
+CheckCoins:: ; 160a1
 	ld a, $2
 	ld de, Coins
-	jp Function1600d
+	jp CheckFunds
 ; 160a9
 
 
@@ -21250,7 +21263,7 @@
 INCLUDE "items/marts.asm"
 
 
-Function16218: ; 16218
+Special_BankOfMom: ; 16218
 	ld a, [$ffaa]
 	push af
 	ld a, $1
@@ -21275,8 +21288,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_16242
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -21356,9 +21370,9 @@
 	call PrintText
 	call Function1d6e
 	ld hl, MenuDataHeader_0x166b5
-	call Function1d3c
-	call Function1d81
-	call Function1c17
+	call CopyMenuDataHeader
+	call InterpretMenu2
+	call WriteBackup
 	jr c, .asm_162ce
 	ld a, [wcfa9]
 	cp $1
@@ -21393,8 +21407,9 @@
 	call PrintText
 	xor a
 	ld hl, StringBuffer2
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld a, $5
 	ld [wcf64], a
@@ -21402,7 +21417,7 @@
 	call Function16517
 	call Function1656b
 	call Function16571
-	call Function1c17
+	call WriteBackup
 	jr c, .asm_1636d
 	ld hl, StringBuffer2
 	ld a, [hli]
@@ -21412,7 +21427,7 @@
 	jr z, .asm_1636d
 	ld de, Money
 	ld bc, StringBuffer2
-	callba Function1600b
+	callba CheckMoney
 	jr c, .asm_1635f
 	ld hl, StringBuffer2
 	ld de, StringBuffer2 + 3
@@ -21420,11 +21435,11 @@
 	call CopyBytes
 	ld bc, wd851
 	ld de, StringBuffer2
-	callba Function15fd7
+	callba GiveMoney
 	jr c, .asm_16366
 	ld bc, StringBuffer2 + 3
 	ld de, Money
-	callba Function15ffa
+	callba TakeMoney
 	ld hl, StringBuffer2
 	ld de, wd851
 	ld bc, $0003
@@ -21460,8 +21475,9 @@
 	call PrintText
 	xor a
 	ld hl, StringBuffer2
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld a, $5
 	ld [wcf64], a
@@ -21469,7 +21485,7 @@
 	call Function16512
 	call Function1656b
 	call Function16571
-	call Function1c17
+	call WriteBackup
 	jr c, .asm_16400
 	ld hl, StringBuffer2
 	ld a, [hli]
@@ -21483,15 +21499,15 @@
 	call CopyBytes
 	ld de, wd851
 	ld bc, StringBuffer2
-	callba Function1600b
+	callba CheckMoney
 	jr c, .asm_163f2
 	ld bc, Money
 	ld de, StringBuffer2
-	callba Function15fd7
+	callba GiveMoney
 	jr c, .asm_163f9
 	ld bc, StringBuffer2 + 3
 	ld de, wd851
-	callba Function15ffa
+	callba TakeMoney
 	ld hl, StringBuffer2
 	ld de, Money
 	ld bc, $0003
@@ -21561,11 +21577,11 @@
 	jr z, .asm_16447
 	and a ; within one hour of 00:00?
 	jr z, .LostBooklet
-	jr .next
+	jr .loop
 
 .asm_16447
 	cp 23 ; within one hour of 23:00?
-	jr nz, .next
+	jr nz, .loop
 	; fallthrough
 
 .LostBooklet
@@ -21581,7 +21597,7 @@
 	call Function13e5
 	ret
 
-.next
+.loop
 	call Function164ea
 	bccoord 1, 14
 	ld a, [wDST]
@@ -21703,7 +21719,7 @@
 	push de
 	xor a
 	ld [hBGMapMode], a
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $0612
 	call TextBox
 	hlcoord 1, 2
@@ -21727,7 +21743,7 @@
 	ld de, StringBuffer2
 	ld bc, $a306
 	call PrintNum
-	call Function1ad2
+	call DrawOnMap
 	call Function3238
 	ret
 ; 1656b
@@ -21821,7 +21837,7 @@
 	ld c, l
 	ld b, h
 	ld de, StringBuffer2
-	callba Function15fd7
+	callba GiveMoney
 	ret
 
 .asm_165f5
@@ -21830,7 +21846,7 @@
 	ld c, l
 	ld b, h
 	ld de, StringBuffer2
-	callba Function15ffa
+	callba TakeMoney
 	ret
 ; 16607
 
@@ -21839,9 +21855,9 @@
 	push de
 	ld e, a
 	ld d, 0
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	pop de
 	ret
 ; 16613
@@ -21998,7 +22014,7 @@
 	db "CANCEL@"
 ; 0x166d6
 
-Function166d6: ; 166d6
+Special_DayCareMan: ; 166d6
 	ld hl, wDaycareMan
 	bit 0, [hl]
 	jr nz, .asm_166fe
@@ -22037,7 +22053,7 @@
 	ret
 ; 1672a
 
-Function1672a: ; 1672a
+Special_DayCareLady: ; 1672a
 	ld hl, wDaycareLady
 	bit 0, [hl]
 	jr nz, .asm_16752
@@ -22150,7 +22166,7 @@
 ; 167f1
 
 UnknownText_0x167f1: ; 0x167f1
-	; 
+	;
 	text_jump UnknownText_0x1bdaa7
 	db "@"
 ; 0x167f6
@@ -22188,7 +22204,7 @@
 .asm_1682d
 	ld de, Money
 	ld bc, StringBuffer2 + 2
-	callba Function1600b
+	callba CheckMoney
 	jr c, .asm_16848
 	ld a, [PartyCount]
 	cp $6
@@ -22215,7 +22231,7 @@
 Function16850: ; 16850
 	ld bc, StringBuffer2 + 2
 	ld de, Money
-	callba Function15ffa
+	callba TakeMoney
 	ld a, $d
 	call Function1689b
 	ld a, [CurPartySpecies]
@@ -22252,8 +22268,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, TextTable_168aa
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -22404,7 +22421,7 @@
 	db "@"
 ; 0x16936
 
-Function16936: ; 16936
+Special_DayCareManOutside: ; 16936
 	ld hl, wDaycareMan
 	bit 6, [hl]
 	jr nz, Function16949
@@ -22753,8 +22770,9 @@
 	ld hl, wEggMonHappiness
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld a, [CurPartyLevel]
 	ld [wEggMonLevel], a
@@ -22791,12 +22809,12 @@
 	lb bc, BANK(UnownDexBTile), 1
 	call Request1bpp
 
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $0312
 	call TextBox
 
 	hlcoord 0, 5
-	ld bc, $0707
+	lb bc, 7, 7
 	call TextBox
 
 	hlcoord 0, 14
@@ -22914,7 +22932,7 @@
 	hlcoord 1, 6
 	xor a
 	ld [$ffad], a
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	ld de, $9310
 	callba Functione0000
@@ -22942,7 +22960,7 @@
 
 Function16d20: ; 16d20
 	hlcoord 1, 6
-	ld bc, $0707
+	lb bc, 7, 7
 	call ClearBox
 	hlcoord 1, 9
 	ld de, UnownDexVacantString
@@ -22988,14 +23006,14 @@
 ; 16dac
 
 Function16dac: ; 16dac
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7f
 	call ByteFill
 	hlcoord 7, 11
 	ld a, $31
 	ld [$ffad], a
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	ret
 ; 16dc7
@@ -23003,7 +23021,7 @@
 Function16dc7: ; 16dc7
 	ld hl, UnknownText_0x16e04
 	call PrintText
-	callba Function50000
+	callba SelectMonFromParty
 	jr c, .asm_16df8
 	ld a, [CurPartySpecies]
 	cp EGG
@@ -23234,7 +23252,7 @@
 .loop
 	ld a, [de]
 	inc de
-	cp $ff
+	cp -1
 	ret z
 	cp EGG
 	jr nz, .next
@@ -23252,7 +23270,7 @@
 	jr .loop
 ; 16f5e
 
-Function16f5e:: ; 16f5e
+OverworldHatchEgg:: ; 16f5e
 	call ResetWindow
 	call Function1d6e
 	call Function16f70
@@ -23270,7 +23288,7 @@
 Function16f7a: ; 16f7a (5:6f7a)
 	ld a, [de]
 	inc de
-	cp $ff
+	cp -1
 	jp z, Function1708a
 	push de
 	push hl
@@ -23296,11 +23314,12 @@
 
 	ld a, [CurPartySpecies]
 	cp TOGEPI
-	jr nz, .asm_16fbf
-	ld de, $54
-	ld b, $1
+	jr nz, .nottogepi
+	; set the event flag for hatching togepi
+	ld de, EVENT_TOGEPI_HATCHED
+	ld b, SET_FLAG
 	call EventFlagAction
-.asm_16fbf
+.nottogepi
 
 	pop de
 
@@ -23361,7 +23380,7 @@
 	ld [hl], a
 	ld a, [CurPartyMon]
 	ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
-	ld bc, $b
+	ld bc, NAME_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -23380,7 +23399,7 @@
 	call PrintText
 	call YesNoBox
 	pop de
-	jr c, .asm_17074
+	jr c, .nonickname
 	ld a, $1
 	ld [wd26b], a
 	xor a
@@ -23392,9 +23411,9 @@
 	ld de, StringBuffer1
 	call InitName
 	jr Function1707d
-.asm_17074
+.nonickname
 	ld hl, StringBuffer1
-	ld bc, $b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
 Function1707d: ; 1707d (5:707d)
@@ -23437,7 +23456,7 @@
 ; 170b0 (5:70b0)
 
 UnknownText_0x170b0: ; 0x170b0
-	; 
+	;
 	text_jump UnknownText_0x1c0db8
 	db "@"
 ; 0x170b5
@@ -23459,29 +23478,29 @@
 	ld d, h
 	ld e, l
 	ld b, NUM_MOVES
-.asm_170c6
+.loop
 	ld a, [de]
 	and a
-	jr z, .asm_170e3
+	jr z, .done
 	ld hl, wEggMonMoves
 	ld c, NUM_MOVES
-.asm_170cf
+.next
 	ld a, [de]
 	cp [hl]
-	jr z, .asm_170df
+	jr z, .skip
 	inc hl
 	dec c
-	jr nz, .asm_170cf
+	jr nz, .next
 	call Function170e4
-	jr nc, .asm_170df
+	jr nc, .skip
 	call Function17169
 
-.asm_170df
+.skip
 	inc de
 	dec b
-	jr nz, .asm_170c6
+	jr nz, .loop
 
-.asm_170e3
+.done
 	ret
 ; 170e4
 
@@ -23494,55 +23513,57 @@
 	ld c, a
 	ld b, 0
 	ld hl, EggMovePointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, BANK(EggMovePointers)
 	call GetFarHalfword
-.asm_170f6
+.loop
 	ld a, BANK(EggMoves)
 	call GetFarByte
-	cp $ff
-	jr z, .asm_17107
+	cp -1
+	jr z, .found_mon
 	ld b, a
 	ld a, [de]
 	cp b
-	jr z, .asm_17163
+	jr z, .done_carry
 	inc hl
-	jr .asm_170f6
+	jr .loop
 
-.asm_17107
+.found_mon
 	call Function1720b
 	ld b, NUM_MOVES
-.asm_1710c
+.loop2
 	ld a, [de]
 	cp [hl]
-	jr z, .asm_17116
+	jr z, .found_eggmove
 	inc hl
 	dec b
-	jr z, .asm_17146
-	jr .asm_1710c
+	jr z, .inherit_tmhm
+	jr .loop2
 
-.asm_17116
+.found_eggmove
 	ld a, [wEggMonSpecies]
 	dec a
 	ld c, a
 	ld b, 0
 	ld hl, EvosAttacksPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, BANK(EvosAttacksPointers)
 	call GetFarHalfword
-.asm_17127
+.loop3
 	ld a, BANK(EvosAttacks)
 	call GetFarByte
 	inc hl
 	and a
-	jr nz, .asm_17127
-.asm_17130
+	jr nz, .loop3
+.loop4
 	ld a, BANK(EvosAttacks)
 	call GetFarByte
 	and a
-	jr z, .asm_17146
+	jr z, .inherit_tmhm
 	inc hl
 	ld a, BANK(EvosAttacks)
 	call GetFarByte
@@ -23549,34 +23570,34 @@
 	ld b, a
 	ld a, [de]
 	cp b
-	jr z, .asm_17163
+	jr z, .done_carry
 	inc hl
-	jr .asm_17130
+	jr .loop4
 
-.asm_17146
+.inherit_tmhm
 	ld hl, TMHMMoves
-.asm_17149
+.loop5
 	ld a, BANK(TMHMMoves)
 	call GetFarByte
 	inc hl
 	and a
-	jr z, .asm_17166
+	jr z, .done
 	ld b, a
 	ld a, [de]
 	cp b
-	jr nz, .asm_17149
+	jr nz, .loop5
 	ld [wd262], a
 	predef CanLearnTMHMMove
 	ld a, c
 	and a
-	jr z, .asm_17166
+	jr z, .done
 
-.asm_17163
+.done_carry
 	pop bc
 	scf
 	ret
 
-.asm_17166
+.done
 	pop bc
 	and a
 	ret
@@ -23589,12 +23610,12 @@
 	ld b, a
 	ld hl, wEggMonMoves
 	ld c, NUM_MOVES
-.asm_17172
+.loop
 	ld a, [hli]
 	and a
-	jr z, .asm_17187
+	jr z, .done
 	dec c
-	jr nz, .asm_17172
+	jr nz, .loop
 	ld de, wEggMonMoves
 	ld hl, wEggMonMoves + 1
 	ld a, [hli]
@@ -23606,7 +23627,7 @@
 	ld a, [hli]
 	ld [de], a
 
-.asm_17187
+.done
 	dec hl
 	ld [hl], b
 	ld hl, wEggMonMoves
@@ -23621,10 +23642,10 @@
 	ld hl, wBreedMon2Moves
 	ld a, [wBreedMon1Species]
 	cp DITTO
-	jr z, .asm_171b1
+	jr z, .ditto1
 	ld a, [wBreedMon2Species]
 	cp DITTO
-	jr z, .asm_171d7
+	jr z, .ditto2
 	ld a, [wDittoInDaycare]
 	and a
 	ret z
@@ -23631,7 +23652,7 @@
 	ld hl, wBreedMon1Moves
 	ret
 
-.asm_171b1
+.ditto1
 	ld a, [CurPartySpecies]
 	push af
 	ld a, [wBreedMon2Species]
@@ -23643,11 +23664,11 @@
 	ld a, $3
 	ld [MonType], a
 	predef GetGender
-	jr c, .asm_171fb
-	jr nz, .asm_171fb
-	jr .asm_17203
+	jr c, .inherit_mon2_moves
+	jr nz, .inherit_mon2_moves
+	jr .inherit_mon1_moves
 
-.asm_171d7
+.ditto2
 	ld a, [CurPartySpecies]
 	push af
 	ld a, [wBreedMon1Species]
@@ -23659,16 +23680,16 @@
 	ld a, $3
 	ld [MonType], a
 	predef GetGender
-	jr c, .asm_17203
-	jr nz, .asm_17203
+	jr c, .inherit_mon1_moves
+	jr nz, .inherit_mon1_moves
 
-.asm_171fb
+.inherit_mon2_moves
 	ld hl, wBreedMon2Moves
 	pop af
 	ld [CurPartySpecies], a
 	ret
 
-.asm_17203
+.inherit_mon1_moves
 	ld hl, wBreedMon1Moves
 	pop af
 	ld [CurPartySpecies], a
@@ -23682,12 +23703,12 @@
 	ret z
 	ld a, [wBreedMon2Species]
 	cp DITTO
-	jr z, .asm_17220
+	jr z, .ditto
 	ld a, [wDittoInDaycare]
 	and a
 	ret z
 
-.asm_17220
+.ditto
 	ld hl, wBreedMon2Moves
 	ret
 ; 17224
@@ -23718,7 +23739,7 @@
 	call WaitTop
 	push hl
 	push bc
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $7f
 	call ByteFill
@@ -23936,7 +23957,7 @@
 	ld a, [wDaycareLady]
 	bit 0, a
 	jr z, Function1745f
-	call Functionaaf
+	call KeepTextOpen
 	ld hl, wBreedMon2Nick
 	call Function1746c
 	jp PrintText
@@ -23949,7 +23970,7 @@
 	ld a, [wDaycareMan]
 	bit 0, a
 	jr z, Function1745f
-	call Functionaaf
+	call KeepTextOpen
 	ld hl, wBreedMon1Nick
 	call Function1746c
 	jp PrintText
@@ -24061,10 +24082,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_20015
+rept 4
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -24099,7 +24119,7 @@
 	ld hl, UnknownText_0x2004c
 	call PrintText
 	call Function20051
-	call Function1c07
+	call ExitMenu
 	pop bc
 	ld hl, Options
 	ld [hl], b
@@ -24320,7 +24340,7 @@
 	ld a, [wcf94]
 	rst FarCall
 	call Function24085
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	call Function2408f
 	ret
@@ -24332,7 +24352,7 @@
 	rst FarCall
 	call Function24085
 	callba MobileTextBorder
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	call Function2408f
 	ret
@@ -24344,7 +24364,7 @@
 	rst FarCall
 	call Function24085
 	callba MobileTextBorder
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	call Function2411a
 	ld hl, wcfa5
@@ -24980,7 +25000,7 @@
 	dec c
 	jr nz, .asm_243d7
 	pop hl
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
@@ -25010,19 +25030,19 @@
 	call Function1c47
 	ld a, [wcf81]
 	bit 0, a
-	jr z, .asm_24411
+	jr z, .next
 	ld d, h
 	ld e, l
 	call Function1c23
 
-.asm_24411
+.next
 	call Function1c7e
 	ld a, h
 	or l
-	jr z, .asm_2441b
+	jr z, .next2
 	call Function1c47
 
-.asm_2441b
+.next2
 	pop af
 	ld [rSVBK], a
 	ld hl, wcf78
@@ -25037,9 +25057,9 @@
 	ret z
 	xor a
 	call GetSRAMBank
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld de, $a000
-	ld bc, $0168
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call CopyBytes
 	call CloseSRAM
 	call Function2173
@@ -25046,8 +25066,8 @@
 	xor a
 	call GetSRAMBank
 	ld hl, $a000
-	ld de, TileMap
-	ld bc, $0168
+	decoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 .asm_2444c
 	ld a, [hl]
 	cp $61
@@ -25138,9 +25158,9 @@
 	ld a, $1
 	ld [hli], a
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ret
 ; 244c3
 
@@ -25160,11 +25180,11 @@
 	ret
 ; 0x244e3
 
-Function244e3:: ; 244e3
+Pokepic:: ; 244e3
 	ld hl, MenuDataHeader_0x24547
-	call Function1d3c
+	call CopyMenuDataHeader
 	call Function1cbb
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	ld b, $12
 	call GetSGBLayout
@@ -25184,15 +25204,15 @@
 	call GetTileCoord
 	ld a, $80
 	ld [$ffad], a
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	call WaitBGMap
 	ret
 ; 24528
 
-Function24528:: ; 24528
+PokepicYesOrNo:: ; 24528
 	ld hl, MenuDataHeader_0x24547
-	call Function1d3c
+	call CopyMenuDataHeader
 	call Function1ce1
 	call WaitBGMap
 	call ClearSGB
@@ -25200,7 +25220,7 @@
 	ld [hBGMapMode], a
 	call Function2173
 	call Function321c
-	call Function1ad2
+	call DrawOnMap
 	call Functione51
 	ret
 ; 24547
@@ -25222,14 +25242,14 @@
 	ld bc, MapObjects
 	ld de, wd81e
 	xor a
-.asm_24561
+.loop
 	push af
 	push bc
 	push de
 	call Function245a7
-	jr c, .asm_2456c
+	jr c, .next
 	call Function2457d
-.asm_2456c
+.next
 	pop de
 	ld [de], a
 	inc de
@@ -25241,44 +25261,44 @@
 	pop af
 	inc a
 	cp $10
-	jr nz, .asm_24561
+	jr nz, .loop
 	ret
 
 Function2457d: ; 2457d (9:457d)
-	ld hl, $1
+	ld hl, MAPOBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_245a3
-	ld hl, $c
+	jr z, .minus_one
+	ld hl, MAPOBJECT_EVENT_FLAG
 	add hl, bc
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
 	ld d, a
-	cp $ff
-	jr nz, .asm_24598
+	cp -1
+	jr nz, .check
 	ld a, e
-	cp $ff
-	jr z, .asm_245a1
-	jr .asm_245a3
-.asm_24598
-	ld b, $2
+	cp -1
+	jr z, .zero
+	jr .minus_one
+.check
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
-	jr nz, .asm_245a3
-.asm_245a1
+	jr nz, .minus_one
+.zero
 	xor a
 	ret
-.asm_245a3
-	ld a, $ff
+.minus_one
+	ld a, -1
 	scf
 	ret
 
 Function245a7: ; 245a7 (9:45a7)
 	call Function18f5
-	ld a, $ff
+	ld a, -1
 	ret c
 	xor a
 	ret
@@ -25301,17 +25321,17 @@
 ; 245cb
 
 Function245cb:: ; 245cb
-.asm_245cb
+.loop
 	call Function24609
 	jp c, Function245d6
 	call z, Function245e1
-	jr .asm_245cb
+	jr .loop
 ; 245d6
 
 Function245d6: ; 245d6
 	call Function1ff8
 	ld [wcf73], a
-	ld a, $0
+	ld a, 0
 	ld [$ffaa], a
 	ret
 ; 245e1
@@ -25318,9 +25338,9 @@
 
 Function245e1: ; 245e1
 	call Function245f1
-	ld a, $1
+	ld a, 1
 	ld [hBGMapMode], a
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	xor a
 	ld [hBGMapMode], a
@@ -26058,8 +26078,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, Unknown_24a91
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -26130,12 +26151,12 @@
 
 Function24ae8: ; 24ae8
 	ld hl, MenuDataHeader_0x24b15
-	call Function1d3c
+	call CopyMenuDataHeader
 	jr Function24b01
 
 Function24af0: ; 24af0
 	ld hl, MenuDataHeader_0x24b1d
-	call Function1d3c
+	call CopyMenuDataHeader
 	jr Function24b01
 
 Function24af8: ; 24af8
@@ -26223,7 +26244,7 @@
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $3
 	ld c, $7
 	call TextBox
@@ -26253,7 +26274,7 @@
 ; 24bdc
 
 Function24bdc: ; 24bdc
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $5
 	ld c, $11
 	call TextBox
@@ -26340,8 +26361,9 @@
 	ld a, [hl]
 	call Function24c94
 .asm_24c89
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_24c73
 
 .asm_24c8d
@@ -26431,7 +26453,7 @@
 	call Function24d59
 	ld [MenuSelection], a
 
-	call Function1c07
+	call ExitMenu
 	ret
 ; 24d3f
 
@@ -26674,11 +26696,11 @@
 Function24e99: ; 24e99
 ; BattleMonMenu
 	ld hl, MenuDataHeader_0x24ed4
-	call Function1d3c
+	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
 	call Function1cbb
-	call Function1ad2
+	call DrawOnMap
 	call Function1c89
 	call WaitBGMap
 	call Function1c66
@@ -26730,7 +26752,7 @@
 	call Function2039
 	ld a, [wcf88]
 	ld [wd0d2], a
-	call Function1c07
+	call ExitMenu
 	ret
 ; 24f0b
 
@@ -26750,10 +26772,10 @@
 Function24f19: ; 24f19
 	ld a, [wd0d2]
 	ld [wcf88], a
-	call Function202a
+	call InterpretMenu
 	ld a, [wcf88]
 	ld [wd0d2], a
-	call Function1c07
+	call ExitMenu
 	ret
 ; 24f2c
 
@@ -27047,7 +27069,7 @@
 
 Function250d1: ; 250d1
 	push hl
-	ld hl, $ffc3
+	ld hl, hMoneyTemp
 	ld a, [hMultiplicand]
 	ld [hli], a
 	ld a, [$ffb5]
@@ -27056,7 +27078,7 @@
 	ld [hl], a
 	pop hl
 	inc hl
-	ld de, $ffc3
+	ld de, hMoneyTemp
 	ld bc, $2306
 	call PrintNum
 	call WaitBGMap
@@ -27144,9 +27166,9 @@
 	call WaitBGMap
 	ld hl, wcf63
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ret
 
@@ -27155,8 +27177,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, Jumptable_2519d
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -27306,7 +27329,7 @@
 	ret
 
 Function25299: ; 25299 (9:5299)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld d, $5
 	call Function253b0
 	hlcoord 2, 2
@@ -27367,7 +27390,7 @@
 	hlcoord 2, 8
 	ld de, Tilemap_25366
 	call Function253a8
-	ld a, [StatusFlags]
+	ld a, [StatusFlags] ; pokedex
 	bit 0, a
 	ret nz
 	hlcoord 1, 9
@@ -27399,10 +27422,9 @@
 	ld c, $4
 .asm_2537c
 	call Function253f4
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_2537c
 	hlcoord 2, 13
@@ -27410,10 +27432,9 @@
 	ld c, $4
 .asm_2538d
 	call Function253f4
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_2538d
 	xor a
@@ -27694,7 +27715,7 @@
 
 ProfOaksPC: ; 0x265d3
 	ld hl, OakPCText1
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	jr c, .shutdown
 	call ProfOaksPCBoot ; player chose "yes"?
@@ -27702,7 +27723,7 @@
 	ld hl, OakPCText4
 	call PrintText
 	call Functiona36
-	call Function1c07
+	call ExitMenu
 	ret
 ; 0x265ee
 
@@ -27783,10 +27804,9 @@
 	ld a, [hli]
 	cp c
 	jr nc, .match
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	jr .loop
 
 .match
@@ -28004,7 +28024,7 @@
 	jr nc, .asm_2676f
 
 .asm_2678e
-	call Function1c07
+	call ExitMenu
 	pop af
 	ld [wcf76], a
 	ld a, [wd1ee]
@@ -28081,25 +28101,25 @@
 
 Function2683a: ; 2683a (9:683a)
 	ld hl, Jumptable_26855
-.asm_2683d
+.loop
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
 	or e
-	jr z, .asm_26854
+	jr z, .done
 	push hl
 	call _de_
 	pop hl
-	jr nc, .asm_26851
+	jr nc, .next
 	ld a, [hl]
 	push hl
 	call Function26830
 	pop hl
-.asm_26851
+.next
 	inc hl
-	jr .asm_2683d
-.asm_26854
+	jr .loop
+.done
 	ret
 ; 26855 (9:6855)
 
@@ -28118,21 +28138,21 @@
 	xor a
 	ld hl, DefaultFlypoint
 	ld [hli], a
-	ld a, $ff
+	ld a, -1
 	ld bc, $0010
 	call ByteFill
 	ret
 ; 2687a
 
-Function2687a: ; 2687a
-.asm_2687a
+CheckAllDecorationFlags: ; 2687a
+.loop
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_26890
+	cp -1
+	jr z, .done
 	push hl
 	push af
-	ld b, $2
-	call Function26a3b
+	ld b, CHECK_FLAG
+	call DecorationFlagAction
 	ld a, c
 	and a
 	pop bc
@@ -28139,9 +28159,9 @@
 	ld a, b
 	call nz, Function26891
 	pop hl
-	jr .asm_2687a
+	jr .loop
 
-.asm_26890
+.done
 	ret
 ; 26891
 
@@ -28160,7 +28180,7 @@
 	push hl
 	call Function2686c
 	pop hl
-	call Function2687a
+	call CheckAllDecorationFlags
 	pop bc
 	ld a, [DefaultFlypoint]
 	and a
@@ -28274,7 +28294,7 @@
 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
+	db 50, 51, 52, -1
 ; 26945
 
 Function26945: ; 26945
@@ -28291,7 +28311,7 @@
 ; 26955
 
 Unknown_26955: ; 26955
-	db 26, 27, 28, $ff
+	db 26, 27, 28, -1
 ; 26959
 
 Function26959: ; 26959
@@ -28302,31 +28322,31 @@
 Function2695b: ; 2695b
 	ld a, [DefaultFlypoint]
 	and a
-	jr z, .asm_269a9
-	cp $8
-	jr nc, .asm_2697b
+	jr z, .empty
+	cp 8
+	jr nc, .beyond_eight
 	xor a
 	ld [wcf76], a
 	ld hl, MenuDataHeader_0x269b5
 	call LoadMenuDataHeader
 	call Function1e5d
-	jr c, .asm_26977
-	call Function26a02
+	jr c, .no_action_1
+	call DoDecorationAction2
 
-.asm_26977
-	call Function1c07
+.no_action_1
+	call ExitMenu
 	ret
 
-.asm_2697b
+.beyond_eight
 	ld hl, DefaultFlypoint
 	ld e, [hl]
 	dec [hl]
-	ld d, $0
+	ld d, 0
 	add hl, de
-	ld [hl], $ff
+	ld [hl], -1
 	call Function1d6e
 	ld hl, MenuDataHeader_0x269c5
-	call Function1d3c
+	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
 	call Function352f
@@ -28334,17 +28354,17 @@
 	ld [wd0e4], a
 	call Function350c
 	ld a, [wcf73]
-	cp $2
-	jr z, .asm_269a5
-	call Function26a02
+	cp 2
+	jr z, .no_action_2
+	call DoDecorationAction2
 
-.asm_269a5
-	call Function1c07
+.no_action_2
+	call ExitMenu
 	ret
 
-.asm_269a9
+.empty
 	ld hl, UnknownText_0x269b0
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 ; 269b0
 
@@ -28366,7 +28386,7 @@
 	db $a0 ; flags
 	db 0 ; items
 	dw wd002
-	dw Function269f3
+	dw DecorationMenuFunction
 	dw DecorationAttributes
 ; 0x269c5
 
@@ -28383,71 +28403,71 @@
 	db 8, 0 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, wd002 ; text pointer
-	dbw BANK(Function269f3), Function269f3
+	dbw BANK(DecorationMenuFunction), DecorationMenuFunction
 	dbw 0, 0
 	dbw 0, 0
 ; 269dd
 
 
-Function269dd: ; 269dd
+GetDecorationData: ; 269dd
 	ld hl, DecorationAttributes
-	ld bc, $0006
+	ld bc, 6
 	call AddNTimes
 	ret
 ; 269e7
 
-Function269e7: ; 269e7
+GetDecorationName: ; 269e7
 	push hl
-	call Function269dd
-	call Function26c72
+	call GetDecorationData
+	call GetDecoName
 	pop hl
 	call CopyName2
 	ret
 ; 269f3
 
-Function269f3: ; 269f3
+DecorationMenuFunction: ; 269f3
 	ld a, [MenuSelection]
 	push de
-	call Function269dd
-	call Function26c72
+	call GetDecorationData
+	call GetDecoName
 	pop hl
 	call PlaceString
 	ret
 ; 26a02
 
-Function26a02: ; 26a02
+DoDecorationAction2: ; 26a02
 	ld a, [MenuSelection]
-	call Function269dd
-	ld de, $0002
+	call GetDecorationData
+	ld de, 2 ; function 2
 	add hl, de
 	ld a, [hl]
-	ld hl, Jumptable_26a12
+	ld hl, .DecoActions
 	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
+.DecoActions: ; 26a12
+	dw DecoAction_nothing
+	dw DecoAction_setupbed
+	dw DecoAction_putawaybed
+	dw DecoAction_setupcarpet
+	dw DecoAction_putawaycarpet
+	dw DecoAction_setupplant
+	dw DecoAction_putawayplant
+	dw DecoAction_setupposter
+	dw DecoAction_putawayposter
+	dw DecoAction_setupconsole
+	dw DecoAction_putawayconsole
+	dw DecoAction_setupbigdoll
+	dw DecoAction_putawaybigdoll
+	dw DecoAction_setupornament
+	dw DecoAction_putawayornament
 ; 26a30
 
 
-Function26a30: ; 26a30
-	call Function269dd
-	ld de, $0003
+GetDecorationFlag: ; 26a30
+	call GetDecorationData
+	ld de, 3 ; event flag
 	add hl, de
 	ld a, [hli]
 	ld d, [hl]
@@ -28455,18 +28475,18 @@
 	ret
 ; 26a3b
 
-Function26a3b: ; 26a3b
+DecorationFlagAction: ; 26a3b
 	push bc
-	call Function26a30
+	call GetDecorationFlag
 	pop bc
 	call EventFlagAction
 	ret
 ; 26a44
 
-Function26a44: ; 26a44
+GetDecorationSprite: ; 26a44
 	ld a, c
-	call Function269dd
-	ld de, $0005
+	call GetDecorationData
+	ld de, 5 ; sprite
 	add hl, de
 	ld a, [hl]
 	ld c, a
@@ -28473,60 +28493,67 @@
 	ret
 ; 26a4f
 
+decoration: MACRO
+	; type, name, command, event flag, tile/sprite
+	db \1, \2, \3
+	dw \4
+	db \5
+ENDM
+
 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
+	decoration DECO_PLANT,    $00,               $0,                 EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BED,       EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_BED,      FEATHERY_BED,      SET_UP_BED,         EVENT_DECO_BED_1,                  $1b
+	decoration DECO_BED,      PINK_BED,          SET_UP_BED,         EVENT_DECO_BED_2,                  $1c
+	decoration DECO_BED,      POLKADOT_BED,      SET_UP_BED,         EVENT_DECO_BED_3,                  $1d
+	decoration DECO_BED,      PIKACHU_BED,       SET_UP_BED,         EVENT_DECO_BED_4,                  $1e
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CARPET,    EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_CARPET,   RED_CARPET,        SET_UP_CARPET,      EVENT_DECO_CARPET_1,               $08
+	decoration DECO_CARPET,   BLUE_CARPET,       SET_UP_CARPET,      EVENT_DECO_CARPET_2,               $0b
+	decoration DECO_CARPET,   YELLOW_CARPET,     SET_UP_CARPET,      EVENT_DECO_CARPET_3,               $0e
+	decoration DECO_CARPET,   GREEN_CARPET,      SET_UP_CARPET,      EVENT_DECO_CARPET_4,               $11
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_PLANT,     EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    MAGNAPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_1,                $20
+	decoration DECO_PLANT,    TROPICPLANT,       SET_UP_PLANT,       EVENT_DECO_PLANT_2,                $21
+	decoration DECO_PLANT,    JUMBOPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_3,                $22
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_POSTER,    EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    TOWN_MAP_D,        SET_UP_POSTER,      EVENT_DECO_PLANT_4,                $1f
+	decoration DECO_POSTER,   PIKACHU,           SET_UP_POSTER,      EVENT_DECO_POSTER_1,               $23
+	decoration DECO_POSTER,   CLEFAIRY,          SET_UP_POSTER,      EVENT_DECO_POSTER_2,               $24
+	decoration DECO_POSTER,   JIGGLYPUFF,        SET_UP_POSTER,      EVENT_DECO_POSTER_3,               $25
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CONSOLE,   EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    FAMICOM,           SET_UP_CONSOLE,     EVENT_DECO_FAMICOM,                SPRITE_FAMICOM
+	decoration DECO_PLANT,    SUPER_NES,         SET_UP_CONSOLE,     EVENT_DECO_SNES,                   SPRITE_SNES
+	decoration DECO_PLANT,    NINTENDO_64,       SET_UP_CONSOLE,     EVENT_DECO_N64,                    SPRITE_N64
+	decoration DECO_PLANT,    VIRTUAL_BOY,       SET_UP_CONSOLE,     EVENT_DECO_VIRTUAL_BOY,            SPRITE_VIRTUAL_BOY
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BIG_DOLL,  EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_BIGDOLL,  SNORLAX,           SET_UP_BIG_DOLL,    EVENT_DECO_BIG_SNORLAX_DOLL,       SPRITE_BIG_SNORLAX
+	decoration DECO_BIGDOLL,  ONIX,              SET_UP_BIG_DOLL,    EVENT_DECO_BIG_ONIX_DOLL,          SPRITE_BIG_ONIX
+	decoration DECO_BIGDOLL,  LAPRAS,            SET_UP_BIG_DOLL,    EVENT_DECO_BIG_LAPRAS_DOLL,        SPRITE_BIG_LAPRAS
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_DOLL,      EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_DOLL,     PIKACHU,           SET_UP_DOLL,        EVENT_DECO_PIKACHU_DOLL,           SPRITE_PIKACHU
+	decoration DECO_PLANT,    SURF_PIKA_DOLL,    SET_UP_DOLL,        EVENT_DECO_SURFING_PIKACHU_DOLL,   SPRITE_SURFING_PIKACHU
+	decoration DECO_DOLL,     CLEFAIRY,          SET_UP_DOLL,        EVENT_DECO_CLEFAIRY_DOLL,          SPRITE_CLEFAIRY
+	decoration DECO_DOLL,     JIGGLYPUFF,        SET_UP_DOLL,        EVENT_DECO_JIGGLYPUFF_DOLL,        SPRITE_JIGGLYPUFF
+	decoration DECO_DOLL,     BULBASAUR,         SET_UP_DOLL,        EVENT_DECO_BULBASAUR_DOLL,         SPRITE_BULBASAUR
+	decoration DECO_DOLL,     CHARMANDER,        SET_UP_DOLL,        EVENT_DECO_CHARMANDER_DOLL,        SPRITE_CHARMANDER
+	decoration DECO_DOLL,     SQUIRTLE,          SET_UP_DOLL,        EVENT_DECO_SQUIRTLE_DOLL,          SPRITE_SQUIRTLE
+	decoration DECO_DOLL,     POLIWAG,           SET_UP_DOLL,        EVENT_DECO_POLIWAG_DOLL,           SPRITE_POLIWAG
+	decoration DECO_DOLL,     DIGLETT,           SET_UP_DOLL,        EVENT_DECO_DIGLETT_DOLL,           SPRITE_DIGLETT
+	decoration DECO_DOLL,     STARYU,            SET_UP_DOLL,        EVENT_DECO_STARMIE_DOLL,           SPRITE_STARMIE
+	decoration DECO_DOLL,     MAGIKARP,          SET_UP_DOLL,        EVENT_DECO_MAGIKARP_DOLL,          SPRITE_MAGIKARP
+	decoration DECO_DOLL,     ODDISH,            SET_UP_DOLL,        EVENT_DECO_ODDISH_DOLL,            SPRITE_ODDISH
+	decoration DECO_DOLL,     GENGAR,            SET_UP_DOLL,        EVENT_DECO_GENGAR_DOLL,            SPRITE_GENGAR
+	decoration DECO_DOLL,     SHELLDER,          SET_UP_DOLL,        EVENT_DECO_SHELLDER_DOLL,          SPRITE_SHELLDER
+	decoration DECO_DOLL,     GRIMER,            SET_UP_DOLL,        EVENT_DECO_GRIMER_DOLL,            SPRITE_GRIMER
+	decoration DECO_DOLL,     VOLTORB,           SET_UP_DOLL,        EVENT_DECO_VOLTORB_DOLL,           SPRITE_VOLTORB
+	decoration DECO_DOLL,     WEEDLE,            SET_UP_DOLL,        EVENT_DECO_WEEDLE_DOLL,            SPRITE_WEEDLE
+	decoration DECO_DOLL,     UNOWN,             SET_UP_DOLL,        EVENT_DECO_UNOWN_DOLL,             SPRITE_UNOWN
+	decoration DECO_DOLL,     GEODUDE,           SET_UP_DOLL,        EVENT_DECO_GEODUDE_DOLL,           SPRITE_GEODUDE
+	decoration DECO_DOLL,     MACHOP,            SET_UP_DOLL,        EVENT_DECO_MACHOP_DOLL,            SPRITE_MACHOP
+	decoration DECO_DOLL,     TENTACOOL,         SET_UP_DOLL,        EVENT_DECO_TENTACOOL_DOLL,         SPRITE_TENTACOOL
+	decoration DECO_PLANT,    GOLD_TROPHY,       SET_UP_DOLL,        EVENT_DECO_GOLD_TROPHY,            SPRITE_GOLD_TROPHY
+	decoration DECO_PLANT,    SILVER_TROPHY,     SET_UP_DOLL,        EVENT_DECO_SILVER_TROPHY,          SPRITE_SILVER_TROPHY
 ; 26b8d
 
 
@@ -28559,85 +28586,85 @@
 	db "GREEN@"
 ; 26c72
 
-Function26c72: ; 26c72
+GetDecoName: ; 26c72
 	ld a, [hli]
 	ld e, [hl]
 	ld bc, StringBuffer2
 	push bc
-	ld hl, Table26c7e
+	ld hl, .NameFunctions
 	rst JumpTable
 	pop de
 	ret
 ; 26c7e
 
-Table26c7e: ; 26c7e
-	dw Function26c8c
-	dw Function26c8d
-	dw Function26c90
-	dw Function26c97
-	dw Function26c9e
-	dw Function26ca6
-	dw Function26cae
+.NameFunctions: ; 26c7e
+	dw .invalid
+	dw .plant
+	dw .bed
+	dw .carpet
+	dw .poster
+	dw .doll
+	dw .bigdoll
 ; 26c8c
 
 
-Function26c8c: ; 26c8c
+.invalid: ; 26c8c
 	ret
 ; 26c8d
 
-Function26c8d: ; 26c8d
+.plant: ; 26c8d
 	ld a, e
-	jr Function26cca
+	jr .getdeconame
 
-Function26c90: ; 26c90
-	call Function26c8d
-	ld a, $d
-	jr Function26cca
+.bed: ; 26c90
+	call .plant
+	ld a, _BED
+	jr .getdeconame
 
-Function26c97: ; 26c97
-	call Function26c8d
-	ld a, $e
-	jr Function26cca
+.carpet: ; 26c97
+	call .plant
+	ld a, _CARPET
+	jr .getdeconame
 
-Function26c9e: ; 26c9e
+.poster: ; 26c9e
 	ld a, e
-	call Function26cc0
-	ld a, $f
-	jr Function26cca
+	call .getpokename
+	ld a, _POSTER
+	jr .getdeconame
 
-Function26ca6: ; 26ca6
+.doll: ; 26ca6
 	ld a, e
-	call Function26cc0
-	ld a, $10
-	jr Function26cca
+	call .getpokename
+	ld a, _DOLL
+	jr .getdeconame
 
-Function26cae: ; 26cae
+.bigdoll: ; 26cae
 	push de
-	ld a, $11
-	call Function26cca
+	ld a, BIG_
+	call .getdeconame
 	pop de
 	ld a, e
-	jr Function26cc0
+	jr .getpokename
 
-Function26cb8: ; 26cb8
+.unused: ; 26cb8
 	push de
-	call Function26cca
+	call .getdeconame
 	pop de
 	ld a, e
-	jr Function26cca
+	jr .getdeconame
 
-Function26cc0: ; 26cc0
+.getpokename: ; 26cc0
 	push bc
 	ld [wd265], a
 	call GetPokemonName
 	pop bc
-	jr Function26cda
+	jr .copy
 
-Function26cca: ; 26cca
-	call Function26ccf
-	jr Function26cda
+.getdeconame: ; 26cca
+	call ._getdeconame
+	jr .copy
 
-Function26ccf: ; 26ccf
+._getdeconame: ; 26ccf
 	push bc
 	ld hl, DecorationNames
 	call GetNthString
@@ -28646,7 +28673,7 @@
 	pop bc
 	ret
 
-Function26cda: ; 26cda
+.copy: ; 26cda
 	ld h, b
 	ld l, c
 	call CopyName2
@@ -28656,78 +28683,78 @@
 	ret
 ; 26ce3
 
-Function26ce3: ; 26ce3
+DecoAction_nothing: ; 26ce3
 	scf
 	ret
 ; 26ce5
 
-Function26ce5: ; 26ce5
+DecoAction_setupbed: ; 26ce5
 	ld hl, Bed
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26ceb
 
-Function26ceb: ; 26ceb
+DecoAction_putawaybed: ; 26ceb
 	ld hl, Bed
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26cf1
 
-Function26cf1: ; 26cf1
+DecoAction_setupcarpet: ; 26cf1
 	ld hl, Carpet
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26cf7
 
-Function26cf7: ; 26cf7
+DecoAction_putawaycarpet: ; 26cf7
 	ld hl, Carpet
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26cfd
 
-Function26cfd: ; 26cfd
+DecoAction_setupplant: ; 26cfd
 	ld hl, Plant
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d03
 
-Function26d03: ; 26d03
+DecoAction_putawayplant: ; 26d03
 	ld hl, Plant
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d09
 
-Function26d09: ; 26d09
+DecoAction_setupposter: ; 26d09
 	ld hl, Poster
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d0f
 
-Function26d0f: ; 26d0f
+DecoAction_putawayposter: ; 26d0f
 	ld hl, Poster
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d15
 
-Function26d15: ; 26d15
+DecoAction_setupconsole: ; 26d15
 	ld hl, Console
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d1b
 
-Function26d1b: ; 26d1b
+DecoAction_putawayconsole: ; 26d1b
 	ld hl, Console
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d21
 
-Function26d21: ; 26d21
+DecoAction_setupbigdoll: ; 26d21
 	ld hl, BigDoll
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d27
 
-Function26d27: ; 26d27
+DecoAction_putawaybigdoll: ; 26d27
 	ld hl, BigDoll
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d2d
 
-Function26d2d: ; 26d2d
+DecoAction_TrySetItUp: ; 26d2d
 	ld a, [hl]
 	ld [Buffer1], a
 	push hl
-	call Function26d46
-	jr c, .asm_26d43
-	ld a, $1
+	call DecoAction_SetItUp
+	jr c, .failed
+	ld a, 1
 	ld [wd1ee], a
 	pop hl
 	ld a, [MenuSelection]
@@ -28735,48 +28762,52 @@
 	xor a
 	ret
 
-.asm_26d43
+.failed
 	pop hl
 	xor a
 	ret
 ; 26d46
 
-Function26d46: ; 26d46
+DecoAction_SetItUp: ; 26d46
+; See if there's anything of the same type already out
 	ld a, [Buffer1]
 	and a
-	jr z, .asm_26d6d
+	jr z, .nothingthere
+; See if that item is already out
 	ld b, a
 	ld a, [MenuSelection]
 	cp b
-	jr z, .asm_26d7e
+	jr z, .alreadythere
+; Put away the item that's already out, and set up the new one
 	ld a, [MenuSelection]
 	ld hl, StringBuffer4
-	call Function269e7
+	call GetDecorationName
 	ld a, [Buffer1]
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26ee0
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26d6d
+.nothingthere
 	ld a, [MenuSelection]
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26edb
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26d7e
+.alreadythere
 	ld hl, UnknownText_0x26ee5
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; 26d86
 
-Function26d86: ; 26d86
+DecoAction_TryPutItAway: ; 26d86
+; If there is no item of that type already set, there is nothing to put away.
 	ld a, [hl]
 	ld [Buffer1], a
 	xor a
@@ -28783,51 +28814,52 @@
 	ld [hl], a
 	ld a, [Buffer1]
 	and a
-	jr z, .asm_26dab
+	jr z, .nothingthere
+; Put it away.
 	ld a, $1
 	ld [wd1ee], a
 	ld a, [Buffer1]
 	ld [MenuSelection], a
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26ed1
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26dab
+.nothingthere
 	ld hl, UnknownText_0x26ed6
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 ; 26db3
 
-Function26db3: ; 26db3
+DecoAction_setupornament: ; 26db3
 	ld hl, UnknownText_0x26e41
-	call Function26e70
-	jr c, .asm_26dc7
-	call Function26de3
-	jr c, .asm_26dc7
+	call DecoAction_AskWhichSide
+	jr c, .cancel
+	call DecoAction_SetItUp_Ornament
+	jr c, .cancel
 	ld a, $1
 	ld [wd1ee], a
-	jr Function26dd6
+	jr DecoAction_FinishUp_Ornament
 
-.asm_26dc7
+.cancel
 	xor a
 	ret
 
-Function26dc9: ; 26dc9
+DecoAction_putawayornament: ; 26dc9
 	ld hl, UnknownText_0x26e6b
-	call Function26e70
-	jr nc, .asm_26dd3
+	call DecoAction_AskWhichSide
+	jr nc, .incave
 	xor a
 	ret
 
-.asm_26dd3
-	call Function26e46
+.incave
+	call DecoAction_PutItAway_Ornament
 
-Function26dd6: ; 26dd6
-	call Function26e9a
+DecoAction_FinishUp_Ornament: ; 26dd6
+	call QueryWhichSide
 	ld a, [wd1ec]
 	ld [hl], a
 	ld a, [wd1ed]
@@ -28836,48 +28868,48 @@
 	ret
 ; 26de3
 
-Function26de3: ; 26de3
+DecoAction_SetItUp_Ornament: ; 26de3
 	ld a, [wd1ec]
 	and a
-	jr z, .asm_26e11
+	jr z, .nothingthere
 	ld b, a
 	ld a, [MenuSelection]
 	cp b
-	jr z, .asm_26e2b
+	jr z, .failed
 	ld a, b
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld a, [MenuSelection]
 	ld hl, StringBuffer4
-	call Function269e7
+	call GetDecorationName
 	ld a, [MenuSelection]
 	ld [wd1ec], a
-	call Function26e33
+	call .getwhichside
 	ld hl, UnknownText_0x26ee0
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26e11
+.nothingthere
 	ld a, [MenuSelection]
 	ld [wd1ec], a
-	call Function26e33
+	call .getwhichside
 	ld a, [MenuSelection]
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26edb
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26e2b
+.failed
 	ld hl, UnknownText_0x26ee5
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; 26e33
 
-Function26e33: ; 26e33
+.getwhichside: ; 26e33
 	ld a, [MenuSelection]
 	ld b, a
 	ld a, [wd1ed]
@@ -28894,24 +28926,24 @@
 	db "@"
 ; 0x26e46
 
-Function26e46: ; 26e46
+DecoAction_PutItAway_Ornament: ; 26e46
 	ld a, [wd1ec]
 	and a
-	jr z, .asm_26e63
+	jr z, .nothingthere
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld a, $1
 	ld [wd1ee], a
 	xor a
 	ld [wd1ec], a
 	ld hl, UnknownText_0x26ed1
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26e63
+.nothingthere
 	ld hl, UnknownText_0x26ed6
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 ; 26e6b
@@ -28922,18 +28954,18 @@
 	db "@"
 ; 0x26e70
 
-Function26e70: ; 26e70
-	call Function1d4f
+DecoAction_AskWhichSide: ; 26e70
+	call MenuTextBox
 	ld hl, MenuDataHeader_0x26eab
-	call Function1dab
-	call Function1c07
+	call GetMenu2
+	call ExitMenu
 	call Function1c66
-	jr c, .asm_26e98
+	jr c, .nope
 	ld a, [wcfa9]
-	cp $3
-	jr z, .asm_26e98
+	cp 3
+	jr z, .nope
 	ld [Buffer2], a
-	call Function26e9a
+	call QueryWhichSide
 	ld a, [hl]
 	ld [wd1ec], a
 	ld a, [de]
@@ -28941,16 +28973,16 @@
 	xor a
 	ret
 
-.asm_26e98
+.nope
 	scf
 	ret
 ; 26e9a
 
-Function26e9a: ; 26e9a
+QueryWhichSide: ; 26e9a
 	ld hl, RightOrnament
 	ld de, LeftOrnament
 	ld a, [Buffer2]
-	cp $1
+	cp 1
 	ret z
 	push hl
 	ld h, d
@@ -29005,44 +29037,44 @@
 	db "@"
 ; 0x26eea
 
-Function26eea: ; 26eea
+GetDecorationName_c_de: ; 26eea
 	ld a, c
 	ld h, d
 	ld l, e
-	call Function269e7
+	call GetDecorationName
 	ret
 ; 26ef1
 
-Function26ef1: ; 26ef1
+DecorationFlagAction_c: ; 26ef1
 	ld a, c
-	jp Function26a3b
+	jp DecorationFlagAction
 ; 26ef5
 
 
-Function26ef5: ; 26ef5 (9:6ef5)
+GetDecorationName_c: ; 26ef5 (9:6ef5)
 	ld a, c
-	call Function26f0c
+	call GetDecorationID
 	ld hl, StringBuffer1
 	push hl
-	call Function269e7
+	call GetDecorationName
 	pop de
 	ret
 
 
-Function26f02: ; 26f02
+SetSpecificDecorationFlag: ; 26f02
 	ld a, c
-	call Function26f0c
-	ld b, $1
-	call Function26a3b
+	call GetDecorationID
+	ld b, SET_FLAG
+	call DecorationFlagAction
 	ret
 ; 26f0c
 
-Function26f0c: ; 26f0c
+GetDecorationID: ; 26f0c
 	push hl
 	push de
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_26f2b
+	ld hl, DecorationIDs
 	add hl, de
 	ld a, [hl]
 	pop de
@@ -29050,62 +29082,103 @@
 	ret
 ; 26f19
 
-Function26f19: ; 26f19
-	ld hl, Unknown_26f2b
-.asm_26f1c
+SetAllDecorationFlags: ; 26f19
+	ld hl, DecorationIDs
+.loop
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_26f2a
+	cp -1
+	jr z, .done
 	push hl
-	ld b, $1
-	call Function26a3b
+	ld b, SET_FLAG
+	call DecorationFlagAction
 	pop hl
-	jr .asm_26f1c
+	jr .loop
 
-.asm_26f2a
+.done
 	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
+DecorationIDs: ; 26f2b
+	db DECO_FEATHERY_BED ; 2
+	db DECO_PINK_BED ; 3
+	db DECO_POLKADOT_BED ; 4
+	db DECO_PIKACHU_BED ; 5
+
+	db DECO_RED_CARPET ; 7
+	db DECO_BLUE_CARPET ; 8
+	db DECO_YELLOW_CARPET ; 9
+	db DECO_GREEN_CARPET ; a
+
+	db DECO_MAGNAPLANT ; c
+	db DECO_TROPICPLANT ; d
+	db DECO_JUMBOPLANT ; e
+
+	db DECO_TOWN_MAP ; 10
+	db DECO_PIKACHU_POSTER ; 11
+	db DECO_CLEFAIRY_POSTER ; 12
+	db DECO_JIGGLYPUFF_POSTER ; 13
+
+	db DECO_FAMICOM ; 15
+	db DECO_SNES ; 16
+	db DECO_N64 ; 17
+	db DECO_VIRTUAL_BOY ; 18
+
+	db DECO_PIKACHU_DOLL ; 1e
+	db DECO_SURF_PIKACHU_DOLL ; 1f
+	db DECO_CLEFAIRY_DOLL ; 20
+	db DECO_JIGGLYPUFF_DOLL ; 21
+	db DECO_BULBASAUR_DOLL ; 22
+	db DECO_CHARMANDER_DOLL ; 23
+	db DECO_SQUIRTLE_DOLL ; 24
+	db DECO_POLIWAG_DOLL ; 25
+	db DECO_DIGLETT_DOLL ; 26
+	db DECO_STARMIE_DOLL ; 27
+	db DECO_MAGIKARP_DOLL ; 28
+	db DECO_ODDISH_DOLL ; 29
+	db DECO_GENGAR_DOLL ; 2a
+	db DECO_SHELLDER_DOLL ; 2b
+	db DECO_GRIMER_DOLL ; 2c
+	db DECO_VOLTORB_DOLL ; 2d
+	db DECO_WEEDLE_DOLL ; 2e
+	db DECO_UNOWN_DOLL ; 2f
+	db DECO_GEODUDE_DOLL ; 30
+	db DECO_MACHOP_DOLL ; 31
+	db DECO_TENTACOOL_DOLL ; 32
+	db DECO_BIG_SNORLAX_DOLL ; 1a
+	db DECO_BIG_ONIX_DOLL ; 1b
+	db DECO_BIG_LAPRAS_DOLL ; 1c
+	db DECO_GOLD_TROPHY_DOLL ; 33
+	db DECO_SILVER_TROPHY_DOLL ; 34
+	db -1
 ; 26f59
 
-Function26f59:: ; 26f59
+DescribeDecoration:: ; 26f59
 	ld a, b
-	ld hl, Table26f5f
+	ld hl, JumpTable_DecorationDesc
 	rst JumpTable
 	ret
 ; 26f5f
 
-Table26f5f: ; 26f5f
-	dw Function26f69
-	dw Function26fb9
-	dw Function26fbe
-	dw Function26fdd
-	dw Function26fc3
+JumpTable_DecorationDesc: ; 26f5f
+	dw DecorationDesc_Poster
+	dw DecorationDesc_LeftOrnament
+	dw DecorationDesc_RightOrnament
+	dw DecorationDesc_GiantDoll
+	dw DecorationDesc_Console
 ; 26f69
 
-Function26f69: ; 26f69
+DecorationDesc_Poster: ; 26f69
 	ld a, [Poster]
-	ld hl, Unknown_26f84
+	ld hl, DecorationDesc_PosterPointers
 	ld de, 3
 	call IsInArray
-	jr c, .asm_26f7d
-	ld de, UnknownScript_0x26fb8
-	ld b, BANK(UnknownScript_0x26fb8)
+	jr c, .nope
+	ld de, DecorationDesc_NullPoster
+	ld b, BANK(DecorationDesc_NullPoster)
 	ret
 
-.asm_26f7d
-	ld b, BANK(UnknownScript_0x26f91)
+.nope
+	ld b, BANK(DecorationDesc_TownMapPoster)
 	inc hl
 	ld a, [hli]
 	ld d, [hl]
@@ -29113,19 +29186,19 @@
 	ret
 ; 26f84
 
-Unknown_26f84: ; 26f84
-	dbw $10, UnknownScript_0x26f91
-	dbw $11, UnknownScript_0x26fa0
-	dbw $12, UnknownScript_0x26fa8
-	dbw $13, UnknownScript_0x26fb0
-	db $ff
+DecorationDesc_PosterPointers: ; 26f84
+	dbw DECO_TOWN_MAP, DecorationDesc_TownMapPoster
+	dbw DECO_PIKACHU_POSTER, DecorationDesc_PikachuPoster
+	dbw DECO_CLEFAIRY_POSTER, DecorationDesc_ClefairyPoster
+	dbw DECO_JIGGLYPUFF_POSTER, DecorationDesc_JigglypuffPoster
+	db -1
 ; 26f91
 
-UnknownScript_0x26f91: ; 0x26f91
+DecorationDesc_TownMapPoster: ; 0x26f91
 	loadfont
 	writetext UnknownText_0x26f9b
 	closetext
-	special Functionc2c0
+	special Special_TownMap
 	loadmovesprites
 	end
 ; 0x26f9b
@@ -29136,7 +29209,7 @@
 	db "@"
 ; 0x26fa0
 
-UnknownScript_0x26fa0: ; 0x26fa0
+DecorationDesc_PikachuPoster: ; 0x26fa0
 	jumptext UnknownText_0x26fa3
 ; 0x26fa3
 
@@ -29146,7 +29219,7 @@
 	db "@"
 ; 0x26fa8
 
-UnknownScript_0x26fa8: ; 0x26fa8
+DecorationDesc_ClefairyPoster: ; 0x26fa8
 	jumptext UnknownText_0x26fab
 ; 0x26fab
 
@@ -29156,7 +29229,7 @@
 	db "@"
 ; 0x26fb0
 
-UnknownScript_0x26fb0: ; 0x26fb0
+DecorationDesc_JigglypuffPoster: ; 0x26fb0
 	jumptext UnknownText_0x26fb3
 ; 0x26fb3
 
@@ -29166,26 +29239,26 @@
 	db "@"
 ; 0x26fb8
 
-UnknownScript_0x26fb8: ; 26fb8
+DecorationDesc_NullPoster: ; 26fb8
 	end
 ; 26fb9
 
-Function26fb9: ; 26fb9
+DecorationDesc_LeftOrnament: ; 26fb9
 	ld a, [LeftOrnament]
-	jr Function26fc8
+	jr DecorationDesc_OrnamentOrConsole
 
-Function26fbe: ; 26fbe
+DecorationDesc_RightOrnament: ; 26fbe
 	ld a, [RightOrnament]
-	jr Function26fc8
+	jr DecorationDesc_OrnamentOrConsole
 
-Function26fc3: ; 26fc3
+DecorationDesc_Console: ; 26fc3
 	ld a, [Console]
-	jr Function26fc8
+	jr DecorationDesc_OrnamentOrConsole
 
-Function26fc8: ; 26fc8
+DecorationDesc_OrnamentOrConsole: ; 26fc8
 	ld c, a
 	ld de, StringBuffer3
-	call Function26eea
+	call GetDecorationName_c_de
 	ld b, BANK(Unknown_26fd5)
 	ld de, Unknown_26fd5
 	ret
@@ -29201,7 +29274,7 @@
 	db "@"
 ; 0x26fdd
 
-Function26fdd: ; 26fdd
+DecorationDesc_GiantDoll: ; 26fdd
 	ld b, BANK(Unknown_26fe3)
 	ld de, Unknown_26fe3
 	ret
@@ -29217,27 +29290,27 @@
 	db "@"
 ; 0x26feb
 
-Function26feb: ; 26feb
-	ld de, $0004
+ToggleMaptileDecorations: ; 26feb
+	lb de, 0, 4
 	ld a, [Bed]
-	call Function27037
-	ld de, $0704
+	call SetDecorationTile
+	lb de, 7, 4
 	ld a, [Plant]
-	call Function27037
-	ld de, $0600
+	call SetDecorationTile
+	lb de, 6, 0
 	ld a, [Poster]
-	call Function27037
-	call Function27027
-	ld de, $0000
-	call Function27092
+	call SetDecorationTile
+	call SetPosterVisibility
+	lb de, 0, 0
+	call PadCoords_de
 	ld a, [Carpet]
 	and a
 	ret z
-	call Function27085
+	call _GetDecorationSprite
 	ld [hl], a
 	push af
-	ld de, $0002
-	call Function27092
+	lb de, 0, 2
+	call PadCoords_de
 	pop af
 	inc a
 	ld [hli], a
@@ -29248,67 +29321,67 @@
 	ret
 ; 27027
 
-Function27027: ; 27027
-	ld b, $1
+SetPosterVisibility: ; 27027
+	ld b, SET_FLAG
 	ld a, [Poster]
 	and a
-	jr nz, .asm_27031
-	ld b, $0
+	jr nz, .ok
+	ld b, RESET_FLAG
 
-.asm_27031
-	ld de, $02cc
+.ok
+	ld de, EVENT_KRISS_ROOM_POSTER
 	jp EventFlagAction
 ; 27037
 
-Function27037: ; 27037
+SetDecorationTile: ; 27037
 	push af
-	call Function27092
+	call PadCoords_de
 	pop af
 	and a
 	ret z
-	call Function27085
+	call _GetDecorationSprite
 	ld [hl], a
 	ret
 ; 27043
 
-Function27043: ; 27043
-	ld de, $0741
-	ld hl, VariableSprites
+ToggleDecorationsVisibility: ; 27043
+	ld de, EVENT_KRISS_HOUSE_2F_CONSOLE
+	ld hl, VariableSprites + SPRITE_CONSOLE - SPRITE_VARS
 	ld a, [Console]
-	call Function27074
-	ld de, $0742
-	ld hl, VariableSprites + 1
+	call ToggleDecorationVisibility
+	ld de, EVENT_KRISS_HOUSE_2F_DOLL_1
+	ld hl, VariableSprites + SPRITE_DOLL_1 - SPRITE_VARS
 	ld a, [LeftOrnament]
-	call Function27074
-	ld de, $0743
-	ld hl, VariableSprites + 2
+	call ToggleDecorationVisibility
+	ld de, EVENT_KRISS_HOUSE_2F_DOLL_2
+	ld hl, VariableSprites + SPRITE_DOLL_2 - SPRITE_VARS
 	ld a, [RightOrnament]
-	call Function27074
-	ld de, $0744
-	ld hl, VariableSprites + 3
+	call ToggleDecorationVisibility
+	ld de, EVENT_KRISS_HOUSE_2F_BIG_DOLL
+	ld hl, VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS
 	ld a, [BigDoll]
-	call Function27074
+	call ToggleDecorationVisibility
 	ret
 ; 27074
 
-Function27074: ; 27074
+ToggleDecorationVisibility: ; 27074
 	and a
-	jr z, .asm_27080
-	call Function27085
+	jr z, .hide
+	call _GetDecorationSprite
 	ld [hl], a
-	ld b, $0
+	ld b, RESET_FLAG
 	jp EventFlagAction
 
-.asm_27080
-	ld b, $1
+.hide
+	ld b, SET_FLAG
 	jp EventFlagAction
 ; 27085
 
-Function27085: ; 27085
+_GetDecorationSprite: ; 27085
 	ld c, a
 	push de
 	push hl
-	callba Function26a44
+	callba GetDecorationSprite
 	pop hl
 	pop de
 	ld a, c
@@ -29315,19 +29388,19 @@
 	ret
 ; 27092
 
-Function27092: ; 27092
+PadCoords_de: ; 27092
 	ld a, d
-	add $4
+	add 4
 	ld d, a
 	ld a, e
-	add $4
+	add 4
 	ld e, a
-	call Function2a66
+	call GetBlockLocation
 	ret
 ; 2709e
 
 
-Function2709e: ; 2709e
+LevelUpHappinessMod: ; 2709e
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1CaughtLocation
 	call GetPartyLocation
@@ -29340,11 +29413,11 @@
 	ld c, a
 	call GetWorldMapLocation
 	cp d
-	ld c, $1
-	jr nz, .asm_270bd
-	ld c, $13
+	ld c, 1
+	jr nz, .ok
+	ld c, 19
 
-.asm_270bd
+.ok
 	callab ChangeHappiness
 	ret
 ; 270c4
@@ -29356,18 +29429,18 @@
 	call ClearTileMap
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
-	jr z, .asm_27171
+	jr z, .gettutorialbackpic
 	callba Function3f43d
-	jr .asm_27177
+	jr .continue
 
-.asm_27171
+.gettutorialbackpic
 	callba GetBattleBackpic
 
-.asm_27177
+.continue
 	callba Function3f47c
 	callba Function3ed9f
 	call ClearSGB
-	call Function1c17
+	call WriteBackup
 	call Function1d6e
 	call WaitBGMap
 	jp Function32f9
@@ -29382,12 +29455,12 @@
 	ld hl, OTPartyMon1Item
 	ld de, EnemyMonItem
 	ld a, [CurOTMon]
-	jr z, .asm_271ac
+	jr z, .theirturn
 	ld hl, PartyMon1Item
 	ld de, BattleMonItem
 	ld a, [CurBattleMon]
 
-.asm_271ac
+.theirturn
 	push hl
 	push af
 	ld a, [de]
@@ -29394,12 +29467,12 @@
 	ld b, a
 	callba GetItem
 	ld hl, Unknown_271de
-.asm_271b9
+.loop
 	ld a, [hli]
 	cp b
-	jr z, .asm_271c6
+	jr z, .ok
 	inc a
-	jr nz, .asm_271b9
+	jr nz, .loop
 	pop af
 	pop hl
 	pop bc
@@ -29407,7 +29480,7 @@
 	pop hl
 	ret
 
-.asm_271c6
+.ok
 	xor a
 	ld [de], a
 	pop af
@@ -29415,15 +29488,15 @@
 	call GetPartyLocation
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_271d8
+	jr nz, .ourturn
 	ld a, [IsInBattle]
 	dec a
-	jr z, .asm_271da
+	jr z, .done
 
-.asm_271d8
+.ourturn
 	ld [hl], $0
 
-.asm_271da
+.done
 	pop bc
 	pop de
 	pop hl
@@ -29453,7 +29526,7 @@
 	db $47
 	db HELD_ESCAPE
 	db HELD_CRITICAL_UP
-	db $ff
+	db -1
 ; 271f4
 
 MoveEffectsPointers: ; 271f4
@@ -29477,7 +29550,7 @@
 	call DelayFrames
 	call ClearScreen
 	call ClearSprites
-	call Function1ad2
+	call DrawOnMap
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -29484,7 +29557,7 @@
 	ld c, $50
 	call DelayFrames
 	call ClearScreen
-	call Function1ad2
+	call DrawOnMap
 	call Functione51
 	call Functione58
 	callba Function16d69a
@@ -29623,7 +29696,7 @@
 	ld [wd265], a
 	push hl
 	push de
-	callab Functionfb908
+	callab ConvertMon_1to2
 	pop de
 	pop hl
 	ld a, [wd265]
@@ -29966,7 +30039,7 @@
 	pop hl
 	bccoord 1, 14
 	call Function13e5
-	call Function4b6
+	call FadeToWhite
 	call ClearScreen
 	ld b, $8
 	call GetSGBLayout
@@ -30049,9 +30122,9 @@
 	jr nz, .asm_28441
 	ld hl, wc608
 	ld a, $fd
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld b, $c8
 	xor a
 .asm_28457
@@ -30130,7 +30203,7 @@
 	ld [wd265], a
 	push hl
 	push de
-	callab Functionfb8f1
+	callab ConvertMon_2to1
 	pop de
 	pop hl
 	ld a, [wd265]
@@ -30170,7 +30243,7 @@
 	push bc
 	ld a, [hl]
 	ld [wd265], a
-	callab Functionfb8f1
+	callab ConvertMon_2to1
 	pop bc
 	pop de
 	ld a, [wd265]
@@ -30450,7 +30523,7 @@
 	push bc
 	push de
 	ld [wd265], a
-	callab Functionfb908
+	callab ConvertMon_1to2
 	pop de
 	pop bc
 	ld a, [wd265]
@@ -30555,12 +30628,14 @@
 	ld a, $46
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	pop hl
+rept 2
 	inc de
-	inc de
+endr
 	ret
 ; 28771
 
@@ -30670,9 +30745,9 @@
 	callba Function16d673
 	xor a
 	ld hl, wcf51
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld a, $1
 	ld [wcfa9], a
@@ -31054,7 +31129,7 @@
 	jr nz, .asm_28ade
 
 Function28b22: ; 28b22
-	call Function4b6
+	call FadeToWhite
 	call ClearScreen
 	ld b, $8
 	call GetSGBLayout
@@ -31078,7 +31153,7 @@
 	call ByteFill
 	hlcoord 1, 16
 	ld a, $7f
-	ld bc, $0012
+	ld bc, SCREEN_HEIGHT
 	call ByteFill
 	hlcoord 2, 16
 	ld de, String_28b61
@@ -31092,7 +31167,7 @@
 Function28b68: ; 28b68
 	ld a, [wcf51]
 	hlcoord 6, 9
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	call AddNTimes
 	ld [hl], $ec
 	ret
@@ -31107,7 +31182,7 @@
 	dec c
 	jr nz, .asm_28b79
 	pop hl
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
@@ -31730,8 +31805,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, JumpTable290af
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -32019,8 +32095,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_2928f
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -32050,7 +32127,7 @@
 Function292af: ; 292af
 	call Function297cf
 	hlcoord 0, 3
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	ld a, $60
 	call ByteFill
 	ret
@@ -32066,7 +32143,7 @@
 	ld a, $5d
 	ld [hl], a
 	ld a, $61
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	ld c, $3
 .asm_292d9
 	add hl, de
@@ -32097,8 +32174,8 @@
 	ld a, $9c
 	ld [$ffd7], a
 	call ClearTileMap
-	ld hl, TileMap
-	ld bc, $0014
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH
 	ld a, $7a
 	call ByteFill
 	hlcoord 0, 1
@@ -32363,7 +32440,7 @@
 	hlcoord 7, 2
 	xor a
 	ld [$ffad], a
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	call WaitBGMap
 	ret
@@ -32604,8 +32681,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Jumptable_29686
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -32739,7 +32817,7 @@
 ; 0x29737
 
 UnknownText_0x29737: ; 0x29737
-	; 
+	;
 	text_jump UnknownText_0x1bc701
 	db "@"
 ; 0x2973c
@@ -32844,8 +32922,8 @@
 ; 297cf
 
 Function297cf: ; 297cf
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7f
 	call ByteFill
 	ret
@@ -32862,7 +32940,7 @@
 	dec c
 	jr nz, .asm_297dd
 	pop hl
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
@@ -33040,23 +33118,31 @@
 TradeBallGFX:   INCBIN "gfx/trade/ball.2bpp"
 TradePoofGFX:   INCBIN "gfx/trade/poof.2bpp"
 
-Function29bfb: ; 29bfb
+Special_CheckTimeCapsuleCompatibility: ; 29bfb
+; Checks to see if your Party is compatible with the generation 1 games.  Returns the following in ScriptVar:
+; 0: Party is okay
+; 1: At least one Pokemon was introduced in GS
+; 2: At least one Pokemon has a move that was introduced in GS
+; 3: At least one Pokemon is holding mail
+
+; If any party Pokemon was introduced in the generation 2 games, don't let it in.
 	ld hl, PartySpecies
-	ld b, PARTY_LENGTH
-.asm_29c00
+	ld b, PARTY_LENGTH ; 6
+.loop
 	ld a, [hli]
 	cp $ff
-	jr z, .asm_29c0c
-	cp 151 + 1
-	jr nc, .asm_29c42
+	jr z, .checkitem
+	cp CHIKORITA ; MEW + 1 ; 151 + 1
+	jr nc, .mon_too_new
 	dec b
-	jr nz, .asm_29c00
+	jr nz, .loop
 
-.asm_29c0c
+; If any party Pokemon is holding mail, don't let it in.
+.checkitem
 	ld a, [PartyCount]
 	ld b, a
 	ld hl, PartyMon1Item
-.asm_29c13
+.itemloop
 	push hl
 	push bc
 	ld d, [hl]
@@ -33063,37 +33149,38 @@
 	callba ItemIsMail
 	pop bc
 	pop hl
-	jr c, .asm_29c5e
+	jr c, .mon_has_mail
 	ld de, PartyMon2 - PartyMon1
 	add hl, de
 	dec b
-	jr nz, .asm_29c13
+	jr nz, .itemloop
 
+; If any party Pokemon has a move that was introduced in the generation 2 games, don't let it in.
 	ld hl, PartyMon1Moves
 	ld a, [PartyCount]
 	ld b, a
-.asm_29c2e
+.move_loop
 	ld c, NUM_MOVES
-.asm_29c30
+.move_next
 	ld a, [hli]
 	cp STRUGGLE + 1
-	jr nc, .asm_29c4c
+	jr nc, .move_too_new
 	dec c
-	jr nz, .asm_29c30
+	jr nz, .move_next
 	ld de, PartyMon2 - (PartyMon1 + NUM_MOVES)
 	add hl, de
 	dec b
-	jr nz, .asm_29c2e
+	jr nz, .move_loop
 	xor a
-	jr .asm_29c63
+	jr .done
 
-.asm_29c42
+.mon_too_new
 	ld [wd265], a
 	call GetPokemonName
 	ld a, $1
-	jr .asm_29c63
+	jr .done
 
-.asm_29c4c
+.move_too_new
 	push bc
 	ld [wd265], a
 	call GetMoveName
@@ -33101,13 +33188,13 @@
 	pop bc
 	call Function29c67
 	ld a, $2
-	jr .asm_29c63
+	jr .done
 
-.asm_29c5e
+.mon_has_mail
 	call Function29c67
 	ld a, $3
 
-.asm_29c63
+.done
 	ld [ScriptVar], a
 	ret
 ; 29c67
@@ -33126,7 +33213,7 @@
 	ret
 ; 29c7b
 
-Function29c7b: ; 29c7b
+Special_EnterTimeCapsule: ; 29c7b
 	ld c, $a
 	call DelayFrames
 	ld a, $4
@@ -33140,7 +33227,7 @@
 	ret
 ; 29c92
 
-Function29c92: ; 29c92
+Special_AbortLink: ; 29c92
 	ld c, $3
 	call DelayFrames
 	ld a, $ff
@@ -33188,7 +33275,7 @@
 	ret
 ; 29ce8
 
-Function29ce8: ; 29ce8
+Special_SetBitsForLinkTradeRequest: ; 29ce8
 	ld a, $1
 	ld [wcf56], a
 	ld [wd265], a
@@ -33195,7 +33282,7 @@
 	ret
 ; 29cf1
 
-Function29cf1: ; 29cf1
+Special_SetBitsForBattleRequest: ; 29cf1
 	ld a, $2
 	ld [wcf56], a
 	ld [wd265], a
@@ -33202,7 +33289,7 @@
 	ret
 ; 29cfa
 
-Function29cfa: ; 29cfa
+Special_SetBitsForTimeCapsuleRequest: ; 29cfa
 	ld a, $2
 	ld [rSB], a
 	xor a
@@ -33217,7 +33304,7 @@
 	ret
 ; 29d11
 
-Function29d11: ; 29d11
+Special_WaitForLinkedFriend: ; 29d11
 	ld a, [wcf56]
 	and a
 	jr z, .asm_29d2f
@@ -33289,7 +33376,7 @@
 	ret
 ; 29d92
 
-Function29d92: ; 29d92
+Special_CheckLinkTimeout: ; 29d92
 	ld a, $1
 	ld [wcf56], a
 	ld hl, wcf5b
@@ -33425,7 +33512,7 @@
 	ret
 ; 29e66
 
-Function29e66: ; 29e66
+Special_TryQuickSave: ; 29e66
 	ld a, [wd265]
 	push af
 	callba Function14ab2
@@ -33442,7 +33529,7 @@
 	ret
 ; 29e82
 
-Function29e82: ; 29e82
+Special_CheckBothSelectedSameRoom: ; 29e82
 	ld a, [wd265]
 	call Function29f17
 	push af
@@ -33469,7 +33556,7 @@
 	ret
 ; 29eaf
 
-Function29eaf: ; 29eaf
+Special_TimeCapsule: ; 29eaf
 	ld a, $1
 	ld [InLinkBattle], a
 	call Function2ed3
@@ -33480,7 +33567,7 @@
 	ret
 ; 29ec4
 
-Function29ec4: ; 29ec4
+Special_TradeCenter: ; 29ec4
 	ld a, $2
 	ld [InLinkBattle], a
 	call Function2ed3
@@ -33491,7 +33578,7 @@
 	ret
 ; 29ed9
 
-Function29ed9: ; 29ed9
+Special_Colosseum: ; 29ed9
 	ld a, $3
 	ld [InLinkBattle], a
 	call Function2ed3
@@ -33502,7 +33589,7 @@
 	ret
 ; 29eee
 
-Function29eee: ; 29eee
+Special_CloseLink: ; 29eee
 	xor a
 	ld [InLinkBattle], a
 	ld c, $3
@@ -33510,7 +33597,7 @@
 	jp Function29f04
 ; 29efa
 
-Function29efa: ; 29efa
+Special_FailedLinkToPast: ; 29efa
 	ld c, $28
 	call DelayFrames
 	ld a, $e
@@ -33559,14 +33646,14 @@
 	ret
 ; 29f47
 
-Function29f47: ; 29f47
+Special_CableClubCheckWhichChris: ; 29f47
 	ld a, [$ffcb]
 	cp $1
 	ld a, $1
-	jr z, .asm_29f50
+	jr z, .yes
 	dec a
 
-.asm_29f50
+.yes
 	ld [ScriptVar], a
 	ret
 ; 29f54
@@ -33587,18 +33674,20 @@
 	ret
 ; 29ff8
 
-Function29ff8: ; 29ff8
+LoadWildMonData: ; 29ff8
 	call Function2a205
 	jr c, .asm_2a006
 	ld hl, wd25a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	jr .asm_2a011
 .asm_2a006
+rept 2
 	inc hl
-	inc hl
+endr
 	ld de, wd25a
 	ld bc, $3
 	call CopyBytes
@@ -33606,8 +33695,9 @@
 	call Function2a21d
 	ld a, $0
 	jr nc, .asm_2a01b
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hl]
 .asm_2a01b
 	ld [wd25d], a
@@ -33614,14 +33704,14 @@
 	ret
 
 Function2a01f: ; 2a01f
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
 	call ByteFill
 	ld a, e
 	and a
 	jr nz, .asm_2a043
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, WildMons1
 	call Function2a052
 	ld hl, WildMons2
@@ -33631,7 +33721,7 @@
 	ret
 
 .asm_2a043
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, WildMons3
 	call Function2a052
 	ld hl, WildMons4
@@ -33648,9 +33738,9 @@
 	ld b, a
 	ld a, [hli]
 	ld c, a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, $15
 	call Function2a088
 	jr nc, .asm_2a067
@@ -33695,8 +33785,9 @@
 	ld a, [wd265]
 	cp [hl]
 	jr z, .asm_2a098
+rept 2
 	inc hl
-	inc hl
+endr
 	pop af
 	dec a
 	jr nz, .asm_2a089
@@ -33712,8 +33803,8 @@
 	push de
 	call GetWorldMapLocation
 	ld c, a
-	ld hl, TileMap
-	ld de, $0168
+	hlcoord 0, 0
+	ld de, SCREEN_WIDTH * SCREEN_HEIGHT
 .asm_2a0a7
 	ld a, [hli]
 	cp c
@@ -33834,13 +33925,13 @@
 	ld de, PartyMon2 - PartyMon1
 	ld a, [PartyCount]
 	ld c, a
-.next
+.loop
 	ld a, [hl]
 	cp CLEANSE_TAG
 	jr z, .asm_2a14c
 	add hl, de
 	dec c
-	jr nz, .next
+	jr nz, .loop
 	ret
 
 .asm_2a14c
@@ -33854,14 +33945,15 @@
 	call Function2a2ce
 	jp c, .asm_2a1c9
 
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	call Function1852
 	ld de, Unknown_2a1d9
 	jr z, .asm_2a174
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [TimeOfDay]
 	ld bc, $e
 	call AddNTimes
@@ -33971,10 +34063,9 @@
 
 .asm_2a1f2
 ; to PartyMonLevel
+rept 4
 	dec hl
-	dec hl
-	dec hl
-	dec hl
+endr
 
 	ld a, [CurPartyLevel]
 	cp [hl]
@@ -34024,7 +34115,7 @@
 asm_2a23d
 	call Function2a27f
 	push hl
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	bit 2, [hl]
 	pop hl
 	jr z, .asm_2a25c
@@ -34041,7 +34132,7 @@
 
 .asm_2a25c
 	push hl
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	bit 3, [hl]
 	pop hl
 	jr z, asm_2a278
@@ -34171,9 +34262,9 @@
 	ld a, e
 	cp [hl]
 	jr nz, .asm_2a30a
+rept 3
 	dec hl
-	dec hl
-	dec hl
+endr
 	ld a, [hli]
 	ld [wd22e], a
 	ld a, [hl]
@@ -34192,7 +34283,7 @@
 ; 2a30d
 
 
-Function2a30d: ; 2a30d
+UpdateRoamMons: ; 2a30d
 	ld a, [wRoamMon1MapGroup]
 	cp $ff
 	jr z, .asm_2a324
@@ -34272,8 +34363,9 @@
 	inc hl
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [wdfe7]
 	cp [hl]
 	jr nz, .asm_2a390
@@ -34289,7 +34381,7 @@
 	ld c, [hl]
 	ret
 
-Function2a394: ; 2a394
+RestoreRoamMons: ; 2a394
 	ld a, [wRoamMon1MapGroup]
 	cp $ff
 	jr z, .asm_2a3a6
@@ -34433,8 +34525,9 @@
 	dec a
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	inc hl
 	ld c, [hl]
 	pop hl
@@ -34506,8 +34599,9 @@
 	and $3
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	inc hl
 	ld a, [hl]
 	ld [wd265], a
@@ -34526,8 +34620,9 @@
 	dec a
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, BANK(TrainerGroups)
 	call GetFarHalfword
 
@@ -34887,9 +34982,9 @@
 	jr z, .asm_2c08b
 
 .asm_2c07f
+rept 3
 	dec hl
-	dec hl
-	dec hl
+endr
 	ld a, [hl]
 	and a
 	ld b, $32
@@ -34898,9 +34993,9 @@
 	jr .asm_2c08e
 
 .asm_2c08b
+rept 3
 	dec hl
-	dec hl
-	dec hl
+endr
 
 .asm_2c08e
 	ld a, b
@@ -34968,7 +35063,7 @@
 Function2c0f1: ; 2c0f1
 	ld a, [wd004]
 	ld [hl], a
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld a, [StartFlypoint]
 	ld [hl], a
@@ -35084,7 +35179,7 @@
 	db "RIVAL@"
 	db "#MON PROF.@"
 	db "ELITE FOUR@"
-	db $4a, " TRAINER@"
+	db "<PKMN> TRAINER@"
 	db "ELITE FOUR@"
 	db "ELITE FOUR@"
 	db "ELITE FOUR@"
@@ -35135,7 +35230,7 @@
 	db "KIMONO GIRL@"
 	db "TWINS@"
 	db "#FAN@"
-	db $4a, " TRAINER@"
+	db "<PKMN> TRAINER@"
 	db "LEADER@"
 	db "OFFICER@"
 	db "ROCKET@"
@@ -35942,9 +36037,9 @@
 	jr .asm_2ca85
 .asm_2ca77
 	call Function2ca86
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	push de
 	ld de, String_2caae
 	call PlaceString
@@ -36099,8 +36194,9 @@
 	dec a
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -36243,7 +36339,7 @@
 	push hl
 	ld a, [hl]
 	cp SHUCKLE
-	jr nz, .nextMon
+	jr nz, .loopMon
 	ld bc, PartyMon1Item - PartyMon1Species
 	add hl, bc
 	ld a, [hl]
@@ -36250,7 +36346,7 @@
 	cp BERRY
 	jr z, .convertToJuice
 
-.nextMon
+.loopMon
 	pop hl
 	ld bc, PartyMon2 - PartyMon1
 	add hl, bc
@@ -36424,9 +36520,9 @@
 	ld [wd0ee], a
 
 	ld hl, wd0d8
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 	ld [wd0e4], a
@@ -36651,8 +36747,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, TrainerGroups
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -36662,10 +36759,10 @@
 .skip_trainer
 	dec b
 	jr z, .got_trainer
-.next
+.loop
 	ld a, [hli]
 	cp $ff
-	jr nz, .next
+	jr nz, .loop
 	jr .skip_trainer
 .got_trainer
 
@@ -36680,8 +36777,9 @@
 	ld d, h
 	ld e, l
 	ld hl, TrainerTypes
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -36929,9 +37027,9 @@
 Function3991b: ; 3991b (e:591b)
 	ld hl, $ffb3
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld a, [wc652] ; base reward
 	ld [hli], a
 	ld a, [CurPartyLevel]
@@ -36947,11 +37045,11 @@
 	ret
 
 
-Function39939:: ; 39939
+Battle_GetTrainerName:: ; 39939
 	ld a, [wcfc0]
 	bit 0, a
 	ld hl, wd26b
-	jp nz, Function39984
+	jp nz, CopyTrainerName
 
 	ld a, [OtherTrainerID]
 	ld b, a
@@ -36958,10 +37056,10 @@
 	ld a, [OtherTrainerClass]
 	ld c, a
 
-Function3994c:: ; 3994c
+GetTrainerName:: ; 3994c
 	ld a, c
 	cp CAL
-	jr nz, .asm_3996d
+	jr nz, .not_cal2
 
 	ld a, $0
 	call GetSRAMBank
@@ -36968,40 +37066,41 @@
 	ld a, [$abfd]
 	and a
 	call CloseSRAM
-	jr z, .asm_3996d
+	jr z, .not_cal2
 
 	ld a, $0
 	call GetSRAMBank
 	ld hl, $abfe
-	call Function39984
+	call CopyTrainerName
 	jp CloseSRAM
 
-.asm_3996d
+.not_cal2
 	dec c
 	push bc
 	ld b, 0
 	ld hl, TrainerGroups
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	pop bc
 
-.asm_3997a
+.loop
 	dec b
-	jr z, Function39984
+	jr z, CopyTrainerName
 
-.asm_3997d
+.skip
 	ld a, [hli]
 	cp $ff
-	jr nz, .asm_3997d
-	jr .asm_3997a
+	jr nz, .skip
+	jr .loop
 
-Function39984: ; 39984
+CopyTrainerName: ; 39984
 	ld de, StringBuffer1
 	push de
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	pop de
 	ret
@@ -37008,9 +37107,10 @@
 ; 39990
 
 Function39990: ; 39990
+; This function is useless.
 	ld de, StringBuffer1
 	push de
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	pop de
 	ret
 ; 39999
@@ -37150,8 +37250,9 @@
 	ld b, 0
 	ld c, a
 	ld hl, EvosAttacksPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -37321,7 +37422,7 @@
 
 	xor a
 	ld [hBGMapMode], a
-	ld hl, TileMap
+	hlcoord 0, 0
 	lb bc, 12, 20
 	call ClearBox
 
@@ -37541,8 +37642,9 @@
 	ld b, 0
 	ld c, a
 	ld hl, EvosAttacksPointers
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -37741,8 +37843,9 @@
 .asm_42583
 	ld hl, EvosAttacksPointers
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -37808,9 +37911,9 @@
 ; The default score is 20. Unusable moves are given a score of 80.
 	ld a, 20
 	ld hl, Buffer1
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 ; Don't pick disabled moves.
@@ -37894,8 +37997,9 @@
 	ld hl, AIScoringPointers
 	dec c
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -37909,7 +38013,7 @@
 	ld hl, Buffer1
 	ld de, EnemyMonMoves
 	ld c, EnemyMonMovesEnd - EnemyMonMoves
-	
+
 .DecrementNextScore
 	; If the enemy has no moves, this will infinite.
 	ld a, [de]
@@ -37933,7 +38037,7 @@
 ; This means that the minimum score will be 1.
 .PickLowestScoreMoves
 	ld a, c
-	
+
 .asm_44175
 	inc [hl]
 	dec hl
@@ -37944,13 +38048,13 @@
 	ld hl, Buffer1
 	ld de, EnemyMonMoves
 	ld c, NUM_MOVES
-	
+
 ; Give a score of 0 to a blank move	
 .asm_44184
 	ld a, [de]
 	and a
 	jr nz, .asm_44189
-	ld [hl], a 
+	ld [hl], a
 
 ; Disregard the move if its score is not 1	
 .asm_44189
@@ -37960,7 +38064,7 @@
 	xor a
 	ld [hli], a
 	jr .asm_44193
-	
+
 .asm_44191
 	ld a, [de]
 	ld [hli], a
@@ -38128,8 +38232,9 @@
 	ld d, l
 	ld e, h
 	pop hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, d
 	or e
 	jr z, .asm_442b0
@@ -38229,8 +38334,9 @@
 	dec a
 	ld d, 0
 	ld e, a
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -38260,7 +38366,7 @@
 	db BANK(PokedexEntries3)
 	db BANK(PokedexEntries4)
 ; 44355
-	
+
 Function44355: ; 44355
 	call Function44333
 	push hl
@@ -38272,10 +38378,9 @@
 	inc hl
 	cp $50
 	jr nz, .asm_4435b
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr z, .asm_44374
 .asm_4436b
@@ -38425,7 +38530,7 @@
 Function44654:: ; 44654
 	push bc
 	push de
-	callba Function50000
+	callba SelectMonFromParty
 	ld a, $2
 	jr c, .asm_446c6
 	ld a, [CurPartyMon]
@@ -38488,7 +38593,7 @@
 	ret
 ; 446cc
 
-Function446cc:: ; 446cc
+GivePokeItem:: ; 446cc
 	ld a, [PartyCount]
 	dec a
 	push af
@@ -38608,11 +38713,11 @@
 	jr z, .nomail
 	call Function1d6e
 	call Function44806
-	jp Function1c17
+	jp WriteBackup
 
 .nomail
 	ld hl, .EmptyMailboxText
-	jp Function1d67
+	jp MenuTextBoxBackup
 ; 0x447b4
 
 .EmptyMailboxText ; 0x447b4
@@ -38682,11 +38787,11 @@
 .asm_4480f
 	call InitMail
 	ld hl, MenuData4494c
-	call Function1d3c
+	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
 	call Function352f
-	call Function1ad2
+	call DrawOnMap
 	ld a, [wd0f1]
 	ld [wcf88], a
 	ld a, [OBPals + 8 * 6]
@@ -38710,8 +38815,8 @@
 Function4484a: ; 0x4484a
 	ld hl, MenuData44964
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	jr c, .asm_44860
 	ld a, [wcfa9]
 	dec a
@@ -38739,9 +38844,9 @@
 
 .PutInPack ; 0x44877
 	ld hl, .MessageLostText
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
-	call Function1c07
+	call ExitMenu
 	ret c
 	ld a, [MenuSelection]
 	dec a
@@ -38752,7 +38857,7 @@
 	call ReceiveItem
 	jr c, .asm_4489e
 	ld hl, .PackFullText
-	jp Function1d67
+	jp MenuTextBoxBackup
 
 .asm_4489e
 	ld a, [MenuSelection]
@@ -38760,7 +38865,7 @@
 	ld b, a
 	call Function445c0
 	ld hl, .PutAwayText
-	jp Function1d67
+	jp MenuTextBoxBackup
 ; 0x448ac
 
 .PutAwayText ; 0x448ac
@@ -38954,7 +39059,7 @@
 	ld b, $1
 	call Function4930f
 	call WhiteBGMap
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $2
 	ld c, $14
 	call ClearBox
@@ -39209,7 +39314,7 @@
 	ld [wcf88], a
 	call Function1bc9
 	call PlayClickSFX
-	call Function1c07
+	call ExitMenu
 	bit 0, a
 	jp z, Function4840c
 	ld hl, wcfa9
@@ -39279,8 +39384,8 @@
 	ld [wd0e4], a
 	ld a, d
 	push af
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	pop af
 	ld a, [hJoyPressed] ; $ff00+$a7
 	bit 0, a
@@ -39425,8 +39530,9 @@
 .asm_4844b
 	and a
 	jr z, .asm_48453
+rept 2
 	inc hl
-	inc hl
+endr
 	dec a
 	jr .asm_4844b
 .asm_48453
@@ -39572,7 +39678,7 @@
 	ld b, $1
 	call Function4930f
 	call WhiteBGMap
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $4
 	ld c, $14
 	call ClearBox
@@ -39651,12 +39757,13 @@
 	pop af
 	ld [hli], a
 	ld a, $1
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ret
 
 Function48725: ; 48725 (12:4725)
@@ -39707,9 +39814,9 @@
 	ld a, $1
 	ld [hli], a
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ret
 
 Function4876f: ; 4876f (12:476f)
@@ -39764,7 +39871,7 @@
 	ld [wd473], a
 .asm_487da
 	ld a, [wd473]
-	call Function1c07
+	call ExitMenu
 	hlcoord 11, 6
 	call Function487ec
 	pop af
@@ -39776,10 +39883,9 @@
 	ld de, wd473
 	call Function487ff
 	pop hl
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	ld de, String_4880d
 	call PlaceString
 	ret
@@ -40064,7 +40170,7 @@
 	pop de
 	pop bc
 	pop af
-	call Function1c07
+	call ExitMenu
 	hlcoord 11, 10
 	call Function489ea
 	hlcoord 11, 9
@@ -40137,7 +40243,7 @@
 	call Function1bc9
 	push af
 	call PlayClickSFX
-	call Function1c07
+	call ExitMenu
 	pop af
 	bit 1, a
 	jp nz, Function48a9a
@@ -40577,10 +40683,12 @@
 	pop bc
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	ld a, $0
 .asm_48ced
 	push bc
@@ -40742,8 +40850,8 @@
 	ld hl, MenuDataHeader_0x48dfc
 	call LoadMenuDataHeader
 	call Function3200
-	call Function1d81
-	call Function1c17
+	call InterpretMenu2
+	call WriteBackup
 	ld a, [wcfa9]
 	dec a
 	ld [PlayerGender], a
@@ -40785,11 +40893,11 @@
 	call WhiteBGMap
 	call Function48000
 	call Functione5f
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $0
 	call ByteFill
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $168
 	xor a
 	call ByteFill
@@ -40826,8 +40934,9 @@
 
 Function48e81: ; 48e81
 	ld hl, PackFGFXPointers
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -40942,12 +41051,12 @@
 	jr .learned
 
 .didnt_learn
-	call Function1c07
+	call ExitMenu
 	and a
 	ret
 
 .learned
-	call Function1c07
+	call ExitMenu
 	scf
 	ret
 ; 4930a
@@ -40997,7 +41106,7 @@
 	dec c
 	jr nz, .asm_49338
 	pop hl
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
@@ -41007,7 +41116,7 @@
 
 
 Function49346: ; 49346 (12:5346)
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $168
 	xor a
 	call ByteFill
@@ -41035,7 +41144,7 @@
 	ret
 
 Function49384: ; 49384 (12:5384)
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $401
 	ld a, $1
 	call Function49336
@@ -41133,8 +41242,8 @@
 	ld a, $5 ; BANK(Unkn1Pals)
 	call FarCopyWRAM
 	call Function49346
-	ld hl, AttrMap
-	ld bc, $0168
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
 	call ByteFill
 	hlcoord 0, 14, AttrMap
@@ -41166,7 +41275,7 @@
 ; 49480
 
 Function49480: ; 49480
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $0414
 	ld a, $7
 	call Function49336
@@ -41179,7 +41288,7 @@
 ; 49496
 
 Function49496: ; 49496
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $0214
 	ld a, $7
 	call Function49336
@@ -41218,7 +41327,7 @@
 	ret
 
 .ice_path
-	ld a, [wd19a] ; permission
+	ld a, [wPermission] ; permission
 	and 7
 	cp 3 ; Hall of Fame
 	jr z, .do_nothing
@@ -41476,13 +41585,13 @@
 ; 49797
 
 Function49797: ; 49797
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $1002
 	ld a, $4
 	call Function49336
 	ld a, $3
-	ld [AttrMap + 0 + 1 * SCREEN_WIDTH], a
-	ld [AttrMap + 0 + 14 * SCREEN_WIDTH], a
+	ld [AttrMap + 0 + 1 * SCREEN_WIDTH], a ; (0, 1)
+	ld [AttrMap + 0 + 14 * SCREEN_WIDTH], a ; (0, 14)
 	hlcoord 2, 0, AttrMap
 	ld bc, $0812
 	ld a, $5
@@ -41515,9 +41624,9 @@
 	hlcoord 2, 16, AttrMap
 	ld [hli], a
 	ld a, $7
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld a, $2
 	ld [hl], a
 	hlcoord 2, 17, AttrMap
@@ -41607,10 +41716,10 @@
 	ld a, $a0
 	ld [wcf64], a
 	ld d, $0
-.asm_498ca
+.loop
 	ld a, [wcf63]
 	bit 7, a
-	jr nz, .asm_498ee
+	jr nz, .done
 	push bc
 	call Function49bae
 	inc d
@@ -41623,9 +41732,9 @@
 	call DelayFrames
 	pop de
 	pop bc
-	jr .asm_498ca
+	jr .loop
 
-.asm_498ee
+.done
 	pop af
 	ld [VramState], a
 	call Function498f9
@@ -41637,14 +41746,14 @@
 	ld hl, Sprites + 2
 	xor a
 	ld c, $4
-.asm_498ff
+.loop
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	inc a
 	dec c
-	jr nz, .asm_498ff
+	jr nz, .loop
 	ld hl, Sprites + $10
 	ld bc, $0090
 	xor a
@@ -41830,8 +41939,9 @@
 	ld a, d
 	ld d, $0
 	ld hl, Unknown_49b6e
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -41957,7 +42067,7 @@
 	ld hl, MenuDataHeader_0x49d14
 	call LoadMenuDataHeader
 	call Function49de4
-	call Function1c17
+	call WriteBackup
 	jr c, .quit
 	call ClearTileMap
 	ld a, [MenuSelection]
@@ -42092,11 +42202,11 @@
 	nop
 	ld a, [wcfcd]
 	and a
-	jr nz, .asm_49db0
+	jr nz, .next
 	ld a, $0
 	ret
 
-.asm_49db0
+.next
 	ld a, [hCGB]
 	cp $1
 	ld a, $1
@@ -42106,30 +42216,30 @@
 	ld a, [$abe5]
 	cp $ff
 	call CloseSRAM
-	jr nz, .asm_49dd6
+	jr nz, .done
 	ld a, [StatusFlags]
 	bit 7, a
 	ld a, $1
-	jr z, .asm_49dd1
-	jr .asm_49dd1
+	jr z, .ok
+	jr .ok
 
-.asm_49dd1
-	jr .asm_49dd3
+.ok
+	jr .ok2
 
-.asm_49dd3
+.ok2
 	ld a, $1
 	ret
 
-.asm_49dd6
+.done
 	ld a, [StatusFlags]
 	bit 7, a
-	jr z, .asm_49ddf
-	jr .asm_49ddf
+	jr z, .ok3
+	jr .ok3
 
-.asm_49ddf
-	jr .asm_49de1
+.ok3
+	jr .ok4
 
-.asm_49de1
+.ok4
 	ld a, $6
 	ret
 ; 49de4
@@ -42464,8 +42574,9 @@
 	add $2
 	ld [hli], a
 	ld a, $1
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ret
 
 Function4a098: ; 4a098 (12:6098)
@@ -42547,8 +42658,9 @@
 	add $2
 	ld [hli], a
 	ld a, $1
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ret
 
 Function4a13b: ; 4a13b (12:613b)
@@ -42736,7 +42848,7 @@
 	callba Function104148
 	ld hl, MenuDataHeader_0x4a362
 	call LoadMenuDataHeader
-	call Function1d81
+	call InterpretMenu2
 	bit 1, a
 	jr nz, .asm_4a338
 	ld a, [wcfa9]
@@ -42753,7 +42865,7 @@
 	call PrintText
 	call Functiona36
 .asm_4a338
-	call Function1c07
+	call ExitMenu
 .asm_4a33b
 	call Function1d7d
 	callba Function104148
@@ -42822,8 +42934,9 @@
 	add $2
 	ld [hli], a
 	ld a, $1
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ret
 ; 4a39a (12:639a)
 
@@ -42838,7 +42951,7 @@
 Function4a3a7: ; 4a3a7 (12:63a7)
 	call Function4a485
 Function4a3aa: ; 4a3aa
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $301
 	xor a
 	call Function4a6d8
@@ -42904,7 +43017,7 @@
 Function4a449: ; 4a449
 	ld bc, $003c
 	ld a, $0
-	ld hl, TileMap
+	hlcoord 0, 0
 	call ByteFill
 	ld bc, $0028
 	ld a, $1
@@ -42915,13 +43028,13 @@
 	ld bc, $0028
 	ld a, $1
 	call ByteFill
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	ld a, $2
 	call ByteFill
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	ld a, $3
 	call ByteFill
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	ld a, $7f
 	call ByteFill
 	ret
@@ -43134,12 +43247,13 @@
 	add $2
 	ld [hli], a
 	ld a, $1
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ret
 
 Function4a6ab: ; 4a6ab (12:66ab)
@@ -43269,13 +43383,13 @@
 	ld bc, sBoxMonOT
 .openboxmon
 	call CheckOwnMon
-	jr nc, .next
+	jr nc, .loop
 
 	; found!
 	call CloseSRAM
 	ret
 
-.next
+.loop
 	push bc
 	ld bc, sBoxMon2 - sBoxMon1
 	add hl, bc
@@ -43294,14 +43408,14 @@
 	ld a, [wCurBox]
 	and $f
 	cp c
-	jr z, .nextbox
+	jr z, .loopbox
 
 	; Load the box.
-	ld hl, Unknown_4a810
+	ld hl, BoxAddressTable1
 	ld b, 0
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	call GetSRAMBank
 	ld a, [hli]
@@ -43311,7 +43425,7 @@
 	; Number of monsters in the box
 	ld a, [hl]
 	and a
-	jr z, .nextbox
+	jr z, .loopbox
 
 	push bc
 
@@ -43332,7 +43446,7 @@
 
 .boxmon
 	call CheckOwnMon
-	jr nc, .nextboxmon
+	jr nc, .loopboxmon
 
 	; found!
 	pop bc
@@ -43339,7 +43453,7 @@
 	call CloseSRAM
 	ret
 
-.nextboxmon
+.loopboxmon
 	push bc
 	ld bc, sBoxMon2 - sBoxMon1
 	add hl, bc
@@ -43349,7 +43463,7 @@
 	jr nz, .boxmon
 	pop bc
 
-.nextbox
+.loopbox
 	inc c
 	ld a, c
 	cp NUM_BOXES
@@ -43430,7 +43544,7 @@
 	ret
 ; 0x4a810
 
-Unknown_4a810: ; 4a810
+BoxAddressTable1: ; 4a810
 	;  bank, address
 	dbw $02, $a000
 	dbw $02, $a450
@@ -43459,7 +43573,7 @@
 ; 0x4a843
 
 
-Function4a843: ; 4a843
+MobileCheckOwnMonAnywhere: ; 4a843
 ; Like CheckOwnMonAnywhere, but only check for species.
 ; OT/ID don't matter.
 
@@ -43512,11 +43626,11 @@
 	and $f
 	cp c
 	jr z, .asm_4a8d1
-	ld hl, Unknown_4a8f4
+	ld hl, BoxAddressTable2
 	ld b, 0
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	call GetSRAMBank
 	ld a, [hli]
@@ -43593,7 +43707,7 @@
 	ret
 ; 4a8f4
 
-Unknown_4a8f4: ; 4a8f4
+BoxAddressTable2: ; 4a8f4
 	;  bank, address
 	dbw $02, $a000
 	dbw $02, $a450
@@ -44079,8 +44193,9 @@
 	ld a, [wcfa9]
 	ld [wcfa9], a
 	ld a, [PartyCount]
+rept 2
 	inc a
-	inc a
+endr
 	ld b, a
 	ld a, [wcfa9]
 	cp b
@@ -44172,7 +44287,7 @@
 	ld a, $1
 	ld [hBGMapMode], a
 	call Function4acaa
-	call Function1c07
+	call ExitMenu
 	and a
 	ret
 ; 4aca2
@@ -44413,7 +44528,7 @@
 	ld bc, $0e07
 	push bc
 	ld hl, YesNoMenuDataHeader
-	call Function1d3c
+	call CopyMenuDataHeader
 	pop bc
 	ld a, b
 	ld [wcf83], a
@@ -44424,7 +44539,7 @@
 	add $4
 	ld [wcf84], a
 	call Function1c00
-	call Function1d81
+	call InterpretMenu2
 	push af
 	ld c, $f
 	call DelayFrames
@@ -44447,8 +44562,8 @@
 Function4ae5e: ; 4ae5e
 	ld a, [hOAMUpdate]
 	push af
-	call Function1c07
-	call Function1ad2
+	call ExitMenu
+	call DrawOnMap
 	xor a
 	ld [hOAMUpdate], a
 	call DelayFrame
@@ -44464,8 +44579,8 @@
 SECTION "bank13", ROMX, BANK[$13]
 
 Function4c000:: ; 4c000
-	ld hl, TileMap
-	ld de, AttrMap
+	hlcoord 0, 0
+	decoord 0, 0, AttrMap
 	ld b, $12
 .asm_4c008
 	push bc
@@ -44640,11 +44755,11 @@
 	di
 	ld a, $1
 	ld [rVBK], a ; $ff00+$4f
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	call Function4cf80
 	ld a, $0
 	ld [rVBK], a ; $ff00+$4f
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Function4cf80
 .asm_4cf72
 	ld a, [rLY] ; $ff00+$44
@@ -44810,11 +44925,12 @@
 	ld a, [wd197]
 	and a
 	jr z, .asm_4d170
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_4d170
-	ld de, TileMap
+	decoord 0, 0
 	ld b, SCREEN_HEIGHT
 .asm_4d175
 	ld c, SCREEN_WIDTH
@@ -44858,11 +44974,11 @@
 	di
 	ld a, $1
 	ld [rVBK], a
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	call Function4d1cb
 	ld a, $0
 	ld [rVBK], a
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Function4d1cb
 .asm_4d1bd
 	ld a, [rLY]
@@ -45035,10 +45151,12 @@
 	pop bc
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	ld a, $7
 .asm_4d36e
 	push bc
@@ -45048,7 +45166,7 @@
 	dec c
 	jr nz, .asm_4d370
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	pop bc
 	dec b
@@ -45065,7 +45183,7 @@
 	inc a
 	ld [hl], a
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 .asm_4d38d
 	push hl
@@ -45075,7 +45193,7 @@
 	call Function4d3ab
 	ld [hl], $7a
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	dec b
 	jr nz, .asm_4d38d
@@ -45107,8 +45225,8 @@
 	ld hl, UnknownText_0x4d408
 	call PrintText
 	ld hl, MenuDataHeader_0x4d40d
-	call Function1d3c
-	call Function1d81
+	call CopyMenuDataHeader
+	call InterpretMenu2
 	ret c
 	ld a, [wcfa9]
 	cp $1
@@ -45385,8 +45503,8 @@
 	ld hl, UnknownText_0x4d580
 	call PrintText
 	ld hl, MenuDataHeader_0x4d585
-	call Function1d3c
-	call Function1d81
+	call CopyMenuDataHeader
+	call InterpretMenu2
 	ret c
 	ld a, [wcfa9]
 	cp $1
@@ -45617,9 +45735,9 @@
 	jr z, .asm_4d90b
 	ld hl, Unknown_4d99f
 	ld b, 0
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	call GetSRAMBank
 	ld a, [hli]
@@ -45794,7 +45912,7 @@
 	ret
 ; 4d9e5
 
-Function4d9e5: ; 4d9e5
+CheckPartyFullAfterContest: ; 4d9e5
 	ld a, [wdf9c]
 	and a
 	jp z, Function4db35
@@ -46226,7 +46344,7 @@
 	push hl
 	call WhiteBGMap
 	call ClearTileMap
-	call Function1ad2
+	call DrawOnMap
 	callba Functionfb53e
 	pop hl
 	call _hl_
@@ -46814,8 +46932,9 @@
 	inc a
 	ld d, a
 	callba Function50e47
+rept 2
 	ld hl, TempMonExp + 2
-	ld hl, TempMonExp + 2
+endr
 	ld a, [$ffb6]
 	sub [hl]
 	dec hl
@@ -46831,8 +46950,9 @@
 .asm_4e111
 	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ret
 ; 4e119 (13:6119)
@@ -47004,13 +47124,13 @@
 	ld a, [CurPartySpecies]
 	cp UNOWN
 	jr z, .asm_4e266
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Function3786
 	ret
 .asm_4e266
 	xor a
 	ld [wc2c6], a
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Function378b
 	ret
 
@@ -47035,7 +47155,7 @@
 	call Function4e307
 	ld de, $9000
 	predef Function5108b
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld d, $0
 	ld e, $2
 	predef Functiond00a3
@@ -47178,7 +47298,7 @@
 	set 5, [hl]
 	call Function32f9 ; pals
 	call DelayFrame
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Function3786
 	callba Function10402d
 	call Function4e497
@@ -47239,7 +47359,7 @@
 	ld de, $9000
 	predef Function5108b
 	pop de
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld d, $0
 	predef Functiond00a3
 	ld hl, wcf64
@@ -47342,8 +47462,9 @@
 	ld c, a
 	ld hl, Jumptable_4e564
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -47407,8 +47528,9 @@
 	ld a, $1
 	ld [hli], a
 	ld a, $5
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], $ff
 	ret
 ; 4e5da (13:65da)
@@ -47611,8 +47733,9 @@
 	call Function4e741
 	pop bc
 	inc b
+rept 2
 	dec c
-	dec c
+endr
 	jr nz, .asm_4e72c
 	and a
 	ret
@@ -47640,7 +47763,7 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 7, 2
-	ld bc, $0707
+	lb bc, 7, 7
 	ld de, $000d
 .asm_4e762
 	push bc
@@ -47768,8 +47891,9 @@
 	ld a, [$ff9b]
 	and $e
 	srl a
+rept 2
 	inc a
-	inc a
+endr
 	and $7
 	ld b, a
 	ld hl, Sprites + 3
@@ -47778,9 +47902,9 @@
 	ld a, [hl]
 	or b
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_4e823
 	pop bc
@@ -47804,8 +47928,8 @@
 	ld bc, $400
 	ld a, $7f
 	call ByteFill
-	ld hl, AttrMap
-	ld bc, $0168
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
 	call ByteFill
 	xor a
@@ -47837,8 +47961,8 @@
 	ld bc, $400
 	ld a, $7f
 	call ByteFill
-	ld hl, AttrMap
-	ld bc, $0168
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
 	call ByteFill
 	ld hl, wd000
@@ -48010,10 +48134,12 @@
 	ld a, d
 	ld [hSCX], a
 	call Function4e9f1
+rept 2
 	inc e
-	inc e
+endr
+rept 2
 	dec d
-	dec d
+endr
 	pop af
 	push af
 	cp $1
@@ -48035,8 +48161,9 @@
 	ld c, $12
 	ld de, $0004
 .asm_4e9de
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	add hl, de
 	dec c
 	jr nz, .asm_4e9de
@@ -48163,7 +48290,7 @@
 
 SECTION "bank14", ROMX, BANK[$14]
 
-Function50000: ; 50000
+SelectMonFromParty: ; 50000
 	call Function2ed3
 	xor a
 	ld [PartyMenuActionText], a
@@ -48218,8 +48345,8 @@
 	set 4, [hl] ; Disable text delay
 	xor a
 	ld [hBGMapMode], a
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
 	call ByteFill ; blank the tilemap
 	call Function50396 ; This reads from a pointer table???
@@ -48275,8 +48402,9 @@
 	jr nz, .asm_500a7
 
 .asm_500bf
+rept 2
 	dec hl
-	dec hl
+endr
 	ld de, String_500c8
 	call PlaceString
 	ret
@@ -48384,8 +48512,9 @@
 	pop de
 	ld a, $f3
 	ld [hli], a
+rept 2
 	inc de
-	inc de
+endr
 	ld bc, $0203
 	call PrintNum
 
@@ -48552,8 +48681,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, EvosAttacksPointers
+rept 2
 	add hl, de
-	add hl, de
+endr
 	call Function50268
 	pop hl
 	call PlaceString
@@ -48587,16 +48717,19 @@
 	ld a, [hli]
 	and a
 	jr z, .asm_5029f
+rept 2
 	inc hl
-	inc hl
+endr
 	cp EVOLVE_ITEM
 	jr nz, .asm_50287
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, [CurItem]
 	cp [hl]
+rept 2
 	inc hl
-	inc hl
+endr
 	jr nz, .asm_50287
 	ld de, String_502a3
 	ret
@@ -48771,8 +48904,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_503b2
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -48945,8 +49079,9 @@
 	ld hl, PartyMenuStrings
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -49082,8 +49217,9 @@
 Function505c1: ; 505c1
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -49251,9 +49387,9 @@
 ; 506bc
 
 
-Function506bc: ; 506bc
+DoMovementFunctionc: ; 506bc
 	ld hl, UnknownScript_0x506c8
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -49276,7 +49412,7 @@
 ; 0x506e5
 
 UnknownScript_0x506e5: ; 0x506e5
-	farjump UnknownScript_0x135eb
+	farjump BugCatchingContestBattleScript
 ; 0x506e9
 
 UnknownScript_0x506e9: ; 0x506e9
@@ -49330,7 +49466,7 @@
 
 _Squirtbottle: ; 50730
 	ld hl, UnknownScript_0x5073c
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -49363,7 +49499,7 @@
 	cp MAP_ROUTE_36
 	jr nz, .asm_50774
 
-	callba Functioncf0d
+	callba GetFacingObject
 	jr c, .asm_50774
 
 	ld a, d
@@ -49384,32 +49520,32 @@
 _CardKey: ; 50779
 	ld a, [MapGroup]
 	cp GROUP_RADIO_TOWER_3F
-	jr nz, .asm_507a9
+	jr nz, .nope
 
 	ld a, [MapNumber]
 	cp MAP_RADIO_TOWER_3F
-	jr nz, .asm_507a9
+	jr nz, .nope
 
 	ld a, [PlayerDirection]
 	and $c
-	cp UP << 2
-	jr nz, .asm_507a9
+	cp OW_UP
+	jr nz, .nope
 
 	call GetFacingTileCoord
 	ld a, d
 	cp 18
-	jr nz, .asm_507a9
+	jr nz, .nope
 	ld a, e
 	cp 6
-	jr nz, .asm_507a9
+	jr nz, .nope
 
 	ld hl, UnknownScript_0x507af
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
 
-.asm_507a9
+.nope
 	ld a, $0
 	ld [wd0ec], a
 	ret
@@ -49424,35 +49560,35 @@
 _BasementKey: ; 507b4
 	ld a, [MapGroup]
 	cp GROUP_WAREHOUSE_ENTRANCE
-	jr nz, .asm_507db
+	jr nz, .nope
 
 	ld a, [MapNumber]
 	cp MAP_WAREHOUSE_ENTRANCE
-	jr nz, .asm_507db
+	jr nz, .nope
 
 	call GetFacingTileCoord
 	ld a, d
 	cp 22
-	jr nz, .asm_507db
+	jr nz, .nope
 	ld a, e
 	cp 10
-	jr nz, .asm_507db
+	jr nz, .nope
 
-	ld hl, UnknownScript_0x507e1
-	call Function31cd
-	ld a, $1
+	ld hl, UnlockBasementDoorScript
+	call ExitMenuCallScript
+	ld a, 1
 	ld [wd0ec], a
 	ret
 
-.asm_507db
+.nope
 	ld a, $0
 	ld [wd0ec], a
 	ret
 ; 507e1
 
-UnknownScript_0x507e1: ; 0x507e1
+UnlockBasementDoorScript: ; 0x507e1
 	loadmovesprites
-	farjump MapWarehouseEntranceSignpost0Script
+	farjump BasementDoorScript
 ; 0x507e6
 
 
@@ -49462,8 +49598,8 @@
 	call CheckAnyFaintedMon
 	ret nc
 
-	ld hl, UnknownScript_0x50821
-	call Function31cd
+	ld hl, SacredAshScript
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -49487,7 +49623,7 @@
 
 	ld a, [hli]
 	or [hl]
-	jr z, .asm_5081d
+	jr z, .done
 
 .next
 	pop hl
@@ -49498,7 +49634,7 @@
 	xor a
 	ret
 
-.asm_5081d
+.done
 	pop hl
 	pop af
 	scf
@@ -49505,16 +49641,16 @@
 	ret
 ; 50821
 
-UnknownScript_0x50821: ; 0x50821
+SacredAshScript: ; 0x50821
 	special HealParty
 	reloadmappart
 	playsound SFX_WARP_TO
-	special Function8c084
-	special Function8c079
-	special Function8c084
-	special Function8c079
-	special Function8c084
-	special Function8c079
+	special FadeBlackBGMap
+	special FadeInBGMap
+	special FadeBlackBGMap
+	special FadeInBGMap
+	special FadeBlackBGMap
+	special FadeInBGMap
 	waitbutton
 	writetext UnknownText_0x50845
 	playsound SFX_CAUGHT_MON
@@ -49670,8 +49806,9 @@
 	dec a
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -49820,7 +49957,7 @@
 	call DrawHPBar
 	pop hl
 
-; Print HP 
+; Print HP
 	ld bc, $0015 ; move (1,1)
 	add hl, bc
 	ld de, TempMonHP
@@ -49909,44 +50046,44 @@
 	ld a, [MonType]
 	and a
 	jr z, .PartyMon
-	
+
 ; 1: OTPartyMon
 	ld hl, OTPartyMon1DVs
 	dec a
 	jr z, .PartyMon
-	
+
 ; 2: sBoxMon
 	ld hl, sBoxMon1DVs
 	ld bc, sBoxMon2 - sBoxMon1
 	dec a
 	jr z, .sBoxMon
-	
+
 ; 3: Unknown
 	ld hl, TempMonDVs
 	dec a
 	jr z, .DVs
-	
+
 ; else: WildMon
 	ld hl, EnemyMonDVs
 	jr .DVs
-	
-	
+
+
 ; Get our place in the party/box.
-	
+
 .PartyMon
 .sBoxMon
 	ld a, [CurPartyMon]
 	call AddNTimes
-	
-	
+
+
 .DVs
-	
+
 ; sBoxMon data is read directly from SRAM.
 	ld a, [MonType]
 	cp BOXMON
 	ld a, 1
 	call z, GetSRAMBank
-	
+
 ; Attack DV
 	ld a, [hli]
 	and $f0
@@ -49955,7 +50092,7 @@
 	ld a, [hl]
 	and $f0
 	swap a
-	
+
 ; Put our DVs together.
 	or b
 	ld b, a
@@ -49964,8 +50101,8 @@
 	ld a, [MonType]
 	cp BOXMON
 	call z, CloseSRAM
-	
-	
+
+
 ; We need the gender ratio to do anything with this.
 	push bc
 	ld a, [CurPartySpecies]
@@ -49974,35 +50111,35 @@
 	ld bc, BaseData1 - BaseData
 	call AddNTimes
 	pop bc
-	
+
 	ld a, BANK(BaseData)
 	call GetFarByte
-	
-	
+
+
 ; The higher the ratio, the more likely the monster is to be female.
-	
+
 	cp $ff
 	jr z, .Genderless
-	
+
 	and a
 	jr z, .Male
-	
+
 	cp $fe
 	jr z, .Female
-	
+
 ; Values below the ratio are male, and vice versa.
 	cp b
 	jr c, .Male
-	
+
 .Female
 	xor a
 	ret
-	
+
 .Male
 	ld a, 1
 	and a
 	ret
-	
+
 .Genderless
 	scf
 	ret
@@ -50030,9 +50167,9 @@
 
 .asm_50c6f
 	pop hl
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld d, h
 	ld e, l
 	ld hl, TempMonMoves
@@ -50144,8 +50281,9 @@
 
 Function50d0a: ; 50d0a
 	push de
+rept 2
 	inc de
-	inc de
+endr
 	ld a, [de]
 	ld b, a
 	inc de
@@ -50365,8 +50503,9 @@
 Function50e47: ; 50e47
 
 	ld a, [BaseGrowthRate]
+rept 2
 	add a
-	add a
+endr
 	ld c, a
 	ld b, 0
 	ld hl, GrowthRates
@@ -50503,8 +50642,8 @@
 ENDM
 
 	growth_rate 1, 1,   0,   0,   0 ; Medium Fast
-	growth_rate 3, 4,  10,   0,  30
-	growth_rate 3, 4,  20,   0,  70
+	growth_rate 3, 4,  10,   0,  30 ; Slightly Fast
+	growth_rate 3, 4,  20,   0,  70 ; Slightly Slow
 	growth_rate 6, 5, -15, 100, 140 ; Medium Slow
 	growth_rate 4, 5,   0,   0,   0 ; Fast
 	growth_rate 5, 4,   0,   0,   0 ; Slow
@@ -50675,7 +50814,7 @@
 	srl a
 	or b
 	ld b, a
-	
+
 	; spd
 	ld a, [hl]
 	and %01100000
@@ -51805,8 +51944,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, .Steps
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -52144,7 +52284,7 @@
 	push bc
 	ld a, PLAYER_NORMAL
 	ld [PlayerState], a
-	call Functione4a ; UpdateSprites
+	call Special_ReplaceKrisSprite ; UpdateSprites
 	pop bc
 	ret
 ; 80404
@@ -52204,32 +52344,33 @@
 	jr z, .ceiling
 	jr c, .read ; cp 0 can't set carry!
 	jr .invalid
-	
+
 ; There are only $a2 engine flags, so
 ; anything beyond that is invalid too.
-	
+
 .ceiling
 	ld a, e
 	cp $a2
 	jr c, .read
-	
+
 ; Invalid flags are treated as flag 00.
-	
+
 .invalid
 	xor a
 	ld e, a
 	ld d, a
-	
+
 ; Get this flag's location.
-	
+
 .read
 	ld hl, EngineFlags
 ; location
+rept 2
 	add hl, de
-	add hl, de
+endr
 ; bit
 	add hl, de
-	
+
 ; location
 	ld e, [hl]
 	inc hl
@@ -52237,14 +52378,14 @@
 	inc hl
 ; bit
 	ld c, [hl]
-	
+
 ; What are we doing with this flag?
-	
+
 	ld a, b
 	cp 1
 	jr c, .reset ; b = 0
 	jr z, .set   ; b = 1
-	
+
 ; Return the given flag in c.
 .check
 	ld a, [de]
@@ -52251,7 +52392,7 @@
 	and c
 	ld c, a
 	ret
-	
+
 ; Set the given flag.
 .set
 	ld a, [de]
@@ -52258,7 +52399,7 @@
 	or c
 	ld [de], a
 	ret
-	
+
 ; Reset the given flag.
 .reset
 	ld a, c
@@ -52277,7 +52418,7 @@
 
 
 
-Function80648:: ; 80648 (20:4648)
+_GetVarAction:: ; 80648 (20:4648)
 	ld a, c
 	cp NUM_VARS
 	jr c, .asm_8064e
@@ -52285,10 +52426,10 @@
 .asm_8064e
 	ld c, a
 	ld b, 0
-	ld hl, Unknown_80671
+	ld hl, VarActionTable
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -52312,7 +52453,7 @@
 	ret
 ; 80671 (20:4671)
 
-Unknown_80671: ; 80671
+VarActionTable: ; 80671
 ; $00: return address
 ; $40: return at StringBuffer2
 ; $80: return function result at StringBuffer2
@@ -52331,12 +52472,12 @@
 	dwb MapGroup,      $00
 	dwb MapNumber,     $00
 	dwb Function806ff, $80
-	dwb wd19a,         $00
+	dwb wPermission,         $00
 	dwb Function80715, $80
 	dwb wd46c,         $00
 	dwb XCoord,        $00
 	dwb YCoord,        $00
-	dwb wdc31,         $00
+	dwb wSpecialPhoneCallID,         $00
 	dwb wcf64,         $00
 	dwb wdca4,         $00
 	dwb wdbf9,         $40
@@ -52548,12 +52689,12 @@
 	ld bc, $2000
 	xor a
 	call ByteFill
-	ld hl, AttrMap
-	ld bc, $0168
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
 	call ByteFill
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
 	call ByteFill
 	call ClearSprites
@@ -52734,8 +52875,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_81acf
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -52793,8 +52935,8 @@
 Function81adb: ; 81adb
 	xor a
 	ld [hBGMapMode], a
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $6f
 	call ByteFill
 	hlcoord 1, 3
@@ -52868,7 +53010,7 @@
 	ld [TempEnemyMonSpecies], a
 	ld [$ffad], a
 	hlcoord 2, 3
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 
 .asm_81ba9
@@ -52915,8 +53057,9 @@
 	inc a
 	ld l, a
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, OverworldMap
 	add hl, de
 	ld de, wc608
@@ -52990,8 +53133,9 @@
 	ld a, [wc608 + 3]
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld hl, wcda9
 	call Function81f0c
@@ -53007,9 +53151,9 @@
 ; 81ca7
 
 Function81ca7: ; 81ca7
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, [de]
 	call Function81cbc
 	ld a, [de]
@@ -53040,8 +53184,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_81d02
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -53285,8 +53430,9 @@
 Function81e55: ; 81e55
 	cp $32
 	jr c, .asm_81e5b
+rept 2
 	inc a
-	inc a
+endr
 
 .asm_81e5b
 	add $bf
@@ -53367,8 +53513,9 @@
 	inc a
 	ld l, a
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, OverworldMap
 	add hl, de
 	ld e, l
@@ -53398,8 +53545,9 @@
 	inc de
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	dec c
 	jr nz, .asm_81ee3
 	ret
@@ -53414,7 +53562,7 @@
 	dec c
 	jr nz, .asm_81efe
 	pop hl
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
@@ -53534,8 +53682,9 @@
 	ld a, b
 	ld [hli], a
 	ld a, [de]
+rept 2
 	add a
-	add a
+endr
 	add $18
 	ld [hli], a
 	xor a
@@ -53587,12 +53736,12 @@
 	call Request2bpp
 	ld a, $9c
 	ld [$ffd7], a
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $6f
 	call ByteFill
-	ld hl, AttrMap
-	ld bc, $0168
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7
 	call ByteFill
 	ld de, $0015
@@ -53617,31 +53766,28 @@
 ; 821d2
 
 Function821d2: ; 821d2
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Function821de
 
 Function821d8: ; 821d8
 	ld a, [wcf64]
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 
 Function821de: ; 821de
 	add hl, de
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld bc, $0010
 	add hl, bc
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld bc, $0010
 	add hl, bc
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ret
 ; 821f4
 
@@ -53669,9 +53815,9 @@
 	ld a, [wcf64]
 	ld l, a
 	ld h, $0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld de, Unkn1Pals
 	add hl, de
 	ld de, wc608
@@ -53689,7 +53835,7 @@
 	ld hl, $ffa9
 	ld a, [hl]
 	and $4
-	jr nz, .asm_82247
+	jr nz, .loop7
 	ld a, [hl]
 	and $2
 	jr nz, .asm_82299
@@ -53696,7 +53842,7 @@
 	call Function822f0
 	ret
 
-.asm_82247
+.loop7
 	ld hl, wcf64
 	ld a, [hl]
 	inc a
@@ -53784,8 +53930,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_82301
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -53827,8 +53974,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, wc608
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, l
 	ld d, h
 	call Function81ea5
@@ -53926,8 +54074,9 @@
 	ld c, a
 	ld b, $0
 	ld hl, wc608
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, e
 	ld [hli], a
 	ld [hl], d
@@ -53967,8 +54116,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_84031
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -54236,9 +54386,9 @@
 Function841fb: ; 841fb (21:41fb)
 	xor a
 	ld hl, wca82
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld hl, wca86
 	ld [hli], a
@@ -54989,9 +55139,9 @@
 ; 84728
 
 Function84728: ; 84728
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld de, wca90
-	ld bc, $0168
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call CopyBytes
 	ret
 ; 84735
@@ -54998,8 +55148,8 @@
 
 Function84735: ; 84735
 	ld hl, wca90
-	ld de, TileMap
-	ld bc, $0168
+	decoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call CopyBytes
 	ret
 ; 84742
@@ -55027,12 +55177,12 @@
 Function84757: ; 84757
 	ld a, [wca88]
 	cp $ff
-	jr nz, .asm_84765
+	jr nz, .c_directly_below_e5
 	ld a, [wca89]
 	cp $ff
 	jr z, .asm_8477f
 
-.asm_84765
+.c_directly_below_e5
 	ld a, [wca89]
 	and $e0
 	ret z
@@ -55073,8 +55223,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_84807
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -55105,8 +55256,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_84807
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -55141,12 +55293,12 @@
 Function84817: ; 84817 (21:4817)
 	xor a
 	ld [wd002], a
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $7f
 	call ByteFill
 	call Function84a0e
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $b4
 	ld a, $7f
 	call ByteFill
@@ -55176,7 +55328,7 @@
 ; 8486f
 
 Function8486f: ; 8486f (21:486f)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $7f
 	call ByteFill
@@ -55193,7 +55345,7 @@
 	ret
 
 Function84893: ; 84893 (21:4893)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $7f
 	call ByteFill
@@ -55210,7 +55362,7 @@
 	ret
 
 Function848b7: ; 848b7 (21:48b7)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $7f
 	call ByteFill
@@ -55260,7 +55412,7 @@
 	ld a, [CurPartySpecies]
 	cp $fd
 	pop hl
-	jr z, .asm_84972
+	jr z, .ok2
 	ld bc, $b
 	add hl, bc
 	call Function8498a
@@ -55304,7 +55456,7 @@
 	ld a, [hl]
 	pop hl
 	call Function383d
-.asm_84972
+.ok2
 	ld hl, DefaultFlypoint
 	inc [hl]
 	pop de
@@ -55370,7 +55522,7 @@
 	ret
 
 Function849d7: ; 849d7 (21:49d7)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $79
 	ld [hli], a
 	ld a, $7a
@@ -55384,7 +55536,7 @@
 	ret
 
 Function849e9: ; 849e9 (21:49e9)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld de, $13
 	ld c, $12
 .asm_849f1
@@ -55440,23 +55592,23 @@
 	call Function8648e
 	ld a, [StatusFlags]
 	push af
-	ld a, $1
+	ld a, 1
 	ld [wc2cd], a
 	call Function2ed3
-	ld a, $1
+	ld a, 1
 	ld [wd4b5], a
 
 	; Enable the Pokégear map to cycle through all of Kanto
 	ld hl, StatusFlags
-	set 6, [hl]
+	set 6, [hl] ; hall of fame
 
 	callba Function14da0
 	ld hl, wd95e
 	ld a, [hl]
-	cp $c8
-	jr nc, .asm_86436 ; 0x86433 $1
+	cp 200
+	jr nc, .ok ; 0x86433 $1
 	inc [hl]
-.asm_86436
+.ok
 	callba Function14b85
 	call Function8653f
 	callba Function14b5f
@@ -55476,7 +55628,7 @@
 	ld [MusicFadeIDHi], a
 	ld a, $a
 	ld [MusicFade], a
-	callba Function8c084
+	callba FadeBlackBGMap
 	xor a
 	ld [VramState], a
 	ld [$ffde], a
@@ -55497,14 +55649,14 @@
 	ld [MusicFadeIDLo], a
 	ld a, MUSIC_NONE / $100
 	ld [MusicFadeIDHi], a
-	ld a, $a
+	ld a, 10
 	ld [MusicFade], a
-	callba Function8c084
+	callba FadeBlackBGMap
 	xor a
 	ld [VramState], a
 	ld [$ffde], a
 	callba Function4e881
-	ld c, $64
+	ld c, 100
 	jp DelayFrames
 ; 864b4
 
@@ -55522,35 +55674,35 @@
 	xor a
 	ld [wcf63], a
 	call Function8671c
-	jr c, .asm_864fb
-	ld de, $0014
+	jr c, .done
+	ld de, SCREEN_WIDTH
 	call Function864b4
 	xor a
 	ld [wcf64], a
-.asm_864d6
+.loop
 	ld a, [wcf64]
-	cp $6
-	jr nc, .asm_864fb
+	cp 6
+	jr nc, .done
 	ld hl, wc608 + 1
 	ld bc, $0010
 	call AddNTimes
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_864fb
+	cp -1
+	jr z, .done
 	push hl
 	call Function865b5
 	pop hl
 	call Function8650c
-	jr c, .asm_864fb
+	jr c, .done
 	ld hl, wcf64
 	inc [hl]
-	jr .asm_864d6
+	jr .loop
 
-.asm_864fb
+.done
 	call Function86810
 	ld a, $4
 	ld [MusicFade], a
-	call Function4b6
+	call FadeToWhite
 	ld c, $8
 	call DelayFrames
 	ret
@@ -55664,8 +55816,9 @@
 	ld a, [hli]
 	ld [TempMonSpecies], a
 	ld [CurPartySpecies], a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld [TempMonDVs], a
 	ld a, [hli]
@@ -55672,8 +55825,8 @@
 	ld [TempMonDVs + 1], a
 	ld hl, TempMonDVs
 	predef GetUnownLetter
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7f
 	call ByteFill
 	ld de, $9310
@@ -55696,8 +55849,8 @@
 	call Function86635
 	xor a
 	ld [wc2c6], a
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7f
 	call ByteFill
 	hlcoord 6, 5
@@ -55726,8 +55879,9 @@
 	ld a, [hSCX]
 	and a
 	ret z
+rept 2
 	dec a
-	dec a
+endr
 	ld [hSCX], a
 	call DelayFrame
 	jr .asm_86643
@@ -55897,11 +56051,11 @@
 	call CopyBytes
 	ld a, $50
 	ld [StringBuffer2 + 10], a
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7f
 	call ByteFill
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $0312
 	call TextBox
 	hlcoord 0, 12
@@ -55970,8 +56124,8 @@
 	ld de, FontExtra + $d0
 	lb bc, BANK(FontExtra), 1
 	call Request2bpp
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7f
 	call ByteFill
 	callba GetPlayerBackpic
@@ -55994,8 +56148,8 @@
 	call Function86635
 	xor a
 	ld [wc2c6], a
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7f
 	call ByteFill
 	callba Function88840
@@ -56002,7 +56156,7 @@
 	xor a
 	ld [$ffad], a
 	hlcoord 12, 5
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	ld a, $c0
 	ld [hSCX], a
@@ -56118,13 +56272,13 @@
 	callba Function24c64
 	jr c, .asm_88083
 	ld hl, MenuDataHeader_0x88086
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [MenuSelection]
 	ld [wcf88], a
 	xor a
 	ld [hBGMapMode], a
 	call Function352f
-	call Function1ad2
+	call DrawOnMap
 	call Function350c
 	ld a, [wcf73]
 	cp $2
@@ -56194,7 +56348,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call Function1cbb
-	call Function1ad2
+	call DrawOnMap
 	call Function88116
 	call Function88126
 	call Function321c
@@ -56211,7 +56365,7 @@
 	scf
 
 .asm_88109
-	call Function1c17
+	call WriteBackup
 	ret
 ; 8810d
 
@@ -56406,8 +56560,9 @@
 	inc hl
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	inc hl
 	ld a, [hl]
 	pop bc
@@ -56422,8 +56577,9 @@
 	ld c, a
 	ld b, $0
 	inc hl
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [CurItem]
 	ld c, a
 	ld a, [hli]
@@ -56489,7 +56645,7 @@
 	push de
 	xor a
 	ld [hBGMapMode], a
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	xor a
 	ld [hBGMapThird], a
@@ -56509,7 +56665,7 @@
 	ld a, h
 	sbc d
 	ld h, a
-	ld bc, $0707
+	lb bc, 7, 7
 	call ClearBox
 	pop bc
 	pop hl
@@ -56520,15 +56676,15 @@
 	ld hl, ChrisNameMenuHeader
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .GotGender
+	jr z, .GotClass
 	ld hl, KrisNameMenuHeader
-.GotGender
+.GotClass
 	call LoadMenuDataHeader
-	call Function1d81
+	call InterpretMenu2
 	ld a, [wcfa9]
 	dec a
 	call Function1db8
-	call Function1c17
+	call WriteBackup
 	ret
 ; 882b5
 
@@ -56576,15 +56732,15 @@
 	db " NAME @" ; title
 ; 88318
 
-Function88318: ; 88318
+GetPlayerNameArray: ; 88318 This Function is never called
 	ld hl, PlayerName
 	ld de, Unknown_882c9
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_88328
+	jr z, .done
 	ld de, Unknown_882f9
 
-.asm_88328
+.done
 	call InitName
 	ret
 ; 8832c
@@ -56595,15 +56751,15 @@
 ; Male
 	ld de, ChrisSpriteGFX
 	ld b, BANK(ChrisSpriteGFX)
-	
+
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .done
-	
+
 ; Female
 	ld de, KrisSpriteGFX
 	ld b, BANK(KrisSpriteGFX)
-	
+
 .done
 	ret
 ; 8833e
@@ -56612,9 +56768,9 @@
 	ld hl, ChrisCardPic
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_8834b
+	jr z, .GotClass
 	ld hl, KrisCardPic
-.asm_8834b
+.GotClass
 	ld de, $9000
 	ld bc, $230
 	ld a, BANK(ChrisCardPic) ; BANK(KrisCardPic)
@@ -56651,7 +56807,7 @@
 	ld hl, ChrisBackpic
 	ld b, BANK(ChrisBackpic)
 	ld de, $9310
-	ld c, $31
+	ld c, 7 * 7
 	predef DecompressPredef
 	ret
 ; 88840
@@ -56663,22 +56819,22 @@
 	ld e, 0
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_88851
+	jr z, .GotClass
 	ld e, 1
 
-.asm_88851
+.GotClass
 	ld a, e
 	ld [TrainerClass], a
 	ld de, ChrisPic
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_88862
+	jr z, .GotPic
 	ld de, KrisPic
 
-.asm_88862
+.GotPic
 	ld hl, VTiles2
 	ld b, BANK(ChrisPic) ; BANK(KrisPic)
-	ld c, $31
+	ld c, 7 * 7
 	call Get2bpp
 	call WaitBGMap
 	ld a, $1
@@ -56717,7 +56873,7 @@
 	xor a
 	ld [$ffad], a
 	hlcoord 6, 4
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	ret
 ; 888a9
@@ -56796,30 +56952,32 @@
 	ret
 
 Function89185: ; 89185 (22:5185)
+; Compares c bytes starting at de and hl and incrementing together until a match is found.
 	push de
 	push hl
-.asm_89187
+.loop
 	ld a, [de]
 	inc de
 	cp [hl]
-	jr nz, .asm_89190
+	jr nz, .done
 	inc hl
 	dec c
-	jr nz, .asm_89187
-.asm_89190
+	jr nz, .loop
+.done
 	pop hl
 	pop de
 	ret
 
 Function89193: ; 89193
+; Copies c bytes from hl to de.
 	push de
 	push hl
-.asm_89195
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_89195
+	jr nz, .loop
 	pop hl
 	pop de
 	ret
@@ -56827,16 +56985,17 @@
 
 
 Function8919e: ; 8919e (22:519e)
+; Searches for the c'th string starting at de.  Returns the pointer in de.
 	ld a, c
 	and a
 	ret z
-.asm_891a1
+.loop
 	ld a, [de]
 	inc de
-	cp $50
-	jr nz, .asm_891a1
+	cp "@"
+	jr nz, .loop
 	dec c
-	jr nz, .asm_891a1
+	jr nz, .loop
 	ret
 
 Function891ab: ; 891ab
@@ -56848,9 +57007,9 @@
 
 Function891b8: ; 891b8
 	call Function8923c
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $7f
-	ld bc, $0168
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
 	call DelayFrame
 	ret
@@ -56875,13 +57034,13 @@
 Function891de: ; 891de
 	call Function8923c
 	call ClearPalettes
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld a, $7
-	ld bc, $0168
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $7f
-	ld bc, $0168
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
 	call Function891ab
 	ret
@@ -56897,13 +57056,13 @@
 ; 89209
 
 Function89209: ; 89209
-	ld a, $1
+	ld a, 1
 	ld [wc2ce], a
 	ret
 ; 8920f
 
 Function8920f: ; 8920f
-	ld a, $0
+	ld a, 0
 	ld [wc2ce], a
 	ret
 ; 89215
@@ -56922,11 +57081,11 @@
 
 Function8921f: ; 8921f (22:521f)
 	push de
-	ld de, $14
+	ld de, SCREEN_WIDTH
 	add hl, de
 	inc hl
 	ld a, $7f
-.asm_89227
+.loop
 	push bc
 	push hl
 .asm_89229
@@ -56937,7 +57096,7 @@
 	add hl, de
 	pop bc
 	dec b
-	jr nz, .asm_89227
+	jr nz, .loop
 	pop de
 	ret
 
@@ -56960,7 +57119,7 @@
 
 
 Function89245: ; 89245 (22:5245)
-	callba Function14ea5
+	callba TryLoadSaveFile
 	ret c
 	callba Function150b9
 	and a
@@ -56981,7 +57140,7 @@
 	push af
 	push bc
 	ld hl, MenuDataHeader_0x892a3
-	call Function1d3c
+	call CopyMenuDataHeader
 	pop bc
 	ld hl, wcf82
 	ld a, c
@@ -56999,21 +57158,21 @@
 	call Function1c00
 	call Function8923c
 	call Function89209
-	call Function1d81
+	call InterpretMenu2
 	push af
 	ld c, $a
 	call DelayFrames
-	call Function1c17
+	call WriteBackup
 	call Function8920f
 	pop af
-	jr c, .asm_892a1
+	jr c, .done
 	ld a, [wcfa9]
 	cp $2
-	jr z, .asm_892a1
+	jr z, .done
 	and a
 	ret
 
-.asm_892a1
+.done
 	scf
 	ret
 ; 892a3
@@ -57039,49 +57198,49 @@
 Function892b7: ; 892b7
 	ld d, b
 	ld e, c
-	ld hl, $0000
+	ld hl, 0
 	add hl, bc
-	ld a, $50
-	ld bc, $0006
+	ld a, "@"
+	ld bc, 6
 	call ByteFill
 	ld b, d
 	ld c, e
-	ld hl, $0006
+	ld hl, 6
 	add hl, bc
-	ld a, $50
-	ld bc, $0006
+	ld a, "@"
+	ld bc, 6
 	call ByteFill
 	ld b, d
 	ld c, e
-	ld hl, $000c
+	ld hl, 12
 	add hl, bc
 	xor a
 	ld [hli], a
 	ld [hl], a
-	ld hl, $000e
+	ld hl, 14
 	add hl, bc
 	ld [hli], a
 	ld [hl], a
-	ld hl, $0010
+	ld hl, 16
 	add hl, bc
 	ld [hl], a
-	ld hl, $0011
+	ld hl, 17
 	add hl, bc
-	ld a, $ff
-	ld bc, $0008
+	ld a, -1
+	ld bc, 8
 	call ByteFill
 	ld b, d
 	ld c, e
-	ld e, $6
-	ld hl, $0019
+	ld e, 6
+	ld hl, 25
 	add hl, bc
-.asm_892fb
-	ld a, $ff
+.loop
+	ld a, -1
 	ld [hli], a
-	ld a, $ff
+	ld a, -1
 	ld [hli], a
 	dec e
-	jr nz, .asm_892fb
+	jr nz, .loop
 	ret
 ; 89305
 
@@ -57089,8 +57248,8 @@
 Function89305: ; 89305 (22:5305)
 	xor a
 	ld [MenuSelection], a
-	ld c, $28
-.asm_8930b
+	ld c, 40
+.loop
 	ld a, [MenuSelection]
 	inc a
 	ld [MenuSelection], a
@@ -57098,7 +57257,7 @@
 	call Function892b4
 	pop bc
 	dec c
-	jr nz, .asm_8930b
+	jr nz, .loop
 	ret
 
 Function8931b: ; 8931b
@@ -57115,29 +57274,30 @@
 ; 8932d
 
 Function8932d: ; 8932d
-	ld hl, $0000
+	ld hl, 0
 	add hl, bc
 
 Function89331: ; 89331
+; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.  Sets carry if it does not find a nonspace character.  Returns the location of the following character in hl.
 	push bc
-	ld c, $5
-.asm_89334
+	ld c, 5
+.loop
 	ld a, [hli]
-	cp $50
-	jr z, .asm_89340
-	cp $7f
-	jr nz, .asm_89343
+	cp "@"
+	jr z, .terminator
+	cp " "
+	jr nz, .nonspace
 	dec c
-	jr nz, .asm_89334
+	jr nz, .loop
 
-.asm_89340
+.terminator
 	scf
-	jr .asm_89344
+	jr .done
 
-.asm_89343
+.nonspace
 	and a
 
-.asm_89344
+.done
 	pop bc
 	ret
 ; 89346
@@ -57146,62 +57306,64 @@
 Function89346: ; 89346 (22:5346)
 	ld h, b
 	ld l, c
-	jr asm_8934e
+	jr _incave
 
 Function8934a: ; 8934a
-	ld hl, $0006
+	ld hl, 6
 	add hl, bc
-asm_8934e:
+_incave:
+; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.  Sets carry if it does not find a nonspace character.  Returns the location of the following character in hl.
 	push bc
-	ld c, $5
-.asm_89351
+	ld c, 5
+.loop
 	ld a, [hli]
-	cp $50
-	jr z, .asm_8935d
-	cp $7f
-	jr nz, .asm_89360
+	cp "@"
+	jr z, .terminator
+	cp " "
+	jr nz, .nonspace
 	dec c
-	jr nz, .asm_89351
+	jr nz, .loop
 
-.asm_8935d
+.terminator
 	scf
-	jr .asm_89361
+	jr .done
 
-.asm_89360
+.nonspace
 	and a
 
-.asm_89361
+.done
 	pop bc
 	ret
 ; 89363
 
 Function89363: ; 89363
+; Scans six byte pairs starting at bc to find $ff.  Sets carry if it does not find a $ff.  Returns the location of the byte after the first $ff found in hl.
 	ld h, b
 	ld l, c
-	jr .asm_8936b
+	jr ._incave
 
-	ld hl, $0019
+	ld hl, 25
 	add hl, bc
 
-.asm_8936b
+._incave
 	push de
-	ld e, $6
-.asm_8936e
+	ld e, 6
+.loop
 	ld a, [hli]
-	cp $ff
-	jr nz, .asm_8937e
+	cp -1
+	jr nz, .ok
 	ld a, [hli]
-	cp $ff
-	jr nz, .asm_8937e
+	cp -1
+	jr nz, .ok
 	dec e
-	jr nz, .asm_8936e
+	jr nz, .loop
 	scf
-	jr .asm_8937f
+	jr .done
 
-.asm_8937e
+.ok
 	and a
 
-.asm_8937f
+.done
 	pop de
 	ret
 ; 89381
@@ -57210,16 +57372,16 @@
 	push bc
 	push de
 	call Function89b45
-	jr c, .asm_89392
+	jr c, .ok
 	push hl
-	ld a, $ff
-	ld bc, $0008
+	ld a, -1
+	ld bc, 8
 	call ByteFill
 	pop hl
 
-.asm_89392
+.ok
 	pop de
-	ld c, $8
+	ld c, 8
 	call Function89193
 	pop bc
 	ret
@@ -57227,13 +57389,13 @@
 
 Function8939a: ; 8939a
 	push bc
-	ld hl, $0000
+	ld hl, 0
 	add hl, bc
 	ld de, DefaultFlypoint
-	ld c, $6
+	ld c, 6
 	call Function89193
 	pop bc
-	ld hl, $0011
+	ld hl, 17
 	add hl, bc
 	ld de, wd008
 	call Function89381
@@ -57274,7 +57436,7 @@
 Function893ef: ; 893ef
 	ld de, VTiles0
 	ld hl, GFX_8940b
-	ld bc, $0020
+	ld bc, $20
 	ld a, BANK(GFX_8940b)
 	call FarCopyBytes
 	ret
@@ -57306,14 +57468,15 @@
 	ret
 
 Function89448: ; 89448 (22:5448)
+; Clears the Sprites array
 	push af
 	ld hl, Sprites
-	ld d, $60
+	ld d, $10 * 6
 	xor a
-.asm_8944f
+.loop
 	ld [hli], a
 	dec d
-	jr nz, .asm_8944f
+	jr nz, .loop
 	pop af
 	ret
 
@@ -57340,11 +57503,11 @@
 ; 89481
 
 Function89481: ; 89481
-	ld d, $2
+	ld d, 2
 	call Function8934a
 	ret c
-	ld d, $0
-	ld hl, $0010
+	ld d, 0
+	ld hl, 16
 	add hl, bc
 	bit 0, [hl]
 	ret z
@@ -57354,7 +57517,7 @@
 
 
 Function89492: ; 89492 (22:5492)
-	ld d, $0
+	ld d, 0
 	ld a, [PlayerGender]
 	bit 0, a
 	ret z
@@ -57364,11 +57527,11 @@
 Function8949c: ; 8949c
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, 5
 	ld [rSVBK], a
 	ld hl, Palette_894b3
 	ld de, Unkn1Pals + 8 * 7
-	ld bc, $0008
+	ld bc, 8
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -57407,22 +57570,23 @@
 	push bc
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, 5
 	ld [rSVBK], a
 	ld c, d
 	ld b, 0
 	ld hl, Unknown_89509
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	ld de, Unkn1Pals
-	ld bc, $0018
+	ld bc, 24
 	call CopyBytes
 	ld hl, Palette_89557
 	ld de, wd018
-	ld bc, $0018
+	ld bc, 24
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -57503,7 +57667,7 @@
 
 Function8956f: ; 8956f
 	push bc
-	ld hl, $0010
+	ld hl, 16
 	add hl, bc
 	ld d, h
 	ld e, l
@@ -57516,20 +57680,21 @@
 	ld [TrainerClass], a
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, 5
 	ld [rSVBK], a
 	ld hl, wd030
-	ld a, $ff
+	ld a, -1
 	ld [hli], a
-	ld a, $7f
+	ld a, " "
 	ld [hl], a
 	pop af
 	ld [rSVBK], a
 	ld a, [TrainerClass]
-	ld h, $0
+	ld h, 0
 	ld l, a
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, TrainerPalettes
 	add hl, de
 	ld a, [rSVBK]
@@ -57537,8 +57702,8 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld de, wd032
-	ld c, $4
-.asm_895b1
+	ld c, 4
+.loop
 	ld a, BANK(TrainerPalettes)
 	call GetFarByte
 	ld [de], a
@@ -57545,7 +57710,7 @@
 	inc de
 	inc hl
 	dec c
-	jr nz, .asm_895b1
+	jr nz, .loop
 	ld hl, wd036
 	xor a
 	ld [hli], a
@@ -57560,11 +57725,11 @@
 Function895c7: ; 895c7 (22:55c7)
 	ld a, [rSVBK] ; $ff00+$70
 	push af
-	ld a, $5
+	ld a, 5
 	ld [rSVBK], a ; $ff00+$70
 	ld hl, Palette_895de
 	ld de, wd030
-	ld bc, $8
+	ld bc, 8
 	call CopyBytes
 	pop af
 	ld [rSVBK], a ; $ff00+$70
@@ -57579,9 +57744,9 @@
 ; 895e6
 
 Function895e6: ; 895e6
-	ld a, $7
-	ld hl, AttrMap
-	ld bc, $0168
+	ld a, 7
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
 	ret
 ; 895f2
@@ -57589,8 +57754,8 @@
 Function895f2: ; 895f2
 	push bc
 	xor a
-	ld hl, AttrMap
-	ld bc, $0168
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
 	call Function89605
 	call Function89655
@@ -57600,13 +57765,13 @@
 
 Function89605: ; 89605
 	hlcoord 19, 2, AttrMap
-	ld a, $1
-	ld de, $0014
-	ld c, $e
-.asm_8960f
+	ld a, 1
+	ld de, SCREEN_WIDTH
+	ld c, 14
+.loop
 	ld [hl], a
 	dec c
-	jr z, .asm_8961b
+	jr z, .done
 	add hl, de
 	inc a
 	ld [hl], a
@@ -57613,25 +57778,25 @@
 	dec a
 	add hl, de
 	dec c
-	jr nz, .asm_8960f
+	jr nz, .loop
 
-.asm_8961b
+.done
 	hlcoord 0, 16, AttrMap
-	ld c, $a
-	ld a, $2
-.asm_89622
+	ld c, 10
+	ld a, 2
+.loop2
 	ld [hli], a
 	dec a
 	ld [hli], a
 	inc a
 	dec c
-	jr nz, .asm_89622
+	jr nz, .loop2
 	hlcoord 1, 11, AttrMap
-	ld a, $4
-	ld bc, $0004
+	ld a, 4
+	ld bc, 4
 	call ByteFill
-	ld a, $5
-	ld bc, $000e
+	ld a, 5
+	ld bc, 14
 	call ByteFill
 	ret
 ; 8963d
@@ -57638,39 +57803,39 @@
 
 Function8963d: ; 8963d
 	hlcoord 12, 3, AttrMap
-	ld a, $6
-	ld de, $0014
-	ld bc, $0707
-.asm_89648
+	ld a, 6
+	ld de, SCREEN_WIDTH
+	lb bc, 7, 7
+.loop
 	push hl
-	ld c, $7
-.asm_8964b
+	ld c, 7
+.next
 	ld [hli], a
 	dec c
-	jr nz, .asm_8964b
+	jr nz, .next
 	pop hl
 	add hl, de
 	dec b
-	jr nz, .asm_89648
+	jr nz, .loop
 	ret
 ; 89655
 
 Function89655: ; 89655
-	ld hl, AttrMap + SCREEN_WIDTH * 12 + 1
+	hlcoord 1, 12, AttrMap
 	ld de, SCREEN_WIDTH
 	ld a, 5
 	ld b, 4
-.asm_8965f
+.loop
 	ld c, 18
 	push hl
-.asm_89662
+.next
 	ld [hli], a
 	dec c
-	jr nz, .asm_89662
+	jr nz, .next
 	pop hl
 	add hl, de
 	dec b
-	jr nz, .asm_8965f
+	jr nz, .loop
 	ret
 ; 8966c
 
@@ -57678,7 +57843,7 @@
 	push bc
 	call Function89688
 	hlcoord 4, 0
-	ld c, $8
+	ld c, 8
 	call Function896f5
 	pop bc
 	ret
@@ -57689,73 +57854,73 @@
 	push bc
 	call Function89688
 	hlcoord 2, 0
-	ld c, $c
+	ld c, 12
 	call Function896f5
 	pop bc
 	ret
 
 Function89688: ; 89688
-	ld hl, TileMap
-	ld a, $1
-	ld e, $14
+	hlcoord 0, 0
+	ld a, 1
+	ld e, SCREEN_WIDTH
 	call Function896e1
-	ld a, $2
-	ld e, $14
+	ld a, 2
+	ld e, SCREEN_WIDTH
 	call Function896eb
-	ld a, $3
+	ld a, 3
 	ld [hli], a
-	ld a, $4
-	ld e, $12
+	ld a, 4
+	ld e, SCREEN_HEIGHT
 	call Function896e1
-	ld a, $6
+	ld a, 6
 	ld [hli], a
 	push bc
-	ld c, $d
-.asm_896a9
+	ld c, 13
+.loop
 	call Function896cb
 	dec c
-	jr z, .asm_896b5
+	jr z, .done
 	call Function896d6
 	dec c
-	jr nz, .asm_896a9
+	jr nz, .loop
 
-.asm_896b5
+.done
 	pop bc
-	ld a, $19
+	ld a, 25
 	ld [hli], a
-	ld a, $1a
-	ld e, $12
+	ld a, 26
+	ld e, SCREEN_HEIGHT
 	call Function896e1
-	ld a, $1c
+	ld a, 28
 	ld [hli], a
-	ld a, $2
-	ld e, $14
+	ld a, 2
+	ld e, SCREEN_WIDTH
 	call Function896eb
 	ret
 ; 896cb
 
 Function896cb: ; 896cb
-	ld de, $0013
-	ld a, $7
+	ld de, SCREEN_WIDTH - 1
+	ld a, 7
 	ld [hl], a
 	add hl, de
-	ld a, $9
+	ld a, 9
 	ld [hli], a
 	ret
 ; 896d6
 
 Function896d6: ; 896d6
-	ld de, $0013
-	ld a, $a
+	ld de, SCREEN_WIDTH - 1
+	ld a, 10
 	ld [hl], a
 	add hl, de
-	ld a, $b
+	ld a, 11
 	ld [hli], a
 	ret
 ; 896e1
 
 Function896e1: ; 896e1
-.asm_896e1
+.loop
 	ld [hli], a
 	inc a
 	dec e
@@ -57763,12 +57928,12 @@
 	ld [hli], a
 	dec a
 	dec e
-	jr nz, .asm_896e1
+	jr nz, .loop
 	ret
 ; 896eb
 
 Function896eb: ; 896eb
-.asm_896eb
+.loop
 	ld [hli], a
 	dec a
 	dec e
@@ -57776,7 +57941,7 @@
 	ld [hli], a
 	inc a
 	dec e
-	jr nz, .asm_896eb
+	jr nz, .loop
 	ret
 ; 896f5
 
@@ -57783,8 +57948,9 @@
 Function896f5: ; 896f5
 	call Function8971f
 	call Function89736
+rept 2
 	inc hl
-	inc hl
+endr
 	ld b, 2
 
 ClearScreenArea: ; 0x896ff
@@ -57810,8 +57976,9 @@
 	jr nz, .loop
 
 	dec hl
+rept 2
 	inc c
-	inc c
+endr
 .asm_89713
 	ld a, $36
 	ld [hli], a
@@ -57830,7 +57997,7 @@
 	ld a, $2d
 	ld [hld], a
 	push hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	ld a, $31
 	ld [hli], a
@@ -57845,8 +58012,9 @@
 
 Function89736: ; 89736
 	push hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld e, c
 	ld d, $0
 	add hl, de
@@ -57854,7 +58022,7 @@
 	ld [hli], a
 	ld a, $30
 	ld [hld], a
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	ld a, $33
 	ld [hli], a
@@ -57882,8 +58050,9 @@
 	ld [hli], a
 	ld a, $d
 	ld [hl], a
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, $4
 	ld e, $3
 .asm_89769
@@ -57930,7 +58099,7 @@
 	push bc
 	ld a, $e
 	ld [hl], a
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld a, $11
 	ld [hli], a
@@ -57973,8 +58142,8 @@
 	jr nc, .asm_897f3
 	hlcoord 12, 3, AttrMap
 	xor a
-	ld de, $0014
-	ld bc, $0707
+	ld de, SCREEN_WIDTH
+	lb bc, 7, 7
 .asm_897e5
 	push hl
 	ld c, $7
@@ -57993,7 +58162,7 @@
 	ld a, $37
 	ld [$ffad], a
 	hlcoord 12, 3
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	call Function8963d
 	pop bc
@@ -58207,7 +58376,7 @@
 Function8994e: ; 8994e
 	push hl
 	push de
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	ld a, l
 	sub e
 	ld l, a
@@ -58648,8 +58817,9 @@
 	and a
 	jr z, .asm_89bae
 .asm_89ba9
+rept 2
 	inc hl
-	inc hl
+endr
 	dec a
 	jr nz, .asm_89ba9
 .asm_89bae
@@ -58929,7 +59099,7 @@
 
 Function89d5e: ; 89d5e (22:5d5e)
 	push af
-	call Function1d3c
+	call CopyMenuDataHeader
 	pop af
 	ld [wcf88], a
 	call Function8923c
@@ -59165,10 +59335,9 @@
 	ld a, $ff
 	ld [hli], a
 	xor a
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 .asm_89f09
 	ld hl, wd012
@@ -59259,8 +59428,9 @@
 	ld [hli], a
 	ld a, c
 	ld [hli], a
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, $8
 	add c
 	ld c, a
@@ -59391,9 +59561,9 @@
 	ld a, $5
 	call Function8a5a3
 	pop hl
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, $6
 	call Function8a5a3
 	call Function3238
@@ -59445,7 +59615,7 @@
 
 Function8a0c9: ; 8a0c9 (22:60c9)
 	push bc
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld de, $14
 	ld a, b
 	and a
@@ -59542,7 +59712,7 @@
 	ld c, $10
 	call DelayFrames
 .asm_8a15a
-	call Function1c07
+	call ExitMenu
 	call Function891de
 	call Function893e2
 	call Function89245
@@ -59551,7 +59721,7 @@
 	ret
 .asm_8a16b
 	call Function89209
-	call Function1c17
+	call WriteBackup
 	call Function8920f
 	scf
 	ret
@@ -59722,7 +59892,7 @@
 	call Function8a20d
 	jr .asm_8a2ea
 .asm_8a2cf
-	call Function1c07
+	call ExitMenu
 	call Function8a241
 	jr c, .asm_8a2ed
 	ld a, $1
@@ -59734,7 +59904,7 @@
 	and a
 	ret
 .asm_8a2ea
-	call Function1c17
+	call WriteBackup
 .asm_8a2ed
 	scf
 	ret
@@ -59870,7 +60040,7 @@
 	call Function89b3b
 	ld hl, MenuDataHeader_0x8a40f
 .asm_8a3db
-	call Function1d3c
+	call CopyMenuDataHeader
 	ret
 
 Function8a3df: ; 8a3df (22:63df)
@@ -60634,7 +60804,7 @@
 	jr .asm_8a9a1
 .asm_8a9bb
 	call Function89209
-	call Function1c17
+	call WriteBackup
 	call Function8920f
 	ret
 
@@ -61178,7 +61348,7 @@
 	cp HO_OH ; is Ho-oh the first Pokémon in the party?
 	jr nz, .done ; if not, we're done
 	call GetSecondaryMapHeaderPointer
-	ld de, $0326
+	ld de, EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 .done
@@ -61185,27 +61355,27 @@
 	ret
 ; 0x8adef
 
-Function8adef: ; 8adef
+SpecialOmanyteChamber: ; 8adef
 	call GetSecondaryMapHeaderPointer
-	ld de, $0328
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
-	jr nz, .asm_8ae2f
+	jr nz, .nope
 
 	ld a, WATER_STONE
 	ld [CurItem], a
 	ld hl, NumItems
 	call CheckItem
-	jr c, .asm_8ae24
+	jr c, .open
 
 	ld a, [PartyCount]
 	ld b, a
 	inc b
-.asm_8ae10
+.loop
 	dec b
-	jr z, .asm_8ae2f
+	jr z, .nope
 	ld a, b
 	dec a
 	ld [CurPartyMon], a
@@ -61215,19 +61385,19 @@
 	pop bc
 	ld a, [hl]
 	cp WATER_STONE
-	jr nz, .asm_8ae10
+	jr nz, .loop
 
-.asm_8ae24
+.open
 	call GetSecondaryMapHeaderPointer
-	ld de, $0328
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 
-.asm_8ae2f
+.nope
 	ret
 ; 8ae30
 
-Function8ae30: ; 8ae30
+SpecialAerodactylChamber: ; 8ae30
 	push de
 	push bc
 
@@ -61234,12 +61404,12 @@
 	call GetSecondaryMapHeaderPointer
 	ld a, h
 	cp RuinsofAlphAerodactylChamber_SecondMapHeader / $100
-	jr nz, .asm_8ae4a
+	jr nz, .nope
 	ld a, l
 	cp RuinsofAlphAerodactylChamber_SecondMapHeader % $100
-	jr nz, .asm_8ae4a
+	jr nz, .nope
 
-	ld de, $0329
+	ld de, EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 
@@ -61246,7 +61416,7 @@
 	scf
 	jr .done
 
-.asm_8ae4a
+.nope
 	and a
 
 .done
@@ -61255,7 +61425,7 @@
 	ret
 ; 8ae4e
 
-Function8ae4e: ; 8ae4e
+SpecialKabutoChamber: ; 8ae4e
 	push hl
 	push de
 
@@ -61267,7 +61437,7 @@
 	cp RuinsofAlphKabutoChamber_SecondMapHeader % $100
 	jr nz, .done
 
-	ld de, $0327
+	ld de, EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 
@@ -61277,7 +61447,7 @@
 	ret
 ; 8ae68
 
-Function8ae68: ; 8ae68
+Special_DisplayUnownWords: ; 8ae68
 	ld a, [ScriptVar]
 	ld hl, MenuDataHeader_0x8aed5
 	and a
@@ -61295,14 +61465,15 @@
 	xor a
 	ld [hBGMapMode], a
 	call Function1cbb
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	call Function1cfd
 	inc hl
 	ld d, $0
 	ld e, $14
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [ScriptVar]
 	ld c, a
 	ld de, Unknown_8aebc
@@ -61324,7 +61495,7 @@
 	call Function3200
 	call Functiona36
 	call PlayClickSFX
-	call Function1c17
+	call WriteBackup
 	ret
 ; 8aebc
 
@@ -61368,8 +61539,9 @@
 
 .asm_8aef5
 	call Function8aefd
+rept 2
 	inc hl
-	inc hl
+endr
 	inc de
 	jr .asm_8aee9
 ; 8aefd
@@ -61396,8 +61568,9 @@
 	jr z, .asm_8af19
 	ld c, a
 	call Function8af1c
+rept 2
 	inc hl
-	inc hl
+endr
 	inc de
 	jr .asm_8af0b
 
@@ -61472,7 +61645,7 @@
 	xor a
 	ld [wcf76], a
 	ld hl, MenuDataHeader_0x8afa9
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wdc4a]
 	ld c, a
 	callba Functionb8f8f
@@ -61517,7 +61690,8 @@
 
 Unknown_8afb8: ; 8afb8
 	db 3
-	db 0, 1, 2, $ff
+	db 0, 1, 2
+	db -1
 
 Function8afbd: ; 8afbd
 	push de
@@ -61550,7 +61724,7 @@
 
 .asm_8aff1
 	call DelayFrame
-	call Function1ad2
+	call DrawOnMap
 	call Function8b097
 	call Function8b0e2
 	jr z, .asm_8b05f
@@ -61606,8 +61780,8 @@
 	jr .asm_8afeb
 
 .asm_8b05f
-	call Function1c17
-	call Function1c17
+	call WriteBackup
+	call WriteBackup
 	ld hl, UnknownText_0x8b08b
 	call PrintText
 	call Functiona36
@@ -61668,9 +61842,9 @@
 	xor a
 	ld [hBGMapMode], a
 	ld hl, MenuDataHeader_0x8b0d1
-	call Function1d3c
+	call CopyMenuDataHeader
 	call Function1cbb
-	call Function1ad2
+	call DrawOnMap
 	call Function1cfd
 	ld bc, $0015
 	add hl, bc
@@ -61712,7 +61886,7 @@
 
 Function8b0e2: ; 8b0e2
 	ld hl, MenuDataHeader_0x8b113
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [MenuSelection]
 	ld [wcf88], a
 	xor a
@@ -61719,7 +61893,7 @@
 	ld [wcf76], a
 	ld [hBGMapMode], a
 	call Function352f
-	call Function1ad2
+	call DrawOnMap
 	call Function350c
 	ld a, [MenuSelection]
 	ld c, a
@@ -61789,8 +61963,9 @@
 	ld hl, BuenaPrizes
 	ld b, 0
 	ld c, a
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ret
 ; 8b15e
 
@@ -61969,9 +62144,9 @@
 ; 8b281
 
 Function8b281: ; 8b281
+rept 3
 	inc de
-	inc de
-	inc de
+endr
 	ld a, [de]
 	ld l, a
 	inc de
@@ -62012,11 +62187,13 @@
 Function8b2a9: ; 8b2a9
 	push bc
 	call Function8b281
+rept 2
 	inc hl
-	inc hl
+endr
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	call Function8b28a
 	call PrintText
 	pop bc
@@ -62465,8 +62642,9 @@
 	ld hl, Unknown_8b529
 	call Function8b50a
 	push hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld b, a
 	ld a, [hl]
@@ -62481,8 +62659,9 @@
 	ld hl, Unknown_8b529
 	call Function8b50a
 	push hl
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld b, a
 	ld a, [hl]
@@ -62784,7 +62963,7 @@
 ; 8b6ed
 
 Function8b6ed: ; 8b6ed
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $012c
 	xor a
 	call ByteFill
@@ -62807,7 +62986,7 @@
 	pop hl
 	push hl
 	push bc
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 .asm_8b717
 	push hl
@@ -62818,7 +62997,7 @@
 	ld a, $11
 	ld [hl], a
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	dec b
 	jr nz, .asm_8b717
@@ -62850,10 +63029,12 @@
 Function8b744: ; 8b744
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	xor a
 .asm_8b74d
 	push bc
@@ -62863,7 +63044,7 @@
 	dec c
 	jr nz, .asm_8b74f
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	pop bc
 	dec b
@@ -62873,9 +63054,9 @@
 
 Function8b75d: ; 8b75d
 	call Function8923c
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $1
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	call ByteFill
 	hlcoord 0, 1
 	ld a, $2
@@ -62948,7 +63129,7 @@
 Function8b7bd: ; 8b7bd
 	call Function8b855
 	ld hl, MenuDataHeader_0x8b867
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wd030]
 	ld [wcf88], a
 	ld a, [wd031]
@@ -62973,7 +63154,7 @@
 	ld c, $12
 	call Function8b703
 	call Function8b75d
-	call Function1ad2
+	call DrawOnMap
 	call Function89209
 	call Function350c
 	call Function8920f
@@ -63125,8 +63306,9 @@
 	ld b, 0
 	ld c, a
 	ld hl, Unknown_8b903
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -63196,7 +63378,7 @@
 	call Function89d5e
 	ld hl, Function8b9ab
 	call Function89d85
-	call Function1c07
+	call ExitMenu
 	jr c, .asm_8b99c
 	call Function8b99f
 	jr nz, .asm_8b99d
@@ -63326,32 +63508,32 @@
 	ld hl, wd846
 	bit 7, [hl]
 	jr nz, .dontchange
-	
+
 ; do we need to bother updating?
 	ld a, [TimeOfDay]
 	ld hl, CurTimeOfDay
 	cp [hl]
 	jr z, .dontchange
-	
+
 ; if so, the time of day has changed
 	ld a, [TimeOfDay]
 	ld [CurTimeOfDay], a
-	
+
 ; get palette id
 	call GetTimePalette
-	
+
 ; same palette as before?
 	ld hl, TimeOfDayPal
 	cp [hl]
 	jr z, .dontchange
-	
+
 ; update palette id
 	ld [TimeOfDayPal], a
-	
-	
+
+
 ; save bg palette 8
 	ld hl, Unkn1Pals + 8 * 7 ; Unkn1Pals + 7 pals
-	
+
 ; save wram bank
 	ld a, [rSVBK]
 	ld b, a
@@ -63358,7 +63540,7 @@
 ; wram bank 5
 	ld a, 5
 	ld [rSVBK], a
-	
+
 ; push palette
 	ld c, 4 ; NUM_PAL_COLORS
 .push
@@ -63369,20 +63551,20 @@
 	push de
 	dec c
 	jr nz, .push
-	
+
 ; restore wram bank
 	ld a, b
 	ld [rSVBK], a
-	
-	
+
+
 ; update sgb pals
 	ld b, $9
 	call GetSGBLayout
-	
-	
+
+
 ; restore bg palette 8
 	ld hl, wd03f ; last byte in Unkn1Pals
-	
+
 ; save wram bank
 	ld a, [rSVBK]
 	ld d, a
@@ -63389,7 +63571,7 @@
 ; wram bank 5
 	ld a, 5
 	ld [rSVBK], a
-	
+
 ; pop palette
 	ld e, 4 ; NUM_PAL_COLORS
 .pop
@@ -63400,19 +63582,19 @@
 	dec hl
 	dec e
 	jr nz, .pop
-	
+
 ; restore wram bank
 	ld a, d
 	ld [rSVBK], a
-	
+
 ; update palettes
 	call _UpdateTimePals
 	call DelayFrame
-	
+
 ; successful change
 	scf
 	ret
-	
+
 .dontchange
 ; no change occurred
 	and a
@@ -63427,7 +63609,7 @@
 	ret
 ; 8c079
 
-Function8c079:: ; 8c079
+FadeInBGMap:: ; 8c079
 	ld c, $12
 	call GetTimePalFade
 	ld b, $4
@@ -63435,7 +63617,7 @@
 	ret
 ; 8c084
 
-Function8c084:: ; 8c084
+FadeBlackBGMap:: ; 8c084
 	call Function8c0c1
 	ld c, $9
 	call GetTimePalFade
@@ -63444,7 +63626,7 @@
 	ret
 ; 8c092
 
-Function8c092: ; 8c092
+Special_BattleTowerFade: ; 8c092
 	call Function8c0c1
 	ld c, $9
 	call GetTimePalFade
@@ -63451,9 +63633,9 @@
 	ld b, $4
 .asm_8c09c
 	call DmgToCgbTimePals
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld c, $7
 	call DelayFrames
 	dec b
@@ -63461,7 +63643,7 @@
 	ret
 ; 8c0ab
 
-Function8c0ab: ; 8c0ab
+Special_FadeInQuickly: ; 8c0ab
 	ld c, $0
 	call GetTimePalFade
 	ld b, $4
@@ -63469,7 +63651,7 @@
 	ret
 ; 8c0b6
 
-Function8c0b6: ; 8c0b6
+Special_FadeBlackQuickly: ; 8c0b6
 	ld c, $9
 	call GetTimePalFade
 	ld b, $4
@@ -63495,12 +63677,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+rept 6
 	inc hl
-	inc hl
-	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_8c0d4
 	pop af
@@ -63551,8 +63730,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, .TimePalettes
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -63610,9 +63790,9 @@
 Function8c15e: ; 8c15e
 .asm_8c15e
 	call DmgToCgbTimePals
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld c, $2
 	call DelayFrames
 	dec b
@@ -63623,9 +63803,9 @@
 Function8c16d: ; 8c16d
 .asm_8c16d
 	call DmgToCgbTimePals
+rept 3
 	dec hl
-	dec hl
-	dec hl
+endr
 	ld c, $2
 	call DelayFrames
 	dec b
@@ -63639,30 +63819,31 @@
 	ld a, [hCGB]
 	and a
 	jr nz, .cgb
-	
+
 ; else: dmg
 
 ; index
 	ld a, [TimeOfDayPal]
 	and %11
-	
+
 ; get fade table
 	push bc
 	ld c, a
 	ld b, $0
 	ld hl, .dmgfades
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	pop bc
-	
+
 ; get place in fade table
 	ld b, $0
 	add hl, bc
 	ret
-	
+
 .cgb
 	ld hl, .cgbfade
 	ld b, $0
@@ -63776,7 +63957,7 @@
 	cp $4
 	jr z, .asm_8c288
 	callba Function6454
-	call Function1ad2
+	call DrawOnMap
 	call DelayFrame
 	call Function8c2a0
 	call Function8cf4f
@@ -63793,8 +63974,9 @@
 	ld [hBGMapMode], a
 	ld hl, wcf63
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	call Function8c6d8
 	ret
@@ -63861,8 +64043,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_8c323
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -63914,7 +64097,7 @@
 	jr nc, .asm_8c375
 	set 0, e
 .asm_8c375
-	ld a, [wd19a]
+	ld a, [wPermission]
 	cp $4
 	jr z, .asm_8c386
 	cp $5
@@ -64071,13 +64254,11 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_8c490
+rept 5
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .asm_8c47a
 	ld [wcf65], a
 	call Function8c4f5
@@ -64259,7 +64440,7 @@
 	jp z, Function8c673
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $168
 	inc b
 	inc c
@@ -64449,8 +64630,9 @@
 	ld a, d
 	ld d, 0
 	ld hl, Unknown_8c728
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -64552,8 +64734,8 @@
 	ret
 ; 8c7e1
 
-Function8c7e1: ; 8c7e1
-	callba Function8c084
+BlindingFlash: ; 8c7e1
+	callba FadeBlackBGMap
 	ld hl, StatusFlags
 	set 2, [hl]
 	callba Function8c0e5
@@ -64561,7 +64743,7 @@
 	ld b, $9
 	call GetSGBLayout
 	callba Function49409
-	callba Function8c079
+	callba FadeInBGMap
 	ret
 ; 8c80a
 
@@ -64616,7 +64798,7 @@
 	ld hl, VTiles1
 	lb bc, BANK(Font), $c
 	call Get1bpp
-	call Functione4a
+	call Special_ReplaceKrisSprite
 	ret
 ; 8c893
 
@@ -64640,7 +64822,7 @@
 	ld a, $5
 	ld [hli], a
 	ld [hld], a
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hli], a
 	ld [hld], a
@@ -64706,8 +64888,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_8ca1b
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -64732,8 +64915,9 @@
 	ld a, $20
 	ld [wcf64], a
 	ld hl, wcf63
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ret
 
 Function8ca3c: ; 8ca3c (23:4a3c)
@@ -64805,8 +64989,9 @@
 	add e
 	ld e, a
 	ld hl, Unknown_8cab3
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -64930,9 +65115,9 @@
 	ld c, $4
 .asm_8cb88
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	inc a
 	dec c
 	jr nz, .asm_8cb88
@@ -64999,7 +65184,7 @@
 	ld [hl], $80
 	ret
 
-Function8cc04: ; 8cc04
+Special_MagnetTrain: ; 8cc04
 	ld a, [ScriptVar]
 	and a
 	jr nz, .asm_8cc14
@@ -65099,8 +65284,9 @@
 	ld d, a
 	ld hl, wcf64
 	ld a, [hl]
+rept 2
 	add d
-	add d
+endr
 	ld [hl], a
 	ret
 ; 8ccc4
@@ -65149,9 +65335,9 @@
 	xor a
 	ld [hli], a
 	ld a, [wd192]
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld de, MUSIC_MAGNET_TRAIN
 	call PlayMusic2
 	ret
@@ -65210,8 +65396,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, MagnetTrainBGTiles
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -65294,8 +65481,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_8ce06
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -65394,15 +65582,17 @@
 	inc a
 	ld d, a
 	ld a, e
+rept 2
 	add d
-	add d
+endr
 	ld [wcf65], a
 	ld hl, wc3c0
 	ld a, [wd191]
 	ld d, a
 	ld a, [hl]
+rept 2
 	add d
-	add d
+endr
 	ld [hl], a
 	ret
 
@@ -65433,13 +65623,13 @@
 	ld [rSVBK], a
 	ld a, [TimeOfDayPal]
 	push af
-	ld a, [wd19a]
+	ld a, [wPermission]
 	push af
 	ld a, [TimeOfDay]
 	and $3
 	ld [TimeOfDayPal], a
 	ld a, $1
-	ld [wd19a], a
+	ld [wPermission], a
 	ld b, $9
 	call GetSGBLayout
 	call UpdateTimePals
@@ -65450,7 +65640,7 @@
 	ld a, [rOBP1]
 	ld [wcfc9], a
 	pop af
-	ld [wd19a], a
+	ld [wPermission], a
 	pop af
 	ld [TimeOfDayPal], a
 	pop af
@@ -65608,9 +65798,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_8d1c4
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld e, l
 	ld d, h
 	ld hl, $0000
@@ -65634,18 +65824,19 @@
 	ld a, d
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	dec a
 	ld [hli], a
 	xor a
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld a, c
 	ld [wc3b8], a
@@ -65904,8 +66095,9 @@
 	ld [hl], a
 	ld hl, $000a
 	add hl, bc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jr .asm_8d132
 
 .asm_8d17b
@@ -65926,8 +66118,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Unknown_8d6e6
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -65944,9 +66137,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_8d94d
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ret
 ; 8d1ac
 
@@ -65954,8 +66147,9 @@
 	push hl
 	ld l, a
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Unknown_8e706
 	add hl, de
 	ld c, [hl]
@@ -66027,8 +66221,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Jumptable_8d25b
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -66237,8 +66432,9 @@
 	ld a, [hl]
 	and a
 	jr z, .asm_8d3ba
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ld d, a
 	and $1f
 	jr nz, .asm_8d395
@@ -66521,8 +66717,9 @@
 	ld hl, $4
 	add hl, bc
 	ld a, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	cp $b0
 	jr nc, .asm_8d53f
 	and $3
@@ -66591,9 +66788,9 @@
 	ld hl, $c
 	add hl, bc
 	ld a, [hl]
+rept 3
 	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	push af
 	push de
 	call Function8d6de
@@ -66622,8 +66819,9 @@
 	ret c
 	ld hl, $5
 	add hl, bc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
@@ -66649,8 +66847,9 @@
 	ld a, [hl]
 	cp $b8
 	jr nc, .asm_8d603
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld hl, $5
 	add hl, bc
 	dec [hl]
@@ -66676,8 +66875,9 @@
 	ret z
 	ld hl, $5
 	add hl, bc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld hl, $f
 	add hl, bc
 	ld a, [hl]
@@ -66752,9 +66952,9 @@
 	ld hl, $b
 	add hl, bc
 	ld d, [hl]
+rept 3
 	inc [hl]
-	inc [hl]
-	inc [hl]
+endr
 	ld hl, $c
 	add hl, bc
 	ld a, [hl]
@@ -68222,8 +68422,9 @@
 	ld a, d
 	ld d, 0
 	ld hl, Unknown_8e75d
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -68263,8 +68464,9 @@
 	call Function8e7c6
 	call DelayFrame
 	pop bc
+rept 2
 	inc d
-	inc d
+endr
 	dec c
 	jr nz, .asm_8e7b5
 	call ClearSprites
@@ -68362,8 +68564,9 @@
 Function8e849: ; 8e849
 	ld d, 0
 	ld hl, Jumptable_8e854
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -68499,10 +68702,9 @@
 	ld [CurIcon], a
 	call Function8e9db
 	ld a, [$ffb0]
+rept 4
 	add a
-	add a
-	add a
-	add a
+endr
 	add $1c
 	ld d, a
 	ld e, $10
@@ -68632,7 +68834,7 @@
 	add 10
 	ld [wc3b7], a
 	ret
-	
+
 HeldItemIcons:
 INCBIN "gfx/icon/mail.2bpp"
 INCBIN "gfx/icon/item.2bpp"
@@ -68643,21 +68845,20 @@
 	ld l, e
 	ld h, d
 	jr GetIcon
-	
+
 GetIcon_a: ; 8ea1b
 ; Load icon graphics into VRAM starting from tile a.
 	ld l, a
 	ld h, 0
-	
+
 GetIcon: ; 8ea1e
 ; Load icon graphics into VRAM starting from tile hl.
 
 ; One tile is 16 bytes long.
+rept 4
 	add hl, hl
-	add hl, hl
-	add hl, hl
-	add hl, hl
-	
+endr
+
 	ld de, VTiles0
 	add hl, de
 	push hl
@@ -68675,7 +68876,7 @@
 	ld e, a
 	ld d, [hl]
 	pop hl
-	
+
 	lb bc, BANK(Icons), 8
 	call GetGFXUnlessMobile
 
@@ -68782,8 +68983,8 @@
 
 SECTION "bank24", ROMX, BANK[$24]
 
-Function90000:: ; 90000
-	call Function9001c
+AddPhoneNumber:: ; 90000
+	call _CheckCellNum
 	jr c, .asm_9000d
 	call Function9002d
 	jr nc, .asm_9000d
@@ -68797,8 +68998,8 @@
 ; 9000f
 
 
-Function9000f:: ; 9000f
-	call Function9001c
+DelCellNum:: ; 9000f
+	call _CheckCellNum
 	jr nc, .asm_90017
 	xor a
 	ld [hl], a
@@ -68809,11 +69010,11 @@
 	ret
 ; 90019
 
-Function90019:: ; 90019
-	jp Function9001c
+CheckCellNum:: ; 90019
+	jp _CheckCellNum
 ; 9001c
 
-Function9001c: ; 9001c
+_CheckCellNum: ; 9001c
 	ld hl, wdc7c
 	ld b, $a
 .asm_90021
@@ -68863,7 +69064,7 @@
 	push bc
 	push hl
 	ld c, a
-	call Function9001c
+	call _CheckCellNum
 	jr c, .asm_9005b
 	ld hl, Buffer1
 	inc [hl]
@@ -68917,7 +69118,7 @@
 	cp b
 	jr nz, .no_call
 
-	call Function2d05
+	call GetMapHeaderPhoneServiceNybble
 	and a
 	jr nz, .no_call
 
@@ -68946,7 +69147,7 @@
 	push bc
 	push de
 	push af
-	callba Functionc000
+	callba CheckTime
 	pop af
 	and $7
 	and c
@@ -68977,7 +69178,7 @@
 	ret
 
 Function900de: ; 900de (24:40de)
-	callba Functionc000
+	callba CheckTime
 	ld a, c
 	ld [EngineBuffer1], a ; wd03e (aliases: MenuItemsList, CurFruitTree, CurInput)
 	ld hl, wd040
@@ -69024,7 +69225,7 @@
 	ret
 
 Function90136:: ; 90136 (24:4136)
-	ld a, [wdc31]
+	ld a, [wSpecialPhoneCallID]
 	and a
 	jr z, .asm_90171
 	dec a
@@ -69039,8 +69240,9 @@
 	call _hl_
 	jr nc, .asm_90171
 	call Function90178
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hli]
 	ld e, a
 	push hl
@@ -69071,7 +69273,7 @@
 ; 0x90178
 
 Function90178: ; 90178 (24:4178)
-	ld a, [wdc31]
+	ld a, [wSpecialPhoneCallID]
 	dec a
 	ld c, a
 	ld b, 0
@@ -69081,7 +69283,7 @@
 	ret
 
 Function90188: ; 90188
-	ld a, [wd19a]
+	ld a, [wPermission]
 	cp $1
 	jr z, .asm_90195
 	cp $2
@@ -69100,7 +69302,7 @@
 	ld a, [InLinkBattle]
 	and a
 	jr nz, .asm_901e7
-	call Function2d05
+	call GetMapHeaderPhoneServiceNybble
 	and a
 	jr nz, .asm_901e7
 	ld a, b
@@ -69143,7 +69345,7 @@
 .asm_901e7
 	ld b, BANK(UnknownScript_0x90209)
 	ld de, UnknownScript_0x90209
-	call Function2674
+	call ExecuteCallbackScript
 	ret
 
 .asm_901f0
@@ -69155,7 +69357,7 @@
 	ld [wd004], a
 	ld b, BANK(UnknownScript_0x90205)
 	ld de, UnknownScript_0x90205
-	call Function2674
+	call ExecuteCallbackScript
 	ret
 ; 90205 (24:4205)
 
@@ -69208,7 +69410,7 @@
 	callasm Function9026f
 	ptcall wd048
 	closetext
-	callasm Function902eb
+	callasm HangUp
 	loadmovesprites
 	callasm Function113e5
 	end
@@ -69243,16 +69445,16 @@
 ; 9027c
 
 Function9027c: ; 9027c (24:427c)
-	call Function9033f
-	call Function90357
-	call Function90292
-	call Function90357
-	call Function90375
-	call Function90357
-	call Function90292
+	call Phone_StartRinging
+	call Phone_Wait20Frames
+	call Phone_CallerTextboxWithName
+	call Phone_Wait20Frames
+	call Phone_CallerTextbox
+	call Phone_Wait20Frames
+	call Phone_CallerTextboxWithName
 	ret
 
-Function90292: ; 90292 (24:4292)
+Phone_CallerTextboxWithName: ; 90292 (24:4292)
 	ld a, [wdbf9]
 	ld b, a
 	call Function90363
@@ -69259,41 +69461,42 @@
 	ret
 
 
-Function9029a:: ; 9029a
+PhoneCall:: ; 9029a
 	ld a, b
-	ld [DefaultFlypoint], a
+	ld [PhoneScriptBank], a
 	ld a, e
-	ld [wd003], a
+	ld [PhoneCallerLo], a
 	ld a, d
-	ld [wd004], a
-	call Function902b3
-	call Function902b3
+	ld [PhoneCallerHi], a
+	call Phone_FirstOfTwoRings
+	call Phone_FirstOfTwoRings
 	callba Function1060d3
 	ret
 ; 902b3
 
-Function902b3: ; 902b3
-	call Function9033f
-	call Function90357
-	call Function902c9
-	call Function90357
-	call Function90375
-	call Function90357
-	call Function902c9
+Phone_FirstOfTwoRings: ; 902b3
+	call Phone_StartRinging
+	call Phone_Wait20Frames
+	call Phone_CallerTextboxWithName2
+	call Phone_Wait20Frames
+	call Phone_CallerTextbox
+	call Phone_Wait20Frames
+	call Phone_CallerTextboxWithName2
 	ret
 ; 902c9
 
-Function902c9: ; 902c9
-	call Function90375
+Phone_CallerTextboxWithName2: ; 902c9
+	call Phone_CallerTextbox
 	hlcoord 1, 2
 	ld [hl], $62
+rept 2
 	inc hl
-	inc hl
-	ld a, [wd002]
+endr
+	ld a, [PhoneScriptBank]
 	ld b, a
-	ld a, [wd003]
+	ld a, [PhoneCallerLo]
 	ld e, a
-	ld a, [wd004]
+	ld a, [PhoneCallerHi]
 	ld d, a
 	call Function90069
 	ret
@@ -69300,27 +69503,27 @@
 ; 902e3
 
 
-Function902e3: ; 902e3 (24:42e3)
+Phone_NoSignal: ; 902e3 (24:42e3)
 	ld de, SFX_NO_SIGNAL
 	call PlaySFX
-	jr Function902f1
+	jr Phone_CallEnd
 
-Function902eb:: ; 902eb
-	call Function9031d
-	call Function90355
-Function902f1:
-	call Function9032f
-	call Function90355
-	call Function9033b
-	call Function90355
-	call Function9032f
-	call Function90355
-	call Function9033b
-	call Function90355
-	call Function9032f
-	call Function90355
-	call Function9033b
-	call Function90355
+HangUp:: ; 902eb
+	call HangUp_Beep
+	call HangUp_Wait20Frames
+Phone_CallEnd:
+	call HangUp_BoopOn
+	call HangUp_Wait20Frames
+	call HangUp_BoopOff
+	call HangUp_Wait20Frames
+	call HangUp_BoopOn
+	call HangUp_Wait20Frames
+	call HangUp_BoopOff
+	call HangUp_Wait20Frames
+	call HangUp_BoopOn
+	call HangUp_Wait20Frames
+	call HangUp_BoopOff
+	call HangUp_Wait20Frames
 	ret
 ; 90316
 
@@ -69330,7 +69533,7 @@
 	ret
 ; 9031d
 
-Function9031d: ; 9031d
+HangUp_Beep: ; 9031d
 	ld hl, UnknownText_0x9032a
 	call PrintText
 	ld de, SFX_HANG_UP
@@ -69344,7 +69547,7 @@
 ; 9032f
 
 
-Function9032f: ; 9032f
+HangUp_BoopOn: ; 9032f
 	ld hl, UnknownText_0x90336
 	call PrintText
 	ret
@@ -69356,25 +69559,25 @@
 ; 0x9033b
 
 
-Function9033b: ; 9033b
+HangUp_BoopOff: ; 9033b
 	call SpeechTextBox
 	ret
 ; 9033f
 
-Function9033f: ; 9033f
+Phone_StartRinging: ; 9033f
 	call WaitSFX
 	ld de, SFX_CALL
 	call PlaySFX
-	call Function90375
-	call Function1ad2
+	call Phone_CallerTextbox
+	call DrawOnMap
 	callba Function4d188
 	ret
 ; 90355
 
-Function90355: ; 90355
-	jr Function90357
+HangUp_Wait20Frames: ; 90355
+	jr Phone_Wait20Frames
 
-Function90357
+Phone_Wait20Frames
 	ld c, 20
 	call DelayFrames
 	callba Function4d188
@@ -69384,11 +69587,12 @@
 
 Function90363: ; 90363 (24:4363)
 	push bc
-	call Function90375
+	call Phone_CallerTextbox
 	hlcoord 1, 1
 	ld [hl], $62
+rept 2
 	inc hl
-	inc hl
+endr
 	ld d, h
 	ld e, l
 	pop bc
@@ -69396,8 +69600,8 @@
 	ret
 
 
-Function90375: ; 90375
-	ld hl, TileMap
+Phone_CallerTextbox: ; 90375
+	hlcoord 0, 0
 	ld b, $2
 	ld c, $12
 	call TextBox
@@ -69463,8 +69667,9 @@
 	ld c, b
 	ld b, 0
 	ld hl, Unknown_903d6
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -69492,7 +69697,7 @@
 Function90423: ; 90423 (24:4423)
 	push hl
 	push bc
-	callba Function3994c
+	callba GetTrainerName
 	pop bc
 	pop hl
 	ret
@@ -69757,7 +69962,7 @@
 Function90783: ; 90783 (24:4783)
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	xor a
 	call ByteFill
@@ -69837,8 +70042,9 @@
 	push hl
 	call Function907de
 	pop de
+rept 2
 	inc de
-	inc de
+endr
 	ld a, $9c
 	ld [de], a
 	inc de
@@ -69852,9 +70058,9 @@
 	ld [hl], a
 	pop hl
 	call Function90859
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ret
 ; 90810
 
@@ -70040,7 +70246,7 @@
 INCBIN "gfx/unknown/09090b.2bpp"
 ; 90913
 
-Function90913: ; 90913
+Special_SetDayOfWeek: ; 90913
 	ld a, [$ffaa]
 	push af
 	ld a, $1
@@ -70079,8 +70285,8 @@
 	call Functiona57
 	call Function90993
 	jr nc, .asm_9096a
-	call Function1c07
-	call Function1ad2
+	call ExitMenu
+	call DrawOnMap
 	ld hl, UnknownText_0x90a44
 	call PrintText
 	call YesNoBox
@@ -70156,8 +70362,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_909f2
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -70634,7 +70841,7 @@
 Function90da8: ; 90da8 (24:4da8)
 	xor a
 	ld [hBGMapMode], a
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, TileMapEnd - TileMap
 	ld a, $4f
 	call ByteFill
@@ -70776,7 +70983,7 @@
 	hlcoord 17, 2
 	inc a
 	ld [hli], a
-	call Function2d05
+	call GetMapHeaderPhoneServiceNybble
 	and a
 	ret nz
 	hlcoord 18, 2
@@ -70784,7 +70991,7 @@
 	ret
 
 Function90eb0: ; 90eb0 (24:4eb0)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $8
 	ld a, $4f
 	call ByteFill
@@ -70802,7 +71009,7 @@
 	ld a, [de]
 	bit 1, a
 	call nz, Function90ef2
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $46
 	call Function90ef7
 	ret
@@ -70838,8 +71045,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_90f13
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -71312,7 +71520,7 @@
 	ret
 
 Function911eb: ; 911eb (24:51eb)
-	call Function2d05
+	call GetMapHeaderPhoneServiceNybble
 	and a
 	jr nz, .asm_91234
 	ld hl, Options
@@ -71343,7 +71551,7 @@
 	inc [hl]
 	ret
 .asm_91234
-	callba Function902e3
+	callba Phone_NoSignal
 	ld hl, OutOfServiceAreaText
 	call PrintText
 	ld a, $8
@@ -71369,7 +71577,7 @@
 	ld a, [hJoyPressed] ; $ff00+$a7
 	and $3
 	ret z
-	callba Function902eb
+	callba HangUp
 	ld a, $8
 	ld [wcf63], a
 	ld hl, UnknownText_0x914ce
@@ -71443,7 +71651,7 @@
 	hlcoord 1, 10
 	ld [hl], a
 	hlcoord 1, 4
-	ld a, [wc6d1] 
+	ld a, [wc6d1]
 	ld bc, $28
 	call AddNTimes
 	ld [hl], "▶"
@@ -71459,23 +71667,24 @@
 	ld [hli], a
 	dec c
 	jr nz, .asm_912e1
+rept 2
 	inc hl
-	inc hl
+endr
 	dec b
 	jr nz, .asm_912df
-	ld a, [wc6d2] 
+	ld a, [wc6d2]
 	ld e, a
 	ld d, $0
 	ld hl, wdc7c
 	add hl, de
 	xor a
-	ld [wc6d0], a 
+	ld [wc6d0], a
 .asm_912f8
 	ld a, [hli]
 	push hl
 	push af
 	hlcoord 2, 4
-	ld a, [wc6d0] 
+	ld a, [wc6d0]
 	ld bc, $28
 	call AddNTimes
 	ld d, h
@@ -71484,9 +71693,9 @@
 	ld b, a
 	call Function90380
 	pop hl
-	ld a, [wc6d0] 
+	ld a, [wc6d0]
 	inc a
-	ld [wc6d0], a 
+	ld [wc6d0], a
 	cp $4
 	jr c, .asm_912f8
 	call Function912b7
@@ -71521,11 +71730,11 @@
 
 Function91342: ; 91342 (24:5342)
 	ld hl, wdc7c
-	ld a, [wc6d2] 
+	ld a, [wc6d2]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1] 
+	ld a, [wc6d1]
 	ld e, a
 	ld d, 0
 	add hl, de
@@ -71570,7 +71779,7 @@
 	call PlaceString
 	pop de
 	xor a
-	ld [wc6d4], a 
+	ld [wc6d4], a
 	call Function9141d
 	call WaitBGMap
 
@@ -71603,11 +71812,11 @@
 .asm_913c1
 	ld hl, 2
 	add hl, de
-	ld a, [wc6d4] 
+	ld a, [wc6d4]
 	inc a
 	cp [hl]
 	jr nc, .asm_91398
-	ld [wc6d4], a 
+	ld [wc6d4], a
 	call Function9141d
 	jr .asm_91398
 
@@ -71622,11 +71831,12 @@
 	and B_BUTTON
 	jr nz, Function913f1
 
-	ld a, [wc6d4] 
+	ld a, [wc6d4]
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -71641,9 +71851,9 @@
 
 Function913f9: ; 913f9
 	ld hl, UnknownText_0x914d8
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
-	call Function1c07
+	call ExitMenu
 	jr c, .asm_91419
 	call Function9131e
 	xor a
@@ -71772,7 +71982,7 @@
 	ret
 
 Function914bb: ; 914bb (24:54bb)
-	ld hl, TileMap
+	hlcoord 0, 0
 .asm_914be
 	ld a, [de]
 	cp $ff
@@ -71851,8 +72061,9 @@
 	ld a, [hl]
 	and a
 	ret z
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jr .update
 
 .up
@@ -71860,8 +72071,9 @@
 	ld a, [hl]
 	cp 80
 	ret nc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 
 .update
 
@@ -71875,8 +72087,9 @@
 	jr z, .asm_91682
 	cp d
 	jr z, .asm_91686
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_91676
 
 .asm_91682
@@ -71891,7 +72104,7 @@
 	push de
 	jp [hl]
 .asm_9168e
-	ld a, [wc6d9] 
+	ld a, [wc6d9]
 	and a
 	ret z
 	xor a
@@ -71904,9 +72117,9 @@
 ; 916a1 (24:56a1)
 
 Function916a1: ; 916a1
-	ld [wc6d9], a 
+	ld [wc6d9], a
 	ld a, [hli]
-	ld [wc6da], a 
+	ld [wc6da], a
 	ld a, [hli]
 	ld [wc6db], a
 	ret
@@ -72033,8 +72246,8 @@
 
 Function91753: ; 91753 (24:5753)
 	xor a ; OAKS_POKEMON_TALK
-	ld [wd002], a 
-	ld [wd005], a 
+	ld [wd002], a
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72043,9 +72256,9 @@
 
 Function91766: ; 91766 (24:5766)
 	ld a, POKEDEX_SHOW
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72054,9 +72267,9 @@
 
 Function9177b: ; 9177b (24:577b)
 	ld a, POKEMON_MUSIC
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72065,9 +72278,9 @@
 
 Function91790: ; 91790 (24:5790)
 	ld a, LUCKY_CHANNEL
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72076,9 +72289,9 @@
 
 Function917a5: ; 917a5 (24:57a5)
 	ld a, BUENAS_PASSWORD
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72095,9 +72308,9 @@
 
 Function917d5: ; 917d5 (24:57d5)
 	ld a, UNOWN_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72106,9 +72319,9 @@
 
 Function917ea: ; 917ea (24:57ea)
 	ld a, PLACES_AND_PEOPLE
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72117,9 +72330,9 @@
 
 Function917ff: ; 917ff (24:57ff)
 	ld a, LETS_ALL_SING
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72129,9 +72342,9 @@
 
 Function91814: ; 91814
 	ld a, ROCKET_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72141,9 +72354,9 @@
 
 Function91829: ; 91829 (24:5829)
 	ld a, POKE_FLUTE_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72152,9 +72365,9 @@
 
 Function9183e: ; 9183e (24:583e)
 	ld a, EVOLUTION_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72168,7 +72381,7 @@
 Function91854: ; 91854 (24:5854)
 	push de
 	ld a, e
-	ld [wc6dc], a 
+	ld [wc6dc], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -72180,7 +72393,7 @@
 Function91868: ; 91868 (24:5868)
 	push de
 	ld a, $fe
-	ld [wc6dc], a 
+	ld [wc6dc], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -72189,9 +72402,9 @@
 	ret
 
 Function9187c: ; 9187c (24:587c)
-	ld [wc6d9], a 
+	ld [wc6d9], a
 	ld a, l
-	ld [wc6da], a 
+	ld [wc6da], a
 	ld a, h
 	ld [wc6db], a
 	ret
@@ -72200,8 +72413,8 @@
 	call NoRadioMusic
 	call NoRadioName
 	xor a
-	ld [wc6d9], a 
-	ld [wc6da], a 
+	ld [wc6d9], a
+	ld [wc6da], a
 	ld [wc6db], a
 	ld a, $1
 	ld [hBGMapMode], a ; $ff00+$d4
@@ -72211,7 +72424,7 @@
 	ld de, MUSIC_NONE
 	call PlayMusic
 	ld a, $ff
-	ld [wc6dc], a 
+	ld [wc6dc], a
 	ret
 
 NoRadioName: ; 918a9 (24:58a9)
@@ -72384,7 +72597,7 @@
 	ld bc, $0006
 	hlcoord 1, 0
 	call ByteFill
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld [hl], $6
 	hlcoord 7, 0
 	ld [hl], $17
@@ -72404,19 +72617,19 @@
 	ret
 ; 91a53
 
-Function91a53: ; 91a53
+PlayRadio: ; 91a53
 	ld hl, Options
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	call Function91a87
+	call .PlayStation
 	ld c, 100
 	call DelayFrames
-.asm_91a62
+.loop
 	call Functiona57
 	ld a, [hJoyPressed]
 	and A_BUTTON | B_BUTTON
-	jr nz, .asm_91a7f
+	jr nz, .stop
 	ld a, [wc6da]
 	ld l, a
 	ld a, [wc6db]
@@ -72423,14 +72636,14 @@
 	ld h, a
 	ld a, [wc6d9]
 	and a
-	jr z, .asm_91a7a
+	jr z, .zero
 	rst FarCall
 
-.asm_91a7a
+.zero
 	call DelayFrame
-	jr .asm_91a62
+	jr .loop
 
-.asm_91a7f
+.stop
 	pop af
 	ld [Options], a
 	call Function91492
@@ -72437,13 +72650,14 @@
 	ret
 ; 91a87
 
-Function91a87: ; 91a87
-	ld a, $ff
+.PlayStation: ; 91a87
+	ld a, -1
 	ld [EnemyTurnsTaken], a
-	ld hl, Jumptable_91ab9
+	ld hl, .StationPointers
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -72468,7 +72682,7 @@
 	ret
 ; 91ab9
 
-Jumptable_91ab9: ; 91ab9
+.StationPointers: ; 91ab9
 	dw Function91acb
 	dw Function91753
 	dw Function91766
@@ -72483,7 +72697,7 @@
 Function91acb: ; 91acb
 	call IsInJohto
 	and a
-	jr nz, .asm_91ade
+	jr nz, .kanto
 	call UpdateTime
 	ld a, [TimeOfDay]
 	and a
@@ -72490,7 +72704,7 @@
 	jp z, Function91766
 	jp Function91753
 
-.asm_91ade
+.kanto
 	jp Function917ea
 ; 91ae1
 
@@ -72497,12 +72711,12 @@
 Function91ae1: ; 91ae1
 	ld a, e
 	and a
-	jr nz, .asm_91aec
+	jr nz, .kanto
 	call Function91ff2
 	call FillJohtoMap
 	ret
 
-.asm_91aec
+.kanto
 	call Function91ff2
 	call FillKantoMap
 	ret
@@ -72509,7 +72723,7 @@
 ; 91af3
 
 
-Function91af3: ; 91af3
+_FlyMap: ; 91af3
 	call WhiteBGMap
 	call ClearTileMap
 	call ClearSprites
@@ -72530,26 +72744,26 @@
 	ld b, $2
 	call GetSGBLayout
 	call Function32f9
-.asm_91b29
+.loop
 	call Functiona57
 	ld hl, hJoyPressed
 	ld a, [hl]
-	and $2
-	jr nz, .asm_91b4a
+	and B_BUTTON
+	jr nz, .pressedB
 	ld a, [hl]
-	and $1
-	jr nz, .asm_91b4e
+	and A_BUTTON
+	jr nz, .pressedA
 	call Function91b73
 	call Function91c17
 	callba Function8cf69
 	call DelayFrame
-	jr .asm_91b29
+	jr .loop
 
-.asm_91b4a
-	ld a, $ff
-	jr .asm_91b5a
+.pressedB
+	ld a, -1
+	jr .exit
 
-.asm_91b4e
+.pressedA
 	ld a, [DefaultFlypoint]
 	ld l, a
 	ld h, 0
@@ -72558,7 +72772,7 @@
 	add hl, de
 	ld a, [hl]
 
-.asm_91b5a
+.exit
 	ld [DefaultFlypoint], a
 	pop af
 	ld [$ffaa], a
@@ -72627,57 +72841,57 @@
 
 TownMapBubble: ; 91bb5
 ; Draw the bubble containing the location text in the town map HUD
-	
+
 ; Top-left corner
-	ld hl, TileMap + 1 ; (1,0)
+	hlcoord 1, 0
 	ld a, $30
 	ld [hli], a
-	
+
 ; Top row
 	ld bc, 16
 	ld a, " "
 	call ByteFill
-	
+
 ; Top-right corner
 	ld a, $31
 	ld [hl], a
-	ld hl, TileMap + 1 + 20 ; (1,1)
-	
-	
+	hlcoord 1, 1
+
+
 ; Middle row
 	ld bc, 18
 	ld a, " "
 	call ByteFill
-	
-	
+
+
 ; Bottom-left corner
-	ld hl, TileMap + 1 + 40 ; (1,2)
+	hlcoord 1, 2
 	ld a, $32
 	ld [hli], a
-	
+
 ; Bottom row
 	ld bc, 16
 	ld a, " "
 	call ByteFill
-	
+
 ; Bottom-right corner
 	ld a, $33
 	ld [hl], a
-	
-	
+
+
 ; Print "Where?"
-	ld hl, TileMap + 2 ; (2,0)
+	hlcoord 2, 0
 	ld de, .Where
 	call PlaceString
-	
+
 ; Print the name of the default flypoint
 	call .Name
-	
+
 ; Up/down arrows
-	ld hl, TileMap + 18 + 20 ; (18,1)
+	hlcoord 18, 1
 	ld [hl], $34	
 	ret
-	
+
 .Where
 	db "Where?@"
 
@@ -72690,10 +72904,10 @@
 	ld de, Flypoints
 	add hl, de
 	ld e, [hl]
-	
+
 	callba GetLandmarkName
-	
-	ld hl, TileMap + 2 + 20 ; (2,1)
+
+	hlcoord 2, 1
 	ld de, StringBuffer1
 	call PlaceString
 	ret
@@ -72799,45 +73013,45 @@
 ; 91c90
 
 FlyMap: ; 91c90
-	
+
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
 	call GetWorldMapLocation
-	
+
 ; If we're not in a valid location, i.e. Pokecenter floor 2F,
 ; the backup map information is used
-	
+
 	cp SPECIAL_MAP
 	jr nz, .CheckRegion
-	
+
 	ld a, [BackupMapGroup]
 	ld b, a
 	ld a, [BackupMapNumber]
 	ld c, a
 	call GetWorldMapLocation
-	
+
 .CheckRegion
 ; The first 46 locations are part of Johto. The rest are in Kanto
 	cp KANTO_LANDMARK
 	jr nc, .KantoFlyMap
-	
+
 .JohtoFlyMap
 ; Note that .NoKanto should be modified in tandem with this branch
-	
+
 	push af
-	
+
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
 	ld [DefaultFlypoint], a
-	
+
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
 ; ..and end at Silver Cave
 	ld a, FLY_MT_SILVER
 	ld [EndFlypoint], a
-	
+
 ; Fill out the map
 	call FillJohtoMap
 	call .MapHud
@@ -72844,27 +73058,27 @@
 	pop af
 	call TownMapPlayerIcon
 	ret
-	
+
 .KantoFlyMap
-	
+
 ; The event that there are no flypoints enabled in a map is not
 ; accounted for. As a result, if you attempt to select a flypoint
 ; when there are none enabled, the game will crash. Additionally,
 ; the flypoint selection has a default starting point that
 ; can be flown to even if none are enabled
-	
+
 ; To prevent both of these things from happening when the player
 ; enters Kanto, fly access is restricted until Indigo Plateau is
 ; visited and its flypoint enabled
-	
+
 	push af
 	ld c, SPAWN_INDIGO
 	call HasVisitedSpawn
 	and a
 	jr z, .NoKanto
-	
+
 ; Kanto's map is only loaded if we've visited Indigo Plateau
-	
+
 ; Flypoints begin at Pallet Town...
 	ld a, FLY_PALLET
 	ld [StartFlypoint], a
@@ -72871,11 +73085,11 @@
 ; ...and end at Indigo Plateau
 	ld a, FLY_INDIGO
 	ld [EndFlypoint], a
-	
+
 ; Because Indigo Plateau is the first flypoint the player
 ; visits, it's made the default flypoint
 	ld [DefaultFlypoint], a
-	
+
 ; Fill out the map
 	call FillKantoMap
 	call .MapHud
@@ -72882,31 +73096,31 @@
 	pop af
 	call TownMapPlayerIcon
 	ret
-	
+
 .NoKanto
 ; If Indigo Plateau hasn't been visited, we use Johto's map instead
-	
+
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
 	ld [DefaultFlypoint], a
-	
+
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
 ; ..and end at Silver Cave
 	ld a, FLY_MT_SILVER
 	ld [EndFlypoint], a
-	
+
 	call FillJohtoMap
-	
+
 	pop af
-	
+
 .MapHud
 	call TownMapBubble
 	call TownMapPals
-	
+
 	ld hl, VBGMap0 ; BG Map 0
 	call TownMapBGUpdate
-	
+
 	call TownMapMon
 	ld a, c
 	ld [wd003], a
@@ -73029,7 +73243,7 @@
 	ret
 
 .asm_91ddc
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld de, Sprites
 	ld bc, $00a0
 	call CopyBytes
@@ -73037,14 +73251,14 @@
 ; 91de9
 
 Function91de9: ; 91de9
-	ld hl, TileMap
-	ld bc, $0014
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH
 	ld a, $7f
 	call ByteFill
 	hlcoord 0, 1
 	ld a, $6
 	ld [hli], a
-	ld bc, $0012
+	ld bc, SCREEN_HEIGHT
 	ld a, $7
 	call ByteFill
 	ld [hl], $17
@@ -73066,7 +73280,7 @@
 	ld [wd003], a
 	ld e, a
 	callba Function2a01f
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, Sprites
 .asm_91e2e
 	ld a, [de]
@@ -73093,7 +73307,7 @@
 
 .asm_91e4d
 	ld hl, Sprites
-	ld de, TileMap
+	decoord 0, 0
 	ld bc, $00a0
 	call CopyBytes
 	ret
@@ -73210,25 +73424,25 @@
 	ld [hBGMapAddress], a
 	ld a, h
 	ld [$ffd7], a
-	
+
 ; Only update palettes on CGB
 	ld a, [hCGB]
 	and a
 	jr z, .tiles
-	
+
 ; BG Map mode 2 (palettes)
 	ld a, 2
 	ld [hBGMapMode], a
-	
+
 ; The BG Map is updated in thirds, so we wait
 ; 3 frames to update the whole screen's palettes.
 	ld c, 3
 	call DelayFrames
-	
+
 .tiles
 ; Update BG Map tiles
 	call WaitBGMap
-	
+
 ; Turn off BG Map update
 	xor a
 	ld [hBGMapMode], a
@@ -73238,12 +73452,12 @@
 FillJohtoMap: ; 91eff
 	ld de, JohtoMap
 	jr FillTownMap
-	
+
 FillKantoMap: ; 91f04
 	ld de, KantoMap
-	
+
 FillTownMap: ; 91f07
-	ld hl, TileMap
+	hlcoord 0, 0
 .loop
 	ld a, [de]
 	cp $ff
@@ -73257,24 +73471,24 @@
 TownMapPals: ; 91f13
 ; Assign palettes based on tile ids
 
-	ld hl, TileMap
-	ld de, AttrMap
+	hlcoord 0, 0
+	decoord 0, 0, AttrMap
 	ld bc, 360
 .loop
 ; Current tile
 	ld a, [hli]
 	push hl
-	
+
 ; HP/borders use palette 0
 	cp $60
 	jr nc, .pal0
-	
+
 ; The palette data is condensed to nybbles,
 ; least-significant first.
 	ld hl, TownMapPalMap
 	srl a
 	jr c, .odd
-	
+
 ; Even-numbered tile ids take the bottom nybble...
 	add l
 	ld l, a
@@ -73284,7 +73498,7 @@
 	ld a, [hl]
 	and %111
 	jr .update
-	
+
 .odd
 ; ...and odd ids take the top.
 	add l
@@ -73296,10 +73510,10 @@
 	swap a
 	and %111
 	jr .update
-	
+
 .pal0
 	xor a
-	
+
 .update
 	pop hl
 	ld [de], a
@@ -73318,7 +73532,7 @@
 ; 91f7b
 
 TownMapMon: ; 91f7b
-; Draw the FlyMon icon at town map location in 
+; Draw the FlyMon icon at town map location in
 
 ; Get FlyMon species
 	ld a, [CurPartyMon]
@@ -73328,16 +73542,16 @@
 	add hl, de
 	ld a, [hl]
 	ld [wd265], a
-	
+
 ; Get FlyMon icon
 	ld e, 8 ; starting tile in VRAM
 	callba GetSpeciesIcon
-	
+
 ; Animation/palette
 	ld de, $0000
 	ld a, $0
 	call Function3b2a
-	
+
 	ld hl, 3
 	add hl, bc
 	ld [hl], 8
@@ -73350,14 +73564,14 @@
 TownMapPlayerIcon: ; 91fa6
 ; Draw the player icon at town map location in a
 	push af
-	
+
 	callba GetPlayerIcon
-	
+
 ; Standing icon
 	ld hl, $8100
 	ld c, 4 ; # tiles
 	call Request2bpp
-	
+
 ; Walking icon
 	ld hl, $00c0
 	add hl, de
@@ -73367,7 +73581,7 @@
 	ld c, 4 ; # tiles
 	ld a, BANK(ChrisSpriteGFX) ; does nothing
 	call Request2bpp
-	
+
 ; Animation/palette
 	ld de, $0000
 	ld b, $0a ; Male
@@ -73378,17 +73592,17 @@
 .asm_91fd3
 	ld a, b
 	call Function3b2a
-	
+
 	ld hl, $0003
 	add hl, bc
 	ld [hl], $10
-	
+
 	pop af
 	ld e, a
 	push bc
 	callba GetLandmarkCoords
 	pop bc
-	
+
 	ld hl, 4
 	add hl, bc
 	ld [hl], e
@@ -73562,7 +73776,7 @@
 INCLUDE "data/wild/fish.asm"
 
 
-Function926c7:
+_SlotMachine:
 	ld hl, Options
 	set 4, [hl]
 	call Function926f7
@@ -73614,7 +73828,7 @@
 	ld de, $9250
 	call Decompress
 	ld hl, SlotsTilemap
-	ld de, TileMap
+	decoord 0, 0
 	ld bc, 20 * 12
 	call CopyBytes
 	ld hl, rLCDC ; $ff40
@@ -73745,9 +73959,9 @@
 	ld a, [hl]
 	xor $20
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_92839
 	ret
@@ -73758,8 +73972,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_92853
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -74234,9 +74449,9 @@
 	ld a, [hl]
 	add d
 	ld [hli], a
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec e
 	jr nz, .asm_92b49
 	ret
@@ -74296,8 +74511,9 @@
 	add $8
 	ld [hli], a
 	ld a, [de]
+rept 2
 	inc a
-	inc a
+endr
 	ld [hli], a
 	srl a
 	srl a
@@ -74336,8 +74552,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Jumptable_92be4
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -74715,8 +74932,9 @@
 	ld [hl], $0
 	ld hl, $0000
 	add hl, bc
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	ld a, $1
 	ld [wcf64], a
 	ret
@@ -74836,8 +75054,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_92ebd
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -74938,8 +75157,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_92f48
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -75194,8 +75414,8 @@
 	call PrintText
 	ld hl, MenuDataHeader_0x930d6
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c17
+	call InterpretMenu2
+	call WriteBackup
 	ret c
 	ld a, [wcfa9]
 	ld b, a
@@ -75277,12 +75497,12 @@
 .asm_930fd
 	ld hl, UnknownText_9311f
 	call PrintText
-	call Function1d58
+	call LoadMenuTextBox
 	lb bc, 14, 12
 	call PlaceYesNoBox
 	ld a, [wcfa9]
 	dec a
-	call Function1c17
+	call WriteBackup
 	and a
 	jr nz, .asm_93118
 	and a
@@ -75346,9 +75566,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_93195
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld de, StringBuffer2
 	ld bc, $4
 	call CopyBytes
@@ -75397,10 +75617,9 @@
 	hlcoord 18, 17
 	ld [hl], $ee
 	ld hl, UnknownText_0x931db
+rept 4
 	inc bc
-	inc bc
-	inc bc
-	inc bc
+endr
 	ret
 ; 931db
 
@@ -75459,8 +75678,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Jumptable_9322d
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -75528,8 +75748,9 @@
 	ld hl, $6
 	add hl, bc
 	ld a, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	cp $48
 	jr nc, .asm_932a3
 	and $3
@@ -75556,8 +75777,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Jumptable_932bc
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -75703,7 +75925,7 @@
 
 SECTION "bank2E", ROMX, BANK[$2E]
 
-Functionb8000:: ; b8000
+ReturnFromMapSetupScript:: ; b8000
 	xor a
 	ld [hBGMapMode], a
 	callba Functionb800a
@@ -75839,7 +76061,7 @@
 ; b80d3
 
 Functionb80d3: ; b80d3
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $2
 	ld c, $12
 	call Functionb8115
@@ -75868,15 +76090,15 @@
 	ld c, $0
 	push hl
 	ld hl, StringBuffer1
-.asm_b8107
+.loop
 	ld a, [hli]
 	cp $50
-	jr z, .asm_b8113
+	jr z, .stop
 	cp $25
-	jr z, .asm_b8107
+	jr z, .loop
 	inc c
-	jr .asm_b8107
-.asm_b8113
+	jr .loop
+.stop
 	pop hl
 	ret
 
@@ -75884,118 +76106,133 @@
 Functionb8115: ; b8115
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	ld a, $87
-.asm_b811f
+.loop
 	push bc
 	push hl
-.asm_b8121
+.inner_loop
 	ld [hli], a
 	dec c
-	jr nz, .asm_b8121
+	jr nz, .inner_loop
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	pop bc
 	dec b
-	jr nz, .asm_b811f
+	jr nz, .loop
 	ret
 ; b812f
 
 Functionb812f: ; b812f
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $61
 	ld [hli], a
 	ld a, $62
-	call Functionb8164
+	call .Fill5Words
 	ld a, $64
 	ld [hli], a
 	ld a, $65
 	ld [hli], a
-	call Functionb815b
+	call .Fill18Bytes
 	ld a, $6b
 	ld [hli], a
 	ld a, $66
 	ld [hli], a
-	call Functionb815b
+	call .Fill18Bytes
 	ld a, $6c
 	ld [hli], a
 	ld a, $67
 	ld [hli], a
 	ld a, $68
-	call Functionb8164
+	call .Fill5Words
 	ld a, $6a
 	ld [hl], a
 	ret
 ; b815b
 
-Functionb815b: ; b815b
-	ld c, $12
+.Fill18Bytes: ; b815b
+	ld c, 18
 	ld a, $6d
-.asm_b815f
+.loop
 	ld [hli], a
 	dec c
-	jr nz, .asm_b815f
+	jr nz, .loop
 	ret
 ; b8164
 
-Functionb8164: ; b8164
-	ld c, $5
-	jr .asm_b816a
+.Fill5Words: ; b8164
+	ld c, 5
+	jr .enterloop
 
-.asm_b8168
+.continueloop
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 
-.asm_b816a
+.enterloop
 	inc a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	dec a
 	dec c
-	jr nz, .asm_b8168
+	jr nz, .continueloop
 	ret
 ; b8172
 
-Functionb8172: ; b8172
+CheckForSignpostItems: ; b8172
+; Checks to see if there are hidden items on the screen that have not yet been found.  If it finds one, returns carry.
 	call GetMapScriptHeaderBank
 	ld [Buffer1], a
+; Get the coordinate of the bottom right corner of the screen, and load it in wd1ec/wd1ed.
 	ld a, [XCoord]
-	add $5
+	add SCREEN_WIDTH / 4
 	ld [wd1ed], a
 	ld a, [YCoord]
-	add $4
+	add SCREEN_HEIGHT / 4
 	ld [wd1ec], a
+; Get the pointer for the first signpost header in the map...
 	ld hl, wdc02
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wdc01]
+; ... before even checking to see if there are any signposts on this map.
+	ld a, [wCurrentMapSignpostCount]
 	and a
-	jr z, .asm_b81dd
-.asm_b8194
+	jr z, .nosignpostitems
+; For i = 1:wCurrentMapSignpostCount...
+.loop
+; Store the counter in Buffer2, and store the signpost header pointer in the stack.
 	ld [Buffer2], a
 	push hl
-	call Functionb81e2
+; Get the Y coordinate of the signpost.
+	call .GetFarByte
 	ld e, a
+; Is the Y coordinate of the signpost on the screen?  If not, go to the next signpost.
 	ld a, [wd1ec]
 	sub e
-	jr c, .asm_b81d2
-	cp $9
-	jr nc, .asm_b81d2
-	call Functionb81e2
+	jr c, .next
+	cp SCREEN_HEIGHT / 2
+	jr nc, .next
+; Is the X coordinate of the signpost on the screen?  If not, go to the next signpost.
+	call .GetFarByte
 	ld d, a
 	ld a, [wd1ed]
 	sub d
-	jr c, .asm_b81d2
-	cp $a
-	jr nc, .asm_b81d2
-	call Functionb81e2
-	cp $7
-	jr nz, .asm_b81d2
+	jr c, .next
+	cp SCREEN_WIDTH / 2
+	jr nc, .next
+; Is this signpost a hidden item?  If not, go to the next signpost.
+	call .GetFarByte
+	cp SIGNPOST_ITEM
+	jr nz, .next
+; Has this item already been found?  If not, set off the Itemfinder.
 	ld a, [Buffer1]
 	call GetFarHalfword
 	ld a, [Buffer1]
@@ -76002,31 +76239,33 @@
 	call GetFarHalfword
 	ld d, h
 	ld e, l
-	ld b, $2
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
-	jr z, .asm_b81df
+	jr z, .itemnearby
 
-.asm_b81d2
+.next
+; Restore the signpost header pointer and increment it by the length of a signpost header.
 	pop hl
-	ld bc, $0005
+	ld bc, 5
 	add hl, bc
+; Restore the signpost counter and decrement it.  If it hits zero, there are no hidden items in range.
 	ld a, [Buffer2]
 	dec a
-	jr nz, .asm_b8194
+	jr nz, .loop
 
-.asm_b81dd
+.nosignpostitems
 	xor a
 	ret
 
-.asm_b81df
+.itemnearby
 	pop hl
 	scf
 	ret
 ; b81e2
 
-Functionb81e2: ; b81e2
+.GetFarByte: ; b81e2
 	ld a, [Buffer1]
 	call GetFarByte
 	inc hl
@@ -76193,8 +76432,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, TreeMons
+rept 2
 	add hl, de
-	add hl, de
+endr
 
 	ld a, [hli]
 	ld h, [hl]
@@ -76379,9 +76619,9 @@
 .loop
 	sub [hl]
 	jr c, .ok
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	jr .loop
 
 .ok
@@ -76533,2112 +76773,8 @@
 INCBIN "gfx/unknown/0b8582.2bpp"
 ; b8612
 
+INCLUDE "engine/radio.asm"
 
-PlayRadioShow: ; b8612
-	ld a, [wd002] 
-	cp 8
-	jr nc, .ok
-	ld a, [StatusFlags2]
-	bit 0, a
-	jr z, .ok
-	call IsInJohto
-	and a
-	jr nz, .ok
-	ld a, 7
-	ld [wd002], a 
-.ok
-	ld a, [wd002] 
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_b863a
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_b863a: ; b863a (2e:463a)
-	dw Functionb8742
-	dw Functionb8a46
-	dw Functionb8b35
-	dw Functionb8bdc
-	dw Functionb8f12
-	dw Functionb8cbf
-	dw Functionb8b50
-	dw Functionb8e72
-	dw Functionb8ef7
-	dw Functionb8f00
-	dw Functionb8f09
-	dw Functionb8752
-	dw Functionb875a
-	dw Functionb8762
-	dw Functionb8810
-	dw Functionb8818
-	dw Functionb883e
-	dw Functionb8854
-	dw Functionb88d9
-	dw Functionb8a6c
-	dw Functionb8aa4
-	dw Functionb8aac
-	dw Functionb8ab4
-	dw Functionb8b40
-	dw Functionb8b48
-	dw Functionb8b63
-	dw Functionb8b6b
-	dw Functionb8b7d
-	dw Functionb8b8f
-	dw Functionb8b5b
-	dw Functionb8bf5
-	dw Functionb8bfd
-	dw Functionb8c05
-	dw Functionb8c0d
-	dw Functionb8c15
-	dw Functionb8c1d
-	dw Functionb8c25
-	dw Functionb8c3e
-	dw Functionb8c46
-	dw Functionb8c4e
-	dw Functionb8c56
-	dw Functionb8c5e
-	dw Functionb8c6e
-	dw Functionb8c76
-	dw Functionb8cca
-	dw Functionb8cd2
-	dw Functionb8cf2
-	dw Functionb8d56
-	dw Functionb8ded
-	dw Functionb8e28
-	dw Functionb8e7d
-	dw Functionb8e85
-	dw Functionb8e8d
-	dw Functionb8e95
-	dw Functionb8e9d
-	dw Functionb8ea5
-	dw Functionb8ead
-	dw Functionb8eb5
-	dw Functionb8ebd
-	dw Functionb896e
-	dw Functionb8994
-	dw Functionb89a9
-	dw Functionb89c6
-	dw Functionb89d7
-	dw Functionb8f3f
-	dw Functionb8f47
-	dw Functionb8f55
-	dw Functionb909c
-	dw Functionb90a4
-	dw Functionb90ac
-	dw Functionb90c5
-	dw Functionb90d2
-	dw Functionb90da
-	dw Functionb90e2
-	dw Functionb90ea
-	dw Functionb90f2
-	dw Functionb90fa
-	dw Functionb9102
-	dw Functionb910a
-	dw Functionb9112
-	dw Functionb911a
-	dw Functionb9122
-	dw Functionb912a
-	dw Functionb9152
-	dw Functionb8728
-	dw Functionb8abc
-	dw Functionb8ac4
-	dw Functionb8acc
-
-
-Functionb86ea: ; b86ea (2e:46ea)
-	ld [wd003], a
-	ld hl, wd00c
-	ld a, [wd005]
-	cp $2
-	jr nc, .asm_b870a
-	inc hl
-	ld [hl], $0
-	inc a
-	ld [wd005], a
-	cp $2
-	jr nz, .asm_b870a
-	bccoord 1, 16
-	call Function13e5
-	jr .asm_b870d
-.asm_b870a
-	call PrintTextBoxText
-.asm_b870d
-	ld a, $54
-	ld [wd002], a
-	ld a, $64
-	ld [wd004], a
-	ret
-; b8718 (2e:4718)
-
-Functionb8718: ; b8718
-	push hl
-	ld b, $28
-.asm_b871b
-	ld a, [hl]
-	cp $e8
-	jr nz, .asm_b8722
-	ld [hl], $7f
-
-.asm_b8722
-	inc hl
-	dec b
-	jr nz, .asm_b871b
-	pop hl
-	ret
-; b8728
-
-Functionb8728: ; b8728 (2e:4728)
-	ld hl, wd004
-	ld a, [hl]
-	and a
-	jr z, .asm_b8731
-	dec [hl]
-	ret
-.asm_b8731
-	ld a, [wd003]
-	ld [wd002], a
-	ld a, [wd005]
-	cp $1
-	call nz, Functionb8a0b
-	jp Functionb8a17
-
-Functionb8742: ; b8742 (2e:4742)
-	ld a, $5
-	ld [wd006], a
-	call Functionb91eb
-	ld hl, UnknownText_0xb8820
-	ld a, $b
-	jp Functionb9221
-
-Functionb8752: ; b8752 (2e:4752)
-	ld hl, UnknownText_0xb8825
-	ld a, $c
-	jp Functionb9221
-
-Functionb875a: ; b875a (2e:475a)
-	ld hl, UnknownText_0xb882a
-	ld a, $d
-	jp Functionb9221
-
-Functionb8762: ; b8762 (2e:4762)
-	call Random
-	and $1f
-	cp $f
-	jr nc, Functionb8762
-	ld hl, Unknown_b87f2
-	ld c, a
-	ld b, 0
-	add hl, bc
-	add hl, bc
-	ld b, [hl]
-	inc hl
-	ld c, [hl]
-	push bc
-
-	ld hl, WildMons1
-.loop
-	ld a, BANK(WildMons1)
-	call GetFarByte
-	cp $ff
-	jr z, .asm_b87ec
-	inc hl
-	cp b
-	jr nz, .next
-	ld a, BANK(WildMons1)
-	call GetFarByte
-	cp c
-	jr z, .asm_b8796
-.next
-	dec hl
-	ld de, $2f
-	add hl, de
-	jr .loop
-
-.asm_b8796
-	inc hl
-	inc hl
-	inc hl
-	inc hl
-
-.not3
-	call Random
-	and 3
-	cp 3
-	jr z, .not3
-
-	ld bc, $e
-	call AddNTimes
-.asm_b87a9
-	call Random
-	and 7
-	cp 2
-	jr c, .asm_b87a9
-	cp 5
-	jr nc, .asm_b87a9
-	ld e, a
-	ld d, 0
-	add hl, de
-	add hl, de
-	inc hl
-	ld a, BANK(WildMons1)
-	call GetFarByte
-	ld [wd265], a
-	ld [CurPartySpecies], a
-	call GetPokemonName
-	ld hl, StringBuffer1
-	ld de, wd050
-	ld bc, $b
-	call CopyBytes
-
-	pop bc
-	call GetWorldMapLocation
-	ld e, a
-	callba GetLandmarkName
-	ld hl, UnknownText_0xb882f
-	call Functionb91dc
-	ld a, $e
-	jp Functionb86ea
-
-.asm_b87ec
-	pop bc
-	ld a, $0
-	jp Functionb86ea
-; b87f2 (2e:47f2)
-
-Unknown_b87f2: ; b87f2
-	map ROUTE_29
-	map ROUTE_46
-	map ROUTE_30
-	map ROUTE_32
-	map ROUTE_34
-	map ROUTE_35
-	map ROUTE_37
-	map ROUTE_38
-	map ROUTE_39
-	map ROUTE_42
-	map ROUTE_43
-	map ROUTE_44
-	map ROUTE_45
-	map ROUTE_36
-	map ROUTE_31
-; b8810
-
-Functionb8810: ; b8810 (2e:4810)
-	ld hl, UnknownText_0xb8834
-	ld a, $f
-	jp Functionb9221
-
-Functionb8818: ; b8818 (2e:4818)
-	ld hl, UnknownText_0xb8839
-	ld a, $10
-	jp Functionb9221
-; b8820 (2e:4820)
-
-UnknownText_0xb8820: ; 0xb8820
-	; MARY: PROF.OAK'S
-	text_jump UnknownText_0x1bc81a
-	db "@"
-; 0xb8825
-
-UnknownText_0xb8825: ; 0xb8825
-	; #MON TALK!
-	text_jump UnknownText_0x1bc82d
-	db "@"
-; 0xb882a
-
-UnknownText_0xb882a: ; 0xb882a
-	; With me, MARY!
-	text_jump UnknownText_0x1bc83a
-	db "@"
-; 0xb882f
-
-UnknownText_0xb882f: ; 0xb882f
-	; OAK: @ @
-	text_jump UnknownText_0x1bc84b
-	db "@"
-; 0xb8834
-
-UnknownText_0xb8834: ; 0xb8834
-	; may be seen around
-	text_jump UnknownText_0x1bc858
-	db "@"
-; 0xb8839
-
-UnknownText_0xb8839: ; 0xb8839
-	; @ .
-	text_jump UnknownText_0x1bc86d
-	db "@"
-; 0xb883e
-
-Functionb883e: ; b883e (2e:483e)
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, UnknownText_0xb884f
-	ld a, $11
-	jp Functionb9221
-; b884f (2e:484f)
-
-UnknownText_0xb884f: ; 0xb884f
-	; MARY: @ 's
-	text_jump UnknownText_0x1bc876
-	db "@"
-; 0xb8854
-
-Functionb8854: ; b8854 (2e:4854)
-	call Random
-	and $f
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_b8869
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, $12
-	jp Functionb9221
-; b8869 (2e:4869)
-
-Unknown_b8869: ; b8869
-	dw UnknownText_0xb8889
-	dw UnknownText_0xb888e
-	dw UnknownText_0xb8893
-	dw UnknownText_0xb8898
-	dw UnknownText_0xb889d
-	dw UnknownText_0xb88a2
-	dw UnknownText_0xb88a7
-	dw UnknownText_0xb88ac
-	dw UnknownText_0xb88b1
-	dw UnknownText_0xb88b6
-	dw UnknownText_0xb88bb
-	dw UnknownText_0xb88c0
-	dw UnknownText_0xb88c5
-	dw UnknownText_0xb88ca
-	dw UnknownText_0xb88cf
-	dw UnknownText_0xb88d4
-; b8889
-
-UnknownText_0xb8889: ; 0xb8889
-	; sweet and adorably
-	text_jump UnknownText_0x1bc885
-	db "@"
-; 0xb888e
-
-UnknownText_0xb888e: ; 0xb888e
-	; wiggly and slickly
-	text_jump UnknownText_0x1bc89a
-	db "@"
-; 0xb8893
-
-UnknownText_0xb8893: ; 0xb8893
-	; aptly named and
-	text_jump UnknownText_0x1bc8af
-	db "@"
-; 0xb8898
-
-UnknownText_0xb8898: ; 0xb8898
-	; undeniably kind of
-	text_jump UnknownText_0x1bc8c1
-	db "@"
-; 0xb889d
-
-UnknownText_0xb889d: ; 0xb889d
-	; so, so unbearably
-	text_jump UnknownText_0x1bc8d6
-	db "@"
-; 0xb88a2
-
-UnknownText_0xb88a2: ; 0xb88a2
-	; wow, impressively
-	text_jump UnknownText_0x1bc8ea
-	db "@"
-; 0xb88a7
-
-UnknownText_0xb88a7: ; 0xb88a7
-	; almost poisonously
-	text_jump UnknownText_0x1bc8fe
-	db "@"
-; 0xb88ac
-
-UnknownText_0xb88ac: ; 0xb88ac
-	; ooh, so sensually
-	text_jump UnknownText_0x1bc913
-	db "@"
-; 0xb88b1
-
-UnknownText_0xb88b1: ; 0xb88b1
-	; so mischievously
-	text_jump UnknownText_0x1bc927
-	db "@"
-; 0xb88b6
-
-UnknownText_0xb88b6: ; 0xb88b6
-	; so very topically
-	text_jump UnknownText_0x1bc93a
-	db "@"
-; 0xb88bb
-
-UnknownText_0xb88bb: ; 0xb88bb
-	; sure addictively
-	text_jump UnknownText_0x1bc94e
-	db "@"
-; 0xb88c0
-
-UnknownText_0xb88c0: ; 0xb88c0
-	; looks in water is
-	text_jump UnknownText_0x1bc961
-	db "@"
-; 0xb88c5
-
-UnknownText_0xb88c5: ; 0xb88c5
-	; evolution must be
-	text_jump UnknownText_0x1bc975
-	db "@"
-; 0xb88ca
-
-UnknownText_0xb88ca: ; 0xb88ca
-	; provocatively
-	text_jump UnknownText_0x1bc989
-	db "@"
-; 0xb88cf
-
-UnknownText_0xb88cf: ; 0xb88cf
-	; so flipped out and
-	text_jump UnknownText_0x1bc999
-	db "@"
-; 0xb88d4
-
-UnknownText_0xb88d4: ; 0xb88d4
-	; heart-meltingly
-	text_jump UnknownText_0x1bc9ae
-	db "@"
-; 0xb88d9
-
-Functionb88d9: ; b88d9 (2e:48d9)
-	call Random
-	and $f
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_b88fe
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wd006]
-	dec a
-	ld [wd006], a
-	ld a, $d
-	jr nz, .asm_b88fb
-	ld a, $5
-	ld [wd006], a
-	ld a, $3b
-.asm_b88fb
-	jp Functionb9221
-; b88fe (2e:48fe)
-
-Unknown_b88fe: ; b88fe
-	dw UnknownText_0xb891e
-	dw UnknownText_0xb8923
-	dw UnknownText_0xb8928
-	dw UnknownText_0xb892d
-	dw UnknownText_0xb8932
-	dw UnknownText_0xb8937
-	dw UnknownText_0xb893c
-	dw UnknownText_0xb8941
-	dw UnknownText_0xb8946
-	dw UnknownText_0xb894b
-	dw UnknownText_0xb8950
-	dw UnknownText_0xb8955
-	dw UnknownText_0xb895a
-	dw UnknownText_0xb895f
-	dw UnknownText_0xb8964
-	dw UnknownText_0xb8969
-; b891e
-
-UnknownText_0xb891e: ; 0xb891e
-	; cute.
-	text_jump UnknownText_0x1bc9c0
-	db "@"
-; 0xb8923
-
-UnknownText_0xb8923: ; 0xb8923
-	; weird.
-	text_jump UnknownText_0x1bc9c8
-	db "@"
-; 0xb8928
-
-UnknownText_0xb8928: ; 0xb8928
-	; pleasant.
-	text_jump UnknownText_0x1bc9d1
-	db "@"
-; 0xb892d
-
-UnknownText_0xb892d: ; 0xb892d
-	; bold, sort of.
-	text_jump UnknownText_0x1bc9dd
-	db "@"
-; 0xb8932
-
-UnknownText_0xb8932: ; 0xb8932
-	; frightening.
-	text_jump UnknownText_0x1bc9ee
-	db "@"
-; 0xb8937
-
-UnknownText_0xb8937: ; 0xb8937
-	; suave & debonair!
-	text_jump UnknownText_0x1bc9fd
-	db "@"
-; 0xb893c
-
-UnknownText_0xb893c: ; 0xb893c
-	; powerful.
-	text_jump UnknownText_0x1bca11
-	db "@"
-; 0xb8941
-
-UnknownText_0xb8941: ; 0xb8941
-	; exciting.
-	text_jump UnknownText_0x1bca1d
-	db "@"
-; 0xb8946
-
-UnknownText_0xb8946: ; 0xb8946
-	; groovy!
-	text_jump UnknownText_0x1bca29
-	db "@"
-; 0xb894b
-
-UnknownText_0xb894b: ; 0xb894b
-	; inspiring.
-	text_jump UnknownText_0x1bca33
-	db "@"
-; 0xb8950
-
-UnknownText_0xb8950: ; 0xb8950
-	; friendly.
-	text_jump UnknownText_0x1bca40
-	db "@"
-; 0xb8955
-
-UnknownText_0xb8955: ; 0xb8955
-	; hot, hot, hot!
-	text_jump UnknownText_0x1bca4c
-	db "@"
-; 0xb895a
-
-UnknownText_0xb895a: ; 0xb895a
-	; stimulating.
-	text_jump UnknownText_0x1bca5d
-	db "@"
-; 0xb895f
-
-UnknownText_0xb895f: ; 0xb895f
-	; guarded.
-	text_jump UnknownText_0x1bca6c
-	db "@"
-; 0xb8964
-
-UnknownText_0xb8964: ; 0xb8964
-	; lovely.
-	text_jump UnknownText_0x1bca77
-	db "@"
-; 0xb8969
-
-UnknownText_0xb8969: ; 0xb8969
-	; speedy.
-	text_jump UnknownText_0x1bca81
-	db "@"
-; 0xb896e
-
-Functionb896e: ; b896e (2e:496e)
-	callba Function91868
-	ld hl, UnknownText_0xb8993
-	call PrintText
-	call WaitBGMap
-	ld hl, UnknownText_0xb898e
-	call PrintText
-	ld a, $3c
-	ld [wd002], a
-	ld a, $64
-	ld [wd004], a
-	ret
-; b898e (2e:498e)
-
-UnknownText_0xb898e: ; 0xb898e
-	; #MON
-	text_jump UnknownText_0x1bca8b
-	db "@"
-; 0xb8993
-
-UnknownText_0xb8993: ; 0xb8993
-	db "@"
-; 0xb8994
-
-Functionb8994: ; b8994 (2e:4994)
-	ld hl, wd004
-	dec [hl]
-	ret nz
-	hlcoord 9, 14
-	ld de, String_b89a4
-	ld a, $3d
-	jp Functionb8a00
-; b89a4 (2e:49a4)
-
-String_b89a4:
-	db "#MON@"
-; b89a9
-
-Functionb89a9: ; b89a9 (2e:49a9)
-	ld hl, wd004
-	dec [hl]
-	ret nz
-	hlcoord 1, 16
-	ld de, String_b89b9
-	ld a, $3e
-	jp Functionb8a00
-; b89b9 (2e:49b9)
-
-String_b89b9:
-	db "#MON Channel@"
-; b89c6
-
-Functionb89c6: ; b89c6 (2e:49c6)
-	ld hl, wd004
-	dec [hl]
-	ret nz
-	hlcoord 12, 16
-	ld de, String_b89d6
-	ld a, $3f
-	jp Functionb8a00
-; b89d6 (2e:49d6)
-
-String_b89d6:
-	db "@"
-; b89d7
-
-Functionb89d7: ; b89d7 (2e:49d7)
-	ld hl, wd004
-	dec [hl]
-	ret nz
-	ld de, $1d
-	callab Function91854
-	ld hl, UnknownText_0xb89ff
-	call PrintText
-	ld a, $d
-	ld [wd003], a
-	xor a
-	ld [wd005], a
-	ld a, $54
-	ld [wd002], a
-	ld a, $a
-	ld [wd004], a
-	ret
-; b89ff (2e:49ff)
-
-UnknownText_0xb89ff: ; 0xb89ff
-	db "@"
-; 0xb8a00
-
-Functionb8a00: ; b8a00 (2e:4a00)
-	ld [wd002], a
-	ld a, $64
-	ld [wd004], a
-	jp PlaceString
-
-Functionb8a0b: ; b8a0b (2e:4a0b)
-	hlcoord 0, 15
-	decoord 0, 13
-	ld bc, $28
-	jp CopyBytes
-
-Functionb8a17: ; b8a17 (2e:4a17)
-	hlcoord 1, 15
-	ld bc, $12
-	ld a, $7f
-	call ByteFill
-	hlcoord 1, 16
-	ld bc, $12
-	ld a, $7f
-	jp ByteFill
-
-Functionb8a2d: ; b8a2d (2e:4a2d)
-	push hl
-	push de
-	ld a, [CurPartySpecies]
-	dec a
-	rlca
-	rlca
-	and 3
-	ld hl, .pokedexbanks
-	ld d, 0
-	ld e, a
-	add hl, de
-	ld a, [hl]
-	pop de
-	pop hl
-	ret
-; b8a42 (2e:4a42)
-
-.pokedexbanks
-	db BANK(PokedexEntries1)
-	db BANK(PokedexEntries2)
-	db BANK(PokedexEntries3)
-	db BANK(PokedexEntries4)
-; b8a46
-
-Functionb8a46: ; b8a46 (2e:4a46)
-	call Functionb91eb
-.asm_b8a49
-	call Random
-	cp CELEBI
-	jr nc, .asm_b8a49
-	ld c, a
-	push bc
-	ld a, c
-	call CheckCaughtMon
-	pop bc
-	jr z, .asm_b8a49
-	inc c
-	ld a, c
-	ld [CurPartySpecies], a
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, UnknownText_0xb8b30
-	ld a, $13
-	jp Functionb9221
-
-Functionb8a6c: ; b8a6c (2e:4a6c)
-	ld a, [CurPartySpecies]
-	dec a
-	ld hl, PokedexDataPointerTable
-	ld c, a
-	ld b, 0
-	add hl, bc
-	add hl, bc
-	ld a, BANK(PokedexDataPointerTable)
-	call GetFarHalfword
-	call Functionb8a2d
-	push af
-	push hl
-	call Functionb8af3
-	dec hl
-	ld [hl], $57
-	ld hl, wd26b
-	call Functionb91dc
-	pop hl
-	pop af
-	call Functionb8b11
-	inc hl
-	inc hl
-	inc hl
-	inc hl
-	ld a, l
-	ld [wd26b], a
-	ld a, h
-	ld [wd26c], a
-	ld a, $14
-	jp Functionb86ea
-
-Functionb8aa4: ; b8aa4 (2e:4aa4)
-	call Functionb8ad4
-	ld a, $15
-	jp Functionb86ea
-
-Functionb8aac: ; b8aac (2e:4aac)
-	call Functionb8ad4
-	ld a, $16
-	jp Functionb86ea
-
-Functionb8ab4: ; b8ab4 (2e:4ab4)
-	call Functionb8ad4
-	ld a, $55
-	jp Functionb86ea
-
-Functionb8abc: ; b8abc (2e:4abc)
-	call Functionb8ad4
-	ld a, $56
-	jp Functionb86ea
-
-Functionb8ac4: ; b8ac4 (2e:4ac4)
-	call Functionb8ad4
-	ld a, $57
-	jp Functionb86ea
-
-Functionb8acc: ; b8acc (2e:4acc)
-	call Functionb8ad4
-	ld a, $1
-	jp Functionb86ea
-
-Functionb8ad4: ; b8ad4 (2e:4ad4)
-	ld a, [wd26b]
-	ld l, a
-	ld a, [wd26c]
-	ld h, a
-	ld a, [wd26d]
-	push af
-	push hl
-	call Functionb8af3
-	dec hl
-	ld [hl], $57
-	ld hl, wd26b
-	call Functionb91dc
-	pop hl
-	pop af
-	call Functionb8b11
-	ret
-
-Functionb8af3: ; b8af3 (2e:4af3)
-	ld de, wd26d
-	ld bc, $13
-	call FarCopyBytes
-	ld hl, wd26b
-	ld [hl], $0
-	inc hl
-	ld [hl], $4f
-	inc hl
-.asm_b8b05
-	ld a, [hli]
-	cp $50
-	ret z
-	cp $4e
-	ret z
-	cp $5f
-	ret z
-	jr .asm_b8b05
-
-Functionb8b11: ; b8b11 (2e:4b11)
-	ld d, a
-.asm_b8b12
-	ld a, d
-	call GetFarByte
-	inc hl
-	cp $50
-	jr z, .asm_b8b23
-	cp $4e
-	jr z, .asm_b8b23
-	cp $5f
-	jr nz, .asm_b8b12
-.asm_b8b23
-	ld a, l
-	ld [wd26b], a
-	ld a, h
-	ld [wd26c], a
-	ld a, d
-	ld [wd26d], a
-	ret
-; b8b30 (2e:4b30)
-
-UnknownText_0xb8b30: ; 0xb8b30
-	; @ @
-	text_jump UnknownText_0x1bca91
-	db "@"
-; 0xb8b35
-
-Functionb8b35: ; b8b35 (2e:4b35)
-	call Functionb8b90
-	ld hl, UnknownText_0xb8baa
-	ld a, $17
-	jp Functionb9221
-
-Functionb8b40: ; b8b40 (2e:4b40)
-	ld hl, UnknownText_0xb8baf
-	ld a, $18
-	jp Functionb9221
-
-Functionb8b48: ; b8b48 (2e:4b48)
-	ld hl, UnknownText_0xb8bb4
-	ld a, $19
-	jp Functionb9221
-
-Functionb8b50: ; b8b50 (2e:4b50)
-	call Functionb8b90
-	ld hl, UnknownText_0xb8bb9
-	ld a, $1d
-	jp Functionb9221
-
-Functionb8b5b: ; b8b5b (2e:4b5b)
-	ld hl, UnknownText_0xb8bbe
-	ld a, $19
-	jp Functionb9221
-
-Functionb8b63: ; b8b63 (2e:4b63)
-	ld hl, UnknownText_0xb8bc3
-	ld a, $1a
-	jp Functionb9221
-
-Functionb8b6b: ; b8b6b (2e:4b6b)
-	call GetWeekday
-	and 1
-	ld hl, UnknownText_0xb8bc8
-	jr z, .asm_b8b78
-	ld hl, UnknownText_0xb8bcd
-.asm_b8b78
-	ld a, $1b
-	jp Functionb9221
-
-Functionb8b7d: ; b8b7d (2e:4b7d)
-	call GetWeekday
-	and 1
-	ld hl, UnknownText_0xb8bd2
-	jr z, .asm_b8b8a
-	ld hl, UnknownText_0xb8bd7
-.asm_b8b8a
-	ld a, $1c
-	jp Functionb9221
-
-Functionb8b8f: ; b8b8f (2e:4b8f)
-	ret
-
-Functionb8b90: ; b8b90 (2e:4b90)
-	call Function1052
-	call PrintText
-	ld de, MUSIC_POKEMON_MARCH
-	call GetWeekday
-	and 1
-	jr z, .done
-	ld de, MUSIC_POKEMON_LULLABY
-.done
-	callab Function91854
-	ret
-; b8baa (2e:4baa)
-
-UnknownText_0xb8baa: ; 0xb8baa
-	; BEN: #MON MUSIC
-	text_jump UnknownText_0x1bca99
-	db "@"
-; 0xb8baf
-
-UnknownText_0xb8baf: ; 0xb8baf
-	; CHANNEL!
-	text_jump UnknownText_0x1bcaab
-	db "@"
-; 0xb8bb4
-
-UnknownText_0xb8bb4: ; 0xb8bb4
-	; It's me, DJ BEN!
-	text_jump UnknownText_0x1bcab6
-	db "@"
-; 0xb8bb9
-
-UnknownText_0xb8bb9: ; 0xb8bb9
-	; FERN: #MUSIC!
-	text_jump UnknownText_0x1bcac8
-	db "@"
-; 0xb8bbe
-
-UnknownText_0xb8bbe: ; 0xb8bbe
-	; With DJ FERN!
-	text_jump UnknownText_0x1bcad8
-	db "@"
-; 0xb8bc3
-
-UnknownText_0xb8bc3: ; 0xb8bc3
-	; Today's @ ,
-	text_jump UnknownText_0x1bcae8
-	db "@"
-; 0xb8bc8
-
-UnknownText_0xb8bc8: ; 0xb8bc8
-	; so let us jam to
-	text_jump UnknownText_0x1bcaf6
-	db "@"
-; 0xb8bcd
-
-UnknownText_0xb8bcd: ; 0xb8bcd
-	; so chill out to
-	text_jump UnknownText_0x1bcb09
-	db "@"
-; 0xb8bd2
-
-UnknownText_0xb8bd2: ; 0xb8bd2
-	; #MON March!
-	text_jump UnknownText_0x1bcb1b
-	db "@"
-; 0xb8bd7
-
-UnknownText_0xb8bd7: ; 0xb8bd7
-	; #MON Lullaby!
-	text_jump UnknownText_0x1bcb29
-	db "@"
-; 0xb8bdc
-
-Functionb8bdc: ; b8bdc (2e:4bdc)
-	call Functionb91eb
-	callab Functionc434
-	jr nc, .asm_b8bed
-	callab Functionc422
-.asm_b8bed
-	ld hl, UnknownText_0xb8c7e
-	ld a, $1e
-	jp Functionb9221
-
-Functionb8bf5: ; b8bf5 (2e:4bf5)
-	ld hl, UnknownText_0xb8c83
-	ld a, $1f
-	jp Functionb9221
-
-Functionb8bfd: ; b8bfd (2e:4bfd)
-	ld hl, UnknownText_0xb8c88
-	ld a, $20
-	jp Functionb9221
-
-Functionb8c05: ; b8c05 (2e:4c05)
-	ld hl, UnknownText_0xb8c8d
-	ld a, $21
-	jp Functionb9221
-
-Functionb8c0d: ; b8c0d (2e:4c0d)
-	ld hl, UnknownText_0xb8c92
-	ld a, $22
-	jp Functionb9221
-
-Functionb8c15: ; b8c15 (2e:4c15)
-	ld hl, UnknownText_0xb8c97
-	ld a, $23
-	jp Functionb9221
-
-Functionb8c1d: ; b8c1d (2e:4c1d)
-	ld hl, UnknownText_0xb8c9c
-	ld a, $24
-	jp Functionb9221
-
-Functionb8c25: ; b8c25 (2e:4c25)
-	ld hl, StringBuffer1
-	ld de, wdc9f
-	ld bc, $8205
-	call PrintNum
-	ld a, $50
-	ld [StringBuffer1 + 5], a
-	ld hl, UnknownText_0xb8ca1
-	ld a, $25
-	jp Functionb9221
-
-Functionb8c3e: ; b8c3e (2e:4c3e)
-	ld hl, UnknownText_0xb8ca6
-	ld a, $26
-	jp Functionb9221
-
-Functionb8c46: ; b8c46 (2e:4c46)
-	ld hl, UnknownText_0xb8c9c
-	ld a, $27
-	jp Functionb9221
-
-Functionb8c4e: ; b8c4e (2e:4c4e)
-	ld hl, UnknownText_0xb8ca1
-	ld a, $28
-	jp Functionb9221
-
-Functionb8c56: ; b8c56 (2e:4c56)
-	ld hl, UnknownText_0xb8cab
-	ld a, $29
-	jp Functionb9221
-
-Functionb8c5e: ; b8c5e (2e:4c5e)
-	ld hl, UnknownText_0xb8cb0
-	call Random
-	and a
-	ld a, $3
-	jr nz, .asm_b8c6b
-	ld a, $2a
-.asm_b8c6b
-	jp Functionb9221
-
-Functionb8c6e: ; b8c6e (2e:4c6e)
-	ld hl, UnknownText_0xb8cb5
-	ld a, $2b
-	jp Functionb9221
-
-Functionb8c76: ; b8c76 (2e:4c76)
-	ld hl, UnknownText_0xb8cba
-	ld a, $3
-	jp Functionb9221
-; b8c7e (2e:4c7e)
-
-UnknownText_0xb8c7e: ; 0xb8c7e
-	; REED: Yeehaw! How
-	text_jump UnknownText_0x1bcb39
-	db "@"
-; 0xb8c83
-
-UnknownText_0xb8c83: ; 0xb8c83
-	; y'all doin' now?
-	text_jump UnknownText_0x1bcb4d
-	db "@"
-; 0xb8c88
-
-UnknownText_0xb8c88: ; 0xb8c88
-	; Whether you're up
-	text_jump UnknownText_0x1bcb60
-	db "@"
-; 0xb8c8d
-
-UnknownText_0xb8c8d: ; 0xb8c8d
-	; or way down low,
-	text_jump UnknownText_0x1bcb73
-	db "@"
-; 0xb8c92
-
-UnknownText_0xb8c92: ; 0xb8c92
-	; don't you miss the
-	text_jump UnknownText_0x1bcb86
-	db "@"
-; 0xb8c97
-
-UnknownText_0xb8c97: ; 0xb8c97
-	; LUCKY NUMBER SHOW!
-	text_jump UnknownText_0x1bcb9a
-	db "@"
-; 0xb8c9c
-
-UnknownText_0xb8c9c: ; 0xb8c9c
-	; This week's Lucky
-	text_jump UnknownText_0x1bcbaf
-	db "@"
-; 0xb8ca1
-
-UnknownText_0xb8ca1: ; 0xb8ca1
-	; Number is @ !
-	text_jump UnknownText_0x1bcbc2
-	db "@"
-; 0xb8ca6
-
-UnknownText_0xb8ca6: ; 0xb8ca6
-	; I'll repeat that!
-	text_jump UnknownText_0x1bcbd6
-	db "@"
-; 0xb8cab
-
-UnknownText_0xb8cab: ; 0xb8cab
-	; Match it and go to
-	text_jump UnknownText_0x1bcbe9
-	db "@"
-; 0xb8cb0
-
-UnknownText_0xb8cb0: ; 0xb8cb0
-	; the RADIO TOWER!
-	text_jump UnknownText_0x1bcbfe
-	db "@"
-; 0xb8cb5
-
-UnknownText_0xb8cb5: ; 0xb8cb5
-	; …Repeating myself
-	text_jump UnknownText_0x1bcc11
-	db "@"
-; 0xb8cba
-
-UnknownText_0xb8cba: ; 0xb8cba
-	; gets to be a drag…
-	text_jump UnknownText_0x1bcc25
-	db "@"
-; 0xb8cbf
-
-Functionb8cbf: ; b8cbf (2e:4cbf)
-	call Functionb91eb
-	ld hl, UnknownText_0xb8ce3
-	ld a, $2c
-	jp Functionb9221
-
-Functionb8cca: ; b8cca (2e:4cca)
-	ld hl, UnknownText_0xb8ce8
-	ld a, $2d
-	jp Functionb9221
-
-Functionb8cd2: ; b8cd2 (2e:4cd2)
-	ld hl, UnknownText_0xb8ced
-	call Random
-	cp $7b
-	ld a, $2e
-	jr c, .asm_b8ce0
-	ld a, $30
-.asm_b8ce0
-	jp Functionb9221
-; b8ce3 (2e:4ce3)
-
-UnknownText_0xb8ce3: ; 0xb8ce3
-	; PLACES AND PEOPLE!
-	text_jump UnknownText_0x1bcc3a
-	db "@"
-; 0xb8ce8
-
-UnknownText_0xb8ce8: ; 0xb8ce8
-	; Brought to you by
-	text_jump UnknownText_0x1bcc4f
-	db "@"
-; 0xb8ced
-
-UnknownText_0xb8ced: ; 0xb8ced
-	; me, DJ LILY!
-	text_jump UnknownText_0x1bcc63
-	db "@"
-; 0xb8cf2
-
-Functionb8cf2: ; b8cf2 (2e:4cf2)
-	call Random
-	and $7f
-	inc a
-	cp $43
-	jr nc, Functionb8cf2
-	push af
-	ld hl, Unknown_b8d3e
-	ld a, [StatusFlags]
-	bit 6, a
-	jr z, .asm_b8d14
-	ld hl, Unknown_b8d43
-	ld a, [KantoBadges]
-	cp %11111111
-	jr nz, .asm_b8d14
-	ld hl, Unknown_b8d4b
-.asm_b8d14
-	pop af
-	ld c, a
-	ld de, $1
-	push bc
-	call IsInArray
-	pop bc
-	jr c, Functionb8cf2
-	push bc
-	callab Function3952d
-	ld de, StringBuffer1
-	call CopyName1
-	pop bc
-	ld b, $1
-	callab Function3994c
-	ld hl, UnknownText_0xb8d51
-	ld a, $2f
-	jp Functionb9221
-; b8d3e (2e:4d3e)
-
-Unknown_b8d3e: db $0b, $0d, $0e, $0f, $10
-Unknown_b8d43: db $11, $12, $13, $15, $1a, $23, $2e, $40
-Unknown_b8d4b: db $09, $0a, $0c, $2a, $3f
-               db $ff
-; b8d51
-
-UnknownText_0xb8d51: ; 0xb8d51
-	; @  @ @
-	text_jump UnknownText_0x1bcc72
-	db "@"
-; 0xb8d56
-
-Functionb8d56: ; b8d56 (2e:4d56)
-	call Random
-	and $f
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_b8d7d
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call Random
-	cp $a
-	ld a, $5
-	jr c, .asm_b8d7a
-	call Random
-	cp $7b
-	ld a, $2e
-	jr c, .asm_b8d7a
-	ld a, $30
-.asm_b8d7a
-	jp Functionb9221
-; b8d7d (2e:4d7d)
-
-Unknown_b8d7d: ; b8d7d
-	dw UnknownText_0xb8d9d
-	dw UnknownText_0xb8da2
-	dw UnknownText_0xb8da7
-	dw UnknownText_0xb8dac
-	dw UnknownText_0xb8db1
-	dw UnknownText_0xb8db6
-	dw UnknownText_0xb8dbb
-	dw UnknownText_0xb8dc0
-	dw UnknownText_0xb8dc5
-	dw UnknownText_0xb8dca
-	dw UnknownText_0xb8dcf
-	dw UnknownText_0xb8dd4
-	dw UnknownText_0xb8dd9
-	dw UnknownText_0xb8dde
-	dw UnknownText_0xb8de3
-	dw UnknownText_0xb8de8
-; b8d9d
-
-UnknownText_0xb8d9d: ; 0xb8d9d
-	; is cute.
-	text_jump UnknownText_0x1bcc80
-	db "@"
-; 0xb8da2
-
-UnknownText_0xb8da2: ; 0xb8da2
-	; is sort of lazy.
-	text_jump UnknownText_0x1bcc8b
-	db "@"
-; 0xb8da7
-
-UnknownText_0xb8da7: ; 0xb8da7
-	; is always happy.
-	text_jump UnknownText_0x1bcc9e
-	db "@"
-; 0xb8dac
-
-UnknownText_0xb8dac: ; 0xb8dac
-	; is quite noisy.
-	text_jump UnknownText_0x1bccb1
-	db "@"
-; 0xb8db1
-
-UnknownText_0xb8db1: ; 0xb8db1
-	; is precocious.
-	text_jump UnknownText_0x1bccc3
-	db "@"
-; 0xb8db6
-
-UnknownText_0xb8db6: ; 0xb8db6
-	; is somewhat bold.
-	text_jump UnknownText_0x1bccd4
-	db "@"
-; 0xb8dbb
-
-UnknownText_0xb8dbb: ; 0xb8dbb
-	; is too picky!
-	text_jump UnknownText_0x1bcce8
-	db "@"
-; 0xb8dc0
-
-UnknownText_0xb8dc0: ; 0xb8dc0
-	; is sort of OK.
-	text_jump UnknownText_0x1bccf8
-	db "@"
-; 0xb8dc5
-
-UnknownText_0xb8dc5: ; 0xb8dc5
-	; is just so-so.
-	text_jump UnknownText_0x1bcd09
-	db "@"
-; 0xb8dca
-
-UnknownText_0xb8dca: ; 0xb8dca
-	; is actually great.
-	text_jump UnknownText_0x1bcd1a
-	db "@"
-; 0xb8dcf
-
-UnknownText_0xb8dcf: ; 0xb8dcf
-	; is just my type.
-	text_jump UnknownText_0x1bcd2f
-	db "@"
-; 0xb8dd4
-
-UnknownText_0xb8dd4: ; 0xb8dd4
-	; is so cool, no?
-	text_jump UnknownText_0x1bcd42
-	db "@"
-; 0xb8dd9
-
-UnknownText_0xb8dd9: ; 0xb8dd9
-	; is inspiring!
-	text_jump UnknownText_0x1bcd54
-	db "@"
-; 0xb8dde
-
-UnknownText_0xb8dde: ; 0xb8dde
-	; is kind of weird.
-	text_jump UnknownText_0x1bcd64
-	db "@"
-; 0xb8de3
-
-UnknownText_0xb8de3: ; 0xb8de3
-	; is right for me?
-	text_jump UnknownText_0x1bcd78
-	db "@"
-; 0xb8de8
-
-UnknownText_0xb8de8: ; 0xb8de8
-	; is definitely odd!
-	text_jump UnknownText_0x1bcd8b
-	db "@"
-; 0xb8ded
-
-Functionb8ded: ; b8ded (2e:4ded)
-	call Random
-	cp $9
-	jr nc, Functionb8ded
-	ld hl, Unknown_b8e11
-	ld c, a
-	ld b, 0
-	add hl, bc
-	add hl, bc
-	ld b, [hl]
-	inc hl
-	ld c, [hl]
-	call GetWorldMapLocation
-	ld e, a
-	callba GetLandmarkName
-	ld hl, UnknownText_0xb8e23
-	ld a, $31
-	jp Functionb9221
-; b8e11 (2e:4e11)
-
-Unknown_b8e11: ; b8e11
-	map PALLET_TOWN
-	map ROUTE_22
-	map PEWTER_CITY
-	map CERULEAN_POLICE_STATION
-	map ROUTE_12
-	map ROUTE_11
-	map ROUTE_16
-	map ROUTE_14
-	map CINNABAR_POKECENTER_2F_BETA
-; b8e23
-
-UnknownText_0xb8e23: ; 0xb8e23
-	; @ @
-	text_jump UnknownText_0x1bcda0
-	db "@"
-; 0xb8e28
-
-Functionb8e28: ; b8e28 (2e:4e28)
-	call Random
-	and $f
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_b8e52
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call Functionb91dc
-	call Random
-	cp $a
-	ld a, $5
-	jr c, .asm_b8e4f
-	call Random
-	cp $7b
-	ld a, $2e
-	jr c, .asm_b8e4f
-	ld a, $30
-.asm_b8e4f
-	jp Functionb86ea
-; b8e52 (2e:4e52)
-
-Unknown_b8e52: ; b8e52
-	dw UnknownText_0xb8d9d
-	dw UnknownText_0xb8da2
-	dw UnknownText_0xb8da7
-	dw UnknownText_0xb8dac
-	dw UnknownText_0xb8db1
-	dw UnknownText_0xb8db6
-	dw UnknownText_0xb8dbb
-	dw UnknownText_0xb8dc0
-	dw UnknownText_0xb8dc5
-	dw UnknownText_0xb8dca
-	dw UnknownText_0xb8dcf
-	dw UnknownText_0xb8dd4
-	dw UnknownText_0xb8dd9
-	dw UnknownText_0xb8dde
-	dw UnknownText_0xb8de3
-	dw UnknownText_0xb8de8
-; b8e72
-
-Functionb8e72: ; b8e72 (2e:4e72)
-	call Functionb91eb
-	ld hl, UnknownText_0xb8ec5
-	ld a, $32
-	jp Functionb9221
-
-Functionb8e7d: ; b8e7d (2e:4e7d)
-	ld hl, UnknownText_0xb8eca
-	ld a, $33
-	jp Functionb9221
-
-Functionb8e85: ; b8e85 (2e:4e85)
-	ld hl, UnknownText_0xb8ecf
-	ld a, $34
-	jp Functionb9221
-
-Functionb8e8d: ; b8e8d (2e:4e8d)
-	ld hl, UnknownText_0xb8ed4
-	ld a, $35
-	jp Functionb9221
-
-Functionb8e95: ; b8e95 (2e:4e95)
-	ld hl, UnknownText_0xb8ed9
-	ld a, $36
-	jp Functionb9221
-
-Functionb8e9d: ; b8e9d (2e:4e9d)
-	ld hl, UnknownText_0xb8ede
-	ld a, $37
-	jp Functionb9221
-
-Functionb8ea5: ; b8ea5 (2e:4ea5)
-	ld hl, UnknownText_0xb8ee3
-	ld a, $38
-	jp Functionb9221
-
-Functionb8ead: ; b8ead (2e:4ead)
-	ld hl, UnknownText_0xb8ee8
-	ld a, $39
-	jp Functionb9221
-
-Functionb8eb5: ; b8eb5 (2e:4eb5)
-	ld hl, UnknownText_0xb8eed
-	ld a, $3a
-	jp Functionb9221
-
-Functionb8ebd: ; b8ebd (2e:4ebd)
-	ld hl, UnknownText_0xb8ef2
-	ld a, $7
-	jp Functionb9221
-; b8ec5 (2e:4ec5)
-
-UnknownText_0xb8ec5: ; 0xb8ec5
-	; … …Ahem, we are
-	text_jump UnknownText_0x1bcda8
-	db "@"
-; 0xb8eca
-
-UnknownText_0xb8eca: ; 0xb8eca
-	; TEAM ROCKET!
-	text_jump UnknownText_0x1bcdba
-	db "@"
-; 0xb8ecf
-
-UnknownText_0xb8ecf: ; 0xb8ecf
-	; After three years
-	text_jump UnknownText_0x1bcdc9
-	db "@"
-; 0xb8ed4
-
-UnknownText_0xb8ed4: ; 0xb8ed4
-	; of preparation, we
-	text_jump UnknownText_0x1bcddd
-	db "@"
-; 0xb8ed9
-
-UnknownText_0xb8ed9: ; 0xb8ed9
-	; have risen again
-	text_jump UnknownText_0x1bcdf2
-	db "@"
-; 0xb8ede
-
-UnknownText_0xb8ede: ; 0xb8ede
-	; from the ashes!
-	text_jump UnknownText_0x1bce05
-	db "@"
-; 0xb8ee3
-
-UnknownText_0xb8ee3: ; 0xb8ee3
-	; GIOVANNI! @ Can you
-	text_jump UnknownText_0x1bce17
-	db "@"
-; 0xb8ee8
-
-UnknownText_0xb8ee8: ; 0xb8ee8
-	; hear?@  We did it!
-	text_jump UnknownText_0x1bce2e
-	db "@"
-; 0xb8eed
-
-UnknownText_0xb8eed: ; 0xb8eed
-	; @ Where is our boss?
-	text_jump UnknownText_0x1bce44
-	db "@"
-; 0xb8ef2
-
-UnknownText_0xb8ef2: ; 0xb8ef2
-	; @ Is he listening?
-	text_jump UnknownText_0x1bce5c
-	db "@"
-; 0xb8ef7
-
-Functionb8ef7: ; b8ef7 (2e:4ef7)
-	call Functionb91eb
-	ld a, $1
-	ld [wd005], a
-	ret
-
-Functionb8f00: ; b8f00 (2e:4f00)
-	call Functionb91eb
-	ld a, $1
-	ld [wd005], a
-	ret
-
-Functionb8f09: ; b8f09 (2e:4f09)
-	call Functionb91eb
-	ld a, $1
-	ld [wd005], a
-	ret
-
-Functionb8f12: ; b8f12 (2e:4f12)
-	call Functionb9169
-	jp nc, Functionb8f22
-	ld a, [wd005]
-	and a
-	jp z, Functionb912a
-	jp Functionb90c5
-
-Functionb8f22: ; b8f22 (2e:4f22)
-	call Functionb91eb
-	ld a, [hBGMapMode] ; $ff00+$d4
-	push af
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld de, String_b9171
-	hlcoord 2, 9
-	call PlaceString
-	pop af
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld hl, UnknownText_0xb9182
-	ld a, $40
-	jp Functionb9221
-
-Functionb8f3f: ; b8f3f (2e:4f3f)
-	ld hl, UnknownText_0xb9187
-	ld a, $41
-	jp Functionb9221
-
-Functionb8f47: ; b8f47 (2e:4f47)
-	call Functionb9169
-	ld hl, UnknownText_0xb918c
-	jp c, Functionb90b9
-	ld a, $42
-	jp Functionb9221
-
-Functionb8f55: ; b8f55 (2e:4f55)
-	call Functionb9169
-	jp c, Functionb90c5
-	ld a, [wdc4a]
-	ld hl, wdc1f
-	bit 7, [hl]
-	jr nz, .asm_b8f83
-.asm_b8f65
-	call Random
-	and $f
-	cp $b
-	jr nc, .asm_b8f65
-	swap a
-	ld e, a
-.asm_b8f71
-	call Random
-	and $3
-	cp $3
-	jr nc, .asm_b8f71
-	add e
-	ld [wdc4a], a
-	ld hl, wdc1f
-	set 7, [hl]
-.asm_b8f83
-	ld c, a
-	call Functionb8f8f
-	ld hl, UnknownText_0xb9191
-	ld a, $43
-	jp Functionb9221
-
-Functionb8f8f: ; b8f8f
-	ld a, c
-	swap a
-	and $f
-	ld hl, Unknown_b8ff9
-	ld d, 0
-	ld e, a
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [hli]
-	ld b, a
-	push hl
-	inc hl
-	ld a, c
-	and $f
-	ld c, a
-	push hl
-	ld hl, Jumptable_b8fb8
-	ld e, b
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop de
-	call _hl_
-	pop hl
-	ld c, [hl]
-	ret
-; b8fb8
-
-
-Jumptable_b8fb8: ; b8fb8 (2e:4fb8)
-	dw Functionb8fc0
-	dw Functionb8fc7
-	dw Functionb8fce
-	dw Functionb8fde
-
-
-Functionb8fc0: ; b8fc0 (2e:4fc0)
-	call Functionb8fd5
-	call GetPokemonName
-	ret
-
-Functionb8fc7: ; b8fc7 (2e:4fc7)
-	call Functionb8fd5
-	call GetItemName
-	ret
-
-Functionb8fce: ; b8fce (2e:4fce)
-	call Functionb8fd5
-	call GetMoveName
-	ret
-
-Functionb8fd5: ; b8fd5 (2e:4fd5)
-	ld h, 0
-	ld l, c
-	add hl, de
-	ld a, [hl]
-	ld [wd265], a
-	ret
-
-Functionb8fde: ; b8fde (2e:4fde)
-	ld a, c
-	and a
-	jr z, .asm_b8feb
-.asm_b8fe2
-	ld a, [de]
-	inc de
-	cp $50
-	jr nz, .asm_b8fe2
-	dec c
-	jr nz, .asm_b8fe2
-.asm_b8feb
-	ld hl, StringBuffer1
-.asm_b8fee
-	ld a, [de]
-	inc de
-	ld [hli], a
-	cp $50
-	jr nz, .asm_b8fee
-	ld de, StringBuffer1
-	ret
-; b8ff9 (2e:4ff9)
-
-Unknown_b8ff9: ; b8ff9
-	dw Unknown_b900f
-	dw Unknown_b9014
-	dw Unknown_b9019
-	dw Unknown_b901e
-	dw Unknown_b9023
-	dw Unknown_b9028
-	dw Unknown_b902d
-	dw Unknown_b905a
-	dw Unknown_b906d
-	dw Unknown_b9072
-	dw Unknown_b9077
-; b900f
-
-Unknown_b900f: db 0, 10, CYNDAQUIL, TOTODILE, CHIKORITA
-Unknown_b9014: db 1, 12, FRESH_WATER, SODA_POP, LEMONADE
-Unknown_b9019: db 1, 12, POTION, ANTIDOTE, PARLYZ_HEAL
-Unknown_b901e: db 1, 12, POKE_BALL, GREAT_BALL, ULTRA_BALL
-Unknown_b9023: db 0, 10, PIKACHU, RATTATA, GEODUDE
-Unknown_b9028: db 0, 10, HOOTHOOT, SPINARAK, DROWZEE
-Unknown_b902d: db 3, 16, "NEW BARK TOWN@", "CHERRYGROVE CITY@", "AZALEA TOWN@"
-Unknown_b905a: db 3, 6,  "FLYING@", "BUG@", "GRASS@"
-Unknown_b906d: db 2, 12, TACKLE, GROWL, MUD_SLAP
-Unknown_b9072: db 1, 12, X_ATTACK, X_DEFEND, X_SPEED
-Unknown_b9077: db 3, 13, "#MON Talk@", "#MON Music@", "Lucky Channel@"
-; b909c
-
-Functionb909c: ; b909c (2e:509c)
-	ld hl, UnknownText_0xb9196
-	ld a, $44
-	jp Functionb9221
-
-Functionb90a4: ; b90a4 (2e:50a4)
-	ld hl, UnknownText_0xb919b
-	ld a, $45
-	jp Functionb9221
-
-Functionb90ac: ; b90ac (2e:50ac)
-	call Functionb9169
-	ld hl, UnknownText_0xb91a0
-	jr c, Functionb90b9
-	ld a, $4
-	jp Functionb9221
-
-Functionb90b9: ; b90b9 (2e:50b9)
-	push hl
-	ld hl, wdc1f
-	res 7, [hl]
-	pop hl
-	ld a, $46
-	jp Functionb9221
-
-Functionb90c5: ; b90c5 (2e:50c5)
-	ld hl, wdc1f
-	res 7, [hl]
-	ld hl, UnknownText_0xb91d2
-	ld a, $47
-	jp Functionb9221
-
-Functionb90d2: ; b90d2 (2e:50d2)
-	ld hl, UnknownText_0xb91a5
-	ld a, $48
-	jp Functionb9221
-
-Functionb90da: ; b90da (2e:50da)
-	ld hl, UnknownText_0xb91aa
-	ld a, $49
-	jp Functionb9221
-
-Functionb90e2: ; b90e2 (2e:50e2)
-	ld hl, UnknownText_0xb91af
-	ld a, $4a
-	jp Functionb9221
-
-Functionb90ea: ; b90ea (2e:50ea)
-	ld hl, UnknownText_0xb91b4
-	ld a, $4b
-	jp Functionb9221
-
-Functionb90f2: ; b90f2 (2e:50f2)
-	ld hl, UnknownText_0xb91b9
-	ld a, $4c
-	jp Functionb9221
-
-Functionb90fa: ; b90fa (2e:50fa)
-	ld hl, UnknownText_0xb91be
-	ld a, $4d
-	jp Functionb9221
-
-Functionb9102: ; b9102 (2e:5102)
-	ld hl, UnknownText_0xb91c3
-	ld a, $4e
-	jp Functionb9221
-
-Functionb910a: ; b910a (2e:510a)
-	ld hl, UnknownText_0xb91c8
-	ld a, $4f
-	jp Functionb9221
-
-Functionb9112: ; b9112 (2e:5112)
-	ld hl, UnknownText_0xb91cd
-	ld a, $50
-	jp Functionb9221
-
-Functionb911a: ; b911a (2e:511a)
-	ld hl, UnknownText_0xb91d2
-	ld a, $51
-	jp Functionb9221
-
-Functionb9122: ; b9122 (2e:5122)
-	ld hl, UnknownText_0xb91d2
-	ld a, $52
-	jp Functionb9221
-
-Functionb912a: ; b912a (2e:512a)
-	ld a, [hBGMapMode] ; $ff00+$d4
-	push af
-	callba NoRadioMusic
-	callba NoRadioName
-	pop af
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld hl, wdc1f
-	res 7, [hl]
-	ld a, $4
-	ld [wd002], a
-	xor a
-	ld [wd005], a
-	ld hl, UnknownText_0xb91d7
-	ld a, $53
-	jp Functionb9221
-
-Functionb9152: ; b9152 (2e:5152)
-	ld a, $4
-	ld [wd002], a
-	xor a
-	ld [wd005], a
-	call Functionb9169
-	jp nc, Functionb8f12
-	ld hl, UnknownText_0xb91d7
-	ld a, $53
-	jp Functionb9221
-
-Functionb9169: ; b9169 (2e:5169)
-	call UpdateTime
-	ld a, [hHours] ; $ff00+$94
-	cp $12
-	ret
-; b9171 (2e:5171)
-
-String_b9171:
-	db "BUENA'S PASSWORD@"
-; b9182
-
-UnknownText_0xb9182: ; 0xb9182
-	; BUENA: BUENA here!
-	text_jump UnknownText_0x1bce72
-	db "@"
-; 0xb9187
-
-UnknownText_0xb9187: ; 0xb9187
-	; Today's password!
-	text_jump UnknownText_0x1bce87
-	db "@"
-; 0xb918c
-
-UnknownText_0xb918c: ; 0xb918c
-	; Let me think… It's
-	text_jump UnknownText_0x1bce9a
-	db "@"
-; 0xb9191
-
-UnknownText_0xb9191: ; 0xb9191
-	; @ !
-	text_jump UnknownText_0x1bceae
-	db "@"
-; 0xb9196
-
-UnknownText_0xb9196: ; 0xb9196
-	; Don't forget it!
-	text_jump UnknownText_0x1bceb7
-	db "@"
-; 0xb919b
-
-UnknownText_0xb919b: ; 0xb919b
-	; I'm in GOLDENROD's
-	text_jump UnknownText_0x1bcec9
-	db "@"
-; 0xb91a0
-
-UnknownText_0xb91a0: ; 0xb91a0
-	; RADIO TOWER!
-	text_jump UnknownText_0x1bcedc
-	db "@"
-; 0xb91a5
-
-UnknownText_0xb91a5: ; 0xb91a5
-	; BUENA: Oh my…
-	text_jump UnknownText_0x1bceeb
-	db "@"
-; 0xb91aa
-
-UnknownText_0xb91aa: ; 0xb91aa
-	; It's midnight! I
-	text_jump UnknownText_0x1bcefb
-	db "@"
-; 0xb91af
-
-UnknownText_0xb91af: ; 0xb91af
-	; have to shut down!
-	text_jump UnknownText_0x1bcf0d
-	db "@"
-; 0xb91b4
-
-UnknownText_0xb91b4: ; 0xb91b4
-	; Thanks for tuning
-	text_jump UnknownText_0x1bcf22
-	db "@"
-; 0xb91b9
-
-UnknownText_0xb91b9: ; 0xb91b9
-	; in to the end! But
-	text_jump UnknownText_0x1bcf36
-	db "@"
-; 0xb91be
-
-UnknownText_0xb91be: ; 0xb91be
-	; don't stay up too
-	text_jump UnknownText_0x1bcf4b
-	db "@"
-; 0xb91c3
-
-UnknownText_0xb91c3: ; 0xb91c3
-	; late! Presented to
-	text_jump UnknownText_0x1bcf5e
-	db "@"
-; 0xb91c8
-
-UnknownText_0xb91c8: ; 0xb91c8
-	; you by DJ BUENA!
-	text_jump UnknownText_0x1bcf73
-	db "@"
-; 0xb91cd
-
-UnknownText_0xb91cd: ; 0xb91cd
-	; I'm outta here!
-	text_jump UnknownText_0x1bcf86
-	db "@"
-; 0xb91d2
-
-UnknownText_0xb91d2: ; 0xb91d2
-	; …
-	text_jump UnknownText_0x1bcf96
-	db "@"
-; 0xb91d7
-
-UnknownText_0xb91d7: ; 0xb91d7
-	; 
-	text_jump UnknownText_0x1bcf99
-	db "@"
-; 0xb91dc
-
-Functionb91dc: ; b91dc (2e:51dc)
-	ld a, [hl]
-	cp $16 ; TX_FAR
-	jp z, Function3a90
-	ld de, wd00c
-	ld bc, $28
-	jp CopyBytes
-
-Functionb91eb: ; b91eb (2e:51eb)
-	ld a, [wd005]
-	and a
-	ret nz
-	call Function1052
-	call PrintText
-	ld hl, RadioChannelSongs
-	ld a, [wd002]
-	ld c, a
-	ld b, 0
-	add hl, bc
-	add hl, bc
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	callab Function91854
-	ret
-; b920b (2e:520b)
-
-RadioChannelSongs: ; b920b
-	dw MUSIC_POKEMON_TALK
-	dw MUSIC_POKEMON_CENTER
-	dw MUSIC_TITLE
-	dw MUSIC_GAME_CORNER
-	dw MUSIC_BUENAS_PASSWORD
-	dw MUSIC_VIRIDIAN_CITY
-	dw MUSIC_BICYCLE
-	dw MUSIC_ROCKET_OVERTURE
-	dw MUSIC_POKE_FLUTE_CHANNEL
-	dw MUSIC_RUINS_OF_ALPH_RADIO
-	dw MUSIC_LAKE_OF_RAGE_ROCKET_RADIO
-; b9221
-
-Functionb9221: ; b9221 (2e:5221)
-	push af
-	call Functionb91dc
-	pop af
-	jp Functionb86ea
-
 Functionb9229: ; b9229
 	ld a, [CurPartyMon]
 	ld hl, $a600
@@ -78733,8 +76869,9 @@
 	cp $ff
 	jr z, .asm_b92e6
 	inc c
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_b92d9
 
 .asm_b92e6
@@ -78882,7 +77019,7 @@
 	ld c, $8
 	call Functionb9915
 	ld a, $31
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Functionb98a8
 	hlcoord 1, 17
 	call Functionb98a8
@@ -79071,7 +77208,7 @@
 	ld c, $8
 	call Functionb990c
 	ld a, $31
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Functionb98dc
 	hlcoord 0, 1
 	call Functionb98e3
@@ -79233,7 +77370,7 @@
 	ld c, $8
 	call Functionb990c
 	ld a, $31
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Functionb98a8
 	hlcoord 1, 17
 	call Functionb98a8
@@ -79373,7 +77510,7 @@
 ; b9858
 
 Functionb9858: ; b9858
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $31
 	ld [hli], a
 	inc a
@@ -79395,7 +77532,7 @@
 ; b987b
 
 Functionb987b: ; b987b
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $31
 	ld [hli], a
 	inc a
@@ -79452,7 +77589,7 @@
 
 Functionb98bd: ; b98bd
 	ld [hl], a
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	inc a
 	ld [hl], a
@@ -79493,7 +77630,7 @@
 
 Functionb98e3: ; b98e3
 	ld b, $10
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 .asm_b98e8
 	ld [hl], a
 	add hl, de
@@ -79523,7 +77660,7 @@
 	ld [hli], a
 	inc a
 	ld [hl], a
-	ld bc, $0012
+	ld bc, SCREEN_HEIGHT
 	add hl, bc
 	inc a
 	ld [hli], a
@@ -79562,8 +77699,9 @@
 .asm_b991e
 	ld a, [de]
 	inc de
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	dec c
 	jr nz, .asm_b991e
 	ret
@@ -80007,8 +78145,9 @@
 	call Functione0057
 	ld hl, Unknown_e008b
 	pop bc
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -80109,7 +78248,7 @@
 	ret
 ; e00ee (38:40ee)
 
-Functione00ee: ; e00ee (38:40ee)
+_CardFlip: ; e00ee (38:40ee)
 	ld hl, Options
 	set 4, [hl]
 	call WhiteBGMap
@@ -80155,13 +78294,13 @@
 	ld [wcf65], a
 	ld de, MUSIC_GAME_CORNER
 	call PlayMusic
-.asm_e0170
+.MasterLoop
 	ld a, [wcf63]
 	bit 7, a
-	jr nz, .asm_e017c
-	call Functione0191
-	jr .asm_e0170
-.asm_e017c
+	jr nz, .leavethegame
+	call .CardFlip
+	jr .MasterLoop
+.leavethegame
 	call WaitSFX
 	ld de, SFX_QUIT_SLOTS
 	call PlaySFX
@@ -80171,13 +78310,14 @@
 	res 4, [hl]
 	ret
 
-Functione0191: ; e0191 (38:4191)
+.CardFlip: ; e0191 (38:4191)
 	ld a, [wcf63]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_e01a0
+	ld hl, .Jumptable
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -80184,45 +78324,45 @@
 	jp [hl]
 ; e01a0 (38:41a0)
 
-Jumptable_e01a0: ; e01a0
-	dw Functione01b5
-	dw Functione01d2
-	dw Functione0217
-	dw Functione02b7
-	dw Functione02da
-	dw Functione0314
-	dw Functione031e
-	dw Functione0360
+.Jumptable: ; e01a0
+	dw .AskPlayWithThree
+	dw .DeductCoins
+	dw .ChooseACard
+	dw .PlaceYourBet
+	dw .CheckTheCard
+	dw .TabulateTheResult
+	dw .PlayAgain
+	dw .Quit
 ; e01b0
 
-Functione01b0: ; e01b0
+.Increment: ; e01b0
 	ld hl, wcf63
 	inc [hl]
 	ret
 ; e01b5
 
-Functione01b5: ; e01b5
-	ld hl, UnknownText_0xe01cd
+.AskPlayWithThree: ; e01b5
+	ld hl, .PlayWithThreeCoinsText
 	call Functione0489
 	call YesNoBox
-	jr c, .asm_e01c7
+	jr c, .SaidNo
 	call Functione0366
-	call Functione01b0
+	call .Increment
 	ret
 
-.asm_e01c7
+.SaidNo
 	ld a, $7
 	ld [wcf63], a
 	ret
 ; e01cd
 
-UnknownText_0xe01cd: ; 0xe01cd
+.PlayWithThreeCoinsText: ; 0xe01cd
 	; Play with three coins?
 	text_jump UnknownText_0x1c5793
 	db "@"
 ; 0xe01d2
 
-Functione01d2: ; e01d2
+.DeductCoins: ; e01d2
 	ld a, [Coins]
 	ld h, a
 	ld a, [Coins + 1]
@@ -80229,17 +78369,17 @@
 	ld l, a
 	ld a, h
 	and a
-	jr nz, .asm_e01ef
+	jr nz, .deduct ; You have at least 256 coins.
 	ld a, l
 	cp 3
-	jr nc, .asm_e01ef
-	ld hl, UnknownText_0xe0212
+	jr nc, .deduct ; You have at least 3 coins.
+	ld hl, .NotEnoughCoinsText
 	call Functione0489
 	ld a, $7
 	ld [wcf63], a
 	ret
 
-.asm_e01ef
+.deduct
 	ld de, -3
 	add hl, de
 	ld a, h
@@ -80254,24 +78394,24 @@
 	ld a, $1
 	ld [hBGMapMode], a
 	call WaitSFX
-	call Functione01b0
+	call .Increment
 	ret
 ; e0212
 
-UnknownText_0xe0212: ; 0xe0212
+.NotEnoughCoinsText: ; 0xe0212
 	; Not enough coins…
 	text_jump UnknownText_0x1c57ab
 	db "@"
 ; 0xe0217
 
-Functione0217: ; e0217
+.ChooseACard: ; e0217
 	xor a
 	ld [hBGMapMode], a
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $0c09
 	call Functione04e5
 	hlcoord 9, 0
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	ld a, [wc6e8]
 	call AddNTimes
 	ld [hl], $f5
@@ -80288,15 +78428,15 @@
 	hlcoord 2, 6
 	call Functione03c1
 	call WaitBGMap
-	ld hl, UnknownText_0xe02b2
+	ld hl, .ChooseACardText
 	call Functione0489
 	xor a
 	ld [wcf66], a
-.asm_e025c
+.loop
 	call Functiona57
 	ld a, [$ffa9]
 	and $1
-	jr nz, .asm_e027c
+	jr nz, .next
 	ld de, SFX_KINESIS
 	call PlaySFX
 	call Functione0849
@@ -80306,13 +78446,13 @@
 	ld a, [hl]
 	xor $1
 	ld [hl], a
-	jr .asm_e025c
+	jr .loop
 
-.asm_e027c
+.next
 	ld de, SFX_SLOT_MACHINE_START
 	call PlaySFX
 	ld a, $3
-.asm_e0284
+.loop2
 	push af
 	call Functione0849
 	ld c, $4
@@ -80322,7 +78462,7 @@
 	call DelayFrames
 	pop af
 	dec a
-	jr nz, .asm_e0284
+	jr nz, .loop2
 	ld hl, wcf66
 	ld a, [hl]
 	push af
@@ -80333,41 +78473,41 @@
 	call Functione04e5
 	pop af
 	ld [wcf66], a
-	call Functione01b0
+	call .Increment
 	ret
 ; e02b2
 
-UnknownText_0xe02b2: ; 0xe02b2
+.ChooseACardText: ; 0xe02b2
 	; Choose a card.
 	text_jump UnknownText_0x1c57be
 	db "@"
 ; 0xe02b7
 
-Functione02b7: ; e02b7
-	ld hl, UnknownText_0xe02d5
+.PlaceYourBet: ; e02b7
+	ld hl, .PlaceYourBetText
 	call Functione0489
-.asm_e02bd
+.betloop
 	call Functiona57
 	ld a, [$ffa9]
 	and $1
-	jr nz, .asm_e02d1
+	jr nz, .betdone
 	call Functione089c
 	call Functione0960
 	call DelayFrame
-	jr .asm_e02bd
+	jr .betloop
 
-.asm_e02d1
-	call Functione01b0
+.betdone
+	call .Increment
 	ret
 ; e02d5
 
-UnknownText_0xe02d5: ; 0xe02d5
+.PlaceYourBetText: ; 0xe02d5
 	; Place your bet.
 	text_jump UnknownText_0x1c57ce
 	db "@"
 ; 0xe02da
 
-Functione02da: ; e02da
+.CheckTheCard: ; e02da
 	xor a
 	ld [$ff9b], a
 	call Functione0960
@@ -80379,8 +78519,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, wc6d0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [wcf66]
 	ld e, a
 	add hl, de
@@ -80393,62 +78534,62 @@
 	call Functione03ac
 	call Functione03ec
 	call Function3200
-	call Functione01b0
+	call .Increment
 	ret
 ; e0314
 
-Functione0314: ; e0314
+.TabulateTheResult: ; e0314
 	call Functione0637
 	call Functiona80
-	call Functione01b0
+	call .Increment
 	ret
 ; e031e
 
-Functione031e: ; e031e
+.PlayAgain: ; e031e
 	call ClearSprites
-	ld hl, UnknownText_0xe0356
+	ld hl, .PlayAgainText
 	call Functione0489
 	call YesNoBox
-	jr nc, .asm_e0330
-	call Functione01b0
+	jr nc, .Continue
+	call .Increment
 	ret
 
-.asm_e0330
+.Continue
 	ld a, [wc6e8]
 	inc a
 	ld [wc6e8], a
 	cp $c
-	jr c, .asm_e034d
+	jr c, .KeepTheCurrentDeck
 	call Functione04c1
 	ld a, $1
 	ld [hBGMapMode], a
 	call Functione0366
-	ld hl, UnknownText_0xe035b
+	ld hl, .CardsShuffledText
 	call PrintText
-	jr .asm_e0350
+	jr .LoopAround
 
-.asm_e034d
+.KeepTheCurrentDeck
 	call Functione0534
 
-.asm_e0350
+.LoopAround
 	ld a, $1
 	ld [wcf63], a
 	ret
 ; e0356
 
-UnknownText_0xe0356: ; 0xe0356
+.PlayAgainText: ; 0xe0356
 	; Want to play again?
 	text_jump UnknownText_0x1c57df
 	db "@"
 ; 0xe035b
 
-UnknownText_0xe035b: ; 0xe035b
+.CardsShuffledText: ; 0xe035b
 	; The cards have been shuffled.
 	text_jump UnknownText_0x1c57f4
 	db "@"
 ; 0xe0360
 
-Functione0360: ; e0360
+.Quit: ; e0360
 	ld hl, wcf63
 	set 7, [hl]
 	ret
@@ -80541,8 +78682,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_e0459
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -80550,10 +78692,10 @@
 	ld bc, $0017
 	add hl, bc
 	ld [hl], e
-	ld bc, $0012
+	ld bc, SCREEN_HEIGHT
 	add hl, bc
 	ld a, d
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	ld b, $3
 .asm_e0418
 	push hl
@@ -80633,7 +78775,7 @@
 Functione04c1: ; e04c1 (38:44c1)
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $29
 	call ByteFill
@@ -80759,10 +78901,11 @@
 	and a
 	jr nz, .asm_e0575
 	hlcoord 13, 3
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $36
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $37
 	ret
@@ -80769,10 +78912,11 @@
 
 .asm_e0575
 	hlcoord 13, 3
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $36
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3d
 	ret
@@ -80785,10 +78929,11 @@
 	and a
 	jr nz, .asm_e0599
 	hlcoord 13, 4
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $3b
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3a
 	ret
@@ -80795,10 +78940,11 @@
 
 .asm_e0599
 	hlcoord 13, 4
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $3d
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3a
 	ret
@@ -80811,10 +78957,11 @@
 	and a
 	jr nz, .asm_e05bd
 	hlcoord 13, 6
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $36
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $38
 	ret
@@ -80821,10 +78968,11 @@
 
 .asm_e05bd
 	hlcoord 13, 6
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $36
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3d
 	ret
@@ -80837,10 +78985,11 @@
 	and a
 	jr nz, .asm_e05e1
 	hlcoord 13, 7
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $3c
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3a
 	ret
@@ -80847,10 +78996,11 @@
 
 .asm_e05e1
 	hlcoord 13, 7
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $3d
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3a
 	ret
@@ -80863,10 +79013,11 @@
 	and a
 	jr nz, .asm_e0605
 	hlcoord 13, 9
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $36
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $39
 	ret
@@ -80873,10 +79024,11 @@
 
 .asm_e0605
 	hlcoord 13, 9
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $36
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3d
 	ret
@@ -80889,10 +79041,11 @@
 	and a
 	jr nz, .asm_e0629
 	hlcoord 13, 10
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $3c
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3a
 	ret
@@ -80899,10 +79052,11 @@
 
 .asm_e0629
 	hlcoord 13, 10
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], $3d
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hl], $3a
 	ret
@@ -81355,8 +79509,9 @@
 	ld [hl], a
 	cp $3
 	jr c, .asm_e08e2
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jp Functione0959
 
 .asm_e08e2
@@ -81384,8 +79539,9 @@
 	ld [hl], a
 	cp $4
 	ret nc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	jr Functione0959
 
 Functione090a: ; e090a
@@ -81414,8 +79570,9 @@
 	ld [hl], a
 	cp $3
 	jr c, .asm_e0931
+rept 2
 	dec [hl]
-	dec [hl]
+endr
 	jr Functione0959
 
 .asm_e0931
@@ -81443,8 +79600,9 @@
 	ld [hl], a
 	cp $6
 	ret nc
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 
 Functione0959: ; e0959
 	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
@@ -81463,8 +79621,9 @@
 
 .asm_e096d
 	call Functione0398
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Unknown_e0981
 	add hl, de
 	ld a, [hli]
@@ -81683,7 +79842,7 @@
 	ld a, [hCGB] ; $ff00+$e6
 	and a
 	ret z
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $168
 	xor a
 	call ByteFill
@@ -81820,8 +79979,8 @@
 	ld de, $8ed0
 	call Decompress
 	call Functione17a3
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $ee
 	call ByteFill
 	hlcoord 4, 3
@@ -81965,8 +80124,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_e12d9
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -82146,7 +80306,7 @@
 ; e13ee
 
 Functione13ee: ; e13ee
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 .asm_e13f1
 	push bc
 	push hl
@@ -82196,7 +80356,7 @@
 	push hl
 	call Functione1481
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	ld b, $3
 .asm_e1431
 	ld c, $3
@@ -82225,7 +80385,7 @@
 	call Functione1463
 	ld a, [hl]
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	ld b, $3
 .asm_e1456
 	ld c, $3
@@ -82248,12 +80408,12 @@
 	add hl, de
 	ld a, [wcf65]
 	ld e, a
+rept 4
 	add hl, de
+endr
+rept 2
 	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ret
 ; e1475
 
@@ -82554,10 +80714,9 @@
 	ld l, a
 	call Functione16e2
 	pop hl
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	pop af
 	dec a
 	jr nz, .asm_e16cc
@@ -82613,8 +80772,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Unknown_e17bd
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -82649,7 +80809,7 @@
 LZ_e1c9b: ; e1c9b
 INCBIN "gfx/unknown/0e1c9b.2bpp.lz"
 
-Functione1e5b: ; e1e5b (38:5e5b)
+_DummyGame: ; e1e5b (38:5e5b)
 	call Functione1e67
 	call DelayFrame
 .asm_e1e61
@@ -82674,7 +80834,7 @@
 	ld hl, wc300
 	ld [hli], a
 	ld [hl], $0
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	xor a
 	call ByteFill
@@ -82711,8 +80871,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_e1ee1
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -82752,10 +80913,9 @@
 	xor a
 	ld [wc708], a
 	ld hl, wc703
+rept 4
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld [wc709], a
 
@@ -82948,8 +81108,9 @@
 	ld [wc6fd], a
 	ld hl, wc709
 	ld e, [hl]
+rept 2
 	inc [hl]
-	inc [hl]
+endr
 	ld d, $0
 	hlcoord 5, 0
 	add hl, de
@@ -82982,9 +81143,9 @@
 	call Functione2128
 	ld hl, UnknownText_0xe2093
 	pop bc
+rept 3
 	inc bc
-	inc bc
-	inc bc
+endr
 	ret
 ; e2093
 
@@ -83070,9 +81231,9 @@
 	dec a
 	ld l, a
 	ld h, 0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld de, Unknown_e2110
 	add hl, de
 	ret
@@ -83093,7 +81254,7 @@
 	inc a
 	ld [hld], a
 	inc a
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hli], a
 	inc a
@@ -83107,7 +81268,7 @@
 	ld a, $1
 	ld [hli], a
 	ld [hld], a
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	ld [hli], a
 	ld [hl], a
@@ -83117,11 +81278,11 @@
 ; e2152
 
 Functione2152: ; e2152
-	ld hl, TileMap
-	ld bc, $0168
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $1
 	call ByteFill
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld de, String_e2177
 	call PlaceString
 	hlcoord 15, 0
@@ -83389,10 +81550,10 @@
 
 Functione247d: ; e247d (38:647d)
 	ld hl, BillsPCDepositMenuDataHeader
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wcfa9]
 	call Function1d4b
-	call Function1d81
+	call InterpretMenu2
 	jp c, BillsPCDepositFuncCancel
 	ld a, [wcfa9]
 	dec a
@@ -83400,8 +81561,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, BillsPCDepositJumptable
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -83433,7 +81595,7 @@
 BillsPCDepositFuncStats: ; e24c8 (38:64c8)
 	call Function1d6e
 	call Functione2f7e
-	call Function1c07
+	call ExitMenu
 	call PCMonInfo
 	call Functione2def
 	ld [CurPartySpecies], a
@@ -83455,7 +81617,7 @@
 	call PlaceYesNoBox
 	ld a, [wcfa9]
 	dec a
-	call Function1c07
+	call ExitMenu
 	and a
 	jr nz, .asm_e252c
 	ld a, [wcb2b]
@@ -83504,7 +81666,7 @@
 ; 0xe2564 (38:6564)
 
 Functione2564: ; e2564
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $4
 	ld c, $8
 	call ClearBox
@@ -83653,10 +81815,10 @@
 
 Functione2675: ; e2675 (38:6675)
 	ld hl, BillsPCWithdrawMenuDataHeader
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wcfa9]
 	call Function1d4b
-	call Function1d81
+	call InterpretMenu2
 	jp c, BillsPCWithdrawFuncCancel
 	ld a, [wcfa9]
 	dec a
@@ -83664,8 +81826,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, BillsPCWithdrawJumptable
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -83697,7 +81860,7 @@
 BillsPCWithdrawFuncStats: ; e26c0 (38:66c0)
 	call Function1d6e
 	call Functione2f7e
-	call Function1c07
+	call ExitMenu
 	call PCMonInfo
 	call Functione2def
 	ld [CurPartySpecies], a
@@ -83717,7 +81880,7 @@
 	call PlaceYesNoBox
 	ld a, [wcfa9]
 	dec a
-	call Function1c07
+	call ExitMenu
 	and a
 	jr nz, .asm_e2720
 	ld a, [wcb2b]
@@ -83914,10 +82077,10 @@
 
 Functione285d: ; e285d
 	ld hl, MenuDataHeader_0xe28c3
-	call Function1d3c
+	call CopyMenuDataHeader
 	ld a, [wcfa9]
 	call Function1d4b
-	call Function1d81
+	call InterpretMenu2
 	jp c, Functione28bd
 	ld a, [wcfa9]
 	dec a
@@ -83925,8 +82088,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_e2881
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -83956,7 +82120,7 @@
 Functione28a5: ; e28a5
 	call Function1d6e
 	call Functione2f7e
-	call Function1c07
+	call ExitMenu
 	call PCMonInfo
 	call Functione2def
 	ld [CurPartySpecies], a
@@ -84413,9 +82577,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, wc801
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hl]
 	and a
 	jr z, .asm_e2bc6
@@ -84522,9 +82686,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, OverworldMap
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld e, l
 	ld d, h
 	hlcoord 9, 4
@@ -84538,9 +82702,9 @@
 	ld de, $28
 	add hl, de
 	pop de
+rept 3
 	inc de
-	inc de
-	inc de
+endr
 	pop af
 	dec a
 	jr nz, .asm_e2c53
@@ -84779,9 +82943,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, OverworldMap
+rept 3
 	add hl, de
-	add hl, de
-	add hl, de
+endr
 	ld a, [hl]
 	ret
 
@@ -84894,7 +83058,7 @@
 	dec c
 	jr nz, .asm_e2ed7
 	pop hl
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
@@ -85120,7 +83284,7 @@
 	callba Functione039
 	ld a, [CurPartySpecies]
 	call PlayCry
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $f08
 	call ClearBox
 	hlcoord 8, 14
@@ -85174,7 +83338,7 @@
 	callba Functione039
 	ld a, [CurPartySpecies]
 	call PlayCry
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $f08
 	call ClearBox
 	hlcoord 8, 14
@@ -85209,7 +83373,7 @@
 	ret
 
 Functione3180: ; e3180 (38:7180)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $f08
 	call ClearBox
 	hlcoord 8, 14
@@ -85288,8 +83452,9 @@
 
 .asm_e321d
 	ld hl, Jumptable_e3245
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -85491,9 +83656,9 @@
 	ld c, b
 	ld b, 0
 	ld hl, Unknown_e33a6
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld b, a
 	ld a, [hli]
@@ -85532,8 +83697,9 @@
 Functione33df: ; e33df (38:73df)
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -85591,7 +83757,7 @@
 	call Functione36cf
 	call Functione379c
 	ld hl, MenuDataHeader_0xe35f1
-	call Function1d3c
+	call CopyMenuDataHeader
 	xor a
 	ld [wd0e4], a
 	hlcoord 0, 4
@@ -85605,13 +83771,13 @@
 	call Functione36f9
 	jr .asm_e35b0
 .asm_e35de
-	call Function1c17
+	call WriteBackup
 	ret
 
 Functione35e2: ; e35e2 (38:75e2)
 	xor a
 	ld [hBGMapMode], a ; $ff00+$d4
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 	ld a, $7f
 	call ByteFill
@@ -85703,9 +83869,9 @@
 	ld c, a
 	ld b, 0
 	ld hl, Unknown_e36a5
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld b, a
 	call GetSRAMBank
@@ -85752,7 +83918,7 @@
 ; e36cf
 
 Functione36cf: ; e36cf (38:76cf)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $2
 	ld c, $12
 	call TextBox
@@ -85774,8 +83940,8 @@
 Functione36f9: ; e36f9 (38:76f9)
 	ld hl, MenuDataHeader_0xe377b
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	ret c
 	ld a, [wcfa9]
 	cp $1
@@ -85916,7 +84082,7 @@
 	push af
 	ld [hl], $1
 	call WhiteBGMap
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, $10
 	ld c, $12
 	call TextBox
@@ -85926,7 +84092,7 @@
 	xor a
 	ld [wcf63], a
 	ld c, $6 ;number of items on the menu minus 1 (for cancel)
-.asm_e41f3 ;this loop will display the settings of each option when the menu is opened
+.asm_e41f3 ;this next will display the settings of each option when the menu is opened
 	push bc
 	xor a
 	ld [$ffa9], a
@@ -85994,8 +84160,9 @@
 	ld e, a ;copy it to de
 	ld d, 0
 	ld hl, .Pointers
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -86051,8 +84218,9 @@
 .NonePressed
 	ld b, 0
 	ld hl, .Strings
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -86270,8 +84438,9 @@
 .NonePressed
 	ld b, $0
 	ld hl, .Strings
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -86475,7 +84644,7 @@
 
 Functione455c: ; e455c
 	hlcoord 1, 1
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	ld c, $10
 .asm_e4564
 	ld [hl], $7f
@@ -86607,8 +84776,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_e467f
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -86705,8 +84875,9 @@
 	ld e, [hl]
 	ld d, 0
 	ld hl, Jumptable_e46fd
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -86802,8 +84973,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, Unknown_e47ac
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [rSVBK] ; $ff00+$70
 	push af
 	ld a, $5
@@ -86848,7 +85020,7 @@
 	RGB 26, 19, 02
 	RGB 26, 19, 00
 ;' e47cc
- 
+
 GameFreakLogo: ; e47cc
 INCBIN "gfx/splash/logo.1bpp"
 ; e48ac
@@ -86917,8 +85089,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, IntroScenes
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -87287,7 +85460,7 @@
 	xor a
 	ld [hLCDStatCustom], a ; $ff00+$c6
 	call ClearSprites
-	ld hl, AttrMap
+	hlcoord 0, 0, AttrMap
 	ld bc, $f0
 	ld a, $1
 	call ByteFill
@@ -87445,8 +85618,9 @@
 	ret z
 	cp c
 	jr z, .asm_e4d48
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_e4d3d
 .asm_e4d48
 	ld a, [hli]
@@ -88115,15 +86289,16 @@
 	ret
 
 Functione5223: ; e5223 (39:5223)
+rept 3
 	add a
-	add a
-	add a
+endr
 	ld e, a
 	ld d, $0
 	ld hl, BGPals
 	add hl, de
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [wcf65]
 	and $3f
 	cp $1f
@@ -88149,8 +86324,9 @@
 	pop hl
 	push hl
 	ld hl, Unknown_e5288
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -88161,8 +86337,9 @@
 	ld [hli], a
 	push hl
 	ld hl, Unknown_e52c8
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -88173,8 +86350,9 @@
 	ld [hli], a
 	push hl
 	ld hl, Unknown_e5308
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -88227,9 +86405,9 @@
 .asm_e5353
 	ld a, [wcf65]
 	and $7
+rept 3
 	add a
-	add a
-	add a
+endr
 	ld c, a
 	ld a, [rSVBK] ; $ff00+$70
 	push af
@@ -88277,17 +86455,16 @@
 ; e539d
 
 Functione539d: ; e539d (39:539d)
+rept 3
 	add a
-	add a
-	add a
+endr
 	ld e, a
 	ld d, $0
 	ld hl, BGPals
 	add hl, de
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, [wcf65]
 	add a
 	ld c, a
@@ -88349,7 +86526,7 @@
 	ld a, $6
 	ld [rSVBK], a ; $ff00+$70
 	ld hl, Unkn1Pals
-	ld de, TileMap
+	decoord 0, 0
 	ld b, $12
 .asm_e542a
 	ld c, $14
@@ -88384,7 +86561,7 @@
 	ret
 
 Functione5451: ; e5451 (39:5451)
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $168
 .asm_e5457
 	ld a, [hl]
@@ -88535,8 +86712,9 @@
 .asm_e5548
 	ld hl, LYOverrides + $5f
 	ld a, [hl]
+rept 2
 	inc a
-	inc a
+endr
 	ld bc, $31
 	call ByteFill
 	ld a, [LYOverrides + 0]
@@ -89276,8 +87454,9 @@
 	ld [CurSpecies], a
 	call GetBaseData
 	ld hl, wcbea
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [BaseType1]
 	cp [hl]
 	jr nz, .asm_fb5db
@@ -89368,7 +87547,7 @@
 	pop de
 	inc de
 	pop hl
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	inc c
@@ -89575,7 +87754,7 @@
 	call LowVolume
 	call WhiteBGMap
 	call ClearTileMap
-	call Function1ad2
+	call DrawOnMap
 	call ClearSprites
 	ld a, [wPokedexStatus]
 	push af
@@ -89593,7 +87772,7 @@
 	pop af
 	ld [wPokedexStatus], a
 	call MaxVolume
-	call Function4b6
+	call FadeToWhite
 	ld a, [hSCX]
 	add $fb
 	ld [hSCX], a
@@ -89620,18 +87799,19 @@
 	ret
 ; fb8f1
 
-Functionfb8f1: ; fb8f1
+ConvertMon_2to1: ; fb8f1
+; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265.
 	push bc
 	push hl
 	ld a, [wd265]
 	ld b, a
 	ld c, 0
-	ld hl, Unknown_fb91c
-.asm_fb8fc
+	ld hl, Pokered_MonIndices
+.loop
 	inc c
 	ld a, [hli]
 	cp b
-	jr nz, .asm_fb8fc
+	jr nz, .loop
 	ld a, c
 	ld [wd265], a
 	pop hl
@@ -89639,12 +87819,13 @@
 	ret
 ; fb908
 
-Functionfb908: ; fb908
+ConvertMon_1to2: ; fb908
+; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265.
 	push bc
 	push hl
 	ld a, [wd265]
 	dec a
-	ld hl, Unknown_fb91c
+	ld hl, Pokered_MonIndices
 	ld b, 0
 	ld c, a
 	add hl, bc
@@ -89655,7 +87836,7 @@
 	ret
 ; fb91c
 
-Unknown_fb91c: ; fb91c
+Pokered_MonIndices: ; fb91c
 	db RHYDON
 	db KANGASKHAN
 	db NIDORAN_M
@@ -89947,8 +88128,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, UnownWords
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -89992,51 +88174,61 @@
 	dw UnownWord26
 ; fba90
 
-UnownWord1:	db $40, $4d, $46, $51, $58, $ff                ; ANGRY
-UnownWord2:	db $41, $44, $40, $51, $ff                     ; BEAR
-UnownWord3:	db $42, $47, $40, $52, $44, $ff                ; CHASE
-UnownWord4:	db $43, $48, $51, $44, $42, $53, $ff           ; DIRECT
-UnownWord5:	db $44, $4d, $46, $40, $46, $44, $ff           ; ENGAGE
-UnownWord6:	db $45, $48, $4d, $43, $ff                     ; FIND
-UnownWord7:	db $46, $48, $55, $44, $ff                     ; GIVE
-UnownWord8:	db $47, $44, $4b, $4f, $ff                     ; HELP
-UnownWord9:	db $48, $4d, $42, $51, $44, $40, $52, $44, $ff ; INCREASE
-UnownWord10:	db $49, $4e, $48, $4d, $ff                     ; JOIN
-UnownWord11:	db $4a, $44, $44, $4f, $ff                     ; KEEP
-UnownWord12:	db $4b, $40, $54, $46, $47, $ff                ; LAUGH
-UnownWord13:	db $4c, $40, $4a, $44, $ff                     ; MAKE
-UnownWord14:	db $4d, $54, $59, $59, $4b, $44, $ff           ; NUZZLE
-UnownWord15:	db $4e, $41, $52, $44, $51, $55, $44, $ff      ; OBSERVE
-UnownWord16:	db $4f, $44, $51, $45, $4e, $51, $4c, $ff      ; PERFORM
-UnownWord17:	db $50, $54, $48, $42, $4a, $44, $4d, $ff      ; QUICKEN
-UnownWord18:	db $51, $44, $40, $52, $52, $54, $51, $44, $ff ; REASSURE
-UnownWord19:	db $52, $44, $40, $51, $42, $47, $ff           ; SEARCH
-UnownWord20:	db $53, $44, $4b, $4b, $ff                     ; TELL
-UnownWord21:	db $54, $4d, $43, $4e, $ff                     ; UNDO
-UnownWord22:	db $55, $40, $4d, $48, $52, $47, $ff           ; VANISH
-UnownWord23:	db $56, $40, $4d, $53, $ff                     ; WANT
-UnownWord24:	db $57, $57, $57, $57, $57, $ff                ; XXXXX
-UnownWord25:	db $58, $48, $44, $4b, $43, $ff                ; YIELD
-UnownWord26:	db $59, $4e, $4e, $4c, $ff                     ; ZOOM
+unownword: macro
+x = 1
+	rept STRLEN(\1)
+	db STRSUB(\1, x, 1) - $40
+x = x + 1
+	endr
+	db -1
+endm
+
+
+UnownWord1:	 unownword "ANGRY"
+UnownWord2:	 unownword "BEAR"
+UnownWord3:	 unownword "CHASE"
+UnownWord4:	 unownword "DIRECT"
+UnownWord5:	 unownword "ENGAGE"
+UnownWord6:	 unownword "FIND"
+UnownWord7:	 unownword "GIVE"
+UnownWord8:	 unownword "HELP"
+UnownWord9:	 unownword "INCREASE"
+UnownWord10: unownword "JOIN"
+UnownWord11: unownword "KEEP"
+UnownWord12: unownword "LAUGH"
+UnownWord13: unownword "MAKE"
+UnownWord14: unownword "NUZZLE"
+UnownWord15: unownword "OBSERVE"
+UnownWord16: unownword "PERFORM"
+UnownWord17: unownword "QUICKEN"
+UnownWord18: unownword "REASSURE"
+UnownWord19: unownword "SEARCH"
+UnownWord20: unownword "TELL"
+UnownWord21: unownword "UNDO"
+UnownWord22: unownword "VANISH"
+UnownWord23: unownword "WANT"
+UnownWord24: unownword "XXXXX"
+UnownWord25: unownword "YIELD"
+UnownWord26: unownword "ZOOM"
 ; fbb32
 
-Functionfbb32: ; fbb32
-	callba Function50000
-	jr c, .asm_fbb9e
+Special_CheckMagikarpLength: ; fbb32
+	callba SelectMonFromParty
+	jr c, .declined
 	ld a, [CurPartySpecies]
 	cp MAGIKARP
-	jr nz, .asm_fbba4
+	jr nz, .not_magikarp
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Species
 	ld bc, PartyMon2 - PartyMon1
 	call AddNTimes
 	push hl
-	ld bc, $0015
+	ld bc, MON_DVS
 	add hl, bc
 	ld d, h
 	ld e, l
 	pop hl
-	ld bc, $0006
+	ld bc, MON_ID
 	add hl, bc
 	ld b, h
 	ld c, l
@@ -90049,7 +88241,7 @@
 	ld de, wdfe8
 	ld c, $2
 	call StringCmp
-	jr nc, .asm_fbb98
+	jr nc, .not_long_enough
 	ld hl, Buffer1
 	ld de, wdfe8
 	ld a, [hli]
@@ -90066,17 +88258,17 @@
 	ld [ScriptVar], a
 	ret
 
-.asm_fbb98
+.not_long_enough
 	ld a, $2
 	ld [ScriptVar], a
 	ret
 
-.asm_fbb9e
+.declined
 	ld a, $1
 	ld [ScriptVar], a
 	ret
 
-.asm_fbba4
+.not_magikarp
 	xor a
 	ld [ScriptVar], a
 	ret
@@ -90119,7 +88311,7 @@
 
 INCLUDE "battle/magikarp_length.asm"
 
-Functionfbcd2: ; fbcd2
+Special_MagikarpHouseSign: ; fbcd2
 	ld a, [wdfe8]
 	ld [Buffer1], a
 	ld a, [wdfe9]
@@ -90212,8 +88404,9 @@
 	jr z, .ApplyModifier
 
 .NextWeatherType
+rept 2
 	inc de
-	inc de
+endr
 	jr .CheckWeatherType
 
 
@@ -90238,8 +88431,9 @@
 	jr z, .ApplyModifier
 
 .NextWeatherMove
+rept 2
 	inc de
-	inc de
+endr
 	jr .CheckWeatherMove
 
 .ApplyModifier
@@ -90710,8 +88904,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, NPCTrades
+rept 2
 	add hl, de
-	add hl, de
+endr
 	pop de
 	add hl, de
 	ret
@@ -90799,10 +88994,10 @@
 	call Functionfcdf4
 
 	ld hl, StringBuffer1
-.next
+.loop
 	ld a, [hli]
 	cp "@"
-	jr nz, .next
+	jr nz, .loop
 
 	dec hl
 	push hl
@@ -90844,8 +89039,9 @@
 	call AddNTimes
 	ld a, [wcf64]
 	ld c, a
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -91025,12 +89221,12 @@
 	ld a, [wd45c]
 	and a
 	ret nz
-	call Function2d05
+	call GetMapHeaderPhoneServiceNybble
 	and a
 	ret nz
 	xor a
 	ld [wdc18], a
-	call Functionfd044
+	call CheckBalance_MomItem2
 	ret nc
 	call Functionfd0c3
 	ret nc
@@ -91047,23 +89243,23 @@
 ; 0xfd017
 
 Functionfd017: ; fd017
-	call Functionfd0a6
+	call MomBuysItem_DeductFunds
 	call Functionfd0eb
 	ld a, [wdc18]
 	and a
-	jr nz, .asm_fd027
+	jr nz, .ok
 	ld hl, wdc17
 	inc [hl]
-.asm_fd027
-	ld a, $1
+.ok
+	ld a, 1
 	ld [wdbf9], a
 	ld bc, wd03f
-	ld hl, $0
+	ld hl, 0
 	add hl, bc
-	ld [hl], $0
+	ld [hl], 0
 	inc hl
-	ld [hl], $1
-	ld hl, $9
+	ld [hl], 1
+	ld hl, 9
 	add hl, bc
 	ld a, $3f
 	ld [hli], a
@@ -91074,50 +89270,50 @@
 	ret
 ; fd044
 
-Functionfd044: ; fd044
+CheckBalance_MomItem2: ; fd044
 	ld a, [wdc17]
-	cp $a
-	jr nc, .asm_fd065
-	call Functionfd117
+	cp 10
+	jr nc, .nope
+	call GetItemFromMom
 	ld a, [hli]
-	ld [$ffc3], a
+	ld [hMoneyTemp], a
 	ld a, [hli]
 	ld [$ffc4], a
 	ld a, [hli]
 	ld [$ffc5], a
 	ld de, wd851
-	ld bc, $ffc3
-	callba Function1600b
-	jr nc, .asm_fd067
+	ld bc, hMoneyTemp
+	callba CheckMoney
+	jr nc, .have_enough_money
 
-.asm_fd065
-	jr .asm_fd069
+.nope
+	jr .check_have_2300
 
-.asm_fd067
+.have_enough_money
 	scf
 	ret
 
-.asm_fd069
-	ld hl, $ffc3
-	ld [hl], $0
+.check_have_2300
+	ld hl, hMoneyTemp
+	ld [hl], (2300 / $10000) ; $00
 	inc hl
-	ld [hl], $8
+	ld [hl], ((2300 % $10000) / $100) ; $08
 	inc hl
-	ld [hl], $fc
-.asm_fd074
+	ld [hl], (2300 % $100) ; $fc
+.loop
 	ld de, wdc19
 	ld bc, wd851
-	callba Function1600b
-	jr z, .asm_fd08b
-	jr nc, .asm_fd089
+	callba CheckMoney
+	jr z, .exact
+	jr nc, .less_than
 	call Functionfd099
-	jr .asm_fd074
+	jr .loop
 
-.asm_fd089
+.less_than
 	xor a
 	ret
 
-.asm_fd08b
+.exact
 	call Functionfd099
 	ld a, 5
 	call RandomRange
@@ -91129,43 +89325,43 @@
 
 Functionfd099: ; fd099
 	ld de, wdc19
-	ld bc, $ffc3
+	ld bc, hMoneyTemp
 	callba Function16053
 	ret
 ; fd0a6
 
 
-Functionfd0a6: ; fd0a6 (3f:50a6)
-	call Functionfd117
-	ld de, $3
+MomBuysItem_DeductFunds: ; fd0a6 (3f:50a6)
+	call GetItemFromMom
+	ld de, 3
 	add hl, de
 	ld a, [hli]
-	ld [$ffc3], a
+	ld [hMoneyTemp], a
 	ld a, [hli]
 	ld [$ffc4], a
 	ld a, [hli]
 	ld [$ffc5], a
 	ld de, wd851
-	ld bc, $ffc3
-	callba Function15ffa
+	ld bc, hMoneyTemp
+	callba TakeMoney
 	ret
 
 
 Functionfd0c3: ; fd0c3
-	call Functionfd117
-	ld de, $0006
+	call GetItemFromMom
+	ld de, 6
 	add hl, de
 	ld a, [hli]
-	cp $1
-	jr z, .asm_fd0db
+	cp 1
+	jr z, .not_doll
 	ld a, [hl]
 	ld c, a
-	ld b, $1
-	callba Function26ef1
+	ld b, 1
+	callba DecorationFlagAction_c
 	scf
 	ret
 
-.asm_fd0db
+.not_doll
 	ld a, [hl]
 	ld [CurItem], a
 	ld a, $1
@@ -91177,115 +89373,123 @@
 
 
 Functionfd0eb: ; fd0eb (3f:50eb)
-	call Functionfd117
-	ld de, $6
+	call GetItemFromMom
+	ld de, 6 ; field
 	add hl, de
 	ld a, [hli]
-	ld de, UnknownScript_0xfd0fd
-	cp $1
+	ld de, Script_MomBoughtItem
+	cp 1
 	ret z
-	ld de, UnknownScript_0xfd10a
+	ld de, Script_MomBoughtDoll
 	ret
 ; fd0fd (3f:50fd)
 
-UnknownScript_0xfd0fd: ; 0xfd0fd
-	writetext UnknownText_0xfd1b1
-	writetext UnknownText_0xfd1b6
-	writetext UnknownText_0xfd1bb
-	writetext UnknownText_0xfd1c0
+Script_MomBoughtItem: ; 0xfd0fd
+	writetext _MomText_HiHowAreYou
+	writetext _MomText_FoundAnItem
+	writetext _MomText_BoughtWithYourMoney
+	writetext _MomText_ItsInPC
 	end
 ; 0xfd10a
 
-UnknownScript_0xfd10a: ; 0xfd10a
-	writetext UnknownText_0xfd1b1
-	writetext UnknownText_0xfd1c5
-	writetext UnknownText_0xfd1bb
-	writetext UnknownText_0xfd1ca
+Script_MomBoughtDoll: ; 0xfd10a
+	writetext _MomText_HiHowAreYou
+	writetext _MomText_FoundADoll
+	writetext _MomText_BoughtWithYourMoney
+	writetext _MomText_ItsInRoom
 	end
 ; 0xfd117
 
 
-Functionfd117: ; fd117
+GetItemFromMom: ; fd117
 	ld a, [wdc18]
 	and a
-	jr z, .asm_fd123
+	jr z, .zero
 	dec a
-	ld de, Unknown_fd136
-	jr .asm_fd12e
+	ld de, MomItems_1
+	jr .incave
 
-.asm_fd123
+.zero
 	ld a, [wdc17]
-	cp $a
-	jr c, .asm_fd12b
+	cp 10 ; length of MomItems_2
+	jr c, .ok
 	xor a
 
-.asm_fd12b
-	ld de, Unknown_fd15e
+.ok
+	ld de, MomItems_2
 
-.asm_fd12e
+.incave
 	ld l, a
 	ld h, 0
+rept 3 ; multiply hl by 8
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	add hl, de
 	ret
 ; fd136
 
-Unknown_fd136: ; fd136
-	db $00, $00, $00, $00, $02, $58, $01, SUPER_POTION
-	db $00, $00, $00, $00, $00, $5a, $01, ANTIDOTE
-	db $00, $00, $00, $00, $00, $b4, $01, POKE_BALL
-	db $00, $00, $00, $00, $01, $c2, $01, ESCAPE_ROPE
-	db $00, $00, $00, $00, $01, $f4, $01, GREAT_BALL
+momitem: macro
+; money to trigger, cost, kind, item
+	dt \1
+	dt \2
+	db \3, \4
+ENDM
+
+
+MomItems_1: ; fd136
+	momitem      0,   600, MOM_ITEM, SUPER_POTION
+	momitem      0,    90, MOM_ITEM, ANTIDOTE
+	momitem      0,   180, MOM_ITEM, POKE_BALL
+	momitem      0,   450, MOM_ITEM, ESCAPE_ROPE
+	momitem      0,   500, MOM_ITEM, GREAT_BALL
 ; fd15e
 
-Unknown_fd15e: ; fd15e
-	db $00, $03, $84, $00, $02, $58, $01, SUPER_POTION
-	db $00, $0f, $a0, $00, $01, $0e, $01, REPEL
-	db $00, $1b, $58, $00, $02, $58, $01, SUPER_POTION
-	db $00, $27, $10, $00, $07, $08, $02, $23 ; CHARMANDER_DOLL
-	db $00, $3a, $98, $00, $0b, $b8, $01, MOON_STONE
-	db $00, $4a, $38, $00, $02, $58, $01, SUPER_POTION
-	db $00, $75, $30, $00, $12, $c0, $02, $20 ; CLEFAIRY_DOLL
-	db $00, $9c, $40, $00, $03, $84, $01, HYPER_POTION
-	db $00, $c3, $50, $00, $1f, $40, $02, $1e ; PIKACHU_DOLL
-	db $01, $86, $a0, $00, $59, $10, $02, $1a ; SNORLAX_DOLL
+MomItems_2: ; fd15e
+	momitem    900,   600, MOM_ITEM, SUPER_POTION
+	momitem   4000,   270, MOM_ITEM, REPEL
+	momitem   7000,   600, MOM_ITEM, SUPER_POTION
+	momitem  10000,  1800, MOM_DOLL, DECO_CHARMANDER_DOLL
+	momitem  15000,  3000, MOM_ITEM, MOON_STONE
+	momitem  19000,   600, MOM_ITEM, SUPER_POTION
+	momitem  30000,  4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
+	momitem  40000,   900, MOM_ITEM, HYPER_POTION
+	momitem  50000,  8000, MOM_DOLL, DECO_PIKACHU_DOLL
+	momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
 ; fd1ae
 
 	db 0, 0, 0 ; XXX
 
-UnknownText_0xfd1b1: ; 0xfd1b1
+_MomText_HiHowAreYou: ; 0xfd1b1
 	; Hi,  ! How are you?
 	text_jump UnknownText_0x1bc615
 	db "@"
 ; 0xfd1b6
 
-UnknownText_0xfd1b6: ; 0xfd1b6
+_MomText_FoundAnItem: ; 0xfd1b6
 	; I found a useful item shopping, so
 	text_jump UnknownText_0x1bc62a
 	db "@"
 ; 0xfd1bb
 
-UnknownText_0xfd1bb: ; 0xfd1bb
+_MomText_BoughtWithYourMoney: ; 0xfd1bb
 	; I bought it with your money. Sorry!
 	text_jump UnknownText_0x1bc64e
 	db "@"
 ; 0xfd1c0
 
-UnknownText_0xfd1c0: ; 0xfd1c0
+_MomText_ItsInPC: ; 0xfd1c0
 	; It's in your PC. You'll like it!
 	text_jump UnknownText_0x1bc673
 	db "@"
 ; 0xfd1c5
 
-UnknownText_0xfd1c5: ; 0xfd1c5
+_MomText_FoundADoll: ; 0xfd1c5
 	; While shopping today, I saw this adorable doll, so
 	text_jump UnknownText_0x1bc693
 	db "@"
 ; 0xfd1ca
 
-UnknownText_0xfd1ca: ; 0xfd1ca
+_MomText_ItsInRoom: ; 0xfd1ca
 	; It's in your room. You'll love it!
 	text_jump UnknownText_0x1bc6c7
 	db "@"
@@ -91311,10 +89515,10 @@
 ; 104006
 
 Function104006: ; 104006
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	ld hl, w6_d000 + $400
 	call Function104263
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, w6_d000
 	call Function10425f
 	ld a, $0
@@ -91334,7 +89538,7 @@
 ; 104033
 
 Function104033: ; 104033
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, w6_d000
 	call Function10425f
 	ld a, $0
@@ -91350,7 +89554,7 @@
 ; 10404d
 
 Function10404d: ; 10404d
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	ld hl, $d400
 	call Function104263
 	ld a, $1
@@ -91366,10 +89570,10 @@
 ; 104067
 
 Function104067: ; 104067
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	ld hl, $d400
 	call Function104263
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, w6_d000
 	call Function10425f
 	call DelayFrame
@@ -91396,10 +89600,10 @@
 ; 1040a2
 
 Function1040a2: ; 1040a2
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	ld hl, $d400
 	call Function104263
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, w6_d000
 	call Function10425f
 	call DelayFrame
@@ -91466,10 +89670,10 @@
 ; 104116
 
 Function104116: ; 104116
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	ld hl, $d400
 	call Function104263
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, w6_d000
 	call Function10425f
 	call DelayFrame
@@ -91496,11 +89700,11 @@
 ; 10414e (41:414e)
 
 Function10414e: ; 10414e
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	ld hl, $d400
 	call Function104263
 	ld c, $ff
-	ld de, TileMap
+	decoord 0, 0
 	ld hl, w6_d000
 	call Function104265
 	ld a, $1
@@ -91736,10 +89940,9 @@
 	ld a, b
 	ld l, c
 	ld h, $0
+rept 4
 	add hl, hl
-	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld b, h
 	ld c, l
 	ld h, d
@@ -91796,9 +89999,9 @@
 	ld a, b
 	ld l, c
 	ld h, $0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld c, l
 	ld b, h
 	ld h, d
@@ -91826,10 +90029,10 @@
 
 Function104309:
 	ld hl, w6_d000
-	ld de, TileMap
+	decoord 0, 0
 	call Function10433a
 	ld hl, w6_d000 + $80
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	call Function10433a
 	ld a, $1
 	ld [rVBK], a ; $ff00+$4f
@@ -91877,20 +90080,20 @@
 FishingRodGFX: INCBIN "gfx/misc/fishing.2bpp"
 
 
-Function1045b0: ; 1045b0
-	call Function210f
-	call Function2e50
-	call Function2e5d
+RunCallback_05_03: ; 1045b0
+	call Clearwc7e8
+	call ResetMapBufferEventFlags
+	call ResetFlashIfOutOfCave
 	call GetCurrentMapTrigger
-	call Function2e56
+	call ResetBikeFlags
 	ld a, $5
-	call Function263b
+	call RunMapCallback
 
-Function1045c4: ; 1045c4
+RunCallback_03: ; 1045c4
 	callba Function97df9
 	ld a, $3
-	call Function263b
-	call Function2cff
+	call RunMapCallback
+	call GetMapHeaderTimeOfDayNybble
 	ld [wc2d0], a
 	ret
 
@@ -92042,7 +90245,7 @@
 	ret
 ; 1046c6
 
-Function1046c6: ; 1046c6
+LoadWarpData: ; 1046c6
 	call Function1046df
 	call Function104718
 	ld a, [wd146]
@@ -92110,7 +90313,7 @@
 	ld [wdcb3], a
 	ret
 
-Function104750: ; 104750
+LoadMapTimeOfDay: ; 104750
 	ld hl, VramState
 	res 6, [hl]
 	ld a, $1
@@ -92147,12 +90350,12 @@
 	ret
 
 Function1047a3: ; 1047a3 (41:47a3)
-	ld de, TileMap
+	decoord 0, 0
 	call Function1047b4
 	ld a, [hCGB] ; $ff00+$e6
 	and a
 	ret z
-	ld de, AttrMap
+	decoord 0, 0, AttrMap
 	ld a, $1
 	ld [rVBK], a ; $ff00+$4f
 
@@ -92177,7 +90380,7 @@
 	ld [rVBK], a ; $ff00+$4f
 	ret
 
-Function1047cf: ; 1047cf
+LoadGraphics: ; 1047cf
 	call LoadTilesetHeader
 	call Function2821
 	xor a
@@ -92189,14 +90392,14 @@
 	callba Function106594
 	ret
 
-Function1047eb: ; 1047eb
+LoadMapPalettes: ; 1047eb
 	ld b, $9
 	jp GetSGBLayout
 ; 1047f0
 
-Function1047f0: ; 1047f0
+RefreshMapSprites: ; 1047f0
 	call ClearSprites
-	callba Functionb8000
+	callba ReturnFromMapSetupScript
 	call Function2914
 	callba Function579d
 	callba Function154f7
@@ -92212,60 +90415,60 @@
 	ld [wd45b], a
 	ret
 
-Function104820:: ; 104820 (41:4820)
+CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
 	ld a, [wd151]
-	cp $ff
+	cp STANDING
 	ret z
 	and a
-	jr z, .asm_104837
-	cp $1
-	jr z, .asm_104846
-	cp $2
-	jr z, .asm_104851
-	cp $3
-	jr z, .asm_10485c
+	jr z, .down
+	cp UP
+	jr z, .up
+	cp LEFT
+	jr z, .left
+	cp RIGHT
+	jr z, .right
 	and a
 	ret
-.asm_104837
+.down
 	ld a, [MapY]
-	sub $4
+	sub 4
 	ld b, a
 	ld a, [MapHeight]
 	add a
 	cp b
-	jr z, .asm_10486b
+	jr z, .ok
 	and a
 	ret
-.asm_104846
+.up
 	ld a, [MapY]
-	sub $4
-	cp $ff
-	jr z, .asm_10486b
+	sub 4
+	cp -1
+	jr z, .ok
 	and a
 	ret
-.asm_104851
+.left
 	ld a, [MapX]
 	sub $4
-	cp $ff
-	jr z, .asm_10486b
+	cp -1
+	jr z, .ok
 	and a
 	ret
-.asm_10485c
+.right
 	ld a, [MapX]
-	sub $4
+	sub 4
 	ld b, a
 	ld a, [MapWidth]
 	add a
 	cp b
-	jr z, .asm_10486b
+	jr z, .ok
 	and a
 	ret
-.asm_10486b
+.ok
 	scf
 	ret
 
 
-Function10486d:: ; 10486d
+GetCoordOfUpperLeftCorner:: ; 10486d
 	ld hl, OverworldMap
 	ld a, [XCoord]
 	bit 0, a
@@ -92313,7 +90516,7 @@
 ; 1048ba
 
 
-Function1048ba: ; 1048ba (41:48ba)
+DoMysteryGift: ; 1048ba (41:48ba)
 	call ClearTileMap
 	call ClearSprites
 	call WaitBGMap
@@ -92389,7 +90592,7 @@
 	call Function105069
 	pop bc
 	jr nz, .asm_104990
-	callab Function26ef5
+	callab GetDecorationName_c
 	ld h, d
 	ld l, e
 	ld de, StringBuffer1
@@ -92417,7 +90620,7 @@
 Function1049b4: ; 1049b4 (41:49b4)
 	ld hl, UnknownText_0x104a02
 	call PrintText
-	jp Function1048ba
+	jp DoMysteryGift
 
 Function1049bd: ; 1049bd (41:49bd)
 	ld hl, UnknownText_0x104a07
@@ -92523,8 +90726,9 @@
 	ld hl, $abe6
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [wc901]
 	ld [hli], a
 	ld a, [wc902]
@@ -93372,8 +91576,9 @@
 Function105038: ; 105038 (41:5038)
 	ld a, $20
 	ld [rJOYP], a ; $ff00+$0
+rept 2
 	ld a, [rJOYP] ; $ff00+$0
-	ld a, [rJOYP] ; $ff00+$0
+endr
 	cpl
 	and $f
 	swap a
@@ -93380,22 +91585,19 @@
 	ld b, a
 	ld a, $10
 	ld [rJOYP], a ; $ff00+$0
+rept 6
 	ld a, [rJOYP] ; $ff00+$0
-	ld a, [rJOYP] ; $ff00+$0
-	ld a, [rJOYP] ; $ff00+$0
-	ld a, [rJOYP] ; $ff00+$0
-	ld a, [rJOYP] ; $ff00+$0
-	ld a, [rJOYP] ; $ff00+$0
+endr
 	cpl
 	and $f
 	or b
 	ld c, a
-	ld a, [$ffc3]
+	ld a, [hMoneyTemp]
 	xor c
 	and c
 	ld [$ffc4], a
 	ld a, c
-	ld [$ffc3], a
+	ld [hMoneyTemp], a
 	ld a, $30
 	ld [rJOYP], a ; $ff00+$0
 	ret
@@ -93436,7 +91638,7 @@
 	pop bc
 	jr z, .asm_1050b0
 	push bc
-	callab Function26f02
+	callab SetSpecificDecorationFlag
 	pop bc
 .asm_1050b0
 	inc c
@@ -93445,16 +91647,16 @@
 	jr c, .asm_105096
 	jp CloseSRAM
 
-Function1050b9: ; 1050b9
+Special_UnlockMysteryGift: ; 1050b9
 	call Function105106
 	ld hl, $abe3
 	ld a, [hl]
 	inc a
-	jr nz, .asm_1050c5
+	jr nz, .ok
 	ld [hld], a
 	ld [hl], a
 
-.asm_1050c5
+.ok
 	jp CloseSRAM
 ; 1050c8
 
@@ -93565,7 +91767,7 @@
 	ld a, BANK(MysteryGiftGFX)
 	ld bc, $430
 	call FarCopyBytes
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $42
 	ld bc, $168
 	call ByteFill
@@ -93572,7 +91774,7 @@
 	hlcoord 3, 7
 	ld bc, $90f
 	call ClearBox
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $0
 	ld [hli], a
 	inc a
@@ -93746,10 +91948,9 @@
 	ld b, $8
 .asm_1056f2
 	dec [hl]
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	dec b
 	jr nz, .asm_1056f2
 	ld hl, Sprites + $20
@@ -93756,10 +91957,9 @@
 	ld b, $8
 .asm_1056ff
 	inc [hl]
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	dec b
 	jr nz, .asm_1056ff
 	dec c
@@ -93870,7 +92070,7 @@
 	ld a, BANK(MysteryGiftJP_GFX)
 	ld bc, $80
 	call FarCopyBytes
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $3f
 	ld bc, $168
 	call ByteFill
@@ -93877,7 +92077,7 @@
 	hlcoord 3, 7
 	ld bc, $90f
 	call ClearBox
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld a, $0
 	ld [hli], a
 	inc a
@@ -94037,38 +92237,38 @@
 	ld a, [hBattleTurn]
 	and a
 	jr nz, .start
-	
+
 	ld a, [wPlayerMoveStruct + MOVE_ANIM]
 	call UpdateUsedMoves
-	
+
 .start
 	ld a, BATTLE_VARS_LAST_MOVE
 	call GetBattleVarAddr
 	ld d, h
 	ld e, l
-	
+
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE
 	call GetBattleVarAddr
-	
+
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	ld [wd265], a
-	
+
 	push hl
 	callba Function34548
 	pop hl
 	jr nz, .grammar
-	
+
 	; update last move
 	ld a, [wd265]
 	ld [hl], a
 	ld [de], a
-	
+
 .grammar
 	call GetMoveGrammar
 ; wd265 now contains MoveGrammar
-	
-	
+
+
 ; everything except 'instead' made redundant in localization
 
 	; check obedience
@@ -94076,7 +92276,7 @@
 	and a
 	ld hl, UsedMove2Text
 	ret nz
-	
+
 	; check move grammar
 	ld a, [wd265]
 	cp $3
@@ -94125,13 +92325,13 @@
 GetUsedMoveTextEnder: ; 105e28
 ; get start address
 	ld hl, .endusedmovetexts
-	
+
 ; get move id
 	ld a, [wd265]
-	
+
 ; 2-byte pointer
 	add a
-	
+
 ; seek
 	push bc
 	ld b, $0
@@ -94138,7 +92338,7 @@
 	ld c, a
 	add hl, bc
 	pop bc
-	
+
 ; get pointer to usedmovetext ender
 	ld a, [hli]
 	ld h, [hl]
@@ -94184,7 +92384,7 @@
 	ld a, [wd265]
 	ld c, a
 	ld b, $0
-	
+
 ; read grammar table
 	ld hl, MoveGrammar
 .loop
@@ -94201,12 +92401,12 @@
 ; next grammar type
 	inc b
 	jr .loop
-	
+
 .end
 ; wd265 now contains move grammar
 	ld a, b
 	ld [wd265], a
-	
+
 ; we're done
 	pop bc
 	ret
@@ -94247,7 +92447,7 @@
 	db PSYCH_UP
 	db EXTREMESPEED
 	db 0 ; end set
-	
+
 ; 1
 	db RECOVER
 	db TELEPORT
@@ -94256,7 +92456,7 @@
 	db AMNESIA
 	db FLAIL
 	db 0 ; end set
-	
+
 ; 2
 	db MEDITATE
 	db AGILITY
@@ -94267,7 +92467,7 @@
 	db STRUGGLE
 	db SCARY_FACE
 	db 0 ; end set
-	
+
 ; 3
 	db POUND
 	db SCRATCH
@@ -94308,7 +92508,7 @@
 	db ATTRACT
 	db ROCK_SMASH
 	db 0 ; end set
-	
+
 ; all other moves = 4
 	db $ff ; end
 ; 105ed0
@@ -94322,9 +92522,9 @@
 	ld hl, PlayerUsedMoves
 ; get move id
 	ld b, a
-; loop count
+; next count
 	ld c, NUM_MOVES
-	
+
 .loop
 ; get move from the list
 	ld a, [hli]
@@ -94337,7 +92537,7 @@
 ; next byte
 	dec c
 	jr nz, .loop
-	
+
 ; if the list is full and the move hasn't already been used
 ; shift the list back one byte, deleting the first move used
 ; this can occur with struggle or a new learned move
@@ -94357,13 +92557,13 @@
 	ld a, b
 	ld [PlayerUsedMoves + 3], a
 	jr .quit
-	
+
 .add
 ; go back to the byte we just inced from
 	dec hl
 ; add the new move
 	ld [hl], b
-	
+
 .quit
 ; list updated
 	pop bc
@@ -94555,9 +92755,9 @@
 	inc [hl]
 	jr nz, .asm_106001
 	ld a, $ff
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 .asm_106001
@@ -94585,9 +92785,9 @@
 	inc [hl]
 	jr nz, .asm_106027
 	ld a, $ff
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 .asm_106027
@@ -94660,7 +92860,7 @@
 	ld hl, $a036
 	jp Function10611d
 
-Function1060a2: mobile ; 1060a2
+Mobile_HealParty: mobile ; 1060a2
 	ld hl, $a039
 	jp Function10611d
 
@@ -94972,19 +93172,19 @@
 	ld de, ._9
 
 .asm_106256
+rept 3
 	inc de
-	inc de
-	inc de
+endr
+rept 2
 	dec a
-	dec a
+endr
 .asm_10625b
 	push af
 	call Function1062b2
 	call Function1062ff
+rept 4
 	inc de
-	inc de
-	inc de
-	inc de
+endr
 	pop af
 	dec a
 	jr nz, .asm_10625b
@@ -95055,9 +93255,9 @@
 	sbc b
 	ld [hMathBuffer], a
 	ld a, [de]
+rept 3
 	inc de
-	inc de
-	inc de
+endr
 	ld b, a
 	ld a, [hProduct]
 	sbc b
@@ -95564,7 +93764,7 @@
 ; 1dc1b0
 
 Function1dc1b0: ; 1dc1b0
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld de, wca90
 	ld bc, $0154
 	call CopyBytes
@@ -95603,7 +93803,7 @@
 	call nz, FarString
 	ld hl, wcaa3
 	ld [hl], $35
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	ld b, $f
 .asm_1dc20a
@@ -95632,11 +93832,11 @@
 	ld [hl], $38
 	inc hl
 	ld a, $39
-	ld bc, $0012
+	ld bc, SCREEN_HEIGHT
 	call ByteFill
 	ld [hl], $3a
 	ld hl, wcb1c
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	ld a, $32
 	call ByteFill
 	ld a, [wd265]
@@ -95656,7 +93856,7 @@
 
 Function1dc26a: ; 1dc26a
 	push de
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 .asm_1dc26e
 	ld [hl], a
 	add hl, de
@@ -95788,7 +93988,7 @@
 	inc [hl]
 
 .asm_1dc469
-	ld hl, TileMap
+	hlcoord 0, 0
 	call Function378b
 	call WaitBGMap
 	ld b, $3
@@ -95807,12 +94007,12 @@
 	xor a
 	ld [MonType], a
 	callba Function5084a
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld b, 15
 	ld c, 18
 	call TextBox
 	ld bc, SCREEN_WIDTH
-	ld de, TileMap
+	decoord 0, 0
 	hlcoord 0, 1
 	call CopyBytes
 	hlcoord 7, 0
@@ -96044,7 +94244,7 @@
 	ld bc, $f0b
 	call ClearBox
 	ld a, $34
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $b
 	call ByteFill
 	ld a, $39
@@ -96079,7 +94279,7 @@
 
 Function1de1d1: ; 1de1d1 (77:61d1)
 	ld a, $34
-	ld hl, TileMap
+	hlcoord 0, 0
 	ld bc, $b
 	call ByteFill
 	ld a, $39
@@ -96164,7 +94364,7 @@
 
 Function1de27f: ; 1de27f
 	push de
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 .asm_1de283
 	ld [hl], a
 	add hl, de
@@ -96205,7 +94405,7 @@
 	db A_BUTTON, $00
 	db NO_INPUT, $ff ; end
 ; 1de2a5
-	
+
 DudeAutoInput_RightA: ; 1de2a5
 	db NO_INPUT, $08
 	db D_RIGHT,  $00
@@ -96213,7 +94413,7 @@
 	db A_BUTTON, $00
 	db NO_INPUT, $ff ; end
 ; 1de2af
-	
+
 DudeAutoInput_DownA: ; 1de2af
 	db NO_INPUT, $fe
 	db NO_INPUT, $fe
--- a/maps/AzaleaGym.asm
+++ b/maps/AzaleaGym.asm
@@ -1,8 +1,8 @@
 AzaleaGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BugsyScript_0x18ec1e:
@@ -61,24 +61,8 @@
 	jumpstd radiotowerrockets
 
 TrainerTwinsAmyandmay1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_AMY_AND_MAY
+	trainer EVENT_BEAT_TWINS_AMY_AND_MAY, TWINS, AMYANDMAY1, TwinsAmyandmay1SeenText, TwinsAmyandmay1BeatenText, $0000, TwinsAmyandmay1Script
 
-	; trainer group && trainer id
-	db TWINS, AMYANDMAY1
-
-	; text when seen
-	dw TwinsAmyandmay1SeenText
-
-	; text when trainer beaten
-	dw TwinsAmyandmay1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAmyandmay1Script
-
 TwinsAmyandmay1Script:
 	talkaftercancel
 	loadfont
@@ -88,24 +72,8 @@
 	end
 
 TrainerTwinsAmyandmay2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_AMY_AND_MAY
+	trainer EVENT_BEAT_TWINS_AMY_AND_MAY, TWINS, AMYANDMAY2, TwinsAmyandmay2SeenText, TwinsAmyandmay2BeatenText, $0000, TwinsAmyandmay2Script
 
-	; trainer group && trainer id
-	db TWINS, AMYANDMAY2
-
-	; text when seen
-	dw TwinsAmyandmay2SeenText
-
-	; text when trainer beaten
-	dw TwinsAmyandmay2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAmyandmay2Script
-
 TwinsAmyandmay2Script:
 	talkaftercancel
 	loadfont
@@ -115,24 +83,8 @@
 	end
 
 TrainerBug_catcherBug_catcher_benny:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_BENNY
+	trainer EVENT_BEAT_BUG_CATCHER_BENNY, BUG_CATCHER, BUG_CATCHER_BENNY, Bug_catcherBug_catcher_bennySeenText, Bug_catcherBug_catcher_bennyBeatenText, $0000, Bug_catcherBug_catcher_bennyScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, BUG_CATCHER_BENNY
-
-	; text when seen
-	dw Bug_catcherBug_catcher_bennySeenText
-
-	; text when trainer beaten
-	dw Bug_catcherBug_catcher_bennyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherBug_catcher_bennyScript
-
 Bug_catcherBug_catcher_bennyScript:
 	talkaftercancel
 	loadfont
@@ -142,24 +94,8 @@
 	end
 
 TrainerBug_catcherAl:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_AL
+	trainer EVENT_BEAT_BUG_CATCHER_AL, BUG_CATCHER, AL, Bug_catcherAlSeenText, Bug_catcherAlBeatenText, $0000, Bug_catcherAlScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, AL
-
-	; text when seen
-	dw Bug_catcherAlSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherAlBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherAlScript
-
 Bug_catcherAlScript:
 	talkaftercancel
 	loadfont
@@ -169,24 +105,8 @@
 	end
 
 TrainerBug_catcherJosh:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_JOSH
+	trainer EVENT_BEAT_BUG_CATCHER_JOSH, BUG_CATCHER, JOSH, Bug_catcherJoshSeenText, Bug_catcherJoshBeatenText, $0000, Bug_catcherJoshScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, JOSH
-
-	; text when seen
-	dw Bug_catcherJoshSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherJoshBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherJoshScript
-
 Bug_catcherJoshScript:
 	talkaftercancel
 	loadfont
@@ -436,25 +356,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $4, 5, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $f, $5, 5, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 13, 3, $0, AzaleaGymStatue
-	signpost 13, 6, $0, AzaleaGymStatue
+	signpost 13, 3, SIGNPOST_READ, AzaleaGymStatue
+	signpost 13, 6, SIGNPOST_READ, AzaleaGymStatue
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_BUGSY, 11, 9, $3, $0, 255, 255, $a0, 0, BugsyScript_0x18ec1e, -1
-	person_event SPRITE_BUG_CATCHER, 7, 9, $a, $0, 255, 255, $b2, 2, TrainerBug_catcherBug_catcher_benny, -1
-	person_event SPRITE_BUG_CATCHER, 12, 12, $6, $0, 255, 255, $b2, 3, TrainerBug_catcherAl, -1
-	person_event SPRITE_BUG_CATCHER, 6, 4, $6, $0, 255, 255, $b2, 3, TrainerBug_catcherJosh, -1
-	person_event SPRITE_TWIN, 14, 8, $6, $0, 255, 255, $82, 1, TrainerTwinsAmyandmay1, -1
-	person_event SPRITE_TWIN, 14, 9, $6, $0, 255, 255, $82, 1, TrainerTwinsAmyandmay2, -1
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $80, 0, AzaleaGymGuyScript, -1
+	person_event SPRITE_BUGSY, 11, 9, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugsyScript_0x18ec1e, -1
+	person_event SPRITE_BUG_CATCHER, 7, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBug_catcherBug_catcher_benny, -1
+	person_event SPRITE_BUG_CATCHER, 12, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherAl, -1
+	person_event SPRITE_BUG_CATCHER, 6, 4, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherJosh, -1
+	person_event SPRITE_TWIN, 14, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAmyandmay1, -1
+	person_event SPRITE_TWIN, 14, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAmyandmay2, -1
+	person_event SPRITE_GYM_GUY, 17, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, AzaleaGymGuyScript, -1
--- a/maps/AzaleaMart.asm
+++ b/maps/AzaleaMart.asm
@@ -1,8 +1,8 @@
 AzaleaMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x18e040:
@@ -44,19 +44,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $7, $3, 3, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x18e040, -1
-	person_event SPRITE_COOLTRAINER_M, 9, 6, $7, $0, 255, 255, $0, 0, CooltrainerMScript_0x18e047, -1
-	person_event SPRITE_BUG_CATCHER, 6, 11, $5, $2, 255, 255, $80, 0, BugCatcherScript_0x18e04a, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x18e040, -1
+	person_event SPRITE_COOLTRAINER_M, 9, 6, OW_UP | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x18e047, -1
+	person_event SPRITE_BUG_CATCHER, 6, 11, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x18e04a, -1
--- a/maps/AzaleaPokeCenter1F.asm
+++ b/maps/AzaleaPokeCenter1F.asm
@@ -1,11 +1,11 @@
 AzaleaPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x18db27, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x18db27:
@@ -76,21 +76,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $7, $4, 1, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18db28, -1
-	person_event SPRITE_GENTLEMAN, 10, 13, $4, $10, 255, 255, $0, 0, GentlemanScript_0x18db2b, -1
-	person_event SPRITE_FISHING_GURU, 5, 10, $6, $0, 255, 255, $0, 0, FishingGuruScript_0x18db2e, -1
-	person_event SPRITE_POKEFAN_F, 8, 5, $2, $21, 255, 255, $0, 0, PokefanFScript_0x18db31, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x18db28, -1
+	person_event SPRITE_GENTLEMAN, 10, 13, OW_UP | $0, $10, -1, -1, $0, 0, GentlemanScript_0x18db2b, -1
+	person_event SPRITE_FISHING_GURU, 5, 10, OW_UP | $2, $0, -1, -1, $0, 0, FishingGuruScript_0x18db2e, -1
+	person_event SPRITE_POKEFAN_F, 8, 5, OW_DOWN | $2, $21, -1, -1, $0, 0, PokefanFScript_0x18db31, -1
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -1,5 +1,5 @@
 AzaleaTown_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
@@ -7,7 +7,7 @@
 	dw .Trigger2, $0000
 	dw .Trigger3, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -29,7 +29,7 @@
 UnknownScript_0x198018:
 	moveperson $b, $b, $b
 	spriteface $0, RIGHT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	appear $b
@@ -39,7 +39,7 @@
 
 UnknownScript_0x198034:
 	spriteface $0, RIGHT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	appear $b
@@ -51,7 +51,7 @@
 	writetext UnknownText_0x19814d
 	closetext
 	loadmovesprites
-	setevent EVENT_6BF
+	setevent EVENT_RIVAL_AZALEA_TOWN
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x198071
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
@@ -158,8 +158,8 @@
 	verbosegiveitem GS_BALL, 1
 	spriteface $d, LEFT
 	setflag ENGINE_HAVE_EXAMINED_GS_BALL
-	clearevent EVENT_6ED
-	setevent EVENT_6EB
+	clearevent EVENT_ILEX_FOREST_LASS
+	setevent EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
 	dotrigger $0
 	loadmovesprites
 	end
@@ -201,8 +201,7 @@
 	fruittree $14
 
 MapAzaleaTownSignpostItem8:
-	dw $00b1
-	db FULL_HEAL
+	dwb EVENT_AZALEA_TOWN_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
 MovementData_0x198134:
@@ -451,7 +450,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 8
 	warp_def $9, $f, 1, GROUP_AZALEA_POKECENTER_1F, MAP_AZALEA_POKECENTER_1F
 	warp_def $d, $15, 1, GROUP_CHARCOAL_KILN, MAP_CHARCOAL_KILN
@@ -462,35 +461,35 @@
 	warp_def $a, $2, 3, GROUP_ILEX_FOREST_AZALEA_GATE, MAP_ILEX_FOREST_AZALEA_GATE
 	warp_def $b, $2, 4, GROUP_ILEX_FOREST_AZALEA_GATE, MAP_ILEX_FOREST_AZALEA_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 3
 	xy_trigger 1, $a, $5, $0, UnknownScript_0x198018, $0, $0
 	xy_trigger 1, $b, $5, $0, UnknownScript_0x198034, $0, $0
 	xy_trigger 2, $6, $9, $0, UnknownScript_0x1980e5, $0, $0
 
-	; signposts
+.Signposts:
 	db 9
-	signpost 9, 19, $0, AzaleaTownSign
-	signpost 9, 10, $0, KurtsHouseSign
-	signpost 15, 14, $0, AzaleaGymSign
-	signpost 7, 29, $0, SlowpokeWellSign
-	signpost 13, 19, $0, CharcoalKilnSign
-	signpost 9, 16, $0, AzaleaTownPokeCenterSign
-	signpost 5, 22, $0, AzaleaTownMartSign
-	signpost 9, 3, $0, AzaleaTownIlextForestSign
-	signpost 6, 31, $7, MapAzaleaTownSignpostItem8
+	signpost 9, 19, SIGNPOST_READ, AzaleaTownSign
+	signpost 9, 10, SIGNPOST_READ, KurtsHouseSign
+	signpost 15, 14, SIGNPOST_READ, AzaleaGymSign
+	signpost 7, 29, SIGNPOST_READ, SlowpokeWellSign
+	signpost 13, 19, SIGNPOST_READ, CharcoalKilnSign
+	signpost 9, 16, SIGNPOST_READ, AzaleaTownPokeCenterSign
+	signpost 5, 22, SIGNPOST_READ, AzaleaTownMartSign
+	signpost 9, 3, SIGNPOST_READ, AzaleaTownIlextForestSign
+	signpost 6, 31, SIGNPOST_ITEM, MapAzaleaTownSignpostItem8
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_AZALEA_ROCKET, 13, 35, $6, $0, 255, 255, $0, 0, AzaleaRocketScript_0x1980ab, EVENT_6FA
-	person_event SPRITE_GRAMPS, 13, 25, $2, $21, 255, 255, $0, 0, GrampsScript_0x1980b1, -1
-	person_event SPRITE_TEACHER, 17, 19, $4, $20, 255, 255, $90, 0, TeacherScript_0x1980c5, -1
-	person_event SPRITE_YOUNGSTER, 13, 11, $5, $1, 255, 255, $a0, 0, YoungsterScript_0x1980c8, -1
-	person_event SPRITE_SLOWPOKE, 21, 12, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_SLOWPOKE, 13, 22, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_SLOWPOKE, 13, 33, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_SLOWPOKE, 19, 19, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_FRUIT_TREE, 6, 12, $1, $0, 255, 255, $0, 0, WhiteApricornTree, -1
-	person_event SPRITE_AZALEA_ROCKET, 14, 15, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6BF
-	person_event SPRITE_AZALEA_ROCKET, 20, 14, $6, $0, 255, 255, $0, 0, AzaleaRocketScript_0x1980ae, EVENT_6FC
-	person_event SPRITE_KURT_OUTSIDE, 9, 10, $8, $0, 255, 255, $0, 0, KurtOutsideScript_0x19810c, EVENT_7A4
+	person_event SPRITE_AZALEA_ROCKET, 13, 35, OW_UP | $2, $0, -1, -1, $0, 0, AzaleaRocketScript_0x1980ab, EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
+	person_event SPRITE_GRAMPS, 13, 25, OW_DOWN | $2, $21, -1, -1, $0, 0, GrampsScript_0x1980b1, -1
+	person_event SPRITE_TEACHER, 17, 19, OW_UP | $0, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x1980c5, -1
+	person_event SPRITE_YOUNGSTER, 13, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1980c8, -1
+	person_event SPRITE_SLOWPOKE, 21, 12, OW_DOWN | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 13, 22, OW_DOWN | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 13, 33, OW_DOWN | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 19, 19, OW_DOWN | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_FRUIT_TREE, 6, 12, OW_DOWN | $1, $0, -1, -1, $0, 0, WhiteApricornTree, -1
+	person_event SPRITE_AZALEA_ROCKET, 14, 15, OW_LEFT | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_AZALEA_TOWN
+	person_event SPRITE_AZALEA_ROCKET, 20, 14, OW_UP | $2, $0, -1, -1, $0, 0, AzaleaRocketScript_0x1980ae, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_KURT_OUTSIDE, 9, 10, OW_LEFT | $0, $0, -1, -1, $0, 0, KurtOutsideScript_0x19810c, EVENT_AZALEA_TOWN_KURT
--- a/maps/BattleTower1F.asm
+++ b/maps/BattleTower1F.asm
@@ -1,5 +1,5 @@
 BattleTower1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x9e39d, $0000
 	dw UnknownScript_0x9e3d3, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x9e39d:
@@ -79,7 +79,7 @@
 	yesorno
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $0
-	special Function29e66
+	special Special_TryQuickSave
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $1
 	writebyte $1
@@ -168,7 +168,7 @@
 	writetext UnknownText_0x9ef1f
 	yesorno
 	iffalse UnknownScript_0x9e3fc
-	special Function29e66
+	special Special_TryQuickSave
 	iffalse UnknownScript_0x9e3fc
 	writebyte $1
 	special Function170687
@@ -207,7 +207,7 @@
 	yesorno
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $0
-	special Function29e66
+	special Special_TryQuickSave
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $1
 	writebyte $6
@@ -795,23 +795,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $9, $7, 3, GROUP_BATTLE_TOWER_OUTSIDE, MAP_BATTLE_TOWER_OUTSIDE
 	warp_def $9, $8, 4, GROUP_BATTLE_TOWER_OUTSIDE, MAP_BATTLE_TOWER_OUTSIDE
 	warp_def $0, $7, 1, GROUP_BATTLE_TOWER_ELEVATOR, MAP_BATTLE_TOWER_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 6, 6, $0, MapBattleTower1FSignpost0Script
+	signpost 6, 6, SIGNPOST_READ, MapBattleTower1FSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_RECEPTIONIST, 10, 11, $6, $0, 255, 255, $0, 0, ReceptionistScript_0x9e3e2, -1
-	person_event SPRITE_YOUNGSTER, 13, 18, $9, $0, 255, 255, $b0, 0, YoungsterScript_0x9e55d, -1
-	person_event SPRITE_COOLTRAINER_F, 13, 8, $5, $1, 255, 255, $80, 0, CooltrainerFScript_0x9e568, -1
-	person_event SPRITE_BUG_CATCHER, 7, 5, $2, $11, 255, 255, $90, 0, BugCatcherScript_0x9e56b, -1
-	person_event SPRITE_GRANNY, 7, 18, $4, $10, 255, 255, $0, 0, GrannyScript_0x9e56e, -1
+	person_event SPRITE_RECEPTIONIST, 10, 11, OW_UP | $2, $0, -1, -1, $0, 0, ReceptionistScript_0x9e3e2, -1
+	person_event SPRITE_YOUNGSTER, 13, 18, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, YoungsterScript_0x9e55d, -1
+	person_event SPRITE_COOLTRAINER_F, 13, 8, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x9e568, -1
+	person_event SPRITE_BUG_CATCHER, 7, 5, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BugCatcherScript_0x9e56b, -1
+	person_event SPRITE_GRANNY, 7, 18, OW_UP | $0, $10, -1, -1, $0, 0, GrannyScript_0x9e56e, -1
--- a/maps/BattleTowerBattleRoom.asm
+++ b/maps/BattleTowerBattleRoom.asm
@@ -1,5 +1,5 @@
 BattleTowerBattleRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x9f419, $0000
 	dw UnknownScript_0x9f420, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x9f419:
@@ -31,7 +31,7 @@
 	keeptextopen
 	loadmovesprites
 	special Function170215
-	special Function8c084
+	special FadeBlackBGMap
 	reloadmap
 	if_not_equal $0, UnknownScript_0x9f4c2
 	copybytetovar wcf64
@@ -46,10 +46,10 @@
 	closetext
 	loadmovesprites
 	playmusic MUSIC_HEAL
-	special Function8c084
-	special Function1047eb
+	special FadeBlackBGMap
+	special LoadMapPalettes
 	pause 60
-	special Function8c079
+	special FadeInBGMap
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x9eebc
@@ -73,7 +73,7 @@
 	special Function170687
 	playsound SFX_SAVE
 	waitbutton
-	special Function8c084
+	special FadeBlackBGMap
 	special Reset
 UnknownScript_0x9f4a3:
 	writetext UnknownText_0x9efbf
@@ -84,7 +84,7 @@
 	writebyte $6
 	special Function170687
 	loadmovesprites
-	special Function8c084
+	special FadeBlackBGMap
 	warpfacing $1, GROUP_BATTLE_TOWER_1F, MAP_BATTLE_TOWER_1F, $7, $7
 	loadfont
 	jump UnknownScript_0x9e4b0
@@ -91,7 +91,7 @@
 
 UnknownScript_0x9f4c2:
 	pause 60
-	special Function8c092
+	special Special_BattleTowerFade
 	warpfacing $1, GROUP_BATTLE_TOWER_1F, MAP_BATTLE_TOWER_1F, $7, $7
 	writebyte $4
 	special Function170687
@@ -103,7 +103,7 @@
 
 UnknownScript_0x9f4d9:
 	pause 60
-	special Function8c092
+	special Special_BattleTowerFade
 	warpfacing $1, GROUP_BATTLE_TOWER_1F, MAP_BATTLE_TOWER_1F, $7, $7
 BattleTowerBattleRoomScript_0x9f4e4:
 	loadfont
@@ -142,18 +142,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 4, GROUP_BATTLE_TOWER_HALLWAY, MAP_BATTLE_TOWER_HALLWAY
 	warp_def $7, $4, 4, GROUP_BATTLE_TOWER_HALLWAY, MAP_BATTLE_TOWER_HALLWAY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_YOUNGSTER, 4, 8, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_791
-	person_event SPRITE_RECEPTIONIST, 10, 5, $9, $0, 255, 255, $0, 0, ObjectEvent, -1
+	person_event SPRITE_YOUNGSTER, 4, 8, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_BATTLE_TOWER_BATTLE_ROOM_YOUNGSTER
+	person_event SPRITE_RECEPTIONIST, 10, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ObjectEvent, -1
--- a/maps/BattleTowerElevator.asm
+++ b/maps/BattleTowerElevator.asm
@@ -1,5 +1,5 @@
 BattleTowerElevator_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x9f562, $0000
 	dw UnknownScript_0x9f567, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x9f562:
@@ -47,17 +47,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $1, 1, GROUP_BATTLE_TOWER_HALLWAY, MAP_BATTLE_TOWER_HALLWAY
 	warp_def $3, $2, 1, GROUP_BATTLE_TOWER_HALLWAY, MAP_BATTLE_TOWER_HALLWAY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_RECEPTIONIST, 6, 5, $9, $0, 255, 255, $0, 0, MovementData_0x9f58f, -1
+	person_event SPRITE_RECEPTIONIST, 6, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, MovementData_0x9f58f, -1
--- a/maps/BattleTowerHallway.asm
+++ b/maps/BattleTowerHallway.asm
@@ -1,5 +1,5 @@
 BattleTowerHallway_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x9f5bb, $0000
 	dw UnknownScript_0x9f5c0, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x9f5bb:
@@ -79,7 +79,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $1, $b, 1, GROUP_BATTLE_TOWER_ELEVATOR, MAP_BATTLE_TOWER_ELEVATOR
 	warp_def $0, $5, 1, GROUP_BATTLE_TOWER_BATTLE_ROOM, MAP_BATTLE_TOWER_BATTLE_ROOM
@@ -88,12 +88,12 @@
 	warp_def $0, $d, 1, GROUP_BATTLE_TOWER_BATTLE_ROOM, MAP_BATTLE_TOWER_BATTLE_ROOM
 	warp_def $0, $f, 1, GROUP_BATTLE_TOWER_BATTLE_ROOM, MAP_BATTLE_TOWER_BATTLE_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_RECEPTIONIST, 6, 15, $6, $0, 255, 255, $0, 0, BattleTowerHallway_MapEventHeader, -1
+	person_event SPRITE_RECEPTIONIST, 6, 15, OW_UP | $2, $0, -1, -1, $0, 0, BattleTowerHallway_MapEventHeader, -1
--- a/maps/BattleTowerOutside.asm
+++ b/maps/BattleTowerOutside.asm
@@ -1,8 +1,8 @@
 BattleTowerOutside_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -13,7 +13,7 @@
 	return
 
 .Callback2
-	clearevent EVENT_7CF
+	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	return
 
 StandingYoungsterScript_0x9f85f:
@@ -126,7 +126,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $15, $8, 3, GROUP_ROUTE_40_BATTLE_TOWER_GATE, MAP_ROUTE_40_BATTLE_TOWER_GATE
 	warp_def $15, $9, 4, GROUP_ROUTE_40_BATTLE_TOWER_GATE, MAP_ROUTE_40_BATTLE_TOWER_GATE
@@ -133,16 +133,16 @@
 	warp_def $9, $8, 1, GROUP_BATTLE_TOWER_1F, MAP_BATTLE_TOWER_1F
 	warp_def $9, $9, 2, GROUP_BATTLE_TOWER_1F, MAP_BATTLE_TOWER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 10, 10, $0, MapBattleTowerOutsideSignpost0Script
+	signpost 10, 10, SIGNPOST_READ, MapBattleTowerOutsideSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_STANDING_YOUNGSTER, 16, 10, $7, $0, 255, 255, $80, 0, StandingYoungsterScript_0x9f85f, -1
-	person_event SPRITE_BUENA, 15, 17, $2, $11, 255, 255, $a0, 0, BuenaScript_0x9f862, -1
-	person_event SPRITE_SAILOR, 22, 16, $5, $1, 255, 255, $0, 0, SailorScript_0x9f865, EVENT_7CF
-	person_event SPRITE_LASS, 28, 16, $3, $0, 255, 255, $a0, 0, ObjectEvent, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 16, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, StandingYoungsterScript_0x9f85f, -1
+	person_event SPRITE_BUENA, 15, 17, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BuenaScript_0x9f862, -1
+	person_event SPRITE_SAILOR, 22, 16, OW_UP | $1, $1, -1, -1, $0, 0, SailorScript_0x9f865, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+	person_event SPRITE_LASS, 28, 16, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, -1
--- a/maps/BillsHouse.asm
+++ b/maps/BillsHouse.asm
@@ -1,14 +1,14 @@
 BillsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrampsScript_0x189538:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x1896ba
 	checkevent EVENT_GOT_THUNDERSTONE_FROM_BILLS_GRANDPA
 	iftrue UnknownScript_0x1896c0
@@ -120,7 +120,7 @@
 	verbosegiveitem EVERSTONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 	loadmovesprites
 	end
 
@@ -131,7 +131,7 @@
 	verbosegiveitem LEAF_STONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 	loadmovesprites
 	end
 
@@ -142,7 +142,7 @@
 	verbosegiveitem WATER_STONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 	loadmovesprites
 	end
 
@@ -153,7 +153,7 @@
 	verbosegiveitem FIRE_STONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 	loadmovesprites
 	end
 
@@ -354,17 +354,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_ROUTE_25, MAP_ROUTE_25
 	warp_def $7, $3, 1, GROUP_ROUTE_25, MAP_ROUTE_25
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GRAMPS, 7, 6, $7, $20, 255, 255, $90, 0, GrampsScript_0x189538, -1
+	person_event SPRITE_GRAMPS, 7, 6, OW_UP | $3, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x189538, -1
--- a/maps/BlackthornCity.asm
+++ b/maps/BlackthornCity.asm
@@ -1,8 +1,8 @@
 BlackthornCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -307,7 +307,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 8
 	warp_def $b, $12, 1, GROUP_BLACKTHORN_GYM_1F, MAP_BLACKTHORN_GYM_1F
 	warp_def $15, $d, 1, GROUP_BLACKTHORN_DRAGON_SPEECH_HOUSE, MAP_BLACKTHORN_DRAGON_SPEECH_HOUSE
@@ -318,27 +318,27 @@
 	warp_def $9, $24, 2, GROUP_ICE_PATH_1F, MAP_ICE_PATH_1F
 	warp_def $1, $14, 1, GROUP_DRAGONS_DEN_1F, MAP_DRAGONS_DEN_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 7
-	signpost 24, 34, $0, BlackthornCitySign
-	signpost 13, 17, $0, BlackthornGymSign
-	signpost 31, 7, $0, MoveDeletersHouseSign
-	signpost 3, 21, $0, DragonDensSign
-	signpost 25, 5, $0, BlackthornCityTrainerTips
-	signpost 29, 16, $0, BlackthornCityMartSign
-	signpost 29, 22, $0, BlackthornCityPokeCenterSign
+	signpost 24, 34, SIGNPOST_READ, BlackthornCitySign
+	signpost 13, 17, SIGNPOST_READ, BlackthornGymSign
+	signpost 31, 7, SIGNPOST_READ, MoveDeletersHouseSign
+	signpost 3, 21, SIGNPOST_READ, DragonDensSign
+	signpost 25, 5, SIGNPOST_READ, BlackthornCityTrainerTips
+	signpost 29, 16, SIGNPOST_READ, BlackthornCityMartSign
+	signpost 29, 22, SIGNPOST_READ, BlackthornCityPokeCenterSign
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_SUPER_NERD, 16, 22, $6, $0, 255, 255, $80, 0, SuperNerdScript_0x1a46e8, EVENT_6E3
-	person_event SPRITE_SUPER_NERD, 16, 23, $6, $0, 255, 255, $80, 0, SuperNerdScript_0x1a46e8, EVENT_6E4
-	person_event SPRITE_GRAMPS, 6, 24, $6, $0, 255, 255, $0, 0, GrampsScript_0x1a4708, EVENT_74C
-	person_event SPRITE_GRAMPS, 6, 25, $8, $0, 255, 255, $0, 0, GrampsScript_0x1a470b, EVENT_74D
-	person_event SPRITE_BLACK_BELT, 35, 28, $5, $1, 255, 255, $90, 0, BlackBeltScript_0x1a470e, -1
-	person_event SPRITE_COOLTRAINER_F, 29, 13, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x1a4722, -1
-	person_event SPRITE_YOUNGSTER, 19, 17, $5, $1, 255, 255, $0, 0, YoungsterScript_0x1a4725, -1
-	person_event SPRITE_YOUNGSTER, 24, 26, $6, $0, 255, 255, $0, 0, SantosScript, EVENT_75D
-	person_event SPRITE_COOLTRAINER_F, 23, 39, $7, $0, 255, 255, $a0, 0, CooltrainerFScript_0x1a4728, -1
+	person_event SPRITE_SUPER_NERD, 16, 22, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a46e8, EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
+	person_event SPRITE_SUPER_NERD, 16, 23, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a46e8, EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
+	person_event SPRITE_GRAMPS, 6, 24, OW_UP | $2, $0, -1, -1, $0, 0, GrampsScript_0x1a4708, EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
+	person_event SPRITE_GRAMPS, 6, 25, OW_LEFT | $0, $0, -1, -1, $0, 0, GrampsScript_0x1a470b, EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
+	person_event SPRITE_BLACK_BELT, 35, 28, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BlackBeltScript_0x1a470e, -1
+	person_event SPRITE_COOLTRAINER_F, 29, 13, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x1a4722, -1
+	person_event SPRITE_YOUNGSTER, 19, 17, OW_UP | $1, $1, -1, -1, $0, 0, YoungsterScript_0x1a4725, -1
+	person_event SPRITE_YOUNGSTER, 24, 26, OW_UP | $2, $0, -1, -1, $0, 0, SantosScript, EVENT_BLACKTHORN_CITY_SANTOS_OF_SATURDAY
+	person_event SPRITE_COOLTRAINER_F, 23, 39, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x1a4728, -1
--- a/maps/BlackthornDodrioTradeHouse.asm
+++ b/maps/BlackthornDodrioTradeHouse.asm
@@ -1,8 +1,8 @@
 BlackthornDodrioTradeHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 Emy:
@@ -20,19 +20,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $7, $3, 3, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, EmysHouseBookshelf
-	signpost 1, 1, $0, EmysHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, EmysHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, EmysHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_LASS, 7, 6, $3, $0, 255, 255, $a0, 0, Emy, -1
+	person_event SPRITE_LASS, 7, 6, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, Emy, -1
--- a/maps/BlackthornDragonSpeechHouse.asm
+++ b/maps/BlackthornDragonSpeechHouse.asm
@@ -1,8 +1,8 @@
 BlackthornDragonSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrannyScript_0x195949:
@@ -45,18 +45,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $7, $3, 2, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_GRANNY, 7, 6, $3, $0, 255, 255, $0, 0, GrannyScript_0x195949, -1
-	person_event SPRITE_EKANS, 9, 9, $16, $0, 255, 255, $90, 0, EkansScript_0x19594c, -1
+	person_event SPRITE_GRANNY, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, GrannyScript_0x195949, -1
+	person_event SPRITE_EKANS, 9, 9, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, EkansScript_0x19594c, -1
--- a/maps/BlackthornGym1F.asm
+++ b/maps/BlackthornGym1F.asm
@@ -1,8 +1,8 @@
 BlackthornGym1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -47,9 +47,9 @@
 	setevent EVENT_BEAT_COOLTRAINERM_MIKE
 	setevent EVENT_BEAT_COOLTRAINERF_FRAN
 	setevent EVENT_BEAT_COOLTRAINERF_LOLA
-	clearevent EVENT_736
-	setevent EVENT_74C
-	clearevent EVENT_74D
+	clearevent EVENT_MAHOGANY_MART_OWNERS
+	setevent EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
+	clearevent EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
 	end
 .FightDone
 	writetext UnknownText_0x195162
@@ -87,24 +87,8 @@
 	end
 
 TrainerCooltrainermPaul:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_PAUL
+	trainer EVENT_BEAT_COOLTRAINERM_PAUL, COOLTRAINERM, PAUL, CooltrainermPaulSeenText, CooltrainermPaulBeatenText, $0000, CooltrainermPaulScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, PAUL
-
-	; text when seen
-	dw CooltrainermPaulSeenText
-
-	; text when trainer beaten
-	dw CooltrainermPaulBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermPaulScript
-
 CooltrainermPaulScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +98,8 @@
 	end
 
 TrainerCooltrainermMike:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_MIKE
+	trainer EVENT_BEAT_COOLTRAINERM_MIKE, COOLTRAINERM, MIKE, CooltrainermMikeSeenText, CooltrainermMikeBeatenText, $0000, CooltrainermMikeScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, MIKE
-
-	; text when seen
-	dw CooltrainermMikeSeenText
-
-	; text when trainer beaten
-	dw CooltrainermMikeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermMikeScript
-
 CooltrainermMikeScript:
 	talkaftercancel
 	loadfont
@@ -141,24 +109,8 @@
 	end
 
 TrainerCooltrainerfLola:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_LOLA
+	trainer EVENT_BEAT_COOLTRAINERF_LOLA, COOLTRAINERF, LOLA, CooltrainerfLolaSeenText, CooltrainerfLolaBeatenText, $0000, CooltrainerfLolaScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, LOLA
-
-	; text when seen
-	dw CooltrainerfLolaSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfLolaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfLolaScript
-
 CooltrainerfLolaScript:
 	talkaftercancel
 	loadfont
@@ -432,7 +384,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 7
 	warp_def $11, $4, 1, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $11, $5, 1, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
@@ -442,18 +394,18 @@
 	warp_def $7, $7, 4, GROUP_BLACKTHORN_GYM_2F, MAP_BLACKTHORN_GYM_2F
 	warp_def $6, $7, 5, GROUP_BLACKTHORN_GYM_2F, MAP_BLACKTHORN_GYM_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 3, $0, BlackthornGymStatue
-	signpost 15, 6, $0, BlackthornGymStatue
+	signpost 15, 3, SIGNPOST_READ, BlackthornGymStatue
+	signpost 15, 6, SIGNPOST_READ, BlackthornGymStatue
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_CLAIR, 7, 9, $6, $0, 255, 255, $90, 0, ClairScript_0x194e24, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 10, $6, $0, 255, 255, $82, 3, TrainerCooltrainermMike, -1
-	person_event SPRITE_COOLTRAINER_M, 18, 5, $6, $0, 255, 255, $82, 3, TrainerCooltrainermPaul, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 13, $6, $0, 255, 255, $82, 1, TrainerCooltrainerfLola, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $80, 0, BlackthornGymGuyScript, -1
+	person_event SPRITE_CLAIR, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClairScript_0x194e24, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermMike, -1
+	person_event SPRITE_COOLTRAINER_M, 18, 5, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermPaul, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainerfLola, -1
+	person_event SPRITE_GYM_GUY, 19, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, BlackthornGymGuyScript, -1
--- a/maps/BlackthornGym2F.asm
+++ b/maps/BlackthornGym2F.asm
@@ -1,8 +1,8 @@
 BlackthornGym2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -59,24 +59,8 @@
 	jumpstd strengthboulder
 
 TrainerCooltrainermCody:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_CODY
+	trainer EVENT_BEAT_COOLTRAINERM_CODY, COOLTRAINERM, CODY, CooltrainermCodySeenText, CooltrainermCodyBeatenText, $0000, CooltrainermCodyScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, CODY
-
-	; text when seen
-	dw CooltrainermCodySeenText
-
-	; text when trainer beaten
-	dw CooltrainermCodyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermCodyScript
-
 CooltrainermCodyScript:
 	talkaftercancel
 	loadfont
@@ -86,24 +70,8 @@
 	end
 
 TrainerCooltrainerfFran:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_FRAN
+	trainer EVENT_BEAT_COOLTRAINERF_FRAN, COOLTRAINERF, FRAN, CooltrainerfFranSeenText, CooltrainerfFranBeatenText, $0000, CooltrainerfFranScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, FRAN
-
-	; text when seen
-	dw CooltrainerfFranSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfFranBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfFranScript
-
 CooltrainerfFranScript:
 	talkaftercancel
 	loadfont
@@ -161,7 +129,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $7, $1, 3, GROUP_BLACKTHORN_GYM_1F, MAP_BLACKTHORN_GYM_1F
 	warp_def $9, $7, 4, GROUP_BLACKTHORN_GYM_1F, MAP_BLACKTHORN_GYM_1F
@@ -169,19 +137,19 @@
 	warp_def $7, $8, 6, GROUP_BLACKTHORN_GYM_1F, MAP_BLACKTHORN_GYM_1F
 	warp_def $3, $8, 7, GROUP_BLACKTHORN_GYM_1F, MAP_BLACKTHORN_GYM_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 5, 8, $9, $0, 255, 255, $82, 1, TrainerCooltrainermCody, -1
-	person_event SPRITE_COOLTRAINER_F, 15, 8, $8, $0, 255, 255, $82, 1, TrainerCooltrainerfFran, -1
-	person_event SPRITE_BOULDER, 6, 12, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
-	person_event SPRITE_BOULDER, 7, 6, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
-	person_event SPRITE_BOULDER, 20, 10, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
-	person_event SPRITE_BOULDER, 7, 7, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, -1
-	person_event SPRITE_BOULDER, 5, 10, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, -1
-	person_event SPRITE_BOULDER, 18, 12, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_COOLTRAINER_M, 5, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainermCody, -1
+	person_event SPRITE_COOLTRAINER_F, 15, 8, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainerfFran, -1
+	person_event SPRITE_BOULDER, 6, 12, OW_LEFT | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
+	person_event SPRITE_BOULDER, 7, 6, OW_LEFT | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
+	person_event SPRITE_BOULDER, 20, 10, OW_LEFT | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
+	person_event SPRITE_BOULDER, 7, 7, OW_LEFT | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_BOULDER, 5, 10, OW_LEFT | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_BOULDER, 18, 12, OW_LEFT | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, -1
--- a/maps/BlackthornMart.asm
+++ b/maps/BlackthornMart.asm
@@ -1,8 +1,8 @@
 BlackthornMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x195a5d:
@@ -45,19 +45,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $7, $3, 4, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x195a5d, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 11, $5, $2, 255, 255, $0, 0, CooltrainerMScript_0x195a64, -1
-	person_event SPRITE_BLACK_BELT, 6, 9, $6, $0, 255, 255, $a0, 0, BlackBeltScript_0x195a67, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x195a5d, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 11, OW_UP | $1, $2, -1, -1, $0, 0, CooltrainerMScript_0x195a64, -1
+	person_event SPRITE_BLACK_BELT, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BlackBeltScript_0x195a67, -1
--- a/maps/BlackthornPokeCenter1F.asm
+++ b/maps/BlackthornPokeCenter1F.asm
@@ -1,8 +1,8 @@
 BlackthornPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x195b79:
@@ -47,21 +47,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 5, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $7, $4, 5, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x195b79, -1
-	person_event SPRITE_GENTLEMAN, 7, 9, $6, $0, 255, 255, $0, 0, GentlemanScript_0x195b7c, -1
-	person_event SPRITE_TWIN, 8, 5, $3, $0, 255, 255, $a0, 0, TwinScript_0x195b7f, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 11, $5, $1, 255, 255, $80, 0, CooltrainerMScript_0x195b82, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x195b79, -1
+	person_event SPRITE_GENTLEMAN, 7, 9, OW_UP | $2, $0, -1, -1, $0, 0, GentlemanScript_0x195b7c, -1
+	person_event SPRITE_TWIN, 8, 5, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x195b7f, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x195b82, -1
--- a/maps/BluesHouse.asm
+++ b/maps/BluesHouse.asm
@@ -1,8 +1,8 @@
 BluesHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 DaisyScript_0x19b0d0:
@@ -30,10 +30,10 @@
 	writetext UnknownText_0x19b266
 	closetext
 	loadmovesprites
-	special Function8c084
+	special FadeBlackBGMap
 	playmusic MUSIC_HEAL
 	pause 60
-	special Function8c079
+	special FadeInBGMap
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x19b296
@@ -145,17 +145,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_PALLET_TOWN, MAP_PALLET_TOWN
 	warp_def $7, $3, 2, GROUP_PALLET_TOWN, MAP_PALLET_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_DAISY, 7, 6, $3, $0, 255, 255, $0, 0, DaisyScript_0x19b0d0, -1
+	person_event SPRITE_DAISY, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, DaisyScript_0x19b0d0, -1
--- a/maps/BrunosRoom.asm
+++ b/maps/BrunosRoom.asm
@@ -1,5 +1,5 @@
 BrunosRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x180993, $0000
 	dw UnknownScript_0x180997, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -21,7 +21,7 @@
 	end
 
 UnknownScript_0x180998:
-	checkevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	checkevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	iffalse UnknownScript_0x1809a2
 	changeblock $4, $e, $2a
 UnknownScript_0x1809a2:
@@ -40,7 +40,7 @@
 	reloadmappart
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	setevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	waitbutton
 	end
 
@@ -130,7 +130,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $11, $4, 3, GROUP_KOGAS_ROOM, MAP_KOGAS_ROOM
 	warp_def $11, $5, 4, GROUP_KOGAS_ROOM, MAP_KOGAS_ROOM
@@ -137,12 +137,12 @@
 	warp_def $2, $4, 1, GROUP_KARENS_ROOM, MAP_KARENS_ROOM
 	warp_def $2, $5, 2, GROUP_KARENS_ROOM, MAP_KARENS_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_BRUNO, 11, 9, $6, $0, 255, 255, $b0, 0, BrunoScript_0x1809c5, -1
+	person_event SPRITE_BRUNO, 11, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BrunoScript_0x1809c5, -1
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -1,5 +1,5 @@
 BurnedTower1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
@@ -7,7 +7,7 @@
 	dw UnknownScript_0x185bf6, $0000
 	dw UnknownScript_0x185bf7, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -37,7 +37,7 @@
 
 UnknownScript_0x185c0d:
 	spriteface $3, DOWN
-	showemote $0, $3, 15
+	showemote EMOTE_SHOCK, $3, 15
 	applymovement $3, MovementData_0x185cd3
 	loadfont
 	writetext UnknownText_0x185ecc
@@ -48,7 +48,7 @@
 	end
 
 UnknownScript_0x185c25:
-	showemote $0, $4, 15
+	showemote EMOTE_SHOCK, $4, 15
 	special Functionc48f
 	pause 15
 	spriteface $4, RIGHT
@@ -97,11 +97,11 @@
 	closetext
 	loadmovesprites
 	dotrigger $2
-	setevent EVENT_6C5
+	setevent EVENT_RIVAL_BURNED_TOWER
 	special Functionc48f
 	pause 15
 	earthquake 50
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playsound SFX_ENTER_DOOR
 	waitbutton
 	changeblock $a, $8, $25
@@ -109,7 +109,7 @@
 	pause 15
 	applymovement $0, MovementData_0x185cd1
 	playsound SFX_KINESIS
-	showemote $0, $4, 20
+	showemote EMOTE_SHOCK, $4, 20
 	loadfont
 	writetext UnknownText_0x185e75
 	closetext
@@ -129,13 +129,11 @@
 	jumpstd smashrock
 
 MapBurnedTower1FSignpostItem0:
-	dw $0080
-	db ETHER
+	dwb EVENT_BURNED_TOWER_1F_HIDDEN_ETHER, ETHER
 	
 
 MapBurnedTower1FSignpostItem1:
-	dw $00ff
-	db ULTRA_BALL
+	dwb EVENT_BURNED_TOWER_1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
 ItemFragment_0x185ccb:
@@ -283,7 +281,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 14
 	warp_def $f, $9, 13, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $f, $a, 13, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
@@ -300,19 +298,19 @@
 	warp_def $e, $f, 5, GROUP_BURNED_TOWER_B1F, MAP_BURNED_TOWER_B1F
 	warp_def $f, $7, 6, GROUP_BURNED_TOWER_B1F, MAP_BURNED_TOWER_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 1, $9, $b, $0, UnknownScript_0x185c25, $0, $0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 8, $7, MapBurnedTower1FSignpostItem0
-	signpost 11, 13, $7, MapBurnedTower1FSignpostItem1
+	signpost 7, 8, SIGNPOST_ITEM, MapBurnedTower1FSignpostItem0
+	signpost 11, 13, SIGNPOST_ITEM, MapBurnedTower1FSignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_ROCK, 8, 19, $18, $0, 255, 255, $0, 0, BurnedTower1FRock, -1
-	person_event SPRITE_SUPER_NERD, 16, 16, $3, $0, 255, 255, $90, 0, SuperNerdScript_0x185cbc, EVENT_765
-	person_event SPRITE_SILVER, 13, 12, $8, $0, 255, 255, $2, 3, ObjectEvent, EVENT_6C5
-	person_event SPRITE_MORTY, 18, 18, $2, $11, 255, 255, $b0, 0, MortyScript_0x185cbf, EVENT_764
-	person_event SPRITE_POKE_BALL, 6, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x185ccb, EVENT_656
+	person_event SPRITE_ROCK, 8, 19, OW_LEFT | $10, $0, -1, -1, $0, 0, BurnedTower1FRock, -1
+	person_event SPRITE_SUPER_NERD, 16, 16, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x185cbc, EVENT_BURNED_TOWER_1F_EUSINE
+	person_event SPRITE_SILVER, 13, 12, OW_LEFT | $0, $0, -1, -1, $2, 3, ObjectEvent, EVENT_RIVAL_BURNED_TOWER
+	person_event SPRITE_MORTY, 18, 18, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MortyScript_0x185cbf, EVENT_BURNED_TOWER_MORTY
+	person_event SPRITE_POKE_BALL, 6, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185ccb, EVENT_BURNED_TOWER_1F_HP_UP
--- a/maps/BurnedTowerB1F.asm
+++ b/maps/BurnedTowerB1F.asm
@@ -1,5 +1,5 @@
 BurnedTowerB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x18615e, $0000
 	dw UnknownScript_0x18615f, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -81,10 +81,10 @@
 	domaptrigger GROUP_ECRUTEAK_GYM, MAP_ECRUTEAK_GYM, $1
 	domaptrigger GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, $1
 	clearevent EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
-	setevent EVENT_7A8
-	clearevent EVENT_7A9
-	setevent EVENT_764
-	setevent EVENT_765
+	setevent EVENT_ECRUTEAK_GYM_GRAMPS
+	clearevent EVENT_ECRUTEAK_CITY_GRAMPS
+	setevent EVENT_BURNED_TOWER_MORTY
+	setevent EVENT_BURNED_TOWER_1F_EUSINE
 	appear $a
 	refreshscreen $0
 	changeblock $6, $e, $1b
@@ -233,7 +233,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $9, $a, 3, GROUP_BURNED_TOWER_1F, MAP_BURNED_TOWER_1F
 	warp_def $7, $11, 7, GROUP_BURNED_TOWER_1F, MAP_BURNED_TOWER_1F
@@ -242,21 +242,21 @@
 	warp_def $e, $11, 12, GROUP_BURNED_TOWER_1F, MAP_BURNED_TOWER_1F
 	warp_def $f, $7, 14, GROUP_BURNED_TOWER_1F, MAP_BURNED_TOWER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $6, $a, $0, UnknownScript_0x18616b, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_BOULDER, 12, 21, $19, $0, 255, 255, $0, 0, BurnedTowerB1FBoulder, -1
-	person_event SPRITE_RAIKOU, 7, 11, $16, $0, 255, 255, $b0, 0, ObjectEvent, EVENT_74A
-	person_event SPRITE_ENTEI, 7, 16, $16, $0, 255, 255, $80, 0, ObjectEvent, EVENT_74A
-	person_event SPRITE_SUICUNE, 8, 14, $16, $0, 255, 255, $90, 0, ObjectEvent, EVENT_74A
-	person_event SPRITE_RAIKOU, 7, 11, $6, $0, 255, 255, $d0, 0, ObjectEvent, EVENT_74B
-	person_event SPRITE_ENTEI, 7, 16, $6, $0, 255, 255, $d0, 0, ObjectEvent, EVENT_74B
-	person_event SPRITE_SUICUNE, 8, 14, $6, $0, 255, 255, $d0, 0, ObjectEvent, EVENT_74B
-	person_event SPRITE_POKE_BALL, 8, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x186231, EVENT_657
-	person_event SPRITE_SUPER_NERD, 16, 14, $7, $0, 255, 255, $90, 0, SuperNerdScript_0x186212, EVENT_EUSINE_IN_BURNED_TOWER
+	person_event SPRITE_BOULDER, 12, 21, OW_LEFT | $11, $0, -1, -1, $0, 0, BurnedTowerB1FBoulder, -1
+	person_event SPRITE_RAIKOU, 7, 11, OW_UP | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_ENTEI, 7, 16, OW_UP | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_SUICUNE, 8, 14, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_RAIKOU, 7, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_SILVER << 4) | $80, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
+	person_event SPRITE_ENTEI, 7, 16, OW_UP | $2, $0, -1, -1, (PAL_OW_SILVER << 4) | $80, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
+	person_event SPRITE_SUICUNE, 8, 14, OW_UP | $2, $0, -1, -1, (PAL_OW_SILVER << 4) | $80, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
+	person_event SPRITE_POKE_BALL, 8, 20, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x186231, EVENT_BURNED_TOWER_B1F_TM_ENDURE
+	person_event SPRITE_SUPER_NERD, 16, 14, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x186212, EVENT_EUSINE_IN_BURNED_TOWER
--- a/maps/CeladonCafe.asm
+++ b/maps/CeladonCafe.asm
@@ -1,8 +1,8 @@
 CeladonCafe_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SuperNerdScript_0x73049:
@@ -204,23 +204,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $6, 9, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $7, $7, 9, GROUP_CELADON_CITY, MAP_CELADON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 5, $0, EatathonContestPoster
-	signpost 1, 7, $0, CeladonCafeTrashcan
+	signpost 0, 5, SIGNPOST_READ, EatathonContestPoster
+	signpost 1, 7, SIGNPOST_READ, CeladonCafeTrashcan
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_SUPER_NERD, 7, 13, $8, $0, 255, 255, $b0, 0, SuperNerdScript_0x73049, -1
-	person_event SPRITE_FISHER, 10, 8, $8, $0, 255, 255, $0, 0, FisherScript_0x73051, -1
-	person_event SPRITE_FISHER, 11, 5, $9, $0, 255, 255, $a0, 0, FisherScript_0x73062, -1
-	person_event SPRITE_FISHER, 6, 5, $9, $0, 255, 255, $0, 0, FisherScript_0x73073, -1
-	person_event SPRITE_TEACHER, 7, 8, $8, $0, 255, 255, $0, 0, TeacherScript_0x73084, -1
+	person_event SPRITE_SUPER_NERD, 7, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, SuperNerdScript_0x73049, -1
+	person_event SPRITE_FISHER, 10, 8, OW_LEFT | $0, $0, -1, -1, $0, 0, FisherScript_0x73051, -1
+	person_event SPRITE_FISHER, 11, 5, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x73062, -1
+	person_event SPRITE_FISHER, 6, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, FisherScript_0x73073, -1
+	person_event SPRITE_TEACHER, 7, 8, OW_LEFT | $0, $0, -1, -1, $0, 0, TeacherScript_0x73084, -1
--- a/maps/CeladonCity.asm
+++ b/maps/CeladonCity.asm
@@ -1,8 +1,8 @@
 CeladonCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -66,8 +66,7 @@
 	jumpstd pokecentersign
 
 MapCeladonCitySignpostItem7:
-	dw $00fd
-	db PP_UP
+	dwb EVENT_CELADON_CITY_HIDDEN_PP_UP, PP_UP
 
 UnknownText_0x1a9f7d:
 	text "This POLIWRATH is"
@@ -230,7 +229,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 9
 	warp_def $9, $4, 1, GROUP_CELADON_DEPT_STORE_1F, MAP_CELADON_DEPT_STORE_1F
 	warp_def $9, $10, 1, GROUP_CELADON_MANSION_1F, MAP_CELADON_MANSION_1F
@@ -242,28 +241,28 @@
 	warp_def $1d, $a, 1, GROUP_CELADON_GYM, MAP_CELADON_GYM
 	warp_def $1d, $19, 1, GROUP_CELADON_CAFE, MAP_CELADON_CAFE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 8
-	signpost 21, 23, $0, CeladonCitySign
-	signpost 31, 11, $0, CeladonGymSign
-	signpost 9, 6, $0, CeladonCityDeptStoreSign
-	signpost 9, 13, $0, CeladonCityMansionSign
-	signpost 21, 19, $0, CeladonCityGameCornerSign
-	signpost 21, 29, $0, CeladonCityTrainerTips
-	signpost 9, 30, $0, CeladonCityPokeCenterSign
-	signpost 21, 37, $7, MapCeladonCitySignpostItem7
+	signpost 21, 23, SIGNPOST_READ, CeladonCitySign
+	signpost 31, 11, SIGNPOST_READ, CeladonGymSign
+	signpost 9, 6, SIGNPOST_READ, CeladonCityDeptStoreSign
+	signpost 9, 13, SIGNPOST_READ, CeladonCityMansionSign
+	signpost 21, 19, SIGNPOST_READ, CeladonCityGameCornerSign
+	signpost 21, 29, SIGNPOST_READ, CeladonCityTrainerTips
+	signpost 9, 30, SIGNPOST_READ, CeladonCityPokeCenterSign
+	signpost 21, 37, SIGNPOST_ITEM, MapCeladonCitySignpostItem7
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_FISHER, 15, 30, $9, $0, 255, 255, $a0, 0, FisherScript_0x1a9f43, -1
-	person_event SPRITE_POLIWAG, 15, 31, $16, $0, 255, 255, $90, 0, CeladonCityPoliwrath, -1
-	person_event SPRITE_TEACHER, 28, 24, $5, $2, 255, 255, $80, 0, TeacherScript_0x1a9f50, -1
-	person_event SPRITE_GRAMPS, 20, 18, $6, $0, 255, 255, $b0, 0, GrampsScript_0x1a9f53, -1
-	person_event SPRITE_GRAMPS, 35, 12, $7, $0, 255, 255, $80, 0, GrampsScript_0x1a9f56, -1
-	person_event SPRITE_YOUNGSTER, 17, 22, $5, $2, 255, 255, $90, 0, YoungsterScript_0x1a9f59, -1
-	person_event SPRITE_YOUNGSTER, 37, 28, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x1a9f5c, -1
-	person_event SPRITE_TEACHER, 18, 10, $2, $22, 255, 255, $a0, 0, TeacherScript_0x1a9f5f, -1
-	person_event SPRITE_LASS, 26, 11, $4, $20, 255, 255, $80, 0, LassScript_0x1a9f62, -1
+	person_event SPRITE_FISHER, 15, 30, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a9f43, -1
+	person_event SPRITE_POLIWAG, 15, 31, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CeladonCityPoliwrath, -1
+	person_event SPRITE_TEACHER, 28, 24, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x1a9f50, -1
+	person_event SPRITE_GRAMPS, 20, 18, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x1a9f53, -1
+	person_event SPRITE_GRAMPS, 35, 12, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GrampsScript_0x1a9f56, -1
+	person_event SPRITE_YOUNGSTER, 17, 22, OW_UP | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x1a9f59, -1
+	person_event SPRITE_YOUNGSTER, 37, 28, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a9f5c, -1
+	person_event SPRITE_TEACHER, 18, 10, OW_DOWN | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x1a9f5f, -1
+	person_event SPRITE_LASS, 26, 11, OW_UP | $0, $20, -1, -1, (PAL_OW_RED << 4) | $80, 0, LassScript_0x1a9f62, -1
--- a/maps/CeladonDeptStore1F.asm
+++ b/maps/CeladonDeptStore1F.asm
@@ -1,8 +1,8 @@
 CeladonDeptStore1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ReceptionistScript_0x709e0:
@@ -72,7 +72,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $7, $7, 1, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $7, $8, 1, GROUP_CELADON_CITY, MAP_CELADON_CITY
@@ -79,16 +79,16 @@
 	warp_def $0, $f, 2, GROUP_CELADON_DEPT_STORE_2F, MAP_CELADON_DEPT_STORE_2F
 	warp_def $0, $2, 1, GROUP_CELADON_DEPT_STORE_ELEVATOR, MAP_CELADON_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore1FDirectory
-	signpost 0, 3, $0, CeladonDeptStore1FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore1FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore1FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_RECEPTIONIST, 5, 14, $6, $0, 255, 255, $80, 0, ReceptionistScript_0x709e0, -1
-	person_event SPRITE_GENTLEMAN, 8, 15, $2, $11, 255, 255, $0, 0, GentlemanScript_0x709e3, -1
-	person_event SPRITE_TEACHER, 7, 9, $5, $1, 255, 255, $a0, 0, TeacherScript_0x709e6, -1
+	person_event SPRITE_RECEPTIONIST, 5, 14, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x709e0, -1
+	person_event SPRITE_GENTLEMAN, 8, 15, OW_DOWN | $2, $11, -1, -1, $0, 0, GentlemanScript_0x709e3, -1
+	person_event SPRITE_TEACHER, 7, 9, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x709e6, -1
--- a/maps/CeladonDeptStore2F.asm
+++ b/maps/CeladonDeptStore2F.asm
@@ -1,8 +1,8 @@
 CeladonDeptStore2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x70bad:
@@ -66,23 +66,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_CELADON_DEPT_STORE_3F, MAP_CELADON_DEPT_STORE_3F
 	warp_def $0, $f, 3, GROUP_CELADON_DEPT_STORE_1F, MAP_CELADON_DEPT_STORE_1F
 	warp_def $0, $2, 1, GROUP_CELADON_DEPT_STORE_ELEVATOR, MAP_CELADON_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore2FDirectory
-	signpost 0, 3, $0, CeladonDeptStore2FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore2FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore2FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $90, 0, ClerkScript_0x70bad, -1
-	person_event SPRITE_CLERK, 9, 18, $7, $0, 255, 255, $90, 0, ClerkScript_0x70bb5, -1
-	person_event SPRITE_POKEFAN_M, 6, 9, $7, $0, 255, 255, $80, 0, PokefanMScript_0x70bbd, -1
-	person_event SPRITE_YOUNGSTER, 6, 10, $8, $0, 255, 255, $a0, 0, YoungsterScript_0x70bc0, -1
+	person_event SPRITE_CLERK, 9, 17, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70bad, -1
+	person_event SPRITE_CLERK, 9, 18, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70bb5, -1
+	person_event SPRITE_POKEFAN_M, 6, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x70bbd, -1
+	person_event SPRITE_YOUNGSTER, 6, 10, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x70bc0, -1
--- a/maps/CeladonDeptStore3F.asm
+++ b/maps/CeladonDeptStore3F.asm
@@ -1,8 +1,8 @@
 CeladonDeptStore3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x70d29:
@@ -91,24 +91,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_CELADON_DEPT_STORE_2F, MAP_CELADON_DEPT_STORE_2F
 	warp_def $0, $f, 2, GROUP_CELADON_DEPT_STORE_4F, MAP_CELADON_DEPT_STORE_4F
 	warp_def $0, $2, 1, GROUP_CELADON_DEPT_STORE_ELEVATOR, MAP_CELADON_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore3FDirectory
-	signpost 0, 3, $0, CeladonDeptStore3FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore3FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore3FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_CLERK, 5, 11, $6, $0, 255, 255, $90, 0, ClerkScript_0x70d29, -1
-	person_event SPRITE_YOUNGSTER, 8, 10, $4, $10, 255, 255, $a0, 0, YoungsterScript_0x70d31, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 13, $6, $0, 255, 255, $80, 0, GameboyKidScript_0x70d34, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 14, $6, $0, 255, 255, $90, 0, GameboyKidScript_0x70d3f, -1
-	person_event SPRITE_SUPER_NERD, 8, 17, $2, $11, 255, 255, $80, 0, SuperNerdScript_0x70d4a, -1
+	person_event SPRITE_CLERK, 5, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70d29, -1
+	person_event SPRITE_YOUNGSTER, 8, 10, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x70d31, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GameboyKidScript_0x70d34, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 14, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GameboyKidScript_0x70d3f, -1
+	person_event SPRITE_SUPER_NERD, 8, 17, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x70d4a, -1
--- a/maps/CeladonDeptStore4F.asm
+++ b/maps/CeladonDeptStore4F.asm
@@ -1,8 +1,8 @@
 CeladonDeptStore4F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x70f0d:
@@ -49,22 +49,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_CELADON_DEPT_STORE_5F, MAP_CELADON_DEPT_STORE_5F
 	warp_def $0, $f, 2, GROUP_CELADON_DEPT_STORE_3F, MAP_CELADON_DEPT_STORE_3F
 	warp_def $0, $2, 1, GROUP_CELADON_DEPT_STORE_ELEVATOR, MAP_CELADON_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore4FDirectory
-	signpost 0, 3, $0, CeladonDeptStore4FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore4FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore4FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $90, 0, ClerkScript_0x70f0d, -1
-	person_event SPRITE_SUPER_NERD, 10, 11, $5, $1, 255, 255, $a0, 0, SuperNerdScript_0x70f15, -1
-	person_event SPRITE_YOUNGSTER, 6, 12, $7, $0, 255, 255, $0, 0, YoungsterScript_0x70f18, -1
+	person_event SPRITE_CLERK, 9, 17, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70f0d, -1
+	person_event SPRITE_SUPER_NERD, 10, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x70f15, -1
+	person_event SPRITE_YOUNGSTER, 6, 12, OW_UP | $3, $0, -1, -1, $0, 0, YoungsterScript_0x70f18, -1
--- a/maps/CeladonDeptStore5F.asm
+++ b/maps/CeladonDeptStore5F.asm
@@ -1,8 +1,8 @@
 CeladonDeptStore5F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x71004:
@@ -68,24 +68,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_CELADON_DEPT_STORE_4F, MAP_CELADON_DEPT_STORE_4F
 	warp_def $0, $f, 1, GROUP_CELADON_DEPT_STORE_6F, MAP_CELADON_DEPT_STORE_6F
 	warp_def $0, $2, 1, GROUP_CELADON_DEPT_STORE_ELEVATOR, MAP_CELADON_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore5FDirectory
-	signpost 0, 3, $0, CeladonDeptStore5FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore5FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore5FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_CLERK, 9, 11, $7, $0, 255, 255, $90, 0, ClerkScript_0x71004, -1
-	person_event SPRITE_CLERK, 9, 12, $7, $0, 255, 255, $90, 0, ClerkScript_0x7100c, -1
-	person_event SPRITE_GENTLEMAN, 9, 17, $2, $11, 255, 255, $80, 0, GentlemanScript_0x71014, -1
-	person_event SPRITE_SAILOR, 8, 7, $2, $11, 255, 255, $90, 0, SailorScript_0x71017, -1
-	person_event SPRITE_TEACHER, 11, 5, $9, $0, 255, 255, $a0, 0, TeacherScript_0x7101a, -1
+	person_event SPRITE_CLERK, 9, 11, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x71004, -1
+	person_event SPRITE_CLERK, 9, 12, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x7100c, -1
+	person_event SPRITE_GENTLEMAN, 9, 17, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x71014, -1
+	person_event SPRITE_SAILOR, 8, 7, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x71017, -1
+	person_event SPRITE_TEACHER, 11, 5, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x7101a, -1
--- a/maps/CeladonDeptStore6F.asm
+++ b/maps/CeladonDeptStore6F.asm
@@ -1,8 +1,8 @@
 CeladonDeptStore6F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -149,24 +149,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $0, $f, 2, GROUP_CELADON_DEPT_STORE_5F, MAP_CELADON_DEPT_STORE_5F
 	warp_def $0, $2, 1, GROUP_CELADON_DEPT_STORE_ELEVATOR, MAP_CELADON_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 0, 14, $0, CeladonDeptStore6FDirectory
-	signpost 0, 3, $0, CeladonDeptStore1FElevatorButton
-	signpost 1, 8, $1, CeladonVendingMachine
-	signpost 1, 9, $1, CeladonVendingMachine
-	signpost 1, 10, $1, CeladonVendingMachine
-	signpost 1, 11, $1, CeladonVendingMachine
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore6FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore1FElevatorButton
+	signpost 1, 8, SIGNPOST_UP, CeladonVendingMachine
+	signpost 1, 9, SIGNPOST_UP, CeladonVendingMachine
+	signpost 1, 10, SIGNPOST_UP, CeladonVendingMachine
+	signpost 1, 11, SIGNPOST_UP, CeladonVendingMachine
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_SUPER_NERD, 6, 13, $7, $0, 255, 255, $0, 0, SuperNerdScript_0x7117a, -1
-	person_event SPRITE_YOUNGSTER, 9, 16, $2, $12, 255, 255, $80, 0, YoungsterScript_0x7117d, -1
+	person_event SPRITE_SUPER_NERD, 6, 13, OW_UP | $3, $0, -1, -1, $0, 0, SuperNerdScript_0x7117a, -1
+	person_event SPRITE_YOUNGSTER, 9, 16, OW_DOWN | $2, $12, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x7117d, -1
--- a/maps/CeladonDeptStoreElevator.asm
+++ b/maps/CeladonDeptStoreElevator.asm
@@ -1,8 +1,8 @@
 CeladonDeptStoreElevator_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MapCeladonDeptStoreElevatorSignpost0Script:
@@ -33,17 +33,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $1, 255, GROUP_CELADON_DEPT_STORE_1F, MAP_CELADON_DEPT_STORE_1F
 	warp_def $3, $2, 255, GROUP_CELADON_DEPT_STORE_1F, MAP_CELADON_DEPT_STORE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 0, 3, $0, MapCeladonDeptStoreElevatorSignpost0Script
+	signpost 0, 3, SIGNPOST_READ, MapCeladonDeptStoreElevatorSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/CeladonGameCorner.asm
+++ b/maps/CeladonGameCorner.asm
@@ -1,8 +1,8 @@
 CeladonGameCorner_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x7211d:
@@ -104,7 +104,7 @@
 	if_equal $0, MapCeladonGameCornerSignpost16Script
 	refreshscreen $0
 	writebyte $0
-	special Functionc373
+	special Special_SlotMachine
 	loadmovesprites
 	end
 
@@ -111,13 +111,13 @@
 MapCeladonGameCornerSignpost16Script:
 	refreshscreen $0
 	writebyte $1
-	special Functionc373
+	special Special_SlotMachine
 	loadmovesprites
 	end
 
 MapCeladonGameCornerSignpost11Script:
 	refreshscreen $0
-	special Functionc380
+	special Special_CardFlip
 	loadmovesprites
 	end
 
@@ -128,7 +128,7 @@
 	loadfont
 	writetext UnknownText_0x72567
 	closetext
-	special Functionc380
+	special Special_CardFlip
 	loadmovesprites
 	end
 
@@ -274,63 +274,63 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $d, $e, 6, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $d, $f, 6, GROUP_CELADON_CITY, MAP_CELADON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 38
-	signpost 6, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 7, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 8, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 9, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 10, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 11, 1, $4, MapCeladonGameCornerSignpost11Script
-	signpost 6, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 7, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 8, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 9, 6, $0, MapCeladonGameCornerSignpost9Script
-	signpost 10, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 11, 6, $3, MapCeladonGameCornerSignpost11Script
-	signpost 6, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 9, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 7, $0, MapCeladonGameCornerSignpost16Script
-	signpost 11, 7, $4, MapCeladonGameCornerSignpost35Script
-	signpost 6, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 9, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 11, 12, $3, MapCeladonGameCornerSignpost35Script
-	signpost 6, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 9, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 11, 13, $4, MapCeladonGameCornerSignpost35Script
-	signpost 6, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 18, $0, MapCeladonGameCornerSignpost32Script
-	signpost 9, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 11, 18, $3, MapCeladonGameCornerSignpost35Script
-	signpost 0, 15, $0, MapCeladonGameCornerSignpost36Script
-	signpost 0, 9, $0, MapCeladonGameCornerSignpost37Script
+	signpost 6, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 7, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 8, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 9, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 10, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 11, 1, SIGNPOST_LEFT, MapCeladonGameCornerSignpost11Script
+	signpost 6, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 7, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 8, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 9, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost9Script
+	signpost 10, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 11, 6, SIGNPOST_RIGHT, MapCeladonGameCornerSignpost11Script
+	signpost 6, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 9, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost16Script
+	signpost 11, 7, SIGNPOST_LEFT, MapCeladonGameCornerSignpost35Script
+	signpost 6, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 9, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 11, 12, SIGNPOST_RIGHT, MapCeladonGameCornerSignpost35Script
+	signpost 6, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 9, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 11, 13, SIGNPOST_LEFT, MapCeladonGameCornerSignpost35Script
+	signpost 6, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost32Script
+	signpost 9, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 11, 18, SIGNPOST_RIGHT, MapCeladonGameCornerSignpost35Script
+	signpost 0, 15, SIGNPOST_READ, MapCeladonGameCornerSignpost36Script
+	signpost 0, 9, SIGNPOST_READ, MapCeladonGameCornerSignpost37Script
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_CLERK, 6, 9, $6, $0, 255, 255, $a0, 0, ClerkScript_0x7211d, -1
-	person_event SPRITE_RECEPTIONIST, 6, 7, $6, $0, 255, 255, $a0, 0, ReceptionistScript_0x72120, -1
-	person_event SPRITE_POKEFAN_M, 14, 18, $8, $0, 255, 255, $80, 0, PokefanMScript_0x72123, -1
-	person_event SPRITE_TEACHER, 11, 21, $9, $0, 255, 255, $90, 0, TeacherScript_0x7212e, -1
-	person_event SPRITE_FISHING_GURU, 11, 15, $9, $0, 255, 255, $a0, 0, FishingGuruScript_0x72139, -1
-	person_event SPRITE_FISHER, 14, 12, $8, $0, 255, 2, $80, 0, FisherScript_0x72144, -1
-	person_event SPRITE_FISHER, 14, 12, $8, $0, 255, 4, $80, 0, FisherScript_0x72144, -1
-	person_event SPRITE_GYM_GUY, 7, 15, $6, $0, 255, 255, $80, 0, CeladonGymGuyScript, -1
-	person_event SPRITE_GRAMPS, 12, 6, $8, $0, 255, 255, $a0, 0, GrampsScript_0x72190, -1
+	person_event SPRITE_CLERK, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ClerkScript_0x7211d, -1
+	person_event SPRITE_RECEPTIONIST, 6, 7, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x72120, -1
+	person_event SPRITE_POKEFAN_M, 14, 18, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x72123, -1
+	person_event SPRITE_TEACHER, 11, 21, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x7212e, -1
+	person_event SPRITE_FISHING_GURU, 11, 15, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingGuruScript_0x72139, -1
+	person_event SPRITE_FISHER, 14, 12, OW_LEFT | $0, $0, -1, 2, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x72144, -1
+	person_event SPRITE_FISHER, 14, 12, OW_LEFT | $0, $0, -1, 4, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x72144, -1
+	person_event SPRITE_GYM_GUY, 7, 15, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CeladonGymGuyScript, -1
+	person_event SPRITE_GRAMPS, 12, 6, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GrampsScript_0x72190, -1
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -1,8 +1,8 @@
 CeladonGameCornerPrizeRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GentlemanScript_0x726e9:
@@ -146,7 +146,7 @@
 	writetext UnknownText_0x729ad
 	closetext
 	writebyte PIKACHU
-	special Functionc230
+	special Special_GameCornerPrizeMonCheckDex
 	givepoke PIKACHU, 25, 0, 0
 	takecoins 2222
 	jump UnknownScript_0x727d3
@@ -164,7 +164,7 @@
 	writetext UnknownText_0x729ad
 	closetext
 	writebyte PORYGON
-	special Functionc230
+	special Special_GameCornerPrizeMonCheckDex
 	givepoke PORYGON, 15, 0, 0
 	takecoins 5555
 	jump UnknownScript_0x727d3
@@ -182,7 +182,7 @@
 	writetext UnknownText_0x729ad
 	closetext
 	writebyte LARVITAR
-	special Functionc230
+	special Special_GameCornerPrizeMonCheckDex
 	givepoke LARVITAR, 40, 0, 0
 	takecoins 8888
 	jump UnknownScript_0x727d3
@@ -269,20 +269,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $5, $2, 7, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $5, $3, 7, GROUP_CELADON_CITY, MAP_CELADON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 2, $0, MapCeladonGameCornerPrizeRoomSignpost0Script
-	signpost 1, 4, $0, MapCeladonGameCornerPrizeRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapCeladonGameCornerPrizeRoomSignpost0Script
+	signpost 1, 4, SIGNPOST_READ, MapCeladonGameCornerPrizeRoomSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_GENTLEMAN, 6, 4, $6, $0, 255, 255, $80, 0, GentlemanScript_0x726e9, -1
-	person_event SPRITE_PHARMACIST, 8, 8, $4, $10, 255, 255, $a0, 0, PharmacistScript_0x726ec, -1
+	person_event SPRITE_GENTLEMAN, 6, 4, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x726e9, -1
+	person_event SPRITE_PHARMACIST, 8, 8, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, PharmacistScript_0x726ec, -1
--- a/maps/CeladonGym.asm
+++ b/maps/CeladonGym.asm
@@ -1,8 +1,8 @@
 CeladonGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ErikaScript_0x72a6a:
@@ -42,24 +42,8 @@
 	end
 
 TrainerLassMichelle:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_MICHELLE
+	trainer EVENT_BEAT_LASS_MICHELLE, LASS, MICHELLE, LassMichelleSeenText, LassMichelleBeatenText, $0000, LassMichelleScript
 
-	; trainer group && trainer id
-	db LASS, MICHELLE
-
-	; text when seen
-	dw LassMichelleSeenText
-
-	; text when trainer beaten
-	dw LassMichelleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassMichelleScript
-
 LassMichelleScript:
 	talkaftercancel
 	loadfont
@@ -69,24 +53,8 @@
 	end
 
 TrainerPicnickerTanya:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_TANYA
+	trainer EVENT_BEAT_PICNICKER_TANYA, PICNICKER, TANYA, PicnickerTanyaSeenText, PicnickerTanyaBeatenText, $0000, PicnickerTanyaScript
 
-	; trainer group && trainer id
-	db PICNICKER, TANYA
-
-	; text when seen
-	dw PicnickerTanyaSeenText
-
-	; text when trainer beaten
-	dw PicnickerTanyaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerTanyaScript
-
 PicnickerTanyaScript:
 	talkaftercancel
 	loadfont
@@ -96,24 +64,8 @@
 	end
 
 TrainerBeautyJulia:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_JULIA
+	trainer EVENT_BEAT_BEAUTY_JULIA, BEAUTY, JULIA, BeautyJuliaSeenText, BeautyJuliaBeatenText, $0000, BeautyJuliaScript
 
-	; trainer group && trainer id
-	db BEAUTY, JULIA
-
-	; text when seen
-	dw BeautyJuliaSeenText
-
-	; text when trainer beaten
-	dw BeautyJuliaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyJuliaScript
-
 BeautyJuliaScript:
 	talkaftercancel
 	loadfont
@@ -123,24 +75,8 @@
 	end
 
 TrainerTwinsJoandzoe1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_JO_AND_ZOE
+	trainer EVENT_BEAT_TWINS_JO_AND_ZOE, TWINS, JOANDZOE1, TwinsJoandzoe1SeenText, TwinsJoandzoe1BeatenText, $0000, TwinsJoandzoe1Script
 
-	; trainer group && trainer id
-	db TWINS, JOANDZOE1
-
-	; text when seen
-	dw TwinsJoandzoe1SeenText
-
-	; text when trainer beaten
-	dw TwinsJoandzoe1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsJoandzoe1Script
-
 TwinsJoandzoe1Script:
 	talkaftercancel
 	loadfont
@@ -150,24 +86,8 @@
 	end
 
 TrainerTwinsJoandzoe2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_JO_AND_ZOE
+	trainer EVENT_BEAT_TWINS_JO_AND_ZOE, TWINS, JOANDZOE2, TwinsJoandzoe2SeenText, TwinsJoandzoe2BeatenText, $0000, TwinsJoandzoe2Script
 
-	; trainer group && trainer id
-	db TWINS, JOANDZOE2
-
-	; text when seen
-	dw TwinsJoandzoe2SeenText
-
-	; text when trainer beaten
-	dw TwinsJoandzoe2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsJoandzoe2Script
-
 TwinsJoandzoe2Script:
 	talkaftercancel
 	loadfont
@@ -343,24 +263,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $4, 8, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $11, $5, 8, GROUP_CELADON_CITY, MAP_CELADON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 3, $0, CeladonGymStatue
-	signpost 15, 6, $0, CeladonGymStatue
+	signpost 15, 3, SIGNPOST_READ, CeladonGymStatue
+	signpost 15, 6, SIGNPOST_READ, CeladonGymStatue
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_ERIKA, 7, 9, $6, $0, 255, 255, $a0, 0, ErikaScript_0x72a6a, -1
-	person_event SPRITE_LASS, 12, 11, $8, $0, 255, 255, $92, 2, TrainerLassMichelle, -1
-	person_event SPRITE_LASS, 12, 6, $9, $0, 255, 255, $a2, 2, TrainerPicnickerTanya, -1
-	person_event SPRITE_BUENA, 9, 7, $9, $0, 255, 255, $92, 2, TrainerBeautyJulia, -1
-	person_event SPRITE_TWIN, 14, 8, $6, $0, 255, 255, $82, 1, TrainerTwinsJoandzoe1, -1
-	person_event SPRITE_TWIN, 14, 9, $6, $0, 255, 255, $82, 1, TrainerTwinsJoandzoe2, -1
+	person_event SPRITE_ERIKA, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ErikaScript_0x72a6a, -1
+	person_event SPRITE_LASS, 12, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerLassMichelle, -1
+	person_event SPRITE_LASS, 12, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerPicnickerTanya, -1
+	person_event SPRITE_BUENA, 9, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerBeautyJulia, -1
+	person_event SPRITE_TWIN, 14, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsJoandzoe1, -1
+	person_event SPRITE_TWIN, 14, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsJoandzoe2, -1
--- a/maps/CeladonMansion1F.asm
+++ b/maps/CeladonMansion1F.asm
@@ -1,8 +1,8 @@
 CeladonMansion1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CeladonMansionManager:
@@ -72,7 +72,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $9, $6, 2, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $9, $7, 2, GROUP_CELADON_CITY, MAP_CELADON_CITY
@@ -80,18 +80,18 @@
 	warp_def $0, $0, 1, GROUP_CELADON_MANSION_2F, MAP_CELADON_MANSION_2F
 	warp_def $0, $7, 4, GROUP_CELADON_MANSION_2F, MAP_CELADON_MANSION_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 8, 5, $1, CeladonMansionManagersSuiteSign
-	signpost 3, 0, $0, CeladonMansion1fBookshelf
-	signpost 3, 2, $0, CeladonMansion1fBookshelf
+	signpost 8, 5, SIGNPOST_UP, CeladonMansionManagersSuiteSign
+	signpost 3, 0, SIGNPOST_READ, CeladonMansion1fBookshelf
+	signpost 3, 2, SIGNPOST_READ, CeladonMansion1fBookshelf
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_GRANNY, 9, 5, $3, $0, 255, 255, $0, 0, CeladonMansionManager, -1
-	person_event SPRITE_GROWLITHE, 10, 6, $16, $0, 255, 255, $0, 0, CeladonMansion1FMeowth, -1
-	person_event SPRITE_CLEFAIRY, 8, 7, $16, $0, 255, 255, $0, 0, CeladonMansion1FClefairy, -1
-	person_event SPRITE_GROWLITHE, 8, 8, $16, $2, 255, 255, $90, 0, CeladonMansion1FNidoranF, -1
+	person_event SPRITE_GRANNY, 9, 5, OW_DOWN | $3, $0, -1, -1, $0, 0, CeladonMansionManager, -1
+	person_event SPRITE_GROWLITHE, 10, 6, OW_UP | $12, $0, -1, -1, $0, 0, CeladonMansion1FMeowth, -1
+	person_event SPRITE_CLEFAIRY, 8, 7, OW_UP | $12, $0, -1, -1, $0, 0, CeladonMansion1FClefairy, -1
+	person_event SPRITE_GROWLITHE, 8, 8, OW_UP | $12, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CeladonMansion1FNidoranF, -1
--- a/maps/CeladonMansion2F.asm
+++ b/maps/CeladonMansion2F.asm
@@ -1,8 +1,8 @@
 CeladonMansion2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CeladonMansion2FComputer:
@@ -53,7 +53,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $0, 4, GROUP_CELADON_MANSION_1F, MAP_CELADON_MANSION_1F
 	warp_def $0, $1, 2, GROUP_CELADON_MANSION_3F, MAP_CELADON_MANSION_3F
@@ -60,14 +60,14 @@
 	warp_def $0, $6, 3, GROUP_CELADON_MANSION_3F, MAP_CELADON_MANSION_3F
 	warp_def $0, $7, 5, GROUP_CELADON_MANSION_1F, MAP_CELADON_MANSION_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 3, 0, $0, CeladonMansion2FComputer
-	signpost 8, 5, $1, CeladonMansion2FSign
-	signpost 3, 2, $0, CeladonMansion2FBookshelf
+	signpost 3, 0, SIGNPOST_READ, CeladonMansion2FComputer
+	signpost 8, 5, SIGNPOST_UP, CeladonMansion2FSign
+	signpost 3, 2, SIGNPOST_READ, CeladonMansion2FBookshelf
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/CeladonMansion3F.asm
+++ b/maps/CeladonMansion3F.asm
@@ -1,8 +1,8 @@
 CeladonMansion3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CooltrainerMScript_0x71670:
@@ -187,7 +187,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $0, 1, GROUP_CELADON_MANSION_ROOF, MAP_CELADON_MANSION_ROOF
 	warp_def $0, $1, 2, GROUP_CELADON_MANSION_2F, MAP_CELADON_MANSION_2F
@@ -194,19 +194,19 @@
 	warp_def $0, $6, 3, GROUP_CELADON_MANSION_2F, MAP_CELADON_MANSION_2F
 	warp_def $0, $7, 2, GROUP_CELADON_MANSION_ROOF, MAP_CELADON_MANSION_ROOF
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 8, 5, $1, MapCeladonMansion3FSignpost0Script
-	signpost 3, 4, $1, MapCeladonMansion3FSignpost1Script
-	signpost 6, 1, $1, MapCeladonMansion3FSignpost2Script
-	signpost 3, 1, $1, MapCeladonMansion3FSignpost3Script
+	signpost 8, 5, SIGNPOST_UP, MapCeladonMansion3FSignpost0Script
+	signpost 3, 4, SIGNPOST_UP, MapCeladonMansion3FSignpost1Script
+	signpost 6, 1, SIGNPOST_UP, MapCeladonMansion3FSignpost2Script
+	signpost 3, 1, SIGNPOST_UP, MapCeladonMansion3FSignpost3Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_COOLTRAINER_M, 10, 7, $3, $0, 255, 255, $80, 0, CooltrainerMScript_0x71670, -1
-	person_event SPRITE_GYM_GUY, 8, 7, $7, $0, 255, 255, $90, 0, GymGuyScript_0x71696, -1
-	person_event SPRITE_SUPER_NERD, 11, 4, $7, $0, 255, 255, $90, 0, SuperNerdScript_0x716bc, -1
-	person_event SPRITE_FISHER, 8, 4, $7, $2, 255, 255, $80, 0, FisherScript_0x716bf, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 7, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x71670, -1
+	person_event SPRITE_GYM_GUY, 8, 7, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x71696, -1
+	person_event SPRITE_SUPER_NERD, 11, 4, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x716bc, -1
+	person_event SPRITE_FISHER, 8, 4, OW_UP | $3, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x716bf, -1
--- a/maps/CeladonMansionRoof.asm
+++ b/maps/CeladonMansionRoof.asm
@@ -1,8 +1,8 @@
 CeladonMansionRoof_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FisherScript_0x71a39:
@@ -34,19 +34,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $1, $1, 1, GROUP_CELADON_MANSION_3F, MAP_CELADON_MANSION_3F
 	warp_def $1, $6, 4, GROUP_CELADON_MANSION_3F, MAP_CELADON_MANSION_3F
 	warp_def $5, $2, 1, GROUP_CELADON_MANSION_ROOF_HOUSE, MAP_CELADON_MANSION_ROOF_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 1, 6, $4, MapCeladonMansionRoofSignpost0Script
+	signpost 1, 6, SIGNPOST_LEFT, MapCeladonMansionRoofSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHER, 9, 11, $4, $10, 255, 255, $90, 0, FisherScript_0x71a39, -1
+	person_event SPRITE_FISHER, 9, 11, OW_UP | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x71a39, -1
--- a/maps/CeladonMansionRoofHouse.asm
+++ b/maps/CeladonMansionRoofHouse.asm
@@ -1,8 +1,8 @@
 CeladonMansionRoofHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PharmacistScript_0x71afd:
@@ -117,17 +117,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_CELADON_MANSION_ROOF, MAP_CELADON_MANSION_ROOF
 	warp_def $7, $3, 3, GROUP_CELADON_MANSION_ROOF, MAP_CELADON_MANSION_ROOF
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_PHARMACIST, 6, 7, $6, $20, 255, 255, $a0, 0, PharmacistScript_0x71afd, -1
+	person_event SPRITE_PHARMACIST, 6, 7, OW_UP | $2, $20, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, PharmacistScript_0x71afd, -1
--- a/maps/CeladonPokeCenter1F.asm
+++ b/maps/CeladonPokeCenter1F.asm
@@ -1,8 +1,8 @@
 CeladonPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x71e22:
@@ -142,22 +142,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 5, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $7, $4, 5, GROUP_CELADON_CITY, MAP_CELADON_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x71e22, -1
-	person_event SPRITE_GENTLEMAN, 9, 5, $5, $1, 255, 255, $0, 0, GentlemanScript_0x71e25, -1
-	person_event SPRITE_PHARMACIST, 7, 4, $6, $0, 255, 255, $80, 0, PharmacistScript_0x71e2b, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 12, $5, $1, 255, 255, $a0, 0, CooltrainerFScript_0x71e28, -1
-	person_event SPRITE_SUPER_NERD, 7, 8, $6, $0, 255, 255, $90, 0, SuperNerdScript_0x71e2e, EVENT_SET_WHEN_FOUGHT_HO_OH
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x71e22, -1
+	person_event SPRITE_GENTLEMAN, 9, 5, OW_UP | $1, $1, -1, -1, $0, 0, GentlemanScript_0x71e25, -1
+	person_event SPRITE_PHARMACIST, 7, 4, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PharmacistScript_0x71e2b, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 12, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x71e28, -1
+	person_event SPRITE_SUPER_NERD, 7, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x71e2e, EVENT_SET_WHEN_FOUGHT_HO_OH
--- a/maps/CeladonPokeCenter2FBeta.asm
+++ b/maps/CeladonPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 CeladonPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CeladonPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_CELADON_POKECENTER_1F, MAP_CELADON_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/CeruleanCity.asm
+++ b/maps/CeruleanCity.asm
@@ -1,8 +1,8 @@
 CeruleanCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -108,7 +108,7 @@
 	waitbutton
 	playsound SFX_TRANSACTION
 	waitbutton
-	showemote $0, $7, 15
+	showemote EMOTE_SHOCK, $7, 15
 	spriteface $7, LEFT
 	loadfont
 	writetext UnknownText_0x1842ee
@@ -141,8 +141,7 @@
 	jumpstd martsign
 
 MapCeruleanCitySignpostItem8:
-	dw EVENT_FOUND_BERSERK_GENE_IN_CERULEAN_CITY
-	db BERSERK_GENE
+	dwb EVENT_FOUND_BERSERK_GENE_IN_CERULEAN_CITY, BERSERK_GENE
 
 UnknownText_0x1840bc:
 	text "KANTO's POWER"
@@ -274,7 +273,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $f, $7, 1, GROUP_CERULEAN_GYM_BADGE_SPEECH_HOUSE, MAP_CERULEAN_GYM_BADGE_SPEECH_HOUSE
 	warp_def $11, $1c, 1, GROUP_CERULEAN_POLICE_STATION, MAP_CERULEAN_POLICE_STATION
@@ -283,26 +282,26 @@
 	warp_def $17, $1e, 1, GROUP_CERULEAN_GYM, MAP_CERULEAN_GYM
 	warp_def $1d, $19, 2, GROUP_CERULEAN_MART, MAP_CERULEAN_MART
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 9
-	signpost 23, 23, $0, CeruleanCitySign
-	signpost 25, 27, $0, CeruleanGymSign
-	signpost 29, 11, $0, CeruleanBikeShopSign
-	signpost 17, 25, $0, CeruleanPoliceSign
-	signpost 7, 23, $0, CeruleanCapeSign
-	signpost 29, 14, $0, CeruleanLockedDoor
-	signpost 21, 20, $0, CeruleanCityPokeCenterSign
-	signpost 29, 26, $0, CeruleanCityMartSign
-	signpost 12, 2, $7, MapCeruleanCitySignpostItem8
+	signpost 23, 23, SIGNPOST_READ, CeruleanCitySign
+	signpost 25, 27, SIGNPOST_READ, CeruleanGymSign
+	signpost 29, 11, SIGNPOST_READ, CeruleanBikeShopSign
+	signpost 17, 25, SIGNPOST_READ, CeruleanPoliceSign
+	signpost 7, 23, SIGNPOST_READ, CeruleanCapeSign
+	signpost 29, 14, SIGNPOST_READ, CeruleanLockedDoor
+	signpost 21, 20, SIGNPOST_READ, CeruleanCityPokeCenterSign
+	signpost 29, 26, SIGNPOST_READ, CeruleanCityMartSign
+	signpost 12, 2, SIGNPOST_ITEM, MapCeruleanCitySignpostItem8
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_COOLTRAINER_M, 27, 19, $2, $22, 255, 255, $90, 0, CooltrainerMScript_0x184009, -1
-	person_event SPRITE_SUPER_NERD, 19, 27, $2, $11, 255, 255, $90, 0, SuperNerdScript_0x18401d, -1
-	person_event SPRITE_SLOWPOKE, 28, 24, $1, $0, 255, 255, $0, 0, CeruleanCitySlowbro, -1
-	person_event SPRITE_COOLTRAINER_F, 28, 25, $8, $0, 255, 255, $a0, 0, CooltrainerFScript_0x18402a, -1
-	person_event SPRITE_FISHER, 30, 34, $5, $1, 255, 255, $80, 0, FisherScript_0x18404a, -1
-	person_event SPRITE_YOUNGSTER, 16, 10, $3, $1, 255, 255, $80, 0, YoungsterScript_0x184064, -1
+	person_event SPRITE_COOLTRAINER_M, 27, 19, OW_DOWN | $2, $22, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerMScript_0x184009, -1
+	person_event SPRITE_SUPER_NERD, 19, 27, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x18401d, -1
+	person_event SPRITE_SLOWPOKE, 28, 24, OW_DOWN | $1, $0, -1, -1, $0, 0, CeruleanCitySlowbro, -1
+	person_event SPRITE_COOLTRAINER_F, 28, 25, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x18402a, -1
+	person_event SPRITE_FISHER, 30, 34, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x18404a, -1
+	person_event SPRITE_YOUNGSTER, 16, 10, OW_DOWN | $3, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x184064, -1
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -1,5 +1,5 @@
 CeruleanGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x1883d9, $0000
 	dw UnknownScript_0x1883da, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x1883d9:
@@ -25,7 +25,7 @@
 	writetext UnknownText_0x1884fb
 	closetext
 	loadmovesprites
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	applymovement $2, MovementData_0x1884f7
 	loadfont
 	writetext UnknownText_0x188574
@@ -40,8 +40,8 @@
 	playsound SFX_EXIT_BUILDING
 	disappear $2
 	setevent EVENT_MET_ROCKET_GRUNT_AT_CERULEAN_GYM
-	clearevent EVENT_76C
-	clearevent EVENT_76E
+	clearevent EVENT_ROUTE_24_ROCKET
+	clearevent EVENT_ROUTE_25_MISTY_BOYFRIEND
 	dotrigger $0
 	domaptrigger GROUP_ROUTE_25, MAP_ROUTE_25, $1
 	domaptrigger GROUP_POWER_PLANT, MAP_POWER_PLANT, $0
@@ -80,24 +80,8 @@
 	end
 
 TrainerSwimmerfDiana:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_DIANA
+	trainer EVENT_BEAT_SWIMMERF_DIANA, SWIMMERF, DIANA, SwimmerfDianaSeenText, SwimmerfDianaBeatenText, $0000, SwimmerfDianaScript
 
-	; trainer group && trainer id
-	db SWIMMERF, DIANA
-
-	; text when seen
-	dw SwimmerfDianaSeenText
-
-	; text when trainer beaten
-	dw SwimmerfDianaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfDianaScript
-
 SwimmerfDianaScript:
 	talkaftercancel
 	loadfont
@@ -107,24 +91,8 @@
 	end
 
 TrainerSwimmerfBriana:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_BRIANA
+	trainer EVENT_BEAT_SWIMMERF_BRIANA, SWIMMERF, BRIANA, SwimmerfBrianaSeenText, SwimmerfBrianaBeatenText, $0000, SwimmerfBrianaScript
 
-	; trainer group && trainer id
-	db SWIMMERF, BRIANA
-
-	; text when seen
-	dw SwimmerfBrianaSeenText
-
-	; text when trainer beaten
-	dw SwimmerfBrianaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfBrianaScript
-
 SwimmerfBrianaScript:
 	talkaftercancel
 	loadfont
@@ -134,24 +102,8 @@
 	end
 
 TrainerSwimmermParker:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_PARKER
+	trainer EVENT_BEAT_SWIMMERM_PARKER, SWIMMERM, PARKER, SwimmermParkerSeenText, SwimmermParkerBeatenText, $0000, SwimmermParkerScript
 
-	; trainer group && trainer id
-	db SWIMMERM, PARKER
-
-	; text when seen
-	dw SwimmermParkerSeenText
-
-	; text when trainer beaten
-	dw SwimmermParkerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermParkerScript
-
 SwimmermParkerScript:
 	talkaftercancel
 	loadfont
@@ -177,8 +129,7 @@
 	end
 
 MapCeruleanGymSignpostItem0:
-	dw $00fb
-	db MACHINE_PART
+	dwb EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM, MACHINE_PART
 	
 
 CeruleanGymStatue1:
@@ -410,25 +361,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $4, 5, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 	warp_def $f, $5, 5, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 8, 3, $7, MapCeruleanGymSignpostItem0
-	signpost 13, 2, $0, CeruleanGymStatue1
-	signpost 13, 6, $0, CeruleanGymStatue2
+	signpost 8, 3, SIGNPOST_ITEM, MapCeruleanGymSignpostItem0
+	signpost 13, 2, SIGNPOST_READ, CeruleanGymStatue1
+	signpost 13, 6, SIGNPOST_READ, CeruleanGymStatue2
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_ROCKET, 14, 8, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_76D
-	person_event SPRITE_MISTY, 7, 9, $6, $0, 255, 255, $80, 0, MistyScript_0x188432, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GIRL, 10, 8, $9, $0, 255, 255, $a2, 3, TrainerSwimmerfDiana, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GIRL, 13, 5, $9, $0, 255, 255, $a2, 1, TrainerSwimmerfBriana, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GUY, 13, 12, $8, $0, 255, 255, $82, 3, TrainerSwimmermParker, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $90, 0, CeruleanGymGuyScript, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_ROCKET, 14, 8, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_CERULEAN_GYM_ROCKET
+	person_event SPRITE_MISTY, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, MistyScript_0x188432, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GIRL, 10, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfDiana, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GIRL, 13, 5, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerSwimmerfBriana, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GUY, 13, 12, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermParker, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_GYM_GUY, 17, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CeruleanGymGuyScript, EVENT_TRAINERS_IN_CERULEAN_GYM
--- a/maps/CeruleanGymBadgeSpeechHouse.asm
+++ b/maps/CeruleanGymBadgeSpeechHouse.asm
@@ -1,8 +1,8 @@
 CeruleanGymBadgeSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x188002:
@@ -17,17 +17,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 	warp_def $7, $3, 1, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_M, 7, 6, $9, $0, 255, 255, $0, 0, PokefanMScript_0x188002, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, PokefanMScript_0x188002, -1
--- a/maps/CeruleanMart.asm
+++ b/maps/CeruleanMart.asm
@@ -1,8 +1,8 @@
 CeruleanMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x188ac0:
@@ -44,19 +44,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 	warp_def $7, $3, 6, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x188ac0, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 5, $6, $0, 255, 255, $a0, 0, CooltrainerMScript_0x188ac7, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 11, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x188aca, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x188ac0, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 5, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerMScript_0x188ac7, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 11, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x188aca, -1
--- a/maps/CeruleanPokeCenter1F.asm
+++ b/maps/CeruleanPokeCenter1F.asm
@@ -1,8 +1,8 @@
 CeruleanPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x18820f:
@@ -61,20 +61,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 4, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 	warp_def $7, $4, 4, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18820f, -1
-	person_event SPRITE_SUPER_NERD, 8, 12, $5, $1, 255, 255, $0, 0, SuperNerdScript_0x188212, -1
-	person_event SPRITE_GYM_GUY, 9, 5, $2, $11, 255, 255, $a0, 0, GymGuyScript_0x18821e, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x18820f, -1
+	person_event SPRITE_SUPER_NERD, 8, 12, OW_UP | $1, $1, -1, -1, $0, 0, SuperNerdScript_0x188212, -1
+	person_event SPRITE_GYM_GUY, 9, 5, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GymGuyScript_0x18821e, -1
--- a/maps/CeruleanPokeCenter2FBeta.asm
+++ b/maps/CeruleanPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 CeruleanPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CeruleanPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 1, GROUP_CERULEAN_POKECENTER_1F, MAP_CERULEAN_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/CeruleanPoliceStation.asm
+++ b/maps/CeruleanPoliceStation.asm
@@ -1,8 +1,8 @@
 CeruleanPoliceStation_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FishingGuruScript_0x18804a:
@@ -42,19 +42,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 	warp_def $7, $3, 2, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_FISHING_GURU, 5, 9, $7, $0, 255, 255, $a0, 0, FishingGuruScript_0x18804a, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $8, $0, 255, 255, $90, 0, PokefanFScript_0x18804d, -1
-	person_event SPRITE_DIGLETT, 9, 7, $16, $0, 255, 255, $b0, 0, DiglettScript_0x188050, -1
+	person_event SPRITE_FISHING_GURU, 5, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingGuruScript_0x18804a, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanFScript_0x18804d, -1
+	person_event SPRITE_DIGLETT, 9, 7, OW_UP | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, DiglettScript_0x188050, -1
--- a/maps/CeruleanTradeSpeechHouse.asm
+++ b/maps/CeruleanTradeSpeechHouse.asm
@@ -1,8 +1,8 @@
 CeruleanTradeSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrannyScript_0x188133:
@@ -51,20 +51,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 	warp_def $7, $3, 3, GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_GRANNY, 8, 6, $9, $0, 255, 255, $90, 0, GrannyScript_0x188133, -1
-	person_event SPRITE_GRAMPS, 6, 5, $2, $0, 255, 255, $a0, 0, GrampsScript_0x188136, -1
-	person_event SPRITE_RHYDON, 6, 9, $16, $0, 255, 255, $b0, 0, RhydonScript_0x188139, -1
-	person_event SPRITE_ZUBAT, 10, 9, $16, $0, 255, 255, $0, 0, ZubatScript_0x188143, -1
+	person_event SPRITE_GRANNY, 8, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrannyScript_0x188133, -1
+	person_event SPRITE_GRAMPS, 6, 5, OW_DOWN | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GrampsScript_0x188136, -1
+	person_event SPRITE_RHYDON, 6, 9, OW_UP | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, RhydonScript_0x188139, -1
+	person_event SPRITE_ZUBAT, 10, 9, OW_UP | $12, $0, -1, -1, $0, 0, ZubatScript_0x188143, -1
--- a/maps/CharcoalKiln.asm
+++ b/maps/CharcoalKiln.asm
@@ -1,8 +1,8 @@
 CharcoalKiln_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CharcoalKilnBoss:
@@ -147,22 +147,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $7, $3, 2, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, CharcoalKilnBookshelf
-	signpost 1, 1, $0, CharcoalKilnBookshelf
-	signpost 1, 7, $0, CharcoalKilnRadio
+	signpost 1, 0, SIGNPOST_READ, CharcoalKilnBookshelf
+	signpost 1, 1, SIGNPOST_READ, CharcoalKilnBookshelf
+	signpost 1, 7, SIGNPOST_READ, CharcoalKilnRadio
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_BLACK_BELT, 7, 6, $3, $0, 255, 255, $0, 0, CharcoalKilnBoss, EVENT_6F7
-	person_event SPRITE_YOUNGSTER, 7, 9, $2, $11, 255, 255, $0, 0, CharcoalKilnApprentice, EVENT_6F6
-	person_event SPRITE_MOLTRES, 10, 9, $16, $22, 255, 255, $b0, 0, CharcoalKilnFarfetchd, EVENT_6F5
+	person_event SPRITE_BLACK_BELT, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, CharcoalKilnBoss, EVENT_CHARCOAL_KILN_BOSS
+	person_event SPRITE_YOUNGSTER, 7, 9, OW_DOWN | $2, $11, -1, -1, $0, 0, CharcoalKilnApprentice, EVENT_CHARCOAL_KILN_APPRENTICE
+	person_event SPRITE_MOLTRES, 10, 9, OW_UP | $12, $22, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CharcoalKilnFarfetchd, EVENT_CHARCOAL_KILN_FARFETCH_D
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -1,5 +1,5 @@
 CherrygroveCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw .Trigger1, $0000
 	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -102,7 +102,7 @@
 
 UnknownScript_0x19c0ae:
 	spriteface $0, RIGHT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	appear $3
@@ -548,7 +548,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $3, $17, 2, GROUP_CHERRYGROVE_MART, MAP_CHERRYGROVE_MART
 	warp_def $3, $1d, 1, GROUP_CHERRYGROVE_POKECENTER_1F, MAP_CHERRYGROVE_POKECENTER_1F
@@ -556,22 +556,22 @@
 	warp_def $9, $19, 1, GROUP_GUIDE_GENTS_HOUSE, MAP_GUIDE_GENTS_HOUSE
 	warp_def $b, $1f, 1, GROUP_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, MAP_CHERRYGROVE_EVOLUTION_SPEECH_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 1, $6, $21, $0, UnknownScript_0x19c0ae, $0, $0
 	xy_trigger 1, $7, $21, $0, UnknownScript_0x19c0aa, $0, $0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 8, 30, $0, CherrygroveCitySign
-	signpost 9, 23, $0, GuideGentsHouseSign
-	signpost 3, 24, $0, CherrygroveCityMartSign
-	signpost 3, 30, $0, CherrygroveCityPokeCenterSign
+	signpost 8, 30, SIGNPOST_READ, CherrygroveCitySign
+	signpost 9, 23, SIGNPOST_READ, GuideGentsHouseSign
+	signpost 3, 24, SIGNPOST_READ, CherrygroveCityMartSign
+	signpost 3, 30, SIGNPOST_READ, CherrygroveCityPokeCenterSign
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_GRAMPS, 10, 36, $6, $0, 255, 255, $0, 0, CherrygroveCityGuideGent, EVENT_6FE
-	person_event SPRITE_SILVER, 10, 43, $3, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6BE
-	person_event SPRITE_TEACHER, 16, 31, $5, $1, 255, 255, $90, 0, TeacherScript_0x19c146, -1
-	person_event SPRITE_YOUNGSTER, 11, 27, $5, $1, 255, 255, $80, 0, YoungsterScript_0x19c15a, -1
-	person_event SPRITE_FISHER, 16, 11, $9, $0, 255, 255, $a0, 0, MysticWaterGuy, -1
+	person_event SPRITE_GRAMPS, 10, 36, OW_UP | $2, $0, -1, -1, $0, 0, CherrygroveCityGuideGent, EVENT_GUIDE_GENT_IN_HIS_HOUSE
+	person_event SPRITE_SILVER, 10, 43, OW_DOWN | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_CHERRYGROVE_CITY
+	person_event SPRITE_TEACHER, 16, 31, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x19c146, -1
+	person_event SPRITE_YOUNGSTER, 11, 27, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x19c15a, -1
+	person_event SPRITE_FISHER, 16, 11, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, MysticWaterGuy, -1
--- a/maps/CherrygroveEvolutionSpeechHouse.asm
+++ b/maps/CherrygroveEvolutionSpeechHouse.asm
@@ -1,8 +1,8 @@
 CherrygroveEvolutionSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 YoungsterScript_0x196cb2:
@@ -41,20 +41,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 5, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 	warp_def $7, $3, 5, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, CherrygroveEvolutionSpeechHouseBookshelf
-	signpost 1, 1, $0, CherrygroveEvolutionSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CherrygroveEvolutionSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CherrygroveEvolutionSpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_LASS, 9, 7, $8, $0, 255, 255, $a0, 0, LassScript_0x196cb9, -1
-	person_event SPRITE_YOUNGSTER, 9, 6, $9, $0, 255, 255, $80, 0, YoungsterScript_0x196cb2, -1
+	person_event SPRITE_LASS, 9, 7, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x196cb9, -1
+	person_event SPRITE_YOUNGSTER, 9, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x196cb2, -1
--- a/maps/CherrygroveGymSpeechHouse.asm
+++ b/maps/CherrygroveGymSpeechHouse.asm
@@ -1,8 +1,8 @@
 CherrygroveGymSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x196ae1:
@@ -44,20 +44,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 	warp_def $7, $3, 3, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, CherrygroveGymSpeechHouseBookshelf
-	signpost 1, 1, $0, CherrygroveGymSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CherrygroveGymSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CherrygroveGymSpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $0, 0, PokefanMScript_0x196ae1, -1
-	person_event SPRITE_BUG_CATCHER, 9, 9, $5, $1, 255, 255, $80, 0, BugCatcherScript_0x196ae4, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, OW_UP | $2, $0, -1, -1, $0, 0, PokefanMScript_0x196ae1, -1
+	person_event SPRITE_BUG_CATCHER, 9, 9, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x196ae4, -1
--- a/maps/CherrygroveMart.asm
+++ b/maps/CherrygroveMart.asm
@@ -1,8 +1,8 @@
 CherrygroveMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x19680a:
@@ -70,19 +70,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 	warp_def $7, $3, 1, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x19680a, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 11, $5, $2, 255, 255, $0, 0, CooltrainerMScript_0x19681d, -1
-	person_event SPRITE_YOUNGSTER, 9, 6, $6, $0, 255, 255, $80, 0, YoungsterScript_0x196831, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x19680a, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 11, OW_UP | $1, $2, -1, -1, $0, 0, CooltrainerMScript_0x19681d, -1
+	person_event SPRITE_YOUNGSTER, 9, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x196831, -1
--- a/maps/CherrygrovePokeCenter1F.asm
+++ b/maps/CherrygrovePokeCenter1F.asm
@@ -1,8 +1,8 @@
 CherrygrovePokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x19696d:
@@ -66,21 +66,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 2, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 	warp_def $7, $4, 2, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x19696d, -1
-	person_event SPRITE_FISHER, 7, 6, $7, $0, 255, 255, $80, 0, FisherScript_0x196970, -1
-	person_event SPRITE_GENTLEMAN, 10, 12, $7, $0, 255, 255, $0, 0, GentlemanScript_0x196973, -1
-	person_event SPRITE_TEACHER, 10, 5, $9, $0, 255, 255, $a0, 0, TeacherScript_0x196976, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x19696d, -1
+	person_event SPRITE_FISHER, 7, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x196970, -1
+	person_event SPRITE_GENTLEMAN, 10, 12, OW_UP | $3, $0, -1, -1, $0, 0, GentlemanScript_0x196973, -1
+	person_event SPRITE_TEACHER, 10, 5, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x196976, -1
--- a/maps/CianwoodCity.asm
+++ b/maps/CianwoodCity.asm
@@ -1,5 +1,5 @@
 CianwoodCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw .Trigger1, $0000
 	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -29,7 +29,7 @@
 
 UnknownScript_0x1a001e:
 	spriteface $0, UP
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	pause 15
 	playsound SFX_WARP_FROM
 	applymovement $d, MovementData_0x1a00da
@@ -135,12 +135,10 @@
 	jumpstd smashrock
 
 MapCianwoodCitySignpostItem6:
-	dw $00b2
-	db REVIVE
+	dwb EVENT_CIANWOOD_CITY_HIDDEN_REVIVE, REVIVE
 
 MapCianwoodCitySignpostItem7:
-	dw $00b3
-	db MAX_ETHER
+	dwb EVENT_CIANWOOD_CITY_HIDDEN_MAX_ETHER, MAX_ETHER
 
 MovementData_0x1a00da:
 	db $39 ; movement
@@ -376,7 +374,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 7
 	warp_def $29, $11, 1, GROUP_MANIAS_HOUSE, MAP_MANIAS_HOUSE
 	warp_def $2b, $8, 1, GROUP_CIANWOOD_GYM, MAP_CIANWOOD_GYM
@@ -386,32 +384,32 @@
 	warp_def $25, $f, 1, GROUP_CIANWOOD_LUGIA_SPEECH_HOUSE, MAP_CIANWOOD_LUGIA_SPEECH_HOUSE
 	warp_def $11, $5, 1, GROUP_POKE_SEERS_HOUSE, MAP_POKE_SEERS_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 1, $10, $b, $0, UnknownScript_0x1a001e, $0, $0
 
-	; signposts
+.Signposts:
 	db 8
-	signpost 34, 20, $0, CianwoodCitySign
-	signpost 45, 7, $0, CianwoodGymSign
-	signpost 43, 24, $0, CianwoodPokeCenterSign
-	signpost 47, 19, $0, CianwoodPharmacySign
-	signpost 32, 8, $0, CianwoodPhotoStudioSign
-	signpost 24, 8, $0, CianwoodPokeSeerSign
-	signpost 19, 4, $7, MapCianwoodCitySignpostItem6
-	signpost 29, 5, $7, MapCianwoodCitySignpostItem7
+	signpost 34, 20, SIGNPOST_READ, CianwoodCitySign
+	signpost 45, 7, SIGNPOST_READ, CianwoodGymSign
+	signpost 43, 24, SIGNPOST_READ, CianwoodPokeCenterSign
+	signpost 47, 19, SIGNPOST_READ, CianwoodPharmacySign
+	signpost 32, 8, SIGNPOST_READ, CianwoodPhotoStudioSign
+	signpost 24, 8, SIGNPOST_READ, CianwoodPokeSeerSign
+	signpost 19, 4, SIGNPOST_ITEM, MapCianwoodCitySignpostItem6
+	signpost 29, 5, SIGNPOST_ITEM, MapCianwoodCitySignpostItem7
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_STANDING_YOUNGSTER, 41, 25, $3, $0, 255, 255, $a0, 0, StandingYoungsterScript_0x1a00b3, -1
-	person_event SPRITE_POKEFAN_M, 37, 21, $5, $1, 255, 255, $0, 0, PokefanMScript_0x1a00b6, -1
-	person_event SPRITE_LASS, 46, 18, $4, $20, 255, 255, $0, 0, LassScript_0x1a00b9, -1
-	person_event SPRITE_ROCK, 20, 12, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 21, 13, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 29, 8, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 33, 9, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 31, 14, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 23, 8, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_POKEFAN_F, 50, 14, $5, $1, 255, 255, $0, 0, PokefanFScript_0x1a0084, -1
-	person_event SPRITE_SUPER_NERD, 25, 15, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_7AD
-	person_event SPRITE_SUICUNE, 18, 14, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
+	person_event SPRITE_STANDING_YOUNGSTER, 41, 25, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, StandingYoungsterScript_0x1a00b3, -1
+	person_event SPRITE_POKEFAN_M, 37, 21, OW_UP | $1, $1, -1, -1, $0, 0, PokefanMScript_0x1a00b6, -1
+	person_event SPRITE_LASS, 46, 18, OW_UP | $0, $20, -1, -1, $0, 0, LassScript_0x1a00b9, -1
+	person_event SPRITE_ROCK, 20, 12, OW_LEFT | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 21, 13, OW_LEFT | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 29, 8, OW_LEFT | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 33, 9, OW_LEFT | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 31, 14, OW_LEFT | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 23, 8, OW_LEFT | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_POKEFAN_F, 50, 14, OW_UP | $1, $1, -1, -1, $0, 0, PokefanFScript_0x1a0084, -1
+	person_event SPRITE_SUPER_NERD, 25, 15, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_CIANWOOD_CITY_EUSINE
+	person_event SPRITE_SUICUNE, 18, 14, OW_DOWN | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
--- a/maps/CianwoodCityPhotoStudio.asm
+++ b/maps/CianwoodCityPhotoStudio.asm
@@ -1,8 +1,8 @@
 CianwoodCityPhotoStudio_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FishingGuruScript_0x9e0e0:
@@ -49,17 +49,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 5, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $7, $3, 5, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $6, $0, 255, 255, $80, 0, FishingGuruScript_0x9e0e0, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FishingGuruScript_0x9e0e0, -1
--- a/maps/CianwoodGym.asm
+++ b/maps/CianwoodGym.asm
@@ -1,8 +1,8 @@
 CianwoodGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ChuckScript_0x9d60f:
@@ -76,24 +76,8 @@
 	jumpstd radiotowerrockets
 
 TrainerBlackbeltYoshi:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_YOSHI
+	trainer EVENT_BEAT_BLACKBELT_YOSHI, BLACKBELT_T, YOSHI, BlackbeltYoshiSeenText, BlackbeltYoshiBeatenText, $0000, BlackbeltYoshiScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, YOSHI
-
-	; text when seen
-	dw BlackbeltYoshiSeenText
-
-	; text when trainer beaten
-	dw BlackbeltYoshiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltYoshiScript
-
 BlackbeltYoshiScript:
 	talkaftercancel
 	loadfont
@@ -103,24 +87,8 @@
 	end
 
 TrainerBlackbeltLao:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_LAO
+	trainer EVENT_BEAT_BLACKBELT_LAO, BLACKBELT_T, LAO, BlackbeltLaoSeenText, BlackbeltLaoBeatenText, $0000, BlackbeltLaoScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, LAO
-
-	; text when seen
-	dw BlackbeltLaoSeenText
-
-	; text when trainer beaten
-	dw BlackbeltLaoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltLaoScript
-
 BlackbeltLaoScript:
 	talkaftercancel
 	loadfont
@@ -130,24 +98,8 @@
 	end
 
 TrainerBlackbeltNob:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_NOB
+	trainer EVENT_BEAT_BLACKBELT_NOB, BLACKBELT_T, NOB, BlackbeltNobSeenText, BlackbeltNobBeatenText, $0000, BlackbeltNobScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, NOB
-
-	; text when seen
-	dw BlackbeltNobSeenText
-
-	; text when trainer beaten
-	dw BlackbeltNobBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltNobScript
-
 BlackbeltNobScript:
 	talkaftercancel
 	loadfont
@@ -157,24 +109,8 @@
 	end
 
 TrainerBlackbeltLung:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_LUNG
+	trainer EVENT_BEAT_BLACKBELT_LUNG, BLACKBELT_T, LUNG, BlackbeltLungSeenText, BlackbeltLungBeatenText, $0000, BlackbeltLungScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, LUNG
-
-	; text when seen
-	dw BlackbeltLungSeenText
-
-	; text when trainer beaten
-	dw BlackbeltLungBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltLungScript
-
 BlackbeltLungScript:
 	talkaftercancel
 	loadfont
@@ -362,27 +298,27 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $4, 2, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $11, $5, 2, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 3, $0, CianwoodGymStatue
-	signpost 15, 6, $0, CianwoodGymStatue
+	signpost 15, 3, SIGNPOST_READ, CianwoodGymStatue
+	signpost 15, 6, SIGNPOST_READ, CianwoodGymStatue
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_CHUCK, 5, 8, $6, $0, 255, 255, $b0, 0, ChuckScript_0x9d60f, -1
-	person_event SPRITE_BLACK_BELT, 16, 6, $9, $0, 255, 255, $b2, 3, TrainerBlackbeltYoshi, -1
-	person_event SPRITE_BLACK_BELT, 16, 11, $8, $0, 255, 255, $b2, 3, TrainerBlackbeltLao, -1
-	person_event SPRITE_BLACK_BELT, 13, 7, $9, $0, 255, 255, $b2, 2, TrainerBlackbeltNob, -1
-	person_event SPRITE_BLACK_BELT, 9, 9, $8, $0, 255, 255, $b2, 1, TrainerBlackbeltLung, -1
-	person_event SPRITE_BOULDER, 5, 9, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 11, 7, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 11, 8, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 11, 9, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_CHUCK, 5, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, ChuckScript_0x9d60f, -1
+	person_event SPRITE_BLACK_BELT, 16, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBlackbeltYoshi, -1
+	person_event SPRITE_BLACK_BELT, 16, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBlackbeltLao, -1
+	person_event SPRITE_BLACK_BELT, 13, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBlackbeltNob, -1
+	person_event SPRITE_BLACK_BELT, 9, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerBlackbeltLung, -1
+	person_event SPRITE_BOULDER, 5, 9, OW_LEFT | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 11, 7, OW_LEFT | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 11, 8, OW_LEFT | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 11, 9, OW_LEFT | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
--- a/maps/CianwoodLugiaSpeechHouse.asm
+++ b/maps/CianwoodLugiaSpeechHouse.asm
@@ -1,8 +1,8 @@
 CianwoodLugiaSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x9e1b0:
@@ -60,21 +60,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $7, $3, 6, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, CianwoodLugiaSpeechHouseBookshelf
-	signpost 1, 1, $0, CianwoodLugiaSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CianwoodLugiaSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CianwoodLugiaSpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_TEACHER, 8, 6, $6, $0, 255, 255, $0, 0, TeacherScript_0x9e1b0, -1
-	person_event SPRITE_LASS, 9, 10, $5, $1, 255, 255, $a0, 0, LassScript_0x9e1b3, -1
-	person_event SPRITE_TWIN, 6, 4, $7, $0, 255, 255, $90, 0, TwinScript_0x9e1b6, -1
+	person_event SPRITE_TEACHER, 8, 6, OW_UP | $2, $0, -1, -1, $0, 0, TeacherScript_0x9e1b0, -1
+	person_event SPRITE_LASS, 9, 10, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x9e1b3, -1
+	person_event SPRITE_TWIN, 6, 4, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TwinScript_0x9e1b6, -1
--- a/maps/CianwoodPharmacy.asm
+++ b/maps/CianwoodPharmacy.asm
@@ -1,11 +1,11 @@
 CianwoodPharmacy_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw CianwoodPharmacyTrigger, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CianwoodPharmacyTrigger:
@@ -75,19 +75,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $7, $3, 4, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, CianwoodPharmacyBookshelf
-	signpost 1, 1, $0, CianwoodPharmacyBookshelf
+	signpost 1, 0, SIGNPOST_READ, CianwoodPharmacyBookshelf
+	signpost 1, 1, SIGNPOST_READ, CianwoodPharmacyBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_PHARMACIST, 7, 6, $6, $0, 255, 255, $80, 0, CianwoodPharmacist, -1
+	person_event SPRITE_PHARMACIST, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CianwoodPharmacist, -1
--- a/maps/CianwoodPokeCenter1F.asm
+++ b/maps/CianwoodPokeCenter1F.asm
@@ -1,8 +1,8 @@
 CianwoodPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x9dbcf:
@@ -129,21 +129,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 3, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $7, $4, 3, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x9dbcf, -1
-	person_event SPRITE_LASS, 9, 5, $4, $10, 255, 255, $a0, 0, LassScript_0x9dbd2, -1
-	person_event SPRITE_GYM_GUY, 7, 9, $6, $0, 255, 255, $80, 0, CianwoodGymGuyScript, -1
-	person_event SPRITE_SUPER_NERD, 10, 12, $5, $1, 255, 255, $90, 0, SuperNerdScript_0x9dbea, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x9dbcf, -1
+	person_event SPRITE_LASS, 9, 5, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x9dbd2, -1
+	person_event SPRITE_GYM_GUY, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CianwoodGymGuyScript, -1
+	person_event SPRITE_SUPER_NERD, 10, 12, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x9dbea, -1
--- a/maps/CinnabarIsland.asm
+++ b/maps/CinnabarIsland.asm
@@ -1,8 +1,8 @@
 CinnabarIsland_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -21,7 +21,7 @@
 	playsound SFX_WARP_TO
 	applymovement $2, CinnabarIslandBlueTeleport
 	disappear $2
-	clearevent EVENT_776
+	clearevent EVENT_VIRIDIAN_GYM_BLUE
 	end
 
 CinnabarIslandGymSign:
@@ -34,8 +34,7 @@
 	jumpstd pokecentersign
 
 MapCinnabarIslandSignpostItem3:
-	dw $00fe
-	db RARE_CANDY
+	dwb EVENT_CINNABAR_ISLAND_HIDDEN_RARE_CANDY, RARE_CANDY
 
 CinnabarIslandBlueTeleport:
 	teleport_from
@@ -131,20 +130,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $b, $b, 1, GROUP_CINNABAR_POKECENTER_1F, MAP_CINNABAR_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 11, 12, $0, CinnabarIslandPokeCenterSign
-	signpost 11, 9, $0, CinnabarIslandGymSign
-	signpost 7, 7, $0, CinnabarIslandSign
-	signpost 1, 9, $7, MapCinnabarIslandSignpostItem3
+	signpost 11, 12, SIGNPOST_READ, CinnabarIslandPokeCenterSign
+	signpost 11, 9, SIGNPOST_READ, CinnabarIslandGymSign
+	signpost 7, 7, SIGNPOST_READ, CinnabarIslandSign
+	signpost 1, 9, SIGNPOST_ITEM, MapCinnabarIslandSignpostItem3
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_BLUE, 10, 13, $3, $0, 255, 255, $0, 0, CinnabarIslandBlue, EVENT_BLUE_IN_CINNABAR
+	person_event SPRITE_BLUE, 10, 13, OW_DOWN | $3, $0, -1, -1, $0, 0, CinnabarIslandBlue, EVENT_BLUE_IN_CINNABAR
--- a/maps/CinnabarPokeCenter1F.asm
+++ b/maps/CinnabarPokeCenter1F.asm
@@ -1,8 +1,8 @@
 CinnabarPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x1ab32c:
@@ -33,20 +33,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND
 	warp_def $7, $4, 1, GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x1ab32c, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 11, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x1ab32f, -1
-	person_event SPRITE_FISHER, 8, 6, $6, $0, 255, 255, $a0, 0, FisherScript_0x1ab332, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x1ab32c, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 11, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x1ab32f, -1
+	person_event SPRITE_FISHER, 8, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1ab332, -1
--- a/maps/CinnabarPokeCenter2FBeta.asm
+++ b/maps/CinnabarPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 CinnabarPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CinnabarPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_CINNABAR_POKECENTER_1F, MAP_CINNABAR_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Colosseum.asm
+++ b/maps/Colosseum.asm
@@ -1,65 +1,65 @@
 Colosseum_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
-	dw UnknownScript_0x193471, $0000
-	dw UnknownScript_0x193475, $0000
-	dw UnknownScript_0x193476, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
+	dw .Trigger3, $0000
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x193477
+	dbw 2, ColosseumScript_SetWhichChris
 
-	dbw 5, UnknownScript_0x193487
+	dbw 5, ColosseumScript_InitializeCB
 
-UnknownScript_0x193471:
-	priorityjump UnknownScript_0x19348c
+.Trigger1:
+	priorityjump ColosseumScript_Initialize
 	end
 
-UnknownScript_0x193475:
+.Trigger2:
 	end
 
-UnknownScript_0x193476:
+.Trigger3:
 	end
 
-UnknownScript_0x193477:
-	special Function29f47
-	iffalse UnknownScript_0x193482
+ColosseumScript_SetWhichChris:
+	special Special_CableClubCheckWhichChris
+	iffalse .Chris2
 	disappear $3
 	appear $2
 	return
 
-UnknownScript_0x193482:
+.Chris2:
 	disappear $2
 	appear $3
 	return
 
-UnknownScript_0x193487:
+ColosseumScript_InitializeCB:
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $2
 	return
 
-UnknownScript_0x19348c:
+ColosseumScript_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $2
 	end
 
 MapColosseumSignpost1Script:
-	special Function29ed9
+	special Special_Colosseum
 	newloadmap $f8
 	end
 
 ChrisScript_0x193499:
 	loadfont
-	writetext UnknownText_0x1934a0
+	writetext .FriendReadyText
 	closetext
 	loadmovesprites
 	end
 
-UnknownText_0x1934a0:
+.FriendReadyText:
 	text "Your friend is"
 	line "ready."
 	done
@@ -68,20 +68,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $4, 3, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $7, $5, 3, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 4, 4, $3, MapColosseumSignpost1Script
-	signpost 4, 5, $4, MapColosseumSignpost1Script
+	signpost 4, 4, SIGNPOST_RIGHT, MapColosseumSignpost1Script
+	signpost 4, 5, SIGNPOST_LEFT, MapColosseumSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_CHRIS, 8, 7, $9, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_000
-	person_event SPRITE_CHRIS, 8, 10, $8, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_001
+	person_event SPRITE_CHRIS, 8, 7, OW_LEFT | $1, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_GAVE_KURT_APRICORNS
+	person_event SPRITE_CHRIS, 8, 10, OW_LEFT | $0, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_RECEIVED_BALLS_FROM_KURT
--- a/maps/CopycatsHouse1F.asm
+++ b/maps/CopycatsHouse1F.asm
@@ -1,8 +1,8 @@
 CopycatsHouse1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x18ad13:
@@ -71,20 +71,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $2, 8, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $7, $3, 8, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $0, $2, 1, GROUP_COPYCATS_HOUSE_2F, MAP_COPYCATS_HOUSE_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $0, 0, PokefanMScript_0x18ad13, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $8, $0, 255, 255, $a0, 0, PokefanFScript_0x18ad16, -1
-	person_event SPRITE_CLEFAIRY, 10, 10, $16, $0, 255, 255, $0, 0, ClefairyScript_0x18ad2a, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, OW_UP | $2, $0, -1, -1, $0, 0, PokefanMScript_0x18ad13, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, PokefanFScript_0x18ad16, -1
+	person_event SPRITE_CLEFAIRY, 10, 10, OW_UP | $12, $0, -1, -1, $0, 0, ClefairyScript_0x18ad2a, -1
--- a/maps/CopycatsHouse2F.asm
+++ b/maps/CopycatsHouse2F.asm
@@ -1,8 +1,8 @@
 CopycatsHouse2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -33,15 +33,15 @@
 	iftrue .Part1
 	applymovement $2, MovementData_0x18afd0
 	faceplayer
-	variablesprite $b, $1
+	variablesprite SPRITE_COPYCAT, SPRITE_CHRIS
 	jump .Part2
 
 .Part1
 	applymovement $7, MovementData_0x18afd0
 	faceplayer
-	variablesprite $b, $60
+	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
 .Part2
-	special Function14209
+	special RunCallback_04
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue .Part7
 	loadfont
@@ -64,8 +64,8 @@
 	applymovement $7, MovementData_0x18afd0
 .Part6
 	faceplayer
-	variablesprite $b, $28
-	special Function14209
+	variablesprite SPRITE_COPYCAT, SPRITE_LASS
+	special RunCallback_04
 	loadfont
 	writetext UnknownText_0x18b028
 	closetext
@@ -93,8 +93,8 @@
 	applymovement $7, MovementData_0x18afd0
 .Part11
 	faceplayer
-	variablesprite $b, $28
-	special Function14209
+	variablesprite SPRITE_COPYCAT, SPRITE_LASS
+	special RunCallback_04
 	loadfont
 	writetext UnknownText_0x18b116
 	closetext
@@ -108,7 +108,7 @@
 	keeptextopen
 	takeitem LOST_ITEM, 1
 	setevent EVENT_RETURNED_LOST_ITEM_TO_COPYCAT
-	clearevent EVENT_773
+	clearevent EVENT_COPYCATS_HOUSE_2F_DOLL
 	jump .Part14
 
 .Part13
@@ -129,15 +129,15 @@
 	iftrue .Part16
 	applymovement $2, MovementData_0x18afd0
 	faceplayer
-	variablesprite $b, $1
+	variablesprite SPRITE_COPYCAT, SPRITE_CHRIS
 	jump .Part17
 
 .Part16
 	applymovement $7, MovementData_0x18afd0
 	faceplayer
-	variablesprite $b, $60
+	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
 .Part17
-	special Function14209
+	special RunCallback_04
 	loadfont
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part18
@@ -158,8 +158,8 @@
 	applymovement $7, MovementData_0x18afd0
 .Part21
 	faceplayer
-	variablesprite $b, $28
-	special Function14209
+	variablesprite SPRITE_COPYCAT, SPRITE_LASS
+	special RunCallback_04
 	loadfont
 	writetext UnknownText_0x18b2f5
 	closetext
@@ -359,23 +359,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $0, $3, 3, GROUP_COPYCATS_HOUSE_1F, MAP_COPYCATS_HOUSE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, CopycatsHouse2FBookshelf
-	signpost 1, 1, $0, CopycatsHouse2FBookshelf
+	signpost 1, 0, SIGNPOST_READ, CopycatsHouse2FBookshelf
+	signpost 1, 1, SIGNPOST_READ, CopycatsHouse2FBookshelf
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_COPYCAT, 7, 8, $8, $0, 255, 255, $80, 0, Copycat, EVENT_6EE
-	person_event SPRITE_MOLTRES, 8, 10, $16, $0, 255, 255, $b0, 0, CopycatsDodrio, -1
-	person_event SPRITE_FAIRY, 5, 10, $6, $0, 255, 255, $80, 0, CopycatsHouse2FDoll, EVENT_773
-	person_event SPRITE_MONSTER, 5, 6, $6, $0, 255, 255, $a0, 0, CopycatsHouse2FDoll, -1
-	person_event SPRITE_BIRD, 5, 11, $6, $0, 255, 255, $90, 0, CopycatsHouse2FDoll, -1
-	person_event SPRITE_COPYCAT, 7, 8, $8, $0, 255, 255, $90, 0, Copycat, EVENT_6EF
+	person_event SPRITE_COPYCAT, 7, 8, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Copycat, EVENT_COPYCAT_1
+	person_event SPRITE_MOLTRES, 8, 10, OW_UP | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CopycatsDodrio, -1
+	person_event SPRITE_FAIRY, 5, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CopycatsHouse2FDoll, EVENT_COPYCATS_HOUSE_2F_DOLL
+	person_event SPRITE_MONSTER, 5, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CopycatsHouse2FDoll, -1
+	person_event SPRITE_BIRD, 5, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CopycatsHouse2FDoll, -1
+	person_event SPRITE_COPYCAT, 7, 8, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, Copycat, EVENT_COPYCAT_2
--- a/maps/DanceTheatre.asm
+++ b/maps/DanceTheatre.asm
@@ -1,29 +1,13 @@
 DanceTheatre_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerKimono_girlNaoko2:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_NAOKO
+	trainer EVENT_BEAT_KIMONO_GIRL_NAOKO, KIMONO_GIRL, NAOKO2, Kimono_girlNaoko2SeenText, Kimono_girlNaoko2BeatenText, $0000, Kimono_girlNaoko2Script
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, NAOKO2
-
-	; text when seen
-	dw Kimono_girlNaoko2SeenText
-
-	; text when trainer beaten
-	dw Kimono_girlNaoko2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlNaoko2Script
-
 Kimono_girlNaoko2Script:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerKimono_girlSayo:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_SAYO
+	trainer EVENT_BEAT_KIMONO_GIRL_SAYO, KIMONO_GIRL, SAYO, Kimono_girlSayoSeenText, Kimono_girlSayoBeatenText, $0000, Kimono_girlSayoScript
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, SAYO
-
-	; text when seen
-	dw Kimono_girlSayoSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlSayoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlSayoScript
-
 Kimono_girlSayoScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerKimono_girlZuki:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_ZUKI
+	trainer EVENT_BEAT_KIMONO_GIRL_ZUKI, KIMONO_GIRL, ZUKI, Kimono_girlZukiSeenText, Kimono_girlZukiBeatenText, $0000, Kimono_girlZukiScript
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, ZUKI
-
-	; text when seen
-	dw Kimono_girlZukiSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlZukiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlZukiScript
-
 Kimono_girlZukiScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerKimono_girlKuni:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_KUNI
+	trainer EVENT_BEAT_KIMONO_GIRL_KUNI, KIMONO_GIRL, KUNI, Kimono_girlKuniSeenText, Kimono_girlKuniBeatenText, $0000, Kimono_girlKuniScript
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, KUNI
-
-	; text when seen
-	dw Kimono_girlKuniSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlKuniBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlKuniScript
-
 Kimono_girlKuniScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerKimono_girlMiki:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_MIKI
+	trainer EVENT_BEAT_KIMONO_GIRL_MIKI, KIMONO_GIRL, MIKI, Kimono_girlMikiSeenText, Kimono_girlMikiBeatenText, $0000, Kimono_girlMikiScript
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, MIKI
-
-	; text when seen
-	dw Kimono_girlMikiSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlMikiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlMikiScript
-
 Kimono_girlMikiScript:
 	talkaftercancel
 	loadfont
@@ -410,27 +330,27 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $d, $5, 8, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $d, $6, 8, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 6, 5, $1, MapDanceTheatreSignpost1Script
-	signpost 6, 6, $1, MapDanceTheatreSignpost1Script
+	signpost 6, 5, SIGNPOST_UP, MapDanceTheatreSignpost1Script
+	signpost 6, 6, SIGNPOST_UP, MapDanceTheatreSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_KIMONO_GIRL, 6, 4, $1e, $0, 255, 255, $a2, 0, TrainerKimono_girlNaoko2, -1
-	person_event SPRITE_KIMONO_GIRL, 5, 6, $a, $0, 255, 255, $92, 0, TrainerKimono_girlSayo, -1
-	person_event SPRITE_KIMONO_GIRL, 6, 10, $3, $0, 255, 255, $82, 0, TrainerKimono_girlZuki, -1
-	person_event SPRITE_KIMONO_GIRL, 5, 13, $a, $0, 255, 255, $92, 0, TrainerKimono_girlKuni, -1
-	person_event SPRITE_KIMONO_GIRL, 6, 15, $1f, $0, 255, 255, $a2, 0, TrainerKimono_girlMiki, -1
-	person_event SPRITE_GENTLEMAN, 14, 11, $7, $0, 255, 255, $0, 0, GentlemanScript_0x994c6, -1
-	person_event SPRITE_RHYDON, 12, 10, $16, $0, 255, 255, $90, 0, RhydonScript_0x9951b, -1
-	person_event SPRITE_COOLTRAINER_M, 14, 14, $8, $0, 255, 255, $80, 0, CooltrainerMScript_0x99525, -1
-	person_event SPRITE_GRANNY, 10, 7, $7, $0, 255, 255, $0, 0, GrannyScript_0x99528, -1
+	person_event SPRITE_KIMONO_GIRL, 6, 4, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerKimono_girlNaoko2, -1
+	person_event SPRITE_KIMONO_GIRL, 5, 6, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerKimono_girlSayo, -1
+	person_event SPRITE_KIMONO_GIRL, 6, 10, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerKimono_girlZuki, -1
+	person_event SPRITE_KIMONO_GIRL, 5, 13, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerKimono_girlKuni, -1
+	person_event SPRITE_KIMONO_GIRL, 6, 15, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerKimono_girlMiki, -1
+	person_event SPRITE_GENTLEMAN, 14, 11, OW_UP | $3, $0, -1, -1, $0, 0, GentlemanScript_0x994c6, -1
+	person_event SPRITE_RHYDON, 12, 10, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, RhydonScript_0x9951b, -1
+	person_event SPRITE_COOLTRAINER_M, 14, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x99525, -1
+	person_event SPRITE_GRANNY, 10, 7, OW_UP | $3, $0, -1, -1, $0, 0, GrannyScript_0x99528, -1
--- a/maps/DarkCaveBlackthornEntrance.asm
+++ b/maps/DarkCaveBlackthornEntrance.asm
@@ -1,8 +1,8 @@
 DarkCaveBlackthornEntrance_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PharmacistScript_0x18c720:
@@ -60,19 +60,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $17, 1, GROUP_ROUTE_45, MAP_ROUTE_45
 	warp_def $19, $3, 2, GROUP_DARK_CAVE_VIOLET_ENTRANCE, MAP_DARK_CAVE_VIOLET_ENTRANCE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_PHARMACIST, 7, 11, $3, $0, 255, 255, $0, 0, PharmacistScript_0x18c720, -1
-	person_event SPRITE_POKE_BALL, 28, 25, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c73b, EVENT_6A1
-	person_event SPRITE_POKE_BALL, 26, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c73d, EVENT_6A2
+	person_event SPRITE_PHARMACIST, 7, 11, OW_DOWN | $3, $0, -1, -1, $0, 0, PharmacistScript_0x18c720, -1
+	person_event SPRITE_POKE_BALL, 28, 25, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c73b, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_REVIVE
+	person_event SPRITE_POKE_BALL, 26, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c73d, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_TM_SNORE
--- a/maps/DarkCaveVioletEntrance.asm
+++ b/maps/DarkCaveVioletEntrance.asm
@@ -1,8 +1,8 @@
 DarkCaveVioletEntrance_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c68e:
@@ -21,8 +21,7 @@
 	jumpstd smashrock
 
 MapDarkCaveVioletEntranceSignpostItem0:
-	dw $009d
-	db ELIXER
+	dwb EVENT_DARK_CAVE_VIOLET_ENTRANCE_HIDDEN_ELIXER, ELIXER
 	
 
 DarkCaveVioletEntrance_MapEventHeader:
@@ -29,26 +28,26 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $f, $3, 3, GROUP_ROUTE_31, MAP_ROUTE_31
 	warp_def $1, $11, 2, GROUP_DARK_CAVE_BLACKTHORN_ENTRANCE, MAP_DARK_CAVE_BLACKTHORN_ENTRANCE
 	warp_def $21, $23, 3, GROUP_ROUTE_46, MAP_ROUTE_46
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 3, 26, $7, MapDarkCaveVioletEntranceSignpostItem0
+	signpost 3, 26, SIGNPOST_ITEM, MapDarkCaveVioletEntranceSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_POKE_BALL, 12, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c68e, EVENT_69E
-	person_event SPRITE_ROCK, 18, 20, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 10, 31, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 18, 11, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 35, 40, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_POKE_BALL, 26, 40, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c690, EVENT_69F
-	person_event SPRITE_POKE_BALL, 13, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c692, EVENT_6A0
-	person_event SPRITE_POKE_BALL, 32, 34, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c694, EVENT_7CE
+	person_event SPRITE_POKE_BALL, 12, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c68e, EVENT_DARK_CAVE_VIOLET_ENTRANCE_POTION
+	person_event SPRITE_ROCK, 18, 20, OW_LEFT | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 10, 31, OW_LEFT | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 18, 11, OW_LEFT | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 35, 40, OW_LEFT | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_POKE_BALL, 26, 40, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c690, EVENT_DARK_CAVE_VIOLET_ENTRANCE_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 13, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c692, EVENT_DARK_CAVE_VIOLET_ENTRANCE_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 32, 34, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c694, EVENT_DARK_CAVE_VIOLET_ENTRANCE_DIRE_HIT
--- a/maps/DayCare.asm
+++ b/maps/DayCare.asm
@@ -1,8 +1,8 @@
 DayCare_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -12,13 +12,13 @@
 UnknownScript_0x62f7b:
 	checkflag ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
 	iftrue UnknownScript_0x62f88
-	clearevent EVENT_6E5
-	setevent EVENT_6E6
+	clearevent EVENT_DAYCARE_MAN_IN_DAYCARE
+	setevent EVENT_DAYCARE_MAN_ON_ROUTE_34
 	return
 
 UnknownScript_0x62f88:
-	setevent EVENT_6E5
-	clearevent EVENT_6E6
+	setevent EVENT_DAYCARE_MAN_IN_DAYCARE
+	clearevent EVENT_DAYCARE_MAN_ON_ROUTE_34
 	return
 
 GrampsScript_0x62f8f:
@@ -50,7 +50,7 @@
 	end
 
 UnknownScript_0x62fbd:
-	special Function166d6
+	special Special_DayCareMan
 	closetext
 	loadmovesprites
 	end
@@ -60,7 +60,7 @@
 	loadfont
 	checkflag ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
 	iftrue UnknownScript_0x62fd1
-	special Function1672a
+	special Special_DayCareLady
 	closetext
 	loadmovesprites
 	end
@@ -158,7 +158,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $5, $0, 3, GROUP_ROUTE_34, MAP_ROUTE_34
 	warp_def $6, $0, 4, GROUP_ROUTE_34, MAP_ROUTE_34
@@ -165,15 +165,15 @@
 	warp_def $7, $2, 5, GROUP_ROUTE_34, MAP_ROUTE_34
 	warp_def $7, $3, 5, GROUP_ROUTE_34, MAP_ROUTE_34
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, DayCareBookshelf
-	signpost 1, 1, $0, DayCareBookshelf
+	signpost 1, 0, SIGNPOST_READ, DayCareBookshelf
+	signpost 1, 1, SIGNPOST_READ, DayCareBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_GRAMPS, 7, 6, $9, $0, 255, 255, $0, 0, GrampsScript_0x62f8f, EVENT_6E5
-	person_event SPRITE_GRANNY, 7, 9, $8, $0, 255, 255, $80, 0, GrannyScript_0x62fc3, -1
+	person_event SPRITE_GRAMPS, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, GrampsScript_0x62f8f, EVENT_DAYCARE_MAN_IN_DAYCARE
+	person_event SPRITE_GRANNY, 7, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GrannyScript_0x62fc3, -1
--- a/maps/DiglettsCave.asm
+++ b/maps/DiglettsCave.asm
@@ -1,8 +1,8 @@
 DiglettsCave_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x74002:
@@ -9,8 +9,7 @@
 	jumptextfaceplayer UnknownText_0x74008
 
 MapDiglettsCaveSignpostItem0:
-	dw $00e4
-	db MAX_REVIVE
+	dwb EVENT_DIGLETTS_CAVE_HIDDEN_MAX_REVIVE, MAX_REVIVE
 	
 
 UnknownText_0x74008:
@@ -25,7 +24,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $21, $3, 10, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $1f, $5, 5, GROUP_DIGLETTS_CAVE, MAP_DIGLETTS_CAVE
@@ -34,13 +33,13 @@
 	warp_def $21, $11, 2, GROUP_DIGLETTS_CAVE, MAP_DIGLETTS_CAVE
 	warp_def $3, $3, 4, GROUP_DIGLETTS_CAVE, MAP_DIGLETTS_CAVE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 11, 6, $7, MapDiglettsCaveSignpostItem0
+	signpost 11, 6, SIGNPOST_ITEM, MapDiglettsCaveSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_M, 35, 7, $6, $0, 255, 255, $0, 0, PokefanMScript_0x74002, -1
+	person_event SPRITE_POKEFAN_M, 35, 7, OW_UP | $2, $0, -1, -1, $0, 0, PokefanMScript_0x74002, -1
--- a/maps/DragonShrine.asm
+++ b/maps/DragonShrine.asm
@@ -1,93 +1,93 @@
 DragonShrine_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x18d01e, $0000
-	dw UnknownScript_0x18d022, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
-UnknownScript_0x18d01e:
-	priorityjump UnknownScript_0x18d023
+.Trigger1:
+	priorityjump DragonShrineTestScript
 	end
 
-UnknownScript_0x18d022:
+.Trigger2:
 	end
 
-UnknownScript_0x18d023:
+DragonShrineTestScript:
 	applymovement $0, MovementData_0x18d2bf
 	applymovement $2, MovementData_0x18d2c7
 	loadfont
 	writetext UnknownText_0x18d2ea
 	keeptextopen
-UnknownScript_0x18d030:
-	setevent EVENT_001
+.Question1:
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	writetext UnknownText_0x18d3bc
 	keeptextopen
 	loadmenudata MenuDataHeader_0x18d215
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x18d0a9
-	if_equal $2, UnknownScript_0x18d0cb
-	if_equal $3, UnknownScript_0x18d0a9
+	if_equal $1, .RightAnswer
+	if_equal $2, .WrongAnswer
+	if_equal $3, .RightAnswer
 	end
 
-UnknownScript_0x18d049:
-	setevent EVENT_002
+.Question2:
+	setevent EVENT_DRAGON_SHRINE_QUESTION_2
 	writetext UnknownText_0x18d3d3
 	keeptextopen
 	loadmenudata MenuDataHeader_0x18d234
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x18d0a9
-	if_equal $2, UnknownScript_0x18d0a9
-	if_equal $3, UnknownScript_0x18d0cb
-UnknownScript_0x18d061:
-	setevent EVENT_003
+	if_equal $1, .RightAnswer
+	if_equal $2, .RightAnswer
+	if_equal $3, .WrongAnswer
+.Question3:
+	setevent EVENT_DRAGON_SHRINE_QUESTION_3
 	writetext UnknownText_0x18d3f3
 	keeptextopen
 	loadmenudata MenuDataHeader_0x18d258
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x18d0cb
-	if_equal $2, UnknownScript_0x18d0a9
-	if_equal $3, UnknownScript_0x18d0a9
-UnknownScript_0x18d079:
-	setevent EVENT_004
+	if_equal $1, .WrongAnswer
+	if_equal $2, .RightAnswer
+	if_equal $3, .RightAnswer
+.Question4:
+	setevent EVENT_DRAGON_SHRINE_QUESTION_4
 	writetext UnknownText_0x18d420
 	keeptextopen
 	loadmenudata MenuDataHeader_0x18d283
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x18d0a9
-	if_equal $2, UnknownScript_0x18d0cb
-	if_equal $3, UnknownScript_0x18d0a9
-UnknownScript_0x18d091:
-	setevent EVENT_005
+	if_equal $1, .RightAnswer
+	if_equal $2, .WrongAnswer
+	if_equal $3, .RightAnswer
+.Question5:
+	setevent EVENT_DRAGON_SHRINE_QUESTION_5
 	writetext UnknownText_0x18d44a
 	keeptextopen
 	loadmenudata MenuDataHeader_0x18d2a5
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x18d0cb
-	if_equal $2, UnknownScript_0x18d0a9
-	if_equal $3, UnknownScript_0x18d0cb
-UnknownScript_0x18d0a9:
-	checkevent EVENT_005
-	iftrue UnknownScript_0x18d100
+	if_equal $1, .WrongAnswer
+	if_equal $2, .RightAnswer
+	if_equal $3, .WrongAnswer
+.RightAnswer:
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_5
+	iftrue .PassedTheTest
 	writetext UnknownText_0x18d82d
 	keeptextopen
-	checkevent EVENT_004
-	iftrue UnknownScript_0x18d091
-	checkevent EVENT_003
-	iftrue UnknownScript_0x18d079
-	checkevent EVENT_002
-	iftrue UnknownScript_0x18d061
-	checkevent EVENT_001
-	iftrue UnknownScript_0x18d049
-UnknownScript_0x18d0cb:
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_4
+	iftrue .Question5
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_3
+	iftrue .Question4
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_2
+	iftrue .Question3
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
+	iftrue .Question2
+.WrongAnswer:
 	loadmovesprites
 	spriteface $2, LEFT
 	loadfont
@@ -101,22 +101,22 @@
 	loadmovesprites
 	setevent EVENT_ANSWERED_DRAGON_MASTER_QUIZ_WRONG
 	loadfont
-	checkevent EVENT_005
-	iftrue UnknownScript_0x18d091
-	checkevent EVENT_004
-	iftrue UnknownScript_0x18d079
-	checkevent EVENT_003
-	iftrue UnknownScript_0x18d061
-	checkevent EVENT_002
-	iftrue UnknownScript_0x18d049
-	checkevent EVENT_001
-	iftrue UnknownScript_0x18d030
-UnknownScript_0x18d100:
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_5
+	iftrue .Question5
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_4
+	iftrue .Question4
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_3
+	iftrue .Question3
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_2
+	iftrue .Question2
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
+	iftrue .Question1
+.PassedTheTest:
 	writetext UnknownText_0x18d47c
 	closetext
 	loadmovesprites
 	playsound SFX_ENTER_DOOR
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_CLAIR
 	appear $5
 	waitbutton
@@ -147,7 +147,7 @@
 	writetext UnknownText_0x18d520
 	closetext
 	loadmovesprites
-	showemote $0, $5, 15
+	showemote EMOTE_SHOCK, $5, 15
 	loadfont
 	writetext UnknownText_0x18d9ae
 	closetext
@@ -160,7 +160,7 @@
 	playsound SFX_GET_BADGE
 	waitbutton
 	special RestartMapMusic
-	specialphonecall $8
+	specialphonecall ELMCALL_MASTERBALL
 	dotrigger $1
 	domaptrigger GROUP_DRAGONS_DEN_B1F, MAP_DRAGONS_DEN_B1F, $1
 	writetext UnknownText_0x18d9f2
@@ -184,30 +184,30 @@
 	playsound SFX_ENTER_DOOR
 	disappear $5
 	waitbutton
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 	end
 
 ElderScript_0x18d1a5:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
-	iftrue UnknownScript_0x18d1f9
-	checkevent EVENT_006
-	iftrue UnknownScript_0x18d1ff
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iftrue .DontGiveDratiniYet
+	checkevent EVENT_JUST_RECEIVED_DRATINI
+	iftrue .ReceivedDratini
 	checkevent EVENT_GOT_DRATINI
-	iffalse UnknownScript_0x18d1c5
+	iffalse .GiveDratini
 	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
-	iftrue UnknownScript_0x18d1f3
+	iftrue .BeatRivalInMtMoon
 	writetext UnknownText_0x18d724
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18d1c5:
+.GiveDratini:
 	writetext UnknownText_0x18d604
 	closetext
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x18d1ed
+	if_equal 6, .PartyFull
 	writetext UnknownText_0x18d697
 	playsound SFX_CAUGHT_MON
 	waitbutton
@@ -215,31 +215,31 @@
 	checkevent EVENT_ANSWERED_DRAGON_MASTER_QUIZ_WRONG
 	special SpecialDratini
 	setevent EVENT_GOT_DRATINI
-	setevent EVENT_006
+	setevent EVENT_JUST_RECEIVED_DRATINI
 	writetext UnknownText_0x18d6ca
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18d1ed:
+.PartyFull:
 	writetext UnknownText_0x18d6ac
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18d1f3:
+.BeatRivalInMtMoon:
 	writetext UnknownText_0x18d782
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18d1f9:
+.DontGiveDratiniYet:
 	writetext UnknownText_0x18d5e5
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18d1ff:
+.ReceivedDratini:
 	writetext UnknownText_0x18d6ca
 	closetext
 	loadmovesprites
@@ -668,20 +668,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $9, $4, 2, GROUP_DRAGONS_DEN_B1F, MAP_DRAGONS_DEN_B1F
 	warp_def $9, $5, 2, GROUP_DRAGONS_DEN_B1F, MAP_DRAGONS_DEN_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_ELDER, 5, 9, $6, $0, 255, 255, $0, 0, ElderScript_0x18d1a5, EVENT_000
-	person_event SPRITE_ELDER, 8, 6, $9, $0, 255, 255, $0, 0, ElderScript_0x18d205, EVENT_000
-	person_event SPRITE_ELDER, 8, 11, $8, $0, 255, 255, $0, 0, ElderScript_0x18d20d, EVENT_000
-	person_event SPRITE_CLAIR, 12, 8, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_790
+	person_event SPRITE_ELDER, 5, 9, OW_UP | $2, $0, -1, -1, $0, 0, ElderScript_0x18d1a5, EVENT_GAVE_KURT_APRICORNS
+	person_event SPRITE_ELDER, 8, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, ElderScript_0x18d205, EVENT_GAVE_KURT_APRICORNS
+	person_event SPRITE_ELDER, 8, 11, OW_LEFT | $0, $0, -1, -1, $0, 0, ElderScript_0x18d20d, EVENT_GAVE_KURT_APRICORNS
+	person_event SPRITE_CLAIR, 12, 8, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_DRAGON_SHRINE_CLAIR
--- a/maps/DragonsDen1F.asm
+++ b/maps/DragonsDen1F.asm
@@ -1,8 +1,8 @@
 DragonsDen1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 DragonsDen1F_MapEventHeader:
@@ -9,7 +9,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $5, $3, 8, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $3, $3, 4, GROUP_DRAGONS_DEN_1F, MAP_DRAGONS_DEN_1F
@@ -16,11 +16,11 @@
 	warp_def $f, $5, 1, GROUP_DRAGONS_DEN_B1F, MAP_DRAGONS_DEN_B1F
 	warp_def $d, $5, 2, GROUP_DRAGONS_DEN_1F, MAP_DRAGONS_DEN_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -1,5 +1,5 @@
 DragonsDenB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x18c89d, $0000
 	dw UnknownScript_0x18c89e, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -42,7 +42,7 @@
 	writetext UnknownText_0x18c9b8
 	pause 30
 	loadmovesprites
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	spriteface $0, LEFT
 	playmusic MUSIC_CLAIR
 	applymovement $3, MovementData_0x18c9ae
@@ -78,24 +78,8 @@
 	end
 
 TrainerCooltrainermDarin:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_DARIN
+	trainer EVENT_BEAT_COOLTRAINERM_DARIN, COOLTRAINERM, DARIN, CooltrainermDarinSeenText, CooltrainermDarinBeatenText, $0000, CooltrainermDarinScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, DARIN
-
-	; text when seen
-	dw CooltrainermDarinSeenText
-
-	; text when trainer beaten
-	dw CooltrainermDarinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermDarinScript
-
 CooltrainermDarinScript:
 	talkaftercancel
 	loadfont
@@ -105,24 +89,8 @@
 	end
 
 TrainerCooltrainerfCara:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_CARA
+	trainer EVENT_BEAT_COOLTRAINERF_CARA, COOLTRAINERF, CARA, CooltrainerfCaraSeenText, CooltrainerfCaraBeatenText, $0000, CooltrainerfCaraScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, CARA
-
-	; text when seen
-	dw CooltrainerfCaraSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfCaraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfCaraScript
-
 CooltrainerfCaraScript:
 	talkaftercancel
 	loadfont
@@ -132,24 +100,8 @@
 	end
 
 TrainerTwinsLeaandpia1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_LEA_AND_PIA
+	trainer EVENT_BEAT_TWINS_LEA_AND_PIA, TWINS, LEAANDPIA1, TwinsLeaandpia1SeenText, TwinsLeaandpia1BeatenText, $0000, TwinsLeaandpia1Script
 
-	; trainer group && trainer id
-	db TWINS, LEAANDPIA1
-
-	; text when seen
-	dw TwinsLeaandpia1SeenText
-
-	; text when trainer beaten
-	dw TwinsLeaandpia1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsLeaandpia1Script
-
 TwinsLeaandpia1Script:
 	talkaftercancel
 	loadfont
@@ -159,24 +111,8 @@
 	end
 
 TrainerTwinsLeaandpia2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_LEA_AND_PIA
+	trainer EVENT_BEAT_TWINS_LEA_AND_PIA, TWINS, LEAANDPIA1, TwinsLeaandpia2SeenText, TwinsLeaandpia2BeatenText, $0000, TwinsLeaandpia2Script
 
-	; trainer group && trainer id
-	db TWINS, LEAANDPIA1
-
-	; text when seen
-	dw TwinsLeaandpia2SeenText
-
-	; text when trainer beaten
-	dw TwinsLeaandpia2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsLeaandpia2Script
-
 TwinsLeaandpia2Script:
 	talkaftercancel
 	loadfont
@@ -212,12 +148,12 @@
 	playmusic MUSIC_RIVAL_ENCOUNTER
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x18c995
 	writetext UnknownText_0x18cc83
 	closetext
 	loadmovesprites
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 	special RestartMapMusic
 	end
 
@@ -238,16 +174,13 @@
 	db MAX_ELIXER, 1
 
 MapDragonsDenB1FSignpostItem1:
-	dw $00a0
-	db REVIVE
+	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_REVIVE, REVIVE
 
 MapDragonsDenB1FSignpostItem2:
-	dw $00a1
-	db MAX_POTION
+	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_POTION, MAX_POTION
 
 MapDragonsDenB1FSignpostItem3:
-	dw $00a2
-	db MAX_ELIXER
+	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_ELIXER, MAX_ELIXER
 
 MovementData_0x18c9ae:
 	slow_step_right
@@ -468,30 +401,30 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $14, 3, GROUP_DRAGONS_DEN_1F, MAP_DRAGONS_DEN_1F
 	warp_def $1d, $13, 1, GROUP_DRAGON_SHRINE, MAP_DRAGON_SHRINE
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 1, $1e, $13, $0, UnknownScript_0x18c8b8, $0, $0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 24, 18, $0, MapDragonsDenB1FSignpost0Script
-	signpost 29, 33, $7, MapDragonsDenB1FSignpostItem1
-	signpost 17, 21, $7, MapDragonsDenB1FSignpostItem2
-	signpost 15, 31, $7, MapDragonsDenB1FSignpostItem3
+	signpost 24, 18, SIGNPOST_READ, MapDragonsDenB1FSignpost0Script
+	signpost 29, 33, SIGNPOST_ITEM, MapDragonsDenB1FSignpostItem1
+	signpost 17, 21, SIGNPOST_ITEM, MapDragonsDenB1FSignpostItem2
+	signpost 15, 31, SIGNPOST_ITEM, MapDragonsDenB1FSignpostItem3
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_POKE_BALL, 20, 39, $1, $0, 255, 255, $0, 0, PokeBallScript_0x18c95a, EVENT_6A8
-	person_event SPRITE_CLAIR, 34, 18, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_6D8
-	person_event SPRITE_SILVER, 27, 24, $2, $22, 255, 255, $0, 0, SilverScript_0x18c97e, EVENT_6C6
-	person_event SPRITE_COOLTRAINER_M, 12, 24, $7, $0, 255, 255, $82, 4, TrainerCooltrainermDarin, -1
-	person_event SPRITE_COOLTRAINER_F, 12, 12, $6, $0, 255, 255, $82, 3, TrainerCooltrainerfCara, -1
-	person_event SPRITE_TWIN, 21, 8, $9, $0, 255, 255, $82, 1, TrainerTwinsLeaandpia1, -1
-	person_event SPRITE_TWIN, 22, 8, $9, $0, 255, 255, $82, 1, TrainerTwinsLeaandpia2, -1
-	person_event SPRITE_POKE_BALL, 8, 34, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c9a1, EVENT_7BF
-	person_event SPRITE_POKE_BALL, 24, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c9a3, EVENT_7C0
+	person_event SPRITE_POKE_BALL, 20, 39, OW_DOWN | $1, $0, -1, -1, $0, 0, PokeBallScript_0x18c95a, EVENT_DRAGONS_DEN_B1F_DRAGON_FANG
+	person_event SPRITE_CLAIR, 34, 18, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_DRAGONS_DEN_CLAIR
+	person_event SPRITE_SILVER, 27, 24, OW_DOWN | $2, $22, -1, -1, $0, 0, SilverScript_0x18c97e, EVENT_RIVAL_DRAGONS_DEN
+	person_event SPRITE_COOLTRAINER_M, 12, 24, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainermDarin, -1
+	person_event SPRITE_COOLTRAINER_F, 12, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfCara, -1
+	person_event SPRITE_TWIN, 21, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsLeaandpia1, -1
+	person_event SPRITE_TWIN, 22, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsLeaandpia2, -1
+	person_event SPRITE_POKE_BALL, 8, 34, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c9a1, EVENT_DRAGONS_DEN_B1F_CALCIUM
+	person_event SPRITE_POKE_BALL, 24, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c9a3, EVENT_DRAGONS_DEN_B1F_MAX_ELIXER
--- a/maps/EarlsPokemonAcademy.asm
+++ b/maps/EarlsPokemonAcademy.asm
@@ -1,8 +1,8 @@
 EarlsPokemonAcademy_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 AcademyEarl:
@@ -408,26 +408,26 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $3, 3, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $f, $4, 3, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 1, 0, $0, AcademyBookshelf
-	signpost 1, 1, $0, AcademyBookshelf
-	signpost 0, 3, $0, AcademyBlackboard
-	signpost 0, 4, $0, AcademyBlackboard
+	signpost 1, 0, SIGNPOST_READ, AcademyBookshelf
+	signpost 1, 1, SIGNPOST_READ, AcademyBookshelf
+	signpost 0, 3, SIGNPOST_READ, AcademyBlackboard
+	signpost 0, 4, SIGNPOST_READ, AcademyBlackboard
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_FISHER, 6, 8, $6, $0, 255, 255, $a0, 0, AcademyEarl, EVENT_6CB
-	person_event SPRITE_YOUNGSTER, 9, 6, $7, $0, 255, 255, $80, 0, YoungsterScript_0x68a83, -1
-	person_event SPRITE_GAMEBOY_KID, 15, 7, $6, $0, 255, 255, $0, 0, GameboyKidScript_0x68a86, -1
-	person_event SPRITE_GAMEBOY_KID, 15, 8, $8, $0, 255, 255, $80, 0, GameboyKidScript_0x68a91, -1
-	person_event SPRITE_YOUNGSTER, 11, 8, $7, $0, 255, 255, $0, 0, YoungsterScript_0x68a9c, -1
-	person_event SPRITE_POKEDEX, 8, 6, $1, $0, 255, 255, $0, 0, AcademyNotebook, -1
+	person_event SPRITE_FISHER, 6, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, AcademyEarl, EVENT_EARLS_ACADEMY_EARL
+	person_event SPRITE_YOUNGSTER, 9, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x68a83, -1
+	person_event SPRITE_GAMEBOY_KID, 15, 7, OW_UP | $2, $0, -1, -1, $0, 0, GameboyKidScript_0x68a86, -1
+	person_event SPRITE_GAMEBOY_KID, 15, 8, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GameboyKidScript_0x68a91, -1
+	person_event SPRITE_YOUNGSTER, 11, 8, OW_UP | $3, $0, -1, -1, $0, 0, YoungsterScript_0x68a9c, -1
+	person_event SPRITE_POKEDEX, 8, 6, OW_DOWN | $1, $0, -1, -1, $0, 0, AcademyNotebook, -1
--- a/maps/EcruteakCity.asm
+++ b/maps/EcruteakCity.asm
@@ -1,8 +1,8 @@
 EcruteakCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -81,8 +81,7 @@
 	jumpstd martsign
 
 MapEcruteakCitySignpostItem7:
-	dw $00b4
-	db HYPER_POTION
+	dwb EVENT_ECRUTEAK_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
 
 UnusedMissingDaughterText:
 ; This text is neither used nor referenced in the final game.
@@ -257,7 +256,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 15
 	warp_def $1a, $23, 1, GROUP_ROUTE_42_ECRUTEAK_GATE, MAP_ROUTE_42_ECRUTEAK_GATE
 	warp_def $1b, $23, 2, GROUP_ROUTE_42_ECRUTEAK_GATE, MAP_ROUTE_42_ECRUTEAK_GATE
@@ -275,26 +274,26 @@
 	warp_def $12, $0, 3, GROUP_ROUTE_38_ECRUTEAK_GATE, MAP_ROUTE_38_ECRUTEAK_GATE
 	warp_def $13, $0, 4, GROUP_ROUTE_38_ECRUTEAK_GATE, MAP_ROUTE_38_ECRUTEAK_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 8
-	signpost 21, 15, $0, EcruteakCitySign
-	signpost 10, 38, $0, TinTowerSign
-	signpost 28, 8, $0, EcruteakGymSign
-	signpost 21, 21, $0, EcruteakDanceTheaterSign
-	signpost 10, 2, $0, BurnedTowerSign
-	signpost 27, 24, $0, EcruteakCityPokeCenterSign
-	signpost 21, 30, $0, EcruteakCityMartSign
-	signpost 14, 23, $7, MapEcruteakCitySignpostItem7
+	signpost 21, 15, SIGNPOST_READ, EcruteakCitySign
+	signpost 10, 38, SIGNPOST_READ, TinTowerSign
+	signpost 28, 8, SIGNPOST_READ, EcruteakGymSign
+	signpost 21, 21, SIGNPOST_READ, EcruteakDanceTheaterSign
+	signpost 10, 2, SIGNPOST_READ, BurnedTowerSign
+	signpost 27, 24, SIGNPOST_READ, EcruteakCityPokeCenterSign
+	signpost 21, 30, SIGNPOST_READ, EcruteakCityMartSign
+	signpost 14, 23, SIGNPOST_ITEM, MapEcruteakCitySignpostItem7
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_GRAMPS, 19, 22, $2, $11, 255, 255, $0, 0, GrampsScript_0x1a4009, -1
-	person_event SPRITE_GRAMPS, 25, 24, $3, $0, 255, 255, $0, 0, GrampsScript_0x1a400c, -1
-	person_event SPRITE_LASS, 33, 25, $5, $2, 255, 255, $90, 0, LassScript_0x1a4012, -1
-	person_event SPRITE_LASS, 13, 7, $7, $0, 255, 255, $0, 0, LassScript_0x1a4015, -1
-	person_event SPRITE_FISHER, 26, 13, $5, $1, 255, 255, $a0, 0, FisherScript_0x1a4029, -1
-	person_event SPRITE_YOUNGSTER, 18, 14, $2, $11, 255, 255, $80, 0, YoungsterScript_0x1a403d, -1
-	person_event SPRITE_GRAMPS, 11, 7, $2, $11, 255, 255, $a0, 0, GrampsScript_0x1a400f, EVENT_7A9
+	person_event SPRITE_GRAMPS, 19, 22, OW_DOWN | $2, $11, -1, -1, $0, 0, GrampsScript_0x1a4009, -1
+	person_event SPRITE_GRAMPS, 25, 24, OW_DOWN | $3, $0, -1, -1, $0, 0, GrampsScript_0x1a400c, -1
+	person_event SPRITE_LASS, 33, 25, OW_UP | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x1a4012, -1
+	person_event SPRITE_LASS, 13, 7, OW_UP | $3, $0, -1, -1, $0, 0, LassScript_0x1a4015, -1
+	person_event SPRITE_FISHER, 26, 13, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a4029, -1
+	person_event SPRITE_YOUNGSTER, 18, 14, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x1a403d, -1
+	person_event SPRITE_GRAMPS, 11, 7, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GrampsScript_0x1a400f, EVENT_ECRUTEAK_CITY_GRAMPS
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -1,5 +1,5 @@
 EcruteakGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x99d53, $0000
 	dw UnknownScript_0x99d57, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x99d53:
@@ -37,8 +37,8 @@
 	checkcode VAR_BADGES
 	scall EcruteakGymTriggerRockets
 	domaptrigger GROUP_ECRUTEAK_HOUSE, MAP_ECRUTEAK_HOUSE, $1
-	setevent EVENT_766
-	setevent EVENT_RANG_CLEAR_BELL
+	setevent EVENT_RANG_CLEAR_BELL_1
+	setevent EVENT_RANG_CLEAR_BELL_2
 .FightDone
 	checkevent EVENT_GOT_TM30_SHADOW_BALL
 	iftrue UnknownScript_0x99db1
@@ -84,7 +84,7 @@
 	follow $0, $8
 	applymovement $0, MovementData_0x99e5f
 	stopfollow
-	special Function8c084
+	special FadeBlackBGMap
 	playsound SFX_ENTER_DOOR
 	waitbutton
 	warp GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY, $6, $1b
@@ -91,24 +91,8 @@
 	end
 
 TrainerSageJeffrey:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_JEFFREY
+	trainer EVENT_BEAT_SAGE_JEFFREY, SAGE, JEFFREY, SageJeffreySeenText, SageJeffreyBeatenText, $0000, SageJeffreyScript
 
-	; trainer group && trainer id
-	db SAGE, JEFFREY
-
-	; text when seen
-	dw SageJeffreySeenText
-
-	; text when trainer beaten
-	dw SageJeffreyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageJeffreyScript
-
 SageJeffreyScript:
 	talkaftercancel
 	loadfont
@@ -118,24 +102,8 @@
 	end
 
 TrainerSagePing:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_PING
+	trainer EVENT_BEAT_SAGE_PING, SAGE, PING, SagePingSeenText, SagePingBeatenText, $0000, SagePingScript
 
-	; trainer group && trainer id
-	db SAGE, PING
-
-	; text when seen
-	dw SagePingSeenText
-
-	; text when trainer beaten
-	dw SagePingBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SagePingScript
-
 SagePingScript:
 	talkaftercancel
 	loadfont
@@ -145,24 +113,8 @@
 	end
 
 TrainerMediumMartha:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_MARTHA
+	trainer EVENT_BEAT_MEDIUM_MARTHA, MEDIUM, MARTHA, MediumMarthaSeenText, MediumMarthaBeatenText, $0000, MediumMarthaScript
 
-	; trainer group && trainer id
-	db MEDIUM, MARTHA
-
-	; text when seen
-	dw MediumMarthaSeenText
-
-	; text when trainer beaten
-	dw MediumMarthaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumMarthaScript
-
 MediumMarthaScript:
 	talkaftercancel
 	loadfont
@@ -172,24 +124,8 @@
 	end
 
 TrainerMediumGrace:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_GRACE
+	trainer EVENT_BEAT_MEDIUM_GRACE, MEDIUM, GRACE, MediumGraceSeenText, MediumGraceBeatenText, $0000, MediumGraceScript
 
-	; trainer group && trainer id
-	db MEDIUM, GRACE
-
-	; text when seen
-	dw MediumGraceSeenText
-
-	; text when trainer beaten
-	dw MediumGraceBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumGraceScript
-
 MediumGraceScript:
 	talkaftercancel
 	loadfont
@@ -447,7 +383,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 33
 	warp_def $11, $4, 10, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $11, $5, 10, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
@@ -483,20 +419,20 @@
 	warp_def $c, $7, 3, GROUP_ECRUTEAK_GYM, MAP_ECRUTEAK_GYM
 	warp_def $d, $7, 3, GROUP_ECRUTEAK_GYM, MAP_ECRUTEAK_GYM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 3, $0, EcruteakGymStatue
-	signpost 15, 6, $0, EcruteakGymStatue
+	signpost 15, 3, SIGNPOST_READ, EcruteakGymStatue
+	signpost 15, 6, SIGNPOST_READ, EcruteakGymStatue
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_MORTY, 5, 9, $6, $0, 255, 255, $b0, 0, MortyScript_0x99d58, -1
-	person_event SPRITE_SAGE, 11, 6, $9, $0, 255, 255, $92, 1, TrainerSageJeffrey, -1
-	person_event SPRITE_SAGE, 17, 7, $9, $0, 255, 255, $92, 3, TrainerSagePing, -1
-	person_event SPRITE_GRANNY, 9, 11, $8, $0, 255, 255, $b2, 1, TrainerMediumMartha, -1
-	person_event SPRITE_GRANNY, 13, 11, $8, $0, 255, 255, $b2, 1, TrainerMediumGrace, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $80, 0, EcruteakGymGuyScript, -1
-	person_event SPRITE_GRAMPS, 18, 8, $6, $0, 255, 255, $a0, 0, ObjectEvent, EVENT_7A8
+	person_event SPRITE_MORTY, 5, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MortyScript_0x99d58, -1
+	person_event SPRITE_SAGE, 11, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSageJeffrey, -1
+	person_event SPRITE_SAGE, 17, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSagePing, -1
+	person_event SPRITE_GRANNY, 9, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerMediumMartha, -1
+	person_event SPRITE_GRANNY, 13, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerMediumGrace, -1
+	person_event SPRITE_GYM_GUY, 19, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, EcruteakGymGuyScript, -1
+	person_event SPRITE_GRAMPS, 18, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, EVENT_ECRUTEAK_GYM_GRAMPS
--- a/maps/EcruteakHouse.asm
+++ b/maps/EcruteakHouse.asm
@@ -1,50 +1,50 @@
 EcruteakHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x9800d, $0000
-	dw UnknownScript_0x9800e, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x9800f
+	dbw 2, .InitializeSages
 
-UnknownScript_0x9800d:
+.Trigger1:
 	end
 
-UnknownScript_0x9800e:
+.Trigger2:
 	end
 
-UnknownScript_0x9800f:
+.InitializeSages:
 	checkevent EVENT_FOUGHT_SUICUNE
-	iftrue UnknownScript_0x98033
+	iftrue .DontBlockTower
 	checkevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
-	iftrue UnknownScript_0x98033
+	iftrue .DontBlockTower
 	checkevent EVENT_CLEARED_RADIO_TOWER
-	iftrue UnknownScript_0x98022
+	iftrue .BlockTower
 	return
 
-UnknownScript_0x98022:
-	clearevent EVENT_766
-	setevent EVENT_RANG_CLEAR_BELL
-	setevent EVENT_7B1
+.BlockTower:
+	clearevent EVENT_RANG_CLEAR_BELL_1
+	setevent EVENT_RANG_CLEAR_BELL_2
+	setevent EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
 	checkitem CLEAR_BELL
-	iftrue UnknownScript_0x98032
+	iftrue .NoClearBell
 	dotrigger $0
-UnknownScript_0x98032:
+.NoClearBell:
 	return
 
-UnknownScript_0x98033:
-	clearevent EVENT_7B1
+.DontBlockTower:
+	clearevent EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
 	return
 
-UnknownScript_0x98037:
-	checkevent EVENT_RANG_CLEAR_BELL
-	iftrue UnknownScript_0x98061
+EcruteakHouse_XYTrigger1:
+	checkevent EVENT_RANG_CLEAR_BELL_2
+	iftrue EcruteakHouse_XYTrigger_DontMove
 	applymovement $3, MovementData_0x980c7
 	moveperson $2, $4, $6
 	appear $2
@@ -52,9 +52,9 @@
 	disappear $3
 	end
 
-UnknownScript_0x9804c:
-	checkevent EVENT_766
-	iftrue UnknownScript_0x98061
+EcruteakHouse_XYTrigger2:
+	checkevent EVENT_RANG_CLEAR_BELL_1
+	iftrue EcruteakHouse_XYTrigger_DontMove
 	applymovement $2, MovementData_0x980cc
 	moveperson $3, $5, $6
 	appear $3
@@ -62,7 +62,7 @@
 	disappear $2
 	end
 
-UnknownScript_0x98061:
+EcruteakHouse_XYTrigger_DontMove:
 	end
 
 SageScript_0x98062:
@@ -69,49 +69,49 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_CLEARED_RADIO_TOWER
-	iftrue UnknownScript_0x9807c
+	iftrue .CheckForClearBell
 	checkflag ENGINE_FOGBADGE
-	iftrue UnknownScript_0x98076
+	iftrue .BlockPassage_GotFogBadge
 	writetext UnknownText_0x980d1
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x98076:
+.BlockPassage_GotFogBadge:
 	writetext UnknownText_0x98131
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x9807c:
+.CheckForClearBell:
 	checkevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
-	iftrue UnknownScript_0x980a4
-	checkevent EVENT_000
-	iftrue UnknownScript_0x980aa
+	iftrue .AllowedThrough
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iftrue .Event000
 	checkitem CLEAR_BELL
-	iftrue UnknownScript_0x98093
+	iftrue .RingClearBell
 	writetext UnknownText_0x981a4
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x98093:
+.RingClearBell:
 	writetext UnknownText_0x98250
 	closetext
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_RANG_CLEAR_BELL
-	clearevent EVENT_766
-	setevent EVENT_000
+	setevent EVENT_RANG_CLEAR_BELL_2
+	clearevent EVENT_RANG_CLEAR_BELL_1
+	setevent EVENT_GAVE_KURT_APRICORNS
 	end
 
-UnknownScript_0x980a4:
+.AllowedThrough:
 	writetext UnknownText_0x9837e
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x980aa:
+.Event000:
 	writetext UnknownText_0x98391
 	closetext
 	loadmovesprites
@@ -121,13 +121,13 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_GOT_CLEAR_BELL
-	iftrue UnknownScript_0x980be
+	iftrue .GotClearBell
 	writetext UnknownText_0x9840b
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x980be:
+.GotClearBell:
 	writetext UnknownText_0x9846f
 	closetext
 	loadmovesprites
@@ -280,7 +280,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $11, $4, 3, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $11, $5, 3, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
@@ -288,17 +288,17 @@
 	warp_def $f, $11, 3, GROUP_ECRUTEAK_HOUSE, MAP_ECRUTEAK_HOUSE
 	warp_def $3, $11, 3, GROUP_WISE_TRIOS_ROOM, MAP_WISE_TRIOS_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 2
-	xy_trigger 0, $7, $4, $0, UnknownScript_0x98037, $0, $0
-	xy_trigger 0, $7, $5, $0, UnknownScript_0x9804c, $0, $0
+	xy_trigger 0, $7, $4, $0, EcruteakHouse_XYTrigger1, $0, $0
+	xy_trigger 0, $7, $5, $0, EcruteakHouse_XYTrigger2, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_SAGE, 10, 8, $6, $0, 255, 255, $0, 0, SageScript_0x98062, EVENT_766
-	person_event SPRITE_SAGE, 10, 9, $6, $0, 255, 255, $0, 0, SageScript_0x98062, EVENT_RANG_CLEAR_BELL
-	person_event SPRITE_SAGE, 13, 10, $2, $11, 255, 255, $0, 0, SageScript_0x980b0, EVENT_7B1
-	person_event SPRITE_GRAMPS, 15, 7, $2, $11, 255, 255, $0, 0, GrampsScript_0x980c4, EVENT_7B1
+	person_event SPRITE_SAGE, 10, 8, OW_UP | $2, $0, -1, -1, $0, 0, SageScript_0x98062, EVENT_RANG_CLEAR_BELL_1
+	person_event SPRITE_SAGE, 10, 9, OW_UP | $2, $0, -1, -1, $0, 0, SageScript_0x98062, EVENT_RANG_CLEAR_BELL_2
+	person_event SPRITE_SAGE, 13, 10, OW_DOWN | $2, $11, -1, -1, $0, 0, SageScript_0x980b0, EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
+	person_event SPRITE_GRAMPS, 15, 7, OW_DOWN | $2, $11, -1, -1, $0, 0, GrampsScript_0x980c4, EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
--- a/maps/EcruteakItemfinderHouse.asm
+++ b/maps/EcruteakItemfinderHouse.asm
@@ -1,8 +1,8 @@
 EcruteakItemfinderHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 CooltrainerMScript_0x9a5fb:
@@ -162,19 +162,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 11, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $7, $4, 11, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 1, 2, $0, ItemFinderHouseRadio
+	signpost 1, 2, SIGNPOST_READ, ItemFinderHouseRadio
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_COOLTRAINER_M, 7, 6, $6, $0, 255, 255, $80, 0, CooltrainerMScript_0x9a5fb, -1
-	person_event SPRITE_POKEDEX, 7, 7, $1, $0, 255, 255, $0, 0, PokedexScript_0x9a620, -1
+	person_event SPRITE_COOLTRAINER_M, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x9a5fb, -1
+	person_event SPRITE_POKEDEX, 7, 7, OW_DOWN | $1, $0, -1, -1, $0, 0, PokedexScript_0x9a620, -1
--- a/maps/EcruteakLugiaSpeechHouse.asm
+++ b/maps/EcruteakLugiaSpeechHouse.asm
@@ -1,8 +1,8 @@
 EcruteakLugiaSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrampsScript_0x99334:
@@ -44,19 +44,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 7, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $7, $4, 7, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 1, 2, $0, LugiaSpeechHouseRadio
+	signpost 1, 2, SIGNPOST_READ, LugiaSpeechHouseRadio
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_GRAMPS, 7, 6, $3, $0, 255, 255, $0, 0, GrampsScript_0x99334, -1
-	person_event SPRITE_YOUNGSTER, 8, 9, $8, $0, 255, 255, $0, 0, YoungsterScript_0x99337, -1
+	person_event SPRITE_GRAMPS, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, GrampsScript_0x99334, -1
+	person_event SPRITE_YOUNGSTER, 8, 9, OW_LEFT | $0, $0, -1, -1, $0, 0, YoungsterScript_0x99337, -1
--- a/maps/EcruteakMart.asm
+++ b/maps/EcruteakMart.asm
@@ -1,8 +1,8 @@
 EcruteakMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x99c3b:
@@ -44,19 +44,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 9, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $7, $3, 9, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x99c3b, -1
-	person_event SPRITE_SUPER_NERD, 6, 9, $5, $1, 255, 255, $a0, 0, SuperNerdScript_0x99c42, -1
-	person_event SPRITE_GRANNY, 10, 10, $7, $0, 255, 255, $0, 0, GrannyScript_0x99c45, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x99c3b, -1
+	person_event SPRITE_SUPER_NERD, 6, 9, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x99c42, -1
+	person_event SPRITE_GRANNY, 10, 10, OW_UP | $3, $0, -1, -1, $0, 0, GrannyScript_0x99c45, -1
--- a/maps/EcruteakPokeCenter1F.asm
+++ b/maps/EcruteakPokeCenter1F.asm
@@ -1,5 +1,5 @@
 EcruteakPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x98e5f, $0000
 	dw UnknownScript_0x98e63, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x98e5f:
@@ -205,22 +205,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 6, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $7, $4, 6, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x98eb0, -1
-	person_event SPRITE_POKEFAN_M, 10, 11, $a, $0, 255, 255, $0, 0, PokefanMScript_0x98eb3, -1
-	person_event SPRITE_COOLTRAINER_F, 8, 5, $3, $0, 255, 255, $0, 0, CooltrainerFScript_0x98ebf, -1
-	person_event SPRITE_GYM_GUY, 5, 11, $6, $0, 255, 255, $a0, 0, GymGuyScript_0x98ec2, -1
-	person_event SPRITE_BILL, 11, 4, $9, $0, 255, 255, $0, 0, ObjectEvent, EVENT_713
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x98eb0, -1
+	person_event SPRITE_POKEFAN_M, 10, 11, OW_LEFT | $2, $0, -1, -1, $0, 0, PokefanMScript_0x98eb3, -1
+	person_event SPRITE_COOLTRAINER_F, 8, 5, OW_DOWN | $3, $0, -1, -1, $0, 0, CooltrainerFScript_0x98ebf, -1
+	person_event SPRITE_GYM_GUY, 5, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GymGuyScript_0x98ec2, -1
+	person_event SPRITE_BILL, 11, 4, OW_LEFT | $1, $0, -1, -1, $0, 0, ObjectEvent, EVENT_ECRUTEAK_POKE_CENTER_BILL
--- a/maps/ElmsHouse.asm
+++ b/maps/ElmsHouse.asm
@@ -1,8 +1,8 @@
 ElmsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ElmsWife:
@@ -83,21 +83,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 	warp_def $7, $3, 4, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, ElmsHousePC
-	signpost 1, 6, $0, ElmsHouseBookshelf
-	signpost 1, 7, $0, ElmsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, ElmsHousePC
+	signpost 1, 6, SIGNPOST_READ, ElmsHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, ElmsHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_TEACHER, 9, 5, $4, $10, 255, 255, $a0, 0, ElmsWife, -1
-	person_event SPRITE_BUG_CATCHER, 8, 9, $7, $0, 255, 255, $0, 0, ElmsSon, -1
+	person_event SPRITE_TEACHER, 9, 5, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ElmsWife, -1
+	person_event SPRITE_BUG_CATCHER, 8, 9, OW_UP | $3, $0, -1, -1, $0, 0, ElmsSon, -1
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -1,5 +1,5 @@
 ElmsLab_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 6
 
 	; triggers
@@ -10,15 +10,15 @@
 	dw UnknownScript_0x78b81, $0000
 	dw UnknownScript_0x78b82, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x78b83
+	dbw 2, ElmsLab_PutElmAtLaptop
 
 UnknownScript_0x78b7a:
-	priorityjump UnknownScript_0x78b8c
+	priorityjump ElmsLab_AutowalkUpToElm
 	end
 
 UnknownScript_0x78b7e:
@@ -36,50 +36,50 @@
 UnknownScript_0x78b82:
 	end
 
-UnknownScript_0x78b83:
+ElmsLab_PutElmAtLaptop:
 	checktriggers
-	iftrue UnknownScript_0x78b8b
+	iftrue .Skip
 	moveperson $2, $3, $4
-UnknownScript_0x78b8b:
+.Skip:
 	return
 
-UnknownScript_0x78b8c:
-	applymovement $0, MovementData_0x78f67
-	showemote $0, $2, 15
+ElmsLab_AutowalkUpToElm:
+	applymovement $0, ElmsLab_WalkUpToElmMovement
+	showemote EMOTE_SHOCK, $2, 15
 	spriteface $2, RIGHT
 	loadfont
-	writetext UnknownText_0x78fb6
-UnknownScript_0x78b9b:
+	writetext ElmText_Intro
+ElmsLab_RefuseLoop:
 	yesorno
-	iftrue UnknownScript_0x78ba5
-	writetext UnknownText_0x7911a
-	jump UnknownScript_0x78b9b
+	iftrue ElmsLab_ElmGetsEmail
+	writetext ElmText_Refused
+	jump ElmsLab_RefuseLoop
 
-UnknownScript_0x78ba5:
-	writetext UnknownText_0x790fa
+ElmsLab_ElmGetsEmail:
+	writetext ElmText_Accepted
 	keeptextopen
-	writetext UnknownText_0x7913a
+	writetext ElmText_ResearchAmbitions
 	closetext
 	loadmovesprites
 	playsound SFX_GLASS_TING
 	pause 30
-	showemote $0, $2, 10
+	showemote EMOTE_SHOCK, $2, 10
 	spriteface $2, DOWN
 	loadfont
-	writetext UnknownText_0x791ae
+	writetext ElmText_GotAnEmail
 	closetext
 	loadmovesprites
 	loadfont
 	spriteface $2, RIGHT
-	writetext UnknownText_0x791df
+	writetext ElmText_MissionFromMrPokemon
 	closetext
 	loadmovesprites
-	applymovement $2, MovementData_0x78fa0
+	applymovement $2, ElmsLab_ElmToDefaultPositionMovement1
 	spriteface $0, UP
-	applymovement $2, MovementData_0x78fa2
+	applymovement $2, ElmsLab_ElmToDefaultPositionMovement2
 	spriteface $0, RIGHT
 	loadfont
-	writetext UnknownText_0x792ff
+	writetext ElmText_ChooseAPokemon
 	closetext
 	dotrigger $1
 	loadmovesprites
@@ -89,21 +89,21 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_GOT_SS_TICKET_FROM_ELM
-	iftrue UnknownScript_0x78bee
+	iftrue ElmCheckMasterBall
 	checkevent EVENT_BEAT_ELITE_FOUR
 	iftrue ElmGiveTicketScript
-UnknownScript_0x78bee:
+ElmCheckMasterBall:
 	checkevent EVENT_GOT_MASTER_BALL_FROM_ELM
-	iftrue UnknownScript_0x78bfa
+	iftrue ElmCheckEverstone
 	checkflag ENGINE_RISINGBADGE
 	iftrue ElmGiveMasterBallScript
-UnknownScript_0x78bfa:
+ElmCheckEverstone:
 	checkevent EVENT_GOT_EVERSTONE_FROM_ELM
-	iftrue UnknownScript_0x78e16
+	iftrue ElmScript_CallYou
 	checkevent EVENT_SHOWED_TOGEPI_TO_ELM
-	iftrue UnknownScript_0x78e03
+	iftrue ElmGiveEverstoneScript
 	checkevent EVENT_TOLD_ELM_ABOUT_TOGEPI_OVER_THE_PHONE
-	iffalse UnknownScript_0x78c35
+	iffalse ElmCheckTogepiEgg
 	writebyte TOGEPI
 	special Functionc284
 	iftrue ShowElmTogepiScript
@@ -115,7 +115,7 @@
 	loadmovesprites
 	end
 
-UnknownScript_0x78c22:
+ElmEggHatchedScript:
 	writebyte TOGEPI
 	special Functionc284
 	iftrue ShowElmTogepiScript
@@ -122,14 +122,14 @@
 	writebyte TOGETIC
 	special Functionc284
 	iftrue ShowElmTogepiScript
-	jump UnknownScript_0x78c41
+	jump ElmCheckGotEggAgain
 
-UnknownScript_0x78c35:
+ElmCheckTogepiEgg:
 	checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
-	iffalse UnknownScript_0x78c41
+	iffalse ElmCheckGotEggAgain
 	checkevent EVENT_TOGEPI_HATCHED
-	iftrue UnknownScript_0x78c22
-UnknownScript_0x78c41:
+	iftrue ElmEggHatchedScript
+ElmCheckGotEggAgain:
 	checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE ; why are we checking it again?
 	iftrue ElmWaitingEggHatchScript
 	checkflag ENGINE_ZEPHYRBADGE
@@ -140,7 +140,7 @@
 	iftrue ElmAfterTheftScript
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue ElmDescribesMrPokemonScript
-	writetext UnknownText_0x79375
+	writetext ElmText_LetYourMonBattleIt
 	closetext
 	loadmovesprites
 	end
@@ -252,7 +252,7 @@
 	writetext ElmDirectionsText1
 	closetext
 	loadmovesprites
-	addcellnum $4
+	addcellnum PHONE_ELM
 	loadfont
 	writetext GotElmsNumberText
 	playsound SFX_REGISTER_PHONE_NUMBER
@@ -270,7 +270,7 @@
 	closetext
 	loadmovesprites
 	setevent EVENT_GOT_A_POKEMON_FROM_ELM
-	setevent EVENT_6BE
+	setevent EVENT_RIVAL_CHERRYGROVE_CITY
 	dotrigger $5
 	domaptrigger GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN, $1
 	end
@@ -300,15 +300,15 @@
 .CanHeal
 	writetext ElmsLabHealingMachineText2
 	yesorno
-	iftrue UnknownScript_0x78d8a
+	iftrue ElmsLabHealingMachine_HealParty
 	loadmovesprites
 	end
 
-UnknownScript_0x78d8a:
-	special Function1060a2
+ElmsLabHealingMachine_HealParty:
+	special Mobile_HealParty
 	special HealParty
 	playmusic MUSIC_NONE
-	writebyte $1
+	writebyte 1 ; Machine is in Elm's Lab
 	special HealMachineAnim
 	pause 30
 	special RestartMapMusic
@@ -339,8 +339,8 @@
 	setevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	setflag ENGINE_BUG_CONTEST_ON
 	domaptrigger GROUP_ROUTE_29, MAP_ROUTE_29, $1
-	clearevent EVENT_715
-	setevent EVENT_714
+	clearevent EVENT_ROUTE_30_YOUNGSTER_JOEY
+	setevent EVENT_ROUTE_30_BATTLE
 	writetext ElmAfterTheftText6
 	closetext
 	loadmovesprites
@@ -369,7 +369,7 @@
 	writetext ShowElmTogepiText1
 	closetext
 	loadmovesprites
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	setevent EVENT_SHOWED_TOGEPI_TO_ELM
 	loadfont
 	writetext ShowElmTogepiText2
@@ -376,11 +376,11 @@
 	keeptextopen
 	writetext ShowElmTogepiText3
 	keeptextopen
-UnknownScript_0x78e03:
+ElmGiveEverstoneScript:
 	writetext ElmGiveEverstoneText1
 	keeptextopen
 	verbosegiveitem EVERSTONE, 1
-	iffalse UnknownScript_0x78e1a
+	iffalse ElmScript_NoRoomForEverstone
 	writetext ElmGiveEverstoneText2
 	closetext
 	loadmovesprites
@@ -387,10 +387,10 @@
 	setevent EVENT_GOT_EVERSTONE_FROM_ELM
 	end
 
-UnknownScript_0x78e16:
-	writetext UnknownText_0x79c37
+ElmScript_CallYou:
+	writetext ElmText_CallYou
 	closetext
-UnknownScript_0x78e1a:
+ElmScript_NoRoomForEverstone:
 	loadmovesprites
 	end
 
@@ -419,88 +419,88 @@
 ElmJumpBackScript1:
 	loadmovesprites
 	checkcode VAR_FACING
-	if_equal $0, UnknownScript_0x78e6d
-	if_equal $1, UnknownScript_0x78e67
-	if_equal $2, UnknownScript_0x78e73
-	if_equal $3, UnknownScript_0x78e79
+	if_equal DOWN, ElmJumpDownScript
+	if_equal UP, ElmJumpUpScript
+	if_equal LEFT, ElmJumpLeftScript
+	if_equal RIGHT, ElmJumpRightScript
 	end
 
 ElmJumpBackScript2:
 	loadmovesprites
 	checkcode VAR_FACING
-	if_equal $0, UnknownScript_0x78e67
-	if_equal $1, UnknownScript_0x78e6d
-	if_equal $2, UnknownScript_0x78e79
-	if_equal $3, UnknownScript_0x78e73
+	if_equal DOWN, ElmJumpUpScript
+	if_equal UP, ElmJumpDownScript
+	if_equal LEFT, ElmJumpRightScript
+	if_equal RIGHT, ElmJumpLeftScript
 	end
 
-UnknownScript_0x78e67:
-	applymovement $2, MovementData_0x78f90
+ElmJumpUpScript:
+	applymovement $2, ElmJumpUpMovement
 	loadfont
 	end
 
-UnknownScript_0x78e6d:
-	applymovement $2, MovementData_0x78f94
+ElmJumpDownScript:
+	applymovement $2, ElmJumpDownMovement
 	loadfont
 	end
 
-UnknownScript_0x78e73:
-	applymovement $2, MovementData_0x78f98
+ElmJumpLeftScript:
+	applymovement $2, ElmJumpLeftMovement
 	loadfont
 	end
 
-UnknownScript_0x78e79:
-	applymovement $2, MovementData_0x78f9c
+ElmJumpRightScript:
+	applymovement $2, ElmJumpRightMovement
 	loadfont
 	end
 
-UnknownScript_0x78e7f:
-	applymovement $3, MovementData_0x78f7e
+AideScript_WalkPotions1:
+	applymovement $3, AideWalksRight1
 	spriteface $0, DOWN
-	scall UnknownScript_0x78e9d
-	applymovement $3, MovementData_0x78f87
+	scall AideScript_GivePotions
+	applymovement $3, AideWalksLeft1
 	end
 
-UnknownScript_0x78e8e:
-	applymovement $3, MovementData_0x78f82
+AideScript_WalkPotions2:
+	applymovement $3, AideWalksRight2
 	spriteface $0, DOWN
-	scall UnknownScript_0x78e9d
-	applymovement $3, MovementData_0x78f8b
+	scall AideScript_GivePotions
+	applymovement $3, AideWalksLeft2
 	end
 
-UnknownScript_0x78e9d:
+AideScript_GivePotions:
 	loadfont
-	writetext UnknownText_0x79f38
+	writetext AideText_GiveYouPotions
 	keeptextopen
 	verbosegiveitem POTION, 1
-	writetext UnknownText_0x79f65
+	writetext AideText_AlwaysBusy
 	closetext
 	loadmovesprites
 	dotrigger $2
 	end
 
-UnknownScript_0x78ead:
-	applymovement $3, MovementData_0x78f7e
+AideScript_WalkBalls1:
+	applymovement $3, AideWalksRight1
 	spriteface $0, DOWN
-	scall UnknownScript_0x78ecb
-	applymovement $3, MovementData_0x78f87
+	scall AideScript_GiveYouBalls
+	applymovement $3, AideWalksLeft1
 	end
 
-UnknownScript_0x78ebc:
-	applymovement $3, MovementData_0x78f82
+AideScript_WalkBalls2:
+	applymovement $3, AideWalksRight2
 	spriteface $0, DOWN
-	scall UnknownScript_0x78ecb
-	applymovement $3, MovementData_0x78f8b
+	scall AideScript_GiveYouBalls
+	applymovement $3, AideWalksLeft2
 	end
 
-UnknownScript_0x78ecb:
+AideScript_GiveYouBalls:
 	loadfont
-	writetext UnknownText_0x7a078
+	writetext AideText_GiveYouBalls
 	keeptextopen
 	itemtotext POKE_BALL, $1
-	scall UnknownScript_0x78ee2
+	scall AideScript_ReceiveTheBalls
 	giveitem POKE_BALL, $5
-	writetext UnknownText_0x7a09a
+	writetext AideText_ExplainBalls
 	keeptextopen
 	itemnotify
 	loadmovesprites
@@ -507,7 +507,7 @@
 	dotrigger $2
 	end
 
-UnknownScript_0x78ee2:
+AideScript_ReceiveTheBalls:
 	jumpstd receiveitem
 	end
 
@@ -515,49 +515,49 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
-	iftrue UnknownScript_0x78f0c
+	iftrue AideScript_AfterTheft
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iftrue UnknownScript_0x78f06
+	iftrue AideScript_ExplainBalls
 	checkevent EVENT_GOT_MYSTERY_EGG_FROM_MR_POKEMON
-	iftrue UnknownScript_0x78f00
-	writetext UnknownText_0x79f65
+	iftrue AideScript_TheftTestimony
+	writetext AideText_AlwaysBusy
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x78f00:
-	writetext UnknownText_0x79f95
+AideScript_TheftTestimony:
+	writetext AideText_TheftTestimony
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x78f06:
-	writetext UnknownText_0x7a09a
+AideScript_ExplainBalls:
+	writetext AideText_ExplainBalls
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x78f0c:
-	writetext UnknownText_0x79c65
+AideScript_AfterTheft:
+	writetext AideText_AfterTheft
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x78f12:
-	applymovement $0, MovementData_0x78f72
+MeetCopScript2:
+	applymovement $0, MeetCopScript2_StepLeft
 
 MeetCopScript:
-	applymovement $0, MovementData_0x78f74
+	applymovement $0, MeetCopScript_WalkUp
 CopScript:
 	spriteface $7, LEFT
 	loadfont
-	writetext UnknownText_0x7a0f0
+	writetext ElmsLabOfficerText1
 	keeptextopen
 	special SpecialNameRival
-	writetext UnknownText_0x7a1c0
+	writetext ElmsLabOfficerText2
 	closetext
 	loadmovesprites
-	applymovement $7, MovementData_0x78f78
+	applymovement $7, OfficerLeavesMovement
 	disappear $7
 	dotrigger $2
 	end
@@ -607,7 +607,7 @@
 ElmsLabBookshelf:
 	jumpstd difficultbookshelf
 
-MovementData_0x78f67:
+ElmsLab_WalkUpToElmMovement:
 	step_up
 	step_up
 	step_up
@@ -622,17 +622,17 @@
 	step_up
 	step_end
 
-MovementData_0x78f72:
+MeetCopScript2_StepLeft:
 	step_left
 	step_end
 
-MovementData_0x78f74:
+MeetCopScript_WalkUp:
 	step_up
 	step_up
 	turn_head_right
 	step_end
 
-MovementData_0x78f78:
+OfficerLeavesMovement:
 	step_down
 	step_down
 	step_down
@@ -640,13 +640,13 @@
 	step_down
 	step_end
 
-MovementData_0x78f7e:
+AideWalksRight1:
 	step_right
 	step_right
 	turn_head_up
 	step_end
 
-MovementData_0x78f82:
+AideWalksRight2:
 	step_right
 	step_right
 	step_right
@@ -653,13 +653,13 @@
 	turn_head_up
 	step_end
 
-MovementData_0x78f87:
+AideWalksLeft1:
 	step_left
 	step_left
 	turn_head_down
 	step_end
 
-MovementData_0x78f8b:
+AideWalksLeft2:
 	step_left
 	step_left
 	step_left
@@ -666,35 +666,35 @@
 	turn_head_down
 	step_end
 
-MovementData_0x78f90:
+ElmJumpUpMovement:
 	fix_facing
 	big_step_up
 	remove_fixed_facing
 	step_end
 
-MovementData_0x78f94:
+ElmJumpDownMovement:
 	fix_facing
 	big_step_down
 	remove_fixed_facing
 	step_end
 
-MovementData_0x78f98:
+ElmJumpLeftMovement:
 	fix_facing
 	big_step_left
 	remove_fixed_facing
 	step_end
 
-MovementData_0x78f9c:
+ElmJumpRightMovement:
 	fix_facing
 	big_step_right
 	remove_fixed_facing
 	step_end
 
-MovementData_0x78fa0:
+ElmsLab_ElmToDefaultPositionMovement1:
 	step_up
 	step_end
 
-MovementData_0x78fa2:
+ElmsLab_ElmToDefaultPositionMovement2:
 	step_right
 	step_right
 	step_up
@@ -722,7 +722,7 @@
 	turn_head_up
 	step_end
 
-UnknownText_0x78fb6:
+ElmText_Intro:
 	text "ELM: <PLAY_G>!"
 	line "There you are!"
 
@@ -761,7 +761,7 @@
 	line "caught."
 	done
 
-UnknownText_0x790fa:
+ElmText_Accepted:
 	text "Thanks, <PLAY_G>!"
 
 	para "You're a great"
@@ -768,12 +768,12 @@
 	line "help!"
 	done
 
-UnknownText_0x7911a:
+ElmText_Refused:
 	text "But… Please, I"
 	line "need your help!"
 	done
 
-UnknownText_0x7913a:
+ElmText_ResearchAmbitions:
 	text "When I announce my"
 	line "findings, I'm sure"
 
@@ -787,7 +787,7 @@
 	line "it!"
 	done
 
-UnknownText_0x791ae:
+ElmText_GotAnEmail:
 	text "Oh, hey! I got an"
 	line "e-mail!"
 
@@ -797,7 +797,7 @@
 	para "Okay…"
 	done
 
-UnknownText_0x791df:
+ElmText_MissionFromMrPokemon:
 	text "Hey, listen."
 
 	para "I have an acquain-"
@@ -830,7 +830,7 @@
 	line "go in our place?"
 	done
 
-UnknownText_0x792ff:
+ElmText_ChooseAPokemon:
 	text "I want you to"
 	line "raise one of the"
 
@@ -844,7 +844,7 @@
 	para "Go on. Pick one!"
 	done
 
-UnknownText_0x79375:
+ElmText_LetYourMonBattleIt:
 	text "If a wild #MON"
 	line "appears, let your"
 	cont "#MON battle it!"
@@ -1125,13 +1125,13 @@
 	cont "to evolve."
 	done
 
-UnknownText_0x79c37:
+ElmText_CallYou:
 	text "ELM: <PLAY_G>, I'll"
 	line "call you if any-"
 	cont "thing comes up."
 	done
 
-UnknownText_0x79c65:
+AideText_AfterTheft:
 	text "…sigh… That"
 	line "stolen #MON."
 
@@ -1208,25 +1208,25 @@
 	line "PROF.OAK in KANTO!"
 	done
 
-UnknownText_0x79f0b:
+ElmsLabSignpostText_Egg:
 	text "It's the #MON"
 	line "EGG being studied"
 	cont "by PROF.ELM."
 	done
 
-UnknownText_0x79f38:
+AideText_GiveYouPotions:
 	text "<PLAY_G>, I want"
 	line "you to have this"
 	cont "for your errand."
 	done
 
-UnknownText_0x79f65:
+AideText_AlwaysBusy:
 	text "There are only two"
 	line "of us, so we're"
 	cont "always busy."
 	done
 
-UnknownText_0x79f95:
+AideText_TheftTestimony:
 	text "There was a loud"
 	line "noise outside…"
 
@@ -1251,7 +1251,7 @@
 	line "itself."
 	done
 
-UnknownText_0x7a078:
+AideText_GiveYouBalls:
 	text "<PLAY_G>!"
 
 	para "Use these on your"
@@ -1258,7 +1258,7 @@
 	line "#DEX quest!"
 	done
 
-UnknownText_0x7a09a:
+AideText_ExplainBalls:
 	text "To add to your"
 	line "#DEX, you have"
 	cont "to catch #MON."
@@ -1268,7 +1268,7 @@
 	cont "to get them."
 	done
 
-UnknownText_0x7a0f0:
+ElmsLabOfficerText1:
 	text "I heard a #MON"
 	line "was stolen here…"
 
@@ -1289,7 +1289,7 @@
 	line "get his name?"
 	done
 
-UnknownText_0x7a1c0:
+ElmsLabOfficerText2:
 	text "OK! So <RIVAL>"
 	line "was his name."
 
@@ -1371,46 +1371,46 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $b, $4, 1, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 	warp_def $b, $5, 1, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 8
 	xy_trigger 1, $6, $4, $0, LabTryToLeaveScript, $0, $0
 	xy_trigger 1, $6, $5, $0, LabTryToLeaveScript, $0, $0
 	xy_trigger 3, $5, $4, $0, MeetCopScript, $0, $0
-	xy_trigger 3, $5, $5, $0, UnknownScript_0x78f12, $0, $0
-	xy_trigger 5, $8, $4, $0, UnknownScript_0x78e7f, $0, $0
-	xy_trigger 5, $8, $5, $0, UnknownScript_0x78e8e, $0, $0
-	xy_trigger 6, $8, $4, $0, UnknownScript_0x78ead, $0, $0
-	xy_trigger 6, $8, $5, $0, UnknownScript_0x78ebc, $0, $0
+	xy_trigger 3, $5, $5, $0, MeetCopScript2, $0, $0
+	xy_trigger 5, $8, $4, $0, AideScript_WalkPotions1, $0, $0
+	xy_trigger 5, $8, $5, $0, AideScript_WalkPotions2, $0, $0
+	xy_trigger 6, $8, $4, $0, AideScript_WalkBalls1, $0, $0
+	xy_trigger 6, $8, $5, $0, AideScript_WalkBalls2, $0, $0
 
-	; signposts
+.Signposts:
 	db 16
-	signpost 1, 2, $0, ElmsLabHealingMachine
-	signpost 1, 6, $0, ElmsLabBookshelf
-	signpost 1, 7, $0, ElmsLabBookshelf
-	signpost 1, 8, $0, ElmsLabBookshelf
-	signpost 1, 9, $0, ElmsLabBookshelf
-	signpost 7, 0, $0, ElmsLabTravelTip1
-	signpost 7, 1, $0, ElmsLabTravelTip2
-	signpost 7, 2, $0, ElmsLabTravelTip3
-	signpost 7, 3, $0, ElmsLabTravelTip4
-	signpost 7, 6, $0, ElmsLabBookshelf
-	signpost 7, 7, $0, ElmsLabBookshelf
-	signpost 7, 8, $0, ElmsLabBookshelf
-	signpost 7, 9, $0, ElmsLabBookshelf
-	signpost 3, 9, $0, ElmsLabTrashcan
-	signpost 0, 5, $0, ElmsLabWindow
-	signpost 5, 3, $2, ElmsLabPC
+	signpost 1, 2, SIGNPOST_READ, ElmsLabHealingMachine
+	signpost 1, 6, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 1, 7, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 1, 8, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 1, 9, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 0, SIGNPOST_READ, ElmsLabTravelTip1
+	signpost 7, 1, SIGNPOST_READ, ElmsLabTravelTip2
+	signpost 7, 2, SIGNPOST_READ, ElmsLabTravelTip3
+	signpost 7, 3, SIGNPOST_READ, ElmsLabTravelTip4
+	signpost 7, 6, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 7, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 8, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 9, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 3, 9, SIGNPOST_READ, ElmsLabTrashcan
+	signpost 0, 5, SIGNPOST_READ, ElmsLabWindow
+	signpost 5, 3, SIGNPOST_DOWN, ElmsLabPC
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_ELM, 6, 9, $6, $0, 255, 255, $0, 0, ProfElmScript, -1
-	person_event SPRITE_SCIENTIST, 13, 6, $3, $0, 255, 255, $90, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
-	person_event SPRITE_POKE_BALL, 7, 10, $1, $0, 255, 255, $0, 0, CyndaquilPokeBallScript, EVENT_640
-	person_event SPRITE_POKE_BALL, 7, 11, $1, $0, 255, 255, $0, 0, TotodilePokeBallScript, EVENT_641
-	person_event SPRITE_POKE_BALL, 7, 12, $1, $0, 255, 255, $0, 0, ChikoritaPokeBallScript, EVENT_642
-	person_event SPRITE_OFFICER, 7, 9, $7, $0, 255, 255, $90, 0, CopScript, EVENT_702
+	person_event SPRITE_ELM, 6, 9, OW_UP | $2, $0, -1, -1, $0, 0, ProfElmScript, -1
+	person_event SPRITE_SCIENTIST, 13, 6, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
+	person_event SPRITE_POKE_BALL, 7, 10, OW_DOWN | $1, $0, -1, -1, $0, 0, CyndaquilPokeBallScript, EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_POKE_BALL, 7, 11, OW_DOWN | $1, $0, -1, -1, $0, 0, TotodilePokeBallScript, EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_POKE_BALL, 7, 12, OW_DOWN | $1, $0, -1, -1, $0, 0, ChikoritaPokeBallScript, EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_OFFICER, 7, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CopScript, EVENT_COP_IN_ELMS_LAB
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -1,26 +1,26 @@
 FastShip1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
-	dw UnknownScript_0x75135, $0000
-	dw UnknownScript_0x75136, $0000
-	dw UnknownScript_0x7513a, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
+	dw .Trigger3, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
-UnknownScript_0x75135:
+.Trigger1:
 	end
 
-UnknownScript_0x75136:
-	priorityjump UnknownScript_0x7513b
+.Trigger2:
+	priorityjump .PriorityJump2
 	end
 
-UnknownScript_0x7513a:
+.Trigger3:
 	end
 
-UnknownScript_0x7513b:
+.PriorityJump2:
 	applymovement $2, MovementData_0x7520e
 	applymovement $0, MovementData_0x75217
 	applymovement $2, MovementData_0x75211
@@ -28,13 +28,13 @@
 	playsound SFX_BOAT
 	earthquake 30
 	blackoutmod GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW
-	clearevent EVENT_031
-	checkevent EVENT_030
-	iftrue UnknownScript_0x7515d
+	clearevent EVENT_FAST_SHIP_HAS_ARRIVED
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
+	iftrue .Vermilion
 	dotrigger $2
 	end
 
-UnknownScript_0x7515d:
+.Vermilion:
 	dotrigger $0
 	end
 
@@ -41,8 +41,8 @@
 SailorScript_0x75160:
 	faceplayer
 	loadfont
-	checkevent EVENT_031
-	iftrue UnknownScript_0x7517a
+	checkevent EVENT_FAST_SHIP_HAS_ARRIVED
+	iftrue .Arrived
 	checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
 	iftrue .Olivine
 	writetext UnknownText_0x7523b
@@ -56,42 +56,42 @@
 	loadmovesprites
 	end
 
-UnknownScript_0x7517a:
+.Arrived:
 	checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
-	iftrue .Olivine
+	iftrue ._Olivine
 	writetext UnknownText_0x754be
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x751b8
+	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
-	setevent EVENT_72B
+	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
 	domaptrigger GROUP_VERMILION_PORT, MAP_VERMILION_PORT, $1
 	warp GROUP_VERMILION_PORT, MAP_VERMILION_PORT, $7, $11
 	end
 
-.Olivine
+._Olivine
 	writetext UnknownText_0x7548d
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x751b8
+	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
-	setevent EVENT_72A
+	setevent EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
 	domaptrigger GROUP_OLIVINE_PORT, MAP_OLIVINE_PORT, $1
 	warp GROUP_OLIVINE_PORT, MAP_OLIVINE_PORT, $7, $17
 	end
 
-UnknownScript_0x751b8:
+.LetThePlayerOut:
 	checkcode VAR_FACING
-	if_equal $3, UnknownScript_0x751c7
+	if_equal RIGHT, .YouAreFacingRight
 	applymovement $2, MovementData_0x7520e
 	applymovement $0, MovementData_0x75235
 	end
 
-UnknownScript_0x751c7:
+.YouAreFacingRight:
 	applymovement $2, MovementData_0x75214
 	applymovement $0, MovementData_0x75238
 	end
@@ -99,14 +99,14 @@
 SailorScript_0x751d0:
 	faceplayer
 	loadfont
-	checkevent EVENT_030
-	iftrue UnknownScript_0x751de
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
+	iftrue .Vermilion
 	writetext UnknownText_0x752f9
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x751de:
+.Vermilion:
 	writetext UnknownText_0x7534f
 	closetext
 	loadmovesprites
@@ -285,7 +285,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 12
 	warp_def $1, $19, 255, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $8, $1b, 1, GROUP_FAST_SHIP_CABINS_NNW_NNE_NE, MAP_FAST_SHIP_CABINS_NNW_NNE_NE
@@ -300,17 +300,17 @@
 	warp_def $c, $6, 1, GROUP_FAST_SHIP_B1F, MAP_FAST_SHIP_B1F
 	warp_def $e, $1e, 2, GROUP_FAST_SHIP_B1F, MAP_FAST_SHIP_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 2, $6, $18, $0, UnknownScript_0x751eb, $0, $0
 	xy_trigger 2, $6, $19, $0, UnknownScript_0x751e7, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_SAILOR, 6, 29, $6, $0, 255, 255, $0, 0, SailorScript_0x75160, -1
-	person_event SPRITE_SAILOR, 11, 18, $9, $0, 255, 255, $0, 0, SailorScript_0x751d0, -1
-	person_event SPRITE_SAILOR, 21, 26, $5, $2, 255, 255, $0, 0, SailorScript_0x751e4, -1
-	person_event SPRITE_GENTLEMAN, 10, 23, $9, $0, 255, 255, $0, 0, ObjectEvent, EVENT_72C
+	person_event SPRITE_SAILOR, 6, 29, OW_UP | $2, $0, -1, -1, $0, 0, SailorScript_0x75160, -1
+	person_event SPRITE_SAILOR, 11, 18, OW_LEFT | $1, $0, -1, -1, $0, 0, SailorScript_0x751d0, -1
+	person_event SPRITE_SAILOR, 21, 26, OW_UP | $1, $2, -1, -1, $0, 0, SailorScript_0x751e4, -1
+	person_event SPRITE_GENTLEMAN, 10, 23, OW_LEFT | $1, $0, -1, -1, $0, 0, ObjectEvent, EVENT_FAST_SHIP_1F_GENTLEMAN
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -1,5 +1,5 @@
 FastShipB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x7673a, $0000
 	dw UnknownScript_0x7673b, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x7673a:
@@ -16,7 +16,7 @@
 	end
 
 UnknownScript_0x7673c:
-	checkevent EVENT_72F
+	checkevent EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
 	iftrue UnknownScript_0x76766
 	applymovement $3, MovementData_0x76876
 	moveperson $2, $1e, $6
@@ -26,7 +26,7 @@
 	end
 
 UnknownScript_0x76751:
-	checkevent EVENT_72E
+	checkevent EVENT_FAST_SHIP_B1F_SAILOR_LEFT
 	iftrue UnknownScript_0x76766
 	applymovement $2, MovementData_0x76871
 	moveperson $3, $1f, $6
@@ -41,17 +41,17 @@
 SailorScript_0x76767:
 	faceplayer
 	loadfont
-	checkevent EVENT_030
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue UnknownScript_0x767a0
-	checkevent EVENT_033
+	checkevent EVENT_FAST_SHIP_LAZY_SAILOR
 	iftrue UnknownScript_0x7678d
-	checkevent EVENT_034
+	checkevent EVENT_FAST_SHIP_INFORMED_ABOUT_LAZY_SAILOR
 	iftrue UnknownScript_0x76787
 	writetext UnknownText_0x7687b
 	closetext
 	loadmovesprites
-	setevent EVENT_034
-	clearevent EVENT_72D
+	setevent EVENT_FAST_SHIP_INFORMED_ABOUT_LAZY_SAILOR
+	clearevent EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
 	end
 
 UnknownScript_0x76787:
@@ -62,7 +62,7 @@
 
 UnknownScript_0x7678d:
 	writetext UnknownText_0x7692e
-	checkevent EVENT_032
+	checkevent EVENT_FAST_SHIP_FOUND_GIRL
 	iffalse UnknownScript_0x76799
 	closetext
 	loadmovesprites
@@ -82,24 +82,8 @@
 	end
 
 TrainerSailorJeff:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_JEFF
+	trainer EVENT_BEAT_SAILOR_JEFF, SAILOR, JEFF, SailorJeffSeenText, SailorJeffBeatenText, $0000, SailorJeffScript
 
-	; trainer group && trainer id
-	db SAILOR, JEFF
-
-	; text when seen
-	dw SailorJeffSeenText
-
-	; text when trainer beaten
-	dw SailorJeffBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorJeffScript
-
 SailorJeffScript:
 	talkaftercancel
 	loadfont
@@ -109,24 +93,8 @@
 	end
 
 TrainerPicnickerDebra:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_DEBRA
+	trainer EVENT_BEAT_PICNICKER_DEBRA, PICNICKER, DEBRA, PicnickerDebraSeenText, PicnickerDebraBeatenText, $0000, PicnickerDebraScript
 
-	; trainer group && trainer id
-	db PICNICKER, DEBRA
-
-	; text when seen
-	dw PicnickerDebraSeenText
-
-	; text when trainer beaten
-	dw PicnickerDebraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerDebraScript
-
 PicnickerDebraScript:
 	talkaftercancel
 	loadfont
@@ -136,24 +104,8 @@
 	end
 
 TrainerJugglerFritz:
-	; bit/flag number
-	dw EVENT_BEAT_JUGGLER_FRITZ
+	trainer EVENT_BEAT_JUGGLER_FRITZ, JUGGLER, FRITZ, JugglerFritzSeenText, JugglerFritzBeatenText, $0000, JugglerFritzScript
 
-	; trainer group && trainer id
-	db JUGGLER, FRITZ
-
-	; text when seen
-	dw JugglerFritzSeenText
-
-	; text when trainer beaten
-	dw JugglerFritzBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw JugglerFritzScript
-
 JugglerFritzScript:
 	talkaftercancel
 	loadfont
@@ -163,24 +115,8 @@
 	end
 
 TrainerSailorGarrett:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_GARRETT
+	trainer EVENT_BEAT_SAILOR_GARRETT, SAILOR, GARRETT, SailorGarrettSeenText, SailorGarrettBeatenText, $0000, SailorGarrettScript
 
-	; trainer group && trainer id
-	db SAILOR, GARRETT
-
-	; text when seen
-	dw SailorGarrettSeenText
-
-	; text when trainer beaten
-	dw SailorGarrettBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorGarrettScript
-
 SailorGarrettScript:
 	talkaftercancel
 	loadfont
@@ -190,24 +126,8 @@
 	end
 
 TrainerFisherJonah:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_JONAH
+	trainer EVENT_BEAT_FISHER_JONAH, FISHER, JONAH, FisherJonahSeenText, FisherJonahBeatenText, $0000, FisherJonahScript
 
-	; trainer group && trainer id
-	db FISHER, JONAH
-
-	; text when seen
-	dw FisherJonahSeenText
-
-	; text when trainer beaten
-	dw FisherJonahBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherJonahScript
-
 FisherJonahScript:
 	talkaftercancel
 	loadfont
@@ -217,24 +137,8 @@
 	end
 
 TrainerBlackbeltWai:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_WAI
+	trainer EVENT_BEAT_BLACKBELT_WAI, BLACKBELT_T, WAI, BlackbeltWaiSeenText, BlackbeltWaiBeatenText, $0000, BlackbeltWaiScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, WAI
-
-	; text when seen
-	dw BlackbeltWaiSeenText
-
-	; text when trainer beaten
-	dw BlackbeltWaiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltWaiScript
-
 BlackbeltWaiScript:
 	talkaftercancel
 	loadfont
@@ -244,24 +148,8 @@
 	end
 
 TrainerSailorKenneth:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_KENNETH
+	trainer EVENT_BEAT_SAILOR_KENNETH, SAILOR, KENNETH, SailorKennethSeenText, SailorKennethBeatenText, $0000, SailorKennethScript
 
-	; trainer group && trainer id
-	db SAILOR, KENNETH
-
-	; text when seen
-	dw SailorKennethSeenText
-
-	; text when trainer beaten
-	dw SailorKennethBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorKennethScript
-
 SailorKennethScript:
 	talkaftercancel
 	loadfont
@@ -271,24 +159,8 @@
 	end
 
 TrainerTeacherShirley:
-	; bit/flag number
-	dw EVENT_BEAT_TEACHER_SHIRLEY
+	trainer EVENT_BEAT_TEACHER_SHIRLEY, TEACHER, SHIRLEY, TeacherShirleySeenText, TeacherShirleyBeatenText, $0000, TeacherShirleyScript
 
-	; trainer group && trainer id
-	db TEACHER, SHIRLEY
-
-	; text when seen
-	dw TeacherShirleySeenText
-
-	; text when trainer beaten
-	dw TeacherShirleyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TeacherShirleyScript
-
 TeacherShirleyScript:
 	talkaftercancel
 	loadfont
@@ -298,24 +170,8 @@
 	end
 
 TrainerSchoolboyNate:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_NATE
+	trainer EVENT_BEAT_SCHOOLBOY_NATE, SCHOOLBOY, NATE, SchoolboyNateSeenText, SchoolboyNateBeatenText, $0000, SchoolboyNateScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, NATE
-
-	; text when seen
-	dw SchoolboyNateSeenText
-
-	; text when trainer beaten
-	dw SchoolboyNateBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyNateScript
-
 SchoolboyNateScript:
 	talkaftercancel
 	loadfont
@@ -325,24 +181,8 @@
 	end
 
 TrainerSchoolboyRicky:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_RICKY
+	trainer EVENT_BEAT_SCHOOLBOY_RICKY, SCHOOLBOY, RICKY, SchoolboyRickySeenText, SchoolboyRickyBeatenText, $0000, SchoolboyRickyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, RICKY
-
-	; text when seen
-	dw SchoolboyRickySeenText
-
-	; text when trainer beaten
-	dw SchoolboyRickyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyRickyScript
-
 SchoolboyRickyScript:
 	talkaftercancel
 	loadfont
@@ -600,31 +440,31 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $b, $5, 11, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $d, $1f, 12, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $7, $1e, $0, UnknownScript_0x7673c, $0, $0
 	xy_trigger 0, $7, $1f, $0, UnknownScript_0x76751, $0, $0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 9, 27, $0, FashShipB1FTrashcan
+	signpost 9, 27, SIGNPOST_READ, FashShipB1FTrashcan
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_SAILOR, 10, 34, $6, $0, 255, 255, $90, 0, SailorScript_0x76767, EVENT_72E
-	person_event SPRITE_SAILOR, 10, 35, $6, $0, 255, 255, $90, 0, SailorScript_0x76767, EVENT_72F
-	person_event SPRITE_SAILOR, 15, 13, $7, $0, 255, 255, $92, 3, TrainerSailorJeff, EVENT_739
-	person_event SPRITE_LASS, 8, 10, $7, $0, 255, 255, $a2, 1, TrainerPicnickerDebra, EVENT_739
-	person_event SPRITE_SUPER_NERD, 13, 30, $9, $0, 255, 255, $92, 1, TrainerJugglerFritz, EVENT_739
-	person_event SPRITE_SAILOR, 8, 21, $9, $0, 255, 255, $92, 4, TrainerSailorGarrett, EVENT_73A
-	person_event SPRITE_FISHER, 12, 29, $7, $0, 255, 255, $a2, 3, TrainerFisherJonah, EVENT_73A
-	person_event SPRITE_BLACK_BELT, 15, 19, $1f, $0, 255, 255, $b2, 3, TrainerBlackbeltWai, EVENT_73A
-	person_event SPRITE_SAILOR, 8, 27, $9, $0, 255, 255, $92, 4, TrainerSailorKenneth, EVENT_73B
-	person_event SPRITE_TEACHER, 15, 13, $7, $0, 255, 255, $82, 3, TrainerTeacherShirley, EVENT_73B
-	person_event SPRITE_YOUNGSTER, 13, 18, $3, $0, 255, 255, $92, 1, TrainerSchoolboyNate, EVENT_73B
-	person_event SPRITE_YOUNGSTER, 15, 18, $a, $0, 255, 255, $92, 1, TrainerSchoolboyRicky, EVENT_73B
+	person_event SPRITE_SAILOR, 10, 34, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x76767, EVENT_FAST_SHIP_B1F_SAILOR_LEFT
+	person_event SPRITE_SAILOR, 10, 35, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x76767, EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
+	person_event SPRITE_SAILOR, 15, 13, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorJeff, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_LASS, 8, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerDebra, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SUPER_NERD, 13, 30, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerJugglerFritz, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SAILOR, 8, 21, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSailorGarrett, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_FISHER, 12, 29, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherJonah, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_BLACK_BELT, 15, 19, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBlackbeltWai, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_SAILOR, 8, 27, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSailorKenneth, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_TEACHER, 15, 13, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerTeacherShirley, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_YOUNGSTER, 13, 18, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyNate, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_YOUNGSTER, 15, 18, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyRicky, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FastShipCabins_NNW_NNE_NE.asm
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -1,29 +1,13 @@
 FastShipCabins_NNW_NNE_NE_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerCooltrainermSean:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_SEAN
+	trainer EVENT_BEAT_COOLTRAINERM_SEAN, COOLTRAINERM, SEAN, CooltrainermSeanSeenText, CooltrainermSeanBeatenText, $0000, CooltrainermSeanScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, SEAN
-
-	; text when seen
-	dw CooltrainermSeanSeenText
-
-	; text when trainer beaten
-	dw CooltrainermSeanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermSeanScript
-
 CooltrainermSeanScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerCooltrainerfCarol:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_CAROL
+	trainer EVENT_BEAT_COOLTRAINERF_CAROL, COOLTRAINERF, CAROL, CooltrainerfCarolSeenText, CooltrainerfCarolBeatenText, $0000, CooltrainerfCarolScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, CAROL
-
-	; text when seen
-	dw CooltrainerfCarolSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfCarolBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfCarolScript
-
 CooltrainerfCarolScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerPokemaniacEthan:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ETHAN
+	trainer EVENT_BEAT_POKEMANIAC_ETHAN, POKEMANIAC, ETHAN, PokemaniacEthanSeenText, PokemaniacEthanBeatenText, $0000, PokemaniacEthanScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ETHAN
-
-	; text when seen
-	dw PokemaniacEthanSeenText
-
-	; text when trainer beaten
-	dw PokemaniacEthanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacEthanScript
-
 PokemaniacEthanScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerHikerNoland:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_NOLAND
+	trainer EVENT_BEAT_HIKER_NOLAND, HIKER, NOLAND, HikerNolandSeenText, HikerNolandBeatenText, $0000, HikerNolandScript
 
-	; trainer group && trainer id
-	db HIKER, NOLAND
-
-	; text when seen
-	dw HikerNolandSeenText
-
-	; text when trainer beaten
-	dw HikerNolandBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerNolandScript
-
 HikerNolandScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerGentlemanEdward:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_EDWARD
+	trainer EVENT_BEAT_GENTLEMAN_EDWARD, GENTLEMAN, EDWARD, GentlemanEdwardSeenText, GentlemanEdwardBeatenText, $0000, GentlemanEdwardScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, EDWARD
-
-	; text when seen
-	dw GentlemanEdwardSeenText
-
-	; text when trainer beaten
-	dw GentlemanEdwardBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanEdwardScript
-
 GentlemanEdwardScript:
 	talkaftercancel
 	loadfont
@@ -141,24 +61,8 @@
 	end
 
 TrainerBurglarCorey:
-	; bit/flag number
-	dw EVENT_BEAT_BURGLAR_COREY
+	trainer EVENT_BEAT_BURGLAR_COREY, BURGLAR, COREY, BurglarCoreySeenText, BurglarCoreyBeatenText, $0000, BurglarCoreyScript
 
-	; trainer group && trainer id
-	db BURGLAR, COREY
-
-	; text when seen
-	dw BurglarCoreySeenText
-
-	; text when trainer beaten
-	dw BurglarCoreyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BurglarCoreyScript
-
 BurglarCoreyScript:
 	talkaftercancel
 	loadfont
@@ -184,7 +88,7 @@
 	writetext UnknownText_0x758b1
 	closetext
 	loadmovesprites
-	setevent EVENT_033
+	setevent EVENT_FAST_SHIP_LAZY_SAILOR
 	domaptrigger GROUP_FAST_SHIP_B1F, MAP_FAST_SHIP_B1F, $1
 	checkcode VAR_FACING
 	if_equal $3, UnknownScript_0x75629
@@ -357,27 +261,27 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $2, 2, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $c, $2, 3, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $18, $2, 4, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 13, 6, $0, FastShipCabins_NNW_NNE_NETrashcan
-	signpost 19, 7, $0, FastShipCabins_NNW_NNE_NETrashcan
-	signpost 31, 7, $0, FastShipCabins_NNW_NNE_NETrashcan
+	signpost 13, 6, SIGNPOST_READ, FastShipCabins_NNW_NNE_NETrashcan
+	signpost 19, 7, SIGNPOST_READ, FastShipCabins_NNW_NNE_NETrashcan
+	signpost 31, 7, SIGNPOST_READ, FastShipCabins_NNW_NNE_NETrashcan
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_COOLTRAINER_M, 7, 8, $a, $0, 255, 255, $82, 2, TrainerCooltrainermSean, EVENT_73A
-	person_event SPRITE_COOLTRAINER_F, 9, 5, $7, $0, 255, 255, $82, 3, TrainerCooltrainerfCarol, EVENT_73A
-	person_event SPRITE_SUPER_NERD, 9, 5, $7, $0, 255, 255, $92, 3, TrainerPokemaniacEthan, EVENT_73B
-	person_event SPRITE_POKEFAN_M, 21, 8, $7, $0, 255, 255, $b2, 3, TrainerHikerNoland, EVENT_739
-	person_event SPRITE_SAILOR, 30, 8, $3, $0, 255, 255, $90, 0, SailorScript_0x755f1, EVENT_72D
-	person_event SPRITE_GENTLEMAN, 34, 11, $3, $0, 255, 255, $92, 1, TrainerGentlemanEdward, EVENT_73A
-	person_event SPRITE_PHARMACIST, 34, 6, $7, $0, 255, 255, $a2, 4, TrainerBurglarCorey, EVENT_73B
+	person_event SPRITE_COOLTRAINER_M, 7, 8, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainermSean, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_COOLTRAINER_F, 9, 5, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfCarol, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_SUPER_NERD, 9, 5, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacEthan, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_POKEFAN_M, 21, 8, OW_UP | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerNoland, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SAILOR, 30, 8, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x755f1, EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+	person_event SPRITE_GENTLEMAN, 34, 11, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerGentlemanEdward, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_PHARMACIST, 34, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerBurglarCorey, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -1,8 +1,8 @@
 FastShipCabins_SE_SSE_CaptainsCabin_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x75ea6:
@@ -11,7 +11,7 @@
 CaptainScript_0x75ea7:
 	faceplayer
 	loadfont
-	checkevent EVENT_030
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue UnknownScript_0x75eb5
 	writetext UnknownText_0x76012
 	closetext
@@ -35,8 +35,8 @@
 	writetext UnknownText_0x7621f
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	disappear $5
 	applymovement $0, MovementData_0x76004
 	moveperson $4, $3, $13
@@ -43,9 +43,9 @@
 	appear $4
 	spriteface $0, UP
 	spriteface $4, UP
-	special Function8c0ab
+	special Special_FadeInQuickly
 	spriteface $3, DOWN
-	showemote $0, $3, 15
+	showemote EMOTE_SHOCK, $3, 15
 	applymovement $4, MovementData_0x7600c
 	spriteface $3, RIGHT
 	checkflag ENGINE_PLAYER_IS_FEMALE
@@ -67,7 +67,7 @@
 	loadfont
 	writetext UnknownText_0x76143
 	keeptextopen
-	setevent EVENT_72B
+	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
 	domaptrigger GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F, $0
 	jump UnknownScript_0x75f37
 
@@ -76,7 +76,7 @@
 	loadfont
 	checkevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
 	iftrue UnknownScript_0x75f67
-	checkevent EVENT_732
+	checkevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
 	iftrue UnknownScript_0x75f58
 	writetext UnknownText_0x760ae
 	closetext
@@ -98,8 +98,8 @@
 	loadfont
 	writetext UnknownText_0x76645
 	closetext
-	setevent EVENT_031
-	setevent EVENT_032
+	setevent EVENT_FAST_SHIP_HAS_ARRIVED
+	setevent EVENT_FAST_SHIP_FOUND_GIRL
 	loadmovesprites
 	end
 
@@ -128,24 +128,8 @@
 	end
 
 TrainerPokefanmColin:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_COLIN
+	trainer EVENT_BEAT_POKEFANM_COLIN, POKEFANM, COLIN, PokefanmColinSeenText, PokefanmColinBeatenText, $0000, PokefanmColinScript
 
-	; trainer group && trainer id
-	db POKEFANM, COLIN
-
-	; text when seen
-	dw PokefanmColinSeenText
-
-	; text when trainer beaten
-	dw PokefanmColinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmColinScript
-
 PokefanmColinScript:
 	talkaftercancel
 	loadfont
@@ -155,25 +139,9 @@
 	end
 
 TrainerTwinsMegandpeg1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_MEG_AND_PEG
+	trainer EVENT_BEAT_TWINS_MEG_AND_PEG, TWINS, MEGANDPEG1, TwinsMegandpeg1SeenText, TwinsMegandpeg1BeatenText, $0000, TwinsMegandpeg1Script
 
-	; trainer group && trainer id
-	db TWINS, MEGANDPEG1
-
-	; text when seen
-	dw TwinsMegandpeg1SeenText
-
-	; text when trainer beaten
-	dw TwinsMegandpeg1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsMegandpeg1Script
-
-TwinsMegandpeg1Script:
+TwinsMegandpeg1Script:
 	talkaftercancel
 	loadfont
 	writetext UnknownText_0x763c2
@@ -182,24 +150,8 @@
 	end
 
 TrainerTwinsMegandpeg2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_MEG_AND_PEG
+	trainer EVENT_BEAT_TWINS_MEG_AND_PEG, TWINS, MEGANDPEG2, TwinsMegandpeg2SeenText, TwinsMegandpeg2BeatenText, $0000, TwinsMegandpeg2Script
 
-	; trainer group && trainer id
-	db TWINS, MEGANDPEG2
-
-	; text when seen
-	dw TwinsMegandpeg2SeenText
-
-	; text when trainer beaten
-	dw TwinsMegandpeg2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsMegandpeg2Script
-
 TwinsMegandpeg2Script:
 	talkaftercancel
 	loadfont
@@ -209,24 +161,8 @@
 	end
 
 TrainerPsychicRodney:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_RODNEY
+	trainer EVENT_BEAT_PSYCHIC_RODNEY, PSYCHIC_T, RODNEY, PsychicRodneySeenText, PsychicRodneyBeatenText, $0000, PsychicRodneyScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, RODNEY
-
-	; text when seen
-	dw PsychicRodneySeenText
-
-	; text when trainer beaten
-	dw PsychicRodneyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicRodneyScript
-
 PsychicRodneyScript:
 	talkaftercancel
 	loadfont
@@ -236,24 +172,8 @@
 	end
 
 TrainerPokefanmJeremy:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_JEREMY
+	trainer EVENT_BEAT_POKEFANM_JEREMY, POKEFANM, JEREMY, PokefanmJeremySeenText, PokefanmJeremyBeatenText, $0000, PokefanmJeremyScript
 
-	; trainer group && trainer id
-	db POKEFANM, JEREMY
-
-	; text when seen
-	dw PokefanmJeremySeenText
-
-	; text when trainer beaten
-	dw PokefanmJeremyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmJeremyScript
-
 PokefanmJeremyScript:
 	talkaftercancel
 	loadfont
@@ -263,24 +183,8 @@
 	end
 
 TrainerPokefanfGeorgia:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANF_GEORGIA
+	trainer EVENT_BEAT_POKEFANF_GEORGIA, POKEFANF, GEORGIA, PokefanfGeorgiaSeenText, PokefanfGeorgiaBeatenText, $0000, PokefanfGeorgiaScript
 
-	; trainer group && trainer id
-	db POKEFANF, GEORGIA
-
-	; text when seen
-	dw PokefanfGeorgiaSeenText
-
-	; text when trainer beaten
-	dw PokefanfGeorgiaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanfGeorgiaScript
-
 PokefanfGeorgiaScript:
 	talkaftercancel
 	loadfont
@@ -290,24 +194,8 @@
 	end
 
 TrainerSupernerdShawn:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_SHAWN
+	trainer EVENT_BEAT_SUPER_NERD_SHAWN, SUPER_NERD, SHAWN, SupernerdShawnSeenText, SupernerdShawnBeatenText, $0000, SupernerdShawnScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, SHAWN
-
-	; text when seen
-	dw SupernerdShawnSeenText
-
-	; text when trainer beaten
-	dw SupernerdShawnBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdShawnScript
-
 SupernerdShawnScript:
 	talkaftercancel
 	loadfont
@@ -565,7 +453,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $7, $2, 8, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $7, $3, 8, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
@@ -574,23 +462,23 @@
 	warp_def $21, $2, 10, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $21, $3, 10, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 25, 4, $0, FastShipCaptainsCabinTrashcan
+	signpost 25, 4, SIGNPOST_READ, FastShipCaptainsCabinTrashcan
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_CAPTAIN, 29, 7, $6, $0, 255, 255, $90, 0, CaptainScript_0x75ea7, -1
-	person_event SPRITE_GENTLEMAN, 21, 6, $9, $0, 255, 255, $90, 0, GentlemanScript_0x75f1f, EVENT_730
-	person_event SPRITE_TWIN, 21, 7, $a, $0, 255, 255, $0, 0, TwinScript_0x75f6d, EVENT_731
-	person_event SPRITE_TWIN, 29, 6, $a, $0, 255, 255, $0, 0, TwinScript_0x75ebb, EVENT_732
-	person_event SPRITE_POKEFAN_M, 10, 9, $8, $0, 255, 255, $82, 5, TrainerPokefanmColin, EVENT_739
-	person_event SPRITE_TWIN, 8, 6, $6, $0, 255, 255, $82, 1, TrainerTwinsMegandpeg1, EVENT_739
-	person_event SPRITE_TWIN, 8, 7, $6, $0, 255, 255, $82, 1, TrainerTwinsMegandpeg2, EVENT_739
-	person_event SPRITE_SUPER_NERD, 9, 9, $8, $0, 255, 255, $92, 5, TrainerPsychicRodney, EVENT_73A
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $82, 3, TrainerPokefanmJeremy, EVENT_73B
-	person_event SPRITE_POKEFAN_F, 9, 9, $9, $0, 255, 255, $82, 1, TrainerPokefanfGeorgia, EVENT_73B
-	person_event SPRITE_SUPER_NERD, 19, 5, $3, $0, 255, 255, $b2, 2, TrainerSupernerdShawn, EVENT_73A
+	person_event SPRITE_CAPTAIN, 29, 7, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CaptainScript_0x75ea7, -1
+	person_event SPRITE_GENTLEMAN, 21, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GentlemanScript_0x75f1f, EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
+	person_event SPRITE_TWIN, 21, 7, OW_LEFT | $2, $0, -1, -1, $0, 0, TwinScript_0x75f6d, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+	person_event SPRITE_TWIN, 29, 6, OW_LEFT | $2, $0, -1, -1, $0, 0, TwinScript_0x75ebb, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
+	person_event SPRITE_POKEFAN_M, 10, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerPokefanmColin, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_TWIN, 8, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsMegandpeg1, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_TWIN, 8, 7, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsMegandpeg2, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SUPER_NERD, 9, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerPsychicRodney, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_POKEFAN_M, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmJeremy, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_POKEFAN_F, 9, 9, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerPokefanfGeorgia, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_SUPER_NERD, 19, 5, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerSupernerdShawn, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -1,29 +1,13 @@
 FastShipCabins_SW_SSW_NW_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerFirebreatherLyle:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_LYLE
+	trainer EVENT_BEAT_FIREBREATHER_LYLE, FIREBREATHER, LYLE, FirebreatherLyleSeenText, FirebreatherLyleBeatenText, $0000, FirebreatherLyleScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, LYLE
-
-	; text when seen
-	dw FirebreatherLyleSeenText
-
-	; text when trainer beaten
-	dw FirebreatherLyleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherLyleScript
-
 FirebreatherLyleScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerBug_catcherKen:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_KEN
+	trainer EVENT_BEAT_BUG_CATCHER_KEN, BUG_CATCHER, KEN, Bug_catcherKenSeenText, Bug_catcherKenBeatenText, $0000, Bug_catcherKenScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, KEN
-
-	; text when seen
-	dw Bug_catcherKenSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherKenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherKenScript
-
 Bug_catcherKenScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerBeautyCassie:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_CASSIE
+	trainer EVENT_BEAT_BEAUTY_CASSIE, BEAUTY, CASSIE, BeautyCassieSeenText, BeautyCassieBeatenText, $0000, BeautyCassieScript
 
-	; trainer group && trainer id
-	db BEAUTY, CASSIE
-
-	; text when seen
-	dw BeautyCassieSeenText
-
-	; text when trainer beaten
-	dw BeautyCassieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyCassieScript
-
 BeautyCassieScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerGuitaristClyde:
-	; bit/flag number
-	dw EVENT_BEAT_GUITARIST_CLYDE
+	trainer EVENT_BEAT_GUITARIST_CLYDE, GUITARIST, CLYDE, GuitaristClydeSeenText, GuitaristClydeBeatenText, $0000, GuitaristClydeScript
 
-	; trainer group && trainer id
-	db GUITARIST, CLYDE
-
-	; text when seen
-	dw GuitaristClydeSeenText
-
-	; text when trainer beaten
-	dw GuitaristClydeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GuitaristClydeScript
-
 GuitaristClydeScript:
 	talkaftercancel
 	special Function10630f
@@ -127,23 +63,23 @@
 	writetext FastShipBedText1
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
-	special Function1060a2
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
+	special Mobile_HealParty
 	special HealParty
 	playmusic MUSIC_HEAL
 	pause 60
 	special RestartMapMusic
-	special Function8c0ab
+	special Special_FadeInQuickly
 	loadfont
 	writetext FastShipBedText2
 	closetext
 	loadmovesprites
-	checkevent EVENT_031
+	checkevent EVENT_FAST_SHIP_HAS_ARRIVED
 	iftrue UnknownScript_0x75ae1
-	checkevent EVENT_032
+	checkevent EVENT_FAST_SHIP_FOUND_GIRL
 	iftrue UnknownScript_0x75ae2
-	checkevent EVENT_030
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue UnknownScript_0x75ae2
 UnknownScript_0x75ae1:
 	end
@@ -157,7 +93,7 @@
 	writetext FastShipArrivedVermilionText
 	closetext
 	loadmovesprites
-	setevent EVENT_031
+	setevent EVENT_FAST_SHIP_HAS_ARRIVED
 	end
 
 UnknownScript_0x75af7:
@@ -165,7 +101,7 @@
 	writetext FastShipArrivedOlivineText
 	closetext
 	loadmovesprites
-	setevent EVENT_031
+	setevent EVENT_FAST_SHIP_HAS_ARRIVED
 	end
 
 FastShipCabinsNorthwestCabinTrashcan:
@@ -284,7 +220,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $0, $2, 5, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $13, $2, 6, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
@@ -292,18 +228,18 @@
 	warp_def $1f, $2, 7, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 	warp_def $1f, $3, 7, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 7, $0, FastShipBed
-	signpost 2, 7, $0, FastShipBed
-	signpost 7, 7, $0, FastShipCabinsNorthwestCabinTrashcan
+	signpost 1, 7, SIGNPOST_READ, FastShipBed
+	signpost 2, 7, SIGNPOST_READ, FastShipBed
+	signpost 7, 7, SIGNPOST_READ, FastShipCabinsNorthwestCabinTrashcan
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_FISHER, 19, 5, $1e, $0, 255, 255, $82, 2, TrainerFirebreatherLyle, EVENT_739
-	person_event SPRITE_BUG_CATCHER, 19, 10, $a, $0, 255, 255, $b2, 2, TrainerBug_catcherKen, EVENT_73B
-	person_event SPRITE_BUENA, 30, 5, $a, $0, 255, 255, $92, 3, TrainerBeautyCassie, EVENT_73A
-	person_event SPRITE_ROCKER, 32, 7, $1e, $0, 255, 255, $82, 2, TrainerGuitaristClyde, EVENT_73B
+	person_event SPRITE_FISHER, 19, 5, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerFirebreatherLyle, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_BUG_CATCHER, 19, 10, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBug_catcherKen, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_BUENA, 30, 5, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBeautyCassie, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_ROCKER, 32, 7, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerGuitaristClyde, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FightingDojo.asm
+++ b/maps/FightingDojo.asm
@@ -1,8 +1,8 @@
 FightingDojo_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BlackBeltScript_0x189b61:
@@ -42,20 +42,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $b, $4, 1, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $b, $5, 1, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 4, $0, MapFightingDojoSignpost0Script
-	signpost 0, 5, $0, MapFightingDojoSignpost1Script
+	signpost 0, 4, SIGNPOST_READ, MapFightingDojoSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapFightingDojoSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_BLACK_BELT, 8, 8, $6, $0, 255, 255, $90, 0, BlackBeltScript_0x189b61, -1
-	person_event SPRITE_POKE_BALL, 5, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x189b6a, EVENT_PICKED_UP_FOCUS_BAND
+	person_event SPRITE_BLACK_BELT, 8, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BlackBeltScript_0x189b61, -1
+	person_event SPRITE_POKE_BALL, 5, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x189b6a, EVENT_PICKED_UP_FOCUS_BAND
--- a/maps/FuchsiaBillSpeechHouse.asm
+++ b/maps/FuchsiaBillSpeechHouse.asm
@@ -1,8 +1,8 @@
 FuchsiaBillSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanFScript_0x1963bd:
@@ -27,18 +27,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $7, $3, 4, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_F, 7, 6, $9, $0, 255, 255, $80, 0, PokefanFScript_0x1963bd, -1
-	person_event SPRITE_YOUNGSTER, 8, 10, $4, $10, 255, 255, $0, 0, YoungsterScript_0x1963c0, -1
+	person_event SPRITE_POKEFAN_F, 7, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x1963bd, -1
+	person_event SPRITE_YOUNGSTER, 8, 10, OW_UP | $0, $10, -1, -1, $0, 0, YoungsterScript_0x1963c0, -1
--- a/maps/FuchsiaCity.asm
+++ b/maps/FuchsiaCity.asm
@@ -1,8 +1,8 @@
 FuchsiaCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -124,7 +124,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 11
 	warp_def $d, $5, 2, GROUP_FUCHSIA_MART, MAP_FUCHSIA_MART
 	warp_def $d, $16, 1, GROUP_SAFARI_ZONE_MAIN_OFFICE, MAP_SAFARI_ZONE_MAIN_OFFICE
@@ -138,23 +138,23 @@
 	warp_def $23, $7, 1, GROUP_ROUTE_19___FUCHSIA_GATE, MAP_ROUTE_19___FUCHSIA_GATE
 	warp_def $23, $8, 2, GROUP_ROUTE_19___FUCHSIA_GATE, MAP_ROUTE_19___FUCHSIA_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 8
-	signpost 15, 21, $0, FuchsiaCitySign
-	signpost 29, 5, $0, FuchsiaGymSign
-	signpost 15, 25, $0, SafariZoneOfficeSign
-	signpost 29, 27, $0, WardensHomeSign
-	signpost 5, 17, $0, SafariZoneClosedSign
-	signpost 15, 13, $0, NoLitteringSign
-	signpost 27, 20, $0, FuchsiaCityPokeCenterSign
-	signpost 13, 6, $0, FuchsiaCityMartSign
+	signpost 15, 21, SIGNPOST_READ, FuchsiaCitySign
+	signpost 29, 5, SIGNPOST_READ, FuchsiaGymSign
+	signpost 15, 25, SIGNPOST_READ, SafariZoneOfficeSign
+	signpost 29, 27, SIGNPOST_READ, WardensHomeSign
+	signpost 5, 17, SIGNPOST_READ, SafariZoneClosedSign
+	signpost 15, 13, SIGNPOST_READ, NoLitteringSign
+	signpost 27, 20, SIGNPOST_READ, FuchsiaCityPokeCenterSign
+	signpost 13, 6, SIGNPOST_READ, FuchsiaCityMartSign
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_YOUNGSTER, 22, 27, $2, $11, 255, 255, $a0, 0, YoungsterScript_0x194b22, -1
-	person_event SPRITE_POKEFAN_M, 12, 17, $2, $11, 255, 255, $b0, 0, PokefanMScript_0x194b25, -1
-	person_event SPRITE_TEACHER, 18, 20, $2, $11, 255, 255, $80, 0, TeacherScript_0x194b28, -1
-	person_event SPRITE_FRUIT_TREE, 5, 12, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x194b43, -1
+	person_event SPRITE_YOUNGSTER, 22, 27, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x194b22, -1
+	person_event SPRITE_POKEFAN_M, 12, 17, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x194b25, -1
+	person_event SPRITE_TEACHER, 18, 20, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x194b28, -1
+	person_event SPRITE_FRUIT_TREE, 5, 12, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x194b43, -1
--- a/maps/FuchsiaGym.asm
+++ b/maps/FuchsiaGym.asm
@@ -1,8 +1,8 @@
 FuchsiaGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 JanineScript_0x195db9:
@@ -23,11 +23,11 @@
 	setevent EVENT_BEAT_LASS_LINDA
 	setevent EVENT_BEAT_PICNICKER_CINDY
 	setevent EVENT_BEAT_CAMPER_BARRY
-	variablesprite $7, $28
-	variablesprite $8, $28
-	variablesprite $9, $28
-	variablesprite $a, $27
-	special Function14209
+	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_LASS
+	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_LASS
+	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
+	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
+	special RunCallback_04
 	loadfont
 	writetext UnknownText_0x195feb
 	playsound SFX_GET_BADGE
@@ -56,8 +56,8 @@
 	iftrue UnknownScript_0x195e2c
 	applymovement $3, MovementData_0x195f27
 	faceplayer
-	variablesprite $7, $28
-	special Function14209
+	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_LASS
+	special RunCallback_04
 UnknownScript_0x195e2c:
 	faceplayer
 	loadfont
@@ -75,7 +75,7 @@
 	end
 
 UnknownScript_0x195e4a:
-	variablesprite $7, $a
+	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_JANINE
 	returnafterbattle
 	end
 
@@ -90,8 +90,8 @@
 	iftrue UnknownScript_0x195e66
 	applymovement $4, MovementData_0x195f27
 	faceplayer
-	variablesprite $8, $28
-	special Function14209
+	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_LASS
+	special RunCallback_04
 UnknownScript_0x195e66:
 	faceplayer
 	loadfont
@@ -109,7 +109,7 @@
 	end
 
 UnknownScript_0x195e84:
-	variablesprite $8, $a
+	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_JANINE
 	returnafterbattle
 	end
 
@@ -124,8 +124,8 @@
 	iftrue UnknownScript_0x195ea0
 	applymovement $5, MovementData_0x195f27
 	faceplayer
-	variablesprite $9, $28
-	special Function14209
+	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
+	special RunCallback_04
 UnknownScript_0x195ea0:
 	faceplayer
 	loadfont
@@ -143,7 +143,7 @@
 	end
 
 UnknownScript_0x195ebe:
-	variablesprite $9, $a
+	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_JANINE
 	returnafterbattle
 	end
 
@@ -158,8 +158,8 @@
 	iftrue UnknownScript_0x195eda
 	applymovement $6, MovementData_0x195f27
 	faceplayer
-	variablesprite $a, $27
-	special Function14209
+	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
+	special RunCallback_04
 UnknownScript_0x195eda:
 	faceplayer
 	loadfont
@@ -177,7 +177,7 @@
 	end
 
 UnknownScript_0x195ef8:
-	variablesprite $a, $a
+	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_JANINE
 	returnafterbattle
 	end
 
@@ -376,24 +376,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $4, 3, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $11, $5, 3, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 3, $0, FuchsiaGymStatue
-	signpost 15, 6, $0, FuchsiaGymStatue
+	signpost 15, 3, SIGNPOST_READ, FuchsiaGymStatue
+	signpost 15, 6, SIGNPOST_READ, FuchsiaGymStatue
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_JANINE, 14, 5, $3, $0, 255, 255, $90, 0, JanineScript_0x195db9, -1
-	person_event SPRITE_FUSCHIA_GYM_1, 11, 9, $a, $0, 255, 255, $90, 0, FuschiaGym1Script_0x195e1b, -1
-	person_event SPRITE_FUSCHIA_GYM_2, 15, 9, $a, $0, 255, 255, $90, 0, FuschiaGym2Script_0x195e55, -1
-	person_event SPRITE_FUSCHIA_GYM_3, 8, 13, $a, $0, 255, 255, $90, 0, FuschiaGym3Script_0x195e8f, -1
-	person_event SPRITE_FUSCHIA_GYM_4, 6, 8, $a, $0, 255, 255, $90, 0, FuschiaGym4Script_0x195ec9, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $90, 0, FuchsiaGymGuyScript, -1
+	person_event SPRITE_JANINE, 14, 5, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, JanineScript_0x195db9, -1
+	person_event SPRITE_FUCHSIA_GYM_1, 11, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym1Script_0x195e1b, -1
+	person_event SPRITE_FUCHSIA_GYM_2, 15, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym2Script_0x195e55, -1
+	person_event SPRITE_FUCHSIA_GYM_3, 8, 13, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym3Script_0x195e8f, -1
+	person_event SPRITE_FUCHSIA_GYM_4, 6, 8, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym4Script_0x195ec9, -1
+	person_event SPRITE_GYM_GUY, 19, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuchsiaGymGuyScript, -1
--- a/maps/FuchsiaMart.asm
+++ b/maps/FuchsiaMart.asm
@@ -1,8 +1,8 @@
 FuchsiaMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x195ce8:
@@ -36,19 +36,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $7, $3, 1, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x195ce8, -1
-	person_event SPRITE_FISHER, 6, 7, $8, $0, 255, 255, $80, 0, FisherScript_0x195cef, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 11, $5, $2, 255, 255, $a0, 0, CooltrainerFScript_0x195cf2, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x195ce8, -1
+	person_event SPRITE_FISHER, 6, 7, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x195cef, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 11, OW_UP | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x195cf2, -1
--- a/maps/FuchsiaPokeCenter1F.asm
+++ b/maps/FuchsiaPokeCenter1F.asm
@@ -1,11 +1,11 @@
 FuchsiaPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x196458, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x196458:
@@ -28,8 +28,8 @@
 	loadmovesprites
 	applymovement $5, MovementData_0x196486
 	faceplayer
-	variablesprite $c, $a
-	special Function14209
+	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_JANINE
+	special RunCallback_04
 	loadfont
 	writetext UnknownText_0x19654e
 	closetext
@@ -36,8 +36,8 @@
 	loadmovesprites
 	applymovement $5, MovementData_0x196486
 	faceplayer
-	variablesprite $c, $28
-	special Function14209
+	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
+	special RunCallback_04
 	end
 
 MovementData_0x196486:
@@ -88,21 +88,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 5, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $7, $4, 5, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $a0, 0, NurseScript_0x196459, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 12, $5, $1, 255, 255, $0, 0, CooltrainerMScript_0x19645c, -1
-	person_event SPRITE_COOLTRAINER_F, 8, 5, $5, $1, 255, 255, $0, 0, CooltrainerFScript_0x19645f, -1
-	person_event SPRITE_JANINE_IMPERSONATOR, 7, 9, $6, $0, 255, 255, $90, 0, JanineImpersonatorScript_0x196462, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, NurseScript_0x196459, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 12, OW_UP | $1, $1, -1, -1, $0, 0, CooltrainerMScript_0x19645c, -1
+	person_event SPRITE_COOLTRAINER_F, 8, 5, OW_UP | $1, $1, -1, -1, $0, 0, CooltrainerFScript_0x19645f, -1
+	person_event SPRITE_JANINE_IMPERSONATOR, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, JanineImpersonatorScript_0x196462, -1
--- a/maps/FuchsiaPokeCenter2FBeta.asm
+++ b/maps/FuchsiaPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 FuchsiaPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FuchsiaPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_FUCHSIA_POKECENTER_1F, MAP_FUCHSIA_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/GoldenrodBikeShop.asm
+++ b/maps/GoldenrodBikeShop.asm
@@ -1,8 +1,8 @@
 GoldenrodBikeShop_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x5474f:
@@ -103,26 +103,26 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $3, 2, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 9
-	signpost 2, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 3, 0, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 3, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 5, 0, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 5, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 0, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 6, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 7, $0, MapGoldenrodBikeShopSignpost8Script
+	signpost 2, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 3, 0, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 3, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 5, 0, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 5, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 0, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 6, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 7, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_CLERK, 6, 11, $8, $0, 255, 255, $80, 0, ClerkScript_0x54750, -1
+	person_event SPRITE_CLERK, 6, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ClerkScript_0x54750, -1
--- a/maps/GoldenrodBillsHouse.asm
+++ b/maps/GoldenrodBillsHouse.asm
@@ -1,8 +1,8 @@
 GoldenrodBillsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BillsHouseBill:
@@ -65,14 +65,14 @@
 BillsSister:
 	faceplayer
 	loadfont
-	checkcellnum $3
+	checkcellnum PHONE_BILL
 	iftrue UnknownScript_0x54c58
 	writetext UnknownText_0x54f9e
-	askforphonenumber $3
+	askforphonenumber PHONE_BILL
 	if_equal $1, UnknownScript_0x54c64
 	if_equal $2, UnknownScript_0x54c5e
 	waitbutton
-	addcellnum $3
+	addcellnum PHONE_BILL
 	writetext UnknownText_0x54fd9
 	playsound SFX_REGISTER_PHONE_NUMBER
 	waitbutton
@@ -241,22 +241,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $3, 4, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, BillsHouseBookshelf2
-	signpost 1, 1, $0, BillsHouseBookshelf1
-	signpost 1, 7, $0, BillsHouseRadio
+	signpost 1, 0, SIGNPOST_READ, BillsHouseBookshelf2
+	signpost 1, 1, SIGNPOST_READ, BillsHouseBookshelf1
+	signpost 1, 7, SIGNPOST_READ, BillsHouseRadio
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_BILL, 7, 6, $9, $0, 255, 255, $0, 0, BillsHouseBill, EVENT_MET_BILL
-	person_event SPRITE_POKEFAN_F, 7, 9, $6, $0, 255, 255, $0, 0, BillsMom, -1
-	person_event SPRITE_TWIN, 8, 9, $2, $11, 255, 255, $a0, 0, BillsSister, -1
+	person_event SPRITE_BILL, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, BillsHouseBill, EVENT_MET_BILL
+	person_event SPRITE_POKEFAN_F, 7, 9, OW_UP | $2, $0, -1, -1, $0, 0, BillsMom, -1
+	person_event SPRITE_TWIN, 8, 9, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BillsSister, -1
--- a/maps/GoldenrodCity.asm
+++ b/maps/GoldenrodCity.asm
@@ -1,8 +1,8 @@
 GoldenrodCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -11,7 +11,7 @@
 
 .FlyPointAndFloria
 	setflag ENGINE_FLYPOINT_GOLDENROD
-	setflag ENGINE_16
+	setflag ENGINE_FLORIA
 	checkevent EVENT_MET_FLORIA
 	iftrue .FloriaDone
 	clearevent EVENT_FLORIA_AT_SUDOWOODO
@@ -31,7 +31,7 @@
 	return
 
 .MoveTutorAppear
-	checkflag ENGINE_5E
+	checkflag ENGINE_DAILY_MOVE_TUTOR
 	iftrue .MoveTutorDone
 	appear $10
 .MoveTutorDone
@@ -42,52 +42,52 @@
 	loadfont
 	writetext UnknownText_0x199042
 	yesorno
-	iffalse UnknownScript_0x19899a
+	iffalse .Refused
 	special Function24b25
 	writetext UnknownText_0x199090
 	yesorno
-	iffalse UnknownScript_0x1989a0
+	iffalse .Refused2
 	checkcoins 4000
-	if_equal $2, UnknownScript_0x1989dd
+	if_equal $2, .NotEnoughMoney
 	writetext UnknownText_0x1990ce
-	loadmenudata MenuDataHeader_0x198967
+	loadmenudata .MoveMenuDataHeader
 	interpretmenu2
 	writebackup
-	if_equal $1, UnknownScript_0x19893a
-	if_equal $2, UnknownScript_0x198949
-	if_equal $3, UnknownScript_0x198958
-	jump UnknownScript_0x1989d7
+	if_equal $1, .Flamethrower
+	if_equal $2, .Thunderbolt
+	if_equal $3, .IceBeam
+	jump .Incompatible
 
-UnknownScript_0x19893a:
+.Flamethrower:
 	writebyte $1
 	writetext UnknownText_0x1991cf
 	special Function4925b
-	if_equal $0, UnknownScript_0x1989a6
-	jump UnknownScript_0x1989d7
+	if_equal $0, .TeachMove
+	jump .Incompatible
 
-UnknownScript_0x198949:
+.Thunderbolt:
 	writebyte $2
 	writetext UnknownText_0x1991cf
 	special Function4925b
-	if_equal $0, UnknownScript_0x1989a6
-	jump UnknownScript_0x1989d7
+	if_equal $0, .TeachMove
+	jump .Incompatible
 
-UnknownScript_0x198958:
+.IceBeam:
 	writebyte $3
 	writetext UnknownText_0x1991cf
 	special Function4925b
-	if_equal $0, UnknownScript_0x1989a6
-	jump UnknownScript_0x1989d7
+	if_equal $0, .TeachMove
+	jump .Incompatible
 
 
-MenuDataHeader_0x198967:
+.MoveMenuDataHeader:
 	db $40 ; flags
 	db 02, 00 ; start coords
 	db 11, 15 ; end coords
-	dw MenuData2_0x19896f
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x19896f:
+.MenuData2:
 	db $80 ; flags
 	db 4 ; items
 	db "FLAMETHROWER@"
@@ -96,19 +96,19 @@
 	db "CANCEL@"
 
 
-UnknownScript_0x19899a:
+.Refused:
 	writetext UnknownText_0x1990b4
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x1989a0:
+.Refused2:
 	writetext UnknownText_0x199107
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x1989a6:
+.TeachMove:
 	writetext UnknownText_0x19913a
 	keeptextopen
 	takecoins 4000
@@ -119,27 +119,27 @@
 	closetext
 	loadmovesprites
 	checkcode VAR_FACING
-	if_equal $2, UnknownScript_0x1989c6
+	if_equal $2, .WalkAroundPlayer
 	applymovement $10, MovementData_0x198a5f
-	jump UnknownScript_0x1989ca
+	jump .GoInside
 
-UnknownScript_0x1989c6:
+.WalkAroundPlayer:
 	applymovement $10, MovementData_0x198a63
-UnknownScript_0x1989ca:
+.GoInside:
 	playsound SFX_ENTER_DOOR
 	disappear $10
-	clearevent EVENT_76B
-	setflag ENGINE_5E
+	clearevent EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
+	setflag ENGINE_DAILY_MOVE_TUTOR
 	waitbutton
 	end
 
-UnknownScript_0x1989d7:
+.Incompatible:
 	writetext UnknownText_0x1991a4
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x1989dd:
+.NotEnoughMoney:
 	writetext UnknownText_0x1991ac
 	closetext
 	loadmovesprites
@@ -155,13 +155,13 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_CLEARED_RADIO_TOWER
-	iftrue UnknownScript_0x1989f7
+	iftrue .ClearedRadioTower
 	writetext UnknownText_0x198ae6
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x1989f7:
+.ClearedRadioTower:
 	writetext UnknownText_0x198b2d
 	closetext
 	loadmovesprites
@@ -171,13 +171,13 @@
 	faceplayer
 	loadfont
 	checkflag ENGINE_RADIO_CARD
-	iftrue UnknownScript_0x198a0b
+	iftrue .GotRadioCard
 	writetext UnknownText_0x198b73
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x198a0b:
+.GotRadioCard:
 	writetext UnknownText_0x198c14
 	closetext
 	loadmovesprites
@@ -543,7 +543,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 15
 	warp_def $7, $18, 1, GROUP_GOLDENROD_GYM, MAP_GOLDENROD_GYM
 	warp_def $1d, $1d, 1, GROUP_GOLDENROD_BIKE_SHOP, MAP_GOLDENROD_BIKE_SHOP
@@ -561,38 +561,38 @@
 	warp_def $1d, $b, 5, GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES
 	warp_def $1b, $f, 1, GROUP_GOLDENROD_POKECENTER_1F, MAP_GOLDENROD_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 12
-	signpost 14, 10, $0, GoldenrodCityStationSign
-	signpost 17, 4, $0, GoldenrodCityRadioTowerSign
-	signpost 27, 26, $0, GoldenrodDeptStoreSign
-	signpost 9, 26, $0, GoldenrodGymSign
-	signpost 18, 22, $0, GoldenrodCitySign
-	signpost 30, 28, $0, GoldenrodCityBikeShopSign
-	signpost 22, 16, $0, GoldenrodCityGameCornerSign
-	signpost 7, 12, $0, GoldenrodCityNameRaterSign
-	signpost 6, 8, $0, GoldenrodCityUndergroundSignNorth
-	signpost 30, 12, $0, GoldenrodCityUndergroundSignSouth
-	signpost 27, 16, $1, GoldenrodCityPokeCenterSign
-	signpost 6, 30, $0, GoldenrodCityFlowerShopSign
+	signpost 14, 10, SIGNPOST_READ, GoldenrodCityStationSign
+	signpost 17, 4, SIGNPOST_READ, GoldenrodCityRadioTowerSign
+	signpost 27, 26, SIGNPOST_READ, GoldenrodDeptStoreSign
+	signpost 9, 26, SIGNPOST_READ, GoldenrodGymSign
+	signpost 18, 22, SIGNPOST_READ, GoldenrodCitySign
+	signpost 30, 28, SIGNPOST_READ, GoldenrodCityBikeShopSign
+	signpost 22, 16, SIGNPOST_READ, GoldenrodCityGameCornerSign
+	signpost 7, 12, SIGNPOST_READ, GoldenrodCityNameRaterSign
+	signpost 6, 8, SIGNPOST_READ, GoldenrodCityUndergroundSignNorth
+	signpost 30, 12, SIGNPOST_READ, GoldenrodCityUndergroundSignSouth
+	signpost 27, 16, SIGNPOST_UP, GoldenrodCityPokeCenterSign
+	signpost 6, 30, SIGNPOST_READ, GoldenrodCityFlowerShopSign
 
-	; people-events
+.PersonEvents:
 	db 15
-	person_event SPRITE_POKEFAN_M, 22, 11, $7, $0, 255, 255, $0, 0, PokefanMScript_0x1989e3, EVENT_6CF
-	person_event SPRITE_YOUNGSTER, 21, 34, $2, $11, 255, 255, $0, 0, YoungsterScript_0x1989e6, EVENT_6CF
-	person_event SPRITE_COOLTRAINER_F, 20, 16, $8, $0, 255, 255, $a0, 0, CooltrainerFScript_0x1989e9, EVENT_6CF
-	person_event SPRITE_COOLTRAINER_F, 30, 24, $2, $21, 255, 255, $0, 0, CooltrainerFScript_0x1989fd, EVENT_6CF
-	person_event SPRITE_YOUNGSTER, 21, 23, $2, $11, 255, 255, $80, 0, YoungsterScript_0x198a11, EVENT_6CF
-	person_event SPRITE_LASS, 14, 21, $5, $2, 255, 255, $a0, 0, LassScript_0x198a14, EVENT_6CF
-	person_event SPRITE_GRAMPS, 31, 15, $5, $1, 255, 255, $0, 0, GrampsScript_0x198a17, EVENT_6CF
-	person_event SPRITE_ROCKET, 20, 8, $7, $0, 255, 255, $0, 0, RocketScript_0x198a1a, EVENT_6CC
-	person_event SPRITE_ROCKET, 24, 32, $7, $0, 255, 255, $0, 0, RocketScript_0x198a29, EVENT_6CD
-	person_event SPRITE_ROCKET, 19, 12, $6, $0, 255, 255, $0, 0, RocketScript_0x198a2c, EVENT_6CD
-	person_event SPRITE_ROCKET, 27, 20, $9, $0, 255, 255, $0, 0, RocketScript_0x198a2f, EVENT_6CE
-	person_event SPRITE_ROCKET, 24, 33, $7, $0, 255, 255, $0, 0, RocketScript_0x198a32, EVENT_6CE
-	person_event SPRITE_ROCKET, 11, 33, $6, $0, 255, 255, $0, 0, RocketScript_0x198a35, EVENT_6CE
-	person_event SPRITE_ROCKET, 14, 35, $8, $0, 255, 255, $0, 0, RocketScript_0x198a38, EVENT_6CE
-	person_event SPRITE_POKEFAN_M, 26, 16, $3, $0, 255, 255, $80, 0, MoveTutor, EVENT_76A
+	person_event SPRITE_POKEFAN_M, 22, 11, OW_UP | $3, $0, -1, -1, $0, 0, PokefanMScript_0x1989e3, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_YOUNGSTER, 21, 34, OW_DOWN | $2, $11, -1, -1, $0, 0, YoungsterScript_0x1989e6, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 20, 16, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x1989e9, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 30, 24, OW_DOWN | $2, $21, -1, -1, $0, 0, CooltrainerFScript_0x1989fd, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_YOUNGSTER, 21, 23, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x198a11, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_LASS, 14, 21, OW_UP | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x198a14, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_GRAMPS, 31, 15, OW_UP | $1, $1, -1, -1, $0, 0, GrampsScript_0x198a17, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_ROCKET, 20, 8, OW_UP | $3, $0, -1, -1, $0, 0, RocketScript_0x198a1a, EVENT_GOLDENROD_CITY_ROCKET_SCOUT
+	person_event SPRITE_ROCKET, 24, 32, OW_UP | $3, $0, -1, -1, $0, 0, RocketScript_0x198a29, EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 19, 12, OW_UP | $2, $0, -1, -1, $0, 0, RocketScript_0x198a2c, EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 27, 20, OW_LEFT | $1, $0, -1, -1, $0, 0, RocketScript_0x198a2f, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 24, 33, OW_UP | $3, $0, -1, -1, $0, 0, RocketScript_0x198a32, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 11, 33, OW_UP | $2, $0, -1, -1, $0, 0, RocketScript_0x198a35, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 14, 35, OW_LEFT | $0, $0, -1, -1, $0, 0, RocketScript_0x198a38, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_POKEFAN_M, 26, 16, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, MoveTutor, EVENT_GOLDENROD_CITY_MOVE_TUTOR
--- a/maps/GoldenrodDeptStore1F.asm
+++ b/maps/GoldenrodDeptStore1F.asm
@@ -1,8 +1,8 @@
 GoldenrodDeptStore1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ReceptionistScript_0x55981:
@@ -76,7 +76,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $7, $7, 9, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $8, 9, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
@@ -83,17 +83,17 @@
 	warp_def $0, $f, 2, GROUP_GOLDENROD_DEPT_STORE_2F, MAP_GOLDENROD_DEPT_STORE_2F
 	warp_def $0, $2, 1, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore1FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore1FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore1FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore1FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_RECEPTIONIST, 5, 14, $6, $0, 255, 255, $0, 0, ReceptionistScript_0x55981, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $6, $0, 255, 255, $0, 0, PokefanFScript_0x55987, -1
-	person_event SPRITE_BUG_CATCHER, 9, 9, $5, $1, 255, 255, $a0, 0, BugCatcherScript_0x5598a, -1
-	person_event SPRITE_GENTLEMAN, 9, 15, $2, $11, 255, 255, $0, 0, GentlemanScript_0x55984, -1
+	person_event SPRITE_RECEPTIONIST, 5, 14, OW_UP | $2, $0, -1, -1, $0, 0, ReceptionistScript_0x55981, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, OW_UP | $2, $0, -1, -1, $0, 0, PokefanFScript_0x55987, -1
+	person_event SPRITE_BUG_CATCHER, 9, 9, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugCatcherScript_0x5598a, -1
+	person_event SPRITE_GENTLEMAN, 9, 15, OW_DOWN | $2, $11, -1, -1, $0, 0, GentlemanScript_0x55984, -1
--- a/maps/GoldenrodDeptStore2F.asm
+++ b/maps/GoldenrodDeptStore2F.asm
@@ -1,8 +1,8 @@
 GoldenrodDeptStore2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x55b5d:
@@ -97,24 +97,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_GOLDENROD_DEPT_STORE_3F, MAP_GOLDENROD_DEPT_STORE_3F
 	warp_def $0, $f, 3, GROUP_GOLDENROD_DEPT_STORE_1F, MAP_GOLDENROD_DEPT_STORE_1F
 	warp_def $0, $2, 1, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore2FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore2FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore2FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore2FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $0, 0, ClerkScript_0x55b5d, -1
-	person_event SPRITE_CLERK, 10, 17, $8, $0, 255, 255, $0, 0, ClerkScript_0x55b65, -1
-	person_event SPRITE_YOUNGSTER, 10, 13, $4, $10, 255, 255, $0, 0, YoungsterScript_0x55b6d, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x55b70, -1
-	person_event SPRITE_GENTLEMAN, 10, 6, $3, $0, 255, 255, $0, 0, GentlemanScript_0x55b73, -1
+	person_event SPRITE_CLERK, 9, 17, OW_UP | $3, $0, -1, -1, $0, 0, ClerkScript_0x55b5d, -1
+	person_event SPRITE_CLERK, 10, 17, OW_LEFT | $0, $0, -1, -1, $0, 0, ClerkScript_0x55b65, -1
+	person_event SPRITE_YOUNGSTER, 10, 13, OW_UP | $0, $10, -1, -1, $0, 0, YoungsterScript_0x55b6d, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x55b70, -1
+	person_event SPRITE_GENTLEMAN, 10, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, GentlemanScript_0x55b73, -1
--- a/maps/GoldenrodDeptStore3F.asm
+++ b/maps/GoldenrodDeptStore3F.asm
@@ -1,8 +1,8 @@
 GoldenrodDeptStore3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x55db8:
@@ -55,22 +55,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_GOLDENROD_DEPT_STORE_2F, MAP_GOLDENROD_DEPT_STORE_2F
 	warp_def $0, $f, 2, GROUP_GOLDENROD_DEPT_STORE_4F, MAP_GOLDENROD_DEPT_STORE_4F
 	warp_def $0, $2, 1, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore3FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore3FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore3FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore3FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 5, 10, $6, $0, 255, 255, $0, 0, ClerkScript_0x55db8, -1
-	person_event SPRITE_SUPER_NERD, 9, 16, $a, $10, 255, 255, $80, 0, SuperNerdScript_0x55dc0, -1
-	person_event SPRITE_ROCKER, 9, 6, $4, $10, 255, 255, $0, 0, RockerScript_0x55dc3, -1
+	person_event SPRITE_CLERK, 5, 10, OW_UP | $2, $0, -1, -1, $0, 0, ClerkScript_0x55db8, -1
+	person_event SPRITE_SUPER_NERD, 9, 16, OW_LEFT | $2, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x55dc0, -1
+	person_event SPRITE_ROCKER, 9, 6, OW_UP | $0, $10, -1, -1, $0, 0, RockerScript_0x55dc3, -1
--- a/maps/GoldenrodDeptStore4F.asm
+++ b/maps/GoldenrodDeptStore4F.asm
@@ -1,8 +1,8 @@
 GoldenrodDeptStore4F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x55ee9:
@@ -75,23 +75,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_GOLDENROD_DEPT_STORE_5F, MAP_GOLDENROD_DEPT_STORE_5F
 	warp_def $0, $f, 2, GROUP_GOLDENROD_DEPT_STORE_3F, MAP_GOLDENROD_DEPT_STORE_3F
 	warp_def $0, $2, 1, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore4FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore4FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore4FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore4FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $0, 0, ClerkScript_0x55ee9, -1
-	person_event SPRITE_COOLTRAINER_M, 11, 15, $9, $0, 255, 255, $0, 0, CooltrainerMScript_0x55ef1, -1
-	person_event SPRITE_BUG_CATCHER, 6, 11, $5, $1, 255, 255, $0, 0, BugCatcherScript_0x55ef4, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 9, $6, $0, 255, 255, $0, 0, GameboyKidScript_0x55ef7, -1
+	person_event SPRITE_CLERK, 9, 17, OW_UP | $3, $0, -1, -1, $0, 0, ClerkScript_0x55ee9, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 15, OW_LEFT | $1, $0, -1, -1, $0, 0, CooltrainerMScript_0x55ef1, -1
+	person_event SPRITE_BUG_CATCHER, 6, 11, OW_UP | $1, $1, -1, -1, $0, 0, BugCatcherScript_0x55ef4, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 9, OW_UP | $2, $0, -1, -1, $0, 0, GameboyKidScript_0x55ef7, -1
--- a/maps/GoldenrodDeptStore5F.asm
+++ b/maps/GoldenrodDeptStore5F.asm
@@ -1,21 +1,21 @@
 GoldenrodDeptStore5F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x56090
+	dbw 2, .CheckIfSunday
 
-UnknownScript_0x56090:
+.CheckIfSunday:
 	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, UnknownScript_0x56099
+	if_equal SUNDAY, .yes
 	disappear $7
 	return
 
-UnknownScript_0x56099:
+.yes:
 	appear $7
 	return
 
@@ -23,32 +23,32 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_GOT_TM02_HEADBUTT
-	iftrue UnknownScript_0x560ad
+	iftrue .headbutt
 	checkevent EVENT_GOT_TM08_ROCK_SMASH
-	iftrue UnknownScript_0x560c2
-	jump UnknownScript_0x560b6
+	iftrue .onlyrocksmash
+	jump .neither
 
-UnknownScript_0x560ad:
+.headbutt:
 	checkevent EVENT_GOT_TM08_ROCK_SMASH
-	iftrue UnknownScript_0x560c8
-	jump UnknownScript_0x560bc
+	iftrue .both
+	jump .onlyheadbutt
 
-UnknownScript_0x560b6:
+.neither:
 	pokemart $0, $0009
 	loadmovesprites
 	end
 
-UnknownScript_0x560bc:
+.onlyheadbutt:
 	pokemart $0, $000a
 	loadmovesprites
 	end
 
-UnknownScript_0x560c2:
+.onlyrocksmash:
 	pokemart $0, $000b
 	loadmovesprites
 	end
 
-UnknownScript_0x560c8:
+.both:
 	pokemart $0, $000c
 	loadmovesprites
 	end
@@ -57,44 +57,44 @@
 	faceplayer
 	loadfont
 	checkcode VAR_WEEKDAY
-	if_not_equal SUNDAY, UnknownScript_0x56112
+	if_not_equal SUNDAY, .EventIsOver
 	checkflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
-	iftrue UnknownScript_0x56112
-	special Function718d
+	iftrue .EventIsOver
+	special GetFirstPokemonHappiness
 	writetext UnknownText_0x56143
 	keeptextopen
-	if_greater_than $95, UnknownScript_0x560ee
-	if_greater_than $31, UnknownScript_0x560fd
-	jump UnknownScript_0x56103
+	if_greater_than $95, .VeryHappy
+	if_greater_than $31, .SomewhatHappy
+	jump .NotVeryHappy
 
-UnknownScript_0x560ee:
+.VeryHappy:
 	writetext UnknownText_0x5615a
 	keeptextopen
 	verbosegiveitem TM_RETURN, 1
-	iffalse UnknownScript_0x56116
+	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	loadmovesprites
 	end
 
-UnknownScript_0x560fd:
+.SomewhatHappy:
 	writetext UnknownText_0x561a6
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x56103:
+.NotVeryHappy:
 	writetext UnknownText_0x561d8
 	keeptextopen
 	verbosegiveitem TM_FRUSTRATION, 1
-	iffalse UnknownScript_0x56116
+	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	loadmovesprites
 	end
 
-UnknownScript_0x56112:
+.EventIsOver:
 	writetext UnknownText_0x56202
 	closetext
-UnknownScript_0x56116:
+.Done:
 	loadmovesprites
 	end
 
@@ -102,14 +102,14 @@
 	faceplayer
 	loadfont
 	special SpecialGameboyCheck
-	if_not_equal $2, UnknownScript_0x5612a
+	if_not_equal $2, .NotGBC ; This is a dummy check from Gold and Silver.  In normal gameplay, this would not be checked.
 	writetext UnknownText_0x56241
 	closetext
 	loadmovesprites
-	special Function1050b9
+	special Special_UnlockMysteryGift
 	end
 
-UnknownScript_0x5612a:
+.NotGBC:
 	writetext UnknownText_0x56279
 	closetext
 	loadmovesprites
@@ -216,25 +216,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $c, 1, GROUP_GOLDENROD_DEPT_STORE_4F, MAP_GOLDENROD_DEPT_STORE_4F
 	warp_def $0, $f, 1, GROUP_GOLDENROD_DEPT_STORE_6F, MAP_GOLDENROD_DEPT_STORE_6F
 	warp_def $0, $2, 1, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore5FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore5FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore5FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore5FElevatorButton
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_CLERK, 9, 12, $7, $0, 255, 255, $0, 0, ClerkScript_0x5609c, -1
-	person_event SPRITE_LASS, 10, 7, $2, $11, 255, 255, $0, 0, LassScript_0x56130, -1
-	person_event SPRITE_COOLTRAINER_M, 7, 10, $3, $0, 255, 255, $0, 0, CooltrainerMScript_0x56133, -1
-	person_event SPRITE_POKEFAN_M, 9, 17, $2, $22, 255, 255, $0, 0, PokefanMScript_0x5613a, -1
-	person_event SPRITE_TWIN, 5, 13, $6, $0, 255, 255, $a0, 0, TwinScript_0x56118, -1
-	person_event SPRITE_RECEPTIONIST, 9, 11, $7, $0, 255, 255, $80, 0, ReceptionistScript_0x560ce, EVENT_763
+	person_event SPRITE_CLERK, 9, 12, OW_UP | $3, $0, -1, -1, $0, 0, ClerkScript_0x5609c, -1
+	person_event SPRITE_LASS, 10, 7, OW_DOWN | $2, $11, -1, -1, $0, 0, LassScript_0x56130, -1
+	person_event SPRITE_COOLTRAINER_M, 7, 10, OW_DOWN | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x56133, -1
+	person_event SPRITE_POKEFAN_M, 9, 17, OW_DOWN | $2, $22, -1, -1, $0, 0, PokefanMScript_0x5613a, -1
+	person_event SPRITE_TWIN, 5, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x56118, -1
+	person_event SPRITE_RECEPTIONIST, 9, 11, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x560ce, EVENT_GOLDENROD_DEPT_STORE_5F_HAPPINESS_EVENT_LADY
--- a/maps/GoldenrodDeptStore6F.asm
+++ b/maps/GoldenrodDeptStore6F.asm
@@ -1,8 +1,8 @@
 GoldenrodDeptStore6F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GoldenrodVendingMachine:
@@ -149,25 +149,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $f, 2, GROUP_GOLDENROD_DEPT_STORE_5F, MAP_GOLDENROD_DEPT_STORE_5F
 	warp_def $0, $2, 1, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 	warp_def $0, $d, 1, GROUP_GOLDENROD_DEPT_STORE_ROOF, MAP_GOLDENROD_DEPT_STORE_ROOF
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 0, 14, $0, GoldenrodDeptStore6FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore6FElevatorButton
-	signpost 1, 8, $1, GoldenrodVendingMachine
-	signpost 1, 9, $1, GoldenrodVendingMachine
-	signpost 1, 10, $1, GoldenrodVendingMachine
-	signpost 1, 11, $1, GoldenrodVendingMachine
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore6FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore6FElevatorButton
+	signpost 1, 8, SIGNPOST_UP, GoldenrodVendingMachine
+	signpost 1, 9, SIGNPOST_UP, GoldenrodVendingMachine
+	signpost 1, 10, SIGNPOST_UP, GoldenrodVendingMachine
+	signpost 1, 11, SIGNPOST_UP, GoldenrodVendingMachine
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_LASS, 6, 14, $5, $1, 255, 255, $a0, 0, LassScript_0x564bf, -1
-	person_event SPRITE_SUPER_NERD, 6, 12, $7, $0, 255, 255, $80, 0, SuperNerdScript_0x564c2, -1
+	person_event SPRITE_LASS, 6, 14, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x564bf, -1
+	person_event SPRITE_SUPER_NERD, 6, 12, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x564c2, -1
--- a/maps/GoldenrodDeptStoreB1F.asm
+++ b/maps/GoldenrodDeptStoreB1F.asm
@@ -1,8 +1,8 @@
 GoldenrodDeptStoreB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -12,7 +12,7 @@
 	dbw 5, UnknownScript_0x7d7ac
 
 UnknownScript_0x7d781:
-	checkevent EVENT_04A
+	checkevent EVENT_RECEIVED_CARD_KEY
 	iftrue UnknownScript_0x7d78a
 	jump UnknownScript_0x7d791
 
@@ -107,25 +107,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $2, $11, 3, GROUP_UNDERGROUND_WAREHOUSE, MAP_UNDERGROUND_WAREHOUSE
 	warp_def $4, $9, 1, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 	warp_def $4, $a, 2, GROUP_GOLDENROD_DEPT_STORE_ELEVATOR, MAP_GOLDENROD_DEPT_STORE_ELEVATOR
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_POKE_BALL, 19, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c3, EVENT_675
-	person_event SPRITE_POKE_BALL, 6, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c5, EVENT_676
-	person_event SPRITE_POKE_BALL, 7, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c7, EVENT_677
-	person_event SPRITE_POKE_BALL, 19, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c9, EVENT_678
-	person_event SPRITE_BLACK_BELT, 14, 13, $4, $10, 255, 255, $a0, 0, BlackBeltScript_0x7d7b0, -1
-	person_event SPRITE_BLACK_BELT, 12, 8, $3, $0, 255, 255, $80, 0, BlackBeltScript_0x7d7b3, -1
-	person_event SPRITE_BLACK_BELT, 17, 10, $5, $1, 255, 255, $90, 0, BlackBeltScript_0x7d7b6, -1
-	person_event SPRITE_MACHOP, 11, 11, $16, $0, 255, 255, $90, 0, MachopScript_0x7d7b9, -1
+	person_event SPRITE_POKE_BALL, 19, 14, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c3, EVENT_GOLDENROD_DEPT_STORE_B1F_ETHER
+	person_event SPRITE_POKE_BALL, 6, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c5, EVENT_GOLDENROD_DEPT_STORE_B1F_AMULET_COIN
+	person_event SPRITE_POKE_BALL, 7, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c7, EVENT_GOLDENROD_DEPT_STORE_B1F_BURN_HEAL
+	person_event SPRITE_POKE_BALL, 19, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c9, EVENT_GOLDENROD_DEPT_STORE_B1F_ULTRA_BALL
+	person_event SPRITE_BLACK_BELT, 14, 13, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BlackBeltScript_0x7d7b0, -1
+	person_event SPRITE_BLACK_BELT, 12, 8, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, BlackBeltScript_0x7d7b3, -1
+	person_event SPRITE_BLACK_BELT, 17, 10, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BlackBeltScript_0x7d7b6, -1
+	person_event SPRITE_MACHOP, 11, 11, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, MachopScript_0x7d7b9, -1
--- a/maps/GoldenrodDeptStoreElevator.asm
+++ b/maps/GoldenrodDeptStoreElevator.asm
@@ -1,8 +1,8 @@
 GoldenrodDeptStoreElevator_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MapGoldenrodDeptStoreElevatorSignpost0Script:
@@ -60,17 +60,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $1, 255, GROUP_GOLDENROD_DEPT_STORE_1F, MAP_GOLDENROD_DEPT_STORE_1F
 	warp_def $3, $2, 255, GROUP_GOLDENROD_DEPT_STORE_1F, MAP_GOLDENROD_DEPT_STORE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 0, 3, $0, MapGoldenrodDeptStoreElevatorSignpost0Script
+	signpost 0, 3, SIGNPOST_READ, MapGoldenrodDeptStoreElevatorSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/GoldenrodDeptStoreRoof.asm
+++ b/maps/GoldenrodDeptStoreRoof.asm
@@ -1,36 +1,36 @@
 GoldenrodDeptStoreRoof_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
 
-	dbw 1, UnknownScript_0x5671b
+	dbw 1, .CheckSaleChangeBlock
 
-	dbw 2, UnknownScript_0x5672b
+	dbw 2, .CheckSaleChangeClerk
 
-UnknownScript_0x5671b:
+.CheckSaleChangeBlock:
 	checkflag ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
-	iftrue UnknownScript_0x56722
+	iftrue .ChangeBlock
 	return
 
-UnknownScript_0x56722:
+.ChangeBlock:
 	changeblock $0, $2, $3f
 	changeblock $0, $4, $f
 	return
 
-UnknownScript_0x5672b:
+.CheckSaleChangeClerk:
 	checkflag ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
-	iftrue UnknownScript_0x56738
-	setevent EVENT_6F0
-	clearevent EVENT_6F1
+	iftrue .ChangeClerk
+	setevent EVENT_GOLDENROD_SALE_OFF
+	clearevent EVENT_GOLDENROD_SALE_ON
 	return
 
-UnknownScript_0x56738:
-	clearevent EVENT_6F0
-	setevent EVENT_6F1
+.ChangeClerk:
+	clearevent EVENT_GOLDENROD_SALE_OFF
+	setevent EVENT_GOLDENROD_SALE_ON
 	return
 
 ClerkScript_0x5673f:
@@ -209,27 +209,27 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $1, $d, 3, GROUP_GOLDENROD_DEPT_STORE_6F, MAP_GOLDENROD_DEPT_STORE_6F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 3, 15, $3, MapGoldenrodDeptStoreRoofSignpost0Script
-	signpost 5, 15, $3, MapGoldenrodDeptStoreRoofSignpost1Script
-	signpost 6, 15, $3, MapGoldenrodDeptStoreRoofSignpost2Script
-	signpost 0, 3, $1, MapGoldenrodDeptStoreRoofSignpost3Script
+	signpost 3, 15, SIGNPOST_RIGHT, MapGoldenrodDeptStoreRoofSignpost0Script
+	signpost 5, 15, SIGNPOST_RIGHT, MapGoldenrodDeptStoreRoofSignpost1Script
+	signpost 6, 15, SIGNPOST_RIGHT, MapGoldenrodDeptStoreRoofSignpost2Script
+	signpost 0, 3, SIGNPOST_UP, MapGoldenrodDeptStoreRoofSignpost3Script
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_CLERK, 8, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x5673f, EVENT_6F0
-	person_event SPRITE_POKEFAN_F, 7, 14, $5, $1, 255, 255, $80, 0, PokefanFScript_0x56746, -1
-	person_event SPRITE_FISHER, 5, 6, $7, $0, 255, 255, $90, 0, FisherScript_0x56749, -1
-	person_event SPRITE_TWIN, 8, 7, $2, $11, 255, 255, $a0, 0, TwinScript_0x56754, EVENT_6F1
-	person_event SPRITE_SUPER_NERD, 10, 18, $9, $0, 255, 255, $a0, 0, SuperNerdScript_0x56757, EVENT_6F1
-	person_event SPRITE_POKEFAN_M, 4, 11, $5, $1, 255, 255, $0, 0, PokefanMScript_0x5676a, EVENT_6F0
-	person_event SPRITE_TEACHER, 7, 9, $2, $11, 255, 255, $a0, 0, TeacherScript_0x5676d, EVENT_6F0
-	person_event SPRITE_BUG_CATCHER, 10, 5, $7, $0, 255, 255, $80, 0, BugCatcherScript_0x56770, EVENT_6F0
+	person_event SPRITE_CLERK, 8, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x5673f, EVENT_GOLDENROD_SALE_OFF
+	person_event SPRITE_POKEFAN_F, 7, 14, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x56746, -1
+	person_event SPRITE_FISHER, 5, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x56749, -1
+	person_event SPRITE_TWIN, 8, 7, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x56754, EVENT_GOLDENROD_SALE_ON
+	person_event SPRITE_SUPER_NERD, 10, 18, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x56757, EVENT_GOLDENROD_SALE_ON
+	person_event SPRITE_POKEFAN_M, 4, 11, OW_UP | $1, $1, -1, -1, $0, 0, PokefanMScript_0x5676a, EVENT_GOLDENROD_SALE_OFF
+	person_event SPRITE_TEACHER, 7, 9, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x5676d, EVENT_GOLDENROD_SALE_OFF
+	person_event SPRITE_BUG_CATCHER, 10, 5, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x56770, EVENT_GOLDENROD_SALE_OFF
--- a/maps/GoldenrodFlowerShop.asm
+++ b/maps/GoldenrodFlowerShop.asm
@@ -1,8 +1,8 @@
 GoldenrodFlowerShop_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x5535d:
@@ -12,7 +12,7 @@
 	iftrue UnknownScript_0x55399
 	checkevent EVENT_MET_FLORIA
 	iffalse UnknownScript_0x5539f
-	checkevent EVENT_0BA
+	checkevent EVENT_TALKED_TO_FLORIA_AT_FLOWER_SHOP
 	iffalse UnknownScript_0x5538f
 	checkflag ENGINE_PLAINBADGE
 	iffalse UnknownScript_0x5539c
@@ -24,7 +24,7 @@
 	setevent EVENT_GOT_SQUIRTBOTTLE
 	loadmovesprites
 	setevent EVENT_FLORIA_AT_SUDOWOODO
-	clearevent EVENT_768
+	clearevent EVENT_FLORIA_AT_FLOWER_SHOP
 	end
 
 UnknownScript_0x5538f:
@@ -54,8 +54,8 @@
 	writetext UnknownText_0x55561
 	closetext
 	loadmovesprites
-	setevent EVENT_0BA
-	setevent EVENT_768
+	setevent EVENT_TALKED_TO_FLORIA_AT_FLOWER_SHOP
+	setevent EVENT_FLORIA_AT_FLOWER_SHOP
 	clearevent EVENT_FLORIA_AT_SUDOWOODO
 	end
 
@@ -159,18 +159,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $3, 6, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_TEACHER, 8, 6, $9, $0, 255, 255, $0, 0, TeacherScript_0x5535d, -1
-	person_event SPRITE_LASS, 10, 9, $2, $11, 255, 255, $90, 0, LassScript_0x553a2, EVENT_768
+	person_event SPRITE_TEACHER, 8, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, TeacherScript_0x5535d, -1
+	person_event SPRITE_LASS, 10, 9, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x553a2, EVENT_FLORIA_AT_FLOWER_SHOP
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -1,8 +1,8 @@
 GoldenrodGameCorner_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -22,7 +22,7 @@
 	return
 
 UnknownScript_0x56c11:
-	checkflag ENGINE_5E
+	checkflag ENGINE_DAILY_MOVE_TUTOR
 	iftrue UnknownScript_0x56c19
 	disappear $d
 UnknownScript_0x56c19: ;0x56c19
@@ -175,7 +175,7 @@
 	writetext UnknownText_0x56ebd
 	closetext
 	writebyte ABRA
-	special Functionc230
+	special Special_GameCornerPrizeMonCheckDex
 	givepoke ABRA, 5, 0, 0
 	takecoins 100
 	jump UnknownScript_0x56d0c
@@ -193,7 +193,7 @@
 	writetext UnknownText_0x56ebd
 	closetext
 	writebyte CUBONE
-	special Functionc230
+	special Special_GameCornerPrizeMonCheckDex
 	givepoke CUBONE, 15, 0, 0
 	takecoins 800
 	jump UnknownScript_0x56d0c
@@ -211,7 +211,7 @@
 	writetext UnknownText_0x56ebd
 	closetext
 	writebyte WOBBUFFET
-	special Functionc230
+	special Special_GameCornerPrizeMonCheckDex
 	givepoke WOBBUFFET, 15, 0, 0
 	takecoins 1500
 	jump UnknownScript_0x56d0c
@@ -292,7 +292,7 @@
 	if_equal $0, MapGoldenrodGameCornerSignpost7Script
 	refreshscreen $0
 	writebyte $0
-	special Functionc373
+	special Special_SlotMachine
 	loadmovesprites
 	end
 
@@ -299,13 +299,13 @@
 MapGoldenrodGameCornerSignpost7Script:
 	refreshscreen $0
 	writebyte $1
-	special Functionc373
+	special Special_SlotMachine
 	loadmovesprites
 	end
 
 MapGoldenrodGameCornerSignpost29Script:
 	refreshscreen $0
-	special Functionc380
+	special Special_CardFlip
 	loadmovesprites
 	end
 
@@ -435,59 +435,59 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $d, $2, 10, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $d, $3, 10, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 31
-	signpost 6, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 8, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 6, $3, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 7, $0, MapGoldenrodGameCornerSignpost7Script
-	signpost 8, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 7, $4, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 8, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 12, $3, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 7, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 8, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 9, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 10, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 11, 13, $4, MapGoldenrodGameCornerSignpost29Script
-	signpost 6, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 7, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 8, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 9, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 10, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 11, 18, $3, MapGoldenrodGameCornerSignpost29Script
-	signpost 1, 12, $4, MapGoldenrodGameCornerSignpost30Script
+	signpost 6, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 7, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 8, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 9, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 10, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 11, 6, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost17Script
+	signpost 6, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 7, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost7Script
+	signpost 8, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 9, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 10, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 11, 7, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost17Script
+	signpost 6, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 7, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 8, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 9, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 10, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 11, 12, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost17Script
+	signpost 6, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 7, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 8, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 9, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 10, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 11, 13, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost29Script
+	signpost 6, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 7, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 8, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 9, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 10, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 11, 18, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost29Script
+	signpost 1, 12, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost30Script
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_CLERK, 6, 7, $6, $0, 255, 255, $80, 0, ClerkScript_0x56c25, -1
-	person_event SPRITE_RECEPTIONIST, 6, 20, $6, $0, 255, 255, $80, 0, ReceptionistScript_0x56c28, -1
-	person_event SPRITE_RECEPTIONIST, 6, 22, $6, $0, 255, 255, $80, 0, ReceptionistScript_0x56d01, -1
-	person_event SPRITE_PHARMACIST, 11, 12, $8, $0, 255, 2, $90, 0, PharmacistScript_0x56df1, -1
-	person_event SPRITE_PHARMACIST, 11, 12, $8, $0, 255, 4, $90, 0, PharmacistScript_0x56df1, -1
-	person_event SPRITE_POKEFAN_M, 14, 15, $9, $0, 255, 255, $b0, 0, PokefanMScript_0x56dfc, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 18, $8, $0, 255, 255, $90, 0, CooltrainerMScript_0x56e07, -1
-	person_event SPRITE_POKEFAN_F, 10, 21, $9, $0, 255, 255, $80, 0, PokefanFScript_0x56e12, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 14, $2, $12, 255, 255, $a0, 0, CooltrainerFScript_0x56e1d, -1
-	person_event SPRITE_GENTLEMAN, 14, 9, $9, $0, 255, 255, $90, 0, GentlemanScript_0x56e20, -1
-	person_event SPRITE_POKEFAN_M, 13, 6, $2, $11, 255, 255, $b0, 0, PokefanMScript_0x56e2b, -1
-	person_event SPRITE_POKEFAN_M, 14, 21, $9, $0, 255, 255, $80, 0, PokefanMScript_0x56c1a, EVENT_76B
+	person_event SPRITE_CLERK, 6, 7, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ClerkScript_0x56c25, -1
+	person_event SPRITE_RECEPTIONIST, 6, 20, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x56c28, -1
+	person_event SPRITE_RECEPTIONIST, 6, 22, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x56d01, -1
+	person_event SPRITE_PHARMACIST, 11, 12, OW_LEFT | $0, $0, -1, 2, (PAL_OW_BLUE << 4) | $80, 0, PharmacistScript_0x56df1, -1
+	person_event SPRITE_PHARMACIST, 11, 12, OW_LEFT | $0, $0, -1, 4, (PAL_OW_BLUE << 4) | $80, 0, PharmacistScript_0x56df1, -1
+	person_event SPRITE_POKEFAN_M, 14, 15, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x56dfc, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 18, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerMScript_0x56e07, -1
+	person_event SPRITE_POKEFAN_F, 10, 21, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x56e12, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 14, OW_DOWN | $2, $12, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x56e1d, -1
+	person_event SPRITE_GENTLEMAN, 14, 9, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GentlemanScript_0x56e20, -1
+	person_event SPRITE_POKEFAN_M, 13, 6, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x56e2b, -1
+	person_event SPRITE_POKEFAN_M, 14, 21, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x56c1a, EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -1,5 +1,5 @@
 GoldenrodGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x5400a, $0000
 	dw UnknownScript_0x5400b, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x5400a:
@@ -87,24 +87,8 @@
 	jumpstd radiotowerrockets
 
 TrainerLassCarrie:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_CARRIE
+	trainer EVENT_BEAT_LASS_CARRIE, LASS, CARRIE, LassCarrieSeenText, LassCarrieBeatenText, $0000, LassCarrieScript
 
-	; trainer group && trainer id
-	db LASS, CARRIE
-
-	; text when seen
-	dw LassCarrieSeenText
-
-	; text when trainer beaten
-	dw LassCarrieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassCarrieScript
-
 LassCarrieScript:
 	talkaftercancel
 	loadfont
@@ -114,7 +98,7 @@
 	end
 
 WhitneyCriesScript:
-	showemote $0, $4, 15
+	showemote EMOTE_SHOCK, $4, 15
 	applymovement $4, BridgetWalksUpMovement
 	spriteface $0, DOWN
 	loadfont
@@ -127,24 +111,8 @@
 	end
 
 TrainerLassBridget:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_BRIDGET
+	trainer EVENT_BEAT_LASS_BRIDGET, LASS, BRIDGET, LassBridgetSeenText, LassBridgetBeatenText, $0000, LassBridgetScript
 
-	; trainer group && trainer id
-	db LASS, BRIDGET
-
-	; text when seen
-	dw LassBridgetSeenText
-
-	; text when trainer beaten
-	dw LassBridgetBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassBridgetScript
-
 LassBridgetScript:
 	talkaftercancel
 	loadfont
@@ -154,24 +122,8 @@
 	end
 
 TrainerBeautyVictoria:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_VICTORIA
+	trainer EVENT_BEAT_BEAUTY_VICTORIA, BEAUTY, VICTORIA, BeautyVictoriaSeenText, BeautyVictoriaBeatenText, $0000, BeautyVictoriaScript
 
-	; trainer group && trainer id
-	db BEAUTY, VICTORIA
-
-	; text when seen
-	dw BeautyVictoriaSeenText
-
-	; text when trainer beaten
-	dw BeautyVictoriaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyVictoriaScript
-
 BeautyVictoriaScript:
 	talkaftercancel
 	loadfont
@@ -181,24 +133,8 @@
 	end
 
 TrainerBeautySamantha:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_SAMANTHA
+	trainer EVENT_BEAT_BEAUTY_SAMANTHA, BEAUTY, SAMANTHA, BeautySamanthaSeenText, BeautySamanthaBeatenText, $0000, BeautySamanthaScript
 
-	; trainer group && trainer id
-	db BEAUTY, SAMANTHA
-
-	; text when seen
-	dw BeautySamanthaSeenText
-
-	; text when trainer beaten
-	dw BeautySamanthaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautySamanthaScript
-
 BeautySamanthaScript:
 	talkaftercancel
 	loadfont
@@ -441,25 +377,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $2, 1, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $11, $3, 1, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 1, $5, $8, $0, WhitneyCriesScript, $0, $0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 1, $0, GoldenrodGymStatue
-	signpost 15, 4, $0, GoldenrodGymStatue
+	signpost 15, 1, SIGNPOST_READ, GoldenrodGymStatue
+	signpost 15, 4, SIGNPOST_READ, GoldenrodGymStatue
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_WHITNEY, 7, 12, $6, $0, 255, 255, $80, 0, WhitneyScript_0x5400c, -1
-	person_event SPRITE_LASS, 17, 13, $9, $0, 255, 255, $92, 4, TrainerLassCarrie, -1
-	person_event SPRITE_LASS, 10, 13, $8, $0, 255, 255, $92, 1, TrainerLassBridget, -1
-	person_event SPRITE_BUENA, 6, 4, $6, $0, 255, 255, $92, 3, TrainerBeautyVictoria, -1
-	person_event SPRITE_BUENA, 9, 23, $6, $0, 255, 255, $92, 3, TrainerBeautySamantha, -1
-	person_event SPRITE_GYM_GUY, 19, 9, $6, $0, 255, 255, $80, 0, GoldenrodGymGuyScript, -1
+	person_event SPRITE_WHITNEY, 7, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, WhitneyScript_0x5400c, -1
+	person_event SPRITE_LASS, 17, 13, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerLassCarrie, -1
+	person_event SPRITE_LASS, 10, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerLassBridget, -1
+	person_event SPRITE_BUENA, 6, 4, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBeautyVictoria, -1
+	person_event SPRITE_BUENA, 9, 23, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBeautySamantha, -1
+	person_event SPRITE_GYM_GUY, 19, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GoldenrodGymGuyScript, -1
--- a/maps/GoldenrodHappinessRater.asm
+++ b/maps/GoldenrodHappinessRater.asm
@@ -1,14 +1,14 @@
 GoldenrodHappinessRater_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x54953:
 	faceplayer
 	loadfont
-	special Function718d
+	special GetFirstPokemonHappiness
 	writetext UnknownText_0x549a3
 	keeptextopen
 	if_greater_than $f9, UnknownScript_0x54973
@@ -135,22 +135,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $3, 3, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, HappinessRatersHouseBookshelf
-	signpost 1, 1, $0, HappinessRatersHouseBookshelf
-	signpost 1, 7, $0, HappinessRatersHouseRadio
+	signpost 1, 0, SIGNPOST_READ, HappinessRatersHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, HappinessRatersHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, HappinessRatersHouseRadio
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_TEACHER, 8, 6, $6, $0, 255, 255, $90, 0, TeacherScript_0x54953, -1
-	person_event SPRITE_POKEFAN_M, 7, 9, $8, $0, 255, 255, $0, 0, PokefanMScript_0x54997, -1
-	person_event SPRITE_TWIN, 10, 9, $5, $1, 255, 255, $a0, 0, TwinScript_0x5499a, -1
+	person_event SPRITE_TEACHER, 8, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x54953, -1
+	person_event SPRITE_POKEFAN_M, 7, 9, OW_LEFT | $0, $0, -1, -1, $0, 0, PokefanMScript_0x54997, -1
+	person_event SPRITE_TWIN, 10, 9, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x5499a, -1
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -1,11 +1,11 @@
 GoldenrodMagnetTrainStation_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x550eb, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x550eb:
@@ -33,7 +33,7 @@
 	applymovement $2, MovementData_0x55146
 	applymovement $0, MovementData_0x5514f
 	writebyte $0
-	special Function8cc04
+	special Special_MagnetTrain
 	warpcheck
 	newloadmap $f9
 	applymovement $0, MovementData_0x55122
@@ -166,7 +166,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $11, $8, 5, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $11, $9, 5, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
@@ -173,14 +173,14 @@
 	warp_def $5, $6, 4, GROUP_SAFFRON_TRAIN_STATION, MAP_SAFFRON_TRAIN_STATION
 	warp_def $5, $b, 3, GROUP_SAFFRON_TRAIN_STATION, MAP_SAFFRON_TRAIN_STATION
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $6, $b, $0, UnknownScript_0x55130, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 13, 13, $6, $0, 255, 255, $0, 0, OfficerScript_0x550ec, -1
-	person_event SPRITE_GENTLEMAN, 18, 15, $2, $22, 255, 255, $0, 0, GentlemanScript_0x55143, EVENT_749
+	person_event SPRITE_OFFICER, 13, 13, OW_UP | $2, $0, -1, -1, $0, 0, OfficerScript_0x550ec, -1
+	person_event SPRITE_GENTLEMAN, 18, 15, OW_DOWN | $2, $22, -1, -1, $0, 0, GentlemanScript_0x55143, EVENT_GOLDENROD_TRAIN_STATION_GENTLEMAN
--- a/maps/GoldenrodNameRatersHouse.asm
+++ b/maps/GoldenrodNameRatersHouse.asm
@@ -1,8 +1,8 @@
 GoldenrodNameRatersHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GentlemanScript_0x5577c:
@@ -25,20 +25,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 8, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $3, 8, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, GoldenrodNameRatersHouseBookshelf
-	signpost 1, 1, $0, GoldenrodNameRatersHouseBookshelf
-	signpost 1, 7, $0, GoldenrodNameRatersHouseRadio
+	signpost 1, 0, SIGNPOST_READ, GoldenrodNameRatersHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, GoldenrodNameRatersHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, GoldenrodNameRatersHouseRadio
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GENTLEMAN, 8, 6, $6, $2, 255, 255, $0, 0, GentlemanScript_0x5577c, -1
+	person_event SPRITE_GENTLEMAN, 8, 6, OW_UP | $2, $2, -1, -1, $0, 0, GentlemanScript_0x5577c, -1
--- a/maps/GoldenrodPPSpeechHouse.asm
+++ b/maps/GoldenrodPPSpeechHouse.asm
@@ -1,8 +1,8 @@
 GoldenrodPPSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FisherScript_0x5564a:
@@ -51,21 +51,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 7, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $3, 7, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, GoldenrodPPSpeechHouseBookshelf1
-	signpost 1, 1, $0, GoldenrodPPSpeechHouseBookshelf2
-	signpost 1, 7, $0, GoldenrodPPSpeechHouseRadio
+	signpost 1, 0, SIGNPOST_READ, GoldenrodPPSpeechHouseBookshelf1
+	signpost 1, 1, SIGNPOST_READ, GoldenrodPPSpeechHouseBookshelf2
+	signpost 1, 7, SIGNPOST_READ, GoldenrodPPSpeechHouseRadio
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_FISHER, 8, 6, $4, $10, 255, 255, $a0, 0, FisherScript_0x5564a, -1
-	person_event SPRITE_LASS, 7, 9, $8, $10, 255, 255, $0, 0, LassScript_0x5564d, -1
+	person_event SPRITE_FISHER, 8, 6, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x5564a, -1
+	person_event SPRITE_LASS, 7, 9, OW_LEFT | $0, $10, -1, -1, $0, 0, LassScript_0x5564d, -1
--- a/maps/GoldenrodPokeCenter1F.asm
+++ b/maps/GoldenrodPokeCenter1F.asm
@@ -1,8 +1,8 @@
 GoldenrodPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x60f91:
@@ -801,7 +801,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $7, $3, 15, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $4, 15, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
@@ -808,18 +808,18 @@
 	warp_def $6, $0, 1, GROUP_GOLDENROD_POKECOM_CENTER_2F_MOBILE, MAP_GOLDENROD_POKECOM_CENTER_2F_MOBILE
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $7, $3, $0, UnknownScript_0x60f94, $0, $0
 	xy_trigger 0, $7, $4, $0, UnknownScript_0x60fd9, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x60f91, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 12, 20, $6, $0, 255, 255, $90, 0, ObjectEvent, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 10, $6, $0, 255, 255, $a0, 0, GameboyKidScript_0x6101e, -1
-	person_event SPRITE_LASS, 8, 5, $5, $1, 255, 255, $0, 0, LassScript_0x61021, -1
-	person_event SPRITE_POKEFAN_F, 9, 11, $6, $0, 255, 255, $b0, 0, PokefanFScript_0x61024, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x60f91, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 12, 20, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GameboyKidScript_0x6101e, -1
+	person_event SPRITE_LASS, 8, 5, OW_UP | $1, $1, -1, -1, $0, 0, LassScript_0x61021, -1
+	person_event SPRITE_POKEFAN_F, 9, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanFScript_0x61024, -1
--- a/maps/GoldenrodPokeComCenter2FMobile.asm
+++ b/maps/GoldenrodPokeComCenter2FMobile.asm
@@ -1,8 +1,8 @@
 GoldenrodPokeComCenter2FMobile_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ScientistScript_0x625d1:
@@ -99,8 +99,8 @@
 MenuData2_0x62654:
 	db $80 ; flags
 	db 3 ; items
-	db "でんわ",$1f,"つかうとき@" ; Use phone
-	db "でんわ",$4a,"つながらないとき@" ; Don't use phone
+	db "でんわ", $1f,"つかうとき@" ; Use phone
+	db "でんわ", $4a,"つながらないとき@" ; Don't use phone
 	db "やめる@" ; QUIT
 
 
@@ -267,22 +267,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $1f, $0, 3, GROUP_GOLDENROD_POKECENTER_1F, MAP_GOLDENROD_POKECENTER_1F
 	warp_def $1f, $1, 3, GROUP_GOLDENROD_POKECENTER_1F, MAP_GOLDENROD_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 26, 6, $1, MapGoldenrodPokeComCenter2FMobileSignpost0Script
-	signpost 28, 6, $1, MapGoldenrodPokeComCenter2FMobileSignpost1Script
-	signpost 26, 3, $1, MapGoldenrodPokeComCenter2FMobileSignpost2Script
+	signpost 26, 6, SIGNPOST_UP, MapGoldenrodPokeComCenter2FMobileSignpost0Script
+	signpost 28, 6, SIGNPOST_UP, MapGoldenrodPokeComCenter2FMobileSignpost1Script
+	signpost 26, 3, SIGNPOST_UP, MapGoldenrodPokeComCenter2FMobileSignpost2Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_SCIENTIST, 32, 8, $4, $10, 255, 255, $80, 0, ScientistScript_0x625d1, -1
-	person_event SPRITE_SCIENTIST, 31, 11, $7, $0, 255, 255, $90, 0, ScientistScript_0x625d4, -1
-	person_event SPRITE_SCIENTIST, 33, 11, $7, $0, 255, 255, $a0, 0, ScientistScript_0x625d7, -1
+	person_event SPRITE_SCIENTIST, 32, 8, OW_UP | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, ScientistScript_0x625d1, -1
+	person_event SPRITE_SCIENTIST, 31, 11, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x625d4, -1
+	person_event SPRITE_SCIENTIST, 33, 11, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ScientistScript_0x625d7, -1
--- a/maps/GuideGentsHouse.asm
+++ b/maps/GuideGentsHouse.asm
@@ -1,8 +1,8 @@
 GuideGentsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GuideGentsHouseGuideGent:
@@ -28,19 +28,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 	warp_def $7, $3, 4, GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, GuideGentsHouseBookshelf
-	signpost 1, 1, $0, GuideGentsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, GuideGentsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, GuideGentsHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GRAMPS, 7, 6, $9, $0, 255, 255, $0, 0, GuideGentsHouseGuideGent, EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
+	person_event SPRITE_GRAMPS, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, GuideGentsHouseGuideGent, EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
--- a/maps/HallOfFame.asm
+++ b/maps/HallOfFame.asm
@@ -1,52 +1,52 @@
 HallOfFame_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x18144f, $0000
-	dw UnknownScript_0x181453, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
-UnknownScript_0x18144f:
-	priorityjump UnknownScript_0x181454
+.Trigger1:
+	priorityjump HallOfFameScript
 	end
 
-UnknownScript_0x181453:
+.Trigger2:
 	end
 
-UnknownScript_0x181454:
+HallOfFameScript:
 	follow $2, $0
-	applymovement $2, MovementData_0x181499
+	applymovement $2, HallOfFame_WalkUpWithLance
 	stopfollow
 	spriteface $0, RIGHT
 	loadfont
-	writetext UnknownText_0x1814a6
+	writetext HallOfFame_LanceText
 	closetext
 	loadmovesprites
 	spriteface $2, UP
-	applymovement $0, MovementData_0x1814a4
+	applymovement $0, HallOfFame_SlowlyApproachMachine
 	dotrigger $1
 	pause 15
-	writebyte $2
+	writebyte 2 ; Machine is in the Hall of Fame
 	special HealMachineAnim
 	setevent EVENT_BEAT_ELITE_FOUR
 	setevent EVENT_TELEPORT_GUY
 	setevent EVENT_RIVAL_SPROUT_TOWER
 	clearevent EVENT_RED_IN_MT_SILVER
-	setevent EVENT_737
-	clearevent EVENT_738
+	setevent EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	clearevent EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
 	domaptrigger GROUP_SPROUT_TOWER_3F, MAP_SPROUT_TOWER_3F, $1
 	special HealParty
 	checkevent EVENT_GOT_SS_TICKET_FROM_ELM
-	iftrue UnknownScript_0x181497
-	specialphonecall $5
-UnknownScript_0x181497:
+	iftrue .SkipPhoneCall
+	specialphonecall ELMCALL_SSTICKET
+.SkipPhoneCall:
 	halloffame
 	end
 
-MovementData_0x181499:
+HallOfFame_WalkUpWithLance:
 	step_up
 	step_up
 	step_up
@@ -59,11 +59,11 @@
 	turn_head_left
 	step_end
 
-MovementData_0x1814a4:
+HallOfFame_SlowlyApproachMachine:
 	slow_step_up
 	step_end
 
-UnknownText_0x1814a6:
+HallOfFame_LanceText:
 	text "LANCE: It's been a"
 	line "long time since I"
 	cont "last came here."
@@ -113,17 +113,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $d, $4, 3, GROUP_LANCES_ROOM, MAP_LANCES_ROOM
 	warp_def $d, $5, 4, GROUP_LANCES_ROOM, MAP_LANCES_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_LANCE, 16, 8, $7, $0, 255, 255, $0, 0, ObjectEvent, -1
+	person_event SPRITE_LANCE, 16, 8, OW_UP | $3, $0, -1, -1, PAL_OW_RED << 4 | $0, 0, ObjectEvent, -1
--- a/maps/IcePath1F.asm
+++ b/maps/IcePath1F.asm
@@ -1,8 +1,8 @@
 IcePath1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x7e472:
@@ -18,7 +18,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $13, $4, 1, GROUP_ROUTE_44, MAP_ROUTE_44
 	warp_def $1b, $24, 7, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
@@ -25,14 +25,14 @@
 	warp_def $5, $25, 1, GROUP_ICE_PATH_B1F, MAP_ICE_PATH_B1F
 	warp_def $d, $25, 7, GROUP_ICE_PATH_B1F, MAP_ICE_PATH_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 11, 35, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e472, EVENT_688
-	person_event SPRITE_POKE_BALL, 27, 36, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e474, EVENT_689
-	person_event SPRITE_POKE_BALL, 13, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e476, EVENT_7BE
+	person_event SPRITE_POKE_BALL, 11, 35, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e472, EVENT_GOT_HM07_WATERFALL
+	person_event SPRITE_POKE_BALL, 27, 36, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e474, EVENT_ICE_PATH_1F_PP_UP
+	person_event SPRITE_POKE_BALL, 13, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e476, EVENT_ICE_PATH_1F_PROTEIN
--- a/maps/IcePathB1F.asm
+++ b/maps/IcePathB1F.asm
@@ -1,8 +1,8 @@
 IcePathB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -34,22 +34,22 @@
 
 UnknownScript_0x7e4d8:
 	disappear 2
-	clearevent EVENT_BOULDER_IN_ICE_PATH_1
+	clearevent EVENT_BOULDER_IN_ICE_PATH_1A
 	jump UnknownScript_0x7e4f8
 
 UnknownScript_0x7e4e0:
 	disappear 3
-	clearevent EVENT_BOULDER_IN_ICE_PATH_2
+	clearevent EVENT_BOULDER_IN_ICE_PATH_2A
 	jump UnknownScript_0x7e4f8
 
 UnknownScript_0x7e4e8:
 	disappear 4
-	clearevent EVENT_BOULDER_IN_ICE_PATH_3
+	clearevent EVENT_BOULDER_IN_ICE_PATH_3A
 	jump UnknownScript_0x7e4f8
 
 UnknownScript_0x7e4f0:
 	disappear 5
-	clearevent EVENT_BOULDER_IN_ICE_PATH_4
+	clearevent EVENT_BOULDER_IN_ICE_PATH_4A
 	jump UnknownScript_0x7e4f8
 
 UnknownScript_0x7e4f8:
@@ -74,8 +74,7 @@
 	db IRON, 1
 
 MapIcePathB1FSignpostItem0:
-	dw $0094
-	db MAX_POTION
+	dwb EVENT_ICE_PATH_B1F_HIDDEN_MAX_POTION, MAX_POTION
 
 
 UnknownText_0x7e512:
@@ -88,7 +87,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 8
 	warp_def $f, $3, 3, GROUP_ICE_PATH_1F, MAP_ICE_PATH_1F
 	warp_def $3, $11, 1, GROUP_ICE_PATH_B2F_MAHOGANY_SIDE, MAP_ICE_PATH_B2F_MAHOGANY_SIDE
@@ -99,17 +98,17 @@
 	warp_def $19, $5, 4, GROUP_ICE_PATH_1F, MAP_ICE_PATH_1F
 	warp_def $1b, $b, 1, GROUP_ICE_PATH_B2F_BLACKTHORN_SIDE, MAP_ICE_PATH_B2F_BLACKTHORN_SIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 30, 17, $7, MapIcePathB1FSignpostItem0
+	signpost 30, 17, SIGNPOST_ITEM, MapIcePathB1FSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_BOULDER, 11, 15, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_709
-	person_event SPRITE_BOULDER, 12, 11, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_70A
-	person_event SPRITE_BOULDER, 13, 12, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_70B
-	person_event SPRITE_BOULDER, 11, 21, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_70C
-	person_event SPRITE_POKE_BALL, 39, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e50d, EVENT_68A
+	person_event SPRITE_BOULDER, 11, 15, OW_LEFT | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_1
+	person_event SPRITE_BOULDER, 12, 11, OW_LEFT | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_2
+	person_event SPRITE_BOULDER, 13, 12, OW_LEFT | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_3
+	person_event SPRITE_BOULDER, 11, 21, OW_LEFT | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_4
+	person_event SPRITE_POKE_BALL, 39, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e50d, EVENT_ICE_PATH_B1F_IRON
--- a/maps/IcePathB2FBlackthornSide.asm
+++ b/maps/IcePathB2FBlackthornSide.asm
@@ -1,8 +1,8 @@
 IcePathB2FBlackthornSide_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x7e646:
@@ -9,8 +9,7 @@
 	db TM_REST, 1
 
 MapIcePathB2FBlackthornSideSignpostItem0:
-	dw $0096
-	db ICE_HEAL
+	dwb EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_HIDDEN_ICE_HEAL, ICE_HEAL
 	
 
 IcePathB2FBlackthornSide_MapEventHeader:
@@ -17,18 +16,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $3, 8, GROUP_ICE_PATH_B1F, MAP_ICE_PATH_B1F
 	warp_def $3, $3, 2, GROUP_ICE_PATH_B3F, MAP_ICE_PATH_B3F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 10, 2, $7, MapIcePathB2FBlackthornSideSignpostItem0
+	signpost 10, 2, SIGNPOST_ITEM, MapIcePathB2FBlackthornSideSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 20, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e646, EVENT_68D
+	person_event SPRITE_POKE_BALL, 20, 12, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e646, EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_TM_REST
--- a/maps/IcePathB2FMahoganySide.asm
+++ b/maps/IcePathB2FMahoganySide.asm
@@ -1,8 +1,8 @@
 IcePathB2FMahoganySide_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BoulderScript_0x7e5a3:
@@ -15,8 +15,7 @@
 	db MAX_POTION, 1
 
 MapIcePathB2FMahoganySideSignpostItem0:
-	dw $0095
-	db CARBOS
+	dwb EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_HIDDEN_CARBOS, CARBOS
 	
 
 UnknownText_0x7e5ad:
@@ -28,7 +27,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $1, $11, 2, GROUP_ICE_PATH_B1F, MAP_ICE_PATH_B1F
 	warp_def $b, $9, 1, GROUP_ICE_PATH_B3F, MAP_ICE_PATH_B3F
@@ -37,18 +36,18 @@
 	warp_def $c, $4, 5, GROUP_ICE_PATH_B1F, MAP_ICE_PATH_B1F
 	warp_def $c, $c, 6, GROUP_ICE_PATH_B1F, MAP_ICE_PATH_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 17, 0, $7, MapIcePathB2FMahoganySideSignpostItem0
+	signpost 17, 0, SIGNPOST_ITEM, MapIcePathB2FMahoganySideSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_BOULDER, 7, 15, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_1
-	person_event SPRITE_BOULDER, 11, 8, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2
-	person_event SPRITE_BOULDER, 16, 7, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3
-	person_event SPRITE_BOULDER, 17, 16, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4
-	person_event SPRITE_POKE_BALL, 13, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e5a6, EVENT_68B
-	person_event SPRITE_POKE_BALL, 6, 4, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e5a8, EVENT_68C
+	person_event SPRITE_BOULDER, 7, 15, OW_DOWN | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_1A
+	person_event SPRITE_BOULDER, 11, 8, OW_DOWN | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2A
+	person_event SPRITE_BOULDER, 16, 7, OW_DOWN | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3A
+	person_event SPRITE_BOULDER, 17, 16, OW_DOWN | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4A
+	person_event SPRITE_POKE_BALL, 13, 12, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e5a6, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 6, 4, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e5a8, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_MAX_POTION
--- a/maps/IcePathB3F.asm
+++ b/maps/IcePathB3F.asm
@@ -1,8 +1,8 @@
 IcePathB3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x7e66f:
@@ -15,18 +15,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $5, $3, 2, GROUP_ICE_PATH_B2F_MAHOGANY_SIDE, MAP_ICE_PATH_B2F_MAHOGANY_SIDE
 	warp_def $5, $f, 2, GROUP_ICE_PATH_B2F_BLACKTHORN_SIDE, MAP_ICE_PATH_B2F_BLACKTHORN_SIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 11, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e66f, EVENT_68E
-	person_event SPRITE_ROCK, 10, 10, $18, $0, 255, 255, $0, 0, IcePathB3FRock, -1
+	person_event SPRITE_POKE_BALL, 11, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e66f, EVENT_ICE_PATH_B3F_NEVERMELTICE
+	person_event SPRITE_ROCK, 10, 10, OW_LEFT | $10, $0, -1, -1, $0, 0, IcePathB3FRock, -1
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -1,8 +1,8 @@
 IlexForest_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -293,7 +293,7 @@
 	appear $2
 	loadvar FarfetchdPosition, $a
 	appear $4
-	setevent EVENT_6F7
+	setevent EVENT_CHARCOAL_KILN_BOSS
 	setevent EVENT_HERDED_FARFETCHD
 	end
 
@@ -344,12 +344,12 @@
 	writetext UnknownText_0x6f141
 	closetext
 	loadmovesprites
-	setevent EVENT_6E9
-	setevent EVENT_6F3
-	setevent EVENT_6F4
-	clearevent EVENT_6F5
-	clearevent EVENT_6F6
-	clearevent EVENT_6F7
+	setevent EVENT_ILEX_FOREST_FARFETCHD
+	setevent EVENT_ILEX_FOREST_APPRENTICE
+	setevent EVENT_ILEX_FOREST_CHARCOAL_MASTER
+	clearevent EVENT_CHARCOAL_KILN_FARFETCH_D
+	clearevent EVENT_CHARCOAL_KILN_APPRENTICE
+	clearevent EVENT_CHARCOAL_KILN_BOSS
 	end
 
 UnknownScript_0x6edd8:
@@ -376,24 +376,8 @@
 	end
 
 TrainerBug_catcherWayne:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_WAYNE
+	trainer EVENT_BEAT_BUG_CATCHER_WAYNE, BUG_CATCHER, WAYNE, Bug_catcherWayneSeenText, Bug_catcherWayneBeatenText, $0000, Bug_catcherWayneScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, WAYNE
-
-	; text when seen
-	dw Bug_catcherWayneSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherWayneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherWayneScript
-
 Bug_catcherWayneScript:
 	talkaftercancel
 	loadfont
@@ -418,18 +402,15 @@
 	db ETHER, 1
 
 MapIlexForestSignpostItem1:
-	dw $0088
-	db ETHER
+	dwb EVENT_ILEX_FOREST_HIDDEN_ETHER, ETHER
 	
 
 MapIlexForestSignpostItem2:
-	dw $0089
-	db SUPER_POTION
+	dwb EVENT_ILEX_FOREST_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
 MapIlexForestSignpostItem3:
-	dw $008a
-	db FULL_HEAL
+	dwb EVENT_ILEX_FOREST_HIDDEN_FULL_HEAL, FULL_HEAL
 
 IlexForestBoulder:
 ; unused
@@ -460,14 +441,14 @@
 UnknownScript_0x6ee42:
 	takeitem GS_BALL, 1
 	clearevent EVENT_FOREST_IS_RESTLESS
-	setevent EVENT_7A4
+	setevent EVENT_AZALEA_TOWN_KURT
 	disappear $8
-	clearevent EVENT_6EB
+	clearevent EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
 	writetext UnknownText_0x6f43b
 	closetext
 	loadmovesprites
 	pause 20
-	showemote $0, $0, 20
+	showemote EMOTE_SHOCK, $0, 20
 	special Functionc48f
 	applymovement $0, MovementData_0x6ef58
 	pause 30
@@ -950,33 +931,33 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $5, $1, 3, GROUP_ROUTE_34_ILEX_FOREST_GATE, MAP_ROUTE_34_ILEX_FOREST_GATE
 	warp_def $2a, $3, 1, GROUP_ILEX_FOREST_AZALEA_GATE, MAP_ILEX_FOREST_AZALEA_GATE
 	warp_def $2b, $3, 2, GROUP_ILEX_FOREST_AZALEA_GATE, MAP_ILEX_FOREST_AZALEA_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 17, 3, $0, MapIlexForestSignpost0Script
-	signpost 7, 11, $7, MapIlexForestSignpostItem1
-	signpost 14, 22, $7, MapIlexForestSignpostItem2
-	signpost 17, 1, $7, MapIlexForestSignpostItem3
-	signpost 22, 8, $1, MapIlexForestSignpost4Script
+	signpost 17, 3, SIGNPOST_READ, MapIlexForestSignpost0Script
+	signpost 7, 11, SIGNPOST_ITEM, MapIlexForestSignpostItem1
+	signpost 14, 22, SIGNPOST_ITEM, MapIlexForestSignpostItem2
+	signpost 17, 1, SIGNPOST_ITEM, MapIlexForestSignpostItem3
+	signpost 22, 8, SIGNPOST_UP, MapIlexForestSignpost4Script
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_BIRD, 35, 18, $3, $0, 255, 255, $b0, 0, BirdScript_0x6eb8f, EVENT_6E9
-	person_event SPRITE_YOUNGSTER, 32, 11, $6, $0, 255, 255, $a0, 0, YoungsterScript_0x6eb7b, EVENT_6F3
-	person_event SPRITE_BLACK_BELT, 32, 9, $9, $0, 255, 255, $0, 0, BlackBeltScript_0x6edae, EVENT_6F4
-	person_event SPRITE_ROCKER, 18, 19, $9, $0, 255, 255, $0, 0, RockerScript_0x6edde, -1
-	person_event SPRITE_POKE_BALL, 36, 24, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee10, EVENT_671
-	person_event SPRITE_KURT, 33, 12, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_7A5
-	person_event SPRITE_LASS, 28, 7, $9, $0, 255, 255, $a0, 0, LassScript_0x6ee0d, EVENT_6ED
-	person_event SPRITE_YOUNGSTER, 5, 16, $7, $0, 255, 255, $a2, 0, TrainerBug_catcherWayne, -1
-	person_event SPRITE_POKE_BALL, 21, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee12, EVENT_7B9
-	person_event SPRITE_POKE_BALL, 11, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee14, EVENT_7BA
-	person_event SPRITE_POKE_BALL, 5, 31, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee16, EVENT_7BB
+	person_event SPRITE_BIRD, 35, 18, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BirdScript_0x6eb8f, EVENT_ILEX_FOREST_FARFETCHD
+	person_event SPRITE_YOUNGSTER, 32, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6eb7b, EVENT_ILEX_FOREST_APPRENTICE
+	person_event SPRITE_BLACK_BELT, 32, 9, OW_LEFT | $1, $0, -1, -1, $0, 0, BlackBeltScript_0x6edae, EVENT_ILEX_FOREST_CHARCOAL_MASTER
+	person_event SPRITE_ROCKER, 18, 19, OW_LEFT | $1, $0, -1, -1, $0, 0, RockerScript_0x6edde, -1
+	person_event SPRITE_POKE_BALL, 36, 24, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee10, EVENT_ILEX_FOREST_REVIVE
+	person_event SPRITE_KURT, 33, 12, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_ILEX_FOREST_KURT
+	person_event SPRITE_LASS, 28, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x6ee0d, EVENT_ILEX_FOREST_LASS
+	person_event SPRITE_YOUNGSTER, 5, 16, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerBug_catcherWayne, -1
+	person_event SPRITE_POKE_BALL, 21, 13, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee12, EVENT_ILEX_FOREST_X_ATTACK
+	person_event SPRITE_POKE_BALL, 11, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee14, EVENT_ILEX_FOREST_ANTIDOTE
+	person_event SPRITE_POKE_BALL, 5, 31, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee16, EVENT_ILEX_FOREST_ETHER
--- a/maps/IlexForestAzaleaGate.asm
+++ b/maps/IlexForestAzaleaGate.asm
@@ -1,8 +1,8 @@
 IlexForestAzaleaGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x62c7a:
@@ -30,7 +30,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 2, GROUP_ILEX_FOREST, MAP_ILEX_FOREST
 	warp_def $5, $0, 3, GROUP_ILEX_FOREST, MAP_ILEX_FOREST
@@ -37,13 +37,13 @@
 	warp_def $4, $9, 7, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $5, $9, 8, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x62c7a, -1
-	person_event SPRITE_GRANNY, 7, 5, $6, $0, 255, 255, $b0, 0, GrannyScript_0x62c7d, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x62c7a, -1
+	person_event SPRITE_GRANNY, 7, 5, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrannyScript_0x62c7d, -1
--- a/maps/IndigoPlateauPokeCenter1F.asm
+++ b/maps/IndigoPlateauPokeCenter1F.asm
@@ -1,11 +1,11 @@
 IndigoPlateauPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x180009, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -22,22 +22,22 @@
 	domaptrigger GROUP_KARENS_ROOM, MAP_KARENS_ROOM, $0
 	domaptrigger GROUP_LANCES_ROOM, MAP_LANCES_ROOM, $0
 	domaptrigger GROUP_HALL_OF_FAME, MAP_HALL_OF_FAME, $0
-	clearevent EVENT_309
-	clearevent EVENT_WILLS_ROOM_EXIT_OPEN
 	clearevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_KOGAS_ROOM_EXIT_OPEN
+	clearevent EVENT_WILLS_ROOM_EXIT_OPEN
 	clearevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	clearevent EVENT_KOGAS_ROOM_EXIT_OPEN
+	clearevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	clearevent EVENT_BRUNOS_ROOM_EXIT_OPEN
 	clearevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
 	clearevent EVENT_KARENS_ROOM_EXIT_OPEN
 	clearevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_312
+	clearevent EVENT_LANCES_ROOM_EXIT_OPEN
 	clearevent EVENT_BEAT_ELITE_4_WILL
 	clearevent EVENT_BEAT_ELITE_4_KOGA
 	clearevent EVENT_BEAT_ELITE_4_BRUNO
 	clearevent EVENT_BEAT_ELITE_4_KAREN
 	clearevent EVENT_BEAT_CHAMPION_LANCE
-	setevent EVENT_75F
+	setevent EVENT_LANCES_ROOM_OAK_AND_MARY
 	return
 
 UnknownScript_0x180053:
@@ -54,7 +54,7 @@
 	moveperson $5, $11, $9
 	appear $5
 	spriteface $0, DOWN
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	applymovement $5, MovementData_0x180164
@@ -75,7 +75,7 @@
 	if_equal SATURDAY, UnknownScript_0x18012b
 	appear $5
 	spriteface $0, DOWN
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	applymovement $5, MovementData_0x18016b
@@ -86,7 +86,7 @@
 	writetext UnknownText_0x1801f5
 	closetext
 	loadmovesprites
-	setevent EVENT_77B
+	setevent EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x1800f3
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
@@ -154,7 +154,7 @@
 	closetext
 	loadmovesprites
 	playsound SFX_WARP_TO
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
 	warp GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN, $d, $6
 	end
@@ -302,7 +302,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $d, $5, 1, GROUP_ROUTE_23, MAP_ROUTE_23
 	warp_def $d, $6, 2, GROUP_ROUTE_23, MAP_ROUTE_23
@@ -309,19 +309,19 @@
 	warp_def $d, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $3, $e, 1, GROUP_WILLS_ROOM, MAP_WILLS_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $4, $10, $0, UnknownScript_0x180053, $0, $0
 	xy_trigger 0, $4, $11, $0, UnknownScript_0x180094, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_NURSE, 11, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18012c, -1
-	person_event SPRITE_CLERK, 11, 15, $6, $0, 255, 255, $0, 0, ClerkScript_0x18012f, -1
-	person_event SPRITE_COOLTRAINER_M, 15, 15, $2, $22, 255, 255, $0, 0, CooltrainerMScript_0x180136, -1
-	person_event SPRITE_SILVER, 13, 20, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_77B
-	person_event SPRITE_GRAMPS, 13, 5, $6, $0, 255, 255, $90, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
-	person_event SPRITE_JYNX, 13, 4, $16, $0, 255, 255, $b0, 0, AbraScript, EVENT_TELEPORT_GUY
+	person_event SPRITE_NURSE, 11, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x18012c, -1
+	person_event SPRITE_CLERK, 11, 15, OW_UP | $2, $0, -1, -1, $0, 0, ClerkScript_0x18012f, -1
+	person_event SPRITE_COOLTRAINER_M, 15, 15, OW_DOWN | $2, $22, -1, -1, $0, 0, CooltrainerMScript_0x180136, -1
+	person_event SPRITE_SILVER, 13, 20, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
+	person_event SPRITE_GRAMPS, 13, 5, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
+	person_event SPRITE_JYNX, 13, 4, OW_UP | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, AbraScript, EVENT_TELEPORT_GUY
--- a/maps/KarensRoom.asm
+++ b/maps/KarensRoom.asm
@@ -1,5 +1,5 @@
 KarensRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x180bbc, $0000
 	dw UnknownScript_0x180bc0, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -138,7 +138,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $11, $4, 3, GROUP_BRUNOS_ROOM, MAP_BRUNOS_ROOM
 	warp_def $11, $5, 4, GROUP_BRUNOS_ROOM, MAP_BRUNOS_ROOM
@@ -145,12 +145,12 @@
 	warp_def $2, $4, 1, GROUP_LANCES_ROOM, MAP_LANCES_ROOM
 	warp_def $2, $5, 2, GROUP_LANCES_ROOM, MAP_LANCES_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_KAREN, 11, 9, $6, $0, 255, 255, $80, 0, KarenScript_0x180bee, -1
+	person_event SPRITE_KAREN, 11, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, KarenScript_0x180bee, -1
--- a/maps/KogasRoom.asm
+++ b/maps/KogasRoom.asm
@@ -1,5 +1,5 @@
 KogasRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x180728, $0000
 	dw UnknownScript_0x18072c, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -21,7 +21,7 @@
 	end
 
 UnknownScript_0x18072d:
-	checkevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+	checkevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
 	iffalse UnknownScript_0x180737
 	changeblock $4, $e, $2a
 UnknownScript_0x180737:
@@ -40,7 +40,7 @@
 	reloadmappart
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+	setevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
 	waitbutton
 	end
 
@@ -135,7 +135,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $11, $4, 2, GROUP_WILLS_ROOM, MAP_WILLS_ROOM
 	warp_def $11, $5, 3, GROUP_WILLS_ROOM, MAP_WILLS_ROOM
@@ -142,12 +142,12 @@
 	warp_def $2, $4, 1, GROUP_BRUNOS_ROOM, MAP_BRUNOS_ROOM
 	warp_def $2, $5, 2, GROUP_BRUNOS_ROOM, MAP_BRUNOS_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_KOGA, 11, 9, $6, $0, 255, 255, $90, 0, KogaScript_0x18075a, -1
+	person_event SPRITE_KOGA, 11, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, KogaScript_0x18075a, -1
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -1,5 +1,5 @@
 KrissHouse1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x7a4d6, $0000
 	dw UnknownScript_0x7a4d7, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x7a4d6:
@@ -16,13 +16,13 @@
 	end
 
 UnknownScript_0x7a4d8:
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 
 UnknownScript_0x7a4db:
 	playmusic MUSIC_MOM
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	spriteface $0, LEFT
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x7a4f2
 	applymovement $2, MovementData_0x7a5fc
 	jump UnknownScript_0x7a4f6
@@ -39,11 +39,11 @@
 	setflag ENGINE_PHONE_CARD
 	addcellnum $1
 	dotrigger $1
-	setevent EVENT_6C7
-	clearevent EVENT_6C8
+	setevent EVENT_KRISS_HOUSE_MOM_1
+	clearevent EVENT_KRISS_HOUSE_MOM_2
 	writetext UnknownText_0x7a6bd
 	keeptextopen
-	special Function90913
+	special Special_SetDayOfWeek
 UnknownScript_0x7a519:
 	writetext UnknownText_0x7a742
 	yesorno
@@ -77,9 +77,9 @@
 	writetext UnknownText_0x7a850
 	closetext
 	loadmovesprites
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7a55d
-	checkevent EVENT_001
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iffalse UnknownScript_0x7a564
 	jump UnknownScript_0x7a56b
 
@@ -109,11 +109,11 @@
 
 MomScript_0x7a582:
 	faceplayer
-	setevent EVENT_001
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	checktriggers
 	iffalse UnknownScript_0x7a572
 	loadfont
-	checkevent EVENT_076
+	checkevent EVENT_FIRST_TIME_BANKING_WITH_MOM
 	iftrue UnknownScript_0x7a5af
 	checkevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
 	iftrue UnknownScript_0x7a5b8
@@ -139,10 +139,10 @@
 	end
 
 UnknownScript_0x7a5b5:
-	setevent EVENT_076
+	setevent EVENT_FIRST_TIME_BANKING_WITH_MOM
 UnknownScript_0x7a5b8:
 	setevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
-	special Function16218
+	special Special_BankOfMom
 	closetext
 	loadmovesprites
 	end
@@ -384,28 +384,28 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $6, 2, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 	warp_def $7, $7, 2, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 	warp_def $0, $9, 1, GROUP_KRISS_HOUSE_2F, MAP_KRISS_HOUSE_2F
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $4, $8, $0, UnknownScript_0x7a4d8, $0, $0
 	xy_trigger 0, $4, $9, $0, UnknownScript_0x7a4db, $0, $0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 1, 0, $0, StoveScript
-	signpost 1, 1, $0, SinkScript
-	signpost 1, 2, $0, FridgeScript
-	signpost 1, 4, $0, TVScript
+	signpost 1, 0, SIGNPOST_READ, StoveScript
+	signpost 1, 1, SIGNPOST_READ, SinkScript
+	signpost 1, 2, SIGNPOST_READ, FridgeScript
+	signpost 1, 4, SIGNPOST_READ, TVScript
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_MOM, 8, 11, $8, $0, 255, 255, $0, 0, MomScript_0x7a582, EVENT_6C7
-	person_event SPRITE_MOM, 6, 6, $7, $0, 255, 1, $0, 0, MomScript_0x7a582, EVENT_6C8
-	person_event SPRITE_MOM, 8, 11, $8, $0, 255, 2, $0, 0, MomScript_0x7a582, EVENT_6C8
-	person_event SPRITE_MOM, 6, 4, $7, $0, 255, 4, $0, 0, MomScript_0x7a582, EVENT_6C8
-	person_event SPRITE_POKEFAN_F, 8, 8, $9, $0, 255, 255, $80, 0, NeighborScript, EVENT_792
+	person_event SPRITE_MOM, 8, 11, OW_LEFT | $0, $0, -1, -1, $0, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_1
+	person_event SPRITE_MOM, 6, 6, OW_UP | $3, $0, -1, 1, $0, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
+	person_event SPRITE_MOM, 8, 11, OW_LEFT | $0, $0, -1, 2, $0, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
+	person_event SPRITE_MOM, 6, 4, OW_UP | $3, $0, -1, 4, $0, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
+	person_event SPRITE_POKEFAN_F, 8, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, NeighborScript, EVENT_KRISS_HOUSE_1F_NEIGHBOR
--- a/maps/KrissHouse2F.asm
+++ b/maps/KrissHouse2F.asm
@@ -1,32 +1,32 @@
 KrissHouse2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
 
-	dbw 5, UnknownScript_0x7abb4
+	dbw 5, .InitializeRoom
 
-	dbw 1, UnknownScript_0x7abc5
+	dbw 1, .SetSpawn
 
-UnknownScript_0x7abb3:
+.Null:
 	end
 
-UnknownScript_0x7abb4:
-	special Function27043
-	setevent EVENT_007
-	checkevent EVENT_036
-	iftrue UnknownScript_0x7abc4
+.InitializeRoom:
+	special ToggleDecorationsVisibility
+	setevent EVENT_IN_YOUR_ROOM
+	checkevent EVENT_INITIALIZED_EVENTS
+	iftrue .SkipInizialization
 	jumpstd initializeevents
 	return
 
-UnknownScript_0x7abc4:
+.SkipInizialization:
 	return
 
-UnknownScript_0x7abc5:
-	special Function26feb
+.SetSpawn:
+	special ToggleMaptileDecorations
 	return
 
 
@@ -46,7 +46,7 @@
 	describedecoration $4
 
 KrissHousePoster:
-	dw $02cc ; event
+	dw EVENT_KRISS_ROOM_POSTER ; event
 	dw .Script
 .Script
 	describedecoration $0
@@ -84,7 +84,7 @@
 
 KrissHousePC:
 	loadfont
-	special Functionc2e7
+	special Special_KrissHousePC
 	iftrue .Warp
 	loadmovesprites
 	end
@@ -116,23 +116,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $0, $7, 3, GROUP_KRISS_HOUSE_1F, MAP_KRISS_HOUSE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 1, 2, $1, KrissHousePC
-	signpost 1, 3, $0, KrissHouseRadio
-	signpost 1, 5, $0, KrissHouseBookshelf
-	signpost 0, 6, $5, KrissHousePoster
+	signpost 1, 2, SIGNPOST_UP, KrissHousePC
+	signpost 1, 3, SIGNPOST_READ, KrissHouseRadio
+	signpost 1, 5, SIGNPOST_READ, KrissHouseBookshelf
+	signpost 0, 6, SIGNPOST_IFSET, KrissHousePoster
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_CONSOLE, 6, 8, $1, $0, 255, 255, $0, 0, GameConsole, EVENT_741
-	person_event SPRITE_DOLL_1, 8, 8, $1, $0, 255, 255, $0, 0, Doll1, EVENT_742
-	person_event SPRITE_DOLL_2, 8, 9, $1, $0, 255, 255, $0, 0, Doll2, EVENT_743
-	person_event SPRITE_BIG_DOLL, 5, 4, $21, $0, 255, 255, $0, 0, BigDoll, EVENT_744
+	person_event SPRITE_CONSOLE, 6, 8, OW_DOWN | $1, $0, -1, -1, $0, 0, GameConsole, EVENT_KRISS_HOUSE_2F_CONSOLE
+	person_event SPRITE_DOLL_1, 8, 8, OW_DOWN | $1, $0, -1, -1, $0, 0, Doll1, EVENT_KRISS_HOUSE_2F_DOLL_1
+	person_event SPRITE_DOLL_2, 8, 9, OW_DOWN | $1, $0, -1, -1, $0, 0, Doll2, EVENT_KRISS_HOUSE_2F_DOLL_2
+	person_event SPRITE_BIG_DOLL, 5, 4, OW_DOWN | $21, $0, -1, -1, $0, 0, BigDoll, EVENT_KRISS_HOUSE_2F_BIG_DOLL
--- a/maps/KrissNeighborsHouse.asm
+++ b/maps/KrissNeighborsHouse.asm
@@ -1,8 +1,8 @@
 KrissNeighborsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 KrissNeighborsDaughter:
@@ -98,21 +98,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 	warp_def $7, $3, 3, GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, KrissNeighborsHouseBookshelf
-	signpost 1, 1, $0, KrissNeighborsHouseBookshelf
-	signpost 1, 7, $0, KrissNeighborsHouseRadio
+	signpost 1, 0, SIGNPOST_READ, KrissNeighborsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, KrissNeighborsHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, KrissNeighborsHouseRadio
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_COOLTRAINER_F, 7, 6, $9, $0, 255, 255, $80, 0, KrissNeighborsDaughter, -1
-	person_event SPRITE_POKEFAN_F, 7, 9, $8, $0, 255, 255, $80, 0, KrissNeighbor, EVENT_793
+	person_event SPRITE_COOLTRAINER_F, 7, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, KrissNeighborsDaughter, -1
+	person_event SPRITE_POKEFAN_F, 7, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, KrissNeighbor, EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
--- a/maps/KurtsHouse.asm
+++ b/maps/KurtsHouse.asm
@@ -1,8 +1,8 @@
 KurtsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -33,17 +33,17 @@
 KurtScript_0x18e178:
 	faceplayer
 	loadfont
-	checkevent EVENT_035
-	iftrue UnknownScript_0x18e1cc
+	checkevent EVENT_KURT_GAVE_YOU_LURE_BALL
+	iftrue .GotLureBall
 	checkevent EVENT_CLEARED_SLOWPOKE_WELL
-	iftrue UnknownScript_0x18e1bf
+	iftrue .ClearedSlowpokeWell
 	writetext UnknownText_0x18e473
 	closetext
 	loadmovesprites
 	special Functionc48f
-	setevent EVENT_6FA
+	setevent EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
 	checkcode VAR_FACING
-	if_equal $1, UnknownScript_0x18e1ab
+	if_equal UP, .RunAround
 	spriteface $0, DOWN
 	playsound SFX_FLY
 	applymovement $2, MovementData_0x18e466
@@ -53,7 +53,7 @@
 	special RestartMapMusic
 	end
 
-UnknownScript_0x18e1ab:
+.RunAround:
 	spriteface $0, DOWN
 	playsound SFX_FLY
 	applymovement $2, MovementData_0x18e46c
@@ -63,211 +63,205 @@
 	special RestartMapMusic
 	end
 
-UnknownScript_0x18e1bf:
+.ClearedSlowpokeWell:
 	writetext UnknownText_0x18e615
 	keeptextopen
 	verbosegiveitem LURE_BALL, 1
-	iffalse UnknownScript_0x18e2b2
-	setevent EVENT_035
-UnknownScript_0x18e1cc:
-	checkevent EVENT_000
-	iftrue UnknownScript_0x18e29f
-	checkevent EVENT_258
-	iftrue UnknownScript_0x18e2b4
-	checkevent EVENT_259
-	iftrue UnknownScript_0x18e2ca
-	checkevent EVENT_25A
-	iftrue UnknownScript_0x18e2e0
-	checkevent EVENT_25B
-	iftrue UnknownScript_0x18e2f6
-	checkevent EVENT_25C
-	iftrue UnknownScript_0x18e30c
-	checkevent EVENT_25D
-	iftrue UnknownScript_0x18e322
-	checkevent EVENT_25E
-	iftrue UnknownScript_0x18e338
+	iffalse .NoRoomForBall
+	setevent EVENT_KURT_GAVE_YOU_LURE_BALL
+.GotLureBall:
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iftrue .WaitForApricorns
+	checkevent EVENT_GAVE_KURT_RED_APRICORN
+	iftrue .GiveLevelBall
+	checkevent EVENT_GAVE_KURT_BLU_APRICORN
+	iftrue .GiveLureBall
+	checkevent EVENT_GAVE_KURT_YLW_APRICORN
+	iftrue .GiveMoonBall
+	checkevent EVENT_GAVE_KURT_GRN_APRICORN
+	iftrue .GiveFriendBall
+	checkevent EVENT_GAVE_KURT_WHT_APRICORN
+	iftrue .GiveFastBall
+	checkevent EVENT_GAVE_KURT_BLK_APRICORN
+	iftrue .GiveHeavyBall
+	checkevent EVENT_GAVE_KURT_PNK_APRICORN
+	iftrue .GiveLoveBall
 	checkevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
-	iftrue UnknownScript_0x18e34e
-UnknownScript_0x18e202:
-	checkevent EVENT_001
-	iftrue UnknownScript_0x18e212
-	checkevent EVENT_002
-	iftrue UnknownScript_0x18e212
+	iftrue .CanGiveGSBallToKurt
+.NoGSBall:
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
+	iftrue .CheckApricorns
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_2
+	iftrue .CheckApricorns
 	writetext UnknownText_0x18e6c9
 	closetext
-UnknownScript_0x18e212:
+.CheckApricorns:
 	checkitem RED_APRICORN
-	iftrue UnknownScript_0x18e249
+	iftrue .AskApricorn
 	checkitem BLU_APRICORN
-	iftrue UnknownScript_0x18e249
+	iftrue .AskApricorn
 	checkitem YLW_APRICORN
-	iftrue UnknownScript_0x18e249
+	iftrue .AskApricorn
 	checkitem GRN_APRICORN
-	iftrue UnknownScript_0x18e249
+	iftrue .AskApricorn
 	checkitem WHT_APRICORN
-	iftrue UnknownScript_0x18e249
+	iftrue .AskApricorn
 	checkitem BLK_APRICORN
-	iftrue UnknownScript_0x18e249
+	iftrue .AskApricorn
 	checkitem PNK_APRICORN
-	iftrue UnknownScript_0x18e249
-	checkevent EVENT_001
-	iftrue UnknownScript_0x18e2ae
-	checkevent EVENT_002
-	iftrue UnknownScript_0x18e243
+	iftrue .AskApricorn
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
+	iftrue .ThatTurnedOutGreat
+	checkevent EVENT_DRAGON_SHRINE_QUESTION_2
+	iftrue .IMakeBallsFromApricorns
 	loadmovesprites
 	end
 
-UnknownScript_0x18e243:
+.IMakeBallsFromApricorns:
 	writetext UnknownText_0x18e6c9
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18e249:
+.AskApricorn:
 	writetext UnknownText_0x18e736
 	keeptextopen
-	setevent EVENT_002
+	setevent EVENT_DRAGON_SHRINE_QUESTION_2
 	special Function88018
-	if_equal $0, UnknownScript_0x18e2a5
-	if_equal $59, UnknownScript_0x18e275
-	if_equal $5c, UnknownScript_0x18e27b
-	if_equal $5d, UnknownScript_0x18e281
-	if_equal $61, UnknownScript_0x18e287
-	if_equal $63, UnknownScript_0x18e28d
-	if_equal $65, UnknownScript_0x18e293
-	setevent EVENT_258
-	jump UnknownScript_0x18e299
+	if_equal $0, .Cancel
+	if_equal BLU_APRICORN, .Blu
+	if_equal YLW_APRICORN, .Ylw
+	if_equal GRN_APRICORN, .Grn
+	if_equal WHT_APRICORN, .Wht
+	if_equal BLK_APRICORN, .Blk
+	if_equal PNK_APRICORN, .Pnk
+; .Red
+	setevent EVENT_GAVE_KURT_RED_APRICORN
+	jump .GaveKurtApricorns
 
-UnknownScript_0x18e275:
-	setevent EVENT_259
-	jump UnknownScript_0x18e299
+.Blu:
+	setevent EVENT_GAVE_KURT_BLU_APRICORN
+	jump .GaveKurtApricorns
 
-UnknownScript_0x18e27b:
-	setevent EVENT_25A
-	jump UnknownScript_0x18e299
+.Ylw:
+	setevent EVENT_GAVE_KURT_YLW_APRICORN
+	jump .GaveKurtApricorns
 
-UnknownScript_0x18e281:
-	setevent EVENT_25B
-	jump UnknownScript_0x18e299
+.Grn:
+	setevent EVENT_GAVE_KURT_GRN_APRICORN
+	jump .GaveKurtApricorns
 
-UnknownScript_0x18e287:
-	setevent EVENT_25C
-	jump UnknownScript_0x18e299
+.Wht:
+	setevent EVENT_GAVE_KURT_WHT_APRICORN
+	jump .GaveKurtApricorns
 
-UnknownScript_0x18e28d:
-	setevent EVENT_25D
-	jump UnknownScript_0x18e299
+.Blk:
+	setevent EVENT_GAVE_KURT_BLK_APRICORN
+	jump .GaveKurtApricorns
 
-UnknownScript_0x18e293:
-	setevent EVENT_25E
-	jump UnknownScript_0x18e299
+.Pnk:
+	setevent EVENT_GAVE_KURT_PNK_APRICORN
+	jump .GaveKurtApricorns
 
-UnknownScript_0x18e299:
-	setevent EVENT_000
+.GaveKurtApricorns:
+	setevent EVENT_GAVE_KURT_APRICORNS
 	setflag ENGINE_KURT_MAKING_BALLS
-UnknownScript_0x18e29f:
+.WaitForApricorns:
 	writetext UnknownText_0x18e779
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18e2a5:
+.Cancel:
 	writetext UnknownText_0x18e7bc
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x18e2ab:
-	setevent EVENT_001
-UnknownScript_0x18e2ae:
+._ThatTurnedOutGreat:
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
+.ThatTurnedOutGreat:
 	writetext UnknownText_0x18e82a
 	closetext
-UnknownScript_0x18e2b2:
+.NoRoomForBall:
 	loadmovesprites
 	end
 
-UnknownScript_0x18e2b4:
+.GiveLevelBall:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e3c5
+	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
 	verbosegiveitem2 LEVEL_BALL, $16
-	iffalse UnknownScript_0x18e2b2
-UnknownScript_0x18e2c4:
-	clearevent EVENT_258
-	jump UnknownScript_0x18e2ab
+	iffalse .NoRoomForBall
+	clearevent EVENT_GAVE_KURT_RED_APRICORN
+	jump ._ThatTurnedOutGreat
 
-UnknownScript_0x18e2ca:
+.GiveLureBall:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e3c5
+	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
 	verbosegiveitem2 LURE_BALL, $16
-	iffalse UnknownScript_0x18e2b2
-UnknownScript_0x18e2da:
-	clearevent EVENT_259
-	jump UnknownScript_0x18e2ab
+	iffalse .NoRoomForBall
+	clearevent EVENT_GAVE_KURT_BLU_APRICORN
+	jump ._ThatTurnedOutGreat
 
-UnknownScript_0x18e2e0:
+.GiveMoonBall:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e3c5
+	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
 	verbosegiveitem2 MOON_BALL, $16
-	iffalse UnknownScript_0x18e2b2
-UnknownScript_0x18e2f0:
-	clearevent EVENT_25A
-	jump UnknownScript_0x18e2ab
+	iffalse .NoRoomForBall
+	clearevent EVENT_GAVE_KURT_YLW_APRICORN
+	jump ._ThatTurnedOutGreat
 
-UnknownScript_0x18e2f6:
+.GiveFriendBall:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e3c5
+	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
 	verbosegiveitem2 FRIEND_BALL, $16
-	iffalse UnknownScript_0x18e2b2
-UnknownScript_0x18e306:
-	clearevent EVENT_25B
-	jump UnknownScript_0x18e2ab
+	iffalse .NoRoomForBall
+	clearevent EVENT_GAVE_KURT_GRN_APRICORN
+	jump ._ThatTurnedOutGreat
 
-UnknownScript_0x18e30c:
+.GiveFastBall:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e3c5
+	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
 	verbosegiveitem2 FAST_BALL, $16
-	iffalse UnknownScript_0x18e2b2
-UnknownScript_0x18e31c:
-	clearevent EVENT_25C
-	jump UnknownScript_0x18e2ab
+	iffalse .NoRoomForBall
+	clearevent EVENT_GAVE_KURT_WHT_APRICORN
+	jump ._ThatTurnedOutGreat
 
-UnknownScript_0x18e322:
+.GiveHeavyBall:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e3c5
+	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
 	verbosegiveitem2 HEAVY_BALL, $16
-	iffalse UnknownScript_0x18e2b2
-UnknownScript_0x18e332:
-	clearevent EVENT_25D
-	jump UnknownScript_0x18e2ab
+	iffalse .NoRoomForBall
+	clearevent EVENT_GAVE_KURT_BLK_APRICORN
+	jump ._ThatTurnedOutGreat
 
-UnknownScript_0x18e338:
+.GiveLoveBall:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e3c5
+	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
 	verbosegiveitem2 LOVE_BALL, $16
-	iffalse UnknownScript_0x18e2b2
-UnknownScript_0x18e348:
-	clearevent EVENT_25E
-	jump UnknownScript_0x18e2ab
+	iffalse .NoRoomForBall
+	clearevent EVENT_GAVE_KURT_PNK_APRICORN
+	jump ._ThatTurnedOutGreat
 
-UnknownScript_0x18e34e:
+.CanGiveGSBallToKurt:
 	checkevent EVENT_GAVE_GS_BALL_TO_KURT
-	iftrue UnknownScript_0x18e368
+	iftrue .GaveGSBallToKurt
 	checkitem GS_BALL
-	iffalse UnknownScript_0x18e202
+	iffalse .NoGSBall
 	writetext UnknownText_0x18e8ab
 	closetext
 	loadmovesprites
@@ -276,9 +270,9 @@
 	setflag ENGINE_KURT_MAKING_BALLS
 	end
 
-UnknownScript_0x18e368:
+.GaveGSBallToKurt:
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iffalse UnknownScript_0x18e378
+	iffalse .NotMakingBalls
 	writetext UnknownText_0x18e934
 	closetext
 	writetext UnknownText_0x18e949
@@ -286,7 +280,7 @@
 	loadmovesprites
 	end
 
-UnknownScript_0x18e378:
+.NotMakingBalls:
 	writetext UnknownText_0x18e95c
 	closetext
 	loadmovesprites
@@ -295,22 +289,22 @@
 	clearevent EVENT_GAVE_GS_BALL_TO_KURT
 	special Functionc48f
 	pause 20
-	showemote $0, $2, 30
+	showemote EMOTE_SHOCK, $2, 30
 	checkcode VAR_FACING
-	if_equal $1, UnknownScript_0x18e3a2
+	if_equal UP, .GSBallRunAround
 	spriteface $0, DOWN
 	playsound SFX_FLY
 	applymovement $2, MovementData_0x18e466
-	jump UnknownScript_0x18e3ac
+	jump .KurtHasLeftTheBuilding
 
-UnknownScript_0x18e3a2:
+.GSBallRunAround:
 	spriteface $0, DOWN
 	playsound SFX_FLY
 	applymovement $2, MovementData_0x18e46c
-UnknownScript_0x18e3ac:
+.KurtHasLeftTheBuilding:
 	playsound SFX_EXIT_BUILDING
 	disappear $2
-	clearevent EVENT_7A4
+	clearevent EVENT_AZALEA_TOWN_KURT
 	waitbutton
 	special RestartMapMusic
 	domaptrigger GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN, $2
@@ -320,10 +314,10 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_GAVE_GS_BALL_TO_KURT
-	iftrue UnknownScript_0x18e3e0
-UnknownScript_0x18e3c5:
+	iftrue KurtScript_ImCheckingItNow
+KurtMakingBallsScript:
 	checkevent EVENT_BUGGING_KURT_TOO_MUCH
-	iffalse UnknownScript_0x18e3d4
+	iffalse Script_FirstTimeBuggingKurt
 	writetext UnknownText_0x18e7d8
 	closetext
 	loadmovesprites
@@ -330,7 +324,7 @@
 	spriteface $5, UP
 	end
 
-UnknownScript_0x18e3d4:
+Script_FirstTimeBuggingKurt:
 	writetext UnknownText_0x18e863
 	closetext
 	loadmovesprites
@@ -338,7 +332,7 @@
 	setevent EVENT_BUGGING_KURT_TOO_MUCH
 	end
 
-UnknownScript_0x18e3e0:
+KurtScript_ImCheckingItNow:
 	writetext UnknownText_0x18e934
 	closetext
 	spriteface $5, UP
@@ -349,17 +343,17 @@
 
 KurtsGranddaughter1:
 	faceplayer
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue KurtsGranddaughter2Subscript
-	checkevent EVENT_001
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue KurtsGranddaughterFunScript
 	checkevent EVENT_FOREST_IS_RESTLESS
 	iftrue .Lonely
-	checkevent EVENT_030
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue .Dad
 	checkevent EVENT_CLEARED_SLOWPOKE_WELL
 	iftrue .SlowpokeBack
-	checkevent EVENT_6FA
+	checkevent EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
 	iftrue .Lonely
 	loadfont
 	writetext KurtsGranddaughterSlowpokeGoneText
@@ -682,28 +676,28 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 4, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $7, $4, 4, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 7
-	signpost 1, 6, $0, KurtsHouseRadio
-	signpost 0, 8, $0, KurtsHouseOakPhoto
-	signpost 0, 9, $0, KurtsHouseOakPhoto
-	signpost 1, 5, $0, KurtsHouseBookshelf
-	signpost 1, 2, $0, KurtsHouseBookshelf
-	signpost 1, 3, $0, KurtsHouseBookshelf
-	signpost 1, 4, $0, KurtsHouseCelebiStatue
+	signpost 1, 6, SIGNPOST_READ, KurtsHouseRadio
+	signpost 0, 8, SIGNPOST_READ, KurtsHouseOakPhoto
+	signpost 0, 9, SIGNPOST_READ, KurtsHouseOakPhoto
+	signpost 1, 5, SIGNPOST_READ, KurtsHouseBookshelf
+	signpost 1, 2, SIGNPOST_READ, KurtsHouseBookshelf
+	signpost 1, 3, SIGNPOST_READ, KurtsHouseBookshelf
+	signpost 1, 4, SIGNPOST_READ, KurtsHouseCelebiStatue
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_KURT, 6, 7, $6, $0, 255, 255, $0, 0, KurtScript_0x18e178, EVENT_73E
-	person_event SPRITE_TWIN, 7, 9, $3, $0, 255, 255, $0, 0, KurtsGranddaughter1, EVENT_78C
-	person_event SPRITE_SLOWPOKE, 7, 10, $1, $0, 255, 255, $0, 0, KurtsHouseSlowpoke, EVENT_6FD
-	person_event SPRITE_KURT, 7, 18, $7, $0, 255, 255, $0, 0, KurtScript_0x18e3bd, EVENT_73F
-	person_event SPRITE_TWIN, 8, 15, $9, $0, 255, 255, $0, 0, KurtsGranddaughter2, EVENT_78D
+	person_event SPRITE_KURT, 6, 7, OW_UP | $2, $0, -1, -1, $0, 0, KurtScript_0x18e178, EVENT_KURTS_HOUSE_KURT_1
+	person_event SPRITE_TWIN, 7, 9, OW_DOWN | $3, $0, -1, -1, $0, 0, KurtsGranddaughter1, EVENT_KURTS_HOUSE_GRANDDAUGHTER_1
+	person_event SPRITE_SLOWPOKE, 7, 10, OW_DOWN | $1, $0, -1, -1, $0, 0, KurtsHouseSlowpoke, EVENT_KURTS_HOUSE_SLOWPOKE
+	person_event SPRITE_KURT, 7, 18, OW_UP | $3, $0, -1, -1, $0, 0, KurtScript_0x18e3bd, EVENT_KURTS_HOUSE_KURT_2
+	person_event SPRITE_TWIN, 8, 15, OW_LEFT | $1, $0, -1, -1, $0, 0, KurtsGranddaughter2, EVENT_KURTS_HOUSE_GRANDDAUGHTER_2
--- a/maps/LakeofRage.asm
+++ b/maps/LakeofRage.asm
@@ -1,5 +1,5 @@
 LakeofRage_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw .Trigger1, $0000
 	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -51,7 +51,7 @@
 	playsound SFX_WARP_TO
 	applymovement $2, MovementData_0x70155
 	disappear $2
-	clearevent EVENT_6D5
+	clearevent EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
 	setevent EVENT_DECIDED_TO_HELP_LANCE
 	domaptrigger GROUP_MAHOGANY_MART_1F, MAP_MAHOGANY_MART_1F, $1
 	end
@@ -132,29 +132,13 @@
 
 UnknownScript_0x700b8:
 	keeptextopen
-	special Functionfbcd2
+	special Special_MagikarpHouseSign
 	loadmovesprites
 	end
 
 TrainerFisherAndre:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_ANDRE
+	trainer EVENT_BEAT_FISHER_ANDRE, FISHER, ANDRE, FisherAndreSeenText, FisherAndreBeatenText, $0000, FisherAndreScript
 
-	; trainer group && trainer id
-	db FISHER, ANDRE
-
-	; text when seen
-	dw FisherAndreSeenText
-
-	; text when trainer beaten
-	dw FisherAndreBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherAndreScript
-
 FisherAndreScript:
 	talkaftercancel
 	loadfont
@@ -164,24 +148,8 @@
 	end
 
 TrainerFisherRaymond:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_RAYMOND
+	trainer EVENT_BEAT_FISHER_RAYMOND, FISHER, RAYMOND, FisherRaymondSeenText, FisherRaymondBeatenText, $0000, FisherRaymondScript
 
-	; trainer group && trainer id
-	db FISHER, RAYMOND
-
-	; text when seen
-	dw FisherRaymondSeenText
-
-	; text when trainer beaten
-	dw FisherRaymondBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherRaymondScript
-
 FisherRaymondScript:
 	talkaftercancel
 	loadfont
@@ -191,24 +159,8 @@
 	end
 
 TrainerCooltrainermAaron:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_AARON
+	trainer EVENT_BEAT_COOLTRAINERM_AARON, COOLTRAINERM, AARON, CooltrainermAaronSeenText, CooltrainermAaronBeatenText, $0000, CooltrainermAaronScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, AARON
-
-	; text when seen
-	dw CooltrainermAaronSeenText
-
-	; text when trainer beaten
-	dw CooltrainermAaronBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermAaronScript
-
 CooltrainermAaronScript:
 	talkaftercancel
 	loadfont
@@ -218,24 +170,8 @@
 	end
 
 TrainerCooltrainerfLois:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_LOIS
+	trainer EVENT_BEAT_COOLTRAINERF_LOIS, COOLTRAINERF, LOIS, CooltrainerfLoisSeenText, CooltrainerfLoisBeatenText, $0000, CooltrainerfLoisScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, LOIS
-
-	; text when seen
-	dw CooltrainerfLoisSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfLoisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfLoisScript
-
 CooltrainerfLoisScript:
 	talkaftercancel
 	loadfont
@@ -287,18 +223,15 @@
 	db TM_DETECT, 1
 
 MapLakeofRageSignpostItem2:
-	dw $00b5
-	db FULL_RESTORE
+	dwb EVENT_LAKE_OF_RAGE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
 MapLakeofRageSignpostItem3:
-	dw $00b6
-	db RARE_CANDY
+	dwb EVENT_LAKE_OF_RAGE_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
 MapLakeofRageSignpostItem4:
-	dw $00b7
-	db MAX_POTION
+	dwb EVENT_LAKE_OF_RAGE_HIDDEN_MAX_POTION, MAX_POTION
 	
 
 MovementData_0x70155:
@@ -558,33 +491,33 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $7, 1, GROUP_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, MAP_LAKE_OF_RAGE_HIDDEN_POWER_HOUSE
 	warp_def $1f, $1b, 1, GROUP_LAKE_OF_RAGE_MAGIKARP_HOUSE, MAP_LAKE_OF_RAGE_MAGIKARP_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 27, 21, $0, MapLakeofRageSignpost0Script
-	signpost 31, 25, $0, MapLakeofRageSignpost1Script
-	signpost 28, 11, $7, MapLakeofRageSignpostItem2
-	signpost 4, 4, $7, MapLakeofRageSignpostItem3
-	signpost 5, 35, $7, MapLakeofRageSignpostItem4
+	signpost 27, 21, SIGNPOST_READ, MapLakeofRageSignpost0Script
+	signpost 31, 25, SIGNPOST_READ, MapLakeofRageSignpost1Script
+	signpost 28, 11, SIGNPOST_ITEM, MapLakeofRageSignpostItem2
+	signpost 4, 4, SIGNPOST_ITEM, MapLakeofRageSignpostItem3
+	signpost 5, 35, SIGNPOST_ITEM, MapLakeofRageSignpostItem4
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_LANCE, 32, 25, $7, $0, 255, 255, $0, 0, LanceScript_0x70022, EVENT_6D4
-	person_event SPRITE_GRAMPS, 30, 24, $7, $0, 255, 255, $0, 0, GrampsScript_0x7008e, -1
-	person_event SPRITE_SUPER_NERD, 17, 40, $8, $0, 255, 255, $0, 0, SuperNerdScript_0x700a2, -1
-	person_event SPRITE_COOLTRAINER_F, 33, 29, $5, $1, 255, 255, $0, 0, CooltrainerFScript_0x700a5, -1
-	person_event SPRITE_FISHER, 27, 34, $8, $0, 255, 255, $92, 1, TrainerFisherAndre, EVENT_735
-	person_event SPRITE_FISHER, 30, 28, $7, $0, 255, 255, $92, 1, TrainerFisherRaymond, EVENT_735
-	person_event SPRITE_COOLTRAINER_M, 19, 8, $9, $0, 255, 255, $82, 1, TrainerCooltrainermAaron, EVENT_735
-	person_event SPRITE_COOLTRAINER_F, 11, 40, $8, $0, 255, 255, $82, 0, TrainerCooltrainerfLois, EVENT_735
-	person_event SPRITE_GYARADOS, 26, 22, $16, $0, 255, 255, $80, 0, GyaradosScript_0x70063, EVENT_751
-	person_event SPRITE_SUPER_NERD, 8, 8, $6, $0, 255, 255, $0, 0, WesleyScript, EVENT_75C
-	person_event SPRITE_POKE_BALL, 14, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x70148, EVENT_645
-	person_event SPRITE_POKE_BALL, 6, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7014a, EVENT_646
+	person_event SPRITE_LANCE, 32, 25, OW_UP | $3, $0, -1, -1, $0, 0, LanceScript_0x70022, EVENT_LAKE_OF_RAGE_LANCE
+	person_event SPRITE_GRAMPS, 30, 24, OW_UP | $3, $0, -1, -1, $0, 0, GrampsScript_0x7008e, -1
+	person_event SPRITE_SUPER_NERD, 17, 40, OW_LEFT | $0, $0, -1, -1, $0, 0, SuperNerdScript_0x700a2, -1
+	person_event SPRITE_COOLTRAINER_F, 33, 29, OW_UP | $1, $1, -1, -1, $0, 0, CooltrainerFScript_0x700a5, -1
+	person_event SPRITE_FISHER, 27, 34, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerFisherAndre, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_FISHER, 30, 28, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerFisherRaymond, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_COOLTRAINER_M, 19, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainermAaron, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 11, 40, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerCooltrainerfLois, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_GYARADOS, 26, 22, OW_UP | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GyaradosScript_0x70063, EVENT_LAKE_OF_RAGE_RED_GYARADOS
+	person_event SPRITE_SUPER_NERD, 8, 8, OW_UP | $2, $0, -1, -1, $0, 0, WesleyScript, EVENT_LAKE_OF_RAGE_WESLEY_OF_WEDNESDAY
+	person_event SPRITE_POKE_BALL, 14, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x70148, EVENT_LAKE_OF_RAGE_ELIXER
+	person_event SPRITE_POKE_BALL, 6, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7014a, EVENT_LAKE_OF_RAGE_TM_DETECT
--- a/maps/LakeofRageHiddenPowerHouse.asm
+++ b/maps/LakeofRageHiddenPowerHouse.asm
@@ -1,8 +1,8 @@
 LakeofRageHiddenPowerHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 HiddenPowerGuy:
@@ -68,19 +68,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE
 	warp_def $7, $3, 1, GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, HiddenPowerHouseBookshelf
-	signpost 1, 1, $0, HiddenPowerHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, HiddenPowerHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, HiddenPowerHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHER, 7, 6, $3, $0, 255, 255, $0, 0, HiddenPowerGuy, -1
+	person_event SPRITE_FISHER, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, HiddenPowerGuy, -1
--- a/maps/LakeofRageMagikarpHouse.asm
+++ b/maps/LakeofRageMagikarpHouse.asm
@@ -1,25 +1,25 @@
 LakeofRageMagikarpHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FishingGuruScript_0x19a6ae:
 	faceplayer
 	loadfont
-	checkevent EVENT_03A
+	checkevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
 	iftrue UnknownScript_0x19a6fe
-	checkevent EVENT_039
+	checkevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
 	iftrue UnknownScript_0x19a6e0
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue UnknownScript_0x19a6d7
-	checkevent EVENT_038
+	checkevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
 	iftrue UnknownScript_0x19a6d1
 	writetext UnknownText_0x19a72e
 	closetext
 	loadmovesprites
-	setevent EVENT_038
+	setevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
 	end
 
 UnknownScript_0x19a6d1:
@@ -32,7 +32,7 @@
 	writetext UnknownText_0x19a890
 	closetext
 	loadmovesprites
-	setevent EVENT_039
+	setevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
 	end
 
 UnknownScript_0x19a6e0:
@@ -41,7 +41,7 @@
 	iffalse UnknownScript_0x19a6d7
 	writetext UnknownText_0x19a93e
 	closetext
-	special Functionfbb32
+	special Special_CheckMagikarpLength
 	if_equal $0, UnknownScript_0x19a71c
 	if_equal $1, UnknownScript_0x19a722
 	if_equal $2, UnknownScript_0x19a716
@@ -55,12 +55,12 @@
 	writetext UnknownText_0x19a9c3
 	closetext
 	loadmovesprites
-	clearevent EVENT_03A
+	clearevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
 	end
 
 UnknownScript_0x19a711:
 	loadmovesprites
-	setevent EVENT_03A
+	setevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
 	end
 
 UnknownScript_0x19a716:
@@ -206,19 +206,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE
 	warp_def $7, $3, 2, GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, MagikarpHouseBookshelf
-	signpost 1, 1, $0, MagikarpHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MagikarpHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MagikarpHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $3, $0, 255, 255, $0, 0, FishingGuruScript_0x19a6ae, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, FishingGuruScript_0x19a6ae, -1
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -1,5 +1,5 @@
 LancesRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x180e39, $0000
 	dw UnknownScript_0x180e3d, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -25,7 +25,7 @@
 	iffalse UnknownScript_0x180e48
 	changeblock $4, $16, $34
 UnknownScript_0x180e48:
-	checkevent EVENT_312
+	checkevent EVENT_LANCES_ROOM_EXIT_OPEN
 	iffalse UnknownScript_0x180e52
 	changeblock $4, $0, $b
 UnknownScript_0x180e52:
@@ -75,7 +75,7 @@
 	setevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
 	musicfadeout MUSIC_BEAUTY_ENCOUNTER, $10
 	pause 30
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	spriteface $2, DOWN
 	pause 10
 	spriteface $0, DOWN
@@ -119,13 +119,13 @@
 	playsound SFX_EXIT_BUILDING
 	disappear $0
 	applymovement $3, MovementData_0x180f57
-	showemote $0, $3, 15
+	showemote EMOTE_SHOCK, $3, 15
 	loadfont
 	writetext UnknownText_0x1813c5
 	pause 30
 	loadmovesprites
 	applymovement $3, MovementData_0x180f5b
-	special Function8c084
+	special FadeBlackBGMap
 	pause 15
 	warpfacing $1, GROUP_HALL_OF_FAME, MAP_HALL_OF_FAME, $4, $d
 	end
@@ -341,7 +341,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $17, $4, 3, GROUP_KARENS_ROOM, MAP_KARENS_ROOM
 	warp_def $17, $5, 4, GROUP_KARENS_ROOM, MAP_KARENS_ROOM
@@ -348,16 +348,16 @@
 	warp_def $1, $4, 1, GROUP_HALL_OF_FAME, MAP_HALL_OF_FAME
 	warp_def $1, $5, 2, GROUP_HALL_OF_FAME, MAP_HALL_OF_FAME
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 1, $5, $4, $0, UnknownScript_0x180e6a, $0, $0
 	xy_trigger 1, $5, $5, $0, UnknownScript_0x180e74, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_LANCE, 7, 9, $6, $0, 255, 255, $0, 0, LanceScript_0x180e7b, -1
-	person_event SPRITE_TEACHER, 11, 8, $7, $0, 255, 255, $a0, 0, ObjectEvent, EVENT_75F
-	person_event SPRITE_OAK, 11, 8, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_75F
+	person_event SPRITE_LANCE, 7, 9, OW_UP | $2, $0, -1, -1, $0, 0, LanceScript_0x180e7b, -1
+	person_event SPRITE_TEACHER, 11, 8, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, EVENT_LANCES_ROOM_OAK_AND_MARY
+	person_event SPRITE_OAK, 11, 8, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_LANCES_ROOM_OAK_AND_MARY
--- a/maps/LavRadioTower1F.asm
+++ b/maps/LavRadioTower1F.asm
@@ -1,8 +1,8 @@
 LavRadioTower1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ReceptionistScript_0x7ee63:
@@ -218,23 +218,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 7, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $3, 7, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 11, $0, MapLavRadioTower1FSignpost0Script
-	signpost 0, 5, $0, MapLavRadioTower1FSignpost1Script
+	signpost 0, 11, SIGNPOST_READ, MapLavRadioTower1FSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapLavRadioTower1FSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_RECEPTIONIST, 10, 10, $7, $0, 255, 255, $a0, 0, ReceptionistScript_0x7ee63, -1
-	person_event SPRITE_OFFICER, 5, 19, $6, $0, 255, 255, $a0, 0, OfficerScript_0x7ee66, -1
-	person_event SPRITE_SUPER_NERD, 7, 5, $2, $11, 255, 255, $80, 0, SuperNerdScript_0x7ee69, -1
-	person_event SPRITE_GENTLEMAN, 5, 13, $7, $0, 255, 255, $0, 0, GentlemanScript_0x7ee6c, -1
-	person_event SPRITE_SUPER_NERD, 10, 18, $9, $0, 255, 255, $0, 0, SuperNerdScript_0x7eea2, -1
+	person_event SPRITE_RECEPTIONIST, 10, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x7ee63, -1
+	person_event SPRITE_OFFICER, 5, 19, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x7ee66, -1
+	person_event SPRITE_SUPER_NERD, 7, 5, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x7ee69, -1
+	person_event SPRITE_GENTLEMAN, 5, 13, OW_UP | $3, $0, -1, -1, $0, 0, GentlemanScript_0x7ee6c, -1
+	person_event SPRITE_SUPER_NERD, 10, 18, OW_LEFT | $1, $0, -1, -1, $0, 0, SuperNerdScript_0x7eea2, -1
--- a/maps/LavenderMart.asm
+++ b/maps/LavenderMart.asm
@@ -1,8 +1,8 @@
 LavenderMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x7eb1c:
@@ -46,19 +46,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 5, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $3, 5, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x7eb1c, -1
-	person_event SPRITE_POKEFAN_M, 10, 10, $5, $2, 255, 255, $80, 0, PokefanMScript_0x7eb23, -1
-	person_event SPRITE_ROCKER, 6, 13, $3, $0, 255, 255, $0, 0, RockerScript_0x7eb26, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x7eb1c, -1
+	person_event SPRITE_POKEFAN_M, 10, 10, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x7eb23, -1
+	person_event SPRITE_ROCKER, 6, 13, OW_DOWN | $3, $0, -1, -1, $0, 0, RockerScript_0x7eb26, -1
--- a/maps/LavenderNameRater.asm
+++ b/maps/LavenderNameRater.asm
@@ -1,11 +1,11 @@
 LavenderNameRater_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x7eaf1, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x7eaf1:
@@ -27,17 +27,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $3, 4, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GENTLEMAN, 7, 6, $6, $0, 255, 255, $80, 0, LavenderNameRater, -1
+	person_event SPRITE_GENTLEMAN, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, LavenderNameRater, -1
--- a/maps/LavenderPokeCenter1F.asm
+++ b/maps/LavenderPokeCenter1F.asm
@@ -1,8 +1,8 @@
 LavenderPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x7e6a0:
@@ -78,21 +78,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $4, 1, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x7e6a0, -1
-	person_event SPRITE_GENTLEMAN, 10, 11, $5, $1, 255, 255, $0, 0, GentlemanScript_0x7e6a3, -1
-	person_event SPRITE_TEACHER, 7, 9, $6, $0, 255, 255, $a0, 0, TeacherScript_0x7e6a6, -1
-	person_event SPRITE_YOUNGSTER, 9, 5, $4, $10, 255, 255, $80, 0, YoungsterScript_0x7e6a9, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x7e6a0, -1
+	person_event SPRITE_GENTLEMAN, 10, 11, OW_UP | $1, $1, -1, -1, $0, 0, GentlemanScript_0x7e6a3, -1
+	person_event SPRITE_TEACHER, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x7e6a6, -1
+	person_event SPRITE_YOUNGSTER, 9, 5, OW_UP | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x7e6a9, -1
--- a/maps/LavenderPokeCenter2FBeta.asm
+++ b/maps/LavenderPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 LavenderPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 LavenderPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_LAVENDER_POKECENTER_1F, MAP_LAVENDER_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/LavenderTown.asm
+++ b/maps/LavenderTown.asm
@@ -1,8 +1,8 @@
 LavenderTown_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -105,7 +105,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 7
 	warp_def $5, $5, 1, GROUP_LAVENDER_POKECENTER_1F, MAP_LAVENDER_POKECENTER_1F
 	warp_def $9, $5, 1, GROUP_MR_FUJIS_HOUSE, MAP_MR_FUJIS_HOUSE
@@ -115,21 +115,21 @@
 	warp_def $b, $d, 1, GROUP_SOUL_HOUSE, MAP_SOUL_HOUSE
 	warp_def $5, $e, 1, GROUP_LAV_RADIO_TOWER_1F, MAP_LAV_RADIO_TOWER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 3, 11, $0, LavenderTownSign
-	signpost 7, 15, $0, KantoRadioStationSign
-	signpost 9, 3, $0, VolunteerPokemonHouseSign
-	signpost 13, 15, $0, SoulHouseSign
-	signpost 5, 6, $0, LavenderPokeCenterSignText
-	signpost 5, 2, $0, LavenderMartSignText
+	signpost 3, 11, SIGNPOST_READ, LavenderTownSign
+	signpost 7, 15, SIGNPOST_READ, KantoRadioStationSign
+	signpost 9, 3, SIGNPOST_READ, VolunteerPokemonHouseSign
+	signpost 13, 15, SIGNPOST_READ, SoulHouseSign
+	signpost 5, 6, SIGNPOST_READ, LavenderPokeCenterSignText
+	signpost 5, 2, SIGNPOST_READ, LavenderMartSignText
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKEFAN_M, 11, 16, $5, $1, 255, 255, $80, 0, PokefanMScript_0x1ad6e4, -1
-	person_event SPRITE_TEACHER, 19, 6, $5, $1, 255, 255, $90, 0, TeacherScript_0x1ad6e7, -1
-	person_event SPRITE_GRAMPS, 16, 18, $7, $0, 255, 255, $0, 0, GrampsScript_0x1ad6ea, -1
-	person_event SPRITE_YOUNGSTER, 15, 10, $5, $1, 255, 255, $a0, 1, YoungsterScript_0x1ad6ed, -1
+	person_event SPRITE_POKEFAN_M, 11, 16, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x1ad6e4, -1
+	person_event SPRITE_TEACHER, 19, 6, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x1ad6e7, -1
+	person_event SPRITE_GRAMPS, 16, 18, OW_UP | $3, $0, -1, -1, $0, 0, GrampsScript_0x1ad6ea, -1
+	person_event SPRITE_YOUNGSTER, 15, 10, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 1, YoungsterScript_0x1ad6ed, -1
--- a/maps/LavenderTownSpeechHouse.asm
+++ b/maps/LavenderTownSpeechHouse.asm
@@ -1,8 +1,8 @@
 LavenderTownSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanFScript_0x7ea47:
@@ -29,19 +29,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $3, 3, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, LavenderTownSpeechHouseBookshelf
-	signpost 1, 1, $0, LavenderTownSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, LavenderTownSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, LavenderTownSpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_F, 7, 6, $7, $0, 255, 255, $90, 0, PokefanFScript_0x7ea47, -1
+	person_event SPRITE_POKEFAN_F, 7, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanFScript_0x7ea47, -1
--- a/maps/MahoganyGym.asm
+++ b/maps/MahoganyGym.asm
@@ -1,8 +1,8 @@
 MahoganyGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PryceScript_0x199a9e:
@@ -62,24 +62,8 @@
 	jumpstd radiotowerrockets
 
 TrainerSkierRoxanne:
-	; bit/flag number
-	dw EVENT_BEAT_SKIER_ROXANNE
+	trainer EVENT_BEAT_SKIER_ROXANNE, SKIER, ROXANNE, SkierRoxanneSeenText, SkierRoxanneBeatenText, $0000, SkierRoxanneScript
 
-	; trainer group && trainer id
-	db SKIER, ROXANNE
-
-	; text when seen
-	dw SkierRoxanneSeenText
-
-	; text when trainer beaten
-	dw SkierRoxanneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SkierRoxanneScript
-
 SkierRoxanneScript:
 	talkaftercancel
 	loadfont
@@ -89,24 +73,8 @@
 	end
 
 TrainerSkierClarissa:
-	; bit/flag number
-	dw EVENT_BEAT_SKIER_CLARISSA
+	trainer EVENT_BEAT_SKIER_CLARISSA, SKIER, CLARISSA, SkierClarissaSeenText, SkierClarissaBeatenText, $0000, SkierClarissaScript
 
-	; trainer group && trainer id
-	db SKIER, CLARISSA
-
-	; text when seen
-	dw SkierClarissaSeenText
-
-	; text when trainer beaten
-	dw SkierClarissaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SkierClarissaScript
-
 SkierClarissaScript:
 	talkaftercancel
 	loadfont
@@ -116,24 +84,8 @@
 	end
 
 TrainerBoarderRonald:
-	; bit/flag number
-	dw EVENT_BEAT_BOARDER_RONALD
+	trainer EVENT_BEAT_BOARDER_RONALD, BOARDER, RONALD, BoarderRonaldSeenText, BoarderRonaldBeatenText, $0000, BoarderRonaldScript
 
-	; trainer group && trainer id
-	db BOARDER, RONALD
-
-	; text when seen
-	dw BoarderRonaldSeenText
-
-	; text when trainer beaten
-	dw BoarderRonaldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BoarderRonaldScript
-
 BoarderRonaldScript:
 	talkaftercancel
 	loadfont
@@ -143,24 +95,8 @@
 	end
 
 TrainerBoarderBrad:
-	; bit/flag number
-	dw EVENT_BEAT_BOARDER_BRAD
+	trainer EVENT_BEAT_BOARDER_BRAD, BOARDER, BRAD, BoarderBradSeenText, BoarderBradBeatenText, $0000, BoarderBradScript
 
-	; trainer group && trainer id
-	db BOARDER, BRAD
-
-	; text when seen
-	dw BoarderBradSeenText
-
-	; text when trainer beaten
-	dw BoarderBradBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BoarderBradScript
-
 BoarderBradScript:
 	talkaftercancel
 	loadfont
@@ -170,24 +106,8 @@
 	end
 
 TrainerBoarderDouglas:
-	; bit/flag number
-	dw EVENT_BEAT_BOARDER_DOUGLAS
+	trainer EVENT_BEAT_BOARDER_DOUGLAS, BOARDER, DOUGLAS, BoarderDouglasSeenText, BoarderDouglasBeatenText, $0000, BoarderDouglasScript
 
-	; trainer group && trainer id
-	db BOARDER, DOUGLAS
-
-	; text when seen
-	dw BoarderDouglasSeenText
-
-	; text when trainer beaten
-	dw BoarderDouglasBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BoarderDouglasScript
-
 BoarderDouglasScript:
 	talkaftercancel
 	loadfont
@@ -447,25 +367,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $4, 3, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 	warp_def $11, $5, 3, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 3, $0, MahoganyGymStatue
-	signpost 15, 6, $0, MahoganyGymStatue
+	signpost 15, 3, SIGNPOST_READ, MahoganyGymStatue
+	signpost 15, 6, SIGNPOST_READ, MahoganyGymStatue
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_PRYCE, 7, 9, $6, $0, 255, 255, $b0, 0, PryceScript_0x199a9e, -1
-	person_event SPRITE_BUENA, 10, 8, $6, $0, 255, 255, $82, 1, TrainerSkierRoxanne, -1
-	person_event SPRITE_ROCKER, 21, 4, $7, $0, 255, 255, $92, 1, TrainerBoarderRonald, -1
-	person_event SPRITE_BUENA, 21, 13, $7, $0, 255, 255, $82, 1, TrainerSkierClarissa, -1
-	person_event SPRITE_ROCKER, 13, 9, $6, $0, 255, 255, $92, 1, TrainerBoarderBrad, -1
-	person_event SPRITE_ROCKER, 8, 6, $a, $0, 255, 255, $92, 1, TrainerBoarderDouglas, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $80, 0, MahoganyGymGuyScript, -1
+	person_event SPRITE_PRYCE, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PryceScript_0x199a9e, -1
+	person_event SPRITE_BUENA, 10, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerSkierRoxanne, -1
+	person_event SPRITE_ROCKER, 21, 4, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBoarderRonald, -1
+	person_event SPRITE_BUENA, 21, 13, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerSkierClarissa, -1
+	person_event SPRITE_ROCKER, 13, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBoarderBrad, -1
+	person_event SPRITE_ROCKER, 8, 6, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBoarderDouglas, -1
+	person_event SPRITE_GYM_GUY, 19, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, MahoganyGymGuyScript, -1
--- a/maps/MahoganyMart1F.asm
+++ b/maps/MahoganyMart1F.asm
@@ -1,5 +1,5 @@
 MahoganyMart1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x6c356, $0000
 	dw UnknownScript_0x6c357, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -85,7 +85,7 @@
 	loadfont
 	writetext UnknownText_0x6c59e
 	closetext
-	showemote $0, $2, 10
+	showemote EMOTE_SHOCK, $2, 10
 	playsound SFX_UNKNOWN_2A
 	changeblock $6, $2, $1e
 	reloadmappart
@@ -222,22 +222,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 	warp_def $7, $4, 1, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 	warp_def $3, $7, 1, GROUP_TEAM_ROCKET_BASE_B1F, MAP_TEAM_ROCKET_BASE_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_PHARMACIST, 7, 8, $6, $0, 255, 255, $0, 0, PharmacistScript_0x6c367, EVENT_6DA
-	person_event SPRITE_BLACK_BELT, 10, 5, $3, $0, 255, 255, $0, 0, BlackBeltScript_0x6c37b, EVENT_6DA
-	person_event SPRITE_LANCE, 10, 8, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D5
-	person_event SPRITE_DRAGON, 10, 7, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D5
-	person_event SPRITE_GRANNY, 7, 5, $9, $0, 255, 255, $0, 0, GrannyScript_0x6c3ee, EVENT_736
+	person_event SPRITE_PHARMACIST, 7, 8, OW_UP | $2, $0, -1, -1, $0, 0, PharmacistScript_0x6c367, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_BLACK_BELT, 10, 5, OW_DOWN | $3, $0, -1, -1, $0, 0, BlackBeltScript_0x6c37b, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_LANCE, 10, 8, OW_LEFT | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+	person_event SPRITE_DRAGON, 10, 7, OW_LEFT | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+	person_event SPRITE_GRANNY, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, GrannyScript_0x6c3ee, EVENT_MAHOGANY_MART_OWNERS
--- a/maps/MahoganyPokeCenter1F.asm
+++ b/maps/MahoganyPokeCenter1F.asm
@@ -1,8 +1,8 @@
 MahoganyPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x19a356:
@@ -51,21 +51,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 4, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 	warp_def $7, $4, 4, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x19a356, -1
-	person_event SPRITE_POKEFAN_M, 6, 11, $2, $11, 255, 255, $80, 0, PokefanMScript_0x19a359, -1
-	person_event SPRITE_YOUNGSTER, 7, 5, $9, $0, 255, 255, $a0, 0, YoungsterScript_0x19a35c, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 6, $8, $0, 255, 255, $0, 0, CooltrainerFScript_0x19a35f, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x19a356, -1
+	person_event SPRITE_POKEFAN_M, 6, 11, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x19a359, -1
+	person_event SPRITE_YOUNGSTER, 7, 5, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x19a35c, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 6, OW_LEFT | $0, $0, -1, -1, $0, 0, CooltrainerFScript_0x19a35f, -1
--- a/maps/MahoganyRedGyaradosSpeechHouse.asm
+++ b/maps/MahoganyRedGyaradosSpeechHouse.asm
@@ -1,8 +1,8 @@
 MahoganyRedGyaradosSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BlackBeltScript_0x19997f:
@@ -60,18 +60,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 	warp_def $7, $3, 2, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_BLACK_BELT, 7, 6, $9, $0, 255, 255, $0, 0, BlackBeltScript_0x19997f, -1
-	person_event SPRITE_TEACHER, 9, 10, $4, $10, 255, 255, $90, 0, TeacherScript_0x199982, -1
+	person_event SPRITE_BLACK_BELT, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, BlackBeltScript_0x19997f, -1
+	person_event SPRITE_TEACHER, 9, 10, OW_UP | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x199982, -1
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -1,5 +1,5 @@
 MahoganyTown_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw .Trigger1, $0000
 	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -23,7 +23,7 @@
 	return
 
 UnknownScript_0x190013:
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	applymovement $2, MovementData_0x1900a9
 	follow $0, $2
 	applymovement $0, MovementData_0x1900a7
@@ -246,7 +246,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $7, $b, 1, GROUP_MAHOGANY_MART_1F, MAP_MAHOGANY_MART_1F
 	warp_def $7, $11, 1, GROUP_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE, MAP_MAHOGANY_RED_GYARADOS_SPEECH_HOUSE
@@ -254,21 +254,21 @@
 	warp_def $d, $f, 1, GROUP_MAHOGANY_POKECENTER_1F, MAP_MAHOGANY_POKECENTER_1F
 	warp_def $1, $9, 3, GROUP_ROUTE_43_MAHOGANY_GATE, MAP_ROUTE_43_MAHOGANY_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $8, $13, $0, UnknownScript_0x190013, $0, $0
 	xy_trigger 0, $9, $13, $0, UnknownScript_0x190013, $0, $0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 5, 1, $0, MahoganyTownSign
-	signpost 7, 9, $0, MahoganyTownRagecandybarSign
-	signpost 13, 3, $0, MahoganyGymSign
-	signpost 13, 16, $0, MahoganyTownPokeCenterSign
+	signpost 5, 1, SIGNPOST_READ, MahoganyTownSign
+	signpost 7, 9, SIGNPOST_READ, MahoganyTownRagecandybarSign
+	signpost 13, 3, SIGNPOST_READ, MahoganyGymSign
+	signpost 13, 16, SIGNPOST_READ, MahoganyTownPokeCenterSign
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKEFAN_M, 12, 23, $6, $0, 255, 255, $0, 0, PokefanMScript_0x19002e, EVENT_756
-	person_event SPRITE_GRAMPS, 13, 10, $5, $1, 255, 255, $0, 0, GrampsScript_0x19007e, -1
-	person_event SPRITE_FISHER, 18, 10, $6, $0, 255, 255, $a0, 0, FisherScript_0x190092, EVENT_757
-	person_event SPRITE_LASS, 12, 16, $6, $0, 255, 255, $0, 0, LassScript_0x190095, EVENT_736
+	person_event SPRITE_POKEFAN_M, 12, 23, OW_UP | $2, $0, -1, -1, $0, 0, PokefanMScript_0x19002e, EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_EAST
+	person_event SPRITE_GRAMPS, 13, 10, OW_UP | $1, $1, -1, -1, $0, 0, GrampsScript_0x19007e, -1
+	person_event SPRITE_FISHER, 18, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x190092, EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_GYM
+	person_event SPRITE_LASS, 12, 16, OW_UP | $2, $0, -1, -1, $0, 0, LassScript_0x190095, EVENT_MAHOGANY_MART_OWNERS
--- a/maps/ManiasHouse.asm
+++ b/maps/ManiasHouse.asm
@@ -1,8 +1,8 @@
 ManiasHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 RockerScript_0x9d278:
@@ -199,17 +199,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $7, $3, 1, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_ROCKER, 8, 6, $3, $0, 255, 255, $0, 0, RockerScript_0x9d278, -1
+	person_event SPRITE_ROCKER, 8, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, RockerScript_0x9d278, -1
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -1,22 +1,22 @@
 MobileBattleRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x1935ce, $0000
-	dw UnknownScript_0x1935d2, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
-UnknownScript_0x1935ce:
-	priorityjump UnknownScript_0x1935d3
+.Trigger1:
+	priorityjump MobileBattleRoom_Initialize
 	end
 
-UnknownScript_0x1935d2:
+.Trigger2:
 	end
 
-UnknownScript_0x1935d3:
+MobileBattleRoom_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $5
 	end
@@ -24,45 +24,45 @@
 MapMobileBattleRoomSignpost0Script:
 	refreshscreen $0
 	special Function1037c2
-	if_equal $1, UnknownScript_0x193619
+	if_equal $1, .one
 	special Function1037eb
-	iffalse UnknownScript_0x193624
-	if_equal $1, UnknownScript_0x1935f4
-	if_equal $2, UnknownScript_0x19360d
-	jump UnknownScript_0x193624
+	iffalse .false
+	if_equal $1, .one_
+	if_equal $2, .two_
+	jump .false
 
-UnknownScript_0x1935f4:
-	writetext UnknownText_0x193644
+.one_:
+	writetext MobileBattleRoom_HealText
 	pause 20
 	loadmovesprites
-	special Function8c084
+	special FadeBlackBGMap
 	playmusic MUSIC_HEAL
-	special Function1047eb
+	special LoadMapPalettes
 	pause 60
-	special Function8c079
+	special FadeInBGMap
 	special RestartMapMusic
 	refreshscreen $0
-UnknownScript_0x19360d:
-	special Function1060a2
+.two_:
+	special Mobile_HealParty
 	special HealParty
 	special Function10383c
-	iftrue UnknownScript_0x193624
-UnknownScript_0x193619:
+	iftrue .false
+.one:
 	special Function10387b
-	writetext UnknownText_0x193626
+	writetext MobileBattleRoom_EstablishingCommsText
 	closetext
 	reloadmappart
 	special Function101225
-UnknownScript_0x193624:
+.false:
 	loadmovesprites
 	end
 
-UnknownText_0x193626:
+MobileBattleRoom_EstablishingCommsText:
 	text "Establishing"
 	line "communications…"
 	done
 
-UnknownText_0x193644:
+MobileBattleRoom_HealText:
 	text "Your #MON will"
 	line "be fully healed"
 	cont "before battle."
@@ -72,17 +72,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $4, 6, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $7, $5, 6, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 2, 4, $1, MapMobileBattleRoomSignpost0Script
+	signpost 2, 4, SIGNPOST_UP, MapMobileBattleRoomSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/MobileTradeRoomMobile.asm
+++ b/maps/MobileTradeRoomMobile.asm
@@ -1,22 +1,22 @@
 MobileTradeRoomMobile_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x193576, $0000
-	dw UnknownScript_0x19357a, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
-UnknownScript_0x193576:
-	priorityjump UnknownScript_0x19357b
+.Trigger1:
+	priorityjump MobileTradeRoomMobile_Initialize
 	end
 
-UnknownScript_0x19357a:
+.Trigger2:
 	end
 
-UnknownScript_0x19357b:
+MobileTradeRoomMobile_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $4
 	end
@@ -24,7 +24,7 @@
 MapMobileTradeRoomMobileSignpost0Script:
 	refreshscreen $0
 	special Function1037c2
-	writetext UnknownText_0x193591
+	writetext MobileTradeRoomMobile_EstablishingCommsText
 	closetext
 	reloadmappart
 	special Function101231
@@ -31,7 +31,7 @@
 	loadmovesprites
 	end
 
-UnknownText_0x193591:
+MobileTradeRoomMobile_EstablishingCommsText:
 	text "Establishing"
 	line "communications…"
 	done
@@ -40,17 +40,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $4, 5, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $7, $5, 5, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 2, 4, $1, MapMobileTradeRoomMobileSignpost0Script
+	signpost 2, 4, SIGNPOST_UP, MapMobileTradeRoomMobileSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/MountMoon.asm
+++ b/maps/MountMoon.asm
@@ -1,5 +1,5 @@
 MountMoon_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x74089, $0000
 	dw UnknownScript_0x7408d, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x74089:
@@ -18,7 +18,7 @@
 
 UnknownScript_0x7408e:
 	spriteface $0, RIGHT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	applymovement $2, MovementData_0x740f9
@@ -163,7 +163,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 8
 	warp_def $3, $3, 1, GROUP_ROUTE_3, MAP_ROUTE_3
 	warp_def $f, $f, 1, GROUP_ROUTE_4, MAP_ROUTE_4
@@ -174,12 +174,12 @@
 	warp_def $3, $19, 3, GROUP_MOUNT_MOON, MAP_MOUNT_MOON
 	warp_def $d, $19, 4, GROUP_MOUNT_MOON, MAP_MOUNT_MOON
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_SILVER, 7, 11, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_77A
+	person_event SPRITE_SILVER, 7, 11, OW_LEFT | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_MT_MOON_RIVAL
--- a/maps/MountMoonGiftShop.asm
+++ b/maps/MountMoonGiftShop.asm
@@ -1,8 +1,8 @@
 MountMoonGiftShop_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrampsScript_0x771a8:
@@ -25,20 +25,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 3, GROUP_MOUNT_MOON_SQUARE, MAP_MOUNT_MOON_SQUARE
 	warp_def $7, $4, 3, GROUP_MOUNT_MOON_SQUARE, MAP_MOUNT_MOON_SQUARE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_GRAMPS, 7, 8, $6, $0, 255, 1, $0, 0, GrampsScript_0x771a8, -1
-	person_event SPRITE_GRAMPS, 6, 5, $9, $0, 255, 2, $0, 0, GrampsScript_0x771a8, -1
-	person_event SPRITE_LASS, 10, 5, $5, $1, 255, 1, $0, 0, LassScript_0x771b0, -1
-	person_event SPRITE_LASS, 8, 9, $4, $10, 255, 2, $0, 0, LassScript_0x771b0, -1
+	person_event SPRITE_GRAMPS, 7, 8, OW_UP | $2, $0, -1, 1, $0, 0, GrampsScript_0x771a8, -1
+	person_event SPRITE_GRAMPS, 6, 5, OW_LEFT | $1, $0, -1, 2, $0, 0, GrampsScript_0x771a8, -1
+	person_event SPRITE_LASS, 10, 5, OW_UP | $1, $1, -1, 1, $0, 0, LassScript_0x771b0, -1
+	person_event SPRITE_LASS, 8, 9, OW_UP | $0, $10, -1, 2, $0, 0, LassScript_0x771b0, -1
--- a/maps/MountMoonSquare.asm
+++ b/maps/MountMoonSquare.asm
@@ -1,11 +1,11 @@
 MountMoonSquare_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x77092, $0000
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -18,7 +18,7 @@
 	end
 
 UnknownScript_0x77093:
-	setevent EVENT_0EC
+	setevent EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE 
 	return
 
 UnknownScript_0x77097:
@@ -27,11 +27,11 @@
 
 UnknownScript_0x7709a:
 	checkflag ENGINE_MT_MOON_SQUARE_CLEFAIRY
-	iftrue UnknownScript_0x77117
+	iftrue .NoDancing
 	checkcode VAR_WEEKDAY
-	if_not_equal MONDAY, UnknownScript_0x77117
+	if_not_equal MONDAY, .NoDancing
 	checknite
-	iffalse UnknownScript_0x77117
+	iffalse .NoDancing
 	appear $2
 	appear $3
 	applymovement $0, MovementData_0x77121
@@ -59,7 +59,7 @@
 	stopfollow
 	spriteface $2, DOWN
 	pause 10
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	spriteface $2, DOWN
 	cry CLEFAIRY
 	pause 15
@@ -68,16 +68,15 @@
 	disappear $2
 	disappear $3
 	stopfollow
-	clearevent EVENT_0EC
+	clearevent EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE
 	setflag ENGINE_MT_MOON_SQUARE_CLEFAIRY
 	end
 
-UnknownScript_0x77117:
+.NoDancing:
 	end
 
 MapMountMoonSquareSignpostItem0:
-	dw $00ec
-	db MOON_STONE
+	dwb EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE, MOON_STONE
 	
 
 MapMountMoonSquareSignpost1Script:
@@ -139,23 +138,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $5, $14, 5, GROUP_MOUNT_MOON, MAP_MOUNT_MOON
 	warp_def $b, $16, 6, GROUP_MOUNT_MOON, MAP_MOUNT_MOON
 	warp_def $7, $d, 1, GROUP_MOUNT_MOON_GIFT_SHOP, MAP_MOUNT_MOON_GIFT_SHOP
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $b, $7, $0, UnknownScript_0x7709a, $0, $0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 7, $7, MapMountMoonSquareSignpostItem0
-	signpost 7, 17, $0, MapMountMoonSquareSignpost1Script
+	signpost 7, 7, SIGNPOST_ITEM, MapMountMoonSquareSignpostItem0
+	signpost 7, 17, SIGNPOST_READ, MapMountMoonSquareSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_FAIRY, 10, 10, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_779
-	person_event SPRITE_FAIRY, 10, 11, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_779
-	person_event SPRITE_ROCK, 11, 11, $18, $0, 255, 255, $0, 0, MtMoonSquareRock, EVENT_778
+	person_event SPRITE_FAIRY, 10, 10, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_MT_MOON_SQUARE_CLEFAIRY
+	person_event SPRITE_FAIRY, 10, 11, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_MT_MOON_SQUARE_CLEFAIRY
+	person_event SPRITE_ROCK, 11, 11, OW_LEFT | $10, $0, -1, -1, $0, 0, MtMoonSquareRock, EVENT_MT_MOON_SQUARE_ROCK
--- a/maps/MountMortar1FInside.asm
+++ b/maps/MountMortar1FInside.asm
@@ -1,29 +1,13 @@
 MountMortar1FInside_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerPokemaniacMiller:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_MILLER
+	trainer EVENT_BEAT_POKEMANIAC_MILLER, POKEMANIAC, MILLER, PokemaniacMillerSeenText, PokemaniacMillerBeatenText, $0000, PokemaniacMillerScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, MILLER
-
-	; text when seen
-	dw PokemaniacMillerSeenText
-
-	; text when trainer beaten
-	dw PokemaniacMillerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacMillerScript
-
 PokemaniacMillerScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSupernerdMarkus:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_MARKUS
+	trainer EVENT_BEAT_SUPER_NERD_MARKUS, SUPER_NERD, MARKUS, SupernerdMarkusSeenText, SupernerdMarkusBeatenText, $0000, SupernerdMarkusScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, MARKUS
-
-	; text when seen
-	dw SupernerdMarkusSeenText
-
-	; text when trainer beaten
-	dw SupernerdMarkusBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdMarkusScript
-
 SupernerdMarkusScript:
 	talkaftercancel
 	loadfont
@@ -84,8 +52,7 @@
 	db ULTRA_BALL, 1
 
 MapMountMortar1FInsideSignpostItem0:
-	dw $0091
-	db MAX_REPEL
+	dwb EVENT_MOUNT_MORTAR_1F_INSIDE_HIDDEN_MAX_REPEL, MAX_REPEL
 	
 
 PokemaniacMillerSeenText:
@@ -142,7 +109,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $2f, $b, 5, GROUP_MOUNT_MORTAR_1F_OUTSIDE, MAP_MOUNT_MORTAR_1F_OUTSIDE
 	warp_def $2f, $1d, 6, GROUP_MOUNT_MORTAR_1F_OUTSIDE, MAP_MOUNT_MORTAR_1F_OUTSIDE
@@ -151,22 +118,22 @@
 	warp_def $13, $3, 1, GROUP_MOUNT_MORTAR_B1F, MAP_MOUNT_MORTAR_B1F
 	warp_def $9, $9, 2, GROUP_MOUNT_MORTAR_2F_INSIDE, MAP_MOUNT_MORTAR_2F_INSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 11, 30, $7, MapMountMortar1FInsideSignpostItem0
+	signpost 11, 30, SIGNPOST_ITEM, MapMountMortar1FInsideSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 10
-	person_event SPRITE_BOULDER, 47, 25, $19, $0, 255, 255, $0, 0, MountMortar1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 42, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de7c, EVENT_67D
-	person_event SPRITE_POKE_BALL, 14, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de7e, EVENT_67E
-	person_event SPRITE_POKE_BALL, 31, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de80, EVENT_67F
-	person_event SPRITE_POKE_BALL, 24, 26, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de82, EVENT_7A6
-	person_event SPRITE_POKE_BALL, 23, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de84, EVENT_7A7
-	person_event SPRITE_SUPER_NERD, 47, 37, $8, $0, 255, 255, $92, 3, TrainerPokemaniacMiller, -1
-	person_event SPRITE_SUPER_NERD, 32, 28, $a, $0, 255, 255, $b2, 3, TrainerSupernerdMarkus, -1
-	person_event SPRITE_POKE_BALL, 20, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de86, EVENT_7C8
-	person_event SPRITE_POKE_BALL, 21, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de88, EVENT_7C9
+	person_event SPRITE_BOULDER, 47, 25, OW_LEFT | $11, $0, -1, -1, $0, 0, MountMortar1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 42, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de7c, EVENT_MOUNT_MORTAR_1F_INSIDE_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 14, 20, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de7e, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 31, 14, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de80, EVENT_MOUNT_MORTAR_1F_INSIDE_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 24, 26, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de82, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_POTION
+	person_event SPRITE_POKE_BALL, 23, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de84, EVENT_MOUNT_MORTAR_1F_INSIDE_NUGGET
+	person_event SPRITE_SUPER_NERD, 47, 37, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacMiller, -1
+	person_event SPRITE_SUPER_NERD, 32, 28, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerSupernerdMarkus, -1
+	person_event SPRITE_POKE_BALL, 20, 12, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de86, EVENT_MOUNT_MORTAR_1F_INSIDE_IRON
+	person_event SPRITE_POKE_BALL, 21, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de88, EVENT_MOUNT_MORTAR_1F_INSIDE_ULTRA_BALL
--- a/maps/MountMortar1FOutside.asm
+++ b/maps/MountMortar1FOutside.asm
@@ -1,8 +1,8 @@
 MountMortar1FOutside_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x7ddf6:
@@ -12,8 +12,7 @@
 	db REVIVE, 1
 
 MapMountMortar1FOutsideSignpostItem0:
-	dw $0090
-	db HYPER_POTION
+	dwb EVENT_MOUNT_MORTAR_1F_OUTSIDE_HIDDEN_HYPER_POTION, HYPER_POTION
 	
 
 MountMortar1FOutside_MapEventHeader:
@@ -20,7 +19,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 9
 	warp_def $21, $3, 3, GROUP_ROUTE_42, MAP_ROUTE_42
 	warp_def $21, $11, 4, GROUP_ROUTE_42, MAP_ROUTE_42
@@ -32,14 +31,14 @@
 	warp_def $d, $7, 3, GROUP_MOUNT_MORTAR_1F_INSIDE, MAP_MOUNT_MORTAR_1F_INSIDE
 	warp_def $d, $21, 4, GROUP_MOUNT_MORTAR_1F_INSIDE, MAP_MOUNT_MORTAR_1F_INSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 22, 25, $7, MapMountMortar1FOutsideSignpostItem0
+	signpost 22, 25, SIGNPOST_ITEM, MapMountMortar1FOutsideSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 19, 17, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ddf6, EVENT_67B
-	person_event SPRITE_POKE_BALL, 22, 35, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ddf8, EVENT_67C
+	person_event SPRITE_POKE_BALL, 19, 17, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ddf6, EVENT_MOUNT_MORTAR_1F_OUTSIDE_ETHER
+	person_event SPRITE_POKE_BALL, 22, 35, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ddf8, EVENT_MOUNT_MORTAR_1F_OUTSIDE_REVIVE
--- a/maps/MountMortar2FInside.asm
+++ b/maps/MountMortar2FInside.asm
@@ -1,29 +1,13 @@
 MountMortar2FInside_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerSupernerdHugh:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_HUGH
+	trainer EVENT_BEAT_SUPER_NERD_HUGH, SUPER_NERD, HUGH, SupernerdHughSeenText, SupernerdHughBeatenText, $0000, SupernerdHughScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, HUGH
-
-	; text when seen
-	dw SupernerdHughSeenText
-
-	; text when trainer beaten
-	dw SupernerdHughBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdHughScript
-
 SupernerdHughScript:
 	talkaftercancel
 	loadfont
@@ -51,8 +35,7 @@
 	db ESCAPE_ROPE, 1
 
 MapMountMortar2FInsideSignpostItem0:
-	dw $0092
-	db FULL_RESTORE
+	dwb EVENT_MOUNT_MORTAR_2F_INSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
 SupernerdHughSeenText:
@@ -79,24 +62,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $21, $11, 4, GROUP_MOUNT_MORTAR_1F_OUTSIDE, MAP_MOUNT_MORTAR_1F_OUTSIDE
 	warp_def $5, $3, 6, GROUP_MOUNT_MORTAR_1F_INSIDE, MAP_MOUNT_MORTAR_1F_INSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 8, 24, $7, MapMountMortar2FInsideSignpostItem0
+	signpost 8, 24, SIGNPOST_ITEM, MapMountMortar2FInsideSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_POKE_BALL, 26, 32, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0de, EVENT_680
-	person_event SPRITE_POKE_BALL, 37, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e0, EVENT_681
-	person_event SPRITE_POKE_BALL, 21, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e2, EVENT_682
-	person_event SPRITE_POKE_BALL, 9, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e4, EVENT_683
-	person_event SPRITE_POKE_BALL, 15, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e6, EVENT_684
-	person_event SPRITE_POKE_BALL, 9, 32, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e8, EVENT_685
-	person_event SPRITE_SUPER_NERD, 30, 17, $a, $0, 255, 255, $b2, 2, TrainerSupernerdHugh, -1
+	person_event SPRITE_POKE_BALL, 26, 32, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0de, EVENT_MOUNT_MORTAR_2F_INSIDE_MAX_POTION
+	person_event SPRITE_POKE_BALL, 37, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e0, EVENT_MOUNT_MORTAR_2F_INSIDE_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 21, 23, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e2, EVENT_MOUNT_MORTAR_2F_INSIDE_TM_DEFENSE_CURL
+	person_event SPRITE_POKE_BALL, 9, 20, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e4, EVENT_MOUNT_MORTAR_2F_INSIDE_DRAGON_SCALE
+	person_event SPRITE_POKE_BALL, 15, 13, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e6, EVENT_MOUNT_MORTAR_2F_INSIDE_ELIXER
+	person_event SPRITE_POKE_BALL, 9, 32, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e8, EVENT_MOUNT_MORTAR_2F_INSIDE_ESCAPE_ROPE
+	person_event SPRITE_SUPER_NERD, 30, 17, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerSupernerdHugh, -1
--- a/maps/MountMortarB1F.asm
+++ b/maps/MountMortarB1F.asm
@@ -1,8 +1,8 @@
 MountMortarB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BlackBeltScript_0x7e1f6:
@@ -63,8 +63,7 @@
 	db PP_UP, 1
 
 MapMountMortarB1FSignpostItem0:
-	dw $0093
-	db MAX_REVIVE
+	dwb EVENT_MOUNT_MORTAR_B1F_HIDDEN_MAX_REVIVE, MAX_REVIVE
 	
 
 UnknownText_0x7e24d:
@@ -131,24 +130,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $3, 5, GROUP_MOUNT_MORTAR_1F_INSIDE, MAP_MOUNT_MORTAR_1F_INSIDE
 	warp_def $1d, $13, 7, GROUP_MOUNT_MORTAR_1F_OUTSIDE, MAP_MOUNT_MORTAR_1F_OUTSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 6, 4, $7, MapMountMortarB1FSignpostItem0
+	signpost 6, 4, SIGNPOST_ITEM, MapMountMortarB1FSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_POKE_BALL, 16, 33, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e240, EVENT_686
-	person_event SPRITE_POKE_BALL, 20, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e242, EVENT_687
-	person_event SPRITE_BOULDER, 14, 13, $19, $0, 255, 255, $0, 0, MountMortarB1FBoulder, -1
-	person_event SPRITE_BLACK_BELT, 8, 20, $6, $0, 255, 255, $b0, 0, BlackBeltScript_0x7e1f6, -1
-	person_event SPRITE_POKE_BALL, 28, 38, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e244, EVENT_7CA
-	person_event SPRITE_POKE_BALL, 7, 36, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e246, EVENT_7CB
-	person_event SPRITE_POKE_BALL, 30, 25, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e248, EVENT_7CC
+	person_event SPRITE_POKE_BALL, 16, 33, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e240, EVENT_MOUNT_MORTAR_B1F_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 20, 8, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e242, EVENT_MOUNT_MORTAR_B1F_CARBOS
+	person_event SPRITE_BOULDER, 14, 13, OW_LEFT | $11, $0, -1, -1, $0, 0, MountMortarB1FBoulder, -1
+	person_event SPRITE_BLACK_BELT, 8, 20, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BlackBeltScript_0x7e1f6, -1
+	person_event SPRITE_POKE_BALL, 28, 38, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e244, EVENT_MOUNT_MORTAR_B1F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 7, 36, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e246, EVENT_MOUNT_MORTAR_B1F_MAX_ETHER
+	person_event SPRITE_POKE_BALL, 30, 25, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e248, EVENT_MOUNT_MORTAR_B1F_PP_UP
--- a/maps/MoveDeletersHouse.asm
+++ b/maps/MoveDeletersHouse.asm
@@ -1,8 +1,8 @@
 MoveDeletersHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MoveDeleter:
@@ -20,19 +20,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 	warp_def $7, $3, 6, GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, MoveDeletersHouseBookshelf
-	signpost 1, 1, $0, MoveDeletersHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MoveDeletersHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MoveDeletersHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_SUPER_NERD, 7, 6, $6, $0, 255, 255, $0, 0, MoveDeleter, -1
+	person_event SPRITE_SUPER_NERD, 7, 6, OW_UP | $2, $0, -1, -1, $0, 0, MoveDeleter, -1
--- a/maps/MrFujisHouse.asm
+++ b/maps/MrFujisHouse.asm
@@ -1,8 +1,8 @@
 MrFujisHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SuperNerdScript_0x7e8ca:
@@ -76,23 +76,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $3, 2, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, MrFujisHouseBookshelf
-	signpost 1, 1, $0, MrFujisHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MrFujisHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MrFujisHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_SUPER_NERD, 5, 8, $6, $0, 255, 255, $a0, 0, SuperNerdScript_0x7e8ca, -1
-	person_event SPRITE_LASS, 8, 7, $2, $11, 255, 255, $0, 0, LassScript_0x7e8cd, -1
-	person_event SPRITE_RHYDON, 8, 11, $16, $0, 255, 255, $0, 0, MrFujisPsyduck, -1
-	person_event SPRITE_GROWLITHE, 9, 9, $16, $0, 255, 255, $90, 0, MrFujisNidorino, -1
-	person_event SPRITE_MOLTRES, 7, 5, $16, $0, 255, 255, $b0, 0, MrFujisPidgey, -1
+	person_event SPRITE_SUPER_NERD, 5, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x7e8ca, -1
+	person_event SPRITE_LASS, 8, 7, OW_DOWN | $2, $11, -1, -1, $0, 0, LassScript_0x7e8cd, -1
+	person_event SPRITE_RHYDON, 8, 11, OW_UP | $12, $0, -1, -1, $0, 0, MrFujisPsyduck, -1
+	person_event SPRITE_GROWLITHE, 9, 9, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, MrFujisNidorino, -1
+	person_event SPRITE_MOLTRES, 7, 5, OW_UP | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MrFujisPidgey, -1
--- a/maps/MrPokemonsHouse.asm
+++ b/maps/MrPokemonsHouse.asm
@@ -1,5 +1,5 @@
 MrPokemonsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x196e51, $0000
 	dw UnknownScript_0x196e55, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x196e51:
@@ -17,7 +17,7 @@
 	end
 
 UnknownScript_0x196e56:
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	spriteface $2, DOWN
 	loadfont
 	writetext UnknownText_0x196f66
@@ -108,39 +108,39 @@
 	writetext UnknownText_0x1970ed
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	playmusic MUSIC_HEAL
-	special Function1060a2
+	special Mobile_HealParty
 	special HealParty
 	pause 60
-	special Function8c0ab
+	special Special_FadeInQuickly
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x197134
 	closetext
 	loadmovesprites
-	setevent EVENT_6BD
-	setevent EVENT_792
-	clearevent EVENT_793
+	setevent EVENT_RIVAL_NEW_BARK_TOWN
+	setevent EVENT_KRISS_HOUSE_1F_NEIGHBOR
+	clearevent EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
 	dotrigger $1
 	domaptrigger GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY, $1
 	domaptrigger GROUP_ELMS_LAB, MAP_ELMS_LAB, $3
-	specialphonecall $2
-	clearevent EVENT_702
+	specialphonecall ELMCALL_ROBBED
+	clearevent EVENT_COP_IN_ELMS_LAB
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x196f49
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
 	iftrue UnknownScript_0x196f4d
-	setevent EVENT_641
+	setevent EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
 	end
 
 UnknownScript_0x196f49:
-	setevent EVENT_642
+	setevent EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
 	end
 
 UnknownScript_0x196f4d:
-	setevent EVENT_640
+	setevent EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
 	end
 
 MapMrPokemonsHouseSignpost1Script:
@@ -374,23 +374,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_ROUTE_30, MAP_ROUTE_30
 	warp_def $7, $3, 2, GROUP_ROUTE_30, MAP_ROUTE_30
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 1, 0, $0, MapMrPokemonsHouseSignpost1Script
-	signpost 1, 1, $0, MapMrPokemonsHouseSignpost1Script
-	signpost 1, 6, $0, MapMrPokemonsHouseSignpost3Script
-	signpost 1, 7, $0, MapMrPokemonsHouseSignpost3Script
-	signpost 4, 6, $0, MapMrPokemonsHouseSignpost4Script
+	signpost 1, 0, SIGNPOST_READ, MapMrPokemonsHouseSignpost1Script
+	signpost 1, 1, SIGNPOST_READ, MapMrPokemonsHouseSignpost1Script
+	signpost 1, 6, SIGNPOST_READ, MapMrPokemonsHouseSignpost3Script
+	signpost 1, 7, SIGNPOST_READ, MapMrPokemonsHouseSignpost3Script
+	signpost 4, 6, SIGNPOST_READ, MapMrPokemonsHouseSignpost4Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_GENTLEMAN, 9, 7, $9, $0, 255, 255, $0, 0, GentlemanScript_0x196e97, -1
-	person_event SPRITE_OAK, 9, 10, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C9
+	person_event SPRITE_GENTLEMAN, 9, 7, OW_LEFT | $1, $0, -1, -1, $0, 0, GentlemanScript_0x196e97, -1
+	person_event SPRITE_OAK, 9, 10, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_MR_POKEMONS_HOUSE_OAK
--- a/maps/MrPsychicsHouse.asm
+++ b/maps/MrPsychicsHouse.asm
@@ -1,8 +1,8 @@
 MrPsychicsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MrPsychic:
@@ -48,19 +48,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 5, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $7, $3, 5, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, MrPsychicsHouseBookshelf
-	signpost 1, 1, $0, MrPsychicsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MrPsychicsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MrPsychicsHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 9, $8, $0, 255, 255, $a0, 0, MrPsychic, -1
+	person_event SPRITE_FISHING_GURU, 7, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, MrPsychic, -1
--- a/maps/NationalPark.asm
+++ b/maps/NationalPark.asm
@@ -1,8 +1,8 @@
 NationalPark_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 LassScript_0x5c002:
@@ -56,31 +56,15 @@
 	end
 
 TrainerSchoolboyJack1:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_JACK
+	trainer EVENT_BEAT_SCHOOLBOY_JACK, SCHOOLBOY, JACK1, SchoolboyJack1SeenText, SchoolboyJack1BeatenText, $0000, SchoolboyJack1Script
 
-	; trainer group && trainer id
-	db SCHOOLBOY, JACK1
-
-	; text when seen
-	dw SchoolboyJack1SeenText
-
-	; text when trainer beaten
-	dw SchoolboyJack1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyJack1Script
-
 SchoolboyJack1Script:
-	writecode VAR_CALLERID, $5
+	writecode VAR_CALLERID, PHONE_SCHOOLBOY_JACK
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_JACK
 	iftrue UnknownScript_0x5c088
-	checkcellnum $5
+	checkcellnum PHONE_SCHOOLBOY_JACK
 	iftrue UnknownScript_0x5c108
 	checkevent EVENT_JACK_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x5c071
@@ -93,7 +77,7 @@
 UnknownScript_0x5c071:
 	scall UnknownScript_0x5c100
 UnknownScript_0x5c074:
-	askforphonenumber $5
+	askforphonenumber PHONE_SCHOOLBOY_JACK
 	if_equal $1, UnknownScript_0x5c110
 	if_equal $2, UnknownScript_0x5c10c
 	trainertotext SCHOOLBOY, JACK1, $0
@@ -189,24 +173,8 @@
 	end
 
 TrainerPokefanmWilliam:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_WILLIAM
+	trainer EVENT_BEAT_POKEFANM_WILLIAM, POKEFANM, WILLIAM, PokefanmWilliamSeenText, PokefanmWilliamBeatenText, $0000, PokefanmWilliamScript
 
-	; trainer group && trainer id
-	db POKEFANM, WILLIAM
-
-	; text when seen
-	dw PokefanmWilliamSeenText
-
-	; text when trainer beaten
-	dw PokefanmWilliamBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmWilliamScript
-
 PokefanmWilliamScript:
 	talkaftercancel
 	loadfont
@@ -216,31 +184,15 @@
 	end
 
 TrainerPokefanfBeverly1:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANF_BEVERLY
+	trainer EVENT_BEAT_POKEFANF_BEVERLY, POKEFANF, BEVERLY1, PokefanfBeverly1SeenText, PokefanfBeverly1BeatenText, $0000, PokefanfBeverly1Script
 
-	; trainer group && trainer id
-	db POKEFANF, BEVERLY1
-
-	; text when seen
-	dw PokefanfBeverly1SeenText
-
-	; text when trainer beaten
-	dw PokefanfBeverly1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanfBeverly1Script
-
 PokefanfBeverly1Script:
-	writecode VAR_CALLERID, $6
+	writecode VAR_CALLERID, PHONE_POKEFAN_BEVERLY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue UnknownScript_0x5c177
-	checkcellnum $6
+	checkcellnum PHONE_POKEFAN_BEVERLY
 	iftrue UnknownScript_0x5c19b
 	checkpoke MARILL
 	iffalse UnknownScript_0x5c189
@@ -255,7 +207,7 @@
 UnknownScript_0x5c160:
 	scall UnknownScript_0x5c193
 UnknownScript_0x5c163:
-	askforphonenumber $6
+	askforphonenumber PHONE_POKEFAN_BEVERLY
 	if_equal $1, UnknownScript_0x5c1a3
 	if_equal $2, UnknownScript_0x5c19f
 	trainertotext POKEFANF, BEVERLY1, $0
@@ -311,24 +263,8 @@
 	end
 
 TrainerLassKrise:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_KRISE
+	trainer EVENT_BEAT_LASS_KRISE, LASS, KRISE, LassKriseSeenText, LassKriseBeatenText, $0000, LassKriseScript
 
-	; trainer group && trainer id
-	db LASS, KRISE
-
-	; text when seen
-	dw LassKriseSeenText
-
-	; text when trainer beaten
-	dw LassKriseBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassKriseScript
-
 LassKriseScript:
 	talkaftercancel
 	loadfont
@@ -353,8 +289,7 @@
 	db TM_DIG, 1
 
 MapNationalParkSignpostItem2:
-	dw $0084
-	db FULL_HEAL
+	dwb EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
 UnknownText_0x5c1d3:
@@ -567,7 +502,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $12, $21, 1, GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE
 	warp_def $13, $21, 2, GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE
@@ -574,29 +509,29 @@
 	warp_def $2f, $a, 1, GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE
 	warp_def $2f, $b, 2, GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 44, 14, $0, MapNationalParkSignpost0Script
-	signpost 31, 27, $0, MapNationalParkSignpost1Script
-	signpost 47, 6, $7, MapNationalParkSignpostItem2
-	signpost 4, 12, $0, MapNationalParkSignpost3Script
+	signpost 44, 14, SIGNPOST_READ, MapNationalParkSignpost0Script
+	signpost 31, 27, SIGNPOST_READ, MapNationalParkSignpost1Script
+	signpost 47, 6, SIGNPOST_ITEM, MapNationalParkSignpostItem2
+	signpost 4, 12, SIGNPOST_READ, MapNationalParkSignpost3Script
 
-	; people-events
+.PersonEvents:
 	db 14
-	person_event SPRITE_LASS, 28, 19, $5, $1, 255, 255, $a0, 0, LassScript_0x5c002, -1
-	person_event SPRITE_POKEFAN_F, 8, 18, $6, $0, 255, 255, $0, 0, PokefanFScript_0x5c005, -1
-	person_event SPRITE_TEACHER, 44, 31, $6, $0, 255, 255, $a0, 0, TeacherScript_0x5c008, -1
-	person_event SPRITE_YOUNGSTER, 45, 15, $8, $0, 255, 255, $0, 0, YoungsterScript_0x5c023, -1
-	person_event SPRITE_YOUNGSTER, 45, 14, $6, $0, 255, 255, $80, 0, YoungsterScript_0x5c026, -1
-	person_event SPRITE_TEACHER, 45, 21, $2, $21, 255, 255, $0, 0, TeacherScript_0x5c029, -1
-	person_event SPRITE_GROWLITHE, 44, 30, $16, $0, 255, 255, $0, 0, GrowlitheScript_0x5c02c, -1
-	person_event SPRITE_YOUNGSTER, 27, 31, $a, $0, 255, 255, $92, 3, TrainerSchoolboyJack1, -1
-	person_event SPRITE_POKEFAN_F, 33, 22, $a, $0, 255, 255, $82, 2, TrainerPokefanfBeverly1, -1
-	person_event SPRITE_POKEFAN_M, 13, 20, $a, $0, 255, 255, $82, 2, TrainerPokefanmWilliam, -1
-	person_event SPRITE_LASS, 18, 12, $a, $0, 255, 255, $92, 3, TrainerLassKrise, -1
-	person_event SPRITE_POKE_BALL, 16, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c1cc, EVENT_658
-	person_event SPRITE_GAMEBOY_KID, 10, 30, $6, $0, 255, 255, $0, 0, GameboyKidScript_0x5c037, -1
-	person_event SPRITE_POKE_BALL, 47, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c1ce, EVENT_659
+	person_event SPRITE_LASS, 28, 19, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x5c002, -1
+	person_event SPRITE_POKEFAN_F, 8, 18, OW_UP | $2, $0, -1, -1, $0, 0, PokefanFScript_0x5c005, -1
+	person_event SPRITE_TEACHER, 44, 31, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x5c008, -1
+	person_event SPRITE_YOUNGSTER, 45, 15, OW_LEFT | $0, $0, -1, -1, $0, 0, YoungsterScript_0x5c023, -1
+	person_event SPRITE_YOUNGSTER, 45, 14, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c026, -1
+	person_event SPRITE_TEACHER, 45, 21, OW_DOWN | $2, $21, -1, -1, $0, 0, TeacherScript_0x5c029, -1
+	person_event SPRITE_GROWLITHE, 44, 30, OW_UP | $12, $0, -1, -1, $0, 0, GrowlitheScript_0x5c02c, -1
+	person_event SPRITE_YOUNGSTER, 27, 31, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyJack1, -1
+	person_event SPRITE_POKEFAN_F, 33, 22, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerPokefanfBeverly1, -1
+	person_event SPRITE_POKEFAN_M, 13, 20, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerPokefanmWilliam, -1
+	person_event SPRITE_LASS, 18, 12, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerLassKrise, -1
+	person_event SPRITE_POKE_BALL, 16, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c1cc, EVENT_NATIONAL_PARK_PARLYZ_HEAL
+	person_event SPRITE_GAMEBOY_KID, 10, 30, OW_UP | $2, $0, -1, -1, $0, 0, GameboyKidScript_0x5c037, -1
+	person_event SPRITE_POKE_BALL, 47, 5, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c1ce, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NationalParkBugContest.asm
+++ b/maps/NationalParkBugContest.asm
@@ -1,8 +1,8 @@
 NationalParkBugContest_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 YoungsterScript_0x5c8ec:
@@ -101,8 +101,7 @@
 	db TM_DIG, 1
 
 MapNationalParkBugContestSignpostItem2:
-	dw $0084
-	db FULL_HEAL
+	dwb EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
 UnknownText_0x5c94c:
@@ -212,7 +211,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $12, $21, 1, GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE
 	warp_def $13, $21, 1, GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE
@@ -219,27 +218,27 @@
 	warp_def $2f, $a, 1, GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE
 	warp_def $2f, $b, 1, GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 44, 14, $0, MapNationalParkBugContestSignpost0Script
-	signpost 31, 27, $0, MapNationalParkBugContestSignpost1Script
-	signpost 47, 6, $7, MapNationalParkBugContestSignpostItem2
-	signpost 4, 12, $0, MapNationalParkBugContestSignpost3Script
+	signpost 44, 14, SIGNPOST_READ, MapNationalParkBugContestSignpost0Script
+	signpost 31, 27, SIGNPOST_READ, MapNationalParkBugContestSignpost1Script
+	signpost 47, 6, SIGNPOST_ITEM, MapNationalParkBugContestSignpostItem2
+	signpost 4, 12, SIGNPOST_READ, MapNationalParkBugContestSignpost3Script
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_YOUNGSTER, 33, 23, $2, $22, 255, 255, $80, 0, YoungsterScript_0x5c8ec, EVENT_716
-	person_event SPRITE_YOUNGSTER, 26, 32, $2, $22, 255, 255, $a0, 0, YoungsterScript_0x5c8f4, EVENT_717
-	person_event SPRITE_ROCKER, 22, 13, $7, $0, 255, 255, $90, 0, RockerScript_0x5c8fc, EVENT_718
-	person_event SPRITE_POKEFAN_M, 17, 11, $4, $1, 255, 255, $b0, 0, PokefanMScript_0x5c904, EVENT_719
-	person_event SPRITE_YOUNGSTER, 13, 27, $3, $0, 255, 255, $80, 0, YoungsterScript_0x5c90c, EVENT_71A
-	person_event SPRITE_YOUNGSTER, 17, 31, $2, $33, 255, 255, $a0, 0, YoungsterScript_0x5c914, EVENT_71B
-	person_event SPRITE_LASS, 27, 11, $5, $2, 255, 255, $90, 0, LassScript_0x5c91c, EVENT_71C
-	person_event SPRITE_YOUNGSTER, 31, 15, $2, $11, 255, 255, $80, 0, YoungsterScript_0x5c924, EVENT_71D
-	person_event SPRITE_YOUNGSTER, 12, 20, $2, $11, 255, 255, $a0, 0, YoungsterScript_0x5c92c, EVENT_71E
-	person_event SPRITE_YOUNGSTER, 38, 21, $2, $33, 255, 255, $90, 0, YoungsterScript_0x5c934, EVENT_71F
-	person_event SPRITE_POKE_BALL, 16, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c945, EVENT_658
-	person_event SPRITE_POKE_BALL, 47, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c947, EVENT_659
+	person_event SPRITE_YOUNGSTER, 33, 23, OW_DOWN | $2, $22, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c8ec, EVENT_BUG_CATCHING_CONTESTANT_1A
+	person_event SPRITE_YOUNGSTER, 26, 32, OW_DOWN | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x5c8f4, EVENT_BUG_CATCHING_CONTESTANT_2A
+	person_event SPRITE_ROCKER, 22, 13, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, RockerScript_0x5c8fc, EVENT_BUG_CATCHING_CONTESTANT_3A
+	person_event SPRITE_POKEFAN_M, 17, 11, OW_UP | $0, $1, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x5c904, EVENT_BUG_CATCHING_CONTESTANT_4A
+	person_event SPRITE_YOUNGSTER, 13, 27, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c90c, EVENT_BUG_CATCHING_CONTESTANT_5A
+	person_event SPRITE_YOUNGSTER, 17, 31, OW_DOWN | $2, $33, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x5c914, EVENT_BUG_CATCHING_CONTESTANT_6A
+	person_event SPRITE_LASS, 27, 11, OW_UP | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x5c91c, EVENT_BUG_CATCHING_CONTESTANT_7A
+	person_event SPRITE_YOUNGSTER, 31, 15, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c924, EVENT_BUG_CATCHING_CONTESTANT_8A
+	person_event SPRITE_YOUNGSTER, 12, 20, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x5c92c, EVENT_BUG_CATCHING_CONTESTANT_9A
+	person_event SPRITE_YOUNGSTER, 38, 21, OW_DOWN | $2, $33, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x5c934, EVENT_BUG_CATCHING_CONTESTANT_10A
+	person_event SPRITE_POKE_BALL, 16, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c945, EVENT_NATIONAL_PARK_PARLYZ_HEAL
+	person_event SPRITE_POKE_BALL, 47, 5, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c947, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NewBarkTown.asm
+++ b/maps/NewBarkTown.asm
@@ -1,5 +1,5 @@
 NewBarkTown_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw .Trigger1, $0000
 	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -20,7 +20,7 @@
 
 .FlyPoint
 	setflag ENGINE_FLYPOINT_NEW_BARK
-	clearevent EVENT_076
+	clearevent EVENT_FIRST_TIME_BANKING_WITH_MOM
 	return
 
 UnknownScript_0x1a8016:
@@ -284,7 +284,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $3, $6, 1, GROUP_ELMS_LAB, MAP_ELMS_LAB
 	warp_def $5, $d, 1, GROUP_KRISS_HOUSE_1F, MAP_KRISS_HOUSE_1F
@@ -291,20 +291,20 @@
 	warp_def $b, $3, 1, GROUP_KRISS_NEIGHBORS_HOUSE, MAP_KRISS_NEIGHBORS_HOUSE
 	warp_def $d, $b, 1, GROUP_ELMS_HOUSE, MAP_ELMS_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $8, $1, $0, UnknownScript_0x1a8016, $0, $0
 	xy_trigger 0, $9, $1, $0, UnknownScript_0x1a8041, $0, $0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 8, 8, $0, MapNewBarkTownSignpost0Script
-	signpost 5, 11, $0, MapNewBarkTownSignpost1Script
-	signpost 3, 3, $0, MapNewBarkTownSignpost2Script
-	signpost 13, 9, $0, MapNewBarkTownSignpost3Script
+	signpost 8, 8, SIGNPOST_READ, MapNewBarkTownSignpost0Script
+	signpost 5, 11, SIGNPOST_READ, MapNewBarkTownSignpost1Script
+	signpost 3, 3, SIGNPOST_READ, MapNewBarkTownSignpost2Script
+	signpost 13, 9, SIGNPOST_READ, MapNewBarkTownSignpost3Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_TEACHER, 12, 10, $3, $1, 255, 255, $0, 0, TeacherScript_0x1a806f, -1
-	person_event SPRITE_FISHER, 13, 16, $4, $10, 255, 255, $a0, 0, FisherScript_0x1a809b, -1
-	person_event SPRITE_SILVER, 6, 7, $9, $0, 255, 255, $0, 0, SilverScript_0x1a809e, EVENT_6BD
+	person_event SPRITE_TEACHER, 12, 10, OW_DOWN | $3, $1, -1, -1, $0, 0, TeacherScript_0x1a806f, -1
+	person_event SPRITE_FISHER, 13, 16, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a809b, -1
+	person_event SPRITE_SILVER, 6, 7, OW_LEFT | $1, $0, -1, -1, $0, 0, SilverScript_0x1a809e, EVENT_RIVAL_NEW_BARK_TOWN
--- a/maps/OaksLab.asm
+++ b/maps/OaksLab.asm
@@ -1,8 +1,8 @@
 OaksLab_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x19b3c7:
@@ -254,36 +254,36 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $b, $4, 3, GROUP_PALLET_TOWN, MAP_PALLET_TOWN
 	warp_def $b, $5, 3, GROUP_PALLET_TOWN, MAP_PALLET_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 16
-	signpost 1, 6, $0, OaksLabBookshelf
-	signpost 1, 7, $0, OaksLabBookshelf
-	signpost 1, 8, $0, OaksLabBookshelf
-	signpost 1, 9, $0, OaksLabBookshelf
-	signpost 7, 0, $0, OaksLabBookshelf
-	signpost 7, 1, $0, OaksLabBookshelf
-	signpost 7, 2, $0, OaksLabBookshelf
-	signpost 7, 3, $0, OaksLabBookshelf
-	signpost 7, 6, $0, OaksLabBookshelf
-	signpost 7, 7, $0, OaksLabBookshelf
-	signpost 7, 8, $0, OaksLabBookshelf
-	signpost 7, 9, $0, OaksLabBookshelf
-	signpost 0, 4, $0, OaksLabPoster1
-	signpost 0, 5, $0, OaksLabPoster2
-	signpost 3, 9, $0, OaksLabTrashcan
-	signpost 1, 0, $0, OaksLabPC
+	signpost 1, 6, SIGNPOST_READ, OaksLabBookshelf
+	signpost 1, 7, SIGNPOST_READ, OaksLabBookshelf
+	signpost 1, 8, SIGNPOST_READ, OaksLabBookshelf
+	signpost 1, 9, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 0, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 1, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 2, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 3, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 6, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 7, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 8, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 9, SIGNPOST_READ, OaksLabBookshelf
+	signpost 0, 4, SIGNPOST_READ, OaksLabPoster1
+	signpost 0, 5, SIGNPOST_READ, OaksLabPoster2
+	signpost 3, 9, SIGNPOST_READ, OaksLabTrashcan
+	signpost 1, 0, SIGNPOST_READ, OaksLabPC
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_OAK, 6, 8, $6, $0, 255, 255, $0, 0, Oak, -1
-	person_event SPRITE_SCIENTIST, 12, 5, $5, $1, 255, 255, $90, 0, ScientistScript_0x19b40f, -1
-	person_event SPRITE_SCIENTIST, 13, 12, $4, $10, 255, 255, $90, 0, ScientistScript_0x19b412, -1
-	person_event SPRITE_SCIENTIST, 8, 5, $2, $11, 255, 255, $90, 0, ScientistScript_0x19b415, -1
+	person_event SPRITE_OAK, 6, 8, OW_UP | $2, $0, -1, -1, $0, 0, Oak, -1
+	person_event SPRITE_SCIENTIST, 12, 5, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x19b40f, -1
+	person_event SPRITE_SCIENTIST, 13, 12, OW_UP | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x19b412, -1
+	person_event SPRITE_SCIENTIST, 8, 5, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x19b415, -1
--- a/maps/OlivineCafe.asm
+++ b/maps/OlivineCafe.asm
@@ -1,8 +1,8 @@
 OlivineCafe_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SailorScript_0x9c8c1:
@@ -77,19 +77,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 7, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $3, 7, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_SAILOR, 7, 8, $8, $0, 255, 255, $0, 0, SailorScript_0x9c8c1, -1
-	person_event SPRITE_FISHING_GURU, 7, 11, $4, $10, 255, 255, $0, 0, FishingGuruScript_0x9c8d9, -1
-	person_event SPRITE_SAILOR, 10, 10, $7, $0, 255, 255, $0, 0, SailorScript_0x9c8dc, -1
+	person_event SPRITE_SAILOR, 7, 8, OW_LEFT | $0, $0, -1, -1, $0, 0, SailorScript_0x9c8c1, -1
+	person_event SPRITE_FISHING_GURU, 7, 11, OW_UP | $0, $10, -1, -1, $0, 0, FishingGuruScript_0x9c8d9, -1
+	person_event SPRITE_SAILOR, 10, 10, OW_UP | $3, $0, -1, -1, $0, 0, SailorScript_0x9c8dc, -1
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -1,5 +1,5 @@
 OlivineCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw .Trigger1, $0000
 	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -24,7 +24,7 @@
 
 UnknownScript_0x1a8833:
 	spriteface $0, LEFT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	playsound SFX_ENTER_DOOR
@@ -42,13 +42,13 @@
 	dotrigger $1
 	disappear $5
 	special RestartMapMusic
-	variablesprite $5, $31
-	special Function14209
+	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
+	special RunCallback_04
 	end
 
 UnknownScript_0x1a886b:
 	spriteface $0, LEFT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	playsound SFX_ENTER_DOOR
@@ -66,8 +66,8 @@
 	disappear $5
 	dotrigger $1
 	special RestartMapMusic
-	variablesprite $5, $31
-	special Function14209
+	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
+	special RunCallback_04
 	end
 
 SailorScript_0x1a88a3:
@@ -289,7 +289,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 11
 	warp_def $15, $d, 1, GROUP_OLIVINE_POKECENTER_1F, MAP_OLIVINE_POKECENTER_1F
 	warp_def $b, $a, 1, GROUP_OLIVINE_GYM, MAP_OLIVINE_GYM
@@ -303,24 +303,24 @@
 	warp_def $1b, $13, 1, GROUP_OLIVINE_PORT_PASSAGE, MAP_OLIVINE_PORT_PASSAGE
 	warp_def $1b, $14, 2, GROUP_OLIVINE_PORT_PASSAGE, MAP_OLIVINE_PORT_PASSAGE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $c, $d, $0, UnknownScript_0x1a8833, $0, $0
 	xy_trigger 0, $d, $d, $0, UnknownScript_0x1a886b, $0, $0
 
-	; signposts
+.Signposts:
 	db 7
-	signpost 11, 17, $0, OlivineCitySign
-	signpost 24, 20, $0, OlivineCityPortSign
-	signpost 11, 7, $0, OlivineGymSign
-	signpost 28, 30, $0, OlivineLighthouseSign
-	signpost 23, 3, $0, OlivineCityBattleTowerSign
-	signpost 21, 14, $0, OlivineCityPokeCenterSign
-	signpost 17, 20, $0, OlivineCityMartSign
+	signpost 11, 17, SIGNPOST_READ, OlivineCitySign
+	signpost 24, 20, SIGNPOST_READ, OlivineCityPortSign
+	signpost 11, 7, SIGNPOST_READ, OlivineGymSign
+	signpost 28, 30, SIGNPOST_READ, OlivineLighthouseSign
+	signpost 23, 3, SIGNPOST_READ, OlivineCityBattleTowerSign
+	signpost 21, 14, SIGNPOST_READ, OlivineCityPokeCenterSign
+	signpost 17, 20, SIGNPOST_READ, OlivineCityMartSign
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_SAILOR, 31, 30, $4, $10, 255, 255, $0, 0, SailorScript_0x1a88a3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 17, 24, $3, $0, 255, 255, $80, 0, StandingYoungsterScript_0x1a88a6, -1
-	person_event SPRITE_SAILOR, 25, 21, $2, $11, 255, 255, $0, 0, SailorScript_0x1a88ba, -1
-	person_event SPRITE_OLIVINE_RIVAL, 15, 14, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C3
+	person_event SPRITE_SAILOR, 31, 30, OW_UP | $0, $10, -1, -1, $0, 0, SailorScript_0x1a88a3, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 17, 24, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, StandingYoungsterScript_0x1a88a6, -1
+	person_event SPRITE_SAILOR, 25, 21, OW_DOWN | $2, $11, -1, -1, $0, 0, SailorScript_0x1a88ba, -1
+	person_event SPRITE_OLIVINE_RIVAL, 15, 14, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_OLIVINE_CITY
--- a/maps/OlivineGoodRodHouse.asm
+++ b/maps/OlivineGoodRodHouse.asm
@@ -1,8 +1,8 @@
 OlivineGoodRodHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GoodRodGuru:
@@ -83,17 +83,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $3, 6, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $6, $0, 255, 255, $a0, 0, GoodRodGuru, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GoodRodGuru, -1
--- a/maps/OlivineGym.asm
+++ b/maps/OlivineGym.asm
@@ -1,8 +1,8 @@
 OlivineGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 JasmineScript_0x9c12f:
@@ -197,20 +197,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $4, 2, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $f, $5, 2, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 13, 3, $0, OlivineGymStatue
-	signpost 13, 6, $0, OlivineGymStatue
+	signpost 13, 3, SIGNPOST_READ, OlivineGymStatue
+	signpost 13, 6, SIGNPOST_READ, OlivineGymStatue
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_JASMINE, 7, 9, $6, $0, 255, 255, $80, 0, JasmineScript_0x9c12f, EVENT_6D3
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $80, 0, OlivineGymGuyScript, -1
+	person_event SPRITE_JASMINE, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, JasmineScript_0x9c12f, EVENT_OLIVINE_GYM_JASMINE
+	person_event SPRITE_GYM_GUY, 17, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OlivineGymGuyScript, -1
--- a/maps/OlivineHouseBeta.asm
+++ b/maps/OlivineHouseBeta.asm
@@ -1,8 +1,8 @@
 OlivineHouseBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x9c58f:
@@ -39,20 +39,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $3, 4, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, OlivineHouseBetaBookshelf1
-	signpost 1, 1, $0, OlivineHouseBetaBookshelf2
+	signpost 1, 0, SIGNPOST_READ, OlivineHouseBetaBookshelf1
+	signpost 1, 1, SIGNPOST_READ, OlivineHouseBetaBookshelf2
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_TEACHER, 7, 6, $3, $0, 255, 255, $0, 0, TeacherScript_0x9c58f, -1
-	person_event SPRITE_RHYDON, 8, 10, $4, $20, 255, 255, $0, 0, RhydonScript_0x9c592, -1
+	person_event SPRITE_TEACHER, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, TeacherScript_0x9c58f, -1
+	person_event SPRITE_RHYDON, 8, 10, OW_UP | $0, $20, -1, -1, $0, 0, RhydonScript_0x9c592, -1
--- a/maps/OlivineLighthouse1F.asm
+++ b/maps/OlivineLighthouse1F.asm
@@ -1,8 +1,8 @@
 OlivineLighthouse1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SailorScript_0x5ae67:
@@ -36,7 +36,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $11, $a, 9, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $11, $b, 9, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
@@ -44,13 +44,13 @@
 	warp_def $d, $10, 3, GROUP_OLIVINE_LIGHTHOUSE_2F, MAP_OLIVINE_LIGHTHOUSE_2F
 	warp_def $d, $11, 4, GROUP_OLIVINE_LIGHTHOUSE_2F, MAP_OLIVINE_LIGHTHOUSE_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_SAILOR, 6, 12, $6, $0, 255, 255, $0, 0, SailorScript_0x5ae67, -1
-	person_event SPRITE_POKEFAN_F, 13, 20, $4, $20, 255, 255, $0, 0, PokefanFScript_0x5ae6a, -1
+	person_event SPRITE_SAILOR, 6, 12, OW_UP | $2, $0, -1, -1, $0, 0, SailorScript_0x5ae67, -1
+	person_event SPRITE_POKEFAN_F, 13, 20, OW_UP | $0, $20, -1, -1, $0, 0, PokefanFScript_0x5ae6a, -1
--- a/maps/OlivineLighthouse2F.asm
+++ b/maps/OlivineLighthouse2F.asm
@@ -1,29 +1,13 @@
 OlivineLighthouse2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerGentlemanAlfred:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_ALFRED
+	trainer EVENT_BEAT_GENTLEMAN_ALFRED, GENTLEMAN, ALFRED, GentlemanAlfredSeenText, GentlemanAlfredBeatenText, $0000, GentlemanAlfredScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, ALFRED
-
-	; text when seen
-	dw GentlemanAlfredSeenText
-
-	; text when trainer beaten
-	dw GentlemanAlfredBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanAlfredScript
-
 GentlemanAlfredScript:
 	talkaftercancel
 	loadfont
@@ -33,31 +17,15 @@
 	end
 
 TrainerSailorHuey1:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_HUEY
+	trainer EVENT_BEAT_SAILOR_HUEY, SAILOR, HUEY1, SailorHuey1SeenText, SailorHuey1BeatenText, $0000, SailorHuey1Script
 
-	; trainer group && trainer id
-	db SAILOR, HUEY1
-
-	; text when seen
-	dw SailorHuey1SeenText
-
-	; text when trainer beaten
-	dw SailorHuey1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorHuey1Script
-
 SailorHuey1Script:
-	writecode VAR_CALLERID, $7
+	writecode VAR_CALLERID, PHONE_SAILOR_HUEY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_HUEY
 	iftrue UnknownScript_0x5afc7
-	checkcellnum $7
+	checkcellnum PHONE_SAILOR_HUEY
 	iftrue UnknownScript_0x5b05f
 	checkevent EVENT_HUEY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x5afb0
@@ -68,7 +36,7 @@
 UnknownScript_0x5afb0:
 	scall UnknownScript_0x5b057
 UnknownScript_0x5afb3:
-	askforphonenumber $7
+	askforphonenumber PHONE_SAILOR_HUEY
 	if_equal $1, UnknownScript_0x5b067
 	if_equal $2, UnknownScript_0x5b063
 	trainertotext SAILOR, HUEY1, $0
@@ -236,7 +204,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $b, $3, 3, GROUP_OLIVINE_LIGHTHOUSE_1F, MAP_OLIVINE_LIGHTHOUSE_1F
 	warp_def $3, $5, 2, GROUP_OLIVINE_LIGHTHOUSE_3F, MAP_OLIVINE_LIGHTHOUSE_3F
@@ -245,13 +213,13 @@
 	warp_def $b, $10, 4, GROUP_OLIVINE_LIGHTHOUSE_3F, MAP_OLIVINE_LIGHTHOUSE_3F
 	warp_def $b, $11, 5, GROUP_OLIVINE_LIGHTHOUSE_3F, MAP_OLIVINE_LIGHTHOUSE_3F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_SAILOR, 7, 13, $9, $0, 255, 255, $92, 3, TrainerSailorHuey1, -1
-	person_event SPRITE_GENTLEMAN, 12, 21, $8, $0, 255, 255, $92, 3, TrainerGentlemanAlfred, -1
+	person_event SPRITE_SAILOR, 7, 13, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorHuey1, -1
+	person_event SPRITE_GENTLEMAN, 12, 21, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerGentlemanAlfred, -1
--- a/maps/OlivineLighthouse3F.asm
+++ b/maps/OlivineLighthouse3F.asm
@@ -1,29 +1,13 @@
 OlivineLighthouse3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBird_keeperTheo:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_THEO
+	trainer EVENT_BEAT_BIRD_KEEPER_THEO, BIRD_KEEPER, THEO, Bird_keeperTheoSeenText, Bird_keeperTheoBeatenText, $0000, Bird_keeperTheoScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, THEO
-
-	; text when seen
-	dw Bird_keeperTheoSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperTheoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperTheoScript
-
 Bird_keeperTheoScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerGentlemanPreston:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_PRESTON
+	trainer EVENT_BEAT_GENTLEMAN_PRESTON, GENTLEMAN, PRESTON, GentlemanPrestonSeenText, GentlemanPrestonBeatenText, $0000, GentlemanPrestonScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, PRESTON
-
-	; text when seen
-	dw GentlemanPrestonSeenText
-
-	; text when trainer beaten
-	dw GentlemanPrestonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanPrestonScript
-
 GentlemanPrestonScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerSailorTerrell:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_TERRELL
+	trainer EVENT_BEAT_SAILOR_TERRELL, SAILOR, TERRELL, SailorTerrellSeenText, SailorTerrellBeatenText, $0000, SailorTerrellScript
 
-	; trainer group && trainer id
-	db SAILOR, TERRELL
-
-	; text when seen
-	dw SailorTerrellSeenText
-
-	; text when trainer beaten
-	dw SailorTerrellBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorTerrellScript
-
 SailorTerrellScript:
 	talkaftercancel
 	loadfont
@@ -158,7 +110,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 9
 	warp_def $3, $d, 1, GROUP_OLIVINE_LIGHTHOUSE_4F, MAP_OLIVINE_LIGHTHOUSE_4F
 	warp_def $3, $5, 2, GROUP_OLIVINE_LIGHTHOUSE_2F, MAP_OLIVINE_LIGHTHOUSE_2F
@@ -170,15 +122,15 @@
 	warp_def $3, $8, 7, GROUP_OLIVINE_LIGHTHOUSE_4F, MAP_OLIVINE_LIGHTHOUSE_4F
 	warp_def $3, $9, 8, GROUP_OLIVINE_LIGHTHOUSE_4F, MAP_OLIVINE_LIGHTHOUSE_4F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_SAILOR, 6, 13, $6, $0, 255, 255, $92, 1, TrainerSailorTerrell, -1
-	person_event SPRITE_GENTLEMAN, 9, 17, $9, $0, 255, 255, $92, 4, TrainerGentlemanPreston, -1
-	person_event SPRITE_YOUNGSTER, 13, 7, $7, $0, 255, 255, $92, 3, TrainerBird_keeperTheo, -1
-	person_event SPRITE_POKE_BALL, 6, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x5b279, EVENT_664
+	person_event SPRITE_SAILOR, 6, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSailorTerrell, -1
+	person_event SPRITE_GENTLEMAN, 9, 17, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerGentlemanPreston, -1
+	person_event SPRITE_YOUNGSTER, 13, 7, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperTheo, -1
+	person_event SPRITE_POKE_BALL, 6, 12, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5b279, EVENT_OLIVINE_LIGHTHOUSE_3F_ETHER
--- a/maps/OlivineLighthouse4F.asm
+++ b/maps/OlivineLighthouse4F.asm
@@ -1,29 +1,13 @@
 OlivineLighthouse4F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerLassConnie:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_CONNIE
+	trainer EVENT_BEAT_LASS_CONNIE, LASS, CONNIE1, LassConnie1SeenText, LassConnie1BeatenText, $0000, LassConnie1Script
 
-	; trainer group && trainer id
-	db LASS, CONNIE1
-
-	; text when seen
-	dw LassConnie1SeenText
-
-	; text when trainer beaten
-	dw LassConnie1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassConnie1Script
-
 LassConnie1Script:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSailorKent:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_KENT
+	trainer EVENT_BEAT_SAILOR_KENT, SAILOR, KENT, SailorKentSeenText, SailorKentBeatenText, $0000, SailorKentScript
 
-	; trainer group && trainer id
-	db SAILOR, KENT
-
-	; text when seen
-	dw SailorKentSeenText
-
-	; text when trainer beaten
-	dw SailorKentBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorKentScript
-
 SailorKentScript:
 	talkaftercancel
 	loadfont
@@ -113,7 +81,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 10
 	warp_def $3, $d, 1, GROUP_OLIVINE_LIGHTHOUSE_3F, MAP_OLIVINE_LIGHTHOUSE_3F
 	warp_def $5, $3, 2, GROUP_OLIVINE_LIGHTHOUSE_5F, MAP_OLIVINE_LIGHTHOUSE_5F
@@ -126,13 +94,13 @@
 	warp_def $7, $10, 4, GROUP_OLIVINE_LIGHTHOUSE_5F, MAP_OLIVINE_LIGHTHOUSE_5F
 	warp_def $7, $11, 5, GROUP_OLIVINE_LIGHTHOUSE_5F, MAP_OLIVINE_LIGHTHOUSE_5F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_SAILOR, 18, 11, $8, $0, 255, 255, $92, 3, TrainerSailorKent, -1
-	person_event SPRITE_LASS, 6, 15, $6, $0, 255, 255, $92, 1, TrainerLassConnie, -1
+	person_event SPRITE_SAILOR, 18, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorKent, -1
+	person_event SPRITE_LASS, 6, 15, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerLassConnie, -1
--- a/maps/OlivineLighthouse5F.asm
+++ b/maps/OlivineLighthouse5F.asm
@@ -1,29 +1,13 @@
 OlivineLighthouse5F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBird_keeperDenis:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_DENIS
+	trainer EVENT_BEAT_BIRD_KEEPER_DENIS, BIRD_KEEPER, DENIS, Bird_keeperDenisSeenText, Bird_keeperDenisBeatenText, $0000, Bird_keeperDenisScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, DENIS
-
-	; text when seen
-	dw Bird_keeperDenisSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperDenisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperDenisScript
-
 Bird_keeperDenisScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSailorErnest:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_ERNEST
+	trainer EVENT_BEAT_SAILOR_ERNEST, SAILOR, ERNEST, SailorErnestSeenText, SailorErnestBeatenText, $0000, SailorErnestScript
 
-	; trainer group && trainer id
-	db SAILOR, ERNEST
-
-	; text when seen
-	dw SailorErnestSeenText
-
-	; text when trainer beaten
-	dw SailorErnestBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorErnestScript
-
 SailorErnestScript:
 	talkaftercancel
 	loadfont
@@ -69,8 +37,7 @@
 	db TM_SWAGGER, 1
 
 MapOlivineLighthouse5FSignpostItem0:
-	dw $0085
-	db HYPER_POTION
+	dwb EVENT_OLIVINE_LIGHTHOUSE_5F_HIDDEN_HYPER_POTION, HYPER_POTION
 	
 
 SailorErnestSeenText:
@@ -121,7 +88,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 7
 	warp_def $f, $9, 1, GROUP_OLIVINE_LIGHTHOUSE_6F, MAP_OLIVINE_LIGHTHOUSE_6F
 	warp_def $5, $3, 2, GROUP_OLIVINE_LIGHTHOUSE_4F, MAP_OLIVINE_LIGHTHOUSE_4F
@@ -131,17 +98,17 @@
 	warp_def $5, $10, 2, GROUP_OLIVINE_LIGHTHOUSE_6F, MAP_OLIVINE_LIGHTHOUSE_6F
 	warp_def $5, $11, 3, GROUP_OLIVINE_LIGHTHOUSE_6F, MAP_OLIVINE_LIGHTHOUSE_6F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 13, 3, $7, MapOlivineLighthouse5FSignpostItem0
+	signpost 13, 3, SIGNPOST_ITEM, MapOlivineLighthouse5FSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_SAILOR, 15, 12, $a, $0, 255, 255, $92, 3, TrainerSailorErnest, -1
-	person_event SPRITE_YOUNGSTER, 7, 12, $8, $0, 255, 255, $92, 4, TrainerBird_keeperDenis, -1
-	person_event SPRITE_POKE_BALL, 16, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x609aa, EVENT_665
-	person_event SPRITE_POKE_BALL, 19, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x609ac, EVENT_666
-	person_event SPRITE_POKE_BALL, 17, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x609ae, EVENT_667
+	person_event SPRITE_SAILOR, 15, 12, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorErnest, -1
+	person_event SPRITE_YOUNGSTER, 7, 12, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerBird_keeperDenis, -1
+	person_event SPRITE_POKE_BALL, 16, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x609aa, EVENT_OLIVINE_LIGHTHOUSE_5F_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 19, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x609ac, EVENT_OLIVINE_LIGHTHOUSE_5F_SUPER_REPEL
+	person_event SPRITE_POKE_BALL, 17, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x609ae, EVENT_OLIVINE_LIGHTHOUSE_5F_TM_SWAGGER
--- a/maps/OlivineLighthouse6F.asm
+++ b/maps/OlivineLighthouse6F.asm
@@ -1,8 +1,8 @@
 OlivineLighthouse6F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 JasmineScript_0x60b91:
@@ -42,9 +42,9 @@
 	loadmovesprites
 	special RestartMapMusic
 	cry AMPHAROS
-	special Function8c084
+	special FadeBlackBGMap
 	pause 10
-	special Function8c079
+	special FadeInBGMap
 	loadfont
 	writetext UnknownText_0x60f3d
 	closetext
@@ -63,7 +63,7 @@
 	closetext
 	loadmovesprites
 	setevent EVENT_JASMINE_RETURNED_TO_GYM
-	clearevent EVENT_6D3
+	clearevent EVENT_OLIVINE_GYM_JASMINE
 	checkcode VAR_FACING
 	if_equal $0, UnknownScript_0x60c17
 	if_equal $3, UnknownScript_0x60c1e
@@ -116,10 +116,10 @@
 	cry AMPHAROS
 	closetext
 	loadmovesprites
-	special Function8c084
-	special Function8c079
-	special Function8c084
-	special Function8c079
+	special FadeBlackBGMap
+	special FadeInBGMap
+	special FadeBlackBGMap
+	special FadeInBGMap
 	end
 
 ItemFragment_0x60c66:
@@ -256,20 +256,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $f, $9, 1, GROUP_OLIVINE_LIGHTHOUSE_5F, MAP_OLIVINE_LIGHTHOUSE_5F
 	warp_def $5, $10, 6, GROUP_OLIVINE_LIGHTHOUSE_5F, MAP_OLIVINE_LIGHTHOUSE_5F
 	warp_def $5, $11, 7, GROUP_OLIVINE_LIGHTHOUSE_5F, MAP_OLIVINE_LIGHTHOUSE_5F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_JASMINE, 12, 12, $6, $0, 255, 255, $80, 0, JasmineScript_0x60b91, EVENT_6D2
-	person_event SPRITE_MONSTER, 12, 13, $6, $0, 255, 255, $b0, 0, MonsterScript_0x60c3a, -1
-	person_event SPRITE_POKE_BALL, 8, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x60c66, EVENT_668
+	person_event SPRITE_JASMINE, 12, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, JasmineScript_0x60b91, EVENT_OLIVINE_LIGHTHOUSE_JASMINE
+	person_event SPRITE_MONSTER, 12, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MonsterScript_0x60c3a, -1
+	person_event SPRITE_POKE_BALL, 8, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x60c66, EVENT_OLIVINE_LIGHTHOUSE_6F_SUPER_POTION
--- a/maps/OlivineMart.asm
+++ b/maps/OlivineMart.asm
@@ -1,8 +1,8 @@
 OlivineMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x9cac7:
@@ -44,19 +44,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 8, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $3, 8, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x9cac7, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $5, $2, 255, 255, $a0, 0, CooltrainerFScript_0x9cace, -1
-	person_event SPRITE_LASS, 10, 5, $8, $0, 255, 255, $0, 0, LassScript_0x9cad1, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x9cac7, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, OW_UP | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x9cace, -1
+	person_event SPRITE_LASS, 10, 5, OW_LEFT | $0, $0, -1, -1, $0, 0, LassScript_0x9cad1, -1
--- a/maps/OlivinePokeCenter1F.asm
+++ b/maps/OlivinePokeCenter1F.asm
@@ -1,8 +1,8 @@
 OlivinePokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x9c002:
@@ -45,21 +45,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $4, 1, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x9c002, -1
-	person_event SPRITE_FISHING_GURU, 8, 12, $5, $1, 255, 255, $0, 0, FishingGuruScript_0x9c005, -1
-	person_event SPRITE_FISHER, 7, 6, $6, $0, 255, 255, $a0, 0, FisherScript_0x9c008, -1
-	person_event SPRITE_TEACHER, 5, 11, $6, $0, 255, 255, $0, 0, TeacherScript_0x9c00b, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x9c002, -1
+	person_event SPRITE_FISHING_GURU, 8, 12, OW_UP | $1, $1, -1, -1, $0, 0, FishingGuruScript_0x9c005, -1
+	person_event SPRITE_FISHER, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x9c008, -1
+	person_event SPRITE_TEACHER, 5, 11, OW_UP | $2, $0, -1, -1, $0, 0, TeacherScript_0x9c00b, -1
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -1,5 +1,5 @@
 OlivinePort_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x748ac, $0000
 	dw UnknownScript_0x748ad, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x748ac:
@@ -20,7 +20,7 @@
 	applymovement $0, MovementData_0x74a32
 	appear $2
 	dotrigger $0
-	setevent EVENT_000
+	setevent EVENT_GAVE_KURT_APRICORNS
 	blackoutmod GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	end
 
@@ -27,7 +27,7 @@
 SailorScript_0x748c0:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74919
 	writetext UnknownText_0x74a55
 	closetext
@@ -39,12 +39,12 @@
 	waitbutton
 	applymovement $0, MovementData_0x74a30
 	playsound SFX_EXIT_BUILDING
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
-	checkevent EVENT_030
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x7490a
-	clearevent EVENT_73A
-	setevent EVENT_73B
+	clearevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	setevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
 	clearevent EVENT_BEAT_COOLTRAINERM_SEAN
 	clearevent EVENT_BEAT_COOLTRAINERF_CAROL
 	clearevent EVENT_BEAT_GENTLEMAN_EDWARD
@@ -69,13 +69,13 @@
 
 UnknownScript_0x7491f:
 	spriteface $4, RIGHT
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7498b
-	checkevent EVENT_001
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue UnknownScript_0x7498b
 	spriteface $0, LEFT
 	loadfont
-	checkevent EVENT_030
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x7494e
 	checkcode VAR_WEEKDAY
 	if_equal SUNDAY, UnknownScript_0x74977
@@ -94,7 +94,7 @@
 	writetext UnknownText_0x74b11
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	applymovement $0, MovementData_0x74a37
 	jump SailorScript_0x748c0
 
@@ -138,9 +138,9 @@
 SailorScript_0x7499c:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74919
-	checkevent EVENT_030
+	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x749c0
 	checkcode VAR_WEEKDAY
 	if_equal SUNDAY, UnknownScript_0x749f2
@@ -159,7 +159,7 @@
 	writetext UnknownText_0x74b11
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	checkcode VAR_FACING
 	if_equal $3, UnknownScript_0x749e5
 	applymovement $0, MovementData_0x74a3f
@@ -227,8 +227,7 @@
 	end
 
 MapOlivinePortSignpostItem0:
-	dw $00ea
-	db PROTEIN
+	dwb EVENT_OLIVINE_PORT_HIDDEN_PROTEIN, PROTEIN
 	
 
 MovementData_0x74a30:
@@ -383,25 +382,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $b, 5, GROUP_OLIVINE_PORT_PASSAGE, MAP_OLIVINE_PORT_PASSAGE
 	warp_def $17, $7, 1, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $f, $7, $0, UnknownScript_0x7491f, $0, $0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 22, 1, $7, MapOlivinePortSignpostItem0
+	signpost 22, 1, SIGNPOST_ITEM, MapOlivinePortSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_SAILOR, 27, 11, $7, $0, 255, 255, $0, 0, SailorScript_0x748c0, EVENT_72A
-	person_event SPRITE_SAILOR, 19, 11, $7, $0, 255, 255, $0, 0, SailorScript_0x749fe, EVENT_737
-	person_event SPRITE_SAILOR, 19, 10, $9, $0, 255, 255, $0, 0, SailorScript_0x7499c, EVENT_738
-	person_event SPRITE_FISHING_GURU, 18, 8, $7, $0, 255, 255, $0, 0, FishingGuruScript_0x74a01, EVENT_737
-	person_event SPRITE_FISHING_GURU, 18, 17, $7, $0, 255, 255, $0, 0, FishingGuruScript_0x74a0c, EVENT_737
-	person_event SPRITE_YOUNGSTER, 19, 8, $6, $0, 255, 255, $0, 0, YoungsterScript_0x74a17, EVENT_738
-	person_event SPRITE_COOLTRAINER_F, 19, 15, $6, $0, 255, 255, $0, 0, CooltrainerFScript_0x74a22, EVENT_738
+	person_event SPRITE_SAILOR, 27, 11, OW_UP | $3, $0, -1, -1, $0, 0, SailorScript_0x748c0, EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
+	person_event SPRITE_SAILOR, 19, 11, OW_UP | $3, $0, -1, -1, $0, 0, SailorScript_0x749fe, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	person_event SPRITE_SAILOR, 19, 10, OW_LEFT | $1, $0, -1, -1, $0, 0, SailorScript_0x7499c, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+	person_event SPRITE_FISHING_GURU, 18, 8, OW_UP | $3, $0, -1, -1, $0, 0, FishingGuruScript_0x74a01, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	person_event SPRITE_FISHING_GURU, 18, 17, OW_UP | $3, $0, -1, -1, $0, 0, FishingGuruScript_0x74a0c, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	person_event SPRITE_YOUNGSTER, 19, 8, OW_UP | $2, $0, -1, -1, $0, 0, YoungsterScript_0x74a17, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+	person_event SPRITE_COOLTRAINER_F, 19, 15, OW_UP | $2, $0, -1, -1, $0, 0, CooltrainerFScript_0x74a22, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
--- a/maps/OlivinePortPassage.asm
+++ b/maps/OlivinePortPassage.asm
@@ -1,8 +1,8 @@
 OlivinePortPassage_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x76fac:
@@ -20,7 +20,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $0, $f, 10, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $0, $10, 11, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
@@ -28,12 +28,12 @@
 	warp_def $2, $3, 3, GROUP_OLIVINE_PORT_PASSAGE, MAP_OLIVINE_PORT_PASSAGE
 	warp_def $e, $3, 1, GROUP_OLIVINE_PORT, MAP_OLIVINE_PORT
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_M, 5, 21, $8, $0, 255, 255, $0, 0, PokefanMScript_0x76fac, EVENT_733
+	person_event SPRITE_POKEFAN_M, 5, 21, OW_LEFT | $0, $0, -1, -1, $0, 0, PokefanMScript_0x76fac, EVENT_OLIVINE_PORT_PASSAGE_POKEFAN_M
--- a/maps/OlivinePunishmentSpeechHouse.asm
+++ b/maps/OlivinePunishmentSpeechHouse.asm
@@ -1,8 +1,8 @@
 OlivinePunishmentSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OlivinePunishmentSpeechHouseDad:
@@ -39,20 +39,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 5, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $3, 5, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, OlivinePunishmentSpeechHouseBookshelf1
-	signpost 1, 1, $0, OlivinePunishmentSpeechHouseBookshelf2
+	signpost 1, 0, SIGNPOST_READ, OlivinePunishmentSpeechHouseBookshelf1
+	signpost 1, 1, SIGNPOST_READ, OlivinePunishmentSpeechHouseBookshelf2
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 6, 5, $3, $0, 255, 255, $0, 0, OlivinePunishmentSpeechHouseDad, -1
-	person_event SPRITE_LASS, 9, 9, $5, $2, 255, 255, $0, 0, OlivinePunishmentSpeechHouseDaughter, -1
+	person_event SPRITE_POKEFAN_M, 6, 5, OW_DOWN | $3, $0, -1, -1, $0, 0, OlivinePunishmentSpeechHouseDad, -1
+	person_event SPRITE_LASS, 9, 9, OW_UP | $1, $2, -1, -1, $0, 0, OlivinePunishmentSpeechHouseDaughter, -1
--- a/maps/OlivineVoltorbHouse.asm
+++ b/maps/OlivineVoltorbHouse.asm
@@ -1,8 +1,8 @@
 OlivineVoltorbHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 Tim:
@@ -20,19 +20,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	warp_def $7, $3, 3, GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, TimsHouseBookshelf
-	signpost 1, 1, $0, TimsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, TimsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, TimsHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $3, $0, 255, 255, $80, 0, Tim, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Tim, -1
--- a/maps/PalletTown.asm
+++ b/maps/PalletTown.asm
@@ -1,8 +1,8 @@
 PalletTown_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -71,23 +71,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $5, $5, 1, GROUP_REDS_HOUSE_1F, MAP_REDS_HOUSE_1F
 	warp_def $5, $d, 1, GROUP_BLUES_HOUSE, MAP_BLUES_HOUSE
 	warp_def $b, $c, 1, GROUP_OAKS_LAB, MAP_OAKS_LAB
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 9, 7, $0, PalletTownSign
-	signpost 5, 3, $0, RedsHouseSign
-	signpost 13, 13, $0, OaksLabSign
-	signpost 5, 11, $0, BluesHouseSign
+	signpost 9, 7, SIGNPOST_READ, PalletTownSign
+	signpost 5, 3, SIGNPOST_READ, RedsHouseSign
+	signpost 13, 13, SIGNPOST_READ, OaksLabSign
+	signpost 5, 11, SIGNPOST_READ, BluesHouseSign
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_TEACHER, 12, 7, $2, $22, 255, 255, $0, 0, TeacherScript_0x1ac6d5, -1
-	person_event SPRITE_FISHER, 18, 16, $5, $2, 255, 255, $a0, 0, FisherScript_0x1ac6d8, -1
+	person_event SPRITE_TEACHER, 12, 7, OW_DOWN | $2, $22, -1, -1, $0, 0, TeacherScript_0x1ac6d5, -1
+	person_event SPRITE_FISHER, 18, 16, OW_UP | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1ac6d8, -1
--- a/maps/PewterCity.asm
+++ b/maps/PewterCity.asm
@@ -1,8 +1,8 @@
 PewterCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -151,7 +151,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $d, $1d, 1, GROUP_PEWTER_NIDORAN_SPEECH_HOUSE, MAP_PEWTER_NIDORAN_SPEECH_HOUSE
 	warp_def $11, $10, 1, GROUP_PEWTER_GYM, MAP_PEWTER_GYM
@@ -159,23 +159,23 @@
 	warp_def $19, $d, 1, GROUP_PEWTER_POKECENTER_1F, MAP_PEWTER_POKECENTER_1F
 	warp_def $1d, $7, 1, GROUP_PEWTER_SNOOZE_SPEECH_HOUSE, MAP_PEWTER_SNOOZE_SPEECH_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 7
-	signpost 23, 25, $0, PewterCitySign
-	signpost 17, 11, $0, PewterGymSign
-	signpost 9, 15, $0, PewterMuseumSign
-	signpost 19, 33, $0, PewterCityMtMoonGiftShopSign
-	signpost 29, 19, $0, PewterCityWelcomeSign
-	signpost 25, 14, $0, PewterCityPokeCenterSign
-	signpost 17, 24, $0, PewterCityMartSign
+	signpost 23, 25, SIGNPOST_READ, PewterCitySign
+	signpost 17, 11, SIGNPOST_READ, PewterGymSign
+	signpost 9, 15, SIGNPOST_READ, PewterMuseumSign
+	signpost 19, 33, SIGNPOST_READ, PewterCityMtMoonGiftShopSign
+	signpost 29, 19, SIGNPOST_READ, PewterCityWelcomeSign
+	signpost 25, 14, SIGNPOST_READ, PewterCityPokeCenterSign
+	signpost 17, 24, SIGNPOST_READ, PewterCityMartSign
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_COOLTRAINER_F, 15, 23, $2, $22, 255, 255, $a0, 0, CooltrainerFScript_0x18c009, -1
-	person_event SPRITE_BUG_CATCHER, 33, 18, $2, $22, 255, 255, $80, 0, BugCatcherScript_0x18c00c, -1
-	person_event SPRITE_GRAMPS, 21, 33, $5, $2, 255, 255, $90, 0, GrampsScript_0x18c00f, -1
-	person_event SPRITE_FRUIT_TREE, 7, 36, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x18c03e, -1
-	person_event SPRITE_FRUIT_TREE, 7, 34, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x18c040, -1
+	person_event SPRITE_COOLTRAINER_F, 15, 23, OW_DOWN | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x18c009, -1
+	person_event SPRITE_BUG_CATCHER, 33, 18, OW_DOWN | $2, $22, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x18c00c, -1
+	person_event SPRITE_GRAMPS, 21, 33, OW_UP | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x18c00f, -1
+	person_event SPRITE_FRUIT_TREE, 7, 36, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x18c03e, -1
+	person_event SPRITE_FRUIT_TREE, 7, 34, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x18c040, -1
--- a/maps/PewterGym.asm
+++ b/maps/PewterGym.asm
@@ -1,8 +1,8 @@
 PewterGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BrockScript_0x1a2864:
@@ -36,24 +36,8 @@
 	end
 
 TrainerCamperJerry:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_JERRY
+	trainer EVENT_BEAT_CAMPER_JERRY, CAMPER, JERRY, CamperJerrySeenText, CamperJerryBeatenText, $0000, CamperJerryScript
 
-	; trainer group && trainer id
-	db CAMPER, JERRY
-
-	; text when seen
-	dw CamperJerrySeenText
-
-	; text when trainer beaten
-	dw CamperJerryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperJerryScript
-
 CamperJerryScript:
 	talkaftercancel
 	loadfont
@@ -223,21 +207,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $d, $4, 2, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 	warp_def $d, $5, 2, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 11, 2, $0, PewterGymStatue
-	signpost 11, 7, $0, PewterGymStatue
+	signpost 11, 2, SIGNPOST_READ, PewterGymStatue
+	signpost 11, 7, SIGNPOST_READ, PewterGymStatue
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_BROCK, 5, 9, $6, $0, 255, 255, $b0, 0, BrockScript_0x1a2864, -1
-	person_event SPRITE_YOUNGSTER, 9, 6, $9, $0, 255, 255, $a2, 3, TrainerCamperJerry, -1
-	person_event SPRITE_GYM_GUY, 15, 10, $6, $0, 255, 255, $90, 1, PewterGymGuyScript, -1
+	person_event SPRITE_BROCK, 5, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BrockScript_0x1a2864, -1
+	person_event SPRITE_YOUNGSTER, 9, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperJerry, -1
+	person_event SPRITE_GYM_GUY, 15, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 1, PewterGymGuyScript, -1
--- a/maps/PewterMart.asm
+++ b/maps/PewterMart.asm
@@ -1,8 +1,8 @@
 PewterMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x1a2dcb:
@@ -44,19 +44,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 	warp_def $7, $3, 3, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x1a2dcb, -1
-	person_event SPRITE_YOUNGSTER, 6, 13, $5, $2, 255, 255, $0, 0, YoungsterScript_0x1a2dd2, -1
-	person_event SPRITE_SUPER_NERD, 10, 10, $3, $0, 255, 255, $80, 0, SuperNerdScript_0x1a2dd5, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x1a2dcb, -1
+	person_event SPRITE_YOUNGSTER, 6, 13, OW_UP | $1, $2, -1, -1, $0, 0, YoungsterScript_0x1a2dd2, -1
+	person_event SPRITE_SUPER_NERD, 10, 10, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a2dd5, -1
--- a/maps/PewterNidoranSpeechHouse.asm
+++ b/maps/PewterNidoranSpeechHouse.asm
@@ -1,8 +1,8 @@
 PewterNidoranSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SuperNerdScript_0x1a2807:
@@ -28,18 +28,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 	warp_def $7, $3, 1, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_SUPER_NERD, 9, 7, $9, $0, 255, 255, $a0, 0, SuperNerdScript_0x1a2807, -1
-	person_event SPRITE_GROWLITHE, 9, 8, $16, $0, 255, 255, $90, 0, GrowlitheScript_0x1a280a, -1
+	person_event SPRITE_SUPER_NERD, 9, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x1a2807, -1
+	person_event SPRITE_GROWLITHE, 9, 8, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrowlitheScript_0x1a280a, -1
--- a/maps/PewterPokeCEnter2FBeta.asm
+++ b/maps/PewterPokeCEnter2FBeta.asm
@@ -1,8 +1,8 @@
 PewterPokeCEnter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PewterPokeCEnter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_PEWTER_POKECENTER_1F, MAP_PEWTER_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/PewterPokeCenter1F.asm
+++ b/maps/PewterPokeCenter1F.asm
@@ -1,8 +1,8 @@
 PewterPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x1a2ee7:
@@ -64,22 +64,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 4, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 	warp_def $7, $4, 4, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x1a2ee7, -1
-	person_event SPRITE_TEACHER, 10, 12, $6, $0, 255, 255, $a0, 0, TeacherScript_0x1a2eea, -1
-	person_event SPRITE_JIGGLYPUFF, 7, 5, $16, $0, 255, 255, $0, 0, JigglypuffScript_0x1a2eed, -1
-	person_event SPRITE_BUG_CATCHER, 7, 6, $6, $0, 255, 255, $90, 0, BugCatcherScript_0x1a2ef7, -1
-	person_event SPRITE_POKEFAN_M, 6, 11, $6, $0, 255, 255, $80, 0, PokefanMScript_0x1a2efa, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x1a2ee7, -1
+	person_event SPRITE_TEACHER, 10, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x1a2eea, -1
+	person_event SPRITE_JIGGLYPUFF, 7, 5, OW_UP | $12, $0, -1, -1, $0, 0, JigglypuffScript_0x1a2eed, -1
+	person_event SPRITE_BUG_CATCHER, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BugCatcherScript_0x1a2ef7, -1
+	person_event SPRITE_POKEFAN_M, 6, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x1a2efa, -1
--- a/maps/PewterSnoozeSpeechHouse.asm
+++ b/maps/PewterSnoozeSpeechHouse.asm
@@ -1,8 +1,8 @@
 PewterSnoozeSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrampsScript_0x1a3059:
@@ -21,19 +21,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 5, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 	warp_def $7, $3, 5, GROUP_PEWTER_CITY, MAP_PEWTER_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, PewterSnoozeSpeechHouseBookshelf
-	signpost 1, 1, $0, PewterSnoozeSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, PewterSnoozeSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, PewterSnoozeSpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GRAMPS, 7, 9, $8, $0, 255, 255, $90, 0, GrampsScript_0x1a3059, -1
+	person_event SPRITE_GRAMPS, 7, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x1a3059, -1
--- a/maps/PokeCenter2F.asm
+++ b/maps/PokeCenter2F.asm
@@ -1,432 +1,432 @@
 PokeCenter2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 6
 
 	; triggers
-	dw UnknownScript_0x19285f, $0000
-	dw UnknownScript_0x192873, $0000
-	dw UnknownScript_0x192877, $0000
-	dw UnknownScript_0x19287b, $0000
-	dw UnknownScript_0x19287f, $0000
-	dw UnknownScript_0x192883, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
+	dw .Trigger3, $0000
+	dw .Trigger4, $0000
+	dw .Trigger5, $0000
+	dw .Trigger6, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
-UnknownScript_0x19285f:
-	special Functionc2f6
-	if_equal $0, UnknownScript_0x192872
-	clearevent EVENT_711
-	checkevent EVENT_001
-	iftrue UnknownScript_0x192872
-	priorityjump UnknownScript_0x192887
+.Trigger1:
+	special Special_CheckMysteryGift
+	if_equal $0, .Trigger1Done
+	clearevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
+	iftrue .Trigger1Done
+	priorityjump PokeCenter2F_AppearMysteryGiftDeliveryGuy
 
-UnknownScript_0x192872:
+.Trigger1Done:
 	end
 
-UnknownScript_0x192873:
-	priorityjump UnknownScript_0x192ab6
+.Trigger2:
+	priorityjump Script_LeftCableTradeCenter
 	end
 
-UnknownScript_0x192877:
-	priorityjump UnknownScript_0x192add
+.Trigger3:
+	priorityjump Script_LeftCableColosseum
 	end
 
-UnknownScript_0x19287b:
-	priorityjump UnknownScript_0x192c4e
+.Trigger4:
+	priorityjump Script_LeftTimeCapsule
 	end
 
-UnknownScript_0x19287f:
-	priorityjump UnknownScript_0x192ac3
+.Trigger5:
+	priorityjump Script_LeftMobileTradeRoom
 	end
 
-UnknownScript_0x192883:
-	priorityjump UnknownScript_0x192aea
+.Trigger6:
+	priorityjump Script_LeftMobileBattleRoom
 	end
 
-UnknownScript_0x192887:
+PokeCenter2F_AppearMysteryGiftDeliveryGuy:
 	appear $5
-	setevent EVENT_001
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	end
 
-UnknownScript_0x19288d:
+Script_TradeCenterClosed:
 	faceplayer
 	loadfont
-	writetext UnknownText_0x19312f
+	writetext Text_TradeRoomClosed
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x192895:
+Script_BattleRoomClosed:
 	faceplayer
 	loadfont
-	writetext UnknownText_0x19315f
+	writetext Text_BattleRoomClosed
 	closetext
 	loadmovesprites
 	end
 
-LinkReceptionistScript_0x19289d:
+LinkReceptionistScript_Trade:
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iffalse UnknownScript_0x19288d
+	iffalse Script_TradeCenterClosed
 	loadfont
-	writetext UnknownText_0x192e3a
+	writetext Text_TradeReceptionistIntro
 	yesorno
-	iffalse UnknownScript_0x19291d
+	iffalse .Cancel
 	special Function10630f
-	iffalse UnknownScript_0x1928be
-	writetext UnknownText_0x192d7e
+	iffalse .NoMobile
+	writetext Text_TradeReceptionistMobile
 	special Function103612
-	iffalse UnknownScript_0x19291d
-	if_equal $1, UnknownScript_0x19291f
-UnknownScript_0x1928be:
-	special Function29ce8
-	writetext UnknownText_0x192f67
-	special Function29d11
-	iffalse UnknownScript_0x1928f6
-	writetext UnknownText_0x192f34
+	iffalse .Cancel
+	if_equal $1, .Mobile
+.NoMobile:
+	special Special_SetBitsForLinkTradeRequest
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x192917
-	special Function29e66
-	iffalse UnknownScript_0x192917
-	writetext UnknownText_0x192f67
-	special Function29d92
-	iffalse UnknownScript_0x192911
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
 	copybytetovar wcf51
-	iffalse UnknownScript_0x1928fe
-	special Function29e82
-	iffalse UnknownScript_0x192909
-	writetext UnknownText_0x19306b
+	iffalse .LinkedToFirstGen
+	special Special_CheckBothSelectedSameRoom
+	iffalse .IncompatibleRooms
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x192b04
+	scall PokeCenter2F_CheckGender
 	warpcheck
 	end
 
-UnknownScript_0x1928f6:
-	special Function29c92
-	writetext UnknownText_0x192f19
+.FriendNotReady:
+	special Special_AbortLink
+	writetext Text_FriendNotReady
 	loadmovesprites
 	end
 
-UnknownScript_0x1928fe:
-	special Function29efa
-	writetext UnknownText_0x193029
-	special Function29eee
+.LinkedToFirstGen:
+	special Special_FailedLinkToPast
+	writetext Text_CantLinkToThePast
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192909:
-	writetext UnknownText_0x19304a
-	special Function29eee
+.IncompatibleRooms:
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192911:
-	writetext UnknownText_0x192f75
-	jump UnknownScript_0x19291a
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .AbortLink
 
-UnknownScript_0x192917:
-	writetext UnknownText_0x192fd1
-UnknownScript_0x19291a:
-	special Function29c92
-UnknownScript_0x19291d:
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.AbortLink:
+	special Special_AbortLink
+.Cancel:
 	loadmovesprites
 	end
 
-UnknownScript_0x19291f:
-	scall UnknownScript_0x19292b
-	iftrue UnknownScript_0x19292a
-	scall UnknownScript_0x19294a
+.Mobile:
+	scall .Mobile_TrySave
+	iftrue .Mobile_Abort
+	scall BattleTradeMobile_WalkIn
 	warpcheck
 	end
 
-UnknownScript_0x19292a:
+.Mobile_Abort:
 	end
 
-UnknownScript_0x19292b:
-	writetext UnknownText_0x192f34
+.Mobile_TrySave:
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x192943
-	special Function29e66
-	iffalse UnknownScript_0x192943
+	iffalse .Mobile_DidNotSave
+	special Special_TryQuickSave
+	iffalse .Mobile_DidNotSave
 	special Function1011f1
-	writetext UnknownText_0x19306b
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
 	writebyte $0
 	end
 
-UnknownScript_0x192943:
-	writetext UnknownText_0x192fd1
+.Mobile_DidNotSave:
+	writetext Text_PleaseComeAgain
 	loadmovesprites
 	writebyte $1
 	end
 
-UnknownScript_0x19294a:
+BattleTradeMobile_WalkIn:
 	applymovement2 MovementData_0x192cce
 	applymovement $0, MovementData_0x192ce7
 	end
 
-LinkReceptionistScript_0x192952:
+LinkReceptionistScript_Battle:
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iffalse UnknownScript_0x192895
+	iffalse Script_BattleRoomClosed
 	loadfont
-	writetext UnknownText_0x192de0
+	writetext Text_BattleReceptionistIntro
 	yesorno
-	iffalse UnknownScript_0x1929d2
+	iffalse .Cancel
 	special Function10630f
-	iffalse UnknownScript_0x192973
-	writetext UnknownText_0x192d39
+	iffalse .NoMobile
+	writetext Text_BattleReceptionistMobile
 	special Function103612
-	iffalse UnknownScript_0x1929d2
-	if_equal $1, UnknownScript_0x1929d4
-UnknownScript_0x192973:
-	special Function29cf1
-	writetext UnknownText_0x192f67
-	special Function29d11
-	iffalse UnknownScript_0x1929ab
-	writetext UnknownText_0x192f34
+	iffalse .Cancel
+	if_equal $1, .Mobile
+.NoMobile:
+	special Special_SetBitsForBattleRequest
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x1929cc
-	special Function29e66
-	iffalse UnknownScript_0x1929cc
-	writetext UnknownText_0x192f67
-	special Function29d92
-	iffalse UnknownScript_0x1929c6
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
 	copybytetovar wcf51
-	iffalse UnknownScript_0x1929b3
-	special Function29e82
-	iffalse UnknownScript_0x1929be
-	writetext UnknownText_0x19306b
+	iffalse .LinkedToFirstGen
+	special Special_CheckBothSelectedSameRoom
+	iffalse .IncompatibleRooms
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x192b04
+	scall PokeCenter2F_CheckGender
 	warpcheck
 	end
 
-UnknownScript_0x1929ab:
-	special Function29c92
-	writetext UnknownText_0x192f19
+.FriendNotReady:
+	special Special_AbortLink
+	writetext Text_FriendNotReady
 	loadmovesprites
 	end
 
-UnknownScript_0x1929b3:
-	special Function29efa
-	writetext UnknownText_0x193029
-	special Function29eee
+.LinkedToFirstGen:
+	special Special_FailedLinkToPast
+	writetext Text_CantLinkToThePast
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x1929be:
-	writetext UnknownText_0x19304a
-	special Function29eee
+.IncompatibleRooms:
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x1929c6:
-	writetext UnknownText_0x192f75
-	jump UnknownScript_0x1929cf
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .AbortLink
 
-UnknownScript_0x1929cc:
-	writetext UnknownText_0x192fd1
-UnknownScript_0x1929cf:
-	special Function29c92
-UnknownScript_0x1929d2:
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.AbortLink:
+	special Special_AbortLink
+.Cancel:
 	loadmovesprites
 	end
 
-UnknownScript_0x1929d4:
-	scall UnknownScript_0x192a05
-	iffalse UnknownScript_0x1929e5
-	scall UnknownScript_0x1929e6
-	iftrue UnknownScript_0x1929e5
-	scall UnknownScript_0x19294a
+.Mobile:
+	scall .SelectThreeMons
+	iffalse .Mobile_Abort
+	scall .Mobile_TrySave
+	iftrue .Mobile_Abort
+	scall BattleTradeMobile_WalkIn
 	warpcheck
 	end
 
-UnknownScript_0x1929e5:
+.Mobile_Abort:
 	end
 
-UnknownScript_0x1929e6:
-	writetext UnknownText_0x192f34
+.Mobile_TrySave:
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x1929fe
+	iffalse .Mobile_DidNotSave
 	special Function103780
-	iffalse UnknownScript_0x1929fe
+	iffalse .Mobile_DidNotSave
 	special Function1011f1
-	writetext UnknownText_0x19306b
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
 	writebyte $0
 	end
 
-UnknownScript_0x1929fe:
-	writetext UnknownText_0x192fd1
+.Mobile_DidNotSave:
+	writetext Text_PleaseComeAgain
 	loadmovesprites
 	writebyte $1
 	end
 
-UnknownScript_0x192a05:
-	special Function10366e
-	iffalse UnknownScript_0x192a1e
-	if_equal $1, UnknownScript_0x192a22
-	if_equal $2, UnknownScript_0x192a22
-	if_equal $3, UnknownScript_0x192a1a
-	jump UnknownScript_0x192a1e
+.SelectThreeMons:
+	special Mobile_SelectThreeMons
+	iffalse .Mobile_DidNotSelect
+	if_equal $1, .Mobile_OK
+	if_equal $2, .Mobile_OK
+	if_equal $3, .Mobile_InvalidParty
+	jump .Mobile_DidNotSelect
 
-UnknownScript_0x192a1a:
-	writetext UnknownText_0x1932bc
+.Mobile_InvalidParty:
+	writetext Text_BrokeStadiumRules
 	closetext
-UnknownScript_0x192a1e:
+.Mobile_DidNotSelect:
 	loadmovesprites
 	writebyte $0
 	end
 
-UnknownScript_0x192a22:
+.Mobile_OK:
 	writebyte $1
 	end
 
-UnknownScript_0x192a25:
+Script_TimeCapsuleClosed:
 	faceplayer
 	loadfont
-	writetext UnknownText_0x193100
+	writetext Text_TimeCapsuleClosed
 	closetext
 	loadmovesprites
 	end
 
-LinkReceptionistScript_0x192a2d:
+LinkReceptionistScript_TimeCapsule:
 	checkevent EVENT_MET_BILL
-	iftrue UnknownScript_0x192a25
+	iftrue Script_TimeCapsuleClosed
 	checkflag ENGINE_TIME_CAPSULE
-	iftrue UnknownScript_0x192a25
-	special Function29cfa
+	iftrue Script_TimeCapsuleClosed
+	special Special_SetBitsForTimeCapsuleRequest
 	faceplayer
 	loadfont
-	writetext UnknownText_0x192e9f
+	writetext Text_TimeCapsuleRecptionistIntro
 	yesorno
-	iffalse UnknownScript_0x192aa2
-	special Function29bfb
-	if_equal $1, UnknownScript_0x192aa7
-	if_equal $2, UnknownScript_0x192aac
-	if_equal $3, UnknownScript_0x192ab1
-	writetext UnknownText_0x192f67
-	special Function29d11
-	iffalse UnknownScript_0x192a91
-	writetext UnknownText_0x192f34
+	iffalse .Cancel
+	special Special_CheckTimeCapsuleCompatibility
+	if_equal $1, .MonTooNew
+	if_equal $2, .MonMoveTooNew
+	if_equal $3, .MonHasMail
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x192a9f
-	special Function29e66
-	iffalse UnknownScript_0x192a9f
-	writetext UnknownText_0x192f67
-	special Function29d92
-	iffalse UnknownScript_0x192a99
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
 	copybytetovar wcf51
-	iffalse UnknownScript_0x192a84
-	special Function29e82
-	writetext UnknownText_0x19304a
-	special Function29eee
+	iffalse .OK
+	special Special_CheckBothSelectedSameRoom
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192a84:
-	special Function29c7b
-	writetext UnknownText_0x19306b
+.OK:
+	special Special_EnterTimeCapsule
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x192bc4
+	scall TimeCapsuleScript_CheckPlayerGender
 	warpcheck
 	end
 
-UnknownScript_0x192a91:
-	special Function29c92
-	writetext UnknownText_0x192f19
+.FriendNotReady:
+	special Special_AbortLink
+	writetext Text_FriendNotReady
 	loadmovesprites
 	end
 
-UnknownScript_0x192a99:
-	writetext UnknownText_0x192f75
-	jump UnknownScript_0x192aa2
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .Cancel
 
-UnknownScript_0x192a9f:
-	writetext UnknownText_0x192fd1
-UnknownScript_0x192aa2:
-	special Function29c92
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.Cancel:
+	special Special_AbortLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192aa7:
-	writetext UnknownText_0x19308b
+.MonTooNew:
+	writetext Text_RejectNewMon
 	loadmovesprites
 	end
 
-UnknownScript_0x192aac:
-	writetext UnknownText_0x1930a8
+.MonMoveTooNew:
+	writetext Text_RejectMonWithNewMove
 	loadmovesprites
 	end
 
-UnknownScript_0x192ab1:
-	writetext UnknownText_0x1930cf
+.MonHasMail:
+	writetext Text_RejectMonWithMail
 	loadmovesprites
 	end
 
-UnknownScript_0x192ab6:
-	special Function29c92
-	scall UnknownScript_0x192b50
+Script_LeftCableTradeCenter:
+	special Special_AbortLink
+	scall Script_CleanUpFemaleFlagAfterTrade
 	dotrigger $0
 	domaptrigger GROUP_TRADE_CENTER, MAP_TRADE_CENTER, $0
 	end
 
-UnknownScript_0x192ac3:
+Script_LeftMobileTradeRoom:
 	special Function101220
-	scall UnknownScript_0x192ad0
+	scall Script_WalkOutOfMobileTradeRoom
 	dotrigger $0
 	domaptrigger GROUP_MOBILE_TRADE_ROOM_MOBILE, MAP_MOBILE_TRADE_ROOM_MOBILE, $0
 	end
 
-UnknownScript_0x192ad0:
+Script_WalkOutOfMobileTradeRoom:
 	applymovement $2, MovementData_0x192d0b
 	applymovement $0, MovementData_0x192d0f
 	applymovement $2, MovementData_0x192d14
 	end
 
-UnknownScript_0x192add:
-	special Function29c92
-	scall UnknownScript_0x192b8a
+Script_LeftCableColosseum:
+	special Special_AbortLink
+	scall Script_CleanUpFemaleFlagAfterBattle
 	dotrigger $0
 	domaptrigger GROUP_COLOSSEUM, MAP_COLOSSEUM, $0
 	end
 
-UnknownScript_0x192aea:
+Script_LeftMobileBattleRoom:
 	special Function101220
-	scall UnknownScript_0x192af7
+	scall Script_WalkOutOfMobileBattleRoom
 	dotrigger $0
 	domaptrigger GROUP_MOBILE_BATTLE_ROOM, MAP_MOBILE_BATTLE_ROOM, $0
 	end
 
-UnknownScript_0x192af7:
+Script_WalkOutOfMobileBattleRoom:
 	applymovement $3, MovementData_0x192d0b
 	applymovement $0, MovementData_0x192d0f
 	applymovement $3, MovementData_0x192d14
 	end
 
-UnknownScript_0x192b04:
+PokeCenter2F_CheckGender:
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue UnknownScript_0x192b12
+	iftrue .Female
 	applymovement2 MovementData_0x192cca
 	applymovement $0, MovementData_0x192cde
 	end
 
-UnknownScript_0x192b12:
+.Female:
 	applymovement2 MovementData_0x192cd8
 	applymovement $0, MovementData_0x192ce2
 	loadfont
-	writetext UnknownText_0x193266
+	writetext Text_OhPleaseWait
 	closetext
 	loadmovesprites
 	applymovement2 MovementData_0x192cdc
 	spriteface $0, LEFT
 	loadfont
-	writetext UnknownText_0x193278
+	writetext Text_ChangeTheLook
 	closetext
 	loadmovesprites
 	playsound SFX_TINGLE
@@ -435,24 +435,24 @@
 	special Functionc225
 	applymovement $0, MovementData_0x192d1c
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	loadfont
-	writetext UnknownText_0x19329a
+	writetext Text_LikeTheLook
 	closetext
 	loadmovesprites
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	applymovement $0, MovementData_0x192ce5
 	end
 
-UnknownScript_0x192b50:
+Script_CleanUpFemaleFlagAfterTrade:
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue UnknownScript_0x192b63
+	iftrue .Female
 	applymovement $2, MovementData_0x192d04
 	applymovement $0, MovementData_0x192cf5
 	applymovement $2, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192b63:
+.Female:
 	applymovement $2, MovementData_0x192d04
 	applymovement $0, MovementData_0x192d28
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
@@ -461,20 +461,20 @@
 	writebyte $90
 	special Functionc225
 	applymovement $0, MovementData_0x192d1c
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	applymovement $0, MovementData_0x192d2a
 	applymovement $2, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192b8a:
+Script_CleanUpFemaleFlagAfterBattle:
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue UnknownScript_0x192b9d
+	iftrue .Female
 	applymovement $3, MovementData_0x192d04
 	applymovement $0, MovementData_0x192cf5
 	applymovement $3, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192b9d:
+.Female:
 	applymovement $3, MovementData_0x192d04
 	applymovement $0, MovementData_0x192d28
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
@@ -483,58 +483,58 @@
 	writebyte $90
 	special Functionc225
 	applymovement $0, MovementData_0x192d1c
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	applymovement $0, MovementData_0x192d2a
 	applymovement $3, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192bc4:
+TimeCapsuleScript_CheckPlayerGender:
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue UnknownScript_0x192bec
+	iftrue .Female
 	checkcode VAR_FACING
-	if_equal $2, UnknownScript_0x192bdc
-	if_equal $3, UnknownScript_0x192be4
+	if_equal LEFT, .MaleFacingLeft
+	if_equal RIGHT, .MaleFacingRight
 	applymovement2 MovementData_0x192cd2
 	applymovement $0, MovementData_0x192cec
 	end
 
-UnknownScript_0x192bdc:
+.MaleFacingLeft:
 	applymovement2 MovementData_0x192cd2
 	applymovement $0, MovementData_0x192cef
 	end
 
-UnknownScript_0x192be4:
+.MaleFacingRight:
 	applymovement2 MovementData_0x192cd5
 	applymovement $0, MovementData_0x192cf2
 	end
 
-UnknownScript_0x192bec:
+.Female:
 	checkcode VAR_FACING
-	if_equal $3, UnknownScript_0x192c00
-	if_equal $2, UnknownScript_0x192c0a
+	if_equal RIGHT, .FemaleFacingRight
+	if_equal LEFT, .FemaleFacingLeft
 	applymovement2 MovementData_0x192d33
 	applymovement $0, MovementData_0x192d2d
-	jump UnknownScript_0x192c11
+	jump .FemaleContinue
 
-UnknownScript_0x192c00:
+.FemaleFacingRight:
 	applymovement2 MovementData_0x192d36
 	applymovement $0, MovementData_0x192d2f
-	jump UnknownScript_0x192c11
+	jump .FemaleContinue
 
-UnknownScript_0x192c0a:
+.FemaleFacingLeft:
 	applymovement2 MovementData_0x192d33
 	applymovement $0, MovementData_0x192d31
-UnknownScript_0x192c11:
+.FemaleContinue:
 	loadfont
-	writetext UnknownText_0x193266
+	writetext Text_OhPleaseWait
 	closetext
 	loadmovesprites
 	checkcode VAR_FACING
-	if_not_equal $1, UnknownScript_0x192c20
+	if_not_equal UP, .FemaleChangeApperance
 	spriteface $0, LEFT
-UnknownScript_0x192c20:
+.FemaleChangeApperance:
 	loadfont
-	writetext UnknownText_0x193278
+	writetext Text_ChangeTheLook
 	closetext
 	loadmovesprites
 	playsound SFX_TINGLE
@@ -544,25 +544,25 @@
 	applymovement $0, MovementData_0x192d22
 	faceperson $0, $4
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	loadfont
-	writetext UnknownText_0x19329a
+	writetext Text_LikeTheLook
 	closetext
 	loadmovesprites
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	applymovement $0, MovementData_0x192d2d
 	end
 
-UnknownScript_0x192c4e:
-	special Function29c92
+Script_LeftTimeCapsule:
+	special Special_AbortLink
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue UnknownScript_0x192c66
+	iftrue .Female
 	applymovement $4, MovementData_0x192d08
 	applymovement $0, MovementData_0x192cf9
 	applymovement $4, MovementData_0x192d01
-	jump UnknownScript_0x192c8c
+	jump .Done
 
-UnknownScript_0x192c66:
+.Female:
 	applymovement $4, MovementData_0x192d08
 	applymovement $0, MovementData_0x192cfc
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
@@ -571,10 +571,10 @@
 	writebyte $90
 	special Functionc225
 	applymovement $0, MovementData_0x192d1c
-	special Functione4a
+	special Special_ReplaceKrisSprite
 	applymovement $0, MovementData_0x192cfc
 	applymovement $4, MovementData_0x192d01
-UnknownScript_0x192c8c:
+.Done:
 	dotrigger $0
 	domaptrigger GROUP_TIME_CAPSULE, MAP_TIME_CAPSULE, $0
 	end
@@ -588,32 +588,32 @@
 OfficerScript_0x192c9a:
 	faceplayer
 	loadfont
-	checkevent EVENT_711
-	iftrue UnknownScript_0x192cb8
-	writetext UnknownText_0x193190
+	checkevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+	iftrue .AlreadyGotGift
+	writetext Text_MysteryGiftDeliveryGuy_Intro
 	yesorno
-	iffalse UnknownScript_0x192cc4
-	writetext UnknownText_0x1931c4
+	iffalse .RefusedGift
+	writetext Text_MysteryGiftDeliveryGuy_HereYouGo
 	keeptextopen
 	waitbutton
-	special Functionc309
-	iffalse UnknownScript_0x192cbe
+	special Special_GetMysteryGiftItem
+	iffalse .BagIsFull
 	itemnotify
-	setevent EVENT_711
-UnknownScript_0x192cb8:
-	writetext UnknownText_0x1931d2
+	setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+.AlreadyGotGift:
+	writetext Text_MysteryGiftDeliveryGuy_Outro
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x192cbe:
-	writetext UnknownText_0x1931ef
+.BagIsFull:
+	writetext Text_MysteryGiftDeliveryGuy_NoRoom
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x192cc4:
-	writetext UnknownText_0x19324d
+.RefusedGift:
+	writetext Text_MysteryGiftDeliveryGuy_SaidNo
 	closetext
 	loadmovesprites
 	end
@@ -795,7 +795,7 @@
 	turn_head_left
 	step_end
 
-UnknownText_0x192d39:
+Text_BattleReceptionistMobile:
 	text "Would you like to"
 	line "battle over a GAME"
 
@@ -803,7 +803,7 @@
 	line "mobile phone?"
 	done
 
-UnknownText_0x192d7e:
+Text_TradeReceptionistMobile:
 	text "Would you like to"
 	line "trade over a GAME"
 
@@ -811,12 +811,12 @@
 	line "mobile phone?"
 	done
 
-UnknownText_0x192dc2:
+Text_ThisWayToMobileRoom:
 	text "This way to the"
 	line "MOBILE ROOM."
 	done
 
-UnknownText_0x192de0:
+Text_BattleReceptionistIntro:
 	text "Welcome to CABLE"
 	line "CLUB COLOSSEUM."
 
@@ -827,7 +827,7 @@
 	line "battle?"
 	done
 
-UnknownText_0x192e3a:
+Text_TradeReceptionistIntro:
 	text "Welcome to CABLE"
 	line "TRADE CENTER."
 
@@ -839,7 +839,7 @@
 	line "trade?"
 	done
 
-UnknownText_0x192e9f:
+Text_TimeCapsuleRecptionistIntro:
 	text "Welcome to CABLE"
 	line "CLUB TIME CAPSULE."
 
@@ -851,22 +851,22 @@
 	line "trade across time?"
 	done
 
-UnknownText_0x192f19:
+Text_FriendNotReady:
 	text "Your friend is not"
 	line "ready."
 	prompt
 
-UnknownText_0x192f34:
+Text_MustSaveGame:
 	text "Before opening the"
 	line "link, you must"
 	cont "save your game."
 	done
 
-UnknownText_0x192f67:
+Text_PleaseWait:
 	text "Please wait."
 	done
 
-UnknownText_0x192f75:
+Text_LinkTimedOut:
 	text "The link has been"
 	line "closed because of"
 	cont "inactivity."
@@ -876,39 +876,39 @@
 	cont "come again."
 	prompt
 
-UnknownText_0x192fd1:
+Text_PleaseComeAgain:
 	text "Please come again."
 	prompt
 
-UnknownText_0x192fe5:
+Text_PleaseComeIn:
 	text "Please come in."
 	prompt
 
-UnknownText_0x192ff6:
+Text_TemporaryStagingInLinkRoom:
 	text "We'll put you in"
 	line "the link room for"
 	cont "the time being."
 	done
 
-UnknownText_0x193029:
+Text_CantLinkToThePast:
 	text "You can't link to"
 	line "the past here."
 	prompt
 
-UnknownText_0x19304a:
+Text_IncompatibleRooms:
 	text "Incompatible rooms"
 	line "were chosen."
 	prompt
 
-UnknownText_0x19306b:
+Text_PleaseComeIn2:
 	text "Please come in."
 	done
 
-UnknownText_0x19307c:
+Text_PleaseEnter:
 	text "Please enter."
 	prompt
 
-UnknownText_0x19308b:
+Text_RejectNewMon:
 	text "Sorry--@"
 	text_from_ram StringBuffer1
 	text ""
@@ -915,7 +915,7 @@
 	line "can't be taken."
 	prompt
 
-UnknownText_0x1930a8:
+Text_RejectMonWithNewMove:
 	text "You can't take the"
 	line "@"
 	text_from_ram StringBuffer1
@@ -925,7 +925,7 @@
 	text "."
 	prompt
 
-UnknownText_0x1930cf:
+Text_RejectMonWithMail:
 	text "You can't take the"
 	line "@"
 	text_from_ram StringBuffer1
@@ -933,25 +933,25 @@
 	cont "has MAIL with you."
 	prompt
 
-UnknownText_0x193100:
+Text_TimeCapsuleClosed:
 	text "I'm sorry--the"
 	line "TIME CAPSULE is"
 	cont "being adjusted."
 	done
 
-UnknownText_0x19312f:
+Text_TradeRoomClosed:
 	text "I'm sorry--the"
 	line "TRADE MACHINE is"
 	cont "being adjusted."
 	done
 
-UnknownText_0x19315f:
+Text_BattleRoomClosed:
 	text "I'm sorry--the"
 	line "BATTLE MACHINE is"
 	cont "being adjusted."
 	done
 
-UnknownText_0x193190:
+Text_MysteryGiftDeliveryGuy_Intro:
 	text "Hello! You're"
 	line "<PLAYER>, right?"
 
@@ -959,16 +959,16 @@
 	line "thing for you."
 	done
 
-UnknownText_0x1931c4:
+Text_MysteryGiftDeliveryGuy_HereYouGo:
 	text "Here you go!"
 	done
 
-UnknownText_0x1931d2:
+Text_MysteryGiftDeliveryGuy_Outro:
 	text "We hope to serve"
 	line "you again."
 	done
 
-UnknownText_0x1931ef:
+Text_MysteryGiftDeliveryGuy_NoRoom:
 	text "Oh, you have no"
 	line "space for this."
 
@@ -979,26 +979,26 @@
 	line "to pick it up."
 	done
 
-UnknownText_0x19324d:
+Text_MysteryGiftDeliveryGuy_SaidNo:
 	text "No? That's very"
 	line "strange…"
 	done
 
-UnknownText_0x193266:
+Text_OhPleaseWait:
 	text "Oh, please wait."
 	done
 
-UnknownText_0x193278:
+Text_ChangeTheLook:
 	text "We need to change"
 	line "the look here…"
 	done
 
-UnknownText_0x19329a:
+Text_LikeTheLook:
 	text "How does this"
 	line "style look to you?"
 	done
 
-UnknownText_0x1932bc:
+Text_BrokeStadiumRules:
 	text "Excuse me!"
 
 	para "For STADIUM rules,"
@@ -1022,9 +1022,9 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
-	warp_def $7, $0, 255, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
+	warp_def $7, $0, -1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $0, $5, 1, GROUP_TRADE_CENTER, MAP_TRADE_CENTER
 	warp_def $0, $9, 1, GROUP_COLOSSEUM, MAP_COLOSSEUM
 	warp_def $2, $d, 1, GROUP_TIME_CAPSULE, MAP_TIME_CAPSULE
@@ -1031,16 +1031,16 @@
 	warp_def $0, $6, 1, GROUP_MOBILE_TRADE_ROOM_MOBILE, MAP_MOBILE_TRADE_ROOM_MOBILE
 	warp_def $0, $a, 1, GROUP_MOBILE_BATTLE_ROOM, MAP_MOBILE_BATTLE_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 3, 7, $0, MapPokeCenter2FSignpost0Script
+	signpost 3, 7, SIGNPOST_READ, MapPokeCenter2FSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_LINK_RECEPTIONIST, 6, 9, $6, $0, 255, 255, $a0, 0, LinkReceptionistScript_0x19289d, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 6, 13, $6, $0, 255, 255, $a0, 0, LinkReceptionistScript_0x192952, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 7, 17, $6, $0, 255, 255, $a0, 0, LinkReceptionistScript_0x192a2d, -1
-	person_event SPRITE_OFFICER, 5, 5, $6, $0, 255, 255, $0, 0, OfficerScript_0x192c9a, EVENT_711
+	person_event SPRITE_LINK_RECEPTIONIST, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LinkReceptionistScript_Trade, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 6, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LinkReceptionistScript_Battle, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 7, 17, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LinkReceptionistScript_TimeCapsule, -1
+	person_event SPRITE_OFFICER, 5, 5, OW_UP | $2, $0, -1, -1, $0, 0, OfficerScript_0x192c9a, EVENT_MYSTERY_GIFT_DELIVERY_GUY
--- a/maps/PokeSeersHouse.asm
+++ b/maps/PokeSeersHouse.asm
@@ -1,8 +1,8 @@
 PokeSeersHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SeerScript:
@@ -17,17 +17,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 7, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 	warp_def $7, $3, 7, GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GRANNY, 7, 6, $6, $0, 255, 255, $80, 0, SeerScript, -1
+	person_event SPRITE_GRANNY, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SeerScript, -1
--- a/maps/PokemonFanClub.asm
+++ b/maps/PokemonFanClub.asm
@@ -1,8 +1,8 @@
 PokemonFanClub_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GentlemanScript_0x1917e9:
@@ -292,24 +292,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $7, $3, 3, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 7, $0, MapPokemonFanClubSignpost0Script
-	signpost 0, 9, $0, MapPokemonFanClubSignpost1Script
+	signpost 0, 7, SIGNPOST_READ, MapPokemonFanClubSignpost0Script
+	signpost 0, 9, SIGNPOST_READ, MapPokemonFanClubSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_GENTLEMAN, 5, 7, $6, $0, 255, 255, $0, 0, GentlemanScript_0x1917e9, -1
-	person_event SPRITE_RECEPTIONIST, 5, 8, $6, $0, 255, 255, $a0, 0, ReceptionistScript_0x191821, -1
-	person_event SPRITE_FISHER, 7, 6, $9, $0, 255, 255, $0, 0, FisherScript_0x191824, -1
-	person_event SPRITE_TEACHER, 6, 11, $8, $0, 255, 255, $0, 0, TeacherScript_0x19186b, -1
-	person_event SPRITE_FAIRY, 8, 6, $6, $0, 255, 255, $0, 0, FairyScript_0x19186e, EVENT_774
-	person_event SPRITE_ODDISH, 7, 11, $16, $0, 255, 255, $a0, 0, OddishScript_0x191871, -1
+	person_event SPRITE_GENTLEMAN, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, GentlemanScript_0x1917e9, -1
+	person_event SPRITE_RECEPTIONIST, 5, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x191821, -1
+	person_event SPRITE_FISHER, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, FisherScript_0x191824, -1
+	person_event SPRITE_TEACHER, 6, 11, OW_LEFT | $0, $0, -1, -1, $0, 0, TeacherScript_0x19186b, -1
+	person_event SPRITE_FAIRY, 8, 6, OW_UP | $2, $0, -1, -1, $0, 0, FairyScript_0x19186e, EVENT_VERMILION_FAN_CLUB_DOLL
+	person_event SPRITE_ODDISH, 7, 11, OW_UP | $12, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OddishScript_0x191871, -1
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -1,5 +1,5 @@
 PowerPlant_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x188dc3, $0000
 	dw UnknownScript_0x188dc4, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x188dc3:
@@ -17,7 +17,7 @@
 
 UnknownScript_0x188dc5:
 	playsound SFX_CALL
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	waitbutton
 	pause 30
 	applymovement $2, MovementData_0x188ed5
@@ -139,7 +139,7 @@
 	closetext
 	loadmovesprites
 	setevent EVENT_MET_MANAGER_AT_POWER_PLANT
-	clearevent EVENT_76D
+	clearevent EVENT_CERULEAN_GYM_ROCKET
 	clearevent EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM
 	domaptrigger GROUP_CERULEAN_GYM, MAP_CERULEAN_GYM, $1
 	dotrigger $1
@@ -156,11 +156,11 @@
 	keeptextopen
 	takeitem MACHINE_PART, 1
 	setevent EVENT_RETURNED_MACHINE_PART
-	clearevent EVENT_772
-	setevent EVENT_771
-	setevent EVENT_76C
+	clearevent EVENT_SAFFRON_TRAIN_STATION_POPULATION
+	setevent EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
+	setevent EVENT_ROUTE_24_ROCKET
 	setevent EVENT_RESTORED_POWER_TO_KANTO
-	clearevent EVENT_749
+	clearevent EVENT_GOLDENROD_TRAIN_STATION_GENTLEMAN
 UnknownScript_0x188eac:
 	checkevent EVENT_GOT_TM07_ZAP_CANNON
 	iftrue UnknownScript_0x188ec5
@@ -385,26 +385,26 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $2, 2, GROUP_ROUTE_10_NORTH, MAP_ROUTE_10_NORTH
 	warp_def $11, $3, 2, GROUP_ROUTE_10_NORTH, MAP_ROUTE_10_NORTH
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 1, $c, $5, $0, UnknownScript_0x188dc5, $0, $0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, PowerPlantBookshelf
-	signpost 1, 1, $0, PowerPlantBookshelf
+	signpost 1, 0, SIGNPOST_READ, PowerPlantBookshelf
+	signpost 1, 1, SIGNPOST_READ, PowerPlantBookshelf
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_OFFICER, 18, 8, $6, $0, 255, 255, $a0, 0, OfficerScript_0x188df5, -1
-	person_event SPRITE_GYM_GUY, 13, 6, $3, $0, 255, 255, $90, 0, GymGuyScript_0x188e15, -1
-	person_event SPRITE_GYM_GUY, 15, 10, $7, $0, 255, 255, $90, 0, GymGuyScript_0x188e29, -1
-	person_event SPRITE_OFFICER, 7, 13, $8, $0, 255, 255, $a0, 0, OfficerScript_0x188e3d, -1
-	person_event SPRITE_GYM_GUY, 6, 11, $5, $1, 255, 255, $90, 0, GymGuyScript_0x188e51, -1
-	person_event SPRITE_FISHER, 14, 18, $7, $0, 255, 255, $80, 0, PowerPlantManager, -1
-	person_event SPRITE_GYM_GUY, 9, 9, $7, $0, 255, 255, $90, 0, GymGuyScript_0x188ecb, -1
+	person_event SPRITE_OFFICER, 18, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x188df5, -1
+	person_event SPRITE_GYM_GUY, 13, 6, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188e15, -1
+	person_event SPRITE_GYM_GUY, 15, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188e29, -1
+	person_event SPRITE_OFFICER, 7, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x188e3d, -1
+	person_event SPRITE_GYM_GUY, 6, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188e51, -1
+	person_event SPRITE_FISHER, 14, 18, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PowerPlantManager, -1
+	person_event SPRITE_GYM_GUY, 9, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188ecb, -1
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -1,8 +1,8 @@
 RadioTower1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ReceptionistScript_0x5cd29:
@@ -178,24 +178,8 @@
 	jumptextfaceplayer UnknownText_0x5d4ac
 
 TrainerGruntM3:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_3
+	trainer EVENT_BEAT_ROCKET_GRUNTM_3, GRUNTM, 3, GruntM3SeenText, GruntM3BeatenText, $0000, GruntM3Script
 
-	; trainer group && trainer id
-	db GRUNTM, 3
-
-	; text when seen
-	dw GruntM3SeenText
-
-	; text when trainer beaten
-	dw GruntM3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM3Script
-
 GruntM3Script:
 	talkaftercancel
 	loadfont
@@ -484,25 +468,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $2, 11, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $3, 11, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $0, $f, 2, GROUP_RADIO_TOWER_2F, MAP_RADIO_TOWER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 3, $0, MapRadioTower1FSignpost0Script
-	signpost 0, 13, $0, MapRadioTower1FSignpost1Script
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower1FSignpost0Script
+	signpost 0, 13, SIGNPOST_READ, MapRadioTower1FSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_RECEPTIONIST, 10, 9, $8, $0, 255, 255, $80, 0, ReceptionistScript_0x5cd29, -1
-	person_event SPRITE_LASS, 8, 20, $8, $0, 255, 255, $80, 0, LassScript_0x5ce51, EVENT_6CF
-	person_event SPRITE_YOUNGSTER, 8, 19, $9, $0, 255, 255, $90, 0, YoungsterScript_0x5ce54, EVENT_6CF
-	person_event SPRITE_ROCKET, 5, 18, $6, $0, 255, 255, $2, 3, TrainerGruntM3, EVENT_6CE
-	person_event SPRITE_GENTLEMAN, 10, 12, $7, $0, 255, 255, $90, 0, GentlemanScript_0x5cd3d, EVENT_6CF
-	person_event SPRITE_COOLTRAINER_F, 10, 16, $7, $0, 255, 255, $a0, 0, CooltrainerFScript_0x5cdd5, EVENT_6CF
+	person_event SPRITE_RECEPTIONIST, 10, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x5cd29, -1
+	person_event SPRITE_LASS, 8, 20, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, LassScript_0x5ce51, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_YOUNGSTER, 8, 19, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x5ce54, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_ROCKET, 5, 18, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM3, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_GENTLEMAN, 10, 12, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GentlemanScript_0x5cd3d, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 10, 16, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x5cdd5, EVENT_GOLDENROD_CITY_CIVILIANS
--- a/maps/RadioTower2F.asm
+++ b/maps/RadioTower2F.asm
@@ -1,8 +1,8 @@
 RadioTower2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x5d6fd:
@@ -42,24 +42,8 @@
 	jumptextfaceplayer UnknownText_0x5da44
 
 TrainerGruntM4:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_4
+	trainer EVENT_BEAT_ROCKET_GRUNTM_4, GRUNTM, 4, GruntM4SeenText, GruntM4BeatenText, $0000, GruntM4Script
 
-	; trainer group && trainer id
-	db GRUNTM, 4
-
-	; text when seen
-	dw GruntM4SeenText
-
-	; text when trainer beaten
-	dw GruntM4BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM4Script
-
 GruntM4Script:
 	talkaftercancel
 	loadfont
@@ -69,24 +53,8 @@
 	end
 
 TrainerGruntM5:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_5
+	trainer EVENT_BEAT_ROCKET_GRUNTM_5, GRUNTM, 5, GruntM5SeenText, GruntM5BeatenText, $0000, GruntM5Script
 
-	; trainer group && trainer id
-	db GRUNTM, 5
-
-	; text when seen
-	dw GruntM5SeenText
-
-	; text when trainer beaten
-	dw GruntM5BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM5Script
-
 GruntM5Script:
 	talkaftercancel
 	loadfont
@@ -96,24 +64,8 @@
 	end
 
 TrainerGruntM6:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_6
+	trainer EVENT_BEAT_ROCKET_GRUNTM_6, GRUNTM, 6, GruntM6SeenText, GruntM6BeatenText, $0000, GruntM6Script
 
-	; trainer group && trainer id
-	db GRUNTM, 6
-
-	; text when seen
-	dw GruntM6SeenText
-
-	; text when trainer beaten
-	dw GruntM6BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM6Script
-
 GruntM6Script:
 	talkaftercancel
 	loadfont
@@ -123,24 +75,8 @@
 	end
 
 TrainerGruntF2:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_2
+	trainer EVENT_BEAT_ROCKET_GRUNTF_2, GRUNTF, 2, GruntF2SeenText, GruntF2BeatenText, $0000, GruntF2Script
 
-	; trainer group && trainer id
-	db GRUNTF, 2
-
-	; text when seen
-	dw GruntF2SeenText
-
-	; text when trainer beaten
-	dw GruntF2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF2Script
-
 GruntF2Script:
 	talkaftercancel
 	loadfont
@@ -156,16 +92,16 @@
 	iftrue UnknownScript_0x5d865
 	checkevent EVENT_MET_BUENA
 	iffalse UnknownScript_0x5d800
-	checkflag ENGINE_60
+	checkflag ENGINE_BUENAS_PASSWORD_2
 	iftrue UnknownScript_0x5d82f
 	checkcode VAR_HOUR
-	if_less_than $12, UnknownScript_0x5d893
-	checkflag ENGINE_5F
+	if_less_than 18, UnknownScript_0x5d893
+	checkflag ENGINE_BUENAS_PASSWORD
 	iffalse UnknownScript_0x5d80a
 	checkitem BLUE_CARD
 	iffalse UnknownScript_0x5d86b
 	checkcode VAR_BLUECARDBALANCE
-	if_equal $1e, UnknownScript_0x5d87f
+	if_equal 30, UnknownScript_0x5d87f
 	playmusic MUSIC_BUENAS_PASSWORD
 	writetext UnknownText_0x5de35
 	special Function4ae12
@@ -197,7 +133,7 @@
 	writevarcode VAR_BLUECARDBALANCE
 	waitbutton
 	playsound SFX_TRANSACTION
-	setflag ENGINE_60
+	setflag ENGINE_BUENAS_PASSWORD_2
 	pause 20
 	spriteface $b, RIGHT
 	loadfont
@@ -220,7 +156,7 @@
 	writetext UnknownText_0x5de10
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d81a
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
@@ -242,7 +178,7 @@
 	writetext UnknownText_0x5df6c
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d83f
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
@@ -252,7 +188,7 @@
 	end
 
 UnknownScript_0x5d845:
-	setflag ENGINE_60
+	setflag ENGINE_BUENAS_PASSWORD_2
 	loadfont
 	writetext UnknownText_0x5e01c
 	closetext
@@ -279,7 +215,7 @@
 	writetext UnknownText_0x5e192
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d87b
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
@@ -291,7 +227,7 @@
 	writetext UnknownText_0x5e0f1
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d88f
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
@@ -303,7 +239,7 @@
 	writetext UnknownText_0x5e131
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d8a3
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
@@ -311,7 +247,7 @@
 	end
 
 UnknownScript_0x5d8a4:
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d8fe
 	pause 20
 	spriteface $b, DOWN
@@ -320,7 +256,7 @@
 	pause 15
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
-	showemote $0, $b, 15
+	showemote EMOTE_SHOCK, $b, 15
 	setevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	setevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	loadfont
@@ -331,7 +267,7 @@
 	loadfont
 	writetext UnknownText_0x5e2bf
 UnknownScript_0x5d8d0:
-	askforphonenumber $25
+	askforphonenumber PHONE_BUENA
 	if_equal $1, UnknownScript_0x5d8f6
 	if_equal $2, UnknownScript_0x5d8ed
 	writetext UnknownText_0x5e2f3
@@ -342,7 +278,7 @@
 	closetext
 	loadmovesprites
 	spriteface $b, RIGHT
-	addcellnum $25
+	addcellnum PHONE_BUENA
 	end
 
 UnknownScript_0x5d8ed:
@@ -765,33 +701,33 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $0, $0, 1, GROUP_RADIO_TOWER_3F, MAP_RADIO_TOWER_3F
 	warp_def $0, $f, 3, GROUP_RADIO_TOWER_1F, MAP_RADIO_TOWER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 0, 3, $0, MapRadioTower2FSignpost0Script
-	signpost 0, 5, $0, MapRadioTower2FSignpost1Script
-	signpost 1, 9, $0, RadioTower2FBookshelf
-	signpost 1, 10, $0, RadioTower2FBookshelf
-	signpost 1, 11, $0, RadioTower2FBookshelf
-	signpost 0, 13, $0, MapRadioTower2FSignpost5Script
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower2FSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapRadioTower2FSignpost1Script
+	signpost 1, 9, SIGNPOST_READ, RadioTower2FBookshelf
+	signpost 1, 10, SIGNPOST_READ, RadioTower2FBookshelf
+	signpost 1, 11, SIGNPOST_READ, RadioTower2FBookshelf
+	signpost 0, 13, SIGNPOST_READ, MapRadioTower2FSignpost5Script
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_SUPER_NERD, 10, 10, $8, $0, 255, 255, $a0, 0, SuperNerdScript_0x5d6fe, EVENT_6CF
-	person_event SPRITE_TEACHER, 6, 21, $5, $1, 255, 255, $80, 0, TeacherScript_0x5d701, -1
-	person_event SPRITE_ROCKET, 8, 5, $7, $0, 255, 255, $2, 3, TrainerGruntM4, EVENT_6CE
-	person_event SPRITE_ROCKET, 8, 12, $6, $0, 255, 255, $2, 3, TrainerGruntM5, EVENT_6CE
-	person_event SPRITE_ROCKET, 5, 8, $6, $0, 255, 255, $2, 2, TrainerGruntM6, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 9, 14, $7, $0, 255, 255, $82, 3, TrainerGruntF2, EVENT_6CE
-	person_event SPRITE_BLACK_BELT, 5, 4, $6, $0, 255, 255, $0, 0, BlackBeltScript_0x5d71f, EVENT_6D1
-	person_event SPRITE_BLACK_BELT, 5, 5, $6, $0, 255, 255, $0, 0, BlackBeltScript_0x5d722, EVENT_6D0
-	person_event SPRITE_JIGGLYPUFF, 5, 16, $16, $0, 255, 255, $0, 0, JigglypuffScript_0x5d715, -1
-	person_event SPRITE_BUENA, 9, 18, $9, $0, 255, 255, $80, 0, Buena, -1
-	person_event SPRITE_RECEPTIONIST, 11, 16, $9, $0, 255, 255, $a0, 0, ReceptionistScript_0x5d8ff, EVENT_6CF
+	person_event SPRITE_SUPER_NERD, 10, 10, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x5d6fe, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_TEACHER, 6, 21, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x5d701, -1
+	person_event SPRITE_ROCKET, 8, 5, OW_UP | $3, $0, -1, -1, $2, 3, TrainerGruntM4, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 8, 12, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM5, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 5, 8, OW_UP | $2, $0, -1, -1, $2, 2, TrainerGruntM6, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET_GIRL, 9, 14, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerGruntF2, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_BLACK_BELT, 5, 4, OW_UP | $2, $0, -1, -1, $0, 0, BlackBeltScript_0x5d71f, EVENT_RADIO_TOWER_BLACKBELT_BLOCKS_STAIRS
+	person_event SPRITE_BLACK_BELT, 5, 5, OW_UP | $2, $0, -1, -1, $0, 0, BlackBeltScript_0x5d722, EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	person_event SPRITE_JIGGLYPUFF, 5, 16, OW_UP | $12, $0, -1, -1, $0, 0, JigglypuffScript_0x5d715, -1
+	person_event SPRITE_BUENA, 9, 18, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Buena, -1
+	person_event SPRITE_RECEPTIONIST, 11, 16, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x5d8ff, EVENT_GOLDENROD_CITY_CIVILIANS
--- a/maps/RadioTower3F.asm
+++ b/maps/RadioTower3F.asm
@@ -1,8 +1,8 @@
 RadioTower3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -77,24 +77,8 @@
 	end
 
 TrainerGruntM7:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_7
+	trainer EVENT_BEAT_ROCKET_GRUNTM_7, GRUNTM, 7, GruntM7SeenText, GruntM7BeatenText, $0000, GruntM7Script
 
-	; trainer group && trainer id
-	db GRUNTM, 7
-
-	; text when seen
-	dw GruntM7SeenText
-
-	; text when trainer beaten
-	dw GruntM7BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM7Script
-
 GruntM7Script:
 	talkaftercancel
 	loadfont
@@ -104,24 +88,8 @@
 	end
 
 TrainerGruntM8:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_8
+	trainer EVENT_BEAT_ROCKET_GRUNTM_8, GRUNTM, 8, GruntM8SeenText, GruntM8BeatenText, $0000, GruntM8Script
 
-	; trainer group && trainer id
-	db GRUNTM, 8
-
-	; text when seen
-	dw GruntM8SeenText
-
-	; text when trainer beaten
-	dw GruntM8BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM8Script
-
 GruntM8Script:
 	talkaftercancel
 	loadfont
@@ -131,24 +99,8 @@
 	end
 
 TrainerGruntM9:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_9
+	trainer EVENT_BEAT_ROCKET_GRUNTM_9, GRUNTM, 9, GruntM9SeenText, GruntM9BeatenText, $0000, GruntM9Script
 
-	; trainer group && trainer id
-	db GRUNTM, 9
-
-	; text when seen
-	dw GruntM9SeenText
-
-	; text when trainer beaten
-	dw GruntM9BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM9Script
-
 GruntM9Script:
 	talkaftercancel
 	loadfont
@@ -158,24 +110,8 @@
 	end
 
 TrainerScientistMarc:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_MARC
+	trainer EVENT_BEAT_SCIENTIST_MARC, SCIENTIST, MARC, ScientistMarcSeenText, ScientistMarcBeatenText, $0000, ScientistMarcScript
 
-	; trainer group && trainer id
-	db SCIENTIST, MARC
-
-	; text when seen
-	dw ScientistMarcSeenText
-
-	; text when trainer beaten
-	dw ScientistMarcBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistMarcScript
-
 ScientistMarcScript:
 	talkaftercancel
 	loadfont
@@ -390,27 +326,27 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $0, $0, 1, GROUP_RADIO_TOWER_2F, MAP_RADIO_TOWER_2F
 	warp_def $0, $7, 2, GROUP_RADIO_TOWER_4F, MAP_RADIO_TOWER_4F
 	warp_def $0, $11, 4, GROUP_RADIO_TOWER_4F, MAP_RADIO_TOWER_4F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 0, 3, $0, MapRadioTower3FSignpost0Script
-	signpost 0, 9, $0, MapRadioTower3FSignpost1Script
-	signpost 2, 14, $1, MapRadioTower3FSignpost2Script
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower3FSignpost0Script
+	signpost 0, 9, SIGNPOST_READ, MapRadioTower3FSignpost1Script
+	signpost 2, 14, SIGNPOST_UP, MapRadioTower3FSignpost2Script
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_SUPER_NERD, 8, 11, $7, $0, 255, 255, $90, 0, SuperNerdScript_0x5e553, EVENT_6D0
-	person_event SPRITE_GYM_GUY, 8, 7, $a, $0, 255, 255, $80, 0, GymGuyScript_0x5e556, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 15, $2, $11, 255, 255, $a0, 0, CooltrainerFScript_0x5e56a, -1
-	person_event SPRITE_ROCKET, 5, 9, $9, $0, 255, 255, $2, 2, TrainerGruntM7, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 10, $6, $0, 255, 255, $2, 3, TrainerGruntM8, EVENT_6CE
-	person_event SPRITE_ROCKET, 10, 20, $7, $0, 255, 255, $2, 3, TrainerGruntM9, EVENT_6CE
-	person_event SPRITE_SCIENTIST, 10, 13, $7, $0, 255, 255, $92, 5, TrainerScientistMarc, EVENT_6CE
+	person_event SPRITE_SUPER_NERD, 8, 11, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x5e553, EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	person_event SPRITE_GYM_GUY, 8, 7, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GymGuyScript_0x5e556, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 15, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x5e56a, -1
+	person_event SPRITE_ROCKET, 5, 9, OW_LEFT | $1, $0, -1, -1, $2, 2, TrainerGruntM7, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 6, 10, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM8, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 10, 20, OW_UP | $3, $0, -1, -1, $2, 3, TrainerGruntM9, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_SCIENTIST, 10, 13, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerScientistMarc, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -1,8 +1,8 @@
 RadioTower4F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FisherScript_0x5eb82:
@@ -47,24 +47,8 @@
 	end
 
 TrainerGruntM10:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_10
+	trainer EVENT_BEAT_ROCKET_GRUNTM_10, GRUNTM, 10, GruntM10SeenText, GruntM10BeatenText, $0000, GruntM10Script
 
-	; trainer group && trainer id
-	db GRUNTM, 10
-
-	; text when seen
-	dw GruntM10SeenText
-
-	; text when trainer beaten
-	dw GruntM10BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM10Script
-
 GruntM10Script:
 	talkaftercancel
 	loadfont
@@ -74,24 +58,8 @@
 	end
 
 TrainerExecutivem2:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_EXECUTIVEM_2
+	trainer EVENT_BEAT_ROCKET_EXECUTIVEM_2, EXECUTIVEM, 2, Executivem2SeenText, Executivem2BeatenText, $0000, Executivem2Script
 
-	; trainer group && trainer id
-	db EXECUTIVEM, 2
-
-	; text when seen
-	dw Executivem2SeenText
-
-	; text when trainer beaten
-	dw Executivem2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Executivem2Script
-
 Executivem2Script:
 	talkaftercancel
 	loadfont
@@ -101,24 +69,8 @@
 	end
 
 TrainerGruntF4:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_4
+	trainer EVENT_BEAT_ROCKET_GRUNTF_4, GRUNTF, 4, GruntF4SeenText, GruntF4BeatenText, $0000, GruntF4Script
 
-	; trainer group && trainer id
-	db GRUNTF, 4
-
-	; text when seen
-	dw GruntF4SeenText
-
-	; text when trainer beaten
-	dw GruntF4BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF4Script
-
 GruntF4Script:
 	talkaftercancel
 	loadfont
@@ -128,24 +80,8 @@
 	end
 
 TrainerScientistRich:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_RICH
+	trainer EVENT_BEAT_SCIENTIST_RICH, SCIENTIST, RICH, ScientistRichSeenText, ScientistRichBeatenText, $0000, ScientistRichScript
 
-	; trainer group && trainer id
-	db SCIENTIST, RICH
-
-	; text when seen
-	dw ScientistRichSeenText
-
-	; text when trainer beaten
-	dw ScientistRichBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistRichScript
-
 ScientistRichScript:
 	talkaftercancel
 	loadfont
@@ -304,7 +240,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $0, 1, GROUP_RADIO_TOWER_5F, MAP_RADIO_TOWER_5F
 	warp_def $0, $9, 2, GROUP_RADIO_TOWER_3F, MAP_RADIO_TOWER_3F
@@ -311,20 +247,20 @@
 	warp_def $0, $c, 2, GROUP_RADIO_TOWER_5F, MAP_RADIO_TOWER_5F
 	warp_def $0, $11, 3, GROUP_RADIO_TOWER_3F, MAP_RADIO_TOWER_3F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 0, 7, $0, MapRadioTower4FSignpost0Script
-	signpost 0, 15, $0, MapRadioTower4FSignpost1Script
+	signpost 0, 7, SIGNPOST_READ, MapRadioTower4FSignpost0Script
+	signpost 0, 15, SIGNPOST_READ, MapRadioTower4FSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_FISHER, 8, 10, $7, $0, 255, 255, $80, 0, FisherScript_0x5eb82, EVENT_6D0
-	person_event SPRITE_TEACHER, 10, 18, $3, $0, 255, 255, $a0, 0, TeacherScript_0x5eb85, -1
-	person_event SPRITE_GROWLITHE, 11, 16, $16, $0, 255, 255, $80, 0, GrowlitheScript_0x5ebb2, -1
-	person_event SPRITE_ROCKET, 10, 9, $1f, $0, 255, 255, $2, 3, TrainerGruntM10, EVENT_6CE
-	person_event SPRITE_ROCKET, 5, 18, $8, $2, 255, 255, $2, 2, TrainerExecutivem2, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 8, 16, $9, $0, 255, 255, $82, 1, TrainerGruntF4, EVENT_6CE
-	person_event SPRITE_SCIENTIST, 6, 8, $8, $0, 255, 255, $92, 4, TrainerScientistRich, EVENT_6CE
+	person_event SPRITE_FISHER, 8, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x5eb82, EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	person_event SPRITE_TEACHER, 10, 18, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x5eb85, -1
+	person_event SPRITE_GROWLITHE, 11, 16, OW_UP | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GrowlitheScript_0x5ebb2, -1
+	person_event SPRITE_ROCKET, 10, 9, OW_RIGHT | $13, $0, -1, -1, $2, 3, TrainerGruntM10, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 5, 18, OW_LEFT | $0, $2, -1, -1, $2, 2, TrainerExecutivem2, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET_GIRL, 8, 16, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerGruntF4, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_SCIENTIST, 6, 8, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerScientistRich, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -1,5 +1,5 @@
 RadioTower5F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
@@ -7,7 +7,7 @@
 	dw UnknownScript_0x6000f, $0000
 	dw UnknownScript_0x60010, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x6000e:
@@ -21,7 +21,7 @@
 
 UnknownScript_0x60011:
 	spriteface $2, UP
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	loadfont
 	writetext UnknownText_0x60128
 	closetext
@@ -63,24 +63,8 @@
 	end
 
 TrainerExecutivef1:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_EXECUTIVEF_1
+	trainer EVENT_BEAT_ROCKET_EXECUTIVEF_1, EXECUTIVEF, 1, Executivef1SeenText, Executivef1BeatenText, $0000, Executivef1Script
 
-	; trainer group && trainer id
-	db EXECUTIVEF, 1
-
-	; text when seen
-	dw Executivef1SeenText
-
-	; text when trainer beaten
-	dw Executivef1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Executivef1Script
-
 Executivef1Script:
 	talkaftercancel
 	loadfont
@@ -106,24 +90,24 @@
 	writetext UnknownText_0x6050e
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	disappear $3
 	disappear $4
 	pause 15
-	special Function8c0ab
+	special Special_FadeInQuickly
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEM_1
 	setevent EVENT_CLEARED_RADIO_TOWER
 	clearflag ENGINE_ROCKETS_IN_RADIO_TOWER
-	setevent EVENT_6CC
-	setevent EVENT_6CD
-	setevent EVENT_6CE
-	clearevent EVENT_736
+	setevent EVENT_GOLDENROD_CITY_ROCKET_SCOUT
+	setevent EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+	setevent EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	clearevent EVENT_MAHOGANY_MART_OWNERS
 	clearflag ENGINE_ROCKETS_IN_MAHOGANY
-	clearevent EVENT_6CF
-	clearevent EVENT_6D0
-	setevent EVENT_6E3
-	clearevent EVENT_6E4
+	clearevent EVENT_GOLDENROD_CITY_CIVILIANS
+	clearevent EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	setevent EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
+	clearevent EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
 	special PlayMapMusic
 	disappear $2
 	moveperson $2, $c, $0
@@ -140,7 +124,7 @@
 	dotrigger $2
 	domaptrigger GROUP_ECRUTEAK_HOUSE, MAP_ECRUTEAK_HOUSE, $0
 	setevent EVENT_GOT_CLEAR_BELL
-	setevent EVENT_761
+	setevent EVENT_TEAM_ROCKET_DISBANDED
 	jump UnknownScript_0x600f1
 
 UnknownScript_0x600f1:
@@ -435,28 +419,28 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $0, $0, 1, GROUP_RADIO_TOWER_4F, MAP_RADIO_TOWER_4F
 	warp_def $0, $c, 3, GROUP_RADIO_TOWER_4F, MAP_RADIO_TOWER_4F
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $3, $0, $0, UnknownScript_0x60011, $0, $0
 	xy_trigger 1, $5, $10, $0, UnknownScript_0x6006e, $0, $0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 0, 3, $0, MapRadioTower5FSignpost0Script
-	signpost 0, 11, $0, MapRadioTower5FSignpost2Script
-	signpost 0, 15, $0, MapRadioTower5FSignpost2Script
-	signpost 1, 16, $0, RadioTower5FBookshelf
-	signpost 1, 17, $0, RadioTower5FBookshelf
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower5FSignpost0Script
+	signpost 0, 11, SIGNPOST_READ, MapRadioTower5FSignpost2Script
+	signpost 0, 15, SIGNPOST_READ, MapRadioTower5FSignpost2Script
+	signpost 1, 16, SIGNPOST_READ, RadioTower5FBookshelf
+	signpost 1, 17, SIGNPOST_READ, RadioTower5FBookshelf
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_GENTLEMAN, 10, 7, $3, $0, 255, 255, $0, 0, Director, -1
-	person_event SPRITE_ROCKET, 9, 17, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 6, 21, $8, $0, 255, 255, $82, 1, TrainerExecutivef1, EVENT_6CE
-	person_event SPRITE_ROCKER, 9, 17, $8, $0, 255, 255, $80, 0, Ben, EVENT_6D0
-	person_event SPRITE_POKE_BALL, 9, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x600fe, EVENT_7CD
+	person_event SPRITE_GENTLEMAN, 10, 7, OW_DOWN | $3, $0, -1, -1, $0, 0, Director, -1
+	person_event SPRITE_ROCKET, 9, 17, OW_LEFT | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET_GIRL, 6, 21, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerExecutivef1, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKER, 9, 17, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Ben, EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	person_event SPRITE_POKE_BALL, 9, 12, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x600fe, EVENT_RADIO_TOWER_5F_ULTRA_BALL
--- a/maps/RedsHouse1F.asm
+++ b/maps/RedsHouse1F.asm
@@ -1,11 +1,11 @@
 RedsHouse1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw .Trigger, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 .Trigger
@@ -77,21 +77,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $2, 1, GROUP_PALLET_TOWN, MAP_PALLET_TOWN
 	warp_def $7, $3, 1, GROUP_PALLET_TOWN, MAP_PALLET_TOWN
 	warp_def $0, $7, 1, GROUP_REDS_HOUSE_2F, MAP_REDS_HOUSE_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 1, 0, $0, RedsHouse1FBookshelf
-	signpost 1, 1, $0, RedsHouse1FBookshelf
-	signpost 1, 2, $0, RedsHouse1FTV
+	signpost 1, 0, SIGNPOST_READ, RedsHouse1FBookshelf
+	signpost 1, 1, SIGNPOST_READ, RedsHouse1FBookshelf
+	signpost 1, 2, SIGNPOST_READ, RedsHouse1FTV
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_REDS_MOM, 7, 9, $8, $0, 255, 255, $0, 0, RedsMom, -1
+	person_event SPRITE_REDS_MOM, 7, 9, OW_LEFT | $0, $0, -1, -1, $0, 0, RedsMom, -1
--- a/maps/RedsHouse2F.asm
+++ b/maps/RedsHouse2F.asm
@@ -1,8 +1,8 @@
 RedsHouse2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MapRedsHouse2FSignpost0Script:
@@ -29,17 +29,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $0, $7, 3, GROUP_REDS_HOUSE_1F, MAP_REDS_HOUSE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 5, 3, $0, MapRedsHouse2FSignpost0Script
-	signpost 1, 0, $0, MapRedsHouse2FSignpost1Script
+	signpost 5, 3, SIGNPOST_READ, MapRedsHouse2FSignpost0Script
+	signpost 1, 0, SIGNPOST_READ, MapRedsHouse2FSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RockTunnel1F.asm
+++ b/maps/RockTunnel1F.asm
@@ -1,8 +1,8 @@
 RockTunnel1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x743b5:
@@ -12,13 +12,11 @@
 	db TM_STEEL_WING, 1
 
 MapRockTunnel1FSignpostItem0:
-	dw $00e7
-	db X_ACCURACY
+	dwb EVENT_ROCK_TUNNEL_1F_HIDDEN_X_ACCURACY, X_ACCURACY
 	
 
 MapRockTunnel1FSignpostItem1:
-	dw $00e8
-	db X_DEFEND
+	dwb EVENT_ROCK_TUNNEL_1F_HIDDEN_X_DEFEND, X_DEFEND
 	
 
 RockTunnel1F_MapEventHeader:
@@ -25,7 +23,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $3, $f, 1, GROUP_ROUTE_9, MAP_ROUTE_9
 	warp_def $19, $b, 1, GROUP_ROUTE_10_SOUTH, MAP_ROUTE_10_SOUTH
@@ -34,15 +32,15 @@
 	warp_def $3, $1b, 4, GROUP_ROCK_TUNNEL_B1F, MAP_ROCK_TUNNEL_B1F
 	warp_def $d, $1b, 1, GROUP_ROCK_TUNNEL_B1F, MAP_ROCK_TUNNEL_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 4, 24, $7, MapRockTunnel1FSignpostItem0
-	signpost 15, 21, $7, MapRockTunnel1FSignpostItem1
+	signpost 4, 24, SIGNPOST_ITEM, MapRockTunnel1FSignpostItem0
+	signpost 15, 21, SIGNPOST_ITEM, MapRockTunnel1FSignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 22, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x743b5, EVENT_77E
-	person_event SPRITE_POKE_BALL, 19, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x743b7, EVENT_77F
+	person_event SPRITE_POKE_BALL, 22, 8, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x743b5, EVENT_ROCK_TUNNEL_1F_ELIXER
+	person_event SPRITE_POKE_BALL, 19, 14, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x743b7, EVENT_ROCK_TUNNEL_1F_TM_STEEL_WING
--- a/maps/RockTunnelB1F.asm
+++ b/maps/RockTunnelB1F.asm
@@ -1,8 +1,8 @@
 RockTunnelB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x74409:
@@ -15,8 +15,7 @@
 	db REVIVE, 1
 
 MapRockTunnelB1FSignpostItem0:
-	dw $00e9
-	db MAX_POTION
+	dwb EVENT_ROCK_TUNNEL_B1F_HIDDEN_MAX_POTION, MAX_POTION
 	
 
 RockTunnelB1F_MapEventHeader:
@@ -23,7 +22,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $3, $3, 6, GROUP_ROCK_TUNNEL_1F, MAP_ROCK_TUNNEL_1F
 	warp_def $9, $11, 4, GROUP_ROCK_TUNNEL_1F, MAP_ROCK_TUNNEL_1F
@@ -30,15 +29,15 @@
 	warp_def $3, $17, 3, GROUP_ROCK_TUNNEL_1F, MAP_ROCK_TUNNEL_1F
 	warp_def $17, $19, 5, GROUP_ROCK_TUNNEL_1F, MAP_ROCK_TUNNEL_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 14, 4, $7, MapRockTunnelB1FSignpostItem0
+	signpost 14, 4, SIGNPOST_ITEM, MapRockTunnelB1FSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 29, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x74409, EVENT_780
-	person_event SPRITE_POKE_BALL, 21, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x7440b, EVENT_781
-	person_event SPRITE_POKE_BALL, 6, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x7440d, EVENT_782
+	person_event SPRITE_POKE_BALL, 29, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x74409, EVENT_ROCK_TUNNEL_B1F_IRON
+	person_event SPRITE_POKE_BALL, 21, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7440b, EVENT_ROCK_TUNNEL_B1F_PP_UP
+	person_event SPRITE_POKE_BALL, 6, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7440d, EVENT_ROCK_TUNNEL_B1F_REVIVE
--- a/maps/Route1.asm
+++ b/maps/Route1.asm
@@ -1,29 +1,13 @@
 Route1_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerSchoolboyDanny:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_DANNY
+	trainer EVENT_BEAT_SCHOOLBOY_DANNY, SCHOOLBOY, DANNY, SchoolboyDannySeenText, SchoolboyDannyBeatenText, $0000, SchoolboyDannyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, DANNY
-
-	; text when seen
-	dw SchoolboyDannySeenText
-
-	; text when trainer beaten
-	dw SchoolboyDannyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyDannyScript
-
 SchoolboyDannyScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerCooltrainerfQuinn:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_QUINN
+	trainer EVENT_BEAT_COOLTRAINERF_QUINN, COOLTRAINERF, QUINN, CooltrainerfQuinnSeenText, CooltrainerfQuinnBeatenText, $0000, CooltrainerfQuinnScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, QUINN
-
-	; text when seen
-	dw CooltrainerfQuinnSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfQuinnBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfQuinnScript
-
 CooltrainerfQuinnScript:
 	talkaftercancel
 	loadfont
@@ -111,18 +79,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 0
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 27, 7, $0, MapRoute1Signpost0Script
+	signpost 27, 7, SIGNPOST_READ, MapRoute1Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_YOUNGSTER, 16, 8, $9, $0, 255, 255, $92, 4, TrainerSchoolboyDanny, -1
-	person_event SPRITE_COOLTRAINER_F, 29, 13, $a, $0, 255, 255, $82, 2, TrainerCooltrainerfQuinn, -1
-	person_event SPRITE_FRUIT_TREE, 11, 7, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1ac581, -1
+	person_event SPRITE_YOUNGSTER, 16, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSchoolboyDanny, -1
+	person_event SPRITE_COOLTRAINER_F, 29, 13, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainerfQuinn, -1
+	person_event SPRITE_FRUIT_TREE, 11, 7, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1ac581, -1
--- a/maps/Route10North.asm
+++ b/maps/Route10North.asm
@@ -1,8 +1,8 @@
 Route10North_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PowerPlantSign:
@@ -19,18 +19,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $1, $b, 1, GROUP_ROUTE_10_POKECENTER_1F, MAP_ROUTE_10_POKECENTER_1F
 	warp_def $9, $3, 1, GROUP_POWER_PLANT, MAP_POWER_PLANT
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 11, 5, $0, PowerPlantSign
-	signpost 1, 12, $0, Route10PokeCenterSign
+	signpost 11, 5, SIGNPOST_READ, PowerPlantSign
+	signpost 1, 12, SIGNPOST_READ, Route10PokeCenterSign
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route10PokeCenter1F.asm
+++ b/maps/Route10PokeCenter1F.asm
@@ -1,8 +1,8 @@
 Route10PokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x188bd4:
@@ -78,21 +78,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_ROUTE_10_NORTH, MAP_ROUTE_10_NORTH
 	warp_def $7, $4, 1, GROUP_ROUTE_10_NORTH, MAP_ROUTE_10_NORTH
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x188bd4, -1
-	person_event SPRITE_GENTLEMAN, 10, 11, $5, $1, 255, 255, $80, 0, GentlemanScript_0x188bd7, -1
-	person_event SPRITE_GYM_GUY, 6, 11, $3, $0, 255, 255, $a0, 0, GymGuyScript_0x188bda, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 5, $6, $0, 255, 255, $0, 0, CooltrainerFScript_0x188bee, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x188bd4, -1
+	person_event SPRITE_GENTLEMAN, 10, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x188bd7, -1
+	person_event SPRITE_GYM_GUY, 6, 11, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GymGuyScript_0x188bda, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 5, OW_UP | $2, $0, -1, -1, $0, 0, CooltrainerFScript_0x188bee, -1
--- a/maps/Route10PokeCenter2FBeta.asm
+++ b/maps/Route10PokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 Route10PokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 Route10PokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_ROUTE_10_POKECENTER_1F, MAP_ROUTE_10_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route10South.asm
+++ b/maps/Route10South.asm
@@ -1,29 +1,13 @@
 Route10South_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerHikerJim:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_JIM
+	trainer EVENT_BEAT_HIKER_JIM, HIKER, JIM, HikerJimSeenText, HikerJimBeatenText, $0000, HikerJimScript
 
-	; trainer group && trainer id
-	db HIKER, JIM
-
-	; text when seen
-	dw HikerJimSeenText
-
-	; text when trainer beaten
-	dw HikerJimBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerJimScript
-
 HikerJimScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPokefanmRobert:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_ROBERT
+	trainer EVENT_BEAT_POKEFANM_ROBERT, POKEFANM, ROBERT, PokefanmRobertSeenText, PokefanmRobertBeatenText, $0000, PokefanmRobertScript
 
-	; trainer group && trainer id
-	db POKEFANM, ROBERT
-
-	; text when seen
-	dw PokefanmRobertSeenText
-
-	; text when trainer beaten
-	dw PokefanmRobertBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmRobertScript
-
 PokefanmRobertScript:
 	talkaftercancel
 	loadfont
@@ -107,18 +75,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $1, $6, 2, GROUP_ROCK_TUNNEL_1F, MAP_ROCK_TUNNEL_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 3, 5, $0, MapRoute10SouthSignpost0Script
+	signpost 3, 5, SIGNPOST_READ, MapRoute10SouthSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 7, 21, $8, $0, 255, 255, $b2, 3, TrainerHikerJim, -1
-	person_event SPRITE_POKEFAN_M, 14, 12, $a, $0, 255, 255, $82, 3, TrainerPokefanmRobert, -1
+	person_event SPRITE_POKEFAN_M, 7, 21, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerJim, -1
+	person_event SPRITE_POKEFAN_M, 14, 12, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmRobert, -1
--- a/maps/Route11.asm
+++ b/maps/Route11.asm
@@ -1,29 +1,13 @@
 Route11_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerYoungsterOwen:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_OWEN
+	trainer EVENT_BEAT_YOUNGSTER_OWEN, YOUNGSTER, OWEN, YoungsterOwenSeenText, YoungsterOwenBeatenText, $0000, YoungsterOwenScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, OWEN
-
-	; text when seen
-	dw YoungsterOwenSeenText
-
-	; text when trainer beaten
-	dw YoungsterOwenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterOwenScript
-
 YoungsterOwenScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerYoungsterJason:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_JASON
+	trainer EVENT_BEAT_YOUNGSTER_JASON, YOUNGSTER, JASON, YoungsterJasonSeenText, YoungsterJasonBeatenText, $0000, YoungsterJasonScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, JASON
-
-	; text when seen
-	dw YoungsterJasonSeenText
-
-	; text when trainer beaten
-	dw YoungsterJasonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterJasonScript
-
 YoungsterJasonScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerPsychicHerman:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_HERMAN
+	trainer EVENT_BEAT_PSYCHIC_HERMAN, PSYCHIC_T, HERMAN, PsychicHermanSeenText, PsychicHermanBeatenText, $0000, PsychicHermanScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, HERMAN
-
-	; text when seen
-	dw PsychicHermanSeenText
-
-	; text when trainer beaten
-	dw PsychicHermanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicHermanScript
-
 PsychicHermanScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerPsychicFidel:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_FIDEL
+	trainer EVENT_BEAT_PSYCHIC_FIDEL, PSYCHIC_T, FIDEL, PsychicFidelSeenText, PsychicFidelBeatenText, $0000, PsychicFidelScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, FIDEL
-
-	; text when seen
-	dw PsychicFidelSeenText
-
-	; text when trainer beaten
-	dw PsychicFidelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicFidelScript
-
 PsychicFidelScript:
 	talkaftercancel
 	loadfont
@@ -120,8 +56,7 @@
 	fruittree $18
 
 MapRoute11SignpostItem1:
-	dw $00f5
-	db REVIVE
+	dwb EVENT_ROUTE_11_HIDDEN_REVIVE, REVIVE
 	
 
 YoungsterOwenSeenText:
@@ -208,21 +143,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 0
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 3, $0, MapRoute11Signpost0Script
-	signpost 5, 32, $7, MapRoute11SignpostItem1
+	signpost 7, 3, SIGNPOST_READ, MapRoute11Signpost0Script
+	signpost 5, 32, SIGNPOST_ITEM, MapRoute11SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_YOUNGSTER, 18, 26, $a, $0, 255, 255, $92, 3, TrainerYoungsterOwen, -1
-	person_event SPRITE_YOUNGSTER, 8, 24, $6, $0, 255, 255, $92, 3, TrainerYoungsterJason, -1
-	person_event SPRITE_YOUNGSTER, 11, 32, $6, $0, 255, 255, $92, 1, TrainerPsychicHerman, -1
-	person_event SPRITE_YOUNGSTER, 10, 12, $a, $0, 255, 255, $92, 3, TrainerPsychicFidel, -1
-	person_event SPRITE_FRUIT_TREE, 6, 36, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x68055, -1
+	person_event SPRITE_YOUNGSTER, 18, 26, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterOwen, -1
+	person_event SPRITE_YOUNGSTER, 8, 24, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterJason, -1
+	person_event SPRITE_YOUNGSTER, 11, 32, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerPsychicHerman, -1
+	person_event SPRITE_YOUNGSTER, 10, 12, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicFidel, -1
+	person_event SPRITE_FRUIT_TREE, 6, 36, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x68055, -1
--- a/maps/Route12.asm
+++ b/maps/Route12.asm
@@ -1,29 +1,13 @@
 Route12_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerFisherKyle:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_KYLE
+	trainer EVENT_BEAT_FISHER_KYLE, FISHER, KYLE, FisherKyleSeenText, FisherKyleBeatenText, $0000, FisherKyleScript
 
-	; trainer group && trainer id
-	db FISHER, KYLE
-
-	; text when seen
-	dw FisherKyleSeenText
-
-	; text when trainer beaten
-	dw FisherKyleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherKyleScript
-
 FisherKyleScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerFisherMartin:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_MARTIN
+	trainer EVENT_BEAT_FISHER_MARTIN, FISHER, MARTIN, FisherMartinSeenText, FisherMartinBeatenText, $0000, FisherMartinScript
 
-	; trainer group && trainer id
-	db FISHER, MARTIN
-
-	; text when seen
-	dw FisherMartinSeenText
-
-	; text when trainer beaten
-	dw FisherMartinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherMartinScript
-
 FisherMartinScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerFisherStephen:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_STEPHEN
+	trainer EVENT_BEAT_FISHER_STEPHEN, FISHER, STEPHEN, FisherStephenSeenText, FisherStephenBeatenText, $0000, FisherStephenScript
 
-	; trainer group && trainer id
-	db FISHER, STEPHEN
-
-	; text when seen
-	dw FisherStephenSeenText
-
-	; text when trainer beaten
-	dw FisherStephenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherStephenScript
-
 FisherStephenScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerFisherBarney:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_BARNEY
+	trainer EVENT_BEAT_FISHER_BARNEY, FISHER, BARNEY, FisherBarneySeenText, FisherBarneyBeatenText, $0000, FisherBarneyScript
 
-	; trainer group && trainer id
-	db FISHER, BARNEY
-
-	; text when seen
-	dw FisherBarneySeenText
-
-	; text when trainer beaten
-	dw FisherBarneyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherBarneyScript
-
 FisherBarneyScript:
 	talkaftercancel
 	loadfont
@@ -126,8 +62,7 @@
 	db NUGGET, 1
 
 MapRoute12SignpostItem2:
-	dw $00f3
-	db ELIXER
+	dwb EVENT_ROUTE_12_HIDDEN_ELIXER, ELIXER
 	
 
 FisherMartinSeenText:
@@ -228,24 +163,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $21, $b, 1, GROUP_ROUTE_12_SUPER_ROD_HOUSE, MAP_ROUTE_12_SUPER_ROD_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 27, 11, $0, MapRoute12Signpost0Script
-	signpost 9, 13, $0, MapRoute12Signpost1Script
-	signpost 13, 14, $7, MapRoute12SignpostItem2
+	signpost 27, 11, SIGNPOST_READ, MapRoute12Signpost0Script
+	signpost 9, 13, SIGNPOST_READ, MapRoute12Signpost1Script
+	signpost 13, 14, SIGNPOST_ITEM, MapRoute12SignpostItem2
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_FISHER, 17, 9, $a, $0, 255, 255, $a2, 1, TrainerFisherMartin, -1
-	person_event SPRITE_FISHER, 27, 18, $6, $0, 255, 255, $a2, 1, TrainerFisherStephen, -1
-	person_event SPRITE_FISHER, 42, 14, $8, $0, 255, 255, $a2, 5, TrainerFisherBarney, -1
-	person_event SPRITE_FISHER, 11, 10, $9, $0, 255, 255, $a2, 3, TrainerFisherKyle, -1
-	person_event SPRITE_POKE_BALL, 47, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a700b, EVENT_788
-	person_event SPRITE_POKE_BALL, 55, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a700d, EVENT_789
+	person_event SPRITE_FISHER, 17, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherMartin, -1
+	person_event SPRITE_FISHER, 27, 18, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherStephen, -1
+	person_event SPRITE_FISHER, 42, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerFisherBarney, -1
+	person_event SPRITE_FISHER, 11, 10, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherKyle, -1
+	person_event SPRITE_POKE_BALL, 47, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a700b, EVENT_ROUTE_12_CALCIUM
+	person_event SPRITE_POKE_BALL, 55, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a700d, EVENT_ROUTE_12_NUGGET
--- a/maps/Route12SuperRodHouse.asm
+++ b/maps/Route12SuperRodHouse.asm
@@ -1,8 +1,8 @@
 Route12SuperRodHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FishingGuruScript_0x7f484:
@@ -80,17 +80,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_ROUTE_12, MAP_ROUTE_12
 	warp_def $7, $3, 1, GROUP_ROUTE_12, MAP_ROUTE_12
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 9, $6, $0, 255, 255, $80, 0, FishingGuruScript_0x7f484, -1
+	person_event SPRITE_FISHING_GURU, 7, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FishingGuruScript_0x7f484, -1
--- a/maps/Route13.asm
+++ b/maps/Route13.asm
@@ -1,29 +1,13 @@
 Route13_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerPokefanmAlex:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_ALEX
+	trainer EVENT_BEAT_POKEFANM_ALEX, POKEFANM, ALEX, PokefanmAlexSeenText, PokefanmAlexBeatenText, $0000, PokefanmAlexScript
 
-	; trainer group && trainer id
-	db POKEFANM, ALEX
-
-	; text when seen
-	dw PokefanmAlexSeenText
-
-	; text when trainer beaten
-	dw PokefanmAlexBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmAlexScript
-
 PokefanmAlexScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPokefanmJoshua:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_JOSHUA
+	trainer EVENT_BEAT_POKEFANM_JOSHUA, POKEFANM, JOSHUA, PokefanmJoshuaSeenText, PokefanmJoshuaBeatenText, $0000, PokefanmJoshuaScript
 
-	; trainer group && trainer id
-	db POKEFANM, JOSHUA
-
-	; text when seen
-	dw PokefanmJoshuaSeenText
-
-	; text when trainer beaten
-	dw PokefanmJoshuaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmJoshuaScript
-
 PokefanmJoshuaScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerBird_keeperPerry:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_PERRY
+	trainer EVENT_BEAT_BIRD_KEEPER_PERRY, BIRD_KEEPER, PERRY, Bird_keeperPerrySeenText, Bird_keeperPerryBeatenText, $0000, Bird_keeperPerryScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, PERRY
-
-	; text when seen
-	dw Bird_keeperPerrySeenText
-
-	; text when trainer beaten
-	dw Bird_keeperPerryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperPerryScript
-
 Bird_keeperPerryScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerBird_keeperBret:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BRET
+	trainer EVENT_BEAT_BIRD_KEEPER_BRET, BIRD_KEEPER, BRET, Bird_keeperBretSeenText, Bird_keeperBretBeatenText, $0000, Bird_keeperBretScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, BRET
-
-	; text when seen
-	dw Bird_keeperBretSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBretBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBretScript
-
 Bird_keeperBretScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerHikerKenny:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_KENNY
+	trainer EVENT_BEAT_HIKER_KENNY, HIKER, KENNY, HikerKennySeenText, HikerKennyBeatenText, $0000, HikerKennyScript
 
-	; trainer group && trainer id
-	db HIKER, KENNY
-
-	; text when seen
-	dw HikerKennySeenText
-
-	; text when trainer beaten
-	dw HikerKennyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerKennyScript
-
 HikerKennyScript:
 	talkaftercancel
 	loadfont
@@ -150,8 +70,7 @@
 	jumptext UnknownText_0x1a277d
 
 MapRoute13SignpostItem3:
-	dw $00f4
-	db CALCIUM
+	dwb EVENT_ROUTE_13_HIDDEN_CALCIUM, CALCIUM
 	
 
 PokefanmAlexSeenText:
@@ -270,23 +189,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 0
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 13, 29, $0, MapRoute13Signpost0Script
-	signpost 11, 41, $0, MapRoute13Signpost1Script
-	signpost 13, 17, $0, MapRoute13Signpost2Script
-	signpost 13, 30, $7, MapRoute13SignpostItem3
+	signpost 13, 29, SIGNPOST_READ, MapRoute13Signpost0Script
+	signpost 11, 41, SIGNPOST_READ, MapRoute13Signpost1Script
+	signpost 13, 17, SIGNPOST_READ, MapRoute13Signpost2Script
+	signpost 13, 30, SIGNPOST_ITEM, MapRoute13SignpostItem3
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_YOUNGSTER, 10, 46, $6, $0, 255, 255, $92, 2, TrainerBird_keeperPerry, -1
-	person_event SPRITE_YOUNGSTER, 10, 47, $6, $0, 255, 255, $92, 2, TrainerBird_keeperBret, -1
-	person_event SPRITE_POKEFAN_M, 12, 36, $8, $0, 255, 255, $82, 3, TrainerPokefanmJoshua, -1
-	person_event SPRITE_POKEFAN_M, 14, 18, $8, $0, 255, 255, $82, 4, TrainerHikerKenny, -1
-	person_event SPRITE_POKEFAN_M, 10, 29, $9, $0, 255, 255, $82, 4, TrainerPokefanmAlex, -1
+	person_event SPRITE_YOUNGSTER, 10, 46, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerBird_keeperPerry, -1
+	person_event SPRITE_YOUNGSTER, 10, 47, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerBird_keeperBret, -1
+	person_event SPRITE_POKEFAN_M, 12, 36, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmJoshua, -1
+	person_event SPRITE_POKEFAN_M, 14, 18, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerHikerKenny, -1
+	person_event SPRITE_POKEFAN_M, 10, 29, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerPokefanmAlex, -1
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -1,8 +1,8 @@
 Route14_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x1ad47f:
@@ -14,24 +14,8 @@
 	end
 
 TrainerPokefanmCarter:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_CARTER
+	trainer EVENT_BEAT_POKEFANM_CARTER, POKEFANM, CARTER, PokefanmCarterSeenText, PokefanmCarterBeatenText, $0000, PokefanmCarterScript
 
-	; trainer group && trainer id
-	db POKEFANM, CARTER
-
-	; text when seen
-	dw PokefanmCarterSeenText
-
-	; text when trainer beaten
-	dw PokefanmCarterBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmCarterScript
-
 PokefanmCarterScript:
 	talkaftercancel
 	loadfont
@@ -41,24 +25,8 @@
 	end
 
 TrainerBird_keeperRoy:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_ROY
+	trainer EVENT_BEAT_BIRD_KEEPER_ROY, BIRD_KEEPER, ROY, Bird_keeperRoySeenText, Bird_keeperRoyBeatenText, $0000, Bird_keeperRoyScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, ROY
-
-	; text when seen
-	dw Bird_keeperRoySeenText
-
-	; text when trainer beaten
-	dw Bird_keeperRoyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperRoyScript
-
 Bird_keeperRoyScript:
 	talkaftercancel
 	loadfont
@@ -68,24 +36,8 @@
 	end
 
 TrainerPokefanmTrevor:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_TREVOR
+	trainer EVENT_BEAT_POKEFANM_TREVOR, POKEFANM, TREVOR, PokefanmTrevorSeenText, PokefanmTrevorBeatenText, $0000, PokefanmTrevorScript
 
-	; trainer group && trainer id
-	db POKEFANM, TREVOR
-
-	; text when seen
-	dw PokefanmTrevorSeenText
-
-	; text when trainer beaten
-	dw PokefanmTrevorBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmTrevorScript
-
 PokefanmTrevorScript:
 	talkaftercancel
 	loadfont
@@ -161,18 +113,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 0
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKEFAN_M, 19, 15, $9, $0, 255, 255, $82, 3, TrainerPokefanmCarter, -1
-	person_event SPRITE_YOUNGSTER, 31, 15, $a, $0, 255, 255, $92, 3, TrainerBird_keeperRoy, -1
-	person_event SPRITE_POKEFAN_M, 15, 10, $a, $0, 255, 255, $82, 3, TrainerPokefanmTrevor, -1
-	person_event SPRITE_TEACHER, 9, 11, $5, $1, 255, 255, $a0, 4, TeacherScript_0x1ad47f, -1
+	person_event SPRITE_POKEFAN_M, 19, 15, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmCarter, -1
+	person_event SPRITE_YOUNGSTER, 31, 15, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperRoy, -1
+	person_event SPRITE_POKEFAN_M, 15, 10, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmTrevor, -1
+	person_event SPRITE_TEACHER, 9, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 4, TeacherScript_0x1ad47f, -1
--- a/maps/Route15.asm
+++ b/maps/Route15.asm
@@ -1,29 +1,13 @@
 Route15_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerTeacherColette:
-	; bit/flag number
-	dw EVENT_BEAT_TEACHER_COLETTE
+	trainer EVENT_BEAT_TEACHER_COLETTE, TEACHER, COLETTE, TeacherColetteSeenText, TeacherColetteBeatenText, $0000, TeacherColetteScript
 
-	; trainer group && trainer id
-	db TEACHER, COLETTE
-
-	; text when seen
-	dw TeacherColetteSeenText
-
-	; text when trainer beaten
-	dw TeacherColetteBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TeacherColetteScript
-
 TeacherColetteScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerTeacherHillary:
-	; bit/flag number
-	dw EVENT_BEAT_TEACHER_HILLARY
+	trainer EVENT_BEAT_TEACHER_HILLARY, TEACHER, HILLARY, TeacherHillarySeenText, TeacherHillaryBeatenText, $0000, TeacherHillaryScript
 
-	; trainer group && trainer id
-	db TEACHER, HILLARY
-
-	; text when seen
-	dw TeacherHillarySeenText
-
-	; text when trainer beaten
-	dw TeacherHillaryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TeacherHillaryScript
-
 TeacherHillaryScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerSchoolboyKipp:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_KIP
+	trainer EVENT_BEAT_SCHOOLBOY_KIP, SCHOOLBOY, KIPP, SchoolboyKippSeenText, SchoolboyKippBeatenText, $0000, SchoolboyKippScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, KIPP
-
-	; text when seen
-	dw SchoolboyKippSeenText
-
-	; text when trainer beaten
-	dw SchoolboyKippBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyKippScript
-
 SchoolboyKippScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerSchoolboyTommy:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_TOMMY
+	trainer EVENT_BEAT_SCHOOLBOY_TOMMY, SCHOOLBOY, TOMMY, SchoolboyTommySeenText, SchoolboyTommyBeatenText, $0000, SchoolboyTommyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, TOMMY
-
-	; text when seen
-	dw SchoolboyTommySeenText
-
-	; text when trainer beaten
-	dw SchoolboyTommyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyTommyScript
-
 SchoolboyTommyScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerSchoolboyJohnny:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_JOHNNY
+	trainer EVENT_BEAT_SCHOOLBOY_JOHNNY, SCHOOLBOY, JOHNNY, SchoolboyJohnnySeenText, SchoolboyJohnnyBeatenText, $0000, SchoolboyJohnnyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, JOHNNY
-
-	; text when seen
-	dw SchoolboyJohnnySeenText
-
-	; text when trainer beaten
-	dw SchoolboyJohnnyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyJohnnyScript
-
 SchoolboyJohnnyScript:
 	talkaftercancel
 	loadfont
@@ -141,24 +61,8 @@
 	end
 
 TrainerSchoolboyBilly:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_BILLY
+	trainer EVENT_BEAT_SCHOOLBOY_BILLY, SCHOOLBOY, BILLY, SchoolboyBillySeenText, SchoolboyBillyBeatenText, $0000, SchoolboyBillyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, BILLY
-
-	; text when seen
-	dw SchoolboyBillySeenText
-
-	; text when trainer beaten
-	dw SchoolboyBillyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyBillyScript
-
 SchoolboyBillyScript:
 	talkaftercancel
 	loadfont
@@ -292,24 +196,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $4, $2, 3, GROUP_ROUTE_15_FUCHSIA_GATE, MAP_ROUTE_15_FUCHSIA_GATE
 	warp_def $5, $2, 4, GROUP_ROUTE_15_FUCHSIA_GATE, MAP_ROUTE_15_FUCHSIA_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 9, 19, $0, MapRoute15Signpost0Script
+	signpost 9, 19, SIGNPOST_READ, MapRoute15Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_YOUNGSTER, 14, 14, $9, $0, 255, 255, $92, 4, TrainerSchoolboyKipp, -1
-	person_event SPRITE_YOUNGSTER, 17, 19, $7, $0, 255, 255, $92, 3, TrainerSchoolboyTommy, -1
-	person_event SPRITE_YOUNGSTER, 14, 37, $6, $0, 255, 255, $92, 3, TrainerSchoolboyJohnny, -1
-	person_event SPRITE_YOUNGSTER, 14, 31, $6, $0, 255, 255, $92, 3, TrainerSchoolboyBilly, -1
-	person_event SPRITE_TEACHER, 16, 34, $7, $0, 255, 255, $82, 4, TrainerTeacherColette, -1
-	person_event SPRITE_TEACHER, 14, 24, $a, $0, 255, 255, $82, 3, TrainerTeacherHillary, -1
-	person_event SPRITE_POKE_BALL, 9, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x1aa5e4, EVENT_78A
+	person_event SPRITE_YOUNGSTER, 14, 14, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSchoolboyKipp, -1
+	person_event SPRITE_YOUNGSTER, 17, 19, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyTommy, -1
+	person_event SPRITE_YOUNGSTER, 14, 37, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyJohnny, -1
+	person_event SPRITE_YOUNGSTER, 14, 31, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyBilly, -1
+	person_event SPRITE_TEACHER, 16, 34, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerTeacherColette, -1
+	person_event SPRITE_TEACHER, 14, 24, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerTeacherHillary, -1
+	person_event SPRITE_POKE_BALL, 9, 16, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1aa5e4, EVENT_ROUTE_15_PP_UP
--- a/maps/Route15FuchsiaGate.asm
+++ b/maps/Route15FuchsiaGate.asm
@@ -1,8 +1,8 @@
 Route15FuchsiaGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x19679e:
@@ -20,7 +20,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 8, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $5, $0, 9, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
@@ -27,12 +27,12 @@
 	warp_def $4, $9, 1, GROUP_ROUTE_15, MAP_ROUTE_15
 	warp_def $5, $9, 2, GROUP_ROUTE_15, MAP_ROUTE_15
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x19679e, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x19679e, -1
--- a/maps/Route16.asm
+++ b/maps/Route16.asm
@@ -1,8 +1,8 @@
 Route16_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -35,7 +35,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $1, $3, 1, GROUP_ROUTE_16_FUCHSIA_SPEECH_HOUSE, MAP_ROUTE_16_FUCHSIA_SPEECH_HOUSE
 	warp_def $6, $e, 3, GROUP_ROUTE_16_GATE, MAP_ROUTE_16_GATE
@@ -43,12 +43,12 @@
 	warp_def $6, $9, 1, GROUP_ROUTE_16_GATE, MAP_ROUTE_16_GATE
 	warp_def $7, $9, 2, GROUP_ROUTE_16_GATE, MAP_ROUTE_16_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 5, 5, $0, MapRoute16Signpost0Script
+	signpost 5, 5, SIGNPOST_READ, MapRoute16Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route16FuchsiaSpeechHouse.asm
+++ b/maps/Route16FuchsiaSpeechHouse.asm
@@ -1,8 +1,8 @@
 Route16FuchsiaSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SuperNerdScript_0x73373:
@@ -23,19 +23,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_ROUTE_16, MAP_ROUTE_16
 	warp_def $7, $3, 1, GROUP_ROUTE_16, MAP_ROUTE_16
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, Route16FuchsiaSpeechHouseBookshelf
-	signpost 1, 1, $0, Route16FuchsiaSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, Route16FuchsiaSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, Route16FuchsiaSpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_SUPER_NERD, 7, 6, $6, $0, 255, 255, $a0, 0, SuperNerdScript_0x73373, -1
+	person_event SPRITE_SUPER_NERD, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x73373, -1
--- a/maps/Route16Gate.asm
+++ b/maps/Route16Gate.asm
@@ -1,11 +1,11 @@
 Route16Gate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x733e9, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x733e9:
@@ -20,7 +20,7 @@
 	end
 
 UnknownScript_0x733f3:
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	spriteface $0, UP
 	loadfont
 	writetext UnknownText_0x73496
@@ -63,7 +63,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 4, GROUP_ROUTE_16, MAP_ROUTE_16
 	warp_def $5, $0, 5, GROUP_ROUTE_16, MAP_ROUTE_16
@@ -70,14 +70,14 @@
 	warp_def $4, $9, 2, GROUP_ROUTE_16, MAP_ROUTE_16
 	warp_def $5, $9, 3, GROUP_ROUTE_16, MAP_ROUTE_16
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $4, $5, $0, UnknownScript_0x733ed, $0, $0
 	xy_trigger 0, $5, $5, $0, UnknownScript_0x733ed, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x733ea, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x733ea, -1
--- a/maps/Route17.asm
+++ b/maps/Route17.asm
@@ -1,8 +1,8 @@
 Route17_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -15,24 +15,8 @@
 	return
 
 TrainerBikerCharles:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_CHARLES
+	trainer EVENT_BEAT_BIKER_CHARLES, BIKER, CHARLES, BikerCharlesSeenText, BikerCharlesBeatenText, $0000, BikerCharlesScript
 
-	; trainer group && trainer id
-	db BIKER, CHARLES
-
-	; text when seen
-	dw BikerCharlesSeenText
-
-	; text when trainer beaten
-	dw BikerCharlesBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerCharlesScript
-
 BikerCharlesScript:
 	talkaftercancel
 	loadfont
@@ -42,24 +26,8 @@
 	end
 
 TrainerBikerRiley:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_RILEY
+	trainer EVENT_BEAT_BIKER_RILEY, BIKER, RILEY, BikerRileySeenText, BikerRileyBeatenText, $0000, BikerRileyScript
 
-	; trainer group && trainer id
-	db BIKER, RILEY
-
-	; text when seen
-	dw BikerRileySeenText
-
-	; text when trainer beaten
-	dw BikerRileyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerRileyScript
-
 BikerRileyScript:
 	talkaftercancel
 	loadfont
@@ -69,24 +37,8 @@
 	end
 
 TrainerBikerJoel:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_JOEL
+	trainer EVENT_BEAT_BIKER_JOEL, BIKER, JOEL, BikerJoelSeenText, BikerJoelBeatenText, $0000, BikerJoelScript
 
-	; trainer group && trainer id
-	db BIKER, JOEL
-
-	; text when seen
-	dw BikerJoelSeenText
-
-	; text when trainer beaten
-	dw BikerJoelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerJoelScript
-
 BikerJoelScript:
 	talkaftercancel
 	loadfont
@@ -96,24 +48,8 @@
 	end
 
 TrainerBikerGlenn:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_GLENN
+	trainer EVENT_BEAT_BIKER_GLENN, BIKER, GLENN, BikerGlennSeenText, BikerGlennBeatenText, $0000, BikerGlennScript
 
-	; trainer group && trainer id
-	db BIKER, GLENN
-
-	; text when seen
-	dw BikerGlennSeenText
-
-	; text when trainer beaten
-	dw BikerGlennBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerGlennScript
-
 BikerGlennScript:
 	talkaftercancel
 	loadfont
@@ -123,13 +59,11 @@
 	end
 
 MapRoute17SignpostItem0:
-	dw $00f6
-	db MAX_ETHER
+	dwb EVENT_ROUTE_17_HIDDEN_MAX_ETHER, MAX_ETHER
 	
 
 MapRoute17SignpostItem1:
-	dw $00f7
-	db MAX_ELIXER
+	dwb EVENT_ROUTE_17_HIDDEN_MAX_ELIXER, MAX_ELIXER
 	
 
 BikerRileySeenText:
@@ -201,22 +135,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $52, $11, 1, GROUP_ROUTE_17_18_GATE, MAP_ROUTE_17_18_GATE
 	warp_def $53, $11, 2, GROUP_ROUTE_17_18_GATE, MAP_ROUTE_17_18_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 54, 9, $7, MapRoute17SignpostItem0
-	signpost 77, 8, $7, MapRoute17SignpostItem1
+	signpost 54, 9, SIGNPOST_ITEM, MapRoute17SignpostItem0
+	signpost 77, 8, SIGNPOST_ITEM, MapRoute17SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_BIKER, 21, 8, $a, $0, 255, 255, $b2, 4, TrainerBikerRiley, -1
-	person_event SPRITE_BIKER, 72, 13, $6, $0, 255, 255, $b2, 1, TrainerBikerJoel, -1
-	person_event SPRITE_BIKER, 57, 7, $a, $0, 255, 255, $b2, 3, TrainerBikerGlenn, -1
-	person_event SPRITE_BIKER, 84, 10, $9, $0, 255, 255, $b2, 4, TrainerBikerCharles, -1
+	person_event SPRITE_BIKER, 21, 8, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerBikerRiley, -1
+	person_event SPRITE_BIKER, 72, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerBikerJoel, -1
+	person_event SPRITE_BIKER, 57, 7, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBikerGlenn, -1
+	person_event SPRITE_BIKER, 84, 10, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerBikerCharles, -1
--- a/maps/Route1718Gate.asm
+++ b/maps/Route1718Gate.asm
@@ -1,11 +1,11 @@
 Route1718Gate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x7360d, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x7360d:
@@ -20,7 +20,7 @@
 	end
 
 UnknownScript_0x73617:
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	spriteface $0, UP
 	loadfont
 	writetext UnknownText_0x7364d
@@ -54,7 +54,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 1, GROUP_ROUTE_17, MAP_ROUTE_17
 	warp_def $5, $0, 2, GROUP_ROUTE_17, MAP_ROUTE_17
@@ -61,14 +61,14 @@
 	warp_def $4, $9, 1, GROUP_ROUTE_18, MAP_ROUTE_18
 	warp_def $5, $9, 2, GROUP_ROUTE_18, MAP_ROUTE_18
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $4, $5, $0, UnknownScript_0x73611, $0, $0
 	xy_trigger 0, $5, $5, $0, UnknownScript_0x73611, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x7360e, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x7360e, -1
--- a/maps/Route18.asm
+++ b/maps/Route18.asm
@@ -1,29 +1,13 @@
 Route18_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBird_keeperBoris:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BORIS
+	trainer EVENT_BEAT_BIRD_KEEPER_BORIS, BIRD_KEEPER, BORIS, Bird_keeperBorisSeenText, Bird_keeperBorisBeatenText, $0000, Bird_keeperBorisScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, BORIS
-
-	; text when seen
-	dw Bird_keeperBorisSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBorisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBorisScript
-
 Bird_keeperBorisScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerBird_keeperBob:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BOB
+	trainer EVENT_BEAT_BIRD_KEEPER_BOB, BIRD_KEEPER, BOB, Bird_keeperBobSeenText, Bird_keeperBobBeatenText, $0000, Bird_keeperBobScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, BOB
-
-	; text when seen
-	dw Bird_keeperBobSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBobBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBobScript
-
 Bird_keeperBobScript:
 	talkaftercancel
 	loadfont
@@ -109,19 +77,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $6, $2, 3, GROUP_ROUTE_17_18_GATE, MAP_ROUTE_17_18_GATE
 	warp_def $7, $2, 4, GROUP_ROUTE_17_18_GATE, MAP_ROUTE_17_18_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 5, 9, $0, MapRoute18Signpost0Script
+	signpost 5, 9, SIGNPOST_READ, MapRoute18Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_YOUNGSTER, 16, 13, $a, $0, 255, 255, $92, 3, TrainerBird_keeperBoris, -1
-	person_event SPRITE_YOUNGSTER, 10, 17, $6, $0, 255, 255, $92, 3, TrainerBird_keeperBob, -1
+	person_event SPRITE_YOUNGSTER, 16, 13, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperBoris, -1
+	person_event SPRITE_YOUNGSTER, 10, 17, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperBob, -1
--- a/maps/Route19.asm
+++ b/maps/Route19.asm
@@ -1,8 +1,8 @@
 Route19_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -22,24 +22,8 @@
 	return
 
 TrainerSwimmerfDawn:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_DAWN
+	trainer EVENT_BEAT_SWIMMERF_DAWN, SWIMMERF, DAWN, SwimmerfDawnSeenText, SwimmerfDawnBeatenText, $0000, SwimmerfDawnScript
 
-	; trainer group && trainer id
-	db SWIMMERF, DAWN
-
-	; text when seen
-	dw SwimmerfDawnSeenText
-
-	; text when trainer beaten
-	dw SwimmerfDawnBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfDawnScript
-
 SwimmerfDawnScript:
 	talkaftercancel
 	loadfont
@@ -49,24 +33,8 @@
 	end
 
 TrainerSwimmermHarold:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_HAROLD
+	trainer EVENT_BEAT_SWIMMERM_HAROLD, SWIMMERM, HAROLD, SwimmermHaroldSeenText, SwimmermHaroldBeatenText, $0000, SwimmermHaroldScript
 
-	; trainer group && trainer id
-	db SWIMMERM, HAROLD
-
-	; text when seen
-	dw SwimmermHaroldSeenText
-
-	; text when trainer beaten
-	dw SwimmermHaroldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermHaroldScript
-
 SwimmermHaroldScript:
 	talkaftercancel
 	loadfont
@@ -76,24 +44,8 @@
 	end
 
 TrainerSwimmermJerome:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_JEROME
+	trainer EVENT_BEAT_SWIMMERM_JEROME, SWIMMERM, JEROME, SwimmermJeromeSeenText, SwimmermJeromeBeatenText, $0000, SwimmermJeromeScript
 
-	; trainer group && trainer id
-	db SWIMMERM, JEROME
-
-	; text when seen
-	dw SwimmermJeromeSeenText
-
-	; text when trainer beaten
-	dw SwimmermJeromeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermJeromeScript
-
 SwimmermJeromeScript:
 	talkaftercancel
 	loadfont
@@ -103,24 +55,8 @@
 	end
 
 TrainerSwimmermTucker:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_TUCKER
+	trainer EVENT_BEAT_SWIMMERM_TUCKER, SWIMMERM, TUCKER, SwimmermTuckerSeenText, SwimmermTuckerBeatenText, $0000, SwimmermTuckerScript
 
-	; trainer group && trainer id
-	db SWIMMERM, TUCKER
-
-	; text when seen
-	dw SwimmermTuckerSeenText
-
-	; text when trainer beaten
-	dw SwimmermTuckerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermTuckerScript
-
 SwimmermTuckerScript:
 	talkaftercancel
 	loadfont
@@ -297,23 +233,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $3, $7, 3, GROUP_ROUTE_19___FUCHSIA_GATE, MAP_ROUTE_19___FUCHSIA_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 13, 11, $0, MapRoute19Signpost0Script
-	signpost 1, 11, $0, MapRoute19Signpost1Script
+	signpost 13, 11, SIGNPOST_READ, MapRoute19Signpost0Script
+	signpost 1, 11, SIGNPOST_READ, MapRoute19Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_SWIMMER_GIRL, 27, 13, $8, $0, 255, 255, $a2, 0, TrainerSwimmerfDawn, -1
-	person_event SPRITE_SWIMMER_GUY, 32, 17, $a, $0, 255, 255, $82, 3, TrainerSwimmermHarold, -1
-	person_event SPRITE_SWIMMER_GUY, 21, 15, $a, $0, 255, 255, $82, 3, TrainerSwimmermJerome, -1
-	person_event SPRITE_SWIMMER_GUY, 27, 12, $7, $0, 255, 255, $82, 0, TrainerSwimmermTucker, -1
-	person_event SPRITE_FISHER, 9, 13, $6, $0, 255, 255, $80, 1, FisherScript_0x19ea4d, -1
-	person_event SPRITE_FISHER, 9, 15, $5, $1, 255, 255, $90, 1, FisherScript_0x19ea61, -1
+	person_event SPRITE_SWIMMER_GIRL, 27, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerSwimmerfDawn, -1
+	person_event SPRITE_SWIMMER_GUY, 32, 17, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermHarold, -1
+	person_event SPRITE_SWIMMER_GUY, 21, 15, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermJerome, -1
+	person_event SPRITE_SWIMMER_GUY, 27, 12, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerSwimmermTucker, -1
+	person_event SPRITE_FISHER, 9, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 1, FisherScript_0x19ea4d, -1
+	person_event SPRITE_FISHER, 9, 15, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 1, FisherScript_0x19ea61, -1
--- a/maps/Route19FuchsiaGate.asm
+++ b/maps/Route19FuchsiaGate.asm
@@ -1,8 +1,8 @@
 Route19FuchsiaGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x1ab3f6:
@@ -46,7 +46,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 10, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $0, $5, 11, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
@@ -53,12 +53,12 @@
 	warp_def $7, $4, 1, GROUP_ROUTE_19, MAP_ROUTE_19
 	warp_def $7, $5, 1, GROUP_ROUTE_19, MAP_ROUTE_19
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $90, 0, OfficerScript_0x1ab3f6, -1
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x1ab3f6, -1
--- a/maps/Route2.asm
+++ b/maps/Route2.asm
@@ -1,29 +1,13 @@
 Route2_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBug_catcherRob:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_ROB
+	trainer EVENT_BEAT_BUG_CATCHER_ROB, BUG_CATCHER, ROB, Bug_catcherRobSeenText, Bug_catcherRobBeatenText, $0000, Bug_catcherRobScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, ROB
-
-	; text when seen
-	dw Bug_catcherRobSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherRobBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherRobScript
-
 Bug_catcherRobScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerBug_catcherEd:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_ED
+	trainer EVENT_BEAT_BUG_CATCHER_ED, BUG_CATCHER, ED, Bug_catcherEdSeenText, Bug_catcherEdBeatenText, $0000, Bug_catcherEdScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, ED
-
-	; text when seen
-	dw Bug_catcherEdSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherEdBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherEdScript
-
 Bug_catcherEdScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerBug_catcherDoug:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_DOUG
+	trainer EVENT_BEAT_BUG_CATCHER_DOUG, BUG_CATCHER, DOUG, Bug_catcherDougSeenText, Bug_catcherDougBeatenText, $0000, Bug_catcherDougScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, DOUG
-
-	; text when seen
-	dw Bug_catcherDougSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherDougBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherDougScript
-
 Bug_catcherDougScript:
 	talkaftercancel
 	loadfont
@@ -108,24 +60,16 @@
 	fruittree $19
 
 MapRoute2SignpostItem2:
-	dw $00ed
-	db MAX_ETHER
-	
+	dwb EVENT_ROUTE_2_HIDDEN_MAX_ETHER, MAX_ETHER
 
 MapRoute2SignpostItem3:
-	dw $00ee
-	db FULL_HEAL
-	
+	dwb EVENT_ROUTE_2_HIDDEN_FULL_HEAL, FULL_HEAL
 
 MapRoute2SignpostItem4:
-	dw $00ef
-	db FULL_RESTORE
-	
+	dwb EVENT_ROUTE_2_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
 MapRoute2SignpostItem5:
-	dw $00f0
-	db REVIVE
-	
+	dwb EVENT_ROUTE_2_HIDDEN_REVIVE, REVIVE
 
 Bug_catcherRobSeenText:
 	text "My bug #MON are"
@@ -196,7 +140,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $f, $f, 1, GROUP_ROUTE_2_NUGGET_SPEECH_HOUSE, MAP_ROUTE_2_NUGGET_SPEECH_HOUSE
 	warp_def $1f, $f, 3, GROUP_ROUTE_2_GATE, MAP_ROUTE_2_GATE
@@ -204,25 +148,25 @@
 	warp_def $1b, $11, 2, GROUP_ROUTE_2_GATE, MAP_ROUTE_2_GATE
 	warp_def $7, $c, 3, GROUP_DIGLETTS_CAVE, MAP_DIGLETTS_CAVE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 51, 7, $0, MapRoute2Signpost0Script
-	signpost 9, 11, $0, MapRoute2Signpost1Script
-	signpost 23, 7, $7, MapRoute2SignpostItem2
-	signpost 14, 4, $7, MapRoute2SignpostItem3
-	signpost 27, 4, $7, MapRoute2SignpostItem4
-	signpost 30, 11, $7, MapRoute2SignpostItem5
+	signpost 51, 7, SIGNPOST_READ, MapRoute2Signpost0Script
+	signpost 9, 11, SIGNPOST_READ, MapRoute2Signpost1Script
+	signpost 23, 7, SIGNPOST_ITEM, MapRoute2SignpostItem2
+	signpost 14, 4, SIGNPOST_ITEM, MapRoute2SignpostItem3
+	signpost 27, 4, SIGNPOST_ITEM, MapRoute2SignpostItem4
+	signpost 30, 11, SIGNPOST_ITEM, MapRoute2SignpostItem5
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_BUG_CATCHER, 49, 14, $8, $0, 255, 255, $b2, 5, TrainerBug_catcherRob, -1
-	person_event SPRITE_BUG_CATCHER, 8, 10, $1f, $0, 255, 255, $b2, 3, TrainerBug_catcherEd, -1
-	person_event SPRITE_BUG_CATCHER, 44, 4, $9, $0, 255, 255, $b2, 3, TrainerBug_catcherDoug, -1
-	person_event SPRITE_POKE_BALL, 33, 4, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac2fe, EVENT_783
-	person_event SPRITE_POKE_BALL, 27, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac300, EVENT_784
-	person_event SPRITE_POKE_BALL, 6, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac302, EVENT_785
-	person_event SPRITE_POKE_BALL, 54, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac304, EVENT_786
-	person_event SPRITE_FRUIT_TREE, 18, 14, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1ac306, -1
+	person_event SPRITE_BUG_CATCHER, 49, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 5, TrainerBug_catcherRob, -1
+	person_event SPRITE_BUG_CATCHER, 8, 10, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherEd, -1
+	person_event SPRITE_BUG_CATCHER, 44, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherDoug, -1
+	person_event SPRITE_POKE_BALL, 33, 4, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac2fe, EVENT_ROUTE_2_DIRE_HIT
+	person_event SPRITE_POKE_BALL, 27, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac300, EVENT_ROUTE_2_MAX_POTION
+	person_event SPRITE_POKE_BALL, 6, 23, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac302, EVENT_ROUTE_2_CARBOS
+	person_event SPRITE_POKE_BALL, 54, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac304, EVENT_ROUTE_2_ELIXER
+	person_event SPRITE_FRUIT_TREE, 18, 14, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1ac306, -1
--- a/maps/Route20.asm
+++ b/maps/Route20.asm
@@ -1,8 +1,8 @@
 Route20_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -14,24 +14,8 @@
 	return
 
 TrainerSwimmerfNicole:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_NICOLE
+	trainer EVENT_BEAT_SWIMMERF_NICOLE, SWIMMERF, NICOLE, SwimmerfNicoleSeenText, SwimmerfNicoleBeatenText, $0000, SwimmerfNicoleScript
 
-	; trainer group && trainer id
-	db SWIMMERF, NICOLE
-
-	; text when seen
-	dw SwimmerfNicoleSeenText
-
-	; text when trainer beaten
-	dw SwimmerfNicoleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfNicoleScript
-
 SwimmerfNicoleScript:
 	talkaftercancel
 	loadfont
@@ -41,24 +25,8 @@
 	end
 
 TrainerSwimmerfLori:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_LORI
+	trainer EVENT_BEAT_SWIMMERF_LORI, SWIMMERF, LORI, SwimmerfLoriSeenText, SwimmerfLoriBeatenText, $0000, SwimmerfLoriScript
 
-	; trainer group && trainer id
-	db SWIMMERF, LORI
-
-	; text when seen
-	dw SwimmerfLoriSeenText
-
-	; text when trainer beaten
-	dw SwimmerfLoriBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfLoriScript
-
 SwimmerfLoriScript:
 	talkaftercancel
 	loadfont
@@ -68,24 +36,8 @@
 	end
 
 TrainerSwimmermCameron:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_CAMERON
+	trainer EVENT_BEAT_SWIMMERM_CAMERON, SWIMMERM, CAMERON, SwimmermCameronSeenText, SwimmermCameronBeatenText, $0000, SwimmermCameronScript
 
-	; trainer group && trainer id
-	db SWIMMERM, CAMERON
-
-	; text when seen
-	dw SwimmermCameronSeenText
-
-	; text when trainer beaten
-	dw SwimmermCameronBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermCameronScript
-
 SwimmermCameronScript:
 	talkaftercancel
 	loadfont
@@ -162,19 +114,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $26, 1, GROUP_SEAFOAM_GYM, MAP_SEAFOAM_GYM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 11, 37, $0, MapRoute20Signpost0Script
+	signpost 11, 37, SIGNPOST_READ, MapRoute20Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 12, 56, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfNicole, -1
-	person_event SPRITE_SWIMMER_GIRL, 17, 49, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfLori, -1
-	person_event SPRITE_SWIMMER_GUY, 17, 16, $a, $0, 255, 255, $82, 3, TrainerSwimmermCameron, -1
+	person_event SPRITE_SWIMMER_GIRL, 12, 56, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfNicole, -1
+	person_event SPRITE_SWIMMER_GIRL, 17, 49, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfLori, -1
+	person_event SPRITE_SWIMMER_GUY, 17, 16, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermCameron, -1
--- a/maps/Route21.asm
+++ b/maps/Route21.asm
@@ -1,29 +1,13 @@
 Route21_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerSwimmermSeth:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_SETH
+	trainer EVENT_BEAT_SWIMMERM_SETH, SWIMMERM, SETH, SwimmermSethSeenText, SwimmermSethBeatenText, $0000, SwimmermSethScript
 
-	; trainer group && trainer id
-	db SWIMMERM, SETH
-
-	; text when seen
-	dw SwimmermSethSeenText
-
-	; text when trainer beaten
-	dw SwimmermSethBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermSethScript
-
 SwimmermSethScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSwimmerfNikki:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_NIKKI
+	trainer EVENT_BEAT_SWIMMERF_NIKKI, SWIMMERF, NIKKI, SwimmerfNikkiSeenText, SwimmerfNikkiBeatenText, $0000, SwimmerfNikkiScript
 
-	; trainer group && trainer id
-	db SWIMMERF, NIKKI
-
-	; text when seen
-	dw SwimmerfNikkiSeenText
-
-	; text when trainer beaten
-	dw SwimmerfNikkiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfNikkiScript
-
 SwimmerfNikkiScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerFisherArnold:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_ARNOLD
+	trainer EVENT_BEAT_FISHER_ARNOLD, FISHER, ARNOLD, FisherArnoldSeenText, FisherArnoldBeatenText, $0000, FisherArnoldScript
 
-	; trainer group && trainer id
-	db FISHER, ARNOLD
-
-	; text when seen
-	dw FisherArnoldSeenText
-
-	; text when trainer beaten
-	dw FisherArnoldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherArnoldScript
-
 FisherArnoldScript:
 	talkaftercancel
 	loadfont
@@ -136,17 +88,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 0
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 20, 15, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfNikki, -1
-	person_event SPRITE_SWIMMER_GUY, 34, 6, $9, $0, 255, 255, $82, 4, TrainerSwimmermSeth, -1
-	person_event SPRITE_FISHER, 26, 18, $7, $0, 255, 255, $a2, 1, TrainerFisherArnold, -1
+	person_event SPRITE_SWIMMER_GIRL, 20, 15, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfNikki, -1
+	person_event SPRITE_SWIMMER_GUY, 34, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerSwimmermSeth, -1
+	person_event SPRITE_FISHER, 26, 18, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherArnold, -1
--- a/maps/Route22.asm
+++ b/maps/Route22.asm
@@ -1,8 +1,8 @@
 Route22_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MapRoute22Signpost0Script:
@@ -19,16 +19,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $5, $d, 1, GROUP_VICTORY_ROAD_GATE, MAP_VICTORY_ROAD_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 7, 15, $0, MapRoute22Signpost0Script
+	signpost 7, 15, SIGNPOST_READ, MapRoute22Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route23.asm
+++ b/maps/Route23.asm
@@ -1,8 +1,8 @@
 Route23_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -28,7 +28,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $5, $9, 1, GROUP_INDIGO_PLATEAU_POKECENTER_1F, MAP_INDIGO_PLATEAU_POKECENTER_1F
 	warp_def $5, $a, 2, GROUP_INDIGO_PLATEAU_POKECENTER_1F, MAP_INDIGO_PLATEAU_POKECENTER_1F
@@ -35,12 +35,12 @@
 	warp_def $d, $9, 10, GROUP_VICTORY_ROAD, MAP_VICTORY_ROAD
 	warp_def $d, $a, 10, GROUP_VICTORY_ROAD, MAP_VICTORY_ROAD
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 7, 11, $0, IndigoPlateauSign
+	signpost 7, 11, SIGNPOST_READ, IndigoPlateauSign
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route24.asm
+++ b/maps/Route24.asm
@@ -1,8 +1,8 @@
 Route24_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 RocketScript_0x1adbfa:
@@ -12,7 +12,7 @@
 	writetext UnknownText_0x1adc2e
 	closetext
 	loadmovesprites
-	winlosstext UnknownText_0x1add67, $ffff
+	winlosstext UnknownText_0x1add67, -1
 	loadtrainer GRUNTM, 31
 	startbattle
 	reloadmapmusic
@@ -25,11 +25,11 @@
 	writetext UnknownText_0x1adee1
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	disappear $2
 	pause 25
-	special Function8c0ab
+	special Special_FadeInQuickly
 	playmapmusic
 	end
 
@@ -119,15 +119,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 0
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_ROCKET, 11, 12, $3, $0, 255, 255, $0, 0, RocketScript_0x1adbfa, EVENT_76C
+	person_event SPRITE_ROCKET, 11, 12, OW_DOWN | $3, $0, -1, -1, $0, 0, RocketScript_0x1adbfa, EVENT_ROUTE_24_ROCKET
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -1,5 +1,5 @@
 Route25_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x19ee9e, $0000
 	dw UnknownScript_0x19ee9f, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x19ee9e:
@@ -18,7 +18,7 @@
 UnknownScript_0x19eea0:
 	showemote $4, $2, 15
 	pause 30
-	showemote $0, $3, 10
+	showemote EMOTE_SHOCK, $3, 10
 	spriteface $2, DOWN
 	applymovement $3, MovementData_0x19efe8
 	disappear $3
@@ -44,7 +44,7 @@
 UnknownScript_0x19eee0:
 	showemote $4, $2, 15
 	pause 30
-	showemote $0, $3, 10
+	showemote EMOTE_SHOCK, $3, 10
 	spriteface $2, DOWN
 	applymovement $3, MovementData_0x19efea
 	disappear $3
@@ -68,24 +68,8 @@
 	end
 
 TrainerSchoolboyDudley:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_DUDLEY
+	trainer EVENT_BEAT_SCHOOLBOY_DUDLEY, SCHOOLBOY, DUDLEY, SchoolboyDudleySeenText, SchoolboyDudleyBeatenText, $0000, SchoolboyDudleyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, DUDLEY
-
-	; text when seen
-	dw SchoolboyDudleySeenText
-
-	; text when trainer beaten
-	dw SchoolboyDudleyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyDudleyScript
-
 SchoolboyDudleyScript:
 	talkaftercancel
 	loadfont
@@ -95,24 +79,8 @@
 	end
 
 TrainerLassEllen:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_ELLEN
+	trainer EVENT_BEAT_LASS_ELLEN, LASS, ELLEN, LassEllenSeenText, LassEllenBeatenText, $0000, LassEllenScript
 
-	; trainer group && trainer id
-	db LASS, ELLEN
-
-	; text when seen
-	dw LassEllenSeenText
-
-	; text when trainer beaten
-	dw LassEllenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassEllenScript
-
 LassEllenScript:
 	talkaftercancel
 	loadfont
@@ -122,24 +90,8 @@
 	end
 
 TrainerSchoolboyJoe:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_JOE
+	trainer EVENT_BEAT_SCHOOLBOY_JOE, SCHOOLBOY, JOE, SchoolboyJoeSeenText, SchoolboyJoeBeatenText, $0000, SchoolboyJoeScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, JOE
-
-	; text when seen
-	dw SchoolboyJoeSeenText
-
-	; text when trainer beaten
-	dw SchoolboyJoeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyJoeScript
-
 SchoolboyJoeScript:
 	talkaftercancel
 	loadfont
@@ -149,24 +101,8 @@
 	end
 
 TrainerLassLaura:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_LAURA
+	trainer EVENT_BEAT_LASS_LAURA, LASS, LAURA, LassLauraSeenText, LassLauraBeatenText, $0000, LassLauraScript
 
-	; trainer group && trainer id
-	db LASS, LAURA
-
-	; text when seen
-	dw LassLauraSeenText
-
-	; text when trainer beaten
-	dw LassLauraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassLauraScript
-
 LassLauraScript:
 	talkaftercancel
 	loadfont
@@ -176,24 +112,8 @@
 	end
 
 TrainerCamperLloyd:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_LLOYD
+	trainer EVENT_BEAT_CAMPER_LLOYD, CAMPER, LLOYD, CamperLloydSeenText, CamperLloydBeatenText, $0000, CamperLloydScript
 
-	; trainer group && trainer id
-	db CAMPER, LLOYD
-
-	; text when seen
-	dw CamperLloydSeenText
-
-	; text when trainer beaten
-	dw CamperLloydBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperLloydScript
-
 CamperLloydScript:
 	talkaftercancel
 	loadfont
@@ -203,24 +123,8 @@
 	end
 
 TrainerLassShannon:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_SHANNON
+	trainer EVENT_BEAT_LASS_SHANNON, LASS, SHANNON, LassShannonSeenText, LassShannonBeatenText, $0000, LassShannonScript
 
-	; trainer group && trainer id
-	db LASS, SHANNON
-
-	; text when seen
-	dw LassShannonSeenText
-
-	; text when trainer beaten
-	dw LassShannonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassShannonScript
-
 LassShannonScript:
 	talkaftercancel
 	loadfont
@@ -230,24 +134,8 @@
 	end
 
 TrainerSupernerdPat:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_PAT
+	trainer EVENT_BEAT_SUPER_NERD_PAT, SUPER_NERD, PAT, SupernerdPatSeenText, SupernerdPatBeatenText, $0000, SupernerdPatScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, PAT
-
-	; text when seen
-	dw SupernerdPatSeenText
-
-	; text when trainer beaten
-	dw SupernerdPatBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdPatScript
-
 SupernerdPatScript:
 	talkaftercancel
 	loadfont
@@ -292,8 +180,7 @@
 	db PROTEIN, 1
 
 MapRoute25SignpostItem1:
-	dw $00f8
-	db POTION
+	dwb EVENT_ROUTE_25_HIDDEN_POTION, POTION
 	
 
 MovementData_0x19efe8:
@@ -536,30 +423,30 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $5, $2f, 1, GROUP_BILLS_HOUSE, MAP_BILLS_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 1, $6, $2a, $0, UnknownScript_0x19eea0, $0, $0
 	xy_trigger 1, $7, $2a, $0, UnknownScript_0x19eee0, $0, $0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 5, 45, $0, MapRoute25Signpost0Script
-	signpost 5, 4, $7, MapRoute25SignpostItem1
+	signpost 5, 45, SIGNPOST_READ, MapRoute25Signpost0Script
+	signpost 5, 4, SIGNPOST_ITEM, MapRoute25SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_MISTY, 13, 50, $8, $0, 255, 255, $80, 0, ObjectEvent, EVENT_76E
-	person_event SPRITE_COOLTRAINER_M, 14, 50, $8, $0, 255, 255, $a0, 0, ObjectEvent, EVENT_76E
-	person_event SPRITE_YOUNGSTER, 12, 16, $6, $0, 255, 255, $92, 3, TrainerSchoolboyDudley, -1
-	person_event SPRITE_LASS, 15, 20, $7, $0, 255, 255, $92, 3, TrainerLassEllen, -1
-	person_event SPRITE_YOUNGSTER, 12, 25, $6, $0, 255, 255, $92, 1, TrainerSchoolboyJoe, -1
-	person_event SPRITE_LASS, 10, 26, $9, $0, 255, 255, $92, 3, TrainerLassLaura, -1
-	person_event SPRITE_YOUNGSTER, 8, 29, $6, $0, 255, 255, $a2, 2, TrainerCamperLloyd, -1
-	person_event SPRITE_LASS, 15, 32, $7, $0, 255, 255, $92, 1, TrainerLassShannon, -1
-	person_event SPRITE_SUPER_NERD, 11, 35, $6, $0, 255, 255, $b2, 1, TrainerSupernerdPat, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 41, $8, $0, 255, 255, $80, 0, CooltrainerMScript_0x19efac, -1
-	person_event SPRITE_POKE_BALL, 8, 36, $1, $0, 255, 255, $1, 0, ItemFragment_0x19efe3, EVENT_78B
+	person_event SPRITE_MISTY, 13, 50, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_ROUTE_25_MISTY_BOYFRIEND
+	person_event SPRITE_COOLTRAINER_M, 14, 50, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, EVENT_ROUTE_25_MISTY_BOYFRIEND
+	person_event SPRITE_YOUNGSTER, 12, 16, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyDudley, -1
+	person_event SPRITE_LASS, 15, 20, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerLassEllen, -1
+	person_event SPRITE_YOUNGSTER, 12, 25, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyJoe, -1
+	person_event SPRITE_LASS, 10, 26, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerLassLaura, -1
+	person_event SPRITE_YOUNGSTER, 8, 29, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerCamperLloyd, -1
+	person_event SPRITE_LASS, 15, 32, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerLassShannon, -1
+	person_event SPRITE_SUPER_NERD, 11, 35, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerSupernerdPat, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 41, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x19efac, -1
+	person_event SPRITE_POKE_BALL, 8, 36, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19efe3, EVENT_ROUTE_25_PROTEIN
--- a/maps/Route26.asm
+++ b/maps/Route26.asm
@@ -1,29 +1,13 @@
 Route26_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerCooltrainermJake:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_JAKE
+	trainer EVENT_BEAT_COOLTRAINERM_JAKE, COOLTRAINERM, JAKE, CooltrainermJakeSeenText, CooltrainermJakeBeatenText, $0000, CooltrainermJakeScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, JAKE
-
-	; text when seen
-	dw CooltrainermJakeSeenText
-
-	; text when trainer beaten
-	dw CooltrainermJakeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermJakeScript
-
 CooltrainermJakeScript:
 	talkaftercancel
 	loadfont
@@ -33,31 +17,15 @@
 	end
 
 TrainerCooltrainermGaven3:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_GAVEN
+	trainer EVENT_BEAT_COOLTRAINERM_GAVEN, COOLTRAINERM, GAVEN3, CooltrainermGaven3SeenText, CooltrainermGaven3BeatenText, $0000, CooltrainermGaven3Script
 
-	; trainer group && trainer id
-	db COOLTRAINERM, GAVEN3
-
-	; text when seen
-	dw CooltrainermGaven3SeenText
-
-	; text when trainer beaten
-	dw CooltrainermGaven3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermGaven3Script
-
 CooltrainermGaven3Script:
-	writecode VAR_CALLERID, $b
+	writecode VAR_CALLERID, PHONE_COOLTRAINERM_GAVEN
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_GAVEN
 	iftrue UnknownScript_0x1a4d79
-	checkcellnum $b
+	checkcellnum PHONE_COOLTRAINERM_GAVEN
 	iftrue UnknownScript_0x1a4dcb
 	checkevent EVENT_GAVEN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a4d62
@@ -70,7 +38,7 @@
 UnknownScript_0x1a4d62:
 	scall UnknownScript_0x1a4dc3
 UnknownScript_0x1a4d65:
-	askforphonenumber $b
+	askforphonenumber PHONE_COOLTRAINERM_GAVEN
 	if_equal $1, UnknownScript_0x1a4dd3
 	if_equal $2, UnknownScript_0x1a4dcf
 	trainertotext COOLTRAINERM, GAVEN3, $0
@@ -142,24 +110,8 @@
 	end
 
 TrainerCooltrainerfJoyce:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_JOYCE
+	trainer EVENT_BEAT_COOLTRAINERF_JOYCE, COOLTRAINERF, JOYCE, CooltrainerfJoyceSeenText, CooltrainerfJoyceBeatenText, $0000, CooltrainerfJoyceScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, JOYCE
-
-	; text when seen
-	dw CooltrainerfJoyceSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfJoyceBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfJoyceScript
-
 CooltrainerfJoyceScript:
 	talkaftercancel
 	loadfont
@@ -169,31 +121,15 @@
 	end
 
 TrainerCooltrainerfBeth1:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_BETH
+	trainer EVENT_BEAT_COOLTRAINERF_BETH, COOLTRAINERF, BETH1, CooltrainerfBeth1SeenText, CooltrainerfBeth1BeatenText, $0000, CooltrainerfBeth1Script
 
-	; trainer group && trainer id
-	db COOLTRAINERF, BETH1
-
-	; text when seen
-	dw CooltrainerfBeth1SeenText
-
-	; text when trainer beaten
-	dw CooltrainerfBeth1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfBeth1Script
-
 CooltrainerfBeth1Script:
-	writecode VAR_CALLERID, $c
+	writecode VAR_CALLERID, PHONE_COOLTRAINERF_BETH
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_BETH
 	iftrue UnknownScript_0x1a4e35
-	checkcellnum $c
+	checkcellnum PHONE_COOLTRAINERF_BETH
 	iftrue UnknownScript_0x1a4e87
 	checkevent EVENT_BETH_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a4e1e
@@ -206,7 +142,7 @@
 UnknownScript_0x1a4e1e:
 	scall UnknownScript_0x1a4e7f
 UnknownScript_0x1a4e21:
-	askforphonenumber $c
+	askforphonenumber PHONE_COOLTRAINERF_BETH
 	if_equal $1, UnknownScript_0x1a4e8f
 	if_equal $2, UnknownScript_0x1a4e8b
 	trainertotext COOLTRAINERF, BETH1, $0
@@ -278,24 +214,8 @@
 	end
 
 TrainerPsychicRichard:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_RICHARD
+	trainer EVENT_BEAT_PSYCHIC_RICHARD, PSYCHIC_T, RICHARD, PsychicRichardSeenText, PsychicRichardBeatenText, $0000, PsychicRichardScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, RICHARD
-
-	; text when seen
-	dw PsychicRichardSeenText
-
-	; text when trainer beaten
-	dw PsychicRichardBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicRichardScript
-
 PsychicRichardScript:
 	talkaftercancel
 	loadfont
@@ -305,24 +225,8 @@
 	end
 
 TrainerFisherScott:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_SCOTT
+	trainer EVENT_BEAT_FISHER_SCOTT, FISHER, SCOTT, FisherScottSeenText, FisherScottBeatenText, $0000, FisherScottScript
 
-	; trainer group && trainer id
-	db FISHER, SCOTT
-
-	; text when seen
-	dw FisherScottSeenText
-
-	; text when trainer beaten
-	dw FisherScottBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherScottScript
-
 FisherScottScript:
 	talkaftercancel
 	loadfont
@@ -502,26 +406,26 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $5, $7, 3, GROUP_VICTORY_ROAD_GATE, MAP_VICTORY_ROAD_GATE
 	warp_def $39, $f, 1, GROUP_ROUTE_26_HEAL_SPEECH_HOUSE, MAP_ROUTE_26_HEAL_SPEECH_HOUSE
 	warp_def $47, $5, 1, GROUP_ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, MAP_ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 6, 8, $0, MapRoute26Signpost0Script
+	signpost 6, 8, SIGNPOST_READ, MapRoute26Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 28, 18, $8, $0, 255, 255, $82, 2, TrainerCooltrainermJake, -1
-	person_event SPRITE_COOLTRAINER_M, 42, 13, $8, $0, 255, 255, $82, 3, TrainerCooltrainermGaven3, -1
-	person_event SPRITE_COOLTRAINER_F, 60, 14, $a, $0, 255, 255, $82, 3, TrainerCooltrainerfJoyce, -1
-	person_event SPRITE_COOLTRAINER_F, 12, 9, $9, $0, 255, 255, $82, 4, TrainerCooltrainerfBeth1, -1
-	person_event SPRITE_YOUNGSTER, 83, 17, $9, $0, 255, 255, $92, 2, TrainerPsychicRichard, -1
-	person_event SPRITE_FISHER, 96, 14, $6, $0, 255, 255, $a2, 3, TrainerFisherScott, -1
-	person_event SPRITE_FRUIT_TREE, 58, 18, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a4ec2, -1
-	person_event SPRITE_POKE_BALL, 19, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a4ec4, EVENT_6AA
+	person_event SPRITE_COOLTRAINER_M, 28, 18, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainermJake, -1
+	person_event SPRITE_COOLTRAINER_M, 42, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermGaven3, -1
+	person_event SPRITE_COOLTRAINER_F, 60, 14, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfJoyce, -1
+	person_event SPRITE_COOLTRAINER_F, 12, 9, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainerfBeth1, -1
+	person_event SPRITE_YOUNGSTER, 83, 17, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPsychicRichard, -1
+	person_event SPRITE_FISHER, 96, 14, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherScott, -1
+	person_event SPRITE_FRUIT_TREE, 58, 18, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a4ec2, -1
+	person_event SPRITE_POKE_BALL, 19, 13, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a4ec4, EVENT_ROUTE_26_MAX_ELIXER
--- a/maps/Route26DayofWeekSiblingsHouse.asm
+++ b/maps/Route26DayofWeekSiblingsHouse.asm
@@ -1,8 +1,8 @@
 Route26DayofWeekSiblingsHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokedexScript_0x7b1e4:
@@ -71,17 +71,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_ROUTE_26, MAP_ROUTE_26
 	warp_def $7, $3, 3, GROUP_ROUTE_26, MAP_ROUTE_26
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKEDEX, 7, 7, $1, $0, 255, 255, $0, 0, PokedexScript_0x7b1e4, -1
+	person_event SPRITE_POKEDEX, 7, 7, OW_DOWN | $1, $0, -1, -1, $0, 0, PokedexScript_0x7b1e4, -1
--- a/maps/Route26HealSpeechHouse.asm
+++ b/maps/Route26HealSpeechHouse.asm
@@ -1,8 +1,8 @@
 Route26HealSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x7b125:
@@ -11,13 +11,13 @@
 	writetext UnknownText_0x7b14d
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
-	special Function1060a2
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
+	special Mobile_HealParty
 	playmusic MUSIC_HEAL
 	special HealParty
 	pause 60
-	special Function8c0ab
+	special Special_FadeInQuickly
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x7b18b
@@ -49,19 +49,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_ROUTE_26, MAP_ROUTE_26
 	warp_def $7, $3, 2, GROUP_ROUTE_26, MAP_ROUTE_26
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, Route26HealHouseBookshelf
-	signpost 1, 1, $0, Route26HealHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, Route26HealHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, Route26HealHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_TEACHER, 7, 6, $6, $0, 255, 255, $90, 0, TeacherScript_0x7b125, -1
+	person_event SPRITE_TEACHER, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x7b125, -1
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -1,5 +1,5 @@
 Route27_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x1a0871, $0000
 	dw UnknownScript_0x1a0872, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x1a0871:
@@ -17,13 +17,13 @@
 
 UnknownScript_0x1a0873:
 	spriteface $a, LEFT
-	showemote $0, $a, 15
+	showemote EMOTE_SHOCK, $a, 15
 	applymovement $a, MovementData_0x1a0a66
 	jump UnknownScript_0x1a088c
 
 UnknownScript_0x1a0881:
 	spriteface $a, LEFT
-	showemote $0, $a, 15
+	showemote EMOTE_SHOCK, $a, 15
 	applymovement $a, MovementData_0x1a0a69
 UnknownScript_0x1a088c:
 	spriteface $0, RIGHT
@@ -40,24 +40,8 @@
 	jumptextfaceplayer UnknownText_0x1a0a71
 
 TrainerPsychicGilbert:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_GILBERT
+	trainer EVENT_BEAT_PSYCHIC_GILBERT, PSYCHIC_T, GILBERT, PsychicGilbertSeenText, PsychicGilbertBeatenText, $0000, PsychicGilbertScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, GILBERT
-
-	; text when seen
-	dw PsychicGilbertSeenText
-
-	; text when trainer beaten
-	dw PsychicGilbertBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicGilbertScript
-
 PsychicGilbertScript:
 	talkaftercancel
 	loadfont
@@ -67,26 +51,10 @@
 	end
 
 TrainerBird_keeperJose2:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_JOSE
+	trainer EVENT_BEAT_BIRD_KEEPER_JOSE2, BIRD_KEEPER, JOSE2, Bird_keeperJose2SeenText, Bird_keeperJose2BeatenText, $0000, Bird_keeperJose2Script
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, JOSE2
-
-	; text when seen
-	dw Bird_keeperJose2SeenText
-
-	; text when trainer beaten
-	dw Bird_keeperJose2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperJose2Script
-
 Bird_keeperJose2Script:
-	writecode VAR_CALLERID, $d
+	writecode VAR_CALLERID, PHONE_BIRDKEEPER_JOSE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_JOSE
@@ -93,7 +61,7 @@
 	iftrue UnknownScript_0x1a08ff
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
 	iftrue UnknownScript_0x1a0945
-	checkcellnum $d
+	checkcellnum PHONE_BIRDKEEPER_JOSE
 	iftrue UnknownScript_0x1a0963
 	checkevent EVENT_JOSE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a08e8
@@ -106,7 +74,7 @@
 UnknownScript_0x1a08e8:
 	scall UnknownScript_0x1a095b
 UnknownScript_0x1a08eb:
-	askforphonenumber $d
+	askforphonenumber PHONE_BIRDKEEPER_JOSE
 	if_equal $1, UnknownScript_0x1a096b
 	if_equal $2, UnknownScript_0x1a0967
 	trainertotext BIRD_KEEPER, JOSE2, $0
@@ -196,24 +164,8 @@
 	end
 
 TrainerCooltrainermBlake:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_BLAKE
+	trainer EVENT_BEAT_COOLTRAINERM_BLAKE, COOLTRAINERM, BLAKE, CooltrainermBlakeSeenText, CooltrainermBlakeBeatenText, $0000, CooltrainermBlakeScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, BLAKE
-
-	; text when seen
-	dw CooltrainermBlakeSeenText
-
-	; text when trainer beaten
-	dw CooltrainermBlakeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermBlakeScript
-
 CooltrainermBlakeScript:
 	talkaftercancel
 	loadfont
@@ -223,24 +175,8 @@
 	end
 
 TrainerCooltrainermBrian:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_BRIAN
+	trainer EVENT_BEAT_COOLTRAINERM_BRIAN, COOLTRAINERM, BRIAN, CooltrainermBrianSeenText, CooltrainermBrianBeatenText, $0000, CooltrainermBrianScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, BRIAN
-
-	; text when seen
-	dw CooltrainermBrianSeenText
-
-	; text when trainer beaten
-	dw CooltrainermBrianBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermBrianScript
-
 CooltrainermBrianScript:
 	talkaftercancel
 	loadfont
@@ -250,31 +186,15 @@
 	end
 
 TrainerCooltrainerfReena:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_REENA
+	trainer EVENT_BEAT_COOLTRAINERF_REENA, COOLTRAINERF, REENA1, CooltrainerfReena1SeenText, CooltrainerfReena1BeatenText, $0000, CooltrainerfReena1Script
 
-	; trainer group && trainer id
-	db COOLTRAINERF, REENA1
-
-	; text when seen
-	dw CooltrainerfReena1SeenText
-
-	; text when trainer beaten
-	dw CooltrainerfReena1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfReena1Script
-
 CooltrainerfReena1Script:
-	writecode VAR_CALLERID, $e
+	writecode VAR_CALLERID, PHONE_COOLTRAINERF_REENA
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_REENA
 	iftrue UnknownScript_0x1a09e9
-	checkcellnum $e
+	checkcellnum PHONE_COOLTRAINERF_REENA
 	iftrue UnknownScript_0x1a0a3b
 	checkevent EVENT_REENA_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a09d2
@@ -287,7 +207,7 @@
 UnknownScript_0x1a09d2:
 	scall UnknownScript_0x1a0a33
 UnknownScript_0x1a09d5:
-	askforphonenumber $e
+	askforphonenumber PHONE_COOLTRAINERF_REENA
 	if_equal $1, UnknownScript_0x1a0a43
 	if_equal $2, UnknownScript_0x1a0a3f
 	trainertotext COOLTRAINERF, REENA1, $0
@@ -359,24 +279,8 @@
 	end
 
 TrainerCooltrainerfMegan:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_MEGAN
+	trainer EVENT_BEAT_COOLTRAINERF_MEGAN, COOLTRAINERF, MEGAN, CooltrainerfMeganSeenText, CooltrainerfMeganBeatenText, $0000, CooltrainerfMeganScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, MEGAN
-
-	; text when seen
-	dw CooltrainerfMeganSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfMeganBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfMeganScript
-
 CooltrainerfMeganScript:
 	talkaftercancel
 	loadfont
@@ -558,29 +462,29 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $21, 1, GROUP_ROUTE_27_SANDSTORM_HOUSE, MAP_ROUTE_27_SANDSTORM_HOUSE
 	warp_def $5, $1a, 1, GROUP_TOHJO_FALLS, MAP_TOHJO_FALLS
 	warp_def $5, $24, 2, GROUP_TOHJO_FALLS, MAP_TOHJO_FALLS
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $a, $12, $0, UnknownScript_0x1a0873, $0, $0
 	xy_trigger 0, $a, $13, $0, UnknownScript_0x1a0881, $0, $0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 7, 25, $0, MapRoute27Signpost0Script
+	signpost 7, 25, SIGNPOST_READ, MapRoute27Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_COOLTRAINER_M, 11, 52, $7, $0, 255, 255, $82, 3, TrainerCooltrainermBlake, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 62, $9, $0, 255, 255, $82, 4, TrainerCooltrainermBrian, -1
-	person_event SPRITE_COOLTRAINER_F, 14, 76, $7, $0, 255, 255, $82, 4, TrainerCooltrainerfReena, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 41, $1f, $0, 255, 255, $82, 2, TrainerCooltrainerfMegan, -1
-	person_event SPRITE_YOUNGSTER, 11, 69, $8, $0, 255, 255, $92, 3, TrainerPsychicGilbert, -1
-	person_event SPRITE_YOUNGSTER, 17, 62, $9, $0, 255, 255, $92, 3, TrainerBird_keeperJose2, -1
-	person_event SPRITE_POKE_BALL, 16, 64, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a0a62, EVENT_6AB
-	person_event SPRITE_POKE_BALL, 16, 57, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a0a64, EVENT_6AC
-	person_event SPRITE_FISHER, 14, 25, $3, $0, 255, 255, $0, 3, FisherScript_0x1a089c, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 52, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermBlake, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 62, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainermBrian, -1
+	person_event SPRITE_COOLTRAINER_F, 14, 76, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainerfReena, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 41, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainerfMegan, -1
+	person_event SPRITE_YOUNGSTER, 11, 69, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicGilbert, -1
+	person_event SPRITE_YOUNGSTER, 17, 62, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperJose2, -1
+	person_event SPRITE_POKE_BALL, 16, 64, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a0a62, EVENT_ROUTE_27_TM_SOLARBEAM
+	person_event SPRITE_POKE_BALL, 16, 57, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a0a64, EVENT_ROUTE_27_RARE_CANDY
+	person_event SPRITE_FISHER, 14, 25, OW_DOWN | $3, $0, -1, -1, $0, 3, FisherScript_0x1a089c, -1
--- a/maps/Route27SandstormHouse.asm
+++ b/maps/Route27SandstormHouse.asm
@@ -1,8 +1,8 @@
 Route27SandstormHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SandstormHouseWoman:
@@ -10,7 +10,7 @@
 	loadfont
 	checkevent EVENT_GOT_TM37_SANDSTORM
 	iftrue .AlreadyGotItem
-	special Function718d
+	special GetFirstPokemonHappiness
 	writetext SandstormHouseWomanText1
 	keeptextopen
 	if_greater_than $95, .Loyal
@@ -94,19 +94,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_ROUTE_27, MAP_ROUTE_27
 	warp_def $7, $3, 1, GROUP_ROUTE_27, MAP_ROUTE_27
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, SandstormHouseBookshelf
-	signpost 1, 1, $0, SandstormHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, SandstormHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, SandstormHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GRANNY, 8, 6, $6, $0, 255, 255, $0, 0, SandstormHouseWoman, -1
+	person_event SPRITE_GRANNY, 8, 6, OW_UP | $2, $0, -1, -1, $0, 0, SandstormHouseWoman, -1
--- a/maps/Route28.asm
+++ b/maps/Route28.asm
@@ -1,8 +1,8 @@
 Route28_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MapRoute28Signpost0Script:
@@ -9,8 +9,7 @@
 	jumptext UnknownText_0x1a5413
 
 MapRoute28SignpostItem1:
-	dw $00a3
-	db RARE_CANDY
+	dwb EVENT_ROUTE_28_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
 UnknownText_0x1a5413:
@@ -21,18 +20,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $7, 1, GROUP_ROUTE_28_FAMOUS_SPEECH_HOUSE, MAP_ROUTE_28_FAMOUS_SPEECH_HOUSE
 	warp_def $5, $21, 7, GROUP_VICTORY_ROAD_GATE, MAP_VICTORY_ROAD_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 5, 31, $0, MapRoute28Signpost0Script
-	signpost 2, 25, $7, MapRoute28SignpostItem1
+	signpost 5, 31, SIGNPOST_READ, MapRoute28Signpost0Script
+	signpost 2, 25, SIGNPOST_ITEM, MapRoute28SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route28FamousSpeechHouse.asm
+++ b/maps/Route28FamousSpeechHouse.asm
@@ -1,11 +1,11 @@
 Route28FamousSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw .Trigger, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 .Trigger
@@ -72,20 +72,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_ROUTE_28, MAP_ROUTE_28
 	warp_def $7, $3, 1, GROUP_ROUTE_28, MAP_ROUTE_28
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, CelebrityHouseBookshelf
-	signpost 1, 1, $0, CelebrityHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CelebrityHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CelebrityHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_COOLTRAINER_F, 7, 6, $6, $0, 255, 255, $a0, 0, Celebrity, -1
-	person_event SPRITE_MOLTRES, 9, 10, $16, $0, 255, 255, $b0, 0, CelebritysFearow, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, Celebrity, -1
+	person_event SPRITE_MOLTRES, 9, 10, OW_UP | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CelebritysFearow, -1
--- a/maps/Route29.asm
+++ b/maps/Route29.asm
@@ -1,5 +1,5 @@
 Route29_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x1a0f59, $0000
 	dw UnknownScript_0x1a0f5a, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -35,7 +35,7 @@
 
 UnknownScript_0x1a0f6d:
 	spriteface $2, UP
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	applymovement $2, MovementData_0x1a108d
 	spriteface $0, LEFT
 	setevent EVENT_DUDE_TALKED_TO_YOU
@@ -60,7 +60,7 @@
 
 UnknownScript_0x1a0fa3:
 	spriteface $2, UP
-	showemote $0, $2, 15
+	showemote EMOTE_SHOCK, $2, 15
 	applymovement $2, MovementData_0x1a1094
 	spriteface $0, LEFT
 	setevent EVENT_DUDE_TALKED_TO_YOU
@@ -414,27 +414,27 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $1, $1b, 3, GROUP_ROUTE_29_46_GATE, MAP_ROUTE_29_46_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 1, $8, $35, $0, UnknownScript_0x1a0f6d, $0, $0
 	xy_trigger 1, $9, $35, $0, UnknownScript_0x1a0fa3, $0, $0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 51, $0, MapRoute29Signpost0Script
-	signpost 5, 3, $0, MapRoute29Signpost1Script
+	signpost 7, 51, SIGNPOST_READ, MapRoute29Signpost0Script
+	signpost 5, 3, SIGNPOST_READ, MapRoute29Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 16, 54, $3, $0, 255, 255, $80, 0, CooltrainerMScript_0x1a0ff1, -1
-	person_event SPRITE_YOUNGSTER, 20, 31, $4, $10, 255, 255, $a0, 0, YoungsterScript_0x1a1028, -1
-	person_event SPRITE_TEACHER, 15, 19, $5, $1, 255, 255, $a0, 0, TeacherScript_0x1a102b, -1
-	person_event SPRITE_FRUIT_TREE, 6, 16, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a1089, -1
-	person_event SPRITE_FISHER, 7, 29, $7, $0, 255, 255, $90, 0, FisherScript_0x1a102e, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 17, $6, $0, 255, 255, $80, 0, CooltrainerMScript_0x1a1031, -1
-	person_event SPRITE_TEACHER, 16, 33, $3, $0, 255, 255, $0, 0, TuscanyScript, EVENT_759
-	person_event SPRITE_POKE_BALL, 6, 52, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a108b, EVENT_6AD
+	person_event SPRITE_COOLTRAINER_M, 16, 54, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x1a0ff1, -1
+	person_event SPRITE_YOUNGSTER, 20, 31, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a1028, -1
+	person_event SPRITE_TEACHER, 15, 19, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x1a102b, -1
+	person_event SPRITE_FRUIT_TREE, 6, 16, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a1089, -1
+	person_event SPRITE_FISHER, 7, 29, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x1a102e, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 17, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x1a1031, -1
+	person_event SPRITE_TEACHER, 16, 33, OW_DOWN | $3, $0, -1, -1, $0, 0, TuscanyScript, EVENT_ROUTE_29_TUSCANY_OF_TUESDAY
+	person_event SPRITE_POKE_BALL, 6, 52, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a108b, EVENT_ROUTE_29_POTION
--- a/maps/Route2946Gate.asm
+++ b/maps/Route2946Gate.asm
@@ -1,8 +1,8 @@
 Route2946Gate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x7b5bb:
@@ -36,7 +36,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 1, GROUP_ROUTE_46, MAP_ROUTE_46
 	warp_def $0, $5, 2, GROUP_ROUTE_46, MAP_ROUTE_46
@@ -43,13 +43,13 @@
 	warp_def $7, $4, 1, GROUP_ROUTE_29, MAP_ROUTE_29
 	warp_def $7, $5, 1, GROUP_ROUTE_29, MAP_ROUTE_29
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x7b5bb, -1
-	person_event SPRITE_YOUNGSTER, 8, 10, $4, $10, 255, 255, $a0, 0, YoungsterScript_0x7b5be, -1
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x7b5bb, -1
+	person_event SPRITE_YOUNGSTER, 8, 10, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x7b5be, -1
--- a/maps/Route2Gate.asm
+++ b/maps/Route2Gate.asm
@@ -1,8 +1,8 @@
 Route2Gate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ScientistScript_0x9b952:
@@ -26,7 +26,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 3, GROUP_ROUTE_2, MAP_ROUTE_2
 	warp_def $0, $5, 4, GROUP_ROUTE_2, MAP_ROUTE_2
@@ -33,12 +33,12 @@
 	warp_def $7, $4, 2, GROUP_ROUTE_2, MAP_ROUTE_2
 	warp_def $7, $5, 2, GROUP_ROUTE_2, MAP_ROUTE_2
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_SCIENTIST, 8, 10, $4, $20, 255, 255, $90, 0, ScientistScript_0x9b952, -1
+	person_event SPRITE_SCIENTIST, 8, 10, OW_UP | $0, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x9b952, -1
--- a/maps/Route2NuggetSpeechHouse.asm
+++ b/maps/Route2NuggetSpeechHouse.asm
@@ -1,8 +1,8 @@
 Route2NuggetSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FisherScript_0x9b847:
@@ -53,17 +53,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_ROUTE_2, MAP_ROUTE_2
 	warp_def $7, $3, 1, GROUP_ROUTE_2, MAP_ROUTE_2
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHER, 8, 6, $4, $20, 255, 255, $90, 0, FisherScript_0x9b847, -1
+	person_event SPRITE_FISHER, 8, 6, OW_UP | $0, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x9b847, -1
--- a/maps/Route3.asm
+++ b/maps/Route3.asm
@@ -1,29 +1,13 @@
 Route3_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerFirebreatherOtis:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_OTIS
+	trainer EVENT_BEAT_FIREBREATHER_OTIS, FIREBREATHER, OTIS, FirebreatherOtisSeenText, FirebreatherOtisBeatenText, $0000, FirebreatherOtisScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, OTIS
-
-	; text when seen
-	dw FirebreatherOtisSeenText
-
-	; text when trainer beaten
-	dw FirebreatherOtisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherOtisScript
-
 FirebreatherOtisScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerYoungsterWarren:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_WARREN
+	trainer EVENT_BEAT_YOUNGSTER_WARREN, YOUNGSTER, WARREN, YoungsterWarrenSeenText, YoungsterWarrenBeatenText, $0000, YoungsterWarrenScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, WARREN
-
-	; text when seen
-	dw YoungsterWarrenSeenText
-
-	; text when trainer beaten
-	dw YoungsterWarrenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterWarrenScript
-
 YoungsterWarrenScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerYoungsterJimmy:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_JIMMY
+	trainer EVENT_BEAT_YOUNGSTER_JIMMY, YOUNGSTER, JIMMY, YoungsterJimmySeenText, YoungsterJimmyBeatenText, $0000, YoungsterJimmyScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, JIMMY
-
-	; text when seen
-	dw YoungsterJimmySeenText
-
-	; text when trainer beaten
-	dw YoungsterJimmyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterJimmyScript
-
 YoungsterJimmyScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerFirebreatherBurt:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_BURT
+	trainer EVENT_BEAT_FIREBREATHER_BURT, FIREBREATHER, BURT, FirebreatherBurtSeenText, FirebreatherBurtBeatenText, $0000, FirebreatherBurtScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, BURT
-
-	; text when seen
-	dw FirebreatherBurtSeenText
-
-	; text when trainer beaten
-	dw FirebreatherBurtBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherBurtScript
-
 FirebreatherBurtScript:
 	talkaftercancel
 	loadfont
@@ -194,20 +130,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $1, $34, 1, GROUP_MOUNT_MOON, MAP_MOUNT_MOON
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 13, 49, $0, MapRoute3Signpost0Script
+	signpost 13, 49, SIGNPOST_READ, MapRoute3Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_FISHER, 16, 30, $7, $0, 255, 255, $82, 2, TrainerFirebreatherOtis, -1
-	person_event SPRITE_YOUNGSTER, 11, 14, $8, $0, 255, 255, $92, 3, TrainerYoungsterWarren, -1
-	person_event SPRITE_YOUNGSTER, 7, 20, $a, $0, 255, 255, $92, 1, TrainerYoungsterJimmy, -1
-	person_event SPRITE_FISHER, 9, 53, $a, $0, 255, 255, $82, 3, TrainerFirebreatherBurt, -1
+	person_event SPRITE_FISHER, 16, 30, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerFirebreatherOtis, -1
+	person_event SPRITE_YOUNGSTER, 11, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterWarren, -1
+	person_event SPRITE_YOUNGSTER, 7, 20, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerYoungsterJimmy, -1
+	person_event SPRITE_FISHER, 9, 53, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerFirebreatherBurt, -1
--- a/maps/Route30.asm
+++ b/maps/Route30.asm
@@ -1,8 +1,8 @@
 Route30_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 YoungsterScript_0x1a1673:
@@ -26,31 +26,15 @@
 	end
 
 TrainerYoungsterJoey:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_JOEY
+	trainer EVENT_BEAT_YOUNGSTER_JOEY, YOUNGSTER, JOEY1, YoungsterJoey1SeenText, YoungsterJoey1BeatenText, $0000, YoungsterJoey1Script
 
-	; trainer group && trainer id
-	db YOUNGSTER, JOEY1
-
-	; text when seen
-	dw YoungsterJoey1SeenText
-
-	; text when trainer beaten
-	dw YoungsterJoey1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterJoey1Script
-
 YoungsterJoey1Script:
-	writecode VAR_CALLERID, $f
+	writecode VAR_CALLERID, PHONE_YOUNGSTER_JOEY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_JOEY
 	iftrue UnknownScript_0x1a16e0
-	checkcellnum $f
+	checkcellnum PHONE_YOUNGSTER_JOEY
 	iftrue UnknownScript_0x1a178f
 	checkevent EVENT_JOEY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a16c9
@@ -63,7 +47,7 @@
 UnknownScript_0x1a16c9:
 	scall UnknownScript_0x1a1787
 UnknownScript_0x1a16cc:
-	askforphonenumber $f
+	askforphonenumber PHONE_YOUNGSTER_JOEY
 	if_equal $1, UnknownScript_0x1a1797
 	if_equal $2, UnknownScript_0x1a1793
 	trainertotext YOUNGSTER, JOEY1, $0
@@ -189,24 +173,8 @@
 	end
 
 TrainerYoungsterMikey:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_MIKEY
+	trainer EVENT_BEAT_YOUNGSTER_MIKEY, YOUNGSTER, MIKEY, YoungsterMikeySeenText, YoungsterMikeyBeatenText, $0000, YoungsterMikeyScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, MIKEY
-
-	; text when seen
-	dw YoungsterMikeySeenText
-
-	; text when trainer beaten
-	dw YoungsterMikeyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterMikeyScript
-
 YoungsterMikeyScript:
 	talkaftercancel
 	loadfont
@@ -216,24 +184,8 @@
 	end
 
 TrainerBug_catcherDon:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_DON
+	trainer EVENT_BEAT_BUG_CATCHER_DON, BUG_CATCHER, DON, Bug_catcherDonSeenText, Bug_catcherDonBeatenText, $0000, Bug_catcherDonScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, DON
-
-	; text when seen
-	dw Bug_catcherDonSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherDonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherDonScript
-
 Bug_catcherDonScript:
 	talkaftercancel
 	loadfont
@@ -283,8 +235,7 @@
 	fruittree $5
 
 MapRoute30SignpostItem4:
-	dw $00a4
-	db POTION
+	dwb EVENT_ROUTE_30_HIDDEN_POTION, POTION
 	
 
 MovementData_0x1a17fe:
@@ -447,32 +398,32 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $27, $7, 1, GROUP_ROUTE_30_BERRY_SPEECH_HOUSE, MAP_ROUTE_30_BERRY_SPEECH_HOUSE
 	warp_def $5, $11, 1, GROUP_MR_POKEMONS_HOUSE, MAP_MR_POKEMONS_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 43, 9, $0, MapRoute30Signpost0Script
-	signpost 29, 13, $0, MapRoute30Signpost1Script
-	signpost 5, 15, $0, MapRoute30Signpost2Script
-	signpost 21, 3, $0, MapRoute30Signpost3Script
-	signpost 9, 14, $7, MapRoute30SignpostItem4
+	signpost 43, 9, SIGNPOST_READ, MapRoute30Signpost0Script
+	signpost 29, 13, SIGNPOST_READ, MapRoute30Signpost1Script
+	signpost 5, 15, SIGNPOST_READ, MapRoute30Signpost2Script
+	signpost 21, 3, SIGNPOST_READ, MapRoute30Signpost3Script
+	signpost 9, 14, SIGNPOST_ITEM, MapRoute30SignpostItem4
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_YOUNGSTER, 30, 9, $7, $0, 255, 255, $90, 0, YoungsterScript_0x1a1673, EVENT_714
-	person_event SPRITE_YOUNGSTER, 32, 6, $9, $0, 255, 255, $92, 3, TrainerYoungsterJoey, EVENT_715
-	person_event SPRITE_YOUNGSTER, 27, 9, $6, $0, 255, 255, $92, 1, TrainerYoungsterMikey, -1
-	person_event SPRITE_BUG_CATCHER, 11, 5, $6, $0, 255, 255, $b2, 3, TrainerBug_catcherDon, -1
-	person_event SPRITE_YOUNGSTER, 34, 11, $5, $1, 255, 255, $80, 0, YoungsterScript_0x1a17d2, -1
-	person_event SPRITE_MONSTER, 28, 9, $6, $0, 255, 255, $80, 0, ObjectEvent, EVENT_714
-	person_event SPRITE_MONSTER, 29, 9, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_714
-	person_event SPRITE_FRUIT_TREE, 43, 9, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a17f7, -1
-	person_event SPRITE_FRUIT_TREE, 9, 15, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a17f9, -1
-	person_event SPRITE_COOLTRAINER_F, 17, 6, $6, $0, 255, 255, $0, 0, CooltrainerFScript_0x1a17e6, -1
-	person_event SPRITE_POKE_BALL, 39, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a17f5, EVENT_7B8
+	person_event SPRITE_YOUNGSTER, 30, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x1a1673, EVENT_ROUTE_30_BATTLE
+	person_event SPRITE_YOUNGSTER, 32, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterJoey, EVENT_ROUTE_30_YOUNGSTER_JOEY
+	person_event SPRITE_YOUNGSTER, 27, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerYoungsterMikey, -1
+	person_event SPRITE_BUG_CATCHER, 11, 5, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherDon, -1
+	person_event SPRITE_YOUNGSTER, 34, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x1a17d2, -1
+	person_event SPRITE_MONSTER, 28, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
+	person_event SPRITE_MONSTER, 29, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
+	person_event SPRITE_FRUIT_TREE, 43, 9, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a17f7, -1
+	person_event SPRITE_FRUIT_TREE, 9, 15, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a17f9, -1
+	person_event SPRITE_COOLTRAINER_F, 17, 6, OW_UP | $2, $0, -1, -1, $0, 0, CooltrainerFScript_0x1a17e6, -1
+	person_event SPRITE_POKE_BALL, 39, 12, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a17f5, EVENT_ROUTE_30_ANTIDOTE
--- a/maps/Route30BerrySpeechHouse.asm
+++ b/maps/Route30BerrySpeechHouse.asm
@@ -1,8 +1,8 @@
 Route30BerrySpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x196d64:
@@ -47,19 +47,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_ROUTE_30, MAP_ROUTE_30
 	warp_def $7, $3, 1, GROUP_ROUTE_30, MAP_ROUTE_30
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, Route30BerrySpeechHouseBookshelf
-	signpost 1, 1, $0, Route30BerrySpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, Route30BerrySpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, Route30BerrySpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $b0, 0, PokefanMScript_0x196d64, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x196d64, -1
--- a/maps/Route31.asm
+++ b/maps/Route31.asm
@@ -1,8 +1,8 @@
 Route31_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -15,30 +15,14 @@
 	return
 
 UnknownScript_0x1a5443:
-	specialphonecall $7
+	specialphonecall MOMCALL_WORRIED
 	return
 
 TrainerBug_catcherWade1:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_WADE
+	trainer EVENT_BEAT_BUG_CATCHER_WADE, BUG_CATCHER, WADE1, Bug_catcherWade1SeenText, Bug_catcherWade1BeatenText, $0000, Bug_catcherWade1Script
 
-	; trainer group && trainer id
-	db BUG_CATCHER, WADE1
-
-	; text when seen
-	dw Bug_catcherWade1SeenText
-
-	; text when trainer beaten
-	dw Bug_catcherWade1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherWade1Script
-
 Bug_catcherWade1Script:
-	writecode VAR_CALLERID, $10
+	writecode VAR_CALLERID, PHONE_BUG_CATCHER_WADE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_WADE
@@ -45,7 +29,7 @@
 	iftrue UnknownScript_0x1a5493
 	checkflag ENGINE_WADE_HAS_ITEM
 	iftrue UnknownScript_0x1a5507
-	checkcellnum $10
+	checkcellnum PHONE_BUG_CATCHER_WADE
 	iftrue UnknownScript_0x1a5558
 	checkevent EVENT_WADE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a547c
@@ -58,7 +42,7 @@
 UnknownScript_0x1a547c:
 	scall UnknownScript_0x1a5550
 UnknownScript_0x1a547f:
-	askforphonenumber $10
+	askforphonenumber PHONE_BUG_CATCHER_WADE
 	if_equal $1, UnknownScript_0x1a5560
 	if_equal $2, UnknownScript_0x1a555c
 	trainertotext BUG_CATCHER, WADE1, $0
@@ -252,7 +236,7 @@
 	end
 
 ReceivedSpearowMailText:
-	db "DARK CAVE leads",$4E
+	db "DARK CAVE leads", $4E
 	db "to another road@"
 
 YoungsterScript_0x1a55ed:
@@ -430,26 +414,26 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $6, $4, 3, GROUP_ROUTE_31_VIOLET_GATE, MAP_ROUTE_31_VIOLET_GATE
 	warp_def $7, $4, 4, GROUP_ROUTE_31_VIOLET_GATE, MAP_ROUTE_31_VIOLET_GATE
 	warp_def $5, $22, 1, GROUP_DARK_CAVE_VIOLET_ENTRANCE, MAP_DARK_CAVE_VIOLET_ENTRANCE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 5, 7, $0, MapRoute31Signpost0Script
-	signpost 5, 31, $0, MapRoute31Signpost1Script
+	signpost 5, 7, SIGNPOST_READ, MapRoute31Signpost0Script
+	signpost 5, 31, SIGNPOST_READ, MapRoute31Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_FISHER, 11, 21, $6, $0, 255, 255, $0, 0, FisherScript_0x1a5570, -1
-	person_event SPRITE_YOUNGSTER, 9, 13, $2, $11, 255, 255, $0, 0, YoungsterScript_0x1a55ed, -1
-	person_event SPRITE_BUG_CATCHER, 17, 25, $8, $0, 255, 255, $b2, 5, TrainerBug_catcherWade1, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 37, $2, $11, 255, 255, $0, 0, CooltrainerMScript_0x1a55f6, -1
-	person_event SPRITE_FRUIT_TREE, 11, 20, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a55f9, -1
-	person_event SPRITE_POKE_BALL, 9, 33, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a55fb, EVENT_6AE
-	person_event SPRITE_POKE_BALL, 19, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a55fd, EVENT_6AF
+	person_event SPRITE_FISHER, 11, 21, OW_UP | $2, $0, -1, -1, $0, 0, FisherScript_0x1a5570, -1
+	person_event SPRITE_YOUNGSTER, 9, 13, OW_DOWN | $2, $11, -1, -1, $0, 0, YoungsterScript_0x1a55ed, -1
+	person_event SPRITE_BUG_CATCHER, 17, 25, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 5, TrainerBug_catcherWade1, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 37, OW_DOWN | $2, $11, -1, -1, $0, 0, CooltrainerMScript_0x1a55f6, -1
+	person_event SPRITE_FRUIT_TREE, 11, 20, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a55f9, -1
+	person_event SPRITE_POKE_BALL, 9, 33, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a55fb, EVENT_ROUTE_31_POTION
+	person_event SPRITE_POKE_BALL, 19, 23, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a55fd, EVENT_ROUTE_31_POKE_BALL
--- a/maps/Route31VioletGate.asm
+++ b/maps/Route31VioletGate.asm
@@ -1,8 +1,8 @@
 Route31VioletGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x197634:
@@ -27,7 +27,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 8, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $5, $0, 9, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
@@ -34,13 +34,13 @@
 	warp_def $4, $9, 1, GROUP_ROUTE_31, MAP_ROUTE_31
 	warp_def $5, $9, 2, GROUP_ROUTE_31, MAP_ROUTE_31
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x197634, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 5, $3, $0, 255, 255, $90, 0, CooltrainerFScript_0x197637, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x197634, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 5, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerFScript_0x197637, -1
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -1,5 +1,5 @@
 Route32_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
@@ -7,7 +7,7 @@
 	dw UnknownScript_0x190461, $0000
 	dw UnknownScript_0x190462, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -133,24 +133,8 @@
 	end
 
 TrainerCamperRoland:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_ROLAND
+	trainer EVENT_BEAT_CAMPER_ROLAND, CAMPER, ROLAND, CamperRolandSeenText, CamperRolandBeatenText, $0000, CamperRolandScript
 
-	; trainer group && trainer id
-	db CAMPER, ROLAND
-
-	; text when seen
-	dw CamperRolandSeenText
-
-	; text when trainer beaten
-	dw CamperRolandBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperRolandScript
-
 CamperRolandScript:
 	talkaftercancel
 	loadfont
@@ -160,24 +144,8 @@
 	end
 
 TrainerFisherJustin:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_JUSTIN
+	trainer EVENT_BEAT_FISHER_JUSTIN, FISHER, JUSTIN, FisherJustinSeenText, FisherJustinBeatenText, $0000, FisherJustinScript
 
-	; trainer group && trainer id
-	db FISHER, JUSTIN
-
-	; text when seen
-	dw FisherJustinSeenText
-
-	; text when trainer beaten
-	dw FisherJustinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherJustinScript
-
 FisherJustinScript:
 	talkaftercancel
 	loadfont
@@ -187,26 +155,10 @@
 	end
 
 TrainerFisherRalph1:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_RALPH
+	trainer EVENT_BEAT_FISHER_RALPH, FISHER, RALPH1, FisherRalph1SeenText, FisherRalph1BeatenText, $0000, FisherRalph1Script
 
-	; trainer group && trainer id
-	db FISHER, RALPH1
-
-	; text when seen
-	dw FisherRalph1SeenText
-
-	; text when trainer beaten
-	dw FisherRalph1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherRalph1Script
-
 FisherRalph1Script:
-	writecode VAR_CALLERID, $11
+	writecode VAR_CALLERID, PHONE_FISHER_RALPH
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_RALPH
@@ -213,7 +165,7 @@
 	iftrue UnknownScript_0x19057d
 	checkflag ENGINE_SPECIAL_WILDDATA
 	iftrue UnknownScript_0x1905f1
-	checkcellnum $11
+	checkcellnum PHONE_FISHER_RALPH
 	iftrue UnknownScript_0x190603
 	checkevent EVENT_RALPH_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x190566
@@ -226,7 +178,7 @@
 UnknownScript_0x190566:
 	scall UnknownScript_0x1905fb
 UnknownScript_0x190569:
-	askforphonenumber $11
+	askforphonenumber PHONE_FISHER_RALPH
 	if_equal $1, UnknownScript_0x19060b
 	if_equal $2, UnknownScript_0x190607
 	trainertotext FISHER, RALPH1, $0
@@ -328,24 +280,8 @@
 	end
 
 TrainerFisherHenry:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_HENRY
+	trainer EVENT_BEAT_FISHER_HENRY, FISHER, HENRY, FisherHenrySeenText, FisherHenryBeatenText, $0000, FisherHenryScript
 
-	; trainer group && trainer id
-	db FISHER, HENRY
-
-	; text when seen
-	dw FisherHenrySeenText
-
-	; text when trainer beaten
-	dw FisherHenryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherHenryScript
-
 FisherHenryScript:
 	talkaftercancel
 	loadfont
@@ -355,31 +291,15 @@
 	end
 
 TrainerPicnickerLiz1:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_LIZ
+	trainer EVENT_BEAT_PICNICKER_LIZ, PICNICKER, LIZ1, PicnickerLiz1SeenText, PicnickerLiz1BeatenText, $0000, PicnickerLiz1Script
 
-	; trainer group && trainer id
-	db PICNICKER, LIZ1
-
-	; text when seen
-	dw PicnickerLiz1SeenText
-
-	; text when trainer beaten
-	dw PicnickerLiz1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerLiz1Script
-
 PicnickerLiz1Script:
-	writecode VAR_CALLERID, $12
+	writecode VAR_CALLERID, PHONE_PICNICKER_LIZ
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_LIZ
 	iftrue UnknownScript_0x19066d
-	checkcellnum $12
+	checkcellnum PHONE_PICNICKER_LIZ
 	iftrue UnknownScript_0x1906ed
 	checkevent EVENT_LIZ_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x190656
@@ -392,7 +312,7 @@
 UnknownScript_0x190656:
 	scall UnknownScript_0x1906e5
 UnknownScript_0x190659:
-	askforphonenumber $12
+	askforphonenumber PHONE_PICNICKER_LIZ
 	if_equal $1, UnknownScript_0x1906f5
 	if_equal $2, UnknownScript_0x1906f1
 	trainertotext PICNICKER, LIZ1, $0
@@ -488,24 +408,8 @@
 	end
 
 TrainerYoungsterAlbert:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_ALBERT
+	trainer EVENT_BEAT_YOUNGSTER_ALBERT, YOUNGSTER, ALBERT, YoungsterAlbertSeenText, YoungsterAlbertBeatenText, $0000, YoungsterAlbertScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, ALBERT
-
-	; text when seen
-	dw YoungsterAlbertSeenText
-
-	; text when trainer beaten
-	dw YoungsterAlbertBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterAlbertScript
-
 YoungsterAlbertScript:
 	talkaftercancel
 	loadfont
@@ -515,24 +419,8 @@
 	end
 
 TrainerYoungsterGordon:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_GORDON
+	trainer EVENT_BEAT_YOUNGSTER_GORDON, YOUNGSTER, GORDON, YoungsterGordonSeenText, YoungsterGordonBeatenText, $0000, YoungsterGordonScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, GORDON
-
-	; text when seen
-	dw YoungsterGordonSeenText
-
-	; text when trainer beaten
-	dw YoungsterGordonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterGordonScript
-
 YoungsterGordonScript:
 	talkaftercancel
 	loadfont
@@ -542,24 +430,8 @@
 	end
 
 TrainerBird_keeperPeter:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_PETER
+	trainer EVENT_BEAT_BIRD_KEEPER_PETER, BIRD_KEEPER, PETER, Bird_keeperPeterSeenText, Bird_keeperPeterBeatenText, $0000, Bird_keeperPeterScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, PETER
-
-	; text when seen
-	dw Bird_keeperPeterSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperPeterBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperPeterScript
-
 Bird_keeperPeterScript:
 	talkaftercancel
 	loadfont
@@ -623,13 +495,11 @@
 	jumpstd pokecentersign
 
 MapRoute32SignpostItem4:
-	dw $00a5
-	db GREAT_BALL
+	dwb EVENT_ROUTE_32_HIDDEN_GREAT_BALL, GREAT_BALL
 	
 
 MapRoute32SignpostItem5:
-	dw $00a6
-	db SUPER_POTION
+	dwb EVENT_ROUTE_32_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
 MovementData_0x190789:
@@ -1053,7 +923,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $49, $b, 1, GROUP_ROUTE_32_POKECENTER_1F, MAP_ROUTE_32_POKECENTER_1F
 	warp_def $2, $4, 3, GROUP_ROUTE_32_RUINS_OF_ALPH_GATE, MAP_ROUTE_32_RUINS_OF_ALPH_GATE
@@ -1060,33 +930,33 @@
 	warp_def $3, $4, 4, GROUP_ROUTE_32_RUINS_OF_ALPH_GATE, MAP_ROUTE_32_RUINS_OF_ALPH_GATE
 	warp_def $4f, $6, 4, GROUP_UNION_CAVE_1F, MAP_UNION_CAVE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $8, $12, $0, UnknownScript_0x1904ab, $0, $0
 	xy_trigger 1, $47, $7, $0, UnknownScript_0x1904e9, $0, $0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 5, 13, $0, Route32Sign
-	signpost 1, 9, $0, Route32RuinsSign
-	signpost 84, 10, $0, Route32UnionCaveSign
-	signpost 73, 12, $0, Route32PokeCenterSign
-	signpost 67, 12, $7, MapRoute32SignpostItem4
-	signpost 40, 11, $7, MapRoute32SignpostItem5
+	signpost 5, 13, SIGNPOST_READ, Route32Sign
+	signpost 1, 9, SIGNPOST_READ, Route32RuinsSign
+	signpost 84, 10, SIGNPOST_READ, Route32UnionCaveSign
+	signpost 73, 12, SIGNPOST_READ, Route32PokeCenterSign
+	signpost 67, 12, SIGNPOST_ITEM, MapRoute32SignpostItem4
+	signpost 40, 11, SIGNPOST_ITEM, MapRoute32SignpostItem5
 
-	; people-events
+.PersonEvents:
 	db 14
-	person_event SPRITE_FISHER, 53, 12, $6, $0, 255, 255, $a2, 1, TrainerFisherJustin, -1
-	person_event SPRITE_FISHER, 60, 16, $7, $0, 255, 255, $a2, 3, TrainerFisherRalph1, -1
-	person_event SPRITE_FISHER, 52, 10, $8, $0, 255, 255, $a2, 1, TrainerFisherHenry, -1
-	person_event SPRITE_YOUNGSTER, 26, 16, $9, $0, 255, 255, $92, 3, TrainerYoungsterAlbert, -1
-	person_event SPRITE_YOUNGSTER, 67, 8, $a, $0, 255, 255, $92, 3, TrainerYoungsterGordon, -1
-	person_event SPRITE_YOUNGSTER, 49, 7, $7, $0, 255, 255, $a2, 3, TrainerCamperRoland, -1
-	person_event SPRITE_LASS, 34, 14, $8, $0, 255, 255, $a2, 1, TrainerPicnickerLiz1, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 23, $8, $0, 255, 255, $0, 0, CooltrainerMScript_0x19046f, -1
-	person_event SPRITE_YOUNGSTER, 86, 15, $7, $0, 255, 255, $92, 3, TrainerBird_keeperPeter, -1
-	person_event SPRITE_FISHER, 74, 11, $6, $0, 255, 255, $0, 0, FisherScript_0x1904f2, EVENT_6FC
-	person_event SPRITE_POKE_BALL, 57, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x190773, EVENT_6B0
-	person_event SPRITE_FISHER, 17, 19, $9, $0, 255, 255, $0, 0, FisherScript_0x1904ce, -1
-	person_event SPRITE_LASS, 71, 16, $8, $0, 255, 255, $0, 0, FriedaScript, EVENT_758
-	person_event SPRITE_POKE_BALL, 34, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x190775, EVENT_6B1
+	person_event SPRITE_FISHER, 53, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherJustin, -1
+	person_event SPRITE_FISHER, 60, 16, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherRalph1, -1
+	person_event SPRITE_FISHER, 52, 10, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherHenry, -1
+	person_event SPRITE_YOUNGSTER, 26, 16, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterAlbert, -1
+	person_event SPRITE_YOUNGSTER, 67, 8, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterGordon, -1
+	person_event SPRITE_YOUNGSTER, 49, 7, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperRoland, -1
+	person_event SPRITE_LASS, 34, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerLiz1, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 23, OW_LEFT | $0, $0, -1, -1, $0, 0, CooltrainerMScript_0x19046f, -1
+	person_event SPRITE_YOUNGSTER, 86, 15, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperPeter, -1
+	person_event SPRITE_FISHER, 74, 11, OW_UP | $2, $0, -1, -1, $0, 0, FisherScript_0x1904f2, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_POKE_BALL, 57, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x190773, EVENT_ROUTE_32_GREAT_BALL
+	person_event SPRITE_FISHER, 17, 19, OW_LEFT | $1, $0, -1, -1, $0, 0, FisherScript_0x1904ce, -1
+	person_event SPRITE_LASS, 71, 16, OW_LEFT | $0, $0, -1, -1, $0, 0, FriedaScript, EVENT_ROUTE_32_FRIEDA_OF_FRIDAY
+	person_event SPRITE_POKE_BALL, 34, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x190775, EVENT_ROUTE_32_REPEL
--- a/maps/Route32PokeCenter1F.asm
+++ b/maps/Route32PokeCenter1F.asm
@@ -1,8 +1,8 @@
 Route32PokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x69b52:
@@ -93,20 +93,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_ROUTE_32, MAP_ROUTE_32
 	warp_def $7, $4, 1, GROUP_ROUTE_32, MAP_ROUTE_32
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x69b52, -1
-	person_event SPRITE_FISHING_GURU, 8, 5, $6, $0, 255, 255, $a0, 0, FishingGuruScript_0x69b55, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $6, $0, 255, 255, $80, 0, CooltrainerFScript_0x69b80, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x69b52, -1
+	person_event SPRITE_FISHING_GURU, 8, 5, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingGuruScript_0x69b55, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x69b80, -1
--- a/maps/Route32RuinsofAlphGate.asm
+++ b/maps/Route32RuinsofAlphGate.asm
@@ -1,8 +1,8 @@
 Route32RuinsofAlphGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x69a2d:
@@ -45,7 +45,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 10, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $5, $0, 11, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
@@ -52,14 +52,14 @@
 	warp_def $4, $9, 2, GROUP_ROUTE_32, MAP_ROUTE_32
 	warp_def $5, $9, 3, GROUP_ROUTE_32, MAP_ROUTE_32
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x69a2d, -1
-	person_event SPRITE_POKEFAN_M, 6, 12, $4, $10, 255, 255, $b0, 0, PokefanMScript_0x69a30, -1
-	person_event SPRITE_YOUNGSTER, 10, 5, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x69a33, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x69a2d, -1
+	person_event SPRITE_POKEFAN_M, 6, 12, OW_UP | $0, $10, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x69a30, -1
+	person_event SPRITE_YOUNGSTER, 10, 5, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x69a33, -1
--- a/maps/Route33.asm
+++ b/maps/Route33.asm
@@ -1,8 +1,8 @@
 Route33_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 LassScript_0x1ac002:
@@ -9,26 +9,10 @@
 	jumptextfaceplayer UnknownText_0x1ac1e7
 
 TrainerHikerAnthony:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_ANTHONY
+	trainer EVENT_BEAT_HIKER_ANTHONY, HIKER, ANTHONY2, HikerAnthony2SeenText, HikerAnthony2BeatenText, $0000, HikerAnthony2Script
 
-	; trainer group && trainer id
-	db HIKER, ANTHONY2
-
-	; text when seen
-	dw HikerAnthony2SeenText
-
-	; text when trainer beaten
-	dw HikerAnthony2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerAnthony2Script
-
 HikerAnthony2Script:
-	writecode VAR_CALLERID, $13
+	writecode VAR_CALLERID, PHONE_HIKER_ANTHONY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ANTHONY
@@ -35,7 +19,7 @@
 	iftrue UnknownScript_0x1ac051
 	checkflag ENGINE_DUNSPARCE_SWARM
 	iftrue UnknownScript_0x1ac0c5
-	checkcellnum $13
+	checkcellnum PHONE_HIKER_ANTHONY
 	iftrue UnknownScript_0x1ac0d7
 	checkevent EVENT_ANTHONY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1ac03a
@@ -48,7 +32,7 @@
 UnknownScript_0x1ac03a:
 	scall UnknownScript_0x1ac0cf
 UnknownScript_0x1ac03d:
-	askforphonenumber $13
+	askforphonenumber PHONE_HIKER_ANTHONY
 	if_equal $1, UnknownScript_0x1ac0df
 	if_equal $2, UnknownScript_0x1ac0db
 	trainertotext HIKER, ANTHONY2, $0
@@ -209,19 +193,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $9, $b, 3, GROUP_UNION_CAVE_1F, MAP_UNION_CAVE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 11, 11, $0, MapRoute33Signpost0Script
+	signpost 11, 11, SIGNPOST_READ, MapRoute33Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKEFAN_M, 17, 10, $a, $0, 255, 255, $b2, 2, TrainerHikerAnthony, -1
-	person_event SPRITE_LASS, 20, 17, $2, $11, 255, 255, $90, 0, LassScript_0x1ac002, -1
-	person_event SPRITE_FRUIT_TREE, 20, 18, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1ac0ea, -1
+	person_event SPRITE_POKEFAN_M, 17, 10, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerAnthony, -1
+	person_event SPRITE_LASS, 20, 17, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x1ac002, -1
+	person_event SPRITE_FRUIT_TREE, 20, 18, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1ac0ea, -1
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -1,8 +1,8 @@
 Route34_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -12,39 +12,39 @@
 UnknownScript_0x78005:
 	checkflag ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
 	iftrue UnknownScript_0x78014
-	clearevent EVENT_6E5
-	setevent EVENT_6E6
+	clearevent EVENT_DAYCARE_MAN_IN_DAYCARE
+	setevent EVENT_DAYCARE_MAN_ON_ROUTE_34
 	jump UnknownScript_0x7801d
 
 UnknownScript_0x78014:
-	setevent EVENT_6E5
-	clearevent EVENT_6E6
+	setevent EVENT_DAYCARE_MAN_IN_DAYCARE
+	clearevent EVENT_DAYCARE_MAN_ON_ROUTE_34
 	jump UnknownScript_0x7801d
 
 UnknownScript_0x7801d:
 	checkflag ENGINE_DAYCARE_MAN_HAS_MON
 	iffalse UnknownScript_0x78029
-	clearevent EVENT_6E7
+	clearevent EVENT_DAYCARE_MON_1
 	jump UnknownScript_0x7802f
 
 UnknownScript_0x78029:
-	setevent EVENT_6E7
+	setevent EVENT_DAYCARE_MON_1
 	jump UnknownScript_0x7802f
 
 UnknownScript_0x7802f:
 	checkflag ENGINE_DAYCARE_LADY_HAS_MON
 	iffalse UnknownScript_0x78039
-	clearevent EVENT_6E8
+	clearevent EVENT_DAYCARE_MON_2
 	return
 
 UnknownScript_0x78039:
-	setevent EVENT_6E8
+	setevent EVENT_DAYCARE_MON_2
 	return
 
 GrampsScript_0x7803d:
 	faceplayer
 	loadfont
-	special Function16936
+	special Special_DayCareManOutside
 	closetext
 	loadmovesprites
 	if_equal $1, UnknownScript_0x7805a
@@ -76,26 +76,10 @@
 	end
 
 TrainerCamperTodd1:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_TODD
+	trainer EVENT_BEAT_CAMPER_TODD, CAMPER, TODD1, CamperTodd1SeenText, CamperTodd1BeatenText, $0000, CamperTodd1Script
 
-	; trainer group && trainer id
-	db CAMPER, TODD1
-
-	; text when seen
-	dw CamperTodd1SeenText
-
-	; text when trainer beaten
-	dw CamperTodd1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperTodd1Script
-
 CamperTodd1Script:
-	writecode VAR_CALLERID, $14
+	writecode VAR_CALLERID, PHONE_CAMPER_TODD
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_TODD
@@ -102,7 +86,7 @@
 	iftrue UnknownScript_0x780bd
 	checkflag ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
 	iftrue UnknownScript_0x78131
-	checkcellnum $14
+	checkcellnum PHONE_CAMPER_TODD
 	iftrue UnknownScript_0x78143
 	checkevent EVENT_TODD_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x780a6
@@ -115,7 +99,7 @@
 UnknownScript_0x780a6:
 	scall UnknownScript_0x7813b
 UnknownScript_0x780a9:
-	askforphonenumber $14
+	askforphonenumber PHONE_CAMPER_TODD
 	if_equal $1, UnknownScript_0x7814b
 	if_equal $2, UnknownScript_0x78147
 	trainertotext CAMPER, TODD1, $0
@@ -217,26 +201,10 @@
 	end
 
 TrainerPicnickerGina1:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_GINA
+	trainer EVENT_BEAT_PICNICKER_GINA, PICNICKER, GINA1, PicnickerGina1SeenText, PicnickerGina1BeatenText, $0000, PicnickerGina1Script
 
-	; trainer group && trainer id
-	db PICNICKER, GINA1
-
-	; text when seen
-	dw PicnickerGina1SeenText
-
-	; text when trainer beaten
-	dw PicnickerGina1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerGina1Script
-
 PicnickerGina1Script:
-	writecode VAR_CALLERID, $15
+	writecode VAR_CALLERID, PHONE_PICNICKER_GINA
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_GINA
@@ -243,7 +211,7 @@
 	iftrue UnknownScript_0x7819f
 	checkflag ENGINE_GINA_HAS_LEAF_STONE
 	iftrue UnknownScript_0x78213
-	checkcellnum $15
+	checkcellnum PHONE_PICNICKER_GINA
 	iftrue UnknownScript_0x78234
 	checkevent EVENT_GINA_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x78188
@@ -256,7 +224,7 @@
 UnknownScript_0x78188:
 	scall UnknownScript_0x7822c
 UnknownScript_0x7818b:
-	askforphonenumber $15
+	askforphonenumber PHONE_PICNICKER_GINA
 	if_equal $1, UnknownScript_0x7823c
 	if_equal $2, UnknownScript_0x78238
 	trainertotext PICNICKER, GINA1, $0
@@ -328,7 +296,7 @@
 	verbosegiveitem LEAF_STONE, 1
 	iffalse UnknownScript_0x78225
 	clearflag ENGINE_GINA_HAS_LEAF_STONE
-	setevent EVENT_100
+	setevent EVENT_GINA_GAVE_LEAF_STONE
 	jump UnknownScript_0x78234
 
 UnknownScript_0x78225:
@@ -402,24 +370,8 @@
 	end
 
 TrainerYoungsterSamuel:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_SAMUEL
+	trainer EVENT_BEAT_YOUNGSTER_SAMUEL, YOUNGSTER, SAMUEL, YoungsterSamuelSeenText, YoungsterSamuelBeatenText, $0000, YoungsterSamuelScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, SAMUEL
-
-	; text when seen
-	dw YoungsterSamuelSeenText
-
-	; text when trainer beaten
-	dw YoungsterSamuelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterSamuelScript
-
 YoungsterSamuelScript:
 	talkaftercancel
 	loadfont
@@ -429,24 +381,8 @@
 	end
 
 TrainerYoungsterIan:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_IAN
+	trainer EVENT_BEAT_YOUNGSTER_IAN, YOUNGSTER, IAN, YoungsterIanSeenText, YoungsterIanBeatenText, $0000, YoungsterIanScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, IAN
-
-	; text when seen
-	dw YoungsterIanSeenText
-
-	; text when trainer beaten
-	dw YoungsterIanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterIanScript
-
 YoungsterIanScript:
 	talkaftercancel
 	loadfont
@@ -456,24 +392,8 @@
 	end
 
 TrainerPokefanmBrandon:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_BRANDON
+	trainer EVENT_BEAT_POKEFANM_BRANDON, POKEFANM, BRANDON, PokefanmBrandonSeenText, PokefanmBrandonBeatenText, $0000, PokefanmBrandonScript
 
-	; trainer group && trainer id
-	db POKEFANM, BRANDON
-
-	; text when seen
-	dw PokefanmBrandonSeenText
-
-	; text when trainer beaten
-	dw PokefanmBrandonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmBrandonScript
-
 PokefanmBrandonScript:
 	talkaftercancel
 	loadfont
@@ -483,24 +403,8 @@
 	end
 
 TrainerCooltrainerfIrene:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_IRENE
+	trainer EVENT_BEAT_COOLTRAINERF_IRENE, COOLTRAINERF, IRENE, CooltrainerfIreneSeenText, CooltrainerfIreneBeatenText, $0000, CooltrainerfIreneScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, IRENE
-
-	; text when seen
-	dw CooltrainerfIreneSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfIreneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfIreneScript
-
 CooltrainerfIreneScript:
 	talkaftercancel
 	loadfont
@@ -518,24 +422,8 @@
 	end
 
 TrainerCooltrainerfJenn:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_JENN
+	trainer EVENT_BEAT_COOLTRAINERF_JENN, COOLTRAINERF, JENN, CooltrainerfJennSeenText, CooltrainerfJennBeatenText, $0000, CooltrainerfJennScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, JENN
-
-	; text when seen
-	dw CooltrainerfJennSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfJennBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfJennScript
-
 CooltrainerfJennScript:
 	talkaftercancel
 	loadfont
@@ -553,24 +441,8 @@
 	end
 
 TrainerCooltrainerfKate:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_KATE
+	trainer EVENT_BEAT_COOLTRAINERF_KATE, COOLTRAINERF, KATE, CooltrainerfKateSeenText, CooltrainerfKateBeatenText, $0000, CooltrainerfKateScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, KATE
-
-	; text when seen
-	dw CooltrainerfKateSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfKateBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfKateScript
-
 CooltrainerfKateScript:
 	talkaftercancel
 	loadfont
@@ -604,13 +476,11 @@
 	db NUGGET, 1
 
 MapRoute34SignpostItem3:
-	dw $00a7
-	db RARE_CANDY
+	dwb EVENT_ROUTE_34_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
 MapRoute34SignpostItem4:
-	dw $00a8
-	db SUPER_POTION
+	dwb EVENT_ROUTE_34_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
 MovementData_0x78333:
@@ -884,37 +754,37 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $25, $d, 1, GROUP_ROUTE_34_ILEX_FOREST_GATE, MAP_ROUTE_34_ILEX_FOREST_GATE
 	warp_def $25, $e, 2, GROUP_ROUTE_34_ILEX_FOREST_GATE, MAP_ROUTE_34_ILEX_FOREST_GATE
-	warp_def $e, $b, 1, GROUP_DAY_CARE, MAP_DAY_CARE
-	warp_def $f, $b, 2, GROUP_DAY_CARE, MAP_DAY_CARE
-	warp_def $f, $d, 3, GROUP_DAY_CARE, MAP_DAY_CARE
+	warp_def $e, $b, 1, GROUP_DAYCARE, MAP_DAYCARE
+	warp_def $f, $b, 2, GROUP_DAYCARE, MAP_DAYCARE
+	warp_def $f, $d, 3, GROUP_DAYCARE, MAP_DAYCARE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 6, 12, $0, MapRoute34Signpost0Script
-	signpost 33, 13, $0, MapRoute34Signpost1Script
-	signpost 13, 10, $0, MapRoute34Signpost2Script
-	signpost 32, 8, $7, MapRoute34SignpostItem3
-	signpost 19, 17, $7, MapRoute34SignpostItem4
+	signpost 6, 12, SIGNPOST_READ, MapRoute34Signpost0Script
+	signpost 33, 13, SIGNPOST_READ, MapRoute34Signpost1Script
+	signpost 13, 10, SIGNPOST_READ, MapRoute34Signpost2Script
+	signpost 32, 8, SIGNPOST_ITEM, MapRoute34SignpostItem3
+	signpost 19, 17, SIGNPOST_ITEM, MapRoute34SignpostItem4
 
-	; people-events
+.PersonEvents:
 	db 13
-	person_event SPRITE_YOUNGSTER, 11, 17, $8, $0, 255, 255, $a2, 5, TrainerCamperTodd1, -1
-	person_event SPRITE_YOUNGSTER, 36, 19, $6, $0, 255, 255, $92, 3, TrainerYoungsterSamuel, -1
-	person_event SPRITE_YOUNGSTER, 24, 15, $6, $0, 255, 255, $92, 3, TrainerYoungsterIan, -1
-	person_event SPRITE_LASS, 30, 14, $9, $0, 255, 255, $a2, 3, TrainerPicnickerGina1, -1
-	person_event SPRITE_OFFICER, 15, 13, $6, $0, 255, 255, $90, 0, OfficerScript_0x7824c, -1
-	person_event SPRITE_POKEFAN_M, 32, 22, $1e, $0, 255, 255, $82, 3, TrainerPokefanmBrandon, -1
-	person_event SPRITE_GRAMPS, 20, 19, $6, $0, 255, 255, $0, 0, GrampsScript_0x7803d, EVENT_6E6
-	person_event SPRITE_DAYCARE_MON_1, 22, 18, $16, $22, 255, 255, $0, 0, DaycareMon1Script_0x78065, EVENT_6E7
-	person_event SPRITE_DAYCARE_MON_2, 23, 21, $16, $22, 255, 255, $0, 0, DaycareMon2Script_0x7806b, EVENT_6E8
-	person_event SPRITE_COOLTRAINER_F, 52, 15, $8, $0, 255, 255, $82, 5, TrainerCooltrainerfIrene, -1
-	person_event SPRITE_COOLTRAINER_F, 52, 7, $9, $0, 255, 255, $82, 3, TrainerCooltrainerfJenn, -1
-	person_event SPRITE_COOLTRAINER_F, 55, 10, $7, $0, 255, 255, $82, 2, TrainerCooltrainerfKate, -1
-	person_event SPRITE_POKE_BALL, 34, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x7832b, EVENT_7BC
+	person_event SPRITE_YOUNGSTER, 11, 17, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerCamperTodd1, -1
+	person_event SPRITE_YOUNGSTER, 36, 19, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterSamuel, -1
+	person_event SPRITE_YOUNGSTER, 24, 15, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterIan, -1
+	person_event SPRITE_LASS, 30, 14, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPicnickerGina1, -1
+	person_event SPRITE_OFFICER, 15, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x7824c, -1
+	person_event SPRITE_POKEFAN_M, 32, 22, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmBrandon, -1
+	person_event SPRITE_GRAMPS, 20, 19, OW_UP | $2, $0, -1, -1, $0, 0, GrampsScript_0x7803d, EVENT_DAYCARE_MAN_ON_ROUTE_34
+	person_event SPRITE_DAYCARE_MON_1, 22, 18, OW_UP | $12, $22, -1, -1, $0, 0, DaycareMon1Script_0x78065, EVENT_DAYCARE_MON_1
+	person_event SPRITE_DAYCARE_MON_2, 23, 21, OW_UP | $12, $22, -1, -1, $0, 0, DaycareMon2Script_0x7806b, EVENT_DAYCARE_MON_2
+	person_event SPRITE_COOLTRAINER_F, 52, 15, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerCooltrainerfIrene, -1
+	person_event SPRITE_COOLTRAINER_F, 52, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfJenn, -1
+	person_event SPRITE_COOLTRAINER_F, 55, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainerfKate, -1
+	person_event SPRITE_POKE_BALL, 34, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7832b, EVENT_ROUTE_34_NUGGET
--- a/maps/Route34IlexForestGate.asm
+++ b/maps/Route34IlexForestGate.asm
@@ -1,8 +1,8 @@
 Route34IlexForestGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -24,7 +24,7 @@
 UnknownScript_0x62d3d:
 	checkevent EVENT_FOREST_IS_RESTLESS
 	iffalse UnknownScript_0x62d62
-	showemote $0, $5, 20
+	showemote EMOTE_SHOCK, $5, 20
 	spriteface $5, LEFT
 	spriteface $0, RIGHT
 	follow $0, $5
@@ -136,7 +136,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 1, GROUP_ROUTE_34, MAP_ROUTE_34
 	warp_def $0, $5, 2, GROUP_ROUTE_34, MAP_ROUTE_34
@@ -143,16 +143,16 @@
 	warp_def $7, $4, 1, GROUP_ILEX_FOREST, MAP_ILEX_FOREST
 	warp_def $7, $5, 1, GROUP_ILEX_FOREST, MAP_ILEX_FOREST
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $7, $4, $0, UnknownScript_0x62d3d, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_TEACHER, 7, 13, $8, $0, 255, 255, $90, 0, TeacherScript_0x62d63, EVENT_6EA
-	person_event SPRITE_BUTTERFREE, 8, 13, $16, $0, 255, 255, $80, 0, ButterfreeScript_0x62d8a, -1
-	person_event SPRITE_LASS, 8, 7, $4, $10, 255, 255, $a0, 0, LassScript_0x62d94, EVENT_6EB
-	person_event SPRITE_TEACHER, 11, 9, $7, $0, 255, 255, $90, 0, TeacherScript_0x62d63, EVENT_6EC
+	person_event SPRITE_TEACHER, 7, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_BEHIND_COUNTER
+	person_event SPRITE_BUTTERFREE, 8, 13, OW_UP | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ButterfreeScript_0x62d8a, -1
+	person_event SPRITE_LASS, 8, 7, OW_UP | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x62d94, EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
+	person_event SPRITE_TEACHER, 11, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_IN_WALKWAY
--- a/maps/Route35.asm
+++ b/maps/Route35.asm
@@ -1,29 +1,13 @@
 Route35_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBird_keeperBryan:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BRYAN
+	trainer EVENT_BEAT_BIRD_KEEPER_BRYAN, BIRD_KEEPER, BRYAN, Bird_keeperBryanSeenText, Bird_keeperBryanBeatenText, $0000, Bird_keeperBryanScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, BRYAN
-
-	; text when seen
-	dw Bird_keeperBryanSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBryanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBryanScript
-
 Bird_keeperBryanScript:
 	talkaftercancel
 	loadfont
@@ -33,29 +17,13 @@
 	end
 
 TrainerJugglerIrwin:
-	; bit/flag number
-	dw EVENT_BEAT_JUGGLER_IRWIN
+	trainer EVENT_BEAT_JUGGLER_IRWIN, JUGGLER, IRWIN1, JugglerIrwin1SeenText, JugglerIrwin1BeatenText, $0000, JugglerIrwin1Script
 
-	; trainer group && trainer id
-	db JUGGLER, IRWIN1
-
-	; text when seen
-	dw JugglerIrwin1SeenText
-
-	; text when trainer beaten
-	dw JugglerIrwin1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw JugglerIrwin1Script
-
 JugglerIrwin1Script:
-	writecode VAR_CALLERID, $16
+	writecode VAR_CALLERID, PHONE_JUGGLER_IRWIN
 	talkaftercancel
 	loadfont
-	checkcellnum $16
+	checkcellnum PHONE_JUGGLER_IRWIN
 	iftrue UnknownScript_0x19c90f
 	checkevent EVENT_IRWIN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19c8ec
@@ -68,7 +36,7 @@
 UnknownScript_0x19c8ec:
 	scall UnknownScript_0x19c907
 UnknownScript_0x19c8ef:
-	askforphonenumber $16
+	askforphonenumber PHONE_JUGGLER_IRWIN
 	if_equal $1, UnknownScript_0x19c917
 	if_equal $2, UnknownScript_0x19c913
 	trainertotext JUGGLER, IRWIN1, $0
@@ -104,24 +72,8 @@
 	end
 
 TrainerCamperIvan:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_IVAN
+	trainer EVENT_BEAT_CAMPER_IVAN, CAMPER, IVAN, CamperIvanSeenText, CamperIvanBeatenText, $0000, CamperIvanScript
 
-	; trainer group && trainer id
-	db CAMPER, IVAN
-
-	; text when seen
-	dw CamperIvanSeenText
-
-	; text when trainer beaten
-	dw CamperIvanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperIvanScript
-
 CamperIvanScript:
 	talkaftercancel
 	loadfont
@@ -131,24 +83,8 @@
 	end
 
 TrainerCamperElliot:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_ELLIOT
+	trainer EVENT_BEAT_CAMPER_ELLIOT, CAMPER, ELLIOT, CamperElliotSeenText, CamperElliotBeatenText, $0000, CamperElliotScript
 
-	; trainer group && trainer id
-	db CAMPER, ELLIOT
-
-	; text when seen
-	dw CamperElliotSeenText
-
-	; text when trainer beaten
-	dw CamperElliotBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperElliotScript
-
 CamperElliotScript:
 	talkaftercancel
 	loadfont
@@ -158,24 +94,8 @@
 	end
 
 TrainerPicnickerBrooke:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_BROOKE
+	trainer EVENT_BEAT_PICNICKER_BROOKE, PICNICKER, BROOKE, PicnickerBrookeSeenText, PicnickerBrookeBeatenText, $0000, PicnickerBrookeScript
 
-	; trainer group && trainer id
-	db PICNICKER, BROOKE
-
-	; text when seen
-	dw PicnickerBrookeSeenText
-
-	; text when trainer beaten
-	dw PicnickerBrookeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerBrookeScript
-
 PicnickerBrookeScript:
 	talkaftercancel
 	loadfont
@@ -185,24 +105,8 @@
 	end
 
 TrainerPicnickerKim:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_KIM
+	trainer EVENT_BEAT_PICNICKER_KIM, PICNICKER, KIM, PicnickerKimSeenText, PicnickerKimBeatenText, $0000, PicnickerKimScript
 
-	; trainer group && trainer id
-	db PICNICKER, KIM
-
-	; text when seen
-	dw PicnickerKimSeenText
-
-	; text when trainer beaten
-	dw PicnickerKimBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerKimScript
-
 PicnickerKimScript:
 	talkaftercancel
 	loadfont
@@ -212,26 +116,10 @@
 	end
 
 TrainerBug_catcherArnie1:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_ARNIE
+	trainer EVENT_BEAT_BUG_CATCHER_ARNIE, BUG_CATCHER, ARNIE1, Bug_catcherArnie1SeenText, Bug_catcherArnie1BeatenText, $0000, Bug_catcherArnie1Script
 
-	; trainer group && trainer id
-	db BUG_CATCHER, ARNIE1
-
-	; text when seen
-	dw Bug_catcherArnie1SeenText
-
-	; text when trainer beaten
-	dw Bug_catcherArnie1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherArnie1Script
-
 Bug_catcherArnie1Script:
-	writecode VAR_CALLERID, $17
+	writecode VAR_CALLERID, PHONE_BUG_CATCHER_ARNIE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ARNIE
@@ -238,7 +126,7 @@
 	iftrue UnknownScript_0x19c9bb
 	checkflag ENGINE_YANMA_SWARM
 	iftrue UnknownScript_0x19ca2f
-	checkcellnum $17
+	checkcellnum PHONE_BUG_CATCHER_ARNIE
 	iftrue UnknownScript_0x19c90f
 	checkevent EVENT_ARNIE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19c9a4
@@ -251,7 +139,7 @@
 UnknownScript_0x19c9a4:
 	scall UnknownScript_0x19c907
 UnknownScript_0x19c9a7:
-	askforphonenumber $17
+	askforphonenumber PHONE_BUG_CATCHER_ARNIE
 	if_equal $1, UnknownScript_0x19c917
 	if_equal $2, UnknownScript_0x19c913
 	trainertotext BUG_CATCHER, ARNIE1, $0
@@ -325,24 +213,8 @@
 	end
 
 TrainerFirebreatherWalt:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_WALT
+	trainer EVENT_BEAT_FIREBREATHER_WALT, FIREBREATHER, WALT, FirebreatherWaltSeenText, FirebreatherWaltBeatenText, $0000, FirebreatherWaltScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, WALT
-
-	; text when seen
-	dw FirebreatherWaltSeenText
-
-	; text when trainer beaten
-	dw FirebreatherWaltBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherWaltScript
-
 FirebreatherWaltScript:
 	talkaftercancel
 	loadfont
@@ -581,30 +453,30 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $21, $9, 1, GROUP_ROUTE_35_GOLDENROD_GATE, MAP_ROUTE_35_GOLDENROD_GATE
 	warp_def $21, $a, 2, GROUP_ROUTE_35_GOLDENROD_GATE, MAP_ROUTE_35_GOLDENROD_GATE
 	warp_def $5, $3, 3, GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 1, $0, MapRoute35Signpost1Script
-	signpost 31, 11, $0, MapRoute35Signpost1Script
+	signpost 7, 1, SIGNPOST_READ, MapRoute35Signpost1Script
+	signpost 31, 11, SIGNPOST_READ, MapRoute35Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_YOUNGSTER, 23, 8, $a, $0, 255, 255, $a2, 2, TrainerCamperIvan, -1
-	person_event SPRITE_YOUNGSTER, 24, 12, $6, $0, 255, 255, $a2, 3, TrainerCamperElliot, -1
-	person_event SPRITE_LASS, 24, 11, $6, $0, 255, 255, $a2, 3, TrainerPicnickerBrooke, -1
-	person_event SPRITE_LASS, 30, 14, $a, $0, 255, 255, $a2, 1, TrainerPicnickerKim, -1
-	person_event SPRITE_YOUNGSTER, 32, 18, $6, $0, 255, 255, $92, 0, TrainerBird_keeperBryan, -1
-	person_event SPRITE_FISHER, 14, 6, $1e, $0, 255, 255, $82, 2, TrainerFirebreatherWalt, -1
-	person_event SPRITE_BUG_CATCHER, 11, 20, $6, $2, 255, 255, $b2, 3, TrainerBug_catcherArnie1, -1
-	person_event SPRITE_SUPER_NERD, 14, 9, $a, $0, 255, 255, $92, 2, TrainerJugglerIrwin, -1
-	person_event SPRITE_OFFICER, 10, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x19ca49, -1
-	person_event SPRITE_FRUIT_TREE, 29, 6, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19ca7e, -1
-	person_event SPRITE_POKE_BALL, 20, 17, $1, $0, 255, 255, $1, 0, ItemFragment_0x19ca7c, EVENT_6B2
+	person_event SPRITE_YOUNGSTER, 23, 8, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerCamperIvan, -1
+	person_event SPRITE_YOUNGSTER, 24, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperElliot, -1
+	person_event SPRITE_LASS, 24, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPicnickerBrooke, -1
+	person_event SPRITE_LASS, 30, 14, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerKim, -1
+	person_event SPRITE_YOUNGSTER, 32, 18, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerBird_keeperBryan, -1
+	person_event SPRITE_FISHER, 14, 6, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerFirebreatherWalt, -1
+	person_event SPRITE_BUG_CATCHER, 11, 20, OW_UP | $2, $2, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherArnie1, -1
+	person_event SPRITE_SUPER_NERD, 14, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerJugglerIrwin, -1
+	person_event SPRITE_OFFICER, 10, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x19ca49, -1
+	person_event SPRITE_FRUIT_TREE, 29, 6, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19ca7e, -1
+	person_event SPRITE_POKE_BALL, 20, 17, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19ca7c, EVENT_ROUTE_35_TM_ROLLOUT
--- a/maps/Route35Goldenrodgate.asm
+++ b/maps/Route35Goldenrodgate.asm
@@ -1,8 +1,8 @@
 Route35Goldenrodgate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x69d37:
@@ -194,7 +194,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 1, GROUP_ROUTE_35, MAP_ROUTE_35
 	warp_def $0, $5, 2, GROUP_ROUTE_35, MAP_ROUTE_35
@@ -201,14 +201,14 @@
 	warp_def $7, $4, 12, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $7, $5, 12, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x69d37, -1
-	person_event SPRITE_POKEFAN_F, 8, 10, $4, $10, 255, 255, $90, 0, PokefanFScript_0x69dc6, -1
-	person_event SPRITE_FISHER, 6, 7, $3, $0, 255, 255, $a0, 0, FisherScript_0x69dda, -1
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x69d37, -1
+	person_event SPRITE_POKEFAN_F, 8, 10, OW_UP | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanFScript_0x69dc6, -1
+	person_event SPRITE_FISHER, 6, 7, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x69dda, -1
--- a/maps/Route35NationalParkgate.asm
+++ b/maps/Route35NationalParkgate.asm
@@ -1,60 +1,60 @@
 Route35NationalParkgate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
-	dw UnknownScript_0x6a19d, $0000
-	dw UnknownScript_0x6a19e, $0000
-	dw UnknownScript_0x6a19f, $0000
+	dw Route35NationalParkgate_Trigger1, $0000
+	dw Route35NationalParkgate_Trigger2, $0000
+	dw Route35NationalParkgate_Trigger3, $0000
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
 
-	dbw 5, UnknownScript_0x6a1a3
+	dbw 5, Route35NationalParkgate_CheckIfStillInContest
 
-	dbw 2, UnknownScript_0x6a1af
+	dbw 2, Route35NationalParkgate_CheckIfContestDay
 
-UnknownScript_0x6a19d:
+Route35NationalParkgate_Trigger1:
 	end
 
-UnknownScript_0x6a19e:
+Route35NationalParkgate_Trigger2:
 	end
 
-UnknownScript_0x6a19f:
-	priorityjump UnknownScript_0x6a1d1
+Route35NationalParkgate_Trigger3:
+	priorityjump Route35NationalParkGate_LeavingContestEarly
 	end
 
-UnknownScript_0x6a1a3:
+Route35NationalParkgate_CheckIfStillInContest:
 	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue UnknownScript_0x6a1ac
+	iftrue Route35NationalParkgate_Yes
 	dotrigger $0
 	return
 
-UnknownScript_0x6a1ac:
+Route35NationalParkgate_Yes:
 	dotrigger $2
 	return
 
-UnknownScript_0x6a1af:
+Route35NationalParkgate_CheckIfContestDay:
 	checkcode VAR_WEEKDAY
-	if_equal TUESDAY, UnknownScript_0x6a1ca
-	if_equal THURSDAY, UnknownScript_0x6a1ca
-	if_equal SATURDAY, UnknownScript_0x6a1ca
+	if_equal TUESDAY, Route35NationalParkgate_IsContestDay
+	if_equal THURSDAY, Route35NationalParkgate_IsContestDay
+	if_equal SATURDAY, Route35NationalParkgate_IsContestDay
 	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue UnknownScript_0x6a1ac
+	iftrue Route35NationalParkgate_Yes
 	disappear $2
 	appear $3
 	appear $4
 	return
 
-UnknownScript_0x6a1ca:
+Route35NationalParkgate_IsContestDay:
 	appear $2
 	disappear $3
 	disappear $4
 	return
 
-UnknownScript_0x6a1d1:
+Route35NationalParkGate_LeavingContestEarly:
 	applymovement $0, MovementData_0x6a2e2
 	spriteface $2, RIGHT
 	loadfont
@@ -63,19 +63,19 @@
 	RAM2MEM $0
 	writetext UnknownText_0x6a79a
 	yesorno
-	iffalse UnknownScript_0x6a1ee
+	iffalse Route35NationalParkgate_GoBackIn
 	writetext UnknownText_0x6a7db
 	closetext
 	loadmovesprites
 	jumpstd bugcontestresultswarp
 
-UnknownScript_0x6a1ee:
+Route35NationalParkgate_GoBackIn:
 	writetext UnknownText_0x6a823
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x6a261
+	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
 	warpfacing $1, GROUP_NATIONAL_PARK_BUG_CONTEST, MAP_NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
@@ -82,23 +82,23 @@
 
 OfficerScript_0x6a204:
 	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, UnknownScript_0x6a2c7
-	if_equal MONDAY, UnknownScript_0x6a2c7
-	if_equal WEDNESDAY, UnknownScript_0x6a2c7
-	if_equal FRIDAY, UnknownScript_0x6a2c7
+	if_equal SUNDAY, Route35NationalParkgate_NoContestToday
+	if_equal MONDAY, Route35NationalParkgate_NoContestToday
+	if_equal WEDNESDAY, Route35NationalParkgate_NoContestToday
+	if_equal FRIDAY, Route35NationalParkgate_NoContestToday
 	faceplayer
 	loadfont
-	checkflag ENGINE_51
-	iftrue UnknownScript_0x6a2c1
-	scall UnknownScript_0x6a2de
+	checkflag ENGINE_DAILY_BUG_CONTEST
+	iftrue Route35NationalParkgate_ContestIsOver
+	scall Route35NationalParkgate_GetDayOfWeek
 	writetext UnknownText_0x6a2eb
 	yesorno
-	iffalse UnknownScript_0x6a2a3
+	iffalse Route35NationalParkgate_DeclinedToParticipate
 	checkcode VAR_PARTYCOUNT
-	if_greater_than $1, UnknownScript_0x6a271
-	special Function13a12
-	clearevent EVENT_308
-UnknownScript_0x6a234:
+	if_greater_than $1, Route35NationalParkgate_LeaveTheRestBehind
+	special CheckFirstMonFainted
+	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+Route35NationalParkgate_OkayToProceed:
 	setflag ENGINE_BUG_CONTEST_TIMER
 	special PlayMapMusic
 	writetext UnknownText_0x6a39d
@@ -109,40 +109,40 @@
 	writetext UnknownText_0x6a3e2
 	closetext
 	loadmovesprites
-	special Function135db
-	scall UnknownScript_0x6a261
+	special Special_GiveParkBalls
+	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
-	special Function139a8
+	special Special_SelectRandomBugContestContestants
 	warpfacing $1, GROUP_NATIONAL_PARK_BUG_CONTEST, MAP_NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
 
-UnknownScript_0x6a261:
+Route35NationalParkgate_EnterContest:
 	checkcode VAR_FACING
-	if_equal $2, UnknownScript_0x6a26c
+	if_equal LEFT, Route35NationalParkgate_FacingLeft
 	applymovement $0, MovementData_0x6a2e5
 	end
 
-UnknownScript_0x6a26c:
+Route35NationalParkgate_FacingLeft:
 	applymovement $0, MovementData_0x6a2e9
 	end
 
-UnknownScript_0x6a271:
+Route35NationalParkgate_LeaveTheRestBehind:
 	checkcode VAR_PARTYCOUNT
-	if_less_than $6, UnknownScript_0x6a27d
+	if_less_than 6, Route35NationalParkgate_LessThanFullParty
 	checkcode VAR_BOXSPACE
-	if_equal $0, UnknownScript_0x6a2b5
+	if_equal 0, Route35NationalParkgate_NoRoomInBox
 
-UnknownScript_0x6a27d: ; 6a27d
+Route35NationalParkgate_LessThanFullParty: ; 6a27d
 	special Function71ac
-	if_equal $1, UnknownScript_0x6a2bb
+	if_equal $1, Route35NationalParkgate_FirstMonIsEgg
 	writetext UnknownText_0x6a4c6
 	yesorno
-	iffalse UnknownScript_0x6a2a9
-	special Function13a12
-	iftrue UnknownScript_0x6a2af
-	setevent EVENT_308
+	iffalse Route35NationalParkgate_DeclinedToLeaveMonsBehind
+	special CheckFirstMonFainted
+	iftrue Route35NationalParkgate_FirstMonIsFainted
+	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6a537
 	keeptextopen
 	writetext UnknownText_0x6a56b
@@ -149,52 +149,52 @@
 	playsound SFX_GOT_SAFARI_BALLS
 	waitbutton
 	keeptextopen
-	jump UnknownScript_0x6a234
+	jump Route35NationalParkgate_OkayToProceed
 
-UnknownScript_0x6a2a3:
+Route35NationalParkgate_DeclinedToParticipate:
 	writetext UnknownText_0x6a5dc
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2a9:
+Route35NationalParkgate_DeclinedToLeaveMonsBehind:
 	writetext UnknownText_0x6a597
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2af:
+Route35NationalParkgate_FirstMonIsFainted:
 	writetext UnknownText_0x6a608
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2b5:
+Route35NationalParkgate_NoRoomInBox:
 	writetext UnknownText_0x6a67c
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2bb:
+Route35NationalParkgate_FirstMonIsEgg:
 	writetext UnknownText_0x6a71f
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2c1:
+Route35NationalParkgate_ContestIsOver:
 	writetext UnknownText_0x6a84f
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2c7:
+Route35NationalParkgate_NoContestToday:
 	jumptextfaceplayer UnknownText_0x6a894
 
 OfficerScript_0x6a2ca:
 	faceplayer
 	loadfont
-	checkflag ENGINE_51
-	iftrue UnknownScript_0x6a2c1
+	checkflag ENGINE_DAILY_BUG_CONTEST
+	iftrue Route35NationalParkgate_ContestIsOver
 	writetext UnknownText_0x6a894
 	closetext
 	loadmovesprites
@@ -206,7 +206,7 @@
 MapRoute36NationalParkgateSignpost0Script:
 	jumptext UnknownText_0x6a90e
 
-UnknownScript_0x6a2de:
+Route35NationalParkgate_GetDayOfWeek:
 	jumpstd daytotext
 	end
 
@@ -442,7 +442,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $3, 3, GROUP_NATIONAL_PARK, MAP_NATIONAL_PARK
 	warp_def $0, $4, 4, GROUP_NATIONAL_PARK, MAP_NATIONAL_PARK
@@ -449,15 +449,15 @@
 	warp_def $7, $3, 3, GROUP_ROUTE_35, MAP_ROUTE_35
 	warp_def $7, $4, 3, GROUP_ROUTE_35, MAP_ROUTE_35
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 0, 5, $0, MapRoute36NationalParkgateSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapRoute36NationalParkgateSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_OFFICER, 5, 6, $6, $0, 255, 255, $a0, 0, OfficerScript_0x6a204, EVENT_745
-	person_event SPRITE_YOUNGSTER, 9, 10, $2, $11, 255, 255, $80, 0, YoungsterScript_0x6a2d8, EVENT_734
-	person_event SPRITE_OFFICER, 7, 4, $9, $0, 255, 255, $a0, 0, OfficerScript_0x6a2ca, EVENT_746
+	person_event SPRITE_OFFICER, 5, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6a204, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+	person_event SPRITE_YOUNGSTER, 9, 10, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6a2d8, EVENT_ROUTE_35_NATIONAL_PARK_GATE_YOUNGSTER
+	person_event SPRITE_OFFICER, 7, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6a2ca, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -1,5 +1,5 @@
 Route36_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x19400d, $0000
 	dw UnknownScript_0x19400e, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -30,7 +30,7 @@
 	return
 
 UnknownScript_0x19401b:
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	pause 15
 	playsound SFX_WARP_FROM
 	spriteface $0, UP
@@ -76,7 +76,7 @@
 	setevent EVENT_FOUGHT_SUDOWOODO
 	if_equal $2, UnknownScript_0x19407b
 	disappear $4
-	variablesprite $4, $26
+	variablesprite SPRITE_WEIRD_TREE, SPRITE_TWIN
 	returnafterbattle
 	end
 
@@ -88,8 +88,8 @@
 	returnafterbattle
 	applymovement $4, MovementData_0x19424b
 	disappear $4
-	variablesprite $4, $26
-	special Function14209
+	variablesprite SPRITE_WEIRD_TREE, SPRITE_TWIN
+	special RunCallback_04
 	special Function14168
 	end
 
@@ -96,13 +96,13 @@
 LassScript_0x19408c:
 	faceplayer
 	loadfont
-	checkevent EVENT_0BA
+	checkevent EVENT_TALKED_TO_FLORIA_AT_FLOWER_SHOP
 	iftrue UnknownScript_0x1940b3
 	setevent EVENT_MET_FLORIA
 	writetext UnknownText_0x1942f1
 	closetext
 	loadmovesprites
-	clearevent EVENT_768
+	clearevent EVENT_FLORIA_AT_FLOWER_SHOP
 	checkcode VAR_FACING
 	if_equal $1, UnknownScript_0x1940ac
 	applymovement $9, MovementData_0x19424e
@@ -162,26 +162,10 @@
 	end
 
 TrainerSchoolboyAlan1:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_ALAN
+	trainer EVENT_BEAT_SCHOOLBOY_ALAN, SCHOOLBOY, ALAN1, SchoolboyAlan1SeenText, SchoolboyAlan1BeatenText, $0000, SchoolboyAlan1Script
 
-	; trainer group && trainer id
-	db SCHOOLBOY, ALAN1
-
-	; text when seen
-	dw SchoolboyAlan1SeenText
-
-	; text when trainer beaten
-	dw SchoolboyAlan1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyAlan1Script
-
 SchoolboyAlan1Script:
-	writecode VAR_CALLERID, $18
+	writecode VAR_CALLERID, PHONE_SCHOOLBOY_ALAN
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ALAN
@@ -188,7 +172,7 @@
 	iftrue UnknownScript_0x194140
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
 	iftrue UnknownScript_0x1941b4
-	checkcellnum $18
+	checkcellnum PHONE_SCHOOLBOY_ALAN
 	iftrue UnknownScript_0x1941d5
 	checkevent EVENT_ALAN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x194129
@@ -201,7 +185,7 @@
 UnknownScript_0x194129:
 	scall UnknownScript_0x1941cd
 UnknownScript_0x19412c:
-	askforphonenumber $18
+	askforphonenumber PHONE_SCHOOLBOY_ALAN
 	if_equal $1, UnknownScript_0x1941dd
 	if_equal $2, UnknownScript_0x1941d9
 	trainertotext SCHOOLBOY, ALAN1, $0
@@ -273,7 +257,7 @@
 	verbosegiveitem FIRE_STONE, 1
 	iffalse UnknownScript_0x1941c6
 	clearflag ENGINE_ALAN_HAS_FIRE_STONE
-	setevent EVENT_101
+	setevent EVENT_ALAN_GAVE_FIRE_STONE
 	jump UnknownScript_0x1941d5
 
 UnknownScript_0x1941c6:
@@ -316,24 +300,8 @@
 	end
 
 TrainerPsychicMark:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_MARK
+	trainer EVENT_BEAT_PSYCHIC_MARK, PSYCHIC_T, MARK, PsychicMarkSeenText, PsychicMarkBeatenText, $0000, PsychicMarkScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, MARK
-
-	; text when seen
-	dw PsychicMarkSeenText
-
-	; text when trainer beaten
-	dw PsychicMarkBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicMarkScript
-
 PsychicMarkScript:
 	talkaftercancel
 	loadfont
@@ -690,7 +658,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $8, $12, 3, GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE
 	warp_def $9, $12, 4, GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE
@@ -697,26 +665,26 @@
 	warp_def $d, $2f, 1, GROUP_ROUTE_36_RUINS_OF_ALPH_GATE, MAP_ROUTE_36_RUINS_OF_ALPH_GATE
 	warp_def $d, $30, 2, GROUP_ROUTE_36_RUINS_OF_ALPH_GATE, MAP_ROUTE_36_RUINS_OF_ALPH_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 1, $7, $14, $0, UnknownScript_0x19401b, $0, $0
 	xy_trigger 1, $7, $16, $0, UnknownScript_0x19401b, $0, $0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 1, 29, $0, MapRoute36Signpost0Script
-	signpost 11, 45, $0, MapRoute36Signpost1Script
-	signpost 7, 55, $0, MapRoute36Signpost2Script
-	signpost 7, 21, $0, MapRoute36Signpost3Script
+	signpost 1, 29, SIGNPOST_READ, MapRoute36Signpost0Script
+	signpost 11, 45, SIGNPOST_READ, MapRoute36Signpost1Script
+	signpost 7, 55, SIGNPOST_READ, MapRoute36Signpost2Script
+	signpost 7, 21, SIGNPOST_READ, MapRoute36Signpost3Script
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_YOUNGSTER, 17, 24, $9, $0, 255, 255, $92, 3, TrainerPsychicMark, -1
-	person_event SPRITE_YOUNGSTER, 18, 35, $8, $0, 255, 255, $92, 5, TrainerSchoolboyAlan1, -1
-	person_event SPRITE_WEIRD_TREE, 13, 39, $17, $0, 255, 255, $0, 0, WeirdTreeScript_0x19403c, EVENT_6F8
-	person_event SPRITE_LASS, 12, 55, $5, $2, 255, 255, $0, 0, LassScript_0x1940e0, -1
-	person_event SPRITE_FISHER, 13, 48, $8, $0, 255, 255, $0, 0, FisherScript_0x1940b9, -1
-	person_event SPRITE_FRUIT_TREE, 8, 25, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x194247, -1
-	person_event SPRITE_YOUNGSTER, 10, 50, $2, $11, 255, 255, $0, 0, ArthurScript, EVENT_75A
-	person_event SPRITE_LASS, 16, 37, $6, $0, 255, 255, $90, 0, LassScript_0x19408c, EVENT_FLORIA_AT_SUDOWOODO
-	person_event SPRITE_SUICUNE, 10, 25, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
+	person_event SPRITE_YOUNGSTER, 17, 24, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicMark, -1
+	person_event SPRITE_YOUNGSTER, 18, 35, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerSchoolboyAlan1, -1
+	person_event SPRITE_WEIRD_TREE, 13, 39, OW_UP | $13, $0, -1, -1, $0, 0, WeirdTreeScript_0x19403c, EVENT_ROUTE_36_SUDOWOODO
+	person_event SPRITE_LASS, 12, 55, OW_UP | $1, $2, -1, -1, $0, 0, LassScript_0x1940e0, -1
+	person_event SPRITE_FISHER, 13, 48, OW_LEFT | $0, $0, -1, -1, $0, 0, FisherScript_0x1940b9, -1
+	person_event SPRITE_FRUIT_TREE, 8, 25, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x194247, -1
+	person_event SPRITE_YOUNGSTER, 10, 50, OW_DOWN | $2, $11, -1, -1, $0, 0, ArthurScript, EVENT_ROUTE_36_ARTHUR_OF_THURSDAY
+	person_event SPRITE_LASS, 16, 37, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x19408c, EVENT_FLORIA_AT_SUDOWOODO
+	person_event SPRITE_SUICUNE, 10, 25, OW_DOWN | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
--- a/maps/Route36NationalParkgate.asm
+++ b/maps/Route36NationalParkgate.asm
@@ -1,5 +1,5 @@
 Route36NationalParkgate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 3
 
 	; triggers
@@ -7,7 +7,7 @@
 	dw UnknownScript_0x6ab12, $0000
 	dw UnknownScript_0x6ab13, $0000
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -37,7 +37,7 @@
 	return
 
 UnknownScript_0x6ab23:
-	checkevent EVENT_2D2
+	checkevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
 	iftrue UnknownScript_0x6ab46
 	checkcode VAR_WEEKDAY
 	if_equal TUESDAY, UnknownScript_0x6ab42
@@ -67,14 +67,14 @@
 	writetext UnknownText_0x6b2c5
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	scall UnknownScript_0x6ab8c
 	disappear $2
 	appear $d
 	applymovement $0, MovementData_0x6add1
 	pause 15
-	special Function8c0ab
+	special Special_FadeInQuickly
 	jumpstd bugcontestresults
 
 UnknownScript_0x6ab76:
@@ -83,53 +83,53 @@
 	loadmovesprites
 	spriteface $0, LEFT
 	playsound SFX_EXIT_BUILDING
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
 	warpfacing $2, GROUP_NATIONAL_PARK_BUG_CONTEST, MAP_NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
 
 UnknownScript_0x6ab8c:
-	checkevent EVENT_716
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
 	iftrue UnknownScript_0x6ab94
 	appear $3
 UnknownScript_0x6ab94:
-	checkevent EVENT_717
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
 	iftrue UnknownScript_0x6ab9c
 	appear $4
 UnknownScript_0x6ab9c:
-	checkevent EVENT_718
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
 	iftrue UnknownScript_0x6aba4
 	appear $5
 UnknownScript_0x6aba4:
-	checkevent EVENT_719
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
 	iftrue UnknownScript_0x6abac
 	appear $6
 UnknownScript_0x6abac:
-	checkevent EVENT_71A
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
 	iftrue UnknownScript_0x6abb4
 	appear $7
 UnknownScript_0x6abb4:
-	checkevent EVENT_71B
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
 	iftrue UnknownScript_0x6abbc
 	appear $8
 UnknownScript_0x6abbc:
-	checkevent EVENT_71C
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
 	iftrue UnknownScript_0x6abc4
 	appear $9
 UnknownScript_0x6abc4:
-	checkevent EVENT_71D
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
 	iftrue UnknownScript_0x6abcc
 	appear $a
 UnknownScript_0x6abcc:
-	checkevent EVENT_71E
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
 	iftrue UnknownScript_0x6abd4
 	appear $b
 UnknownScript_0x6abd4:
-	checkevent EVENT_71F
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
 	iftrue UnknownScript_0x6abdc
 	appear $c
 UnknownScript_0x6abdc:
-	special Function1ad2
+	special DrawOnMap
 	end
 
 OfficerScript_0x6abe0:
@@ -140,7 +140,7 @@
 	if_equal FRIDAY, UnknownScript_0x6acf1
 	faceplayer
 	loadfont
-	checkflag ENGINE_51
+	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0x6ac91
 	scall UnknownScript_0x6ad02
 	writetext UnknownText_0x6add5
@@ -148,8 +148,8 @@
 	iffalse UnknownScript_0x6ac73
 	checkcode VAR_PARTYCOUNT
 	if_greater_than $1, UnknownScript_0x6ac41
-	special Function13a12
-	clearevent EVENT_308
+	special CheckFirstMonFainted
+	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 UnknownScript_0x6ac10:
 	setflag ENGINE_BUG_CONTEST_TIMER
 	special PlayMapMusic
@@ -163,12 +163,12 @@
 	closetext
 	loadmovesprites
 	setflag ENGINE_BUG_CONTEST_TIMER
-	special Function135db
+	special Special_GiveParkBalls
 	spriteface $0, LEFT
 	playsound SFX_EXIT_BUILDING
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
-	special Function139a8
+	special Special_SelectRandomBugContestContestants
 	warpfacing $2, GROUP_NATIONAL_PARK_BUG_CONTEST, MAP_NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
 
@@ -183,9 +183,9 @@
 	writetext UnknownText_0x6afb0
 	yesorno
 	iffalse UnknownScript_0x6ac79
-	special Function13a12
+	special CheckFirstMonFainted
 	iftrue UnknownScript_0x6ac7f
-	setevent EVENT_308
+	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6b021
 	keeptextopen
 	writetext UnknownText_0x6b055
@@ -225,13 +225,13 @@
 	end
 
 UnknownScript_0x6ac91:
-	checkevent EVENT_313
+	checkevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
 	iftrue UnknownScript_0x6acaf
-	checkevent EVENT_314
+	checkevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
 	iftrue UnknownScript_0x6acbe
-	checkevent EVENT_315
+	checkevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
 	iftrue UnknownScript_0x6accd
-	checkevent EVENT_316
+	checkevent EVENT_CONTEST_OFFICER_HAS_BERRY
 	iftrue UnknownScript_0x6acdc
 	writetext UnknownText_0x6b32b
 	closetext
@@ -243,7 +243,7 @@
 	keeptextopen
 	verbosegiveitem SUN_STONE, 1
 	iffalse UnknownScript_0x6aceb
-	clearevent EVENT_313
+	clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
 	loadmovesprites
 	end
 
@@ -252,7 +252,7 @@
 	keeptextopen
 	verbosegiveitem EVERSTONE, 1
 	iffalse UnknownScript_0x6aceb
-	clearevent EVENT_314
+	clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
 	loadmovesprites
 	end
 
@@ -261,7 +261,7 @@
 	keeptextopen
 	verbosegiveitem GOLD_BERRY, 1
 	iffalse UnknownScript_0x6aceb
-	clearevent EVENT_315
+	clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
 	loadmovesprites
 	end
 
@@ -270,7 +270,7 @@
 	keeptextopen
 	verbosegiveitem BERRY, 1
 	iffalse UnknownScript_0x6aceb
-	clearevent EVENT_316
+	clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
 	loadmovesprites
 	end
 
@@ -286,7 +286,7 @@
 OfficerScript_0x6acf4:
 	faceplayer
 	loadfont
-	checkflag ENGINE_51
+	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0x6ac91
 	writetext UnknownText_0x6b370
 	closetext
@@ -300,7 +300,7 @@
 YoungsterScript_0x6ad06:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad14
 	writetext UnknownText_0x6b399
 	closetext
@@ -316,7 +316,7 @@
 YoungsterScript_0x6ad1a:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad28
 	writetext UnknownText_0x6b40f
 	closetext
@@ -332,7 +332,7 @@
 RockerScript_0x6ad2e:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad3c
 	writetext UnknownText_0x6b462
 	closetext
@@ -348,7 +348,7 @@
 PokefanMScript_0x6ad42:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad50
 	writetext UnknownText_0x6b4da
 	closetext
@@ -364,7 +364,7 @@
 YoungsterScript_0x6ad56:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad64
 	writetext UnknownText_0x6b54e
 	closetext
@@ -380,7 +380,7 @@
 YoungsterScript_0x6ad6a:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad78
 	writetext UnknownText_0x6b5b0
 	closetext
@@ -396,7 +396,7 @@
 LassScript_0x6ad7e:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad8c
 	writetext UnknownText_0x6b64b
 	closetext
@@ -412,7 +412,7 @@
 YoungsterScript_0x6ad92:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ada0
 	writetext UnknownText_0x6b6b8
 	closetext
@@ -428,7 +428,7 @@
 YoungsterScript_0x6ada6:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6adb4
 	writetext UnknownText_0x6b71b
 	closetext
@@ -444,7 +444,7 @@
 YoungsterScript_0x6adba:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6adc8
 	writetext UnknownText_0x6b76f
 	closetext
@@ -846,7 +846,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 1, GROUP_NATIONAL_PARK, MAP_NATIONAL_PARK
 	warp_def $5, $0, 2, GROUP_NATIONAL_PARK, MAP_NATIONAL_PARK
@@ -853,24 +853,24 @@
 	warp_def $4, $9, 1, GROUP_ROUTE_36, MAP_ROUTE_36
 	warp_def $5, $9, 2, GROUP_ROUTE_36, MAP_ROUTE_36
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 0, 6, $0, MapRoute36NationalParkgateSignpost0Script
+	signpost 0, 6, SIGNPOST_READ, MapRoute36NationalParkgateSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_OFFICER, 7, 4, $6, $0, 255, 255, $a0, 0, OfficerScript_0x6abe0, EVENT_747
-	person_event SPRITE_YOUNGSTER, 9, 6, $7, $0, 255, 255, $80, 0, YoungsterScript_0x6ad06, EVENT_720
-	person_event SPRITE_YOUNGSTER, 9, 8, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x6ad1a, EVENT_721
-	person_event SPRITE_ROCKER, 10, 6, $7, $0, 255, 255, $90, 0, RockerScript_0x6ad2e, EVENT_722
-	person_event SPRITE_POKEFAN_M, 9, 10, $7, $0, 255, 255, $b0, 0, PokefanMScript_0x6ad42, EVENT_723
-	person_event SPRITE_YOUNGSTER, 11, 6, $7, $0, 255, 255, $80, 0, YoungsterScript_0x6ad56, EVENT_724
-	person_event SPRITE_YOUNGSTER, 10, 9, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x6ad6a, EVENT_725
-	person_event SPRITE_LASS, 10, 7, $7, $0, 255, 255, $90, 0, LassScript_0x6ad7e, EVENT_726
-	person_event SPRITE_YOUNGSTER, 11, 8, $7, $0, 255, 255, $80, 0, YoungsterScript_0x6ad92, EVENT_727
-	person_event SPRITE_YOUNGSTER, 11, 10, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x6ada6, EVENT_728
-	person_event SPRITE_YOUNGSTER, 10, 10, $7, $0, 255, 255, $90, 0, YoungsterScript_0x6adba, EVENT_729
-	person_event SPRITE_OFFICER, 6, 7, $6, $0, 255, 255, $a0, 0, OfficerScript_0x6acf4, EVENT_748
+	person_event SPRITE_OFFICER, 7, 4, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6abe0, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+	person_event SPRITE_YOUNGSTER, 9, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6ad06, EVENT_BUG_CATCHING_CONTESTANT_1B
+	person_event SPRITE_YOUNGSTER, 9, 8, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6ad1a, EVENT_BUG_CATCHING_CONTESTANT_2B
+	person_event SPRITE_ROCKER, 10, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, RockerScript_0x6ad2e, EVENT_BUG_CATCHING_CONTESTANT_3B
+	person_event SPRITE_POKEFAN_M, 9, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x6ad42, EVENT_BUG_CATCHING_CONTESTANT_4B
+	person_event SPRITE_YOUNGSTER, 11, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6ad56, EVENT_BUG_CATCHING_CONTESTANT_5B
+	person_event SPRITE_YOUNGSTER, 10, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6ad6a, EVENT_BUG_CATCHING_CONTESTANT_6B
+	person_event SPRITE_LASS, 10, 7, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x6ad7e, EVENT_BUG_CATCHING_CONTESTANT_7B
+	person_event SPRITE_YOUNGSTER, 11, 8, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6ad92, EVENT_BUG_CATCHING_CONTESTANT_8B
+	person_event SPRITE_YOUNGSTER, 11, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6ada6, EVENT_BUG_CATCHING_CONTESTANT_9B
+	person_event SPRITE_YOUNGSTER, 10, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x6adba, EVENT_BUG_CATCHING_CONTESTANT_10B
+	person_event SPRITE_OFFICER, 6, 7, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6acf4, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- a/maps/Route36RuinsofAlphgate.asm
+++ b/maps/Route36RuinsofAlphgate.asm
@@ -1,8 +1,8 @@
 Route36RuinsofAlphgate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x6aa1a:
@@ -34,7 +34,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 3, GROUP_ROUTE_36, MAP_ROUTE_36
 	warp_def $0, $5, 4, GROUP_ROUTE_36, MAP_ROUTE_36
@@ -41,13 +41,13 @@
 	warp_def $7, $4, 9, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $7, $5, 9, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x6aa1a, -1
-	person_event SPRITE_GRAMPS, 9, 11, $2, $21, 255, 255, $b0, 0, GrampsScript_0x6aa1d, -1
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x6aa1a, -1
+	person_event SPRITE_GRAMPS, 9, 11, OW_DOWN | $2, $21, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x6aa1d, -1
--- a/maps/Route37.asm
+++ b/maps/Route37.asm
@@ -1,8 +1,8 @@
 Route37_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -20,24 +20,8 @@
 	return
 
 TrainerTwinsAnnandanne1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_ANN_AND_ANNE
+	trainer EVENT_BEAT_TWINS_ANN_AND_ANNE, TWINS, ANNANDANNE1, TwinsAnnandanne1SeenText, TwinsAnnandanne1BeatenText, $0000, TwinsAnnandanne1Script
 
-	; trainer group && trainer id
-	db TWINS, ANNANDANNE1
-
-	; text when seen
-	dw TwinsAnnandanne1SeenText
-
-	; text when trainer beaten
-	dw TwinsAnnandanne1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAnnandanne1Script
-
 TwinsAnnandanne1Script:
 	talkaftercancel
 	loadfont
@@ -47,24 +31,8 @@
 	end
 
 TrainerTwinsAnnandanne2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_ANN_AND_ANNE
+	trainer EVENT_BEAT_TWINS_ANN_AND_ANNE, TWINS, ANNANDANNE2, TwinsAnnandanne2SeenText, TwinsAnnandanne2BeatenText, $0000, TwinsAnnandanne2Script
 
-	; trainer group && trainer id
-	db TWINS, ANNANDANNE2
-
-	; text when seen
-	dw TwinsAnnandanne2SeenText
-
-	; text when trainer beaten
-	dw TwinsAnnandanne2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAnnandanne2Script
-
 TwinsAnnandanne2Script:
 	talkaftercancel
 	loadfont
@@ -74,24 +42,8 @@
 	end
 
 TrainerPsychicGreg:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_GREG
+	trainer EVENT_BEAT_PSYCHIC_GREG, PSYCHIC_T, GREG, PsychicGregSeenText, PsychicGregBeatenText, $0000, PsychicGregScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, GREG
-
-	; text when seen
-	dw PsychicGregSeenText
-
-	; text when trainer beaten
-	dw PsychicGregBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicGregScript
-
 PsychicGregScript:
 	talkaftercancel
 	loadfont
@@ -156,8 +108,7 @@
 	fruittree $13
 
 MapRoute37SignpostItem1:
-	dw $00a9
-	db ETHER
+	dwb EVENT_ROUTE_37_HIDDEN_ETHER, ETHER
 	
 
 TwinsAnnandanne1SeenText:
@@ -285,23 +236,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 0
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 3, 5, $0, MapRoute37Signpost0Script
-	signpost 2, 4, $7, MapRoute37SignpostItem1
+	signpost 3, 5, SIGNPOST_READ, MapRoute37Signpost0Script
+	signpost 2, 4, SIGNPOST_ITEM, MapRoute37SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_WEIRD_TREE, 16, 10, $6, $0, 255, 255, $82, 1, TrainerTwinsAnnandanne1, -1
-	person_event SPRITE_WEIRD_TREE, 16, 11, $6, $0, 255, 255, $82, 1, TrainerTwinsAnnandanne2, -1
-	person_event SPRITE_YOUNGSTER, 10, 10, $a, $0, 255, 255, $92, 1, TrainerPsychicGreg, -1
-	person_event SPRITE_FRUIT_TREE, 9, 17, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8e09, -1
-	person_event SPRITE_BUG_CATCHER, 12, 20, $2, $11, 255, 255, $0, 0, SunnyScript, EVENT_75B
-	person_event SPRITE_FRUIT_TREE, 9, 20, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8e0b, -1
-	person_event SPRITE_FRUIT_TREE, 11, 19, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8e0d, -1
+	person_event SPRITE_WEIRD_TREE, 16, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAnnandanne1, -1
+	person_event SPRITE_WEIRD_TREE, 16, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAnnandanne2, -1
+	person_event SPRITE_YOUNGSTER, 10, 10, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerPsychicGreg, -1
+	person_event SPRITE_FRUIT_TREE, 9, 17, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8e09, -1
+	person_event SPRITE_BUG_CATCHER, 12, 20, OW_DOWN | $2, $11, -1, -1, $0, 0, SunnyScript, EVENT_ROUTE_37_SUNNY_OF_SUNDAY
+	person_event SPRITE_FRUIT_TREE, 9, 20, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8e0b, -1
+	person_event SPRITE_FRUIT_TREE, 11, 19, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8e0d, -1
--- a/maps/Route38.asm
+++ b/maps/Route38.asm
@@ -1,29 +1,13 @@
 Route38_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBird_keeperToby:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_TOBY
+	trainer EVENT_BEAT_BIRD_KEEPER_TOBY, BIRD_KEEPER, TOBY, Bird_keeperTobySeenText, Bird_keeperTobyBeatenText, $0000, Bird_keeperTobyScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, TOBY
-
-	; text when seen
-	dw Bird_keeperTobySeenText
-
-	; text when trainer beaten
-	dw Bird_keeperTobyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperTobyScript
-
 Bird_keeperTobyScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSailorHarry:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_HARRY
+	trainer EVENT_BEAT_SAILOR_HARRY, SAILOR, HARRY, SailorHarrySeenText, SailorHarryBeatenText, $0000, SailorHarryScript
 
-	; trainer group && trainer id
-	db SAILOR, HARRY
-
-	; text when seen
-	dw SailorHarrySeenText
-
-	; text when trainer beaten
-	dw SailorHarryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorHarryScript
-
 SailorHarryScript:
 	talkaftercancel
 	loadfont
@@ -60,33 +28,17 @@
 	end
 
 TrainerLassDana1:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_DANA
+	trainer EVENT_BEAT_LASS_DANA, LASS, DANA1, LassDana1SeenText, LassDana1BeatenText, $0000, LassDana1Script
 
-	; trainer group && trainer id
-	db LASS, DANA1
-
-	; text when seen
-	dw LassDana1SeenText
-
-	; text when trainer beaten
-	dw LassDana1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassDana1Script
-
 LassDana1Script:
-	writecode VAR_CALLERID, $1a
+	writecode VAR_CALLERID, PHONE_LASS_DANA
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_DANA
 	iftrue UnknownScript_0x1a1d82
-	checkflag ENGINE_LIZ_HAS_THUNDERSTONE
+	checkflag ENGINE_DANA_HAS_THUNDERSTONE
 	iftrue UnknownScript_0x1a1df6
-	checkcellnum $1a
+	checkcellnum PHONE_LASS_DANA
 	iftrue UnknownScript_0x1a1e17
 	checkevent EVENT_DANA_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a1d6b
@@ -99,7 +51,7 @@
 UnknownScript_0x1a1d6b:
 	scall UnknownScript_0x1a1e0f
 UnknownScript_0x1a1d6e:
-	askforphonenumber $1a
+	askforphonenumber PHONE_LASS_DANA
 	if_equal $1, UnknownScript_0x1a1e1f
 	if_equal $2, UnknownScript_0x1a1e1b
 	trainertotext LASS, DANA1, $0
@@ -170,8 +122,8 @@
 	scall UnknownScript_0x1a1e27
 	verbosegiveitem THUNDERSTONE, 1
 	iffalse UnknownScript_0x1a1e08
-	clearflag ENGINE_LIZ_HAS_THUNDERSTONE
-	setevent EVENT_102
+	clearflag ENGINE_DANA_HAS_THUNDERSTONE
+	setevent EVENT_DANA_GAVE_THUNDERSTONE
 	jump UnknownScript_0x1a1e17
 
 UnknownScript_0x1a1e08:
@@ -214,31 +166,15 @@
 	end
 
 TrainerSchoolboyChad1:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_CHAD
+	trainer EVENT_BEAT_SCHOOLBOY_CHAD, SCHOOLBOY, CHAD1, SchoolboyChad1SeenText, SchoolboyChad1BeatenText, $0000, SchoolboyChad1Script
 
-	; trainer group && trainer id
-	db SCHOOLBOY, CHAD1
-
-	; text when seen
-	dw SchoolboyChad1SeenText
-
-	; text when trainer beaten
-	dw SchoolboyChad1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyChad1Script
-
 SchoolboyChad1Script:
-	writecode VAR_CALLERID, $1b
+	writecode VAR_CALLERID, PHONE_SCHOOLBOY_CHAD
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_CHAD
 	iftrue UnknownScript_0x1a1e75
-	checkcellnum $1b
+	checkcellnum PHONE_SCHOOLBOY_CHAD
 	iftrue UnknownScript_0x1a1ef5
 	checkevent EVENT_CHAD_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a1e5e
@@ -251,7 +187,7 @@
 UnknownScript_0x1a1e5e:
 	scall UnknownScript_0x1a1eed
 UnknownScript_0x1a1e61:
-	askforphonenumber $1b
+	askforphonenumber PHONE_SCHOOLBOY_CHAD
 	if_equal $1, UnknownScript_0x1a1efd
 	if_equal $2, UnknownScript_0x1a1ef9
 	trainertotext SCHOOLBOY, CHAD1, $0
@@ -347,24 +283,8 @@
 	end
 
 TrainerBeautyValerie:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_VALERIE
+	trainer EVENT_BEAT_BEAUTY_VALERIE, BEAUTY, VALERIE, BeautyValerieSeenText, BeautyValerieBeatenText, $0000, BeautyValerieScript
 
-	; trainer group && trainer id
-	db BEAUTY, VALERIE
-
-	; text when seen
-	dw BeautyValerieSeenText
-
-	; text when trainer beaten
-	dw BeautyValerieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyValerieScript
-
 BeautyValerieScript:
 	talkaftercancel
 	loadfont
@@ -374,24 +294,8 @@
 	end
 
 TrainerBeautyOlivia:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_OLIVIA
+	trainer EVENT_BEAT_BEAUTY_OLIVIA, BEAUTY, OLIVIA, BeautyOliviaSeenText, BeautyOliviaBeatenText, $0000, BeautyOliviaScript
 
-	; trainer group && trainer id
-	db BEAUTY, OLIVIA
-
-	; text when seen
-	dw BeautyOliviaSeenText
-
-	; text when trainer beaten
-	dw BeautyOliviaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyOliviaScript
-
 BeautyOliviaScript:
 	talkaftercancel
 	loadfont
@@ -563,25 +467,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $8, $23, 1, GROUP_ROUTE_38_ECRUTEAK_GATE, MAP_ROUTE_38_ECRUTEAK_GATE
 	warp_def $9, $23, 2, GROUP_ROUTE_38_ECRUTEAK_GATE, MAP_ROUTE_38_ECRUTEAK_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 33, $0, MapRoute38Signpost0Script
-	signpost 13, 5, $0, MapRoute38Signpost1Script
+	signpost 7, 33, SIGNPOST_READ, MapRoute38Signpost0Script
+	signpost 13, 5, SIGNPOST_READ, MapRoute38Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_STANDING_YOUNGSTER, 5, 8, $9, $0, 255, 255, $92, 1, TrainerSchoolboyChad1, -1
-	person_event SPRITE_LASS, 7, 19, $a, $0, 255, 255, $92, 2, TrainerLassDana1, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 19, 16, $a, $0, 255, 255, $92, 1, TrainerBird_keeperToby, -1
-	person_event SPRITE_BUENA, 13, 23, $6, $0, 255, 255, $92, 1, TrainerBeautyValerie, -1
-	person_event SPRITE_SAILOR, 9, 28, $1e, $0, 255, 255, $92, 2, TrainerSailorHarry, -1
-	person_event SPRITE_FRUIT_TREE, 14, 16, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a1f33, -1
-	person_event SPRITE_BUENA, 12, 9, $a, $0, 255, 255, $92, 1, TrainerBeautyOlivia, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 5, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyChad1, -1
+	person_event SPRITE_LASS, 7, 19, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerLassDana1, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 19, 16, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBird_keeperToby, -1
+	person_event SPRITE_BUENA, 13, 23, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBeautyValerie, -1
+	person_event SPRITE_SAILOR, 9, 28, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerSailorHarry, -1
+	person_event SPRITE_FRUIT_TREE, 14, 16, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a1f33, -1
+	person_event SPRITE_BUENA, 12, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBeautyOlivia, -1
--- a/maps/Route38EcruteakGate.asm
+++ b/maps/Route38EcruteakGate.asm
@@ -1,8 +1,8 @@
 Route38EcruteakGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x9cbd7:
@@ -25,7 +25,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 1, GROUP_ROUTE_38, MAP_ROUTE_38
 	warp_def $5, $0, 2, GROUP_ROUTE_38, MAP_ROUTE_38
@@ -32,12 +32,12 @@
 	warp_def $4, $9, 14, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $5, $9, 15, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x9cbd7, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x9cbd7, -1
--- a/maps/Route39.asm
+++ b/maps/Route39.asm
@@ -1,8 +1,8 @@
 Route39_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TaurosScript_0x1a5af5:
@@ -14,31 +14,15 @@
 	end
 
 TrainerPokefanmDerek1:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_DEREK
+	trainer EVENT_BEAT_POKEFANM_DEREK, POKEFANM, DEREK1, PokefanmDerek1SeenText, PokefanmDerek1BeatenText, $0000, PokefanmDerek1Script
 
-	; trainer group && trainer id
-	db POKEFANM, DEREK1
-
-	; text when seen
-	dw PokefanmDerek1SeenText
-
-	; text when trainer beaten
-	dw PokefanmDerek1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmDerek1Script
-
 PokefanmDerek1Script:
-	writecode VAR_CALLERID, $1c
+	writecode VAR_CALLERID, PHONE_POKEFANM_DEREK
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_DEREK_HAS_NUGGET
 	iftrue UnknownScript_0x1a5b4a
-	checkcellnum $1c
+	checkcellnum PHONE_POKEFANM_DEREK
 	iftrue UnknownScript_0x1a5b6e
 	checkpoke PIKACHU
 	iffalse UnknownScript_0x1a5b5c
@@ -53,7 +37,7 @@
 UnknownScript_0x1a5b33:
 	scall UnknownScript_0x1a5b66
 UnknownScript_0x1a5b36:
-	askforphonenumber $1c
+	askforphonenumber PHONE_POKEFANM_DEREK
 	if_equal $1, UnknownScript_0x1a5b76
 	if_equal $2, UnknownScript_0x1a5b72
 	trainertotext POKEFANM, DEREK1, $0
@@ -109,24 +93,8 @@
 	end
 
 TrainerPokefanfRuth:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANF_RUTH
+	trainer EVENT_BEAT_POKEFANF_RUTH, POKEFANF, RUTH, PokefanfRuthSeenText, PokefanfRuthBeatenText, $0000, PokefanfRuthScript
 
-	; trainer group && trainer id
-	db POKEFANF, RUTH
-
-	; text when seen
-	dw PokefanfRuthSeenText
-
-	; text when trainer beaten
-	dw PokefanfRuthBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanfRuthScript
-
 PokefanfRuthScript:
 	talkaftercancel
 	loadfont
@@ -136,24 +104,8 @@
 	end
 
 TrainerSailorEugene:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_EUGENE
+	trainer EVENT_BEAT_SAILOR_EUGENE, SAILOR, EUGENE, SailorEugeneSeenText, SailorEugeneBeatenText, $0000, SailorEugeneScript
 
-	; trainer group && trainer id
-	db SAILOR, EUGENE
-
-	; text when seen
-	dw SailorEugeneSeenText
-
-	; text when trainer beaten
-	dw SailorEugeneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorEugeneScript
-
 SailorEugeneScript:
 	talkaftercancel
 	loadfont
@@ -163,24 +115,8 @@
 	end
 
 TrainerPsychicNorman:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_NORMAN
+	trainer EVENT_BEAT_PSYCHIC_NORMAN, PSYCHIC_T, NORMAN, PsychicNormanSeenText, PsychicNormanBeatenText, $0000, PsychicNormanScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, NORMAN
-
-	; text when seen
-	dw PsychicNormanSeenText
-
-	; text when trainer beaten
-	dw PsychicNormanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicNormanScript
-
 PsychicNormanScript:
 	talkaftercancel
 	loadfont
@@ -232,8 +168,7 @@
 	fruittree $f
 
 MapRoute39SignpostItem3:
-	dw $00aa
-	db NUGGET
+	dwb EVENT_ROUTE_39_HIDDEN_NUGGET, NUGGET
 	
 
 UnknownText_0x1a5bf9:
@@ -401,30 +336,30 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $1, 1, GROUP_ROUTE_39_BARN, MAP_ROUTE_39_BARN
 	warp_def $3, $5, 1, GROUP_ROUTE_39_FARMHOUSE, MAP_ROUTE_39_FARMHOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 31, 5, $0, MapRoute39Signpost0Script
-	signpost 5, 9, $0, MapRoute39Signpost1Script
-	signpost 7, 15, $0, MapRoute39Signpost2Script
-	signpost 13, 5, $7, MapRoute39SignpostItem3
+	signpost 31, 5, SIGNPOST_READ, MapRoute39Signpost0Script
+	signpost 5, 9, SIGNPOST_READ, MapRoute39Signpost1Script
+	signpost 7, 15, SIGNPOST_READ, MapRoute39Signpost2Script
+	signpost 13, 5, SIGNPOST_ITEM, MapRoute39SignpostItem3
 
-	; people-events
+.PersonEvents:
 	db 10
-	person_event SPRITE_SAILOR, 33, 17, $8, $0, 255, 255, $92, 5, TrainerSailorEugene, -1
-	person_event SPRITE_POKEFAN_M, 26, 14, $7, $0, 255, 255, $82, 4, TrainerPokefanmDerek1, -1
-	person_event SPRITE_POKEFAN_F, 23, 15, $9, $0, 255, 255, $82, 4, TrainerPokefanfRuth, -1
-	person_event SPRITE_TAUROS, 16, 7, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 15, 10, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 19, 8, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 17, 12, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 11, 17, $a, $0, 255, 255, $92, 1, TrainerPsychicNorman, -1
-	person_event SPRITE_FRUIT_TREE, 7, 13, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a5bf4, -1
-	person_event SPRITE_POKEFAN_F, 26, 8, $6, $0, 255, 255, $80, 0, PokefanFScript_0x1a5bbe, -1
+	person_event SPRITE_SAILOR, 33, 17, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerSailorEugene, -1
+	person_event SPRITE_POKEFAN_M, 26, 14, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerPokefanmDerek1, -1
+	person_event SPRITE_POKEFAN_F, 23, 15, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerPokefanfRuth, -1
+	person_event SPRITE_TAUROS, 16, 7, OW_UP | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 15, 10, OW_UP | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 19, 8, OW_UP | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 17, 12, OW_UP | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 11, 17, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerPsychicNorman, -1
+	person_event SPRITE_FRUIT_TREE, 7, 13, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a5bf4, -1
+	person_event SPRITE_POKEFAN_F, 26, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x1a5bbe, -1
--- a/maps/Route39Barn.asm
+++ b/maps/Route39Barn.asm
@@ -1,8 +1,8 @@
 Route39Barn_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TwinScript_0x9cc76:
@@ -187,19 +187,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 1, GROUP_ROUTE_39, MAP_ROUTE_39
 	warp_def $7, $4, 1, GROUP_ROUTE_39, MAP_ROUTE_39
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_TWIN, 7, 6, $9, $0, 255, 255, $0, 0, TwinScript_0x9cc76, -1
-	person_event SPRITE_TWIN, 7, 8, $8, $0, 255, 255, $a0, 0, TwinScript_0x9cc90, -1
-	person_event SPRITE_TAUROS, 7, 7, $16, $0, 255, 255, $0, 0, TaurosScript_0x9ccaa, -1
+	person_event SPRITE_TWIN, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, TwinScript_0x9cc76, -1
+	person_event SPRITE_TWIN, 7, 8, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x9cc90, -1
+	person_event SPRITE_TAUROS, 7, 7, OW_UP | $12, $0, -1, -1, $0, 0, TaurosScript_0x9ccaa, -1
--- a/maps/Route39Farmhouse.asm
+++ b/maps/Route39Farmhouse.asm
@@ -1,8 +1,8 @@
 Route39Farmhouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x9ceb4:
@@ -192,20 +192,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_ROUTE_39, MAP_ROUTE_39
 	warp_def $7, $3, 2, GROUP_ROUTE_39, MAP_ROUTE_39
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, FarmhouseBookshelf
-	signpost 1, 1, $0, FarmhouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, FarmhouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, FarmhouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 6, 7, $6, $0, 255, 255, $90, 0, PokefanMScript_0x9ceb4, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $8, $0, 255, 255, $b0, 0, PokefanFScript_0x9cf0e, -1
+	person_event SPRITE_POKEFAN_M, 6, 7, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanMScript_0x9ceb4, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanFScript_0x9cf0e, -1
--- a/maps/Route4.asm
+++ b/maps/Route4.asm
@@ -1,29 +1,13 @@
 Route4_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBird_keeperHank:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_HANK
+	trainer EVENT_BEAT_BIRD_KEEPER_HANK, BIRD_KEEPER, HANK, Bird_keeperHankSeenText, Bird_keeperHankBeatenText, $0000, Bird_keeperHankScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, HANK
-
-	; text when seen
-	dw Bird_keeperHankSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperHankBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperHankScript
-
 Bird_keeperHankScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPicnickerHope:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_HOPE
+	trainer EVENT_BEAT_PICNICKER_HOPE, PICNICKER, HOPE, PicnickerHopeSeenText, PicnickerHopeBeatenText, $0000, PicnickerHopeScript
 
-	; trainer group && trainer id
-	db PICNICKER, HOPE
-
-	; text when seen
-	dw PicnickerHopeSeenText
-
-	; text when trainer beaten
-	dw PicnickerHopeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerHopeScript
-
 PicnickerHopeScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerPicnickerSharon:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_SHARON
+	trainer EVENT_BEAT_PICNICKER_SHARON, PICNICKER, SHARON, PicnickerSharonSeenText, PicnickerSharonBeatenText, $0000, PicnickerSharonScript
 
-	; trainer group && trainer id
-	db PICNICKER, SHARON
-
-	; text when seen
-	dw PicnickerSharonSeenText
-
-	; text when trainer beaten
-	dw PicnickerSharonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerSharonScript
-
 PicnickerSharonScript:
 	talkaftercancel
 	loadfont
@@ -93,8 +45,7 @@
 	db HP_UP, 1
 
 MapRoute4SignpostItem1:
-	dw $00f1
-	db ULTRA_BALL
+	dwb EVENT_ROUTE_4_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
 Bird_keeperHankSeenText:
@@ -168,21 +119,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $5, $2, 2, GROUP_MOUNT_MOON, MAP_MOUNT_MOON
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 3, $0, MapRoute4Signpost0Script
-	signpost 3, 10, $7, MapRoute4SignpostItem1
+	signpost 7, 3, SIGNPOST_READ, MapRoute4Signpost0Script
+	signpost 3, 10, SIGNPOST_ITEM, MapRoute4SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_YOUNGSTER, 13, 21, $6, $0, 255, 255, $92, 3, TrainerBird_keeperHank, -1
-	person_event SPRITE_LASS, 12, 13, $8, $0, 255, 255, $a2, 4, TrainerPicnickerHope, -1
-	person_event SPRITE_LASS, 10, 25, $9, $0, 255, 255, $a2, 4, TrainerPicnickerSharon, -1
-	person_event SPRITE_POKE_BALL, 7, 30, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ae20f, EVENT_787
+	person_event SPRITE_YOUNGSTER, 13, 21, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperHank, -1
+	person_event SPRITE_LASS, 12, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerPicnickerHope, -1
+	person_event SPRITE_LASS, 10, 25, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerPicnickerSharon, -1
+	person_event SPRITE_POKE_BALL, 7, 30, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ae20f, EVENT_ROUTE_4_HP_UP
--- a/maps/Route40.asm
+++ b/maps/Route40.asm
@@ -1,8 +1,8 @@
 Route40_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -10,7 +10,7 @@
 	dbw 2, MonicaCallback
 
 MonicaCallback:
-	clearevent EVENT_7CF
+	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	checkcode VAR_WEEKDAY
 	if_equal MONDAY, .MonicaAppears
 	disappear $a
@@ -21,24 +21,8 @@
 	return
 
 TrainerSwimmerfElaine:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_ELAINE
+	trainer EVENT_BEAT_SWIMMERF_ELAINE, SWIMMERF, ELAINE, SwimmerfElaineSeenText, SwimmerfElaineBeatenText, $0000, SwimmerfElaineScript
 
-	; trainer group && trainer id
-	db SWIMMERF, ELAINE
-
-	; text when seen
-	dw SwimmerfElaineSeenText
-
-	; text when trainer beaten
-	dw SwimmerfElaineBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfElaineScript
-
 SwimmerfElaineScript:
 	talkaftercancel
 	loadfont
@@ -48,24 +32,8 @@
 	end
 
 TrainerSwimmerfPaula:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_PAULA
+	trainer EVENT_BEAT_SWIMMERF_PAULA, SWIMMERF, PAULA, SwimmerfPaulaSeenText, SwimmerfPaulaBeatenText, $0000, SwimmerfPaulaScript
 
-	; trainer group && trainer id
-	db SWIMMERF, PAULA
-
-	; text when seen
-	dw SwimmerfPaulaSeenText
-
-	; text when trainer beaten
-	dw SwimmerfPaulaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfPaulaScript
-
 SwimmerfPaulaScript:
 	talkaftercancel
 	loadfont
@@ -75,24 +43,8 @@
 	end
 
 TrainerSwimmermSimon:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_SIMON
+	trainer EVENT_BEAT_SWIMMERM_SIMON, SWIMMERM, SIMON, SwimmermSimonSeenText, SwimmermSimonBeatenText, $0000, SwimmermSimonScript
 
-	; trainer group && trainer id
-	db SWIMMERM, SIMON
-
-	; text when seen
-	dw SwimmermSimonSeenText
-
-	; text when trainer beaten
-	dw SwimmermSimonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermSimonScript
-
 SwimmermSimonScript:
 	talkaftercancel
 	loadfont
@@ -102,24 +54,8 @@
 	end
 
 TrainerSwimmermRandall:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_RANDALL
+	trainer EVENT_BEAT_SWIMMERM_RANDALL, SWIMMERM, RANDALL, SwimmermRandallSeenText, SwimmermRandallBeatenText, $0000, SwimmermRandallScript
 
-	; trainer group && trainer id
-	db SWIMMERM, RANDALL
-
-	; text when seen
-	dw SwimmermRandallSeenText
-
-	; text when trainer beaten
-	dw SwimmermRandallBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermRandallScript
-
 SwimmermRandallScript:
 	talkaftercancel
 	loadfont
@@ -188,8 +124,7 @@
 	jumpstd smashrock
 
 MapRoute40SignpostItem1:
-	dw $00ab
-	db HYPER_POTION
+	dwb EVENT_ROUTE_40_HIDDEN_HYPER_POTION, HYPER_POTION
 
 MovementData_0x1a621c:
 	step_right
@@ -395,29 +330,29 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $5, $9, 1, GROUP_ROUTE_40_BATTLE_TOWER_GATE, MAP_ROUTE_40_BATTLE_TOWER_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 10, 14, $0, MapRoute40Signpost0Script
-	signpost 8, 7, $7, MapRoute40SignpostItem1
+	signpost 10, 14, SIGNPOST_READ, MapRoute40Signpost0Script
+	signpost 8, 7, SIGNPOST_ITEM, MapRoute40SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 12
-	person_event SPRITE_OLIVINE_RIVAL, 19, 18, $9, $0, 255, 255, $82, 4, TrainerSwimmermSimon, -1
-	person_event SPRITE_OLIVINE_RIVAL, 34, 22, $8, $0, 255, 255, $82, 5, TrainerSwimmermRandall, -1
-	person_event SPRITE_SWIMMER_GIRL, 23, 7, $9, $0, 255, 255, $a2, 4, TrainerSwimmerfElaine, -1
-	person_event SPRITE_SWIMMER_GIRL, 29, 14, $1f, $0, 255, 255, $a2, 3, TrainerSwimmerfPaula, -1
-	person_event SPRITE_ROCK, 15, 11, $18, $0, 255, 255, $0, 0, Route40Rock, -1
-	person_event SPRITE_ROCK, 13, 10, $18, $0, 255, 255, $0, 0, Route40Rock, -1
-	person_event SPRITE_ROCK, 12, 11, $18, $0, 255, 255, $0, 0, Route40Rock, -1
-	person_event SPRITE_LASS, 17, 15, $6, $0, 255, 255, $0, 0, LassScript_0x1a61c4, -1
-	person_event SPRITE_BUENA, 14, 12, $3, $0, 255, 255, $0, 0, MonicaScript, EVENT_75E
-	person_event SPRITE_POKEFAN_M, 10, 11, $9, $0, 255, 255, $0, 0, PokefanMScript_0x1a61c7, -1
-	person_event SPRITE_LASS, 8, 17, $3, $0, 255, 255, $a0, 0, LassScript_0x1a61d3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, $3, $0, 255, 255, $90, 0, StandingYoungsterScript_0x1a61d6, EVENT_7CF
+	person_event SPRITE_OLIVINE_RIVAL, 19, 18, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerSwimmermSimon, -1
+	person_event SPRITE_OLIVINE_RIVAL, 34, 22, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerSwimmermRandall, -1
+	person_event SPRITE_SWIMMER_GIRL, 23, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerSwimmerfElaine, -1
+	person_event SPRITE_SWIMMER_GIRL, 29, 14, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfPaula, -1
+	person_event SPRITE_ROCK, 15, 11, OW_LEFT | $10, $0, -1, -1, $0, 0, Route40Rock, -1
+	person_event SPRITE_ROCK, 13, 10, OW_LEFT | $10, $0, -1, -1, $0, 0, Route40Rock, -1
+	person_event SPRITE_ROCK, 12, 11, OW_LEFT | $10, $0, -1, -1, $0, 0, Route40Rock, -1
+	person_event SPRITE_LASS, 17, 15, OW_UP | $2, $0, -1, -1, $0, 0, LassScript_0x1a61c4, -1
+	person_event SPRITE_BUENA, 14, 12, OW_DOWN | $3, $0, -1, -1, $0, 0, MonicaScript, EVENT_ROUTE_40_MONICA_OF_MONDAY
+	person_event SPRITE_POKEFAN_M, 10, 11, OW_LEFT | $1, $0, -1, -1, $0, 0, PokefanMScript_0x1a61c7, -1
+	person_event SPRITE_LASS, 8, 17, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x1a61d3, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, StandingYoungsterScript_0x1a61d6, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
--- a/maps/Route40BattleTowerGate.asm
+++ b/maps/Route40BattleTowerGate.asm
@@ -1,8 +1,8 @@
 Route40BattleTowerGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -10,7 +10,7 @@
 	dbw 2, UnknownScript_0x9f665
 
 UnknownScript_0x9f665:
-	clearevent EVENT_7CF
+	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	return
 
 RockerScript_0x9f669:
@@ -73,7 +73,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $7, $4, 1, GROUP_ROUTE_40, MAP_ROUTE_40
 	warp_def $7, $5, 1, GROUP_ROUTE_40, MAP_ROUTE_40
@@ -80,13 +80,13 @@
 	warp_def $0, $4, 1, GROUP_BATTLE_TOWER_OUTSIDE, MAP_BATTLE_TOWER_OUTSIDE
 	warp_def $0, $5, 2, GROUP_BATTLE_TOWER_OUTSIDE, MAP_BATTLE_TOWER_OUTSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_ROCKER, 7, 7, $3, $0, 255, 255, $a0, 0, RockerScript_0x9f669, EVENT_7CF
-	person_event SPRITE_TWIN, 9, 11, $4, $10, 255, 255, $80, 0, TwinScript_0x9f66c, -1
+	person_event SPRITE_ROCKER, 7, 7, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, RockerScript_0x9f669, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+	person_event SPRITE_TWIN, 9, 11, OW_UP | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, TwinScript_0x9f66c, -1
--- a/maps/Route41.asm
+++ b/maps/Route41.asm
@@ -1,29 +1,13 @@
 Route41_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerSwimmerfKaylee:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_KAYLEE
+	trainer EVENT_BEAT_SWIMMERF_KAYLEE, SWIMMERF, KAYLEE, SwimmerfKayleeSeenText, SwimmerfKayleeBeatenText, $0000, SwimmerfKayleeScript
 
-	; trainer group && trainer id
-	db SWIMMERF, KAYLEE
-
-	; text when seen
-	dw SwimmerfKayleeSeenText
-
-	; text when trainer beaten
-	dw SwimmerfKayleeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfKayleeScript
-
 SwimmerfKayleeScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSwimmerfSusie:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_SUSIE
+	trainer EVENT_BEAT_SWIMMERF_SUSIE, SWIMMERF, SUSIE, SwimmerfSusieSeenText, SwimmerfSusieBeatenText, $0000, SwimmerfSusieScript
 
-	; trainer group && trainer id
-	db SWIMMERF, SUSIE
-
-	; text when seen
-	dw SwimmerfSusieSeenText
-
-	; text when trainer beaten
-	dw SwimmerfSusieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfSusieScript
-
 SwimmerfSusieScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerSwimmerfDenise:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_DENISE
+	trainer EVENT_BEAT_SWIMMERF_DENISE, SWIMMERF, DENISE, SwimmerfDeniseSeenText, SwimmerfDeniseBeatenText, $0000, SwimmerfDeniseScript
 
-	; trainer group && trainer id
-	db SWIMMERF, DENISE
-
-	; text when seen
-	dw SwimmerfDeniseSeenText
-
-	; text when trainer beaten
-	dw SwimmerfDeniseBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfDeniseScript
-
 SwimmerfDeniseScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerSwimmerfKara:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_KARA
+	trainer EVENT_BEAT_SWIMMERF_KARA, SWIMMERF, KARA, SwimmerfKaraSeenText, SwimmerfKaraBeatenText, $0000, SwimmerfKaraScript
 
-	; trainer group && trainer id
-	db SWIMMERF, KARA
-
-	; text when seen
-	dw SwimmerfKaraSeenText
-
-	; text when trainer beaten
-	dw SwimmerfKaraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfKaraScript
-
 SwimmerfKaraScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerSwimmerfWendy:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_WENDY
+	trainer EVENT_BEAT_SWIMMERF_WENDY, SWIMMERF, WENDY, SwimmerfWendySeenText, SwimmerfWendyBeatenText, $0000, SwimmerfWendyScript
 
-	; trainer group && trainer id
-	db SWIMMERF, WENDY
-
-	; text when seen
-	dw SwimmerfWendySeenText
-
-	; text when trainer beaten
-	dw SwimmerfWendyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfWendyScript
-
 SwimmerfWendyScript:
 	talkaftercancel
 	loadfont
@@ -141,24 +61,8 @@
 	end
 
 TrainerSwimmermCharlie:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_CHARLIE
+	trainer EVENT_BEAT_SWIMMERM_CHARLIE, SWIMMERM, CHARLIE, SwimmermCharlieSeenText, SwimmermCharlieBeatenText, $0000, SwimmermCharlieScript
 
-	; trainer group && trainer id
-	db SWIMMERM, CHARLIE
-
-	; text when seen
-	dw SwimmermCharlieSeenText
-
-	; text when trainer beaten
-	dw SwimmermCharlieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermCharlieScript
-
 SwimmermCharlieScript:
 	talkaftercancel
 	loadfont
@@ -168,24 +72,8 @@
 	end
 
 TrainerSwimmermGeorge:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_GEORGE
+	trainer EVENT_BEAT_SWIMMERM_GEORGE, SWIMMERM, GEORGE, SwimmermGeorgeSeenText, SwimmermGeorgeBeatenText, $0000, SwimmermGeorgeScript
 
-	; trainer group && trainer id
-	db SWIMMERM, GEORGE
-
-	; text when seen
-	dw SwimmermGeorgeSeenText
-
-	; text when trainer beaten
-	dw SwimmermGeorgeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermGeorgeScript
-
 SwimmermGeorgeScript:
 	talkaftercancel
 	loadfont
@@ -195,24 +83,8 @@
 	end
 
 TrainerSwimmermBerke:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_BERKE
+	trainer EVENT_BEAT_SWIMMERM_BERKE, SWIMMERM, BERKE, SwimmermBerkeSeenText, SwimmermBerkeBeatenText, $0000, SwimmermBerkeScript
 
-	; trainer group && trainer id
-	db SWIMMERM, BERKE
-
-	; text when seen
-	dw SwimmermBerkeSeenText
-
-	; text when trainer beaten
-	dw SwimmermBerkeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermBerkeScript
-
 SwimmermBerkeScript:
 	talkaftercancel
 	loadfont
@@ -222,24 +94,8 @@
 	end
 
 TrainerSwimmermKirk:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_KIRK
+	trainer EVENT_BEAT_SWIMMERM_KIRK, SWIMMERM, KIRK, SwimmermKirkSeenText, SwimmermKirkBeatenText, $0000, SwimmermKirkScript
 
-	; trainer group && trainer id
-	db SWIMMERM, KIRK
-
-	; text when seen
-	dw SwimmermKirkSeenText
-
-	; text when trainer beaten
-	dw SwimmermKirkBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermKirkScript
-
 SwimmermKirkScript:
 	talkaftercancel
 	loadfont
@@ -249,24 +105,8 @@
 	end
 
 TrainerSwimmermMathew:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_MATHEW
+	trainer EVENT_BEAT_SWIMMERM_MATHEW, SWIMMERM, MATHEW, SwimmermMathewSeenText, SwimmermMathewBeatenText, $0000, SwimmermMathewScript
 
-	; trainer group && trainer id
-	db SWIMMERM, MATHEW
-
-	; text when seen
-	dw SwimmermMathewSeenText
-
-	; text when trainer beaten
-	dw SwimmermMathewBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermMathewScript
-
 SwimmermMathewScript:
 	talkaftercancel
 	loadfont
@@ -280,8 +120,7 @@
 	jumpstd smashrock
 
 MapRoute41SignpostItem0:
-	dw $00ac
-	db MAX_ETHER
+	dwb EVENT_ROUTE_41_HIDDEN_MAX_ETHER, MAX_ETHER
 
 SwimmermCharlieSeenText:
 	text "The water's warm"
@@ -494,7 +333,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $11, $c, 1, GROUP_WHIRL_ISLAND_NW, MAP_WHIRL_ISLAND_NW
 	warp_def $13, $24, 1, GROUP_WHIRL_ISLAND_NE, MAP_WHIRL_ISLAND_NE
@@ -501,22 +340,22 @@
 	warp_def $25, $c, 1, GROUP_WHIRL_ISLAND_SW, MAP_WHIRL_ISLAND_SW
 	warp_def $2d, $24, 1, GROUP_WHIRL_ISLAND_SE, MAP_WHIRL_ISLAND_SE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 35, 9, $7, MapRoute41SignpostItem0
+	signpost 35, 9, SIGNPOST_ITEM, MapRoute41SignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 10
-	person_event SPRITE_OLIVINE_RIVAL, 10, 36, $a, $0, 255, 255, $82, 3, TrainerSwimmermCharlie, -1
-	person_event SPRITE_OLIVINE_RIVAL, 12, 50, $a, $0, 255, 255, $82, 3, TrainerSwimmermGeorge, -1
-	person_event SPRITE_OLIVINE_RIVAL, 30, 24, $1e, $0, 255, 255, $82, 3, TrainerSwimmermBerke, -1
-	person_event SPRITE_OLIVINE_RIVAL, 34, 36, $1f, $0, 255, 255, $82, 3, TrainerSwimmermKirk, -1
-	person_event SPRITE_OLIVINE_RIVAL, 50, 23, $1e, $0, 255, 255, $82, 3, TrainerSwimmermMathew, -1
-	person_event SPRITE_SWIMMER_GIRL, 8, 21, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfKaylee, -1
-	person_event SPRITE_SWIMMER_GIRL, 23, 27, $7, $0, 255, 255, $a2, 3, TrainerSwimmerfSusie, -1
-	person_event SPRITE_SWIMMER_GIRL, 38, 31, $8, $0, 255, 255, $a2, 3, TrainerSwimmerfDenise, -1
-	person_event SPRITE_SWIMMER_GIRL, 32, 48, $9, $0, 255, 255, $a2, 4, TrainerSwimmerfKara, -1
-	person_event SPRITE_SWIMMER_GIRL, 54, 13, $a, $0, 255, 255, $a2, 2, TrainerSwimmerfWendy, -1
+	person_event SPRITE_OLIVINE_RIVAL, 10, 36, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermCharlie, -1
+	person_event SPRITE_OLIVINE_RIVAL, 12, 50, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermGeorge, -1
+	person_event SPRITE_OLIVINE_RIVAL, 30, 24, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermBerke, -1
+	person_event SPRITE_OLIVINE_RIVAL, 34, 36, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermKirk, -1
+	person_event SPRITE_OLIVINE_RIVAL, 50, 23, OW_RIGHT | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermMathew, -1
+	person_event SPRITE_SWIMMER_GIRL, 8, 21, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfKaylee, -1
+	person_event SPRITE_SWIMMER_GIRL, 23, 27, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfSusie, -1
+	person_event SPRITE_SWIMMER_GIRL, 38, 31, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfDenise, -1
+	person_event SPRITE_SWIMMER_GIRL, 32, 48, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerSwimmerfKara, -1
+	person_event SPRITE_SWIMMER_GIRL, 54, 13, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerSwimmerfWendy, -1
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -1,5 +1,5 @@
 Route42_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x1a9216, $0000
 	dw UnknownScript_0x1a9217, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x1a9216:
@@ -16,7 +16,7 @@
 	end
 
 UnknownScript_0x1a9218:
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	pause 15
 	playsound SFX_WARP_FROM
 	applymovement $a, MovementData_0x1a9356
@@ -28,26 +28,10 @@
 	end
 
 TrainerFisherTully1:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_TULLY
+	trainer EVENT_BEAT_FISHER_TULLY, FISHER, TULLY1, FisherTully1SeenText, FisherTully1BeatenText, $0000, FisherTully1Script
 
-	; trainer group && trainer id
-	db FISHER, TULLY1
-
-	; text when seen
-	dw FisherTully1SeenText
-
-	; text when trainer beaten
-	dw FisherTully1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherTully1Script
-
 FisherTully1Script:
-	writecode VAR_CALLERID, $1d
+	writecode VAR_CALLERID, PHONE_FISHER_TULLY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_TULLY
@@ -54,7 +38,7 @@
 	iftrue UnknownScript_0x1a927f
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
 	iftrue UnknownScript_0x1a92dc
-	checkcellnum $1d
+	checkcellnum PHONE_FISHER_TULLY
 	iftrue UnknownScript_0x1a92fd
 	checkevent EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a9268
@@ -67,7 +51,7 @@
 UnknownScript_0x1a9268:
 	scall UnknownScript_0x1a92f5
 UnknownScript_0x1a926b:
-	askforphonenumber $1d
+	askforphonenumber PHONE_FISHER_TULLY
 	if_equal $1, UnknownScript_0x1a9305
 	if_equal $2, UnknownScript_0x1a9301
 	trainertotext FISHER, TULLY1, $0
@@ -127,7 +111,7 @@
 	verbosegiveitem WATER_STONE, 1
 	iffalse UnknownScript_0x1a92ee
 	clearflag ENGINE_TULLY_HAS_WATER_STONE
-	setevent EVENT_103
+	setevent EVENT_TULLY_GAVE_WATER_STONE
 	jump UnknownScript_0x1a92fd
 
 UnknownScript_0x1a92ee:
@@ -170,24 +154,8 @@
 	end
 
 TrainerPokemaniacShane:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_SHANE
+	trainer EVENT_BEAT_POKEMANIAC_SHANE, POKEMANIAC, SHANE, PokemaniacShaneSeenText, PokemaniacShaneBeatenText, $0000, PokemaniacShaneScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, SHANE
-
-	; text when seen
-	dw PokemaniacShaneSeenText
-
-	; text when trainer beaten
-	dw PokemaniacShaneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacShaneScript
-
 PokemaniacShaneScript:
 	talkaftercancel
 	loadfont
@@ -197,24 +165,8 @@
 	end
 
 TrainerHikerBenjamin:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_BENJAMIN
+	trainer EVENT_BEAT_HIKER_BENJAMIN, HIKER, BENJAMIN, HikerBenjaminSeenText, HikerBenjaminBeatenText, $0000, HikerBenjaminScript
 
-	; trainer group && trainer id
-	db HIKER, BENJAMIN
-
-	; text when seen
-	dw HikerBenjaminSeenText
-
-	; text when trainer beaten
-	dw HikerBenjaminBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerBenjaminScript
-
 HikerBenjaminScript:
 	talkaftercancel
 	loadfont
@@ -251,8 +203,7 @@
 	fruittree $17
 
 MapRoute42SignpostItem4:
-	dw $00ad
-	db MAX_POTION
+	dwb EVENT_ROUTE_42_HIDDEN_MAX_POTION, MAX_POTION
 	
 
 MovementData_0x1a9356:
@@ -363,7 +314,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $8, $0, 3, GROUP_ROUTE_42_ECRUTEAK_GATE, MAP_ROUTE_42_ECRUTEAK_GATE
 	warp_def $9, $0, 4, GROUP_ROUTE_42_ECRUTEAK_GATE, MAP_ROUTE_42_ECRUTEAK_GATE
@@ -371,26 +322,26 @@
 	warp_def $9, $1c, 2, GROUP_MOUNT_MORTAR_1F_OUTSIDE, MAP_MOUNT_MORTAR_1F_OUTSIDE
 	warp_def $7, $2e, 3, GROUP_MOUNT_MORTAR_1F_OUTSIDE, MAP_MOUNT_MORTAR_1F_OUTSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 1, $e, $18, $0, UnknownScript_0x1a9218, $0, $0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 10, 4, $0, MapRoute42Signpost0Script
-	signpost 5, 7, $0, MapRoute42Signpost1Script
-	signpost 9, 45, $0, MapRoute42Signpost2Script
-	signpost 8, 54, $0, MapRoute42Signpost3Script
-	signpost 11, 16, $7, MapRoute42SignpostItem4
+	signpost 10, 4, SIGNPOST_READ, MapRoute42Signpost0Script
+	signpost 5, 7, SIGNPOST_READ, MapRoute42Signpost1Script
+	signpost 9, 45, SIGNPOST_READ, MapRoute42Signpost2Script
+	signpost 8, 54, SIGNPOST_READ, MapRoute42Signpost3Script
+	signpost 11, 16, SIGNPOST_ITEM, MapRoute42SignpostItem4
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_FISHER, 14, 44, $8, $0, 255, 255, $a2, 1, TrainerFisherTully1, -1
-	person_event SPRITE_POKEFAN_M, 13, 55, $a, $0, 255, 255, $b2, 3, TrainerHikerBenjamin, -1
-	person_event SPRITE_SUPER_NERD, 12, 51, $6, $0, 255, 255, $92, 3, TrainerPokemaniacShane, -1
-	person_event SPRITE_FRUIT_TREE, 20, 31, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a934d, -1
-	person_event SPRITE_FRUIT_TREE, 20, 32, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a934f, -1
-	person_event SPRITE_FRUIT_TREE, 20, 33, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a9351, -1
-	person_event SPRITE_POKE_BALL, 8, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a9349, EVENT_6B3
-	person_event SPRITE_POKE_BALL, 12, 37, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a934b, EVENT_6B4
-	person_event SPRITE_SUICUNE, 20, 30, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
+	person_event SPRITE_FISHER, 14, 44, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherTully1, -1
+	person_event SPRITE_POKEFAN_M, 13, 55, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerBenjamin, -1
+	person_event SPRITE_SUPER_NERD, 12, 51, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacShane, -1
+	person_event SPRITE_FRUIT_TREE, 20, 31, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a934d, -1
+	person_event SPRITE_FRUIT_TREE, 20, 32, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a934f, -1
+	person_event SPRITE_FRUIT_TREE, 20, 33, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a9351, -1
+	person_event SPRITE_POKE_BALL, 8, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a9349, EVENT_ROUTE_42_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 12, 37, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a934b, EVENT_ROUTE_42_SUPER_POTION
+	person_event SPRITE_SUICUNE, 20, 30, OW_DOWN | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
--- a/maps/Route42EcruteakGate.asm
+++ b/maps/Route42EcruteakGate.asm
@@ -1,8 +1,8 @@
 Route42EcruteakGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x19a4b5:
@@ -20,7 +20,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 1, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $5, $0, 2, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
@@ -27,12 +27,12 @@
 	warp_def $4, $9, 1, GROUP_ROUTE_42, MAP_ROUTE_42
 	warp_def $5, $9, 2, GROUP_ROUTE_42, MAP_ROUTE_42
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x19a4b5, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x19a4b5, -1
--- a/maps/Route43.asm
+++ b/maps/Route43.asm
@@ -1,8 +1,8 @@
 Route43_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -20,24 +20,8 @@
 	return
 
 TrainerCamperSpencer:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_SPENCER
+	trainer EVENT_BEAT_CAMPER_SPENCER, CAMPER, SPENCER, CamperSpencerSeenText, CamperSpencerBeatenText, $0000, CamperSpencerScript
 
-	; trainer group && trainer id
-	db CAMPER, SPENCER
-
-	; text when seen
-	dw CamperSpencerSeenText
-
-	; text when trainer beaten
-	dw CamperSpencerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperSpencerScript
-
 CamperSpencerScript:
 	talkaftercancel
 	loadfont
@@ -47,24 +31,8 @@
 	end
 
 TrainerPokemaniacBen:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_BEN
+	trainer EVENT_BEAT_POKEMANIAC_BEN, POKEMANIAC, BEN, PokemaniacBenSeenText, PokemaniacBenBeatenText, $0000, PokemaniacBenScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, BEN
-
-	; text when seen
-	dw PokemaniacBenSeenText
-
-	; text when trainer beaten
-	dw PokemaniacBenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacBenScript
-
 PokemaniacBenScript:
 	talkaftercancel
 	loadfont
@@ -74,31 +42,15 @@
 	end
 
 TrainerPokemaniacBrent1:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_BRENT
+	trainer EVENT_BEAT_POKEMANIAC_BRENT, POKEMANIAC, BRENT1, PokemaniacBrent1SeenText, PokemaniacBrent1BeatenText, $0000, PokemaniacBrent1Script
 
-	; trainer group && trainer id
-	db POKEMANIAC, BRENT1
-
-	; text when seen
-	dw PokemaniacBrent1SeenText
-
-	; text when trainer beaten
-	dw PokemaniacBrent1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacBrent1Script
-
 PokemaniacBrent1Script:
-	writecode VAR_CALLERID, $1e
+	writecode VAR_CALLERID, PHONE_POKEMANIAC_BRENT
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_BRENT
 	iftrue UnknownScript_0x19d0cf
-	checkcellnum $1e
+	checkcellnum PHONE_POKEMANIAC_BRENT
 	iftrue UnknownScript_0x19d138
 	checkevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d0b8
@@ -111,7 +63,7 @@
 UnknownScript_0x19d0b8:
 	scall UnknownScript_0x19d130
 UnknownScript_0x19d0bb:
-	askforphonenumber $1e
+	askforphonenumber PHONE_POKEMANIAC_BRENT
 	if_equal $1, UnknownScript_0x19d140
 	if_equal $2, UnknownScript_0x19d13c
 	trainertotext POKEMANIAC, BRENT1, $0
@@ -195,24 +147,8 @@
 	end
 
 TrainerPokemaniacRon:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_RON
+	trainer EVENT_BEAT_POKEMANIAC_RON, POKEMANIAC, RON, PokemaniacRonSeenText, PokemaniacRonBeatenText, $0000, PokemaniacRonScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, RON
-
-	; text when seen
-	dw PokemaniacRonSeenText
-
-	; text when trainer beaten
-	dw PokemaniacRonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacRonScript
-
 PokemaniacRonScript:
 	talkaftercancel
 	loadfont
@@ -222,24 +158,8 @@
 	end
 
 TrainerFisherMarvin:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_MARVIN
+	trainer EVENT_BEAT_FISHER_MARVIN, FISHER, MARVIN, FisherMarvinSeenText, FisherMarvinBeatenText, $0000, FisherMarvinScript
 
-	; trainer group && trainer id
-	db FISHER, MARVIN
-
-	; text when seen
-	dw FisherMarvinSeenText
-
-	; text when trainer beaten
-	dw FisherMarvinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherMarvinScript
-
 FisherMarvinScript:
 	talkaftercancel
 	loadfont
@@ -249,26 +169,10 @@
 	end
 
 TrainerPicnickerTiffany3:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_TIFFANY
+	trainer EVENT_BEAT_PICNICKER_TIFFANY, PICNICKER, TIFFANY3, PicnickerTiffany3SeenText, PicnickerTiffany3BeatenText, $0000, PicnickerTiffany3Script
 
-	; trainer group && trainer id
-	db PICNICKER, TIFFANY3
-
-	; text when seen
-	dw PicnickerTiffany3SeenText
-
-	; text when trainer beaten
-	dw PicnickerTiffany3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerTiffany3Script
-
 PicnickerTiffany3Script:
-	writecode VAR_CALLERID, $1f
+	writecode VAR_CALLERID, PHONE_PICNICKER_TIFFANY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_TIFFANY
@@ -275,7 +179,7 @@
 	iftrue UnknownScript_0x19d1c1
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
 	iftrue UnknownScript_0x19d21e
-	checkcellnum $1f
+	checkcellnum PHONE_PICNICKER_TIFFANY
 	iftrue UnknownScript_0x19d245
 	checkpoke CLEFAIRY
 	iffalse UnknownScript_0x19d233
@@ -290,7 +194,7 @@
 UnknownScript_0x19d1aa:
 	scall UnknownScript_0x19d23d
 UnknownScript_0x19d1ad:
-	askforphonenumber $1f
+	askforphonenumber PHONE_PICNICKER_TIFFANY
 	if_equal $1, UnknownScript_0x19d24d
 	if_equal $2, UnknownScript_0x19d249
 	trainertotext PICNICKER, TIFFANY3, $0
@@ -350,7 +254,7 @@
 	verbosegiveitem PINK_BOW, 1
 	iffalse UnknownScript_0x19d230
 	clearflag ENGINE_TIFFANY_HAS_PINK_BOW
-	setevent EVENT_104
+	setevent EVENT_TIFFANY_GAVE_PINK_BOW
 	jump UnknownScript_0x19d245
 
 UnknownScript_0x19d230:
@@ -593,7 +497,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $33, $9, 1, GROUP_ROUTE_43_MAHOGANY_GATE, MAP_ROUTE_43_MAHOGANY_GATE
 	warp_def $33, $a, 2, GROUP_ROUTE_43_MAHOGANY_GATE, MAP_ROUTE_43_MAHOGANY_GATE
@@ -601,22 +505,22 @@
 	warp_def $1f, $11, 1, GROUP_ROUTE_43_GATE, MAP_ROUTE_43_GATE
 	warp_def $1f, $12, 2, GROUP_ROUTE_43_GATE, MAP_ROUTE_43_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 3, 13, $0, MapRoute43Signpost0Script
-	signpost 49, 11, $0, MapRoute43Signpost1Script
-	signpost 38, 16, $0, MapRoute43Signpost2Script
+	signpost 3, 13, SIGNPOST_READ, MapRoute43Signpost0Script
+	signpost 49, 11, SIGNPOST_READ, MapRoute43Signpost1Script
+	signpost 38, 16, SIGNPOST_READ, MapRoute43Signpost2Script
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_SUPER_NERD, 9, 17, $8, $0, 255, 255, $92, 2, TrainerPokemaniacBen, -1
-	person_event SPRITE_SUPER_NERD, 24, 17, $a, $0, 255, 255, $92, 3, TrainerPokemaniacBrent1, -1
-	person_event SPRITE_SUPER_NERD, 11, 18, $6, $0, 255, 255, $92, 2, TrainerPokemaniacRon, -1
-	person_event SPRITE_FISHER, 20, 8, $9, $0, 255, 255, $a2, 4, TrainerFisherMarvin, -1
-	person_event SPRITE_LASS, 29, 13, $6, $0, 255, 255, $a2, 2, TrainerPicnickerTiffany3, -1
-	person_event SPRITE_YOUNGSTER, 44, 17, $a, $0, 255, 255, $a2, 3, TrainerCamperSpencer, -1
-	person_event SPRITE_FRUIT_TREE, 30, 5, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19d266, -1
-	person_event SPRITE_POKE_BALL, 36, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x19d268, EVENT_6B5
+	person_event SPRITE_SUPER_NERD, 9, 17, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPokemaniacBen, -1
+	person_event SPRITE_SUPER_NERD, 24, 17, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacBrent1, -1
+	person_event SPRITE_SUPER_NERD, 11, 18, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPokemaniacRon, -1
+	person_event SPRITE_FISHER, 20, 8, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerFisherMarvin, -1
+	person_event SPRITE_LASS, 29, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerPicnickerTiffany3, -1
+	person_event SPRITE_YOUNGSTER, 44, 17, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperSpencer, -1
+	person_event SPRITE_FRUIT_TREE, 30, 5, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19d266, -1
+	person_event SPRITE_POKE_BALL, 36, 16, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19d268, EVENT_ROUTE_43_MAX_ETHER
--- a/maps/Route43Gate.asm
+++ b/maps/Route43Gate.asm
@@ -1,5 +1,5 @@
 Route43Gate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x19abc5, $0000
 	dw UnknownScript_0x19abc9, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -40,10 +40,10 @@
 
 UnknownScript_0x19abea:
 	applymovement $0, MovementData_0x19aca2
-	showemote $0, $4, 15
+	showemote EMOTE_SHOCK, $4, 15
 	applymovement $4, MovementData_0x19acbb
 	spriteface $3, UP
-	showemote $0, $3, 15
+	showemote EMOTE_SHOCK, $3, 15
 	applymovement $3, MovementData_0x19aca4
 	loadfont
 	writetext UnknownText_0x19acd2
@@ -72,10 +72,10 @@
 	end
 
 UnknownScript_0x19ac38:
-	showemote $0, $3, 15
+	showemote EMOTE_SHOCK, $3, 15
 	applymovement $3, MovementData_0x19acaf
 	spriteface $4, DOWN
-	showemote $0, $4, 15
+	showemote EMOTE_SHOCK, $4, 15
 	applymovement $4, MovementData_0x19acc7
 	loadfont
 	writetext UnknownText_0x19acd2
@@ -249,7 +249,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 4, GROUP_ROUTE_43, MAP_ROUTE_43
 	warp_def $0, $5, 5, GROUP_ROUTE_43, MAP_ROUTE_43
@@ -256,14 +256,14 @@
 	warp_def $7, $4, 3, GROUP_ROUTE_43, MAP_ROUTE_43
 	warp_def $7, $5, 3, GROUP_ROUTE_43, MAP_ROUTE_43
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x19ac85, EVENT_735
-	person_event SPRITE_ROCKET, 8, 6, $6, $0, 255, 255, $0, 0, RocketScript_0x19ac82, EVENT_6DC
-	person_event SPRITE_ROCKET, 8, 11, $7, $0, 255, 255, $0, 0, RocketScript_0x19ac82, EVENT_6DC
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x19ac85, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_ROCKET, 8, 6, OW_UP | $2, $0, -1, -1, $0, 0, RocketScript_0x19ac82, EVENT_ROUTE_43_GATE_ROCKETS
+	person_event SPRITE_ROCKET, 8, 11, OW_UP | $3, $0, -1, -1, $0, 0, RocketScript_0x19ac82, EVENT_ROUTE_43_GATE_ROCKETS
--- a/maps/Route43MahoganyGate.asm
+++ b/maps/Route43MahoganyGate.asm
@@ -1,8 +1,8 @@
 Route43MahoganyGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x19ab0b:
@@ -39,7 +39,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 1, GROUP_ROUTE_43, MAP_ROUTE_43
 	warp_def $0, $5, 2, GROUP_ROUTE_43, MAP_ROUTE_43
@@ -46,12 +46,12 @@
 	warp_def $7, $4, 5, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 	warp_def $7, $5, 5, GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x19ab0b, -1
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x19ab0b, -1
--- a/maps/Route44.asm
+++ b/maps/Route44.asm
@@ -1,36 +1,20 @@
 Route44_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBird_keeperVance1:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_VANCE
+	trainer EVENT_BEAT_BIRD_KEEPER_VANCE, BIRD_KEEPER, VANCE1, Bird_keeperVance1SeenText, Bird_keeperVance1BeatenText, $0000, Bird_keeperVance1Script
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, VANCE1
-
-	; text when seen
-	dw Bird_keeperVance1SeenText
-
-	; text when trainer beaten
-	dw Bird_keeperVance1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperVance1Script
-
 Bird_keeperVance1Script:
-	writecode VAR_CALLERID, $20
+	writecode VAR_CALLERID, PHONE_BIRDKEEPER_VANCE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_VANCE
 	iftrue UnknownScript_0x19d86a
-	checkcellnum $20
+	checkcellnum PHONE_BIRDKEEPER_VANCE
 	iftrue UnknownScript_0x19d8eb
 	checkevent EVENT_VANCE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d853
@@ -43,7 +27,7 @@
 UnknownScript_0x19d853:
 	scall UnknownScript_0x19d8e3
 UnknownScript_0x19d856:
-	askforphonenumber $20
+	askforphonenumber PHONE_BIRDKEEPER_VANCE
 	if_equal $1, UnknownScript_0x19d8f3
 	if_equal $2, UnknownScript_0x19d8ef
 	trainertotext BIRD_KEEPER, VANCE1, $0
@@ -153,24 +137,8 @@
 	end
 
 TrainerPsychicPhil:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_PHIL
+	trainer EVENT_BEAT_PSYCHIC_PHIL, PSYCHIC_T, PHIL, PsychicPhilSeenText, PsychicPhilBeatenText, $0000, PsychicPhilScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, PHIL
-
-	; text when seen
-	dw PsychicPhilSeenText
-
-	; text when trainer beaten
-	dw PsychicPhilBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicPhilScript
-
 PsychicPhilScript:
 	talkaftercancel
 	loadfont
@@ -180,26 +148,10 @@
 	end
 
 TrainerFisherWilton1:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_WILTON
+	trainer EVENT_BEAT_FISHER_WILTON, FISHER, WILTON1, FisherWilton1SeenText, FisherWilton1BeatenText, $0000, FisherWilton1Script
 
-	; trainer group && trainer id
-	db FISHER, WILTON1
-
-	; text when seen
-	dw FisherWilton1SeenText
-
-	; text when trainer beaten
-	dw FisherWilton1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherWilton1Script
-
 FisherWilton1Script:
-	writecode VAR_CALLERID, $21
+	writecode VAR_CALLERID, PHONE_FISHER_WILTON
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_WILTON
@@ -206,7 +158,7 @@
 	iftrue UnknownScript_0x19d96e
 	checkflag ENGINE_WILTON_HAS_ITEM
 	iftrue UnknownScript_0x19d9b4
-	checkcellnum $21
+	checkcellnum PHONE_FISHER_WILTON
 	iftrue UnknownScript_0x19d8eb
 	checkevent EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d957
@@ -219,7 +171,7 @@
 UnknownScript_0x19d957:
 	scall UnknownScript_0x19d8e3
 UnknownScript_0x19d95a:
-	askforphonenumber $21
+	askforphonenumber PHONE_FISHER_WILTON
 	if_equal $1, UnknownScript_0x19d8f3
 	if_equal $2, UnknownScript_0x19d8ef
 	trainertotext FISHER, WILTON1, $0
@@ -291,24 +243,8 @@
 	jump UnknownScript_0x19d8ff
 
 TrainerFisherEdgar:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_EDGAR
+	trainer EVENT_BEAT_FISHER_EDGAR, FISHER, EDGAR, FisherEdgarSeenText, FisherEdgarBeatenText, $0000, FisherEdgarScript
 
-	; trainer group && trainer id
-	db FISHER, EDGAR
-
-	; text when seen
-	dw FisherEdgarSeenText
-
-	; text when trainer beaten
-	dw FisherEdgarBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherEdgarScript
-
 FisherEdgarScript:
 	talkaftercancel
 	loadfont
@@ -318,24 +254,8 @@
 	end
 
 TrainerCooltrainerfCybil:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_CYBIL
+	trainer EVENT_BEAT_COOLTRAINERF_CYBIL, COOLTRAINERF, CYBIL, CooltrainerfCybilSeenText, CooltrainerfCybilBeatenText, $0000, CooltrainerfCybilScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, CYBIL
-
-	; text when seen
-	dw CooltrainerfCybilSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfCybilBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfCybilScript
-
 CooltrainerfCybilScript:
 	talkaftercancel
 	loadfont
@@ -345,24 +265,8 @@
 	end
 
 TrainerPokemaniacZach:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ZACH
+	trainer EVENT_BEAT_POKEMANIAC_ZACH, POKEMANIAC, ZACH, PokemaniacZachSeenText, PokemaniacZachBeatenText, $0000, PokemaniacZachScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ZACH
-
-	; text when seen
-	dw PokemaniacZachSeenText
-
-	; text when trainer beaten
-	dw PokemaniacZachBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacZachScript
-
 PokemaniacZachScript:
 	talkaftercancel
 	loadfont
@@ -372,24 +276,8 @@
 	end
 
 TrainerCooltrainermAllen:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_ALLEN
+	trainer EVENT_BEAT_COOLTRAINERM_ALLEN, COOLTRAINERM, ALLEN, CooltrainermAllenSeenText, CooltrainermAllenBeatenText, $0000, CooltrainermAllenScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, ALLEN
-
-	; text when seen
-	dw CooltrainermAllenSeenText
-
-	; text when trainer beaten
-	dw CooltrainermAllenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermAllenScript
-
 CooltrainermAllenScript:
 	talkaftercancel
 	loadfont
@@ -417,8 +305,7 @@
 	db MAX_REPEL, 1
 
 MapRoute44SignpostItem2:
-	dw $00ae
-	db ELIXER
+	dwb EVENT_ROUTE_44_HIDDEN_ELIXER, ELIXER
 	
 
 FisherWilton1SeenText:
@@ -611,29 +498,29 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $38, 1, GROUP_ICE_PATH_1F, MAP_ICE_PATH_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 7, 53, $0, MapRoute44Signpost0Script
-	signpost 10, 6, $0, MapRoute44Signpost1Script
-	signpost 9, 32, $7, MapRoute44SignpostItem2
+	signpost 7, 53, SIGNPOST_READ, MapRoute44Signpost0Script
+	signpost 10, 6, SIGNPOST_READ, MapRoute44Signpost1Script
+	signpost 9, 32, SIGNPOST_ITEM, MapRoute44SignpostItem2
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_FISHER, 7, 39, $6, $0, 255, 255, $a2, 1, TrainerFisherWilton1, -1
-	person_event SPRITE_FISHER, 17, 23, $9, $0, 255, 255, $a2, 1, TrainerFisherEdgar, -1
-	person_event SPRITE_YOUNGSTER, 13, 14, $1f, $0, 255, 255, $92, 3, TrainerPsychicPhil, -1
-	person_event SPRITE_SUPER_NERD, 6, 47, $1f, $0, 255, 255, $a2, 3, TrainerPokemaniacZach, -1
-	person_event SPRITE_YOUNGSTER, 9, 55, $6, $0, 255, 255, $a2, 2, TrainerBird_keeperVance1, -1
-	person_event SPRITE_COOLTRAINER_M, 19, 45, $8, $0, 255, 255, $82, 5, TrainerCooltrainermAllen, -1
-	person_event SPRITE_COOLTRAINER_F, 18, 35, $8, $0, 255, 255, $82, 5, TrainerCooltrainerfCybil, -1
-	person_event SPRITE_FRUIT_TREE, 9, 13, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19da40, -1
-	person_event SPRITE_POKE_BALL, 12, 34, $1, $0, 255, 255, $1, 0, ItemFragment_0x19da42, EVENT_6B6
-	person_event SPRITE_POKE_BALL, 8, 49, $1, $0, 255, 255, $1, 0, ItemFragment_0x19da44, EVENT_6B7
-	person_event SPRITE_POKE_BALL, 13, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x19da46, EVENT_7BD
+	person_event SPRITE_FISHER, 7, 39, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherWilton1, -1
+	person_event SPRITE_FISHER, 17, 23, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherEdgar, -1
+	person_event SPRITE_YOUNGSTER, 13, 14, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicPhil, -1
+	person_event SPRITE_SUPER_NERD, 6, 47, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPokemaniacZach, -1
+	person_event SPRITE_YOUNGSTER, 9, 55, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerBird_keeperVance1, -1
+	person_event SPRITE_COOLTRAINER_M, 19, 45, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerCooltrainermAllen, -1
+	person_event SPRITE_COOLTRAINER_F, 18, 35, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerCooltrainerfCybil, -1
+	person_event SPRITE_FRUIT_TREE, 9, 13, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19da40, -1
+	person_event SPRITE_POKE_BALL, 12, 34, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19da42, EVENT_ROUTE_44_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 8, 49, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19da44, EVENT_ROUTE_44_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 13, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19da46, EVENT_ROUTE_44_MAX_REPEL
--- a/maps/Route45.asm
+++ b/maps/Route45.asm
@@ -1,34 +1,18 @@
 Route45_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBlackbeltKenji:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_KENJI
+	trainer EVENT_BEAT_BLACKBELT_KENJI, BLACKBELT_T, KENJI3, BlackbeltKenji3SeenText, BlackbeltKenji3BeatenText, $0000, BlackbeltKenji3Script
 
-	; trainer group && trainer id
-	db BLACKBELT_T, KENJI3
-
-	; text when seen
-	dw BlackbeltKenji3SeenText
-
-	; text when trainer beaten
-	dw BlackbeltKenji3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltKenji3Script
-
 BlackbeltKenji3Script:
-	writecode VAR_CALLERID, $22
+	writecode VAR_CALLERID, PHONE_BLACKBELT_KENJI
 	talkaftercancel
 	loadfont
-	checkcellnum $22
+	checkcellnum PHONE_BLACKBELT_KENJI
 	iftrue UnknownScript_0x19e0e4
 	checkevent EVENT_KENJI_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19e0cd
@@ -42,7 +26,7 @@
 UnknownScript_0x19e0cd:
 	scall UnknownScript_0x19e11f
 UnknownScript_0x19e0d0:
-	askforphonenumber $22
+	askforphonenumber PHONE_BLACKBELT_KENJI
 	if_equal $1, UnknownScript_0x19e12f
 	if_equal $2, UnknownScript_0x19e12b
 	trainertotext BLACKBELT_T, KENJI3, $0
@@ -56,12 +40,12 @@
 	iftrue UnknownScript_0x19e10c
 	checknite
 	iftrue UnknownScript_0x19e112
-	checkevent EVENT_26A
+	checkevent EVENT_KENJI_ON_BREAK
 	iffalse UnknownScript_0x19e127
 	scall UnknownScript_0x19e137
 	verbosegiveitem PP_UP, 1
 	iffalse UnknownScript_0x19e118
-	clearevent EVENT_26A
+	clearevent EVENT_KENJI_ON_BREAK
 	special Function11485
 	jump UnknownScript_0x19e127
 
@@ -126,24 +110,8 @@
 	end
 
 TrainerHikerErik:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_ERIK
+	trainer EVENT_BEAT_HIKER_ERIK, HIKER, ERIK, HikerErikSeenText, HikerErikBeatenText, $0000, HikerErikScript
 
-	; trainer group && trainer id
-	db HIKER, ERIK
-
-	; text when seen
-	dw HikerErikSeenText
-
-	; text when trainer beaten
-	dw HikerErikBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerErikScript
-
 HikerErikScript:
 	talkaftercancel
 	loadfont
@@ -153,24 +121,8 @@
 	end
 
 TrainerHikerMichael:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_MICHAEL
+	trainer EVENT_BEAT_HIKER_MICHAEL, HIKER, MICHAEL, HikerMichaelSeenText, HikerMichaelBeatenText, $0000, HikerMichaelScript
 
-	; trainer group && trainer id
-	db HIKER, MICHAEL
-
-	; text when seen
-	dw HikerMichaelSeenText
-
-	; text when trainer beaten
-	dw HikerMichaelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerMichaelScript
-
 HikerMichaelScript:
 	talkaftercancel
 	loadfont
@@ -180,31 +132,15 @@
 	end
 
 TrainerHikerParry:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_PARRY
+	trainer EVENT_BEAT_HIKER_PARRY, HIKER, PARRY3, HikerParry3SeenText, HikerParry3BeatenText, $0000, HikerParry3Script
 
-	; trainer group && trainer id
-	db HIKER, PARRY3
-
-	; text when seen
-	dw HikerParry3SeenText
-
-	; text when trainer beaten
-	dw HikerParry3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerParry3Script
-
 HikerParry3Script:
-	writecode VAR_CALLERID, $23
+	writecode VAR_CALLERID, PHONE_HIKER_PARRY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_PARRY
 	iftrue UnknownScript_0x19e1b8
-	checkcellnum $23
+	checkcellnum PHONE_HIKER_PARRY
 	iftrue UnknownScript_0x19e127
 	checkevent EVENT_PARRY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19e1a1
@@ -217,7 +153,7 @@
 UnknownScript_0x19e1a1:
 	scall UnknownScript_0x19e11f
 UnknownScript_0x19e1a4:
-	askforphonenumber $23
+	askforphonenumber PHONE_HIKER_PARRY
 	if_equal $1, UnknownScript_0x19e12f
 	if_equal $2, UnknownScript_0x19e12b
 	trainertotext HIKER, PARRY1, $0
@@ -282,24 +218,8 @@
 	jump UnknownScript_0x19e127
 
 TrainerHikerTimothy:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_TIMOTHY
+	trainer EVENT_BEAT_HIKER_TIMOTHY, HIKER, TIMOTHY, HikerTimothySeenText, HikerTimothyBeatenText, $0000, HikerTimothyScript
 
-	; trainer group && trainer id
-	db HIKER, TIMOTHY
-
-	; text when seen
-	dw HikerTimothySeenText
-
-	; text when trainer beaten
-	dw HikerTimothyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerTimothyScript
-
 HikerTimothyScript:
 	talkaftercancel
 	loadfont
@@ -309,24 +229,8 @@
 	end
 
 TrainerCooltrainermRyan:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_RYAN
+	trainer EVENT_BEAT_COOLTRAINERM_RYAN, COOLTRAINERM, RYAN, CooltrainermRyanSeenText, CooltrainermRyanBeatenText, $0000, CooltrainermRyanScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, RYAN
-
-	; text when seen
-	dw CooltrainermRyanSeenText
-
-	; text when trainer beaten
-	dw CooltrainermRyanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermRyanScript
-
 CooltrainermRyanScript:
 	talkaftercancel
 	loadfont
@@ -336,24 +240,8 @@
 	end
 
 TrainerCooltrainerfKelly:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_KELLY
+	trainer EVENT_BEAT_COOLTRAINERF_KELLY, COOLTRAINERF, KELLY, CooltrainerfKellySeenText, CooltrainerfKellyBeatenText, $0000, CooltrainerfKellyScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, KELLY
-
-	; text when seen
-	dw CooltrainerfKellySeenText
-
-	; text when trainer beaten
-	dw CooltrainerfKellyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfKellyScript
-
 CooltrainerfKellyScript:
 	talkaftercancel
 	loadfont
@@ -409,8 +297,7 @@
 	db MAX_POTION, 1
 
 MapRoute45SignpostItem1:
-	dw $00af
-	db PP_UP
+	dwb EVENT_ROUTE_45_HIDDEN_PP_UP, PP_UP
 	
 
 HikerErikSeenText:
@@ -634,30 +521,30 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $5, $2, 1, GROUP_DARK_CAVE_BLACKTHORN_ENTRANCE, MAP_DARK_CAVE_BLACKTHORN_ENTRANCE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 4, 10, $0, MapRoute45Signpost0Script
-	signpost 80, 13, $7, MapRoute45SignpostItem1
+	signpost 4, 10, SIGNPOST_READ, MapRoute45Signpost0Script
+	signpost 80, 13, SIGNPOST_ITEM, MapRoute45SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 13
-	person_event SPRITE_POKEFAN_M, 20, 14, $9, $0, 255, 255, $b2, 1, TrainerHikerErik, -1
-	person_event SPRITE_POKEFAN_M, 69, 19, $9, $0, 255, 255, $b2, 2, TrainerHikerMichael, -1
-	person_event SPRITE_POKEFAN_M, 32, 9, $7, $0, 255, 255, $b2, 2, TrainerHikerParry, -1
-	person_event SPRITE_POKEFAN_M, 69, 13, $8, $0, 255, 255, $b2, 1, TrainerHikerTimothy, -1
-	person_event SPRITE_BLACK_BELT, 54, 15, $a, $0, 255, 255, $b2, 2, TrainerBlackbeltKenji, -1
-	person_event SPRITE_COOLTRAINER_M, 22, 21, $8, $0, 255, 255, $82, 1, TrainerCooltrainermRyan, -1
-	person_event SPRITE_COOLTRAINER_F, 40, 9, $a, $0, 255, 255, $82, 3, TrainerCooltrainerfKelly, -1
-	person_event SPRITE_FRUIT_TREE, 86, 20, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19e294, -1
-	person_event SPRITE_POKE_BALL, 55, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e296, EVENT_6B8
-	person_event SPRITE_POKE_BALL, 70, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e298, EVENT_6B9
-	person_event SPRITE_POKE_BALL, 24, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e29a, EVENT_6BA
-	person_event SPRITE_POKE_BALL, 37, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e29c, EVENT_6BB
-	person_event SPRITE_YOUNGSTER, 74, 8, $3, $0, 255, 255, $a0, 0, YoungsterScript_0x19e269, -1
+	person_event SPRITE_POKEFAN_M, 20, 14, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerHikerErik, -1
+	person_event SPRITE_POKEFAN_M, 69, 19, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerMichael, -1
+	person_event SPRITE_POKEFAN_M, 32, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerParry, -1
+	person_event SPRITE_POKEFAN_M, 69, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerHikerTimothy, -1
+	person_event SPRITE_BLACK_BELT, 54, 15, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBlackbeltKenji, -1
+	person_event SPRITE_COOLTRAINER_M, 22, 21, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainermRyan, -1
+	person_event SPRITE_COOLTRAINER_F, 40, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfKelly, -1
+	person_event SPRITE_FRUIT_TREE, 86, 20, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19e294, -1
+	person_event SPRITE_POKE_BALL, 55, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e296, EVENT_ROUTE_45_NUGGET
+	person_event SPRITE_POKE_BALL, 70, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e298, EVENT_ROUTE_45_REVIVE
+	person_event SPRITE_POKE_BALL, 24, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e29a, EVENT_ROUTE_45_ELIXER
+	person_event SPRITE_POKE_BALL, 37, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e29c, EVENT_ROUTE_45_MAX_POTION
+	person_event SPRITE_YOUNGSTER, 74, 8, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x19e269, -1
--- a/maps/Route46.asm
+++ b/maps/Route46.asm
@@ -1,29 +1,13 @@
 Route46_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerCamperTed:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_TED
+	trainer EVENT_BEAT_CAMPER_TED, CAMPER, TED, CamperTedSeenText, CamperTedBeatenText, $0000, CamperTedScript
 
-	; trainer group && trainer id
-	db CAMPER, TED
-
-	; text when seen
-	dw CamperTedSeenText
-
-	; text when trainer beaten
-	dw CamperTedBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperTedScript
-
 CamperTedScript:
 	talkaftercancel
 	loadfont
@@ -33,31 +17,15 @@
 	end
 
 TrainerPicnickerErin1:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_ERIN
+	trainer EVENT_BEAT_PICNICKER_ERIN, PICNICKER, ERIN1, PicnickerErin1SeenText, PicnickerErin1BeatenText, $0000, PicnickerErin1Script
 
-	; trainer group && trainer id
-	db PICNICKER, ERIN1
-
-	; text when seen
-	dw PicnickerErin1SeenText
-
-	; text when trainer beaten
-	dw PicnickerErin1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerErin1Script
-
 PicnickerErin1Script:
-	writecode VAR_CALLERID, $24
+	writecode VAR_CALLERID, PHONE_PICNICKER_ERIN
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ERIN
 	iftrue UnknownScript_0x1a96da
-	checkcellnum $24
+	checkcellnum PHONE_PICNICKER_ERIN
 	iftrue UnknownScript_0x1a975b
 	checkevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a96c3
@@ -70,7 +38,7 @@
 UnknownScript_0x1a96c3:
 	scall UnknownScript_0x1a9753
 UnknownScript_0x1a96c6:
-	askforphonenumber $24
+	askforphonenumber PHONE_PICNICKER_ERIN
 	if_equal $1, UnknownScript_0x1a9763
 	if_equal $2, UnknownScript_0x1a975f
 	trainertotext PICNICKER, ERIN1, $0
@@ -172,24 +140,8 @@
 	end
 
 TrainerHikerBailey:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_BAILEY
+	trainer EVENT_BEAT_HIKER_BAILEY, HIKER, BAILEY, HikerBaileySeenText, HikerBaileyBeatenText, $0000, HikerBaileyScript
 
-	; trainer group && trainer id
-	db HIKER, BAILEY
-
-	; text when seen
-	dw HikerBaileySeenText
-
-	; text when trainer beaten
-	dw HikerBaileyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerBaileyScript
-
 HikerBaileyScript:
 	talkaftercancel
 	loadfont
@@ -294,24 +246,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $21, $7, 1, GROUP_ROUTE_29_46_GATE, MAP_ROUTE_29_46_GATE
 	warp_def $21, $8, 2, GROUP_ROUTE_29_46_GATE, MAP_ROUTE_29_46_GATE
 	warp_def $5, $e, 3, GROUP_DARK_CAVE_VIOLET_ENTRANCE, MAP_DARK_CAVE_VIOLET_ENTRANCE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 27, 9, $0, MapRoute46Signpost0Script
+	signpost 27, 9, SIGNPOST_READ, MapRoute46Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_POKEFAN_M, 23, 16, $8, $0, 255, 255, $b2, 2, TrainerHikerBailey, -1
-	person_event SPRITE_YOUNGSTER, 18, 8, $7, $0, 255, 255, $a2, 2, TrainerCamperTed, -1
-	person_event SPRITE_LASS, 17, 6, $6, $0, 255, 255, $a2, 2, TrainerPicnickerErin1, -1
-	person_event SPRITE_FRUIT_TREE, 9, 11, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a978f, -1
-	person_event SPRITE_FRUIT_TREE, 10, 12, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a9791, -1
-	person_event SPRITE_POKE_BALL, 19, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a978d, EVENT_6BC
+	person_event SPRITE_POKEFAN_M, 23, 16, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerBailey, -1
+	person_event SPRITE_YOUNGSTER, 18, 8, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerCamperTed, -1
+	person_event SPRITE_LASS, 17, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerPicnickerErin1, -1
+	person_event SPRITE_FRUIT_TREE, 9, 11, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a978f, -1
+	person_event SPRITE_FRUIT_TREE, 10, 12, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a9791, -1
+	person_event SPRITE_POKE_BALL, 19, 5, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a978d, EVENT_ROUTE_46_X_SPEED
--- a/maps/Route5.asm
+++ b/maps/Route5.asm
@@ -1,8 +1,8 @@
 Route5_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x1adb19:
@@ -40,7 +40,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $f, $11, 1, GROUP_ROUTE_5_UNDERGROUND_ENTRANCE, MAP_ROUTE_5_UNDERGROUND_ENTRANCE
 	warp_def $11, $8, 1, GROUP_ROUTE_5_SAFFRON_CITY_GATE, MAP_ROUTE_5_SAFFRON_CITY_GATE
@@ -47,14 +47,14 @@
 	warp_def $11, $9, 2, GROUP_ROUTE_5_SAFFRON_CITY_GATE, MAP_ROUTE_5_SAFFRON_CITY_GATE
 	warp_def $b, $a, 1, GROUP_ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE, MAP_ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 17, 17, $0, MapRoute5Signpost0Script
-	signpost 11, 10, $0, MapRoute5Signpost1Script
+	signpost 17, 17, SIGNPOST_READ, MapRoute5Signpost0Script
+	signpost 11, 10, SIGNPOST_READ, MapRoute5Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_M, 20, 21, $6, $0, 255, 255, $80, 0, PokefanMScript_0x1adb19, EVENT_771
+	person_event SPRITE_POKEFAN_M, 20, 21, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x1adb19, EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
--- a/maps/Route5CleanseTagSpeechHouse.asm
+++ b/maps/Route5CleanseTagSpeechHouse.asm
@@ -1,8 +1,8 @@
 Route5CleanseTagSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrannyScript_0x18b634:
@@ -60,20 +60,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_ROUTE_5, MAP_ROUTE_5
 	warp_def $7, $3, 4, GROUP_ROUTE_5, MAP_ROUTE_5
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, HouseForSaleBookshelf
-	signpost 1, 1, $0, HouseForSaleBookshelf
+	signpost 1, 0, SIGNPOST_READ, HouseForSaleBookshelf
+	signpost 1, 1, SIGNPOST_READ, HouseForSaleBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_GRANNY, 9, 6, $1f, $0, 255, 255, $b0, 0, GrannyScript_0x18b634, -1
-	person_event SPRITE_TEACHER, 7, 9, $8, $0, 255, 255, $80, 0, TeacherScript_0x18b64f, -1
+	person_event SPRITE_GRANNY, 9, 6, OW_RIGHT | $13, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrannyScript_0x18b634, -1
+	person_event SPRITE_TEACHER, 7, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x18b64f, -1
--- a/maps/Route5SaffronCityGate.asm
+++ b/maps/Route5SaffronCityGate.asm
@@ -1,8 +1,8 @@
 Route5SaffronCityGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x18b5b9:
@@ -21,7 +21,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 2, GROUP_ROUTE_5, MAP_ROUTE_5
 	warp_def $0, $5, 3, GROUP_ROUTE_5, MAP_ROUTE_5
@@ -28,12 +28,12 @@
 	warp_def $7, $4, 9, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $7, $5, 9, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $90, 0, OfficerScript_0x18b5b9, -1
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x18b5b9, -1
--- a/maps/Route5UndergroundEntrance.asm
+++ b/maps/Route5UndergroundEntrance.asm
@@ -1,8 +1,8 @@
 Route5UndergroundEntrance_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x18b555:
@@ -20,18 +20,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_ROUTE_5, MAP_ROUTE_5
 	warp_def $7, $4, 1, GROUP_ROUTE_5, MAP_ROUTE_5
 	warp_def $3, $4, 1, GROUP_UNDERGROUND, MAP_UNDERGROUND
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_TEACHER, 6, 6, $2, $11, 255, 255, $a0, 0, TeacherScript_0x18b555, -1
+	person_event SPRITE_TEACHER, 6, 6, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x18b555, -1
--- a/maps/Route6.asm
+++ b/maps/Route6.asm
@@ -1,29 +1,13 @@
 Route6_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerPokefanmRex:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_REX
+	trainer EVENT_BEAT_POKEFANM_REX, POKEFANM, REX, PokefanmRexSeenText, PokefanmRexBeatenText, $0000, PokefanmRexScript
 
-	; trainer group && trainer id
-	db POKEFANM, REX
-
-	; text when seen
-	dw PokefanmRexSeenText
-
-	; text when trainer beaten
-	dw PokefanmRexBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmRexScript
-
 PokefanmRexScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPokefanmAllan:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_ALLAN
+	trainer EVENT_BEAT_POKEFANM_ALLAN, POKEFANM, ALLAN, PokefanmAllanSeenText, PokefanmAllanBeatenText, $0000, PokefanmAllanScript
 
-	; trainer group && trainer id
-	db POKEFANM, ALLAN
-
-	; text when seen
-	dw PokefanmAllanSeenText
-
-	; text when trainer beaten
-	dw PokefanmAllanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmAllanScript
-
 PokefanmAllanScript:
 	talkaftercancel
 	loadfont
@@ -122,20 +90,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $11, 1, GROUP_ROUTE_6_UNDERGROUND_ENTRANCE, MAP_ROUTE_6_UNDERGROUND_ENTRANCE
 	warp_def $1, $6, 3, GROUP_ROUTE_6_SAFFRON_GATE, MAP_ROUTE_6_SAFFRON_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 5, 19, $0, MapRoute6Signpost0Script
+	signpost 5, 19, SIGNPOST_READ, MapRoute6Signpost0Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKEFAN_M, 8, 21, $6, $0, 255, 255, $b0, 2, PokefanMScript_0x1ad951, EVENT_771
-	person_event SPRITE_POKEFAN_M, 16, 13, $9, $0, 255, 255, $82, 0, TrainerPokefanmRex, -1
-	person_event SPRITE_POKEFAN_M, 16, 14, $8, $0, 255, 255, $82, 0, TrainerPokefanmAllan, -1
+	person_event SPRITE_POKEFAN_M, 8, 21, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 2, PokefanMScript_0x1ad951, EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
+	person_event SPRITE_POKEFAN_M, 16, 13, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerPokefanmRex, -1
+	person_event SPRITE_POKEFAN_M, 16, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerPokefanmAllan, -1
--- a/maps/Route6SaffronGate.asm
+++ b/maps/Route6SaffronGate.asm
@@ -1,11 +1,11 @@
 Route6SaffronGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x1926e9, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x1926e9:
@@ -60,7 +60,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 12, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $0, $5, 13, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
@@ -67,12 +67,12 @@
 	warp_def $7, $4, 2, GROUP_ROUTE_6, MAP_ROUTE_6
 	warp_def $7, $5, 2, GROUP_ROUTE_6, MAP_ROUTE_6
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $90, 0, OfficerScript_0x1926ea, -1
+	person_event SPRITE_OFFICER, 8, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x1926ea, -1
--- a/maps/Route6UndergroundEntrance.asm
+++ b/maps/Route6UndergroundEntrance.asm
@@ -1,8 +1,8 @@
 Route6UndergroundEntrance_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 Route6UndergroundEntrance_MapEventHeader:
@@ -9,17 +9,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_ROUTE_6, MAP_ROUTE_6
 	warp_def $7, $4, 1, GROUP_ROUTE_6, MAP_ROUTE_6
 	warp_def $3, $4, 2, GROUP_UNDERGROUND, MAP_UNDERGROUND
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route7.asm
+++ b/maps/Route7.asm
@@ -1,8 +1,8 @@
 Route7_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MapRoute7Signpost0Script:
@@ -38,18 +38,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $6, $f, 1, GROUP_ROUTE_7_SAFFRON_GATE, MAP_ROUTE_7_SAFFRON_GATE
 	warp_def $7, $f, 2, GROUP_ROUTE_7_SAFFRON_GATE, MAP_ROUTE_7_SAFFRON_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 11, 5, $0, MapRoute7Signpost0Script
-	signpost 9, 6, $0, MapRoute7Signpost1Script
+	signpost 11, 5, SIGNPOST_READ, MapRoute7Signpost0Script
+	signpost 9, 6, SIGNPOST_READ, MapRoute7Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/Route7SaffronGate.asm
+++ b/maps/Route7SaffronGate.asm
@@ -1,8 +1,8 @@
 Route7SaffronGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x73518:
@@ -46,7 +46,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 1, GROUP_ROUTE_7, MAP_ROUTE_7
 	warp_def $5, $0, 2, GROUP_ROUTE_7, MAP_ROUTE_7
@@ -53,12 +53,12 @@
 	warp_def $4, $9, 10, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $5, $9, 11, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x73518, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x73518, -1
--- a/maps/Route8.asm
+++ b/maps/Route8.asm
@@ -1,29 +1,13 @@
 Route8_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerBikerDwayne:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_DWAYNE
+	trainer EVENT_BEAT_BIKER_DWAYNE, BIKER, DWAYNE, BikerDwayneSeenText, BikerDwayneBeatenText, $0000, BikerDwayneScript
 
-	; trainer group && trainer id
-	db BIKER, DWAYNE
-
-	; text when seen
-	dw BikerDwayneSeenText
-
-	; text when trainer beaten
-	dw BikerDwayneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerDwayneScript
-
 BikerDwayneScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerBikerHarris:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_HARRIS
+	trainer EVENT_BEAT_BIKER_HARRIS, BIKER, HARRIS, BikerHarrisSeenText, BikerHarrisBeatenText, $0000, BikerHarrisScript
 
-	; trainer group && trainer id
-	db BIKER, HARRIS
-
-	; text when seen
-	dw BikerHarrisSeenText
-
-	; text when trainer beaten
-	dw BikerHarrisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerHarrisScript
-
 BikerHarrisScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerBikerZeke:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_ZEKE
+	trainer EVENT_BEAT_BIKER_ZEKE, BIKER, ZEKE, BikerZekeSeenText, BikerZekeBeatenText, $0000, BikerZekeScript
 
-	; trainer group && trainer id
-	db BIKER, ZEKE
-
-	; text when seen
-	dw BikerZekeSeenText
-
-	; text when trainer beaten
-	dw BikerZekeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerZekeScript
-
 BikerZekeScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerSupernerdSam:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_SAM
+	trainer EVENT_BEAT_SUPER_NERD_SAM, SUPER_NERD, SAM, SupernerdSamSeenText, SupernerdSamBeatenText, $0000, SupernerdSamScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, SAM
-
-	; text when seen
-	dw SupernerdSamSeenText
-
-	; text when trainer beaten
-	dw SupernerdSamBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdSamScript
-
 SupernerdSamScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerSupernerdTom:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_TOM
+	trainer EVENT_BEAT_SUPER_NERD_TOM, SUPER_NERD, TOM, SupernerdTomSeenText, SupernerdTomBeatenText, $0000, SupernerdTomScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, TOM
-
-	; text when seen
-	dw SupernerdTomSeenText
-
-	; text when trainer beaten
-	dw SupernerdTomBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdTomScript
-
 SupernerdTomScript:
 	talkaftercancel
 	loadfont
@@ -248,24 +168,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $4, $4, 3, GROUP_ROUTE_8_SAFFRON_GATE, MAP_ROUTE_8_SAFFRON_GATE
 	warp_def $5, $4, 4, GROUP_ROUTE_8_SAFFRON_GATE, MAP_ROUTE_8_SAFFRON_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 11, $0, MapRoute8Signpost0Script
-	signpost 5, 10, $0, MapRoute8Signpost1Script
+	signpost 7, 11, SIGNPOST_READ, MapRoute8Signpost0Script
+	signpost 5, 10, SIGNPOST_READ, MapRoute8Signpost1Script
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_BIKER, 12, 14, $8, $0, 255, 255, $82, 5, TrainerBikerDwayne, -1
-	person_event SPRITE_BIKER, 13, 14, $8, $0, 255, 255, $a2, 5, TrainerBikerHarris, -1
-	person_event SPRITE_BIKER, 14, 14, $8, $0, 255, 255, $92, 5, TrainerBikerZeke, -1
-	person_event SPRITE_SUPER_NERD, 6, 27, $6, $0, 255, 255, $b2, 3, TrainerSupernerdSam, -1
-	person_event SPRITE_SUPER_NERD, 16, 35, $a, $0, 255, 255, $b2, 4, TrainerSupernerdTom, -1
-	person_event SPRITE_FRUIT_TREE, 9, 37, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x6c06c, -1
+	person_event SPRITE_BIKER, 12, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerBikerDwayne, -1
+	person_event SPRITE_BIKER, 13, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerBikerHarris, -1
+	person_event SPRITE_BIKER, 14, 14, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerBikerZeke, -1
+	person_event SPRITE_SUPER_NERD, 6, 27, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerSupernerdSam, -1
+	person_event SPRITE_SUPER_NERD, 16, 35, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerSupernerdTom, -1
+	person_event SPRITE_FRUIT_TREE, 9, 37, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x6c06c, -1
--- a/maps/Route8SaffronGate.asm
+++ b/maps/Route8SaffronGate.asm
@@ -1,8 +1,8 @@
 Route8SaffronGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 OfficerScript_0x7f416:
@@ -20,7 +20,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $0, 14, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $5, $0, 15, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
@@ -27,12 +27,12 @@
 	warp_def $4, $9, 1, GROUP_ROUTE_8, MAP_ROUTE_8
 	warp_def $5, $9, 2, GROUP_ROUTE_8, MAP_ROUTE_8
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x7f416, -1
+	person_event SPRITE_OFFICER, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x7f416, -1
--- a/maps/Route9.asm
+++ b/maps/Route9.asm
@@ -1,29 +1,13 @@
 Route9_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerCamperDean:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_DEAN
+	trainer EVENT_BEAT_CAMPER_DEAN, CAMPER, DEAN, CamperDeanSeenText, CamperDeanBeatenText, $0000, CamperDeanScript
 
-	; trainer group && trainer id
-	db CAMPER, DEAN
-
-	; text when seen
-	dw CamperDeanSeenText
-
-	; text when trainer beaten
-	dw CamperDeanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperDeanScript
-
 CamperDeanScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPicnickerHeidi:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_HEIDI
+	trainer EVENT_BEAT_PICNICKER_HEIDI, PICNICKER, HEIDI, PicnickerHeidiSeenText, PicnickerHeidiBeatenText, $0000, PicnickerHeidiScript
 
-	; trainer group && trainer id
-	db PICNICKER, HEIDI
-
-	; text when seen
-	dw PicnickerHeidiSeenText
-
-	; text when trainer beaten
-	dw PicnickerHeidiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerHeidiScript
-
 PicnickerHeidiScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerCamperSid:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_SID
+	trainer EVENT_BEAT_CAMPER_SID, CAMPER, SID, CamperSidSeenText, CamperSidBeatenText, $0000, CamperSidScript
 
-	; trainer group && trainer id
-	db CAMPER, SID
-
-	; text when seen
-	dw CamperSidSeenText
-
-	; text when trainer beaten
-	dw CamperSidBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperSidScript
-
 CamperSidScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerPicnickerEdna:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_EDNA
+	trainer EVENT_BEAT_PICNICKER_EDNA, PICNICKER, EDNA, PicnickerEdnaSeenText, PicnickerEdnaBeatenText, $0000, PicnickerEdnaScript
 
-	; trainer group && trainer id
-	db PICNICKER, EDNA
-
-	; text when seen
-	dw PicnickerEdnaSeenText
-
-	; text when trainer beaten
-	dw PicnickerEdnaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerEdnaScript
-
 PicnickerEdnaScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerHikerTim:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_TIM
+	trainer EVENT_BEAT_HIKER_TIM, HIKER, TIM, HikerTimSeenText, HikerTimBeatenText, $0000, HikerTimScript
 
-	; trainer group && trainer id
-	db HIKER, TIM
-
-	; text when seen
-	dw HikerTimSeenText
-
-	; text when trainer beaten
-	dw HikerTimBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerTimScript
-
 HikerTimScript:
 	talkaftercancel
 	loadfont
@@ -141,24 +61,8 @@
 	end
 
 TrainerHikerSidney:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_SIDNEY
+	trainer EVENT_BEAT_HIKER_SIDNEY, HIKER, SIDNEY, HikerSidneySeenText, HikerSidneyBeatenText, $0000, HikerSidneyScript
 
-	; trainer group && trainer id
-	db HIKER, SIDNEY
-
-	; text when seen
-	dw HikerSidneySeenText
-
-	; text when trainer beaten
-	dw HikerSidneyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerSidneyScript
-
 HikerSidneyScript:
 	talkaftercancel
 	loadfont
@@ -171,8 +75,7 @@
 	jumptext UnknownText_0x1ab2a2
 
 MapRoute9SignpostItem1:
-	dw $00f2
-	db ETHER
+	dwb EVENT_ROUTE_9_HIDDEN_ETHER, ETHER
 	
 
 CamperDeanSeenText:
@@ -299,23 +202,23 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $f, $30, 1, GROUP_ROCK_TUNNEL_1F, MAP_ROCK_TUNNEL_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 7, 15, $0, MapRoute9Signpost0Script
-	signpost 15, 41, $7, MapRoute9SignpostItem1
+	signpost 7, 15, SIGNPOST_READ, MapRoute9Signpost0Script
+	signpost 15, 41, SIGNPOST_ITEM, MapRoute9SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_YOUNGSTER, 15, 27, $8, $0, 255, 255, $a2, 3, TrainerCamperDean, -1
-	person_event SPRITE_LASS, 12, 43, $a, $0, 255, 255, $a2, 3, TrainerPicnickerHeidi, -1
-	person_event SPRITE_YOUNGSTER, 8, 15, $a, $0, 255, 255, $a2, 5, TrainerCamperSid, -1
-	person_event SPRITE_LASS, 19, 16, $7, $0, 255, 255, $a2, 1, TrainerPicnickerEdna, -1
-	person_event SPRITE_POKEFAN_M, 7, 32, $9, $0, 255, 255, $b2, 2, TrainerHikerTim, -1
-	person_event SPRITE_POKEFAN_M, 19, 40, $9, $0, 255, 255, $b2, 4, TrainerHikerSidney, -1
+	person_event SPRITE_YOUNGSTER, 15, 27, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperDean, -1
+	person_event SPRITE_LASS, 12, 43, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPicnickerHeidi, -1
+	person_event SPRITE_YOUNGSTER, 8, 15, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerCamperSid, -1
+	person_event SPRITE_LASS, 19, 16, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerEdna, -1
+	person_event SPRITE_POKEFAN_M, 7, 32, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerTim, -1
+	person_event SPRITE_POKEFAN_M, 19, 40, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerHikerSidney, -1
--- a/maps/RuinsofAlphAerodactylChamber.asm
+++ b/maps/RuinsofAlphAerodactylChamber.asm
@@ -1,5 +1,5 @@
 RuinsofAlphAerodactylChamber_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x58dad, $0000
 	dw UnknownScript_0x58db8, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -30,7 +30,7 @@
 	iftrue UnknownScript_0x58dc3
 	changeblock $4, $0, $2e
 UnknownScript_0x58dc3:
-	checkevent EVENT_2A3
+	checkevent EVENT_SOLVED_AERODACTYL_PUZZLE
 	iffalse UnknownScript_0x58dca
 	return
 
@@ -42,7 +42,7 @@
 UnknownScript_0x58dd3:
 	pause 30
 	earthquake 30
-	showemote $0, $0, 20
+	showemote EMOTE_SHOCK, $0, 20
 	pause 30
 	playsound SFX_STRENGTH
 	changeblock $4, $0, $30
@@ -55,18 +55,18 @@
 MapRuinsofAlphAerodactylChamberSignpost2Script:
 	refreshscreen $0
 	writebyte $2
-	special Functionc360
+	special Special_UnownPuzzle
 	loadmovesprites
 	iftrue UnknownScript_0x58df7
 	end
 
 UnknownScript_0x58df7:
-	setevent EVENT_705
-	setevent EVENT_2A3
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_AERODACTYL_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_3
 	domaptrigger GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER, $1
 	earthquake 30
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	changeblock $2, $2, $18
 	changeblock $4, $2, $19
 	reloadmappart
@@ -89,7 +89,7 @@
 	loadfont
 	writetext UnknownText_0x58e4f
 	writebyte $1
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -99,7 +99,7 @@
 	loadfont
 	writetext UnknownText_0x58e81
 	writebyte $1
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -152,7 +152,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $9, $3, 4, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $9, $4, 4, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
@@ -160,17 +160,17 @@
 	warp_def $3, $4, 9, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 	warp_def $0, $4, 1, GROUP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, MAP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphAerodactylChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphAerodactylChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphAerodactylChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphAerodactylChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphAerodactylChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphAerodactylChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphAerodactylChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphAerodactylChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost5Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RuinsofAlphAerodactylItemRoom.asm
+++ b/maps/RuinsofAlphAerodactylItemRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphAerodactylItemRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x59ab6:
@@ -30,7 +30,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $9, $3, 5, GROUP_RUINS_OF_ALPH_AERODACTYL_CHAMBER, MAP_RUINS_OF_ALPH_AERODACTYL_CHAMBER
 	warp_def $9, $4, 5, GROUP_RUINS_OF_ALPH_AERODACTYL_CHAMBER, MAP_RUINS_OF_ALPH_AERODACTYL_CHAMBER
@@ -37,17 +37,17 @@
 	warp_def $1, $3, 1, GROUP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, MAP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM
 	warp_def $1, $4, 2, GROUP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, MAP_RUINS_OF_ALPH_AERODACTYL_WORD_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphAerodactylItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphAerodactylItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphAerodactylItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphAerodactylItemRoomSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59ab6, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59ab8, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59aba, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59abc, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59ab6, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59ab8, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59aba, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59abc, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
--- a/maps/RuinsofAlphAerodactylWordRoom.asm
+++ b/maps/RuinsofAlphAerodactylWordRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphAerodactylWordRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 RuinsofAlphAerodactylWordRoom_MapEventHeader:
@@ -9,17 +9,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $5, $9, 3, GROUP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, MAP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
 	warp_def $5, $a, 4, GROUP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, MAP_RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
 	warp_def $b, $11, 8, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RuinsofAlphHoOhChamber.asm
+++ b/maps/RuinsofAlphHoOhChamber.asm
@@ -1,5 +1,5 @@
 RuinsofAlphHoOhChamber_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x5856d, $0000
 	dw UnknownScript_0x5857b, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -31,7 +31,7 @@
 	iftrue UnknownScript_0x58586
 	changeblock $4, $0, $2e
 UnknownScript_0x58586:
-	checkevent EVENT_2A0
+	checkevent EVENT_SOLVED_HO_OH_PUZZLE
 	iffalse UnknownScript_0x5858d
 	return
 
@@ -43,7 +43,7 @@
 UnknownScript_0x58596:
 	pause 30
 	earthquake 30
-	showemote $0, $0, 20
+	showemote EMOTE_SHOCK, $0, 20
 	pause 30
 	playsound SFX_STRENGTH
 	changeblock $4, $0, $30
@@ -56,18 +56,18 @@
 MapRuinsofAlphHoOhChamberSignpost2Script:
 	refreshscreen $0
 	writebyte $3
-	special Functionc360
+	special Special_UnownPuzzle
 	loadmovesprites
 	iftrue UnknownScript_0x585ba
 	end
 
 UnknownScript_0x585ba:
-	setevent EVENT_705
-	setevent EVENT_2A0
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_HO_OH_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_4
 	domaptrigger GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER, $1
 	earthquake 30
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	changeblock $2, $2, $18
 	changeblock $4, $2, $19
 	reloadmappart
@@ -90,7 +90,7 @@
 	loadfont
 	writetext UnknownText_0x58612
 	writebyte $3
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -100,7 +100,7 @@
 	loadfont
 	writetext UnknownText_0x58644
 	writebyte $3
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -153,7 +153,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $9, $3, 1, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $9, $4, 1, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
@@ -161,17 +161,17 @@
 	warp_def $3, $4, 3, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 	warp_def $0, $4, 1, GROUP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM, MAP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphHoOhChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphHoOhChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphHoOhChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphHoOhChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphHoOhChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphHoOhChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphHoOhChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphHoOhChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost5Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RuinsofAlphHoOhItemRoom.asm
+++ b/maps/RuinsofAlphHoOhItemRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphHoOhItemRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x59918:
@@ -30,7 +30,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $9, $3, 5, GROUP_RUINS_OF_ALPH_HO_OH_CHAMBER, MAP_RUINS_OF_ALPH_HO_OH_CHAMBER
 	warp_def $9, $4, 5, GROUP_RUINS_OF_ALPH_HO_OH_CHAMBER, MAP_RUINS_OF_ALPH_HO_OH_CHAMBER
@@ -37,17 +37,17 @@
 	warp_def $1, $3, 1, GROUP_RUINS_OF_ALPH_HO_OH_WORD_ROOM, MAP_RUINS_OF_ALPH_HO_OH_WORD_ROOM
 	warp_def $1, $4, 2, GROUP_RUINS_OF_ALPH_HO_OH_WORD_ROOM, MAP_RUINS_OF_ALPH_HO_OH_WORD_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphHoOhItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphHoOhItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphHoOhItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphHoOhItemRoomSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59918, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x5991a, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x5991c, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x5991e, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59918, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5991a, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5991c, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5991e, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
--- a/maps/RuinsofAlphHoOhWordRoom.asm
+++ b/maps/RuinsofAlphHoOhWordRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphHoOhWordRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 RuinsofAlphHoOhWordRoom_MapEventHeader:
@@ -9,17 +9,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $9, $9, 3, GROUP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM, MAP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM
 	warp_def $9, $a, 4, GROUP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM, MAP_RUINS_OF_ALPH_HO_OH_ITEM_ROOM
 	warp_def $15, $11, 2, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RuinsofAlphInnerChamber.asm
+++ b/maps/RuinsofAlphInnerChamber.asm
@@ -1,5 +1,5 @@
 RuinsofAlphInnerChamber_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x58f69, $0000
 	dw UnknownScript_0x58f6a, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x58f69:
@@ -25,7 +25,7 @@
 	loadmovesprites
 	dotrigger $0
 	setevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
-	clearevent EVENT_78E
+	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
 	end
 
 FisherScript_0x58f7d:
@@ -79,7 +79,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 9
 	warp_def $d, $a, 5, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $f, $3, 3, GROUP_RUINS_OF_ALPH_HO_OH_CHAMBER, MAP_RUINS_OF_ALPH_HO_OH_CHAMBER
@@ -91,40 +91,40 @@
 	warp_def $18, $f, 3, GROUP_RUINS_OF_ALPH_AERODACTYL_CHAMBER, MAP_RUINS_OF_ALPH_AERODACTYL_CHAMBER
 	warp_def $18, $10, 4, GROUP_RUINS_OF_ALPH_AERODACTYL_CHAMBER, MAP_RUINS_OF_ALPH_AERODACTYL_CHAMBER
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 26
-	signpost 3, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 13, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 13, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 13, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 13, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_FISHER, 11, 7, $3, $0, 255, 255, $a0, 0, FisherScript_0x58f7d, EVENT_705
-	person_event SPRITE_TEACHER, 17, 18, $2, $11, 255, 255, $0, 0, TeacherScript_0x58f80, EVENT_705
-	person_event SPRITE_GRAMPS, 23, 15, $7, $0, 255, 255, $b0, 0, GrampsScript_0x58f83, EVENT_705
+	person_event SPRITE_FISHER, 11, 7, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x58f7d, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	person_event SPRITE_TEACHER, 17, 18, OW_DOWN | $2, $11, -1, -1, $0, 0, TeacherScript_0x58f80, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	person_event SPRITE_GRAMPS, 23, 15, OW_UP | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x58f83, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
--- a/maps/RuinsofAlphKabutoChamber.asm
+++ b/maps/RuinsofAlphKabutoChamber.asm
@@ -1,5 +1,5 @@
 RuinsofAlphKabutoChamber_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x5872b, $0000
 	dw UnknownScript_0x58736, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -32,7 +32,7 @@
 	iftrue UnknownScript_0x58741
 	changeblock $4, $0, $2e
 UnknownScript_0x58741:
-	checkevent EVENT_2A1
+	checkevent EVENT_SOLVED_KABUTO_PUZZLE
 	iffalse UnknownScript_0x58748
 	return
 
@@ -44,7 +44,7 @@
 UnknownScript_0x58751:
 	pause 30
 	earthquake 30
-	showemote $0, $0, 20
+	showemote EMOTE_SHOCK, $0, 20
 	pause 30
 	playsound SFX_STRENGTH
 	changeblock $4, $0, $30
@@ -60,19 +60,19 @@
 MapRuinsofAlphKabutoChamberSignpost2Script:
 	refreshscreen $0
 	writebyte $0
-	special Functionc360
+	special Special_UnownPuzzle
 	loadmovesprites
 	iftrue UnknownScript_0x58778
 	end
 
 UnknownScript_0x58778:
-	setevent EVENT_705
-	setevent EVENT_2A1
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_KABUTO_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_1
-	setevent EVENT_74E
+	setevent EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
 	domaptrigger GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER, $1
 	earthquake 30
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	changeblock $2, $2, $18
 	changeblock $4, $2, $19
 	reloadmappart
@@ -92,7 +92,7 @@
 	if_equal 26, UnknownScript_0x587cf
 	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
 	iftrue UnknownScript_0x587c9
-	checkevent EVENT_2A1
+	checkevent EVENT_SOLVED_KABUTO_PUZZLE
 	iffalse UnknownScript_0x587c0
 	writetext UnknownText_0x589b8
 	keeptextopen
@@ -125,7 +125,7 @@
 	loadfont
 	writetext UnknownText_0x58aa7
 	writebyte $0
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -135,7 +135,7 @@
 	loadfont
 	writetext UnknownText_0x58ad9
 	writebyte $0
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -262,7 +262,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $9, $3, 2, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $9, $4, 2, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
@@ -270,19 +270,19 @@
 	warp_def $3, $4, 5, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 	warp_def $0, $4, 1, GROUP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM, MAP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphKabutoChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphKabutoChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphKabutoChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphKabutoChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphKabutoChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphKabutoChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphKabutoChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphKabutoChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost5Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_RECEPTIONIST, 9, 9, $6, $0, 255, 255, $0, 0, ReceptionistScript_0x58769, EVENT_74E
-	person_event SPRITE_SCIENTIST, 5, 7, $7, $0, 255, 255, $90, 0, ScientistScript_0x587a8, -1
+	person_event SPRITE_RECEPTIONIST, 9, 9, OW_UP | $2, $0, -1, -1, $0, 0, ReceptionistScript_0x58769, EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
+	person_event SPRITE_SCIENTIST, 5, 7, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x587a8, -1
--- a/maps/RuinsofAlphKabutoItemRoom.asm
+++ b/maps/RuinsofAlphKabutoItemRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphKabutoItemRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x599a2:
@@ -30,7 +30,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $9, $3, 5, GROUP_RUINS_OF_ALPH_KABUTO_CHAMBER, MAP_RUINS_OF_ALPH_KABUTO_CHAMBER
 	warp_def $9, $4, 5, GROUP_RUINS_OF_ALPH_KABUTO_CHAMBER, MAP_RUINS_OF_ALPH_KABUTO_CHAMBER
@@ -37,17 +37,17 @@
 	warp_def $1, $3, 1, GROUP_RUINS_OF_ALPH_KABUTO_WORD_ROOM, MAP_RUINS_OF_ALPH_KABUTO_WORD_ROOM
 	warp_def $1, $4, 2, GROUP_RUINS_OF_ALPH_KABUTO_WORD_ROOM, MAP_RUINS_OF_ALPH_KABUTO_WORD_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphKabutoItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphKabutoItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphKabutoItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphKabutoItemRoomSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a2, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a4, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a6, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a8, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a2, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a4, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a6, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a8, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
--- a/maps/RuinsofAlphKabutoWordRoom.asm
+++ b/maps/RuinsofAlphKabutoWordRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphKabutoWordRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 RuinsofAlphKabutoWordRoom_MapEventHeader:
@@ -9,17 +9,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $5, $9, 3, GROUP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM, MAP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM
 	warp_def $5, $a, 4, GROUP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM, MAP_RUINS_OF_ALPH_KABUTO_ITEM_ROOM
 	warp_def $b, $11, 4, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RuinsofAlphOmanyteChamber.asm
+++ b/maps/RuinsofAlphOmanyteChamber.asm
@@ -1,5 +1,5 @@
 RuinsofAlphOmanyteChamber_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x58be9, $0000
 	dw UnknownScript_0x58bf7, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -14,7 +14,7 @@
 	dbw 1, UnknownScript_0x58bf8
 
 UnknownScript_0x58be9:
-	special Function8adef
+	special SpecialOmanyteChamber
 	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	iftrue UnknownScript_0x58bf3
 	end
@@ -31,7 +31,7 @@
 	iftrue UnknownScript_0x58c02
 	changeblock $4, $0, $2e
 UnknownScript_0x58c02:
-	checkevent EVENT_2A2
+	checkevent EVENT_SOLVED_OMANYTE_PUZZLE
 	iffalse UnknownScript_0x58c09
 	return
 
@@ -43,7 +43,7 @@
 UnknownScript_0x58c12:
 	pause 30
 	earthquake 30
-	showemote $0, $0, 20
+	showemote EMOTE_SHOCK, $0, 20
 	pause 30
 	playsound SFX_STRENGTH
 	changeblock $4, $0, $30
@@ -56,18 +56,18 @@
 MapRuinsofAlphOmanyteChamberSignpost2Script:
 	refreshscreen $0
 	writebyte $1
-	special Functionc360
+	special Special_UnownPuzzle
 	loadmovesprites
 	iftrue UnknownScript_0x58c36
 	end
 
 UnknownScript_0x58c36:
-	setevent EVENT_705
-	setevent EVENT_2A2
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_OMANYTE_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_2
 	domaptrigger GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER, $1
 	earthquake 30
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	changeblock $2, $2, $18
 	changeblock $4, $2, $19
 	reloadmappart
@@ -90,7 +90,7 @@
 	loadfont
 	writetext UnknownText_0x58c8e
 	writebyte $2
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -100,7 +100,7 @@
 	loadfont
 	writetext UnknownText_0x58cc0
 	writebyte $2
-	special Function8ae68
+	special Special_DisplayUnownWords
 	loadmovesprites
 	end
 
@@ -153,7 +153,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $9, $3, 3, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $9, $4, 3, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
@@ -161,17 +161,17 @@
 	warp_def $3, $4, 7, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 	warp_def $0, $4, 1, GROUP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, MAP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphOmanyteChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphOmanyteChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphOmanyteChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphOmanyteChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphOmanyteChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphOmanyteChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphOmanyteChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphOmanyteChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost5Script
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RuinsofAlphOmanyteItemRoom.asm
+++ b/maps/RuinsofAlphOmanyteItemRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphOmanyteItemRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x59a2c:
@@ -30,7 +30,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $9, $3, 5, GROUP_RUINS_OF_ALPH_OMANYTE_CHAMBER, MAP_RUINS_OF_ALPH_OMANYTE_CHAMBER
 	warp_def $9, $4, 5, GROUP_RUINS_OF_ALPH_OMANYTE_CHAMBER, MAP_RUINS_OF_ALPH_OMANYTE_CHAMBER
@@ -37,17 +37,17 @@
 	warp_def $1, $3, 1, GROUP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM, MAP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM
 	warp_def $1, $4, 2, GROUP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM, MAP_RUINS_OF_ALPH_OMANYTE_WORD_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphOmanyteItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphOmanyteItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphOmanyteItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphOmanyteItemRoomSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a2c, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a2e, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a30, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a32, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a2c, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a2e, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a30, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a32, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
--- a/maps/RuinsofAlphOmanyteWordRoom.asm
+++ b/maps/RuinsofAlphOmanyteWordRoom.asm
@@ -1,8 +1,8 @@
 RuinsofAlphOmanyteWordRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 RuinsofAlphOmanyteWordRoom_MapEventHeader:
@@ -9,17 +9,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $9, 3, GROUP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, MAP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
 	warp_def $7, $a, 4, GROUP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, MAP_RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
 	warp_def $d, $11, 6, GROUP_RUINS_OF_ALPH_INNER_CHAMBER, MAP_RUINS_OF_ALPH_INNER_CHAMBER
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/RuinsofAlphOutside.asm
+++ b/maps/RuinsofAlphOutside.asm
@@ -1,5 +1,5 @@
 RuinsofAlphOutside_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x5800d, $0000
 	dw UnknownScript_0x5800e, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -100,24 +100,8 @@
 	end
 
 TrainerPsychicNathan:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_NATHAN
+	trainer EVENT_BEAT_PSYCHIC_NATHAN, PSYCHIC_T, NATHAN, PsychicNathanSeenText, PsychicNathanBeatenText, $0000, PsychicNathanScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, NATHAN
-
-	; text when seen
-	dw PsychicNathanSeenText
-
-	; text when trainer beaten
-	dw PsychicNathanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicNathanScript
-
 PsychicNathanScript:
 	talkaftercancel
 	loadfont
@@ -128,24 +112,8 @@
 
 
 TrainerSuperNerdStan:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_STAN
+	trainer EVENT_BEAT_SUPER_NERD_STAN, SUPER_NERD, STAN, UnknownText_0x581e5, UnknownText_0x58217, $0000, UnknownScript_0x580a9
 
-	; trainer group && trainer id
-	db SUPER_NERD, STAN
-
-	; text when seen
-	dw UnknownText_0x581e5
-
-	; text when trainer beaten
-	dw UnknownText_0x58217
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw UnknownScript_0x580a9
-
 UnknownScript_0x580a9:
 	talkaftercancel
 	loadfont
@@ -316,7 +284,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 11
 	warp_def $11, $2, 1, GROUP_RUINS_OF_ALPH_HO_OH_CHAMBER, MAP_RUINS_OF_ALPH_HO_OH_CHAMBER
 	warp_def $7, $e, 1, GROUP_RUINS_OF_ALPH_KABUTO_CHAMBER, MAP_RUINS_OF_ALPH_KABUTO_CHAMBER
@@ -330,21 +298,21 @@
 	warp_def $14, $d, 1, GROUP_ROUTE_32_RUINS_OF_ALPH_GATE, MAP_ROUTE_32_RUINS_OF_ALPH_GATE
 	warp_def $15, $d, 2, GROUP_ROUTE_32_RUINS_OF_ALPH_GATE, MAP_ROUTE_32_RUINS_OF_ALPH_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 1, $e, $b, $0, UnknownScript_0x58031, $0, $0
 	xy_trigger 1, $f, $a, $0, UnknownScript_0x5803a, $0, $0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 8, 16, $0, MapRuinsofAlphOutsideSignpost0Script
-	signpost 16, 12, $0, MapRuinsofAlphOutsideSignpost1Script
-	signpost 12, 18, $0, MapRuinsofAlphOutsideSignpost2Script
+	signpost 8, 16, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost0Script
+	signpost 16, 12, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost1Script
+	signpost 12, 18, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost2Script
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_YOUNGSTER, 24, 8, $6, $0, 255, 255, $2, 1, TrainerPsychicNathan, -1
-	person_event SPRITE_SCIENTIST, 19, 15, $7, $0, 255, 255, $0, 0, ScientistScript_0x58043, EVENT_703
-	person_event SPRITE_FISHER, 21, 17, $3, $0, 255, 255, $a0, 0, FisherScript_0x58061, EVENT_78E
-	person_event SPRITE_YOUNGSTER, 15, 18, $2, $11, 255, 255, $b0, 0, YoungsterScript_0x58076, EVENT_78F
-	person_event SPRITE_YOUNGSTER, 12, 16, $7, $0, 255, 255, $80, 0, YoungsterScript_0x5807e, EVENT_78F
+	person_event SPRITE_YOUNGSTER, 24, 8, OW_UP | $2, $0, -1, -1, $2, 1, TrainerPsychicNathan, -1
+	person_event SPRITE_SCIENTIST, 19, 15, OW_UP | $3, $0, -1, -1, $0, 0, ScientistScript_0x58043, EVENT_RUINS_OF_ALPH_OUTSIDE_SCIENTIST
+	person_event SPRITE_FISHER, 21, 17, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x58061, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
+	person_event SPRITE_YOUNGSTER, 15, 18, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, YoungsterScript_0x58076, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
+	person_event SPRITE_YOUNGSTER, 12, 16, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5807e, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
--- a/maps/RuinsofAlphResearchCenter.asm
+++ b/maps/RuinsofAlphResearchCenter.asm
@@ -1,5 +1,5 @@
 RuinsofAlphResearchCenter_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x59180, $0000
 	dw UnknownScript_0x59181, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -105,7 +105,7 @@
 	writetext UnknownText_0x594cb
 	closetext
 	loadmovesprites
-	clearevent EVENT_78F
+	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
 	end
 
 ScientistScript_0x59214:
@@ -134,7 +134,7 @@
 
 MapRuinsofAlphResearchCenterSignpost1Script:
 	loadfont
-	checkevent EVENT_704
+	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
 	iftrue UnknownScript_0x59241
 	checkcode VAR_UNOWNCOUNT
 	if_equal 26, UnknownScript_0x59247
@@ -152,7 +152,7 @@
 
 MapRuinsofAlphResearchCenterSignpost2Script:
 	loadfont
-	checkevent EVENT_704
+	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
 	iftrue UnknownScript_0x5925a
 	checkcode VAR_UNOWNCOUNT
 	if_equal 26, UnknownScript_0x59260
@@ -165,7 +165,7 @@
 UnknownScript_0x59260:
 	writetext UnknownText_0x5982d
 	closetext
-	special Functionc2cd
+	special Special_UnownPrinter
 	loadmovesprites
 	end
 
@@ -396,22 +396,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $7, $3, 6, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 5, 6, $0, MapRuinsofAlphResearchCenterSignpost0Script
-	signpost 4, 3, $0, MapRuinsofAlphResearchCenterSignpost1Script
-	signpost 1, 7, $0, MapRuinsofAlphResearchCenterSignpost2Script
+	signpost 5, 6, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost0Script
+	signpost 4, 3, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost1Script
+	signpost 1, 7, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost2Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_SCIENTIST, 9, 8, $7, $0, 255, 255, $90, 0, ScientistScript_0x591e5, -1
-	person_event SPRITE_SCIENTIST, 6, 9, $2, $12, 255, 255, $90, 0, ScientistScript_0x59214, -1
-	person_event SPRITE_SCIENTIST, 9, 6, $7, $0, 255, 255, $90, 0, ScientistScript_0x591d1, EVENT_704
+	person_event SPRITE_SCIENTIST, 9, 8, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x591e5, -1
+	person_event SPRITE_SCIENTIST, 6, 9, OW_DOWN | $2, $12, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x59214, -1
+	person_event SPRITE_SCIENTIST, 9, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x591d1, EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
--- a/maps/SafariZoneBeta.asm
+++ b/maps/SafariZoneBeta.asm
@@ -1,8 +1,8 @@
 SafariZoneBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SafariZoneBeta_MapEventHeader:
@@ -9,16 +9,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $17, $9, 1, GROUP_SAFARI_ZONE_FUCHSIA_GATE_BETA, MAP_SAFARI_ZONE_FUCHSIA_GATE_BETA
 	warp_def $17, $a, 2, GROUP_SAFARI_ZONE_FUCHSIA_GATE_BETA, MAP_SAFARI_ZONE_FUCHSIA_GATE_BETA
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/SafariZoneFuchsiaGateBeta.asm
+++ b/maps/SafariZoneFuchsiaGateBeta.asm
@@ -1,8 +1,8 @@
 SafariZoneFuchsiaGateBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SafariZoneFuchsiaGateBeta_MapEventHeader:
@@ -9,7 +9,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $0, $4, 1, GROUP_SAFARI_ZONE_BETA, MAP_SAFARI_ZONE_BETA
 	warp_def $0, $5, 2, GROUP_SAFARI_ZONE_BETA, MAP_SAFARI_ZONE_BETA
@@ -16,11 +16,11 @@
 	warp_def $7, $4, 7, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $7, $5, 7, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/SafariZoneMainOffice.asm
+++ b/maps/SafariZoneMainOffice.asm
@@ -1,8 +1,8 @@
 SafariZoneMainOffice_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SafariZoneMainOffice_MapEventHeader:
@@ -9,16 +9,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $7, $3, 2, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/SafariZoneWardensHome.asm
+++ b/maps/SafariZoneWardensHome.asm
@@ -1,8 +1,8 @@
 SafariZoneWardensHome_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 WardensGranddaughter:
@@ -77,21 +77,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 	warp_def $7, $3, 6, GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 4
-	signpost 1, 0, $0, WardensHomeBookshelf
-	signpost 1, 1, $0, WardensHomeBookshelf
-	signpost 0, 7, $0, WardenPhoto
-	signpost 0, 9, $0, SafariZonePhoto
+	signpost 1, 0, SIGNPOST_READ, WardensHomeBookshelf
+	signpost 1, 1, SIGNPOST_READ, WardensHomeBookshelf
+	signpost 0, 7, SIGNPOST_READ, WardenPhoto
+	signpost 0, 9, SIGNPOST_READ, SafariZonePhoto
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_LASS, 8, 6, $9, $0, 255, 255, $a0, 0, WardensGranddaughter, -1
+	person_event SPRITE_LASS, 8, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, WardensGranddaughter, -1
--- a/maps/SaffronCity.asm
+++ b/maps/SaffronCity.asm
@@ -1,8 +1,8 @@
 SaffronCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -261,7 +261,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 15
 	warp_def $3, $1a, 1, GROUP_FIGHTING_DOJO, MAP_FIGHTING_DOJO
 	warp_def $3, $22, 1, GROUP_SAFFRON_GYM, MAP_SAFFRON_GYM
@@ -279,27 +279,27 @@
 	warp_def $16, $27, 1, GROUP_ROUTE_8_SAFFRON_GATE, MAP_ROUTE_8_SAFFRON_GATE
 	warp_def $17, $27, 2, GROUP_ROUTE_8_SAFFRON_GATE, MAP_ROUTE_8_SAFFRON_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 8
-	signpost 5, 21, $0, SaffronCitySign
-	signpost 5, 33, $0, SaffronGymSign
-	signpost 5, 25, $0, FightingDojoSign
-	signpost 21, 15, $0, SilphCoSign
-	signpost 29, 25, $0, MrPsychicsHouseSign
-	signpost 5, 11, $0, SaffronCityMagnetTrainStationSign
-	signpost 29, 10, $0, SaffronCityPokeCenterSign
-	signpost 11, 26, $0, SaffronCityMartSign
+	signpost 5, 21, SIGNPOST_READ, SaffronCitySign
+	signpost 5, 33, SIGNPOST_READ, SaffronGymSign
+	signpost 5, 25, SIGNPOST_READ, FightingDojoSign
+	signpost 21, 15, SIGNPOST_READ, SilphCoSign
+	signpost 29, 25, SIGNPOST_READ, MrPsychicsHouseSign
+	signpost 5, 11, SIGNPOST_READ, SaffronCityMagnetTrainStationSign
+	signpost 29, 10, SIGNPOST_READ, SaffronCityPokeCenterSign
+	signpost 11, 26, SIGNPOST_READ, SaffronCityMartSign
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_LASS, 18, 11, $5, $2, 255, 255, $80, 0, LassScript_0x19932a, -1
-	person_event SPRITE_POKEFAN_M, 34, 23, $5, $2, 255, 255, $b0, 0, PokefanMScript_0x19933e, -1
-	person_event SPRITE_COOLTRAINER_M, 11, 36, $5, $1, 255, 255, $a0, 0, CooltrainerMScript_0x199352, -1
-	person_event SPRITE_COOLTRAINER_F, 28, 24, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x199355, -1
-	person_event SPRITE_FISHER, 16, 31, $6, $0, 255, 255, $a0, 0, FisherScript_0x199358, -1
-	person_event SPRITE_YOUNGSTER, 23, 19, $4, $10, 255, 255, $90, 0, YoungsterScript_0x19936c, -1
-	person_event SPRITE_YOUNGSTER, 26, 39, $2, $11, 255, 255, $80, 0, YoungsterScript_0x19936f, -1
-	person_event SPRITE_LASS, 12, 23, $3, $0, 255, 255, $a0, 0, LassScript_0x199372, -1
+	person_event SPRITE_LASS, 18, 11, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, LassScript_0x19932a, -1
+	person_event SPRITE_POKEFAN_M, 34, 23, OW_UP | $1, $2, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x19933e, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 36, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerMScript_0x199352, -1
+	person_event SPRITE_COOLTRAINER_F, 28, 24, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x199355, -1
+	person_event SPRITE_FISHER, 16, 31, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x199358, -1
+	person_event SPRITE_YOUNGSTER, 23, 19, OW_UP | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x19936c, -1
+	person_event SPRITE_YOUNGSTER, 26, 39, OW_DOWN | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x19936f, -1
+	person_event SPRITE_LASS, 12, 23, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x199372, -1
--- a/maps/SaffronGym.asm
+++ b/maps/SaffronGym.asm
@@ -1,8 +1,8 @@
 SaffronGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SabrinaScript_0x189c2e:
@@ -39,24 +39,8 @@
 	end
 
 TrainerMediumRebecca:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_REBECCA
+	trainer EVENT_BEAT_MEDIUM_REBECCA, MEDIUM, REBECCA, MediumRebeccaSeenText, MediumRebeccaBeatenText, $0000, MediumRebeccaScript
 
-	; trainer group && trainer id
-	db MEDIUM, REBECCA
-
-	; text when seen
-	dw MediumRebeccaSeenText
-
-	; text when trainer beaten
-	dw MediumRebeccaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumRebeccaScript
-
 MediumRebeccaScript:
 	talkaftercancel
 	loadfont
@@ -66,24 +50,8 @@
 	end
 
 TrainerPsychicFranklin:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_FRANKLIN
+	trainer EVENT_BEAT_PSYCHIC_FRANKLIN, PSYCHIC_T, FRANKLIN, PsychicFranklinSeenText, PsychicFranklinBeatenText, $0000, PsychicFranklinScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, FRANKLIN
-
-	; text when seen
-	dw PsychicFranklinSeenText
-
-	; text when trainer beaten
-	dw PsychicFranklinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicFranklinScript
-
 PsychicFranklinScript:
 	talkaftercancel
 	loadfont
@@ -93,24 +61,8 @@
 	end
 
 TrainerMediumDoris:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_DORIS
+	trainer EVENT_BEAT_MEDIUM_DORIS, MEDIUM, DORIS, MediumDorisSeenText, MediumDorisBeatenText, $0000, MediumDorisScript
 
-	; trainer group && trainer id
-	db MEDIUM, DORIS
-
-	; text when seen
-	dw MediumDorisSeenText
-
-	; text when trainer beaten
-	dw MediumDorisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumDorisScript
-
 MediumDorisScript:
 	talkaftercancel
 	loadfont
@@ -120,24 +72,8 @@
 	end
 
 TrainerPsychicJared:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_JARED
+	trainer EVENT_BEAT_PSYCHIC_JARED, PSYCHIC_T, JARED, PsychicJaredSeenText, PsychicJaredBeatenText, $0000, PsychicJaredScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, JARED
-
-	; text when seen
-	dw PsychicJaredSeenText
-
-	; text when trainer beaten
-	dw PsychicJaredBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicJaredScript
-
 PsychicJaredScript:
 	talkaftercancel
 	loadfont
@@ -350,7 +286,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 32
 	warp_def $11, $8, 2, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $11, $9, 2, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
@@ -385,18 +321,18 @@
 	warp_def $3, $1, 16, GROUP_SAFFRON_GYM, MAP_SAFFRON_GYM
 	warp_def $9, $b, 17, GROUP_SAFFRON_GYM, MAP_SAFFRON_GYM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 15, 8, $0, SaffronGymStatue
+	signpost 15, 8, SIGNPOST_READ, SaffronGymStatue
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_SABRINA, 12, 13, $6, $0, 255, 255, $80, 0, SabrinaScript_0x189c2e, -1
-	person_event SPRITE_GRANNY, 20, 21, $a, $0, 255, 255, $b2, 3, TrainerMediumRebecca, -1
-	person_event SPRITE_YOUNGSTER, 20, 7, $a, $0, 255, 255, $92, 3, TrainerPsychicFranklin, -1
-	person_event SPRITE_GRANNY, 8, 7, $a, $0, 255, 255, $b2, 2, TrainerMediumDoris, -1
-	person_event SPRITE_YOUNGSTER, 8, 21, $a, $0, 255, 255, $92, 2, TrainerPsychicJared, -1
-	person_event SPRITE_GYM_GUY, 18, 13, $6, $0, 255, 255, $90, 0, SaffronGymGuyScript, -1
+	person_event SPRITE_SABRINA, 12, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SabrinaScript_0x189c2e, -1
+	person_event SPRITE_GRANNY, 20, 21, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerMediumRebecca, -1
+	person_event SPRITE_YOUNGSTER, 20, 7, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicFranklin, -1
+	person_event SPRITE_GRANNY, 8, 7, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerMediumDoris, -1
+	person_event SPRITE_YOUNGSTER, 8, 21, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPsychicJared, -1
+	person_event SPRITE_GYM_GUY, 18, 13, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SaffronGymGuyScript, -1
--- a/maps/SaffronMart.asm
+++ b/maps/SaffronMart.asm
@@ -1,8 +1,8 @@
 SaffronMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x18a3bf:
@@ -36,19 +36,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 3, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $7, $3, 3, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x18a3bf, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 11, $3, $0, 255, 255, $b0, 0, CooltrainerMScript_0x18a3c6, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 11, $5, $1, 255, 255, $a0, 0, CooltrainerFScript_0x18a3c9, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x18a3bf, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 11, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CooltrainerMScript_0x18a3c6, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x18a3c9, -1
--- a/maps/SaffronPokeCenter1F.asm
+++ b/maps/SaffronPokeCenter1F.asm
@@ -1,8 +1,8 @@
 SaffronPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x18a47d:
@@ -109,21 +109,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 4, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $7, $4, 4, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18a47d, -1
-	person_event SPRITE_TEACHER, 6, 11, $2, $11, 255, 255, $a0, 0, TeacherScript_0x18a480, -1
-	person_event SPRITE_FISHER, 10, 12, $8, $0, 255, 255, $80, 0, FisherScript_0x18a48c, -1
-	person_event SPRITE_YOUNGSTER, 8, 5, $3, $0, 255, 255, $90, 0, YoungsterScript_0x18a4a0, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x18a47d, -1
+	person_event SPRITE_TEACHER, 6, 11, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x18a480, -1
+	person_event SPRITE_FISHER, 10, 12, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x18a48c, -1
+	person_event SPRITE_YOUNGSTER, 8, 5, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x18a4a0, -1
--- a/maps/SaffronPokeCenter2FBeta.asm
+++ b/maps/SaffronPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 SaffronPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SaffronPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_SAFFRON_POKECENTER_1F, MAP_SAFFRON_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/SaffronTrainStation.asm
+++ b/maps/SaffronTrainStation.asm
@@ -1,11 +1,11 @@
 SaffronTrainStation_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x18a81d, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x18a81d:
@@ -33,7 +33,7 @@
 	applymovement $2, MovementData_0x18a88f
 	applymovement $0, MovementData_0x18a898
 	writebyte $1
-	special Function8cc04
+	special Special_MagnetTrain
 	warpcheck
 	newloadmap $f9
 	applymovement $0, MovementData_0x18a854
@@ -215,7 +215,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $11, $8, 6, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $11, $9, 6, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
@@ -222,16 +222,16 @@
 	warp_def $5, $6, 4, GROUP_GOLDENROD_MAGNET_TRAIN_STATION, MAP_GOLDENROD_MAGNET_TRAIN_STATION
 	warp_def $5, $b, 3, GROUP_GOLDENROD_MAGNET_TRAIN_STATION, MAP_GOLDENROD_MAGNET_TRAIN_STATION
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $6, $b, $0, UnknownScript_0x18a862, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_OFFICER, 13, 13, $6, $0, 255, 255, $0, 0, OfficerScript_0x18a81e, -1
-	person_event SPRITE_GYM_GUY, 18, 14, $2, $11, 255, 255, $0, 0, GymGuyScript_0x18a875, -1
-	person_event SPRITE_TEACHER, 15, 10, $9, $0, 255, 255, $0, 0, TeacherScript_0x18a889, EVENT_772
-	person_event SPRITE_LASS, 14, 10, $7, $0, 255, 255, $a0, 0, LassScript_0x18a88c, EVENT_772
+	person_event SPRITE_OFFICER, 13, 13, OW_UP | $2, $0, -1, -1, $0, 0, OfficerScript_0x18a81e, -1
+	person_event SPRITE_GYM_GUY, 18, 14, OW_DOWN | $2, $11, -1, -1, $0, 0, GymGuyScript_0x18a875, -1
+	person_event SPRITE_TEACHER, 15, 10, OW_LEFT | $1, $0, -1, -1, $0, 0, TeacherScript_0x18a889, EVENT_SAFFRON_TRAIN_STATION_POPULATION
+	person_event SPRITE_LASS, 14, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x18a88c, EVENT_SAFFRON_TRAIN_STATION_POPULATION
--- a/maps/SeafoamGym.asm
+++ b/maps/SeafoamGym.asm
@@ -1,11 +1,11 @@
 SeafoamGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x1ab4fa, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x1ab4fa:
@@ -159,17 +159,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $5, $5, 1, GROUP_ROUTE_20, MAP_ROUTE_20
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_BLAINE, 6, 9, $6, $0, 255, 255, $b0, 0, BlaineScript_0x1ab4fb, -1
-	person_event SPRITE_GYM_GUY, 9, 10, $7, $0, 255, 255, $90, 0, SeafoamGymGuyScript, EVENT_777
+	person_event SPRITE_BLAINE, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BlaineScript_0x1ab4fb, -1
+	person_event SPRITE_GYM_GUY, 9, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SeafoamGymGuyScript, EVENT_SEAFOAM_GYM_GYM_GUY
--- a/maps/SilphCo1F.asm
+++ b/maps/SilphCo1F.asm
@@ -1,8 +1,8 @@
 SilphCo1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ReceptionistScript_0x18abe5:
@@ -55,18 +55,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 7, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 	warp_def $7, $3, 7, GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_RECEPTIONIST, 6, 8, $6, $0, 255, 255, $90, 0, ReceptionistScript_0x18abe5, -1
-	person_event SPRITE_OFFICER, 5, 17, $6, $0, 255, 255, $90, 0, OfficerScript_0x18abe8, -1
+	person_event SPRITE_RECEPTIONIST, 6, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ReceptionistScript_0x18abe5, -1
+	person_event SPRITE_OFFICER, 5, 17, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x18abe8, -1
--- a/maps/SilverCaveItemRooms.asm
+++ b/maps/SilverCaveItemRooms.asm
@@ -1,8 +1,8 @@
 SilverCaveItemRooms_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c65e:
@@ -15,18 +15,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $3, $d, 3, GROUP_SILVER_CAVE_ROOM_2, MAP_SILVER_CAVE_ROOM_2
 	warp_def $f, $7, 4, GROUP_SILVER_CAVE_ROOM_2, MAP_SILVER_CAVE_ROOM_2
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 7, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c65e, EVENT_69C
-	person_event SPRITE_POKE_BALL, 15, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c660, EVENT_69D
+	person_event SPRITE_POKE_BALL, 7, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c65e, EVENT_SILVER_CAVE_ITEM_ROOMS_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 15, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c660, EVENT_SILVER_CAVE_ITEM_ROOMS_FULL_RESTORE
--- a/maps/SilverCaveOutside.asm
+++ b/maps/SilverCaveOutside.asm
@@ -1,8 +1,8 @@
 SilverCaveOutside_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -19,8 +19,7 @@
 	jumptext MtSilverSignText
 
 MapSilverCaveOutsideSignpostItem2:
-	dw $00b8
-	db FULL_RESTORE
+	dwb EVENT_SILVER_CAVE_OUTSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
 MtSilverSignText:
 	text "MT.SILVER"
@@ -30,19 +29,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $13, $17, 1, GROUP_SILVER_CAVE_POKECENTER_1F, MAP_SILVER_CAVE_POKECENTER_1F
 	warp_def $b, $12, 1, GROUP_SILVER_CAVE_ROOM_1, MAP_SILVER_CAVE_ROOM_1
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 19, 24, $0, MtSilverPokeCenterSign
-	signpost 13, 17, $0, MtSilverSign
-	signpost 25, 9, $7, MapSilverCaveOutsideSignpostItem2
+	signpost 19, 24, SIGNPOST_READ, MtSilverPokeCenterSign
+	signpost 13, 17, SIGNPOST_READ, MtSilverSign
+	signpost 25, 9, SIGNPOST_ITEM, MapSilverCaveOutsideSignpostItem2
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/SilverCavePokeCenter1F.asm
+++ b/maps/SilverCavePokeCenter1F.asm
@@ -1,8 +1,8 @@
 SilverCavePokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x1ae59a:
@@ -29,19 +29,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 1, GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE
 	warp_def $7, $4, 1, GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x1ae59a, -1
-	person_event SPRITE_GRANNY, 9, 5, $8, $12, 255, 255, $0, 0, GrannyScript_0x1ae59d, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x1ae59a, -1
+	person_event SPRITE_GRANNY, 9, 5, OW_LEFT | $0, $12, -1, -1, $0, 0, GrannyScript_0x1ae59d, -1
--- a/maps/SilverCaveRoom1.asm
+++ b/maps/SilverCaveRoom1.asm
@@ -1,8 +1,8 @@
 SilverCaveRoom1_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c554:
@@ -18,13 +18,11 @@
 	db ULTRA_BALL, 1
 
 MapSilverCaveRoom1SignpostItem0:
-	dw $009a
-	db DIRE_HIT
+	dwb EVENT_SILVER_CAVE_ROOM_1_HIDDEN_DIRE_HIT, DIRE_HIT
 	
 
 MapSilverCaveRoom1SignpostItem1:
-	dw $009b
-	db ULTRA_BALL
+	dwb EVENT_SILVER_CAVE_ROOM_1_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
 SilverCaveRoom1_MapEventHeader:
@@ -31,22 +29,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $21, $9, 2, GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE
 	warp_def $1, $f, 1, GROUP_SILVER_CAVE_ROOM_2, MAP_SILVER_CAVE_ROOM_2
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 23, 16, $7, MapSilverCaveRoom1SignpostItem0
-	signpost 12, 17, $7, MapSilverCaveRoom1SignpostItem1
+	signpost 23, 16, SIGNPOST_ITEM, MapSilverCaveRoom1SignpostItem0
+	signpost 12, 17, SIGNPOST_ITEM, MapSilverCaveRoom1SignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 13, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c554, EVENT_699
-	person_event SPRITE_POKE_BALL, 33, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c556, EVENT_69A
-	person_event SPRITE_POKE_BALL, 34, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c558, EVENT_69B
-	person_event SPRITE_POKE_BALL, 22, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c55a, EVENT_7C1
+	person_event SPRITE_POKE_BALL, 13, 8, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c554, EVENT_SILVER_CAVE_ROOM_1_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 33, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c556, EVENT_SILVER_CAVE_ROOM_1_PROTEIN
+	person_event SPRITE_POKE_BALL, 34, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c558, EVENT_SILVER_CAVE_ROOM_1_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 22, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c55a, EVENT_SILVER_CAVE_ROOM_1_ULTRA_BALL
--- a/maps/SilverCaveRoom2.asm
+++ b/maps/SilverCaveRoom2.asm
@@ -1,8 +1,8 @@
 SilverCaveRoom2_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c5b2:
@@ -15,8 +15,7 @@
 	db PP_UP, 1
 
 MapSilverCaveRoom2SignpostItem0:
-	dw $009c
-	db MAX_POTION
+	dwb EVENT_SILVER_CAVE_ROOM_2_HIDDEN_MAX_POTION, MAX_POTION
 	
 
 SilverCaveRoom2_MapEventHeader:
@@ -23,7 +22,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $1f, $11, 2, GROUP_SILVER_CAVE_ROOM_1, MAP_SILVER_CAVE_ROOM_1
 	warp_def $5, $b, 1, GROUP_SILVER_CAVE_ROOM_3, MAP_SILVER_CAVE_ROOM_3
@@ -30,15 +29,15 @@
 	warp_def $15, $d, 1, GROUP_SILVER_CAVE_ITEM_ROOMS, MAP_SILVER_CAVE_ITEM_ROOMS
 	warp_def $3, $17, 2, GROUP_SILVER_CAVE_ITEM_ROOMS, MAP_SILVER_CAVE_ITEM_ROOMS
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 31, 14, $7, MapSilverCaveRoom2SignpostItem0
+	signpost 31, 14, SIGNPOST_ITEM, MapSilverCaveRoom2SignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 14, 28, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c5b2, EVENT_7C2
-	person_event SPRITE_POKE_BALL, 28, 26, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c5b4, EVENT_7C3
-	person_event SPRITE_POKE_BALL, 24, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c5b6, EVENT_7C4
+	person_event SPRITE_POKE_BALL, 14, 28, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c5b2, EVENT_SILVER_CAVE_ROOM_2_CALCIUM
+	person_event SPRITE_POKE_BALL, 28, 26, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c5b4, EVENT_SILVER_CAVE_ROOM_2_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 24, 8, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c5b6, EVENT_SILVER_CAVE_ROOM_2_PP_UP
--- a/maps/SilverCaveRoom3.asm
+++ b/maps/SilverCaveRoom3.asm
@@ -1,8 +1,8 @@
 SilverCaveRoom3_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 RedScript_0x18c603:
@@ -22,11 +22,11 @@
 	writetext UnknownText_0x18c63f
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	disappear $2
 	pause 15
-	special Function8c0ab
+	special Special_FadeInQuickly
 	pause 30
 	special HealParty
 	refreshscreen $0
@@ -51,16 +51,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $21, $9, 2, GROUP_SILVER_CAVE_ROOM_2, MAP_SILVER_CAVE_ROOM_2
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_RED, 14, 13, $7, $0, 255, 255, $80, 0, RedScript_0x18c603, EVENT_RED_IN_MT_SILVER
+	person_event SPRITE_RED, 14, 13, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, RedScript_0x18c603, EVENT_RED_IN_MT_SILVER
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -1,8 +1,8 @@
 SlowpokeWellB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 KurtScript_0x5a5d5:
@@ -9,24 +9,8 @@
 	jumptextfaceplayer UnknownText_0x5a6b5
 
 TrainerGruntM29:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_22
+	trainer EVENT_BEAT_ROCKET_GRUNTM_29, GRUNTM, 29, GruntM29SeenText, GruntM29BeatenText, $0000, GruntM29Script
 
-	; trainer group && trainer id
-	db GRUNTM, 29
-
-	; text when seen
-	dw GruntM29SeenText
-
-	; text when trainer beaten
-	dw GruntM29BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM29Script
-
 GruntM29Script:
 	talkaftercancel
 	loadfont
@@ -36,37 +20,21 @@
 	end
 
 TrainerGruntM1:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_1
+	trainer EVENT_BEAT_ROCKET_GRUNTM_1, GRUNTM, 1, GruntM1SeenText, GruntM1BeatenText, $0000, GruntM1Script
 
-	; trainer group && trainer id
-	db GRUNTM, 1
-
-	; text when seen
-	dw GruntM1SeenText
-
-	; text when trainer beaten
-	dw GruntM1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM1Script
-
 GruntM1Script:
 	loadfont
 	writetext TrainerGruntM1WhenTalkText
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	disappear $2
 	disappear $3
 	disappear $4
 	disappear $5
 	pause 15
-	special Function8c0ab
+	special Special_FadeInQuickly
 	disappear $8
 	moveperson $8, $b, $6
 	appear $8
@@ -77,18 +45,18 @@
 	closetext
 	loadmovesprites
 	setevent EVENT_CLEARED_SLOWPOKE_WELL
-	variablesprite $6, $4
+	variablesprite SPRITE_AZALEA_ROCKET, SPRITE_SILVER
 	domaptrigger GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN, $1
-	clearevent EVENT_6F3
-	clearevent EVENT_6E9
-	setevent EVENT_6F5
-	setevent EVENT_6F6
-	setevent EVENT_6FB
-	setevent EVENT_740
-	clearevent EVENT_6F9
-	clearevent EVENT_6FD
-	clearevent EVENT_73E
-	special Function8c084
+	clearevent EVENT_ILEX_FOREST_APPRENTICE
+	clearevent EVENT_ILEX_FOREST_FARFETCHD
+	setevent EVENT_CHARCOAL_KILN_FARFETCH_D
+	setevent EVENT_CHARCOAL_KILN_APPRENTICE
+	setevent EVENT_SLOWPOKE_WELL_SLOWPOKES
+	setevent EVENT_SLOWPOKE_WELL_KURT
+	clearevent EVENT_AZALEA_TOWN_SLOWPOKES
+	clearevent EVENT_KURTS_HOUSE_SLOWPOKE
+	clearevent EVENT_KURTS_HOUSE_KURT_1
+	special FadeBlackBGMap
 	special HealParty
 	pause 15
 	warp GROUP_KURTS_HOUSE, MAP_KURTS_HOUSE, $3, $3
@@ -95,24 +63,8 @@
 	end
 
 TrainerGruntM2:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_2
+	trainer EVENT_BEAT_ROCKET_GRUNTM_2, GRUNTM, 2, GruntM2SeenText, GruntM2BeatenText, $0000, GruntM2Script
 
-	; trainer group && trainer id
-	db GRUNTM, 2
-
-	; text when seen
-	dw GruntM2SeenText
-
-	; text when trainer beaten
-	dw GruntM2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM2Script
-
 GruntM2Script:
 	talkaftercancel
 	loadfont
@@ -122,24 +74,8 @@
 	end
 
 TrainerGruntF1:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_1
+	trainer EVENT_BEAT_ROCKET_GRUNTF_1, GRUNTF, 1, GruntF1SeenText, GruntF1BeatenText, $0000, GruntF1Script
 
-	; trainer group && trainer id
-	db GRUNTF, 1
-
-	; text when seen
-	dw GruntF1SeenText
-
-	; text when trainer beaten
-	dw GruntF1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF1Script
-
 GruntF1Script:
 	talkaftercancel
 	loadfont
@@ -377,25 +313,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $11, 6, GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN
 	warp_def $b, $7, 1, GROUP_SLOWPOKE_WELL_B2F, MAP_SLOWPOKE_WELL_B2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_ROCKET, 11, 19, $6, $0, 255, 255, $2, 3, TrainerGruntM29, EVENT_6FC
-	person_event SPRITE_ROCKET, 6, 9, $6, $0, 255, 255, $2, 1, TrainerGruntM1, EVENT_6FC
-	person_event SPRITE_ROCKET, 10, 9, $9, $0, 255, 255, $2, 2, TrainerGruntM2, EVENT_6FC
-	person_event SPRITE_ROCKET_GIRL, 8, 14, $9, $0, 255, 255, $82, 4, TrainerGruntF1, EVENT_6FC
-	person_event SPRITE_SLOWPOKE, 8, 11, $1, $0, 255, 255, $80, 0, SlowpokeScript_0x5a681, EVENT_6FB
-	person_event SPRITE_SLOWPOKE, 6, 10, $1, $0, 255, 255, $80, 0, SlowpokeScript_0x5a695, EVENT_6FB
-	person_event SPRITE_KURT, 18, 20, $7, $0, 255, 255, $0, 0, KurtScript_0x5a5d5, EVENT_740
-	person_event SPRITE_BOULDER, 6, 7, $19, $0, 255, 255, $0, 0, SlowpokeWellB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 7, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a6a3, EVENT_662
+	person_event SPRITE_ROCKET, 11, 19, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM29, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_ROCKET, 6, 9, OW_UP | $2, $0, -1, -1, $2, 1, TrainerGruntM1, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_ROCKET, 10, 9, OW_LEFT | $1, $0, -1, -1, $2, 2, TrainerGruntM2, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_ROCKET_GIRL, 8, 14, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerGruntF1, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_SLOWPOKE, 8, 11, OW_DOWN | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SlowpokeScript_0x5a681, EVENT_SLOWPOKE_WELL_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 6, 10, OW_DOWN | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SlowpokeScript_0x5a695, EVENT_SLOWPOKE_WELL_SLOWPOKES
+	person_event SPRITE_KURT, 18, 20, OW_UP | $3, $0, -1, -1, $0, 0, KurtScript_0x5a5d5, EVENT_SLOWPOKE_WELL_KURT
+	person_event SPRITE_BOULDER, 6, 7, OW_LEFT | $11, $0, -1, -1, $0, 0, SlowpokeWellB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 7, 14, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a6a3, EVENT_SLOWPOKE_WELL_B1F_SUPER_POTION
--- a/maps/SlowpokeWellB2F.asm
+++ b/maps/SlowpokeWellB2F.asm
@@ -1,8 +1,8 @@
 SlowpokeWellB2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GymGuyScript_0x5ad0b:
@@ -61,17 +61,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $b, $9, 2, GROUP_SLOWPOKE_WELL_B1F, MAP_SLOWPOKE_WELL_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_GYM_GUY, 8, 9, $2, $21, 255, 255, $0, 1, GymGuyScript_0x5ad0b, -1
-	person_event SPRITE_POKE_BALL, 9, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x5ad28, EVENT_663
+	person_event SPRITE_GYM_GUY, 8, 9, OW_DOWN | $2, $21, -1, -1, $0, 1, GymGuyScript_0x5ad0b, -1
+	person_event SPRITE_POKE_BALL, 9, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5ad28, EVENT_SLOWPOKE_WELL_B2F_TM_RAIN_DANCE
--- a/maps/SoulHouse.asm
+++ b/maps/SoulHouse.asm
@@ -1,8 +1,8 @@
 SoulHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GrampsScript_0x7ec47:
@@ -70,20 +70,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $4, 6, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 	warp_def $7, $5, 6, GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_GRAMPS, 6, 8, $6, $0, 255, 255, $90, 0, GrampsScript_0x7ec47, -1
-	person_event SPRITE_TEACHER, 7, 11, $5, $1, 255, 255, $90, 0, TeacherScript_0x7ec4a, -1
-	person_event SPRITE_LASS, 9, 6, $7, $0, 255, 255, $90, 0, LassScript_0x7ec4d, -1
-	person_event SPRITE_GRANNY, 7, 5, $7, $0, 255, 255, $90, 0, GrannyScript_0x7ec50, -1
+	person_event SPRITE_GRAMPS, 6, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x7ec47, -1
+	person_event SPRITE_TEACHER, 7, 11, OW_UP | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x7ec4a, -1
+	person_event SPRITE_LASS, 9, 6, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x7ec4d, -1
+	person_event SPRITE_GRANNY, 7, 5, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrannyScript_0x7ec50, -1
--- a/maps/SproutTower1F.asm
+++ b/maps/SproutTower1F.asm
@@ -1,8 +1,8 @@
 SproutTower1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SageScript_0x1844fe:
@@ -18,24 +18,8 @@
 	jumptextfaceplayer UnknownText_0x18469d
 
 TrainerSageChow:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_CHOW
+	trainer EVENT_BEAT_SAGE_CHOW, SAGE, CHOW, SageChowSeenText, SageChowBeatenText, $0000, SageChowScript
 
-	; trainer group && trainer id
-	db SAGE, CHOW
-
-	; text when seen
-	dw SageChowSeenText
-
-	; text when trainer beaten
-	dw SageChowBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageChowScript
-
 SageChowScript:
 	talkaftercancel
 	loadfont
@@ -114,7 +98,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $f, $9, 7, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $f, $a, 7, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
@@ -122,19 +106,19 @@
 	warp_def $6, $2, 2, GROUP_SPROUT_TOWER_2F, MAP_SPROUT_TOWER_2F
 	warp_def $3, $11, 3, GROUP_SPROUT_TOWER_2F, MAP_SPROUT_TOWER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 15, 7, $0, MapSproutTower1FSignpost1Script
-	signpost 15, 12, $0, MapSproutTower1FSignpost1Script
+	signpost 15, 7, SIGNPOST_READ, MapSproutTower1FSignpost1Script
+	signpost 15, 12, SIGNPOST_READ, MapSproutTower1FSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_SAGE, 8, 11, $6, $0, 255, 255, $90, 0, SageScript_0x1844fe, -1
-	person_event SPRITE_SAGE, 11, 10, $2, $11, 255, 255, $90, 0, SageScript_0x184501, -1
-	person_event SPRITE_GRANNY, 16, 15, $8, $0, 255, 255, $0, 0, GrannyScript_0x184504, -1
-	person_event SPRITE_TEACHER, 13, 13, $7, $0, 255, 255, $0, 0, TeacherScript_0x184507, -1
-	person_event SPRITE_SAGE, 9, 7, $7, $0, 255, 255, $92, 4, TrainerSageChow, -1
-	person_event SPRITE_POKE_BALL, 11, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x18451e, EVENT_647
+	person_event SPRITE_SAGE, 8, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SageScript_0x1844fe, -1
+	person_event SPRITE_SAGE, 11, 10, OW_DOWN | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SageScript_0x184501, -1
+	person_event SPRITE_GRANNY, 16, 15, OW_LEFT | $0, $0, -1, -1, $0, 0, GrannyScript_0x184504, -1
+	person_event SPRITE_TEACHER, 13, 13, OW_UP | $3, $0, -1, -1, $0, 0, TeacherScript_0x184507, -1
+	person_event SPRITE_SAGE, 9, 7, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSageChow, -1
+	person_event SPRITE_POKE_BALL, 11, 20, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18451e, EVENT_SPROUT_TOWER1F_PARLYZ_HEAL
--- a/maps/SproutTower2F.asm
+++ b/maps/SproutTower2F.asm
@@ -1,29 +1,13 @@
 SproutTower2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerSageNico:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_NICO
+	trainer EVENT_BEAT_SAGE_NICO, SAGE, NICO, SageNicoSeenText, SageNicoBeatenText, $0000, SageNicoScript
 
-	; trainer group && trainer id
-	db SAGE, NICO
-
-	; text when seen
-	dw SageNicoSeenText
-
-	; text when trainer beaten
-	dw SageNicoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageNicoScript
-
 SageNicoScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSageEdmond:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_EDMOND
+	trainer EVENT_BEAT_SAGE_EDMOND, SAGE, EDMOND, SageEdmondSeenText, SageEdmondBeatenText, $0000, SageEdmondScript
 
-	; trainer group && trainer id
-	db SAGE, EDMOND
-
-	; text when seen
-	dw SageEdmondSeenText
-
-	; text when trainer beaten
-	dw SageEdmondBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageEdmondScript
-
 SageEdmondScript:
 	talkaftercancel
 	loadfont
@@ -115,7 +83,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $6, 3, GROUP_SPROUT_TOWER_1F, MAP_SPROUT_TOWER_1F
 	warp_def $6, $2, 4, GROUP_SPROUT_TOWER_1F, MAP_SPROUT_TOWER_1F
@@ -122,15 +90,15 @@
 	warp_def $3, $11, 5, GROUP_SPROUT_TOWER_1F, MAP_SPROUT_TOWER_1F
 	warp_def $e, $a, 1, GROUP_SPROUT_TOWER_3F, MAP_SPROUT_TOWER_3F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 15, 12, $0, MapSproutTower2FSignpost0Script
+	signpost 15, 12, SIGNPOST_READ, MapSproutTower2FSignpost0Script
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_SAGE, 7, 16, $a, $0, 255, 255, $92, 4, TrainerSageNico, -1
-	person_event SPRITE_SAGE, 18, 13, $8, $0, 255, 255, $92, 5, TrainerSageEdmond, -1
-	person_event SPRITE_POKE_BALL, 5, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x1847a7, EVENT_648
+	person_event SPRITE_SAGE, 7, 16, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSageNico, -1
+	person_event SPRITE_SAGE, 18, 13, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerSageEdmond, -1
+	person_event SPRITE_POKE_BALL, 5, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1847a7, EVENT_SPROUT_TOWER2F_X_ACCURACY
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -1,5 +1,5 @@
 SproutTower3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x184945, $0000
 	dw UnknownScript_0x184946, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x184945:
@@ -17,7 +17,7 @@
 
 UnknownScript_0x184947:
 	spriteface $0, UP
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	playsound SFX_TACKLE
 	playsound SFX_ELEVATOR
@@ -32,7 +32,7 @@
 	writetext UnknownText_0x184a27
 	closetext
 	loadmovesprites
-	showemote $0, $8, 15
+	showemote EMOTE_SHOCK, $8, 15
 	spriteface $8, DOWN
 	pause 15
 	applymovement $8, MovementData_0x184a24
@@ -47,11 +47,11 @@
 	pause 15
 	loadmovesprites
 	playsound SFX_WARP_TO
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	disappear $8
 	waitbutton
-	special Function8c0ab
+	special Special_FadeInQuickly
 	dotrigger $1
 	special RestartMapMusic
 	end
@@ -86,24 +86,8 @@
 	end
 
 TrainerSageJin:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_JIN
+	trainer EVENT_BEAT_SAGE_JIN, SAGE, JIN, SageJinSeenText, SageJinBeatenText, $0000, SageJinScript
 
-	; trainer group && trainer id
-	db SAGE, JIN
-
-	; text when seen
-	dw SageJinSeenText
-
-	; text when trainer beaten
-	dw SageJinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageJinScript
-
 SageJinScript:
 	talkaftercancel
 	loadfont
@@ -113,24 +97,8 @@
 	end
 
 TrainerSageTroy:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_TROY
+	trainer EVENT_BEAT_SAGE_TROY, SAGE, TROY, SageTroySeenText, SageTroyBeatenText, $0000, SageTroyScript
 
-	; trainer group && trainer id
-	db SAGE, TROY
-
-	; text when seen
-	dw SageTroySeenText
-
-	; text when trainer beaten
-	dw SageTroyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageTroyScript
-
 SageTroyScript:
 	talkaftercancel
 	loadfont
@@ -140,24 +108,8 @@
 	end
 
 TrainerSageNeal:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_NEAL
+	trainer EVENT_BEAT_SAGE_NEAL, SAGE, NEAL, SageNealSeenText, SageNealBeatenText, $0000, SageNealScript
 
-	; trainer group && trainer id
-	db SAGE, NEAL
-
-	; text when seen
-	dw SageNealSeenText
-
-	; text when trainer beaten
-	dw SageNealBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageNealScript
-
 SageNealScript:
 	talkaftercancel
 	loadfont
@@ -374,29 +326,29 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $e, $a, 4, GROUP_SPROUT_TOWER_2F, MAP_SPROUT_TOWER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $9, $b, $0, UnknownScript_0x184947, $0, $0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 1, 8, $0, MapSproutTower3FSignpost5Script
-	signpost 1, 11, $0, MapSproutTower3FSignpost5Script
-	signpost 0, 9, $0, MapSproutTower3FSignpost3Script
-	signpost 0, 10, $0, MapSproutTower3FSignpost3Script
-	signpost 15, 5, $0, MapSproutTower3FSignpost5Script
-	signpost 15, 14, $0, MapSproutTower3FSignpost5Script
+	signpost 1, 8, SIGNPOST_READ, MapSproutTower3FSignpost5Script
+	signpost 1, 11, SIGNPOST_READ, MapSproutTower3FSignpost5Script
+	signpost 0, 9, SIGNPOST_READ, MapSproutTower3FSignpost3Script
+	signpost 0, 10, SIGNPOST_READ, MapSproutTower3FSignpost3Script
+	signpost 15, 5, SIGNPOST_READ, MapSproutTower3FSignpost5Script
+	signpost 15, 14, SIGNPOST_READ, MapSproutTower3FSignpost5Script
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_SAGE, 17, 12, $9, $0, 255, 255, $92, 3, TrainerSageJin, -1
-	person_event SPRITE_SAGE, 12, 12, $6, $0, 255, 255, $92, 2, TrainerSageTroy, -1
-	person_event SPRITE_SAGE, 6, 14, $6, $0, 255, 255, $90, 0, SageLiScript, -1
-	person_event SPRITE_SAGE, 15, 15, $8, $0, 255, 255, $92, 3, TrainerSageNeal, -1
-	person_event SPRITE_POKE_BALL, 18, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x184a19, EVENT_649
-	person_event SPRITE_POKE_BALL, 5, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x184a1b, EVENT_64A
-	person_event SPRITE_SILVER, 8, 14, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_RIVAL_SPROUT_TOWER
+	person_event SPRITE_SAGE, 17, 12, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSageJin, -1
+	person_event SPRITE_SAGE, 12, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerSageTroy, -1
+	person_event SPRITE_SAGE, 6, 14, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SageLiScript, -1
+	person_event SPRITE_SAGE, 15, 15, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSageNeal, -1
+	person_event SPRITE_POKE_BALL, 18, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x184a19, EVENT_SPROUT_TOWER_3F_POTION
+	person_event SPRITE_POKE_BALL, 5, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x184a1b, EVENT_SPROUT_TOWER_3F_ESCAPE_ROPE
+	person_event SPRITE_SILVER, 8, 14, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_SPROUT_TOWER
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -1,11 +1,11 @@
 TeamRocketBaseB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x6c65a, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -23,9 +23,9 @@
 	checkevent EVENT_SECURITY_CAMERA_1
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $13, $2
 	appear $2
@@ -34,7 +34,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $13, $2
 	appear $2
@@ -48,9 +48,9 @@
 	checkevent EVENT_SECURITY_CAMERA_1
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $13, $3
 	appear $2
@@ -59,7 +59,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $13, $3
 	appear $2
@@ -73,9 +73,9 @@
 	checkevent EVENT_SECURITY_CAMERA_2
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $4, $7
 	appear $2
@@ -84,7 +84,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface $0, RIGHT
 	moveperson $2, $c, $5
@@ -99,9 +99,9 @@
 	checkevent EVENT_SECURITY_CAMERA_2
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $4, $8
 	appear $2
@@ -110,7 +110,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface $0, RIGHT
 	moveperson $2, $c, $5
@@ -125,9 +125,9 @@
 	checkevent EVENT_SECURITY_CAMERA_3
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $13, $6
 	appear $2
@@ -136,7 +136,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface $0, RIGHT
 	moveperson $2, $19, $b
@@ -151,9 +151,9 @@
 	checkevent EVENT_SECURITY_CAMERA_3
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $13, $7
 	appear $2
@@ -162,7 +162,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface $0, RIGHT
 	moveperson $2, $19, $c
@@ -177,9 +177,9 @@
 	checkevent EVENT_SECURITY_CAMERA_4
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $11, $10
 	appear $2
@@ -188,7 +188,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface $0, RIGHT
 	moveperson $2, $19, $b
@@ -203,9 +203,9 @@
 	checkevent EVENT_SECURITY_CAMERA_5
 	iftrue NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	checkevent EVENT_6DA
+	checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
 	iftrue NoSecurityCamera
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	moveperson $2, $3, $10
 	appear $2
@@ -214,7 +214,7 @@
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface $0, RIGHT
 	moveperson $2, $e, $10
@@ -445,9 +445,9 @@
 	end
 
 VoltorbExplodingTrap:
-	special Function8c084
+	special FadeBlackBGMap
 	cry VOLTORB
-	special Function8c079
+	special FadeInBGMap
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata VOLTORB, 23
@@ -455,9 +455,9 @@
 	end
 
 GeodudeExplodingTrap:
-	special Function8c084
+	special FadeBlackBGMap
 	cry GEODUDE
-	special Function8c079
+	special FadeInBGMap
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata GEODUDE, 21
@@ -465,9 +465,9 @@
 	end
 
 KoffingExplodingTrap:
-	special Function8c084
+	special FadeBlackBGMap
 	cry KOFFING
-	special Function8c079
+	special FadeInBGMap
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata KOFFING, 21
@@ -478,24 +478,8 @@
 	end
 
 TrainerScientistJed:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_JED
+	trainer EVENT_BEAT_SCIENTIST_JED, SCIENTIST, JED, ScientistJedSeenText, ScientistJedBeatenText, $0000, ScientistJedScript
 
-	; trainer group && trainer id
-	db SCIENTIST, JED
-
-	; text when seen
-	dw ScientistJedSeenText
-
-	; text when trainer beaten
-	dw ScientistJedBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistJedScript
-
 ScientistJedScript:
 	talkaftercancel
 	loadfont
@@ -505,24 +489,8 @@
 	end
 
 TrainerGruntM16:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_15
+	trainer EVENT_BEAT_ROCKET_GRUNTM_16, GRUNTM, 16, GruntM16SeenText, GruntM16BeatenText, $0000, GruntM16Script
 
-	; trainer group && trainer id
-	db GRUNTM, 16
-
-	; text when seen
-	dw GruntM16SeenText
-
-	; text when trainer beaten
-	dw GruntM16BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM16Script
-
 GruntM16Script:
 	talkaftercancel
 	loadfont
@@ -569,8 +537,7 @@
 	db GUARD_SPEC, 1
 
 MapTeamRocketBaseB1FSignpostItem8:
-	dw $0086
-	db REVIVE
+	dwb EVENT_TEAM_ROCKET_BASE_B1F_HIDDEN_REVIVE, REVIVE
 	
 
 SecurityCameraMovement1:
@@ -761,7 +728,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $2, $1b, 3, GROUP_MAHOGANY_MART_1F, MAP_MAHOGANY_MART_1F
 	warp_def $e, $3, 1, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F
@@ -768,7 +735,7 @@
 	warp_def $f, $5, 4, GROUP_TEAM_ROCKET_BASE_B1F, MAP_TEAM_ROCKET_BASE_B1F
 	warp_def $2, $19, 3, GROUP_TEAM_ROCKET_BASE_B1F, MAP_TEAM_ROCKET_BASE_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 30
 	; There are five security cameras in the base.
 	; Walking in front of one triggers two Rocket Grunts.
@@ -805,23 +772,23 @@
 	xy_trigger 0, $d, $4, $0, ExplodingTrap21, $0, $0
 	xy_trigger 0, $d, $5, $0, ExplodingTrap22, $0, $0
 
-	; signposts
+.Signposts:
 	db 9
-	signpost 11, 19, $0, MapTeamRocketBaseB1FSignpost0Script
-	signpost 1, 24, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 1, 6, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 15, 8, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 15, 22, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 5, 24, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 11, 20, $0, MapTeamRocketBaseB1FSignpost7Script
-	signpost 11, 21, $0, MapTeamRocketBaseB1FSignpost7Script
-	signpost 11, 3, $7, MapTeamRocketBaseB1FSignpostItem8
+	signpost 11, 19, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost0Script
+	signpost 1, 24, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 1, 6, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 15, 8, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 15, 22, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 5, 24, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 11, 20, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost7Script
+	signpost 11, 21, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost7Script
+	signpost 11, 3, SIGNPOST_ITEM, MapTeamRocketBaseB1FSignpostItem8
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_ROCKET, 4, 4, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D9
-	person_event SPRITE_ROCKET, 8, 6, $9, $0, 255, 255, $2, 3, TrainerGruntM16, EVENT_6DA
-	person_event SPRITE_SCIENTIST, 16, 22, $8, $0, 255, 255, $92, 3, TrainerScientistJed, EVENT_6DA
-	person_event SPRITE_POKE_BALL, 10, 31, $1, $0, 255, 255, $1, 0, ItemFragment_0x6cac4, EVENT_669
-	person_event SPRITE_POKE_BALL, 19, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x6cac6, EVENT_66A
-	person_event SPRITE_POKE_BALL, 16, 25, $1, $0, 255, 255, $1, 0, ItemFragment_0x6cac8, EVENT_66B
+	person_event SPRITE_ROCKET, 4, 4, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_SECURITY_GRUNTS
+	person_event SPRITE_ROCKET, 8, 6, OW_LEFT | $1, $0, -1, -1, $2, 3, TrainerGruntM16, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_SCIENTIST, 16, 22, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerScientistJed, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_POKE_BALL, 10, 31, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6cac4, EVENT_TEAM_ROCKET_BASE_B1F_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 19, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6cac6, EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
+	person_event SPRITE_POKE_BALL, 16, 25, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6cac8, EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -1,5 +1,5 @@
 TeamRocketBaseB2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 4
 
 	; triggers
@@ -8,7 +8,7 @@
 	dw UnknownScript_0x6cf87, $0000
 	dw UnknownScript_0x6cf88, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -53,7 +53,7 @@
 	closetext
 	loadmovesprites
 	spriteface $0, DOWN
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	applymovement $0, MovementData_0x6d21f
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	applymovement $3, MovementData_0x6d224
@@ -89,9 +89,9 @@
 	loadtrainer EXECUTIVEF, 2
 	startbattle
 	disappear $5
-	setevent EVENT_6DD
-	setevent EVENT_6DE
-	setevent EVENT_6D6
+	setevent EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+	setevent EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
+	setevent EVENT_TEAM_ROCKET_BASE_B2F_LANCE
 	returnafterbattle
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEF_2
 	loadfont
@@ -98,8 +98,8 @@
 	writetext UnknownText_0x6d4c6
 	closetext
 	loadmovesprites
-	special Function8c0b6
-	special Functiond91
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
 	disappear $2
 	disappear $3
 	disappear $c
@@ -106,9 +106,9 @@
 	disappear $d
 	disappear $e
 	pause 15
-	special Function8c0ab
+	special Special_FadeInQuickly
 	dotrigger $2
-	clearevent EVENT_6D6
+	clearevent EVENT_TEAM_ROCKET_BASE_B2F_LANCE
 	spriteface $4, DOWN
 	loadfont
 	writetext UnknownText_0x6d5d8
@@ -155,19 +155,19 @@
 	writetext UnknownText_0x6da97
 	closetext
 	loadmovesprites
-	special Function8c084
-	special Function1060a2
+	special FadeBlackBGMap
+	special Mobile_HealParty
 	playsound SFX_FULL_HEAL
 	special HealParty
-	special Function8c079
+	special FadeInBGMap
 	loadfont
 	writetext UnknownText_0x6daf7
 	closetext
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_04C
+	setevent EVENT_LANCE_HEALED_YOU_IN_TEAM_ROCKET_BASE
 	checkcode VAR_FACING
-	if_equal $3, UnknownScript_0x6d0be
+	if_equal RIGHT, UnknownScript_0x6d0be
 	applymovement $4, MovementData_0x6d212
 	disappear $4
 	end
@@ -178,24 +178,8 @@
 	end
 
 TrainerGruntM17:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_16
+	trainer EVENT_BEAT_ROCKET_GRUNTM_17, GRUNTM, 17, GruntM17SeenText, GruntM17BeatenText, $0000, GruntM17Script
 
-	; trainer group && trainer id
-	db GRUNTM, 17
-
-	; text when seen
-	dw GruntM17SeenText
-
-	; text when trainer beaten
-	dw GruntM17BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM17Script
-
 GruntM17Script:
 	talkaftercancel
 	loadfont
@@ -205,24 +189,8 @@
 	end
 
 TrainerGruntM18:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_17
+	trainer EVENT_BEAT_ROCKET_GRUNTM_18, GRUNTM, 18, GruntM18SeenText, GruntM18BeatenText, $0000, GruntM18Script
 
-	; trainer group && trainer id
-	db GRUNTM, 18
-
-	; text when seen
-	dw GruntM18SeenText
-
-	; text when trainer beaten
-	dw GruntM18BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM18Script
-
 GruntM18Script:
 	talkaftercancel
 	loadfont
@@ -232,24 +200,8 @@
 	end
 
 TrainerGruntM19:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_18
+	trainer EVENT_BEAT_ROCKET_GRUNTM_19, GRUNTM, 19, GruntM19SeenText, GruntM19BeatenText, $0000, GruntM19Script
 
-	; trainer group && trainer id
-	db GRUNTM, 19
-
-	; text when seen
-	dw GruntM19SeenText
-
-	; text when trainer beaten
-	dw GruntM19BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM19Script
-
 GruntM19Script:
 	talkaftercancel
 	loadfont
@@ -265,11 +217,11 @@
 	iftrue UnknownScript_0x6d182
 	disappear $6
 	disappear $9
-	checkevent EVENT_6E0
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
 	iffalse UnknownScript_0x6d182
-	checkevent EVENT_6E1
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
 	iffalse UnknownScript_0x6d182
-	checkevent EVENT_6E2
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	iffalse UnknownScript_0x6d182
 	returnafterbattle
 	special PlayMapMusic
@@ -283,11 +235,11 @@
 	iftrue UnknownScript_0x6d182
 	disappear $7
 	disappear $a
-	checkevent EVENT_6E0
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
 	iffalse UnknownScript_0x6d182
-	checkevent EVENT_6E1
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
 	iffalse UnknownScript_0x6d182
-	checkevent EVENT_6E2
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	iffalse UnknownScript_0x6d182
 	returnafterbattle
 	special PlayMapMusic
@@ -301,11 +253,11 @@
 	iftrue UnknownScript_0x6d182
 	disappear $8
 	disappear $b
-	checkevent EVENT_6E0
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
 	iffalse UnknownScript_0x6d182
-	checkevent EVENT_6E1
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
 	iffalse UnknownScript_0x6d182
-	checkevent EVENT_6E2
+	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	iffalse UnknownScript_0x6d182
 	returnafterbattle
 	special PlayMapMusic
@@ -339,10 +291,10 @@
 	disappear $4
 	setevent EVENT_CLEARED_ROCKET_HIDEOUT
 	clearflag ENGINE_ROCKET_SIGNAL_ON_CH20
-	setevent EVENT_6DC
-	setevent EVENT_757
+	setevent EVENT_ROUTE_43_GATE_ROCKETS
+	setevent EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_GYM
 	dotrigger $3
-	clearevent EVENT_735
+	clearevent EVENT_LAKE_OF_RAGE_CIVILIANS
 	setevent EVENT_TURNED_OFF_SECURITY_CAMERAS
 	setevent EVENT_SECURITY_CAMERA_1
 	setevent EVENT_SECURITY_CAMERA_2
@@ -352,7 +304,7 @@
 	end
 
 MapTeamRocketBaseB2FSignpostPtr1:
-	dw $0300
+	dw EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
 	dw MapTeamRocketBaseB2FSignpost1Script
 	
 
@@ -395,8 +347,7 @@
 	db TM_THIEF, 1
 
 MapTeamRocketBaseB2FSignpostItem22:
-	dw $0087
-	db FULL_HEAL
+	dwb EVENT_TEAM_ROCKET_BASE_B2F_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
 MovementData_0x6d212:
@@ -953,7 +904,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $e, $3, 2, GROUP_TEAM_ROCKET_BASE_B1F, MAP_TEAM_ROCKET_BASE_B1F
 	warp_def $2, $3, 1, GROUP_TEAM_ROCKET_BASE_B3F, MAP_TEAM_ROCKET_BASE_B3F
@@ -961,7 +912,7 @@
 	warp_def $6, $3, 3, GROUP_TEAM_ROCKET_BASE_B3F, MAP_TEAM_ROCKET_BASE_B3F
 	warp_def $e, $1b, 4, GROUP_TEAM_ROCKET_BASE_B3F, MAP_TEAM_ROCKET_BASE_B3F
 
-	; xy triggers
+.XYTriggers:
 	db 9
 	xy_trigger 0, $e, $5, $0, UnknownScript_0x6d085, $0, $0
 	xy_trigger 0, $d, $4, $0, UnknownScript_0x6d08b, $0, $0
@@ -973,45 +924,45 @@
 	xy_trigger 2, $a, $c, $0, UnknownScript_0x6d07a, $0, $0
 	xy_trigger 2, $b, $c, $0, UnknownScript_0x6d07a, $0, $0
 
-	; signposts
+.Signposts:
 	db 23
-	signpost 12, 14, $6, MapTeamRocketBaseB2FSignpostPtr1
-	signpost 12, 15, $6, MapTeamRocketBaseB2FSignpostPtr1
-	signpost 9, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 16, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 15, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 14, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 13, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 8, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 6, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 5, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 13, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 14, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 15, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 16, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 5, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 6, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 8, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 26, $7, MapTeamRocketBaseB2FSignpostItem22
+	signpost 12, 14, SIGNPOST_IFNOTSET, MapTeamRocketBaseB2FSignpostPtr1
+	signpost 12, 15, SIGNPOST_IFNOTSET, MapTeamRocketBaseB2FSignpostPtr1
+	signpost 9, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 16, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 15, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 14, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 13, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 8, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 7, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 6, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 5, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 13, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 14, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 15, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 16, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 5, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 6, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 7, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 8, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 7, 26, SIGNPOST_ITEM, MapTeamRocketBaseB2FSignpostItem22
 
-	; people-events
+.PersonEvents:
 	db 14
-	person_event SPRITE_ROCKET, 20, 24, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6DE
-	person_event SPRITE_ROCKET_GIRL, 20, 24, $7, $0, 255, 255, $80, 0, ObjectEvent, EVENT_6DD
-	person_event SPRITE_LANCE, 17, 9, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D6
-	person_event SPRITE_DRAGON, 17, 13, $9, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6DF
-	person_event SPRITE_VOLTORB, 9, 11, $16, $0, 255, 255, $0, 0, VoltorbScript_0x6d101, EVENT_6E0
-	person_event SPRITE_VOLTORB, 11, 11, $16, $0, 255, 255, $0, 0, VoltorbScript_0x6d12c, EVENT_6E1
-	person_event SPRITE_VOLTORB, 13, 11, $16, $0, 255, 255, $0, 0, VoltorbScript_0x6d157, EVENT_6E2
-	person_event SPRITE_VOLTORB, 9, 26, $16, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6E0
-	person_event SPRITE_VOLTORB, 11, 26, $16, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6E1
-	person_event SPRITE_VOLTORB, 13, 26, $16, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6E2
-	person_event SPRITE_ROCKET, 17, 29, $6, $0, 255, 255, $2, 3, TrainerGruntM17, EVENT_6DA
-	person_event SPRITE_ROCKET, 5, 8, $a, $0, 255, 255, $2, 1, TrainerGruntM18, EVENT_6DA
-	person_event SPRITE_ROCKET, 18, 25, $8, $0, 255, 255, $2, 4, TrainerGruntM19, EVENT_6DA
-	person_event SPRITE_POKE_BALL, 14, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x6d20d, EVENT_66C
+	person_event SPRITE_ROCKET, 20, 24, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
+	person_event SPRITE_ROCKET_GIRL, 20, 24, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+	person_event SPRITE_LANCE, 17, 9, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_LANCE
+	person_event SPRITE_DRAGON, 17, 13, OW_LEFT | $1, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_DRAGONITE
+	person_event SPRITE_VOLTORB, 9, 11, OW_UP | $12, $0, -1, -1, $0, 0, VoltorbScript_0x6d101, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+	person_event SPRITE_VOLTORB, 11, 11, OW_UP | $12, $0, -1, -1, $0, 0, VoltorbScript_0x6d12c, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+	person_event SPRITE_VOLTORB, 13, 11, OW_UP | $12, $0, -1, -1, $0, 0, VoltorbScript_0x6d157, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+	person_event SPRITE_VOLTORB, 9, 26, OW_UP | $12, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+	person_event SPRITE_VOLTORB, 11, 26, OW_UP | $12, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+	person_event SPRITE_VOLTORB, 13, 26, OW_UP | $12, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+	person_event SPRITE_ROCKET, 17, 29, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM17, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET, 5, 8, OW_LEFT | $2, $0, -1, -1, $2, 1, TrainerGruntM18, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET, 18, 25, OW_LEFT | $0, $0, -1, -1, $2, 4, TrainerGruntM19, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_POKE_BALL, 14, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6d20d, EVENT_TEAM_ROCKET_BASE_B2F_TM_THIEF
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -1,39 +1,39 @@
 TeamRocketBaseB3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 4
 
 	; triggers
-	dw UnknownScript_0x6dfe9, $0000
-	dw UnknownScript_0x6dfed, $0000
-	dw UnknownScript_0x6dfee, $0000
-	dw UnknownScript_0x6dfef, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
+	dw .Trigger3, $0000
+	dw .Trigger4, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
 
-	dbw 1, UnknownScript_0x6dff0
+	dbw 1, .CheckGiovanniDoor
 
-UnknownScript_0x6dfe9:
+.Trigger1:
 	priorityjump LanceScript_0x6dffc
 	end
 
-UnknownScript_0x6dfed:
+.Trigger2:
 	end
 
-UnknownScript_0x6dfee:
+.Trigger3:
 	end
 
-UnknownScript_0x6dfef:
+.Trigger4:
 	end
 
-UnknownScript_0x6dff0:
+.CheckGiovanniDoor:
 	checkevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
-	iftrue UnknownScript_0x6dff7
+	iftrue .OpenSesame
 	return
 
-UnknownScript_0x6dff7:
+.OpenSesame:
 	changeblock $a, $8, $7
 	return
 
@@ -54,7 +54,7 @@
 
 UnknownScript_0x6e019:
 	spriteface $0, LEFT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	appear $a
 	applymovement $a, MovementData_0x6e164
@@ -83,7 +83,7 @@
 	applymovement $0, MovementData_0x6e13a
 UnknownScript_0x6e056:
 	pause 30
-	showemote $0, $3, 15
+	showemote EMOTE_SHOCK, $3, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface $3, DOWN
 	loadfont
@@ -117,24 +117,8 @@
 	end
 
 TrainerGruntF5:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_5
+	trainer EVENT_BEAT_ROCKET_GRUNTF_5, GRUNTF, 5, GruntF5SeenText, GruntF5BeatenText, $0000, GruntF5Script
 
-	; trainer group && trainer id
-	db GRUNTF, 5
-
-	; text when seen
-	dw GruntF5SeenText
-
-	; text when trainer beaten
-	dw GruntF5BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF5Script
-
 GruntF5Script:
 	talkaftercancel
 	loadfont
@@ -145,24 +129,8 @@
 	end
 
 TrainerGruntM28:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_21
+	trainer EVENT_BEAT_ROCKET_GRUNTM_28, GRUNTM, 28, GruntM28SeenText, GruntM28BeatenText, $0000, GruntM28Script
 
-	; trainer group && trainer id
-	db GRUNTM, 28
-
-	; text when seen
-	dw GruntM28SeenText
-
-	; text when trainer beaten
-	dw GruntM28BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM28Script
-
 GruntM28Script:
 	talkaftercancel
 	loadfont
@@ -173,24 +141,8 @@
 	end
 
 TrainerScientistRoss:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_ROSS
+	trainer EVENT_BEAT_SCIENTIST_ROSS, SCIENTIST, ROSS, ScientistRossSeenText, ScientistRossBeatenText, $0000, ScientistRossScript
 
-	; trainer group && trainer id
-	db SCIENTIST, ROSS
-
-	; text when seen
-	dw ScientistRossSeenText
-
-	; text when trainer beaten
-	dw ScientistRossBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistRossScript
-
 ScientistRossScript:
 	talkaftercancel
 	loadfont
@@ -200,24 +152,8 @@
 	end
 
 TrainerScientistMitch:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_MITCH
+	trainer EVENT_BEAT_SCIENTIST_MITCH, SCIENTIST, MITCH, ScientistMitchSeenText, ScientistMitchBeatenText, $0000, ScientistMitchScript
 
-	; trainer group && trainer id
-	db SCIENTIST, MITCH
-
-	; text when seen
-	dw ScientistMitchSeenText
-
-	; text when trainer beaten
-	dw ScientistMitchBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistMitchScript
-
 ScientistMitchScript:
 	talkaftercancel
 	loadfont
@@ -623,7 +559,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $2, $3, 2, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F
 	warp_def $2, $1b, 3, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F
@@ -630,38 +566,38 @@
 	warp_def $6, $3, 4, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F
 	warp_def $e, $1b, 5, GROUP_TEAM_ROCKET_BASE_B2F, MAP_TEAM_ROCKET_BASE_B2F
 
-	; xy triggers
+.XYTriggers:
 	db 3
 	xy_trigger 2, $8, $a, $0, UnknownScript_0x6e04b, $0, $0
 	xy_trigger 2, $8, $b, $0, UnknownScript_0x6e052, $0, $0
 	xy_trigger 1, $a, $8, $0, UnknownScript_0x6e019, $0, $0
 
-	; signposts
+.Signposts:
 	db 10
-	signpost 9, 10, $6, BossDoor
-	signpost 9, 11, $6, BossDoor
-	signpost 1, 10, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 11, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 12, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 13, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 4, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 5, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 6, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 7, $0, MapTeamRocketBaseB3FSignpost9Script
+	signpost 9, 10, SIGNPOST_IFNOTSET, BossDoor
+	signpost 9, 11, SIGNPOST_IFNOTSET, BossDoor
+	signpost 1, 10, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 1, 11, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 1, 12, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 1, 13, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 4, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 5, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 6, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 7, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
 
-	; people-events
+.PersonEvents:
 	db 14
-	person_event SPRITE_LANCE, 18, 29, $6, $0, 255, 255, $0, 0, LanceScript_0x6dffc, EVENT_6D7
-	person_event SPRITE_ROCKET, 7, 12, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6DB
-	person_event SPRITE_MOLTRES, 6, 11, $16, $0, 255, 255, $90, 0, MoltresScript_0x6e091, EVENT_6DA
-	person_event SPRITE_ROCKET_GIRL, 11, 25, $7, $0, 255, 255, $82, 0, TrainerGruntF5, EVENT_6DA
-	person_event SPRITE_ROCKET, 18, 9, $a, $0, 255, 255, $2, 3, TrainerGruntM28, EVENT_6DA
-	person_event SPRITE_SCIENTIST, 15, 27, $7, $0, 255, 255, $92, 0, TrainerScientistRoss, EVENT_6DA
-	person_event SPRITE_SCIENTIST, 19, 15, $9, $0, 255, 255, $92, 3, TrainerScientistMitch, EVENT_6DA
-	person_event SPRITE_ROCKET, 18, 28, $6, $0, 255, 255, $0, 0, RocketScript_0x6e048, EVENT_6DA
-	person_event SPRITE_SILVER, 9, 8, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C0
-	person_event SPRITE_POKE_BALL, 16, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e120, EVENT_66D
-	person_event SPRITE_POKE_BALL, 16, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e122, EVENT_66E
-	person_event SPRITE_POKE_BALL, 13, 32, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e124, EVENT_66F
-	person_event SPRITE_POKE_BALL, 6, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e126, EVENT_670
-	person_event SPRITE_POKE_BALL, 14, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e128, EVENT_654
+	person_event SPRITE_LANCE, 18, 29, OW_UP | $2, $0, -1, -1, $0, 0, LanceScript_0x6dffc, EVENT_TEAM_ROCKET_BASE_B3F_LANCE_PASSWORDS
+	person_event SPRITE_ROCKET, 7, 12, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B3F_EXECUTIVE
+	person_event SPRITE_MOLTRES, 6, 11, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, MoltresScript_0x6e091, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET_GIRL, 11, 25, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerGruntF5, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET, 18, 9, OW_LEFT | $2, $0, -1, -1, $2, 3, TrainerGruntM28, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_SCIENTIST, 15, 27, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerScientistRoss, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_SCIENTIST, 19, 15, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerScientistMitch, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET, 18, 28, OW_UP | $2, $0, -1, -1, $0, 0, RocketScript_0x6e048, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_SILVER, 9, 8, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_TEAM_ROCKET_BASE
+	person_event SPRITE_POKE_BALL, 16, 5, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e120, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
+	person_event SPRITE_POKE_BALL, 16, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e122, EVENT_TEAM_ROCKET_BASE_B3F_X_SPECIAL
+	person_event SPRITE_POKE_BALL, 13, 32, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e124, EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 6, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e126, EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL
+	person_event SPRITE_POKE_BALL, 14, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e128, EVENT_TEAM_ROCKET_BASE_B3F_ULTRA_BALL
--- a/maps/TimeCapsule.asm
+++ b/maps/TimeCapsule.asm
@@ -1,44 +1,44 @@
 TimeCapsule_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x1934f8, $0000
-	dw UnknownScript_0x1934fc, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x1934fd
+	dbw 2, TimeCapsule_SetWhichChris
 
-UnknownScript_0x1934f8:
-	priorityjump UnknownScript_0x19350d
+.Trigger1:
+	priorityjump TimeCapsule_Initialize
 	end
 
-UnknownScript_0x1934fc:
+.Trigger2:
 	end
 
-UnknownScript_0x1934fd:
-	special Function29f47
-	iffalse UnknownScript_0x193508
+TimeCapsule_SetWhichChris:
+	special Special_CableClubCheckWhichChris
+	iffalse .Chris2
 	disappear $3
 	appear $2
 	return
 
-UnknownScript_0x193508:
+.Chris2:
 	disappear $2
 	appear $3
 	return
 
-UnknownScript_0x19350d:
+TimeCapsule_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $3
 	end
 
 MapTimeCapsuleSignpost1Script:
-	special Function29eaf
+	special Special_TimeCapsule
 	newloadmap $f8
 	end
 
@@ -58,20 +58,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $4, 4, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $7, $5, 4, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 4, 4, $3, MapTimeCapsuleSignpost1Script
-	signpost 4, 5, $4, MapTimeCapsuleSignpost1Script
+	signpost 4, 4, SIGNPOST_RIGHT, MapTimeCapsuleSignpost1Script
+	signpost 4, 5, SIGNPOST_LEFT, MapTimeCapsuleSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_CHRIS, 8, 7, $9, $0, 255, 255, $0, 0, ChrisScript_0x19351a, EVENT_000
-	person_event SPRITE_CHRIS, 8, 10, $8, $0, 255, 255, $0, 0, ChrisScript_0x19351a, EVENT_001
+	person_event SPRITE_CHRIS, 8, 7, OW_LEFT | $1, $0, -1, -1, $0, 0, ChrisScript_0x19351a, EVENT_GAVE_KURT_APRICORNS
+	person_event SPRITE_CHRIS, 8, 10, OW_LEFT | $0, $0, -1, -1, $0, 0, ChrisScript_0x19351a, EVENT_RECEIVED_BALLS_FROM_KURT
--- a/maps/TinTower1F.asm
+++ b/maps/TinTower1F.asm
@@ -1,5 +1,5 @@
 TinTower1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x18502a, $0000
 	dw UnknownScript_0x18502e, $0000
 
-	; callback count
+.MapCallbacks:
 	db 2
 
 	; callbacks
@@ -29,8 +29,8 @@
 	iffalse UnknownScript_0x185050
 	special SpecialBeastsCheck
 	iffalse UnknownScript_0x185050
-	clearevent EVENT_7C5
-	setevent EVENT_7B6
+	clearevent EVENT_TIN_TOWER_1F_WISE_TRIO_2
+	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_1
 UnknownScript_0x185047:
 	checkevent EVENT_FOUGHT_HO_OH
 	iffalse UnknownScript_0x18504f
@@ -66,8 +66,8 @@
 	disappear $2
 	disappear $3
 	disappear $4
-	clearevent EVENT_7B6
-	setevent EVENT_7C5
+	clearevent EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	return
 
 UnknownScript_0x185084:
@@ -520,27 +520,27 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $f, $9, 12, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $f, $a, 12, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $2, $a, 2, GROUP_TIN_TOWER_2F, MAP_TIN_TOWER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 10
-	person_event SPRITE_SUICUNE, 13, 13, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_7B2
-	person_event SPRITE_RAIKOU, 13, 11, $1, $0, 255, 255, $b0, 0, ObjectEvent, EVENT_7B4
-	person_event SPRITE_ENTEI, 13, 16, $1, $0, 255, 255, $80, 0, ObjectEvent, EVENT_7B3
-	person_event SPRITE_SUPER_NERD, 7, 12, $3, $0, 255, 255, $90, 0, SuperNerdScript_0x1851c8, EVENT_7B5
-	person_event SPRITE_SAGE, 13, 9, $3, $0, 255, 255, $0, 0, SageScript_0x185173, EVENT_7B6
-	person_event SPRITE_SAGE, 15, 15, $3, $0, 255, 255, $0, 0, SageScript_0x185176, EVENT_7B6
-	person_event SPRITE_SAGE, 10, 18, $3, $0, 255, 255, $0, 0, SageScript_0x185179, EVENT_7B6
-	person_event SPRITE_SAGE, 6, 8, $4, $10, 255, 255, $0, 0, SageScript_0x18517c, EVENT_7C5
-	person_event SPRITE_SAGE, 5, 13, $6, $0, 255, 255, $0, 0, SageScript_0x185188, EVENT_7C5
-	person_event SPRITE_SAGE, 6, 18, $5, $1, 255, 255, $0, 0, SageScript_0x1851bc, EVENT_7C5
+	person_event SPRITE_SUICUNE, 13, 13, OW_DOWN | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_TIN_TOWER_1F_SUICUNE
+	person_event SPRITE_RAIKOU, 13, 11, OW_DOWN | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, ObjectEvent, EVENT_TIN_TOWER_1F_RAIKOU
+	person_event SPRITE_ENTEI, 13, 16, OW_DOWN | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_TIN_TOWER_1F_ENTEI
+	person_event SPRITE_SUPER_NERD, 7, 12, OW_DOWN | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x1851c8, EVENT_TIN_TOWER_1F_EUSINE
+	person_event SPRITE_SAGE, 13, 9, OW_DOWN | $3, $0, -1, -1, $0, 0, SageScript_0x185173, EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	person_event SPRITE_SAGE, 15, 15, OW_DOWN | $3, $0, -1, -1, $0, 0, SageScript_0x185176, EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	person_event SPRITE_SAGE, 10, 18, OW_DOWN | $3, $0, -1, -1, $0, 0, SageScript_0x185179, EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	person_event SPRITE_SAGE, 6, 8, OW_UP | $0, $10, -1, -1, $0, 0, SageScript_0x18517c, EVENT_TIN_TOWER_1F_WISE_TRIO_2
+	person_event SPRITE_SAGE, 5, 13, OW_UP | $2, $0, -1, -1, $0, 0, SageScript_0x185188, EVENT_TIN_TOWER_1F_WISE_TRIO_2
+	person_event SPRITE_SAGE, 6, 18, OW_UP | $1, $1, -1, -1, $0, 0, SageScript_0x1851bc, EVENT_TIN_TOWER_1F_WISE_TRIO_2
--- a/maps/TinTower2F.asm
+++ b/maps/TinTower2F.asm
@@ -1,8 +1,8 @@
 TinTower2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TinTower2F_MapEventHeader:
@@ -9,16 +9,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $e, $a, 1, GROUP_TIN_TOWER_3F, MAP_TIN_TOWER_3F
 	warp_def $2, $a, 3, GROUP_TIN_TOWER_1F, MAP_TIN_TOWER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/TinTower3F.asm
+++ b/maps/TinTower3F.asm
@@ -1,8 +1,8 @@
 TinTower3F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x185a37:
@@ -12,17 +12,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $e, $a, 1, GROUP_TIN_TOWER_2F, MAP_TIN_TOWER_2F
 	warp_def $2, $10, 2, GROUP_TIN_TOWER_4F, MAP_TIN_TOWER_4F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 18, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a37, EVENT_64B
+	person_event SPRITE_POKE_BALL, 18, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a37, EVENT_TIN_TOWER_3F_FULL_HEAL
--- a/maps/TinTower4F.asm
+++ b/maps/TinTower4F.asm
@@ -1,8 +1,8 @@
 TinTower4F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x185a58:
@@ -15,8 +15,7 @@
 	db ESCAPE_ROPE, 1
 
 MapTinTower4FSignpostItem0:
-	dw $007d
-	db MAX_POTION
+	dwb EVENT_TIN_TOWER_4F_HIDDEN_MAX_POTION, MAX_POTION
 	
 
 TinTower4F_MapEventHeader:
@@ -23,7 +22,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $4, $2, 2, GROUP_TIN_TOWER_5F, MAP_TIN_TOWER_5F
 	warp_def $2, $10, 2, GROUP_TIN_TOWER_3F, MAP_TIN_TOWER_3F
@@ -30,15 +29,15 @@
 	warp_def $e, $2, 3, GROUP_TIN_TOWER_5F, MAP_TIN_TOWER_5F
 	warp_def $f, $11, 4, GROUP_TIN_TOWER_5F, MAP_TIN_TOWER_5F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 6, 11, $7, MapTinTower4FSignpostItem0
+	signpost 6, 11, SIGNPOST_ITEM, MapTinTower4FSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 14, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a58, EVENT_64C
-	person_event SPRITE_POKE_BALL, 18, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a5a, EVENT_64D
-	person_event SPRITE_POKE_BALL, 16, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a5c, EVENT_64E
+	person_event SPRITE_POKE_BALL, 14, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a58, EVENT_TIN_TOWER_4F_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 18, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a5a, EVENT_TIN_TOWER_4F_PP_UP
+	person_event SPRITE_POKE_BALL, 16, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a5c, EVENT_TIN_TOWER_4F_ESCAPE_ROPE
--- a/maps/TinTower5F.asm
+++ b/maps/TinTower5F.asm
@@ -1,8 +1,8 @@
 TinTower5F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x185aa9:
@@ -9,13 +9,11 @@
 	db RARE_CANDY, 1
 
 MapTinTower5FSignpostItem0:
-	dw $007e
-	db FULL_RESTORE
+	dwb EVENT_TIN_TOWER_5F_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
 MapTinTower5FSignpostItem1:
-	dw $007f
-	db CARBOS
+	dwb EVENT_TIN_TOWER_5F_HIDDEN_CARBOS, CARBOS
 	
 
 TinTower5F_MapEventHeader:
@@ -22,7 +20,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $f, $b, 2, GROUP_TIN_TOWER_6F, MAP_TIN_TOWER_6F
 	warp_def $4, $2, 1, GROUP_TIN_TOWER_4F, MAP_TIN_TOWER_4F
@@ -29,14 +27,14 @@
 	warp_def $e, $2, 3, GROUP_TIN_TOWER_4F, MAP_TIN_TOWER_4F
 	warp_def $f, $11, 4, GROUP_TIN_TOWER_4F, MAP_TIN_TOWER_4F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 14, 16, $7, MapTinTower5FSignpostItem0
-	signpost 15, 3, $7, MapTinTower5FSignpostItem1
+	signpost 14, 16, SIGNPOST_ITEM, MapTinTower5FSignpostItem0
+	signpost 15, 3, SIGNPOST_ITEM, MapTinTower5FSignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 13, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x185aa9, EVENT_64F
+	person_event SPRITE_POKE_BALL, 13, 13, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185aa9, EVENT_TIN_TOWER_5F_RARE_CANDY
--- a/maps/TinTower6F.asm
+++ b/maps/TinTower6F.asm
@@ -1,8 +1,8 @@
 TinTower6F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x185ae4:
@@ -12,17 +12,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $9, $3, 1, GROUP_TIN_TOWER_7F, MAP_TIN_TOWER_7F
 	warp_def $f, $b, 1, GROUP_TIN_TOWER_5F, MAP_TIN_TOWER_5F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 12, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x185ae4, EVENT_7C6
+	person_event SPRITE_POKE_BALL, 12, 12, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185ae4, EVENT_TIN_TOWER_6F_MAX_POTION
--- a/maps/TinTower7F.asm
+++ b/maps/TinTower7F.asm
@@ -1,8 +1,8 @@
 TinTower7F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x185b05:
@@ -12,7 +12,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $9, $3, 1, GROUP_TIN_TOWER_6F, MAP_TIN_TOWER_6F
 	warp_def $f, $a, 1, GROUP_TIN_TOWER_8F, MAP_TIN_TOWER_8F
@@ -20,12 +20,12 @@
 	warp_def $3, $8, 3, GROUP_TIN_TOWER_7F, MAP_TIN_TOWER_7F
 	warp_def $9, $6, 5, GROUP_TIN_TOWER_9F, MAP_TIN_TOWER_9F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 5, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b05, EVENT_650
+	person_event SPRITE_POKE_BALL, 5, 20, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b05, EVENT_TIN_TOWER_7F_MAX_REVIVE
--- a/maps/TinTower8F.asm
+++ b/maps/TinTower8F.asm
@@ -1,8 +1,8 @@
 TinTower8F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x185b35:
@@ -18,7 +18,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $5, $2, 2, GROUP_TIN_TOWER_7F, MAP_TIN_TOWER_7F
 	warp_def $b, $2, 1, GROUP_TIN_TOWER_9F, MAP_TIN_TOWER_9F
@@ -27,14 +27,14 @@
 	warp_def $f, $e, 6, GROUP_TIN_TOWER_9F, MAP_TIN_TOWER_9F
 	warp_def $9, $6, 7, GROUP_TIN_TOWER_9F, MAP_TIN_TOWER_9F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 17, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b35, EVENT_651
-	person_event SPRITE_POKE_BALL, 10, 15, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b37, EVENT_652
-	person_event SPRITE_POKE_BALL, 5, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b39, EVENT_653
+	person_event SPRITE_POKE_BALL, 17, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b35, EVENT_TIN_TOWER_8F_NUGGET
+	person_event SPRITE_POKE_BALL, 10, 15, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b37, EVENT_TIN_TOWER_8F_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 5, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b39, EVENT_TIN_TOWER_8F_FULL_RESTORE
--- a/maps/TinTower9F.asm
+++ b/maps/TinTower9F.asm
@@ -1,8 +1,8 @@
 TinTower9F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x185b88:
@@ -20,7 +20,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 7
 	warp_def $3, $c, 2, GROUP_TIN_TOWER_8F, MAP_TIN_TOWER_8F
 	warp_def $5, $2, 3, GROUP_TIN_TOWER_8F, MAP_TIN_TOWER_8F
@@ -30,12 +30,12 @@
 	warp_def $d, $6, 5, GROUP_TIN_TOWER_8F, MAP_TIN_TOWER_8F
 	warp_def $d, $8, 6, GROUP_TIN_TOWER_8F, MAP_TIN_TOWER_8F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 5, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b88, EVENT_7C7
+	person_event SPRITE_POKE_BALL, 5, 13, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b88, EVENT_TIN_TOWER_9F_HP_UP
--- a/maps/TinTowerRoof.asm
+++ b/maps/TinTowerRoof.asm
@@ -1,8 +1,8 @@
 TinTowerRoof_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -48,16 +48,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $d, $9, 4, GROUP_TIN_TOWER_9F, MAP_TIN_TOWER_9F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_HO_OH, 9, 13, $16, $0, 255, 255, $80, 0, HoOhScript_0x77244, EVENT_73C
+	person_event SPRITE_HO_OH, 9, 13, OW_UP | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, HoOhScript_0x77244, EVENT_TIN_TOWER_ROOF_HO_OH
--- a/maps/TohjoFalls.asm
+++ b/maps/TohjoFalls.asm
@@ -1,8 +1,8 @@
 TohjoFalls_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18db02:
@@ -12,17 +12,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $d, 2, GROUP_ROUTE_27, MAP_ROUTE_27
 	warp_def $f, $19, 3, GROUP_ROUTE_27, MAP_ROUTE_27
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x18db02, EVENT_6A9
+	person_event SPRITE_POKE_BALL, 10, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18db02, EVENT_TOHJO_FALLS_MOON_STONE
--- a/maps/TradeCenter.asm
+++ b/maps/TradeCenter.asm
@@ -1,55 +1,55 @@
 TradeCenter_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x1933e9, $0000
-	dw UnknownScript_0x1933ed, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x1933ee
+	dbw 2, TradeCenter_SetWhichChris
 
-UnknownScript_0x1933e9:
-	priorityjump UnknownScript_0x1933fe
+.Trigger1:
+	priorityjump TradeCenter_Initialize
 	end
 
-UnknownScript_0x1933ed:
+.Trigger2:
 	end
 
-UnknownScript_0x1933ee:
-	special Function29f47
-	iffalse UnknownScript_0x1933f9
+TradeCenter_SetWhichChris:
+	special Special_CableClubCheckWhichChris
+	iffalse .Chris2
 	disappear $3
 	appear $2
 	return
 
-UnknownScript_0x1933f9:
+.Chris2:
 	disappear $2
 	appear $3
 	return
 
-UnknownScript_0x1933fe:
+TradeCenter_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $1
 	end
 
 MapTradeCenterSignpost1Script:
-	special Function29ec4
+	special Special_TradeCenter
 	newloadmap $f8
 	end
 
-UnknownScript_0x19340b:
+ChrisScript_0x19340b:
 	loadfont
-	writetext UnknownText_0x193412
+	writetext .FriendReadyText
 	closetext
 	loadmovesprites
 	end
 
-UnknownText_0x193412:
+.FriendReadyText:
 	text "Your friend is"
 	line "ready."
 	done
@@ -58,20 +58,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $4, 2, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $7, $5, 2, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 4, 4, $3, MapTradeCenterSignpost1Script
-	signpost 4, 5, $4, MapTradeCenterSignpost1Script
+	signpost 4, 4, SIGNPOST_RIGHT, MapTradeCenterSignpost1Script
+	signpost 4, 5, SIGNPOST_LEFT, MapTradeCenterSignpost1Script
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_CHRIS, 8, 7, $9, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_000
-	person_event SPRITE_CHRIS, 8, 10, $8, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_001
+	person_event SPRITE_CHRIS, 8, 7, OW_LEFT | $1, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_GAVE_KURT_APRICORNS
+	person_event SPRITE_CHRIS, 8, 10, OW_LEFT | $0, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_RECEIVED_BALLS_FROM_KURT
--- a/maps/TrainerHouse1F.asm
+++ b/maps/TrainerHouse1F.asm
@@ -1,8 +1,8 @@
 TrainerHouse1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ReceptionistScript_0x9af67:
@@ -134,25 +134,25 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $d, $2, 3, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 	warp_def $d, $3, 3, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 	warp_def $2, $8, 1, GROUP_TRAINER_HOUSE_B1F, MAP_TRAINER_HOUSE_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 0, 5, $0, MapTrainerHouse1FSignpost0Script
-	signpost 0, 7, $0, MapTrainerHouse1FSignpost1Script
-	signpost 10, 7, $0, MapTrainerHouse1FSignpost2Script
+	signpost 0, 5, SIGNPOST_READ, MapTrainerHouse1FSignpost0Script
+	signpost 0, 7, SIGNPOST_READ, MapTrainerHouse1FSignpost1Script
+	signpost 10, 7, SIGNPOST_READ, MapTrainerHouse1FSignpost2Script
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_RECEPTIONIST, 15, 4, $9, $0, 255, 255, $a0, 0, ReceptionistScript_0x9af67, -1
-	person_event SPRITE_COOLTRAINER_M, 15, 11, $7, $0, 255, 255, $0, 0, CooltrainerMScript_0x9af6a, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $6, $2, 255, 255, $80, 0, CooltrainerFScript_0x9af6d, -1
-	person_event SPRITE_YOUNGSTER, 12, 8, $5, $2, 255, 255, $80, 0, YoungsterScript_0x9af70, -1
-	person_event SPRITE_GENTLEMAN, 8, 6, $9, $0, 255, 255, $0, 0, GentlemanScript_0x9af73, -1
+	person_event SPRITE_RECEPTIONIST, 15, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x9af67, -1
+	person_event SPRITE_COOLTRAINER_M, 15, 11, OW_UP | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x9af6a, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, OW_UP | $2, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x9af6d, -1
+	person_event SPRITE_YOUNGSTER, 12, 8, OW_UP | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x9af70, -1
+	person_event SPRITE_GENTLEMAN, 8, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, GentlemanScript_0x9af73, -1
--- a/maps/TrainerHouseB1F.asm
+++ b/maps/TrainerHouseB1F.asm
@@ -1,11 +1,11 @@
 TrainerHouseB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 1
 
 	; triggers
 	dw UnknownScript_0x9b38a, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x9b38a:
@@ -171,18 +171,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $4, $9, 3, GROUP_TRAINER_HOUSE_1F, MAP_TRAINER_HOUSE_1F
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $3, $7, $0, UnknownScript_0x9b38b, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_RECEPTIONIST, 5, 11, $6, $0, 255, 255, $a0, 0, ObjectEvent, -1
-	person_event SPRITE_CHRIS, 15, 10, $8, $0, 255, 255, $80, 0, ObjectEvent, -1
+	person_event SPRITE_RECEPTIONIST, 5, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, -1
+	person_event SPRITE_CHRIS, 15, 10, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, -1
--- a/maps/Underground.asm
+++ b/maps/Underground.asm
@@ -1,18 +1,16 @@
 Underground_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 MapUndergroundSignpostItem0:
-	dw $00e5
-	db FULL_RESTORE
+	dwb EVENT_UNDERGROUND_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
 MapUndergroundSignpostItem1:
-	dw $00e6
-	db X_SPECIAL
+	dwb EVENT_UNDERGROUND_HIDDEN_X_SPECIAL, X_SPECIAL
 	
 
 Underground_MapEventHeader:
@@ -19,18 +17,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $2, $3, 3, GROUP_ROUTE_5_UNDERGROUND_ENTRANCE, MAP_ROUTE_5_UNDERGROUND_ENTRANCE
 	warp_def $18, $3, 3, GROUP_ROUTE_6_UNDERGROUND_ENTRANCE, MAP_ROUTE_6_UNDERGROUND_ENTRANCE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 9, 3, $7, MapUndergroundSignpostItem0
-	signpost 19, 1, $7, MapUndergroundSignpostItem1
+	signpost 9, 3, SIGNPOST_ITEM, MapUndergroundSignpostItem0
+	signpost 19, 1, SIGNPOST_ITEM, MapUndergroundSignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -1,5 +1,5 @@
 UndergroundPathSwitchRoomEntrances_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x7c9f5, $0000
 	dw UnknownScript_0x7c9f6, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -79,7 +79,7 @@
 
 UnknownScript_0x7ca80:
 	spriteface $0, RIGHT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	playsound SFX_EXIT_BUILDING
@@ -98,7 +98,7 @@
 
 UnknownScript_0x7caaa:
 	spriteface $0, RIGHT
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	playsound SFX_EXIT_BUILDING
@@ -116,9 +116,9 @@
 	end
 
 UnknownScript_0x7cad4:
-	checkevent EVENT_6C5
+	checkevent EVENT_RIVAL_BURNED_TOWER
 	iftrue UnknownScript_0x7cae1
-	setevent EVENT_6C5
+	setevent EVENT_RIVAL_BURNED_TOWER
 	domaptrigger GROUP_BURNED_TOWER_1F, MAP_BURNED_TOWER_1F, $1
 UnknownScript_0x7cae1:
 	playmusic MUSIC_RIVAL_ENCOUNTER
@@ -126,7 +126,7 @@
 	writetext UnknownText_0x7ce9d
 	closetext
 	loadmovesprites
-	setevent EVENT_6C1
+	setevent EVENT_RIVAL_UNDERGROUND_PATH
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x7cb09
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
@@ -166,24 +166,8 @@
 	end
 
 TrainerGruntM11:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_11
+	trainer EVENT_BEAT_ROCKET_GRUNTM_11, GRUNTM, 11, GruntM11SeenText, GruntM11BeatenText, $0000, GruntM11Script
 
-	; trainer group && trainer id
-	db GRUNTM, 11
-
-	; text when seen
-	dw GruntM11SeenText
-
-	; text when trainer beaten
-	dw GruntM11BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM11Script
-
 GruntM11Script:
 	talkaftercancel
 	loadfont
@@ -193,24 +177,8 @@
 	end
 
 TrainerGruntM25:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_20
+	trainer EVENT_BEAT_ROCKET_GRUNTM_25, GRUNTM, 25, GruntM25SeenText, GruntM25BeatenText, $0000, GruntM25Script
 
-	; trainer group && trainer id
-	db GRUNTM, 25
-
-	; text when seen
-	dw GruntM25SeenText
-
-	; text when trainer beaten
-	dw GruntM25BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM25Script
-
 GruntM25Script:
 	talkaftercancel
 	loadfont
@@ -220,24 +188,8 @@
 	end
 
 TrainerBurglarDuncan:
-	; bit/flag number
-	dw EVENT_BEAT_BURGLAR_DUNCAN
+	trainer EVENT_BEAT_BURGLAR_DUNCAN, BURGLAR, DUNCAN, BurglarDuncanSeenText, BurglarDuncanBeatenText, $0000, BurglarDuncanScript
 
-	; trainer group && trainer id
-	db BURGLAR, DUNCAN
-
-	; text when seen
-	dw BurglarDuncanSeenText
-
-	; text when trainer beaten
-	dw BurglarDuncanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BurglarDuncanScript
-
 BurglarDuncanScript:
 	talkaftercancel
 	loadfont
@@ -247,24 +199,8 @@
 	end
 
 TrainerBurglarEddie:
-	; bit/flag number
-	dw EVENT_BEAT_BURGLAR_EDDIE
+	trainer EVENT_BEAT_BURGLAR_EDDIE, BURGLAR, EDDIE, BurglarEddieSeenText, BurglarEddieBeatenText, $0000, BurglarEddieScript
 
-	; trainer group && trainer id
-	db BURGLAR, EDDIE
-
-	; text when seen
-	dw BurglarEddieSeenText
-
-	; text when trainer beaten
-	dw BurglarEddieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BurglarEddieScript
-
 BurglarEddieScript:
 	talkaftercancel
 	loadfont
@@ -274,24 +210,8 @@
 	end
 
 TrainerGruntM13:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_12
+	trainer EVENT_BEAT_ROCKET_GRUNTM_13, GRUNTM, 13, GruntM13SeenText, GruntM13BeatenText, $0000, GruntM13Script
 
-	; trainer group && trainer id
-	db GRUNTM, 13
-
-	; text when seen
-	dw GruntM13SeenText
-
-	; text when trainer beaten
-	dw GruntM13BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM13Script
-
 GruntM13Script:
 	talkaftercancel
 	loadfont
@@ -301,24 +221,8 @@
 	end
 
 TrainerGruntF3:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_3
+	trainer EVENT_BEAT_ROCKET_GRUNTF_3, GRUNTF, 3, GruntF3SeenText, GruntF3BeatenText, $0000, GruntF3Script
 
-	; trainer group && trainer id
-	db GRUNTF, 3
-
-	; text when seen
-	dw GruntF3SeenText
-
-	; text when trainer beaten
-	dw GruntF3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF3Script
-
 GruntF3Script:
 	talkaftercancel
 	loadfont
@@ -686,13 +590,11 @@
 	db FULL_HEAL, 1
 
 MapUndergroundPathSwitchRoomEntrancesSignpostItem4:
-	dw $008e
-	db MAX_POTION
+	dwb EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HIDDEN_MAX_POTION, MAX_POTION
 	
 
 MapUndergroundPathSwitchRoomEntrancesSignpostItem5:
-	dw $008f
-	db REVIVE
+	dwb EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HIDDEN_REVIVE, REVIVE
 	
 
 MovementData_0x7ce87:
@@ -993,7 +895,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 9
 	warp_def $3, $17, 6, GROUP_WAREHOUSE_ENTRANCE, MAP_WAREHOUSE_ENTRANCE
 	warp_def $a, $16, 1, GROUP_UNDERGROUND_WAREHOUSE, MAP_UNDERGROUND_WAREHOUSE
@@ -1005,30 +907,30 @@
 	warp_def $1d, $14, 13, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 	warp_def $1d, $15, 13, GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $4, $13, $0, UnknownScript_0x7ca80, $0, $0
 	xy_trigger 0, $5, $13, $0, UnknownScript_0x7caaa, $0, $0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 1, 16, $0, MapUndergroundPathSwitchRoomEntrancesSignpost0Script
-	signpost 1, 10, $0, MapUndergroundPathSwitchRoomEntrancesSignpost1Script
-	signpost 1, 2, $0, MapUndergroundPathSwitchRoomEntrancesSignpost2Script
-	signpost 11, 20, $0, MapUndergroundPathSwitchRoomEntrancesSignpost3Script
-	signpost 9, 8, $7, MapUndergroundPathSwitchRoomEntrancesSignpostItem4
-	signpost 8, 1, $7, MapUndergroundPathSwitchRoomEntrancesSignpostItem5
+	signpost 1, 16, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost0Script
+	signpost 1, 10, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost2Script
+	signpost 11, 20, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost3Script
+	signpost 9, 8, SIGNPOST_ITEM, MapUndergroundPathSwitchRoomEntrancesSignpostItem4
+	signpost 8, 1, SIGNPOST_ITEM, MapUndergroundPathSwitchRoomEntrancesSignpostItem5
 
-	; people-events
+.PersonEvents:
 	db 11
-	person_event SPRITE_PHARMACIST, 16, 13, $9, $0, 255, 255, $a2, 2, TrainerBurglarDuncan, EVENT_6CE
-	person_event SPRITE_PHARMACIST, 12, 8, $8, $0, 255, 255, $a2, 2, TrainerBurglarEddie, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 21, $6, $0, 255, 255, $2, 3, TrainerGruntM13, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 15, $6, $0, 255, 255, $2, 3, TrainerGruntM11, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 7, $6, $0, 255, 255, $2, 3, TrainerGruntM25, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 16, 23, $6, $0, 255, 255, $82, 1, TrainerGruntF3, EVENT_6CE
-	person_event SPRITE_TEACHER, 31, 7, $6, $0, 255, 255, $0, 0, TeacherScript_0x7ca7d, -1
-	person_event SPRITE_SUPER_NERD, 31, 23, $6, $0, 255, 255, $0, 0, SuperNerdScript_0x7ca7a, -1
-	person_event SPRITE_POKE_BALL, 16, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ce7d, EVENT_673
-	person_event SPRITE_POKE_BALL, 13, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ce7f, EVENT_674
-	person_event SPRITE_SILVER, 7, 27, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C1
+	person_event SPRITE_PHARMACIST, 16, 13, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerBurglarDuncan, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_PHARMACIST, 12, 8, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerBurglarEddie, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 6, 21, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM13, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 6, 15, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM11, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 6, 7, OW_UP | $2, $0, -1, -1, $2, 3, TrainerGruntM25, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET_GIRL, 16, 23, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerGruntF3, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_TEACHER, 31, 7, OW_UP | $2, $0, -1, -1, $0, 0, TeacherScript_0x7ca7d, -1
+	person_event SPRITE_SUPER_NERD, 31, 23, OW_UP | $2, $0, -1, -1, $0, 0, SuperNerdScript_0x7ca7a, -1
+	person_event SPRITE_POKE_BALL, 16, 5, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ce7d, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_SMOKE_BALL
+	person_event SPRITE_POKE_BALL, 13, 18, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ce7f, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_FULL_HEAL
+	person_event SPRITE_SILVER, 7, 27, OW_UP | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_UNDERGROUND_PATH
--- a/maps/UndergroundWarehouse.asm
+++ b/maps/UndergroundWarehouse.asm
@@ -1,8 +1,8 @@
 UndergroundWarehouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -30,24 +30,8 @@
 	return
 
 TrainerGruntM24:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_19
+	trainer EVENT_BEAT_ROCKET_GRUNTM_24, GRUNTM, 24, GruntM24SeenText, GruntM24BeatenText, $0000, GruntM24Script
 
-	; trainer group && trainer id
-	db GRUNTM, 24
-
-	; text when seen
-	dw GruntM24SeenText
-
-	; text when trainer beaten
-	dw GruntM24BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM24Script
-
 GruntM24Script:
 	talkaftercancel
 	loadfont
@@ -57,24 +41,8 @@
 	end
 
 TrainerGruntM14:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_13
+	trainer EVENT_BEAT_ROCKET_GRUNTM_14, GRUNTM, 14, GruntM14SeenText, GruntM14BeatenText, $0000, GruntM14Script
 
-	; trainer group && trainer id
-	db GRUNTM, 14
-
-	; text when seen
-	dw GruntM14SeenText
-
-	; text when trainer beaten
-	dw GruntM14BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM14Script
-
 GruntM14Script:
 	talkaftercancel
 	loadfont
@@ -84,24 +52,8 @@
 	end
 
 TrainerGruntM15:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_14
+	trainer EVENT_BEAT_ROCKET_GRUNTM_15, GRUNTM, 15, GruntM15SeenText, GruntM15BeatenText, $0000, GruntM15Script
 
-	; trainer group && trainer id
-	db GRUNTM, 15
-
-	; text when seen
-	dw GruntM15SeenText
-
-	; text when trainer beaten
-	dw GruntM15BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM15Script
-
 GruntM15Script:
 	talkaftercancel
 	loadfont
@@ -113,12 +65,12 @@
 GentlemanScript_0x7d9bf:
 	faceplayer
 	loadfont
-	checkevent EVENT_04A
+	checkevent EVENT_RECEIVED_CARD_KEY
 	iftrue UnknownScript_0x7d9de
 	writetext UnknownText_0x7dbc6
 	keeptextopen
 	verbosegiveitem CARD_KEY, 1
-	setevent EVENT_04A
+	setevent EVENT_RECEIVED_CARD_KEY
 	setevent EVENT_WAREHOUSE_LAYOUT_1
 	clearevent EVENT_WAREHOUSE_LAYOUT_2
 	clearevent EVENT_WAREHOUSE_LAYOUT_3
@@ -256,24 +208,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $c, $2, 2, GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES
 	warp_def $c, $3, 3, GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES
 	warp_def $2, $11, 1, GROUP_GOLDENROD_DEPT_STORE_B1F, MAP_GOLDENROD_DEPT_STORE_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_ROCKET, 12, 13, $7, $0, 255, 255, $2, 3, TrainerGruntM24, EVENT_6CE
-	person_event SPRITE_ROCKET, 19, 12, $7, $0, 255, 255, $2, 3, TrainerGruntM14, EVENT_6CE
-	person_event SPRITE_ROCKET, 7, 18, $9, $0, 255, 255, $2, 4, TrainerGruntM15, EVENT_6CE
-	person_event SPRITE_GENTLEMAN, 12, 16, $3, $0, 255, 255, $0, 0, GentlemanScript_0x7d9bf, EVENT_6CE
-	person_event SPRITE_POKE_BALL, 19, 22, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d9e4, EVENT_679
-	person_event SPRITE_POKE_BALL, 13, 17, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d9e6, EVENT_67A
-	person_event SPRITE_POKE_BALL, 5, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d9e8, EVENT_655
+	person_event SPRITE_ROCKET, 12, 13, OW_UP | $3, $0, -1, -1, $2, 3, TrainerGruntM24, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 19, 12, OW_UP | $3, $0, -1, -1, $2, 3, TrainerGruntM14, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET, 7, 18, OW_LEFT | $1, $0, -1, -1, $2, 4, TrainerGruntM15, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_GENTLEMAN, 12, 16, OW_DOWN | $3, $0, -1, -1, $0, 0, GentlemanScript_0x7d9bf, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_POKE_BALL, 19, 22, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d9e4, EVENT_UNDERGROUND_WAREHOUSE_MAX_ETHER
+	person_event SPRITE_POKE_BALL, 13, 17, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d9e6, EVENT_UNDERGROUND_WAREHOUSE_TM_SLEEP_TALK
+	person_event SPRITE_POKE_BALL, 5, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d9e8, EVENT_UNDERGROUND_WAREHOUSE_ULTRA_BALL
--- a/maps/UnionCave1F.asm
+++ b/maps/UnionCave1F.asm
@@ -1,29 +1,13 @@
 UnionCave1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerPokemaniacLarry:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_LARRY
+	trainer EVENT_BEAT_POKEMANIAC_LARRY, POKEMANIAC, LARRY, PokemaniacLarrySeenText, PokemaniacLarryBeatenText, $0000, PokemaniacLarryScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, LARRY
-
-	; text when seen
-	dw PokemaniacLarrySeenText
-
-	; text when trainer beaten
-	dw PokemaniacLarryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacLarryScript
-
 PokemaniacLarryScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerHikerRussell:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_RUSSELL
+	trainer EVENT_BEAT_HIKER_RUSSELL, HIKER, RUSSELL, HikerRussellSeenText, HikerRussellBeatenText, $0000, HikerRussellScript
 
-	; trainer group && trainer id
-	db HIKER, RUSSELL
-
-	; text when seen
-	dw HikerRussellSeenText
-
-	; text when trainer beaten
-	dw HikerRussellBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerRussellScript
-
 HikerRussellScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerHikerDaniel:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_DANIEL
+	trainer EVENT_BEAT_HIKER_DANIEL, HIKER, DANIEL, HikerDanielSeenText, HikerDanielBeatenText, $0000, HikerDanielScript
 
-	; trainer group && trainer id
-	db HIKER, DANIEL
-
-	; text when seen
-	dw HikerDanielSeenText
-
-	; text when trainer beaten
-	dw HikerDanielBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerDanielScript
-
 HikerDanielScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerFirebreatherBill:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_BILL
+	trainer EVENT_BEAT_FIREBREATHER_BILL, FIREBREATHER, BILL, FirebreatherBillSeenText, FirebreatherBillBeatenText, $0000, FirebreatherBillScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, BILL
-
-	; text when seen
-	dw FirebreatherBillSeenText
-
-	; text when trainer beaten
-	dw FirebreatherBillBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherBillScript
-
 FirebreatherBillScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerFirebreatherRay:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_RAY
+	trainer EVENT_BEAT_FIREBREATHER_RAY, FIREBREATHER, RAY, FirebreatherRaySeenText, FirebreatherRayBeatenText, $0000, FirebreatherRayScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, RAY
-
-	; text when seen
-	dw FirebreatherRaySeenText
-
-	; text when trainer beaten
-	dw FirebreatherRayBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherRayScript
-
 FirebreatherRayScript:
 	talkaftercancel
 	loadfont
@@ -272,7 +192,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $13, $5, 3, GROUP_UNION_CAVE_B1F, MAP_UNION_CAVE_B1F
 	warp_def $21, $3, 4, GROUP_UNION_CAVE_B1F, MAP_UNION_CAVE_B1F
@@ -279,20 +199,20 @@
 	warp_def $1f, $11, 1, GROUP_ROUTE_33, MAP_ROUTE_33
 	warp_def $3, $11, 4, GROUP_ROUTE_32, MAP_ROUTE_32
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_POKEFAN_M, 10, 7, $9, $0, 255, 255, $b2, 2, TrainerHikerDaniel, -1
-	person_event SPRITE_SUPER_NERD, 25, 8, $a, $0, 255, 255, $92, 3, TrainerPokemaniacLarry, -1
-	person_event SPRITE_POKEFAN_M, 12, 15, $a, $0, 255, 255, $b2, 1, TrainerHikerRussell, -1
-	person_event SPRITE_FISHER, 31, 19, $8, $0, 255, 255, $82, 4, TrainerFirebreatherRay, -1
-	person_event SPRITE_FISHER, 23, 18, $7, $0, 255, 255, $82, 4, TrainerFirebreatherBill, -1
-	person_event SPRITE_POKE_BALL, 25, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c00, EVENT_65A
-	person_event SPRITE_POKE_BALL, 6, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c02, EVENT_65B
-	person_event SPRITE_POKE_BALL, 21, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c04, EVENT_65C
-	person_event SPRITE_POKE_BALL, 37, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c06, EVENT_65D
+	person_event SPRITE_POKEFAN_M, 10, 7, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerDaniel, -1
+	person_event SPRITE_SUPER_NERD, 25, 8, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacLarry, -1
+	person_event SPRITE_POKEFAN_M, 12, 15, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerHikerRussell, -1
+	person_event SPRITE_FISHER, 31, 19, OW_LEFT | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerFirebreatherRay, -1
+	person_event SPRITE_FISHER, 23, 18, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerFirebreatherBill, -1
+	person_event SPRITE_POKE_BALL, 25, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c00, EVENT_UNION_CAVE_1F_GREAT_BALL
+	person_event SPRITE_POKE_BALL, 6, 8, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c02, EVENT_UNION_CAVE_1F_X_ATTACK
+	person_event SPRITE_POKE_BALL, 21, 8, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c04, EVENT_UNION_CAVE_1F_POTION
+	person_event SPRITE_POKE_BALL, 37, 16, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c06, EVENT_UNION_CAVE_1F_AWAKENING
--- a/maps/UnionCaveB1F.asm
+++ b/maps/UnionCaveB1F.asm
@@ -1,29 +1,13 @@
 UnionCaveB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TrainerPokemaniacAndrew:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ANDREW
+	trainer EVENT_BEAT_POKEMANIAC_ANDREW, POKEMANIAC, ANDREW, PokemaniacAndrewSeenText, PokemaniacAndrewBeatenText, $0000, PokemaniacAndrewScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ANDREW
-
-	; text when seen
-	dw PokemaniacAndrewSeenText
-
-	; text when trainer beaten
-	dw PokemaniacAndrewBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacAndrewScript
-
 PokemaniacAndrewScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPokemaniacCalvin:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_CALVIN
+	trainer EVENT_BEAT_POKEMANIAC_CALVIN, POKEMANIAC, CALVIN, PokemaniacCalvinSeenText, PokemaniacCalvinBeatenText, $0000, PokemaniacCalvinScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, CALVIN
-
-	; text when seen
-	dw PokemaniacCalvinSeenText
-
-	; text when trainer beaten
-	dw PokemaniacCalvinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacCalvinScript
-
 PokemaniacCalvinScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerHikerPhillip:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_PHILLIP
+	trainer EVENT_BEAT_HIKER_PHILLIP, HIKER, PHILLIP, HikerPhillipSeenText, HikerPhillipBeatenText, $0000, HikerPhillipScript
 
-	; trainer group && trainer id
-	db HIKER, PHILLIP
-
-	; text when seen
-	dw HikerPhillipSeenText
-
-	; text when trainer beaten
-	dw HikerPhillipBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerPhillipScript
-
 HikerPhillipScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerHikerLeonard:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_LEONARD
+	trainer EVENT_BEAT_HIKER_LEONARD, HIKER, LEONARD, HikerLeonardSeenText, HikerLeonardBeatenText, $0000, HikerLeonardScript
 
-	; trainer group && trainer id
-	db HIKER, LEONARD
-
-	; text when seen
-	dw HikerLeonardSeenText
-
-	; text when trainer beaten
-	dw HikerLeonardBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerLeonardScript
-
 HikerLeonardScript:
 	talkaftercancel
 	loadfont
@@ -211,7 +147,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $3, $3, 7, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
 	warp_def $b, $3, 8, GROUP_RUINS_OF_ALPH_OUTSIDE, MAP_RUINS_OF_ALPH_OUTSIDE
@@ -219,18 +155,18 @@
 	warp_def $21, $3, 2, GROUP_UNION_CAVE_1F, MAP_UNION_CAVE_1F
 	warp_def $1f, $11, 1, GROUP_UNION_CAVE_B2F, MAP_UNION_CAVE_B2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 7
-	person_event SPRITE_POKEFAN_M, 8, 13, $a, $0, 255, 255, $b2, 3, TrainerHikerPhillip, -1
-	person_event SPRITE_POKEFAN_M, 11, 20, $6, $0, 255, 255, $b2, 3, TrainerHikerLeonard, -1
-	person_event SPRITE_SUPER_NERD, 36, 9, $8, $0, 255, 255, $92, 3, TrainerPokemaniacAndrew, -1
-	person_event SPRITE_SUPER_NERD, 34, 21, $8, $0, 255, 255, $92, 3, TrainerPokemaniacCalvin, -1
-	person_event SPRITE_POKE_BALL, 20, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a016, EVENT_65E
-	person_event SPRITE_BOULDER, 14, 11, $19, $0, 255, 255, $0, 0, UnionCaveB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 27, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a018, EVENT_65F
+	person_event SPRITE_POKEFAN_M, 8, 13, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerPhillip, -1
+	person_event SPRITE_POKEFAN_M, 11, 20, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerLeonard, -1
+	person_event SPRITE_SUPER_NERD, 36, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacAndrew, -1
+	person_event SPRITE_SUPER_NERD, 34, 21, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacCalvin, -1
+	person_event SPRITE_POKE_BALL, 20, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a016, EVENT_UNION_CAVE_B1F_TM_SWIFT
+	person_event SPRITE_BOULDER, 14, 11, OW_LEFT | $11, $0, -1, -1, $0, 0, UnionCaveB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 27, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a018, EVENT_UNION_CAVE_B1F_X_DEFEND
--- a/maps/UnionCaveB2F.asm
+++ b/maps/UnionCaveB2F.asm
@@ -1,8 +1,8 @@
 UnionCaveB2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -33,24 +33,8 @@
 	end
 
 TrainerCooltrainermNick:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_NICK
+	trainer EVENT_BEAT_COOLTRAINERM_NICK, COOLTRAINERM, NICK, CooltrainermNickSeenText, CooltrainermNickBeatenText, $0000, CooltrainermNickScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, NICK
-
-	; text when seen
-	dw CooltrainermNickSeenText
-
-	; text when trainer beaten
-	dw CooltrainermNickBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermNickScript
-
 CooltrainermNickScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +44,8 @@
 	end
 
 TrainerCooltrainerfGwen:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_GWEN
+	trainer EVENT_BEAT_COOLTRAINERF_GWEN, COOLTRAINERF, GWEN, CooltrainerfGwenSeenText, CooltrainerfGwenBeatenText, $0000, CooltrainerfGwenScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, GWEN
-
-	; text when seen
-	dw CooltrainerfGwenSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfGwenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfGwenScript
-
 CooltrainerfGwenScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +55,8 @@
 	end
 
 TrainerCooltrainerfEmma:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_EMMA
+	trainer EVENT_BEAT_COOLTRAINERF_EMMA, COOLTRAINERF, EMMA, CooltrainerfEmmaSeenText, CooltrainerfEmmaBeatenText, $0000, CooltrainerfEmmaScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, EMMA
-
-	; text when seen
-	dw CooltrainerfEmmaSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfEmmaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfEmmaScript
-
 CooltrainerfEmmaScript:
 	talkaftercancel
 	loadfont
@@ -188,21 +140,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $3, $5, 5, GROUP_UNION_CAVE_B1F, MAP_UNION_CAVE_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_ROCKER, 23, 19, $6, $0, 255, 255, $82, 3, TrainerCooltrainermNick, -1
-	person_event SPRITE_COOLTRAINER_F, 17, 9, $a, $0, 255, 255, $82, 1, TrainerCooltrainerfGwen, -1
-	person_event SPRITE_COOLTRAINER_F, 34, 7, $7, $0, 255, 255, $82, 3, TrainerCooltrainerfEmma, -1
-	person_event SPRITE_POKE_BALL, 6, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a36a, EVENT_660
-	person_event SPRITE_POKE_BALL, 23, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a36c, EVENT_661
-	person_event SPRITE_SURF, 35, 15, $24, $11, 255, 255, $90, 0, SurfScript_0x5a31f, EVENT_760
+	person_event SPRITE_ROCKER, 23, 19, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermNick, -1
+	person_event SPRITE_COOLTRAINER_F, 17, 9, OW_LEFT | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainerfGwen, -1
+	person_event SPRITE_COOLTRAINER_F, 34, 7, OW_UP | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfEmma, -1
+	person_event SPRITE_POKE_BALL, 6, 20, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a36a, EVENT_UNION_CAVE_B2F_ELIXER
+	person_event SPRITE_POKE_BALL, 23, 16, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a36c, EVENT_UNION_CAVE_B2F_HYPER_POTION
+	person_event SPRITE_SURF, 35, 15, OW_UP | $20, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SurfScript_0x5a31f, EVENT_UNION_CAVE_B2F_LAPRAS
--- a/maps/VermilionCity.asm
+++ b/maps/VermilionCity.asm
@@ -1,8 +1,8 @@
 VermilionCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -117,8 +117,7 @@
 	jumpstd martsign
 
 MapVermilionCitySignpostItem7:
-	dw $00fc
-	db FULL_HEAL
+	dwb EVENT_VERMILION_CITY_HIDDEN_FULL_HEAL, FULL_HEAL
 
 UnknownText_0x1aaa15:
 	text "VERMILION PORT is"
@@ -266,7 +265,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 10
 	warp_def $5, $5, 1, GROUP_VERMILION_HOUSE_FISHING_SPEECH_HOUSE, MAP_VERMILION_HOUSE_FISHING_SPEECH_HOUSE
 	warp_def $5, $9, 1, GROUP_VERMILION_POKECENTER_1F, MAP_VERMILION_POKECENTER_1F
@@ -279,25 +278,25 @@
 	warp_def $1f, $14, 2, GROUP_VERMILION_PORT_PASSAGE, MAP_VERMILION_PORT_PASSAGE
 	warp_def $7, $22, 1, GROUP_DIGLETTS_CAVE, MAP_DIGLETTS_CAVE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 8
-	signpost 3, 25, $0, VermilionCitySign
-	signpost 19, 5, $0, VermilionGymSign
-	signpost 13, 5, $0, PokemonFanClubSign
-	signpost 9, 33, $0, VermilionCityDiglettsCaveSign
-	signpost 15, 27, $0, VermilionCityPortSign
-	signpost 5, 10, $0, VermilionCityPokeCenterSign
-	signpost 13, 22, $0, VermilionCityMartSign
-	signpost 19, 12, $7, MapVermilionCitySignpostItem7
+	signpost 3, 25, SIGNPOST_READ, VermilionCitySign
+	signpost 19, 5, SIGNPOST_READ, VermilionGymSign
+	signpost 13, 5, SIGNPOST_READ, PokemonFanClubSign
+	signpost 9, 33, SIGNPOST_READ, VermilionCityDiglettsCaveSign
+	signpost 15, 27, SIGNPOST_READ, VermilionCityPortSign
+	signpost 5, 10, SIGNPOST_READ, VermilionCityPokeCenterSign
+	signpost 13, 22, SIGNPOST_READ, VermilionCityMartSign
+	signpost 19, 12, SIGNPOST_ITEM, MapVermilionCitySignpostItem7
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_TEACHER, 13, 22, $2, $11, 255, 255, $0, 0, TeacherScript_0x1aa983, -1
-	person_event SPRITE_GRAMPS, 10, 27, $9, $0, 255, 255, $0, 0, GrampsScript_0x1aa986, -1
-	person_event SPRITE_MACHOP, 11, 30, $16, $0, 255, 255, $90, 0, VermilionMachop, -1
-	person_event SPRITE_SUPER_NERD, 20, 18, $2, $11, 255, 255, $a0, 0, SuperNerdScript_0x1aa99b, -1
-	person_event SPRITE_BIG_SNORLAX, 12, 38, $15, $0, 255, 255, $0, 0, VermilionSnorlax, EVENT_770
-	person_event SPRITE_POKEFAN_M, 16, 35, $6, $0, 255, 255, $80, 0, VermilionGymBadgeGuy, -1
+	person_event SPRITE_TEACHER, 13, 22, OW_DOWN | $2, $11, -1, -1, $0, 0, TeacherScript_0x1aa983, -1
+	person_event SPRITE_GRAMPS, 10, 27, OW_LEFT | $1, $0, -1, -1, $0, 0, GrampsScript_0x1aa986, -1
+	person_event SPRITE_MACHOP, 11, 30, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, VermilionMachop, -1
+	person_event SPRITE_SUPER_NERD, 20, 18, OW_DOWN | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x1aa99b, -1
+	person_event SPRITE_BIG_SNORLAX, 12, 38, OW_UP | $11, $0, -1, -1, $0, 0, VermilionSnorlax, EVENT_VERMILION_CITY_SNORLAX
+	person_event SPRITE_POKEFAN_M, 16, 35, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, VermilionGymBadgeGuy, -1
--- a/maps/VermilionGym.asm
+++ b/maps/VermilionGym.asm
@@ -1,8 +1,8 @@
 VermilionGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 SurgeScript_0x1920a5:
@@ -38,24 +38,8 @@
 	end
 
 TrainerGentlemanGregory:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_GREGORY
+	trainer EVENT_BEAT_GENTLEMAN_GREGORY, GENTLEMAN, GREGORY, GentlemanGregorySeenText, GentlemanGregoryBeatenText, $0000, GentlemanGregoryScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, GREGORY
-
-	; text when seen
-	dw GentlemanGregorySeenText
-
-	; text when trainer beaten
-	dw GentlemanGregoryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanGregoryScript
-
 GentlemanGregoryScript:
 	talkaftercancel
 	loadfont
@@ -65,24 +49,8 @@
 	end
 
 TrainerGuitaristVincent:
-	; bit/flag number
-	dw EVENT_BEAT_GUITARIST_VINCENT
+	trainer EVENT_BEAT_GUITARIST_VINCENT, GUITARIST, VINCENT, GuitaristVincentSeenText, GuitaristVincentBeatenText, $0000, GuitaristVincentScript
 
-	; trainer group && trainer id
-	db GUITARIST, VINCENT
-
-	; text when seen
-	dw GuitaristVincentSeenText
-
-	; text when trainer beaten
-	dw GuitaristVincentBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GuitaristVincentScript
-
 GuitaristVincentScript:
 	talkaftercancel
 	loadfont
@@ -92,24 +60,8 @@
 	end
 
 TrainerJugglerHorton:
-	; bit/flag number
-	dw EVENT_BEAT_JUGGLER_HORTON
+	trainer EVENT_BEAT_JUGGLER_HORTON, JUGGLER, HORTON, JugglerHortonSeenText, JugglerHortonBeatenText, $0000, JugglerHortonScript
 
-	; trainer group && trainer id
-	db JUGGLER, HORTON
-
-	; text when seen
-	dw JugglerHortonSeenText
-
-	; text when trainer beaten
-	dw JugglerHortonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw JugglerHortonScript
-
 JugglerHortonScript:
 	talkaftercancel
 	loadfont
@@ -305,38 +257,38 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $4, 7, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $11, $5, 7, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 17
-	signpost 7, 1, $0, MapVermilionGymSignpost14Script
-	signpost 7, 3, $0, MapVermilionGymSignpost14Script
-	signpost 7, 5, $0, MapVermilionGymSignpost14Script
-	signpost 7, 7, $0, MapVermilionGymSignpost14Script
-	signpost 7, 9, $0, MapVermilionGymSignpost14Script
-	signpost 9, 1, $0, MapVermilionGymSignpost14Script
-	signpost 9, 3, $0, MapVermilionGymSignpost14Script
-	signpost 9, 5, $0, MapVermilionGymSignpost14Script
-	signpost 9, 7, $0, MapVermilionGymSignpost14Script
-	signpost 9, 9, $0, MapVermilionGymSignpost14Script
-	signpost 11, 1, $0, MapVermilionGymSignpost14Script
-	signpost 11, 3, $0, MapVermilionGymSignpost14Script
-	signpost 11, 5, $0, MapVermilionGymSignpost14Script
-	signpost 11, 7, $0, MapVermilionGymSignpost14Script
-	signpost 11, 9, $0, MapVermilionGymSignpost14Script
-	signpost 15, 3, $0, VermilionGymStatue
-	signpost 15, 6, $0, VermilionGymStatue
+	signpost 7, 1, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 3, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 5, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 7, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 9, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 1, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 3, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 5, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 7, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 9, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 1, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 3, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 5, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 7, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 9, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 15, 3, SIGNPOST_READ, VermilionGymStatue
+	signpost 15, 6, SIGNPOST_READ, VermilionGymStatue
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_SURGE, 6, 9, $6, $0, 255, 255, $b0, 0, SurgeScript_0x1920a5, -1
-	person_event SPRITE_GENTLEMAN, 12, 12, $8, $0, 255, 255, $92, 4, TrainerGentlemanGregory, -1
-	person_event SPRITE_ROCKER, 11, 8, $6, $3, 255, 255, $82, 3, TrainerGuitaristVincent, -1
-	person_event SPRITE_SUPER_NERD, 14, 4, $9, $0, 255, 255, $92, 4, TrainerJugglerHorton, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $90, 1, VermilionGymGuyScript, -1
+	person_event SPRITE_SURGE, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, SurgeScript_0x1920a5, -1
+	person_event SPRITE_GENTLEMAN, 12, 12, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerGentlemanGregory, -1
+	person_event SPRITE_ROCKER, 11, 8, OW_UP | $2, $3, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerGuitaristVincent, -1
+	person_event SPRITE_SUPER_NERD, 14, 4, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerJugglerHorton, -1
+	person_event SPRITE_GYM_GUY, 19, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 1, VermilionGymGuyScript, -1
--- a/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
+++ b/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
@@ -1,8 +1,8 @@
 VermilionHouseDiglettsCaveSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 GentlemanScript_0x192031:
@@ -21,17 +21,17 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 6, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $7, $3, 6, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_GENTLEMAN, 7, 5, $4, $10, 255, 255, $80, 0, GentlemanScript_0x192031, -1
+	person_event SPRITE_GENTLEMAN, 7, 5, OW_UP | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x192031, -1
--- a/maps/VermilionHouseFishingSpeechHouse.asm
+++ b/maps/VermilionHouseFishingSpeechHouse.asm
@@ -1,8 +1,8 @@
 VermilionHouseFishingSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FishingDude:
@@ -51,18 +51,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $7, $3, 1, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 0, 3, $0, FishingDudesHousePhoto
+	signpost 0, 3, SIGNPOST_READ, FishingDudesHousePhoto
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 8, 6, $6, $0, 255, 255, $a0, 0, FishingDude, -1
+	person_event SPRITE_FISHING_GURU, 8, 6, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingDude, -1
--- a/maps/VermilionMagnetTrainSpeechHouse.asm
+++ b/maps/VermilionMagnetTrainSpeechHouse.asm
@@ -1,8 +1,8 @@
 VermilionMagnetTrainSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanFScript_0x191eb7:
@@ -33,20 +33,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $7, $3, 4, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 1, 0, $0, VermilionMagnetTrainSpeechHouseBookshelf
-	signpost 1, 1, $0, VermilionMagnetTrainSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, VermilionMagnetTrainSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, VermilionMagnetTrainSpeechHouseBookshelf
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_F, 7, 6, $8, $0, 255, 255, $0, 0, PokefanFScript_0x191eb7, -1
-	person_event SPRITE_YOUNGSTER, 7, 4, $a, $0, 255, 255, $a0, 0, YoungsterScript_0x191eba, -1
+	person_event SPRITE_POKEFAN_F, 7, 6, OW_LEFT | $0, $0, -1, -1, $0, 0, PokefanFScript_0x191eb7, -1
+	person_event SPRITE_YOUNGSTER, 7, 4, OW_LEFT | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x191eba, -1
--- a/maps/VermilionMart.asm
+++ b/maps/VermilionMart.asm
@@ -1,8 +1,8 @@
 VermilionMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x191f7e:
@@ -35,19 +35,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 5, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $7, $3, 5, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x191f7e, -1
-	person_event SPRITE_SUPER_NERD, 6, 9, $6, $0, 255, 255, $80, 0, SuperNerdScript_0x191f85, -1
-	person_event SPRITE_BUENA, 10, 12, $5, $1, 255, 255, $a0, 0, BuenaScript_0x191f88, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x191f7e, -1
+	person_event SPRITE_SUPER_NERD, 6, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x191f85, -1
+	person_event SPRITE_BUENA, 10, 12, OW_UP | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BuenaScript_0x191f88, -1
--- a/maps/VermilionPokeCenter1F.asm
+++ b/maps/VermilionPokeCenter1F.asm
@@ -1,8 +1,8 @@
 VermilionPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x191603:
@@ -74,21 +74,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 2, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $7, $4, 2, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x191603, -1
-	person_event SPRITE_FISHING_GURU, 6, 11, $6, $0, 255, 255, $80, 0, FishingGuruScript_0x191606, -1
-	person_event SPRITE_SAILOR, 9, 10, $4, $10, 255, 255, $90, 0, SailorScript_0x19161a, -1
-	person_event SPRITE_BUG_CATCHER, 9, 5, $3, $0, 255, 255, $a0, 0, BugCatcherScript_0x19161d, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x191603, -1
+	person_event SPRITE_FISHING_GURU, 6, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FishingGuruScript_0x191606, -1
+	person_event SPRITE_SAILOR, 9, 10, OW_UP | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x19161a, -1
+	person_event SPRITE_BUG_CATCHER, 9, 5, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugCatcherScript_0x19161d, -1
--- a/maps/VermilionPokeCenter2FBeta.asm
+++ b/maps/VermilionPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 VermilionPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 VermilionPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_VERMILION_POKECENTER_1F, MAP_VERMILION_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -1,5 +1,5 @@
 VermilionPort_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw .Trigger1, $0000
 	dw .Trigger2, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -27,12 +27,12 @@
 	applymovement $0, MovementData_0x74ef3
 	appear $2
 	dotrigger $0
-	setevent EVENT_731
-	setevent EVENT_730
-	setevent EVENT_739
-	clearevent EVENT_733
-	setevent EVENT_030
-	setevent EVENT_000
+	setevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+	setevent EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
+	setevent EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	clearevent EVENT_OLIVINE_PORT_PASSAGE_POKEFAN_M
+	setevent EVENT_FAST_SHIP_FIRST_TIME
+	setevent EVENT_GAVE_KURT_APRICORNS
 	blackoutmod GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	end
 
@@ -39,7 +39,7 @@
 SailorScript_0x74dc4:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74e1a
 	writetext UnknownText_0x74f06
 	closetext
@@ -51,10 +51,10 @@
 	waitbutton
 	applymovement $0, MovementData_0x74ef1
 	playsound SFX_EXIT_BUILDING
-	special Function8c084
+	special FadeBlackBGMap
 	waitbutton
-	setevent EVENT_73A
-	clearevent EVENT_73B
+	setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	clearevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
 	clearevent EVENT_BEAT_POKEMANIAC_ETHAN
 	clearevent EVENT_BEAT_BURGLAR_COREY
 	clearevent EVENT_BEAT_BUG_CATCHER_KEN
@@ -79,9 +79,9 @@
 
 UnknownScript_0x74e20:
 	spriteface $3, RIGHT
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74e86
-	checkevent EVENT_001
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue UnknownScript_0x74e86
 	spriteface $0, LEFT
 	loadfont
@@ -101,7 +101,7 @@
 	writetext UnknownText_0x74fc2
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	applymovement $0, MovementData_0x74ef8
 	jump SailorScript_0x74dc4
 
@@ -145,7 +145,7 @@
 SailorScript_0x74e97:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74e1a
 	checkcode VAR_WEEKDAY
 	if_equal MONDAY, UnknownScript_0x74eda
@@ -163,7 +163,7 @@
 	writetext UnknownText_0x74fc2
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	applymovement $0, MovementData_0x74efe
 	jump SailorScript_0x74dc4
 
@@ -194,8 +194,7 @@
 	end
 
 MapVermilionPortSignpostItem0:
-	dw $00eb
-	db IRON
+	dwb EVENT_VERMILION_PORT_HIDDEN_IRON, IRON
 	
 
 MovementData_0x74ef1:
@@ -303,21 +302,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $5, $9, 5, GROUP_VERMILION_PORT_PASSAGE, MAP_VERMILION_PORT_PASSAGE
 	warp_def $11, $7, 1, GROUP_FAST_SHIP_1F, MAP_FAST_SHIP_1F
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $b, $7, $0, UnknownScript_0x74e20, $0, $0
 
-	; signposts
+.Signposts:
 	db 1
-	signpost 13, 16, $7, MapVermilionPortSignpostItem0
+	signpost 13, 16, SIGNPOST_ITEM, MapVermilionPortSignpostItem0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_SAILOR, 21, 11, $7, $0, 255, 255, $0, 0, SailorScript_0x74dc4, EVENT_72B
-	person_event SPRITE_SAILOR, 15, 10, $9, $0, 255, 255, $0, 0, SailorScript_0x74e97, -1
-	person_event SPRITE_SUPER_NERD, 15, 15, $5, $2, 255, 255, $0, 0, SuperNerdScript_0x74ee6, -1
+	person_event SPRITE_SAILOR, 21, 11, OW_UP | $3, $0, -1, -1, $0, 0, SailorScript_0x74dc4, EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
+	person_event SPRITE_SAILOR, 15, 10, OW_LEFT | $1, $0, -1, -1, $0, 0, SailorScript_0x74e97, -1
+	person_event SPRITE_SUPER_NERD, 15, 15, OW_UP | $1, $2, -1, -1, $0, 0, SuperNerdScript_0x74ee6, -1
--- a/maps/VermilionPortPassage.asm
+++ b/maps/VermilionPortPassage.asm
@@ -1,8 +1,8 @@
 VermilionPortPassage_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x7701a:
@@ -19,7 +19,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $0, $f, 8, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	warp_def $0, $10, 9, GROUP_VERMILION_CITY, MAP_VERMILION_CITY
@@ -27,12 +27,12 @@
 	warp_def $2, $3, 3, GROUP_VERMILION_PORT_PASSAGE, MAP_VERMILION_PORT_PASSAGE
 	warp_def $e, $3, 1, GROUP_VERMILION_PORT, MAP_VERMILION_PORT
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_TEACHER, 5, 21, $8, $0, 255, 255, $0, 0, TeacherScript_0x7701a, -1
+	person_event SPRITE_TEACHER, 5, 21, OW_LEFT | $0, $0, -1, -1, $0, 0, TeacherScript_0x7701a, -1
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -1,5 +1,5 @@
 VictoryRoad_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x74490, $0000
 	dw UnknownScript_0x74491, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x74490:
@@ -18,7 +18,7 @@
 UnknownScript_0x74492:
 	moveperson $2, $12, $b
 	spriteface $0, DOWN
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	appear $2
@@ -32,7 +32,7 @@
 
 UnknownScript_0x744b5:
 	spriteface $0, DOWN
-	showemote $0, $0, 15
+	showemote EMOTE_SHOCK, $0, 15
 	special Functionc48f
 	pause 15
 	appear $2
@@ -51,7 +51,7 @@
 	writetext UnknownText_0x7455f
 	closetext
 	loadmovesprites
-	setevent EVENT_6C2
+	setevent EVENT_RIVAL_VICTORY_ROAD
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x744ff
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
@@ -106,13 +106,11 @@
 	db HP_UP, 1
 
 MapVictoryRoadSignpostItem0:
-	dw $009e
-	db MAX_POTION
+	dwb EVENT_VICTORY_ROAD_HIDDEN_MAX_POTION, MAX_POTION
 	
 
 MapVictoryRoadSignpostItem1:
-	dw $009f
-	db FULL_HEAL
+	dwb EVENT_VICTORY_ROAD_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
 MovementData_0x74539:
@@ -240,7 +238,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 10
 	warp_def $43, $9, 5, GROUP_VICTORY_ROAD_GATE, MAP_VICTORY_ROAD_GATE
 	warp_def $31, $1, 3, GROUP_VICTORY_ROAD, MAP_VICTORY_ROAD
@@ -253,21 +251,21 @@
 	warp_def $1b, $0, 8, GROUP_VICTORY_ROAD, MAP_VICTORY_ROAD
 	warp_def $5, $d, 3, GROUP_ROUTE_23, MAP_ROUTE_23
 
-	; xy triggers
+.XYTriggers:
 	db 2
 	xy_trigger 0, $8, $c, $0, UnknownScript_0x74492, $0, $0
 	xy_trigger 0, $8, $d, $0, UnknownScript_0x744b5, $0, $0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 29, 3, $7, MapVictoryRoadSignpostItem0
-	signpost 65, 3, $7, MapVictoryRoadSignpostItem1
+	signpost 29, 3, SIGNPOST_ITEM, MapVictoryRoadSignpostItem0
+	signpost 65, 3, SIGNPOST_ITEM, MapVictoryRoadSignpostItem1
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_SILVER, 17, 22, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C2
-	person_event SPRITE_POKE_BALL, 32, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x74529, EVENT_6A3
-	person_event SPRITE_POKE_BALL, 52, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x7452b, EVENT_6A4
-	person_event SPRITE_POKE_BALL, 33, 22, $1, $0, 255, 255, $1, 0, ItemFragment_0x7452d, EVENT_6A5
-	person_event SPRITE_POKE_BALL, 52, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x7452f, EVENT_6A6
-	person_event SPRITE_POKE_BALL, 42, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x74531, EVENT_6A7
+	person_event SPRITE_SILVER, 17, 22, OW_UP | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_VICTORY_ROAD
+	person_event SPRITE_POKE_BALL, 32, 7, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x74529, EVENT_VICTORY_ROAD_TM_EARTHQUAKE
+	person_event SPRITE_POKE_BALL, 52, 16, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7452b, EVENT_VICTORY_ROAD_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 33, 22, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7452d, EVENT_VICTORY_ROAD_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 52, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7452f, EVENT_VICTORY_ROAD_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 42, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x74531, EVENT_VICTORY_ROAD_HP_UP
--- a/maps/VictoryRoadGate.asm
+++ b/maps/VictoryRoadGate.asm
@@ -1,5 +1,5 @@
 VictoryRoadGate_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x9b9fb, $0000
 	dw UnknownScript_0x9b9fc, $0000
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 UnknownScript_0x9b9fb:
@@ -98,7 +98,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 8
 	warp_def $7, $11, 1, GROUP_ROUTE_22, MAP_ROUTE_22
 	warp_def $7, $12, 1, GROUP_ROUTE_22, MAP_ROUTE_22
@@ -109,15 +109,15 @@
 	warp_def $7, $1, 2, GROUP_ROUTE_28, MAP_ROUTE_28
 	warp_def $7, $2, 2, GROUP_ROUTE_28, MAP_ROUTE_28
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $b, $a, $0, UnknownScript_0x9b9fd, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_OFFICER, 15, 12, $9, $0, 255, 255, $0, 0, OfficerScript_0x9ba03, -1
-	person_event SPRITE_BLACK_BELT, 9, 11, $9, $0, 255, 255, $0, 0, BlackBeltScript_0x9ba21, EVENT_OPENED_MT_SILVER
-	person_event SPRITE_BLACK_BELT, 9, 16, $8, $0, 255, 255, $0, 0, BlackBeltScript_0x9ba24, EVENT_FOUGHT_SNORLAX
+	person_event SPRITE_OFFICER, 15, 12, OW_LEFT | $1, $0, -1, -1, $0, 0, OfficerScript_0x9ba03, -1
+	person_event SPRITE_BLACK_BELT, 9, 11, OW_LEFT | $1, $0, -1, -1, $0, 0, BlackBeltScript_0x9ba21, EVENT_OPENED_MT_SILVER
+	person_event SPRITE_BLACK_BELT, 9, 16, OW_LEFT | $0, $0, -1, -1, $0, 0, BlackBeltScript_0x9ba24, EVENT_FOUGHT_SNORLAX
--- a/maps/VioletCity.asm
+++ b/maps/VioletCity.asm
@@ -1,8 +1,8 @@
 VioletCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -46,7 +46,7 @@
 	applymovement $2, MovementData_0x1a8463
 	playsound SFX_ENTER_DOOR
 	disappear $2
-	clearevent EVENT_6CB
+	clearevent EVENT_EARLS_ACADEMY_EARL
 	waitbutton
 	end
 
@@ -90,8 +90,7 @@
 	fruittree $9
 
 MapVioletCitySignpostItem6:
-	dw $00b0
-	db HYPER_POTION
+	dwb EVENT_VIOLET_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
 
 MovementData_0x1a842a:
 	big_step_down
@@ -275,7 +274,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 9
 	warp_def $11, $9, 2, GROUP_VIOLET_MART, MAP_VIOLET_MART
 	warp_def $11, $12, 1, GROUP_VIOLET_GYM, MAP_VIOLET_GYM
@@ -287,26 +286,26 @@
 	warp_def $18, $27, 1, GROUP_ROUTE_31_VIOLET_GATE, MAP_ROUTE_31_VIOLET_GATE
 	warp_def $19, $27, 2, GROUP_ROUTE_31_VIOLET_GATE, MAP_ROUTE_31_VIOLET_GATE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 7
-	signpost 20, 24, $0, VioletCitySign
-	signpost 17, 15, $0, VioletGymSign
-	signpost 8, 24, $0, SproutTowerSign
-	signpost 17, 27, $0, EarlsPokemonAcademySign
-	signpost 25, 32, $0, VioletCityPokeCenterSign
-	signpost 17, 10, $0, VioletCityMartSign
-	signpost 14, 37, $7, MapVioletCitySignpostItem6
+	signpost 20, 24, SIGNPOST_READ, VioletCitySign
+	signpost 17, 15, SIGNPOST_READ, VioletGymSign
+	signpost 8, 24, SIGNPOST_READ, SproutTowerSign
+	signpost 17, 27, SIGNPOST_READ, EarlsPokemonAcademySign
+	signpost 25, 32, SIGNPOST_READ, VioletCityPokeCenterSign
+	signpost 17, 10, SIGNPOST_READ, VioletCityMartSign
+	signpost 14, 37, SIGNPOST_ITEM, MapVioletCitySignpostItem6
 
-	; people-events
+.PersonEvents:
 	db 8
-	person_event SPRITE_FISHER, 20, 17, $3, $0, 255, 255, $a0, 0, FisherScript_0x1a83bb, EVENT_6CA
-	person_event SPRITE_LASS, 32, 32, $2, $22, 255, 255, $a0, 0, LassScript_0x1a8403, -1
-	person_event SPRITE_SUPER_NERD, 18, 28, $2, $21, 255, 255, $80, 0, SuperNerdScript_0x1a8406, -1
-	person_event SPRITE_GRAMPS, 24, 21, $5, $1, 255, 255, $0, 0, GrampsScript_0x1a8409, -1
-	person_event SPRITE_YOUNGSTER, 22, 9, $3, $0, 255, 255, $a0, 0, YoungsterScript_0x1a840c, -1
-	person_event SPRITE_FRUIT_TREE, 33, 18, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8425, -1
-	person_event SPRITE_POKE_BALL, 5, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a8421, EVENT_643
-	person_event SPRITE_POKE_BALL, 9, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a8423, EVENT_644
+	person_event SPRITE_FISHER, 20, 17, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a83bb, EVENT_VIOLET_CITY_EARL
+	person_event SPRITE_LASS, 32, 32, OW_DOWN | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x1a8403, -1
+	person_event SPRITE_SUPER_NERD, 18, 28, OW_DOWN | $2, $21, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a8406, -1
+	person_event SPRITE_GRAMPS, 24, 21, OW_UP | $1, $1, -1, -1, $0, 0, GrampsScript_0x1a8409, -1
+	person_event SPRITE_YOUNGSTER, 22, 9, OW_DOWN | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a840c, -1
+	person_event SPRITE_FRUIT_TREE, 33, 18, OW_DOWN | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8425, -1
+	person_event SPRITE_POKE_BALL, 5, 8, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a8421, EVENT_VIOLET_CITY_PP_UP
+	person_event SPRITE_POKE_BALL, 9, 39, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a8423, EVENT_VIOLET_CITY_RARE_CANDY
--- a/maps/VioletGym.asm
+++ b/maps/VioletGym.asm
@@ -1,8 +1,8 @@
 VioletGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 FalknerScript_0x683c2:
@@ -27,15 +27,15 @@
 	scall VioletGymTriggerRockets
 .FightDone
 	checkevent EVENT_GOT_TM31_MUD_SLAP
-	iftrue UnknownScript_0x68412
+	iftrue .SpeechAfterTM
 	setevent EVENT_BEAT_BIRD_KEEPER_ROD
 	setevent EVENT_BEAT_BIRD_KEEPER_ABE
 	domaptrigger GROUP_ELMS_LAB, MAP_ELMS_LAB, $2
-	specialphonecall $3
+	specialphonecall ELMCALL_ASSISTANT
 	writetext UnknownText_0x685c8
 	keeptextopen
 	verbosegiveitem TM_MUD_SLAP, 1
-	iffalse UnknownScript_0x68416
+	iffalse .NoRoomForMudSlap
 	setevent EVENT_GOT_TM31_MUD_SLAP
 	writetext UnknownText_0x68648
 	closetext
@@ -42,10 +42,10 @@
 	loadmovesprites
 	end
 
-UnknownScript_0x68412:
+.SpeechAfterTM:
 	writetext UnknownText_0x68735
 	closetext
-UnknownScript_0x68416:
+.NoRoomForMudSlap:
 	loadmovesprites
 	end
 
@@ -61,24 +61,8 @@
 	jumpstd radiotowerrockets
 
 TrainerBird_keeperRod:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_ROD
+	trainer EVENT_BEAT_BIRD_KEEPER_ROD, BIRD_KEEPER, ROD, Bird_keeperRodSeenText, Bird_keeperRodBeatenText, $0000, Bird_keeperRodScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, ROD
-
-	; text when seen
-	dw Bird_keeperRodSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperRodBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperRodScript
-
 Bird_keeperRodScript:
 	talkaftercancel
 	loadfont
@@ -88,24 +72,8 @@
 	end
 
 TrainerBird_keeperAbe:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_ABE
+	trainer EVENT_BEAT_BIRD_KEEPER_ABE, BIRD_KEEPER, ABE, Bird_keeperAbeSeenText, Bird_keeperAbeBeatenText, $0000, Bird_keeperAbeScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, ABE
-
-	; text when seen
-	dw Bird_keeperAbeSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperAbeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperAbeScript
-
 Bird_keeperAbeScript:
 	talkaftercancel
 	loadfont
@@ -311,22 +279,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $f, $4, 2, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $f, $5, 2, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 13, 3, $0, VioletGymStatue
-	signpost 13, 6, $0, VioletGymStatue
+	signpost 13, 3, SIGNPOST_READ, VioletGymStatue
+	signpost 13, 6, SIGNPOST_READ, VioletGymStatue
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_FALKNER, 5, 9, $6, $0, 255, 255, $90, 0, FalknerScript_0x683c2, -1
-	person_event SPRITE_YOUNGSTER, 10, 11, $8, $2, 255, 255, $92, 3, TrainerBird_keeperRod, -1
-	person_event SPRITE_YOUNGSTER, 14, 6, $9, $2, 255, 255, $92, 3, TrainerBird_keeperAbe, -1
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $80, 0, VioletGymGuyScript, -1
+	person_event SPRITE_FALKNER, 5, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FalknerScript_0x683c2, -1
+	person_event SPRITE_YOUNGSTER, 10, 11, OW_LEFT | $0, $2, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperRod, -1
+	person_event SPRITE_YOUNGSTER, 14, 6, OW_LEFT | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperAbe, -1
+	person_event SPRITE_GYM_GUY, 17, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, VioletGymGuyScript, -1
--- a/maps/VioletMart.asm
+++ b/maps/VioletMart.asm
@@ -1,8 +1,8 @@
 VioletMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x68295:
@@ -47,19 +47,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 1, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $7, $3, 1, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x68295, -1
-	person_event SPRITE_GRANNY, 10, 11, $5, $1, 255, 255, $0, 0, GrannyScript_0x6829c, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 9, $3, $0, 255, 255, $80, 0, CooltrainerMScript_0x6829f, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x68295, -1
+	person_event SPRITE_GRANNY, 10, 11, OW_UP | $1, $1, -1, -1, $0, 0, GrannyScript_0x6829c, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 9, OW_DOWN | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x6829f, -1
--- a/maps/VioletNicknameSpeechHouse.asm
+++ b/maps/VioletNicknameSpeechHouse.asm
@@ -1,8 +1,8 @@
 VioletNicknameSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 TeacherScript_0x693e9:
@@ -43,19 +43,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 4, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $7, $4, 4, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_TEACHER, 7, 6, $9, $0, 255, 255, $0, 0, TeacherScript_0x693e9, -1
-	person_event SPRITE_LASS, 8, 10, $7, $0, 255, 255, $a0, 0, LassScript_0x693ec, -1
-	person_event SPRITE_BIRD, 6, 9, $5, $1, 255, 255, $b0, 0, BirdScript_0x693ef, -1
+	person_event SPRITE_TEACHER, 7, 6, OW_LEFT | $1, $0, -1, -1, $0, 0, TeacherScript_0x693e9, -1
+	person_event SPRITE_LASS, 8, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x693ec, -1
+	person_event SPRITE_BIRD, 6, 9, OW_UP | $1, $1, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BirdScript_0x693ef, -1
--- a/maps/VioletOnixTradeHouse.asm
+++ b/maps/VioletOnixTradeHouse.asm
@@ -1,8 +1,8 @@
 VioletOnixTradeHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x6998d:
@@ -32,18 +32,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $3, 6, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $7, $4, 6, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 7, 6, $3, $0, 255, 255, $0, 0, PokefanMScript_0x6998d, -1
-	person_event SPRITE_YOUNGSTER, 9, 10, $4, $20, 255, 255, $80, 0, YoungsterScript_0x69990, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, OW_DOWN | $3, $0, -1, -1, $0, 0, PokefanMScript_0x6998d, -1
+	person_event SPRITE_YOUNGSTER, 9, 10, OW_UP | $0, $20, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x69990, -1
--- a/maps/VioletPokeCenter1F.asm
+++ b/maps/VioletPokeCenter1F.asm
@@ -1,8 +1,8 @@
 VioletPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x694c9:
@@ -212,22 +212,22 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 5, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $7, $4, 5, GROUP_VIOLET_CITY, MAP_VIOLET_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x694c9, -1
-	person_event SPRITE_GAMEBOY_KID, 10, 11, $6, $0, 255, 255, $a0, 0, GameboyKidScript_0x69540, -1
-	person_event SPRITE_GENTLEMAN, 8, 5, $3, $0, 255, 255, $0, 0, GentlemanScript_0x69543, -1
-	person_event SPRITE_YOUNGSTER, 5, 12, $6, $0, 255, 255, $80, 0, YoungsterScript_0x69546, -1
-	person_event SPRITE_SCIENTIST, 7, 8, $6, $0, 255, 255, $90, 0, ScientistScript_0x694cc, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x694c9, -1
+	person_event SPRITE_GAMEBOY_KID, 10, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GameboyKidScript_0x69540, -1
+	person_event SPRITE_GENTLEMAN, 8, 5, OW_DOWN | $3, $0, -1, -1, $0, 0, GentlemanScript_0x69543, -1
+	person_event SPRITE_YOUNGSTER, 5, 12, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x69546, -1
+	person_event SPRITE_SCIENTIST, 7, 8, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x694cc, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
--- a/maps/ViridianCity.asm
+++ b/maps/ViridianCity.asm
@@ -1,8 +1,8 @@
 ViridianCity_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -215,7 +215,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $7, $20, 1, GROUP_VIRIDIAN_GYM, MAP_VIRIDIAN_GYM
 	warp_def $9, $15, 1, GROUP_VIRIDIAN_NICKNAME_SPEECH_HOUSE, MAP_VIRIDIAN_NICKNAME_SPEECH_HOUSE
@@ -223,21 +223,21 @@
 	warp_def $13, $1d, 2, GROUP_VIRIDIAN_MART, MAP_VIRIDIAN_MART
 	warp_def $19, $17, 1, GROUP_VIRIDIAN_POKECENTER_1F, MAP_VIRIDIAN_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 6
-	signpost 17, 17, $0, ViridianCitySign
-	signpost 7, 27, $0, ViridianGymSign
-	signpost 1, 19, $0, ViridianCityWelcomeSign
-	signpost 15, 21, $0, TrainerHouseSign
-	signpost 25, 24, $0, ViridianCityPokeCenterSign
-	signpost 19, 30, $0, ViridianCityMartSign
+	signpost 17, 17, SIGNPOST_READ, ViridianCitySign
+	signpost 7, 27, SIGNPOST_READ, ViridianGymSign
+	signpost 1, 19, SIGNPOST_READ, ViridianCityWelcomeSign
+	signpost 15, 21, SIGNPOST_READ, TrainerHouseSign
+	signpost 25, 24, SIGNPOST_READ, ViridianCityPokeCenterSign
+	signpost 19, 30, SIGNPOST_READ, ViridianCityMartSign
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_GRAMPS, 9, 22, $2, $22, 255, 255, $0, 0, GrampsScript_0x1a9a4c, -1
-	person_event SPRITE_GRAMPS, 12, 34, $6, $0, 255, 255, $90, 0, GrampsScript_0x1a9a61, -1
-	person_event SPRITE_FISHER, 27, 10, $6, $0, 255, 255, $80, 0, FisherScript_0x1a9a75, -1
-	person_event SPRITE_YOUNGSTER, 25, 21, $2, $33, 255, 255, $a0, 0, YoungsterScript_0x1a9a90, -1
+	person_event SPRITE_GRAMPS, 9, 22, OW_DOWN | $2, $22, -1, -1, $0, 0, GrampsScript_0x1a9a4c, -1
+	person_event SPRITE_GRAMPS, 12, 34, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x1a9a61, -1
+	person_event SPRITE_FISHER, 27, 10, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x1a9a75, -1
+	person_event SPRITE_YOUNGSTER, 25, 21, OW_DOWN | $2, $33, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a9a90, -1
--- a/maps/ViridianGym.asm
+++ b/maps/ViridianGym.asm
@@ -1,8 +1,8 @@
 ViridianGym_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 BlueScript_0x9aa26:
@@ -168,20 +168,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $11, $4, 1, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 	warp_def $11, $5, 1, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 2
-	signpost 13, 3, $0, ViridianGymStatue
-	signpost 13, 6, $0, ViridianGymStatue
+	signpost 13, 3, SIGNPOST_READ, ViridianGymStatue
+	signpost 13, 6, SIGNPOST_READ, ViridianGymStatue
 
-	; people-events
+.PersonEvents:
 	db 2
-	person_event SPRITE_BLUE, 7, 9, $6, $0, 255, 255, $0, 0, BlueScript_0x9aa26, EVENT_776
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $90, 0, ViridianGymGuyScript, EVENT_776
+	person_event SPRITE_BLUE, 7, 9, OW_UP | $2, $0, -1, -1, $0, 0, BlueScript_0x9aa26, EVENT_VIRIDIAN_GYM_BLUE
+	person_event SPRITE_GYM_GUY, 17, 11, OW_UP | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ViridianGymGuyScript, EVENT_VIRIDIAN_GYM_BLUE
--- a/maps/ViridianMart.asm
+++ b/maps/ViridianMart.asm
@@ -1,8 +1,8 @@
 ViridianMart_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ClerkScript_0x9b5e7:
@@ -35,19 +35,19 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 4, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 	warp_def $7, $3, 4, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x9b5e7, -1
-	person_event SPRITE_LASS, 6, 11, $5, $2, 255, 255, $0, 0, LassScript_0x9b5ee, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 5, $7, $0, 255, 255, $0, 0, CooltrainerMScript_0x9b5f1, -1
+	person_event SPRITE_CLERK, 7, 5, OW_LEFT | $1, $0, -1, -1, $0, 0, ClerkScript_0x9b5e7, -1
+	person_event SPRITE_LASS, 6, 11, OW_UP | $1, $2, -1, -1, $0, 0, LassScript_0x9b5ee, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 5, OW_UP | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x9b5f1, -1
--- a/maps/ViridianNicknameSpeechHouse.asm
+++ b/maps/ViridianNicknameSpeechHouse.asm
@@ -1,8 +1,8 @@
 ViridianNicknameSpeechHouse_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 PokefanMScript_0x9ae3a:
@@ -59,20 +59,20 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $7, $2, 2, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 	warp_def $7, $3, 2, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_POKEFAN_M, 8, 6, $9, $0, 255, 255, $80, 0, PokefanMScript_0x9ae3a, -1
-	person_event SPRITE_LASS, 8, 9, $7, $0, 255, 255, $a0, 0, LassScript_0x9ae3d, -1
-	person_event SPRITE_MOLTRES, 6, 9, $16, $2, 255, 255, $b0, 0, MoltresScript_0x9ae40, -1
-	person_event SPRITE_GROWLITHE, 7, 10, $16, $2, 255, 255, $90, 0, GrowlitheScript_0x9ae4a, -1
+	person_event SPRITE_POKEFAN_M, 8, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x9ae3a, -1
+	person_event SPRITE_LASS, 8, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x9ae3d, -1
+	person_event SPRITE_MOLTRES, 6, 9, OW_UP | $12, $2, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MoltresScript_0x9ae40, -1
+	person_event SPRITE_GROWLITHE, 7, 10, OW_UP | $12, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrowlitheScript_0x9ae4a, -1
--- a/maps/ViridianPokeCenter1F.asm
+++ b/maps/ViridianPokeCenter1F.asm
@@ -1,8 +1,8 @@
 ViridianPokeCenter1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 NurseScript_0x9b690:
@@ -69,21 +69,21 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $7, $3, 5, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 	warp_def $7, $4, 5, GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY
 	warp_def $7, $0, 1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x9b690, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 12, $5, $1, 255, 255, $80, 0, CooltrainerMScript_0x9b693, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 9, $7, $0, 255, 255, $90, 0, CooltrainerFScript_0x9b6a7, -1
-	person_event SPRITE_BUG_CATCHER, 10, 5, $9, $0, 255, 255, $a0, 0, BugCatcherScript_0x9b6aa, -1
+	person_event SPRITE_NURSE, 5, 7, OW_UP | $2, $0, -1, -1, $0, 0, NurseScript_0x9b690, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 12, OW_UP | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x9b693, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 9, OW_UP | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerFScript_0x9b6a7, -1
+	person_event SPRITE_BUG_CATCHER, 10, 5, OW_LEFT | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugCatcherScript_0x9b6aa, -1
--- a/maps/ViridianPokeCenter2FBeta.asm
+++ b/maps/ViridianPokeCenter2FBeta.asm
@@ -1,8 +1,8 @@
 ViridianPokeCenter2FBeta_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ViridianPokeCenter2FBeta_MapEventHeader:
@@ -9,15 +9,15 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $7, $0, 3, GROUP_VIRIDIAN_POKECENTER_1F, MAP_VIRIDIAN_POKECENTER_1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -1,19 +1,19 @@
 WarehouseEntrance_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 3
 
 	; callbacks
 
-	dbw 5, UnknownScript_0x7c043
+	dbw 5, .ResetSwitches
 
-	dbw 1, UnknownScript_0x7c076
+	dbw 1, .CheckBasementKey
 
-	dbw 2, UnknownScript_0x7c082
+	dbw 2, .CheckDayOfWeek
 
-UnknownScript_0x7c043:
+.ResetSwitches:
 	clearevent EVENT_SWITCH_1
 	clearevent EVENT_SWITCH_2
 	clearevent EVENT_SWITCH_3
@@ -33,23 +33,25 @@
 	copyvartobyte UndergroundSwitchPositions
 	return
 
-UnknownScript_0x7c076:
+.CheckBasementKey:
 	checkevent EVENT_USED_BASEMENT_KEY
-	iffalse UnknownScript_0x7c07d
+	iffalse .LockBasementDoor
 	return
 
-UnknownScript_0x7c07d:
+.LockBasementDoor:
 	changeblock $12, $6, $3d
 	return
 
-UnknownScript_0x7c082:
+.CheckDayOfWeek:
 	checkcode VAR_WEEKDAY
-	if_equal MONDAY, UnknownScript_0x7c0a5
-	if_equal TUESDAY, UnknownScript_0x7c0b5
-	if_equal WEDNESDAY, UnknownScript_0x7c0be
-	if_equal THURSDAY, UnknownScript_0x7c0c7
-	if_equal FRIDAY, UnknownScript_0x7c0d0
-	if_equal SATURDAY, UnknownScript_0x7c0d9
+	if_equal MONDAY, .Monday
+	if_equal TUESDAY, .Tuesday
+	if_equal WEDNESDAY, .Wednesday
+	if_equal THURSDAY, .Thursday
+	if_equal FRIDAY, .Friday
+	if_equal SATURDAY, .Saturday
+
+.Sunday:
 	disappear $7
 	disappear $8
 	appear $9
@@ -56,18 +58,18 @@
 	appear $a
 	return
 
-UnknownScript_0x7c0a5:
+.Monday:
 	disappear $7
 	checkmorn
-	iffalse UnknownScript_0x7c0ae
+	iffalse .NotMondayMorning
 	appear $7
-UnknownScript_0x7c0ae:
+.NotMondayMorning:
 	disappear $8
 	disappear $9
 	disappear $a
 	return
 
-UnknownScript_0x7c0b5:
+.Tuesday:
 	disappear $7
 	appear $8
 	disappear $9
@@ -74,7 +76,7 @@
 	disappear $a
 	return
 
-UnknownScript_0x7c0be:
+.Wednesday:
 	disappear $7
 	disappear $8
 	appear $9
@@ -81,7 +83,7 @@
 	disappear $a
 	return
 
-UnknownScript_0x7c0c7:
+.Thursday:
 	disappear $7
 	appear $8
 	disappear $9
@@ -88,7 +90,7 @@
 	disappear $a
 	return
 
-UnknownScript_0x7c0d0:
+.Friday:
 	disappear $7
 	disappear $8
 	appear $9
@@ -95,7 +97,7 @@
 	disappear $a
 	return
 
-UnknownScript_0x7c0d9:
+.Saturday:
 	disappear $7
 	appear $8
 	disappear $9
@@ -103,24 +105,8 @@
 	return
 
 TrainerSupernerdEric:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_ERIC
+	trainer EVENT_BEAT_SUPER_NERD_ERIC, SUPER_NERD, ERIC, SupernerdEricSeenText, SupernerdEricBeatenText, $0000, SupernerdEricScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, ERIC
-
-	; text when seen
-	dw SupernerdEricSeenText
-
-	; text when trainer beaten
-	dw SupernerdEricBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdEricScript
-
 SupernerdEricScript:
 	talkaftercancel
 	loadfont
@@ -130,24 +116,8 @@
 	end
 
 TrainerSupernerdTeru:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_TERU
+	trainer EVENT_BEAT_SUPER_NERD_TERU, SUPER_NERD, TERU, SupernerdTeruSeenText, SupernerdTeruBeatenText, $0000, SupernerdTeruScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, TERU
-
-	; text when seen
-	dw SupernerdTeruSeenText
-
-	; text when trainer beaten
-	dw SupernerdTeruBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdTeruScript
-
 SupernerdTeruScript:
 	talkaftercancel
 	loadfont
@@ -157,24 +127,8 @@
 	end
 
 TrainerPokemaniacIssac:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ISSAC
+	trainer EVENT_BEAT_POKEMANIAC_ISSAC, POKEMANIAC, ISSAC, PokemaniacIssacSeenText, PokemaniacIssacBeatenText, $0000, PokemaniacIssacScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ISSAC
-
-	; text when seen
-	dw PokemaniacIssacSeenText
-
-	; text when trainer beaten
-	dw PokemaniacIssacBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacIssacScript
-
 PokemaniacIssacScript:
 	talkaftercancel
 	loadfont
@@ -184,24 +138,8 @@
 	end
 
 TrainerPokemaniacDonald:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_DONALD
+	trainer EVENT_BEAT_POKEMANIAC_DONALD, POKEMANIAC, DONALD, PokemaniacDonaldSeenText, PokemaniacDonaldBeatenText, $0000, PokemaniacDonaldScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, DONALD
-
-	; text when seen
-	dw PokemaniacDonaldSeenText
-
-	; text when trainer beaten
-	dw PokemaniacDonaldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacDonaldScript
-
 PokemaniacDonaldScript:
 	talkaftercancel
 	loadfont
@@ -213,11 +151,11 @@
 GrannyScript_0x7c132:
 	loadfont
 	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, UnknownScript_0x7c140
-	if_equal SATURDAY, UnknownScript_0x7c140
-	jump UnknownScript_0x7c300
+	if_equal SUNDAY, .Open
+	if_equal SATURDAY, .Open
+	jump WarehouseEntranceScript_ShopClosed
 
-UnknownScript_0x7c140:
+.Open:
 	pokemart $1, $0021
 	loadmovesprites
 	end
@@ -225,179 +163,179 @@
 GrampsScript_0x7c146:
 	loadfont
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_MERCHANT_CLOSED
-	iftrue UnknownScript_0x7c300
+	iftrue WarehouseEntranceScript_ShopClosed
 	checkcode VAR_WEEKDAY
-	if_equal MONDAY, UnknownScript_0x7c156
-	jump UnknownScript_0x7c300
+	if_equal MONDAY, .CheckMorn
+	jump WarehouseEntranceScript_ShopClosed
 
-UnknownScript_0x7c156:
+.CheckMorn:
 	checkmorn
-	iffalse UnknownScript_0x7c300
+	iffalse WarehouseEntranceScript_ShopClosed
 	pokemart $2, $0000
 	loadmovesprites
 	end
 
-SuperNerdScript_0x7c161:
+OlderHaircutBrotherScript:
 	loadfont
 	checkcode VAR_WEEKDAY
-	if_equal TUESDAY, UnknownScript_0x7c173
-	if_equal THURSDAY, UnknownScript_0x7c173
-	if_equal SATURDAY, UnknownScript_0x7c173
-	jump UnknownScript_0x7c300
+	if_equal TUESDAY, .DoHaircut
+	if_equal THURSDAY, .DoHaircut
+	if_equal SATURDAY, .DoHaircut
+	jump WarehouseEntranceScript_ShopClosed
 
-UnknownScript_0x7c173:
+.DoHaircut:
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
-	iftrue UnknownScript_0x7c208
+	iftrue .AlreadyGotHaircut
 	special Function24ae8
 	writetext UnknownText_0x7c5f9
 	yesorno
-	iffalse UnknownScript_0x7c1fc
+	iffalse .Refused
 	checkmoney $0, 500
-	if_equal $2, UnknownScript_0x7c202
+	if_equal $2, .NotEnoughMoney
 	writetext UnknownText_0x7c69a
 	keeptextopen
 	special Function7413
-	if_equal $0, UnknownScript_0x7c1fc
-	if_equal $1, UnknownScript_0x7c1fc
+	if_equal $0, .Refused
+	if_equal $1, .Refused
 	setflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
-	if_equal $2, UnknownScript_0x7c1a9
-	if_equal $3, UnknownScript_0x7c1b5
-	jump UnknownScript_0x7c1c1
+	if_equal $2, .two
+	if_equal $3, .three
+	jump .else
 
-UnknownScript_0x7c1a9:
-	setevent EVENT_000
-	clearevent EVENT_001
-	clearevent EVENT_002
-	jump UnknownScript_0x7c1cd
+.two:
+	setevent EVENT_GAVE_KURT_APRICORNS
+	clearevent EVENT_RECEIVED_BALLS_FROM_KURT
+	clearevent EVENT_DRAGON_SHRINE_QUESTION_2
+	jump .then
 
-UnknownScript_0x7c1b5:
-	clearevent EVENT_000
-	setevent EVENT_001
-	clearevent EVENT_002
-	jump UnknownScript_0x7c1cd
+.three:
+	clearevent EVENT_GAVE_KURT_APRICORNS
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
+	clearevent EVENT_DRAGON_SHRINE_QUESTION_2
+	jump .then
 
-UnknownScript_0x7c1c1:
-	clearevent EVENT_000
-	clearevent EVENT_001
-	setevent EVENT_002
-	jump UnknownScript_0x7c1cd
+.else:
+	clearevent EVENT_GAVE_KURT_APRICORNS
+	clearevent EVENT_RECEIVED_BALLS_FROM_KURT
+	setevent EVENT_DRAGON_SHRINE_QUESTION_2
+	jump .then
 
-UnknownScript_0x7c1cd:
+.then:
 	takemoney $0, 500
 	special Function24ae8
 	writetext UnknownText_0x7c6b8
 	closetext
 	loadmovesprites
-	special Function8c084
+	special FadeBlackBGMap
 	playmusic MUSIC_HEAL
 	pause 60
-	special Function8c079
+	special FadeInBGMap
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x7c6d8
 	closetext
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7c2bb
-	checkevent EVENT_001
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue UnknownScript_0x7c2c4
 	jump UnknownScript_0x7c2cd
 
-UnknownScript_0x7c1fc:
+.Refused:
 	writetext UnknownText_0x7c6ea
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7c202:
+.NotEnoughMoney:
 	writetext UnknownText_0x7c709
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7c208:
+.AlreadyGotHaircut:
 	writetext UnknownText_0x7c72b
 	closetext
 	loadmovesprites
 	end
 
-SuperNerdScript_0x7c20e:
+YoungerHaircutBrotherScript:
 	loadfont
 	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, UnknownScript_0x7c220
-	if_equal WEDNESDAY, UnknownScript_0x7c220
-	if_equal FRIDAY, UnknownScript_0x7c220
-	jump UnknownScript_0x7c300
+	if_equal SUNDAY, .DoHaircut
+	if_equal WEDNESDAY, .DoHaircut
+	if_equal FRIDAY, .DoHaircut
+	jump WarehouseEntranceScript_ShopClosed
 
-UnknownScript_0x7c220:
+.DoHaircut:
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
-	iftrue UnknownScript_0x7c2b5
+	iftrue .AlreadyGotHaircut
 	special Function24ae8
 	writetext UnknownText_0x7c75c
 	yesorno
-	iffalse UnknownScript_0x7c2a9
+	iffalse .Refused
 	checkmoney $0, 300
-	if_equal $2, UnknownScript_0x7c2af
+	if_equal $2, .NotEnoughMoney
 	writetext UnknownText_0x7c7f1
 	keeptextopen
 	special Function7418
-	if_equal $0, UnknownScript_0x7c2a9
-	if_equal $1, UnknownScript_0x7c2a9
+	if_equal $0, .Refused
+	if_equal $1, .Refused
 	setflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
-	if_equal $2, UnknownScript_0x7c256
-	if_equal $3, UnknownScript_0x7c262
-	jump UnknownScript_0x7c26e
+	if_equal $2, .two
+	if_equal $3, .three
+	jump .else
 
-UnknownScript_0x7c256:
-	setevent EVENT_000
-	clearevent EVENT_001
-	clearevent EVENT_002
-	jump UnknownScript_0x7c27a
+.two:
+	setevent EVENT_GAVE_KURT_APRICORNS
+	clearevent EVENT_RECEIVED_BALLS_FROM_KURT
+	clearevent EVENT_DRAGON_SHRINE_QUESTION_2
+	jump .then
 
-UnknownScript_0x7c262:
-	clearevent EVENT_000
-	setevent EVENT_001
-	clearevent EVENT_002
-	jump UnknownScript_0x7c27a
+.three:
+	clearevent EVENT_GAVE_KURT_APRICORNS
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
+	clearevent EVENT_DRAGON_SHRINE_QUESTION_2
+	jump .then
 
-UnknownScript_0x7c26e:
-	clearevent EVENT_000
-	clearevent EVENT_001
-	setevent EVENT_002
-	jump UnknownScript_0x7c27a
+.else:
+	clearevent EVENT_GAVE_KURT_APRICORNS
+	clearevent EVENT_RECEIVED_BALLS_FROM_KURT
+	setevent EVENT_DRAGON_SHRINE_QUESTION_2
+	jump .then
 
-UnknownScript_0x7c27a:
+.then:
 	takemoney $0, 300
 	special Function24ae8
 	writetext UnknownText_0x7c80e
 	closetext
 	loadmovesprites
-	special Function8c084
+	special FadeBlackBGMap
 	playmusic MUSIC_HEAL
 	pause 60
-	special Function8c079
+	special FadeInBGMap
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x7c82a
 	closetext
-	checkevent EVENT_000
+	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7c2bb
-	checkevent EVENT_001
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue UnknownScript_0x7c2c4
 	jump UnknownScript_0x7c2cd
 
-UnknownScript_0x7c2a9:
+.Refused:
 	writetext UnknownText_0x7c842
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7c2af:
+.NotEnoughMoney:
 	writetext UnknownText_0x7c85b
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7c2b5:
+.AlreadyGotHaircut:
 	writetext UnknownText_0x7c87b
 	closetext
 	loadmovesprites
@@ -424,18 +362,18 @@
 	loadmovesprites
 	end
 
-MapWarehouseEntranceSignpost0Script::
+BasementDoorScript::
 	loadfont
 	checkevent EVENT_USED_BASEMENT_KEY
-	iftrue UnknownScript_0x7c2fa
+	iftrue .Open
 	checkitem BASEMENT_KEY
-	iftrue UnknownScript_0x7c2e8
+	iftrue .Unlock
 	writetext UnknownText_0x7c5b0
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7c2e8:
+.Unlock:
 	playsound SFX_TRANSACTION
 	writetext UnknownText_0x7c5d6
 	closetext
@@ -446,13 +384,13 @@
 	setevent EVENT_USED_BASEMENT_KEY
 	end
 
-UnknownScript_0x7c2fa:
+.Open:
 	writetext UnknownText_0x7c5c3
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x7c300:
+WarehouseEntranceScript_ShopClosed:
 	writetext UnknownText_0x7c904
 	closetext
 	loadmovesprites
@@ -465,18 +403,15 @@
 	jumptext UnknownText_0x7c91a
 
 MapWarehouseEntranceSignpostItem2:
-	dw $008b
-	db PARLYZ_HEAL
+	dwb EVENT_WAREHOUSE_ENTRANCE_HIDDEN_PARLYZ_HEAL, PARLYZ_HEAL
 	
 
 MapWarehouseEntranceSignpostItem3:
-	dw $008c
-	db SUPER_POTION
+	dwb EVENT_WAREHOUSE_ENTRANCE_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
 MapWarehouseEntranceSignpostItem4:
-	dw $008d
-	db ANTIDOTE
+	dwb EVENT_WAREHOUSE_ENTRANCE_HIDDEN_ANTIDOTE, ANTIDOTE
 	
 
 SupernerdEricSeenText:
@@ -712,7 +647,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 6
 	warp_def $2, $3, 7, GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES
 	warp_def $22, $3, 4, GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES
@@ -721,25 +656,25 @@
 	warp_def $1f, $16, 3, GROUP_WAREHOUSE_ENTRANCE, MAP_WAREHOUSE_ENTRANCE
 	warp_def $1b, $16, 1, GROUP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, MAP_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 5
-	signpost 6, 18, $0, MapWarehouseEntranceSignpost0Script
-	signpost 6, 19, $0, MapWarehouseEntranceSignpost1Script
-	signpost 13, 6, $7, MapWarehouseEntranceSignpostItem2
-	signpost 18, 4, $7, MapWarehouseEntranceSignpostItem3
-	signpost 8, 17, $7, MapWarehouseEntranceSignpostItem4
+	signpost 6, 18, SIGNPOST_READ, BasementDoorScript
+	signpost 6, 19, SIGNPOST_READ, MapWarehouseEntranceSignpost1Script
+	signpost 13, 6, SIGNPOST_ITEM, MapWarehouseEntranceSignpostItem2
+	signpost 18, 4, SIGNPOST_ITEM, MapWarehouseEntranceSignpostItem3
+	signpost 8, 17, SIGNPOST_ITEM, MapWarehouseEntranceSignpostItem4
 
-	; people-events
+.PersonEvents:
 	db 9
-	person_event SPRITE_SUPER_NERD, 35, 9, $8, $0, 255, 255, $b2, 3, TrainerSupernerdEric, -1
-	person_event SPRITE_SUPER_NERD, 13, 10, $7, $0, 255, 255, $b2, 2, TrainerSupernerdTeru, -1
-	person_event SPRITE_SUPER_NERD, 31, 7, $a, $0, 255, 255, $92, 2, TrainerPokemaniacIssac, -1
-	person_event SPRITE_SUPER_NERD, 10, 6, $9, $0, 255, 255, $92, 3, TrainerPokemaniacDonald, -1
-	person_event SPRITE_POKE_BALL, 29, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x7c306, EVENT_672
-	person_event SPRITE_GRAMPS, 15, 11, $8, $0, 255, 255, $b0, 0, GrampsScript_0x7c146, EVENT_753
-	person_event SPRITE_SUPER_NERD, 18, 11, $8, $0, 255, 255, $90, 0, SuperNerdScript_0x7c161, EVENT_754
-	person_event SPRITE_SUPER_NERD, 19, 11, $8, $0, 255, 255, $a0, 0, SuperNerdScript_0x7c20e, EVENT_755
-	person_event SPRITE_GRANNY, 25, 11, $8, $0, 255, 255, $b0, 0, GrannyScript_0x7c132, EVENT_752
+	person_event SPRITE_SUPER_NERD, 35, 9, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerSupernerdEric, -1
+	person_event SPRITE_SUPER_NERD, 13, 10, OW_UP | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerSupernerdTeru, -1
+	person_event SPRITE_SUPER_NERD, 31, 7, OW_LEFT | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPokemaniacIssac, -1
+	person_event SPRITE_SUPER_NERD, 10, 6, OW_LEFT | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacDonald, -1
+	person_event SPRITE_POKE_BALL, 29, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x7c306, EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
+	person_event SPRITE_GRAMPS, 15, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x7c146, EVENT_WAREHOUSE_ENTRANCE_GRAMPS
+	person_event SPRITE_SUPER_NERD, 18, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OlderHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_OLDER_HAIRCUT_BROTHER
+	person_event SPRITE_SUPER_NERD, 19, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungerHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_YOUNGER_HAIRCUT_BROTHER
+	person_event SPRITE_GRANNY, 25, 11, OW_LEFT | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrannyScript_0x7c132, EVENT_WAREHOUSE_ENTRANCE_GRANNY
--- a/maps/WhirlIslandB1F.asm
+++ b/maps/WhirlIslandB1F.asm
@@ -1,8 +1,8 @@
 WhirlIslandB1F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c410:
@@ -24,18 +24,15 @@
 	jumpstd strengthboulder
 
 MapWhirlIslandB1FSignpostItem0:
-	dw $0097
-	db RARE_CANDY
+	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
 MapWhirlIslandB1FSignpostItem1:
-	dw $0098
-	db ULTRA_BALL
+	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
 MapWhirlIslandB1FSignpostItem2:
-	dw $0099
-	db FULL_RESTORE
+	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
 WhirlIslandB1F_MapEventHeader:
@@ -42,7 +39,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 9
 	warp_def $5, $5, 2, GROUP_WHIRL_ISLAND_NW, MAP_WHIRL_ISLAND_NW
 	warp_def $3, $23, 2, GROUP_WHIRL_ISLAND_NE, MAP_WHIRL_ISLAND_NE
@@ -54,20 +51,20 @@
 	warp_def $1b, $d, 2, GROUP_WHIRL_ISLAND_B2F, MAP_WHIRL_ISLAND_B2F
 	warp_def $15, $11, 1, GROUP_WHIRL_ISLAND_CAVE, MAP_WHIRL_ISLAND_CAVE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 3
-	signpost 4, 30, $7, MapWhirlIslandB1FSignpostItem0
-	signpost 18, 36, $7, MapWhirlIslandB1FSignpostItem1
-	signpost 23, 2, $7, MapWhirlIslandB1FSignpostItem2
+	signpost 4, 30, SIGNPOST_ITEM, MapWhirlIslandB1FSignpostItem0
+	signpost 18, 36, SIGNPOST_ITEM, MapWhirlIslandB1FSignpostItem1
+	signpost 23, 2, SIGNPOST_ITEM, MapWhirlIslandB1FSignpostItem2
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_POKE_BALL, 17, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c410, EVENT_691
-	person_event SPRITE_POKE_BALL, 22, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c412, EVENT_692
-	person_event SPRITE_POKE_BALL, 27, 37, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c414, EVENT_693
-	person_event SPRITE_POKE_BALL, 12, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c416, EVENT_694
-	person_event SPRITE_POKE_BALL, 30, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c418, EVENT_695
-	person_event SPRITE_BOULDER, 30, 27, $19, $0, 255, 255, $0, 0, WhirlIslandB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 17, 11, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c410, EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 22, 6, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c412, EVENT_WHIRL_ISLAND_B1F_CARBOS
+	person_event SPRITE_POKE_BALL, 27, 37, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c414, EVENT_WHIRL_ISLAND_B1F_CALCIUM
+	person_event SPRITE_POKE_BALL, 12, 21, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c416, EVENT_WHIRL_ISLAND_B1F_NUGGET
+	person_event SPRITE_POKE_BALL, 30, 23, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c418, EVENT_WHIRL_ISLAND_B1F_ESCAPE_ROPE
+	person_event SPRITE_BOULDER, 30, 27, OW_LEFT | $11, $0, -1, -1, $0, 0, WhirlIslandB1FBoulder, -1
--- a/maps/WhirlIslandB2F.asm
+++ b/maps/WhirlIslandB2F.asm
@@ -1,8 +1,8 @@
 WhirlIslandB2F_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c4b8:
@@ -18,7 +18,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $5, $b, 7, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
 	warp_def $b, $7, 8, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
@@ -25,14 +25,14 @@
 	warp_def $19, $7, 1, GROUP_WHIRL_ISLAND_LUGIA_CHAMBER, MAP_WHIRL_ISLAND_LUGIA_CHAMBER
 	warp_def $1f, $d, 5, GROUP_WHIRL_ISLAND_SW, MAP_WHIRL_ISLAND_SW
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 15, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c4b8, EVENT_696
-	person_event SPRITE_POKE_BALL, 8, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c4ba, EVENT_697
-	person_event SPRITE_POKE_BALL, 16, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c4bc, EVENT_698
+	person_event SPRITE_POKE_BALL, 15, 14, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c4b8, EVENT_WHIRL_ISLAND_B2F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 8, 10, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c4ba, EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 16, 9, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c4bc, EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
--- a/maps/WhirlIslandCave.asm
+++ b/maps/WhirlIslandCave.asm
@@ -1,8 +1,8 @@
 WhirlIslandCave_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 WhirlIslandCave_MapEventHeader:
@@ -9,16 +9,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $5, $7, 9, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
 	warp_def $d, $3, 4, GROUP_WHIRL_ISLAND_NW, MAP_WHIRL_ISLAND_NW
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/WhirlIslandLugiaChamber.asm
+++ b/maps/WhirlIslandLugiaChamber.asm
@@ -1,8 +1,8 @@
 WhirlIslandLugiaChamber_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -47,16 +47,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 1
 	warp_def $d, $9, 3, GROUP_WHIRL_ISLAND_B2F, MAP_WHIRL_ISLAND_B2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_LUGIA, 9, 13, $16, $0, 255, 255, $90, 0, LugiaScript_0x18c518, EVENT_73D
+	person_event SPRITE_LUGIA, 9, 13, OW_UP | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LugiaScript_0x18c518, EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
--- a/maps/WhirlIslandNE.asm
+++ b/maps/WhirlIslandNE.asm
@@ -1,8 +1,8 @@
 WhirlIslandNE_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c396:
@@ -12,18 +12,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $d, $3, 2, GROUP_ROUTE_41, MAP_ROUTE_41
 	warp_def $3, $11, 2, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
 	warp_def $b, $d, 3, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 15, 15, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c396, EVENT_68F
+	person_event SPRITE_POKE_BALL, 15, 15, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c396, EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
--- a/maps/WhirlIslandNW.asm
+++ b/maps/WhirlIslandNW.asm
@@ -1,8 +1,8 @@
 WhirlIslandNW_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 WhirlIslandNW_MapEventHeader:
@@ -9,7 +9,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 4
 	warp_def $7, $5, 1, GROUP_ROUTE_41, MAP_ROUTE_41
 	warp_def $3, $5, 1, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
@@ -16,11 +16,11 @@
 	warp_def $f, $3, 4, GROUP_WHIRL_ISLAND_SW, MAP_WHIRL_ISLAND_SW
 	warp_def $f, $7, 2, GROUP_WHIRL_ISLAND_CAVE, MAP_WHIRL_ISLAND_CAVE
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/WhirlIslandSE.asm
+++ b/maps/WhirlIslandSE.asm
@@ -1,8 +1,8 @@
 WhirlIslandSE_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 WhirlIslandSE_MapEventHeader:
@@ -9,16 +9,16 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 2
 	warp_def $d, $5, 4, GROUP_ROUTE_41, MAP_ROUTE_41
 	warp_def $3, $5, 6, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 0
--- a/maps/WhirlIslandSW.asm
+++ b/maps/WhirlIslandSW.asm
@@ -1,8 +1,8 @@
 WhirlIslandSW_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 0
 
-	; callback count
+.MapCallbacks:
 	db 0
 
 ItemFragment_0x18c3bc:
@@ -12,7 +12,7 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 5
 	warp_def $7, $5, 3, GROUP_ROUTE_41, MAP_ROUTE_41
 	warp_def $3, $11, 5, GROUP_WHIRL_ISLAND_B1F, MAP_WHIRL_ISLAND_B1F
@@ -20,12 +20,12 @@
 	warp_def $f, $3, 3, GROUP_WHIRL_ISLAND_NW, MAP_WHIRL_ISLAND_NW
 	warp_def $f, $11, 4, GROUP_WHIRL_ISLAND_B2F, MAP_WHIRL_ISLAND_B2F
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 6, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c3bc, EVENT_690
+	person_event SPRITE_POKE_BALL, 6, 19, OW_DOWN | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c3bc, EVENT_WHIRL_ISLAND_SW_ULTRA_BALL
--- a/maps/WillsRoom.asm
+++ b/maps/WillsRoom.asm
@@ -1,5 +1,5 @@
 WillsRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x1804c6, $0000
 	dw UnknownScript_0x1804ca, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -21,7 +21,7 @@
 	end
 
 UnknownScript_0x1804cb:
-	checkevent EVENT_309
+	checkevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
 	iffalse UnknownScript_0x1804d5
 	changeblock $4, $e, $2a
 UnknownScript_0x1804d5:
@@ -40,7 +40,7 @@
 	reloadmappart
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_309
+	setevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
 	waitbutton
 	end
 
@@ -134,18 +134,18 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $11, $5, 4, GROUP_INDIGO_PLATEAU_POKECENTER_1F, MAP_INDIGO_PLATEAU_POKECENTER_1F
 	warp_def $2, $4, 1, GROUP_KOGAS_ROOM, MAP_KOGAS_ROOM
 	warp_def $2, $5, 2, GROUP_KOGAS_ROOM, MAP_KOGAS_ROOM
 
-	; xy triggers
+.XYTriggers:
 	db 0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 1
-	person_event SPRITE_WILL, 11, 9, $6, $0, 255, 255, $80, 0, WillScript_0x1804f8, -1
+	person_event SPRITE_WILL, 11, 9, OW_UP | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, WillScript_0x1804f8, -1
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -1,5 +1,5 @@
 WiseTriosRoom_MapScriptHeader:
-	; trigger count
+.MapTriggers:
 	db 2
 
 	; triggers
@@ -6,7 +6,7 @@
 	dw UnknownScript_0x98572, $0000
 	dw UnknownScript_0x98573, $0000
 
-	; callback count
+.MapCallbacks:
 	db 1
 
 	; callbacks
@@ -26,18 +26,18 @@
 	iftrue UnknownScript_0x9858c
 	checkitem CLEAR_BELL
 	iftrue UnknownScript_0x9858c
-	clearevent EVENT_7AB
-	setevent EVENT_7AC
+	clearevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
 	return
 
 UnknownScript_0x9858c:
-	setevent EVENT_7AB
-	clearevent EVENT_7AC
+	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	clearevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
 	return
 
 UnknownScript_0x98593:
-	setevent EVENT_7AB
-	setevent EVENT_7AC
+	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
 	return
 
 SageScript_0x9859a:
@@ -52,7 +52,7 @@
 UnknownScript_0x985a3:
 	spriteface $4, UP
 	spriteface $0, DOWN
-	showemote $0, $4, 20
+	showemote EMOTE_SHOCK, $4, 20
 	follow $0, $4
 	applymovement $0, MovementData_0x98622
 	stopfollow
@@ -66,24 +66,8 @@
 	end
 
 TrainerSageGaku:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_GAKU
+	trainer EVENT_BEAT_SAGE_GAKU, SAGE, GAKU, SageGakuSeenText, SageGakuBeatenText, $0000, SageGakuScript
 
-	; trainer group && trainer id
-	db SAGE, GAKU
-
-	; text when seen
-	dw SageGakuSeenText
-
-	; text when trainer beaten
-	dw SageGakuBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageGakuScript
-
 SageGakuScript:
 	loadfont
 	writetext UnknownText_0x98938
@@ -92,24 +76,8 @@
 	end
 
 TrainerSageMasa:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_MASA
+	trainer EVENT_BEAT_SAGE_MASA, SAGE, MASA, SageMasaSeenText, SageMasaBeatenText, $0000, SageMasaScript
 
-	; trainer group && trainer id
-	db SAGE, MASA
-
-	; text when seen
-	dw SageMasaSeenText
-
-	; text when trainer beaten
-	dw SageMasaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageMasaScript
-
 SageMasaScript:
 	loadfont
 	writetext UnknownText_0x98a35
@@ -118,29 +86,13 @@
 	end
 
 TrainerSageKoji:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_KOJI
+	trainer EVENT_BEAT_SAGE_KOJI, SAGE, KOJI, SageKojiSeenText, SageKojiBeatenText, $0000, SageKojiScript
 
-	; trainer group && trainer id
-	db SAGE, KOJI
-
-	; text when seen
-	dw SageKojiSeenText
-
-	; text when trainer beaten
-	dw SageKojiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageKojiScript
-
 SageKojiScript:
 	checkevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
 	iftrue UnknownScript_0x9861b
 	pause 10
-	showemote $0, $7, 20
+	showemote EMOTE_SHOCK, $7, 20
 	loadfont
 	writetext UnknownText_0x98c6c
 	keeptextopen
@@ -393,24 +345,24 @@
 	; filler
 	db 0, 0
 
-	; warps
+.Warps:
 	db 3
 	warp_def $4, $7, 4, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $5, $7, 5, GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY
 	warp_def $4, $1, 5, GROUP_ECRUTEAK_HOUSE, MAP_ECRUTEAK_HOUSE
 
-	; xy triggers
+.XYTriggers:
 	db 1
 	xy_trigger 0, $4, $7, $0, UnknownScript_0x985a3, $0, $0
 
-	; signposts
+.Signposts:
 	db 0
 
-	; people-events
+.PersonEvents:
 	db 6
-	person_event SPRITE_SAGE, 6, 10, $3, $0, 255, 255, $0, 0, SageScript_0x9859a, EVENT_7AB
-	person_event SPRITE_SAGE, 11, 10, $5, $1, 255, 255, $0, 0, SageScript_0x9859d, EVENT_7AB
-	person_event SPRITE_SAGE, 9, 11, $8, $0, 255, 255, $0, 0, SageScript_0x985a0, EVENT_7AB
-	person_event SPRITE_SAGE, 6, 8, $6, $0, 255, 255, $2, 2, TrainerSageGaku, EVENT_7AC
-	person_event SPRITE_SAGE, 10, 8, $7, $0, 255, 255, $2, 2, TrainerSageMasa, EVENT_7AC
-	person_event SPRITE_SAGE, 8, 10, $8, $0, 255, 255, $2, 2, TrainerSageKoji, EVENT_7AC
+	person_event SPRITE_SAGE, 6, 10, OW_DOWN | $3, $0, -1, -1, $0, 0, SageScript_0x9859a, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	person_event SPRITE_SAGE, 11, 10, OW_UP | $1, $1, -1, -1, $0, 0, SageScript_0x9859d, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	person_event SPRITE_SAGE, 9, 11, OW_LEFT | $0, $0, -1, -1, $0, 0, SageScript_0x985a0, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	person_event SPRITE_SAGE, 6, 8, OW_UP | $2, $0, -1, -1, $2, 2, TrainerSageGaku, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
+	person_event SPRITE_SAGE, 10, 8, OW_UP | $3, $0, -1, -1, $2, 2, TrainerSageMasa, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
+	person_event SPRITE_SAGE, 8, 10, OW_LEFT | $0, $0, -1, -1, $2, 2, TrainerSageKoji, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
--- a/maps/second_map_headers.asm
+++ b/maps/second_map_headers.asm
@@ -456,7 +456,7 @@
 	map_header_2 GoldenrodPokeComCenter2FMobile, GOLDENROD_POKECOM_CENTER_2F_MOBILE, $0, NONE
 	map_header_2 IlexForestAzaleaGate, ILEX_FOREST_AZALEA_GATE, $0, NONE
 	map_header_2 Route34IlexForestGate, ROUTE_34_ILEX_FOREST_GATE, $0, NONE
-	map_header_2 DayCare, DAY_CARE, $0, NONE
+	map_header_2 DayCare, DAYCARE, $0, NONE
 	map_header_2 VermilionHouseFishingSpeechHouse, VERMILION_HOUSE_FISHING_SPEECH_HOUSE, $0, NONE
 	map_header_2 VermilionPokeCenter1F, VERMILION_POKECENTER_1F, $0, NONE
 	map_header_2 VermilionPokeCenter2FBeta, VERMILION_POKECENTER_2F_BETA, $0, NONE
--- a/misc/crystal_misc.asm
+++ b/misc/crystal_misc.asm
@@ -249,7 +249,7 @@
 	ld a, [hJoyPressed] ; $ff00+$a7
 	and $3
 	ret z
-	call Function1c07
+	call ExitMenu
 	call Function17ac1d
 	call Function17ac2a
 	ld hl, $d088
@@ -552,16 +552,16 @@
 	push de
 	ld a, $3
 	call Function17aae0
+rept 3
 	add a
-	add a
-	add a
+endr
 	add $0
 	push af
 	ld a, $4
 	call Function17aae0
+rept 3
 	add a
-	add a
-	add a
+endr
 	add $8
 	ld c, a
 	pop af
@@ -658,13 +658,15 @@
 Function17aac3: ; 17aac3 (5e:6ac3)
 	ld a, $b
 	push hl
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	pop hl
 	ld de, $14
 	add hl, de
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ret
 
 Function17aad0: ; 17aad0 (5e:6ad0)
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -114,8 +114,9 @@
 	ld a, [wcd25]
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [CreditsTimer]
 	call GetFarHalfword
 	ld a, [CreditsTimer]
@@ -308,7 +309,7 @@
 Function10020b: ; 10020b
 	xor a
 	ld [wc303], a
-	callba Function8c084
+	callba FadeBlackBGMap
 	callba Function106464
 	call HideSprites
 	call DelayFrame
@@ -326,7 +327,7 @@
 	push de
 	callba Function106464
 	call Function3f20
-	call Function1ad2
+	call DrawOnMap
 	hlcoord 1, 2
 	pop de
 	call PlaceString
@@ -796,7 +797,7 @@
 Function100504: ; 100504
 	push de
 	call Function3f20
-	call Function1ad2
+	call DrawOnMap
 	pop de
 	hlcoord 4, 2
 	call PlaceString
@@ -829,7 +830,7 @@
 
 Function100534: ; 100534
 	call Function100513
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	ld a, [wcd28]
 	inc a
@@ -903,7 +904,7 @@
 	ld [wcfa9], a
 
 .asm_1005a6
-	call Function1c07
+	call ExitMenu
 	ld a, [wcd26]
 	set 7, a
 	ld [wcd26], a
@@ -954,7 +955,7 @@
 	xor a
 	ld [wcfa9], a
 .asm_1005f0
-	call Function1c07
+	call ExitMenu
 	ld a, [wcd26]
 	set 7, a
 	ld [wcd26], a
@@ -1157,9 +1158,9 @@
 	ld hl, $a800
 	call GetSRAMBank
 	xor a
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	call CloseSRAM
 	ret
 ; 10070d
@@ -1792,7 +1793,7 @@
 	call Function100ed4
 	ld a, [wcf88]
 	ld [wd0d2], a
-	call Function1c07
+	call ExitMenu
 	ret
 ; 100b45
 
@@ -1828,7 +1829,7 @@
 	rst FarCall
 	callba Function24085
 	callba MobileTextBorder
-	call Function1ad2
+	call DrawOnMap
 	call Function321c
 	callba Function2411a
 	ld hl, wcfa5
@@ -1892,8 +1893,9 @@
 	ld a, [wcfa9]
 	ld b, a
 	ld a, [wd0eb]
+rept 2
 	inc a
-	inc a
+endr
 	cp b
 	jp nz, .asm_100bcb
 	ld a, $1
@@ -2078,11 +2080,11 @@
 
 Function100d67: ; 100d67
 	ld hl, MenuDataHeader_100d88
-	call Function1d3c
+	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
 	call Function1cbb
-	call Function1ad2
+	call DrawOnMap
 	call Function1c89
 	call WaitBGMap
 	call Function1c66
@@ -2513,8 +2515,9 @@
 Function101050: ; 101050
 	call Function10107d
 	ld a, [OTPartyCount]
+rept 2
 	ld hl, $c608
-	ld hl, $c608
+endr
 	ld bc, $01b3
 	call Function1010de
 	ld hl, wc7bb
@@ -2809,7 +2812,7 @@
 ; 101251
 
 Function101251: ; 101251
-	call Function1ad2
+	call DrawOnMap
 	call ResetWindow
 	ld hl, UnknownText_0x1021f4
 	call Function1021e0
@@ -2826,7 +2829,7 @@
 ; 10126c
 
 Function10126c: ; 10126c
-	call Function1ad2
+	call DrawOnMap
 	callba Script_reloadmappart
 	ld hl, UnknownText_0x1021f4
 	call Function1021e0
@@ -3015,7 +3018,7 @@
 	call Function1d7d
 	call Function2bae
 	callba Function106464
-	call Function1ad2
+	call DrawOnMap
 	call Function2b5c
 	ret
 ; 1013c0
@@ -4171,7 +4174,7 @@
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
-	call Function1ad2
+	call DrawOnMap
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
@@ -4494,7 +4497,7 @@
 
 Function101db2: ; 101db2
 	callba Function103302
-	call Function1c07
+	call ExitMenu
 	ld hl, wcd29
 	set 5, [hl]
 	jr c, .asm_101dca
@@ -4696,8 +4699,9 @@
 Function101ee4: ; 101ee4
 	ld d, 0
 	ld hl, Unknown_101ef5
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -4972,16 +4976,16 @@
 	call Function10218d
 	call Function102180
 	ld hl, UnknownText_0x1021d1
-	call Function1d4f
+	call MenuTextBox
 	ld de, SFX_LEVEL_UP
 	call PlaySFX
 	call Functiona36
-	call Function1c07
+	call ExitMenu
 	call Function10219f
 	ld hl, UnknownText_0x1021d6
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
-	call Function1c07
+	call ExitMenu
 	jr c, .asm_10217c
 	call Function1021b8
 	jr c, .asm_10217c
@@ -5051,9 +5055,9 @@
 ; 1021e0
 
 Function1021e0: ; 1021e0
-	call Function1d4f
+	call MenuTextBox
 	call Functiona36
-	call Function1c07
+	call ExitMenu
 	ret
 ; 1021ea
 
@@ -6207,7 +6211,7 @@
 
 Function102996: ; 102996
 	call Function1029af
-	call Function1c07
+	call ExitMenu
 	scf
 	ret
 ; 10299e
@@ -6281,7 +6285,7 @@
 	and [hl]
 	ret z
 	push af
-	call Function1c07
+	call ExitMenu
 	pop af
 	ld a, [wcfa9]
 	cp $1
@@ -7143,9 +7147,9 @@
 	ld a, [wcf44]
 	ld l, a
 	ld h, 0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld bc, Unknown_103112
 	add hl, bc
 	ld b, $30
@@ -7164,8 +7168,9 @@
 	inc hl
 	push hl
 
+rept 2
 	add a
-	add a
+endr
 
 	add Unknown_10327a % $100
 	ld l, a
@@ -7316,7 +7321,7 @@
 	ld a, [hl]
 	ld [wd1ee], a
 	call Function1034be
-	call Function1ad2
+	call DrawOnMap
 	callba Function104000
 	ld a, $1
 	ld [wd1f0], a
@@ -7628,8 +7633,9 @@
 	callba Function10138b
 	ld b, 0
 	ld hl, Unknown_1035d7
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -7685,8 +7691,8 @@
 	ld [wcf88], a
 
 .asm_103622
-	call Function1d81
-	call Function1c17
+	call InterpretMenu2
+	call WriteBackup
 	jr c, .asm_10363b
 	ld a, [wcfa9]
 	ld [ScriptVar], a
@@ -7733,7 +7739,7 @@
 	ret
 ; 10366e
 
-Function10366e: ; 10366e
+Mobile_SelectThreeMons: ; 10366e
 	callba Function10632f
 	bit 7, c
 	jr z, .asm_10369b
@@ -7773,8 +7779,8 @@
 	jr c, .asm_1036f4
 	ld hl, MenuDataHeader_103747
 	call LoadMenuDataHeader
-	call Function1d81
-	call Function1c07
+	call InterpretMenu2
+	call ExitMenu
 	jr c, .asm_1036f4
 	ld a, [wcfa9]
 	cp $1
@@ -7815,7 +7821,7 @@
 
 Function103700: ; 103700
 	ld c, $a
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	bit 4, [hl]
 	jr z, .asm_10370f
 	callba Function1008a6
@@ -7913,11 +7919,11 @@
 
 Function10378c: ; 10378c
 	ld c, $0
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	bit 4, [hl]
 	jr nz, .asm_10379c
 	ld c, $1
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	set 4, [hl]
 
 .asm_10379c
@@ -7939,7 +7945,7 @@
 	ld a, c
 	and a
 	ret z
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	res 4, [hl]
 	ret
 ; 1037c2
@@ -8030,8 +8036,9 @@
 	ld [wdc60], a
 	xor a
 	ld hl, wdc5c
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	ld hl, UnknownText_0x103876
 	call PrintText
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -339,8 +339,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_10828a
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -920,8 +921,9 @@
 	ld a, [hSCX]
 	cp $e0
 	jr z, .asm_108791
+rept 2
 	dec a
-	dec a
+endr
 	ld [hSCX], a
 	cp $f8
 	jr nz, .asm_10878a
@@ -938,8 +940,9 @@
 	ld a, [hSCY]
 	cp $f8
 	jr z, .asm_1087cb
+rept 2
 	dec a
-	dec a
+endr
 	ld [hSCY], a
 	cp $40
 	jr z, .asm_1087a9
@@ -1089,8 +1092,9 @@
 	ld a, [hSCY]
 	cp $78
 	jr z, .asm_1088ee
+rept 2
 	inc a
-	inc a
+endr
 	ld [hSCY], a
 	cp $30
 	jr z, .asm_1088c5
@@ -1129,8 +1133,9 @@
 	ld a, [hSCX]
 	cp $c
 	jr z, .asm_108906
+rept 2
 	inc a
-	inc a
+endr
 	ld [hSCX], a
 	cp $f8
 	jr nz, .asm_1088e7
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -152,8 +152,9 @@
 Function11425c: ; 11425c
 	ld [wdc02], a
 	pop af
+rept 2
 	ld [$ff8c], a
-	ld [$ff8c], a
+endr
 	ld [$4000], a
 	ret
 ; 114268
@@ -427,7 +428,7 @@
 	pop hl
 	push af
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -622,12 +623,13 @@
 
 Function1144d1: ; 1144d1
 	call Function114561
+rept 2
 	dec de
-	dec de
+endr
 	push de
+rept 3
 	inc de
-	inc de
-	inc de
+endr
 	inc hl
 	ld a, [de]
 	ld [hli], a
@@ -673,7 +675,7 @@
 .asm_11451c
 	pop hl
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -690,7 +692,7 @@
 .asm_114537
 	ld hl, wdc06
 	ld a, [hl]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld hl, wdc09
@@ -989,8 +991,9 @@
 	and a
 	jr nz, .asm_1146e8
 .asm_1146da
+rept 2
 	dec bc
-	dec bc
+endr
 	call Function1149cc
 	and a
 	jr nz, .asm_1146e4
@@ -1076,8 +1079,9 @@
 	ld a, [wdc0e]
 	cp $3
 	jr nz, .asm_114773
+rept 2
 	dec bc
-	dec bc
+endr
 
 .asm_114773
 	call Function1149cc
@@ -1255,7 +1259,7 @@
 Function114867: ; 114867
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1283,7 +1287,7 @@
 	inc e
 	call z, Function1148b9
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1313,7 +1317,7 @@
 
 Function1148b9: ; 1148b9
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1322,7 +1326,7 @@
 Function1148c2: ; 1148c2
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1375,7 +1379,7 @@
 	inc e
 	call z, Function114944
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1413,7 +1417,7 @@
 
 Function114944: ; 114944
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1422,7 +1426,7 @@
 Function11494d: ; 11494d
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1467,7 +1471,7 @@
 	inc e
 	call z, Function1149c3
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1505,7 +1509,7 @@
 
 Function1149c3: ; 1149c3
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1514,7 +1518,7 @@
 Function1149cc: ; 1149cc
 	ld hl, wdc06
 	ld a, [hl]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	push de
@@ -1546,7 +1550,7 @@
 	inc e
 	call z, Function114a0f
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1563,7 +1567,7 @@
 
 Function114a0f: ; 114a0f
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1861,18 +1865,15 @@
 .asm_114b8c
 	pop hl
 	xor a
+rept 6
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	jr .asm_114b82
 
 .asm_114b96
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1922,7 +1923,7 @@
 	jr z, .asm_114bff
 	pop hl
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2030,8 +2031,9 @@
 	inc de
 	cp $3f
 	jr nz, .asm_114c62
+rept 2
 	dec de
-	dec de
+endr
 .asm_114c75
 	ld a, [hli]
 	cp $3f
@@ -2051,8 +2053,9 @@
 	ld a, [hli]
 	cp $3d
 	jr nz, .asm_114c84
+rept 2
 	dec bc
-	dec bc
+endr
 	ld a, l
 	ld [wdc03], a
 	ld a, h
@@ -2141,10 +2144,9 @@
 	call Function114d99
 	pop hl
 	push hl
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, [hld]
 	cp b
 	jr c, .asm_114d2d
@@ -2152,7 +2154,7 @@
 .asm_114d11
 	pop hl
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2317,8 +2319,9 @@
 	add hl, de
 	ld b, h
 	ld c, l
+rept 2
 	inc bc
-	inc bc
+endr
 	xor a
 	ret
 ; 114df1
@@ -2456,7 +2459,7 @@
 Function114ea0: ; 114ea0
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2481,7 +2484,7 @@
 	inc e
 	call z, Function114ee0
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -2502,7 +2505,7 @@
 
 Function114ee0: ; 114ee0
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -2513,8 +2516,9 @@
 	ld a, b
 	ld [hli], a
 	ld a, c
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -2740,7 +2744,7 @@
 	push hl
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2767,7 +2771,7 @@
 
 .asm_115046
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -2786,7 +2790,7 @@
 
 Function115059: ; 115059
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -2912,8 +2916,9 @@
 
 .asm_11510b
 	pop hl
+rept 2
 	dec hl
-	dec hl
+endr
 	push de
 	call Function1158c2
 	pop de
@@ -2952,7 +2957,7 @@
 Function115136: ; 115136
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2979,7 +2984,7 @@
 
 .asm_11515d
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -2998,7 +3003,7 @@
 
 Function115170: ; 115170
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -3007,7 +3012,7 @@
 Function115179: ; 115179
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -3102,7 +3107,7 @@
 	inc e
 	call z, Function11520e
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -3117,7 +3122,7 @@
 
 Function11520e: ; 11520e
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -3127,7 +3132,7 @@
 	push hl
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -3166,7 +3171,7 @@
 
 .asm_115252
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -3211,7 +3216,7 @@
 
 Function115286: ; 115286
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -3429,8 +3434,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -3610,7 +3616,7 @@
 	ld [de], a
 	ld hl, RightOrnament
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -3619,7 +3625,7 @@
 	ld hl, $ddc8
 	call Function115d6a
 	ld hl, RightOrnament
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -3845,7 +3851,7 @@
 
 Function11560a: ; 11560a
 	ld a, [wdc06]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld a, [wdc17]
 	ld [wdc00], a
 	ld [$ff8c], a
@@ -3920,7 +3926,7 @@
 	inc hl
 	ld [hl], d
 	pop bc
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [$ff8c], a
 	ld [$4000], a
 	ld hl, wdc07
@@ -3942,7 +3948,7 @@
 	jr nz, .asm_11564d
 
 .asm_1156a9
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [wdc06], a
 	xor a
 	ret
@@ -4285,7 +4291,7 @@
 	pop hl
 	ld hl, wdc07
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -4294,7 +4300,7 @@
 	ld hl, PartyMon5Speed
 	call Function115d6a
 	ld hl, wdc07
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -4330,7 +4336,7 @@
 
 Function1158c2: ; 1158c2
 	ld a, e
-	ld [wdc20], a
+	ld [SwarmFlags], a
 	ld a, d
 	ld [wdc21], a
 	xor a
@@ -4351,7 +4357,7 @@
 	ld l, c
 	ld h, b
 	xor a
-	ld [wdc1f], a
+	ld [WeeklyFlags], a
 
 .asm_1158e5
 	ld b, $3
@@ -4376,7 +4382,7 @@
 	push hl
 	dec hl
 	ld a, c
-	ld [wdc1f], a
+	ld [WeeklyFlags], a
 .asm_115908
 	xor a
 	ld [hld], a
@@ -4388,9 +4394,9 @@
 	ld bc, $0003
 
 .asm_115914
+rept 3
 	dec bc
-	dec bc
-	dec bc
+endr
 	ld a, c
 	ld [wdc19], a
 	ld a, b
@@ -4397,7 +4403,7 @@
 	ld [wdc1a], a
 	push de
 	push hl
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -4404,10 +4410,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 4
 	inc de
-	inc de
-	inc de
-	inc de
+endr
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -4442,8 +4447,9 @@
 	ld a, $3f
 	and c
 	ld [hld], a
+rept 2
 	dec hl
-	dec hl
+endr
 	pop de
 	ld b, h
 	ld c, l
@@ -4492,7 +4498,7 @@
 	ld a, $a
 	ld [hli], a
 	push hl
-	ld hl, wdc20
+	ld hl, SwarmFlags
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -4499,8 +4505,9 @@
 	ld a, [hli]
 	ld c, a
 	ld b, [hl]
+rept 2
 	inc bc
-	inc bc
+endr
 	ld a, b
 	ld [hld], a
 	ld [hl], c
@@ -4517,7 +4524,7 @@
 	jp nz, .asm_1158e5
 
 .asm_1159c4
-	ld a, [wdc1f]
+	ld a, [WeeklyFlags]
 	cp $0
 	jr z, .asm_1159d8
 	push hl
@@ -4776,8 +4783,9 @@
 	ld a, [wdc23]
 	cp $4
 	jr z, .asm_115b43
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_115b43
 
 .asm_115b36
@@ -4847,7 +4855,7 @@
 	pop hl
 	ld hl, wdc07
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -4856,7 +4864,7 @@
 	ld hl, wdc26
 	call Function115d6a
 	ld hl, wdc07
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -4958,8 +4966,9 @@
 	ret
 
 .asm_115c33
+rept 2
 	dec hl
-	dec hl
+endr
 	xor a
 	ld [hl], a
 	ld a, $1
@@ -4984,9 +4993,9 @@
 
 Function115c49: ; 115c49
 	ld a, e
-	ld [wdc1f], a
+	ld [WeeklyFlags], a
 	ld a, d
-	ld [wdc20], a
+	ld [SwarmFlags], a
 	xor a
 	ld [de], a
 	inc de
@@ -5027,10 +5036,9 @@
 	ld c, a
 	ld a, [wdc1a]
 	ld b, a
+rept 4
 	dec bc
-	dec bc
-	dec bc
-	dec bc
+endr
 .asm_115c8c
 	ld a, [de]
 	cp $d
@@ -5055,7 +5063,7 @@
 	ld [wdc1a], a
 	push de
 	push hl
-	ld hl, wdc1f
+	ld hl, WeeklyFlags
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -5062,9 +5070,9 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+rept 3
 	inc de
-	inc de
-	inc de
+endr
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -5166,9 +5174,9 @@
 .asm_115d38
 	push de
 	push hl
-	ld a, [wdc1f]
+	ld a, [WeeklyFlags]
 	ld l, a
-	ld a, [wdc20]
+	ld a, [SwarmFlags]
 	ld h, a
 	ld e, [hl]
 	inc hl
@@ -5230,7 +5238,7 @@
 
 Function115d77: ; 115d77
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -5627,8 +5635,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1161c7
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -5919,7 +5928,7 @@
 	call ByteFill
 	ld a, $90
 	ld [hWY], a
-	call Function1ad2
+	call DrawOnMap
 	pop af
 	ld [rSVBK], a
 	callba Function104061
@@ -5962,7 +5971,7 @@
 	call DelayFrame
 	ld a, $90
 	ld [hWY], a
-	call Function1ad2
+	call DrawOnMap
 	callba Function14157
 	pop af
 	ld [rSVBK], a
@@ -6210,8 +6219,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1165af
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -7726,8 +7736,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_117728
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -8021,13 +8032,13 @@
 	ld a, [wcd4e]
 	and a
 	jr nz, .asm_117939
-	call Function1c07
+	call ExitMenu
 	ld a, $1
 	ld [wcd4f], a
 	jp Function117a0a
 .asm_117939
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	jp Function117a0a
 
 Function117942: ; 117942 (45:7942)
@@ -8055,7 +8066,7 @@
 	ld hl, wcd4e
 	dec [hl]
 	ret nz
-	call Function1c07
+	call ExitMenu
 asm_11797e: ; 11797e (45:797e)
 	ld a, $80
 	ld [wcd49], a
@@ -8078,7 +8089,7 @@
 	ld hl, wcd4e
 	dec [hl]
 	ret nz
-	call Function1c07
+	call ExitMenu
 	ld a, $1
 	ld [wcd49], a
 	ret
@@ -8195,8 +8206,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, Pointers117af8
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -8285,13 +8297,13 @@
 	ld a, [wcf64]
 	and a
 	jr nz, .asm_117ba4 ; 0x117b93 $f
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	callba Function104061
 	jp Function117cdd
 .asm_117ba4
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	callba Function104061
 	ld a, $80
 	ld [wcf63], a
@@ -8395,7 +8407,7 @@
 	add hl, de
 	dec c
 	jr nz, .asm_117c71 ; 0x117c7b $f4
-	call Function4b6
+	call FadeToWhite
 	pop af
 	ld [rSVBK], a
 	ld a, $80
@@ -9023,8 +9035,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1184b4
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9067,8 +9080,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1184fb
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9124,8 +9138,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_11855c
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9156,8 +9171,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_11858b
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9200,8 +9216,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1185d2
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9257,8 +9274,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_118633
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9304,8 +9322,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_118680
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9345,8 +9364,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1186c1
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9387,8 +9407,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_118704
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9436,8 +9457,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_118755
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -9861,7 +9883,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	call Function1c17
+	call WriteBackup
 	pop af
 	ld [rSVBK], a
 	ld a, [wcd38]
@@ -9885,7 +9907,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	call Function1c17
+	call WriteBackup
 	pop af
 	ld [rSVBK], a
 	ld a, $7
@@ -10071,8 +10093,9 @@
 	jr nz, .asm_118b8c
 	dec hl
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ret
 ; 118b9a
 
@@ -10272,8 +10295,9 @@
 	ld a, [hld]
 	cp $2f
 	jr nz, .asm_118e3e
+rept 2
 	inc hl
-	inc hl
+endr
 	ld de, wcd85
 	ld c, $4
 .asm_118e4a
@@ -11132,8 +11156,9 @@
 	ld c, a
 	ld a, [wd001]
 	ld b, a
+rept 2
 	dec bc
-	dec bc
+endr
 	ld hl, wd002
 	ld a, [hli]
 	ld e, a
@@ -11298,10 +11323,9 @@
 	ld a, $10
 	cp b
 	jr z, .asm_119536
+rept 4
 	inc hl
-	inc hl
-	inc hl
-	inc hl
+endr
 	jr .asm_11957a
 .asm_119536
 	ld a, [hli]
@@ -11324,8 +11348,9 @@
 .asm_119552
 	inc hl
 .asm_119553
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_11955b
 .asm_119557
 	ld de, $14
@@ -11670,8 +11695,9 @@
 	ld a, [hld]
 	cp $58
 	jr z, .asm_11975b
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, d
 	dec a
 	jr z, .asm_11978e
@@ -12253,8 +12279,9 @@
 	ld a, [de]
 	cp $d
 	jr nz, .asm_119b85
+rept 2
 	inc de
-	inc de
+endr
 .asm_119b93
 	ld a, [de]
 	inc de
@@ -12310,9 +12337,9 @@
 	ld [hld], a
 	dec hl
 	pop de
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld a, h
 	cp $e0
 	jr c, .asm_119b93
@@ -12792,8 +12819,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_119efd
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -12896,7 +12924,7 @@
 	ld a, [wcd44]
 	and a
 	jr nz, .asm_119fef
-	call Function1c07
+	call ExitMenu
 	call Function11a63c
 	xor a
 	ld [ScriptVar], a
@@ -12904,7 +12932,7 @@
 	ld a, [ScriptVar]
 	and a
 	jr z, .asm_119fd4
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	callba Function115dc3
 	ld a, [wcd33]
@@ -12927,8 +12955,8 @@
 	ret
 
 .asm_119fef
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	callba Function104061
 	ld a, [wcd45]
 	ld [wcf66], a
@@ -13003,7 +13031,7 @@
 	callba Function117ab4
 	callba Function106462
 	callba Function106464
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	callba Function115d99
 	ld c, $0
@@ -13026,7 +13054,7 @@
 	callba Function17d3f6
 	callba Function106462
 	callba Function106464
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	callba Function115d99
 	ld c, $0
@@ -13118,7 +13146,7 @@
 	ld a, [wcd44]
 	and a
 	jr nz, .asm_11a1b6
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	call Function11a63c
 	hlcoord 4, 2
@@ -13128,7 +13156,7 @@
 	ret
 
 .asm_11a1b6
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	ld a, [wcd45]
 	ld [wcf66], a
@@ -13259,7 +13287,7 @@
 	ld a, [wcd44]
 	and a
 	jr nz, .asm_11a2c4
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	ld a, [wcd46]
 	cp $0
@@ -13281,7 +13309,7 @@
 	call PlayClickSFX
 
 .asm_11a2c4
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	and a
 	ret
@@ -13360,7 +13388,7 @@
 	ret
 
 .asm_11a346
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	callba Function115dc3
 	and a
@@ -13404,7 +13432,7 @@
 	ld a, [wcd44]
 	and a
 	jr nz, .asm_11a3b1
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	call Function11a63c
 	hlcoord 4, 2
@@ -13414,7 +13442,7 @@
 	ret
 
 .asm_11a3b1
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	ld a, [wcd45]
 	ld [wcf66], a
@@ -13479,7 +13507,7 @@
 	ld a, [wcd44]
 	and a
 	jr nz, .asm_11a43f
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	call Function11a63c
 	hlcoord 4, 2
@@ -13489,7 +13517,7 @@
 	ret
 
 .asm_11a43f
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	ld a, $1c
 	ld [wcf66], a
@@ -13550,7 +13578,7 @@
 	ld a, [wcd44]
 	and a
 	jr nz, .asm_11a4c7
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	call Function11a63c
 	hlcoord 4, 2
@@ -13562,7 +13590,7 @@
 	ret
 
 .asm_11a4c7
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	ld a, [wcd46]
 	ld [wcf66], a
@@ -13597,7 +13625,7 @@
 	ld a, [wcd44]
 	and a
 	jr nz, .asm_11a522
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	call Function11a63c
 	hlcoord 4, 2
@@ -13607,7 +13635,7 @@
 	ret
 
 .asm_11a522
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	ld a, [wcd45]
 	ld [wcf66], a
@@ -13636,7 +13664,7 @@
 	jr z, .asm_11a562
 	call Function11a9f0
 	jr nz, .asm_11a562
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 
 .asm_11a562
@@ -13714,7 +13742,7 @@
 	ld c, $12
 	call Function3eea
 	callba Function104061
-	call Function1ad2
+	call DrawOnMap
 	ld c, $0
 	callba Function115e18
 	ld a, $1
@@ -13987,8 +14015,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_11a909
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -14130,7 +14159,7 @@
 	callba Function106464
 	call Functiond90
 	callba Function2b5c
-	call Function1ad2
+	call DrawOnMap
 	ret
 ; 11a9f0
 
@@ -14544,7 +14573,7 @@
 	call Function11ad8a
 
 .asm_11ae2e
-	call Function1c07
+	call ExitMenu
 	callba Function104061
 	ret
 ; 11ae38
@@ -14649,8 +14678,8 @@
 	call Function11ad8a
 
 .asm_11aef7
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	callba Function104061
 	ret
 ; 11af04
@@ -14740,8 +14769,8 @@
 	ld [ScriptVar], a
 
 .asm_11afaa
-	call Function1c07
-	call Function1c07
+	call ExitMenu
+	call ExitMenu
 	callba Function104061
 	ret
 ; 11afb7
@@ -14758,8 +14787,9 @@
 	dec a
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, e
 	ld e, [hl]
 	inc hl
@@ -15229,8 +15259,9 @@
 Function11b239: ; 11b239
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -15583,8 +15614,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_11b479
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -15657,8 +15689,9 @@
 	pop de
 	ld h, d
 	ld l, e
+rept 2
 	dec hl
-	dec hl
+endr
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -15890,8 +15923,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_11b669
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -16469,7 +16503,7 @@
 
 SECTION "bank47", ROMX, BANK[$47]
 
-Function11c000:: ; 11c000
+StoreText:: ; 11c000
 	ld a, [rSVBK]
 	push af
 	ld a, $3
@@ -16520,8 +16554,9 @@
 
 .asm_11c040
 	push af
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld c, a
 	ld a, [hl]
@@ -16530,8 +16565,9 @@
 	pop af
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld c, a
 	ld a, [hl]
@@ -16920,8 +16956,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_11c2bb
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -17012,10 +17049,12 @@
 
 Function11c35f: ; 11c35f (47:435f)
 	ld hl, wcd2f
+rept 2
 	inc [hl]
-	inc [hl]
+endr
+rept 2
 	dec hl
-	dec hl
+endr
 	dec [hl]
 	push af
 	ld de, wcd2d
@@ -17026,10 +17065,12 @@
 
 Function11c373: ; 11c373 (47:4373)
 	ld hl, wcd30
+rept 2
 	inc [hl]
-	inc [hl]
+endr
+rept 2
 	dec hl
-	dec hl
+endr
 	dec [hl]
 	push af
 	ld de, wcd2d
@@ -17672,8 +17713,9 @@
 	ld a, [CreditsTimer]
 	ld c, a
 	ld b, 0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hl]
 	ld [wcd28], a
 	jr .asm_11c79f
@@ -17748,8 +17790,9 @@
 	ld a, [wcd22]
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -17759,8 +17802,9 @@
 	ld a, [wcd26]
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [wcd26]
 	ld e, a
 .asm_11c831
@@ -17927,8 +17971,9 @@
 	ld c, a
 	ld b, $0
 	ld hl, wcd36
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -17948,8 +17993,9 @@
 	ld a, [wcd22]
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -17959,12 +18005,14 @@
 	ld a, [wcd26]
 	ld e, a
 	ld d, $0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [wcd25]
 	ld e, a
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -18152,8 +18200,9 @@
 	ld hl, wcd36
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld [hl], b
 	inc hl
 	ld [hl], b
@@ -18267,8 +18316,9 @@
 .asm_11cb58
 	dec a
 	jr z, .asm_11cb5f
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_11cb58
 .asm_11cb5f
 	ld a, [hli]
@@ -18327,8 +18377,9 @@
 .asm_11cbba
 	dec a
 	jr z, .asm_11cbc1
+rept 2
 	inc hl
-	inc hl
+endr
 	jr .asm_11cbba
 .asm_11cbc1
 	ld a, [hli]
@@ -18776,8 +18827,9 @@
 	ld [hli], a
 	ld a, [de]
 	inc de
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_11cff6
 	ld c, a
 	ld a, $7a
@@ -18793,8 +18845,9 @@
 	add hl, bc
 	ld a, [de]
 	dec de
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_11d022
 	ld b, a
 .asm_11d005
@@ -18802,8 +18855,9 @@
 	ld a, $7c
 	ld [hli], a
 	ld a, [de]
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_11d015
 	ld c, a
 	ld a, $7f
@@ -18825,8 +18879,9 @@
 	ld a, $7d
 	ld [hli], a
 	ld a, [de]
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_11d031
 	ld c, a
 	ld a, $7a
@@ -18888,8 +18943,9 @@
 	ld a, [de]
 	cp $2
 	jr z, .asm_11d082
+rept 2
 	dec a
-	dec a
+endr
 .asm_11d078
 	push af
 	ld a, $7a
@@ -18915,8 +18971,9 @@
 	cp $2
 	ret z
 	push bc
+rept 2
 	dec a
-	dec a
+endr
 	ld c, a
 	ld b, a
 	ld de, $14
@@ -18952,8 +19009,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_11d0c7
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -19588,8 +19646,9 @@
 	ld hl, $0005
 	add hl, de
 	ld a, [bc]
+rept 2
 	inc bc
-	inc bc
+endr
 	push bc
 .asm_11d4cf
 	push af
@@ -21592,8 +21651,9 @@
 	call Function16cae8
 
 .asm_16c9e1
+rept 2
 	inc e
-	inc e
+endr
 	ld a, e
 	cp $8
 	jr nz, .asm_16c969
@@ -21694,8 +21754,9 @@
 	call Function16cae8
 
 .asm_16ca88
+rept 2
 	inc e
-	inc e
+endr
 	ld a, e
 	cp $8
 	jr nz, .asm_16ca28
@@ -22149,10 +22210,12 @@
 	pop bc
 	ld de, AttrMap - TileMap
 	add hl, de
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	inc c
-	inc c
+endr
 	ld a, $7
 .asm_16d630
 	push bc
@@ -22753,8 +22816,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_170249
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -22777,7 +22841,7 @@
 	ld [wcfc0], a
 	xor a
 	ld [InLinkBattle], a
-	callba Function1060a2
+	callba Mobile_HealParty
 	callba HealParty
 	call Function1702b7
 	call Function170bf7
@@ -22980,8 +23044,9 @@
 	ld a, $1
 	ld [hli], a
 	xor a
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 	jr .asm_1703ff
 
@@ -23009,8 +23074,9 @@
 	predef Functione167
 	pop de
 	pop hl
+rept 2
 	dec de
-	dec de
+endr
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -23172,8 +23238,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_17051f
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -23383,8 +23450,9 @@
 	ld [hli], a
 	dec c
 	jr nz, .asm_170653
+rept 2
 	inc hl
-	inc hl
+endr
 	dec b
 	jr nz, .asm_170651
 	ret
@@ -23421,8 +23489,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_170696
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -23522,7 +23591,7 @@
 	ret
 
 Function170737: ; 170737 (5c:4737)
-	callba Function14dbb
+	callba SaveOptionsSelection
 	ret
 
 Function17073e: ; 17073e (5c:473e)
@@ -23852,13 +23921,13 @@
 	pop af
 	dec a
 	jr nz, .asm_17096e
+rept 4
 	dec hl
-	dec hl
-	dec hl
-	dec hl
+endr
 	ld a, $50
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	pop hl
 	ld a, EGG_TICKET
 	ld [CurItem], a
@@ -23908,8 +23977,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1709e7
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -24213,8 +24283,9 @@
 	inc [hl]
 
 .asm_170c15
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [$a89b]
 	add [hl]
 	ld [hld], a
@@ -24239,8 +24310,9 @@
 	ld a, [hli]
 	ld b, a
 	ld c, [hl]
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [hld]
 	sub c
 	ld c, a
@@ -24464,8 +24536,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_171a45
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -24589,9 +24662,9 @@
 .asm_171b34
 	pop hl
 	ld bc, $14
+rept 3
 	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	pop af
 	dec a
 	jr nz, .asm_171b1b
@@ -24729,7 +24802,7 @@
 	ld hl, wcd4c
 	dec [hl]
 	ret nz
-	call Function1c07
+	call ExitMenu
 	call WhiteBGMap
 	jr asm_171c60
 
@@ -24820,8 +24893,9 @@
 Function171cf0: ; 171cf0 (5c:5cf0)
 	xor a
 	hlcoord 4, 15
+rept 2
 	ld [hli], a
-	ld [hli], a
+endr
 	ld a, [wcd4b]
 	xor $1
 	ld [wcd4b], a
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -442,12 +442,12 @@
 .asm_17d23c
 	call LoadMenuDataHeader
 	call Function17d246
-	call Function1c17
+	call WriteBackup
 	ret
 ; 17d246
 
 Function17d246: ; 17d246
-	call Function1d81
+	call InterpretMenu2
 	jr c, .asm_17d264
 	ld a, [ScriptVar]
 	cp $5
@@ -723,8 +723,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_17d483
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -905,14 +906,16 @@
 	ld a, [wcd42]
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, l
 	ld [wcd4b], a
 	ld a, h
 	ld [wcd4c], a
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, l
 	ld [wcd4d], a
 	ld a, h
@@ -938,8 +941,9 @@
 .asm_17d5ce
 	srl a
 	jr c, .asm_17d5d6
+rept 2
 	inc c
-	inc c
+endr
 	jr .asm_17d5ce
 
 .asm_17d5d6
@@ -1026,10 +1030,12 @@
 	ld [wcd4c], a
 	pop de
 	pop hl
+rept 2
 	inc b
-	inc b
+endr
+rept 2
 	dec c
-	dec c
+endr
 	jr z, .asm_17d684
 	push bc
 	push de
@@ -1075,15 +1081,17 @@
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $b1d3
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld [wcd47], a
 	ld a, [hl]
 	ld [BGMapPalBuffer], a
 	ld hl, $b1b3
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld c, a
 	ld a, [hl]
@@ -1099,8 +1107,9 @@
 	ld de, wcd60
 	ld bc, $0004
 	call CopyBytes
+rept 2
 	inc hl
-	inc hl
+endr
 	ld de, wcd64
 	ld bc, $0004
 	call CopyBytes
@@ -1136,8 +1145,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_17d72a
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1909,13 +1919,13 @@
 	ld [wc70f], a
 	ld hl, wc708
 	call LoadMenuDataHeader
-	call Function1d81
+	call InterpretMenu2
 	jr nc, .asm_17dc6e
 	ld a, $2
 	ld [wcfa9], a
 
 .asm_17dc6e
-	call Function1c17
+	call WriteBackup
 	pop af
 	ld [rSVBK], a
 	ld a, [wcfa9]
@@ -1975,7 +1985,7 @@
 	add hl, de
 	dec c
 	jr nz, .asm_17dcbb
-	call Function4b6
+	call FadeToWhite
 	ld a, $4
 	ld [rSVBK], a
 	ret
@@ -1991,8 +2001,9 @@
 	ld a, [wcd2e]
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld c, a
 	ld a, [hl]
@@ -2407,8 +2418,9 @@
 	jr .asm_17df7b
 
 .asm_17df79
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_17df7b
 	bit 4, b
@@ -2461,8 +2473,9 @@
 	jr .asm_17dfd2
 
 .asm_17dfd0
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_17dfd2
 	bit 5, b
@@ -2587,8 +2600,9 @@
 	jr .asm_17e0a4
 
 .asm_17e0a2
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_17e0a4
 	bit 4, b
@@ -2604,8 +2618,9 @@
 	jr .asm_17e0b6
 
 .asm_17e0b4
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_17e0b6
 	bit 5, b
@@ -2627,8 +2642,9 @@
 	call CloseSRAM
 	pop hl
 	pop bc
+rept 2
 	inc hl
-	inc hl
+endr
 	jr asm_17e0ee
 
 .asm_17e0e1
@@ -2673,8 +2689,9 @@
 	call ReceiveItem
 	pop hl
 	jr c, .asm_17e127
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_17e127
 	ld a, [hli]
@@ -2701,11 +2718,12 @@
 	ld a, [hli]
 	ld [ScriptVar], a
 	push hl
-	callba Function4a843
+	callba MobileCheckOwnMonAnywhere
 	pop hl
 	jr c, .asm_17e159
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_17e159
 	ld a, [hli]
@@ -2741,8 +2759,9 @@
 	call CheckItem
 	pop hl
 	jr c, .asm_17e195
+rept 2
 	inc hl
-	inc hl
+endr
 
 .asm_17e195
 	ld a, [hli]
@@ -3207,8 +3226,9 @@
 	ld [wcd2e], a
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	push hl
 	ld hl, TileMap
 	ld bc, $0014
@@ -3433,8 +3453,9 @@
 	ld l, a
 	ld a, [wcd4e]
 	ld h, a
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3499,8 +3520,9 @@
 	ld [hli], a
 	ld a, [de]
 	inc de
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_17e63f
 	ld c, a
 	ld a, [wcd53]
@@ -3519,8 +3541,9 @@
 	add hl, bc
 	ld a, [de]
 	dec de
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_17e674
 	ld b, a
 .asm_17e651
@@ -3529,8 +3552,9 @@
 	add $3
 	ld [hli], a
 	ld a, [de]
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_17e664
 	ld c, a
 	ld a, $7f
@@ -3556,8 +3580,9 @@
 	add $5
 	ld [hli], a
 	ld a, [de]
+rept 2
 	dec a
-	dec a
+endr
 	jr z, .asm_17e689
 	ld c, a
 	ld a, [wcd53]
@@ -3583,8 +3608,9 @@
 	inc de
 	push af
 	ld a, [de]
+rept 2
 	inc de
-	inc de
+endr
 	and a
 .asm_17e69f
 	jr z, .asm_17e6a5
@@ -3736,8 +3762,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_17f061
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -3774,8 +3801,9 @@
 	ld de, $0004
 	add hl, de
 	ld a, [hli]
+rept 2
 	inc hl
-	inc hl
+endr
 	ld e, l
 	ld d, h
 	ld l, c
@@ -3918,8 +3946,9 @@
 	pop hl
 	call Function17f524
 	jr c, .asm_17f167
+rept 2
 	inc hl
-	inc hl
+endr
 	ld e, l
 	ld d, h
 	ld a, [de]
@@ -4107,8 +4136,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, .Genders
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -4370,8 +4400,9 @@
 	ld a, [de]
 	ld c, a
 	ld b, $0
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -4386,11 +4417,12 @@
 	ld e, a
 	ld d, $0
 	pop hl
+rept 2
 	add hl, de
-	add hl, de
+endr
+rept 3
 	inc hl
-	inc hl
-	inc hl
+endr
 	ld e, l
 	ld d, h
 	ld l, c
@@ -4451,8 +4483,9 @@
 	ld de, $0005
 	add hl, de
 	ld a, [hli]
+rept 2
 	inc hl
-	inc hl
+endr
 	ld e, l
 	ld d, h
 	ld l, c
@@ -4695,8 +4728,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Table17f5bd
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -4770,8 +4804,9 @@
 	ld e, a
 	ld d, $0
 	ld hl, Table_17f706
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [wc301]
 	ld e, a
 	ld a, [wc302]
@@ -4809,8 +4844,9 @@
 	jr .asm_17f67d
 
 .asm_17f674
+rept 2
 	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .asm_17f65d
 
@@ -4828,8 +4864,9 @@
 	ld e, a
 	ld d, 0
 	ld hl, Table_17f699
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
--- a/misc/unused_title.asm
+++ b/misc/unused_title.asm
@@ -10,9 +10,9 @@
 	ld [hBGMapMode], a
 
 	ld hl, wcf63
+rept 3
 	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+endr
 	ld [hl], a
 
 	ld hl, UnusedTitleBG_GFX
--- a/predef/cgb.asm
+++ b/predef/cgb.asm
@@ -93,8 +93,9 @@
 	ld a, [EnemyHPPal]
 	ld l, a
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld bc, Palettes_a8be
 	add hl, bc
 	call Function9643
@@ -101,8 +102,9 @@
 	ld a, [PlayerHPPal]
 	ld l, a
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld bc, Palettes_a8be
 	add hl, bc
 	call Function9643
@@ -213,8 +215,9 @@
 	ld a, [wcda1]
 	ld l, a
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld bc, Palettes_a8be
 	add hl, bc
 	call Function9643
@@ -488,8 +491,9 @@
 Function9122: ; 9122
 	ld b, 0
 	ld hl, Jumptable_912d
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -797,8 +801,9 @@
 	ld a, [PlayerHPPal]
 	ld l, a
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld bc, Palettes_a8be
 	add hl, bc
 	call Function9643
--- a/predef/sgb.asm
+++ b/predef/sgb.asm
@@ -74,8 +74,9 @@
 	ld a, [PlayerHPPal]
 	ld l, a
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Palettes_a8be
 	add hl, de
 	ld a, [hli]
@@ -89,8 +90,9 @@
 	ld a, [EnemyHPPal]
 	ld l, a
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Palettes_a8be
 	add hl, de
 	ld a, [hli]
@@ -137,8 +139,9 @@
 	call CopyBytes
 	ld hl, wcda9 + 1
 	ld [hl], $10
+rept 2
 	inc hl
-	inc hl
+endr
 	ld a, [PlayerHPPal]
 	add $2f
 	ld [hl], a
@@ -161,8 +164,9 @@
 	ld a, [wcda1]
 	ld l, a
 	ld h, $0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	ld de, Palettes_a8be
 	add hl, de
 	ld a, [hli]
@@ -303,10 +307,9 @@
 Function8867: ; 8867
 	ld b, 0
 	ld hl, Unknown_8878
+rept 4
 	add hl, bc
-	add hl, bc
-	add hl, bc
-	add hl, bc
+endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -461,9 +464,9 @@
 	ld a, [CurPartySpecies]
 	ld l, a
 	ld h, 0
+rept 3
 	add hl, hl
-	add hl, hl
-	add hl, hl
+endr
 	ld de, PokemonPalettes
 	add hl, de
 	ld a, [wcf65]
@@ -548,7 +551,7 @@
 	ret
 
 .asm_8a16
-	ld a, [wd19a]
+	ld a, [wPermission]
 	cp $2
 	jr z, .asm_8a39
 	cp $4
--- a/rst.asm
+++ b/rst.asm
@@ -22,8 +22,9 @@
 	push de
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
--- a/text/common.asm
+++ b/text/common.asm
@@ -230,7 +230,7 @@
 	para "#MON MART"
 	done
 
-UnknownText_0x1b05bf: ; 0x1b05bf
+ContestResults_ReadyToJudgeText: ; 0x1b05bf
 	text "We will now judge"
 	line "the #MON you've"
 	cont "caught."
@@ -246,7 +246,7 @@
 	done
 ; 0x1b0621
 
-UnknownText_0x1b0621: ; 0x1b0621
+ContestResults_PlayerWonAPrizeText: ; 0x1b0621
 	text "<PLAYER>, the No.@"
 	text_from_ram StringBuffer3
 	text ""
@@ -257,7 +257,7 @@
 	done
 ; 0x1b0648
 
-UnknownText_0x1b0648: ; 0x1b0648
+ReceivedItemText: ; 0x1b0648
 	text "<PLAYER> received"
 	line "@"
 	text_from_ram StringBuffer4
@@ -265,13 +265,13 @@
 	done
 ; 0x1b065b
 
-UnknownText_0x1b065b: ; 0x1b065b
+ContestResults_JoinUsNextTimeText: ; 0x1b065b
 	text "Please join us for"
 	line "the next Contest!"
 	done
 ; 0x1b0681
 
-UnknownText_0x1b0681: ; 0x1b0681
+ContestResults_ConsolationPrizeText: ; 0x1b0681
 	text "Everyone else gets"
 	line "a BERRY as a con-"
 	cont "solation prize!"
@@ -278,13 +278,13 @@
 	done
 ; 0x1b06b7
 
-UnknownText_0x1b06b7: ; 0x1b06b7
+ContestResults_DidNotWinText: ; 0x1b06b7
 	text "We hope you do"
 	line "better next time."
 	done
 ; 0x1b06d9
 
-UnknownText_0x1b06d9: ; 0x1b06d9
+ContestResults_ReturnPartyText: ; 0x1b06d9
 	text "We'll return the"
 	line "#MON we kept"
 
@@ -293,7 +293,7 @@
 	done
 ; 0x1b070d
 
-UnknownText_0x1b070d: ; 0x1b070d
+ContestResults_PartyFullText: ; 0x1b070d
 	text "Your party's full,"
 	line "so the #MON was"
 
@@ -302,7 +302,7 @@
 	done
 ; 0x1b074e
 
-UnknownText_0x1b074e: ; 0x1b074e
+GymStatue_CityGymText: ; 0x1b074e
 	text_from_ram StringBuffer3
 	text ""
 	line "#MON GYM"
@@ -309,7 +309,7 @@
 	done
 ; 0x1b075c
 
-UnknownText_0x1b075c: ; 0x1b075c
+GymStatue_WinningTrainersText: ; 0x1b075c
 	text "LEADER: @"
 	text_from_ram StringBuffer4
 	text ""
@@ -318,13 +318,13 @@
 	done
 ; 0x1b077f
 
-UnknownText_0x1b077f: ; 0x1b077f
+CoinVendor_WelcomeText: ; 0x1b077f
 	text "Welcome to the"
 	line "GAME CORNER."
 	done
 ; 0x1b079c
 
-UnknownText_0x1b079c: ; 0x1b079c
+CoinVendor_NoCoinCaseText: ; 0x1b079c
 	text "Do you need game"
 	line "coins?"
 
@@ -334,7 +334,7 @@
 	done
 ; 0x1b07e3
 
-UnknownText_0x1b07e3: ; 0x1b07e3
+CoinVendor_IntroText: ; 0x1b07e3
 	text "Do you need some"
 	line "game coins?"
 
@@ -344,31 +344,31 @@
 	done
 ; 0x1b0830
 
-UnknownText_0x1b0830: ; 0x1b0830
+CoinVendor_Buy50CoinsText: ; 0x1b0830
 	text "Thank you!"
 	line "Here are 50 coins."
 	done
 ; 0x1b084f
 
-UnknownText_0x1b084f: ; 0x1b084f
+CoinVendor_Buy500CoinsText: ; 0x1b084f
 	text "Thank you! Here"
 	line "are 500 coins."
 	done
 ; 0x1b086f
 
-UnknownText_0x1b086f: ; 0x1b086f
+CoinVendor_NotEnoughMoneyText: ; 0x1b086f
 	text "You don't have"
 	line "enough money."
 	done
 ; 0x1b088c
 
-UnknownText_0x1b088c: ; 0x1b088c
+CoinVendor_CoinCaseFullText: ; 0x1b088c
 	text "Whoops! Your COIN"
 	line "CASE is full."
 	done
 ; 0x1b08ad
 
-UnknownText_0x1b08ad: ; 0x1b08ad
+CoinVendor_CancelText: ; 0x1b08ad
 	text "No coins for you?"
 	line "Come again!"
 	done
--- a/text/common_3.asm
+++ b/text/common_3.asm
@@ -1139,7 +1139,7 @@
 	prompt
 ; 1c10fa
 
-UnknownText_0x1c10fa: ; 1c10fa
+ContestJudging_FirstPlaceText: ; 1c10fa
 	text "This Bug-Catching"
 	line "Contest winner is@"
 	interpret_data
@@ -1154,7 +1154,7 @@
 	db "@"
 ; 1c113f
 
-UnknownText_0x1c113f: ; 1c113f
+ContestJudging_FirstPlaceScoreText: ; 1c113f
 	text ""
 	para "The winning score"
 	line "was @"
@@ -1163,7 +1163,7 @@
 	prompt
 ; 1c1166
 
-UnknownText_0x1c1166: ; 1c1166
+ContestJudging_SecondPlaceText: ; 1c1166
 	text "Placing second was"
 	line "@"
 	text_from_ram wd016
@@ -1175,7 +1175,7 @@
 	db "@"
 ; 1c1196
 
-UnknownText_0x1c1196: ; 1c1196
+ContestJudging_SecondPlaceScoreText: ; 1c1196
 	text ""
 	para "The score was"
 	line "@"
@@ -1184,7 +1184,7 @@
 	prompt
 ; 1c11b5
 
-UnknownText_0x1c11b5: ; 1c11b5
+ContestJudging_ThirdPlaceText: ; 1c11b5
 	text "Placing third was"
 	line "@"
 	text_from_ram wd016
@@ -1196,7 +1196,7 @@
 	db "@"
 ; 1c11e4
 
-UnknownText_0x1c11e4: ; 1c11e4
+ContestJudging_ThirdPlaceScoreText: ; 1c11e4
 	text ""
 	para "The score was"
 	line "@"
--- a/text/common_4.asm
+++ b/text/common_4.asm
@@ -542,7 +542,7 @@
 	text_from_ram StringBuffer2
 	text "(S)"
 	line "will be ¥@"
-	deciram $ffc3, $36
+	deciram hMoneyTemp, $36
 	text "."
 	done
 ; 0x1c4c28
@@ -574,7 +574,7 @@
 	text_from_ram StringBuffer2
 	text "(S)"
 	line "will be ¥@"
-	deciram $ffc3, $36
+	deciram hMoneyTemp, $36
 	text "."
 	done
 ; 0x1c4cce
@@ -619,7 +619,7 @@
 	text_from_ram StringBuffer2
 	text " costs"
 	line "¥@"
-	deciram $ffc3, $36
+	deciram hMoneyTemp, $36
 	text ". Want it?"
 	done
 ; 0x1c4dcd
@@ -671,7 +671,7 @@
 	text_from_ram StringBuffer2
 	text "(S)"
 	line "will cost ¥@"
-	deciram $ffc3, $36
+	deciram hMoneyTemp, $36
 	text "."
 	done
 ; 0x1c4eab
@@ -713,7 +713,7 @@
 UnknownText_0x1c4f3e: ; 0x1c4f3e
 	text "I can pay you"
 	line "¥@"
-	deciram $ffc3, $36
+	deciram hMoneyTemp, $36
 	text "."
 
 	para "Is that OK?"
@@ -763,7 +763,7 @@
 
 UnknownText_0x1c502e: ; 0x1c502e
 	text "Got ¥@"
-	deciram $ffc3, $36
+	deciram hMoneyTemp, $36
 	text " for"
 	line "@"
 	text_from_ram StringBuffer2
--- a/text/types.asm
+++ b/text/types.asm
@@ -85,8 +85,9 @@
 	ld hl, TypeNames
 	ld e, a
 	ld d, 0
+rept 2
 	add hl, de
-	add hl, de
+endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
--- a/tilesets/animations.asm
+++ b/tilesets/animations.asm
@@ -16,8 +16,9 @@
 	ld [hTileAnimFrame], a
 
 	ld h, 0
+rept 2
 	add hl, hl
-	add hl, hl
+endr
 	add hl, de
 
 ; 2-byte parameter
@@ -488,9 +489,9 @@
 	and 3 << 1
 	
 ; 2 x 8 = 16 bytes per tile
+rept 3
 	add a
-	add a
-	add a
+endr
 	
 	add WaterTileFrames % $100
 	ld l, a
@@ -527,9 +528,9 @@
 .asm_fc46c
 	ld a, [TileAnimationTimer]
 	call GetForestTreeFrame
+rept 3
 	add a
-	add a
-	add a
+endr
 	add ForestTreeLeftFrames % $100
 	ld l, a
 	ld a, 0
@@ -569,9 +570,9 @@
 .asm_fc4d4
 	ld a, [TileAnimationTimer]
 	call GetForestTreeFrame
+rept 3
 	add a
-	add a
-	add a
+endr
 	add ForestTreeLeftFrames % $100
 	ld l, a
 	ld a, 0
@@ -605,9 +606,9 @@
 	ld a, [TileAnimationTimer]
 	call GetForestTreeFrame
 	xor 2
+rept 3
 	add a
-	add a
-	add a
+endr
 	add ForestTreeLeftFrames % $100
 	ld l, a
 	ld a, 0
@@ -637,9 +638,9 @@
 	ld a, [TileAnimationTimer]
 	call GetForestTreeFrame
 	xor 2
+rept 3
 	add a
-	add a
-	add a
+endr
 	add ForestTreeLeftFrames % $100
 	ld l, a
 	ld a, 0
@@ -729,8 +730,9 @@
 	ld a, [TileAnimationTimer]
 	and 6
 	srl a
+rept 2
 	inc a
-	inc a
+endr
 	and 3
 	swap a
 	ld e, a
@@ -750,9 +752,9 @@
 	ld c, l
 	ld a, [TileAnimationTimer]
 	and 6
+rept 3
 	add a
-	add a
-	add a
+endr
 	ld e, a
 	ld d, 0
 	ld hl, SafariFountainFrames
--- a/trainers/dvs.asm
+++ b/trainers/dvs.asm
@@ -8,8 +8,9 @@
 	ld b, 0
 
 	ld hl, TrainerClassDVs
+rept 2
 	add hl, bc
-	add hl, bc
+endr
 
 	ld a, [hli]
 	ld b, a
--- a/wram.asm
+++ b/wram.asm
@@ -1307,6 +1307,7 @@
 	ds 1
 
 	ds 2
+OptionsEnd::
 wcfd4:: ds 1
 wcfd5:: ds 1
 wcfd6:: ds 1
@@ -1320,10 +1321,15 @@
 wd000:: ds 1
 wd001:: ds 1
 wd002::
+PhoneScriptBank::
 DefaultFlypoint:: ; d002
 	ds 1
-wd003:: ds 1
-wd004:: ds 1
+wd003::
+PhoneCallerLo::
+	ds 1
+wd004::
+PhoneCallerHi::
+	ds 1
 wd005::
 StartFlypoint:: ; d005
 	ds 1
@@ -1376,6 +1382,7 @@
 	ds 1
 wd03f::
 CurFruit:: ; d03f
+MartPointerBank::
 	ds 1
 
 wd040::
@@ -1397,9 +1404,11 @@
 WalkingY:: ; d046
 	ds 1
 WalkingTile:: ; d047
+wWinTextPointer::
 	ds 1
 
-wd048:: ds 3
+wd048:: ds 1
+wLossTextPointer:: ds 2
 wd04b:: ds 2
 wd04d:: ds 1
 wd04e:: ds 2
@@ -1541,7 +1550,7 @@
 wd196:: ds 1
 wd197:: ds 2
 wd199:: ds 1
-wd19a:: ds 3
+wPermission:: ds 3
 
 ; width/height are in blocks (2x2 walkable tiles, 4x4 graphics tiles)
 MapHeader:: ; d19d
@@ -1952,7 +1961,6 @@
 wd4d0:: ds 1
 wd4d1:: ds 5
 
-
 ObjectStructs::
 
 PlayerStruct:: ; d4d6
@@ -2002,29 +2010,29 @@
 	ds 15
 
 ObjectStruct1:: ; d4fe
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct2:: ; d526
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct3:: ; d54e
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct4:: ; d576
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct5:: ; d59e
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct6:: ; d5c6
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct7:: ; d5ee
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct8:: ; d616
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct9:: ; d63e
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct10:: ; d666
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct11:: ; d68e
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ObjectStruct12:: ; d6b6
-	ds 40
+	ds OBJECT_STRUCT_LENGTH
 ; d6de
 
 wd6de::
@@ -2276,16 +2284,18 @@
 ; bit 2: downhill
 	ds 1
 
-	ds 3
+	ds 1
+wCurrentMapTriggerPointer:: ; dbf7
+	ds 2
 
 wdbf9:: ds 2
 wdbfb:: ds 1
 wdbfc:: ds 1
 wdbfd:: ds 1
-wdbfe:: ds 1
+wCurrentMapXYTriggerCount:: ds 1
 wdbff:: ds 1
 wdc00:: ds 1
-wdc01:: ds 1
+wCurrentMapSignpostCount:: ds 1
 wdc02:: ds 1
 wdc03:: ds 1
 wdc04:: ds 1
@@ -2325,9 +2335,9 @@
 wdc1a:: ds 1
 wdc1b:: ds 1
 wdc1c:: ds 2
-wdc1e:: ds 1
-wdc1f:: ds 1
-wdc20:: ds 1
+DailyFlags:: ds 1
+WeeklyFlags:: ds 1
+SwarmFlags:: ds 1
 wdc21:: ds 1
 wdc22:: ds 1
 wdc23:: ds 1
@@ -2340,7 +2350,8 @@
 	ds 5
 
 wdc2d:: ds 4
-wdc31:: ds 4
+wSpecialPhoneCallID:: ds 2
+wdc33:: ds 2
 wdc35:: ds 4
 wdc39:: ds 1
 wdc3a:: ds 1
@@ -2420,7 +2431,7 @@
 	ds PARTY_LENGTH ; species of each Pokémon in party
 PartyEnd:: ; dcde
 	ds 1 ; legacy functions don't check PartyCount
-		 
+		
 PartyMons::
 PartyMon1:: party_struct PartyMon1 ; dcdf
 PartyMon2:: party_struct PartyMon2 ; dd0f
--