summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--README.md6
-rw-r--r--battle-e/08-A001.asm2
-rw-r--r--battle-e/08-A002.asm2
-rw-r--r--battle-e/08-A003.asm2
-rw-r--r--battle-e/08-A004.asm2
-rw-r--r--battle-e/08-A005.asm2
-rw-r--r--battle-e/08-A006.asm2
-rw-r--r--battle-e/08-A007.asm2
-rw-r--r--battle-e/08-A008.asm2
-rw-r--r--battle-e/08-A009.asm2
-rw-r--r--battle-e/08-A010.asm2
-rw-r--r--battle-e/08-A011.asm2
-rw-r--r--battle-e/08-A012.asm2
-rw-r--r--battle-e/08-A013.asm2
-rw-r--r--battle-e/08-A014.asm2
-rw-r--r--battle-e/08-A015.asm2
-rw-r--r--battle-e/08-A016.asm2
-rw-r--r--battle-e/08-A017.asm2
-rw-r--r--battle-e/08-A018.asm2
-rw-r--r--battle-e/08-A019.asm2
-rw-r--r--battle-e/08-A020.asm2
-rw-r--r--battle-e/08-A021.asm2
-rw-r--r--battle-e/08-A022.asm2
-rw-r--r--battle-e/08-A023.asm2
-rw-r--r--battle-e/08-A024.asm2
-rw-r--r--battle-e/08-A025.asm2
-rw-r--r--battle-e/08-A026.asm2
-rw-r--r--battle-e/08-A027.asm2
-rw-r--r--battle-e/08-A028.asm2
-rw-r--r--battle-e/08-A029.asm2
-rw-r--r--battle-e/08-A030.asm2
-rw-r--r--battle-e/08-A031.asm2
-rw-r--r--battle-e/08-A032.asm2
-rw-r--r--battle-e/08-A033.asm2
-rw-r--r--battle-e/08-A034.asm2
-rw-r--r--battle-e/08-A035.asm2
-rw-r--r--battle-e/08-A036.asm2
-rw-r--r--battle-e/08-A037.asm2
-rw-r--r--battle-e/08-A038.asm2
-rw-r--r--battle-e/08-A039.asm2
-rw-r--r--battle-e/08-A040.asm2
-rw-r--r--battle-e/08-A041.asm2
-rw-r--r--battle-e/08-A042.asm2
-rw-r--r--battle-e/08-A043.asm2
-rw-r--r--battle-e/08-A044.asm2
-rw-r--r--battle-e/08-A045.asm2
-rw-r--r--battle-e/08-A046.asm2
-rw-r--r--battle-e/08-A047.asm2
-rw-r--r--battle-e/08-A048.asm2
-rw-r--r--battle-e/08-K001.asm2
-rw-r--r--battle-e/08-K002.asm2
-rw-r--r--battle-e/08-K003.asm2
-rw-r--r--battle-e/08-K004.asm2
-rw-r--r--battle-e/08-K005.asm2
-rw-r--r--battle-e/08-K006.asm2
-rw-r--r--battle-e/Makefile34
-rw-r--r--battle-e/battletrainer.asm205
-rw-r--r--battle-e/berries/Makefile19
-rw-r--r--battle-e/berries/chilan.asm24
-rw-r--r--battle-e/berries/drash.asm24
-rw-r--r--battle-e/berries/eggant.asm24
-rw-r--r--battle-e/berries/macros.asm37
-rw-r--r--battle-e/berries/nutpea.asm23
-rw-r--r--battle-e/berries/pumkin.asm24
-rw-r--r--battle-e/berries/strib.asm22
-rw-r--r--battle-e/enigmaberry.asm140
-rw-r--r--battle-e/macros.asm24
-rwxr-xr-xbattle-e/sprites/battletrainer.4bppbin0 -> 1280 bytes
-rwxr-xr-xbattle-e/sprites/battletrainer.tilemapbin0 -> 896 bytes
-rw-r--r--battle-e/sprites/battletrainer1.pal16
-rw-r--r--battle-e/sprites/battletrainer2.pal16
-rw-r--r--battle-e/sprites/battletrainer3.pal16
-rw-r--r--battle-e/sprites/battletrainer4.pal4
-rw-r--r--battle-e/sprites/battletrainer5.pal4
-rwxr-xr-xbattle-e/sprites/berries/chilan.4bppbin0 -> 1152 bytes
-rw-r--r--battle-e/sprites/berries/chilan.pal16
-rwxr-xr-xbattle-e/sprites/berries/drash.4bppbin0 -> 1152 bytes
-rw-r--r--battle-e/sprites/berries/drash.pal16
-rw-r--r--battle-e/sprites/berries/eggant.4bppbin0 -> 1152 bytes
-rw-r--r--battle-e/sprites/berries/eggant.pal16
-rwxr-xr-xbattle-e/sprites/berries/nutpea.4bppbin0 -> 1152 bytes
-rw-r--r--battle-e/sprites/berries/nutpea.pal16
-rwxr-xr-xbattle-e/sprites/berries/pumkin.4bppbin0 -> 1152 bytes
-rw-r--r--battle-e/sprites/berries/pumkin.pal16
-rwxr-xr-xbattle-e/sprites/berries/strib.4bppbin0 -> 1152 bytes
-rw-r--r--battle-e/sprites/berries/strib.pal16
-rwxr-xr-xbattle-e/sprites/berrybackdrop.4bppbin0 -> 160 bytes
-rw-r--r--battle-e/sprites/berrybackdrop.pal16
-rwxr-xr-xbattle-e/sprites/berrybackdrop.tilemapbin0 -> 896 bytes
-rwxr-xr-xbattle-e/sprites/trainerdoor.4bpp1
-rw-r--r--battle-e/sprites/trainerdoor.pal4
-rwxr-xr-xbattle-e/sprites/trainers/aroma_lady.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/battle_girl.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/beauty.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/black_belt.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/bug_maniac.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/camper.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/collector.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/cooltrainer_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/cooltrainer_m.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/expert_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/expert_m.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/fisherman.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/gentleman.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/guitarist.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/hex_maniac.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/hiker.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/lady.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/ninja_boy.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/parasol_lady.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/picnicker.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/pkmn_breeder_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/pkmn_breeder_m.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/pkmn_ranger_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/pkmn_ranger_m.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/pokefan_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/pokefan_m.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/pokemaniac.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/psychic_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/psychic_m.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/ruin_maniac.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/sailor.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/school_kid_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/swimmer_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/triathlete_m_swim.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/tuber_f.4bppbin0 -> 2048 bytes
-rwxr-xr-xbattle-e/sprites/trainers/youngster.4bppbin0 -> 2048 bytes
-rw-r--r--battle-e/trainers/Makefile19
-rw-r--r--battle-e/trainers/alana.asm47
-rw-r--r--battle-e/trainers/annie.asm47
-rw-r--r--battle-e/trainers/antonio.asm47
-rw-r--r--battle-e/trainers/april.asm47
-rw-r--r--battle-e/trainers/astrid.asm47
-rw-r--r--battle-e/trainers/belford.asm47
-rw-r--r--battle-e/trainers/bryce.asm47
-rw-r--r--battle-e/trainers/candice.asm47
-rw-r--r--battle-e/trainers/celina.asm47
-rw-r--r--battle-e/trainers/clayton.asm47
-rw-r--r--battle-e/trainers/devin.asm47
-rw-r--r--battle-e/trainers/dominic.asm47
-rw-r--r--battle-e/trainers/dustin.asm47
-rw-r--r--battle-e/trainers/ellie.asm47
-rw-r--r--battle-e/trainers/fay.asm47
-rw-r--r--battle-e/trainers/fuego.asm47
-rw-r--r--battle-e/trainers/goro.asm47
-rw-r--r--battle-e/trainers/griffin.asm47
-rw-r--r--battle-e/trainers/hayden.asm47
-rw-r--r--battle-e/trainers/heather.asm47
-rw-r--r--battle-e/trainers/hillary.asm47
-rw-r--r--battle-e/trainers/hugo.asm47
-rw-r--r--battle-e/trainers/irazu.asm47
-rw-r--r--battle-e/trainers/irvin.asm47
-rw-r--r--battle-e/trainers/jeffrey.asm47
-rw-r--r--battle-e/trainers/judith.asm47
-rw-r--r--battle-e/trainers/justine.asm47
-rw-r--r--battle-e/trainers/kendall.asm47
-rw-r--r--battle-e/trainers/logan.asm47
-rw-r--r--battle-e/trainers/macros.asm73
-rw-r--r--battle-e/trainers/maggie.asm47
-rw-r--r--battle-e/trainers/mandy.asm47
-rw-r--r--battle-e/trainers/marcus.asm47
-rw-r--r--battle-e/trainers/natalie.asm47
-rw-r--r--battle-e/trainers/natasha.asm47
-rw-r--r--battle-e/trainers/nils.asm47
-rw-r--r--battle-e/trainers/oscar.asm47
-rw-r--r--battle-e/trainers/patrick.asm47
-rw-r--r--battle-e/trainers/raquel.asm47
-rw-r--r--battle-e/trainers/renee.asm47
-rw-r--r--battle-e/trainers/rudy.asm47
-rw-r--r--battle-e/trainers/sandia.asm47
-rw-r--r--battle-e/trainers/sandy.asm47
-rw-r--r--battle-e/trainers/sofia.asm47
-rw-r--r--battle-e/trainers/sonya.asm47
-rw-r--r--battle-e/trainers/sophie.asm47
-rw-r--r--battle-e/trainers/stuart.asm47
-rw-r--r--battle-e/trainers/testing.asm44
-rw-r--r--battle-e/trainers/tsutomu.asm47
-rw-r--r--battle-e/trainers/tyler.asm47
-rw-r--r--battle-e/trainers/wilson.asm47
-rw-r--r--battle-e/trainers/zuril.asm47
-rw-r--r--common/battle_e_transfer.asm71
-rw-r--r--common/mem_struct.asm15
-rw-r--r--common/transfer_data.asm31
-rw-r--r--common/wait_for_link.asm36
-rw-r--r--common/wait_for_ready.asm30
-rw-r--r--common/word_shift_right.asm15
-rw-r--r--common/wrap_up.asm29
-rw-r--r--constants/abilities.asm513
-rw-r--r--constants/easychat.asm1839
-rw-r--r--constants/easychat.odsbin0 -> 181488 bytes
-rw-r--r--constants/items.asm323
-rw-r--r--constants/moves.asm356
-rw-r--r--constants/pokemon.asm388
-rw-r--r--constants/scriptcommands.asm73
-rw-r--r--constants/trainerclasses.asm89
-rw-r--r--eonticket/00-C000.asm187
-rw-r--r--eonticket/Makefile24
-rw-r--r--eonticket/eonticket.asm124
-rwxr-xr-xeonticket/ticket.4bpp1
-rw-r--r--eonticket/ticket.pal5
-rw-r--r--macros.asm364
-rw-r--r--scripts/berrychecksum.py16
-rw-r--r--scripts/charmap.py496
-rw-r--r--scripts/scriptchecksum.py28
-rw-r--r--scripts/trainerchecksum.py13
206 files changed, 8443 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..85968cc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.bin
+*.gbc
+*.o
+*.tx
+*.z80 \ No newline at end of file
diff --git a/README.md b/README.md
index eb8141a..f71bed1 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,6 @@
-pokecarde
+Pokémon Card e
=========
+
+This is a disassembly of the e-Reader cards released for Pokémon Ruby and Sapphire. Currently, it includes the English release of the Pokémon Battle e series, and the Eon Ticket.
+
+RGBDS is needed to compile the Z80 binary for each card. To build a working e-Reader card, you will need to compress the binary with nevpk and add the card metadata with nedcenc—both tools are from the nedclib package, which is unfortunately Windows-only. \ No newline at end of file
diff --git a/battle-e/08-A001.asm b/battle-e/08-A001.asm
new file mode 100644
index 0000000..a64b2c0
--- /dev/null
+++ b/battle-e/08-A001.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/devin.bin", "sprites/trainers/cooltrainer_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A002.asm b/battle-e/08-A002.asm
new file mode 100644
index 0000000..f234a86
--- /dev/null
+++ b/battle-e/08-A002.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/goro.bin", "sprites/trainers/ninja_boy.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A003.asm b/battle-e/08-A003.asm
new file mode 100644
index 0000000..a65a53d
--- /dev/null
+++ b/battle-e/08-A003.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/sonya.bin", "sprites/trainers/tuber_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A004.asm b/battle-e/08-A004.asm
new file mode 100644
index 0000000..3955238
--- /dev/null
+++ b/battle-e/08-A004.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/antonio.bin", "sprites/trainers/gentleman.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A005.asm b/battle-e/08-A005.asm
new file mode 100644
index 0000000..0618719
--- /dev/null
+++ b/battle-e/08-A005.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/alana.bin", "sprites/trainers/pokefan_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A006.asm b/battle-e/08-A006.asm
new file mode 100644
index 0000000..d4799c0
--- /dev/null
+++ b/battle-e/08-A006.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/renee.bin", "sprites/trainers/picnicker.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A007.asm b/battle-e/08-A007.asm
new file mode 100644
index 0000000..a59371a
--- /dev/null
+++ b/battle-e/08-A007.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/sophie.bin", "sprites/trainers/lady.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A008.asm b/battle-e/08-A008.asm
new file mode 100644
index 0000000..74f03ac
--- /dev/null
+++ b/battle-e/08-A008.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/fay.bin", "sprites/trainers/beauty.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A009.asm b/battle-e/08-A009.asm
new file mode 100644
index 0000000..b6ad653
--- /dev/null
+++ b/battle-e/08-A009.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/natasha.bin", "sprites/trainers/psychic_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A010.asm b/battle-e/08-A010.asm
new file mode 100644
index 0000000..19fd447
--- /dev/null
+++ b/battle-e/08-A010.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/patrick.bin", "sprites/trainers/camper.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A011.asm b/battle-e/08-A011.asm
new file mode 100644
index 0000000..4277986
--- /dev/null
+++ b/battle-e/08-A011.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/oscar.bin", "sprites/trainers/sailor.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A012.asm b/battle-e/08-A012.asm
new file mode 100644
index 0000000..dc42e69
--- /dev/null
+++ b/battle-e/08-A012.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/tyler.bin", "sprites/trainers/pokemaniac.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A013.asm b/battle-e/08-A013.asm
new file mode 100644
index 0000000..765b14f
--- /dev/null
+++ b/battle-e/08-A013.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/rudy.bin", "sprites/trainers/youngster.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A014.asm b/battle-e/08-A014.asm
new file mode 100644
index 0000000..e1cbf1f
--- /dev/null
+++ b/battle-e/08-A014.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/ellie.bin", "sprites/trainers/beauty.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A015.asm b/battle-e/08-A015.asm
new file mode 100644
index 0000000..40d2f81
--- /dev/null
+++ b/battle-e/08-A015.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/candice.bin", "sprites/trainers/pkmn_breeder_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A016.asm b/battle-e/08-A016.asm
new file mode 100644
index 0000000..457e3bd
--- /dev/null
+++ b/battle-e/08-A016.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/belford.bin", "sprites/trainers/cooltrainer_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A017.asm b/battle-e/08-A017.asm
new file mode 100644
index 0000000..9aef588
--- /dev/null
+++ b/battle-e/08-A017.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/clayton.bin", "sprites/trainers/pkmn_ranger_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A018.asm b/battle-e/08-A018.asm
new file mode 100644
index 0000000..d6ee1ca
--- /dev/null
+++ b/battle-e/08-A018.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/dustin.bin", "sprites/trainers/triathlete_m_swim.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A019.asm b/battle-e/08-A019.asm
new file mode 100644
index 0000000..b860a5a
--- /dev/null
+++ b/battle-e/08-A019.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/hugo.bin", "sprites/trainers/hiker.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A020.asm b/battle-e/08-A020.asm
new file mode 100644
index 0000000..68706ab
--- /dev/null
+++ b/battle-e/08-A020.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/jeffrey.bin", "sprites/trainers/youngster.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A021.asm b/battle-e/08-A021.asm
new file mode 100644
index 0000000..e52c980
--- /dev/null
+++ b/battle-e/08-A021.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/logan.bin", "sprites/trainers/ruin_maniac.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A022.asm b/battle-e/08-A022.asm
new file mode 100644
index 0000000..014c488
--- /dev/null
+++ b/battle-e/08-A022.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/maggie.bin", "sprites/trainers/pokefan_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A023.asm b/battle-e/08-A023.asm
new file mode 100644
index 0000000..eb99dbb
--- /dev/null
+++ b/battle-e/08-A023.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/wilson.bin", "sprites/trainers/pkmn_breeder_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A024.asm b/battle-e/08-A024.asm
new file mode 100644
index 0000000..c09cd68
--- /dev/null
+++ b/battle-e/08-A024.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/zuril.bin", "sprites/trainers/ruin_maniac.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A025.asm b/battle-e/08-A025.asm
new file mode 100644
index 0000000..48a1e0c
--- /dev/null
+++ b/battle-e/08-A025.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/mandy.bin", "sprites/trainers/school_kid_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A026.asm b/battle-e/08-A026.asm
new file mode 100644
index 0000000..dfb937a
--- /dev/null
+++ b/battle-e/08-A026.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/sofia.bin", "sprites/trainers/parasol_lady.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A027.asm b/battle-e/08-A027.asm
new file mode 100644
index 0000000..5a13e29
--- /dev/null
+++ b/battle-e/08-A027.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/hillary.bin", "sprites/trainers/lady.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A028.asm b/battle-e/08-A028.asm
new file mode 100644
index 0000000..c45b325
--- /dev/null
+++ b/battle-e/08-A028.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/dominic.bin", "sprites/trainers/guitarist.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A029.asm b/battle-e/08-A029.asm
new file mode 100644
index 0000000..15cdbeb
--- /dev/null
+++ b/battle-e/08-A029.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/bryce.bin", "sprites/trainers/fisherman.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A030.asm b/battle-e/08-A030.asm
new file mode 100644
index 0000000..31b6ef7
--- /dev/null
+++ b/battle-e/08-A030.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/irvin.bin", "sprites/trainers/bug_maniac.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A031.asm b/battle-e/08-A031.asm
new file mode 100644
index 0000000..3d010f3
--- /dev/null
+++ b/battle-e/08-A031.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/natalie.bin", "sprites/trainers/battle_girl.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A032.asm b/battle-e/08-A032.asm
new file mode 100644
index 0000000..08e9a5e
--- /dev/null
+++ b/battle-e/08-A032.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/sandia.bin", "sprites/trainers/expert_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A033.asm b/battle-e/08-A033.asm
new file mode 100644
index 0000000..fd2ab8a
--- /dev/null
+++ b/battle-e/08-A033.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/marcus.bin", "sprites/trainers/expert_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A034.asm b/battle-e/08-A034.asm
new file mode 100644
index 0000000..d8fb30b
--- /dev/null
+++ b/battle-e/08-A034.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/raquel.bin", "sprites/trainers/cooltrainer_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A035.asm b/battle-e/08-A035.asm
new file mode 100644
index 0000000..f46c174
--- /dev/null
+++ b/battle-e/08-A035.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/tsutomu.bin", "sprites/trainers/black_belt.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A036.asm b/battle-e/08-A036.asm
new file mode 100644
index 0000000..e5fd650
--- /dev/null
+++ b/battle-e/08-A036.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/justine.bin", "sprites/trainers/pokefan_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A037.asm b/battle-e/08-A037.asm
new file mode 100644
index 0000000..e891a75
--- /dev/null
+++ b/battle-e/08-A037.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/heather.bin", "sprites/trainers/pkmn_ranger_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A038.asm b/battle-e/08-A038.asm
new file mode 100644
index 0000000..8f6fa43
--- /dev/null
+++ b/battle-e/08-A038.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/judith.bin", "sprites/trainers/psychic_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A039.asm b/battle-e/08-A039.asm
new file mode 100644
index 0000000..23df2ed
--- /dev/null
+++ b/battle-e/08-A039.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/stuart.bin", "sprites/trainers/collector.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A040.asm b/battle-e/08-A040.asm
new file mode 100644
index 0000000..5d8a4d4
--- /dev/null
+++ b/battle-e/08-A040.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/irazu.bin", "sprites/trainers/pkmn_ranger_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A041.asm b/battle-e/08-A041.asm
new file mode 100644
index 0000000..83e64b6
--- /dev/null
+++ b/battle-e/08-A041.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/sandy.bin", "sprites/trainers/picnicker.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A042.asm b/battle-e/08-A042.asm
new file mode 100644
index 0000000..3f822bc
--- /dev/null
+++ b/battle-e/08-A042.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/annie.bin", "sprites/trainers/swimmer_f.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A043.asm b/battle-e/08-A043.asm
new file mode 100644
index 0000000..f52307c
--- /dev/null
+++ b/battle-e/08-A043.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/celina.bin", "sprites/trainers/hex_maniac.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A044.asm b/battle-e/08-A044.asm
new file mode 100644
index 0000000..2381c26
--- /dev/null
+++ b/battle-e/08-A044.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/april.bin", "sprites/trainers/aroma_lady.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A045.asm b/battle-e/08-A045.asm
new file mode 100644
index 0000000..02d41f5
--- /dev/null
+++ b/battle-e/08-A045.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/hayden.bin", "sprites/trainers/guitarist.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A046.asm b/battle-e/08-A046.asm
new file mode 100644
index 0000000..d9b7cf5
--- /dev/null
+++ b/battle-e/08-A046.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/griffin.bin", "sprites/trainers/psychic_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A047.asm b/battle-e/08-A047.asm
new file mode 100644
index 0000000..5a3b4ad
--- /dev/null
+++ b/battle-e/08-A047.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/kendall.bin", "sprites/trainers/pokefan_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-A048.asm b/battle-e/08-A048.asm
new file mode 100644
index 0000000..769ff7c
--- /dev/null
+++ b/battle-e/08-A048.asm
@@ -0,0 +1,2 @@
+INCLUDE "battletrainer.tx"
+ BattleTrainer "trainers/fuego.bin", "sprites/trainers/cooltrainer_m.4bpp" \ No newline at end of file
diff --git a/battle-e/08-K001.asm b/battle-e/08-K001.asm
new file mode 100644
index 0000000..57392ef
--- /dev/null
+++ b/battle-e/08-K001.asm
@@ -0,0 +1,2 @@
+INCLUDE "enigmaberry.tx"
+ EnigmaBerry "berries/pumkin.bin" \ No newline at end of file
diff --git a/battle-e/08-K002.asm b/battle-e/08-K002.asm
new file mode 100644
index 0000000..b2e73e0
--- /dev/null
+++ b/battle-e/08-K002.asm
@@ -0,0 +1,2 @@
+INCLUDE "enigmaberry.tx"
+ EnigmaBerry "berries/drash.bin" \ No newline at end of file
diff --git a/battle-e/08-K003.asm b/battle-e/08-K003.asm
new file mode 100644
index 0000000..46171f1
--- /dev/null
+++ b/battle-e/08-K003.asm
@@ -0,0 +1,2 @@
+INCLUDE "enigmaberry.tx"
+ EnigmaBerry "berries/chilan.bin" \ No newline at end of file
diff --git a/battle-e/08-K004.asm b/battle-e/08-K004.asm
new file mode 100644
index 0000000..d1b78a2
--- /dev/null
+++ b/battle-e/08-K004.asm
@@ -0,0 +1,2 @@
+INCLUDE "enigmaberry.tx"
+ EnigmaBerry "berries/strib.bin" \ No newline at end of file
diff --git a/battle-e/08-K005.asm b/battle-e/08-K005.asm
new file mode 100644
index 0000000..63cc4e4
--- /dev/null
+++ b/battle-e/08-K005.asm
@@ -0,0 +1,2 @@
+INCLUDE "enigmaberry.tx"
+ EnigmaBerry "berries/eggant.bin" \ No newline at end of file
diff --git a/battle-e/08-K006.asm b/battle-e/08-K006.asm
new file mode 100644
index 0000000..236f8dd
--- /dev/null
+++ b/battle-e/08-K006.asm
@@ -0,0 +1,2 @@
+INCLUDE "enigmaberry.tx"
+ EnigmaBerry "berries/nutpea.bin" \ No newline at end of file
diff --git a/battle-e/Makefile b/battle-e/Makefile
new file mode 100644
index 0000000..d317c93
--- /dev/null
+++ b/battle-e/Makefile
@@ -0,0 +1,34 @@
+all: 08-A001.z80 08-A002.z80 08-A003.z80 08-A004.z80 \
+ 08-A005.z80 08-A006.z80 08-A007.z80 08-A008.z80 \
+ 08-A009.z80 08-A010.z80 08-A011.z80 08-A012.z80 \
+ 08-A013.z80 08-A014.z80 08-A015.z80 08-A016.z80 \
+ 08-A017.z80 08-A018.z80 08-A019.z80 08-A020.z80 \
+ 08-A021.z80 08-A022.z80 08-A023.z80 08-A024.z80 \
+ 08-A025.z80 08-A026.z80 08-A027.z80 08-A028.z80 \
+ 08-A029.z80 08-A030.z80 08-A031.z80 08-A032.z80 \
+ 08-A033.z80 08-A034.z80 08-A035.z80 08-A036.z80 \
+ 08-A037.z80 08-A038.z80 08-A039.z80 08-A040.z80 \
+ 08-A041.z80 08-A042.z80 08-A043.z80 08-A044.z80 \
+ 08-A045.z80 08-A046.z80 08-A047.z80 08-A048.z80 \
+ 08-K001.z80 08-K002.z80 08-K003.z80 08-K004.z80 \
+ 08-K005.z80 08-K006.z80
+
+%.tx: %.asm
+ python ../scripts/charmap.py $< $@
+
+08-A%.o: 08-A%.asm battletrainer.tx
+ rgbasm -o $@ $<
+08-K%.o: 08-K%.asm enigmaberry.tx
+ rgbasm -o $@ $<
+%.gbc: %.o
+ rgblink -o $@ $<
+# hack to use RGBDS for something other than its intended purpose
+08-A%.z80: 08-A%.gbc
+ dd if=$< of=$@ bs=1 skip=256 count=6815
+# cmp -b ../z80/$@ $@
+08-K%.z80: 08-K%.gbc
+ dd if=$< of=$@ bs=1 skip=256 count=3578
+# cmp -b ../z80/$@ $@
+
+clean:
+ rm -f *.z80 *.tx *.o *.gbc \ No newline at end of file
diff --git a/battle-e/battletrainer.asm b/battle-e/battletrainer.asm
new file mode 100644
index 0000000..4516fb5
--- /dev/null
+++ b/battle-e/battletrainer.asm
@@ -0,0 +1,205 @@
+INCLUDE "../macros.asm"
+
+BattleTrainer: MACRO
+SECTION "battletrainer",ROM0[$100]
+jp Start
+db $00
+
+BattleTrainerBackdrop: ; 104
+ INCBIN "sprites/battletrainer.4bpp"
+DoorSprite: ; 604
+ INCBIN "sprites/trainerdoor.4bpp"
+
+BackdropPalettes: ; A04
+ INCLUDE "sprites/battletrainer1.pal"
+ INCLUDE "sprites/battletrainer2.pal"
+ INCLUDE "sprites/battletrainer3.pal"
+ INCLUDE "sprites/battletrainer4.pal"
+TrainerPalette: ; A6C
+ INCLUDE "sprites/battletrainer5.pal"
+DoorPalette: ; A74
+ INCLUDE "sprites/trainerdoor.pal"
+
+BackdropTilemap: ; A7C
+ INCBIN "sprites/battletrainer.tilemap"
+
+Prologue: ; 0DFC
+ Insert_Prologue $12345678, "カ。ドE@", REGION_EN ; corrupted カードe “Card e”
+
+DataPacket: ; 0E38
+ Insert_Header REGION_EN
+ db BATTLE_TRAINER
+ GBAPTR DataPacket, TrainerData ; $02000018
+ dw $0002
+TrainerData: ; 0E50
+ INCBIN \1
+ REPT 44
+ db 0 ; pads the data to 256 bytes
+ ENDR
+
+TrainerSprite: ; 0F38
+ INCBIN \2
+TrainerSpriteData: ; 1738
+ dw TrainerSprite
+ dw TrainerPalette
+ db $08,$08,$01,$01,$01,$01,$01
+
+INCLUDE "../common/mem_struct.asm"
+
+BackdropSpriteData: ; 1777
+ dw BattleTrainerBackdrop
+ dw BackdropPalettes
+ dw BackdropTilemap
+ db $28,$00,$04,$00
+DoorSpriteData: ; 1781
+ dw DoorSprite
+ dw DoorPalette
+ db $04,$08,$01,$01,$01,$01,$01
+
+Instructions1: ; 178c
+ db "Link e-Reader to Pokémon Ruby or \n"
+ db "Sapphire and select MYSTERY EVENTS\n"
+ db "on the game's main menu.\n"
+ db "Press the B Button to cancel.\0"
+
+Instructions2: ; 1808
+ db "Press the A Button on the Game Boy\n"
+ db "Advance containing Pokémon Ruby or\n"
+ db "Sapphire to begin the Battle Entry.\0"
+
+BattleEntryInProcess: ; 1872
+ db "Battle Entry in Process...\0"
+
+BattleEntryFinished: ; 188d
+ db "Battle Entry finished!\n"
+ db "\n"
+ db "Press the A Button to resend.\n"
+ db "Press the B Button to cancel.\0"
+
+INCLUDE "../common/battle_e_transfer.asm"
+
+Open_Doors: ; 1946
+ ld l, $20
+ push hl
+ ld bc, $0040
+ ld de, $0048
+ LD_HL_IND LeftDoorSpriteHandle
+ API $03B
+
+ pop bc
+ ld l, $20
+ push hl
+ ld bc, $0040
+ ld de, $00A8
+ LD_HL_IND RightDoorSpriteHandle
+ API $03B
+
+ pop bc
+ ret
+
+Close_Doors: ; 1965
+ ld l, $20
+ push hl
+ ld bc, $0040
+ ld de, $0068
+ LD_HL_IND LeftDoorSpriteHandle
+ API $03B
+
+ pop bc
+ ld l, $20
+ push hl
+ ld bc, $0040
+ ld de, $0088
+ LD_HL_IND RightDoorSpriteHandle
+ API $03B
+
+ pop bc
+ ret
+
+Start: ; 1984
+ API_121
+ LoadCustomBackground BackdropSpriteData, 0
+
+ ld hl, $0000
+ push hl
+ ld bc, $1e06
+ ld de, $000e
+ xor a
+ API $02C
+
+ pop bc
+ LoadCustomBackground BackdropSpriteData, 1
+
+ API_02C $1e06, $000e, $01
+
+ pop bc
+ API_02C $0808, $0B04, $00
+
+ pop bc
+ ld a, $4
+ API $0AE
+
+ CreateCustomSprite TrainerSpriteHandle, $80, TrainerSpriteData
+ SetSpritePos TrainerSpriteHandle, 119, 64
+
+ CreateCustomSprite LeftDoorSpriteHandle, $81, DoorSpriteData
+ CreateCustomSprite RightDoorSpriteHandle, $81, DoorSpriteData
+ SpriteMirrorToggle $01, LeftDoorSpriteHandle
+ SetSpritePos LeftDoorSpriteHandle, 104, 64
+ SetSpritePos RightDoorSpriteHandle, 136, 64
+
+ CreateRegion RegionHandlePtr, 30, 6, 0, 14, 0, 3
+ ld h, a
+ ld l, $00
+ SetTextSize
+ API_09B RegionHandlePtr, $0102
+ SetTextColor RegionHandlePtr, 3, 0
+
+ FadeIn 16
+ wait 16
+ API $0C6
+ DrawText RegionHandlePtr, Instructions1, 8, 4
+ API $08D
+
+INCLUDE "../common/wait_for_link.asm"
+
+ call Open_Doors
+ DrawText RegionHandlePtr, Instructions2, 8, 4
+ API $08D
+ and [hl]
+ ld [bc], a
+
+UNKNOWN_VALUE EQU $02A6
+INCLUDE "../common/wait_for_ready.asm"
+
+ call Close_Doors
+ DrawText RegionHandlePtr, BattleEntryInProcess, 8, 4
+
+DATA_TRANSFER_LENGTH EQU 6144
+INCLUDE "../common/transfer_data.asm"
+
+ ld hl, $5fff
+ LD_IND_HL Space_1
+ API_0C7 Space_1
+
+ LD_HL_IND TrainerSpriteHandle
+ API $047
+ wait 128
+ call Open_Doors
+
+ DrawText RegionHandlePtr, BattleEntryFinished, 8, 4
+ API $08D
+
+ ld c, a
+ nop
+
+INCLUDE "../common/wrap_up.asm"
+INCLUDE "../common/word_shift_right.asm"
+
+SomeVar1: ds 1 ; 1B9F
+SomeVar2: ds 2 ; 1BA0
+RegionHandlePtr: ds 1 ; 1BA2
+LeftDoorSpriteHandle: ds 2 ; 1BA3
+RightDoorSpriteHandle: ds 2 ; 1BA5
+TrainerSpriteHandle: ds 2 ; 1BA7
+ENDM \ No newline at end of file
diff --git a/battle-e/berries/Makefile b/battle-e/berries/Makefile
new file mode 100644
index 0000000..1c28d80
--- /dev/null
+++ b/battle-e/berries/Makefile
@@ -0,0 +1,19 @@
+all: chilan.bin drash.bin eggant.bin nutpea.bin pumkin.bin strib.bin
+
+%.1: %.asm
+ python ../../scripts/charmap.py $< $@
+
+%.2: %.1
+ rgbasm -o $@ $<
+
+%.3: %.2
+ rgblink -o $@ $<
+
+%.4: %.3
+ dd if=$< of=$@ bs=1 skip=256 count=1324
+
+%.bin: %.4
+ python ../../scripts/berrychecksum.py $< $@
+
+clean:
+ rm -f *.bin \ No newline at end of file
diff --git a/battle-e/berries/chilan.asm b/battle-e/berries/chilan.asm
new file mode 100644
index 0000000..9803491
--- /dev/null
+++ b/battle-e/berries/chilan.asm
@@ -0,0 +1,24 @@
+INCLUDE "macros.asm"
+
+ Berry "CHILAN"
+ db SOFT
+ Size 27,2
+ Yield_Range 1, 2
+ REPT 8
+ db 0
+ ENDR
+ db 1 ; hours per growth stage
+ db 30,0,30,0,0 ; flavor
+ db 85 ; smoothness
+ db 0
+
+BerrySprite:
+ INCBIN "../sprites/berries/chilan.4bpp"
+BerryPalette:
+ INCLUDE "../sprites/berries/chilan.pal"
+
+ Tag_Text "This sparse BERRY grows quickly."
+ Tag_Text "Its skin is quite tough."
+ REPT 22
+ db 0 ; Pokéblock ingredient only
+ ENDR \ No newline at end of file
diff --git a/battle-e/berries/drash.asm b/battle-e/berries/drash.asm
new file mode 100644
index 0000000..a291536
--- /dev/null
+++ b/battle-e/berries/drash.asm
@@ -0,0 +1,24 @@
+INCLUDE "macros.asm"
+
+ Berry "DRASH"
+ db VERY_HARD
+ Size 13,4
+ Yield_Range 2, 3
+ db 0,0,0,0,0,0,0,0
+ db 18 ; hours per growth stage
+ db 0,0,40,0,0 ; flavor
+ db 65 ; smoothness
+ db 0
+
+BerrySprite:
+ INCBIN "../sprites/berries/drash.4bpp"
+BerryPalette:
+ INCLUDE "../sprites/berries/drash.pal"
+
+ Tag_Text "When it ripens, this sweet BERRY"
+ Tag_Text "falls and sticks into the ground."
+ db 0,0,0
+ db $10 ; cures poison
+ db 0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ db $04 ; self-cures poison
+ db 0,0,0 \ No newline at end of file
diff --git a/battle-e/berries/eggant.asm b/battle-e/berries/eggant.asm
new file mode 100644
index 0000000..4e9fab3
--- /dev/null
+++ b/battle-e/berries/eggant.asm
@@ -0,0 +1,24 @@
+INCLUDE "macros.asm"
+
+ Berry "EGGANT"
+ db SOFT
+ Size 4,1
+ Yield_Range 2, 3
+ db 0,0,0,0, 0,0,0,0
+ db 18 ; hours per growth stage
+ db 0,40,0,0,0 ; flavor
+ db 65 ; smoothness
+ db 0
+
+BerrySprite:
+ INCBIN "../sprites/berries/eggant.4bpp"
+BerryPalette:
+ INCLUDE "../sprites/berries/eggant.pal"
+
+ Tag_Text "Very dry tasting, especially the"
+ Tag_Text "parts not exposed to the sun."
+ db 0,0,0
+ db $00
+ db 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0
+ db $1C ; self-cure infatuation
+ db 0,0,0 \ No newline at end of file
diff --git a/battle-e/berries/macros.asm b/battle-e/berries/macros.asm
new file mode 100644
index 0000000..e58a1ca
--- /dev/null
+++ b/battle-e/berries/macros.asm
@@ -0,0 +1,37 @@
+RGB: MACRO
+ dw \1 | (\2 << 5) | (\3 << 10)
+ ENDM
+
+Berry: MACRO
+ Section "berry",ROM0[$100]
+ db \1
+ REPT 7 - STRLEN(\1)
+ db $FF
+ ENDR
+ ENDM
+
+; firmness
+VERY_SOFT EQU 1
+SOFT EQU 2
+HARD EQU 3
+VERY_HARD EQU 4
+SUPER_HARD EQU 5
+
+Yield_Range: MACRO
+ db \2, \1
+ ENDM
+
+Size: MACRO
+ dw \1 * 10 + \2
+ ENDM
+
+; this can’t be used because RGBDS has no reliable way of putting null bytes in strings
+;Tag_Text: MACRO
+; db \1
+; db $FF
+; REPT 44 - STRLEN(\1)
+; db 0
+; ENDR
+; ENDM
+
+Tag_Text EQUS "db" \ No newline at end of file
diff --git a/battle-e/berries/nutpea.asm b/battle-e/berries/nutpea.asm
new file mode 100644
index 0000000..c45f320
--- /dev/null
+++ b/battle-e/berries/nutpea.asm
@@ -0,0 +1,23 @@
+INCLUDE "macros.asm"
+
+ Berry "NUTPEA"
+ db SUPER_HARD
+ Size 12,4
+ Yield_Range 1, 3
+ db 0,0,0,0,0,0,0,0
+ db 18 ; hours per growth stage
+ db 10,10,10,10,10 ; flavor
+ db 5 ; smoothness
+ db 0
+
+BerrySprite:
+ INCBIN "../sprites/berries/nutpea.4bpp"
+
+BerryPalette:
+ INCLUDE "../sprites/berries/nutpea.pal"
+
+ Tag_Text "This BERRY is rigid and cracks open"
+ Tag_Text "when the center is squeezed."
+ REPT 22
+ db 0 ; Pokéblock ingredient only
+ ENDR \ No newline at end of file
diff --git a/battle-e/berries/pumkin.asm b/battle-e/berries/pumkin.asm
new file mode 100644
index 0000000..bb11372
--- /dev/null
+++ b/battle-e/berries/pumkin.asm
@@ -0,0 +1,24 @@
+INCLUDE "macros.asm"
+
+ Berry "PUMKIN"
+ db SUPER_HARD
+ Size 4,8
+ Yield_Range 2, 3
+ db 0,0,0,0,0,0,0,0
+ db 18 ; hours per growth stage
+ db 0,0,0,0,40 ; flavor
+ db 65 ; smoothness
+ db 0
+
+BerrySprite:
+ INCBIN "../sprites/berries/pumkin.4bpp"
+BerryPalette:
+ INCLUDE "../sprites/berries/pumkin.pal"
+
+ Tag_Text "This BERRY is amazingly sour."
+ Tag_Text "It’s heavy due to its dense filling."
+ db 0,0,0
+ db $04 ; cures freeze
+ db 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0
+ db $06 ; self-cures freeze
+ db 0,0,0 \ No newline at end of file
diff --git a/battle-e/berries/strib.asm b/battle-e/berries/strib.asm
new file mode 100644
index 0000000..362b2df
--- /dev/null
+++ b/battle-e/berries/strib.asm
@@ -0,0 +1,22 @@
+INCLUDE "macros.asm"
+
+ Berry "STRIB"
+ db HARD
+ Size 12,2
+ Yield_Range 4, 12
+ db 0,0,0,0,0,0,0,0
+ db 24 ; hours per growth stage
+ db 30,0,0,30,0 ; flavor
+ db 85 ; smoothness
+ db 0
+
+BerrySprite:
+ INCBIN "../sprites/berries/strib.4bpp"
+BerryPalette:
+ INCLUDE "../sprites/berries/strib.pal"
+
+ Tag_Text "It grows slowly, but abundantly."
+ Tag_Text "Makes a soothing sound when shaken."
+ REPT 22
+ db 0 ; Pokéblock ingredient only
+ ENDR \ No newline at end of file
diff --git a/battle-e/enigmaberry.asm b/battle-e/enigmaberry.asm
new file mode 100644
index 0000000..a6f0dce
--- /dev/null
+++ b/battle-e/enigmaberry.asm
@@ -0,0 +1,140 @@
+INCLUDE "../macros.asm"
+INCLUDE "macros.asm"
+
+EnigmaBerry: MACRO
+SECTION "drashberry",ROM0[$100]
+jp Start
+db $00
+
+UnknownPalette:
+ RGB 18, 0, 0
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 15, 31, 31
+ RGB 6, 15, 29
+
+BackgroundSprite:
+ INCBIN "sprites/berrybackdrop.4bpp"
+BackgroundTilemap:
+ INCBIN "sprites/berrybackdrop.tilemap"
+BackgroundPalette:
+ INCLUDE "sprites/berrybackdrop.pal"
+
+REPT 72
+ db 0
+ENDR
+
+Prologue:
+ Insert_Prologue $12345678, "カ。ドE@", REGION_EN ; corrupted カードe “Card e”
+
+DataPacket:
+ Insert_Header REGION_EN
+ db CUSTOM_BERRY
+ GBAPTR DataPacket, BerryData
+ dw $0002
+
+BerryData:
+ INCBIN \1
+ db 0,0
+
+INCLUDE "../common/mem_struct.asm"
+
+BackgroundSpriteData:
+ dw BackgroundSprite, BackgroundPalette, BackgroundTilemap
+ db $05,$00,$01,$00
+BerrySpriteData:
+ dw (BerryData+$1C),(BerryData+$49C)
+ db $06,$06,$01,$01,$01,$01,$01
+
+Instructions1: ; B65
+ db "Link e-Reader to Pokémon Ruby or \n"
+ db "Sapphire and select MYSTERY EVENTS\n"
+ db "on the game's main menu.\n"
+ db "Press the B Button to cancel.\0"
+Instructions2: ; BE1
+ db "Press the A Button on the Game Boy\n"
+ db "Advance containing Pokémon Ruby or\n"
+ db "Sapphire to send a BERRY.\0"
+BerrySendingInProcess: ; C41
+ db "BERRY sending in Process...\0"
+ABerryWasSent: ; C5D
+ db "A BERRY was sent.\n"
+ db "\n"
+ db "Press the A Button to resend.\n"
+ db "Press the B Button to cancel.\0"
+
+INCLUDE "../common/battle_e_transfer.asm"
+
+AfterTransfer:
+ ld hl, $5FFF
+ LD_IND_HL Space_1
+ ld hl, Space_1
+ API $0C7
+
+ wait $01
+ ret
+
+Start:
+ API_121
+ LoadCustomBackground BackgroundSpriteData, 0
+ API_02C $1E06, $000E, 0
+ pop bc
+
+ CreateCustomSprite SpriteHandlePtr, $80, BerrySpriteData
+ SetSpritePos SpriteHandlePtr, 376, 56
+
+ CreateRegion RegionHandlePtr, 30, 6, 0, 14, 0, 4
+ ld h, a
+ ld l, $00
+ SetTextSize
+ API_09B RegionHandlePtr, $0102
+ SetTextColor RegionHandlePtr, 2, 0
+ SetRegionColor RegionHandlePtr, 0
+ SetBackgroundPalette $10, $0040, UnknownPalette
+
+ FadeIn 16
+ wait 16
+ API $0C6
+
+ DrawText RegionHandlePtr, Instructions1, 8, 4
+ API $08D
+
+INCLUDE "../common/wait_for_link.asm"
+
+ API_084 SpriteHandlePtr, 120, 56, 16 ; sprite move and fade in?
+ pop bc
+ API $08D
+ push af
+ nop
+
+ DrawText RegionHandlePtr, Instructions2, 8, 4
+
+UNKNOWN_VALUE EQU $00F5
+INCLUDE "../common/wait_for_ready.asm"
+
+ DrawText RegionHandlePtr, BerrySendingInProcess, 8, 4
+
+DATA_TRANSFER_LENGTH EQU 3072
+INCLUDE "../common/transfer_data.asm"
+
+ call AfterTransfer
+
+ wait 128
+ API $08D
+
+ ld c, a
+ nop
+ API_084 SpriteHandlePtr, $FF78, 56, 16 ; sprite move and fade out?
+
+ pop bc
+ DrawText RegionHandlePtr, ABerryWasSent, 8, 4
+
+INCLUDE "../common/wrap_up.asm"
+
+INCLUDE "../common/word_shift_right.asm"
+
+SomeVar1: ds 1 ; EFA
+SomeVar2: ds 2 ; EFB
+RegionHandlePtr: ds 1 ; EFD
+SpriteHandlePtr: ds 2 ; EFE
+ENDM \ No newline at end of file
diff --git a/battle-e/macros.asm b/battle-e/macros.asm
new file mode 100644
index 0000000..e4a9c1a
--- /dev/null
+++ b/battle-e/macros.asm
@@ -0,0 +1,24 @@
+INCLUDE "../constants/abilities.asm"
+INCLUDE "../constants/items.asm"
+INCLUDE "../constants/moves.asm"
+INCLUDE "../constants/pokemon.asm"
+INCLUDE "../constants/trainerclasses.asm"
+
+MOSSDEEP_BATTLE EQU 0
+
+LEVEL: MACRO
+ dw \1
+ ENDM
+EVs: MACRO
+ db \1, \2, \3, \4, \5, \6
+ ENDM
+OT: MACRO
+ dw \1, \2
+ ENDM
+IVs: MACRO
+ dw \1 + (\2 << 5) + (\3 << 10) + ((\4 & 1) << 15)
+ dw (\4 >> 1) + (\5 << 4) + (\6 << 9) + (\7 << 15)
+ ENDM
+PV: MACRO
+ dw (\1 & $FFFF), (\1 >> 16)
+ ENDM \ No newline at end of file
diff --git a/battle-e/sprites/battletrainer.4bpp b/battle-e/sprites/battletrainer.4bpp
new file mode 100755
index 0000000..52703fb
--- /dev/null
+++ b/battle-e/sprites/battletrainer.4bpp
Binary files differ
diff --git a/battle-e/sprites/battletrainer.tilemap b/battle-e/sprites/battletrainer.tilemap
new file mode 100755
index 0000000..d1e5abd
--- /dev/null
+++ b/battle-e/sprites/battletrainer.tilemap
Binary files differ
diff --git a/battle-e/sprites/battletrainer1.pal b/battle-e/sprites/battletrainer1.pal
new file mode 100644
index 0000000..17f2b94
--- /dev/null
+++ b/battle-e/sprites/battletrainer1.pal
@@ -0,0 +1,16 @@
+ RGB 0, 0, 0
+ RGB 0, 31, 0
+ RGB 0, 27, 0
+ RGB 0, 23, 0
+ RGB 0, 19, 0
+ RGB 0, 15, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/battletrainer2.pal b/battle-e/sprites/battletrainer2.pal
new file mode 100644
index 0000000..b7b22ef
--- /dev/null
+++ b/battle-e/sprites/battletrainer2.pal
@@ -0,0 +1,16 @@
+ RGB 0, 0, 0
+ RGB 7, 23, 31
+ RGB 3, 19, 27
+ RGB 0, 15, 23
+ RGB 0, 11, 19
+ RGB 0, 9, 17
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/battletrainer3.pal b/battle-e/sprites/battletrainer3.pal
new file mode 100644
index 0000000..033b57e
--- /dev/null
+++ b/battle-e/sprites/battletrainer3.pal
@@ -0,0 +1,16 @@
+ RGB 0, 0, 0
+ RGB 31, 5, 5
+ RGB 25, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/battletrainer4.pal b/battle-e/sprites/battletrainer4.pal
new file mode 100644
index 0000000..2db52c9
--- /dev/null
+++ b/battle-e/sprites/battletrainer4.pal
@@ -0,0 +1,4 @@
+ RGB 0, 0, 0
+ RGB 25, 19, 0
+ RGB 0, 0, 0
+ RGB 31, 31, 31 \ No newline at end of file
diff --git a/battle-e/sprites/battletrainer5.pal b/battle-e/sprites/battletrainer5.pal
new file mode 100644
index 0000000..19001bf
--- /dev/null
+++ b/battle-e/sprites/battletrainer5.pal
@@ -0,0 +1,4 @@
+ RGB 0, 0, 0
+ RGB 0, 31, 0
+ RGB 0, 11, 19
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/berries/chilan.4bpp b/battle-e/sprites/berries/chilan.4bpp
new file mode 100755
index 0000000..6b8dc0c
--- /dev/null
+++ b/battle-e/sprites/berries/chilan.4bpp
Binary files differ
diff --git a/battle-e/sprites/berries/chilan.pal b/battle-e/sprites/berries/chilan.pal
new file mode 100644
index 0000000..0fe9b4b
--- /dev/null
+++ b/battle-e/sprites/berries/chilan.pal
@@ -0,0 +1,16 @@
+ RGB 18, 30, 30
+ RGB 14, 18, 11
+ RGB 30, 22, 12
+ RGB 30, 13, 9
+ RGB 30, 5, 6
+ RGB 26, 6, 5
+ RGB 22, 7, 4
+ RGB 18, 8, 3
+ RGB 14, 10, 3
+ RGB 22, 27, 12
+ RGB 29, 24, 13
+ RGB 24, 19, 11
+ RGB 19, 15, 10
+ RGB 14, 11, 9
+ RGB 10, 8, 6
+ RGB 18, 22, 11 \ No newline at end of file
diff --git a/battle-e/sprites/berries/drash.4bpp b/battle-e/sprites/berries/drash.4bpp
new file mode 100755
index 0000000..ab299c8
--- /dev/null
+++ b/battle-e/sprites/berries/drash.4bpp
Binary files differ
diff --git a/battle-e/sprites/berries/drash.pal b/battle-e/sprites/berries/drash.pal
new file mode 100644
index 0000000..2b62fed
--- /dev/null
+++ b/battle-e/sprites/berries/drash.pal
@@ -0,0 +1,16 @@
+ RGB 24, 30, 30
+ RGB 31, 24, 25
+ RGB 30, 20, 22
+ RGB 30, 16, 19
+ RGB 28, 11, 14
+ RGB 23, 9, 11
+ RGB 17, 5, 6
+ RGB 31, 28, 27
+ RGB 25, 21, 15
+ RGB 26, 31, 15
+ RGB 22, 28, 13
+ RGB 18, 25, 11
+ RGB 14, 22, 9
+ RGB 10, 19, 8
+ RGB 10, 13, 8
+ RGB 10, 19, 8 \ No newline at end of file
diff --git a/battle-e/sprites/berries/eggant.4bpp b/battle-e/sprites/berries/eggant.4bpp
new file mode 100644
index 0000000..2034763
--- /dev/null
+++ b/battle-e/sprites/berries/eggant.4bpp
Binary files differ
diff --git a/battle-e/sprites/berries/eggant.pal b/battle-e/sprites/berries/eggant.pal
new file mode 100644
index 0000000..594cd4b
--- /dev/null
+++ b/battle-e/sprites/berries/eggant.pal
@@ -0,0 +1,16 @@
+ RGB 24, 24, 24
+ RGB 27, 31, 31
+ RGB 23, 28, 31
+ RGB 20, 24, 29
+ RGB 17, 21, 27
+ RGB 14, 18, 26
+ RGB 11, 15, 24
+ RGB 8, 12, 23
+ RGB 5, 8, 17
+ RGB 28, 29, 20
+ RGB 20, 28, 11
+ RGB 15, 24, 9
+ RGB 10, 20, 8
+ RGB 5, 16, 6
+ RGB 7, 11, 5
+ RGB 8, 11, 9 \ No newline at end of file
diff --git a/battle-e/sprites/berries/nutpea.4bpp b/battle-e/sprites/berries/nutpea.4bpp
new file mode 100755
index 0000000..ec9f23b
--- /dev/null
+++ b/battle-e/sprites/berries/nutpea.4bpp
Binary files differ
diff --git a/battle-e/sprites/berries/nutpea.pal b/battle-e/sprites/berries/nutpea.pal
new file mode 100644
index 0000000..822c230
--- /dev/null
+++ b/battle-e/sprites/berries/nutpea.pal
@@ -0,0 +1,16 @@
+ RGB 18, 30, 30
+ RGB 31, 31, 27
+ RGB 30, 30, 15
+ RGB 30, 29, 15
+ RGB 27, 25, 13
+ RGB 24, 21, 12
+ RGB 18, 15, 12
+ RGB 31, 27, 27
+ RGB 26, 24, 13
+ RGB 22, 20, 11
+ RGB 18, 16, 9
+ RGB 15, 12, 8
+ RGB 23, 29, 18
+ RGB 18, 24, 16
+ RGB 13, 17, 13
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/berries/pumkin.4bpp b/battle-e/sprites/berries/pumkin.4bpp
new file mode 100755
index 0000000..3a646de
--- /dev/null
+++ b/battle-e/sprites/berries/pumkin.4bpp
Binary files differ
diff --git a/battle-e/sprites/berries/pumkin.pal b/battle-e/sprites/berries/pumkin.pal
new file mode 100644
index 0000000..f9ced24
--- /dev/null
+++ b/battle-e/sprites/berries/pumkin.pal
@@ -0,0 +1,16 @@
+ RGB 18, 30, 30
+ RGB 31, 31, 27
+ RGB 30, 30, 21
+ RGB 30, 29, 15
+ RGB 27, 25, 13
+ RGB 24, 22, 12
+ RGB 16, 17, 8
+ RGB 31, 25, 17
+ RGB 31, 20, 11
+ RGB 31, 15, 5
+ RGB 25, 11, 4
+ RGB 20, 8, 3
+ RGB 14, 26, 18
+ RGB 10, 22, 15
+ RGB 16, 14, 8
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/berries/strib.4bpp b/battle-e/sprites/berries/strib.4bpp
new file mode 100755
index 0000000..7fa191c
--- /dev/null
+++ b/battle-e/sprites/berries/strib.4bpp
Binary files differ
diff --git a/battle-e/sprites/berries/strib.pal b/battle-e/sprites/berries/strib.pal
new file mode 100644
index 0000000..0b6dd57
--- /dev/null
+++ b/battle-e/sprites/berries/strib.pal
@@ -0,0 +1,16 @@
+ RGB 24, 31, 31
+ RGB 31, 31, 31
+ RGB 30, 31, 27
+ RGB 29, 31, 23
+ RGB 28, 31, 19
+ RGB 24, 29, 16
+ RGB 20, 27, 13
+ RGB 16, 25, 10
+ RGB 12, 23, 7
+ RGB 11, 19, 5
+ RGB 10, 15, 3
+ RGB 9, 12, 1
+ RGB 23, 29, 16
+ RGB 19, 25, 14
+ RGB 15, 21, 12
+ RGB 11, 17, 10 \ No newline at end of file
diff --git a/battle-e/sprites/berrybackdrop.4bpp b/battle-e/sprites/berrybackdrop.4bpp
new file mode 100755
index 0000000..58d08b0
--- /dev/null
+++ b/battle-e/sprites/berrybackdrop.4bpp
Binary files differ
diff --git a/battle-e/sprites/berrybackdrop.pal b/battle-e/sprites/berrybackdrop.pal
new file mode 100644
index 0000000..01ab1bd
--- /dev/null
+++ b/battle-e/sprites/berrybackdrop.pal
@@ -0,0 +1,16 @@
+ RGB 0, 0, 0
+ RGB 6, 18, 21
+ RGB 9, 20, 22
+ RGB 15, 23, 25
+ RGB 19, 25, 26
+ RGB 23, 27, 28
+ RGB 27, 29, 30
+ RGB 16, 24, 23
+ RGB 13, 27, 27
+ RGB 20, 29, 29
+ RGB 18, 26, 26
+ RGB 23, 30, 30
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/berrybackdrop.tilemap b/battle-e/sprites/berrybackdrop.tilemap
new file mode 100755
index 0000000..edb9cf2
--- /dev/null
+++ b/battle-e/sprites/berrybackdrop.tilemap
Binary files differ
diff --git a/battle-e/sprites/trainerdoor.4bpp b/battle-e/sprites/trainerdoor.4bpp
new file mode 100755
index 0000000..daef715
--- /dev/null
+++ b/battle-e/sprites/trainerdoor.4bpp
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/battle-e/sprites/trainerdoor.pal b/battle-e/sprites/trainerdoor.pal
new file mode 100644
index 0000000..5b48f5c
--- /dev/null
+++ b/battle-e/sprites/trainerdoor.pal
@@ -0,0 +1,4 @@
+ RGB 0, 0, 0
+ RGB 7, 23, 31
+ RGB 0, 11, 19
+ RGB 0, 0, 0 \ No newline at end of file
diff --git a/battle-e/sprites/trainers/aroma_lady.4bpp b/battle-e/sprites/trainers/aroma_lady.4bpp
new file mode 100755
index 0000000..6cd8d77
--- /dev/null
+++ b/battle-e/sprites/trainers/aroma_lady.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/battle_girl.4bpp b/battle-e/sprites/trainers/battle_girl.4bpp
new file mode 100755
index 0000000..2f2a54f
--- /dev/null
+++ b/battle-e/sprites/trainers/battle_girl.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/beauty.4bpp b/battle-e/sprites/trainers/beauty.4bpp
new file mode 100755
index 0000000..a0657a1
--- /dev/null
+++ b/battle-e/sprites/trainers/beauty.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/black_belt.4bpp b/battle-e/sprites/trainers/black_belt.4bpp
new file mode 100755
index 0000000..ac71f18
--- /dev/null
+++ b/battle-e/sprites/trainers/black_belt.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/bug_maniac.4bpp b/battle-e/sprites/trainers/bug_maniac.4bpp
new file mode 100755
index 0000000..ae44d5a
--- /dev/null
+++ b/battle-e/sprites/trainers/bug_maniac.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/camper.4bpp b/battle-e/sprites/trainers/camper.4bpp
new file mode 100755
index 0000000..c046dfe
--- /dev/null
+++ b/battle-e/sprites/trainers/camper.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/collector.4bpp b/battle-e/sprites/trainers/collector.4bpp
new file mode 100755
index 0000000..1326731
--- /dev/null
+++ b/battle-e/sprites/trainers/collector.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/cooltrainer_f.4bpp b/battle-e/sprites/trainers/cooltrainer_f.4bpp
new file mode 100755
index 0000000..4f90942
--- /dev/null
+++ b/battle-e/sprites/trainers/cooltrainer_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/cooltrainer_m.4bpp b/battle-e/sprites/trainers/cooltrainer_m.4bpp
new file mode 100755
index 0000000..837284a
--- /dev/null
+++ b/battle-e/sprites/trainers/cooltrainer_m.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/expert_f.4bpp b/battle-e/sprites/trainers/expert_f.4bpp
new file mode 100755
index 0000000..6e5e935
--- /dev/null
+++ b/battle-e/sprites/trainers/expert_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/expert_m.4bpp b/battle-e/sprites/trainers/expert_m.4bpp
new file mode 100755
index 0000000..7d04f7d
--- /dev/null
+++ b/battle-e/sprites/trainers/expert_m.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/fisherman.4bpp b/battle-e/sprites/trainers/fisherman.4bpp
new file mode 100755
index 0000000..4577f9d
--- /dev/null
+++ b/battle-e/sprites/trainers/fisherman.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/gentleman.4bpp b/battle-e/sprites/trainers/gentleman.4bpp
new file mode 100755
index 0000000..de2abf5
--- /dev/null
+++ b/battle-e/sprites/trainers/gentleman.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/guitarist.4bpp b/battle-e/sprites/trainers/guitarist.4bpp
new file mode 100755
index 0000000..d03fb04
--- /dev/null
+++ b/battle-e/sprites/trainers/guitarist.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/hex_maniac.4bpp b/battle-e/sprites/trainers/hex_maniac.4bpp
new file mode 100755
index 0000000..99e338e
--- /dev/null
+++ b/battle-e/sprites/trainers/hex_maniac.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/hiker.4bpp b/battle-e/sprites/trainers/hiker.4bpp
new file mode 100755
index 0000000..b511cb9
--- /dev/null
+++ b/battle-e/sprites/trainers/hiker.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/lady.4bpp b/battle-e/sprites/trainers/lady.4bpp
new file mode 100755
index 0000000..96dd4a9
--- /dev/null
+++ b/battle-e/sprites/trainers/lady.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/ninja_boy.4bpp b/battle-e/sprites/trainers/ninja_boy.4bpp
new file mode 100755
index 0000000..cde7561
--- /dev/null
+++ b/battle-e/sprites/trainers/ninja_boy.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/parasol_lady.4bpp b/battle-e/sprites/trainers/parasol_lady.4bpp
new file mode 100755
index 0000000..1922c08
--- /dev/null
+++ b/battle-e/sprites/trainers/parasol_lady.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/picnicker.4bpp b/battle-e/sprites/trainers/picnicker.4bpp
new file mode 100755
index 0000000..a9859d2
--- /dev/null
+++ b/battle-e/sprites/trainers/picnicker.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/pkmn_breeder_f.4bpp b/battle-e/sprites/trainers/pkmn_breeder_f.4bpp
new file mode 100755
index 0000000..6e4a05a
--- /dev/null
+++ b/battle-e/sprites/trainers/pkmn_breeder_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/pkmn_breeder_m.4bpp b/battle-e/sprites/trainers/pkmn_breeder_m.4bpp
new file mode 100755
index 0000000..ad66402
--- /dev/null
+++ b/battle-e/sprites/trainers/pkmn_breeder_m.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/pkmn_ranger_f.4bpp b/battle-e/sprites/trainers/pkmn_ranger_f.4bpp
new file mode 100755
index 0000000..a8b83a1
--- /dev/null
+++ b/battle-e/sprites/trainers/pkmn_ranger_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/pkmn_ranger_m.4bpp b/battle-e/sprites/trainers/pkmn_ranger_m.4bpp
new file mode 100755
index 0000000..946cf15
--- /dev/null
+++ b/battle-e/sprites/trainers/pkmn_ranger_m.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/pokefan_f.4bpp b/battle-e/sprites/trainers/pokefan_f.4bpp
new file mode 100755
index 0000000..5b45c14
--- /dev/null
+++ b/battle-e/sprites/trainers/pokefan_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/pokefan_m.4bpp b/battle-e/sprites/trainers/pokefan_m.4bpp
new file mode 100755
index 0000000..9a28f30
--- /dev/null
+++ b/battle-e/sprites/trainers/pokefan_m.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/pokemaniac.4bpp b/battle-e/sprites/trainers/pokemaniac.4bpp
new file mode 100755
index 0000000..b9b2ec3
--- /dev/null
+++ b/battle-e/sprites/trainers/pokemaniac.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/psychic_f.4bpp b/battle-e/sprites/trainers/psychic_f.4bpp
new file mode 100755
index 0000000..d2530ac
--- /dev/null
+++ b/battle-e/sprites/trainers/psychic_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/psychic_m.4bpp b/battle-e/sprites/trainers/psychic_m.4bpp
new file mode 100755
index 0000000..d64d4ce
--- /dev/null
+++ b/battle-e/sprites/trainers/psychic_m.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/ruin_maniac.4bpp b/battle-e/sprites/trainers/ruin_maniac.4bpp
new file mode 100755
index 0000000..f45d23e
--- /dev/null
+++ b/battle-e/sprites/trainers/ruin_maniac.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/sailor.4bpp b/battle-e/sprites/trainers/sailor.4bpp
new file mode 100755
index 0000000..53e3999
--- /dev/null
+++ b/battle-e/sprites/trainers/sailor.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/school_kid_f.4bpp b/battle-e/sprites/trainers/school_kid_f.4bpp
new file mode 100755
index 0000000..b2b28e9
--- /dev/null
+++ b/battle-e/sprites/trainers/school_kid_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/swimmer_f.4bpp b/battle-e/sprites/trainers/swimmer_f.4bpp
new file mode 100755
index 0000000..478725c
--- /dev/null
+++ b/battle-e/sprites/trainers/swimmer_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/triathlete_m_swim.4bpp b/battle-e/sprites/trainers/triathlete_m_swim.4bpp
new file mode 100755
index 0000000..8778504
--- /dev/null
+++ b/battle-e/sprites/trainers/triathlete_m_swim.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/tuber_f.4bpp b/battle-e/sprites/trainers/tuber_f.4bpp
new file mode 100755
index 0000000..51dda21
--- /dev/null
+++ b/battle-e/sprites/trainers/tuber_f.4bpp
Binary files differ
diff --git a/battle-e/sprites/trainers/youngster.4bpp b/battle-e/sprites/trainers/youngster.4bpp
new file mode 100755
index 0000000..241a415
--- /dev/null
+++ b/battle-e/sprites/trainers/youngster.4bpp
Binary files differ
diff --git a/battle-e/trainers/Makefile b/battle-e/trainers/Makefile
new file mode 100644
index 0000000..04099cd
--- /dev/null
+++ b/battle-e/trainers/Makefile
@@ -0,0 +1,19 @@
+all: alana.bin annie.bin antonio.bin april.bin astrid.bin belford.bin bryce.bin candice.bin celina.bin clayton.bin devin.bin dominic.bin dustin.bin ellie.bin fay.bin fuego.bin goro.bin griffin.bin hayden.bin heather.bin hillary.bin hugo.bin irazu.bin irvin.bin jeffrey.bin judith.bin justine.bin kendall.bin logan.bin maggie.bin mandy.bin marcus.bin natalie.bin natasha.bin nils.bin oscar.bin patrick.bin raquel.bin renee.bin rudy.bin sandia.bin sandy.bin sofia.bin sonya.bin sophie.bin stuart.bin testing.bin tsutomu.bin tyler.bin wilson.bin zuril.bin
+
+%.1: %.asm
+ python ../../scripts/charmap.py $< $@
+
+%.2: %.1
+ rgbasm -o $@ $<
+
+%.3: %.2
+ rgblink -o $@ $<
+
+%.4: %.3
+ dd if=$< of=$@ bs=1 skip=256 count=184
+
+%.bin: %.4
+ python ../../scripts/trainerchecksum.py $< $@
+
+clean:
+ rm -f *.bin \ No newline at end of file
diff --git a/battle-e/trainers/alana.asm b/battle-e/trainers/alana.asm
new file mode 100644
index 0000000..daba955
--- /dev/null
+++ b/battle-e/trainers/alana.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db POKEFAN_F
+ BT_Floor MOSSDEEP
+ OT_Name "ALANA"
+ OT_ID 00000, 00000
+
+ Introduction LET_S,START,THIS,_ELIP,BATTLE,_EX
+ After_Win OH_,DID,I,_ELIP,WIN,_QU
+ After_Loss OH_,DID,I,_ELIP,LOSE,_QU
+
+ Pokemon TORKOAL
+ Holds QUICK_CLAW
+ Moves OVERHEAT, BODY_SLAM, FLAIL, YAWN
+ Level 82
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,0,255,255
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,31,31, TORKOAL_WHITE_SMOKE
+ PV $000000D9 ; ♂ Quiet
+ Nickname "TORKOAL"
+ Friendship 255
+
+ Pokemon DUSCLOPS
+ dw CHESTO_BERRY
+ Moves CONFUSE_RAY, WILL_O_WISP, TOXIC, REST
+ Level 80
+ PP_Ups 0,0,0,0
+ EVs 0,0,255,0,0,255
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, DUSCLOPS_PRESSURE
+ PV $00000016 ; ♀ Sassy
+ Nickname "DUSCLOPS"
+ Friendship 255
+
+ Pokemon CORSOLA
+ dw MYSTIC_WATER
+ Moves SURF, ROCK_TOMB, MIRROR_COAT, RECOVER
+ Level 85
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,0,255,255
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,31,31, CORSOLA_NATURAL_CURE
+ PV $0000001B ; ♀ Brave
+ Nickname "CORSOLA"
+ Friendship 255
diff --git a/battle-e/trainers/annie.asm b/battle-e/trainers/annie.asm
new file mode 100644
index 0000000..923fe6a
--- /dev/null
+++ b/battle-e/trainers/annie.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class SWIMMER_F
+ BT_Floor MOSSDEEP
+ OT_Name "ANNIE"
+ OT_ID 00000, 00000
+
+ Introduction HERE_I_COME,_EX,GO,MY,WATER,POKEMON
+ After_Win IT_S,_A,GREAT,POKEMON,ISN_T,IT
+ After_Loss DON_T,YOU,KNOW,THIS,POKEMON,_QU
+
+ Pokemon MACHAMP
+ Holds BLACK_BELT
+ Moves CROSS_CHOP, EARTHQUAKE, ROCK_SLIDE, FIRE_BLAST
+ Level 60
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, MACHAMP_GUTS
+ PV $000000E7 ; ♂ Docile
+ Nickname "MACHAMP"
+ Friendship 255
+
+ Pokemon MAGNETON
+ Holds MAGNET
+ Moves THUNDERBOLT, THUNDER_WAVE, TRI_ATTACK, PROTECT
+ Level 64
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, MAGNETON_STURDY
+ PV $0000000C ; ⚲ Serious
+ Nickname "MAGNETON"
+ Friendship 255
+
+ Pokemon BLASTOISE
+ Holds LEFTOVERS
+ Moves RAIN_DANCE, PROTECT, SKULL_BASH, HYDRO_PUMP
+ Level 68
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, BLASTOISE_TORRENT
+ PV $00000012 ; ♀ Bashful
+ Nickname "BLASTOISE"
+ Friendship 255
diff --git a/battle-e/trainers/antonio.asm b/battle-e/trainers/antonio.asm
new file mode 100644
index 0000000..468fa43
--- /dev/null
+++ b/battle-e/trainers/antonio.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class GENTLEMAN
+ BT_Floor MOSSDEEP
+ OT_Name "ANTONIO"
+ OT_ID 00000, 00000
+
+ Introduction HMM,HOW,ARE,MY,POKEMON,_QU
+ After_Win HMM,HOW,WERE,MY,POKEMON,_QU_EX
+ After_Loss NOTHING,MUCH,ABOUT,MY,POKEMON,_ELIP
+
+ Pokemon DONPHAN
+ dw SITRUS_BERRY
+ Moves EARTHQUAKE, ROCK_TOMB, SUNNY_DAY, FISSURE
+ Level 53
+ PP_Ups 0,0,0,0
+ EVs 255,255,0,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, DONPHAN_STURDY
+ PV $000000E4 ; ♂ Adamant
+ Nickname "DONPHAN"
+ Friendship 255
+
+ Pokemon SKARMORY
+ Holds SHARP_BEAK
+ Moves DRILL_PECK, STEEL_WING, METAL_SOUND, FACADE
+ Level 55
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,255,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, SKARMORY_STURDY
+ PV $0000001C ; ♀ Adamant
+ Nickname "SKARMORY"
+ Friendship 255
+
+ Pokemon HOUNDOOM
+ dw CHESTO_BERRY
+ Moves OVERHEAT, IRON_TAIL, SLUDGE_BOMB, REST
+ Level 60
+ PP_Ups 0,0,0,0
+ EVs 0,252,0,6,252,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,31,15, HOUNDOOM_EARLY_BIRD
+ PV $000000E1 ; ♂ Hardy
+ Nickname "HOUNDOOM"
+ Friendship 255
diff --git a/battle-e/trainers/april.asm b/battle-e/trainers/april.asm
new file mode 100644
index 0000000..cc2a077
--- /dev/null
+++ b/battle-e/trainers/april.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db AROMA_LADY
+ BT_Floor MOSSDEEP
+ OT_Name "APRIL"
+ OT_ID 00000, 00000
+
+ Introduction SMELL,THIS,_SWEET_SCENT,FROM,MY,POKEMON
+ After_Win YOU,LIKE,THIS,_SWEET_SCENT,TOO,MUCH
+ After_Loss I,CAN_T_WIN,WITH,ONLY,_SWEET_SCENT,_QU
+
+ Pokemon WEEZING
+ Holds WHITE_HERB
+ Moves HAZE, SLUDGE_BOMB, SMOKESCREEN, SUNNY_DAY
+ Level 70
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, WEEZING_LEVITATE
+ PV $00000080 ; ♂ Adamant
+ Nickname "WEEZING"
+ Friendship 255
+
+ Pokemon BELLOSSOM
+ Holds MENTAL_HERB
+ Moves SWEET_SCENT, SOLARBEAM, STUN_SPORE, MOONLIGHT
+ Level 72
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, BELLOSSOM_CHLOROPHYLL
+ PV $0000000F ; ♀ Modest
+ Nickname "BELLOSSOM"
+ Friendship 255
+
+ Pokemon TROPIUS
+ Holds WHITE_HERB
+ Moves SWEET_SCENT, SOLARBEAM, BODY_SLAM, STEEL_WING
+ Level 74
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, TROPIUS_CHLOROPHYLL
+ PV $00000019 ; ♀ Hardy
+ Nickname "TROPIUS"
+ Friendship 255
diff --git a/battle-e/trainers/astrid.asm b/battle-e/trainers/astrid.asm
new file mode 100644
index 0000000..94930cd
--- /dev/null
+++ b/battle-e/trainers/astrid.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ Class LADY
+ BT_Floor 0
+ OT_Name "ASTRID"
+ OT_ID 00000, 00000
+
+ Introduction TALKING,ABOUT,MY,CUTE,POKEMON,_QU
+ After_Win YOUR,POKEMON,IS,_ELIP,CUTE,TOO
+ After_Loss OH_,WASN_T,MY,POKEMON,CUTE,_QU
+
+ Pokemon MAWILE
+ dw SITRUS_BERRY
+ Moves IRON_DEFENSE, BITE, VICEGRIP, FAKE_TEARS
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 255,0,255,0,0,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,15,15, MAWILE_INTIMIDATE
+ PV $0000001F ; ♀ Docile
+ Nickname "MAWILE"
+ Friendship 255
+
+ Pokemon MINUN
+ Holds MAGNET
+ Moves CHARM, SPARK, QUICK_ATTACK, ENCORE
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,15,15, MINUN_MINUS
+ PV $000000D7 ; ♂ Modest
+ Nickname "MINUN"
+ Friendship 255
+
+ Pokemon SHIFTRY
+ Holds LEFTOVERS
+ Moves SUNNY_DAY, SOLARBEAM, SWAGGER, FAINT_ATTACK
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 170,0,0,170,170,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,15,15, SHIFTRY_EARLY_BIRD
+ PV $000000D2 ; ♂ Timid
+ Nickname "SHIFTRY"
+ Friendship 255
diff --git a/battle-e/trainers/belford.asm b/battle-e/trainers/belford.asm
new file mode 100644
index 0000000..badc125
--- /dev/null
+++ b/battle-e/trainers/belford.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 100
+ db COOLTRAINER_M
+ BT_Floor 5
+ OT_Name "BELFORD"
+ OT_ID 00000, 00000
+
+ Introduction YOU,WILL,NOT,LIKE,MY,ATTACK
+ After_Win TOO,BAD,YOU,DON_T,LIKE,POISON
+ After_Loss WHAT,_A,POKEMON,TRAINER,I,SURRENDER
+
+ Pokemon DUSCLOPS
+ Holds LEFTOVERS
+ Moves TOXIC, NIGHT_SHADE, CONFUSE_RAY, WILL_O_WISP
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,20,31,20,20,20, DUSCLOPS_PRESSURE
+ PV $00000094 ; ♂ Careful
+ Nickname "DUSCLOPS"
+ Friendship 255
+
+ Pokemon CROBAT
+ dw BRIGHTPOWDER
+ Moves TOXIC, AIR_CUTTER, CONFUSE_RAY, SHADOW_BALL
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,252,6,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,20,20,20,20, CROBAT_INNER_FOCUS
+ PV $0000001C ; ♀ Adamant
+ Nickname "CROBAT"
+ Friendship 255
+
+ Pokemon REGISTEEL
+ dw CHESTO_BERRY
+ Moves TOXIC, REST, EARTHQUAKE, IRON_DEFENSE
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,20,20,20,20,31, REGISTEEL_CLEAR_BODY
+ PV $0000001E ; ⚲ Bold
+ Nickname "REGISTEEL"
+ Friendship 255
diff --git a/battle-e/trainers/bryce.asm b/battle-e/trainers/bryce.asm
new file mode 100644
index 0000000..da7b87e
--- /dev/null
+++ b/battle-e/trainers/bryce.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db FISHERMAN
+ BT_Floor MOSSDEEP
+ OT_Name "BRYCE"
+ OT_ID 00000, 00000
+
+ Introduction FISHING,IS,JUST,SO,FANTASTIC,_EX
+ After_Win I_AM,DONE,_AND,I_AM,GOING,FISHING
+ After_Loss OKAY,LET_S,GO,FISHING,TOGETHER,_EX
+
+ Pokemon LANTURN
+ Holds CHERI_BERRY
+ Moves CONFUSE_RAY, THUNDER_WAVE, SURF, THUNDERBOLT
+ Level 82
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, LANTURN_VOLT_ABSORB
+ PV $0000000F ; ♀ Modest
+ Nickname "LANTURN"
+ Friendship 255
+
+ Pokemon SHARPEDO
+ dw MYSTIC_WATER
+ Moves CRUNCH, SURF, ICE_BEAM, DOUBLE_EDGE
+ Level 84
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,0,255,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,15,31,15, SHARPEDO_ROUGH_SKIN
+ PV $000000D9 ; ♂ Quiet
+ Nickname "SHARPEDO"
+ Friendship 255
+
+ Pokemon WHISCASH
+ Holds LEFTOVERS
+ Moves SURF, EARTHQUAKE, FISSURE, ROCK_TOMB
+ Level 85
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,0,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, WHISCASH_OBLIVIOUS
+ PV $000000D4 ; ♂ Serious
+ Nickname "WHISCASH"
+ Friendship 255
diff --git a/battle-e/trainers/candice.asm b/battle-e/trainers/candice.asm
new file mode 100644
index 0000000..3437af8
--- /dev/null
+++ b/battle-e/trainers/candice.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db PKMN_BREEDER_F
+ BT_Floor MOSSDEEP
+ OT_Name "CANDICE"
+ OT_ID 00000, 00000
+
+ Introduction WE,ARE,READY,FOR,MORE,_GROWTH
+ After_Win WE,WILL,TRY,MORE,FOR,_GROWTH
+ After_Loss SORRY,PARTNER,I,WILL,_HARDEN,MYSELF
+
+ Pokemon MAGIKARP
+ Holds SILK_SCARF
+ Moves TACKLE, SPLASH, FLAIL, 0
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,14,15,14,14,30, MAGIKARP_SWIFT_SWIM
+ PV $00000085 ; ♂ Impish
+ Nickname "MAGIKARP"
+ Friendship 255
+
+ Pokemon MUDKIP
+ dw MYSTIC_WATER
+ Moves TACKLE, GROWL, MUD_SLAP, WATER_GUN
+ Level 51
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, MUDKIP_TORRENT
+ PV $00000083 ; ♂ Docile
+ Nickname "MUDKIP"
+ Friendship 255
+
+ Pokemon DUSKULL
+ Holds SPELL_TAG
+ Moves LEER, NIGHT_SHADE, DISABLE, FORESIGHT
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, DUSKULL_LEVITATE
+ PV $0000001B ; ♀ Brave
+ Nickname "DUSKULL"
+ Friendship 255
diff --git a/battle-e/trainers/celina.asm b/battle-e/trainers/celina.asm
new file mode 100644
index 0000000..579effa
--- /dev/null
+++ b/battle-e/trainers/celina.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class HEX_MANIAC
+ BT_Floor MOSSDEEP
+ OT_Name "CELINA"
+ OT_ID 00000, 00000
+
+ Introduction GHOST,_ELIP,WHAT,COULD,THAT,BE
+ After_Win GHOST,_ELIP,THEY,NEVER,GET,DEFEATED
+ After_Loss GHOST,_ELIP,THEY,GOT,DEFEATED,_QU
+
+ Pokemon DUSCLOPS
+ Holds SPELL_TAG
+ Moves WILL_O_WISP, SHADOW_BALL, ICE_BEAM, EARTHQUAKE
+ Level 60
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, DUSCLOPS_PRESSURE
+ PV $00000095 ; ♂ Quirky
+ Nickname "DUSCLOPS"
+ Friendship 255
+
+ Pokemon SABLEYE
+ Holds SPELL_TAG
+ Moves FAINT_ATTACK, SHADOW_BALL, TOXIC, PROTECT
+ Level 62
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, SABLEYE_KEEN_EYE
+ PV $00000096 ; ♂ Hardy
+ Nickname "SABLEYE"
+ Friendship 255
+
+ Pokemon SHEDINJA
+ Holds SPELL_TAG
+ Moves PROTECT, SHADOW_BALL, CONFUSE_RAY, DOUBLE_TEAM
+ Level 64
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,255,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, SHEDINJA_WONDER_GUARD
+ PV $00000080 ; ⚲ Adamant
+ Nickname "SHEDINJA"
+ Friendship 255
diff --git a/battle-e/trainers/clayton.asm b/battle-e/trainers/clayton.asm
new file mode 100644
index 0000000..418b0a4
--- /dev/null
+++ b/battle-e/trainers/clayton.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ db PKMN_RANGER_M
+ BT_Floor 5
+ OT_Name "CLAYTON"
+ OT_ID 00000, 00000
+
+ Introduction HEHE,MY,BATTLE,ISN_T,THAT,SHAKY
+ After_Win HEHE,_ELIP,_EARTHQUAKE,IS,VERY,SHAKY
+ After_Loss UH_OH,MY,ATTACK,WAS,A_LITTLE,SHAKY
+
+ Pokemon FLYGON
+ Holds SOFT_SAND
+ Moves EARTHQUAKE, DRAGON_CLAW, GIGA_DRAIN, FLAMETHROWER
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,252,0,252,6,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,15,15, FLYGON_LEVITATE
+ PV $00000090 ; ♂ Rash
+ Nickname "FLYGON"
+ Friendship 255
+
+ Pokemon RHYDON
+ Holds QUICK_CLAW
+ Moves EARTHQUAKE, THUNDERBOLT, MEGAHORN, ROCK_TOMB
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, RHYDON_ROCK_HEAD
+ PV $0000001B ; ♀ Brave
+ Nickname "RHYDON"
+ Friendship 255
+
+ Pokemon SWAMPERT
+ Holds LEFTOVERS
+ Moves EARTHQUAKE, SURF, PROTECT, IRON_TAIL
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, SWAMPERT_TORRENT
+ PV $0000007E ; ♂ Lonely
+ Nickname "SWAMPERT"
+ Friendship 255
diff --git a/battle-e/trainers/devin.asm b/battle-e/trainers/devin.asm
new file mode 100644
index 0000000..77c0f00
--- /dev/null
+++ b/battle-e/trainers/devin.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ db COOLTRAINER_M
+ BT_Floor 19
+ OT_Name "DEVIN"
+ OT_ID 00000, 00000
+
+ Introduction POWER,BATTLE,IS,ALWAYS,TRENDY,_EX
+ After_Win SEE,_QU,POWER,BATTLE,IS,TRENDY
+ After_Loss IS,_ELIP,POWER,BATTLE,TRENDY,_QU
+
+ Pokemon HERACROSS
+ Holds SCOPE_LENS
+ Moves MEGAHORN, RETURN, BULK_UP, BRICK_BREAK
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,252,6,252,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, HERACROSS_SWARM
+ PV $000000E4 ; ♂ Adamant
+ Nickname "HERACROSS"
+ Friendship 255
+
+ Pokemon SALAMENCE
+ Holds LUM_BERRY
+ Moves AERIAL_ACE, EARTHQUAKE, RETURN, DRAGON_DANCE
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, SALAMENCE_INTIMIDATE
+ PV $000000E4 ; ♂ Adamant
+ Nickname "SALAMENCE"
+ Friendship 255
+
+ Pokemon METAGROSS
+ Holds QUICK_CLAW
+ Moves METEOR_MASH, SHADOW_BALL, EARTHQUAKE, SLUDGE_BOMB
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,252,0,252,0,6
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, METAGROSS_CLEAR_BODY
+ PV $000000E4 ; ⚲ Adamant
+ Nickname "METAGROSS"
+ Friendship 255
diff --git a/battle-e/trainers/dominic.asm b/battle-e/trainers/dominic.asm
new file mode 100644
index 0000000..1a011af
--- /dev/null
+++ b/battle-e/trainers/dominic.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db GUITARIST
+ BT_Floor MOSSDEEP
+ OT_Name "DOMINIC"
+ OT_ID 00000, 00000
+
+ Introduction LISTEN,TO,MY,SONG,_AND,SPIRIT
+ After_Win WOW,_EX_EX,ARE,YOU,LISTENING,_QU
+ After_Loss ARRGH,I,DON_T,LIKE,SAD,SONGS
+
+ Pokemon SKARMORY
+ Holds SHARP_BEAK
+ Moves SPIKES, ROAR, DRILL_PECK, STEEL_WING
+ Level 72
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,0,255
+ OT_ID 00000, 00000
+ IVs 15,31,15,15,15,31, SKARMORY_STURDY
+ PV $000000DF ; ♂ Careful
+ Nickname "SKARMORY"
+ Friendship 255
+
+ Pokemon WAILORD
+ dw CHESTO_BERRY
+ Moves ROAR, SURF, SLEEP_TALK, REST
+ Level 70
+ PP_Ups 0,0,0,0
+ EVs 0,0,255,0,0,255
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, WAILORD_WATER_VEIL
+ PV $00000014 ; ♀ Calm
+ Nickname "WAILORD"
+ Friendship 255
+
+ Pokemon EXPLOUD
+ Holds SILK_SCARF
+ Moves ROAR, HYPER_VOICE, ICE_BEAM, FLAMETHROWER
+ Level 74
+ PP_Ups 0,0,0,0
+ EVs 255,55,100,0,0,100
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, EXPLOUD_SOUNDPROOF
+ PV $000000E8 ; ♂ Relaxed
+ Nickname "EXPLOUD"
+ Friendship 255
diff --git a/battle-e/trainers/dustin.asm b/battle-e/trainers/dustin.asm
new file mode 100644
index 0000000..90d858d
--- /dev/null
+++ b/battle-e/trainers/dustin.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db TRIATHLETE_M_SWIM
+ BT_Floor MOSSDEEP
+ OT_Name "DUSTIN"
+ OT_ID 00000, 00000
+
+ Introduction RUN,_EX,I,NEVER,_STOP,_EX
+ After_Win ALL_RIGHT,_EX,_STOP,_EX,I_AM,DONE
+ After_Loss NON_STOP,_EX,I,WILL,RUN,MORE
+
+ Pokemon DODRIO
+ Holds QUICK_CLAW
+ Moves DOUBLE_TEAM, TRI_ATTACK, STEEL_WING, AERIAL_ACE
+ Level 70
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, DODRIO_EARLY_BIRD
+ PV $0000008A ; ♂ Jolly
+ Nickname "DODRIO"
+ Friendship 255
+
+ Pokemon MANECTRIC
+ Holds QUICK_CLAW
+ Moves THUNDER, CRUNCH, IRON_TAIL, CHARGE
+ Level 72
+ PP_Ups 0,0,0,0
+ EVs 6,0,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,15,15, MANECTRIC_STATIC
+ PV $0000000E ; ♀ Naive
+ Nickname "MANECTRIC"
+ Friendship 255
+
+ Pokemon LINOONE
+ Holds QUICK_CLAW
+ Moves SURF, THUNDERBOLT, ICE_BEAM, HYPER_BEAM
+ Level 74
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, LINOONE_PICKUP
+ PV $0000008B ; ♂ Naive
+ Nickname "LINOONE"
+ Friendship 255
diff --git a/battle-e/trainers/ellie.asm b/battle-e/trainers/ellie.asm
new file mode 100644
index 0000000..8d79d03
--- /dev/null
+++ b/battle-e/trainers/ellie.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class BEAUTY
+ BT_Floor MOSSDEEP
+ OT_Name "ELLIE"
+ OT_ID 00000, 00000
+
+ Introduction I_AM,ON,A_LITTLE,DIET,_AND,HUNGRY
+ After_Win THIS,DIET,IS,REALLY,WORKING,ME
+ After_Loss SHOULD,I,EAT,LESS,_OR,MORE
+
+ Pokemon CASTFORM
+ Holds HEART_SCALE
+ Moves RAIN_DANCE, WEATHER_BALL, THUNDER, ATTRACT
+ Level 75
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, CASTFORM_FORECAST
+ PV $0000000F ; ♀ Modest
+ Nickname "CASTFORM"
+ Friendship 255
+
+ Pokemon KOFFING
+ Holds PEARL
+ Moves SLUDGE_BOMB, THUNDER, EXPLOSION, FLAMETHROWER
+ Level 80
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, KOFFING_LEVITATE
+ PV $0000008F ; ♂ Bashful
+ Nickname "KOFFING"
+ Friendship 255
+
+ Pokemon CHIMECHO
+ Holds STARDUST
+ Moves PSYCHIC, CALM_MIND, LIGHT_SCREEN, YAWN
+ Level 85
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, CHIMECHO_LEVITATE
+ PV $0000000F ; ♀ Modest
+ Nickname "CHIMECHO"
+ Friendship 255
diff --git a/battle-e/trainers/fay.asm b/battle-e/trainers/fay.asm
new file mode 100644
index 0000000..0e3e4b9
--- /dev/null
+++ b/battle-e/trainers/fay.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 100
+ Class BEAUTY
+ BT_Floor 19
+ OT_Name "FAY"
+ OT_ID 00000, 00000
+
+ Introduction I,CAN_T,WAIT,TO,BATTLE,_EX_EX
+ After_Win _ICE_BEAM,WAS,TOO,COLD,FOR,YOU
+ After_Loss _ICY_WIND,DIDN_T,BEAT,YOUR,HOT,SPIRIT
+
+ Pokemon ALTARIA
+ Holds SHELL_BELL
+ Moves ICE_BEAM, FLAMETHROWER, EARTHQUAKE, AERIAL_ACE
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 0,252,0,6,252,0
+ OT_ID 00000, 00000
+ IVs 20,31,20,20,31,20, ALTARIA_NATURAL_CURE
+ PV $000000E7 ; ♂ Docile
+ Nickname "ALTARIA"
+ Friendship 255
+
+ Pokemon STARMIE
+ Holds LUM_BERRY
+ Moves ICE_BEAM, PSYCHIC, SURF, RECOVER
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,6,252,252
+ OT_ID 00000, 00000
+ IVs 31,20,20,20,31,20, STARMIE_NATURAL_CURE
+ PV $0000000F ; ⚲ Modest
+ Nickname "STARMIE"
+ Friendship 255
+
+ Pokemon REGICE
+ Holds LEFTOVERS
+ Moves ICE_BEAM, THUNDERBOLT, PROTECT, EXPLOSION
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 6,0,252,0,252,0
+ OT_ID 00000, 00000
+ IVs 20,20,31,20,31,20, REGICE_CLEAR_BODY
+ PV $00000020 ; ⚲ Relaxed
+ Nickname "REGICE"
+ Friendship 255
diff --git a/battle-e/trainers/fuego.asm b/battle-e/trainers/fuego.asm
new file mode 100644
index 0000000..bdd41a1
--- /dev/null
+++ b/battle-e/trainers/fuego.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 100
+ db COOLTRAINER_M
+ BT_Floor 5
+ OT_Name "FUEGO"
+ OT_ID 00000, 00000
+
+ Introduction I,HAVE,_A,FEELING,YOU,CAN_T_WIN
+ After_Win COLLECT,ICE,STEEL,_AND,ROCK,_EX
+ After_Loss ICE,STEEL,_AND,ROCK,DON_T,WORK
+
+ Pokemon GLALIE
+ Holds SCOPE_LENS
+ Moves SHEER_COLD, ICE_BEAM, EARTHQUAKE, CRUNCH
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,20,31,20,20,20, GLALIE_INNER_FOCUS
+ PV $00000096 ; ♂ Hardy
+ Nickname "GLALIE"
+ Friendship 255
+
+ Pokemon SKARMORY
+ Holds LEFTOVERS
+ Moves STEEL_WING, DRILL_PECK, TOXIC, PROTECT
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,20,20,20,20,31, SKARMORY_KEEN_EYE
+ PV $00000017 ; ♀ Careful
+ Nickname "SKARMORY"
+ Friendship 255
+
+ Pokemon REGIROCK
+ Holds LUM_BERRY
+ Moves EXPLOSION, EARTHQUAKE, BRICK_BREAK, FACADE
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,20,20,20,20, MASQUERAIN_INTIMIDATE
+ PV $0000001B ; ⚲ Brave
+ Nickname "REGIROCK"
+ Friendship 255
diff --git a/battle-e/trainers/goro.asm b/battle-e/trainers/goro.asm
new file mode 100644
index 0000000..e2f4f0e
--- /dev/null
+++ b/battle-e/trainers/goro.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class NINJA_BOY
+ BT_Floor MOSSDEEP
+ OT_Name "GORO"
+ OT_ID 00000, 00000
+
+ Introduction COME_ON,_EX_EX,COME_ON,_EX_EX,SPEED_BOOST,_EX_EX
+ After_Win MORE,_EX_EX,MORE,_EX_EX,SPEED_BOOST,_EX_EX
+ After_Loss ARRGH,_ELIP,GIVE_ME,MORE,SPEED_BOOST,_ELIP_EX
+
+ Pokemon ELECTRODE
+ Holds KING_S_ROCK
+ Moves THUNDERBOLT, LIGHT_SCREEN, MIRROR_COAT, EXPLOSION
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, ELECTRODE_STATIC
+ PV $0000000E ; ⚲ Naive
+ Nickname "ELECTRODE"
+ Friendship 255
+
+ Pokemon NINJASK
+ Holds KING_S_ROCK
+ Moves SILVER_WIND, AERIAL_ACE, FAINT_ATTACK, SHADOW_BALL
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,255,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, NINJASK_SPEED_BOOST
+ PV $000000D5 ; ♂ Jolly
+ Nickname "NINJASK"
+ Friendship 255
+
+ Pokemon CROBAT
+ Holds KING_S_ROCK
+ Moves CONFUSE_RAY, SLUDGE_BOMB, AIR_CUTTER, DOUBLE_TEAM
+ Level 54
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,255,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, CROBAT_INNER_FOCUS
+ PV $0000000D ; ♀ Jolly
+ Nickname "CROBAT"
+ Friendship 255
diff --git a/battle-e/trainers/griffin.asm b/battle-e/trainers/griffin.asm
new file mode 100644
index 0000000..6024039
--- /dev/null
+++ b/battle-e/trainers/griffin.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class PSYCHIC_M
+ BT_Floor MOSSDEEP
+ OT_Name "GRIFFIN"
+ OT_ID 00000, 00000
+
+ Introduction CAN,YOU,SENSE,THE,PRESSURE,_QU
+ After_Win YOUR,PRESSURE,IS,WEAK,_AND,LACKING
+ After_Loss ARRGH,_EX,WHAT,FANTASTIC,PRESSURE,_EX_EX
+
+ Pokemon BANETTE
+ Holds LEPPA_BERRY
+ Moves SPITE, PROTECT, DOUBLE_TEAM, WILL_O_WISP
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, BANETTE_INSOMNIA
+ PV $00000085 ; ♂ Impish
+ Nickname "BANETTE"
+ Friendship 255
+
+ Pokemon ABSOL
+ dw BRIGHTPOWDER
+ Moves PROTECT, DOUBLE_TEAM, REST, SLASH
+ Level 54
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, ABSOL_PRESSURE
+ PV $0000001C ; ♀ Adamant
+ Nickname "ABSOL"
+ Friendship 255
+
+ Pokemon DUSCLOPS
+ dw CHESTO_BERRY
+ Moves PROTECT, REST, EARTHQUAKE, SHADOW_BALL
+ Level 56
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, DUSCLOPS_PRESSURE
+ PV $0000001C ; ♀ Adamant
+ Nickname "DUSCLOPS"
+ Friendship 255
diff --git a/battle-e/trainers/hayden.asm b/battle-e/trainers/hayden.asm
new file mode 100644
index 0000000..33c0d91
--- /dev/null
+++ b/battle-e/trainers/hayden.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db GUITARIST
+ BT_Floor MOSSDEEP
+ OT_Name "HAYDEN"
+ OT_ID 00000, 00000
+
+ Introduction YEAH,_EX,COOL,_EXPLOSION,SONGS,_EX_EX
+ After_Win YEAH,_EX_EX,INCREDIBLE,_EXPLOSION,SONGS,_EX_EX
+ After_Loss NO,_EX,MY,SONGS,AREN_T,POPULAR
+
+ Pokemon ELECTRODE
+ Holds MAGNET
+ Moves EXPLOSION, MIRROR_COAT, LIGHT_SCREEN, SWIFT
+ Level 80
+ PP_Ups 0,0,0,0
+ EVs 252,6,252,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,15, ELECTRODE_STATIC
+ PV $00000080 ; ⚲ Adamant
+ Nickname "ELECTRODE"
+ Friendship 255
+
+ Pokemon SOLROCK
+ Holds HARD_STONE
+ Moves EXPLOSION, COSMIC_POWER, ROCK_SLIDE, PSYCHIC
+ Level 82
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, SOLROCK_LEVITATE
+ PV $0000007F ; ⚲ Brave
+ Nickname "SOLROCK"
+ Friendship 255
+
+ Pokemon SHIFTRY
+ Holds FOCUS_BAND
+ Moves EXPLOSION, FAINT_ATTACK, PROTECT, TOXIC
+ Level 84
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,252,6,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, SHIFTRY_EARLY_BIRD
+ PV $00000080 ; ♂ Adamant
+ Nickname "SHIFTRY"
+ Friendship 255
diff --git a/battle-e/trainers/heather.asm b/battle-e/trainers/heather.asm
new file mode 100644
index 0000000..c60f554
--- /dev/null
+++ b/battle-e/trainers/heather.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db PKMN_RANGER_F
+ BT_Floor MOSSDEEP
+ OT_Name "HEATHER"
+ OT_ID 00000, 00000
+
+ Introduction YOUR,ATTACK,GOES,BACK,TO,YOU
+ After_Win _COUNTER,ATTACK,ARE,YOU,OK_,BLANK
+ After_Loss OH,_EX,MY,_COUNTER,DIDN_T,WORK
+
+ Pokemon MACHAMP
+ Holds SHELL_BELL
+ Moves COUNTER, CROSS_CHOP, ROCK_SLIDE, EARTHQUAKE
+ Level 76
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, MACHAMP_GUTS
+ PV $00000080 ; ♂ Adamant
+ Nickname "MACHAMP"
+ Friendship 255
+
+ dw TENTACRUEL
+ Holds POISON_BARB
+ Moves MIRROR_COAT, SURF, SLUDGE_BOMB, ICE_BEAM
+ Level 78
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, TENTACRUEL_LIQUID_OOZE
+ PV $0000000F ; ♀ Modest
+ Nickname "TENTACRUEL"
+ Friendship 255
+
+ Pokemon WOBBUFFET
+ Holds LUM_BERRY
+ Moves COUNTER, MIRROR_COAT, ENCORE, DESTINY_BOND
+ Level 80
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, WOBBUFFET_SHADOW_TAG
+ PV $00000085 ; ♂ Impish
+ Nickname "WOBBUFFET"
+ Friendship 255
diff --git a/battle-e/trainers/hillary.asm b/battle-e/trainers/hillary.asm
new file mode 100644
index 0000000..1d06dd3
--- /dev/null
+++ b/battle-e/trainers/hillary.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class LADY
+ BT_Floor MOSSDEEP
+ OT_Name "HILLARY"
+ OT_ID 00000, 00000
+
+ Introduction OH_,IS,MY,POKEMON,OVERWHELMING,_QU
+ After_Win _STOP,GOING,EASY,ON,ME,_EX_EX
+ After_Loss COULDN_T,YOU,GO_EASY,ON,ME,_QU
+
+ Pokemon XATU
+ dw TWISTEDSPOON
+ Moves PSYCHIC, SUNNY_DAY, CONFUSE_RAY, SOLARBEAM
+ Level 54
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 0,15,15,31,31,15, XATU_SYNCHRONIZE
+ PV $000000D7 ; ♂ Modest
+ Nickname "XATU"
+ Friendship 255
+
+ Pokemon WOBBUFFET
+ dw SITRUS_BERRY
+ Moves COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
+ Level 57
+ PP_Ups 0,0,0,0
+ EVs 0,0,255,0,0,255
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, WOBBUFFET_SHADOW_TAG
+ PV $00000012 ; ♀ Bashful
+ Nickname "WOBBUFFET"
+ Friendship 255
+
+ Pokemon HOUNDOOM
+ Holds SALAC_BERRY
+ Moves FLAMETHROWER, CRUNCH, TORMENT, TAUNT
+ Level 60
+ PP_Ups 0,0,0,0
+ EVs 0,0,255,0,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, HOUNDOOM_FLASH_FIRE
+ PV $000000D7 ; ♂ Modest
+ Nickname "HOUNDOOM"
+ Friendship 255
diff --git a/battle-e/trainers/hugo.asm b/battle-e/trainers/hugo.asm
new file mode 100644
index 0000000..9017095
--- /dev/null
+++ b/battle-e/trainers/hugo.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db HIKER
+ BT_Floor MOSSDEEP
+ OT_Name "HUGO"
+ OT_ID 00000, 00000
+
+ Introduction START,_A,DIET,_QU,NO,WAY
+ After_Win HAH,_ELIP,I_AM,NOW,HUNGRY,_ELIP
+ After_Loss IT_S,SUPER,HARD,TO,DIET,_EX_EX
+
+ Pokemon WALREIN
+ dw SITRUS_BERRY
+ Moves BLIZZARD, REST, BODY_SLAM, SURF
+ Level 66
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,0,252,6
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, WALREIN_THICK_FAT
+ PV $0000008E ; ♂ Quiet
+ Nickname "WALREIN"
+ Friendship 255
+
+ Pokemon HARIYAMA
+ Holds FOCUS_BAND
+ Moves WHIRLWIND, KNOCK_OFF, BELLY_DRUM, CROSS_CHOP
+ Level 68
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, HARIYAMA_THICK_FAT
+ PV $0000007F ; ♂ Brave
+ Nickname "HARIYAMA"
+ Friendship 255
+
+ Pokemon GRUMPIG
+ dw SITRUS_BERRY
+ Moves PSYCHIC, IRON_TAIL, CONFUSE_RAY, PROTECT
+ Level 70
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,6,252,252
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,31,31, GRUMPIG_THICK_FAT
+ PV $00000018 ; ♀ Quirky
+ Nickname "GRUMPIG"
+ Friendship 255
diff --git a/battle-e/trainers/irazu.asm b/battle-e/trainers/irazu.asm
new file mode 100644
index 0000000..2804cc8
--- /dev/null
+++ b/battle-e/trainers/irazu.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 100
+ db PKMN_RANGER_M
+ BT_Floor 12
+ OT_Name "IRAZU"
+ OT_ID 00000, 00000
+
+ Introduction MY,POKEMON,THANKS,ME,FOR,CARE
+ After_Win POKEMON,DON_T,TRUST,TRAINER,WITHOUT,CARE
+ After_Loss IF_I_LOSE,MY,_FRUSTRATION,LEVEL,GOES,UP
+
+ Pokemon KINGDRA
+ dw CHESTO_BERRY
+ Moves RETURN, DRAGON_DANCE, REST, DOUBLE_TEAM
+ Level 100
+ PP_Ups 3,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,20,20,20,20, KINGDRA_SWIFT_SWIM
+ PV $0000001C ; ♀ Adamant
+ Nickname "KINGDRA"
+ Friendship 255
+
+ Pokemon HARIYAMA
+ Holds SHELL_BELL
+ Moves RETURN, BELLY_DRUM, REVERSAL, EARTHQUAKE
+ Level 100
+ PP_Ups 3,0,0,0
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,20,20,20,20,31, HARIYAMA_THICK_FAT
+ PV $00000080 ; ♂ Adamant
+ Nickname "HARIYAMA"
+ Friendship 255
+
+ Pokemon REGISTEEL
+ Holds LEFTOVERS
+ Moves RETURN, CURSE, REST, EARTHQUAKE
+ Level 100
+ PP_Ups 3,0,0,0
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,20,20,20,20,31, REGISTEEL_CLEAR_BODY
+ PV $0000001C ; ⚲ Adamant
+ Nickname "REGISTEEL"
+ Friendship 255
diff --git a/battle-e/trainers/irvin.asm b/battle-e/trainers/irvin.asm
new file mode 100644
index 0000000..c838453
--- /dev/null
+++ b/battle-e/trainers/irvin.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db BUG_MANIAC
+ BT_Floor MOSSDEEP
+ OT_Name "IRVIN"
+ OT_ID 00000, 00000
+
+ Introduction MMM,_ELIP_EX,I,TRUST,BUG,POKEMON
+ After_Win ISN_T,MY,BUG,POKEMON,COOL,_QU
+ After_Loss BUG,POKEMON,ARE,ALWAYS,THE,BEST
+
+ Pokemon BEAUTIFLY
+ Holds POISON_BARB
+ Moves SILVER_WIND, AERIAL_ACE, MORNING_SUN, STUN_SPORE
+ Level 90
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,255,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, BEAUTIFLY_SWARM
+ PV $0000001C ; ♀ Adamant
+ Nickname "BEAUTIFLY"
+ Friendship 255
+
+ Pokemon DUSTOX
+ dw PERSIM_BERRY
+ Moves PSYCHIC, SHADOW_BALL, MOONLIGHT, ATTRACT
+ Level 92
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, DUSTOX_SHIELD_DUST
+ PV $000000E1 ; ♂ Hardy
+ Nickname "DUSTOX"
+ Friendship 255
+
+ dw MASQUERAIN
+ Holds LAX_INCENSE
+ Moves SILVER_WIND, SOLARBEAM, ICE_BEAM, STUN_SPORE
+ Level 91
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,0,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, MASQUERAIN_INTIMIDATE
+ PV $00000019 ; ♀ Hardy
+ Nickname "MASQUERAIN"
+ Friendship 255
diff --git a/battle-e/trainers/jeffrey.asm b/battle-e/trainers/jeffrey.asm
new file mode 100644
index 0000000..ee1c946
--- /dev/null
+++ b/battle-e/trainers/jeffrey.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db YOUNGSTER
+ BT_Floor MOSSDEEP
+ OT_Name "JEFFREY"
+ OT_ID 00000, 00000
+
+ Introduction I,WILL,SHOW,YOU,MY,SECRET
+ After_Win YEAH,MY,SECRET,_ELIP,IS,SECRET
+ After_Loss GO_EASY,ON,ME,_ELIP,PLEASE,_EX
+
+ Pokemon PINSIR
+ Holds KING_S_ROCK
+ Moves SWORDS_DANCE, GUILLOTINE, EARTHQUAKE, BRICK_BREAK
+ Level 60
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, PINSIR_HYPER_CUTTER
+ PV $00000080 ; ♂ Adamant
+ Nickname "PINSIR"
+ Friendship 255
+
+ Pokemon NINETALES
+ Holds CHARCOAL
+ Moves FLAMETHROWER, CONFUSE_RAY, IRON_TAIL, FIRE_SPIN
+ Level 62
+ PP_Ups 0,0,0,0
+ EVs 6,0,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, NINETALES_FLASH_FIRE
+ PV $0000000F ; ♀ Modest
+ Nickname "NINETALES"
+ Friendship 255
+
+ Pokemon BLASTOISE
+ dw MYSTIC_WATER
+ Moves SURF, BRICK_BREAK, EARTHQUAKE, ICE_BEAM
+ Level 64
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,0,252,6
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, BLASTOISE_TORRENT
+ PV $00000083 ; ♂ Docile
+ Nickname "BLASTOISE"
+ Friendship 255
diff --git a/battle-e/trainers/judith.asm b/battle-e/trainers/judith.asm
new file mode 100644
index 0000000..a999a4e
--- /dev/null
+++ b/battle-e/trainers/judith.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db PSYCHIC_F
+ BT_Floor MOSSDEEP
+ OT_Name "JUDITH"
+ OT_ID 00000, 00000
+
+ Introduction WELCOME,_ELIP_EX,I_AM,_A,_TRICK,_T_PSYCHIC
+ After_Win ISN_T,MY,_TRICK,SO,COOL,_QU
+ After_Loss _A,GOOD,_TRICK,IS,NEVER,EASY
+
+ Pokemon ALAKAZAM
+ Holds CHOICE_BAND
+ Moves TRICK, DISABLE, PSYCHIC, REFLECT
+ Level 70
+ PP_Ups 0,0,0,0
+ EVs 6,0,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, ALAKAZAM_SYNCHRONIZE
+ PV $00000087 ; ♂ Timid
+ Nickname "ALAKAZAM"
+ Friendship 255
+
+ Pokemon KECLEON
+ Holds CHOICE_BAND
+ Moves TRICK, BLIZZARD, FIRE_BLAST, THUNDER
+ Level 72
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,6,0
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, KECLEON_COLOR_CHANGE
+ PV $00000016 ; ⚲ Sassy
+ Nickname "KECLEON"
+ Friendship 255
+
+ Pokemon LINOONE
+ Holds CHOICE_BAND
+ Moves TRICK, RETURN, ROAR, ATTRACT
+ Level 74
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, LINOONE_PICKUP
+ PV $00000085 ; ♂ Impish
+ Nickname "LINOONE"
+ Friendship 255
diff --git a/battle-e/trainers/justine.asm b/battle-e/trainers/justine.asm
new file mode 100644
index 0000000..a090933
--- /dev/null
+++ b/battle-e/trainers/justine.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db POKEFAN_F
+ BT_Floor MOSSDEEP
+ OT_Name "JUSTINE"
+ OT_ID 00000, 00000
+
+ Introduction HEY,_QU_EX,LOOK,AT,MY,POKEMON
+ After_Win OH_DEAR,WAS,IT,A_LITTLE,SURPRISE,_QU
+ After_Loss OH_DEAR,IT,WAS,A_LITTLE,SURPRISE,_QU_EX
+
+ Pokemon PIKACHU
+ Holds LIGHT_BALL
+ Moves QUICK_ATTACK, DOUBLE_TEAM, LIGHT_SCREEN, THUNDERBOLT
+ Level 60
+ PP_Ups 0,0,0,0
+ EVs 6,0,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, PIKACHU_STATIC
+ PV $0000000F ; ♀ Modest
+ Nickname "PIKACHU"
+ Friendship 255
+
+ Pokemon GOLEM
+ dw BRIGHTPOWDER
+ Moves EXPLOSION, EARTHQUAKE, ROCK_SLIDE, FOCUS_PUNCH
+ Level 62
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, GOLEM_STURDY
+ PV $0000001B ; ♀ Brave
+ Nickname "GOLEM"
+ Friendship 255
+
+ Pokemon GENGAR
+ Holds LEFTOVERS
+ Moves CONFUSE_RAY, SHADOW_BALL, SPITE, PSYCHIC
+ Level 64
+ PP_Ups 0,0,0,0
+ EVs 252,6,252,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, GENGAR_LEVITATE
+ PV $00000087 ; ♂ Timid
+ Nickname "GENGAR"
+ Friendship 255
diff --git a/battle-e/trainers/kendall.asm b/battle-e/trainers/kendall.asm
new file mode 100644
index 0000000..06cc2df
--- /dev/null
+++ b/battle-e/trainers/kendall.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class POKEFAN_M
+ BT_Floor MOSSDEEP
+ OT_Name "KENDALL"
+ OT_ID 00000, 00000
+
+ Introduction _FLASH,_EX_EX,I,LIKE,IT,_EX_EX
+ After_Win CUTE,_EX,POKEMON,_EX,_FLASH,_EX_EX
+ After_Loss I,CAN_T_WIN,WITH,ONLY,_FLASH,_EX_EX
+
+ Pokemon PLUSLE
+ Holds MAGNET
+ Moves SPARK, ATTRACT, SUBSTITUTE, FLASH
+ Level 90
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,6,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, PLUSLE_PLUS
+ PV $0000008C ; ♂ Modest
+ Nickname "PLUSLE"
+ Friendship 255
+
+ Pokemon MINUN
+ Holds MAGNET
+ Moves THUNDER_WAVE, SHOCK_WAVE, FAKE_TEARS, FLASH
+ Level 92
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,252,6,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, MINUN_MINUS
+ PV $0000000F ; ♀ Modest
+ Nickname "MINUN"
+ Friendship 255
+
+ Pokemon SNORUNT
+ dw NEVERMELTICE
+ Moves BLOCK, ICY_WIND, PROTECT, FLASH
+ Level 94
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, SNORUNT_INNER_FOCUS
+ PV $0000000F ; ♀ Modest
+ Nickname "SNORUNT"
+ Friendship 255
diff --git a/battle-e/trainers/logan.asm b/battle-e/trainers/logan.asm
new file mode 100644
index 0000000..a556c2e
--- /dev/null
+++ b/battle-e/trainers/logan.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db RUIN_MANIAC
+ BT_Floor MOSSDEEP
+ OT_Name "LOGAN"
+ OT_ID 00000, 00000
+
+ Introduction BEGINNING,_QU,END,_QU_EX,I_AM,CONFUSED
+ After_Win _RELICANTH,_EX,_WAILORD,_QU_EX,CORRECT,_QU_EX
+ After_Loss _WAILORD,_QU,_RELICANTH,_QU_EX,OPPOSITE,_QU_EX
+
+ Pokemon WAILORD
+ dw MYSTIC_WATER
+ Moves SURF, FISSURE, EARTHQUAKE, ICE_BEAM
+ Level 58
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, WAILORD_OBLIVIOUS
+ PV $00000011 ; ♀ Quiet
+ Nickname "WAILORD"
+ Friendship 255
+
+ Pokemon ARMALDO
+ Holds SCOPE_LENS
+ Moves ROCK_SLIDE, SLASH, EARTHQUAKE, AERIAL_ACE
+ Level 60
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, ARMALDO_BATTLE_ARMOR
+ PV $00000080 ; ♂ Adamant
+ Nickname "ARMALDO"
+ Friendship 255
+
+ Pokemon RELICANTH
+ dw CHESTO_BERRY
+ Moves DOUBLE_EDGE, REST, DIVE, AMNESIA
+ Level 62
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, RELICANTH_ROCK_HEAD
+ PV $00000076 ; ♂ Bashful
+ Nickname "RELICANTH"
+ Friendship 255
diff --git a/battle-e/trainers/macros.asm b/battle-e/trainers/macros.asm
new file mode 100644
index 0000000..9b389fa
--- /dev/null
+++ b/battle-e/trainers/macros.asm
@@ -0,0 +1,73 @@
+INCLUDE "../../constants/abilities.asm"
+INCLUDE "../../constants/easychat.asm"
+INCLUDE "../../constants/items.asm"
+INCLUDE "../../constants/moves.asm"
+INCLUDE "../../constants/pokemon.asm"
+INCLUDE "../../constants/trainerclasses.asm"
+
+MOSSDEEP EQU 0
+
+BT_Level: MACRO
+ Section "battle",ROM0[$100]
+ db \1
+ ENDM
+Class: MACRO
+ db (\1)
+ ENDM
+BT_Floor: MACRO
+ dw \1
+ ENDM
+OT_Name: MACRO
+ db \1
+ db $FF
+ REPT 7 - STRLEN(\1)
+ db 0
+ ENDR
+ ENDM
+Introduction: MACRO
+ dw \1, \2, \3, \4, \5, \6
+ ENDM
+After_Win: MACRO
+ dw \1, \2, \3, \4, \5, \6
+ ENDM
+After_Loss: MACRO
+ dw \1, \2, \3, \4, \5, \6
+ ENDM
+Pokemon: MACRO
+ dw \1
+ ENDM
+Holds: MACRO
+ dw (\1)
+ ENDM
+Moves: MACRO
+ dw \1, \2, \3, \4
+ ENDM
+Level: MACRO
+ db \1
+ ENDM
+PP_Ups: MACRO
+ db (\1) + (\2 << 2) + (\3 << 4) + (\4 << 6)
+ ENDM
+EVs: MACRO
+ db \1, \2, \3, \4, \5, \6
+ ENDM
+OT_ID: MACRO
+ dw \1, \2
+ ENDM
+IVs: MACRO
+ dw \1 + (\2 << 5) + (\3 << 10) + ((\4 & 1) << 15)
+ dw (\4 >> 1) + (\5 << 4) + (\6 << 9) + (\7 << 15)
+ ENDM
+PV: MACRO
+ dw (\1 & $FFFF), (\1 >> 16)
+ ENDM
+Nickname: MACRO
+ db \1
+ db $FF
+ REPT 10 - STRLEN(\1)
+ db 0
+ ENDR
+ ENDM
+Friendship: MACRO
+ db \1
+ ENDM \ No newline at end of file
diff --git a/battle-e/trainers/maggie.asm b/battle-e/trainers/maggie.asm
new file mode 100644
index 0000000..4251d54
--- /dev/null
+++ b/battle-e/trainers/maggie.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db POKEFAN_F
+ BT_Floor MOSSDEEP
+ OT_Name "MAGGIE"
+ OT_ID 00000, 00000
+
+ Introduction LOOK,AT,MY,CUTE,POKEMON,_EX
+ After_Win MY,POKEMON,ARE,SO,CUTE,_EX
+ After_Loss YOU,BETTER,CARE,FOR,MY,POKEMON
+
+ Pokemon WYNAUT
+ Holds LUM_BERRY
+ Moves COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
+ Level 80
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, WYNAUT_SHADOW_TAG
+ PV $00000083 ; ♂ Docile
+ Nickname "WYNAUT"
+ Friendship 255
+
+ Pokemon WHISMUR
+ Holds SILK_SCARF
+ Moves HYPER_VOICE, ATTRACT, PROTECT, ASTONISH
+ Level 82
+ PP_Ups 0,0,0,0
+ EVs 252,252,6,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, WHISMUR_SOUNDPROOF
+ PV $0000001F ; ♀ Docile
+ Nickname "WHISMUR"
+ Friendship 255
+
+ Pokemon PIKACHU
+ Holds LIGHT_BALL
+ Moves THUNDERBOLT, IRON_TAIL, DOUBLE_TEAM, ATTRACT
+ Level 84
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, PIKACHU_STATIC
+ PV $00000083 ; ♂ Docile
+ Nickname "PIKACHU"
+ Friendship 255
diff --git a/battle-e/trainers/mandy.asm b/battle-e/trainers/mandy.asm
new file mode 100644
index 0000000..77dab64
--- /dev/null
+++ b/battle-e/trainers/mandy.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ db SCHOOL_KID_F
+ BT_Floor 12
+ OT_Name "MANDY"
+ OT_ID 00000, 00000
+
+ Introduction I,WAKE_UP,_AND,STUDY,VERY,HARD
+ After_Win STUDY,IS,BORING,IT_S,NAP,TIME
+ After_Loss _REST,_ELIP,NAP,_ELIP,SLEEP,NOW
+
+ Pokemon ALTARIA
+ dw SITRUS_BERRY
+ Moves SING, DRAGON_CLAW, ICE_BEAM, FLAMETHROWER
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,0,6,252,252,0
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,31,15, ALTARIA_NATURAL_CURE
+ PV $0000000F ; ♀ Modest
+ Nickname "ALTARIA"
+ Friendship 255
+
+ Pokemon BRELOOM
+ Holds LUM_BERRY
+ Moves SPORE, FOCUS_PUNCH, COUNTER, MACH_PUNCH
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,252,0,252,6,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, BRELOOM_EFFECT_SPORE
+ PV $000000E4 ; ♂ Adamant
+ Nickname "BRELOOM"
+ Friendship 255
+
+ Pokemon SLAKING
+ dw BRIGHTPOWDER
+ Moves YAWN, HYPER_BEAM, SHADOW_BALL, ICE_BEAM
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 15,31,15,15,15,31, SLAKING_TRUANT
+ PV $000000DE ; ♂ Sassy
+ Nickname "SLAKING"
+ Friendship 255
diff --git a/battle-e/trainers/marcus.asm b/battle-e/trainers/marcus.asm
new file mode 100644
index 0000000..da4e19f
--- /dev/null
+++ b/battle-e/trainers/marcus.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ db EXPERT_M
+ BT_Floor 5
+ OT_Name "MARCUS"
+ OT_ID 00000, 00000
+
+ Introduction MY,ATTACK,IS,GENIUS,_AND,INVINCIBLE
+ After_Win HOW,WAS,THE,POISON,ATTACK,_QU
+ After_Loss I,_ELIP,CAN_T,BEAT,YOU,_QU
+
+ Pokemon SKARMORY
+ Holds LEFTOVERS
+ Moves TOXIC, PROTECT, SKY_ATTACK, HIDDEN_POWER
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,14,15,15,14,30, SKARMORY_KEEN_EYE ; HP Bug 70
+ PV $00000094 ; ♂ Careful
+ Nickname "SKARMORY"
+ Friendship 255
+
+ Pokemon HERACROSS
+ dw SITRUS_BERRY
+ Moves TOXIC, PROTECT, MEGAHORN, DIG
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, HERACROSS_GUTS
+ PV $0000000D ; ♀ Jolly
+ Nickname "HERACROSS"
+ Friendship 255
+
+ Pokemon SWAMPERT
+ Holds SHELL_BELL
+ Moves TOXIC, PROTECT, ICE_BEAM, DIVE
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,15, SWAMPERT_TORRENT
+ PV $0000007F ; ♂ Brave
+ Nickname "SWAMPERT"
+ Friendship 255
diff --git a/battle-e/trainers/natalie.asm b/battle-e/trainers/natalie.asm
new file mode 100644
index 0000000..2d795ef
--- /dev/null
+++ b/battle-e/trainers/natalie.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db BATTLE_GIRL
+ BT_Floor MOSSDEEP
+ OT_Name "NATALIE"
+ OT_ID 00000, 00000
+
+ Introduction GET,READY,TO,START,THE,BATTLE
+ After_Win ALTHOUGH,I_AM,SMALL,I,BEAT,YOU
+ After_Loss NEXT,BATTLE,I,WILL,BE,BETTER
+
+ Pokemon MAGIKARP
+ Holds CHOICE_BAND
+ Moves SPLASH, TACKLE, FLAIL, 0
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,255,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, MAGIKARP_SWIFT_SWIM
+ PV $000000E4 ; ♂ Adamant
+ Nickname "MAGIKARP"
+ Friendship 255
+
+ Pokemon LAIRON
+ Holds METAL_COAT
+ Moves HEADBUTT, IRON_TAIL, ROAR, IRON_DEFENSE
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 255,255,0,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, LAIRON_STURDY
+ PV $000000E4 ; ♂ Adamant
+ Nickname "LAIRON"
+ Friendship 255
+
+ Pokemon SHELGON
+ dw SITRUS_BERRY
+ Moves DRAGONBREATH, EMBER, BITE, THRASH
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 255,0,0,0,0,255
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, SHELGON_ROCK_HEAD
+ PV $0000001C ; ♀ Adamant
+ Nickname "SHELGON"
+ Friendship 255
diff --git a/battle-e/trainers/natasha.asm b/battle-e/trainers/natasha.asm
new file mode 100644
index 0000000..2781afb
--- /dev/null
+++ b/battle-e/trainers/natasha.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ db PSYCHIC_F
+ BT_Floor 12
+ OT_Name "NATASHA"
+ OT_ID 00000, 00000
+
+ Introduction LOOK,_EX,MY,SKILLED,ATTACK,_EX_EX
+ After_Win OH_,WHERE,WAS,YOUR,_LIGHT_SCREEN,_QU
+ After_Loss I,WAS,NO_MATCH,FOR,YOU,_EX_EX
+
+ Pokemon STARMIE
+ Holds SCOPE_LENS
+ Moves PSYCHIC, THUNDERBOLT, SURF, ICE_BEAM
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,0,6,252,252,0 ; 516 EVs? CHEATER!
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, STARMIE_NATURAL_CURE
+ PV $0000000F ; ⚲ Modest
+ Nickname "STARMIE"
+ Friendship 255
+
+ Pokemon SALAMENCE
+ Holds LUM_BERRY
+ Moves DRAGON_CLAW, FLAMETHROWER, CRUNCH, HYDRO_PUMP
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,0,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,31,15, SALAMENCE_INTIMIDATE
+ PV $0000008C ; ♂ Modest
+ Nickname "SALAMENCE"
+ Friendship 255
+
+ Pokemon SCEPTILE
+ dw BRIGHTPOWDER
+ Moves LEAF_BLADE, CRUNCH, DRAGON_CLAW, DOUBLE_TEAM
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,0,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, SCEPTILE_OVERGROW
+ PV $0000000F ; ♀ Modest
+ Nickname "SCEPTILE"
+ Friendship 255
diff --git a/battle-e/trainers/nils.asm b/battle-e/trainers/nils.asm
new file mode 100644
index 0000000..a6b38bd
--- /dev/null
+++ b/battle-e/trainers/nils.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ Class GENTLEMAN
+ BT_Floor 0
+ OT_Name "NILS"
+ OT_ID 00000, 00000
+
+ Introduction YOUR,CHALLENGE,IS,MORE,THAN,WELCOME
+ After_Win THAT_S,REALLY,ALL,YOU,GOT,_QU
+ After_Loss HMM,WELL,DONE,_ELIP,YOUNG,TRAINER
+
+ Pokemon SABLEYE
+ dw SITRUS_BERRY
+ Moves NIGHT_SHADE, FAKE_OUT, DETECT, KNOCK_OFF
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 255,100,0,155,0,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,15,15, SABLEYE_KEEN_EYE
+ PV $000000CE ; ♂ Docile
+ Nickname "SABLEYE"
+ Friendship 255
+
+ Pokemon PLUSLE
+ Holds MAGNET
+ Moves FAKE_TEARS, SPARK, QUICK_ATTACK, ENCORE
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,15,15, PLUSLE_PLUS
+ PV $0000000F ; ♀ Modest
+ Nickname "PLUSLE"
+ Friendship 255
+
+ Pokemon LUDICOLO
+ Holds SHELL_BELL
+ Moves RAIN_DANCE, SURF, THIEF, GIGA_DRAIN
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 170,0,0,170,170,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,15,15,15, LUDICOLO_SWIFT_SWIM
+ PV $000000D2 ; ♂ Timid
+ Nickname "LUDICOLO"
+ Friendship 255
diff --git a/battle-e/trainers/oscar.asm b/battle-e/trainers/oscar.asm
new file mode 100644
index 0000000..718c9d8
--- /dev/null
+++ b/battle-e/trainers/oscar.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db SAILOR
+ BT_Floor MOSSDEEP
+ OT_Name "OSCAR"
+ OT_ID 00000, 00000
+
+ Introduction DO,YOU,KNOW,THIS,POKEMON,_QU
+ After_Win HOW,WAS,MY,GHOST,POKEMON,_QU
+ After_Loss DID,YOU,LIKE,MY,POKEMON,_QU
+
+ Pokemon ELECTRODE
+ dw LIECHI_BERRY
+ Moves THUNDERBOLT, LIGHT_SCREEN, EXPLOSION, DOUBLE_TEAM
+ Level 67
+ PP_Ups 0,0,0,0
+ EVs 252,6,252,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, ELECTRODE_STATIC
+ PV $00000013 ; ⚲ Rash
+ Nickname "ELECTRODE"
+ Friendship 255
+
+ Pokemon DODRIO
+ Holds SHARP_BEAK
+ Moves DRILL_PECK, TRI_ATTACK, PURSUIT, SUPERSONIC
+ Level 70
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, DODRIO_EARLY_BIRD
+ PV $0000001C ; ♀ Adamant
+ Nickname "DODRIO"
+ Friendship 255
+
+ Pokemon GENGAR
+ dw PETAYA_BERRY
+ Moves PSYCHIC, THUNDERBOLT, DESTINY_BOND, GIGA_DRAIN
+ Level 73
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, GENGAR_LEVITATE
+ PV $0000008C ; ♂ Modest
+ Nickname "GENGAR"
+ Friendship 255
diff --git a/battle-e/trainers/patrick.asm b/battle-e/trainers/patrick.asm
new file mode 100644
index 0000000..8537dba
--- /dev/null
+++ b/battle-e/trainers/patrick.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class CAMPER
+ BT_Floor MOSSDEEP
+ OT_Name "PATRICK"
+ OT_ID 00000, 00000
+
+ Introduction WHAT,COLOR,DO,I,LIKE,_QU
+ After_Win WASN_T,IT,_A,GOOD,COLOR,_QU
+ After_Loss I,WILL,ALWAYS,LIKE,MY,COLOR
+
+ Pokemon XATU
+ dw CHESTO_BERRY
+ Moves PSYCHIC, CONFUSE_RAY, REST, NIGHT_SHADE
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,0,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, XATU_SYNCHRONIZE
+ PV $0000000F ; ♀ Modest
+ Nickname "XATU"
+ Friendship 255
+
+ Pokemon LUDICOLO
+ Holds LEFTOVERS
+ Moves DIVE, LEECH_SEED, TOXIC, PROTECT
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, LUDICOLO_SWIFT_SWIM
+ PV $00000014 ; ♀ Calm
+ Nickname "LUDICOLO"
+ Friendship 255
+
+ Pokemon FLYGON
+ Holds DRAGON_FANG
+ Moves EARTHQUAKE, DRAGON_CLAW, CRUNCH, FLAMETHROWER
+ Level 54
+ PP_Ups 0,0,0,0
+ EVs 0,6,0,252,252,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, FLYGON_LEVITATE
+ PV $00000090 ; ♂ Rash
+ Nickname "FLYGON"
+ Friendship 255
diff --git a/battle-e/trainers/raquel.asm b/battle-e/trainers/raquel.asm
new file mode 100644
index 0000000..6ce0e4a
--- /dev/null
+++ b/battle-e/trainers/raquel.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db COOLTRAINER_F
+ BT_Floor MOSSDEEP
+ OT_Name "RAQUEL"
+ OT_ID 00000, 00000
+
+ Introduction YOU_RE,NOT,_A,MATCH,TO_ME,_ELIP
+ After_Win I,ALWAYS,WIN,WITH,THIS,COLOR
+ After_Loss MY,DREAM,NEVER,GOES,AWAY,_ELIP
+
+ Pokemon CRAWDAUNT
+ dw BLACKGLASSES
+ Moves HIDDEN_POWER, CRABHAMMER, SWORDS_DANCE, FRUSTRATION
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,6,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, CRAWDAUNT_HYPER_CUTTER ; HP Dark 70
+ PV $00000011 ; ♀ Quiet
+ Nickname "CRAWDAUNT"
+ Friendship 0
+
+ Pokemon ELECTRODE
+ Holds MAGNET
+ Moves LIGHT_SCREEN, EXPLOSION, THUNDERBOLT, CHARGE
+ Level 54
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,6,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, ELECTRODE_STATIC
+ PV $0000000A ; ⚲ Timid
+ Nickname "ELECTRODE"
+ Friendship 255
+
+ Pokemon BLAZIKEN
+ Holds SALAC_BERRY
+ Moves BULK_UP, BLAZE_KICK, SKY_UPPERCUT, MIRROR_MOVE
+ Level 56
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, BLAZIKEN_BLAZE
+ PV $0000008C ; ♂ Modest
+ Nickname "BLAZIKEN"
+ Friendship 255
diff --git a/battle-e/trainers/renee.asm b/battle-e/trainers/renee.asm
new file mode 100644
index 0000000..86f36b0
--- /dev/null
+++ b/battle-e/trainers/renee.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db PICNICKER
+ BT_Floor MOSSDEEP
+ OT_Name "RENEE"
+ OT_ID 00000, 00000
+
+ Introduction MY,NATURE,IS,_ELIP,STATIC,_EX
+ After_Win MY,FEELING,IS,NOW,LIKE,_SUNNY_DAY
+ After_Loss MY,FEELING,IS,NOW,LIKE,DRIZZLE
+
+ Pokemon CASTFORM
+ dw PETAYA_BERRY
+ Moves WEATHER_BALL, SOLARBEAM, SUNNY_DAY, FLAMETHROWER
+ Level 72
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, CASTFORM_FORECAST
+ PV $00000012 ; ♀ Bashful
+ Nickname "CASTFORM"
+ Friendship 255
+
+ Pokemon CASTFORM
+ Holds SALAC_BERRY
+ Moves WEATHER_BALL, THUNDER, RAIN_DANCE, THUNDERBOLT
+ Level 70
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, CASTFORM_FORECAST
+ PV $000000DA ; ♂ Bashful
+ Nickname "CASTFORM"
+ Friendship 255
+
+ Pokemon CASTFORM
+ dw APICOT_BERRY
+ Moves WEATHER_BALL, BLIZZARD, HAIL, ICE_BEAM
+ Level 74
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, CASTFORM_FORECAST
+ PV $00000012 ; ♀ Bashful
+ Nickname "CASTFORM"
+ Friendship 255
diff --git a/battle-e/trainers/rudy.asm b/battle-e/trainers/rudy.asm
new file mode 100644
index 0000000..8e42e79
--- /dev/null
+++ b/battle-e/trainers/rudy.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db YOUNGSTER
+ BT_Floor MOSSDEEP
+ OT_Name "RUDY"
+ OT_ID 00000, 00000
+
+ Introduction YEAH,_EX,GO,_EX,_TACKLE,_EX_EX
+ After_Win I,SOMEHOW,WON,THE,BATTLE,_EX_EX
+ After_Loss I_AM,NOT,HOPELESS,BUT,I,GIVE_UP
+
+ Pokemon CASCOON
+ Holds EVERSTONE
+ Moves TACKLE, HARDEN, STRING_SHOT, POISON_STING
+ Level 98
+ PP_Ups 0,0,0,0
+ EVs 252,252,6,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, CASCOON_SHED_SKIN
+ PV $00000083 ; ♂ Docile
+ Nickname "CASCOON"
+ Friendship 255
+
+ Pokemon SILCOON
+ Holds EVERSTONE
+ Moves TACKLE, HARDEN, STRING_SHOT, POISON_STING
+ Level 99
+ PP_Ups 0,0,0,0
+ EVs 252,252,6,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, SILCOON_SHED_SKIN
+ PV $00000012 ; ♀ Bashful
+ Nickname "SILCOON"
+ Friendship 255
+
+ Pokemon MAGIKARP
+ Holds EVERSTONE
+ Moves TACKLE, SPLASH, FLAIL, 0
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,252,6,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, MAGIKARP_SWIFT_SWIM
+ PV $00000095 ; ♂ Quirky
+ Nickname "MAGIKARP"
+ Friendship 255
diff --git a/battle-e/trainers/sandia.asm b/battle-e/trainers/sandia.asm
new file mode 100644
index 0000000..c6098f7
--- /dev/null
+++ b/battle-e/trainers/sandia.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 100
+ db EXPERT_F
+ BT_Floor 12
+ OT_Name "SANDIA"
+ OT_ID 00000, 00000
+
+ Introduction HERE_I_COME,_EX,MY,GUARD,IS,INVINCIBLE
+ After_Win I,BELIEVE,IN,MYSELF,_AND,TRAIN
+ After_Loss YOU,DID,_DETECT,MY,WEAK,POINTS
+
+ Pokemon CLAYDOL
+ Holds SHELL_BELL
+ Moves COSMIC_POWER, REST, PSYCHIC, SHADOW_BALL
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 20,20,31,20,20,31, CLAYDOL_LEVITATE
+ PV $0000000F ; ⚲ Modest
+ Nickname "CLAYDOL"
+ Friendship 255
+
+ Pokemon METAGROSS
+ Holds LUM_BERRY
+ Moves IRON_DEFENSE, REST, METEOR_MASH, EARTHQUAKE
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 0,252,0,6,0,252
+ OT_ID 00000, 00000
+ IVs 20,31,20,20,20,31, METAGROSS_CLEAR_BODY
+ PV $0000001C ; ⚲ Adamant
+ Nickname "METAGROSS"
+ Friendship 255
+
+ Pokemon REGICE
+ dw CHESTO_BERRY
+ Moves CURSE, REST, ICE_BEAM, SUPERPOWER
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,0,252,0,0,6
+ OT_ID 00000, 00000
+ IVs 20,20,31,31,20,20, REGICE_CLEAR_BODY
+ PV $0000001E ; ⚲ Bold
+ Nickname "REGICE"
+ Friendship 255
diff --git a/battle-e/trainers/sandy.asm b/battle-e/trainers/sandy.asm
new file mode 100644
index 0000000..1cfc479
--- /dev/null
+++ b/battle-e/trainers/sandy.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 50
+ Class PICNICKER
+ BT_Floor 19
+ OT_Name "SANDY"
+ OT_ID 00000, 00000
+
+ Introduction I,GOT,MY,POKEMON,WITH,POKEBLOCK
+ After_Win I,COLLECT,MORE,POKEMON,WITH,POKEBLOCK
+ After_Loss URGH,I,HAVE,NO,MORE,POKEBLOCK
+
+ Pokemon HERACROSS
+ Holds BLACK_BELT
+ Moves BRICK_BREAK, COUNTER, MEGAHORN, EARTHQUAKE
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, HERACROSS_GUTS
+ PV $00000080 ; ♂ Adamant
+ Nickname "HERACROSS"
+ Friendship 255
+
+ Pokemon GIRAFARIG
+ dw TWISTEDSPOON
+ Moves PSYCHIC, MAGIC_COAT, CRUNCH, STOMP
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,252,6,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, GIRAFARIG_INNER_FOCUS
+ PV $00000018 ; ♀ Quirky
+ Nickname "GIRAFARIG"
+ Friendship 255
+
+ Pokemon DODRIO
+ Holds SHARP_BEAK
+ Moves TRI_ATTACK, DRILL_PECK, STEEL_WING, PROTECT
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, DODRIO_EARLY_BIRD
+ PV $00000080 ; ♂ Adamant
+ Nickname "DODRIO"
+ Friendship 255
diff --git a/battle-e/trainers/sofia.asm b/battle-e/trainers/sofia.asm
new file mode 100644
index 0000000..2065789
--- /dev/null
+++ b/battle-e/trainers/sofia.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db PARASOL_LADY
+ BT_Floor MOSSDEEP
+ OT_Name "SOFIA"
+ OT_ID 00000, 00000
+
+ Introduction HAPPY,_ELIP,DRIZZLE,_ELIP,_RAIN_DANCE,_EX
+ After_Win DRIZZLE,BUT,MY,FEELING,IS,_SUNNY_DAY
+ After_Loss _SUNNY_DAY,BUT,MY,FEELING,IS,DRIZZLE
+
+ Pokemon KINGDRA
+ dw MYSTIC_WATER
+ Moves RAIN_DANCE, SURF, ICE_BEAM, DRAGONBREATH
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, KINGDRA_SWIFT_SWIM
+ PV $0000000F ; ♀ Modest
+ Nickname "KINGDRA"
+ Friendship 255
+
+ Pokemon LUDICOLO
+ Holds LEFTOVERS
+ Moves RAIN_DANCE, TOXIC, LEECH_SEED, ATTRACT
+ Level 55
+ PP_Ups 0,0,0,0
+ EVs 255,0,255,0,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,31,15,15,15, LUDICOLO_RAIN_DISH
+ PV $000000E9 ; ♂ Impish
+ Nickname "LUDICOLO"
+ Friendship 255
+
+ Pokemon MANECTRIC
+ Holds KING_S_ROCK
+ Moves RAIN_DANCE, THUNDER, THUNDER_WAVE, CRUNCH
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, MANECTRIC_STATIC
+ PV $0000000F ; ♀ Modest
+ Nickname "MANECTRIC"
+ Friendship 255
diff --git a/battle-e/trainers/sonya.asm b/battle-e/trainers/sonya.asm
new file mode 100644
index 0000000..57cec8e
--- /dev/null
+++ b/battle-e/trainers/sonya.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db TUBER_F
+ BT_Floor MOSSDEEP
+ OT_Name "SONYA"
+ OT_ID 00000, 00000
+
+ Introduction GROUND,POKEMON,ARE,SO,SCARY,_ELIP
+ After_Win MY,SURPRISE,STRATEGY,WAS,PERFECT,_QU_EX
+ After_Loss SIGH,_ELIP,MY,STRATEGY,DOESN_T,WORK
+
+ Pokemon CLAYDOL
+ dw BRIGHTPOWDER
+ Moves PSYCHIC, EARTHQUAKE, ICE_BEAM, REFLECT
+ Level 51
+ PP_Ups 0,0,0,0
+ EVs 0,0,255,0,0,255
+ OT_ID 00000, 00000
+ IVs 15,31,15,15,31,15, CLAYDOL_LEVITATE
+ PV $00000020 ; ⚲ Relaxed
+ Nickname "CLAYDOL"
+ Friendship 255
+
+ Pokemon CHIMECHO
+ dw TWISTEDSPOON
+ Moves PSYCHIC, SHADOW_BALL, LIGHT_SCREEN, DISABLE
+ Level 53
+ PP_Ups 0,0,0,0
+ EVs 255,0,0,0,255,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,0, CHIMECHO_LEVITATE
+ PV $0000000F ; ♀ Modest
+ Nickname "CHIMECHO"
+ Friendship 255
+
+ Pokemon WEEZING
+ Holds LAX_INCENSE
+ Moves SLUDGE_BOMB, THUNDERBOLT, FLAMETHROWER, EXPLOSION
+ Level 55
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,0,0,255
+ OT_ID 00000, 00000
+ IVs 15,31,15,15,31,15, WEEZING_LEVITATE
+ PV $000000D9 ; ♂ Quiet
+ Nickname "WEEZING"
+ Friendship 255
diff --git a/battle-e/trainers/sophie.asm b/battle-e/trainers/sophie.asm
new file mode 100644
index 0000000..3fc6588
--- /dev/null
+++ b/battle-e/trainers/sophie.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class LADY
+ BT_Floor MOSSDEEP
+ OT_Name "SOPHIE"
+ OT_ID 00000, 00000
+
+ Introduction MY,CUTENESS,WILL,_STOP,YOU,_EX
+ After_Win FUFUFU,DID,YOU,LIKE,IT,_QU_EX
+ After_Loss EH_,YOU,ARE,VERY,CUTE,TOO
+
+ Pokemon DELCATTY
+ Holds SILK_SCARF
+ Moves SING, REST, SUBSTITUTE, DOUBLE_EDGE
+ Level 90
+ PP_Ups 0,0,0,0
+ EVs 0,255,0,255,0,0
+ OT_ID 00000, 00000
+ IVs 15,31,15,31,15,15, DELCATTY_CUTE_CHARM
+ PV $0000001C ; ♀ Adamant
+ Nickname "DELCATTY"
+ Friendship 255
+
+ Pokemon LUVDISC
+ Holds MENTAL_HERB
+ Moves ATTRACT, SWEET_KISS, SURF, FLAIL
+ Level 92
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, LUVDISC_SWIFT_SWIM
+ PV $000000E7 ; ♂ Docile
+ Nickname "LUVDISC"
+ Friendship 255
+
+ Pokemon KIRLIA
+ dw BRIGHTPOWDER
+ Moves ATTRACT, PSYCHIC, HYPNOSIS, DREAM_EATER
+ Level 90
+ PP_Ups 0,0,0,0
+ EVs 0,0,0,255,255,0
+ OT_ID 00000, 00000
+ IVs 15,15,15,31,31,15, KIRLIA_TRACE
+ PV $0000000F ; ♀ Modest
+ Nickname "KIRLIA"
+ Friendship 255
diff --git a/battle-e/trainers/stuart.asm b/battle-e/trainers/stuart.asm
new file mode 100644
index 0000000..ff301f3
--- /dev/null
+++ b/battle-e/trainers/stuart.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db COLLECTOR
+ BT_Floor MOSSDEEP
+ OT_Name "STUART"
+ OT_ID 00000, 00000
+
+ Introduction THERE,IS,NOTHING,BAD,ABOUT,THICK_FAT
+ After_Win MY,POKEMON,WILL,NEVER,DIET,_EX_EX
+ After_Loss MY,POKEMON,SHOULD,START,_A,DIET
+
+ Pokemon AGGRON
+ Holds SCOPE_LENS
+ Moves EARTHQUAKE, ROCK_TOMB, IRON_TAIL, DOUBLE_EDGE
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, AGGRON_ROCK_HEAD
+ PV $00000016 ; ♀ Sassy
+ Nickname "AGGRON"
+ Friendship 255
+
+ Pokemon WAILORD
+ dw CHESTO_BERRY
+ Moves AMNESIA, REST, HYDRO_PUMP, BLIZZARD
+ Level 51
+ PP_Ups 0,0,3,3
+ EVs 252,0,0,0,6,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, WAILORD_OBLIVIOUS
+ PV $00000091 ; ♂ Calm
+ Nickname "WAILORD"
+ Friendship 255
+
+ Pokemon METAGROSS
+ Holds QUICK_CLAW
+ Moves METEOR_MASH, EARTHQUAKE, AERIAL_ACE, REFLECT
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,6,0
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, METAGROSS_CLEAR_BODY
+ PV $00000017 ; ⚲ Careful
+ Nickname "METAGROSS"
+ Friendship 255
diff --git a/battle-e/trainers/testing.asm b/battle-e/trainers/testing.asm
new file mode 100644
index 0000000..1f4a754
--- /dev/null
+++ b/battle-e/trainers/testing.asm
@@ -0,0 +1,44 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ Class HEX_MANIAC
+ BT_Floor MOSSDEEP
+ OT_Name "\{POKéBLOCK}ER"
+ OT_ID 00000, 00000
+
+ Introduction $0040,$0140,$0240,$2440,$2540,$2640 ; KADABRA NOSEPASS ??? ??? GRASSWHISTLE PECK
+ After_Win THIS,DIET,IS,REALLY,WORKING,ME
+ After_Loss $00C0,$01C0,$02C0,$24C0,$25C0,$26C0 ; ??? ??? ??? ??? ??? ZAP CANNON
+
+ Pokemon CASTFORM
+ Holds HEART_SCALE
+ Moves RAIN_DANCE, WEATHER_BALL, THUNDER, ATTRACT
+ Level 2
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, CASTFORM_FORECAST
+ PV $0000000F
+ Nickname "XERNEAS"
+ Friendship 255
+
+ Pokemon KOFFING
+ Holds PEARL
+ Moves SLUDGE_BOMB, THUNDER, EXPLOSION, FLAMETHROWER
+ Level 3
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, KOFFING_LEVITATE
+ PV $0000008F
+ Nickname "YVELTAL"
+ Friendship 255
+
+ Pokemon CHIMECHO
+ Holds STARDUST
+ Moves PSYCHIC, CALM_MIND, LIGHT_SCREEN, YAWN
+ Level 4
+ EVs 252,0,6,0,252,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, CHIMECHO_LEVITATE
+ PV $0000000F
+ Nickname "ZYGARDE"
+ Friendship 255
diff --git a/battle-e/trainers/tsutomu.asm b/battle-e/trainers/tsutomu.asm
new file mode 100644
index 0000000..db92823
--- /dev/null
+++ b/battle-e/trainers/tsutomu.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db TC_BLACK_BELT
+ BT_Floor MOSSDEEP
+ OT_Name "TSUTOMU"
+ OT_ID 00000, 00000
+
+ Introduction HIYAH,I,KNOW,YOUR,WEAK,POINTS
+ After_Win HAHAHA,_EX_EX,THAT_S,YOUR,WEAK,POINTS
+ After_Loss ARRGH,YOU,KNOW,MY,WEAK,POINTS
+
+ Pokemon ZANGOOSE
+ Holds SCOPE_LENS
+ Moves SWORDS_DANCE, REST, ATTRACT, SLASH
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, ZANGOOSE_IMMUNITY
+ PV $0000001C ; ♀ Adamant
+ Nickname "ZANGOOSE"
+ Friendship 255
+
+ Pokemon SEVIPER
+ Holds SCOPE_LENS
+ Moves POISON_TAIL,SWAGGER,GLARE,HAZE
+ Level 54
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, SEVIPER_SHED_SKIN
+ PV $00000080 ; ♂ Adamant
+ Nickname "SEVIPER"
+ Friendship 255
+
+ Pokemon MACHAMP
+ Holds SCOPE_LENS
+ Moves CROSS_CHOP, HIDDEN_POWER, BULK_UP, SCARY_FACE
+ Level 58
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 30,31,14,15,15,14, MACHAMP_GUTS ; HP Electric 70
+ PV $0000001C ; ♀ Adamant
+ Nickname "MACHAMP"
+ Friendship 255
diff --git a/battle-e/trainers/tyler.asm b/battle-e/trainers/tyler.asm
new file mode 100644
index 0000000..2b3fd04
--- /dev/null
+++ b/battle-e/trainers/tyler.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db POKEMANIAC
+ BT_Floor MOSSDEEP
+ OT_Name "TYLER"
+ OT_ID 00000, 00000
+
+ Introduction WHOAH,OVERWHELMING,MEGA,BLANK,ATTACK,_EX
+ After_Win WAHAHAHA,_EX,THAT,WAS,SERIOUS,_1_HIT_KO_
+ After_Loss TOO_STRONG,_EX,GO_EASY,ON,ME,_EX
+
+ Pokemon WALREIN
+ Holds LAX_INCENSE
+ Moves SHEER_COLD, REST, SNORE, ICE_BEAM
+ Level 62
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 15,15,31,15,15,31, WALREIN_THICK_FAT
+ PV $00000013 ; ♀ Rash
+ Nickname "WALREIN"
+ Friendship 255
+
+ Pokemon PINSIR
+ dw BRIGHTPOWDER
+ Moves GUILLOTINE, SUBMISSION, EARTHQUAKE, ROCK_TOMB
+ Level 64
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,15,15,31,15,15, PINSIR_HYPER_CUTTER
+ PV $0000008A ; ♂ Jolly
+ Nickname "PINSIR"
+ Friendship 255
+
+ Pokemon RHYDON
+ Holds QUICK_CLAW
+ Moves HORN_DRILL, ROCK_SLIDE, EARTHQUAKE, MEGAHORN
+ Level 66
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, RHYDON_ROCK_HEAD
+ PV $00000016 ; ♀ Sassy
+ Nickname "RHYDON"
+ Friendship 255
diff --git a/battle-e/trainers/wilson.asm b/battle-e/trainers/wilson.asm
new file mode 100644
index 0000000..d32d4a1
--- /dev/null
+++ b/battle-e/trainers/wilson.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level MOSSDEEP
+ db PKMN_BREEDER_M
+ BT_Floor MOSSDEEP
+ OT_Name "WILSON"
+ OT_ID 00000, 00000
+
+ Introduction LISTEN,_EX,I,CARE,ABOUT,POKEMON
+ After_Win WHAT,IS,THE,NEXT,NORMAL,_QU
+ After_Loss I,CHALLENGE,YOU,AFTER,THIS,NORMAL
+
+ Pokemon GLOOM
+ Holds SUN_STONE
+ Moves POISONPOWDER, STUN_SPORE, SLEEP_POWDER, RAZOR_LEAF
+ Level 50
+ PP_Ups 0,0,0,0
+ EVs 252,0,0,0,252,6
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,31,15, GLOOM_CHLOROPHYLL
+ PV $00000012 ; ♀ Bashful
+ Nickname "GLOOM"
+ Friendship 255
+
+ Pokemon WURMPLE
+ Holds EXP_SHARE
+ Moves TACKLE, STRING_SHOT, POISON_STING, 0
+ Level 52
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,15,15,15,15, WURMPLE_SHIELD_DUST
+ PV $00000083 ; ♂ Docile
+ Nickname "WURMPLE"
+ Friendship 255
+
+ Pokemon CLAMPERL
+ dw DEEPSEASCALE
+ Moves WATER_PULSE, REFRESH, CONFUSE_RAY, WHIRLPOOL
+ Level 54
+ PP_Ups 0,0,0,0
+ EVs 252,0,6,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,15,15,15,15,31, CLAMPERL_SHELL_ARMOR
+ PV $0000000F ; ♀ Modest
+ Nickname "CLAMPERL"
+ Friendship 255
diff --git a/battle-e/trainers/zuril.asm b/battle-e/trainers/zuril.asm
new file mode 100644
index 0000000..6831f21
--- /dev/null
+++ b/battle-e/trainers/zuril.asm
@@ -0,0 +1,47 @@
+INCLUDE "macros.asm"
+
+ BT_Level 100
+ db RUIN_MANIAC
+ BT_Floor 12
+ OT_Name "ZURIL"
+ OT_ID 00000, 00000
+
+ Introduction FINALLY,I,GOT,_A,LEGEND,POKEMON
+ After_Win LEGEND,_ELIP,HOW,FABULOUS,IT,IS
+ After_Loss MY,LEGEND,WASN_T,ABOUT,VICTORY,_ELIP
+
+ Pokemon FLYGON
+ dw BRIGHTPOWDER
+ Moves EARTHQUAKE, DRAGON_CLAW, SANDSTORM, CRUNCH
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 6,252,0,252,0,0
+ OT_ID 00000, 00000
+ IVs 31,20,20,31,20,20, FLYGON_LEVITATE
+ PV $0000000C ; ♀ Serious
+ Nickname "FLYGON"
+ Friendship 255
+
+ Pokemon WHISCASH
+ Holds SCOPE_LENS
+ Moves FISSURE, EARTHQUAKE, SURF, PROTECT
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,252,0,0,0,6
+ OT_ID 00000, 00000
+ IVs 31,31,20,20,20,20, WHISCASH_OBLIVIOUS
+ PV $00000095 ; ♂ Quirky
+ Nickname "WHISCASH"
+ Friendship 255
+
+ Pokemon REGIROCK
+ Holds LEFTOVERS
+ Moves EXPLOSION, ANCIENTPOWER, EARTHQUAKE, REST
+ Level 100
+ PP_Ups 0,0,0,0
+ EVs 252,6,0,0,0,252
+ OT_ID 00000, 00000
+ IVs 31,20,20,20,20,31, REGIROCK_CLEAR_BODY
+ PV $0000001B ; ⚲ Brave
+ Nickname "REGIROCK"
+ Friendship 255
diff --git a/common/battle_e_transfer.asm b/common/battle_e_transfer.asm
new file mode 100644
index 0000000..bc4f4e0
--- /dev/null
+++ b/common/battle_e_transfer.asm
@@ -0,0 +1,71 @@
+TransferData:
+ LD_IND_HL SomeVar2
+ push de
+ ld hl, $BBBB
+ LD_IND_HL Space_1 ; Space_1 = $BBBB
+ EX_DE_HL
+ LD_IND_HL Space_2 ; store transfer length in Space_2, which is odd,
+ ; because we never refer to it again
+ API_0C7 Space_1
+
+ wait 1
+ pop hl ; number of bytes to transfer
+
+ ; calculate number of words to transfer:
+ ; de = (hl + 1) >> 1
+ inc hl
+ ld b, 1
+ call WordShiftRight
+ EX_DE_HL
+
+.asm_18FE
+ ld a, e
+ or d
+ ret z
+ ; while de > 0…
+
+ ld hl, $8888
+ LD_IND_HL Space_1 ; Space_1 = $8888
+ ld a, $01
+ LD_IND_A SomeVar1 ; SomeVar1 = 1
+
+.asm_190C
+ LD_A_IND SomeVar1 ; a = SomeVar1
+ cp $08
+ jr nc, .asm_193B
+
+ push de
+ LD_HL_IND SomeVar2
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ inc hl
+ LD_IND_HL SomeVar2
+ ld hl, SomeVar1
+ ld l, [hl]
+ ld h, $00
+ add hl, hl
+ ld de, Space_1
+ add hl, de
+ ld [hl], c
+ inc hl
+ ld [hl], b
+ pop de
+ dec de
+ ld a, e
+ or d
+ jr z, .asm_193B
+
+ ld hl, SomeVar1
+ ld a, $01
+ add a, [hl]
+ ld [hl], a
+ jr .asm_190C
+
+.asm_193B ; if SomeVar1 > 8
+ push de
+ API_0C7 Space_1 ; this must be the data transfer? it’s the only API function called
+
+ wait 1
+ pop de
+ jr .asm_18FE \ No newline at end of file
diff --git a/common/mem_struct.asm b/common/mem_struct.asm
new file mode 100644
index 0000000..148d021
--- /dev/null
+++ b/common/mem_struct.asm
@@ -0,0 +1,15 @@
+; what do these store?
+Space_1:
+ db 0,0
+Space_2:
+ REPT 14
+ db 0
+ ENDR
+Space_3:
+ REPT 32
+ db 0
+ ENDR
+Space_4:
+ db 0,0
+Space_5:
+ db 0,0 \ No newline at end of file
diff --git a/common/transfer_data.asm b/common/transfer_data.asm
new file mode 100644
index 0000000..0276d7c
--- /dev/null
+++ b/common/transfer_data.asm
@@ -0,0 +1,31 @@
+ API_106 $0040, UNKNOWN_VALUE
+
+.asm_1bfe
+ waita $01
+
+ ld hl, Space_3
+ API $0C8
+
+ or a
+ jr nz, .asm_1c18
+
+ IS_SOUND_PLAYING 1 ; return
+
+.asm_1c18
+ LD_HL_IND Space_3
+ LD_IND_HL Space_4
+ ld a, l
+ cp $22
+ jr nz, .asm_1bfe
+
+ ld a, h
+ cp $22
+ jr nz, .asm_1bfe
+
+ ld de, 60 ; transfer length
+ ld hl, Prologue
+ call TransferData
+
+ ld de, DATA_TRANSFER_LENGTH ; transfer length
+ ld hl, DataPacket
+ call TransferData \ No newline at end of file
diff --git a/common/wait_for_link.asm b/common/wait_for_link.asm
new file mode 100644
index 0000000..e317728
--- /dev/null
+++ b/common/wait_for_link.asm
@@ -0,0 +1,36 @@
+ ret c
+ nop
+ wait 32
+ ld l, $02
+ push hl
+ ld bc, $B9A0
+ ld de, $0076
+ ld a, $08
+ API $0C4
+ pop bc
+.asm_1b64
+ API $0DB
+
+ cp $01
+ jr z, .asm_1b6f
+ API $0DB
+ or a
+ jr nz, .asm_1b76
+.asm_1b6f
+ waita $01
+ API $0C5
+ jr .asm_1b64
+
+.asm_1b76
+ waita $01
+ LD_HL_IND $00C2
+ ld a, l
+ and $02
+ jr z, .asm_1b90
+
+ IS_SOUND_PLAYING 2 ; exit
+
+.asm_1b90
+ API $0CA
+ cp $02
+ jr c, .asm_1b76 \ No newline at end of file
diff --git a/common/wait_for_ready.asm b/common/wait_for_ready.asm
new file mode 100644
index 0000000..8344422
--- /dev/null
+++ b/common/wait_for_ready.asm
@@ -0,0 +1,30 @@
+.asm_1baf
+ waita $01
+ API $0DB
+
+ ld l, a
+ ld h, $00
+ LD_IND_HL Space_5
+ API $0CA
+
+ cp $02
+ jr nc, .asm_1bd4
+
+ ld hl, UNKNOWN_VALUE
+ SOUND_PAUSE
+
+ IS_SOUND_PLAYING 1 ; return
+
+.asm_1bd4
+ LD_HL_IND Space_5
+ ld a, l
+ sub $04
+ or h
+ jr z, .asm_1be6
+
+ LD_HL_IND Space_5
+ ld a, l
+ sub $03
+ or h
+ jr nz, .asm_1baf
+.asm_1be6 \ No newline at end of file
diff --git a/common/word_shift_right.asm b/common/word_shift_right.asm
new file mode 100644
index 0000000..7a76280
--- /dev/null
+++ b/common/word_shift_right.asm
@@ -0,0 +1,15 @@
+WordShiftRight:
+ ; this function shifts HL by B bits to the right
+ inc b
+.asm_1B93
+ dec b
+ ret z
+
+ and a
+ ld a, h
+ rra
+ ld h, a
+ ld a, l
+ rra
+ ld l, a
+ jp .asm_1B93 \ No newline at end of file
diff --git a/common/wrap_up.asm b/common/wrap_up.asm
new file mode 100644
index 0000000..157b6ef
--- /dev/null
+++ b/common/wrap_up.asm
@@ -0,0 +1,29 @@
+.asm_1c60
+ waita 1
+
+ LD_HL_IND $00C2
+ ld a, l
+ and $01
+ jr z, .asm_1c7c
+
+ ; IS_SOUND_PLAYING 1
+ API $08D
+ dec b ; was this supposed
+ nop ; to be ld b, $00?
+ ld e, $01
+ ld hl, $0005 ; was this supposed to be $0006?
+ API $119
+ ld a, $01 ; return
+ EXIT
+
+ jr .asm_1c60
+
+.asm_1c7c
+ LD_HL_IND $00C2
+ ld a, l
+ and $02
+ jr z, .asm_1c60
+
+ IS_SOUND_PLAYING 2
+
+ jr .asm_1c60 \ No newline at end of file
diff --git a/constants/abilities.asm b/constants/abilities.asm
new file mode 100644
index 0000000..d044506
--- /dev/null
+++ b/constants/abilities.asm
@@ -0,0 +1,513 @@
+BULBASAUR_OVERGROW EQU 0
+IVYSAUR_OVERGROW EQU 0
+VENUSAUR_OVERGROW EQU 0
+CHARMANDER_BLAZE EQU 0
+CHARMELEON_BLAZE EQU 0
+CHARIZARD_BLAZE EQU 0
+SQUIRTLE_TORRENT EQU 0
+WARTORTLE_TORRENT EQU 0
+BLASTOISE_TORRENT EQU 0
+CATERPIE_SHIELD_DUST EQU 0
+METAPOD_SHED_SKIN EQU 0
+BUTTERFREE_COMPOUNDEYES EQU 0
+WEEDLE_SHIELD_DUST EQU 0
+KAKUNA_SHED_SKIN EQU 0
+BEEDRILL_SWARM EQU 0
+PIDGEY_KEEN_EYE EQU 0
+PIDGEOTTO_KEEN_EYE EQU 0
+PIDGEOT_KEEN_EYE EQU 0
+RATTATA_RUN_AWAY EQU 0
+RATTATA_GUTS EQU 1
+RATICATE_RUN_AWAY EQU 0
+RATICATE_GUTS EQU 1
+SPEAROW_KEEN_EYE EQU 0
+FEAROW_KEEN_EYE EQU 0
+EKANS_INTIMIDATE EQU 0
+EKANS_SHED_SKIN EQU 1
+ARBOK_INTIMIDATE EQU 0
+ARBOK_SHED_SKIN EQU 1
+PIKACHU_STATIC EQU 0
+RAICHU_STATIC EQU 0
+SANDSHREW_SAND_VEIL EQU 0
+SANDSLASH_SAND_VEIL EQU 0
+NIDORAN_F_POISON_POINT EQU 0
+NIDORINA_POISON_POINT EQU 0
+NIDOQUEEN_POISON_POINT EQU 0
+NIDORAN_M_POISON_POINT EQU 0
+NIDORINO_POISON_POINT EQU 0
+NIDOKING_POISON_POINT EQU 0
+CLEFAIRY_CUTE_CHARM EQU 0
+CLEFABLE_CUTE_CHARM EQU 0
+VULPIX_FLASH_FIRE EQU 0
+NINETALES_FLASH_FIRE EQU 0
+JIGGLYPUFF_CUTE_CHARM EQU 0
+WIGGLYTUFF_CUTE_CHARM EQU 0
+ZUBAT_INNER_FOCUS EQU 0
+GOLBAT_INNER_FOCUS EQU 0
+ODDISH_CHLOROPHYLL EQU 0
+GLOOM_CHLOROPHYLL EQU 0
+VILEPLUME_CHLOROPHYLL EQU 0
+PARAS_EFFECT_SPORE EQU 0
+PARASECT_EFFECT_SPORE EQU 0
+VENONAT_COMPOUNDEYES EQU 0
+VENOMOTH_SHIELD_DUST EQU 0
+DIGLETT_SAND_VEIL EQU 0
+DIGLETT_ARENA_TRAP EQU 1
+DUGTRIO_SAND_VEIL EQU 0
+DUGTRIO_ARENA_TRAP EQU 1
+MEOWTH_PICKUP EQU 0
+PERSIAN_LIMBER EQU 0
+PSYDUCK_DAMP EQU 0
+PSYDUCK_CLOUD_NINE EQU 1
+GOLDUCK_DAMP EQU 0
+GOLDUCK_CLOUD_NINE EQU 1
+MANKEY_VITAL_SPIRIT EQU 0
+PRIMEAPE_VITAL_SPIRIT EQU 0
+GROWLITHE_INTIMIDATE EQU 0
+GROWLITHE_FLASH_FIRE EQU 1
+ARCANINE_INTIMIDATE EQU 0
+ARCANINE_FLASH_FIRE EQU 1
+POLIWAG_WATER_ABSORB EQU 0
+POLIWAG_DAMP EQU 1
+POLIWHIRL_WATER_ABSORB EQU 0
+POLIWHIRL_DAMP EQU 1
+POLIWRATH_WATER_ABSORB EQU 0
+POLIWRATH_DAMP EQU 1
+ABRA_SYNCHRONIZE EQU 0
+ABRA_INNER_FOCUS EQU 1
+KADABRA_SYNCHRONIZE EQU 0
+KADABRA_INNER_FOCUS EQU 1
+ALAKAZAM_SYNCHRONIZE EQU 0
+ALAKAZAM_INNER_FOCUS EQU 1
+MACHOP_GUTS EQU 0
+MACHOKE_GUTS EQU 0
+MACHAMP_GUTS EQU 0
+BELLSPROUT_CHLOROPHYLL EQU 0
+WEEPINBELL_CHLOROPHYLL EQU 0
+VICTREEBEL_CHLOROPHYLL EQU 0
+TENTACOOL_CLEAR_BODY EQU 0
+TENTACOOL_LIQUID_OOZE EQU 1
+TENTACRUEL_CLEAR_BODY EQU 0
+TENTACRUEL_LIQUID_OOZE EQU 1
+GEODUDE_ROCK_HEAD EQU 0
+GEODUDE_STURDY EQU 1
+GRAVELER_ROCK_HEAD EQU 0
+GRAVELER_STURDY EQU 1
+GOLEM_ROCK_HEAD EQU 0
+GOLEM_STURDY EQU 1
+PONYTA_RUN_AWAY EQU 0
+PONYTA_FLASH_FIRE EQU 1
+RAPIDASH_RUN_AWAY EQU 0
+RAPIDASH_FLASH_FIRE EQU 1
+SLOWPOKE_OBLIVIOUS EQU 0
+SLOWPOKE_OWN_TEMPO EQU 1
+SLOWBRO_OBLIVIOUS EQU 0
+SLOWBRO_OWN_TEMPO EQU 1
+MAGNEMITE_MAGNET_PULL EQU 0
+MAGNEMITE_STURDY EQU 1
+MAGNETON_MAGNET_PULL EQU 0
+MAGNETON_STURDY EQU 1
+FARFETCH_D_KEEN_EYE EQU 0
+FARFETCH_D_INNER_FOCUS EQU 1
+DODUO_RUN_AWAY EQU 0
+DODUO_EARLY_BIRD EQU 1
+DODRIO_RUN_AWAY EQU 0
+DODRIO_EARLY_BIRD EQU 1
+SEEL_THICK_FAT EQU 0
+DEWGONG_THICK_FAT EQU 0
+GRIMER_STENCH EQU 0
+GRIMER_STICKY_HOLD EQU 1
+MUK_STENCH EQU 0
+MUK_STICKY_HOLD EQU 1
+SHELLDER_SHELL_ARMOR EQU 0
+CLOYSTER_SHELL_ARMOR EQU 1
+GASTLY_LEVITATE EQU 0
+HAUNTER_LEVITATE EQU 0
+GENGAR_LEVITATE EQU 0
+ONIX_ROCK_HEAD EQU 0
+ONIX_STURDY EQU 1
+DROWZEE_INSOMNIA EQU 0
+HYPNO_INSOMNIA EQU 0
+KRABBY_HYPER_CUTTER EQU 0
+KRABBY_SHELL_ARMOR EQU 1
+KINGLER_HYPER_CUTTER EQU 0
+KINGLER_SHELL_ARMOR EQU 1
+VOLTORB_SOUNDPROOF EQU 0
+VOLTORB_STATIC EQU 1
+ELECTRODE_SOUNDPROOF EQU 0
+ELECTRODE_STATIC EQU 1
+EXEGGCUTE_CHLOROPHYLL EQU 0
+EXEGGUTOR_CHLOROPHYLL EQU 1
+CUBONE_ROCK_HEAD EQU 0
+CUBONE_LIGHTNINGROD EQU 1
+MAROWAK_ROCK_HEAD EQU 0
+MAROWAK_LIGHTNINGROD EQU 1
+HITMONLEE_LIMBER EQU 0
+HITMONCHAN_KEEN_EYE EQU 0
+LICKITUNG_OWN_TEMPO EQU 0
+LICKITUNG_OBLIVIOUS EQU 1
+KOFFING_LEVITATE EQU 0
+WEEZING_LEVITATE EQU 0
+RHYHORN_LIGHTNINGROD EQU 0
+RHYHORN_ROCK_HEAD EQU 1
+RHYDON_LIGHTNINGROD EQU 0
+RHYDON_ROCK_HEAD EQU 1
+CHANSEY_NATURAL_CURE EQU 0
+CHANSEY_SERENE_GRACE EQU 1
+TANGELA_CHLOROPHYLL EQU 0
+KANGASKHAN_EARLY_BIRD EQU 0
+HORSEA_SWIFT_SWIM EQU 0
+SEADRA_POISON_POINT EQU 0
+GOLDEEN_SWIFT_SWIM EQU 0
+GOLDEEN_WATER_VEIL EQU 1
+SEAKING_SWIFT_SWIM EQU 0
+SEAKING_WATER_VEIL EQU 1
+STARYU_ILLUMINATE EQU 0
+STARYU_NATURAL_CURE EQU 1
+STARMIE_ILLUMINATE EQU 0
+STARMIE_NATURAL_CURE EQU 1
+MR_MIME_SOUNDPROOF EQU 0
+SCYTHER_SWARM EQU 0
+JYNX_OBLIVIOUS EQU 0
+ELECTABUZZ_STATIC EQU 0
+MAGMAR_FLAME_BODY EQU 0
+PINSIR_HYPER_CUTTER EQU 0
+TAUROS_INTIMIDATE EQU 0
+MAGIKARP_SWIFT_SWIM EQU 0
+GYARADOS_INTIMIDATE EQU 0
+LAPRAS_WATER_ABSORB EQU 0
+LAPRAS_SHELL_ARMOR EQU 1
+DITTO_LIMBER EQU 0
+EEVEE_RUN_AWAY EQU 0
+VAPOREON_WATER_ABSORB EQU 0
+JOLTEON_VOLT_ABSORB EQU 0
+FLAREON_FLASH_FIRE EQU 0
+PORYGON_TRACE EQU 0
+OMANYTE_SWIFT_SWIM EQU 0
+OMANYTE_SHELL_ARMOR EQU 1
+OMASTAR_SWIFT_SWIM EQU 0
+OMASTAR_SHELL_ARMOR EQU 1
+KABUTO_SWIFT_SWIM EQU 0
+KABUTO_BATTLE_ARMOR EQU 1
+KABUTOPS_SWIFT_SWIM EQU 0
+KABUTOPS_BATTLE_ARMOR EQU 1
+AERODACTYL_ROCK_HEAD EQU 0
+AERODACTYL_PRESSURE EQU 1
+SNORLAX_IMMUNITY EQU 0
+SNORLAX_THICK_FAT EQU 1
+ARTICUNO_PRESSURE EQU 0
+ZAPDOS_PRESSURE EQU 0
+MOLTRES_PRESSURE EQU 0
+DRATINI_SHED_SKIN EQU 0
+DRAGONAIR_SHED_SKIN EQU 0
+DRAGONITE_INNER_FOCUS EQU 0
+MEWTWO_PRESSURE EQU 0
+MEW_SYNCHRONIZE EQU 0
+
+CHIKORITA_OVERGROW EQU 0
+BAYLEEF_OVERGROW EQU 0
+MEGANIUM_OVERGROW EQU 0
+CYNDAQUIL_BLAZE EQU 0
+QUILAVA_BLAZE EQU 0
+TYPHLOSION_BLAZE EQU 0
+TOTODILE_TORRENT EQU 0
+CROCONAW_TORRENT EQU 0
+FERALIGATR_TORRENT EQU 0
+SENTRET_RUN_AWAY EQU 0
+SENTRET_KEEN_EYE EQU 1
+FURRET_RUN_AWAY EQU 0
+FURRET_KEEN_EYE EQU 1
+HOOTHOOT_INSOMNIA EQU 0
+HOOTHOOT_KEEN_EYE EQU 1
+NOCTOWL_INSOMNIA EQU 0
+NOCTOWL_KEEN_EYE EQU 1
+LEDYBA_SWARM EQU 0
+LEDYBA_EARLY_BIRD EQU 1
+LEDIAN_SWARM EQU 0
+LEDIAN_EARLY_BIRD EQU 1
+SPINARAK_SWARM EQU 0
+SPINARAK_INSOMNIA EQU 1
+ARIADOS_SWARM EQU 0
+ARIADOS_INSOMNIA EQU 1
+CROBAT_INNER_FOCUS EQU 0
+CHINCHOU_VOLT_ABSORB EQU 0
+CHINCHOU_ILLUMINATE EQU 1
+LANTURN_VOLT_ABSORB EQU 0
+LANTURN_ILLUMINATE EQU 1
+PICHU_STATIC EQU 0
+CLEFFA_CUTE_CHARM EQU 0
+IGGLYBUFF_CUTE_CHARM EQU 0
+TOGEPI_HUSTLE EQU 0
+TOGEPI_SERENE_GRACE EQU 1
+TOGETIC_HUSTLE EQU 0
+TOGETIC_SERENE_GRACE EQU 1
+NATU_SYNCHRONIZE EQU 0
+NATU_EARLY_BIRD EQU 1
+XATU_SYNCHRONIZE EQU 0
+XATU_EARLY_BIRD EQU 1
+MAREEP_STATIC EQU 0
+FLAAFFY_STATIC EQU 0
+AMPHAROS_STATIC EQU 0
+BELLOSSOM_CHLOROPHYLL EQU 0
+MARILL_THICK_FAT EQU 0
+MARILL_HUGE_POWER EQU 1
+AZUMARILL_THICK_FAT EQU 0
+AZUMARILL_HUGE_POWER EQU 1
+SUDOWOODO_STURDY EQU 0
+SUDOWOODO_ROCK_HEAD EQU 1
+POLITOED_WATER_ABSORB EQU 0
+POLITOED_DAMP EQU 1
+HOPPIP_CHLOROPHYLL EQU 0
+SKIPLOOM_CHLOROPHYLL EQU 0
+JUMPLUFF_CHLOROPHYLL EQU 0
+AIPOM_RUN_AWAY EQU 0
+AIPOM_PICKUP EQU 1
+SUNKERN_CHLOROPHYLL EQU 0
+SUNFLORA_CHLOROPHYLL EQU 0
+YANMA_SPEED_BOOST EQU 0
+YANMA_COMPOUNDEYES EQU 1
+WOOPER_DAMP EQU 0
+WOOPER_WATER_ABSORB EQU 1
+QUAGSIRE_DAMP EQU 0
+QUAGSIRE_WATER_ABSORB EQU 1
+ESPEON_SYNCHRONIZE EQU 0
+UMBREON_SYNCHRONIZE EQU 0
+MURKROW_INSOMNIA EQU 0
+SLOWKING_OBLIVIOUS EQU 0
+SLOWKING_OWN_TEMPO EQU 1
+MISDREAVUS_LEVITATE EQU 0
+UNOWN_LEVITATE EQU 0
+WOBBUFFET_SHADOW_TAG EQU 0
+GIRAFARIG_INNER_FOCUS EQU 0
+GIRAFARIG_EARLY_BIRD EQU 1
+PINECO_STURDY EQU 0
+FORRETRESS_STURDY EQU 0
+DUNSPARCE_SERENE_GRACE EQU 0
+DUNSPARCE_RUN_AWAY EQU 1
+GLIGAR_HYPER_CUTTER EQU 0
+GLIGAR_SAND_VEIL EQU 1
+STEELIX_ROCK_HEAD EQU 0
+STEELIX_STURDY EQU 1
+SNUBBULL_INTIMIDATE EQU 0
+SNUBBULL_RUN_AWAY EQU 1
+GRANBULL_INTIMIDATE EQU 0
+QWILFISH_POISON_POINT EQU 0
+QWILFISH_SWIFT_SWIM EQU 1
+SCIZOR_SWARM EQU 0
+SHUCKLE_STURDY EQU 0
+HERACROSS_SWARM EQU 0
+HERACROSS_GUTS EQU 1
+SNEASEL_INNER_FOCUS EQU 0
+SNEASEL_KEEN_EYE EQU 1
+TEDDIURSA_PICKUP EQU 0
+URSARING_GUTS EQU 0
+SLUGMA_MAGMA_ARMOR EQU 0
+SLUGMA_FLAME_BODY EQU 1
+MAGCARGO_MAGMA_ARMOR EQU 0
+MAGCARGO_FLAME_BODY EQU 1
+SWINUB_OBLIVIOUS EQU 0
+PILOSWINE_OBLIVIOUS EQU 0
+CORSOLA_HUSTLE EQU 0
+CORSOLA_NATURAL_CURE EQU 1
+REMORAID_HUSTLE EQU 0
+OCTILLERY_SUCTION_CUPS EQU 0
+DELIBIRD_VITAL_SPIRIT EQU 0
+DELIBIRD_HUSTLE EQU 1
+MANTINE_SWIFT_SWIM EQU 0
+MANTINE_WATER_ABSORB EQU 1
+SKARMORY_KEEN_EYE EQU 0
+SKARMORY_STURDY EQU 1
+HOUNDOUR_EARLY_BIRD EQU 0
+HOUNDOUR_FLASH_FIRE EQU 1
+HOUNDOOM_EARLY_BIRD EQU 0
+HOUNDOOM_FLASH_FIRE EQU 1
+KINGDRA_SWIFT_SWIM EQU 0
+PHANPY_PICKUP EQU 0
+DONPHAN_STURDY EQU 0
+PORYGON2_TRACE EQU 0
+STANTLER_INTIMIDATE EQU 0
+SMEARGLE_OWN_TEMPO EQU 0
+TYROGUE_GUTS EQU 0
+HITMONTOP_INTIMIDATE EQU 0
+SMOOCHUM_OBLIVIOUS EQU 0
+ELEKID_STATIC EQU 0
+MAGBY_FLAME_BODY EQU 0
+MILTANK_THICK_FAT EQU 0
+BLISSEY_NATURAL_CURE EQU 0
+BLISSEY_SERENE_GRACE EQU 1
+RAIKOU_PRESSURE EQU 0
+ENTEI_PRESSURE EQU 0
+SUICUNE_PRESSURE EQU 0
+LARVITAR_GUTS EQU 0
+PUPITAR_SHED_SKIN EQU 0
+TYRANITAR_SAND_STREAM EQU 0
+LUGIA_PRESSURE EQU 0
+HO_OH_PRESSURE EQU 0
+CELEBI_NATURAL_CURE EQU 0
+
+TREECKO_OVERGROW EQU 0
+GROVYLE_OVERGROW EQU 0
+SCEPTILE_OVERGROW EQU 0
+TORCHIC_BLAZE EQU 0
+COMBUSKEN_BLAZE EQU 0
+BLAZIKEN_BLAZE EQU 0
+MUDKIP_TORRENT EQU 0
+MARSHTOMP_TORRENT EQU 0
+SWAMPERT_TORRENT EQU 0
+POOCHYENA_RUN_AWAY EQU 0
+MIGHTYENA_INTIMIDATE EQU 0
+ZIGZAGOON_PICKUP EQU 0
+LINOONE_PICKUP EQU 0
+WURMPLE_SHIELD_DUST EQU 0
+SILCOON_SHED_SKIN EQU 0
+BEAUTIFLY_SWARM EQU 0
+CASCOON_SHED_SKIN EQU 0
+DUSTOX_SHIELD_DUST EQU 0
+LOTAD_SWIFT_SWIM EQU 0
+LOTAD_RAIN_DISH EQU 1
+LOMBRE_SWIFT_SWIM EQU 0
+LOMBRE_RAIN_DISH EQU 1
+LUDICOLO_SWIFT_SWIM EQU 0
+LUDICOLO_RAIN_DISH EQU 1
+SEEDOT_CHLOROPHYLL EQU 0
+SEEDOT_EARLY_BIRD EQU 1
+NUZLEAF_CHLOROPHYLL EQU 0
+NUZLEAF_EARLY_BIRD EQU 1
+SHIFTRY_CHLOROPHYLL EQU 0
+SHIFTRY_EARLY_BIRD EQU 1
+TAILLOW_GUTS EQU 0
+SWELLOW_GUTS EQU 0
+WINGULL_KEEN_EYE EQU 0
+PELIPPER_KEEN_EYE EQU 0
+RALTS_SYNCHRONIZE EQU 0
+RALTS_TRACE EQU 1
+KIRLIA_SYNCHRONIZE EQU 0
+KIRLIA_TRACE EQU 1
+GARDEVOIR_SYNCHRONIZE EQU 0
+GARDEVOIR_TRACE EQU 1
+SURSKIT_SWIFT_SWIM EQU 0
+MASQUERAIN_INTIMIDATE EQU 0
+SHROOMISH_EFFECT_SPORE EQU 0
+BRELOOM_EFFECT_SPORE EQU 0
+SLAKOTH_TRUANT EQU 0
+VIGOROTH_VITAL_SPIRIT EQU 0
+SLAKING_TRUANT EQU 0
+NINCADA_COMPOUNDEYES EQU 0
+NINJASK_SPEED_BOOST EQU 0
+SHEDINJA_WONDER_GUARD EQU 0
+WHISMUR_SOUNDPROOF EQU 0
+LOUDRED_SOUNDPROOF EQU 0
+EXPLOUD_SOUNDPROOF EQU 0
+MAKUHITA_THICK_FAT EQU 0
+MAKUHITA_GUTS EQU 1
+HARIYAMA_THICK_FAT EQU 0
+HARIYAMA_GUTS EQU 1
+AZURILL_THICK_FAT EQU 0
+AZURILL_HUGE_POWER EQU 1
+NOSEPASS_STURDY EQU 0
+NOSEPASS_MAGNET_PULL EQU 1
+SKITTY_CUTE_CHARM EQU 0
+DELCATTY_CUTE_CHARM EQU 0
+SABLEYE_KEEN_EYE EQU 0
+MAWILE_HYPER_CUTTER EQU 0
+MAWILE_INTIMIDATE EQU 1
+ARON_STURDY EQU 0
+ARON_ROCK_HEAD EQU 1
+LAIRON_STURDY EQU 0
+LAIRON_ROCK_HEAD EQU 1
+AGGRON_STURDY EQU 0
+AGGRON_ROCK_HEAD EQU 1
+MEDITITE_PURE_POWER EQU 0
+MEDICHAM_PURE_POWER EQU 0
+ELECTRIKE_STATIC EQU 0
+ELECTRIKE_LIGHTNINGROD EQU 1
+MANECTRIC_STATIC EQU 0
+MANECTRIC_LIGHTNINGROD EQU 1
+PLUSLE_PLUS EQU 0
+MINUN_MINUS EQU 0
+VOLBEAT_ILLUMINATE EQU 0
+VOLBEAT_SWARM EQU 1
+ILLUMISE_OBLIVIOUS EQU 0
+ROSELIA_NATURAL_CURE EQU 0
+ROSELIA_POISON_POINT EQU 1
+GULPIN_LIQUID_OOZE EQU 0
+GULIPN_STICKY_HOLD EQU 1
+SWALOT_LIQUID_OOZE EQU 0
+SWALOT_STICKY_HOLD EQU 1
+CARVANHA_ROUGH_SKIN EQU 0
+SHARPEDO_ROUGH_SKIN EQU 0
+WAILMER_WATER_VEIL EQU 0
+WAILMER_OBLIVIOUS EQU 1
+WAILORD_WATER_VEIL EQU 0
+WAILORD_OBLIVIOUS EQU 1
+NUMEL_OBLIVIOUS EQU 0
+CAMERUPT_MAGMA_ARMOR EQU 0
+TORKOAL_WHITE_SMOKE EQU 0
+SPOINK_THICK_FAT EQU 0
+SPOINK_OWN_TEMPO EQU 1
+GRUMPIG_THICK_FAT EQU 0
+GRUMPIG_OWN_TEMPO EQU 1
+SPINDA_OWN_TEMPO EQU 0
+TRAPINCH_HYPER_CUTTER EQU 0
+TRAPINCH_ARENA_TRAP EQU 1
+VIBRAVA_LEVITATE EQU 0
+FLYGON_LEVITATE EQU 0
+CACNEA_SAND_VEIL EQU 0
+CACTURNE_SAND_VEIL EQU 0
+SWABLU_NATURAL_CURE EQU 0
+ALTARIA_NATURAL_CURE EQU 0
+ZANGOOSE_IMMUNITY EQU 0
+SEVIPER_SHED_SKIN EQU 0
+LUNATONE_LEVITATE EQU 0
+SOLROCK_LEVITATE EQU 0
+BARBOACH_OBLIVIOUS EQU 0
+WHISCASH_OBLIVIOUS EQU 0
+CORPHISH_HYPER_CUTTER EQU 0
+CORPHISH_SHELL_ARMOR EQU 1
+CRAWDAUNT_HYPER_CUTTER EQU 0
+CRAWDAUNT_SHELL_ARMOR EQU 1
+BALTOY_LEVITATE EQU 0
+CLAYDOL_LEVITATE EQU 0
+LILEEP_SUCTION_CUPS EQU 0
+CRADILY_SUCTION_CUPS EQU 0
+ANORITH_BATTLE_ARMOR EQU 0
+ARMALDO_BATTLE_ARMOR EQU 0
+FEEBAS_SWIFT_SWIM EQU 0
+MILOTIC_MARVEL_SCALE EQU 0
+CASTFORM_FORECAST EQU 0
+KECLEON_COLOR_CHANGE EQU 0
+SHUPPET_INSOMNIA EQU 0
+BANETTE_INSOMNIA EQU 0
+DUSKULL_LEVITATE EQU 0
+DUSCLOPS_PRESSURE EQU 0
+TROPIUS_CHLOROPHYLL EQU 0
+CHIMECHO_LEVITATE EQU 0
+ABSOL_PRESSURE EQU 0
+WYNAUT_SHADOW_TAG EQU 0
+SNORUNT_INNER_FOCUS EQU 0
+GLALIE_INNER_FOCUS EQU 0
+SPHEAL_THICK_FAT EQU 0
+SEALEO_THICK_FAT EQU 0
+WALREIN_THICK_FAT EQU 0
+CLAMPERL_SHELL_ARMOR EQU 0
+HUNTAIL_SWIFT_SWIM EQU 0
+GOREBYSS_SWIFT_SWIM EQU 0
+RELICANTH_SWIFT_SWIM EQU 0
+RELICANTH_ROCK_HEAD EQU 1
+LUVDISC_SWIFT_SWIM EQU 0
+BAGON_ROCK_HEAD EQU 0
+SHELGON_ROCK_HEAD EQU 0
+SALAMENCE_INTIMIDATE EQU 0
+BELDUM_CLEAR_BODY EQU 0
+METANG_CLEAR_BODY EQU 0
+METAGROSS_CLEAR_BODY EQU 0
+REGIROCK_CLEAR_BODY EQU 0
+REGICE_CLEAR_BODY EQU 0
+REGISTEEL_CLEAR_BODY EQU 0
+LATIAS_LEVITATE EQU 0
+LATIOS_LEVITATE EQU 0
+KYOGRE_DRIZZLE EQU 0
+GROUDON_DROUGHT EQU 0
+RAYQUAZA_AIR_LOCK EQU 0
+JIRACHI_SERENE_GRACE EQU 0
+DEOXYS_PRESSURE EQU 0
diff --git a/constants/easychat.asm b/constants/easychat.asm
new file mode 100644
index 0000000..b2bd144
--- /dev/null
+++ b/constants/easychat.asm
@@ -0,0 +1,1839 @@
+; POKéMON (Hoenn Pokédex)
+_PIKACHU EQU $0019
+_RAICHU EQU $001A
+_SANDSHREW EQU $001B
+_SANDSLASH EQU $001C
+_VULPIX EQU $0025
+_NINETALES EQU $0026
+_JIGGLYPUFF EQU $0027
+_WIGGLYTUFF EQU $0028
+_ZUBAT EQU $0029
+_GOLBAT EQU $002A
+_ODDISH EQU $002B
+_GLOOM EQU $002C
+_VILEPLUME EQU $002D
+_PSYDUCK EQU $0036
+_GOLDUCK EQU $0037
+_ABRA EQU $003F
+_KADABRA EQU $0040
+_ALAKAZAM EQU $0041
+_MACHOP EQU $0042
+_MACHOKE EQU $0043
+_MACHAMP EQU $0044
+_TENTACOOL EQU $0048
+_TENTACRUEL EQU $0049
+_GEODUDE EQU $004A
+_GRAVELER EQU $004B
+_GOLEM EQU $004C
+_MAGNEMITE EQU $0051
+_MAGNETON EQU $0052
+_DODUO EQU $0054
+_DODRIO EQU $0055
+_GRIMER EQU $0058
+_MUK EQU $0059
+_VOLTORB EQU $0064
+_ELECTRODE EQU $0065
+_KOFFING EQU $006D
+_WEEZING EQU $006E
+_RHYHORN EQU $006F
+_RHYDON EQU $0070
+_HORSEA EQU $0074
+_SEADRA EQU $0075
+_GOLDEEN EQU $0076
+_SEAKING EQU $0077
+_STARYU EQU $0078
+_STARMIE EQU $0079
+_PINSIR EQU $007F
+_MAGIKARP EQU $0081
+_GYARADOS EQU $0082
+_CROBAT EQU $00A9
+_CHINCHOU EQU $00AA
+_LANTURN EQU $00AB
+_PICHU EQU $00AC
+_IGGLYBUFF EQU $00AE
+_NATU EQU $00B1
+_XATU EQU $00B2
+_BELLOSSOM EQU $00B6
+_MARILL EQU $00B7
+_AZUMARILL EQU $00B8
+_WOBBUFFET EQU $00CA
+_GIRAFARIG EQU $00CB
+_HERACROSS EQU $00D6
+_SLUGMA EQU $00DA
+_MAGCARGO EQU $00DB
+_CORSOLA EQU $00DE
+_SKARMORY EQU $00E3
+_KINGDRA EQU $00E6
+_PHANPY EQU $00E7
+_DONPHAN EQU $00E8
+_TREECKO EQU $0115
+_GROVYLE EQU $0116
+_SCEPTILE EQU $0117
+_TORCHIC EQU $0118
+_COMBUSKEN EQU $0119
+_BLAZIKEN EQU $011A
+_MUDKIP EQU $011B
+_MARSHTOMP EQU $011C
+_SWAMPERT EQU $011D
+_POOCHYENA EQU $011E
+_MIGHTYENA EQU $011F
+_ZIGZAGOON EQU $0120
+_LINOONE EQU $0121
+_WURMPLE EQU $0122
+_SILCOON EQU $0123
+_BEAUTIFLY EQU $0124
+_CASCOON EQU $0125
+_DUSTOX EQU $0126
+_LOTAD EQU $0127
+_LOMBRE EQU $0128
+_LUDICOLO EQU $0129
+_SEEDOT EQU $012A
+_NUZLEAF EQU $012B
+_SHIFTRY EQU $012C
+_NINCADA EQU $012D
+_NINJASK EQU $012E
+_SHEDINJA EQU $012F
+_TAILLOW EQU $0130
+_SWELLOW EQU $0131
+_SHROOMISH EQU $0132
+_BRELOOM EQU $0133
+_SPINDA EQU $0134
+_WINGULL EQU $0135
+_PELIPPER EQU $0136
+_SURSKIT EQU $0137
+_MASQUERAIN EQU $0138
+_WAILMER EQU $0139
+_WAILORD EQU $013A
+_SKITTY EQU $013B
+_DELCATTY EQU $013C
+_KECLEON EQU $013D
+_BALTOY EQU $013E
+_CLAYDOL EQU $013F
+_NOSEPASS EQU $0140
+_TORKOAL EQU $0141
+_SABLEYE EQU $0142
+_BARBOACH EQU $0143
+_WHISCASH EQU $0144
+_LUVDISC EQU $0145
+_CORPHISH EQU $0146
+_CRAWDAUNT EQU $0147
+_FEEBAS EQU $0148
+_MILOTIC EQU $0149
+_CARVANHA EQU $014A
+_SHARPEDO EQU $014B
+_TRAPINCH EQU $014C
+_VIBRAVA EQU $014D
+_FLYGON EQU $014E
+_MAKUHITA EQU $014F
+_HARIYAMA EQU $0150
+_ELECTRIKE EQU $0151
+_MANECTRIC EQU $0152
+_NUMEL EQU $0153
+_CAMERUPT EQU $0154
+_SPHEAL EQU $0155
+_SEALEO EQU $0156
+_WALREIN EQU $0157
+_CACNEA EQU $0158
+_CACTURNE EQU $0159
+_SNORUNT EQU $015A
+_GLALIE EQU $015B
+_LUNATONE EQU $015C
+_SOLROCK EQU $015D
+_AZURILL EQU $015E
+_SPOINK EQU $015F
+_GRUMPIG EQU $0160
+_PLUSLE EQU $0161
+_MINUN EQU $0162
+_MAWILE EQU $0163
+_MEDITITE EQU $0164
+_MEDICHAM EQU $0165
+_SWABLU EQU $0166
+_ALTARIA EQU $0167
+_WYNAUT EQU $0168
+_DUSKULL EQU $0169
+_DUSCLOPS EQU $016A
+_ROSELIA EQU $016B
+_SLAKOTH EQU $016C
+_VIGOROTH EQU $016D
+_SLAKING EQU $016E
+_GULPIN EQU $016F
+_SWALOT EQU $0170
+_TROPIUS EQU $0171
+_WHISMUR EQU $0172
+_LOUDRED EQU $0173
+_EXPLOUD EQU $0174
+_CLAMPERL EQU $0175
+_HUNTAIL EQU $0176
+_GOREBYSS EQU $0177
+_ABSOL EQU $0178
+_SHUPPET EQU $0179
+_BANETTE EQU $017A
+_SEVIPER EQU $017B
+_ZANGOOSE EQU $017C
+_RELICANTH EQU $017D
+_ARON EQU $017E
+_LAIRON EQU $017F
+_AGGRON EQU $0180
+_CASTFORM EQU $0181
+_VOLBEAT EQU $0182
+_ILLUMISE EQU $0183
+_LILEEP EQU $0184
+_CRADILY EQU $0185
+_ANORITH EQU $0186
+_ARMALDO EQU $0187
+_RALTS EQU $0188
+_KIRLIA EQU $0189
+_GARDEVOIR EQU $018A
+_BAGON EQU $018B
+_SHELGON EQU $018C
+_SALAMENCE EQU $018D
+_BELDUM EQU $018E
+_METANG EQU $018F
+_METAGROSS EQU $0190
+_REGIROCK EQU $0191
+_REGICE EQU $0192
+_REGISTEEL EQU $0193
+_KYOGRE EQU $0194
+_GROUDON EQU $0195
+_RAYQUAZA EQU $0196
+_LATIAS EQU $0197
+_LATIOS EQU $0198
+_JIRACHI EQU $0199
+_DEOXYS EQU $019A
+_CHIMECHO EQU $019B
+
+; TRAINER
+I_CHOOSE_YOU EQU $0200
+GOTCHA EQU $0201
+TRADE EQU $0202
+_SAPPHIRE EQU $0203 ; item
+EVOLVE EQU $0204
+ENCYCLOPEDIA EQU $0205
+NATURE EQU $0206
+CENTER EQU $0207
+EGG EQU $0208
+LINK EQU $0209
+SP_ABILITY EQU $020A ; SP. ABILITY
+TRAINER EQU $020B
+VERSION EQU $020C
+POKENAV EQU $020D ; POKéNAV
+POKEMON EQU $020E ; POKéMON
+GET EQU $020F
+POKEDEX EQU $0210 ; POKéDEX
+_RUBY EQU $0211 ; item
+LEVEL EQU $0212
+
+; STATUS
+DARK EQU $0400
+STENCH EQU $0401
+THICK_FAT EQU $0402
+RAIN_DISH EQU $0403
+DRIZZLE EQU $0404
+ARENA_TRAP EQU $0405
+INTIMIDATE EQU $0406
+ROCK_HEAD EQU $0407
+COLOR EQU $0408
+ALT_COLOR EQU $0409 ; ALT. COLOR
+ROCK EQU $040A
+BEAUTIFUL EQU $040B
+_BEAUTY EQU $040C ; trainer class
+AIR_LOCK EQU $040D
+_T_PSYCHIC EQU $040E ; trainer class AND move!
+HYPER_CUTTER EQU $040F
+FIGHTING EQU $0410
+SHADOW_TAG EQU $0411
+SMART EQU $0412
+SMARTNESS EQU $0413
+SPEED_BOOST EQU $0414
+COOL EQU $0415
+COOLNESS EQU $0416
+BATTLE_ARMOR EQU $0417
+CUTE EQU $0418
+CUTENESS EQU $0419
+STURDY EQU $041A
+SUCTION_CUPS EQU $041B
+GRASS EQU $041C
+CLEAR_BODY EQU $041D
+TORRENT EQU $041E
+GHOST EQU $041F
+ICE EQU $0420
+GUTS EQU $0421
+ROUGH_SKIN EQU $0422
+SHELL_ARMOR EQU $0423
+NATURAL_CURE EQU $0424
+DAMP EQU $0425
+GROUND EQU $0426
+LIMBER EQU $0427
+MAGNET_PULL EQU $0428
+WHITE_SMOKE EQU $0429
+SYNCHRONIZE EQU $042A
+OVERGROW EQU $042B
+SWIFT_SWIM EQU $042C
+SAND_STREAM EQU $042D
+SAND_VEIL EQU $042E
+KEEN_EYE EQU $042F
+INNER_FOCUS EQU $0430
+STATIC EQU $0431
+TYPE EQU $0432
+TOUGH EQU $0433
+TOUGHNESS EQU $0434
+SHED_SKIN EQU $0435
+HUGE_POWER EQU $0436
+VOLT_ABSORB EQU $0437
+WATER_ABSORB EQU $0438
+ELECTRIC EQU $0439
+FORECAST EQU $043A
+SERENE_GRACE EQU $043B
+POISON EQU $043C
+POISON_POINT EQU $043D
+DRAGON EQU $043E
+TRACE EQU $043F
+OBLIVIOUS EQU $0440
+TRUANT EQU $0441
+RUN_AWAY EQU $0442
+STICKY_HOLD EQU $0443
+CLOUD_NINE EQU $0444
+NORMAL EQU $0445
+STEEL EQU $0446
+ILLUMINATE EQU $0447
+EARLY_BIRD EQU $0448
+HUSTLE EQU $0449
+SHINE EQU $044A
+FLYING EQU $044B
+DROUGHT EQU $044C
+LIGHTNINGROD EQU $044D
+COMPOUNDEYES EQU $044E
+MARVEL_SCALE EQU $044F
+WONDER_GUARD EQU $0450
+INSOMNIA EQU $0451
+LEVITATE EQU $0452
+PLUS EQU $0453
+PRESSURE EQU $0454
+LIQUID_OOZE EQU $0455
+COLOR_CHANGE EQU $0456
+SOUNDPROOF EQU $0457
+EFFECT_SPORE EQU $0458
+PkRS EQU $0459
+FIRE EQU $045A
+FLAME_BODY EQU $045B
+MINUS EQU $045C
+OWN_TEMPO EQU $045D
+MAGMA_ARMOR EQU $045E
+WATER EQU $045F
+WATER_VEIL EQU $0460
+BUG EQU $0461
+SWARM EQU $0462
+CUTE_CHARM EQU $0463
+IMMUNITY EQU $0464
+BLAZE EQU $0465
+PICKUP EQU $0466
+PATTERN EQU $0467
+FLASH_FIRE EQU $0468
+VITAL_SPIRIT EQU $0469
+CHLOROPHYLL EQU $046A
+PURE_POWER EQU $046B
+SHIELD_DUST EQU $046C
+
+; BATTLE
+MATCH_UP EQU $0600
+GO EQU $0601
+NO_1 EQU $0602 ; NO. 1
+DECIDE EQU $0603
+LET_ME_WIN EQU $0604
+WINS EQU $0605
+WIN EQU $0606
+WON EQU $0607
+IF_I_WIN EQU $0608
+WHEN_I_WIN EQU $0609
+CAN_T_WIN EQU $060A ; CAN’T WIN
+CAN_WIN EQU $060B
+NO_MATCH EQU $060C
+SPIRIT EQU $060D
+DECIDED EQU $060E
+TRUMP_CARD EQU $060F
+TAKE_THAT EQU $0610
+COME_ON EQU $0611
+ATTACK EQU $0612
+SURRENDER EQU $0613
+GUTSY EQU $0614
+TALENT EQU $0615
+STRATEGY EQU $0616
+SMITE EQU $0617
+MATCH EQU $0618
+VICTORY EQU $0619
+OFFENSIVE EQU $061A
+SENSE EQU $061B
+VERSUS EQU $061C
+FIGHTS EQU $061D
+POWER EQU $061E
+CHALLENGE EQU $061F
+STRONG EQU $0620
+TOO_STRONG EQU $0621
+GO_EASY EQU $0622
+FOE EQU $0623
+GENIUS EQU $0624
+LEGEND EQU $0625
+ESCAPE EQU $0626
+AIM EQU $0627
+BATTLE EQU $0628
+FIGHT EQU $0629
+RESUSCITATE EQU $062A
+POINTS EQU $062B
+SERIOUS EQU $062C
+GIVE_UP EQU $062D
+LOSS EQU $062E
+IF_I_LOSE EQU $062F
+LOST EQU $0630
+LOSE EQU $0631
+GUARD EQU $0632
+PARTNER EQU $0633
+REJECT EQU $0634
+ACCEPT EQU $0635
+INVINCIBLE EQU $0636
+RECEIVED EQU $0637
+EASY EQU $0638
+WEAK EQU $0639
+TOO_WEAK EQU $063A
+PUSHOVER EQU $063B
+_LEADER EQU $063C ; trainer class
+RULE EQU $063D
+MOVE EQU $063E
+
+; GREETINGS
+THANKS EQU $0800
+YES EQU $0801
+HERE_GOES EQU $0802
+HERE_I_COME EQU $0803
+HERE_IT_IS EQU $0804
+YEAH EQU $0805
+WELCOME EQU $0806
+OI EQU $0807
+HOW_DO EQU $0808
+CONGRATS EQU $0809
+GIVE_ME EQU $080A
+SORRY EQU $080B
+APOLOGIZE EQU $080C
+FORGIVE EQU $080D
+HEY_THERE EQU $080E ; HEY, THERE
+HELLO EQU $080F
+GOOD_BYE EQU $0810 ; GOOD-BYE
+THANK_YOU EQU $0811
+I_VE_ARRIVED EQU $0812 ; I’VE ARRIVED
+PARDON EQU $0813
+EXCUSE EQU $0814
+SEE_YA EQU $0815
+EXCUSE_ME EQU $0816
+WELL_THEN EQU $0817 ; WELL, THEN
+GO_AHEAD EQU $0818
+APPRECIATE EQU $0819
+HEY_ EQU $081A ; HEY?
+WHAT_S_UP_ EQU $081B ; WHAT’S UP?
+HUH_ EQU $081C ; HUH?
+NO EQU $081D
+HI EQU $081E
+YEAH_YEAH EQU $081F ; YEAH, YEAH
+BYE_BYE EQU $0820 ; BYE-BYE
+MEET_YOU EQU $0821
+HEY EQU $0822
+SMELL EQU $0823
+LISTENING EQU $0824
+HOO_HAH EQU $0825 ; HOO-HAH
+YAHOO EQU $0826
+YO EQU $0827
+COME_OVER EQU $0828
+COUNT_ON EQU $0829
+
+; PEOPLE
+OPPONENT EQU $0A00
+I EQU $0A01
+YOU EQU $0A02
+YOURS EQU $0A03
+SON EQU $0A04
+YOUR EQU $0A05
+YOU_RE EQU $0A06 ; YOU’RE
+YOU_VE EQU $0A07 ; YOU’VE
+MOTHER EQU $0A08
+GRANDFATHER EQU $0A09
+UNCLE EQU $0A0A
+FATHER EQU $0A0B
+BOY EQU $0A0C
+ADULT EQU $0A0D
+BROTHER EQU $0A0E
+SISTER EQU $0A0F
+GRANDMOTHER EQU $0A10
+AUNT EQU $0A11
+PARENT EQU $0A12
+MAN EQU $0A13
+ME EQU $0A14
+GIRL EQU $0A15
+BABE EQU $0A16
+FAMILY EQU $0A17
+HER EQU $0A18
+HIM EQU $0A19
+HE EQU $0A1A
+PLACE EQU $0A1B
+DAUGHTER EQU $0A1C
+HIS EQU $0A1D
+HE_S EQU $0A1E ; HE’S
+AREN_T EQU $0A1F ; AREN’T
+SIBLINGS EQU $0A20
+KID EQU $0A21
+CHILDREN EQU $0A22
+MR_ EQU $0A23 ; MR.
+MRS_ EQU $0A24 ; MRS.
+MYSELF EQU $0A25
+I_WAS EQU $0A26
+TO_ME EQU $0A27
+MY EQU $0A28
+I_AM EQU $0A29
+I_VE EQU $0A2A ; I’VE
+WHO EQU $0A2B
+SOMEONE EQU $0A2C
+WHO_WAS EQU $0A2D
+TO_WHOM EQU $0A2E
+WHOSE EQU $0A2F
+WHO_IS EQU $0A30
+IT_S EQU $0A31 ; IT’S
+_LADY EQU $0A32 ; trainer class
+FRIEND EQU $0A33
+ALLY EQU $0A34
+PERSON EQU $0A35
+DUDE EQU $0A36
+THEY EQU $0A37
+THEY_WERE EQU $0A38
+TO_THEM EQU $0A39
+THEIR EQU $0A3A
+THEY_RE EQU $0A3B ; THEY’RE
+THEY_VE EQU $0A3C ; THEY’VE
+WE EQU $0A3D
+BEEN EQU $0A3E
+TO_US EQU $0A3F
+OUR EQU $0A40
+WE_RE EQU $0A41 ; WE’RE
+RIVAL EQU $0A42
+WE_VE EQU $0A43 ; WE’VE
+WOMAN EQU $0A44
+SHE EQU $0A45
+SHE_WAS EQU $0A46
+TO_HER EQU $0A47
+HER_S EQU $0A48 ; HER’S
+SHE_IS EQU $0A49
+SOME EQU $0A4A
+
+; VOICES
+_EX EQU $0C00 ; !
+_EX_EX EQU $0C01 ; !!
+_QU_EX EQU $0C02 ; ?!
+_QU EQU $0C03 ; ?
+_ELIP EQU $0C04 ; …
+_ELIP_EX EQU $0C05 ; …!
+_ELIP3 EQU $0C06 ; ………
+_HYPHEN EQU $0C07 ; -
+_HYPHEN3 EQU $0C08 ; - - -
+UH_OH EQU $0C09 ; UH-OH
+WAAAH EQU $0C0A
+AHAHA EQU $0C0B
+OH_ EQU $0C0C ; OH?
+NOPE EQU $0C0D
+URGH EQU $0C0E
+HMM EQU $0C0F
+WHOAH EQU $0C10
+WROOOAAR_ EQU $0C11 ; WROOOAAR!
+WOW EQU $0C12
+GIGGLE EQU $0C13
+SIGH EQU $0C14
+UNBELIEVABLE EQU $0C15
+CRIES EQU $0C16
+AGREE EQU $0C17
+EH_ EQU $0C18 ; EH?
+CRY EQU $0C19
+EHEHE EQU $0C1A
+OI_OI_OI EQU $0C1B ; OI, OI, OI
+OH_YEAH EQU $0C1C ; OH, YEAH
+OH EQU $0C1D
+OOPS EQU $0C1E
+SHOCKED EQU $0C1F
+EEK EQU $0C20
+GRAAAH EQU $0C21
+GWAHAHAHA EQU $0C22
+WAY EQU $0C23
+TCH EQU $0C24
+HEHE EQU $0C25
+HAH EQU $0C26
+YUP EQU $0C27
+HAHAHA EQU $0C28
+AIYEEH EQU $0C29
+HIYAH EQU $0C2A
+FUFUFU EQU $0C2B
+LOL EQU $0C2C
+SNORT EQU $0C2D
+HUMPH EQU $0C2E
+HEHEHE EQU $0C2F
+HEH EQU $0C30
+HOHOHO EQU $0C31
+UH_HUH EQU $0C32 ; UH-HUH
+OH_DEAR EQU $0C33 ; OH, DEAR
+ARRGH EQU $0C34
+MUFUFU EQU $0C35
+MMM EQU $0C36
+OH_KAY EQU $0C37 ; OH-KAY
+OKAY EQU $0C38
+LALALA EQU $0C39
+YAY EQU $0C3A
+AWW EQU $0C3B
+WOWEE EQU $0C3C
+GWAH EQU $0C3D
+WAHAHAHA EQU $0C3E
+
+; SPEECH
+LISTEN EQU $0E00
+NOT_VERY EQU $0E01
+MEAN EQU $0E02
+LIE EQU $0E03
+LAY EQU $0E04
+RECOMMEND EQU $0E05
+NITWIT EQU $0E06
+QUITE EQU $0E07
+FROM EQU $0E08
+FEELING EQU $0E09
+BUT EQU $0E0A
+HOWEVER EQU $0E0B
+CASE EQU $0E0C
+THE EQU $0E0D
+MISS EQU $0E0E
+HOW EQU $0E0F
+HIT EQU $0E10
+ENOUGH EQU $0E11
+A_LOT EQU $0E12
+A_LITTLE EQU $0E13
+ABSOLUTELY EQU $0E14
+_AND EQU $0E15 ; rgbds keyword
+ONLY EQU $0E16
+AROUND EQU $0E17
+PROBABLY EQU $0E18
+_IF EQU $0E19 ; rgbds keyword
+VERY EQU $0E1A
+A_TINY_BIT EQU $0E1B
+WILD EQU $0E1C
+THAT_S EQU $0E1D
+JUST EQU $0E1E
+EVEN_SO_ EQU $0E1F ; EVEN SO,
+MUST_BE EQU $0E20
+NATURALLY EQU $0E21
+FOR_NOW_ EQU $0E22 ; FOR NOW,
+UNDERSTOOD EQU $0E23
+JOKING EQU $0E24
+READY EQU $0E25
+SOMETHING EQU $0E26
+SOMEHOW EQU $0E27
+ALTHOUGH EQU $0E28
+ALSO EQU $0E29
+PERFECT EQU $0E2A
+AS_MUCH_AS EQU $0E2B
+REALLY EQU $0E2C
+TRULY EQU $0E2D
+SERIOUSLY EQU $0E2E
+TOTALLY EQU $0E2F
+UNTIL EQU $0E30
+AS_IF EQU $0E31
+MOOD EQU $0E32
+RATHER EQU $0E33
+AWFULLY EQU $0E34
+MODE EQU $0E35
+MORE EQU $0E36
+TOO_LATE EQU $0E37
+FINALLY EQU $0E38
+ANY EQU $0E39
+INSTEAD EQU $0E3A
+FANTASTIC EQU $0E3B
+
+; ENDINGS
+WILL EQU $1000
+WILL_BE_HERE EQU $1001
+_OR EQU $1002 ; rgbds keyword
+TIMES EQU $1003
+WONDER EQU $1004
+IS_IT_ EQU $1005 ; IS IT?
+BE EQU $1006
+GIMME EQU $1007
+COULD EQU $1008
+LIKELY_TO EQU $1009
+WOULD EQU $100A
+IS EQU $100B
+ISN_T_IT_ EQU $100C ; ISN’T IT?
+LET_S EQU $100D ; LET’S
+OTHER EQU $100E
+ARE EQU $100F
+WAS EQU $1010
+WERE EQU $1011
+THOSE EQU $1012
+ISN_T EQU $1013 ; ISN’T
+WON_T EQU $1014 ; WON’T
+CAN_T EQU $1015 ; CAN’T
+CAN EQU $1016
+DON_T EQU $1017 ; DON’T
+DO EQU $1018
+DOES EQU $1019
+WHOM EQU $101A
+WHICH EQU $101B
+WASN_T EQU $101C ; WASN’T
+WEREN_T EQU $101D ; WEREN’T
+HAVE EQU $101E
+HAVEN_T EQU $101F ; HAVEN’T
+_A EQU $1020 ; rgbds keyword
+AN EQU $1021
+NOT EQU $1022
+THERE EQU $1023
+OK_ EQU $1024 ; OK?
+SO EQU $1025
+MAYBE EQU $1026
+ABOUT EQU $1027
+OVER EQU $1028
+IT EQU $1029
+ALL EQU $102A
+FOR EQU $102B
+ON EQU $102C
+OFF EQU $102D
+AS EQU $102E
+TO EQU $102F
+WITH EQU $1030
+BETTER EQU $1031
+EVER EQU $1032
+SINCE EQU $1033
+OF EQU $1034
+BELONGS_TO EQU $1035
+AT EQU $1036
+IN EQU $1037
+OUT EQU $1038
+TOO EQU $1039
+LIKE EQU $103A
+DID EQU $103B
+DIDN_T EQU $103C ; DIDN’T
+DOESN_T EQU $103D ; DOESN’T
+WITHOUT EQU $103E
+AFTER EQU $103F
+BEFORE EQU $1040
+WHILE EQU $1041
+THAN EQU $1042
+ONCE EQU $1043
+ANYWHERE EQU $1044
+
+; FEELINGS
+MEET EQU $1200
+PLAY EQU $1201
+HURRIED EQU $1202
+GOES EQU $1203
+GIDDY EQU $1204
+HAPPY EQU $1205
+HAPPINESS EQU $1206
+EXCITE EQU $1207
+IMPORTANT EQU $1208
+FUNNY EQU $1209
+GOT EQU $120A
+GO_HOME EQU $120B
+DISAPPOINTED EQU $120C
+DISAPPOINTS EQU $120D
+SAD EQU $120E
+TRY EQU $120F
+TRIES EQU $1210
+HEARS EQU $1211
+THINK EQU $1212
+HEAR EQU $1213
+WANTS EQU $1214
+MISHEARD EQU $1215
+DISLIKE EQU $1216
+ANGRY EQU $1217
+ANGER EQU $1218
+SCARY EQU $1219
+LONESOME EQU $121A
+DISAPPOINT EQU $121B
+JOY EQU $121C
+GETS EQU $121D
+NEVER EQU $121E
+DARN EQU $121F
+DOWNCAST EQU $1220
+INCREDIBLE EQU $1221
+LIKES EQU $1222
+DISLIKES EQU $1223
+BORING EQU $1224
+CARE EQU $1225
+CARES EQU $1226
+ALL_RIGHT EQU $1227
+ADORE EQU $1228
+DISASTER EQU $1229
+ENJOY EQU $122A
+ENJOYS EQU $122B
+EAT EQU $122C
+LACKING EQU $122D
+BAD EQU $122E
+HARD EQU $122F
+TERRIBLE EQU $1230
+SHOULD EQU $1231
+NICE EQU $1232
+DRINK EQU $1233
+SURPRISE EQU $1234
+FEAR EQU $1235
+WANT EQU $1236
+WAIT EQU $1237
+SATISFIED EQU $1238
+SEE EQU $1239
+RARE EQU $123A
+NEGATIVE EQU $123B
+DONE EQU $123C
+DANGER EQU $123D
+DEFEATED EQU $123E
+BEAT EQU $123F
+GREAT EQU $1240
+ROMANTIC EQU $1241
+QUESTION EQU $1242
+UNDERSTAND EQU $1243
+UNDERSTANDS EQU $1244
+
+; CONDITIONS
+HOT EQU $1400
+EXISTS EQU $1401
+EXCESS EQU $1402
+APPROVED EQU $1403
+HAS EQU $1404
+GOOD EQU $1405
+LESS EQU $1406
+MOMENTUM EQU $1407
+GOING EQU $1408
+WEIRD EQU $1409
+BUSY EQU $140A
+TOGETHER EQU $140B
+FULL EQU $140C
+ABSENT EQU $140D
+BEING EQU $140E
+NEED EQU $140F
+TASTY EQU $1410
+SKILLED EQU $1411
+NOISY EQU $1412
+BIG EQU $1413
+LATE EQU $1414
+CLOSE EQU $1415
+DOCILE EQU $1416
+AMUSING EQU $1417
+ENTERTAINING EQU $1418
+PERFECTION EQU $1419
+PRETTY EQU $141A
+HEALTHY EQU $141B
+EXCELLENT EQU $141C
+UPSIDE_DOWN EQU $141D
+COLD EQU $141E
+REFRESHING EQU $141F
+UNAVOIDABLE EQU $1420
+MUCH EQU $1421
+OVERWHELMING EQU $1422
+FABULOUS EQU $1423
+_ELSE EQU $1424 ; rgbds keyword
+EXPENSIVE EQU $1425
+CORRECT EQU $1426
+IMPOSSIBLE EQU $1427
+SMALL EQU $1428
+DIFFERENT EQU $1429
+TIRED EQU $142A
+SKILL EQU $142B
+TOP EQU $142C
+NON_STOP EQU $142D ; NON-STOP
+PREPOSTEROUS EQU $142E
+NONE EQU $142F
+NOTHING EQU $1430
+NATURAL EQU $1431
+BECOMES EQU $1432
+LUKEWARM EQU $1433
+FAST EQU $1434
+LOW EQU $1435
+AWFUL EQU $1436
+ALONE EQU $1437
+BORED EQU $1438
+SECRET EQU $1439
+MYSTERY EQU $143A
+LACKS EQU $143B
+BEST EQU $143C
+LOUSY EQU $143D
+MISTAKE EQU $143E
+KIND EQU $143F
+WELL EQU $1440
+WEAKENED EQU $1441
+SIMPLE EQU $1442
+SEEMS EQU $1443
+BADLY EQU $1444
+
+; ACTIONS
+MEETS EQU $1600
+CONCEDE EQU $1601
+GIVE EQU $1602
+GIVES EQU $1603
+PLAYED EQU $1604
+PLAYS EQU $1605
+COLLECT EQU $1606
+WALKING EQU $1607
+WALKS EQU $1608
+SAYS EQU $1609
+WENT EQU $160A
+SAID EQU $160B
+WAKE_UP EQU $160C
+WAKES_UP EQU $160D
+ANGERS EQU $160E
+TEACH EQU $160F
+TEACHES EQU $1610
+PLEASE EQU $1611
+LEARN EQU $1612
+CHANGE EQU $1613
+STORY EQU $1614
+TRUST EQU $1615
+LAVISH EQU $1616
+LISTENS EQU $1617
+HEARING EQU $1618
+TRAINS EQU $1619
+CHOOSE EQU $161A
+COME EQU $161B
+CAME EQU $161C
+SEARCH EQU $161D
+MAKE EQU $161E
+CAUSE EQU $161F
+KNOW EQU $1620
+KNOWS EQU $1621
+REFUSE EQU $1622
+STORES EQU $1623
+BRAG EQU $1624
+IGNORANT EQU $1625
+THINKS EQU $1626
+BELIEVE EQU $1627
+SLIDE EQU $1628
+EATS EQU $1629
+USE EQU $162A
+USES EQU $162B
+USING EQU $162C
+COULDN_T EQU $162D ; COULDN’T
+CAPABLE EQU $162E
+DISAPPEAR EQU $162F
+APPEAR EQU $1630
+THROW EQU $1631
+WORRY EQU $1632
+SLEPT EQU $1633
+SLEEP EQU $1634
+RELEASE EQU $1635
+DRINKS EQU $1636
+RUNS EQU $1637
+RUN EQU $1638
+WORKS EQU $1639
+WORKING EQU $163A
+TALKING EQU $163B
+TALK EQU $163C
+SINK EQU $163D
+SMACK EQU $163E
+PRETEND EQU $163F
+PRAISE EQU $1640
+OVERDO EQU $1641
+SHOW EQU $1642
+LOOKS EQU $1643
+SEES EQU $1644
+SEEK EQU $1645
+OWN EQU $1646
+TAKE EQU $1647
+ALLOW EQU $1648
+FORGET EQU $1649
+FORGETS EQU $164A
+APPEARS EQU $164B
+FAINT EQU $164C
+FAINTED EQU $164D
+
+; LIFESTYLE
+CHORES EQU $1800
+_HOME EQU $1801 ; rgbds keyword
+MONEY EQU $1802
+ALLOWANCE EQU $1803
+BATH EQU $1804
+CONVERSATION EQU $1805
+SCHOOL EQU $1806
+COMMEMORATE EQU $1807
+HABIT EQU $1808
+GROUP EQU $1809
+WORD EQU $180A
+STORE EQU $180B
+SERVICE EQU $180C
+WORK EQU $180D
+SYSTEM EQU $180E
+TRAIN EQU $180F
+CLASS EQU $1810
+LESSONS EQU $1811
+INFORMATION EQU $1812
+LIVING EQU $1813
+TEACHER EQU $1814
+TOURNAMENT EQU $1815
+_LETTER EQU $1816 ; item
+EVENT EQU $1817
+DIGITAL EQU $1818
+TEST EQU $1819
+DEPT_STORE EQU $181A ; DEPT. STORE
+TELEVISION EQU $181B
+PHONE EQU $181C
+ITEM EQU $181D
+NAME EQU $181E
+NEWS EQU $181F
+POPULAR EQU $1820
+PARTY EQU $1821
+STUDY EQU $1822
+MACHINE EQU $1823
+MAIL EQU $1824
+MESSAGE EQU $1825
+PROMISE EQU $1826
+DREAM EQU $1827
+KINDERGARTEN EQU $1828
+LIFE EQU $1829
+RADIO EQU $182A
+RENTAL EQU $182B
+WORLD EQU $182C
+
+; HOBBIES
+IDOL EQU $1A00
+ANIME EQU $1A01
+SONG EQU $1A02
+MOVIE EQU $1A03
+SWEETS EQU $1A04
+CHAT EQU $1A05
+CHILD_S_PLAY EQU $1A06
+TOYS EQU $1A07
+MUSIC EQU $1A08
+CARDS EQU $1A09
+SHOPPING EQU $1A0A
+CAMERA EQU $1A0B
+VIEWING EQU $1A0C
+SPECTATOR EQU $1A0D
+GOURMET EQU $1A0E
+GAME EQU $1A0F
+RPG EQU $1A10
+COLLECTION EQU $1A11
+COMPLETE EQU $1A12
+MAGAZINE EQU $1A13
+WALK EQU $1A14
+BIKE EQU $1A15
+HOBBY EQU $1A16
+SPORTS EQU $1A17
+SOFTWARE EQU $1A18
+SONGS EQU $1A19
+DIET EQU $1A1A
+TREASURE EQU $1A1B
+TRAVEL EQU $1A1C
+DANCE EQU $1A1D
+CHANNEL EQU $1A1E
+MAKING EQU $1A1F
+FISHING EQU $1A20
+DATE EQU $1A21
+DESIGN EQU $1A22
+LOCOMOTIVE EQU $1A23
+PLUSH_DOLL EQU $1A24
+PC EQU $1A25
+FLOWERS EQU $1A26
+HERO EQU $1A27
+NAP EQU $1A28
+HEROINE EQU $1A29
+FASHION EQU $1A2A
+ADVENTURE EQU $1A2B
+BOARD EQU $1A2C
+BALL EQU $1A2D
+BOOK EQU $1A2E
+FESTIVAL EQU $1A2F
+COMICS EQU $1A30
+HOLIDAY EQU $1A31
+PLANS EQU $1A32
+TRENDY EQU $1A33
+VACATION EQU $1A34
+LOOK EQU $1A35
+
+; TIME
+FALL EQU $1C00
+MORNING EQU $1C01
+TOMORROW EQU $1C02
+LAST EQU $1C03
+DAY EQU $1C04
+SOMETIME EQU $1C05
+ALWAYS EQU $1C06
+CURRENT EQU $1C07
+FOREVER EQU $1C08
+DAYS EQU $1C09
+END EQU $1C0A
+TUESDAY EQU $1C0B
+YESTERDAY EQU $1C0C
+TODAY EQU $1C0D
+FRIDAY EQU $1C0E
+MONDAY EQU $1C0F
+LATER EQU $1C10
+EARLIER EQU $1C11
+ANOTHER EQU $1C12
+TIME EQU $1C13
+FINISH EQU $1C14
+WEDNESDAY EQU $1C15
+SOON EQU $1C16
+START EQU $1C17
+MONTH EQU $1C18
+_STOP EQU $1C19 ; rgbds keyword
+NOW EQU $1C1A
+FINAL EQU $1C1B
+NEXT EQU $1C1C
+AGE EQU $1C1D
+SATURDAY EQU $1C1E
+SUMMER EQU $1C1F
+SUNDAY EQU $1C20
+BEGINNING EQU $1C21
+SPRING EQU $1C22
+DAYTIME EQU $1C23
+WINTER EQU $1C24
+DAILY EQU $1C25
+OLDEN EQU $1C26
+ALMOST EQU $1C27
+NEARLY EQU $1C28
+THURSDAY EQU $1C29
+NIGHTTIME EQU $1C2A
+NIGHT EQU $1C2B
+WEEK EQU $1C2C
+
+; MISC.
+HIGHS EQU $1E00
+LOWS EQU $1E01
+UM EQU $1E02
+REAR EQU $1E03
+THINGS EQU $1E04
+THING EQU $1E05
+BELOW EQU $1E06
+ABOVE EQU $1E07
+BACK EQU $1E08
+HIGH EQU $1E09
+HERE EQU $1E0A
+INSIDE EQU $1E0B
+OUTSIDE EQU $1E0C
+BESIDE EQU $1E0D
+THIS_IS_IT_ EQU $1E0E ; THIS IS IT!
+THIS EQU $1E0F
+EVERY EQU $1E10
+THESE EQU $1E11
+THESE_WERE EQU $1E12
+DOWN EQU $1E13
+THAT EQU $1E14
+THOSE_ARE EQU $1E15
+THOSE_WERE EQU $1E16
+THAT_S_IT_ EQU $1E17 ; THAT’S IT!
+AM EQU $1E18
+THAT_WAS EQU $1E19
+FRONT EQU $1E1A
+UP EQU $1E1B
+CHOICE EQU $1E1C
+FAR EQU $1E1D
+AWAY EQU $1E1E
+NEAR EQU $1E1F
+WHERE EQU $1E20
+WHEN EQU $1E21
+WHAT EQU $1E22
+DEEP EQU $1E23
+SHALLOW EQU $1E24
+WHY EQU $1E25
+CONFUSED EQU $1E26
+OPPOSITE EQU $1E27
+LEFT EQU $1E28
+RIGHT EQU $1E29
+
+; ADJECTIVES
+WANDERING EQU $2000
+RICKETY EQU $2001
+ROCK_SOLID EQU $2002 ; ROCK-SOLID
+HUNGRY EQU $2003
+TIGHT EQU $2004
+TICKLISH EQU $2005
+TWIRLING EQU $2006
+SPIRALING EQU $2007
+THIRSTY EQU $2008
+LOLLING EQU $2009
+SILKY EQU $200A
+SADLY EQU $200B
+HOPELESS EQU $200C
+USELESS EQU $200D
+DROOLING EQU $200E
+EXCITING EQU $200F
+THICK EQU $2010
+SMOOTH EQU $2011
+SLIMY EQU $2012
+THIN EQU $2013
+BREAK EQU $2014
+VORACIOUS EQU $2015
+SCATTER EQU $2016
+AWESOME EQU $2017
+WIMPY EQU $2018
+WOBBLY EQU $2019
+SHAKY EQU $201A
+RIPPED EQU $201B
+SHREDDED EQU $201C
+INCREASING EQU $201D
+YET EQU $201E
+DESTROYED EQU $201F
+FIERY EQU $2020
+LOVEY_DOVEY EQU $2021
+HAPPILY EQU $2022
+ANTICIPATION EQU $2023
+
+; EVENT
+APPEAL EQU $2200
+EVENTS EQU $2201
+STAY_AT_HOME EQU $2202 ; STAY-AT-HOME
+BERRY EQU $2203
+CONTEST EQU $2204
+MC EQU $2205
+JUDGE EQU $2206
+SUPER EQU $2207
+STAGE EQU $2208
+HALL_OF_FAME EQU $2209
+EVOLUTION EQU $220A
+HYPER EQU $220B
+BATTLE_TOWER EQU $220C
+LEADERS EQU $220D
+BATTLE_ROOM EQU $220E
+HIDDEN EQU $220F
+SECRET_BASE EQU $2210
+BLEND EQU $2211
+POKEBLOCK EQU $2212 ; \{POKéBLOCK}
+MASTER EQU $2213
+RANK EQU $2214
+RIBBON EQU $2215
+
+; MOVE 1
+_KARATE_CHOP EQU $2402
+_DOUBLESLAP EQU $2403
+_THUNDERPUNCH EQU $2409
+_RAZOR_WIND EQU $240D
+_CUT EQU $240F
+_GUST EQU $2410
+_FLY EQU $2413
+_BIND EQU $2414
+_SAND_ATTACK EQU $241C
+_HEADBUTT EQU $241D
+_THRASH EQU $2425
+_DOUBLE_EDGE EQU $2426
+_TAIL_WHIP EQU $2427
+_BITE EQU $242C
+_SING EQU $242F
+_SONICBOOM EQU $2431
+_DISABLE EQU $2432
+_FLAMETHROWER EQU $2435
+_MIST EQU $2436
+_PSYBEAM EQU $243C
+_AURORA_BEAM EQU $243E
+_SUBMISSION EQU $2442
+_LOW_KICK EQU $2443
+_COUNTER EQU $2444
+_STRENGTH EQU $2446
+_ABSORB EQU $2447
+_GROWTH EQU $244A
+_SOLARBEAM EQU $244C
+_STUN_SPORE EQU $244E
+_STRING_SHOT EQU $2451
+_THUNDERBOLT EQU $2455
+_THUNDER EQU $2457
+_ROCK_THROW EQU $2458
+_EARTHQUAKE EQU $2459
+_FISSURE EQU $245A
+_DIG EQU $245B
+_PSYCHIC EQU $245E
+_HYPNOSIS EQU $245F
+_AGILITY EQU $2461
+_RAGE EQU $2463
+_SCREECH EQU $2467
+_DOUBLE_TEAM EQU $2468
+_RECOVER EQU $2469
+_HARDEN EQU $246A
+_SMOKESCREEN EQU $246C
+_CONFUSE_RAY EQU $246D
+_WITHDRAW EQU $246E
+_HAZE EQU $2472
+_FOCUS_ENERGY EQU $2474
+_BIDE EQU $2475
+_MIRROR_MOVE EQU $2477
+_SELFDESTRUCT EQU $2478
+_LICK EQU $247A
+_SMOG EQU $247B
+_CLAMP EQU $2480
+_SWIFT EQU $2481
+_CONSTRICT EQU $2484
+_KINESIS EQU $2486
+_LEECH_LIFE EQU $248D
+_LOVELY_KISS EQU $248E
+_SKY_ATTACK EQU $248F
+_BUBBLE EQU $2491
+_SPORE EQU $2493
+_PSYWAVE EQU $2495
+_CRABHAMMER EQU $2498
+_ROCK_SLIDE EQU $249D
+_SHARPEN EQU $249F
+_SUPER_FANG EQU $24A2
+_SLASH EQU $24A3
+_SKETCH EQU $24A6
+_SPIDER_WEB EQU $24A9
+_MIND_READER EQU $24AA
+_NIGHTMARE EQU $24AB
+_FLAME_WHEEL EQU $24AC
+_SNORE EQU $24AD
+_FLAIL EQU $24AF
+_AEROBLAST EQU $24B1
+_REVERSAL EQU $24B3
+_SPITE EQU $24B4
+_POWDER_SNOW EQU $24B5
+_SCARY_FACE EQU $24B8
+_OCTAZOOKA EQU $24BE
+_ICY_WIND EQU $24C4
+_OUTRAGE EQU $24C8
+_SANDSTORM EQU $24C9
+_GIGA_DRAIN EQU $24CA
+_ENDURE EQU $24CB
+_CHARM EQU $24CC
+_ROLLOUT EQU $24CD
+_SWAGGER EQU $24CF
+_SPARK EQU $24D1
+_MEAN_LOOK EQU $24D4
+_HEAL_BELL EQU $24D7
+_RETURN EQU $24D8
+_SAFEGUARD EQU $24DB
+_PAIN_SPLIT EQU $24DC
+_SACRED_FIRE EQU $24DD
+_ENCORE EQU $24E3
+_PURSUIT EQU $24E4
+_RAPID_SPIN EQU $24E5
+_SWEET_SCENT EQU $24E6
+_IRON_TAIL EQU $24E7
+_VITAL_THROW EQU $24E9
+_MORNING_SUN EQU $24EA
+_SYNTHESIS EQU $24EB
+_CROSS_CHOP EQU $24EE
+_RAIN_DANCE EQU $24F0
+_CRUNCH EQU $24F2
+_PSYCH_UP EQU $24F4
+_EXTREMESPEED EQU $24F5
+_ANCIENTPOWER EQU $24F6
+_SHADOW_BALL EQU $24F7
+_ROCK_SMASH EQU $24F9
+_WHIRLPOOL EQU $24FA
+_UPROAR EQU $24FD
+_HAIL EQU $2502
+_TORMENT EQU $2503
+_FLATTER EQU $2504
+_WILL_O_WISP EQU $2505
+_MEMENTO EQU $2506
+_FACADE EQU $2507
+_FOCUS_PUNCH EQU $2508
+_SMELLINGSALT EQU $2509
+_FOLLOW_ME EQU $250A
+_NATURE_POWER EQU $250B
+_CHARGE EQU $250C
+_BRICK_BREAK EQU $2518
+_YAWN EQU $2519
+_ENDEAVOR EQU $251B
+_SKILL_SWAP EQU $251D
+_GRUDGE EQU $2520
+_ICE_BALL EQU $252D
+_METEOR_MASH EQU $2535
+_ASTONISH EQU $2536
+_WEATHER_BALL EQU $2537
+_AROMATHERAPY EQU $2538
+_FAKE_TEARS EQU $2539
+_AIR_CUTTER EQU $253A
+_OVERHEAT EQU $253B
+_ODOR_SLEUTH EQU $253C
+_ROCK_TOMB EQU $253D
+_SILVER_WIND EQU $253E
+_METAL_SOUND EQU $253F
+_GRASSWHISTLE EQU $2540
+_TICKLE EQU $2541
+_COSMIC_POWER EQU $2542
+_WATER_SPOUT EQU $2543
+_SIGNAL_BEAM EQU $2544
+_SHADOW_PUNCH EQU $2545
+_EXTRASENSORY EQU $2546
+_SKY_UPPERCUT EQU $2547
+_SAND_TOMB EQU $2548
+_SHEER_COLD EQU $2549
+
+; MOVE 2
+_POUND EQU $2601
+_COMET_PUNCH EQU $2604
+_MEGA_PUNCH EQU $2605
+_PAY_DAY EQU $2606
+_FIRE_PUNCH EQU $2607
+_ICE_PUNCH EQU $2608
+_SCRATCH EQU $260A
+_VICEGRIP EQU $260B
+_GUILLOTINE EQU $260C
+_SWORDS_DANCE EQU $260E
+_WING_ATTACK EQU $2611
+_WHIRLWIND EQU $2612
+_SLAM EQU $2615
+_VINE_WHIP EQU $2616
+_STOMP EQU $2617
+_DOUBLE_KICK EQU $2618
+_MEGA_KICK EQU $2619
+_JUMP_KICK EQU $261A
+_ROLLING_KICK EQU $261B
+_HORN_ATTACK EQU $261E
+_FURY_ATTACK EQU $261F
+_HORN_DRILL EQU $2620
+_TACKLE EQU $2621
+_BODY_SLAM EQU $2622
+_WRAP EQU $2623
+_TAKE_DOWN EQU $2624
+_POISON_STING EQU $2628
+_TWINEEDLE EQU $2629
+_PIN_MISSILE EQU $262A
+_LEER EQU $262B
+_GROWL EQU $262D
+_ROAR EQU $262E
+_SUPERSONIC EQU $2630
+_ACID EQU $2633
+_EMBER EQU $2634
+_WATER_GUN EQU $2637
+_HYDRO_PUMP EQU $2638
+_SURF EQU $2639
+_ICE_BEAM EQU $263A
+_BLIZZARD EQU $263B
+_BUBBLEBEAM EQU $263D
+_HYPER_BEAM EQU $263F
+_PECK EQU $2640
+_DRILL_PECK EQU $2641
+_SEISMIC_TOSS EQU $2645
+_MEGA_DRAIN EQU $2648
+_LEECH_SEED EQU $2649
+_RAZOR_LEAF EQU $264B
+_POISONPOWDER EQU $264D
+_SLEEP_POWDER EQU $264F
+_PETAL_DANCE EQU $2650
+_DRAGON_RAGE EQU $2652
+_FIRE_SPIN EQU $2653
+_THUNDERSHOCK EQU $2654
+_THUNDER_WAVE EQU $2656
+_TOXIC EQU $265C
+_CONFUSION EQU $265D
+_MEDITATE EQU $2660
+_QUICK_ATTACK EQU $2662
+_TELEPORT EQU $2664
+_NIGHT_SHADE EQU $2665
+_MIMIC EQU $2666
+_MINIMIZE EQU $266B
+_DEFENSE_CURL EQU $266F
+_BARRIER EQU $2670
+_LIGHT_SCREEN EQU $2671
+_REFLECT EQU $2673
+_METRONOME EQU $2676
+_EGG_BOMB EQU $2679
+_SLUDGE EQU $267C
+_BONE_CLUB EQU $267D
+_FIRE_BLAST EQU $267E
+_WATERFALL EQU $267F
+_SKULL_BASH EQU $2682
+_SPIKE_CANNON EQU $2683
+_AMNESIA EQU $2685
+_SOFTBOILED EQU $2687
+_HI_JUMP_KICK EQU $2688
+_GLARE EQU $2689
+_DREAM_EATER EQU $268A
+_POISON_GAS EQU $268B
+_BARRAGE EQU $268C
+_TRANSFORM EQU $2690
+_DIZZY_PUNCH EQU $2692
+_FLASH EQU $2694
+_SPLASH EQU $2696
+_ACID_ARMOR EQU $2697
+_EXPLOSION EQU $2699
+_FURY_SWIPES EQU $269A
+_BONEMERANG EQU $269B
+_REST EQU $269C
+_HYPER_FANG EQU $269E
+_CONVERSION EQU $26A0
+_TRI_ATTACK EQU $26A1
+_SUBSTITUTE EQU $26A4
+_STRUGGLE EQU $26A5
+_TRIPLE_KICK EQU $26A7
+_THIEF EQU $26A8
+_CURSE EQU $26AE
+_CONVERSION_2 EQU $26B0
+_COTTON_SPORE EQU $26B2
+_PROTECT EQU $26B6
+_MACH_PUNCH EQU $26B7
+_FAINT_ATTACK EQU $26B9
+_SWEET_KISS EQU $26BA
+_BELLY_DRUM EQU $26BB
+_SLUDGE_BOMB EQU $26BC
+_MUD_SLAP EQU $26BD
+_SPIKES EQU $26BF
+_ZAP_CANNON EQU $26C0
+_FORESIGHT EQU $26C1
+_DESTINY_BOND EQU $26C2
+_PERISH_SONG EQU $26C3
+_DETECT EQU $26C5
+_BONE_RUSH EQU $26C6
+_LOCK_ON EQU $26C7
+_FALSE_SWIPE EQU $26CE
+_MILK_DRINK EQU $26D0
+_FURY_CUTTER EQU $26D2
+_STEEL_WING EQU $26D3
+_ATTRACT EQU $26D5
+_SLEEP_TALK EQU $26D6
+_PRESENT EQU $26D9
+_FRUSTRATION EQU $26DA
+_MAGNITUDE EQU $26DE
+_DYNAMICPUNCH EQU $26DF
+_MEGAHORN EQU $26E0
+_DRAGONBREATH EQU $26E1
+_BATON_PASS EQU $26E2
+_METAL_CLAW EQU $26E8
+_MOONLIGHT EQU $26EC
+_HIDDEN_POWER EQU $26ED
+_TWISTER EQU $26EF
+_SUNNY_DAY EQU $26F1
+_MIRROR_COAT EQU $26F3
+_FUTURE_SIGHT EQU $26F8
+_BEAT_UP EQU $26FB
+_FAKE_OUT EQU $26FC
+_STOCKPILE EQU $26FE
+_SPIT_UP EQU $26FF
+_SWALLOW EQU $2700
+_HEAT_WAVE EQU $2701
+_TAUNT EQU $270D
+_HELPING_HAND EQU $270E
+_TRICK EQU $270F
+_ROLE_PLAY EQU $2710
+_WISH EQU $2711
+_ASSIST EQU $2712
+_INGRAIN EQU $2713
+_SUPERPOWER EQU $2714
+_MAGIC_COAT EQU $2715
+_RECYCLE EQU $2716
+_REVENGE EQU $2717
+_KNOCK_OFF EQU $271A
+_ERUPTION EQU $271C
+_IMPRISON EQU $271E
+_REFRESH EQU $271F
+_SNATCH EQU $2721
+_SECRET_POWER EQU $2722
+_DIVE EQU $2723
+_ARM_THRUST EQU $2724
+_CAMOUFLAGE EQU $2725
+_TAIL_GLOW EQU $2726
+_LUSTER_PURGE EQU $2727
+_MIST_BALL EQU $2728
+_FEATHERDANCE EQU $2729
+_TEETER_DANCE EQU $272A
+_BLAZE_KICK EQU $272B
+_MUD_SPORT EQU $272C
+_NEEDLE_ARM EQU $272E
+_SLACK_OFF EQU $272F
+_HYPER_VOICE EQU $2730
+_POISON_FANG EQU $2731
+_CRUSH_CLAW EQU $2732
+_MUDDY_WATER EQU $274A
+_BULLET_SEED EQU $274B
+_AERIAL_ACE EQU $274C
+_IRON_DEFENSE EQU $274E
+_BLOCK EQU $274F
+_HOWL EQU $2750
+_DRAGON_CLAW EQU $2751
+_BULK_UP EQU $2753
+_BOUNCE EQU $2754
+_MUD_SHOT EQU $2755
+_POISON_TAIL EQU $2756
+_COVET EQU $2757
+_MAGICAL_LEAF EQU $2759
+_WATER_SPORT EQU $275A
+_CALM_MIND EQU $275B
+_LEAF_BLADE EQU $275C
+_DRAGON_DANCE EQU $275D
+_ROCK_BLAST EQU $275E
+_SHOCK_WAVE EQU $275F
+_WATER_PULSE EQU $2760
+
+; TRENDY SAYING
+KTHX_BYE_ EQU $2800 ; KTHX, BYE.
+YES_SIR_ EQU $2801 ; YES, SIR!
+AVANT_GARDE EQU $2802
+COUPLE EQU $2803
+MUCH_OBLIGED EQU $2804
+YEEHAW_ EQU $2805 ; YEEHAW!
+MEGA EQU $2806
+_1_HIT_KO_ EQU $2807 ; 1-HIT KO!
+DESTINY EQU $2808
+CANCEL EQU $2809
+NEW EQU $280A
+FLATTEN EQU $280B
+KIDDING EQU $280C
+LOSER EQU $280D
+LOSING EQU $280E
+HAPPENING EQU $280F
+HIP_AND EQU $2810
+SHAKE EQU $2811
+SHADY EQU $2812
+UPBEAT EQU $2813
+MODERN EQU $2814
+SMELL_YA EQU $2815
+BANG EQU $2816
+KNOCKOUT EQU $2817
+HASSLE EQU $2818
+WINNER EQU $2819
+FEVER EQU $281A
+WANNABE EQU $281B
+BABY EQU $281C
+HEART EQU $281D
+OLD EQU $281E
+YOUNG EQU $281F
+UGLY EQU $2820
+
+; POKéMON2 (Johto Pokédex)
+; these have double underscores, because 67 of them are also in the Hoenn Pokédex
+__BULBASAUR EQU $2A01
+__IVYSAUR EQU $2A02
+__VENUSAUR EQU $2A03
+__CHARMANDER EQU $2A04
+__CHARMELEON EQU $2A05
+__CHARIZARD EQU $2A06
+__SQUIRTLE EQU $2A07
+__WARTORTLE EQU $2A08
+__BLASTOISE EQU $2A09
+__CATERPIE EQU $2A0A
+__METAPOD EQU $2A0B
+__BUTTERFREE EQU $2A0C
+__WEEDLE EQU $2A0D
+__KAKUNA EQU $2A0E
+__BEEDRILL EQU $2A0F
+__PIDGEY EQU $2A10
+__PIDGEOTTO EQU $2A11
+__PIDGEOT EQU $2A12
+__RATTATA EQU $2A13
+__RATICATE EQU $2A14
+__SPEAROW EQU $2A15
+__FEAROW EQU $2A16
+__EKANS EQU $2A17
+__ARBOK EQU $2A18
+__PIKACHU EQU $2A19
+__RAICHU EQU $2A1A
+__SANDSHREW EQU $2A1B
+__SANDSLASH EQU $2A1C
+__NIDORAN_F EQU $2A1D
+__NIDORINA EQU $2A1E
+__NIDOQUEEN EQU $2A1F
+__NIDORAN_M EQU $2A20
+__NIDORINO EQU $2A21
+__NIDOKING EQU $2A22
+__CLEFAIRY EQU $2A23
+__CLEFABLE EQU $2A24
+__VULPIX EQU $2A25
+__NINETALES EQU $2A26
+__JIGGLYPUFF EQU $2A27
+__WIGGLYTUFF EQU $2A28
+__ZUBAT EQU $2A29
+__GOLBAT EQU $2A2A
+__ODDISH EQU $2A2B
+__GLOOM EQU $2A2C
+__VILEPLUME EQU $2A2D
+__PARAS EQU $2A2E
+__PARASECT EQU $2A2F
+__VENONAT EQU $2A30
+__VENOMOTH EQU $2A31
+__DIGLETT EQU $2A32
+__DUGTRIO EQU $2A33
+__MEOWTH EQU $2A34
+__PERSIAN EQU $2A35
+__PSYDUCK EQU $2A36
+__GOLDUCK EQU $2A37
+__MANKEY EQU $2A38
+__PRIMEAPE EQU $2A39
+__GROWLITHE EQU $2A3A
+__ARCANINE EQU $2A3B
+__POLIWAG EQU $2A3C
+__POLIWHIRL EQU $2A3D
+__POLIWRATH EQU $2A3E
+__ABRA EQU $2A3F
+__KADABRA EQU $2A40
+__ALAKAZAM EQU $2A41
+__MACHOP EQU $2A42
+__MACHOKE EQU $2A43
+__MACHAMP EQU $2A44
+__BELLSPROUT EQU $2A45
+__WEEPINBELL EQU $2A46
+__VICTREEBEL EQU $2A47
+__TENTACOOL EQU $2A48
+__TENTACRUEL EQU $2A49
+__GEODUDE EQU $2A4A
+__GRAVELER EQU $2A4B
+__GOLEM EQU $2A4C
+__PONYTA EQU $2A4D
+__RAPIDASH EQU $2A4E
+__SLOWPOKE EQU $2A4F
+__SLOWBRO EQU $2A50
+__MAGNEMITE EQU $2A51
+__MAGNETON EQU $2A52
+__FARFETCH_D EQU $2A53
+__DODUO EQU $2A54
+__DODRIO EQU $2A55
+__SEEL EQU $2A56
+__DEWGONG EQU $2A57
+__GRIMER EQU $2A58
+__MUK EQU $2A59
+__SHELLDER EQU $2A5A
+__CLOYSTER EQU $2A5B
+__GASTLY EQU $2A5C
+__HAUNTER EQU $2A5D
+__GENGAR EQU $2A5E
+__ONIX EQU $2A5F
+__DROWZEE EQU $2A60
+__HYPNO EQU $2A61
+__KRABBY EQU $2A62
+__KINGLER EQU $2A63
+__VOLTORB EQU $2A64
+__ELECTRODE EQU $2A65
+__EXEGGCUTE EQU $2A66
+__EXEGGUTOR EQU $2A67
+__CUBONE EQU $2A68
+__MAROWAK EQU $2A69
+__HITMONLEE EQU $2A6A
+__HITMONCHAN EQU $2A6B
+__LICKITUNG EQU $2A6C
+__KOFFING EQU $2A6D
+__WEEZING EQU $2A6E
+__RHYHORN EQU $2A6F
+__RHYDON EQU $2A70
+__CHANSEY EQU $2A71
+__TANGELA EQU $2A72
+__KANGASKHAN EQU $2A73
+__HORSEA EQU $2A74
+__SEADRA EQU $2A75
+__GOLDEEN EQU $2A76
+__SEAKING EQU $2A77
+__STARYU EQU $2A78
+__STARMIE EQU $2A79
+__MR_MIME EQU $2A7A
+__SCYTHER EQU $2A7B
+__JYNX EQU $2A7C
+__ELECTABUZZ EQU $2A7D
+__MAGMAR EQU $2A7E
+__PINSIR EQU $2A7F
+__TAUROS EQU $2A80
+__MAGIKARP EQU $2A81
+__GYARADOS EQU $2A82
+__LAPRAS EQU $2A83
+__DITTO EQU $2A84
+__EEVEE EQU $2A85
+__VAPOREON EQU $2A86
+__JOLTEON EQU $2A87
+__FLAREON EQU $2A88
+__PORYGON EQU $2A89
+__OMANYTE EQU $2A8A
+__OMASTAR EQU $2A8B
+__KABUTO EQU $2A8C
+__KABUTOPS EQU $2A8D
+__AERODACTYL EQU $2A8E
+__SNORLAX EQU $2A8F
+__ARTICUNO EQU $2A90
+__ZAPDOS EQU $2A91
+__MOLTRES EQU $2A92
+__DRATINI EQU $2A93
+__DRAGONAIR EQU $2A94
+__DRAGONITE EQU $2A95
+__MEWTWO EQU $2A96
+__MEW EQU $2A97
+__CHIKORITA EQU $2A98
+__BAYLEEF EQU $2A99
+__MEGANIUM EQU $2A9A
+__CYNDAQUIL EQU $2A9B
+__QUILAVA EQU $2A9C
+__TYPHLOSION EQU $2A9D
+__TOTODILE EQU $2A9E
+__CROCONAW EQU $2A9F
+__FERALIGATR EQU $2AA0
+__SENTRET EQU $2AA1
+__FURRET EQU $2AA2
+__HOOTHOOT EQU $2AA3
+__NOCTOWL EQU $2AA4
+__LEDYBA EQU $2AA5
+__LEDIAN EQU $2AA6
+__SPINARAK EQU $2AA7
+__ARIADOS EQU $2AA8
+__CROBAT EQU $2AA9
+__CHINCHOU EQU $2AAA
+__LANTURN EQU $2AAB
+__PICHU EQU $2AAC
+__CLEFFA EQU $2AAD
+__IGGLYBUFF EQU $2AAE
+__TOGEPI EQU $2AAF
+__TOGETIC EQU $2AB0
+__NATU EQU $2AB1
+__XATU EQU $2AB2
+__MAREEP EQU $2AB3
+__FLAAFFY EQU $2AB4
+__AMPHAROS EQU $2AB5
+__BELLOSSOM EQU $2AB6
+__MARILL EQU $2AB7
+__AZUMARILL EQU $2AB8
+__SUDOWOODO EQU $2AB9
+__POLITOED EQU $2ABA
+__HOPPIP EQU $2ABB
+__SKIPLOOM EQU $2ABC
+__JUMPLUFF EQU $2ABD
+__AIPOM EQU $2ABE
+__SUNKERN EQU $2ABF
+__SUNFLORA EQU $2AC0
+__YANMA EQU $2AC1
+__WOOPER EQU $2AC2
+__QUAGSIRE EQU $2AC3
+__ESPEON EQU $2AC4
+__UMBREON EQU $2AC5
+__MURKROW EQU $2AC6
+__SLOWKING EQU $2AC7
+__MISDREAVUS EQU $2AC8
+__UNOWN EQU $2AC9
+__WOBBUFFET EQU $2ACA
+__GIRAFARIG EQU $2ACB
+__PINECO EQU $2ACC
+__FORRETRESS EQU $2ACD
+__DUNSPARCE EQU $2ACE
+__GLIGAR EQU $2ACF
+__STEELIX EQU $2AD0
+__SNUBBULL EQU $2AD1
+__GRANBULL EQU $2AD2
+__QWILFISH EQU $2AD3
+__SCIZOR EQU $2AD4
+__SHUCKLE EQU $2AD5
+__HERACROSS EQU $2AD6
+__SNEASEL EQU $2AD7
+__TEDDIURSA EQU $2AD8
+__URSARING EQU $2AD9
+__SLUGMA EQU $2ADA
+__MAGCARGO EQU $2ADB
+__SWINUB EQU $2ADC
+__PILOSWINE EQU $2ADD
+__CORSOLA EQU $2ADE
+__REMORAID EQU $2ADF
+__OCTILLERY EQU $2AE0
+__DELIBIRD EQU $2AE1
+__MANTINE EQU $2AE2
+__SKARMORY EQU $2AE3
+__HOUNDOUR EQU $2AE4
+__HOUNDOOM EQU $2AE5
+__KINGDRA EQU $2AE6
+__PHANPY EQU $2AE7
+__DONPHAN EQU $2AE8
+__PORYGON2 EQU $2AE9
+__STANTLER EQU $2AEA
+__SMEARGLE EQU $2AEB
+__TYROGUE EQU $2AEC
+__HITMONTOP EQU $2AED
+__SMOOCHUM EQU $2AEE
+__ELEKID EQU $2AEF
+__MAGBY EQU $2AF0
+__MILTANK EQU $2AF1
+__BLISSEY EQU $2AF2
+__RAIKOU EQU $2AF3
+__ENTEI EQU $2AF4
+__SUICUNE EQU $2AF5
+__LARVITAR EQU $2AF6
+__PUPITAR EQU $2AF7
+__TYRANITAR EQU $2AF8
+__LUGIA EQU $2AF9
+__HO_OH EQU $2AFA
+__CELEBI EQU $2AFB
+
+BLANK EQU $FFFF \ No newline at end of file
diff --git a/constants/easychat.ods b/constants/easychat.ods
new file mode 100644
index 0000000..9d7f7c6
--- /dev/null
+++ b/constants/easychat.ods
Binary files differ
diff --git a/constants/items.asm b/constants/items.asm
new file mode 100644
index 0000000..edb298a
--- /dev/null
+++ b/constants/items.asm
@@ -0,0 +1,323 @@
+MASTER_BALL EQU $001
+ULTRA_BALL EQU $002
+GREAT_BALL EQU $003
+POKE_BALL EQU $004
+SAFARI_BALL EQU $005
+NET_BALL EQU $006
+DIVE_BALL EQU $007
+NEST_BALL EQU $008
+REPEAT_BALL EQU $009
+TIMER_BALL EQU $00A
+LUXURY_BALL EQU $00B
+PREMIER_BALL EQU $00C
+POTION EQU $00D
+ANTIDOTE EQU $00E
+BURN_HEAL EQU $00F
+ICE_HEAL EQU $010
+AWAKENING EQU $011
+PARLYZ_HEAL EQU $012
+FULL_RESTORE EQU $013
+MAX_POTION EQU $014
+HYPER_POTION EQU $015
+SUPER_POTION EQU $016
+FULL_HEAL EQU $017
+REVIVE EQU $018
+MAX_REVIVE EQU $019
+FRESH_WATER EQU $01A
+SODA_POP EQU $01B
+LEMONADE EQU $01C
+MOOMOO_MILK EQU $01D
+ENERGYPOWDER EQU $01E
+ENERGY_ROOT EQU $01F
+HEAL_POWDER EQU $020
+REVIVAL_HERB EQU $021
+ETHER EQU $022
+MAX_ETHER EQU $023
+ELIXIR EQU $024
+MAX_ELIXIR EQU $025
+LAVA_COOKIE EQU $026
+BLUE_FLUTE EQU $027
+YELLOW_FLUTE EQU $028
+RED_FLUTE EQU $029
+BLACK_FLUTE EQU $02A
+WHITE_FLUTE EQU $02B
+BERRY_JUICE EQU $02C
+SACRED_ASH EQU $02D
+SHOAL_SALT EQU $02E
+SHOAL_SHELL EQU $02F
+RED_SHARD EQU $030
+BLUE_SHARD EQU $031
+YELLOW_SHARD EQU $032
+GREEN_SHARD EQU $033
+
+HP_UP EQU $03F
+PROTEIN EQU $040
+IRON EQU $041
+CARBOS EQU $042
+CALCIUM EQU $043
+RARE_CANDY EQU $044
+PP_UP EQU $045
+ZINC EQU $046
+PP_MAX EQU $047
+
+GUARD_SPEC_ EQU $049 ; GUARD SPEC.
+DIRE_HIT EQU $04A
+X_ATTACK EQU $04B
+X_DEFEND EQU $04C
+X_SPEED EQU $04D
+X_ACCURACY EQU $04E
+X_SPECIAL EQU $04F
+POKE_DOLL EQU $050 ; POKé DOLL
+FLUFFY_TAIL EQU $051
+
+SUPER_REPEL EQU $053
+MAX_REPEL EQU $054
+ESCAPE_ROPE EQU $055
+REPEL EQU $056
+
+SUN_STONE EQU $05D
+MOON_STONE EQU $05E
+FIRE_STONE EQU $05F
+THUNDERSTONE EQU $060
+WATER_STONE EQU $061
+LEAF_STONE EQU $062
+
+TINYMUSHROOM EQU $067
+BIG_MUSHROOM EQU $068
+
+PEARL EQU $06A
+BIG_PEARL EQU $06B
+STARDUST EQU $06C
+STAR_PIECE EQU $06D
+NUGGET EQU $06E
+HEART_SCALE EQU $06F
+
+ORANGE_MAIL EQU $079
+HARBOR_MAIL EQU $07A
+GLITTER_MAIL EQU $07B
+MECH_MAIL EQU $07C
+WOOD_MAIL EQU $07D
+WAVE_MAIL EQU $07E
+BEAD_MAIL EQU $07F
+SHADOW_MAIL EQU $080
+TROPIC_MAIL EQU $081
+DREAM_MAIL EQU $082
+FAB_MAIL EQU $083
+RETRO_MAIL EQU $084
+CHERI_BERRY EQU $085
+CHESTO_BERRY EQU $086
+PECHA_BERRY EQU $087
+RAWST_BERRY EQU $088
+ASPEAR_BERRY EQU $089
+LEPPA_BERRY EQU $08A
+ORAN_BERRY EQU $08B
+PERSIM_BERRY EQU $08C
+LUM_BERRY EQU $08D
+SITRUS_BERRY EQU $08E
+FIGY_BERRY EQU $08F
+WIKI_BERRY EQU $090
+MAGO_BERRY EQU $091
+AGUAV_BERRY EQU $092
+IAPAPA_BERRY EQU $093
+RAZZ_BERRY EQU $094
+BLUK_BERRY EQU $095
+NANAB_BERRY EQU $096
+WEPEAR_BERRY EQU $097
+PINAP_BERRY EQU $098
+POMEG_BERRY EQU $099
+KELPSY_BERRY EQU $09A
+QUALOT_BERRY EQU $09B
+HONDEW_BERRY EQU $09C
+GREPA_BERRY EQU $09D
+TAMATO_BERRY EQU $09E
+CORNN_BERRY EQU $09F
+MAGOST_BERRY EQU $0A0
+RABUTA_BERRY EQU $0A1
+NOMEL_BERRY EQU $0A2
+SPELON_BERRY EQU $0A3
+PAMTRE_BERRY EQU $0A4
+WATMEL_BERRY EQU $0A5
+DURIN_BERRY EQU $0A6
+BELUE_BERRY EQU $0A7
+LIECHI_BERRY EQU $0A8
+GANLON_BERRY EQU $0A9
+SALAC_BERRY EQU $0AA
+PETAYA_BERRY EQU $0AB
+APICOT_BERRY EQU $0AC
+LANSAT_BERRY EQU $0AD
+STARF_BERRY EQU $0AE
+ENIGMA_BERRY EQU $0AF
+
+BRIGHTPOWDER EQU $0B3
+WHITE_HERB EQU $0B4
+MACHO_BRACE EQU $0B5
+EXP_SHARE EQU $0B6 ; EXP. SHARE
+QUICK_CLAW EQU $0B7
+SOOTHE_BELL EQU $0B8
+MENTAL_HERB EQU $0B9
+CHOICE_BAND EQU $0BA
+KING_S_ROCK EQU $0BB ; KING’S ROCK
+SILVERPOWDER EQU $0BC
+AMULET_COIN EQU $0BD
+CLEANSE_TAG EQU $0BE
+SOUL_DEW EQU $0BF
+DEEPSEATOOTH EQU $0C0
+DEEPSEASCALE EQU $0C1
+SMOKE_BALL EQU $0C2
+EVERSTONE EQU $0C3
+FOCUS_BAND EQU $0C4
+LUCKY_EGG EQU $0C5
+SCOPE_LENS EQU $0C6
+METAL_COAT EQU $0C7
+LEFTOVERS EQU $0C8
+DRAGON_SCALE EQU $0C9
+LIGHT_BALL EQU $0CA
+SOFT_SAND EQU $0CB
+HARD_STONE EQU $0CC
+MIRACLE_SEED EQU $0CD
+BLACKGLASSES EQU $0CE
+BLACK_BELT EQU $0CF
+MAGNET EQU $0D0
+MYSTIC_WATER EQU $0D1
+SHARP_BEAK EQU $0D2
+POISON_BARB EQU $0D3
+NEVERMELTICE EQU $0D4
+SPELL_TAG EQU $0D5
+TWISTEDSPOON EQU $0D6
+CHARCOAL EQU $0D7
+DRAGON_FANG EQU $0D8
+SILK_SCARF EQU $0D9
+UP_GRADE EQU $0DA ; UP-GRADE
+SHELL_BELL EQU $0DB
+SEA_INCENSE EQU $0DC
+LAX_INCENSE EQU $0DD
+LUCKY_PUNCH EQU $0DE
+METAL_POWDER EQU $0DF
+THICK_CLUB EQU $0E0
+STICK EQU $0E1
+
+RED_SCARF EQU $0FE
+BLUE_SCARF EQU $0FF
+PINK_SCARF EQU $100
+GREEN_SCARF EQU $101
+YELLOW_SCARF EQU $102
+MACH_BIKE EQU $103
+COIN_CASE EQU $104
+ITEMFINDER EQU $105
+OLD_ROD EQU $106
+GOOD_ROD EQU $107
+SUPER_ROD EQU $108
+S_S_TICKET EQU $109 ; S.S. TICKET
+CONTEST_PASS EQU $10A
+
+WAILMER_PAIL EQU $10C
+DEVON_GOODS EQU $10D
+SOOT_SACK EQU $10E
+BASEMENT_KEY EQU $10F
+ACRO_BIKE EQU $110
+POKEBLOCK_CASE EQU $111 ; \{POKéBLOCK} CASE
+LETTER EQU $112
+EON_TICKET EQU $113
+RED_ORB EQU $114
+BLUE_ORB EQU $115
+SCANNER EQU $116
+GO_GOGGLES EQU $117 ; GO-GOGGLES
+METEORITE EQU $118
+RM_1_KEY EQU $119 ; RM. 1 KEY
+RM_2_KEY EQU $11A ; RM. 2 KEY
+RM_4_KEY EQU $11B ; RM. 4 KEY
+RM_6_KEY EQU $11C ; RM. 6 KEY
+STORAGE_KEY EQU $11D
+ROOT_FOSSIL EQU $11E
+CLAW_FOSSIL EQU $11F
+DEVON_SCOPE EQU $120
+TM01 EQU $121
+TM02 EQU $122
+TM03 EQU $123
+TM04 EQU $124
+TM05 EQU $125
+TM06 EQU $126
+TM07 EQU $127
+TM08 EQU $128
+TM09 EQU $129
+TM10 EQU $12A
+TM11 EQU $12B
+TM12 EQU $12C
+TM13 EQU $12D
+TM14 EQU $12E
+TM15 EQU $12F
+TM16 EQU $130
+TM17 EQU $131
+TM18 EQU $132
+TM19 EQU $133
+TM20 EQU $134
+TM21 EQU $135
+TM22 EQU $136
+TM23 EQU $137
+TM24 EQU $138
+TM25 EQU $139
+TM26 EQU $13A
+TM27 EQU $13B
+TM28 EQU $13C
+TM29 EQU $13D
+TM30 EQU $13E
+TM31 EQU $13F
+TM32 EQU $140
+TM33 EQU $141
+TM34 EQU $142
+TM35 EQU $143
+TM36 EQU $144
+TM37 EQU $145
+TM38 EQU $146
+TM39 EQU $147
+TM40 EQU $148
+TM41 EQU $149
+TM42 EQU $14A
+TM43 EQU $14B
+TM44 EQU $14C
+TM45 EQU $14D
+TM46 EQU $14E
+TM47 EQU $14F
+TM48 EQU $150
+TM49 EQU $151
+TM50 EQU $152
+HM01 EQU $153
+HM02 EQU $154
+HM03 EQU $155
+HM04 EQU $156
+HM05 EQU $157
+HM06 EQU $158
+HM07 EQU $159
+HM08 EQU $15A
+
+; FireRed/LeafGreen/Emerald
+OAK_S_PARCEL EQU $15D ; OAK’S PARCEL
+POKE_FLUTE EQU $15E ; POKé FLUTE
+SECRET_KEY EQU $15F
+BIKE_VOUCHER EQU $160
+GOLD_TEETH EQU $161
+OLD_AMBER EQU $162
+CARD_KEY EQU $163
+LIFT_KEY EQU $164
+DOME_FOSSIL EQU $165
+HELIX_FOSSIL EQU $166
+SILPH_SCOPE EQU $167
+BICYCLE EQU $168
+TOWN_MAP EQU $169
+VS_SEEKER EQU $16A ; VS. SEEKER
+FAME_CHECKER EQU $16B
+TM_CASE EQU $16C
+BERRY_POUCH EQU $16D
+TEACHY_TV EQU $16E
+TRI_PASS EQU $16F ; TRI-PASS
+RAINBOW_PASS EQU $170
+TEA EQU $171
+MYSTICTICKET EQU $172
+AURORATICKET EQU $173
+POWDER_JAR EQU $174
+RUBY EQU $175
+SAPPHIRE EQU $176
+
+; Emerald
+MAGMA_EMBLEM EQU $177
+OLD_SEA_MAP EQU $178 \ No newline at end of file
diff --git a/constants/moves.asm b/constants/moves.asm
new file mode 100644
index 0000000..c616f5b
--- /dev/null
+++ b/constants/moves.asm
@@ -0,0 +1,356 @@
+POUND EQU $001
+KARATE_CHOP EQU $002
+DOUBLESLAP EQU $003
+COMET_PUNCH EQU $004
+MEGA_PUNCH EQU $005
+PAY_DAY EQU $006
+FIRE_PUNCH EQU $007
+ICE_PUNCH EQU $008
+THUNDERPUNCH EQU $009
+SCRATCH EQU $00A
+VICEGRIP EQU $00B
+GUILLOTINE EQU $00C
+RAZOR_WIND EQU $00D
+SWORDS_DANCE EQU $00E
+CUT EQU $00F
+GUST EQU $010
+WING_ATTACK EQU $011
+WHIRLWIND EQU $012
+FLY EQU $013
+BIND EQU $014
+SLAM EQU $015
+VINE_WHIP EQU $016
+STOMP EQU $017
+DOUBLE_KICK EQU $018
+MEGA_KICK EQU $019
+JUMP_KICK EQU $01A
+ROLLING_KICK EQU $01B
+SAND_ATTACK EQU $01C
+HEADBUTT EQU $01D
+HORN_ATTACK EQU $01E
+FURY_ATTACK EQU $01F
+HORN_DRILL EQU $020
+TACKLE EQU $021
+BODY_SLAM EQU $022
+WRAP EQU $023
+TAKE_DOWN EQU $024
+THRASH EQU $025
+DOUBLE_EDGE EQU $026 ; DOUBLE-EDGE
+TAIL_WHIP EQU $027
+POISON_STING EQU $028
+TWINEEDLE EQU $029
+PIN_MISSILE EQU $02A
+LEER EQU $02B
+BITE EQU $02C
+GROWL EQU $02D
+ROAR EQU $02E
+SING EQU $02F
+SUPERSONIC EQU $030
+SONICBOOM EQU $031
+DISABLE EQU $032
+ACID EQU $033
+EMBER EQU $034
+FLAMETHROWER EQU $035
+MIST EQU $036
+WATER_GUN EQU $037
+HYDRO_PUMP EQU $038
+SURF EQU $039
+ICE_BEAM EQU $03A
+BLIZZARD EQU $03B
+PSYBEAM EQU $03C
+BUBBLEBEAM EQU $03D
+AURORA_BEAM EQU $03E
+HYPER_BEAM EQU $03F
+PECK EQU $040
+DRILL_PECK EQU $041
+SUBMISSION EQU $042
+LOW_KICK EQU $043
+COUNTER EQU $044
+SEISMIC_TOSS EQU $045
+STRENGTH EQU $046
+ABSORB EQU $047
+MEGA_DRAIN EQU $048
+LEECH_SEED EQU $049
+GROWTH EQU $04A
+RAZOR_LEAF EQU $04B
+SOLARBEAM EQU $04C
+POISONPOWDER EQU $04D
+STUN_SPORE EQU $04E
+SLEEP_POWDER EQU $04F
+PETAL_DANCE EQU $050
+STRING_SHOT EQU $051
+DRAGON_RAGE EQU $052
+FIRE_SPIN EQU $053
+THUNDERSHOCK EQU $054
+THUNDERBOLT EQU $055
+THUNDER_WAVE EQU $056
+THUNDER EQU $057
+ROCK_THROW EQU $058
+EARTHQUAKE EQU $059
+FISSURE EQU $05A
+DIG EQU $05B
+TOXIC EQU $05C
+CONFUSION EQU $05D
+PSYCHIC EQU $05E
+HYPNOSIS EQU $05F
+MEDITATE EQU $060
+AGILITY EQU $061
+QUICK_ATTACK EQU $062
+RAGE EQU $063
+TELEPORT EQU $064
+NIGHT_SHADE EQU $065
+MIMIC EQU $066
+SCREECH EQU $067
+DOUBLE_TEAM EQU $068
+RECOVER EQU $069
+HARDEN EQU $06A
+MINIMIZE EQU $06B
+SMOKESCREEN EQU $06C
+CONFUSE_RAY EQU $06D
+WITHDRAW EQU $06E
+DEFENSE_CURL EQU $06F
+BARRIER EQU $070
+LIGHT_SCREEN EQU $071
+HAZE EQU $072
+REFLECT EQU $073
+FOCUS_ENERGY EQU $074
+BIDE EQU $075
+METRONOME EQU $076
+MIRROR_MOVE EQU $077
+SELFDESTRUCT EQU $078
+EGG_BOMB EQU $079
+LICK EQU $07A
+SMOG EQU $07B
+SLUDGE EQU $07C
+BONE_CLUB EQU $07D
+FIRE_BLAST EQU $07E
+WATERFALL EQU $07F
+CLAMP EQU $080
+SWIFT EQU $081
+SKULL_BASH EQU $082
+SPIKE_CANNON EQU $083
+CONSTRICT EQU $084
+AMNESIA EQU $085
+KINESIS EQU $086
+SOFTBOILED EQU $087
+HI_JUMP_KICK EQU $088
+GLARE EQU $089
+DREAM_EATER EQU $08A
+POISON_GAS EQU $08B
+BARRAGE EQU $08C
+LEECH_LIFE EQU $08D
+LOVELY_KISS EQU $08E
+SKY_ATTACK EQU $08F
+TRANSFORM EQU $090
+BUBBLE EQU $091
+DIZZY_PUNCH EQU $092
+SPORE EQU $093
+FLASH EQU $094
+PSYWAVE EQU $095
+SPLASH EQU $096
+ACID_ARMOR EQU $097
+CRABHAMMER EQU $098
+EXPLOSION EQU $099
+FURY_SWIPES EQU $09A
+BONEMERANG EQU $09B
+REST EQU $09C
+ROCK_SLIDE EQU $09D
+HYPER_FANG EQU $09E
+SHARPEN EQU $09F
+CONVERSION EQU $0A0
+TRI_ATTACK EQU $0A1
+SUPER_FANG EQU $0A2
+SLASH EQU $0A3
+SUBSTITUTE EQU $0A4
+STRUGGLE EQU $0A5
+
+SKETCH EQU $0A6
+TRIPLE_KICK EQU $0A7
+THIEF EQU $0A8
+SPIDER_WEB EQU $0A9
+MIND_READER EQU $0AA
+NIGHTMARE EQU $0AB
+FLAME_WHEEL EQU $0AC
+SNORE EQU $0AD
+CURSE EQU $0AE
+FLAIL EQU $0AF
+CONVERSION_2 EQU $0B0
+AEROBLAST EQU $0B1
+COTTON_SPORE EQU $0B2
+REVERSAL EQU $0B3
+SPITE EQU $0B4
+POWDER_SNOW EQU $0B5
+PROTECT EQU $0B6
+MACH_PUNCH EQU $0B7
+SCARY_FACE EQU $0B8
+FAINT_ATTACK EQU $0B9
+SWEET_KISS EQU $0BA
+BELLY_DRUM EQU $0BB
+SLUDGE_BOMB EQU $0BC
+MUD_SLAP EQU $0BD ; MUD-SLAP
+OCTAZOOKA EQU $0BE
+SPIKES EQU $0BF
+ZAP_CANNON EQU $0C0
+FORESIGHT EQU $0C1
+DESTINY_BOND EQU $0C2
+PERISH_SONG EQU $0C3
+ICY_WIND EQU $0C4
+DETECT EQU $0C5
+BONE_RUSH EQU $0C6
+LOCK_ON EQU $0C7 ; LOCK-ON
+OUTRAGE EQU $0C8
+SANDSTORM EQU $0C9
+GIGA_DRAIN EQU $0CA
+ENDURE EQU $0CB
+CHARM EQU $0CC
+ROLLOUT EQU $0CD
+FALSE_SWIPE EQU $0CE
+SWAGGER EQU $0CF
+MILK_DRINK EQU $0D0
+SPARK EQU $0D1
+FURY_CUTTER EQU $0D2
+STEEL_WING EQU $0D3
+MEAN_LOOK EQU $0D4
+ATTRACT EQU $0D5
+SLEEP_TALK EQU $0D6
+HEAL_BELL EQU $0D7
+RETURN EQU $0D8
+PRESENT EQU $0D9
+FRUSTRATION EQU $0DA
+SAFEGUARD EQU $0DB
+PAIN_SPLIT EQU $0DC
+SACRED_FIRE EQU $0DD
+MAGNITUDE EQU $0DE
+DYNAMICPUNCH EQU $0DF
+MEGAHORN EQU $0E0
+DRAGONBREATH EQU $0E1
+BATON_PASS EQU $0E2
+ENCORE EQU $0E3
+PURSUIT EQU $0E4
+RAPID_SPIN EQU $0E5
+SWEET_SCENT EQU $0E6
+IRON_TAIL EQU $0E7
+METAL_CLAW EQU $0E8
+VITAL_THROW EQU $0E9
+MORNING_SUN EQU $0EA
+SYNTHESIS EQU $0EB
+MOONLIGHT EQU $0EC
+HIDDEN_POWER EQU $0ED
+CROSS_CHOP EQU $0EE
+TWISTER EQU $0EF
+RAIN_DANCE EQU $0F0
+SUNNY_DAY EQU $0F1
+CRUNCH EQU $0F2
+MIRROR_COAT EQU $0F3
+PSYCH_UP EQU $0F4
+EXTREMESPEED EQU $0F5
+ANCIENTPOWER EQU $0F6
+SHADOW_BALL EQU $0F7
+FUTURE_SIGHT EQU $0F8
+ROCK_SMASH EQU $0F9
+WHIRLPOOL EQU $0FA
+BEAT_UP EQU $0FB
+
+FAKE_OUT EQU $0FC
+UPROAR EQU $0FD
+STOCKPILE EQU $0FE
+SPIT_UP EQU $0FF
+SWALLOW EQU $100
+HEAT_WAVE EQU $101
+HAIL EQU $102
+TORMENT EQU $103
+FLATTER EQU $104
+WILL_O_WISP EQU $105 ; WILL-O-WISP
+MEMENTO EQU $106
+FACADE EQU $107
+FOCUS_PUNCH EQU $108
+SMELLINGSALT EQU $109
+FOLLOW_ME EQU $10A
+NATURE_POWER EQU $10B
+CHARGE EQU $10C
+TAUNT EQU $10D
+HELPING_HAND EQU $10E
+TRICK EQU $10F
+ROLE_PLAY EQU $110
+WISH EQU $111
+ASSIST EQU $112
+INGRAIN EQU $113
+SUPERPOWER EQU $114
+MAGIC_COAT EQU $115
+RECYCLE EQU $116
+REVENGE EQU $117
+BRICK_BREAK EQU $118
+YAWN EQU $119
+KNOCK_OFF EQU $11A
+ENDEAVOR EQU $11B
+ERUPTION EQU $11C
+SKILL_SWAP EQU $11D
+IMPRISON EQU $11E
+REFRESH EQU $11F
+GRUDGE EQU $120
+SNATCH EQU $121
+SECRET_POWER EQU $122
+DIVE EQU $123
+ARM_THRUST EQU $124
+CAMOUFLAGE EQU $125
+TAIL_GLOW EQU $126
+LUSTER_PURGE EQU $127
+MIST_BALL EQU $128
+FEATHERDANCE EQU $129
+TEETER_DANCE EQU $12A
+BLAZE_KICK EQU $12B
+MUD_SPORT EQU $12C
+ICE_BALL EQU $12D
+NEEDLE_ARM EQU $12E
+SLACK_OFF EQU $12F
+HYPER_VOICE EQU $130
+POISON_FANG EQU $131
+CRUSH_CLAW EQU $132
+BLAST_BURN EQU $133
+HYDRO_CANNON EQU $134
+METEOR_MASH EQU $135
+ASTONISH EQU $136
+WEATHER_BALL EQU $137
+AROMATHERAPY EQU $138
+FAKE_TEARS EQU $139
+AIR_CUTTER EQU $13A
+OVERHEAT EQU $13B
+ODOR_SLEUTH EQU $13C
+ROCK_TOMB EQU $13D
+SILVER_WIND EQU $13E
+METAL_SOUND EQU $13F
+GRASSWHISTLE EQU $140
+TICKLE EQU $141
+COSMIC_POWER EQU $142
+WATER_SPOUT EQU $143
+SIGNAL_BEAM EQU $144
+SHADOW_PUNCH EQU $145
+EXTRASENSORY EQU $146
+SKY_UPPERCUT EQU $147
+SAND_TOMB EQU $148
+SHEER_COLD EQU $149
+MUDDY_WATER EQU $14A
+BULLET_SEED EQU $14B
+AERIAL_ACE EQU $14C
+ICICLE_SPEAR EQU $14D
+IRON_DEFENSE EQU $14E
+BLOCK EQU $14F
+HOWL EQU $150
+DRAGON_CLAW EQU $151
+FRENZY_PLANT EQU $152
+BULK_UP EQU $153
+BOUNCE EQU $154
+MUD_SHOT EQU $155
+POISON_TAIL EQU $156
+COVET EQU $157
+VOLT_TACKLE EQU $158
+MAGICAL_LEAF EQU $159
+WATER_SPORT EQU $15A
+CALM_MIND EQU $15B
+LEAF_BLADE EQU $15C
+DRAGON_DANCE EQU $15D
+ROCK_BLAST EQU $15E
+SHOCK_WAVE EQU $15F
+WATER_PULSE EQU $160
+DOOM_DESIRE EQU $161
+PSYCHO_BOOST EQU $162
diff --git a/constants/pokemon.asm b/constants/pokemon.asm
new file mode 100644
index 0000000..93c75b8
--- /dev/null
+++ b/constants/pokemon.asm
@@ -0,0 +1,388 @@
+BULBASAUR EQU $001
+IVYSAUR EQU $002
+VENUSAUR EQU $003
+CHARMANDER EQU $004
+CHARMELEON EQU $005
+CHARIZARD EQU $006
+SQUIRTLE EQU $007
+WARTORTLE EQU $008
+BLASTOISE EQU $009
+CATERPIE EQU $00A
+METAPOD EQU $00B
+BUTTERFREE EQU $00C
+WEEDLE EQU $00D
+KAKUNA EQU $00E
+BEEDRILL EQU $00F
+PIDGEY EQU $010
+PIDGEOTTO EQU $011
+PIDGEOT EQU $012
+RATTATA EQU $013
+RATICATE EQU $014
+SPEAROW EQU $015
+FEAROW EQU $016
+EKANS EQU $017
+ARBOK EQU $018
+PIKACHU EQU $019
+RAICHU EQU $01A
+SANDSHREW EQU $01B
+SANDSLASH EQU $01C
+NIDORAN_F EQU $01D ; NIDORAN♀
+NIDORINA EQU $01E
+NIDOQUEEN EQU $01F
+NIDORAN_M EQU $020 ; NIDORAN♂
+NIDORINO EQU $021
+NIDOKING EQU $022
+CLEFAIRY EQU $023
+CLEFABLE EQU $024
+VULPIX EQU $025
+NINETALES EQU $026
+JIGGLYPUFF EQU $027
+WIGGLYTUFF EQU $028
+ZUBAT EQU $029
+GOLBAT EQU $02A
+ODDISH EQU $02B
+GLOOM EQU $02C
+VILEPLUME EQU $02D
+PARAS EQU $02E
+PARASECT EQU $02F
+VENONAT EQU $030
+VENOMOTH EQU $031
+DIGLETT EQU $032
+DUGTRIO EQU $033
+MEOWTH EQU $034
+PERSIAN EQU $035
+PSYDUCK EQU $036
+GOLDUCK EQU $037
+MANKEY EQU $038
+PRIMEAPE EQU $039
+GROWLITHE EQU $03A
+ARCANINE EQU $03B
+POLIWAG EQU $03C
+POLIWHIRL EQU $03D
+POLIWRATH EQU $03E
+ABRA EQU $03F
+KADABRA EQU $040
+ALAKAZAM EQU $041
+MACHOP EQU $042
+MACHOKE EQU $043
+MACHAMP EQU $044
+BELLSPROUT EQU $045
+WEEPINBELL EQU $046
+VICTREEBEL EQU $047
+TENTACOOL EQU $048
+TENTACRUEL EQU $049
+GEODUDE EQU $04A
+GRAVELER EQU $04B
+GOLEM EQU $04C
+PONYTA EQU $04D
+RAPIDASH EQU $04E
+SLOWPOKE EQU $04F
+SLOWBRO EQU $050
+MAGNEMITE EQU $051
+MAGNETON EQU $052
+FARFETCH_D EQU $053 ; FARFETCH’D
+DODUO EQU $054
+DODRIO EQU $055
+SEEL EQU $056
+DEWGONG EQU $057
+GRIMER EQU $058
+MUK EQU $059
+SHELLDER EQU $05A
+CLOYSTER EQU $05B
+GASTLY EQU $05C
+HAUNTER EQU $05D
+GENGAR EQU $05E
+ONIX EQU $05F
+DROWZEE EQU $060
+HYPNO EQU $061
+KRABBY EQU $062
+KINGLER EQU $063
+VOLTORB EQU $064
+ELECTRODE EQU $065
+EXEGGCUTE EQU $066
+EXEGGUTOR EQU $067
+CUBONE EQU $068
+MAROWAK EQU $069
+HITMONLEE EQU $06A
+HITMONCHAN EQU $06B
+LICKITUNG EQU $06C
+KOFFING EQU $06D
+WEEZING EQU $06E
+RHYHORN EQU $06F
+RHYDON EQU $070
+CHANSEY EQU $071
+TANGELA EQU $072
+KANGASKHAN EQU $073
+HORSEA EQU $074
+SEADRA EQU $075
+GOLDEEN EQU $076
+SEAKING EQU $077
+STARYU EQU $078
+STARMIE EQU $079
+MR_MIME EQU $07A ; MR. MIME
+SCYTHER EQU $07B
+JYNX EQU $07C
+ELECTABUZZ EQU $07D
+MAGMAR EQU $07E
+PINSIR EQU $07F
+TAUROS EQU $080
+MAGIKARP EQU $081
+GYARADOS EQU $082
+LAPRAS EQU $083
+DITTO EQU $084
+EEVEE EQU $085
+VAPOREON EQU $086
+JOLTEON EQU $087
+FLAREON EQU $088
+PORYGON EQU $089
+OMANYTE EQU $08A
+OMASTAR EQU $08B
+KABUTO EQU $08C
+KABUTOPS EQU $08D
+AERODACTYL EQU $08E
+SNORLAX EQU $08F
+ARTICUNO EQU $090
+ZAPDOS EQU $091
+MOLTRES EQU $092
+DRATINI EQU $093
+DRAGONAIR EQU $094
+DRAGONITE EQU $095
+MEWTWO EQU $096
+MEW EQU $097
+
+CHIKORITA EQU $098
+BAYLEEF EQU $099
+MEGANIUM EQU $09A
+CYNDAQUIL EQU $09B
+QUILAVA EQU $09C
+TYPHLOSION EQU $09D
+TOTODILE EQU $09E
+CROCONAW EQU $09F
+FERALIGATR EQU $0A0
+SENTRET EQU $0A1
+FURRET EQU $0A2
+HOOTHOOT EQU $0A3
+NOCTOWL EQU $0A4
+LEDYBA EQU $0A5
+LEDIAN EQU $0A6
+SPINARAK EQU $0A7
+ARIADOS EQU $0A8
+CROBAT EQU $0A9
+CHINCHOU EQU $0AA
+LANTURN EQU $0AB
+PICHU EQU $0AC
+CLEFFA EQU $0AD
+IGGLYBUFF EQU $0AE
+TOGEPI EQU $0AF
+TOGETIC EQU $0B0
+NATU EQU $0B1
+XATU EQU $0B2
+MAREEP EQU $0B3
+FLAAFFY EQU $0B4
+AMPHAROS EQU $0B5
+BELLOSSOM EQU $0B6
+MARILL EQU $0B7
+AZUMARILL EQU $0B8
+SUDOWOODO EQU $0B9
+POLITOED EQU $0BA
+HOPPIP EQU $0BB
+SKIPLOOM EQU $0BC
+JUMPLUFF EQU $0BD
+AIPOM EQU $0BE
+SUNKERN EQU $0BF
+SUNFLORA EQU $0C0
+YANMA EQU $0C1
+WOOPER EQU $0C2
+QUAGSIRE EQU $0C3
+ESPEON EQU $0C4
+UMBREON EQU $0C5
+MURKROW EQU $0C6
+SLOWKING EQU $0C7
+MISDREAVUS EQU $0C8
+UNOWN EQU $0C9
+WOBBUFFET EQU $0CA
+GIRAFARIG EQU $0CB
+PINECO EQU $0CC
+FORRETRESS EQU $0CD
+DUNSPARCE EQU $0CE
+GLIGAR EQU $0CF
+STEELIX EQU $0D0
+SNUBBULL EQU $0D1
+GRANBULL EQU $0D2
+QWILFISH EQU $0D3
+SCIZOR EQU $0D4
+SHUCKLE EQU $0D5
+HERACROSS EQU $0D6
+SNEASEL EQU $0D7
+TEDDIURSA EQU $0D8
+URSARING EQU $0D9
+SLUGMA EQU $0DA
+MAGCARGO EQU $0DB
+SWINUB EQU $0DC
+PILOSWINE EQU $0DD
+CORSOLA EQU $0DE
+REMORAID EQU $0DF
+OCTILLERY EQU $0E0
+DELIBIRD EQU $0E1
+MANTINE EQU $0E2
+SKARMORY EQU $0E3
+HOUNDOUR EQU $0E4
+HOUNDOOM EQU $0E5
+KINGDRA EQU $0E6
+PHANPY EQU $0E7
+DONPHAN EQU $0E8
+PORYGON2 EQU $0E9
+STANTLER EQU $0EA
+SMEARGLE EQU $0EB
+TYROGUE EQU $0EC
+HITMONTOP EQU $0ED
+SMOOCHUM EQU $0EE
+ELEKID EQU $0EF
+MAGBY EQU $0F0
+MILTANK EQU $0F1
+BLISSEY EQU $0F2
+RAIKOU EQU $0F3
+ENTEI EQU $0F4
+SUICUNE EQU $0F5
+LARVITAR EQU $0F6
+PUPITAR EQU $0F7
+TYRANITAR EQU $0F8
+LUGIA EQU $0F9
+HO_OH EQU $0FA ; HO-OH
+CELEBI EQU $0FB
+
+TREECKO EQU $115
+GROVYLE EQU $116
+SCEPTILE EQU $117
+TORCHIC EQU $118
+COMBUSKEN EQU $119
+BLAZIKEN EQU $11A
+MUDKIP EQU $11B
+MARSHTOMP EQU $11C
+SWAMPERT EQU $11D
+POOCHYENA EQU $11E
+MIGHTYENA EQU $11F
+ZIGZAGOON EQU $120
+LINOONE EQU $121
+WURMPLE EQU $122
+SILCOON EQU $123
+BEAUTIFLY EQU $124
+CASCOON EQU $125
+DUSTOX EQU $126
+LOTAD EQU $127
+LOMBRE EQU $128
+LUDICOLO EQU $129
+SEEDOT EQU $12A
+NUZLEAF EQU $12B
+SHIFTRY EQU $12C
+NINCADA EQU $12D
+NINJASK EQU $12E
+SHEDINJA EQU $12F
+TAILLOW EQU $130
+SWELLOW EQU $131
+SHROOMISH EQU $132
+BRELOOM EQU $133
+SPINDA EQU $134
+WINGULL EQU $135
+PELIPPER EQU $136
+SURSKIT EQU $137
+MASQUERAIN EQU $138
+WAILMER EQU $139
+WAILORD EQU $13A
+SKITTY EQU $13B
+DELCATTY EQU $13C
+KECLEON EQU $13D
+BALTOY EQU $13E
+CLAYDOL EQU $13F
+NOSEPASS EQU $140
+TORKOAL EQU $141
+SABLEYE EQU $142
+BARBOACH EQU $143
+WHISCASH EQU $144
+LUVDISC EQU $145
+CORPHISH EQU $146
+CRAWDAUNT EQU $147
+FEEBAS EQU $148
+MILOTIC EQU $149
+CARVANHA EQU $14A
+SHARPEDO EQU $14B
+TRAPINCH EQU $14C
+VIBRAVA EQU $14D
+FLYGON EQU $14E
+MAKUHITA EQU $14F
+HARIYAMA EQU $150
+ELECTRIKE EQU $151
+MANECTRIC EQU $152
+NUMEL EQU $153
+CAMERUPT EQU $154
+SPHEAL EQU $155
+SEALEO EQU $156
+WALREIN EQU $157
+CACNEA EQU $158
+CACTURNE EQU $159
+SNORUNT EQU $15A
+GLALIE EQU $15B
+LUNATONE EQU $15C
+SOLROCK EQU $15D
+AZURILL EQU $15E
+SPOINK EQU $15F
+GRUMPIG EQU $160
+PLUSLE EQU $161
+MINUN EQU $162
+MAWILE EQU $163
+MEDITITE EQU $164
+MEDICHAM EQU $165
+SWABLU EQU $166
+ALTARIA EQU $167
+WYNAUT EQU $168
+DUSKULL EQU $169
+DUSCLOPS EQU $16A
+ROSELIA EQU $16B
+SLAKOTH EQU $16C
+VIGOROTH EQU $16D
+SLAKING EQU $16E
+GULPIN EQU $16F
+SWALOT EQU $170
+TROPIUS EQU $171
+WHISMUR EQU $172
+LOUDRED EQU $173
+EXPLOUD EQU $174
+CLAMPERL EQU $175
+HUNTAIL EQU $176
+GOREBYSS EQU $177
+ABSOL EQU $178
+SHUPPET EQU $179
+BANETTE EQU $17A
+SEVIPER EQU $17B
+ZANGOOSE EQU $17C
+RELICANTH EQU $17D
+ARON EQU $17E
+LAIRON EQU $17F
+AGGRON EQU $180
+CASTFORM EQU $181
+VOLBEAT EQU $182
+ILLUMISE EQU $183
+LILEEP EQU $184
+CRADILY EQU $185
+ANORITH EQU $186
+ARMALDO EQU $187
+RALTS EQU $188
+KIRLIA EQU $189
+GARDEVOIR EQU $18A
+BAGON EQU $18B
+SHELGON EQU $18C
+SALAMENCE EQU $18D
+BELDUM EQU $18E
+METANG EQU $18F
+METAGROSS EQU $190
+REGIROCK EQU $191
+REGICE EQU $192
+REGISTEEL EQU $193
+KYOGRE EQU $194
+GROUDON EQU $195
+RAYQUAZA EQU $196
+LATIAS EQU $197
+LATIOS EQU $198
+JIRACHI EQU $199
+DEOXYS EQU $19A
+CHIMECHO EQU $19B
diff --git a/constants/scriptcommands.asm b/constants/scriptcommands.asm
new file mode 100644
index 0000000..a450929
--- /dev/null
+++ b/constants/scriptcommands.asm
@@ -0,0 +1,73 @@
+LASTRESULT EQU $800D
+end: MACRO
+ db $02
+ ENDM
+callstd: MACRO
+ db $09, \1
+ ENDM
+killscript: MACRO
+ db $0D
+ ENDM
+setbyte: MACRO
+ db $0E, \1
+ ENDM
+copyvarifnotzero: MACRO
+ db $1A
+ dw \1, \2
+ ENDM
+compare: MACRO
+ db $21
+ dw \1, \2
+ ENDM
+setflag: MACRO
+ db $29
+ dw \1
+ ENDM
+checkflag: MACRO
+ db $2B
+ dw \1
+ ENDM
+checkitemroom: MACRO
+ db $46
+ dw \1, \2
+ ENDM
+checkitem: MACRO
+ db $47
+ dw \1, \2
+ ENDM
+checkpcitem: MACRO
+ db $4A
+ dw \1, \2
+ ENDM
+faceplayer: MACRO
+ db $5A
+ ENDM
+waitmsg: MACRO
+ db $66
+ ENDM
+lock: MACRO
+ db $6A
+ ENDM
+release: MACRO
+ db $6C
+ ENDM
+waitkeypress: MACRO
+ db $6D
+ ENDM
+setvirtualaddress: MACRO
+ db $B8
+ GBAPTR ScriptBaseAddress, \1
+ ENDM
+virtualgotoif: MACRO
+ db $BB
+ db \1
+ GBAPTR ScriptBaseAddress, \2
+ ENDM
+virtualmsgbox: MACRO
+ db $BD
+ GBAPTR ScriptBaseAddress, \1
+ ENDM
+virtualloadpointer: MACRO
+ db $BE
+ GBAPTR ScriptBaseAddress, \1
+ ENDM \ No newline at end of file
diff --git a/constants/trainerclasses.asm b/constants/trainerclasses.asm
new file mode 100644
index 0000000..d8c79a5
--- /dev/null
+++ b/constants/trainerclasses.asm
@@ -0,0 +1,89 @@
+AQUA_LEADER EQU $00 ; *
+TEAM_AQUA_M EQU $01 ; TEAM AQUA*
+TEAM_AQUA_F EQU $02 ; TEAM AQUA*
+; no AQUA ADMIN
+AROMA_LADY EQU $03
+RUIN_MANIAC EQU $04
+INTERVIEWER EQU $05 ; *
+TUBER_F EQU $06 ; TUBER
+TUBER_M EQU $07 ; TUBER
+COOLTRAINER_M EQU $08 ; COOLTRAINER♂
+COOLTRAINER_F EQU $09 ; COOLTRAINER♀
+HEX_MANIAC EQU $0A
+LADY EQU $0B
+BEAUTY EQU $0C
+RICH_BOY EQU $0D
+POKEMANIAC EQU $0E ; POKéMANIAC
+SWIMMER_M EQU $0F ; SWIMMER♂
+TC_BLACK_BELT EQU $10 ; item name
+GUITARIST EQU $11
+KINDLER EQU $12
+CAMPER EQU $13
+BUG_MANIAC EQU $14
+PSYCHIC_M EQU $15 ; PSYCHIC
+PSYCHIC_F EQU $16 ; PSYCHIC
+GENTLEMAN EQU $17
+ELITE_FOUR_SIDNEY EQU $18 ; ELITE FOUR*
+ELITE_FOUR_PHOEBE EQU $19 ; ELITE FOUR*
+LEADER_ROXANNE EQU $1A ; LEADER*
+LEADER_BRAWLY EQU $1B ; LEADER*
+LEADER_TATE_LIZA EQU $1C ; LEADER*
+SCHOOL_KID_M EQU $1D ; SCHOOL KID
+SCHOOL_KID_F EQU $1E ; SCHOOL KID
+SR_AND_JR EQU $1F ; SR. AND JR.*
+; no WINSTRATE
+POKEFAN_M EQU $20 ; POKéFAN
+POKEFAN_F EQU $21 ; POKéFAN
+EXPERT_M EQU $22 ; EXPERT
+EXPERT_F EQU $23 ; EXPERT
+YOUNGSTER EQU $24
+CHAMPION EQU $25 ; *
+FISHERMAN EQU $26
+TRIATHLETE_M_BIKE EQU $27 ; TRIATHLETE
+TRIATHLETE_F_BIKE EQU $28 ; TRIATHLETE
+TRIATHLETE_M_RUN EQU $29 ; TRIATHLETE
+TRIATHLETE_F_RUN EQU $2A ; TRIATHLETE
+TRIATHLETE_M_SWIM EQU $2B ; TRIATHLETE
+TRIATHLETE_F_SWIM EQU $2C ; TRIATHLETE
+DRAGON_TAMER EQU $2D
+BIRD_KEEPER EQU $2E
+NINJA_BOY EQU $2F
+BATTLE_GIRL EQU $30
+PARASOL_LADY EQU $31
+SWIMMER_F EQU $32 ; SWIMMER♀
+PICNICKER EQU $33
+TWINS EQU $34 ; *
+SAILOR EQU $35
+BOARDER_1 EQU $36 ; *
+BOARDER_2 EQU $37 ; *
+COLLECTOR EQU $38
+PKMN_TRAINER_WALLY EQU $39 ; \{PKMN} TRAINER*
+PKMN_TRAINER_BRENDAN_1 EQU $3A ; \{PKMN} TRAINER*
+PKMN_TRAINER_BRENDAN_2 EQU $3B ; \{PKMN} TRAINER*
+PKMN_TRAINER_BRENDAN_3 EQU $3C ; \{PKMN} TRAINER*
+PKMN_TRAINER_MAY_1 EQU $3D ; \{PKMN} TRAINER*
+PKMN_TRAINER_MAY_2 EQU $3E ; \{PKMN} TRAINER*
+PKMN_TRAINER_MAY_3 EQU $3F ; \{PKMN} TRAINER*
+PKMN_BREEDER_M EQU $40 ; \{PKMN} BREEDER
+PKMN_BREEDER_F EQU $41 ; \{PKMN} BREEDER
+PKMN_RANGER_M EQU $42 ; \{PKMN} RANGER
+PKMN_RANGER_F EQU $43 ; \{PKMN} RANGER
+MAGMA_LEADER EQU $44 ; *
+TEAM_MAGMA_M EQU $45 ; *
+TEAM_MAGMA_F EQU $46 ; *
+; no MAGMA ADMIN
+LASS EQU $47
+BUG_CATCHER EQU $48
+HIKER EQU $49
+YOUNG_COUPLE EQU $4A ; *
+OLD_COUPLE EQU $4B ; *
+SIS_AND_BRO EQU $4C ; *
+; $4D: BLACK BELT with a Lass sprite
+; $4E: PKMN TRAINER with a Youngster sprite
+; $4F: GUITARIST with a Youngster sprite
+; $8F: GENTLEMAN with a PKMN Breeder sprite
+; $FB: TWINS with May’s sprite
+; $FC: PKMN TRAINER with a Pokéfan (♂) sprite
+; $FD: SAILOR with May’s sprite
+; $FE: PKMN TRAINER with a Sis and Bro sprite
+; $FF: BOARDER with May’s sprite \ No newline at end of file
diff --git a/eonticket/00-C000.asm b/eonticket/00-C000.asm
new file mode 100644
index 0000000..c90b15d
--- /dev/null
+++ b/eonticket/00-C000.asm
@@ -0,0 +1,187 @@
+INCLUDE "../macros.asm"
+
+SECTION "eonticket",ROM0[$100]
+jp Start
+db $00
+
+TicketSprite: ; 104
+ INCBIN "ticket.4bpp"
+TicketPalette: ; 1604
+ INCLUDE "ticket.pal"
+
+Prologue:
+ db "GameFreak inc."
+ db 0,0,0,0,0,0
+ dd 0
+ Text "e reader" ; no string terminator
+ db 0,0,0,0,$01,$55
+ db 0,0,0,0
+ db REGION_EN
+ db 0
+ db "GameFreak inc."
+ db 0,0
+
+DataPacket: ; 164a
+ Insert_Header REGION_EN
+ db MULTIPLE_DATA
+ INCBIN "eonticket.bin"
+ db 0,0,0 ; padding
+
+INCLUDE "../common/mem_struct.asm"
+
+SpriteData:
+ dw TicketSprite,TicketPalette
+ db $15,$08,$01,$01,$01,$01,$01 ; width 15, height 8
+
+Instructions1: ; 1921
+ db "Link e-Reader to Pokémon Ruby or \n"
+ db "Sapphire and select MYSTERY EVENTS\n"
+ db "on the game's main menu.\n"
+ db "Press the B Button to cancel.\0"
+
+Instructions2: ; 199d
+ db "Press the A Button on the Game Boy\n"
+ db "Advance containing Pokémon Ruby or\n"
+ db "Sapphire to begin sending the EON\n"
+ db "TICKET.\0"
+
+DeliveryInProcess: ; 1a0d
+ db "EON TICKET delivery in Process...\0"
+
+TicketDelivered: ; 1a2f
+ db "EON TICKET delivered!\n"
+ db "\n"
+ db "Press the A Button to resend.\n"
+ db "Press the B Button to cancel.\0"
+
+; this function is subtly different than the one
+; on the Battle e cards, for no apparent reason
+TransferData:
+ LD_IND_HL $1ca2
+ push de
+ ld hl, $bbbb
+ LD_IND_HL Space_1
+ EX_DE_HL
+ LD_IND_HL Space_2
+ API_0C7 Space_1
+
+ wait $01
+ pop hl
+ inc hl
+ ld b, $01
+ call WordShiftRight
+
+ LD_IND_HL $1ca7
+.asm_1aa1
+ LD_HL_IND $1ca7
+ ld a, l
+ or h
+ ret z
+
+ ld hl, $8888
+ LD_IND_HL Space_1
+ ld e, $01
+
+.asm_1aaf
+ ld a, e
+ cp $08
+ jr nc, .asm_1ad9
+
+ push de
+ LD_HL_IND $1ca2
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ inc hl
+ LD_IND_HL $1ca2
+ ld l, e
+ ld h, $00
+ add hl, hl
+ ld de, Space_1
+ add hl, de
+ ld [hl], c
+ inc hl
+ ld [hl], b
+ pop de
+ LD_HL_IND $1ca7
+ dec hl
+ LD_IND_HL $1ca7
+ ld a, l
+ or h
+ jr z, .asm_1ad9
+
+ inc e
+ jr .asm_1aaf
+
+.asm_1ad9
+ API_0C7 Space_1
+ wait $01
+ jr .asm_1aa1
+
+Start: ; 1ae2
+ API_121
+
+ CreateCustomSprite SpriteHandlePtr, $80, SpriteData
+ SetSpritePos SpriteHandlePtr, 120, 64
+ SpriteHide SpriteHandlePtr
+
+ CreateRegion RegionHandlePtr, 30, 6, 0, 14, 0, 4
+
+ ld h, a
+ ld l, $00
+ SetTextSize
+
+ API_09B RegionHandlePtr, $0102
+ SetTextColor RegionHandlePtr, 2, 0
+ SetRegionColor RegionHandlePtr, 0
+ SetBackgroundPalette 16, $0040, TicketPalette
+
+ FadeIn 16
+ wait 16
+
+ API $0C6
+
+ DrawText RegionHandlePtr, Instructions1, 8, 4
+
+ API $08D
+
+INCLUDE "../common/wait_for_link.asm"
+
+ SpriteShow SpriteHandlePtr
+
+ DrawText RegionHandlePtr, Instructions2, 8, 4
+ API $08D
+
+ ld a, b
+ nop
+
+UNKNOWN_VALUE EQU $0078
+INCLUDE "../common/wait_for_ready.asm"
+
+ DrawText RegionHandlePtr, DeliveryInProcess, 8, 4
+
+DATA_TRANSFER_LENGTH EQU 6144
+INCLUDE "../common/transfer_data.asm"
+ ld hl, $5fff
+ LD_IND_HL Space_1
+ API_0C7 Space_1
+
+ wait $80
+
+ SpriteHide SpriteHandlePtr
+
+ DrawText RegionHandlePtr, TicketDelivered, 8, 4
+
+ API $08D
+ ld c, a
+ nop
+
+INCLUDE "../common/wrap_up.asm"
+
+INCLUDE "../common/word_shift_right.asm"
+
+EmulatorRAM: ; 1CA2
+ ds 2
+RegionHandlePtr: ds 1 ; 1CA4
+SpriteHandlePtr: ds 2 ; 1CA5
+SomeVar1: ds 2 ; 1CA7 \ No newline at end of file
diff --git a/eonticket/Makefile b/eonticket/Makefile
new file mode 100644
index 0000000..86be2c4
--- /dev/null
+++ b/eonticket/Makefile
@@ -0,0 +1,24 @@
+all: 00-C000.z80
+
+%.tx: %.asm
+ python ../scripts/charmap.py $< $@
+
+00-C000.o: 00-C000.tx eonticket.bin
+ rgbasm -o $@ $<
+eonticket.o: eonticket.tx
+ rgbasm -o $@ $<
+
+%.gbc: %.o
+ rgblink -o $@ $<
+
+# hack to use RGBDS for something other than its intended purpose
+00-C000.z80: 00-C000.gbc
+ dd if=$< of=$@ bs=1 skip=256 count=7074
+# cmp -b ../z80/$@ $@
+eonticket.z80: eonticket.gbc
+ dd if=$< of=$@ bs=1 skip=256 count=631
+eonticket.bin: eonticket.z80
+ python ../scripts/scriptchecksum.py $< $@
+
+clean:
+ rm -f *.tx *.o *.gbc *.z80 *.bin \ No newline at end of file
diff --git a/eonticket/eonticket.asm b/eonticket/eonticket.asm
new file mode 100644
index 0000000..152e9de
--- /dev/null
+++ b/eonticket/eonticket.asm
@@ -0,0 +1,124 @@
+INCLUDE "../macros.asm"
+INCLUDE "../constants/items.asm"
+INCLUDE "../constants/scriptcommands.asm"
+ScriptBaseAddress EQU ($100 - $1E)
+
+SECTION "packet",ROM0[$100]
+
+
+ db IN_GAME_SCRIPT
+ db 8,1 ; Petalburg Gym
+ db 1 ; Norman
+ GBAPTR ScriptBaseAddress, NormanScriptStart
+ GBAPTR ScriptBaseAddress, NormanScriptEnd
+
+
+ db MIX_RECORDS_ITEM
+ db 1 ; ???
+ db 30 ; distribution limit
+ dw EON_TICKET
+
+
+ db INSTANT_SCRIPT
+ GBAPTR ScriptBaseAddress, PreloadScriptStart
+
+
+ db VARIABLE_LENGTH
+GoSeeYourFather:
+ Text "Go see your father at the GYM in\n"
+ Text "PETALBURG.@"
+
+NormanScriptStart:
+ setvirtualaddress NormanScriptStart
+
+ checkitem EON_TICKET, 1
+ compare LASTRESULT, 1
+ virtualgotoif 1, KillScript
+ checkpcitem EON_TICKET, 1
+ compare LASTRESULT, 1
+ virtualgotoif 1, KillScript
+ checkflag $00CE
+ virtualgotoif 1, KillScript
+
+ lock
+ faceplayer
+ virtualmsgbox GoodToSeeYou
+ waitmsg
+ waitkeypress
+
+ checkitemroom EON_TICKET, 1
+ compare LASTRESULT, 0
+ virtualgotoif 1, NoRoomToGive
+
+ copyvarifnotzero $8000, EON_TICKET
+ copyvarifnotzero $8001, 1
+ callstd 0
+ setflag $0853
+ virtualmsgbox AppearsToBeAFerryTicket
+ waitmsg
+ waitkeypress
+ release
+KillScript:
+ killscript
+
+NoRoomToGive:
+ virtualmsgbox KeyItemsPocketIsFull
+ waitmsg
+ waitkeypress
+ release
+ end
+
+; whoever wrote this text obviously wasn’t
+; familiar with R/S’s character set…
+GoodToSeeYou:
+ Text "DAD“\v1! Good to see you!\n"
+ Text "There’s a letter here for you,\v1.@"
+AppearsToBeAFerryTicket:
+ Text "DAD“It appears to be a ferry TICKET.\n"
+ Text "but I’ve never seen one like it before.\l"
+ Text "You should visit LILYCOVE and ask\n"
+ Text "about it there.@"
+KeyItemsPocketIsFull:
+ Text "DAD“\v1’ the KEY ITEMS POCKET in\n"
+ Text "your BAG is full.\p"
+ Text "Move some key items for safekeeping\n"
+ Text "in your PC’ then come see me.@"
+NormanScriptEnd:
+
+
+PreloadScriptStart:
+ setvirtualaddress PreloadScriptStart
+
+ checkitem EON_TICKET, 1
+ compare LASTRESULT, 1
+ virtualgotoif 1, Ineligible
+ checkpcitem EON_TICKET, 1
+ compare LASTRESULT, 1
+ virtualgotoif 1, Ineligible
+ checkflag $00CE
+ virtualgotoif 1, Ineligible
+
+ checkitemroom EON_TICKET, 1
+ compare LASTRESULT, 0
+ virtualgotoif 1, NoRoomForEvent
+
+ virtualloadpointer GoSeeYourFather
+ setbyte 2
+ end
+
+Ineligible:
+ virtualloadpointer MayBeplayedOnlyOnce
+ setbyte 3
+ end
+
+NoRoomForEvent:
+ virtualloadpointer BagsKeyItemsPocketFull
+ setbyte 3
+ end
+
+; …or with the English language.
+MayBeplayedOnlyOnce:
+ Text "This EVENT may beplayed only once.@"
+
+BagsKeyItemsPocketFull:
+ Text "Your BAG’s KEY ITEMS POCKET is full.@" \ No newline at end of file
diff --git a/eonticket/ticket.4bpp b/eonticket/ticket.4bpp
new file mode 100755
index 0000000..678d42a
--- /dev/null
+++ b/eonticket/ticket.4bpp
@@ -0,0 +1 @@
+DDDDDDDDDDDDDDD3DDD3DDD3DDD3DDD3DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333C333C333CDDDDDDDDDDDD33333333DDDDDDDDD433DDDDDDDDDDDD3333333343CD43DD33DDDDDDDDDDDDDD33333333DD43DDD33DD3DDDDDDDDDDDD33333333CD43CDD3CDD3DDDDDDDDDDDD33333333DD33DD33DD33DDDDDDDDDDDD3333333333CD33CD3333DDDDDDDDDDDD33333333DDDDDDDDCD43DDDDDDDDDDDD3333333343DD43DD33DDDDDDDDDDDDDD3333333333DD3CDD3CD4DDDDDDDDDDDD33333333DD33DD43CD43DDDDDDDDDDDD33333333DD3DDD3DDD3DDDDDDDDDDDDD33333333D3CDD3CDD3CDDDDDDDDDDDDD33333333DDD4DDD44333DDDDDDDDDDDD333333333DDD3DDD333DDDDDDDDDDDDD33333333DDD3DDD3D333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD3DDD3DDD3DDD3DDD3DDDDDD3DDD3DDD3DDD3DDD3DDD3DDD3DDD333333333333333333333333333333333333C333C333C333C333C333C333C333CD433D433DDD4DDD4D433D433D433DDDD33DD33DD33DD33DD33DD33DD33DD43DD3DD33DD33DD33DD33DD33DD33DD3DDD3CDD4CDD4CDDDCD4DCD4DCD4CCD4CCD43DD33DD33DD33DD33DD33DD33DD33DD3333333333333333333333333333333333CD43CD43CD43CD43CD43CD43CD43CD4333DD33DD33DD33DD33DD33DD33DD33DD3CD43CD43CD43CD43CD43CD43CD43CDDCD43CD4333333333CD43CD43CD43DD43DD3DDDCDDDDDDDDDDDCDDD3DDD3DDD3DD3CD43CD33CD33CD43CDD3CDD3CDD3CD43334333DD43DD43433343334333DDD4333D333D333D333D333D333D333D333DD333D333D333D333D333D333D333D33333333333333333333333333333333333333333333333333333333333333333333DDD3DDD3DDD3DDD3DDD3DDD3DDD3DDDDDD3DDD3DDD3DDD3DDD3DDD3DDD3DDD33333333333333DDD3DDD3333333333D4333C33333333DDDDDDDD333333333CDCDDDD33333333DDDDDDDD33333333D3CD43CD33333333DDDDDDDD33333333CD3DDD4333333333DDDDDDDD33333333D43DCD4333333333DDDDDDDD33333333D4CDDD3333333333DDDDDDDD33333333CDCD333333333333DDDDDDDD33333333D433CD4333333333DDDDDDDD33333333333333DD33333333DDDDDDDD33333333333333DD33333333DDDDDDDD33333333333DDD3333333333DDDDDDDD33333333D43DDD3D33333333DDDDDDDD33333333D4CDD3CD33333333DDDDDDDD33333333CDCDDDD433333333DDDDDDDD33333333DDCD333D33333333DDDDDDDD33333333CDCDD33333333333DDDDDDDD33333333D4DD333333333333DDDDDDDD33333333D3D4333333333333DDD3DDD333333333CD333DDD3DDD3DDD3DDD3DDD3DDD3DDD3DDDDDD3DDD3DDD3DDD3DDD3DDD3DDD3DDD333D433D433D433D433D433D433D433DD3CDC3CDC3CDC3CDC3CDC3CDC3CDCDCDCD3CDD3CDD3CDD3CDD33DD33CD33CDD4CCDCDCDCDCDCDCDCDD4CDD3CDD3CDD3CDDDCDCDCD33CD33CD33CD33CDCDCDDDCDDDCDCDCDCDCDCDCDCDCDCDCDCDCDDD3DCDCDCDCDCDCDCDCDCDCDCDCDCDCDD4CDD43333333333D333D33333333333D43333333333333333333333333C333C333333333333333333333333D333DD33CDD333CD33CD33CD333D333333CD33CD33CDDDCDCDCD43CDD4CDDDCDCDCDCDCDDDCDDDCDCDCDCDCDCDCDCDCDCDCDCDCDDDCDCDCDCD3CCD3CCD3CCD3CCD3CCD3CDD3CDDCDD3CDD3CDD3CDD3CDD3CDD3CDD3CDCDCDCDCDCDCDDDCDDDCDCDCDCDCDCDCDD4DD33D433D4D3D4D3DD33DD33D4D4D4D4D4D4DDD4DDD4DDD3DDD3D4D4D4D4D4CD33CD33CD33DD33DD33DD33DD33CD333DDD3DDD3DDD3DDD3DDD3DDD3DDD3DDDDDD3DDD3DDD3DDD3DDD3DDD3DDD3DDD333DD3333333333333333333333333333DCDC3333333333333333333333333333DD4C333333333DD4CDDDCDCDCD33CD33D33D33333333CDCDCDCDCD3CCD3CCD3CD43D33333333DDCDDDCDD3CDD3CDD3CDD43C33333333CD33CD33CD33CD33CD33D3CD3333333333333333333333333333D433333C333C333333333333333333333333DDDDDDDD33333333333C333C33333CDDDDDDDDDD3CDDCDD3DD33D3333333333D4333433333333333333333333333D43D3333333333333333333333333333D43D33333333D4CDD4DDD4D4D4DDD4CDD43C33333333D3D4D4D4D4D433D4D3D4D3CD3333333333DD3CDD3CDC3CDC3CDCCDCD333333334CD3DCD3DCD4DCD4DCDDD4D433333333D4DDD4DDD4D4D4D4D4D4D4D433333333D333D433D433D433D433CD3333333333333333333333333333333DDD3DDD3DDD3DDD3DDD3DDD3DDD3DDDDDD3DDD3DDD3DDD3DDD3DDD3DDD3DDD33333333333333333333333333333333333333333333333333333333333333333CD33CD33CDCDCDDD3DD4333333333333CD3CCD3CCD3CCD3CCD3C333333333333D33DD33CD33CD33CD33C333333333333D433D333D333D333D333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333D43CD4D4D4D4D4DDD4CD333333333333D4D4D4D4D4D4D4DDD3DD3333333333333CDD3CDD3CDCDCDCDCDC333333333333DCDDDCDCDCDCDCD3DCD3333333333333D4D4D4D4D4D4D4DDD4DD333333333333D433D433D433D433D333333333333333333333333333333333333333333333333DDD3DDD3DDD3DDD3DDD3DDD3DDD3DDDDDD3DDD3DDD3DDD3DDD3DDD3DDD3DDD33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333DD3CDD3CDC3CD433DD333D3CDC3333433CD33DD33D333D433CD333D33D3333DD33DD434D43D333DD33CD434D43333333333333333333333333333333333333DDD4DDD43D433D433D433D433D433333D4DDD4DDD4D4D4D4D4D4D4D4D4D43333D3CDD4DDD4D4D4D4D4D4D4DDD4DD3333D3D4D4D4D4D4D4D4D4D4D4D4D4D43333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333DDD3DDD3DDD3DDD3DDD3DDD3DDD3DDDDDD3DDD3DDD3DDD3DDD3DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD3CDC3CDD33DD33333333DDDDDDDDDDDDD33DDC4D4C4C33333333DDDDDDDDDDDD4D43DD4DDD3D33333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD3D433D433D4333333333DDDDDDDDDDDDD4D4D4DDD4DD33333333DDDDDDDDDDDDD4D4D4D4D3D433333333DDDDDDDDDDDDD4D4D4DDD4DD33333333DDDDDDDDDDDD3333D333D33333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD33333333333333333333DDDDDDDDDDDD3DDD3DDD3DDD3DDD3DDDDDDDDDDDDDDD \ No newline at end of file
diff --git a/eonticket/ticket.pal b/eonticket/ticket.pal
new file mode 100644
index 0000000..c1a8373
--- /dev/null
+++ b/eonticket/ticket.pal
@@ -0,0 +1,5 @@
+ RGB 18, 0, 0
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 15, 31, 31
+ RGB 6, 15, 29 \ No newline at end of file
diff --git a/macros.asm b/macros.asm
new file mode 100644
index 0000000..0a1e67e
--- /dev/null
+++ b/macros.asm
@@ -0,0 +1,364 @@
+; some Z80 opcodes aren’t supported by Game Boy,
+; but are used in e-Reader programs
+
+; ld [\1], hl
+LD_IND_HL: MACRO
+ db $22, (\1 & $FF), (\1 >> 8)
+ ENDM
+; ld [\1], a
+LD_IND_A: MACRO
+ db $32, (\1 & $FF), (\1 >> 8)
+ ENDM
+
+; ld hl, [\1]
+LD_HL_IND: MACRO
+ db $2A, (\1 & $FF), (\1 >> 8)
+ ENDM
+; ld a, [\1]
+LD_A_IND: MACRO
+ db $3A
+ dw \1
+ ENDM
+
+; ld b, [hl]
+;LD_B_HL_IND: MACRO
+; db $46
+; ENDM
+; ld c, [hl]
+;LD_C_HL_IND: MACRO
+; db $4E
+; ENDM
+
+; ld l, [hl]
+;LD_L_HL_IND: MACRO
+; db $6E
+; ENDM
+
+; ld [hl], b
+;LD_IND_HL_B: MACRO
+; db $70
+; ENDM
+; ld [hl], c
+;LD_IND_HL_C: MACRO
+; db $71
+; ENDM
+
+waita: MACRO
+ ld a, \1
+ db $76
+ ENDM
+; ld [hl], a
+LD_IND_HL_A: MACRO
+ db $77
+ ENDM
+
+; add a, [hl]
+ADD_A_HL_IND: MACRO
+ db $86
+ ENDM
+
+EX_DE_HL: MACRO
+ db $EB
+ ENDM
+
+wait: MACRO
+ db $D3, \1
+ ENDM
+
+API: MACRO
+ db ($C7 + (\1 & $100) >> 5), (\1 & $FF) ; $C7 for API $0xx, $CF for API $1xx
+ ENDM
+
+
+
+dd: MACRO
+ dw (\1) & $FFFF
+ dw (\1) >> 16
+ ENDM
+
+RGB: MACRO
+ dw (\1) | ((\2) << 5) | ((\3) << 10)
+ ENDM
+
+GBAPTR: MACRO
+ dd $02000000 + \2 - \1
+ ENDM
+
+Insert_Prologue: MACRO
+ db "GameFreak inc."
+ db 0,0,0,0,0,0
+ dd \1
+ db \2
+ REPT 8 - STRLEN(\2)
+ db 0
+ ENDR
+ db 0,0,0,0,$01,$55
+ db 0,0,0,0
+ db \3
+ db 0
+ db "GameFreak inc."
+ db 0,0
+ ENDM
+
+Insert_Header: MACRO
+ db $01,0,0,0,$02,\1,0,\1,0,0,0,$04,0,$80,$01,0,0
+ ENDM
+
+REGION_JP EQU $01
+REGION_EN EQU $02
+
+; types of card data
+VARIABLE_LENGTH EQU $02
+INSTANT_SCRIPT EQU $05
+IN_GAME_SCRIPT EQU $06
+CUSTOM_BERRY EQU $07
+MIX_RECORDS_ITEM EQU $0B
+BATTLE_TRAINER EQU $0D
+MULTIPLE_DATA EQU $10
+
+
+; names for some API functions based on Martin Korth’s GBATEK
+; http://problemkaputt.de/gbatek.htm
+FadeIn: MACRO
+ ld a, \1
+ API $000
+ ENDM
+API_02C: MACRO
+ ld hl, $0000
+ push hl
+ ld bc, \1
+ ld de, \2
+ IF \3 == 0
+ xor a ; save a byte
+ ELSE
+ ld a, \3
+ ENDC
+ API $02C
+ ENDM
+LoadCustomBackground: MACRO
+ ld de, \1
+ IF \2 == 0
+ xor a ; save a byte
+ ELSE
+ ld a, \2
+ ENDC
+ API $02D
+ ENDM
+SetSpritePos: MACRO
+ ld bc, \3
+ ld de, \2
+ LD_HL_IND \1
+ API $032
+ ENDM
+SpriteShow: MACRO
+ LD_HL_IND \1
+ API $046
+ ENDM
+SpriteHide: MACRO
+ LD_HL_IND \1
+ API $047
+ ENDM
+SpriteMirrorToggle: MACRO
+ ld e, \1
+ LD_HL_IND \2
+ API $048
+ ENDM
+CreateCustomSprite: MACRO
+ ld e, \2
+ ld hl, \3
+ API $04D
+ LD_IND_HL \1
+ ENDM
+SetBackgroundPalette: MACRO
+ ld c, \1
+ ld de, \2
+ ld hl, \3
+ API $07E
+ ENDM
+API_084: MACRO
+ ld l, \4
+ push hl
+ ld bc, \3
+ ld de, \2
+ LD_HL_IND \1
+ API $084
+ ENDM
+CreateRegion: MACRO
+ ld bc, (\2 << 8 + \3)
+ ld de, (\4 << 8 + \5)
+ ld hl, (\6 << 8 + \7)
+ API $090
+ LD_IND_A \1
+ ENDM
+SetRegionColor: MACRO
+ ld e, \2
+ LD_A_IND \1
+ API $091
+ ENDM
+CLEAR_REGION: MACRO
+ LD_A_IND \1
+ API $092
+ ENDM
+SetTextColor: MACRO
+ ld de, (\2 << 8 + \3)
+ LD_A_IND \1
+ API $098
+ ENDM
+DrawText: MACRO
+ CLEAR_REGION \1
+ ld bc, \2
+ ld de, (\3 << 8 + \4)
+ LD_A_IND \1
+ API $099
+ ENDM
+SetTextSize: MACRO
+ API $09A
+ ENDM
+API_09B: MACRO
+ ld de, \2
+ LD_A_IND \1
+ API $09B
+ ENDM
+API_0C7: MACRO
+ ld hl, \1
+ API $0C7
+ ENDM
+EXIT: MACRO
+ API $100
+ ENDM
+API_106: MACRO
+ ld de, \1
+ ld hl, \2
+ API $106
+ ENDM
+SOUND_PAUSE: MACRO
+ API $116
+ ENDM
+IS_SOUND_PLAYING: MACRO
+ API $08D
+ ld b, $00
+ ld e, $01
+ ld hl, $0006
+ API $119
+ ld a, \1
+ EXIT
+ ENDM
+API_121: MACRO
+ ld de, $0000
+ ld hl, $0000
+ API $121
+ ENDM
+
+CommonFunction1: MACRO ; Beauty Ellie 1A31, Eon Ticket 1B38
+ ret c
+ nop
+ wait 32
+ ld l, $02
+ push hl
+ ld bc, $B9A0
+ ld de, $0076
+ ld a, $08
+ API $0C4
+ pop bc
+.asm_1b64
+ API $0DB
+
+ cp $01
+ jr z, .asm_1b6f
+ API $0DB
+ or a
+ jr nz, .asm_1b76
+.asm_1b6f
+ waita $01
+ API $0C5
+ jr .asm_1b64
+
+.asm_1b76
+ waita $01
+ LD_HL_IND $00C2
+ ld a, l
+ and $02
+ jr z, .asm_1b90
+
+ IS_SOUND_PLAYING 2 ; exit
+
+.asm_1b90
+ API $0CA
+ cp $02
+ jr c, .asm_1b76
+ ENDM
+
+CommonFunction2: MACRO ; Beauty Ellie 1AA6, Eon Ticket 1BAF
+.asm_1baf
+ waita $01
+ API $0DB
+
+ ld l, a
+ ld h, $00
+ LD_IND_HL \1 ; Eon Ticket 1914
+ API $0CA
+
+ cp $02
+ jr nc, .asm_1bd4
+
+ ld hl, \2 ; Eon Ticket 0078
+ SOUND_PAUSE
+
+ IS_SOUND_PLAYING 1 ; return
+
+.asm_1bd4
+ LD_HL_IND \1
+ ld a, l
+ sub $04
+ or h
+ jr z, .asm_1be6
+
+ LD_HL_IND \1
+ ld a, l
+ sub $03
+ or h
+ jr nz, .asm_1baf
+.asm_1be6
+ ENDM
+
+CommonFunction3: MACRO ; Beauty Ellie 1AE0, Eon Ticket 1BE6
+ DRAW_TEXT \1, \2, 8, 4
+
+ ld de, $0040
+ ld hl, \9
+ API $106
+
+.asm_1bfe
+ waita $01
+
+ ld hl, \3
+ API $0C8
+
+ or a
+ jr nz, .asm_1c18
+
+ IS_SOUND_PLAYING 1 ; return
+
+.asm_1c18
+ LD_HL_IND \3
+ LD_IND_HL \4
+ ld a, l
+ cp $22
+ jr nz, .asm_1bfe
+
+ ld a, h
+ cp $22
+ jr nz, .asm_1bfe
+
+ ld de, $003c
+ ld hl, \5
+ call \7
+
+ ld de, $1800
+ ld hl, \6
+ call \7
+
+ ld hl, $5fff
+ LD_IND_HL \8
+ API_0C7 \8
+ ENDM \ No newline at end of file
diff --git a/scripts/berrychecksum.py b/scripts/berrychecksum.py
new file mode 100644
index 0000000..a973dc2
--- /dev/null
+++ b/scripts/berrychecksum.py
@@ -0,0 +1,16 @@
+import struct
+import sys
+
+out = open(sys.argv[2], 'w')
+sum = 0
+with open(sys.argv[1], 'rb') as f:
+ while True:
+ byte = f.read(1)
+ if not byte:
+ break
+
+ sum += ord(byte)
+ out.write(byte)
+f.closed
+
+out.write(struct.pack('<I', sum)) \ No newline at end of file
diff --git a/scripts/charmap.py b/scripts/charmap.py
new file mode 100644
index 0000000..7a2f224
--- /dev/null
+++ b/scripts/charmap.py
@@ -0,0 +1,496 @@
+# -*- coding: utf-8 -*-
+import sys
+
+chars = {
+ # Japanese character table
+ ' ': '\x00',
+ 'あ': '\x01',
+ 'い': '\x02',
+ 'う': '\x03',
+ 'え': '\x04',
+ 'お': '\x05',
+ 'か': '\x06',
+ 'き': '\x07',
+ 'く': '\x08',
+ 'け': '\\t',
+ 'こ': '\\n',
+ 'さ': '\x0B',
+ 'し': '\x0C',
+ 'す': '\x0D',
+ 'せ': '\x0E',
+ 'そ': '\x0F',
+ 'た': '\x10',
+ 'ち': '\x11',
+ 'つ': '\x12',
+ 'て': '\x13',
+ 'と': '\x14',
+ 'な': '\x15',
+ 'に': '\x16',
+ 'ぬ': '\x17',
+ 'ね': '\x18',
+ 'の': '\x19',
+ 'は': '\x1A',
+ 'ひ': '\x1B',
+ 'ふ': '\x1C',
+ 'へ': '\x1D',
+ 'ほ': '\x1E',
+ 'ま': '\x1F',
+ 'み': '\x20',
+ 'む': '\x21',
+ 'め': '\x22',
+ 'も': '\x23',
+ 'や': '\x24',
+ 'ゆ': '\x25',
+ 'よ': '\x26',
+ 'ら': '\x27',
+ 'り': '\x28',
+ 'る': '\x29',
+ 'れ': '\x2A',
+ 'ろ': '\x2B',
+ 'わ': '\x2C',
+ 'を': '\x2D',
+ 'ん': '\x2E',
+ 'ぁ': '\x2F',
+ 'ぃ': '\x30',
+ 'ぅ': '\x31',
+ 'ぇ': '\x32',
+ 'ぉ': '\x33',
+ 'ゃ': '\x34',
+ 'ゅ': '\x35',
+ 'ょ': '\x36',
+ 'が': '\x37',
+ 'ぎ': '\x38',
+ 'ぐ': '\x39',
+ 'げ': '\x3A',
+ 'ご': '\x3B',
+ 'ざ': '\x3C',
+ 'じ': '\x3D',
+ 'ず': '\x3E',
+ 'ぜ': '\x3F',
+ 'ぞ': '\x40',
+ 'だ': '\x41',
+ 'ぢ': '\x42',
+ 'づ': '\x43',
+ 'で': '\x44',
+ 'ど': '\x45',
+ 'ば': '\x46',
+ 'び': '\x47',
+ 'ぶ': '\x48',
+ 'べ': '\x49',
+ 'ぼ': '\x4A',
+ 'ぱ': '\x4B',
+ 'ぴ': '\x4C',
+ 'ぷ': '\x4D',
+ 'ぺ': '\x4E',
+ 'ぽ': '\x4F',
+ 'っ': '\x50',
+
+ 'ア': '\x51',
+ 'イ': '\x52',
+ 'ウ': '\x53',
+ 'エ': '\x54',
+ 'オ': '\x55',
+ 'カ': '\x56',
+ 'キ': '\x57',
+ 'ク': '\x58',
+ 'ケ': '\x59',
+ 'コ': '\x5A',
+ 'サ': '\x5B',
+ 'シ': '\x5C',
+ 'ス': '\x5D',
+ 'セ': '\x5E',
+ 'ソ': '\x5F',
+ 'タ': '\x60',
+ 'チ': '\x61',
+ 'ツ': '\x62',
+ 'テ': '\x63',
+ 'ト': '\x64',
+ 'ナ': '\x65',
+ 'ニ': '\x66',
+ 'ヌ': '\x67',
+ 'ネ': '\x68',
+ 'ノ': '\x69',
+ 'ハ': '\x6A',
+ 'ヒ': '\x6B',
+ 'フ': '\x6C',
+ 'ヘ': '\x6D',
+ 'ホ': '\x6E',
+ 'マ': '\x6F',
+ 'ミ': '\x70',
+ 'ム': '\x71',
+ 'メ': '\x72',
+ 'モ': '\x73',
+ 'ヤ': '\x74',
+ 'ユ': '\x75',
+ 'ヨ': '\x76',
+ 'ラ': '\x77',
+ 'リ': '\x78',
+ 'ル': '\x79',
+ 'レ': '\x7A',
+ 'ロ': '\x7B',
+ 'ワ': '\x7C',
+ 'ヲ': '\x7D',
+ 'ン': '\x7E',
+ 'ァ': '\x7F',
+ 'ィ': '\x80',
+ 'ゥ': '\x81',
+ 'ェ': '\x82',
+ 'ォ': '\x83',
+ 'ャ': '\x84',
+ 'ュ': '\x85',
+ 'ョ': '\x86',
+ 'ガ': '\x87',
+ 'ギ': '\x88',
+ 'グ': '\x89',
+ 'ゲ': '\x8A',
+ 'ゴ': '\x8B',
+ 'ザ': '\x8C',
+ 'ジ': '\x8D',
+ 'ズ': '\x8E',
+ 'ゼ': '\x8F',
+ 'ゾ': '\x90',
+ 'ダ': '\x91',
+ 'ヂ': '\x92',
+ 'ヅ': '\x93',
+ 'デ': '\x94',
+ 'ド': '\x95',
+ 'バ': '\x96',
+ 'ビ': '\x97',
+ 'ブ': '\x98',
+ 'ベ': '\x99',
+ 'ボ': '\x9A',
+ 'パ': '\x9B',
+ 'ピ': '\x9C',
+ 'プ': '\x9D',
+ 'ペ': '\x9E',
+ 'ポ': '\x9F',
+ 'ッ': '\xA0',
+
+ '0': '\xA1',
+ '1': '\xA2',
+ '2': '\xA3',
+ '3': '\xA4',
+ '4': '\xA5',
+ '5': '\xA6',
+ '6': '\xA7',
+ '7': '\xA8',
+ '8': '\xA9',
+ '9': '\xAA',
+ '!': '\xAB',
+ '?': '\xAC',
+ '。': '\xAD',
+ 'ー': '\xAE',
+ '・': '\xAF',
+ '⋯': '\xB0',
+ '『': '\xB1',
+ '』': '\xB2',
+ '「': '\xB3',
+ '」': '\xB4',
+ '♂': '\xB5',
+ '♀': '\xB6',
+ '円': '\xB7',
+ '.': '\xB8',
+ '×': '\xB9',
+ '/': '\xBA',
+
+ 'A': '\xBB',
+ 'B': '\xBC',
+ 'C': '\xBD',
+ 'D': '\xBE',
+ 'E': '\xBF',
+ 'F': '\xC0',
+ 'G': '\xC1',
+ 'H': '\xC2',
+ 'I': '\xC3',
+ 'J': '\xC4',
+ 'K': '\xC5',
+ 'L': '\xC6',
+ 'M': '\xC7',
+ 'N': '\xC8',
+ 'O': '\xC9',
+ 'P': '\xCA',
+ 'Q': '\xCB',
+ 'R': '\xCC',
+ 'S': '\xCD',
+ 'T': '\xCE',
+ 'U': '\xCF',
+ 'V': '\xD0',
+ 'W': '\xD1',
+ 'X': '\xD2',
+ 'Y': '\xD3',
+ 'Z': '\xD4',
+ 'a': '\xD5',
+ 'b': '\xD6',
+ 'c': '\xD7',
+ 'd': '\xD8',
+ 'e': '\xD9',
+ 'f': '\xDA',
+ 'g': '\xDB',
+ 'h': '\xDC',
+ 'i': '\xDD',
+ 'j': '\xDE',
+ 'k': '\xDF',
+ 'l': '\xE0',
+ 'm': '\xE1',
+ 'n': '\xE2',
+ 'o': '\xE3',
+ 'p': '\xE4',
+ 'q': '\xE5',
+ 'r': '\xE6',
+ 's': '\xE7',
+ 't': '\xE8',
+ 'u': '\xE9',
+ 'v': '\xEA',
+ 'w': '\xEB',
+ 'x': '\xEC',
+ 'y': '\xED',
+ 'z': '\xEE',
+ '▶': '\xEF',
+ ':': '\xF0',
+ 'Ä': '\xF1',
+ 'Ö': '\xF2',
+ 'Ü': '\xF3',
+ 'ä': '\xF4',
+ 'ö': '\xF5',
+ 'ü': '\xF6',
+ #'⬆': '\xF7',
+ #'⬇': '\xF8',
+ #'⬅': '\xF9',
+ '\\l': '\xFA',
+ '\\p': '\xFB',
+ '\{FC}': '\xFC',
+ '\\v1': '\xFD\x01',
+ '\\n': '\xFE',
+ '@': '\xFF',
+
+ # characters changed for Western versions
+ ' ': '\x00',
+ 'À': '\x01',
+ 'Á': '\x02',
+ 'Â': '\x03',
+ 'Ç': '\x04',
+ 'È': '\x05',
+ 'É': '\x06',
+ 'Ê': '\x07',
+ 'Ë': '\x08',
+ 'Ì': '\\t',
+ 'Î': '\x0B',
+ 'Ï': '\x0C',
+ 'Ò': '\x0D',
+ 'Ó': '\x0E',
+ 'Ô': '\x0F',
+ 'Œ': '\x10',
+ 'Ù': '\x11',
+ 'Ú': '\x12',
+ 'Û': '\x13',
+ 'Ñ': '\x14',
+ 'ß': '\x15',
+ 'à': '\x16',
+ 'á': '\x17',
+ 'ç': '\x19',
+ 'è': '\x1A',
+ 'é': '\x1B',
+ 'ê': '\x1C',
+ 'ë': '\x1D',
+ 'ì': '\x1E',
+ 'î': '\x20',
+ 'ï': '\x21',
+ 'ò': '",$22,"',
+ 'ó': '\x23',
+ 'ô': '\x24',
+ 'œ': '\x25',
+ 'ù': '\x26',
+ 'ú': '\x27',
+ 'û': '\x28',
+ 'ñ': '\x29',
+ 'º': '\x2A',
+ 'ª': '\x2B',
+ '\{er}': '\x2C',
+ '&': '\x2D',
+ '+': '\x2E',
+ '\{L.}': '\x34', # Italian
+ '\{Lv}': '\x34', # English
+ '\{Lv.}': '\x34', # German
+ '\{N.}': '\x34', # French
+ '\{Nv}': '\x34', # Spanish
+ '=': '\x35',
+ ';': '\x36', # European
+ '¿': '\x51',
+ '¡': '\x52',
+ '\{PKMN}': '\x53\x54',
+ '\{POKé}': '\x55\x56',
+ '\{POKéBLOC}': '\x55\x56\x57\x58\x59', # French
+ '\{POKéBLOCK}': '\x55\x56\x57\x58\x59', # English
+ '\{POKéCUBO}': '\x55\x56\x57\x58\x59', # Spanish
+ '\{POKéRIEGEL}': '\x55\x56\x57\x58\x59', # German
+ 'Í': '\x5A',
+ '%': '\x5B',
+ '(': '\x5C',
+ ')': '\x5D',
+ '\{POKéMELLA}': '\x5E\x5F\x60\x61\x62', # Italian
+ '\{POKéMELLE}': '\x5E\x5F\x60\x61\x63', # Italian
+ 'â': '\x68',
+ 'í': '\x6F',
+ '⬆': '\x79',
+ '⬇': '\x7A',
+ '⬅': '\x7B',
+ '➡': '\x7C',
+ '\{e}': '\x84', # European
+ '‹': '\x85', # European
+ '›': '\x86', # European
+ '\{re}': '\xA0', # European
+ '0': '\xA1',
+ '1': '\xA2',
+ '2': '\xA3',
+ '3': '\xA4',
+ '4': '\xA5',
+ '5': '\xA6',
+ '6': '\xA7',
+ '7': '\xA8',
+ '8': '\xA9',
+ '9': '\xAA',
+ '!': '\xAB',
+ '?': '\xAC',
+ '.': '\xAD',
+ '-': '\xAE',
+ '…': '\xB0',
+ '“': '\xB1', # replaced with « for French, „ for German
+ '”': '\xB2', # replaced with » for French, “ for German
+ '‘': '\xB3',
+ '’': '\xB4',
+ '$': '\xB7',
+ ',': '\xB8',
+ '/': '\xBA',
+ 'A': '\xBB',
+ 'B': '\xBC',
+ 'C': '\xBD',
+ 'D': '\xBE',
+ 'E': '\xBF',
+ 'F': '\xC0',
+ 'G': '\xC1',
+ 'H': '\xC2',
+ 'I': '\xC3',
+ 'J': '\xC4',
+ 'K': '\xC5',
+ 'L': '\xC6',
+ 'M': '\xC7',
+ 'N': '\xC8',
+ 'O': '\xC9',
+ 'P': '\xCA',
+ 'Q': '\xCB',
+ 'R': '\xCC',
+ 'S': '\xCD',
+ 'T': '\xCE',
+ 'U': '\xCF',
+ 'V': '\xD0',
+ 'W': '\xD1',
+ 'X': '\xD2',
+ 'Y': '\xD3',
+ 'Z': '\xD4',
+ 'a': '\xD5',
+ 'b': '\xD6',
+ 'c': '\xD7',
+ 'd': '\xD8',
+ 'e': '\xD9',
+ 'f': '\xDA',
+ 'g': '\xDB',
+ 'h': '\xDC',
+ 'i': '\xDD',
+ 'j': '\xDE',
+ 'k': '\xDF',
+ 'l': '\xE0',
+ 'm': '\xE1',
+ 'n': '\xE2',
+ 'o': '\xE3',
+ 'p': '\xE4',
+ 'q': '\xE5',
+ 'r': '\xE6',
+ 's': '\xE7',
+ 't': '\xE8',
+ 'u': '\xE9',
+ 'v': '\xEA',
+ 'w': '\xEB',
+ 'x': '\xEC',
+ 'y': '\xED',
+ 'z': '\xEE',
+ ':': '\xF0',
+}
+
+out = open(sys.argv[2], 'w')
+with open(sys.argv[1], 'r') as f:
+ for asm in f:
+ # split by quotes
+ asms = asm.split('"')
+
+ pad_length = 0
+ output = ''
+ print_macro = True
+ if asms[0].strip() == "Text":
+ asms[0] = asms[0].replace("Text", "db")
+ elif asms[0].strip() == "Tag_Text":
+ pad_length = 45
+ elif asms[0].find("OT_Name") == -1 and asms[0].find("Nickname") == -1 and asms[0].find("Insert_Prologue") == -1 and asms[0].find("Berry") == -1 and asms[0].find("Tag_Text") == -1:
+ print_macro = False
+
+ if print_macro:
+ even = False
+ for token in asms:
+ if even:
+ characters = []
+ # token is a string to convert to byte values
+ while len(token):
+ # read a single UTF-8 codepoint
+ char = token[0]
+ if ord(char) < 0xc0:
+ token = token[1:]
+ # handle escape sequences
+ if char == "\\":
+ if token[0] == '{':
+ for i in range(len(token)):
+ char += token[0]
+ token = token[1:]
+ if char[-1] == '}':
+ break
+ elif token[0] == 'v':
+ char += token[0:2]
+ token = token[2:]
+ else:
+ char += token[0]
+ token = token[1:]
+ elif ord(char) < 0xe0:
+ char = char + token[1:2]
+ token = token[2:]
+ elif ord(char) < 0xf0:
+ char = char + token[1:3]
+ token = token[3:]
+ else:
+ char = char + token[1:4]
+ token = token[4:]
+ characters += [char]
+
+ line = 0
+ output += '"'
+ for char in characters:
+ if chars[char] == '\x00':
+ output += '",$00,"'
+ else:
+ output += chars[char]
+ output += '"'
+
+
+ if pad_length - len(characters) > 0:
+ output += ",$FF"
+ for i in range(len(characters) + 1, pad_length):
+ output += ",$00"
+
+ else:
+ output += token
+ even = not even
+
+ else:
+ asm = asm.replace("\\0", "\",$00,\"")
+ asm = asm.replace("é", "\x7F")
+ output = asm
+
+ out.write(output)
+f.closed
diff --git a/scripts/scriptchecksum.py b/scripts/scriptchecksum.py
new file mode 100644
index 0000000..d40a12d
--- /dev/null
+++ b/scripts/scriptchecksum.py
@@ -0,0 +1,28 @@
+import struct
+import sys
+
+out = open(sys.argv[2], 'w')
+sum = 0x1121
+len = 0
+with open(sys.argv[1], 'rb') as f:
+ while True:
+ byte = f.read(1)
+ if not byte:
+ break
+
+ sum ^= ord(byte)
+ for i in range(8):
+ if(sum & 1):
+ sum = (sum >> 1) ^ 0x8408
+ else:
+ sum >>= 1
+ len += 1
+ sum = ~sum & 0xFFFF
+f.closed
+
+out.write(struct.pack('<I', sum))
+out.write(struct.pack('<I', 0x0200001E))
+out.write(struct.pack('<I', 0x0200001E + len))
+with open(sys.argv[1], 'rb') as f:
+ out.write(f.read())
+f.closed \ No newline at end of file
diff --git a/scripts/trainerchecksum.py b/scripts/trainerchecksum.py
new file mode 100644
index 0000000..78d7ffa
--- /dev/null
+++ b/scripts/trainerchecksum.py
@@ -0,0 +1,13 @@
+import struct
+import sys
+
+out = open(sys.argv[2], 'w')
+sum = 0
+with open(sys.argv[1], 'rb') as f:
+ buf = f.read()
+ data = struct.unpack('<IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII', buf)
+ for word in data:
+ sum = (sum + word) % 2**32
+f.closed
+out.write(buf)
+out.write(struct.pack('<I', sum)) \ No newline at end of file