shithub: pokered

Download patch

ref: a02c3279102dca60deee70141c31af9fcfa1ff75
parent: a9528fc870b585b6b4fac45e115061d8af979681
author: U-Fish-PC\Daniel <corrnondacqb@yahoo.com>
date: Wed May 21 11:49:59 EDT 2014

Use more constants in object data

--- a/data/mapObjects/agatha.asm
+++ b/data/mapObjects/agatha.asm
@@ -10,7 +10,7 @@
 	db $0 ; signs
 
 	db $1 ; people
-	db SPRITE_AGATHA, $2 + 4, $5 + 4, $ff, $d0, $41, AGATHA + $C8, $1 ; trainer
+	db SPRITE_AGATHA, $2 + 4, $5 + 4, $ff, $d0, TRAINER | $1, AGATHA + $C8, $1
 
 	; warp-to
 	EVENT_DISP AGATHAS_ROOM_WIDTH, $b, $4 ; BRUNOS_ROOM
--- a/data/mapObjects/blueshouse.asm
+++ b/data/mapObjects/blueshouse.asm
@@ -1,17 +1,17 @@
 BluesHouseObject: ; 19bce (6:5bce)
 	db $0A ; border block
 
-	db 2 ; warps
-	db 7,2,1,$FF
-	db 7,3,1,$FF
+	db $2 ; warps
+	db $7, $2, $1, $FF
+	db $7, $3, $1, $FF
 
-	db 0 ; signs
+	db $0 ; signs
 
-	db 3 ; people
-	db $11,4+3,4+2,$FF,$D3,1 ; Daisy, sitting by map
-	db $11,4+4,4+6,$FE,1,ITEM|2,0 ; map on table
-	db $41,4+3,4+3,$FF,$FF,ITEM|3,0 ; Daisy, walking around
+	db $3 ; people
+	db SPRITE_DAISY, $3 + 4, $2 + 4, $FF, $D3, $1 ; Daisy, sitting by map
+	db SPRITE_DAISY, $4 + 4, $6 + 4, $FE, $1, ITEM | $2, $0 ; Daisy, walking around
+	db SPRITE_BOOK_MAP_DEX, $3 + 4, $3 + 4, $FF, $FF, ITEM | $3, $0 ; map on table
 
 	; warp-to
-	EVENT_DISP BLUES_HOUSE_WIDTH, 7, 2
-	EVENT_DISP BLUES_HOUSE_WIDTH, 7, 3
+	EVENT_DISP BLUES_HOUSE_WIDTH, $7, $2
+	EVENT_DISP BLUES_HOUSE_WIDTH, $7, $3
--- a/data/mapObjects/bruno.asm
+++ b/data/mapObjects/bruno.asm
@@ -10,7 +10,7 @@
 	db $0 ; signs
 
 	db $1 ; people
-	db SPRITE_BRUNO, $2 + 4, $5 + 4, $ff, $d0, $41, BRUNO + $C8, $1 ; trainer
+	db SPRITE_BRUNO, $2 + 4, $5 + 4, $ff, $d0, TRAINER | $1, BRUNO + $C8, $1
 
 	; warp-to
 	EVENT_DISP BRUNOS_ROOM_WIDTH, $b, $4 ; LORELEIS_ROOM
--- a/data/mapObjects/celadongamecorner.asm
+++ b/data/mapObjects/celadongamecorner.asm
@@ -20,7 +20,7 @@
 	db SPRITE_GAMBLER, $f + 4, $b + 4, $ff, $d3, $8 ; person
 	db SPRITE_MART_GUY, $b + 4, $e + 4, $ff, $d2, $9 ; person
 	db SPRITE_GENTLEMAN, $d + 4, $11 + 4, $ff, $d3, $a ; person
-	db SPRITE_ROCKET, $5 + 4, $9 + 4, $ff, $d1, $4b, ROCKET + $C8, $7 ; trainer
+	db SPRITE_ROCKET, $5 + 4, $9 + 4, $ff, $d1, TRAINER | $b, ROCKET + $C8, $7
 
 	; warp-to
 	EVENT_DISP GAME_CORNER_WIDTH, $11, $f
--- a/data/mapObjects/celadongym.asm
+++ b/data/mapObjects/celadongym.asm
@@ -8,14 +8,14 @@
 	db $0 ; signs
 
 	db $8 ; people
-	db SPRITE_ERIKA, $3 + 4, $4 + 4, $ff, $d0, $41, ERIKA + $C8, $1 ; trainer
-	db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d3, $42, LASS + $C8, $11 ; trainer
-	db SPRITE_FOULARD_WOMAN, $a + 4, $7 + 4, $ff, $d2, $43, BEAUTY + $C8, $1 ; trainer
-	db SPRITE_LASS, $5 + 4, $9 + 4, $ff, $d0, $44, JR__TRAINER_F + $C8, $b ; trainer
-	db SPRITE_FOULARD_WOMAN, $5 + 4, $1 + 4, $ff, $d0, $45, BEAUTY + $C8, $2 ; trainer
-	db SPRITE_LASS, $3 + 4, $6 + 4, $ff, $d0, $46, LASS + $C8, $12 ; trainer
-	db SPRITE_FOULARD_WOMAN, $3 + 4, $3 + 4, $ff, $d0, $47, BEAUTY + $C8, $3 ; trainer
-	db SPRITE_LASS, $3 + 4, $5 + 4, $ff, $d0, $48, COOLTRAINER_F + $C8, $1 ; trainer
+	db SPRITE_ERIKA, $3 + 4, $4 + 4, $ff, $d0, TRAINER | $1, ERIKA + $C8, $1
+	db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d3, TRAINER | $2, LASS + $C8, $11
+	db SPRITE_FOULARD_WOMAN, $a + 4, $7 + 4, $ff, $d2, TRAINER | $3, BEAUTY + $C8, $1
+	db SPRITE_LASS, $5 + 4, $9 + 4, $ff, $d0, TRAINER | $4, JR__TRAINER_F + $C8, $b
+	db SPRITE_FOULARD_WOMAN, $5 + 4, $1 + 4, $ff, $d0, TRAINER | $5, BEAUTY + $C8, $2
+	db SPRITE_LASS, $3 + 4, $6 + 4, $ff, $d0, TRAINER | $6, LASS + $C8, $12
+	db SPRITE_FOULARD_WOMAN, $3 + 4, $3 + 4, $ff, $d0, TRAINER | $7, BEAUTY + $C8, $3
+	db SPRITE_LASS, $3 + 4, $5 + 4, $ff, $d0, TRAINER | $8, COOLTRAINER_F + $C8, $1
 
 	; warp-to
 	EVENT_DISP CELADON_GYM_WIDTH, $11, $4
--- a/data/mapObjects/ceruleancity.asm
+++ b/data/mapObjects/ceruleancity.asm
@@ -23,7 +23,7 @@
 
 	db $b ; people
 	db SPRITE_BLUE, $2 + 4, $14 + 4, $ff, $d0, $1 ; person
-	db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, $42, ROCKET + $C8, $5 ; trainer
+	db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, TRAINER | $2, ROCKET + $C8, $5
 	db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $1f + 4, $ff, $d0, $3 ; person
 	db SPRITE_BLACK_HAIR_BOY_2, $12 + 4, $f + 4, $fe, $1, $4 ; person
 	db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $9 + 4, $fe, $2, $5 ; person
--- a/data/mapObjects/ceruleangym.asm
+++ b/data/mapObjects/ceruleangym.asm
@@ -8,9 +8,9 @@
 	db $0 ; signs
 
 	db $4 ; people
-	db SPRITE_BRUNETTE_GIRL, $2 + 4, $4 + 4, $ff, $d0, $41, MISTY + $C8, $1 ; trainer
-	db SPRITE_LASS, $3 + 4, $2 + 4, $ff, $d3, $42, JR__TRAINER_F + $C8, $1 ; trainer
-	db SPRITE_SWIMMER, $7 + 4, $8 + 4, $ff, $d2, $43, SWIMMER + $C8, $1 ; trainer
+	db SPRITE_BRUNETTE_GIRL, $2 + 4, $4 + 4, $ff, $d0, TRAINER | $1, MISTY + $C8, $1
+	db SPRITE_LASS, $3 + 4, $2 + 4, $ff, $d3, TRAINER | $2, JR__TRAINER_F + $C8, $1
+	db SPRITE_SWIMMER, $7 + 4, $8 + 4, $ff, $d2, TRAINER | $3, SWIMMER + $C8, $1
 	db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $4 ; person
 
 	; warp-to
--- a/data/mapObjects/cinnabargym.asm
+++ b/data/mapObjects/cinnabargym.asm
@@ -8,14 +8,14 @@
 	db $0 ; signs
 
 	db $9 ; people
-	db SPRITE_FAT_BALD_GUY, $3 + 4, $3 + 4, $ff, $d0, $41, BLAINE + $C8, $1 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $11 + 4, $ff, $d0, $42, SUPER_NERD + $C8, $9 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $11 + 4, $ff, $d0, $43, BURGLAR + $C8, $4 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $b + 4, $ff, $d0, $44, SUPER_NERD + $C8, $a ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $b + 4, $ff, $d0, $45, BURGLAR + $C8, $5 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $b + 4, $ff, $d0, $46, SUPER_NERD + $C8, $b ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $3 + 4, $ff, $d0, $47, BURGLAR + $C8, $6 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d0, $48, SUPER_NERD + $C8, $c ; trainer
+	db SPRITE_FAT_BALD_GUY, $3 + 4, $3 + 4, $ff, $d0, TRAINER | $1, BLAINE + $C8, $1
+	db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $11 + 4, $ff, $d0, TRAINER | $2, SUPER_NERD + $C8, $9
+	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $11 + 4, $ff, $d0, TRAINER | $3, BURGLAR + $C8, $4
+	db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $b + 4, $ff, $d0, TRAINER | $4, SUPER_NERD + $C8, $a
+	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $b + 4, $ff, $d0, TRAINER | $5, BURGLAR + $C8, $5
+	db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $b + 4, $ff, $d0, TRAINER | $6, SUPER_NERD + $C8, $b
+	db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $3 + 4, $ff, $d0, TRAINER | $7, BURGLAR + $C8, $6
+	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d0, TRAINER | $8, SUPER_NERD + $C8, $c
 	db SPRITE_GYM_HELPER, $d + 4, $10 + 4, $ff, $d0, $9 ; person
 
 	; warp-to
--- a/data/mapObjects/fightingdojo.asm
+++ b/data/mapObjects/fightingdojo.asm
@@ -8,11 +8,11 @@
 	db $0 ; signs
 
 	db $7 ; people
-	db SPRITE_HIKER, $3 + 4, $5 + 4, $ff, $d0, $41, BLACKBELT + $C8, $1 ; trainer
-	db SPRITE_HIKER, $4 + 4, $3 + 4, $ff, $d3, $42, BLACKBELT + $C8, $2 ; trainer
-	db SPRITE_HIKER, $6 + 4, $3 + 4, $ff, $d3, $43, BLACKBELT + $C8, $3 ; trainer
-	db SPRITE_HIKER, $5 + 4, $5 + 4, $ff, $d2, $44, BLACKBELT + $C8, $4 ; trainer
-	db SPRITE_HIKER, $7 + 4, $5 + 4, $ff, $d2, $45, BLACKBELT + $C8, $5 ; trainer
+	db SPRITE_HIKER, $3 + 4, $5 + 4, $ff, $d0, TRAINER | $1, BLACKBELT + $C8, $1
+	db SPRITE_HIKER, $4 + 4, $3 + 4, $ff, $d3, TRAINER | $2, BLACKBELT + $C8, $2
+	db SPRITE_HIKER, $6 + 4, $3 + 4, $ff, $d3, TRAINER | $3, BLACKBELT + $C8, $3
+	db SPRITE_HIKER, $5 + 4, $5 + 4, $ff, $d2, TRAINER | $4, BLACKBELT + $C8, $4
+	db SPRITE_HIKER, $7 + 4, $5 + 4, $ff, $d2, TRAINER | $5, BLACKBELT + $C8, $5
 	db SPRITE_BALL, $1 + 4, $4 + 4, $ff, $ff, $6 ; person
 	db SPRITE_BALL, $1 + 4, $5 + 4, $ff, $ff, $7 ; person
 
--- a/data/mapObjects/fuchsiagym.asm
+++ b/data/mapObjects/fuchsiagym.asm
@@ -8,13 +8,13 @@
 	db $0 ; signs
 
 	db $8 ; people
-	db SPRITE_BLACKBELT, $a + 4, $4 + 4, $ff, $d0, $41, KOGA + $C8, $1 ; trainer
-	db SPRITE_ROCKER, $d + 4, $8 + 4, $ff, $d0, $42, JUGGLER + $C8, $7 ; trainer
-	db SPRITE_ROCKER, $8 + 4, $7 + 4, $ff, $d3, $43, JUGGLER + $C8, $3 ; trainer
-	db SPRITE_ROCKER, $c + 4, $1 + 4, $ff, $d0, $44, JUGGLER + $C8, $8 ; trainer
-	db SPRITE_ROCKER, $5 + 4, $3 + 4, $ff, $d1, $45, TAMER + $C8, $1 ; trainer
-	db SPRITE_ROCKER, $2 + 4, $8 + 4, $ff, $d0, $46, TAMER + $C8, $2 ; trainer
-	db SPRITE_ROCKER, $7 + 4, $2 + 4, $ff, $d2, $47, JUGGLER + $C8, $4 ; trainer
+	db SPRITE_BLACKBELT, $a + 4, $4 + 4, $ff, $d0, TRAINER | $1, KOGA + $C8, $1
+	db SPRITE_ROCKER, $d + 4, $8 + 4, $ff, $d0, TRAINER | $2, JUGGLER + $C8, $7
+	db SPRITE_ROCKER, $8 + 4, $7 + 4, $ff, $d3, TRAINER | $3, JUGGLER + $C8, $3
+	db SPRITE_ROCKER, $c + 4, $1 + 4, $ff, $d0, TRAINER | $4, JUGGLER + $C8, $8
+	db SPRITE_ROCKER, $5 + 4, $3 + 4, $ff, $d1, TRAINER | $5, TAMER + $C8, $1
+	db SPRITE_ROCKER, $2 + 4, $8 + 4, $ff, $d0, TRAINER | $6, TAMER + $C8, $2
+	db SPRITE_ROCKER, $7 + 4, $2 + 4, $ff, $d2, TRAINER | $7, JUGGLER + $C8, $4
 	db SPRITE_GYM_HELPER, $f + 4, $7 + 4, $ff, $d0, $8 ; person
 
 	; warp-to
--- a/data/mapObjects/fuchsiahouse2.asm
+++ b/data/mapObjects/fuchsiahouse2.asm
@@ -11,7 +11,7 @@
 
 	db $3 ; people
 	db SPRITE_WARDEN, $3 + 4, $2 + 4, $ff, $ff, $1 ; person
-	db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $82, RARE_CANDY ; item
+	db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, ITEM | $2, RARE_CANDY
 	db SPRITE_BOULDER, $4 + 4, $8 + 4, $ff, $10, $3 ; person
 
 	; warp-to
--- a/data/mapObjects/lance.asm
+++ b/data/mapObjects/lance.asm
@@ -9,7 +9,7 @@
 	db $0 ; signs
 
 	db $1 ; people
-	db SPRITE_LANCE, $1 + 4, $6 + 4, $ff, $d0, $41, LANCE + $C8, $1 ; trainer
+	db SPRITE_LANCE, $1 + 4, $6 + 4, $ff, $d0, TRAINER | $1, LANCE + $C8, $1
 
 	; warp-to
 	EVENT_DISP LANCES_ROOM_WIDTH, $10, $18 ; AGATHAS_ROOM
--- a/data/mapObjects/lorelei.asm
+++ b/data/mapObjects/lorelei.asm
@@ -10,7 +10,7 @@
 	db $0 ; signs
 
 	db $1 ; people
-	db SPRITE_LORELEI, $2 + 4, $5 + 4, $ff, $d0, $41, LORELEI + $C8, $1 ; trainer
+	db SPRITE_LORELEI, $2 + 4, $5 + 4, $ff, $d0, TRAINER | $1, LORELEI + $C8, $1
 
 	; warp-to
 	EVENT_DISP LORELEIS_ROOM_WIDTH, $b, $4 ; INDIGO_PLATEAU_LOBBY
--- a/data/mapObjects/mansion1.asm
+++ b/data/mapObjects/mansion1.asm
@@ -14,9 +14,9 @@
 	db $0 ; signs
 
 	db $3 ; people
-	db SPRITE_OAK_AIDE, $11 + 4, $11 + 4, $ff, $d2, $41, SCIENTIST + $C8, $4 ; trainer
-	db SPRITE_BALL, $3 + 4, $e + 4, $ff, $ff, $82, ESCAPE_ROPE ; item
-	db SPRITE_BALL, $15 + 4, $12 + 4, $ff, $ff, $83, CARBOS ; item
+	db SPRITE_OAK_AIDE, $11 + 4, $11 + 4, $ff, $d2, TRAINER | $1, SCIENTIST + $C8, $4
+	db SPRITE_BALL, $3 + 4, $e + 4, $ff, $ff, ITEM | $2, ESCAPE_ROPE
+	db SPRITE_BALL, $15 + 4, $12 + 4, $ff, $ff, ITEM | $3, CARBOS
 
 	; warp-to
 	EVENT_DISP MANSION_1_WIDTH, $1b, $4
--- a/data/mapObjects/mansion2.asm
+++ b/data/mapObjects/mansion2.asm
@@ -10,8 +10,8 @@
 	db $0 ; signs
 
 	db $4 ; people
-	db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $3 + 4, $fe, $2, $41, BURGLAR + $C8, $7 ; trainer
-	db SPRITE_BALL, $7 + 4, $1c + 4, $ff, $ff, $82, CALCIUM ; item
+	db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $3 + 4, $fe, $2, TRAINER | $1, BURGLAR + $C8, $7
+	db SPRITE_BALL, $7 + 4, $1c + 4, $ff, $ff, ITEM | $2, CALCIUM
 	db SPRITE_BOOK_MAP_DEX, $2 + 4, $12 + 4, $ff, $ff, $3 ; person
 	db SPRITE_BOOK_MAP_DEX, $16 + 4, $3 + 4, $ff, $ff, $4 ; person
 
--- a/data/mapObjects/mansion3.asm
+++ b/data/mapObjects/mansion3.asm
@@ -9,10 +9,10 @@
 	db $0 ; signs
 
 	db $5 ; people
-	db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $5 + 4, $fe, $2, $41, BURGLAR + $C8, $8 ; trainer
-	db SPRITE_OAK_AIDE, $b + 4, $14 + 4, $ff, $d2, $42, SCIENTIST + $C8, $c ; trainer
-	db SPRITE_BALL, $10 + 4, $1 + 4, $ff, $ff, $83, MAX_POTION ; item
-	db SPRITE_BALL, $5 + 4, $19 + 4, $ff, $ff, $84, IRON ; item
+	db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $5 + 4, $fe, $2, TRAINER | $1, BURGLAR + $C8, $8
+	db SPRITE_OAK_AIDE, $b + 4, $14 + 4, $ff, $d2, TRAINER | $2, SCIENTIST + $C8, $c
+	db SPRITE_BALL, $10 + 4, $1 + 4, $ff, $ff, ITEM | $3, MAX_POTION
+	db SPRITE_BALL, $5 + 4, $19 + 4, $ff, $ff, ITEM | $4, IRON
 	db SPRITE_BOOK_MAP_DEX, $c + 4, $6 + 4, $ff, $ff, $5 ; person
 
 	; warp-to
--- a/data/mapObjects/mansion4.asm
+++ b/data/mapObjects/mansion4.asm
@@ -7,14 +7,14 @@
 	db $0 ; signs
 
 	db $8 ; people
-	db SPRITE_BLACK_HAIR_BOY_2, $17 + 4, $10 + 4, $ff, $ff, $41, BURGLAR + $C8, $9 ; trainer
-	db SPRITE_OAK_AIDE, $b + 4, $1b + 4, $ff, $d0, $42, SCIENTIST + $C8, $d ; trainer
-	db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $83, RARE_CANDY ; item
-	db SPRITE_BALL, $16 + 4, $1 + 4, $ff, $ff, $84, FULL_RESTORE ; item
-	db SPRITE_BALL, $19 + 4, $13 + 4, $ff, $ff, $85, TM_14 ; item
-	db SPRITE_BALL, $4 + 4, $5 + 4, $ff, $ff, $86, TM_22 ; item
+	db SPRITE_BLACK_HAIR_BOY_2, $17 + 4, $10 + 4, $ff, $ff, TRAINER | $1, BURGLAR + $C8, $9
+	db SPRITE_OAK_AIDE, $b + 4, $1b + 4, $ff, $d0, TRAINER | $2, SCIENTIST + $C8, $d
+	db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, ITEM | $3, RARE_CANDY
+	db SPRITE_BALL, $16 + 4, $1 + 4, $ff, $ff, ITEM | $4, FULL_RESTORE
+	db SPRITE_BALL, $19 + 4, $13 + 4, $ff, $ff, ITEM | $5, TM_14
+	db SPRITE_BALL, $4 + 4, $5 + 4, $ff, $ff, ITEM | $6, TM_22
 	db SPRITE_BOOK_MAP_DEX, $14 + 4, $10 + 4, $ff, $ff, $7 ; person
-	db SPRITE_BALL, $d + 4, $5 + 4, $ff, $ff, $88, SECRET_KEY ; item
+	db SPRITE_BALL, $d + 4, $5 + 4, $ff, $ff, ITEM | $8, SECRET_KEY
 
 	; warp-to
 	EVENT_DISP MANSION_4_WIDTH, $16, $17 ; MANSION_1
--- a/data/mapObjects/mtmoon1.asm
+++ b/data/mapObjects/mtmoon1.asm
@@ -12,19 +12,19 @@
 	db $17, $f, $e ; MtMoon1Text14
 
 	db $d ; people
-	db SPRITE_HIKER, $6 + 4, $5 + 4, $ff, $d0, $41, HIKER + $C8, $1 ; trainer
-	db SPRITE_BUG_CATCHER, $10 + 4, $c + 4, $ff, $d3, $42, YOUNGSTER + $C8, $3 ; trainer
-	db SPRITE_LASS, $4 + 4, $1e + 4, $ff, $d0, $43, LASS + $C8, $5 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $1f + 4, $18 + 4, $ff, $d1, $44, SUPER_NERD + $C8, $1 ; trainer
-	db SPRITE_LASS, $17 + 4, $10 + 4, $ff, $d0, $45, LASS + $C8, $6 ; trainer
-	db SPRITE_BUG_CATCHER, $16 + 4, $7 + 4, $ff, $d0, $46, BUG_CATCHER + $C8, $7 ; trainer
-	db SPRITE_BUG_CATCHER, $1b + 4, $1e + 4, $ff, $d3, $47, BUG_CATCHER + $C8, $8 ; trainer
-	db SPRITE_BALL, $14 + 4, $2 + 4, $ff, $ff, $88, POTION ; item
-	db SPRITE_BALL, $2 + 4, $2 + 4, $ff, $ff, $89, MOON_STONE ; item
-	db SPRITE_BALL, $1f + 4, $23 + 4, $ff, $ff, $8a, RARE_CANDY ; item
-	db SPRITE_BALL, $17 + 4, $24 + 4, $ff, $ff, $8b, ESCAPE_ROPE ; item
-	db SPRITE_BALL, $21 + 4, $14 + 4, $ff, $ff, $8c, POTION ; item
-	db SPRITE_BALL, $20 + 4, $5 + 4, $ff, $ff, $8d, TM_12 ; item
+	db SPRITE_HIKER, $6 + 4, $5 + 4, $ff, $d0, TRAINER | $1, HIKER + $C8, $1
+	db SPRITE_BUG_CATCHER, $10 + 4, $c + 4, $ff, $d3, TRAINER | $2, YOUNGSTER + $C8, $3
+	db SPRITE_LASS, $4 + 4, $1e + 4, $ff, $d0, TRAINER | $3, LASS + $C8, $5
+	db SPRITE_BLACK_HAIR_BOY_2, $1f + 4, $18 + 4, $ff, $d1, TRAINER | $4, SUPER_NERD + $C8, $1
+	db SPRITE_LASS, $17 + 4, $10 + 4, $ff, $d0, TRAINER | $5, LASS + $C8, $6
+	db SPRITE_BUG_CATCHER, $16 + 4, $7 + 4, $ff, $d0, TRAINER | $6, BUG_CATCHER + $C8, $7
+	db SPRITE_BUG_CATCHER, $1b + 4, $1e + 4, $ff, $d3, TRAINER | $7, BUG_CATCHER + $C8, $8
+	db SPRITE_BALL, $14 + 4, $2 + 4, $ff, $ff, ITEM | $8, POTION
+	db SPRITE_BALL, $2 + 4, $2 + 4, $ff, $ff, ITEM | $9, MOON_STONE
+	db SPRITE_BALL, $1f + 4, $23 + 4, $ff, $ff, ITEM | $a, RARE_CANDY
+	db SPRITE_BALL, $17 + 4, $24 + 4, $ff, $ff, ITEM | $b, ESCAPE_ROPE
+	db SPRITE_BALL, $21 + 4, $14 + 4, $ff, $ff, ITEM | $c, POTION
+	db SPRITE_BALL, $20 + 4, $5 + 4, $ff, $ff, ITEM | $d, TM_12
 
 	; warp-to
 	EVENT_DISP MT_MOON_1_WIDTH, $23, $e
--- a/data/mapObjects/mtmoon3.asm
+++ b/data/mapObjects/mtmoon3.asm
@@ -10,15 +10,15 @@
 	db $0 ; signs
 
 	db $9 ; people
-	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $c + 4, $ff, $d3, $41, SUPER_NERD + $C8, $2 ; trainer
-	db SPRITE_ROCKET, $10 + 4, $b + 4, $ff, $d0, $42, ROCKET + $C8, $1 ; trainer
-	db SPRITE_ROCKET, $16 + 4, $f + 4, $ff, $d0, $43, ROCKET + $C8, $2 ; trainer
-	db SPRITE_ROCKET, $b + 4, $1d + 4, $ff, $d1, $44, ROCKET + $C8, $3 ; trainer
-	db SPRITE_ROCKET, $11 + 4, $1d + 4, $ff, $d2, $45, ROCKET + $C8, $4 ; trainer
+	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $c + 4, $ff, $d3, TRAINER | $1, SUPER_NERD + $C8, $2
+	db SPRITE_ROCKET, $10 + 4, $b + 4, $ff, $d0, TRAINER | $2, ROCKET + $C8, $1
+	db SPRITE_ROCKET, $16 + 4, $f + 4, $ff, $d0, TRAINER | $3, ROCKET + $C8, $2
+	db SPRITE_ROCKET, $b + 4, $1d + 4, $ff, $d1, TRAINER | $4, ROCKET + $C8, $3
+	db SPRITE_ROCKET, $11 + 4, $1d + 4, $ff, $d2, TRAINER | $5, ROCKET + $C8, $4
 	db SPRITE_OMANYTE, $6 + 4, $c + 4, $ff, $ff, $6 ; person
 	db SPRITE_OMANYTE, $6 + 4, $d + 4, $ff, $ff, $7 ; person
-	db SPRITE_BALL, $15 + 4, $19 + 4, $ff, $ff, $88, HP_UP ; item
-	db SPRITE_BALL, $5 + 4, $1d + 4, $ff, $ff, $89, TM_01 ; item
+	db SPRITE_BALL, $15 + 4, $19 + 4, $ff, $ff, ITEM | $8, HP_UP
+	db SPRITE_BALL, $5 + 4, $1d + 4, $ff, $ff, ITEM | $9, TM_01
 
 	; warp-to
 	EVENT_DISP MT_MOON_3_WIDTH, $9, $19 ; MT_MOON_2
--- a/data/mapObjects/oakslab.asm
+++ b/data/mapObjects/oakslab.asm
@@ -8,7 +8,7 @@
 	db $0 ; signs
 
 	db $b ; people
-	db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, $41, SONY1 + $C8, $1 ; trainer
+	db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, TRAINER | $1, SONY1 + $C8, $1
 	db SPRITE_BALL, $3 + 4, $6 + 4, $ff, $ff, $2 ; person
 	db SPRITE_BALL, $3 + 4, $7 + 4, $ff, $ff, $3 ; person
 	db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $4 ; person
--- a/data/mapObjects/pewtergym.asm
+++ b/data/mapObjects/pewtergym.asm
@@ -8,8 +8,8 @@
 	db $0 ; signs
 
 	db $3 ; people
-	db SPRITE_BLACK_HAIR_BOY_2, $1 + 4, $4 + 4, $ff, $d0, $41, BROCK + $C8, $1 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $3 + 4, $ff, $d3, $42, JR__TRAINER_M + $C8, $1 ; trainer
+	db SPRITE_BLACK_HAIR_BOY_2, $1 + 4, $4 + 4, $ff, $d0, TRAINER | $1, BROCK + $C8, $1
+	db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $3 + 4, $ff, $d3, TRAINER | $2, JR__TRAINER_M + $C8, $1
 	db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $3 ; person
 
 	; warp-to
--- a/data/mapObjects/pokemontower3.asm
+++ b/data/mapObjects/pokemontower3.asm
@@ -8,10 +8,10 @@
 	db $0 ; signs
 
 	db $4 ; people
-	db SPRITE_MEDIUM, $3 + 4, $c + 4, $ff, $d2, $41, CHANNELER + $C8, $5 ; trainer
-	db SPRITE_MEDIUM, $8 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $6 ; trainer
-	db SPRITE_MEDIUM, $d + 4, $a + 4, $ff, $d0, $43, CHANNELER + $C8, $8 ; trainer
-	db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $84, ESCAPE_ROPE ; item
+	db SPRITE_MEDIUM, $3 + 4, $c + 4, $ff, $d2, TRAINER | $1, CHANNELER + $C8, $5
+	db SPRITE_MEDIUM, $8 + 4, $9 + 4, $ff, $d0, TRAINER | $2, CHANNELER + $C8, $6
+	db SPRITE_MEDIUM, $d + 4, $a + 4, $ff, $d0, TRAINER | $3, CHANNELER + $C8, $8
+	db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, ITEM | $4, ESCAPE_ROPE
 
 	; warp-to
 	EVENT_DISP POKEMONTOWER_3_WIDTH, $9, $3 ; POKEMONTOWER_2
--- a/data/mapObjects/pokemontower4.asm
+++ b/data/mapObjects/pokemontower4.asm
@@ -8,12 +8,12 @@
 	db $0 ; signs
 
 	db $6 ; people
-	db SPRITE_MEDIUM, $a + 4, $5 + 4, $ff, $d3, $41, CHANNELER + $C8, $9 ; trainer
-	db SPRITE_MEDIUM, $7 + 4, $f + 4, $ff, $d0, $42, CHANNELER + $C8, $a ; trainer
-	db SPRITE_MEDIUM, $c + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $c ; trainer
-	db SPRITE_BALL, $a + 4, $c + 4, $ff, $ff, $84, ELIXER ; item
-	db SPRITE_BALL, $a + 4, $9 + 4, $ff, $ff, $85, AWAKENING ; item
-	db SPRITE_BALL, $10 + 4, $c + 4, $ff, $ff, $86, HP_UP ; item
+	db SPRITE_MEDIUM, $a + 4, $5 + 4, $ff, $d3, TRAINER | $1, CHANNELER + $C8, $9
+	db SPRITE_MEDIUM, $7 + 4, $f + 4, $ff, $d0, TRAINER | $2, CHANNELER + $C8, $a
+	db SPRITE_MEDIUM, $c + 4, $e + 4, $ff, $d2, TRAINER | $3, CHANNELER + $C8, $c
+	db SPRITE_BALL, $a + 4, $c + 4, $ff, $ff, ITEM | $4, ELIXER
+	db SPRITE_BALL, $a + 4, $9 + 4, $ff, $ff, ITEM | $5, AWAKENING
+	db SPRITE_BALL, $10 + 4, $c + 4, $ff, $ff, ITEM | $6, HP_UP
 
 	; warp-to
 	EVENT_DISP POKEMONTOWER_4_WIDTH, $9, $3 ; POKEMONTOWER_5
--- a/data/mapObjects/pokemontower5.asm
+++ b/data/mapObjects/pokemontower5.asm
@@ -9,11 +9,11 @@
 
 	db $6 ; people
 	db SPRITE_MEDIUM, $8 + 4, $c + 4, $ff, $ff, $1 ; person
-	db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, $42, CHANNELER + $C8, $e ; trainer
-	db SPRITE_MEDIUM, $3 + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $10 ; trainer
-	db SPRITE_MEDIUM, $a + 4, $6 + 4, $ff, $d3, $44, CHANNELER + $C8, $11 ; trainer
-	db SPRITE_MEDIUM, $10 + 4, $9 + 4, $ff, $d3, $45, CHANNELER + $C8, $12 ; trainer
-	db SPRITE_BALL, $e + 4, $6 + 4, $ff, $ff, $86, NUGGET ; item
+	db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, TRAINER | $2, CHANNELER + $C8, $e
+	db SPRITE_MEDIUM, $3 + 4, $e + 4, $ff, $d2, TRAINER | $3, CHANNELER + $C8, $10
+	db SPRITE_MEDIUM, $a + 4, $6 + 4, $ff, $d3, TRAINER | $4, CHANNELER + $C8, $11
+	db SPRITE_MEDIUM, $10 + 4, $9 + 4, $ff, $d3, TRAINER | $5, CHANNELER + $C8, $12
+	db SPRITE_BALL, $e + 4, $6 + 4, $ff, $ff, ITEM | $6, NUGGET
 
 	; warp-to
 	EVENT_DISP POKEMONTOWER_5_WIDTH, $9, $3 ; POKEMONTOWER_4
--- a/data/mapObjects/pokemontower6.asm
+++ b/data/mapObjects/pokemontower6.asm
@@ -8,11 +8,11 @@
 	db $0 ; signs
 
 	db $5 ; people
-	db SPRITE_MEDIUM, $a + 4, $c + 4, $ff, $d3, $41, CHANNELER + $C8, $13 ; trainer
-	db SPRITE_MEDIUM, $5 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $14 ; trainer
-	db SPRITE_MEDIUM, $5 + 4, $10 + 4, $ff, $d2, $43, CHANNELER + $C8, $15 ; trainer
-	db SPRITE_BALL, $8 + 4, $6 + 4, $ff, $ff, $84, RARE_CANDY ; item
-	db SPRITE_BALL, $e + 4, $e + 4, $ff, $ff, $85, X_ACCURACY ; item
+	db SPRITE_MEDIUM, $a + 4, $c + 4, $ff, $d3, TRAINER | $1, CHANNELER + $C8, $13
+	db SPRITE_MEDIUM, $5 + 4, $9 + 4, $ff, $d0, TRAINER | $2, CHANNELER + $C8, $14
+	db SPRITE_MEDIUM, $5 + 4, $10 + 4, $ff, $d2, TRAINER | $3, CHANNELER + $C8, $15
+	db SPRITE_BALL, $8 + 4, $6 + 4, $ff, $ff, ITEM | $4, RARE_CANDY
+	db SPRITE_BALL, $e + 4, $e + 4, $ff, $ff, ITEM | $5, X_ACCURACY
 
 	; warp-to
 	EVENT_DISP POKEMONTOWER_6_WIDTH, $9, $12 ; POKEMONTOWER_5
--- a/data/mapObjects/pokemontower7.asm
+++ b/data/mapObjects/pokemontower7.asm
@@ -7,9 +7,9 @@
 	db $0 ; signs
 
 	db $4 ; people
-	db SPRITE_ROCKET, $b + 4, $9 + 4, $ff, $d3, $41, ROCKET + $C8, $13 ; trainer
-	db SPRITE_ROCKET, $9 + 4, $c + 4, $ff, $d2, $42, ROCKET + $C8, $14 ; trainer
-	db SPRITE_ROCKET, $7 + 4, $9 + 4, $ff, $d3, $43, ROCKET + $C8, $15 ; trainer
+	db SPRITE_ROCKET, $b + 4, $9 + 4, $ff, $d3, TRAINER | $1, ROCKET + $C8, $13
+	db SPRITE_ROCKET, $9 + 4, $c + 4, $ff, $d2, TRAINER | $2, ROCKET + $C8, $14
+	db SPRITE_ROCKET, $7 + 4, $9 + 4, $ff, $d3, TRAINER | $3, ROCKET + $C8, $15
 	db SPRITE_MR_FUJI, $3 + 4, $a + 4, $ff, $d0, $4 ; person
 
 	; warp-to
--- a/data/mapObjects/powerplant.asm
+++ b/data/mapObjects/powerplant.asm
@@ -9,20 +9,20 @@
 	db $0 ; signs
 
 	db $e ; people
-	db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, $41, VOLTORB, 40 ; trainer
-	db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, VOLTORB, 40 ; trainer
-	db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, VOLTORB, 40 ; trainer
-	db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, ELECTRODE, 43 ; trainer
-	db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, VOLTORB, 40 ; trainer
-	db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, VOLTORB, 40 ; trainer
-	db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, ELECTRODE, 43 ; trainer
-	db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, VOLTORB, 40 ; trainer
-	db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, ZAPDOS, 50 ; trainer
-	db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, $8a, CARBOS ; item
-	db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, $8b, HP_UP ; item
-	db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, $8c, RARE_CANDY ; item
-	db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, $8d, TM_25 ; item
-	db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, $8e, TM_33 ; item
+	db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, TRAINER | $1, VOLTORB, 40
+	db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, TRAINER | $2, VOLTORB, 40
+	db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, TRAINER | $3, VOLTORB, 40
+	db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, TRAINER | $4, ELECTRODE, 43
+	db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, TRAINER | $5, VOLTORB, 40
+	db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, TRAINER | $6, VOLTORB, 40
+	db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, TRAINER | $7, ELECTRODE, 43
+	db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, TRAINER | $8, VOLTORB, 40
+	db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, TRAINER | $9, ZAPDOS, 50
+	db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, ITEM | $a, CARBOS
+	db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, ITEM | $b, HP_UP
+	db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, ITEM | $c, RARE_CANDY
+	db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, ITEM | $d, TM_25
+	db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, ITEM | $e, TM_33
 
 	; warp-to
 	EVENT_DISP POWER_PLANT_WIDTH, $23, $4
--- a/data/mapObjects/redshouse1f.asm
+++ b/data/mapObjects/redshouse1f.asm
@@ -1,18 +1,18 @@
 RedsHouse1FObject: ; 481e4 (12:41e4)
 	db $0A ; border block
 
-	db 3 ; warps
-	db 7,2,0,$FF ; exit1
-	db 7,3,0,$FF ; exit2
-	db 1,7,0,$26 ; staircase
+	db $3 ; warps
+	db $7, $2, $0, $FF ; exit1
+	db $7, $3, $0, $FF ; exit2
+	db $1, $7, $0, REDS_HOUSE_2F ; staircase
 
-	db 1 ; signs
-	db 1,3,2 ; TV
+	db $1 ; signs
+	db $1, $3, $2 ; TV
 
-	db 1 ; people
-	db $33,4+4,5+4,$FF,$D2,1 ; Mom
+	db $1 ; people
+	db $33, $4 + 4, $5 + 4, $FF, $D2, $1 ; Mom
 
 	; warp-to
-	EVENT_DISP REDS_HOUSE_1F_WIDTH, 7, 2
-	EVENT_DISP REDS_HOUSE_1F_WIDTH, 7, 3
-	EVENT_DISP REDS_HOUSE_1F_WIDTH, 1, 7
+	EVENT_DISP REDS_HOUSE_1F_WIDTH, $7, $2
+	EVENT_DISP REDS_HOUSE_1F_WIDTH, $7, $3
+	EVENT_DISP REDS_HOUSE_1F_WIDTH, $1, $7
--- a/data/mapObjects/redshouse2f.asm
+++ b/data/mapObjects/redshouse2f.asm
@@ -1,12 +1,12 @@
 RedsHouse2FObject: ; 0x5c0d0 ?
 	db $0A ; border block
 
-	db 1 ; warps
-	db 1, 7, 2, REDS_HOUSE_1F
+	db $1 ; warps
+	db $1, $7, $2, REDS_HOUSE_1F
 
-	db 0 ; signs
+	db $0 ; signs
 
-	db 0 ; people
+	db $0 ; people
 
 	; warp-to
-	EVENT_DISP REDS_HOUSE_2F_WIDTH, 1, 7
+	EVENT_DISP REDS_HOUSE_2F_WIDTH, $1, $7
--- a/data/mapObjects/rockethideout1.asm
+++ b/data/mapObjects/rockethideout1.asm
@@ -11,13 +11,13 @@
 	db $0 ; signs
 
 	db $7 ; people
-	db SPRITE_ROCKET, $8 + 4, $1a + 4, $ff, $d2, $41, ROCKET + $C8, $8 ; trainer
-	db SPRITE_ROCKET, $6 + 4, $c + 4, $ff, $d3, $42, ROCKET + $C8, $9 ; trainer
-	db SPRITE_ROCKET, $11 + 4, $12 + 4, $ff, $d0, $43, ROCKET + $C8, $a ; trainer
-	db SPRITE_ROCKET, $19 + 4, $f + 4, $ff, $d3, $44, ROCKET + $C8, $b ; trainer
-	db SPRITE_ROCKET, $12 + 4, $1c + 4, $ff, $d2, $45, ROCKET + $C8, $c ; trainer
-	db SPRITE_BALL, $e + 4, $b + 4, $ff, $ff, $86, ESCAPE_ROPE ; item
-	db SPRITE_BALL, $11 + 4, $9 + 4, $ff, $ff, $87, HYPER_POTION ; item
+	db SPRITE_ROCKET, $8 + 4, $1a + 4, $ff, $d2, TRAINER | $1, ROCKET + $C8, $8
+	db SPRITE_ROCKET, $6 + 4, $c + 4, $ff, $d3, TRAINER | $2, ROCKET + $C8, $9
+	db SPRITE_ROCKET, $11 + 4, $12 + 4, $ff, $d0, TRAINER | $3, ROCKET + $C8, $a
+	db SPRITE_ROCKET, $19 + 4, $f + 4, $ff, $d3, TRAINER | $4, ROCKET + $C8, $b
+	db SPRITE_ROCKET, $12 + 4, $1c + 4, $ff, $d2, TRAINER | $5, ROCKET + $C8, $c
+	db SPRITE_BALL, $e + 4, $b + 4, $ff, $ff, ITEM | $6, ESCAPE_ROPE
+	db SPRITE_BALL, $11 + 4, $9 + 4, $ff, $ff, ITEM | $7, HYPER_POTION
 
 	; warp-to
 	EVENT_DISP ROCKET_HIDEOUT_1_WIDTH, $2, $17 ; ROCKET_HIDEOUT_2
--- a/data/mapObjects/rockethideout2.asm
+++ b/data/mapObjects/rockethideout2.asm
@@ -11,11 +11,11 @@
 	db $0 ; signs
 
 	db $5 ; people
-	db SPRITE_ROCKET, $c + 4, $14 + 4, $ff, $d0, $41, ROCKET + $C8, $d ; trainer
-	db SPRITE_BALL, $b + 4, $1 + 4, $ff, $ff, $82, MOON_STONE ; item
-	db SPRITE_BALL, $8 + 4, $10 + 4, $ff, $ff, $83, NUGGET ; item
-	db SPRITE_BALL, $c + 4, $6 + 4, $ff, $ff, $84, TM_07 ; item
-	db SPRITE_BALL, $15 + 4, $3 + 4, $ff, $ff, $85, SUPER_POTION ; item
+	db SPRITE_ROCKET, $c + 4, $14 + 4, $ff, $d0, TRAINER | $1, ROCKET + $C8, $d
+	db SPRITE_BALL, $b + 4, $1 + 4, $ff, $ff, ITEM | $2, MOON_STONE
+	db SPRITE_BALL, $8 + 4, $10 + 4, $ff, $ff, ITEM | $3, NUGGET
+	db SPRITE_BALL, $c + 4, $6 + 4, $ff, $ff, ITEM | $4, TM_07
+	db SPRITE_BALL, $15 + 4, $3 + 4, $ff, $ff, ITEM | $5, SUPER_POTION
 
 	; warp-to
 	EVENT_DISP ROCKET_HIDEOUT_2_WIDTH, $8, $1b ; ROCKET_HIDEOUT_1
--- a/data/mapObjects/rockethideout3.asm
+++ b/data/mapObjects/rockethideout3.asm
@@ -8,10 +8,10 @@
 	db $0 ; signs
 
 	db $4 ; people
-	db SPRITE_ROCKET, $16 + 4, $a + 4, $ff, $d3, $41, ROCKET + $C8, $e ; trainer
-	db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d1, $42, ROCKET + $C8, $f ; trainer
-	db SPRITE_BALL, $11 + 4, $1a + 4, $ff, $ff, $83, TM_10 ; item
-	db SPRITE_BALL, $e + 4, $14 + 4, $ff, $ff, $84, RARE_CANDY ; item
+	db SPRITE_ROCKET, $16 + 4, $a + 4, $ff, $d3, TRAINER | $1, ROCKET + $C8, $e
+	db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d1, TRAINER | $2, ROCKET + $C8, $f
+	db SPRITE_BALL, $11 + 4, $1a + 4, $ff, $ff, ITEM | $3, TM_10
+	db SPRITE_BALL, $e + 4, $14 + 4, $ff, $ff, ITEM | $4, RARE_CANDY
 
 	; warp-to
 	EVENT_DISP ROCKET_HIDEOUT_3_WIDTH, $6, $19 ; ROCKET_HIDEOUT_2
--- a/data/mapObjects/rockethideout4.asm
+++ b/data/mapObjects/rockethideout4.asm
@@ -9,15 +9,15 @@
 	db $0 ; signs
 
 	db $9 ; people
-	db SPRITE_GIOVANNI, $3 + 4, $19 + 4, $ff, $d0, $41, GIOVANNI + $C8, $1 ; trainer
-	db SPRITE_ROCKET, $c + 4, $17 + 4, $ff, $d0, $42, ROCKET + $C8, $10 ; trainer
-	db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d0, $43, ROCKET + $C8, $11 ; trainer
-	db SPRITE_ROCKET, $2 + 4, $b + 4, $ff, $d0, $44, ROCKET + $C8, $12 ; trainer
-	db SPRITE_BALL, $c + 4, $a + 4, $ff, $ff, $85, HP_UP ; item
-	db SPRITE_BALL, $4 + 4, $9 + 4, $ff, $ff, $86, TM_02 ; item
-	db SPRITE_BALL, $14 + 4, $c + 4, $ff, $ff, $87, IRON ; item
-	db SPRITE_BALL, $2 + 4, $19 + 4, $ff, $ff, $88, SILPH_SCOPE ; item
-	db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $89, LIFT_KEY ; item
+	db SPRITE_GIOVANNI, $3 + 4, $19 + 4, $ff, $d0, TRAINER | $1, GIOVANNI + $C8, $1
+	db SPRITE_ROCKET, $c + 4, $17 + 4, $ff, $d0, TRAINER | $2, ROCKET + $C8, $10
+	db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d0, TRAINER | $3, ROCKET + $C8, $11
+	db SPRITE_ROCKET, $2 + 4, $b + 4, $ff, $d0, TRAINER | $4, ROCKET + $C8, $12
+	db SPRITE_BALL, $c + 4, $a + 4, $ff, $ff, ITEM | $5, HP_UP
+	db SPRITE_BALL, $4 + 4, $9 + 4, $ff, $ff, ITEM | $6, TM_02
+	db SPRITE_BALL, $14 + 4, $c + 4, $ff, $ff, ITEM | $7, IRON
+	db SPRITE_BALL, $2 + 4, $19 + 4, $ff, $ff, ITEM | $8, SILPH_SCOPE
+	db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, ITEM | $9, LIFT_KEY
 
 	; warp-to
 	EVENT_DISP ROCKET_HIDEOUT_4_WIDTH, $a, $13 ; ROCKET_HIDEOUT_3
--- a/data/mapObjects/rocktunnel1.asm
+++ b/data/mapObjects/rocktunnel1.asm
@@ -15,13 +15,13 @@
 	db $1d, $b, $8 ; RockTunnel1Text8
 
 	db $7 ; people
-	db SPRITE_HIKER, $5 + 4, $7 + 4, $ff, $d0, $41, HIKER + $C8, $c ; trainer
-	db SPRITE_HIKER, $10 + 4, $5 + 4, $ff, $d0, $42, HIKER + $C8, $d ; trainer
-	db SPRITE_HIKER, $f + 4, $11 + 4, $ff, $d2, $43, HIKER + $C8, $e ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $17 + 4, $ff, $d2, $44, POKEMANIAC + $C8, $7 ; trainer
-	db SPRITE_LASS, $15 + 4, $25 + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $11 ; trainer
-	db SPRITE_LASS, $18 + 4, $16 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $12 ; trainer
-	db SPRITE_LASS, $18 + 4, $20 + 4, $ff, $d3, $47, JR__TRAINER_F + $C8, $13 ; trainer
+	db SPRITE_HIKER, $5 + 4, $7 + 4, $ff, $d0, TRAINER | $1, HIKER + $C8, $c
+	db SPRITE_HIKER, $10 + 4, $5 + 4, $ff, $d0, TRAINER | $2, HIKER + $C8, $d
+	db SPRITE_HIKER, $f + 4, $11 + 4, $ff, $d2, TRAINER | $3, HIKER + $C8, $e
+	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $17 + 4, $ff, $d2, TRAINER | $4, POKEMANIAC + $C8, $7
+	db SPRITE_LASS, $15 + 4, $25 + 4, $ff, $d2, TRAINER | $5, JR__TRAINER_F + $C8, $11
+	db SPRITE_LASS, $18 + 4, $16 + 4, $ff, $d0, TRAINER | $6, JR__TRAINER_F + $C8, $12
+	db SPRITE_LASS, $18 + 4, $20 + 4, $ff, $d3, TRAINER | $7, JR__TRAINER_F + $C8, $13
 
 	; warp-to
 	EVENT_DISP ROCK_TUNNEL_1_WIDTH, $3, $f
--- a/data/mapObjects/rocktunnel2.asm
+++ b/data/mapObjects/rocktunnel2.asm
@@ -10,14 +10,14 @@
 	db $0 ; signs
 
 	db $8 ; people
-	db SPRITE_LASS, $d + 4, $b + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $9 ; trainer
-	db SPRITE_HIKER, $a + 4, $6 + 4, $ff, $d0, $42, HIKER + $C8, $9 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $d0, $43, POKEMANIAC + $C8, $3 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $14 + 4, $ff, $d3, $44, POKEMANIAC + $C8, $4 ; trainer
-	db SPRITE_HIKER, $a + 4, $1e + 4, $ff, $d0, $45, HIKER + $C8, $a ; trainer
-	db SPRITE_LASS, $1c + 4, $e + 4, $ff, $d3, $46, JR__TRAINER_F + $C8, $a ; trainer
-	db SPRITE_HIKER, $5 + 4, $21 + 4, $ff, $d3, $47, HIKER + $C8, $b ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $1e + 4, $1a + 4, $ff, $d0, $48, POKEMANIAC + $C8, $5 ; trainer
+	db SPRITE_LASS, $d + 4, $b + 4, $ff, $d0, TRAINER | $1, JR__TRAINER_F + $C8, $9
+	db SPRITE_HIKER, $a + 4, $6 + 4, $ff, $d0, TRAINER | $2, HIKER + $C8, $9
+	db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $d0, TRAINER | $3, POKEMANIAC + $C8, $3
+	db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $14 + 4, $ff, $d3, TRAINER | $4, POKEMANIAC + $C8, $4
+	db SPRITE_HIKER, $a + 4, $1e + 4, $ff, $d0, TRAINER | $5, HIKER + $C8, $a
+	db SPRITE_LASS, $1c + 4, $e + 4, $ff, $d3, TRAINER | $6, JR__TRAINER_F + $C8, $a
+	db SPRITE_HIKER, $5 + 4, $21 + 4, $ff, $d3, TRAINER | $7, HIKER + $C8, $b
+	db SPRITE_BLACK_HAIR_BOY_2, $1e + 4, $1a + 4, $ff, $d0, TRAINER | $8, POKEMANIAC + $C8, $5
 
 	; warp-to
 	EVENT_DISP ROCK_TUNNEL_2_WIDTH, $19, $21 ; ROCK_TUNNEL_1
--- a/data/mapObjects/route10.asm
+++ b/data/mapObjects/route10.asm
@@ -14,12 +14,12 @@
 	db $29, $5, $a ; Route10Text10
 
 	db $6 ; people
-	db SPRITE_BLACK_HAIR_BOY_2, $2c + 4, $a + 4, $ff, $d2, $41, POKEMANIAC + $C8, $1 ; trainer
-	db SPRITE_HIKER, $39 + 4, $3 + 4, $ff, $d1, $42, HIKER + $C8, $7 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $40 + 4, $e + 4, $ff, $d2, $43, POKEMANIAC + $C8, $2 ; trainer
-	db SPRITE_LASS, $19 + 4, $7 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $7 ; trainer
-	db SPRITE_HIKER, $3d + 4, $3 + 4, $ff, $d0, $45, HIKER + $C8, $8 ; trainer
-	db SPRITE_LASS, $36 + 4, $7 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $8 ; trainer
+	db SPRITE_BLACK_HAIR_BOY_2, $2c + 4, $a + 4, $ff, $d2, TRAINER | $1, POKEMANIAC + $C8, $1
+	db SPRITE_HIKER, $39 + 4, $3 + 4, $ff, $d1, TRAINER | $2, HIKER + $C8, $7
+	db SPRITE_BLACK_HAIR_BOY_2, $40 + 4, $e + 4, $ff, $d2, TRAINER | $3, POKEMANIAC + $C8, $2
+	db SPRITE_LASS, $19 + 4, $7 + 4, $ff, $d2, TRAINER | $4, JR__TRAINER_F + $C8, $7
+	db SPRITE_HIKER, $3d + 4, $3 + 4, $ff, $d0, TRAINER | $5, HIKER + $C8, $8
+	db SPRITE_LASS, $36 + 4, $7 + 4, $ff, $d0, TRAINER | $6, JR__TRAINER_F + $C8, $8
 
 	; warp-to
 	EVENT_DISP ROUTE_10_WIDTH, $13, $b ; ROCK_TUNNEL_POKECENTER
--- a/data/mapObjects/route11.asm
+++ b/data/mapObjects/route11.asm
@@ -12,16 +12,16 @@
 	db $5, $1, $b ; Route11Text11
 
 	db $a ; people
-	db SPRITE_GAMBLER, $e + 4, $a + 4, $ff, $d0, $41, GAMBLER + $C8, $1 ; trainer
-	db SPRITE_GAMBLER, $9 + 4, $1a + 4, $ff, $d0, $42, GAMBLER + $C8, $2 ; trainer
-	db SPRITE_BUG_CATCHER, $5 + 4, $d + 4, $ff, $d2, $43, YOUNGSTER + $C8, $9 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $24 + 4, $ff, $d0, $44, ENGINEER + $C8, $2 ; trainer
-	db SPRITE_BUG_CATCHER, $4 + 4, $16 + 4, $ff, $d1, $45, YOUNGSTER + $C8, $a ; trainer
-	db SPRITE_GAMBLER, $7 + 4, $2d + 4, $ff, $d0, $46, GAMBLER + $C8, $3 ; trainer
-	db SPRITE_GAMBLER, $3 + 4, $21 + 4, $ff, $d1, $47, GAMBLER + $C8, $4 ; trainer
-	db SPRITE_BUG_CATCHER, $5 + 4, $2b + 4, $ff, $d3, $48, YOUNGSTER + $C8, $b ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $10 + 4, $2d + 4, $ff, $d2, $49, ENGINEER + $C8, $3 ; trainer
-	db SPRITE_BUG_CATCHER, $c + 4, $16 + 4, $ff, $d1, $4a, YOUNGSTER + $C8, $c ; trainer
+	db SPRITE_GAMBLER, $e + 4, $a + 4, $ff, $d0, TRAINER | $1, GAMBLER + $C8, $1
+	db SPRITE_GAMBLER, $9 + 4, $1a + 4, $ff, $d0, TRAINER | $2, GAMBLER + $C8, $2
+	db SPRITE_BUG_CATCHER, $5 + 4, $d + 4, $ff, $d2, TRAINER | $3, YOUNGSTER + $C8, $9
+	db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $24 + 4, $ff, $d0, TRAINER | $4, ENGINEER + $C8, $2
+	db SPRITE_BUG_CATCHER, $4 + 4, $16 + 4, $ff, $d1, TRAINER | $5, YOUNGSTER + $C8, $a
+	db SPRITE_GAMBLER, $7 + 4, $2d + 4, $ff, $d0, TRAINER | $6, GAMBLER + $C8, $3
+	db SPRITE_GAMBLER, $3 + 4, $21 + 4, $ff, $d1, TRAINER | $7, GAMBLER + $C8, $4
+	db SPRITE_BUG_CATCHER, $5 + 4, $2b + 4, $ff, $d3, TRAINER | $8, YOUNGSTER + $C8, $b
+	db SPRITE_BLACK_HAIR_BOY_2, $10 + 4, $2d + 4, $ff, $d2, TRAINER | $9, ENGINEER + $C8, $3
+	db SPRITE_BUG_CATCHER, $c + 4, $16 + 4, $ff, $d1, TRAINER | $a, YOUNGSTER + $C8, $c
 
 	; warp-to
 	EVENT_DISP ROUTE_11_WIDTH, $8, $31 ; ROUTE_11_GATE_1F
--- a/data/mapObjects/route12.asm
+++ b/data/mapObjects/route12.asm
@@ -13,15 +13,15 @@
 
 	db $a ; people
 	db SPRITE_SNORLAX, $3e + 4, $a + 4, $ff, $d0, $1 ; person
-	db SPRITE_FISHER2, $1f + 4, $e + 4, $ff, $d2, $42, FISHER + $C8, $3 ; trainer
-	db SPRITE_FISHER2, $27 + 4, $5 + 4, $ff, $d1, $43, FISHER + $C8, $4 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $5c + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $9 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $4c + 4, $e + 4, $ff, $d1, $45, ROCKER + $C8, $2 ; trainer
-	db SPRITE_FISHER2, $28 + 4, $c + 4, $ff, $d2, $46, FISHER + $C8, $5 ; trainer
-	db SPRITE_FISHER2, $34 + 4, $9 + 4, $ff, $d3, $47, FISHER + $C8, $6 ; trainer
-	db SPRITE_FISHER2, $57 + 4, $6 + 4, $ff, $d0, $48, FISHER + $C8, $b ; trainer
-	db SPRITE_BALL, $23 + 4, $e + 4, $ff, $ff, $89, TM_16 ; item
-	db SPRITE_BALL, $59 + 4, $5 + 4, $ff, $ff, $8a, IRON ; item
+	db SPRITE_FISHER2, $1f + 4, $e + 4, $ff, $d2, TRAINER | $2, FISHER + $C8, $3
+	db SPRITE_FISHER2, $27 + 4, $5 + 4, $ff, $d1, TRAINER | $3, FISHER + $C8, $4
+	db SPRITE_BLACK_HAIR_BOY_1, $5c + 4, $b + 4, $ff, $d2, TRAINER | $4, JR__TRAINER_M + $C8, $9
+	db SPRITE_BLACK_HAIR_BOY_2, $4c + 4, $e + 4, $ff, $d1, TRAINER | $5, ROCKER + $C8, $2
+	db SPRITE_FISHER2, $28 + 4, $c + 4, $ff, $d2, TRAINER | $6, FISHER + $C8, $5
+	db SPRITE_FISHER2, $34 + 4, $9 + 4, $ff, $d3, TRAINER | $7, FISHER + $C8, $6
+	db SPRITE_FISHER2, $57 + 4, $6 + 4, $ff, $d0, TRAINER | $8, FISHER + $C8, $b
+	db SPRITE_BALL, $23 + 4, $e + 4, $ff, $ff, ITEM | $9, TM_16
+	db SPRITE_BALL, $59 + 4, $5 + 4, $ff, $ff, ITEM | $a, IRON
 
 	; warp-to
 	EVENT_DISP ROUTE_12_WIDTH, $f, $a ; ROUTE_12_GATE_1F
--- a/data/mapObjects/route13.asm
+++ b/data/mapObjects/route13.asm
@@ -9,13 +9,13 @@
 	db $b, $1f, $d ; Route13Text13
 
 	db $a ; people
-	db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $31 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $1 ; trainer
-	db SPRITE_LASS, $a + 4, $30 + 4, $ff, $d0, $42, JR__TRAINER_F + $C8, $c ; trainer
-	db SPRITE_LASS, $9 + 4, $1b + 4, $ff, $d0, $43, JR__TRAINER_F + $C8, $d ; trainer
-	db SPRITE_LASS, $a + 4, $17 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $e ; trainer
-	db SPRITE_LASS, $5 + 4, $32 + 4, $ff, $d0, $45, JR__TRAINER_F + $C8, $f ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $c + 4, $ff, $d3, $46, BIRD_KEEPER + $C8, $2 ; trainer
-	db SPRITE_FOULARD_WOMAN, $6 + 4, $21 + 4, $ff, $d0, $47, BEAUTY + $C8, $4 ; trainer
-	db SPRITE_FOULARD_WOMAN, $6 + 4, $20 + 4, $ff, $d0, $48, BEAUTY + $C8, $5 ; trainer
-	db SPRITE_BIKER, $7 + 4, $a + 4, $ff, $d1, $49, BIKER + $C8, $1 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $7 + 4, $ff, $d1, $4a, BIRD_KEEPER + $C8, $3 ; trainer
+	db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $31 + 4, $ff, $d3, TRAINER | $1, BIRD_KEEPER + $C8, $1
+	db SPRITE_LASS, $a + 4, $30 + 4, $ff, $d0, TRAINER | $2, JR__TRAINER_F + $C8, $c
+	db SPRITE_LASS, $9 + 4, $1b + 4, $ff, $d0, TRAINER | $3, JR__TRAINER_F + $C8, $d
+	db SPRITE_LASS, $a + 4, $17 + 4, $ff, $d2, TRAINER | $4, JR__TRAINER_F + $C8, $e
+	db SPRITE_LASS, $5 + 4, $32 + 4, $ff, $d0, TRAINER | $5, JR__TRAINER_F + $C8, $f
+	db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $c + 4, $ff, $d3, TRAINER | $6, BIRD_KEEPER + $C8, $2
+	db SPRITE_FOULARD_WOMAN, $6 + 4, $21 + 4, $ff, $d0, TRAINER | $7, BEAUTY + $C8, $4
+	db SPRITE_FOULARD_WOMAN, $6 + 4, $20 + 4, $ff, $d0, TRAINER | $8, BEAUTY + $C8, $5
+	db SPRITE_BIKER, $7 + 4, $a + 4, $ff, $d1, TRAINER | $9, BIKER + $C8, $1
+	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $7 + 4, $ff, $d1, TRAINER | $a, BIRD_KEEPER + $C8, $3
--- a/data/mapObjects/route14.asm
+++ b/data/mapObjects/route14.asm
@@ -7,13 +7,13 @@
 	db $d, $11, $b ; Route14Text11
 
 	db $a ; people
-	db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $4 + 4, $ff, $d0, $41, BIRD_KEEPER + $C8, $e ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $f + 4, $ff, $d0, $42, BIRD_KEEPER + $C8, $f ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $c + 4, $ff, $d0, $43, BIRD_KEEPER + $C8, $10 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $e + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $11 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $f + 4, $ff, $d2, $45, BIRD_KEEPER + $C8, $4 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $31 + 4, $6 + 4, $ff, $d1, $46, BIRD_KEEPER + $C8, $5 ; trainer
-	db SPRITE_BIKER, $27 + 4, $5 + 4, $ff, $d0, $47, BIKER + $C8, $d ; trainer
-	db SPRITE_BIKER, $1e + 4, $4 + 4, $ff, $d3, $48, BIKER + $C8, $e ; trainer
-	db SPRITE_BIKER, $1e + 4, $f + 4, $ff, $d2, $49, BIKER + $C8, $f ; trainer
-	db SPRITE_BIKER, $1f + 4, $4 + 4, $ff, $d3, $4a, BIKER + $C8, $2 ; trainer
+	db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $4 + 4, $ff, $d0, TRAINER | $1, BIRD_KEEPER + $C8, $e
+	db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $f + 4, $ff, $d0, TRAINER | $2, BIRD_KEEPER + $C8, $f
+	db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $c + 4, $ff, $d0, TRAINER | $3, BIRD_KEEPER + $C8, $10
+	db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $e + 4, $ff, $d1, TRAINER | $4, BIRD_KEEPER + $C8, $11
+	db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $f + 4, $ff, $d2, TRAINER | $5, BIRD_KEEPER + $C8, $4
+	db SPRITE_BLACK_HAIR_BOY_1, $31 + 4, $6 + 4, $ff, $d1, TRAINER | $6, BIRD_KEEPER + $C8, $5
+	db SPRITE_BIKER, $27 + 4, $5 + 4, $ff, $d0, TRAINER | $7, BIKER + $C8, $d
+	db SPRITE_BIKER, $1e + 4, $4 + 4, $ff, $d3, TRAINER | $8, BIKER + $C8, $e
+	db SPRITE_BIKER, $1e + 4, $f + 4, $ff, $d2, TRAINER | $9, BIKER + $C8, $f
+	db SPRITE_BIKER, $1f + 4, $4 + 4, $ff, $d3, TRAINER | $a, BIKER + $C8, $2
--- a/data/mapObjects/route15.asm
+++ b/data/mapObjects/route15.asm
@@ -11,17 +11,17 @@
 	db $9, $27, $c ; Route15Text12
 
 	db $b ; people
-	db SPRITE_LASS, $b + 4, $29 + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $14 ; trainer
-	db SPRITE_LASS, $a + 4, $35 + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $15 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $1f + 4, $ff, $d1, $43, BIRD_KEEPER + $C8, $6 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $23 + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $7 ; trainer
-	db SPRITE_FOULARD_WOMAN, $b + 4, $35 + 4, $ff, $d0, $45, BEAUTY + $C8, $9 ; trainer
-	db SPRITE_FOULARD_WOMAN, $a + 4, $29 + 4, $ff, $d3, $46, BEAUTY + $C8, $a ; trainer
-	db SPRITE_BIKER, $a + 4, $30 + 4, $ff, $d0, $47, BIKER + $C8, $3 ; trainer
-	db SPRITE_BIKER, $a + 4, $2e + 4, $ff, $d0, $48, BIKER + $C8, $4 ; trainer
-	db SPRITE_LASS, $5 + 4, $25 + 4, $ff, $d3, $49, JR__TRAINER_F + $C8, $16 ; trainer
-	db SPRITE_LASS, $d + 4, $12 + 4, $ff, $d1, $4a, JR__TRAINER_F + $C8, $17 ; trainer
-	db SPRITE_BALL, $5 + 4, $12 + 4, $ff, $ff, $8b, TM_20 ; item
+	db SPRITE_LASS, $b + 4, $29 + 4, $ff, $d0, TRAINER | $1, JR__TRAINER_F + $C8, $14
+	db SPRITE_LASS, $a + 4, $35 + 4, $ff, $d2, TRAINER | $2, JR__TRAINER_F + $C8, $15
+	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $1f + 4, $ff, $d1, TRAINER | $3, BIRD_KEEPER + $C8, $6
+	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $23 + 4, $ff, $d1, TRAINER | $4, BIRD_KEEPER + $C8, $7
+	db SPRITE_FOULARD_WOMAN, $b + 4, $35 + 4, $ff, $d0, TRAINER | $5, BEAUTY + $C8, $9
+	db SPRITE_FOULARD_WOMAN, $a + 4, $29 + 4, $ff, $d3, TRAINER | $6, BEAUTY + $C8, $a
+	db SPRITE_BIKER, $a + 4, $30 + 4, $ff, $d0, TRAINER | $7, BIKER + $C8, $3
+	db SPRITE_BIKER, $a + 4, $2e + 4, $ff, $d0, TRAINER | $8, BIKER + $C8, $4
+	db SPRITE_LASS, $5 + 4, $25 + 4, $ff, $d3, TRAINER | $9, JR__TRAINER_F + $C8, $16
+	db SPRITE_LASS, $d + 4, $12 + 4, $ff, $d1, TRAINER | $a, JR__TRAINER_F + $C8, $17
+	db SPRITE_BALL, $5 + 4, $12 + 4, $ff, $ff, ITEM | $b, TM_20
 
 	; warp-to
 	EVENT_DISP ROUTE_15_WIDTH, $8, $7 ; ROUTE_15_GATE_1F
--- a/data/mapObjects/route16.asm
+++ b/data/mapObjects/route16.asm
@@ -17,12 +17,12 @@
 	db $11, $5, $9 ; Route16Text9
 
 	db $7 ; people
-	db SPRITE_BIKER, $c + 4, $11 + 4, $ff, $d2, $41, BIKER + $C8, $5 ; trainer
-	db SPRITE_BIKER, $d + 4, $e + 4, $ff, $d3, $42, CUE_BALL + $C8, $1 ; trainer
-	db SPRITE_BIKER, $c + 4, $b + 4, $ff, $d1, $43, CUE_BALL + $C8, $2 ; trainer
-	db SPRITE_BIKER, $b + 4, $9 + 4, $ff, $d2, $44, BIKER + $C8, $6 ; trainer
-	db SPRITE_BIKER, $a + 4, $6 + 4, $ff, $d3, $45, CUE_BALL + $C8, $3 ; trainer
-	db SPRITE_BIKER, $c + 4, $3 + 4, $ff, $d3, $46, BIKER + $C8, $7 ; trainer
+	db SPRITE_BIKER, $c + 4, $11 + 4, $ff, $d2, TRAINER | $1, BIKER + $C8, $5
+	db SPRITE_BIKER, $d + 4, $e + 4, $ff, $d3, TRAINER | $2, CUE_BALL + $C8, $1
+	db SPRITE_BIKER, $c + 4, $b + 4, $ff, $d1, TRAINER | $3, CUE_BALL + $C8, $2
+	db SPRITE_BIKER, $b + 4, $9 + 4, $ff, $d2, TRAINER | $4, BIKER + $C8, $6
+	db SPRITE_BIKER, $a + 4, $6 + 4, $ff, $d3, TRAINER | $5, CUE_BALL + $C8, $3
+	db SPRITE_BIKER, $c + 4, $3 + 4, $ff, $d3, TRAINER | $6, BIKER + $C8, $7
 	db SPRITE_SNORLAX, $a + 4, $1a + 4, $ff, $d0, $7 ; person
 
 	; warp-to
--- a/data/mapObjects/route17.asm
+++ b/data/mapObjects/route17.asm
@@ -12,13 +12,13 @@
 	db $8d, $9, $10 ; Route17Text16
 
 	db $a ; people
-	db SPRITE_BIKER, $13 + 4, $c + 4, $ff, $d2, $41, CUE_BALL + $C8, $4 ; trainer
-	db SPRITE_BIKER, $10 + 4, $b + 4, $ff, $d3, $42, CUE_BALL + $C8, $5 ; trainer
-	db SPRITE_BIKER, $12 + 4, $4 + 4, $ff, $d1, $43, BIKER + $C8, $8 ; trainer
-	db SPRITE_BIKER, $20 + 4, $7 + 4, $ff, $d2, $44, BIKER + $C8, $9 ; trainer
-	db SPRITE_BIKER, $22 + 4, $e + 4, $ff, $d3, $45, BIKER + $C8, $a ; trainer
-	db SPRITE_BIKER, $3a + 4, $11 + 4, $ff, $d2, $46, CUE_BALL + $C8, $6 ; trainer
-	db SPRITE_BIKER, $44 + 4, $2 + 4, $ff, $d3, $47, CUE_BALL + $C8, $7 ; trainer
-	db SPRITE_BIKER, $62 + 4, $e + 4, $ff, $d3, $48, CUE_BALL + $C8, $8 ; trainer
-	db SPRITE_BIKER, $62 + 4, $5 + 4, $ff, $d2, $49, BIKER + $C8, $b ; trainer
-	db SPRITE_BIKER, $76 + 4, $a + 4, $ff, $d0, $4a, BIKER + $C8, $c ; trainer
+	db SPRITE_BIKER, $13 + 4, $c + 4, $ff, $d2, TRAINER | $1, CUE_BALL + $C8, $4
+	db SPRITE_BIKER, $10 + 4, $b + 4, $ff, $d3, TRAINER | $2, CUE_BALL + $C8, $5
+	db SPRITE_BIKER, $12 + 4, $4 + 4, $ff, $d1, TRAINER | $3, BIKER + $C8, $8
+	db SPRITE_BIKER, $20 + 4, $7 + 4, $ff, $d2, TRAINER | $4, BIKER + $C8, $9
+	db SPRITE_BIKER, $22 + 4, $e + 4, $ff, $d3, TRAINER | $5, BIKER + $C8, $a
+	db SPRITE_BIKER, $3a + 4, $11 + 4, $ff, $d2, TRAINER | $6, CUE_BALL + $C8, $6
+	db SPRITE_BIKER, $44 + 4, $2 + 4, $ff, $d3, TRAINER | $7, CUE_BALL + $C8, $7
+	db SPRITE_BIKER, $62 + 4, $e + 4, $ff, $d3, TRAINER | $8, CUE_BALL + $C8, $8
+	db SPRITE_BIKER, $62 + 4, $5 + 4, $ff, $d2, TRAINER | $9, BIKER + $C8, $b
+	db SPRITE_BIKER, $76 + 4, $a + 4, $ff, $d0, TRAINER | $a, BIKER + $C8, $c
--- a/data/mapObjects/route18.asm
+++ b/data/mapObjects/route18.asm
@@ -12,9 +12,9 @@
 	db $5, $21, $5 ; Route18Text5
 
 	db $3 ; people
-	db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $24 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $8 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $28 + 4, $ff, $d2, $42, BIRD_KEEPER + $C8, $9 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $2a + 4, $ff, $d2, $43, BIRD_KEEPER + $C8, $a ; trainer
+	db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $24 + 4, $ff, $d3, TRAINER | $1, BIRD_KEEPER + $C8, $8
+	db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $28 + 4, $ff, $d2, TRAINER | $2, BIRD_KEEPER + $C8, $9
+	db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $2a + 4, $ff, $d2, TRAINER | $3, BIRD_KEEPER + $C8, $a
 
 	; warp-to
 	EVENT_DISP ROUTE_18_WIDTH, $8, $21 ; ROUTE_18_GATE_1F
--- a/data/mapObjects/route19.asm
+++ b/data/mapObjects/route19.asm
@@ -13,16 +13,16 @@
 	db $9, $b, $b ; Route19Text11
 
 	db $a ; people
-	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $8 + 4, $ff, $d2, $41, SWIMMER + $C8, $2 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $d + 4, $ff, $d2, $42, SWIMMER + $C8, $3 ; trainer
-	db SPRITE_SWIMMER, $19 + 4, $d + 4, $ff, $d2, $43, SWIMMER + $C8, $4 ; trainer
-	db SPRITE_SWIMMER, $1b + 4, $4 + 4, $ff, $d3, $44, SWIMMER + $C8, $5 ; trainer
-	db SPRITE_SWIMMER, $1f + 4, $10 + 4, $ff, $d1, $45, SWIMMER + $C8, $6 ; trainer
-	db SPRITE_SWIMMER, $b + 4, $9 + 4, $ff, $d0, $46, SWIMMER + $C8, $7 ; trainer
-	db SPRITE_SWIMMER, $2b + 4, $8 + 4, $ff, $d2, $47, BEAUTY + $C8, $c ; trainer
-	db SPRITE_SWIMMER, $2b + 4, $b + 4, $ff, $d3, $48, BEAUTY + $C8, $d ; trainer
-	db SPRITE_SWIMMER, $2a + 4, $9 + 4, $ff, $d1, $49, SWIMMER + $C8, $8 ; trainer
-	db SPRITE_SWIMMER, $2c + 4, $a + 4, $ff, $d0, $4a, BEAUTY + $C8, $e ; trainer
+	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $8 + 4, $ff, $d2, TRAINER | $1, SWIMMER + $C8, $2
+	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $d + 4, $ff, $d2, TRAINER | $2, SWIMMER + $C8, $3
+	db SPRITE_SWIMMER, $19 + 4, $d + 4, $ff, $d2, TRAINER | $3, SWIMMER + $C8, $4
+	db SPRITE_SWIMMER, $1b + 4, $4 + 4, $ff, $d3, TRAINER | $4, SWIMMER + $C8, $5
+	db SPRITE_SWIMMER, $1f + 4, $10 + 4, $ff, $d1, TRAINER | $5, SWIMMER + $C8, $6
+	db SPRITE_SWIMMER, $b + 4, $9 + 4, $ff, $d0, TRAINER | $6, SWIMMER + $C8, $7
+	db SPRITE_SWIMMER, $2b + 4, $8 + 4, $ff, $d2, TRAINER | $7, BEAUTY + $C8, $c
+	db SPRITE_SWIMMER, $2b + 4, $b + 4, $ff, $d3, TRAINER | $8, BEAUTY + $C8, $d
+	db SPRITE_SWIMMER, $2a + 4, $9 + 4, $ff, $d1, TRAINER | $9, SWIMMER + $C8, $8
+	db SPRITE_SWIMMER, $2c + 4, $a + 4, $ff, $d0, TRAINER | $a, BEAUTY + $C8, $e
 
 	; warp-to
 	IF _YELLOW
--- a/data/mapObjects/route2.asm
+++ b/data/mapObjects/route2.asm
@@ -14,8 +14,8 @@
 	db $b, $b, $4 ; Route2Text4
 
 	db $2 ; people
-	db SPRITE_BALL, $36 + 4, $d + 4, $ff, $ff, $81, MOON_STONE ; item
-	db SPRITE_BALL, $2d + 4, $d + 4, $ff, $ff, $82, HP_UP ; item
+	db SPRITE_BALL, $36 + 4, $d + 4, $ff, $ff, ITEM | $1, MOON_STONE
+	db SPRITE_BALL, $2d + 4, $d + 4, $ff, $ff, ITEM | $2, HP_UP
 
 	; warp-to
 	EVENT_DISP ROUTE_2_WIDTH, $9, $c ; DIGLETTS_CAVE_EXIT
--- a/data/mapObjects/route20.asm
+++ b/data/mapObjects/route20.asm
@@ -10,16 +10,16 @@
 	db $b, $39, $c ; Route20Text12
 
 	db $a ; people
-	db SPRITE_SWIMMER, $8 + 4, $57 + 4, $ff, $d1, $41, SWIMMER + $C8, $9 ; trainer
-	db SPRITE_SWIMMER, $b + 4, $44 + 4, $ff, $d1, $42, BEAUTY + $C8, $f ; trainer
-	db SPRITE_SWIMMER, $a + 4, $2d + 4, $ff, $d0, $43, BEAUTY + $C8, $6 ; trainer
-	db SPRITE_SWIMMER, $e + 4, $37 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $18 ; trainer
-	db SPRITE_SWIMMER, $d + 4, $26 + 4, $ff, $d0, $45, SWIMMER + $C8, $a ; trainer
-	db SPRITE_SWIMMER, $d + 4, $57 + 4, $ff, $d1, $46, SWIMMER + $C8, $b ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $9 + 4, $22 + 4, $ff, $d1, $47, BIRD_KEEPER + $C8, $b ; trainer
-	db SPRITE_SWIMMER, $7 + 4, $19 + 4, $ff, $d1, $48, BEAUTY + $C8, $7 ; trainer
-	db SPRITE_SWIMMER, $c + 4, $18 + 4, $ff, $d0, $49, JR__TRAINER_F + $C8, $10 ; trainer
-	db SPRITE_SWIMMER, $8 + 4, $f + 4, $ff, $d1, $4a, BEAUTY + $C8, $8 ; trainer
+	db SPRITE_SWIMMER, $8 + 4, $57 + 4, $ff, $d1, TRAINER | $1, SWIMMER + $C8, $9
+	db SPRITE_SWIMMER, $b + 4, $44 + 4, $ff, $d1, TRAINER | $2, BEAUTY + $C8, $f
+	db SPRITE_SWIMMER, $a + 4, $2d + 4, $ff, $d0, TRAINER | $3, BEAUTY + $C8, $6
+	db SPRITE_SWIMMER, $e + 4, $37 + 4, $ff, $d3, TRAINER | $4, JR__TRAINER_F + $C8, $18
+	db SPRITE_SWIMMER, $d + 4, $26 + 4, $ff, $d0, TRAINER | $5, SWIMMER + $C8, $a
+	db SPRITE_SWIMMER, $d + 4, $57 + 4, $ff, $d1, TRAINER | $6, SWIMMER + $C8, $b
+	db SPRITE_BLACK_HAIR_BOY_1, $9 + 4, $22 + 4, $ff, $d1, TRAINER | $7, BIRD_KEEPER + $C8, $b
+	db SPRITE_SWIMMER, $7 + 4, $19 + 4, $ff, $d1, TRAINER | $8, BEAUTY + $C8, $7
+	db SPRITE_SWIMMER, $c + 4, $18 + 4, $ff, $d0, TRAINER | $9, JR__TRAINER_F + $C8, $10
+	db SPRITE_SWIMMER, $8 + 4, $f + 4, $ff, $d1, TRAINER | $a, BEAUTY + $C8, $8
 
 	; warp-to
 	EVENT_DISP ROUTE_20_WIDTH, $5, $30 ; SEAFOAM_ISLANDS_1
--- a/data/mapObjects/route21.asm
+++ b/data/mapObjects/route21.asm
@@ -6,12 +6,12 @@
 	db $0 ; signs
 
 	db $9 ; people
-	db SPRITE_FISHER2, $18 + 4, $4 + 4, $ff, $d2, $41, FISHER + $C8, $7 ; trainer
-	db SPRITE_FISHER2, $19 + 4, $6 + 4, $ff, $d0, $42, FISHER + $C8, $9 ; trainer
-	db SPRITE_SWIMMER, $1f + 4, $a + 4, $ff, $d1, $43, SWIMMER + $C8, $c ; trainer
-	db SPRITE_SWIMMER, $1e + 4, $c + 4, $ff, $d3, $44, CUE_BALL + $C8, $9 ; trainer
-	db SPRITE_SWIMMER, $3f + 4, $10 + 4, $ff, $d0, $45, SWIMMER + $C8, $d ; trainer
-	db SPRITE_SWIMMER, $47 + 4, $5 + 4, $ff, $d3, $46, SWIMMER + $C8, $e ; trainer
-	db SPRITE_SWIMMER, $47 + 4, $f + 4, $ff, $d2, $47, SWIMMER + $C8, $f ; trainer
-	db SPRITE_FISHER2, $38 + 4, $e + 4, $ff, $d2, $48, FISHER + $C8, $8 ; trainer
-	db SPRITE_FISHER2, $39 + 4, $11 + 4, $ff, $d3, $49, FISHER + $C8, $a ; trainer
+	db SPRITE_FISHER2, $18 + 4, $4 + 4, $ff, $d2, TRAINER | $1, FISHER + $C8, $7
+	db SPRITE_FISHER2, $19 + 4, $6 + 4, $ff, $d0, TRAINER | $2, FISHER + $C8, $9
+	db SPRITE_SWIMMER, $1f + 4, $a + 4, $ff, $d1, TRAINER | $3, SWIMMER + $C8, $c
+	db SPRITE_SWIMMER, $1e + 4, $c + 4, $ff, $d3, TRAINER | $4, CUE_BALL + $C8, $9
+	db SPRITE_SWIMMER, $3f + 4, $10 + 4, $ff, $d0, TRAINER | $5, SWIMMER + $C8, $d
+	db SPRITE_SWIMMER, $47 + 4, $5 + 4, $ff, $d3, TRAINER | $6, SWIMMER + $C8, $e
+	db SPRITE_SWIMMER, $47 + 4, $f + 4, $ff, $d2, TRAINER | $7, SWIMMER + $C8, $f
+	db SPRITE_FISHER2, $38 + 4, $e + 4, $ff, $d2, TRAINER | $8, FISHER + $C8, $8
+	db SPRITE_FISHER2, $39 + 4, $11 + 4, $ff, $d3, TRAINER | $9, FISHER + $C8, $a
--- a/data/mapObjects/route24.asm
+++ b/data/mapObjects/route24.asm
@@ -6,11 +6,11 @@
 	db $0 ; signs
 
 	db $8 ; people
-	db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $b + 4, $ff, $d2, $41, ROCKET + $C8, $6 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $5 + 4, $ff, $d1, $42, JR__TRAINER_M + $C8, $2 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $13 + 4, $b + 4, $ff, $d2, $43, JR__TRAINER_M + $C8, $3 ; trainer
-	db SPRITE_LASS, $16 + 4, $a + 4, $ff, $d3, $44, LASS + $C8, $7 ; trainer
-	db SPRITE_BUG_CATCHER, $19 + 4, $b + 4, $ff, $d2, $45, YOUNGSTER + $C8, $4 ; trainer
-	db SPRITE_LASS, $1c + 4, $a + 4, $ff, $d3, $46, LASS + $C8, $8 ; trainer
-	db SPRITE_BUG_CATCHER, $1f + 4, $b + 4, $ff, $d2, $47, BUG_CATCHER + $C8, $9 ; trainer
-	db SPRITE_BALL, $5 + 4, $a + 4, $ff, $ff, $88, TM_45 ; item
+	db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $b + 4, $ff, $d2, TRAINER | $1, ROCKET + $C8, $6
+	db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $5 + 4, $ff, $d1, TRAINER | $2, JR__TRAINER_M + $C8, $2
+	db SPRITE_BLACK_HAIR_BOY_1, $13 + 4, $b + 4, $ff, $d2, TRAINER | $3, JR__TRAINER_M + $C8, $3
+	db SPRITE_LASS, $16 + 4, $a + 4, $ff, $d3, TRAINER | $4, LASS + $C8, $7
+	db SPRITE_BUG_CATCHER, $19 + 4, $b + 4, $ff, $d2, TRAINER | $5, YOUNGSTER + $C8, $4
+	db SPRITE_LASS, $1c + 4, $a + 4, $ff, $d3, TRAINER | $6, LASS + $C8, $8
+	db SPRITE_BUG_CATCHER, $1f + 4, $b + 4, $ff, $d2, TRAINER | $7, BUG_CATCHER + $C8, $9
+	db SPRITE_BALL, $5 + 4, $a + 4, $ff, $ff, ITEM | $8, TM_45
--- a/data/mapObjects/route25.asm
+++ b/data/mapObjects/route25.asm
@@ -8,16 +8,16 @@
 	db $3, $2b, $b ; Route25Text11
 
 	db $a ; people
-	db SPRITE_BUG_CATCHER, $2 + 4, $e + 4, $ff, $d0, $41, YOUNGSTER + $C8, $5 ; trainer
-	db SPRITE_BUG_CATCHER, $5 + 4, $12 + 4, $ff, $d1, $42, YOUNGSTER + $C8, $6 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $18 + 4, $ff, $d0, $43, JR__TRAINER_M + $C8, $2 ; trainer
-	db SPRITE_LASS, $8 + 4, $12 + 4, $ff, $d3, $44, LASS + $C8, $9 ; trainer
-	db SPRITE_BUG_CATCHER, $3 + 4, $20 + 4, $ff, $d2, $45, YOUNGSTER + $C8, $7 ; trainer
-	db SPRITE_LASS, $4 + 4, $25 + 4, $ff, $d0, $46, LASS + $C8, $a ; trainer
-	db SPRITE_HIKER, $4 + 4, $8 + 4, $ff, $d3, $47, HIKER + $C8, $2 ; trainer
-	db SPRITE_HIKER, $9 + 4, $17 + 4, $ff, $d1, $48, HIKER + $C8, $3 ; trainer
-	db SPRITE_HIKER, $7 + 4, $d + 4, $ff, $d3, $49, HIKER + $C8, $4 ; trainer
-	db SPRITE_BALL, $2 + 4, $16 + 4, $ff, $ff, $8a, TM_19 ; item
+	db SPRITE_BUG_CATCHER, $2 + 4, $e + 4, $ff, $d0, TRAINER | $1, YOUNGSTER + $C8, $5
+	db SPRITE_BUG_CATCHER, $5 + 4, $12 + 4, $ff, $d1, TRAINER | $2, YOUNGSTER + $C8, $6
+	db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $18 + 4, $ff, $d0, TRAINER | $3, JR__TRAINER_M + $C8, $2
+	db SPRITE_LASS, $8 + 4, $12 + 4, $ff, $d3, TRAINER | $4, LASS + $C8, $9
+	db SPRITE_BUG_CATCHER, $3 + 4, $20 + 4, $ff, $d2, TRAINER | $5, YOUNGSTER + $C8, $7
+	db SPRITE_LASS, $4 + 4, $25 + 4, $ff, $d0, TRAINER | $6, LASS + $C8, $a
+	db SPRITE_HIKER, $4 + 4, $8 + 4, $ff, $d3, TRAINER | $7, HIKER + $C8, $2
+	db SPRITE_HIKER, $9 + 4, $17 + 4, $ff, $d1, TRAINER | $8, HIKER + $C8, $3
+	db SPRITE_HIKER, $7 + 4, $d + 4, $ff, $d3, TRAINER | $9, HIKER + $C8, $4
+	db SPRITE_BALL, $2 + 4, $16 + 4, $ff, $ff, ITEM | $a, TM_19
 
 	; warp-to
 	EVENT_DISP ROUTE_25_WIDTH, $3, $2d ; BILLS_HOUSE
--- a/data/mapObjects/route3.asm
+++ b/data/mapObjects/route3.asm
@@ -8,11 +8,11 @@
 
 	db $9 ; people
 	db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $39 + 4, $ff, $ff, $1 ; person
-	db SPRITE_BUG_CATCHER, $6 + 4, $a + 4, $ff, $d3, $42, BUG_CATCHER + $C8, $4 ; trainer
-	db SPRITE_BUG_CATCHER, $4 + 4, $e + 4, $ff, $d0, $43, YOUNGSTER + $C8, $1 ; trainer
-	db SPRITE_LASS, $9 + 4, $10 + 4, $ff, $d2, $44, LASS + $C8, $1 ; trainer
-	db SPRITE_BUG_CATCHER, $5 + 4, $13 + 4, $ff, $d0, $45, BUG_CATCHER + $C8, $5 ; trainer
-	db SPRITE_LASS, $4 + 4, $17 + 4, $ff, $d2, $46, LASS + $C8, $2 ; trainer
-	db SPRITE_BUG_CATCHER, $9 + 4, $16 + 4, $ff, $d2, $47, YOUNGSTER + $C8, $2 ; trainer
-	db SPRITE_BUG_CATCHER, $6 + 4, $18 + 4, $ff, $d3, $48, BUG_CATCHER + $C8, $6 ; trainer
-	db SPRITE_LASS, $a + 4, $21 + 4, $ff, $d1, $49, LASS + $C8, $3 ; trainer
+	db SPRITE_BUG_CATCHER, $6 + 4, $a + 4, $ff, $d3, TRAINER | $2, BUG_CATCHER + $C8, $4
+	db SPRITE_BUG_CATCHER, $4 + 4, $e + 4, $ff, $d0, TRAINER | $3, YOUNGSTER + $C8, $1
+	db SPRITE_LASS, $9 + 4, $10 + 4, $ff, $d2, TRAINER | $4, LASS + $C8, $1
+	db SPRITE_BUG_CATCHER, $5 + 4, $13 + 4, $ff, $d0, TRAINER | $5, BUG_CATCHER + $C8, $5
+	db SPRITE_LASS, $4 + 4, $17 + 4, $ff, $d2, TRAINER | $6, LASS + $C8, $2
+	db SPRITE_BUG_CATCHER, $9 + 4, $16 + 4, $ff, $d2, TRAINER | $7, YOUNGSTER + $C8, $2
+	db SPRITE_BUG_CATCHER, $6 + 4, $18 + 4, $ff, $d3, TRAINER | $8, BUG_CATCHER + $C8, $6
+	db SPRITE_LASS, $a + 4, $21 + 4, $ff, $d1, TRAINER | $9, LASS + $C8, $3
--- a/data/mapObjects/route4.asm
+++ b/data/mapObjects/route4.asm
@@ -13,8 +13,8 @@
 
 	db $3 ; people
 	db SPRITE_LASS, $8 + 4, $9 + 4, $fe, $0, $1 ; person
-	db SPRITE_LASS, $3 + 4, $3f + 4, $ff, $d3, $42, LASS + $C8, $4 ; trainer
-	db SPRITE_BALL, $3 + 4, $39 + 4, $ff, $ff, $83, TM_04 ; item
+	db SPRITE_LASS, $3 + 4, $3f + 4, $ff, $d3, TRAINER | $2, LASS + $C8, $4
+	db SPRITE_BALL, $3 + 4, $39 + 4, $ff, $ff, ITEM | $3, TM_04
 
 	; warp-to
 	EVENT_DISP ROUTE_4_WIDTH, $5, $b ; MT_MOON_POKECENTER
--- a/data/mapObjects/route6.asm
+++ b/data/mapObjects/route6.asm
@@ -11,12 +11,12 @@
 	db $f, $13, $7 ; Route6Text7
 
 	db $6 ; people
-	db SPRITE_BLACK_HAIR_BOY_1, $15 + 4, $a + 4, $ff, $d3, $41, JR__TRAINER_M + $C8, $4 ; trainer
-	db SPRITE_LASS, $15 + 4, $b + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $2 ; trainer
-	db SPRITE_BUG_CATCHER, $f + 4, $0 + 4, $ff, $d3, $43, BUG_CATCHER + $C8, $a ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $5 ; trainer
-	db SPRITE_LASS, $1e + 4, $b + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $3 ; trainer
-	db SPRITE_BUG_CATCHER, $1a + 4, $13 + 4, $ff, $d2, $46, BUG_CATCHER + $C8, $b ; trainer
+	db SPRITE_BLACK_HAIR_BOY_1, $15 + 4, $a + 4, $ff, $d3, TRAINER | $1, JR__TRAINER_M + $C8, $4
+	db SPRITE_LASS, $15 + 4, $b + 4, $ff, $d2, TRAINER | $2, JR__TRAINER_F + $C8, $2
+	db SPRITE_BUG_CATCHER, $f + 4, $0 + 4, $ff, $d3, TRAINER | $3, BUG_CATCHER + $C8, $a
+	db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $b + 4, $ff, $d2, TRAINER | $4, JR__TRAINER_M + $C8, $5
+	db SPRITE_LASS, $1e + 4, $b + 4, $ff, $d2, TRAINER | $5, JR__TRAINER_F + $C8, $3
+	db SPRITE_BUG_CATCHER, $1a + 4, $13 + 4, $ff, $d2, TRAINER | $6, BUG_CATCHER + $C8, $b
 
 	; warp-to
 	EVENT_DISP ROUTE_6_WIDTH, $1, $9 ; ROUTE_6_GATE
--- a/data/mapObjects/route8.asm
+++ b/data/mapObjects/route8.asm
@@ -12,15 +12,15 @@
 	db $3, $11, $a ; Route8Text10
 
 	db $9 ; people
-	db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $8 + 4, $ff, $d3, $41, SUPER_NERD + $C8, $3 ; trainer
-	db SPRITE_GAMBLER, $9 + 4, $d + 4, $ff, $d1, $42, GAMBLER + $C8, $5 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $6 + 4, $2a + 4, $ff, $d1, $43, SUPER_NERD + $C8, $4 ; trainer
-	db SPRITE_LASS, $3 + 4, $1a + 4, $ff, $d2, $44, LASS + $C8, $d ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $1a + 4, $ff, $d3, $45, SUPER_NERD + $C8, $5 ; trainer
-	db SPRITE_LASS, $5 + 4, $1a + 4, $ff, $d2, $46, LASS + $C8, $e ; trainer
-	db SPRITE_LASS, $6 + 4, $1a + 4, $ff, $d3, $47, LASS + $C8, $f ; trainer
-	db SPRITE_GAMBLER, $d + 4, $2e + 4, $ff, $d0, $48, GAMBLER + $C8, $7 ; trainer
-	db SPRITE_LASS, $c + 4, $33 + 4, $ff, $d2, $49, LASS + $C8, $10 ; trainer
+	db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $8 + 4, $ff, $d3, TRAINER | $1, SUPER_NERD + $C8, $3
+	db SPRITE_GAMBLER, $9 + 4, $d + 4, $ff, $d1, TRAINER | $2, GAMBLER + $C8, $5
+	db SPRITE_BLACK_HAIR_BOY_2, $6 + 4, $2a + 4, $ff, $d1, TRAINER | $3, SUPER_NERD + $C8, $4
+	db SPRITE_LASS, $3 + 4, $1a + 4, $ff, $d2, TRAINER | $4, LASS + $C8, $d
+	db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $1a + 4, $ff, $d3, TRAINER | $5, SUPER_NERD + $C8, $5
+	db SPRITE_LASS, $5 + 4, $1a + 4, $ff, $d2, TRAINER | $6, LASS + $C8, $e
+	db SPRITE_LASS, $6 + 4, $1a + 4, $ff, $d3, TRAINER | $7, LASS + $C8, $f
+	db SPRITE_GAMBLER, $d + 4, $2e + 4, $ff, $d0, TRAINER | $8, GAMBLER + $C8, $7
+	db SPRITE_LASS, $c + 4, $33 + 4, $ff, $d2, TRAINER | $9, LASS + $C8, $10
 
 	; warp-to
 	EVENT_DISP ROUTE_8_WIDTH, $9, $1 ; ROUTE_8_GATE
--- a/data/mapObjects/route9.asm
+++ b/data/mapObjects/route9.asm
@@ -7,13 +7,13 @@
 	db $7, $19, $b ; Route9Text11
 
 	db $a ; people
-	db SPRITE_LASS, $a + 4, $d + 4, $ff, $d2, $41, JR__TRAINER_F + $C8, $5 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $18 + 4, $ff, $d2, $42, JR__TRAINER_M + $C8, $7 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $1f + 4, $ff, $d3, $43, JR__TRAINER_M + $C8, $8 ; trainer
-	db SPRITE_LASS, $8 + 4, $30 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $6 ; trainer
-	db SPRITE_HIKER, $f + 4, $10 + 4, $ff, $d2, $45, HIKER + $C8, $b ; trainer
-	db SPRITE_HIKER, $3 + 4, $2b + 4, $ff, $d2, $46, HIKER + $C8, $6 ; trainer
-	db SPRITE_BUG_CATCHER, $2 + 4, $16 + 4, $ff, $d0, $47, BUG_CATCHER + $C8, $d ; trainer
-	db SPRITE_HIKER, $f + 4, $2d + 4, $ff, $d3, $48, HIKER + $C8, $5 ; trainer
-	db SPRITE_BUG_CATCHER, $8 + 4, $28 + 4, $ff, $d3, $49, BUG_CATCHER + $C8, $e ; trainer
-	db SPRITE_BALL, $f + 4, $a + 4, $ff, $ff, $8a, TM_30 ; item
+	db SPRITE_LASS, $a + 4, $d + 4, $ff, $d2, TRAINER | $1, JR__TRAINER_F + $C8, $5
+	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $18 + 4, $ff, $d2, TRAINER | $2, JR__TRAINER_M + $C8, $7
+	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $1f + 4, $ff, $d3, TRAINER | $3, JR__TRAINER_M + $C8, $8
+	db SPRITE_LASS, $8 + 4, $30 + 4, $ff, $d3, TRAINER | $4, JR__TRAINER_F + $C8, $6
+	db SPRITE_HIKER, $f + 4, $10 + 4, $ff, $d2, TRAINER | $5, HIKER + $C8, $b
+	db SPRITE_HIKER, $3 + 4, $2b + 4, $ff, $d2, TRAINER | $6, HIKER + $C8, $6
+	db SPRITE_BUG_CATCHER, $2 + 4, $16 + 4, $ff, $d0, TRAINER | $7, BUG_CATCHER + $C8, $d
+	db SPRITE_HIKER, $f + 4, $2d + 4, $ff, $d3, TRAINER | $8, HIKER + $C8, $5
+	db SPRITE_BUG_CATCHER, $8 + 4, $28 + 4, $ff, $d3, TRAINER | $9, BUG_CATCHER + $C8, $e
+	db SPRITE_BALL, $f + 4, $a + 4, $ff, $ff, ITEM | $a, TM_30
--- a/data/mapObjects/safarizonecenter.asm
+++ b/data/mapObjects/safarizonecenter.asm
@@ -17,7 +17,7 @@
 	db $16, $e, $3 ; SafariZoneCenterText3
 
 	db $1 ; people
-	db SPRITE_BALL, $a + 4, $e + 4, $ff, $ff, $81, NUGGET ; item
+	db SPRITE_BALL, $a + 4, $e + 4, $ff, $ff, ITEM | $1, NUGGET
 
 	; warp-to
 	EVENT_DISP SAFARI_ZONE_CENTER_WIDTH, $19, $e ; SAFARI_ZONE_ENTRANCE
--- a/data/mapObjects/safarizoneeast.asm
+++ b/data/mapObjects/safarizoneeast.asm
@@ -14,10 +14,10 @@
 	db $17, $5, $7 ; SafariZoneEastText7
 
 	db $4 ; people
-	db SPRITE_BALL, $a + 4, $15 + 4, $ff, $ff, $81, FULL_RESTORE ; item
-	db SPRITE_BALL, $7 + 4, $3 + 4, $ff, $ff, $82, MAX_POTION ; item
-	db SPRITE_BALL, $d + 4, $14 + 4, $ff, $ff, $83, CARBOS ; item
-	db SPRITE_BALL, $c + 4, $f + 4, $ff, $ff, $84, TM_37 ; item
+	db SPRITE_BALL, $a + 4, $15 + 4, $ff, $ff, ITEM | $1, FULL_RESTORE
+	db SPRITE_BALL, $7 + 4, $3 + 4, $ff, $ff, ITEM | $2, MAX_POTION
+	db SPRITE_BALL, $d + 4, $14 + 4, $ff, $ff, ITEM | $3, CARBOS
+	db SPRITE_BALL, $c + 4, $f + 4, $ff, $ff, ITEM | $4, TM_37
 
 	; warp-to
 	EVENT_DISP SAFARI_ZONE_EAST_WIDTH, $4, $0 ; SAFARI_ZONE_NORTH
--- a/data/mapObjects/safarizonenorth.asm
+++ b/data/mapObjects/safarizonenorth.asm
@@ -20,8 +20,8 @@
 	db $1c, $1a, $7 ; SafariZoneNorthText7
 
 	db $2 ; people
-	db SPRITE_BALL, $1 + 4, $19 + 4, $ff, $ff, $81, PROTEIN ; item
-	db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $82, TM_40 ; item
+	db SPRITE_BALL, $1 + 4, $19 + 4, $ff, $ff, ITEM | $1, PROTEIN
+	db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, ITEM | $2, TM_40
 
 	; warp-to
 	EVENT_DISP SAFARI_ZONE_NORTH_WIDTH, $23, $2 ; SAFARI_ZONE_WEST
--- a/data/mapObjects/safarizonewest.asm
+++ b/data/mapObjects/safarizonewest.asm
@@ -18,10 +18,10 @@
 	db $16, $18, $8 ; SafariZoneWestText8
 
 	db $4 ; people
-	db SPRITE_BALL, $14 + 4, $8 + 4, $ff, $ff, $81, MAX_POTION ; item
-	db SPRITE_BALL, $7 + 4, $9 + 4, $ff, $ff, $82, TM_32 ; item
-	db SPRITE_BALL, $12 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item
-	db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $84, GOLD_TEETH ; item
+	db SPRITE_BALL, $14 + 4, $8 + 4, $ff, $ff, ITEM | $1, MAX_POTION
+	db SPRITE_BALL, $7 + 4, $9 + 4, $ff, $ff, ITEM | $2, TM_32
+	db SPRITE_BALL, $12 + 4, $12 + 4, $ff, $ff, ITEM | $3, MAX_REVIVE
+	db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, ITEM | $4, GOLD_TEETH
 
 	; warp-to
 	EVENT_DISP SAFARI_ZONE_WEST_WIDTH, $0, $14 ; SAFARI_ZONE_NORTH
--- a/data/mapObjects/saffrongym.asm
+++ b/data/mapObjects/saffrongym.asm
@@ -38,14 +38,14 @@
 	db $0 ; signs
 
 	db $9 ; people
-	db SPRITE_GIRL, $8 + 4, $9 + 4, $ff, $d0, $41, SABRINA + $C8, $1 ; trainer
-	db SPRITE_MEDIUM, $1 + 4, $a + 4, $ff, $d0, $42, CHANNELER + $C8, $16 ; trainer
-	db SPRITE_BUG_CATCHER, $1 + 4, $11 + 4, $ff, $d0, $43, PSYCHIC_TR + $C8, $1 ; trainer
-	db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d0, $44, CHANNELER + $C8, $17 ; trainer
-	db SPRITE_BUG_CATCHER, $7 + 4, $11 + 4, $ff, $d0, $45, PSYCHIC_TR + $C8, $2 ; trainer
-	db SPRITE_MEDIUM, $d + 4, $3 + 4, $ff, $d0, $46, CHANNELER + $C8, $18 ; trainer
-	db SPRITE_BUG_CATCHER, $d + 4, $11 + 4, $ff, $d0, $47, PSYCHIC_TR + $C8, $3 ; trainer
-	db SPRITE_BUG_CATCHER, $1 + 4, $3 + 4, $ff, $d0, $48, PSYCHIC_TR + $C8, $4 ; trainer
+	db SPRITE_GIRL, $8 + 4, $9 + 4, $ff, $d0, TRAINER | $1, SABRINA + $C8, $1
+	db SPRITE_MEDIUM, $1 + 4, $a + 4, $ff, $d0, TRAINER | $2, CHANNELER + $C8, $16
+	db SPRITE_BUG_CATCHER, $1 + 4, $11 + 4, $ff, $d0, TRAINER | $3, PSYCHIC_TR + $C8, $1
+	db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d0, TRAINER | $4, CHANNELER + $C8, $17
+	db SPRITE_BUG_CATCHER, $7 + 4, $11 + 4, $ff, $d0, TRAINER | $5, PSYCHIC_TR + $C8, $2
+	db SPRITE_MEDIUM, $d + 4, $3 + 4, $ff, $d0, TRAINER | $6, CHANNELER + $C8, $18
+	db SPRITE_BUG_CATCHER, $d + 4, $11 + 4, $ff, $d0, TRAINER | $7, PSYCHIC_TR + $C8, $3
+	db SPRITE_BUG_CATCHER, $1 + 4, $3 + 4, $ff, $d0, TRAINER | $8, PSYCHIC_TR + $C8, $4
 	db SPRITE_GYM_HELPER, $f + 4, $a + 4, $ff, $d0, $9 ; person
 
 	; warp-to
--- a/data/mapObjects/seafoamislands5.asm
+++ b/data/mapObjects/seafoamislands5.asm
@@ -14,7 +14,7 @@
 	db $3 ; people
 	db SPRITE_BOULDER, $f + 4, $4 + 4, $ff, $ff, $1 ; person
 	db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $ff, $2 ; person
-	db SPRITE_BIRD, $1 + 4, $6 + 4, $ff, $d0, $43, ARTICUNO, 50 ; trainer
+	db SPRITE_BIRD, $1 + 4, $6 + 4, $ff, $d0, TRAINER | $3, ARTICUNO, 50
 
 	; warp-to
 	EVENT_DISP SEAFOAM_ISLANDS_5_WIDTH, $11, $14 ; SEAFOAM_ISLANDS_4
--- a/data/mapObjects/silphco10.asm
+++ b/data/mapObjects/silphco10.asm
@@ -12,12 +12,12 @@
 	db $0 ; signs
 
 	db $6 ; people
-	db SPRITE_ROCKET, $9 + 4, $1 + 4, $ff, $d3, $41, ROCKET + $C8, $27 ; trainer
-	db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d2, $42, SCIENTIST + $C8, $b ; trainer
+	db SPRITE_ROCKET, $9 + 4, $1 + 4, $ff, $d3, TRAINER | $1, ROCKET + $C8, $27
+	db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d2, TRAINER | $2, SCIENTIST + $C8, $b
 	db SPRITE_ERIKA, $f + 4, $9 + 4, $fe, $0, $3 ; person
-	db SPRITE_BALL, $c + 4, $2 + 4, $ff, $ff, $84, TM_26 ; item
-	db SPRITE_BALL, $e + 4, $4 + 4, $ff, $ff, $85, RARE_CANDY ; item
-	db SPRITE_BALL, $b + 4, $5 + 4, $ff, $ff, $86, CARBOS ; item
+	db SPRITE_BALL, $c + 4, $2 + 4, $ff, $ff, ITEM | $4, TM_26
+	db SPRITE_BALL, $e + 4, $4 + 4, $ff, $ff, ITEM | $5, RARE_CANDY
+	db SPRITE_BALL, $b + 4, $5 + 4, $ff, $ff, ITEM | $6, CARBOS
 
 	; warp-to
 	EVENT_DISP SILPH_CO_10F_WIDTH, $0, $8 ; SILPH_CO_9F
--- a/data/mapObjects/silphco11.asm
+++ b/data/mapObjects/silphco11.asm
@@ -12,9 +12,9 @@
 	db $5 ; people
 	db SPRITE_MR_MASTERBALL, $5 + 4, $7 + 4, $ff, $d0, $1 ; person
 	db SPRITE_FOULARD_WOMAN, $5 + 4, $a + 4, $ff, $d0, $2 ; person
-	db SPRITE_GIOVANNI, $9 + 4, $6 + 4, $ff, $d0, $43, GIOVANNI + $C8, $2 ; trainer
-	db SPRITE_ROCKET, $10 + 4, $3 + 4, $ff, $d1, $44, ROCKET + $C8, $29 ; trainer
-	db SPRITE_ROCKET, $9 + 4, $f + 4, $ff, $d1, $45, ROCKET + $C8, $28 ; trainer
+	db SPRITE_GIOVANNI, $9 + 4, $6 + 4, $ff, $d0, TRAINER | $3, GIOVANNI + $C8, $2
+	db SPRITE_ROCKET, $10 + 4, $3 + 4, $ff, $d1, TRAINER | $4, ROCKET + $C8, $29
+	db SPRITE_ROCKET, $9 + 4, $f + 4, $ff, $d1, TRAINER | $5, ROCKET + $C8, $28
 
 	; warp-to
 	EVENT_DISP SILPH_CO_11F_WIDTH, $0, $9 ; SILPH_CO_10F
--- a/data/mapObjects/silphco2.asm
+++ b/data/mapObjects/silphco2.asm
@@ -14,10 +14,10 @@
 
 	db $5 ; people
 	db SPRITE_ERIKA, $1 + 4, $a + 4, $ff, $d1, $1 ; person
-	db SPRITE_OAK_AIDE, $c + 4, $5 + 4, $ff, $d0, $42, SCIENTIST + $C8, $2 ; trainer
-	db SPRITE_OAK_AIDE, $d + 4, $18 + 4, $ff, $d2, $43, SCIENTIST + $C8, $3 ; trainer
-	db SPRITE_ROCKET, $b + 4, $10 + 4, $ff, $d1, $44, ROCKET + $C8, $17 ; trainer
-	db SPRITE_ROCKET, $7 + 4, $18 + 4, $ff, $d1, $45, ROCKET + $C8, $18 ; trainer
+	db SPRITE_OAK_AIDE, $c + 4, $5 + 4, $ff, $d0, TRAINER | $2, SCIENTIST + $C8, $2
+	db SPRITE_OAK_AIDE, $d + 4, $18 + 4, $ff, $d2, TRAINER | $3, SCIENTIST + $C8, $3
+	db SPRITE_ROCKET, $b + 4, $10 + 4, $ff, $d1, TRAINER | $4, ROCKET + $C8, $17
+	db SPRITE_ROCKET, $7 + 4, $18 + 4, $ff, $d1, TRAINER | $5, ROCKET + $C8, $18
 
 	; warp-to
 	EVENT_DISP SILPH_CO_2F_WIDTH, $0, $18 ; SILPH_CO_1F
--- a/data/mapObjects/silphco3.asm
+++ b/data/mapObjects/silphco3.asm
@@ -17,9 +17,9 @@
 
 	db $4 ; people
 	db SPRITE_LAPRAS_GIVER, $8 + 4, $18 + 4, $ff, $ff, $1 ; person
-	db SPRITE_ROCKET, $7 + 4, $14 + 4, $ff, $d2, $42, ROCKET + $C8, $19 ; trainer
-	db SPRITE_OAK_AIDE, $9 + 4, $7 + 4, $ff, $d0, $43, SCIENTIST + $C8, $4 ; trainer
-	db SPRITE_BALL, $5 + 4, $8 + 4, $ff, $ff, $84, HYPER_POTION ; item
+	db SPRITE_ROCKET, $7 + 4, $14 + 4, $ff, $d2, TRAINER | $2, ROCKET + $C8, $19
+	db SPRITE_OAK_AIDE, $9 + 4, $7 + 4, $ff, $d0, TRAINER | $3, SCIENTIST + $C8, $4
+	db SPRITE_BALL, $5 + 4, $8 + 4, $ff, $ff, ITEM | $4, HYPER_POTION
 
 	; warp-to
 	EVENT_DISP SILPH_CO_3F_WIDTH, $0, $1a ; SILPH_CO_2F
--- a/data/mapObjects/silphco4.asm
+++ b/data/mapObjects/silphco4.asm
@@ -14,12 +14,12 @@
 
 	db $7 ; people
 	db SPRITE_LAPRAS_GIVER, $2 + 4, $6 + 4, $ff, $ff, $1 ; person
-	db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, $42, ROCKET + $C8, $1a ; trainer
-	db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, $43, SCIENTIST + $C8, $5 ; trainer
-	db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, $44, ROCKET + $C8, $1b ; trainer
-	db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, $85, FULL_HEAL ; item
-	db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, $86, MAX_REVIVE ; item
-	db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, $87, ESCAPE_ROPE ; item
+	db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, TRAINER | $2, ROCKET + $C8, $1a
+	db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, TRAINER | $3, SCIENTIST + $C8, $5
+	db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, TRAINER | $4, ROCKET + $C8, $1b
+	db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, ITEM | $5, FULL_HEAL
+	db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, ITEM | $6, MAX_REVIVE
+	db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, ITEM | $7, ESCAPE_ROPE
 
 	; warp-to
 	EVENT_DISP SILPH_CO_4F_WIDTH, $0, $18 ; SILPH_CO_3F
--- a/data/mapObjects/silphco5.asm
+++ b/data/mapObjects/silphco5.asm
@@ -14,13 +14,13 @@
 
 	db $b ; people
 	db SPRITE_LAPRAS_GIVER, $9 + 4, $d + 4, $ff, $ff, $1 ; person
-	db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, $42, ROCKET + $C8, $1c ; trainer
-	db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, $43, SCIENTIST + $C8, $6 ; trainer
-	db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, $44, JUGGLER + $C8, $1 ; trainer
-	db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, $45, ROCKET + $C8, $1d ; trainer
-	db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, $86, TM_09 ; item
-	db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, $87, PROTEIN ; item
-	db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, $88, CARD_KEY ; item
+	db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, TRAINER | $2, ROCKET + $C8, $1c
+	db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, TRAINER | $3, SCIENTIST + $C8, $6
+	db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, TRAINER | $4, JUGGLER + $C8, $1
+	db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, TRAINER | $5, ROCKET + $C8, $1d
+	db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, ITEM | $6, TM_09
+	db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, ITEM | $7, PROTEIN
+	db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, ITEM | $8, CARD_KEY
 	db SPRITE_CLIPBOARD, $c + 4, $16 + 4, $ff, $ff, $9 ; person
 	db SPRITE_CLIPBOARD, $a + 4, $19 + 4, $ff, $ff, $a ; person
 	db SPRITE_CLIPBOARD, $6 + 4, $18 + 4, $ff, $ff, $b ; person
--- a/data/mapObjects/silphco6.asm
+++ b/data/mapObjects/silphco6.asm
@@ -16,11 +16,11 @@
 	db SPRITE_ERIKA, $6 + 4, $15 + 4, $ff, $d0, $3 ; person
 	db SPRITE_ERIKA, $a + 4, $b + 4, $ff, $d3, $4 ; person
 	db SPRITE_LAPRAS_GIVER, $d + 4, $12 + 4, $ff, $d1, $5 ; person
-	db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, $46, ROCKET + $C8, $1e ; trainer
-	db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, $47, SCIENTIST + $C8, $7 ; trainer
-	db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, $48, ROCKET + $C8, $1f ; trainer
-	db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, $89, HP_UP ; item
-	db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, $8a, X_ACCURACY ; item
+	db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, TRAINER | $6, ROCKET + $C8, $1e
+	db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, TRAINER | $7, SCIENTIST + $C8, $7
+	db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, TRAINER | $8, ROCKET + $C8, $1f
+	db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, ITEM | $9, HP_UP
+	db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, ITEM | $a, X_ACCURACY
 
 	; warp-to
 	EVENT_DISP SILPH_CO_6F_WIDTH, $0, $10 ; SILPH_CO_7F
--- a/data/mapObjects/silphco7.asm
+++ b/data/mapObjects/silphco7.asm
@@ -16,13 +16,13 @@
 	db SPRITE_LAPRAS_GIVER, $d + 4, $d + 4, $ff, $d1, $2 ; person
 	db SPRITE_LAPRAS_GIVER, $a + 4, $7 + 4, $ff, $ff, $3 ; person
 	db SPRITE_ERIKA, $8 + 4, $a + 4, $ff, $ff, $4 ; person
-	db SPRITE_ROCKET, $1 + 4, $d + 4, $ff, $d0, $45, ROCKET + $C8, $20 ; trainer
-	db SPRITE_OAK_AIDE, $d + 4, $2 + 4, $ff, $d0, $46, SCIENTIST + $C8, $8 ; trainer
-	db SPRITE_ROCKET, $2 + 4, $14 + 4, $ff, $d2, $47, ROCKET + $C8, $21 ; trainer
-	db SPRITE_ROCKET, $e + 4, $13 + 4, $ff, $d3, $48, ROCKET + $C8, $22 ; trainer
+	db SPRITE_ROCKET, $1 + 4, $d + 4, $ff, $d0, TRAINER | $5, ROCKET + $C8, $20
+	db SPRITE_OAK_AIDE, $d + 4, $2 + 4, $ff, $d0, TRAINER | $6, SCIENTIST + $C8, $8
+	db SPRITE_ROCKET, $2 + 4, $14 + 4, $ff, $d2, TRAINER | $7, ROCKET + $C8, $21
+	db SPRITE_ROCKET, $e + 4, $13 + 4, $ff, $d3, TRAINER | $8, ROCKET + $C8, $22
 	db SPRITE_BLUE, $7 + 4, $3 + 4, $ff, $d1, $9 ; person
-	db SPRITE_BALL, $9 + 4, $1 + 4, $ff, $ff, $8a, CALCIUM ; item
-	db SPRITE_BALL, $b + 4, $18 + 4, $ff, $ff, $8b, TM_03 ; item
+	db SPRITE_BALL, $9 + 4, $1 + 4, $ff, $ff, ITEM | $a, CALCIUM
+	db SPRITE_BALL, $b + 4, $18 + 4, $ff, $ff, ITEM | $b, TM_03
 
 	; warp-to
 	EVENT_DISP SILPH_CO_7F_WIDTH, $0, $10 ; SILPH_CO_8F
--- a/data/mapObjects/silphco8.asm
+++ b/data/mapObjects/silphco8.asm
@@ -14,9 +14,9 @@
 
 	db $4 ; people
 	db SPRITE_LAPRAS_GIVER, $2 + 4, $4 + 4, $ff, $ff, $1 ; person
-	db SPRITE_ROCKET, $2 + 4, $13 + 4, $ff, $d2, $42, ROCKET + $C8, $23 ; trainer
-	db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d0, $43, SCIENTIST + $C8, $9 ; trainer
-	db SPRITE_ROCKET, $f + 4, $c + 4, $ff, $d3, $44, ROCKET + $C8, $24 ; trainer
+	db SPRITE_ROCKET, $2 + 4, $13 + 4, $ff, $d2, TRAINER | $2, ROCKET + $C8, $23
+	db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d0, TRAINER | $3, SCIENTIST + $C8, $9
+	db SPRITE_ROCKET, $f + 4, $c + 4, $ff, $d3, TRAINER | $4, ROCKET + $C8, $24
 
 	; warp-to
 	EVENT_DISP SILPH_CO_8F_WIDTH, $0, $10 ; SILPH_CO_9F
--- a/data/mapObjects/silphco9.asm
+++ b/data/mapObjects/silphco9.asm
@@ -12,9 +12,9 @@
 
 	db $4 ; people
 	db SPRITE_NURSE, $e + 4, $3 + 4, $ff, $d0, $1 ; person
-	db SPRITE_ROCKET, $4 + 4, $2 + 4, $ff, $d1, $42, ROCKET + $C8, $25 ; trainer
-	db SPRITE_OAK_AIDE, $d + 4, $15 + 4, $ff, $d0, $43, SCIENTIST + $C8, $a ; trainer
-	db SPRITE_ROCKET, $10 + 4, $d + 4, $ff, $d1, $44, ROCKET + $C8, $26 ; trainer
+	db SPRITE_ROCKET, $4 + 4, $2 + 4, $ff, $d1, TRAINER | $2, ROCKET + $C8, $25
+	db SPRITE_OAK_AIDE, $d + 4, $15 + 4, $ff, $d0, TRAINER | $3, SCIENTIST + $C8, $a
+	db SPRITE_ROCKET, $10 + 4, $d + 4, $ff, $d1, TRAINER | $4, ROCKET + $C8, $26
 
 	; warp-to
 	EVENT_DISP SILPH_CO_9F_WIDTH, $0, $e ; SILPH_CO_10F
--- a/data/mapObjects/ssanne10.asm
+++ b/data/mapObjects/ssanne10.asm
@@ -16,17 +16,17 @@
 	db $0 ; signs
 
 	db $b ; people
-	db SPRITE_SAILOR, $d + 4, $0 + 4, $ff, $d0, $41, SAILOR + $C8, $3 ; trainer
-	db SPRITE_SAILOR, $b + 4, $2 + 4, $ff, $d0, $42, SAILOR + $C8, $4 ; trainer
-	db SPRITE_SAILOR, $3 + 4, $c + 4, $ff, $d2, $43, SAILOR + $C8, $5 ; trainer
-	db SPRITE_SAILOR, $2 + 4, $16 + 4, $ff, $d0, $44, SAILOR + $C8, $6 ; trainer
-	db SPRITE_SAILOR, $2 + 4, $0 + 4, $ff, $d3, $45, SAILOR + $C8, $7 ; trainer
-	db SPRITE_FISHER2, $4 + 4, $0 + 4, $ff, $d3, $46, FISHER + $C8, $2 ; trainer
+	db SPRITE_SAILOR, $d + 4, $0 + 4, $ff, $d0, TRAINER | $1, SAILOR + $C8, $3
+	db SPRITE_SAILOR, $b + 4, $2 + 4, $ff, $d0, TRAINER | $2, SAILOR + $C8, $4
+	db SPRITE_SAILOR, $3 + 4, $c + 4, $ff, $d2, TRAINER | $3, SAILOR + $C8, $5
+	db SPRITE_SAILOR, $2 + 4, $16 + 4, $ff, $d0, TRAINER | $4, SAILOR + $C8, $6
+	db SPRITE_SAILOR, $2 + 4, $0 + 4, $ff, $d3, TRAINER | $5, SAILOR + $C8, $7
+	db SPRITE_FISHER2, $4 + 4, $0 + 4, $ff, $d3, TRAINER | $6, FISHER + $C8, $2
 	db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $a + 4, $ff, $d3, $7 ; person
 	db SPRITE_SLOWBRO, $c + 4, $b + 4, $ff, $ff, $8 ; person
-	db SPRITE_BALL, $2 + 4, $14 + 4, $ff, $ff, $89, ETHER ; item
-	db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $8a, TM_44 ; item
-	db SPRITE_BALL, $b + 4, $c + 4, $ff, $ff, $8b, MAX_POTION ; item
+	db SPRITE_BALL, $2 + 4, $14 + 4, $ff, $ff, ITEM | $9, ETHER
+	db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, ITEM | $a, TM_44
+	db SPRITE_BALL, $b + 4, $c + 4, $ff, $ff, ITEM | $b, MAX_POTION
 
 	; warp-to
 	EVENT_DISP SS_ANNE_10_WIDTH, $5, $2 ; SS_ANNE_4
--- a/data/mapObjects/ssanne2.asm
+++ b/data/mapObjects/ssanne2.asm
@@ -16,7 +16,7 @@
 
 	db $2 ; people
 	db SPRITE_WAITER, $7 + 4, $3 + 4, $fe, $1, $1 ; person
-	db SPRITE_BLUE, $4 + 4, $24 + 4, $ff, $d0, $42, SONY1 + $C8, $1 ; trainer
+	db SPRITE_BLUE, $4 + 4, $24 + 4, $ff, $d0, TRAINER | $2, SONY1 + $C8, $1
 
 	; warp-to
 	EVENT_DISP SS_ANNE_2_WIDTH, $b, $9 ; SS_ANNE_9
--- a/data/mapObjects/ssanne5.asm
+++ b/data/mapObjects/ssanne5.asm
@@ -11,8 +11,8 @@
 	db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $5 + 4, $ff, $d1, $1 ; person
 	db SPRITE_SAILOR, $9 + 4, $4 + 4, $ff, $ff, $2 ; person
 	db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $7 + 4, $ff, $ff, $3 ; person
-	db SPRITE_SAILOR, $4 + 4, $4 + 4, $ff, $d0, $44, SAILOR + $C8, $1 ; trainer
-	db SPRITE_SAILOR, $8 + 4, $a + 4, $ff, $d1, $45, SAILOR + $C8, $2 ; trainer
+	db SPRITE_SAILOR, $4 + 4, $4 + 4, $ff, $d0, TRAINER | $4, SAILOR + $C8, $1
+	db SPRITE_SAILOR, $8 + 4, $a + 4, $ff, $d1, TRAINER | $5, SAILOR + $C8, $2
 
 	; warp-to
 	EVENT_DISP SS_ANNE_5_WIDTH, $6, $d ; SS_ANNE_3
--- a/data/mapObjects/ssanne8.asm
+++ b/data/mapObjects/ssanne8.asm
@@ -12,16 +12,16 @@
 	db $0 ; signs
 
 	db $b ; people
-	db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d2, $41, GENTLEMAN + $C8, $1 ; trainer
-	db SPRITE_GENTLEMAN, $4 + 4, $b + 4, $ff, $d1, $42, GENTLEMAN + $C8, $2 ; trainer
-	db SPRITE_BUG_CATCHER, $e + 4, $b + 4, $ff, $d1, $43, YOUNGSTER + $C8, $8 ; trainer
-	db SPRITE_LASS, $b + 4, $d + 4, $ff, $d2, $44, LASS + $C8, $b ; trainer
+	db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d2, TRAINER | $1, GENTLEMAN + $C8, $1
+	db SPRITE_GENTLEMAN, $4 + 4, $b + 4, $ff, $d1, TRAINER | $2, GENTLEMAN + $C8, $2
+	db SPRITE_BUG_CATCHER, $e + 4, $b + 4, $ff, $d1, TRAINER | $3, YOUNGSTER + $C8, $8
+	db SPRITE_LASS, $b + 4, $d + 4, $ff, $d2, TRAINER | $4, LASS + $C8, $b
 	db SPRITE_GIRL, $3 + 4, $16 + 4, $fe, $1, $5 ; person
 	db SPRITE_FAT_BALD_GUY, $e + 4, $0 + 4, $ff, $ff, $6 ; person
 	db SPRITE_LITTLE_GIRL, $b + 4, $2 + 4, $ff, $d0, $7 ; person
 	db SPRITE_CLEFAIRY, $b + 4, $3 + 4, $ff, $d0, $8 ; person
 	db SPRITE_GIRL, $d + 4, $a + 4, $ff, $d3, $9 ; person
-	db SPRITE_BALL, $f + 4, $c + 4, $ff, $ff, $8a, TM_08 ; item
+	db SPRITE_BALL, $f + 4, $c + 4, $ff, $ff, ITEM | $a, TM_08
 	db SPRITE_GENTLEMAN, $d + 4, $15 + 4, $fe, $2, $b ; person
 
 	; warp-to
--- a/data/mapObjects/ssanne9.asm
+++ b/data/mapObjects/ssanne9.asm
@@ -18,15 +18,15 @@
 	db $0 ; signs
 
 	db $d ; people
-	db SPRITE_GENTLEMAN, $2 + 4, $a + 4, $ff, $d3, $41, GENTLEMAN + $C8, $3 ; trainer
-	db SPRITE_FISHER2, $4 + 4, $d + 4, $ff, $d2, $42, FISHER + $C8, $1 ; trainer
-	db SPRITE_GENTLEMAN, $e + 4, $0 + 4, $ff, $d3, $43, GENTLEMAN + $C8, $5 ; trainer
-	db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d0, $44, LASS + $C8, $c ; trainer
+	db SPRITE_GENTLEMAN, $2 + 4, $a + 4, $ff, $d3, TRAINER | $1, GENTLEMAN + $C8, $3
+	db SPRITE_FISHER2, $4 + 4, $d + 4, $ff, $d2, TRAINER | $2, FISHER + $C8, $1
+	db SPRITE_GENTLEMAN, $e + 4, $0 + 4, $ff, $d3, TRAINER | $3, GENTLEMAN + $C8, $5
+	db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d0, TRAINER | $4, LASS + $C8, $c
 	db SPRITE_GENTLEMAN, $2 + 4, $1 + 4, $ff, $d0, $5 ; person
-	db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $86, MAX_ETHER ; item
+	db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, ITEM | $6, MAX_ETHER
 	db SPRITE_GENTLEMAN, $2 + 4, $15 + 4, $ff, $d0, $7 ; person
 	db SPRITE_OLD_PERSON, $1 + 4, $16 + 4, $ff, $d0, $8 ; person
-	db SPRITE_BALL, $c + 4, $0 + 4, $ff, $ff, $89, RARE_CANDY ; item
+	db SPRITE_BALL, $c + 4, $0 + 4, $ff, $ff, ITEM | $9, RARE_CANDY
 	db SPRITE_GENTLEMAN, $c + 4, $c + 4, $ff, $d0, $a ; person
 	db SPRITE_YOUNG_BOY, $e + 4, $b + 4, $ff, $ff, $b ; person
 	db SPRITE_BRUNETTE_GIRL, $c + 4, $16 + 4, $ff, $d2, $c ; person
--- a/data/mapObjects/unknowndungeon1.asm
+++ b/data/mapObjects/unknowndungeon1.asm
@@ -15,9 +15,9 @@
 	db $0 ; signs
 
 	db $3 ; people
-	db SPRITE_BALL, $d + 4, $7 + 4, $ff, $ff, $81, FULL_RESTORE ; item
-	db SPRITE_BALL, $3 + 4, $13 + 4, $ff, $ff, $82, MAX_ELIXER ; item
-	db SPRITE_BALL, $0 + 4, $5 + 4, $ff, $ff, $83, NUGGET ; item
+	db SPRITE_BALL, $d + 4, $7 + 4, $ff, $ff, ITEM | $1, FULL_RESTORE
+	db SPRITE_BALL, $3 + 4, $13 + 4, $ff, $ff, ITEM | $2, MAX_ELIXER
+	db SPRITE_BALL, $0 + 4, $5 + 4, $ff, $ff, ITEM | $3, NUGGET
 
 	; warp-to
 	EVENT_DISP UNKNOWN_DUNGEON_1_WIDTH, $11, $18
--- a/data/mapObjects/unknowndungeon2.asm
+++ b/data/mapObjects/unknowndungeon2.asm
@@ -12,9 +12,9 @@
 	db $0 ; signs
 
 	db $3 ; people
-	db SPRITE_BALL, $9 + 4, $1d + 4, $ff, $ff, $81, PP_UP ; item
-	db SPRITE_BALL, $f + 4, $4 + 4, $ff, $ff, $82, ULTRA_BALL ; item
-	db SPRITE_BALL, $6 + 4, $d + 4, $ff, $ff, $83, FULL_RESTORE ; item
+	db SPRITE_BALL, $9 + 4, $1d + 4, $ff, $ff, ITEM | $1, PP_UP
+	db SPRITE_BALL, $f + 4, $4 + 4, $ff, $ff, ITEM | $2, ULTRA_BALL
+	db SPRITE_BALL, $6 + 4, $d + 4, $ff, $ff, ITEM | $3, FULL_RESTORE
 
 	; warp-to
 	EVENT_DISP UNKNOWN_DUNGEON_2_WIDTH, $1, $1d ; UNKNOWN_DUNGEON_1
--- a/data/mapObjects/unknowndungeon3.asm
+++ b/data/mapObjects/unknowndungeon3.asm
@@ -7,9 +7,9 @@
 	db $0 ; signs
 
 	db $3 ; people
-	db SPRITE_SLOWBRO, $d + 4, $1b + 4, $ff, $d0, $41, MEWTWO, 70 ; trainer
-	db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $82, ULTRA_BALL ; item
-	db SPRITE_BALL, $1 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item
+	db SPRITE_SLOWBRO, $d + 4, $1b + 4, $ff, $d0, TRAINER | $1, MEWTWO, 70
+	db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, ITEM | $2, ULTRA_BALL
+	db SPRITE_BALL, $1 + 4, $12 + 4, $ff, $ff, ITEM | $3, MAX_REVIVE
 
 	; warp-to
 	EVENT_DISP UNKNOWN_DUNGEON_3_WIDTH, $6, $3 ; UNKNOWN_DUNGEON_1
--- a/data/mapObjects/vermiliongym.asm
+++ b/data/mapObjects/vermiliongym.asm
@@ -8,10 +8,10 @@
 	db $0 ; signs
 
 	db $5 ; people
-	db SPRITE_ROCKER, $1 + 4, $5 + 4, $ff, $d0, $41, LT__SURGE + $C8, $1 ; trainer
-	db SPRITE_GENTLEMAN, $6 + 4, $9 + 4, $ff, $d2, $42, GENTLEMAN + $C8, $3 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d2, $43, ROCKER + $C8, $1 ; trainer
-	db SPRITE_SAILOR, $a + 4, $0 + 4, $ff, $d3, $44, SAILOR + $C8, $8 ; trainer
+	db SPRITE_ROCKER, $1 + 4, $5 + 4, $ff, $d0, TRAINER | $1, LT__SURGE + $C8, $1
+	db SPRITE_GENTLEMAN, $6 + 4, $9 + 4, $ff, $d2, TRAINER | $2, GENTLEMAN + $C8, $3
+	db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d2, TRAINER | $3, ROCKER + $C8, $1
+	db SPRITE_SAILOR, $a + 4, $0 + 4, $ff, $d3, TRAINER | $4, SAILOR + $C8, $8
 	db SPRITE_GYM_HELPER, $e + 4, $4 + 4, $ff, $d0, $5 ; person
 
 	; warp-to
--- a/data/mapObjects/victoryroad1.asm
+++ b/data/mapObjects/victoryroad1.asm
@@ -9,10 +9,10 @@
 	db $0 ; signs
 
 	db $7 ; people
-	db SPRITE_LASS, $5 + 4, $7 + 4, $ff, $d3, $41, COOLTRAINER_F + $C8, $5 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $3 + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $5 ; trainer
-	db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $83, TM_43 ; item
-	db SPRITE_BALL, $2 + 4, $9 + 4, $ff, $ff, $84, RARE_CANDY ; item
+	db SPRITE_LASS, $5 + 4, $7 + 4, $ff, $d3, TRAINER | $1, COOLTRAINER_F + $C8, $5
+	db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $3 + 4, $ff, $d0, TRAINER | $2, COOLTRAINER_M + $C8, $5
+	db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, ITEM | $3, TM_43
+	db SPRITE_BALL, $2 + 4, $9 + 4, $ff, $ff, ITEM | $4, RARE_CANDY
 	db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $10, $5 ; person
 	db SPRITE_BOULDER, $2 + 4, $e + 4, $ff, $10, $6 ; person
 	db SPRITE_BOULDER, $a + 4, $2 + 4, $ff, $10, $7 ; person
--- a/data/mapObjects/victoryroad2.asm
+++ b/data/mapObjects/victoryroad2.asm
@@ -13,16 +13,16 @@
 	db $0 ; signs
 
 	db $d ; people
-	db SPRITE_HIKER, $9 + 4, $c + 4, $ff, $d2, $41, BLACKBELT + $C8, $9 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $15 + 4, $ff, $d2, $42, JUGGLER + $C8, $2 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $8 + 4, $13 + 4, $ff, $d0, $43, TAMER + $C8, $5 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $d0, $44, POKEMANIAC + $C8, $6 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_2, $3 + 4, $1a + 4, $ff, $d2, $45, JUGGLER + $C8, $5 ; trainer
-	db SPRITE_BIRD, $5 + 4, $b + 4, $ff, $d1, $46, MOLTRES, 50 ; trainer
-	db SPRITE_BALL, $5 + 4, $1b + 4, $ff, $ff, $87, TM_17 ; item
-	db SPRITE_BALL, $9 + 4, $12 + 4, $ff, $ff, $88, FULL_HEAL ; item
-	db SPRITE_BALL, $b + 4, $9 + 4, $ff, $ff, $89, TM_05 ; item
-	db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $8a, GUARD_SPEC_ ; item
+	db SPRITE_HIKER, $9 + 4, $c + 4, $ff, $d2, TRAINER | $1, BLACKBELT + $C8, $9
+	db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $15 + 4, $ff, $d2, TRAINER | $2, JUGGLER + $C8, $2
+	db SPRITE_BLACK_HAIR_BOY_1, $8 + 4, $13 + 4, $ff, $d0, TRAINER | $3, TAMER + $C8, $5
+	db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $d0, TRAINER | $4, POKEMANIAC + $C8, $6
+	db SPRITE_BLACK_HAIR_BOY_2, $3 + 4, $1a + 4, $ff, $d2, TRAINER | $5, JUGGLER + $C8, $5
+	db SPRITE_BIRD, $5 + 4, $b + 4, $ff, $d1, TRAINER | $6, MOLTRES, 50
+	db SPRITE_BALL, $5 + 4, $1b + 4, $ff, $ff, ITEM | $7, TM_17
+	db SPRITE_BALL, $9 + 4, $12 + 4, $ff, $ff, ITEM | $8, FULL_HEAL
+	db SPRITE_BALL, $b + 4, $9 + 4, $ff, $ff, ITEM | $9, TM_05
+	db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, ITEM | $a, GUARD_SPEC_
 	db SPRITE_BOULDER, $e + 4, $4 + 4, $ff, $10, $b ; person
 	db SPRITE_BOULDER, $5 + 4, $5 + 4, $ff, $10, $c ; person
 	db SPRITE_BOULDER, $10 + 4, $17 + 4, $ff, $10, $d ; person
--- a/data/mapObjects/victoryroad3.asm
+++ b/data/mapObjects/victoryroad3.asm
@@ -10,12 +10,12 @@
 	db $0 ; signs
 
 	db $a ; people
-	db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $1c + 4, $ff, $d2, $41, COOLTRAINER_M + $C8, $2 ; trainer
-	db SPRITE_LASS, $d + 4, $7 + 4, $ff, $d3, $42, COOLTRAINER_F + $C8, $2 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $e + 4, $6 + 4, $ff, $d2, $43, COOLTRAINER_M + $C8, $3 ; trainer
-	db SPRITE_LASS, $3 + 4, $d + 4, $ff, $d3, $44, COOLTRAINER_F + $C8, $3 ; trainer
-	db SPRITE_BALL, $5 + 4, $1a + 4, $ff, $ff, $85, MAX_REVIVE ; item
-	db SPRITE_BALL, $7 + 4, $7 + 4, $ff, $ff, $86, TM_47 ; item
+	db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $1c + 4, $ff, $d2, TRAINER | $1, COOLTRAINER_M + $C8, $2
+	db SPRITE_LASS, $d + 4, $7 + 4, $ff, $d3, TRAINER | $2, COOLTRAINER_F + $C8, $2
+	db SPRITE_BLACK_HAIR_BOY_1, $e + 4, $6 + 4, $ff, $d2, TRAINER | $3, COOLTRAINER_M + $C8, $3
+	db SPRITE_LASS, $3 + 4, $d + 4, $ff, $d3, TRAINER | $4, COOLTRAINER_F + $C8, $3
+	db SPRITE_BALL, $5 + 4, $1a + 4, $ff, $ff, ITEM | $5, MAX_REVIVE
+	db SPRITE_BALL, $7 + 4, $7 + 4, $ff, $ff, ITEM | $6, TM_47
 	db SPRITE_BOULDER, $3 + 4, $16 + 4, $ff, $10, $7 ; person
 	db SPRITE_BOULDER, $c + 4, $d + 4, $ff, $10, $8 ; person
 	db SPRITE_BOULDER, $a + 4, $18 + 4, $ff, $10, $9 ; person
--- a/data/mapObjects/viridianforest.asm
+++ b/data/mapObjects/viridianforest.asm
@@ -19,12 +19,12 @@
 
 	db $8 ; people
 	db SPRITE_BUG_CATCHER, $2b + 4, $10 + 4, $ff, $ff, $1 ; person
-	db SPRITE_BUG_CATCHER, $21 + 4, $1e + 4, $ff, $d2, $42, BUG_CATCHER + $C8, $1 ; trainer
-	db SPRITE_BUG_CATCHER, $13 + 4, $1e + 4, $ff, $d2, $43, BUG_CATCHER + $C8, $2 ; trainer
-	db SPRITE_BUG_CATCHER, $12 + 4, $2 + 4, $ff, $d2, $44, BUG_CATCHER + $C8, $3 ; trainer
-	db SPRITE_BALL, $b + 4, $19 + 4, $ff, $ff, $85, ANTIDOTE ; item
-	db SPRITE_BALL, $1d + 4, $c + 4, $ff, $ff, $86, POTION ; item
-	db SPRITE_BALL, $1f + 4, $1 + 4, $ff, $ff, $87, POKE_BALL ; item
+	db SPRITE_BUG_CATCHER, $21 + 4, $1e + 4, $ff, $d2, TRAINER | $2, BUG_CATCHER + $C8, $1
+	db SPRITE_BUG_CATCHER, $13 + 4, $1e + 4, $ff, $d2, TRAINER | $3, BUG_CATCHER + $C8, $2
+	db SPRITE_BUG_CATCHER, $12 + 4, $2 + 4, $ff, $d2, TRAINER | $4, BUG_CATCHER + $C8, $3
+	db SPRITE_BALL, $b + 4, $19 + 4, $ff, $ff, ITEM | $5, ANTIDOTE
+	db SPRITE_BALL, $1d + 4, $c + 4, $ff, $ff, ITEM | $6, POTION
+	db SPRITE_BALL, $1f + 4, $1 + 4, $ff, $ff, ITEM | $7, POKE_BALL
 	db SPRITE_BUG_CATCHER, $28 + 4, $1b + 4, $ff, $ff, $8 ; person
 
 	; warp-to
--- a/data/mapObjects/viridiangym.asm
+++ b/data/mapObjects/viridiangym.asm
@@ -8,17 +8,17 @@
 	db $0 ; signs
 
 	db $b ; people
-	db SPRITE_GIOVANNI, $1 + 4, $2 + 4, $ff, $d0, $41, GIOVANNI + $C8, $3 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $c + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $9 ; trainer
-	db SPRITE_HIKER, $b + 4, $b + 4, $ff, $d1, $43, BLACKBELT + $C8, $6 ; trainer
-	db SPRITE_ROCKER, $7 + 4, $a + 4, $ff, $d0, $44, TAMER + $C8, $3 ; trainer
-	db SPRITE_HIKER, $7 + 4, $3 + 4, $ff, $d2, $45, BLACKBELT + $C8, $7 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $d + 4, $ff, $d3, $46, COOLTRAINER_M + $C8, $a ; trainer
-	db SPRITE_HIKER, $1 + 4, $a + 4, $ff, $d0, $47, BLACKBELT + $C8, $8 ; trainer
-	db SPRITE_ROCKER, $10 + 4, $2 + 4, $ff, $d3, $48, TAMER + $C8, $4 ; trainer
-	db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $6 + 4, $ff, $d0, $49, COOLTRAINER_M + $C8, $1 ; trainer
+	db SPRITE_GIOVANNI, $1 + 4, $2 + 4, $ff, $d0, TRAINER | $1, GIOVANNI + $C8, $3
+	db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $c + 4, $ff, $d0, TRAINER | $2, COOLTRAINER_M + $C8, $9
+	db SPRITE_HIKER, $b + 4, $b + 4, $ff, $d1, TRAINER | $3, BLACKBELT + $C8, $6
+	db SPRITE_ROCKER, $7 + 4, $a + 4, $ff, $d0, TRAINER | $4, TAMER + $C8, $3
+	db SPRITE_HIKER, $7 + 4, $3 + 4, $ff, $d2, TRAINER | $5, BLACKBELT + $C8, $7
+	db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $d + 4, $ff, $d3, TRAINER | $6, COOLTRAINER_M + $C8, $a
+	db SPRITE_HIKER, $1 + 4, $a + 4, $ff, $d0, TRAINER | $7, BLACKBELT + $C8, $8
+	db SPRITE_ROCKER, $10 + 4, $2 + 4, $ff, $d3, TRAINER | $8, TAMER + $C8, $4
+	db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $6 + 4, $ff, $d0, TRAINER | $9, COOLTRAINER_M + $C8, $1
 	db SPRITE_GYM_HELPER, $f + 4, $10 + 4, $ff, $d0, $a ; person
-	db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $8b, REVIVE ; item
+	db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, ITEM | $b, REVIVE
 
 	; warp-to
 	EVENT_DISP VIRIDIAN_GYM_WIDTH, $11, $10