summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants.asm1
-rw-r--r--constants/deco_constants.asm2
-rw-r--r--constants/item_constants.asm1
-rw-r--r--constants/landmark_constants.asm2
-rw-r--r--constants/map_constants.asm4
-rw-r--r--constants/misc_constants.asm8
-rw-r--r--constants/npctrade_constants.asm21
-rw-r--r--constants/phone_constants.asm4
-rw-r--r--constants/pokemon_constants.asm2
-rw-r--r--constants/pokemon_data_constants.asm7
-rw-r--r--constants/sprite_constants.asm6
-rw-r--r--constants/wram_constants.asm41
-rw-r--r--data/battle_tower.asm209
-rw-r--r--data/decoration_attributes.asm60
-rw-r--r--data/default_options.asm16
-rw-r--r--data/egg_move_pointers.asm1
-rw-r--r--data/egg_moves.asm1
-rw-r--r--data/emote_headers.asm20
-rw-r--r--data/engine_flags.asm203
-rw-r--r--data/evos_attacks.asm1
-rw-r--r--data/evos_attacks_pointers.asm5
-rw-r--r--data/facings.asm (renamed from engine/facings.asm)0
-rw-r--r--data/fruit_tree_items.asm32
-rw-r--r--data/happiness_changes.asm22
-rw-r--r--data/hm_blocks.asm53
-rw-r--r--data/landmarks.asm207
-rw-r--r--data/map_triggers.asm (renamed from engine/map_triggers.asm)4
-rw-r--r--data/mom_phone_items.asm27
-rw-r--r--data/mon_menu_icons.asm252
-rw-r--r--data/mystery_gift/decos.asm37
-rw-r--r--data/mystery_gift/items.asm37
-rw-r--r--data/npc_trades.asm20
-rw-r--r--data/odd_eggs.asm98
-rw-r--r--data/outdoor_sprites.asm694
-rw-r--r--data/phone_contacts.asm49
-rw-r--r--data/phone_special.asm16
-rw-r--r--data/spawn_points.asm39
-rw-r--r--data/sprite_anim_seqs.asm92
-rw-r--r--data/sprite_mons.asm37
-rw-r--r--data/time_capsule/mon_order.asm253
-rw-r--r--data/time_capsule/special_stats.asm152
-rw-r--r--data/tmhm_moves.asm67
-rw-r--r--data/wild/bug_contest_mons.asm12
-rw-r--r--data/wild/probabilities.asm15
-rw-r--r--data/wild/roammon_maps.asm31
-rw-r--r--data/wild/treemon_maps.asm50
-rw-r--r--data/wild/treemons.asm128
-rw-r--r--engine/battle_tower.asm210
-rwxr-xr-xengine/decorations.asm62
-rwxr-xr-xengine/delete_save_change_clock.asm4
-rw-r--r--engine/engine_flags.asm203
-rw-r--r--engine/events_2.asm13
-rwxr-xr-xengine/events_3.asm173
-rw-r--r--engine/fruit_trees.asm31
-rwxr-xr-xengine/intro_menu.asm8
-rw-r--r--engine/landmarks.asm207
-rw-r--r--engine/map_objects.asm2
-rwxr-xr-xengine/mon_icons.asm25
-rwxr-xr-xengine/mysterygift2.asm82
-rwxr-xr-xengine/npctrade.asm46
-rw-r--r--engine/odd_eggs.asm96
-rwxr-xr-xengine/options_menu.asm128
-rwxr-xr-xengine/overworld.asm752
-rw-r--r--engine/phone.asm80
-rw-r--r--engine/save.asm9
-rw-r--r--engine/spawn_points.asm40
-rwxr-xr-xengine/sprites.asm93
-rwxr-xr-xengine/time_capsule/conversion.asm407
-rwxr-xr-xengine/tmhm.asm65
-rwxr-xr-xengine/wildmons.asm42
-rwxr-xr-xevent/happiness_egg.asm30
-rwxr-xr-xevent/mom_phone.asm32
-rwxr-xr-xevent/overworld.asm50
-rw-r--r--gfx/icon_pointers.asm41
-rw-r--r--gfx/icons.asm39
-rw-r--r--macros/map.asm12
-rw-r--r--main.asm8
-rw-r--r--maps/BlackthornEmysHouse.asm2
-rw-r--r--maps/GoldenrodDeptStore5F.asm2
-rw-r--r--maps/OlivineTimsHouse.asm2
-rw-r--r--maps/PewterPokecenter1F.asm2
-rw-r--r--maps/PowerPlant.asm2
-rw-r--r--maps/Route14.asm2
-rw-r--r--maps/VioletOnixTradeHouse.asm2
-rw-r--r--menu/mon_icons.asm349
-rw-r--r--wram.asm6
86 files changed, 3241 insertions, 3157 deletions
diff --git a/constants.asm b/constants.asm
index 988c8b336..0d5e3cc87 100644
--- a/constants.asm
+++ b/constants.asm
@@ -29,6 +29,7 @@ INCLUDE "constants/misc_constants.asm"
INCLUDE "constants/std_constants.asm"
INCLUDE "constants/deco_constants.asm"
INCLUDE "constants/radio_constants.asm"
+INCLUDE "constants/npctrade_constants.asm"
INCLUDE "constants/sprite_constants.asm"
INCLUDE "constants/tileset_constants.asm"
INCLUDE "constants/cgb_constants.asm"
diff --git a/constants/deco_constants.asm b/constants/deco_constants.asm
index 540920e5c..433b11e25 100644
--- a/constants/deco_constants.asm
+++ b/constants/deco_constants.asm
@@ -59,7 +59,7 @@ deco: MACRO
enum DECOFLAG_\1
endm
-; decorations
+; decorations (see data/decoration_attribute.asm)
const_value = 1
__enum__ = 0
const BEDS
diff --git a/constants/item_constants.asm b/constants/item_constants.asm
index 443176f1f..996023e73 100644
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -197,6 +197,7 @@
const MIRAGE_MAIL ; $BD
const ITEM_BE ; $BE
+; see data/tmhm_moves.asm for moves
add_tm DYNAMICPUNCH ; $BF
add_tm HEADBUTT ; $C0
add_tm CURSE ; $C1
diff --git a/constants/landmark_constants.asm b/constants/landmark_constants.asm
index f9c840595..e53d44d04 100644
--- a/constants/landmark_constants.asm
+++ b/constants/landmark_constants.asm
@@ -1,4 +1,4 @@
-; Landmarks indexes (see engine/landmarks.asm)
+; Landmarks indexes (see data/landmarks.asm)
const_def
; Johto landmarks
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index 8e04c5782..a9b923deb 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -603,7 +603,7 @@ SLIDING EQU 3
EMOTE_OBJECT EQU 7
-; SpawnPoints indexes (see engine/spawn_points.asm)
+; SpawnPoints indexes (see data/spawn_points.asm)
const_value = -1
const SPAWN_N_A
const SPAWN_HOME
@@ -679,7 +679,7 @@ NUM_SPAWNS EQU const_value
const EMOTE_GRASS_RUSTLE ; 11
EMOTE_MEM EQU -1
-; FruitTreeItems indexes (see engine/fruit_trees.asm)
+; FruitTreeItems indexes (see data/fruit_tree_items.asm)
const_value SET 1
const FRUITTREE_ROUTE_29 ; 01
const FRUITTREE_ROUTE_30_1 ; 02
diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm
index ff416e3cd..7510fdf50 100644
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -25,6 +25,7 @@ PKMN_NAME_LENGTH EQU 11
MOVE_NAME_LENGTH EQU 13
ITEM_NAME_LENGTH EQU 13
TRAINER_CLASS_NAME_LENGTH EQU 13
+NAME_LENGTH_JAPANESE EQU 6
; GetName types (see home.asm)
PKMN_NAME EQU 1
@@ -82,7 +83,12 @@ HOF_LENGTH = 1 + HOF_MON_LENGTH * PARTY_LENGTH + 1 ; win count, party, terminato
NUM_HOF_TEAMS = 30
-; ChangeHappiness arguments (see event/happiness_egg.asm)
+; significant money values
+START_MONEY EQU 3000
+MOM_MONEY EQU 2300
+
+
+; ChangeHappiness arguments (see data/happiness_changes.asm)
const_value = 1
const HAPPINESS_GAINLEVEL ; 01
const HAPPINESS_USEDITEM ; 02
diff --git a/constants/npctrade_constants.asm b/constants/npctrade_constants.asm
new file mode 100644
index 000000000..2da4abd64
--- /dev/null
+++ b/constants/npctrade_constants.asm
@@ -0,0 +1,21 @@
+; npctrade struct members (see data/npc_trades.asm)
+TRADE_DIALOG EQU 0
+TRADE_GIVEMON EQU 1
+TRADE_GETMON EQU 2
+TRADE_NICK EQU 3
+TRADE_DVS EQU 14
+TRADE_ITEM EQU 16
+TRADE_OT_ID EQU 17
+TRADE_OT_NAME EQU 19
+TRADE_GENDER EQU 30
+TRADE_PADDING EQU 31
+
+; NPCTrades indexes (see data/npc_trades.asm)
+ const_def
+ const NPCTRADE_MIKE ; 0
+ const NPCTRADE_KYLE ; 1
+ const NPCTRADE_TIM ; 2
+ const NPCTRADE_EMY ; 3
+ const NPCTRADE_CHRIS ; 4
+ const NPCTRADE_KIM ; 5
+ const NPCTRADE_FOREST ; 6
diff --git a/constants/phone_constants.asm b/constants/phone_constants.asm
index fe602a413..b2312ab4b 100644
--- a/constants/phone_constants.asm
+++ b/constants/phone_constants.asm
@@ -1,4 +1,4 @@
-; PhoneContacts indexes (see engine/phone.asm)
+; PhoneContacts indexes (see data/phone_contacts.asm)
const_def
const PHONE_00
const PHONE_MOM
@@ -39,7 +39,7 @@
const PHONE_PICNICKER_ERIN
const PHONE_BUENA
-; SpecialPhoneCallList indexes (see engine/phone.asm)
+; SpecialPhoneCallList indexes (see data/phone_special.asm)
const_def
const SPECIALCALL_NONE
const SPECIALCALL_POKERUS
diff --git a/constants/pokemon_constants.asm b/constants/pokemon_constants.asm
index fb713507f..743325ea3 100644
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -14,7 +14,7 @@
; - PicPointers (see gfx/pics/pic_pointers.asm)
; - AlphabeticalPokedexOrder (see data/pokedex/order_alpha.asm)
; - NewPokedexOrder (see data/pokedex/order_new.asm)
-; - MonMenuIcons (see menu/mon_icons.asm)
+; - MonMenuIcons (see data/mon_menu_icons.asm)
; - Pokered_MonIndices (see engine/time_capsule/conversion.asm)
; - SortedPokemon (see misc/fixed_words.asm)
const_value set 1
diff --git a/constants/pokemon_data_constants.asm b/constants/pokemon_data_constants.asm
index c7cf9dccb..08d5bdbd8 100644
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -27,8 +27,9 @@ const_value SET 1
const NO_EGGS ; f
-; IconPointers indexes (see menu/mon_icons.asm)
-const_value SET 1
+; IconPointers indexes (see gfx/icon_pointers.asm)
+ const_def
+ const ICON_NULL
const ICON_POLIWAG
const ICON_JIGGLYPUFF
const ICON_DIGLETT
@@ -94,6 +95,8 @@ const_value SET 1
BASE_HAPPINESS EQU 70
FRIEND_BALL_HAPPINESS EQU 200
HAPPINESS_TO_EVOLVE EQU 220
+HAPPINESS_THRESHOLD_1 EQU 100
+HAPPINESS_THRESHOLD_2 EQU 200
NUM_GRASSMON EQU 7 ; data/wild/*_grass.asm table size
diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm
index 787e130f4..d2416c0fe 100644
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -105,7 +105,7 @@
const SPRITE_RAIKOU ; 65
const SPRITE_STANDING_YOUNGSTER ; 66
-; SpriteMons indexes (see engine/overworld.asm)
+; SpriteMons indexes (see data/sprite_mons.asm)
const_value SET $80
SPRITE_POKEMON EQU const_value
const SPRITE_UNOWN ; 80
@@ -326,7 +326,7 @@ SPRITEMOVEDATA_FIELDS EQU 6
const PERSON_ACTION_GRASS_SHAKE
const PERSON_ACTION_SKYFALL
-; Facings indexes (see engine/facings.asm)
+; Facings indexes (see data/facings.asm)
const_def
const FACING_STEP_DOWN_0
const FACING_STEP_DOWN_1
@@ -487,7 +487,7 @@ SPRITEMOVEDATA_FIELDS EQU 6
const SPRITE_ANIM_SEQ_INTRO_UNOWN_F
const SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY
-; SpriteAnimSeqData indexes (see engine/sprites.asm)
+; SpriteAnimSeqData indexes (see data/sprite_anim_seqs.asm)
const_def
const SPRITE_ANIM_INDEX_PARTY_MON
const SPRITE_ANIM_INDEX_01
diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm
index ade157165..a1047fc53 100644
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -7,27 +7,38 @@
const WILDMON ; 4
; Options: (bits) ; cfcc
-const_value SET 5
- const STEREO ; 5
- const BATTLE_SHIFT ; 6
- const BATTLE_SCENE ; 7
-
-; Options: (bits 0-2 values) ; cfcc
-FAST_TEXT EQU 0
-MED_TEXT EQU 1
-SLOW_TEXT EQU 2
-NO_TEXT_SCROLL EQU 4
+const_value SET 4
+ const NO_TEXT_SCROLL ; 4
+ const STEREO ; 5
+ const BATTLE_SHIFT ; 6
+ const BATTLE_SCENE ; 7
+
+; Options: (bits 0-2)
+TEXT_DELAY_FAST EQU 1
+TEXT_DELAY_MED EQU 3
+TEXT_DELAY_SLOW EQU 5
+
+; TextBoxFrame: ; cfce
+ const_def
+ const FRAME_1 ; 0
+ const FRAME_2 ; 1
+ const FRAME_3 ; 2
+ const FRAME_4 ; 3
+ const FRAME_5 ; 4
+ const FRAME_6 ; 5
+ const FRAME_7 ; 6
+ const FRAME_8 ; 7
; Options2:
const_def
const MENU_ACCOUNT ; 0
; GBPrinter:
-PRINT_LIGHTEST EQU $00
-PRINT_LIGHTER EQU $20
-PRINT_NORMAL EQU $40
-PRINT_DARKER EQU $60
-PRINT_DARKEST EQU $7f
+GBPRINTER_LIGHTEST EQU $00
+GBPRINTER_LIGHTER EQU $20
+GBPRINTER_NORMAL EQU $40
+GBPRINTER_DARKER EQU $60
+GBPRINTER_DARKEST EQU $7f
; WalkingDirection: ; d043
const_value SET -1
diff --git a/data/battle_tower.asm b/data/battle_tower.asm
index 8997a53b8..2c78ffb82 100644
--- a/data/battle_tower.asm
+++ b/data/battle_tower.asm
@@ -1,212 +1,3 @@
-Function_LoadOpponentTrainerAndPokemons: ; 1f8000
- ld a, [rSVBK]
- push af
- ld a, BANK(BT_OTTrainer)
- ld [rSVBK], a
-
- ; Fill BT_OTTrainer with zeros
- xor a
- ld hl, BT_OTTrainer
- ld bc, BT_OTTrainerEnd - BT_OTTrainer
- call ByteFill
-
- ; Write $ff into the Item-Slots
- ld a, $ff
- ld [BT_OTPkmn1Item], a
- ld [BT_OTPkmn2Item], a
- ld [BT_OTPkmn3Item], a
-
- ; Set BT_OTTrainer as start address to write the following data to
- ld de, BT_OTTrainer
-
- ld a, [hRandomAdd]
- ld b, a
-.resample ; loop to find a random trainer
- call Random
- ld a, [hRandomAdd]
- add b
- ld b, a ; b contains the nr of the trainer
-IF DEF(CRYSTAL11)
- and (1 << 7) - 1
- cp 70
-ELSE
- and (1 << 5) - 1
- cp 21
-ENDC
- jr nc, .resample
- ld b, a
-
- ld a, BANK(sBTTrainers)
- call GetSRAMBank
-
- ld c, BATTLETOWER_NROFTRAINERS
- ld hl, sBTTrainers
-.next_trainer
- ld a, [hli]
- cp b
- jr z, .resample
- dec c
- jr nz, .next_trainer ; c <= 7 initialise all 7 trainers?
-
- ld hl, sBTTrainers
- ld a, [sNrOfBeatenBattleTowerTrainers]
- ld c, a
- ld a, b
- ld b, 0
- add hl, bc
- ld [hl], a
-
- call CloseSRAM
-
- push af
-; Copy name (10 bytes) and class (1 byte) of trainer
- ld hl, BattleTowerTrainers
- ld bc, NAME_LENGTH
- call AddNTimes
- ld bc, NAME_LENGTH
- call CopyBytes
-
- call Function_LoadRandomBattleTowerPkmn
- pop af
-
- ld hl, BattleTowerTrainerData
- ld bc, BATTLETOWER_TRAINERDATALENGTH
- call AddNTimes
- ld bc, BATTLETOWER_TRAINERDATALENGTH
-.copy_bt_trainer_data_loop
- ld a, BANK(BattleTowerTrainerData)
- call GetFarByte
- ld [de], a
- inc hl
- inc de
- dec bc
- ld a, b
- or c
- jr nz, .copy_bt_trainer_data_loop
-
- pop af
- ld [rSVBK], a
-
- ret
-
-
-Function_LoadRandomBattleTowerPkmn: ; 1f8081
- ld c, BATTLETOWER_NROFPKMNS
-.loop
- push bc
- ld a, BANK(sBTPkmnPrevTrainer1)
- call GetSRAMBank
-
-.FindARandomBattleTowerPkmn:
- ; From Which LevelGroup are the Pkmn loaded
- ; a = 1..10
- ld a, [wBTChoiceOfLvlGroup] ; [$d800]
- dec a
- ld hl, BattleTowerMons
- ld bc, BattleTowerMons2 - BattleTowerMons1
- call AddNTimes
-
- ld a, [hRandomAdd]
- ld b, a
-.resample
- call Random
- ld a, [hRandomAdd]
- add b
- ld b, a
- and $1f
- cp BATTLETOWER_NRMONSPERLEVELBRACKET
- jr nc, .resample
- ; in register 'a' is the chosen Pkmn of the LevelGroup
-
- ; Check if Pkmn was already loaded before
- ; Check current and the 2 previous teams
- ; includes check if item is double at the current team
- ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
- call AddNTimes
- ld a, [hli]
- ld b, a
- ld a, [hld]
- ld c, a
- ld a, [BT_OTPkmn1]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [BT_OTPkmn1Item]
- cp c
- jr z, .FindARandomBattleTowerPkmn
- ld a, [BT_OTPkmn2]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [BT_OTPkmn2Item]
- cp c
- jr z, .FindARandomBattleTowerPkmn
- ld a, [BT_OTPkmn3]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [BT_OTPkmn3Item]
- cp c
- jr z, .FindARandomBattleTowerPkmn
- ld a, [sBTPkmnPrevTrainer1]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [sBTPkmnPrevTrainer2]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [sBTPkmnPrevTrainer3]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [sBTPkmnPrevPrevTrainer1]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [sBTPkmnPrevPrevTrainer2]
- cp b
- jr z, .FindARandomBattleTowerPkmn
- ld a, [sBTPkmnPrevPrevTrainer3]
- cp b
- jr z, .FindARandomBattleTowerPkmn
-
- ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
- call CopyBytes
-
- ld a, [wNamedObjectIndexBuffer]
- push af
- push de
- ld hl, - (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH)
- add hl, de
- ld a, [hl]
- ld [wNamedObjectIndexBuffer], a
- ld bc, PARTYMON_STRUCT_LENGTH
- add hl, bc
- push hl
- call GetPokemonName
- ld h, d
- ld l, e
- pop de
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
-
- pop de
- pop af
- ld [wNamedObjectIndexBuffer], a
- pop bc
- dec c
- jp nz, .loop
-
- ld a, [sBTPkmnPrevTrainer1]
- ld [sBTPkmnPrevPrevTrainer1], a
- ld a, [sBTPkmnPrevTrainer2]
- ld [sBTPkmnPrevPrevTrainer2], a
- ld a, [sBTPkmnPrevTrainer3]
- ld [sBTPkmnPrevPrevTrainer3], a
- ld a, [BT_OTPkmn1]
- ld [sBTPkmnPrevTrainer1], a
- ld a, [BT_OTPkmn2]
- ld [sBTPkmnPrevTrainer2], a
- ld a, [BT_OTPkmn3]
- ld [sBTPkmnPrevTrainer3], a
- call CloseSRAM
- ret
-; 1f814e
-
BattleTowerTrainers: ; 1f814e
; The trainer class is not used in Crystal 1.0 due to a bug.
; Instead, the sixth character in the trainer's name is used.
diff --git a/data/decoration_attributes.asm b/data/decoration_attributes.asm
new file mode 100644
index 000000000..07d4abb37
--- /dev/null
+++ b/data/decoration_attributes.asm
@@ -0,0 +1,60 @@
+decoration: MACRO
+ ; type, name, command, event flag, tile/sprite
+ db \1, \2, \3
+ dw \4
+ db \5
+ENDM
+
+ decoration DECO_PLANT, $00, $0, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BED, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_BED, FEATHERY_BED, SET_UP_BED, EVENT_DECO_BED_1, $1b
+ decoration DECO_BED, PINK_BED, SET_UP_BED, EVENT_DECO_BED_2, $1c
+ decoration DECO_BED, POLKADOT_BED, SET_UP_BED, EVENT_DECO_BED_3, $1d
+ decoration DECO_BED, PIKACHU_BED, SET_UP_BED, EVENT_DECO_BED_4, $1e
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CARPET, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_CARPET, RED_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_1, $08
+ decoration DECO_CARPET, BLUE_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_2, $0b
+ decoration DECO_CARPET, YELLOW_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_3, $0e
+ decoration DECO_CARPET, GREEN_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_4, $11
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_PLANT, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_PLANT, MAGNAPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_1, $20
+ decoration DECO_PLANT, TROPICPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_2, $21
+ decoration DECO_PLANT, JUMBOPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_3, $22
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_POSTER, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_PLANT, TOWN_MAP_D, SET_UP_POSTER, EVENT_DECO_PLANT_4, $1f
+ decoration DECO_POSTER, PIKACHU, SET_UP_POSTER, EVENT_DECO_POSTER_1, $23
+ decoration DECO_POSTER, CLEFAIRY, SET_UP_POSTER, EVENT_DECO_POSTER_2, $24
+ decoration DECO_POSTER, JIGGLYPUFF, SET_UP_POSTER, EVENT_DECO_POSTER_3, $25
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CONSOLE, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_PLANT, FAMICOM, SET_UP_CONSOLE, EVENT_DECO_FAMICOM, SPRITE_FAMICOM
+ decoration DECO_PLANT, SUPER_NES, SET_UP_CONSOLE, EVENT_DECO_SNES, SPRITE_SNES
+ decoration DECO_PLANT, NINTENDO_64, SET_UP_CONSOLE, EVENT_DECO_N64, SPRITE_N64
+ decoration DECO_PLANT, VIRTUAL_BOY, SET_UP_CONSOLE, EVENT_DECO_VIRTUAL_BOY, SPRITE_VIRTUAL_BOY
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BIG_DOLL, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_BIGDOLL, SNORLAX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_SNORLAX_DOLL, SPRITE_BIG_SNORLAX
+ decoration DECO_BIGDOLL, ONIX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_ONIX_DOLL, SPRITE_BIG_ONIX
+ decoration DECO_BIGDOLL, LAPRAS, SET_UP_BIG_DOLL, EVENT_DECO_BIG_LAPRAS_DOLL, SPRITE_BIG_LAPRAS
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_DOLL, EVENT_GAVE_KURT_APRICORNS, $00
+ decoration DECO_DOLL, PIKACHU, SET_UP_DOLL, EVENT_DECO_PIKACHU_DOLL, SPRITE_PIKACHU
+ decoration DECO_PLANT, SURF_PIKA_DOLL, SET_UP_DOLL, EVENT_DECO_SURFING_PIKACHU_DOLL, SPRITE_SURFING_PIKACHU
+ decoration DECO_DOLL, CLEFAIRY, SET_UP_DOLL, EVENT_DECO_CLEFAIRY_DOLL, SPRITE_CLEFAIRY
+ decoration DECO_DOLL, JIGGLYPUFF, SET_UP_DOLL, EVENT_DECO_JIGGLYPUFF_DOLL, SPRITE_JIGGLYPUFF
+ decoration DECO_DOLL, BULBASAUR, SET_UP_DOLL, EVENT_DECO_BULBASAUR_DOLL, SPRITE_BULBASAUR
+ decoration DECO_DOLL, CHARMANDER, SET_UP_DOLL, EVENT_DECO_CHARMANDER_DOLL, SPRITE_CHARMANDER
+ decoration DECO_DOLL, SQUIRTLE, SET_UP_DOLL, EVENT_DECO_SQUIRTLE_DOLL, SPRITE_SQUIRTLE
+ decoration DECO_DOLL, POLIWAG, SET_UP_DOLL, EVENT_DECO_POLIWAG_DOLL, SPRITE_POLIWAG
+ decoration DECO_DOLL, DIGLETT, SET_UP_DOLL, EVENT_DECO_DIGLETT_DOLL, SPRITE_DIGLETT
+ decoration DECO_DOLL, STARYU, SET_UP_DOLL, EVENT_DECO_STARMIE_DOLL, SPRITE_STARMIE
+ decoration DECO_DOLL, MAGIKARP, SET_UP_DOLL, EVENT_DECO_MAGIKARP_DOLL, SPRITE_MAGIKARP
+ decoration DECO_DOLL, ODDISH, SET_UP_DOLL, EVENT_DECO_ODDISH_DOLL, SPRITE_ODDISH
+ decoration DECO_DOLL, GENGAR, SET_UP_DOLL, EVENT_DECO_GENGAR_DOLL, SPRITE_GENGAR
+ decoration DECO_DOLL, SHELLDER, SET_UP_DOLL, EVENT_DECO_SHELLDER_DOLL, SPRITE_SHELLDER
+ decoration DECO_DOLL, GRIMER, SET_UP_DOLL, EVENT_DECO_GRIMER_DOLL, SPRITE_GRIMER
+ decoration DECO_DOLL, VOLTORB, SET_UP_DOLL, EVENT_DECO_VOLTORB_DOLL, SPRITE_VOLTORB
+ decoration DECO_DOLL, WEEDLE, SET_UP_DOLL, EVENT_DECO_WEEDLE_DOLL, SPRITE_WEEDLE
+ decoration DECO_DOLL, UNOWN, SET_UP_DOLL, EVENT_DECO_UNOWN_DOLL, SPRITE_UNOWN
+ decoration DECO_DOLL, GEODUDE, SET_UP_DOLL, EVENT_DECO_GEODUDE_DOLL, SPRITE_GEODUDE
+ decoration DECO_DOLL, MACHOP, SET_UP_DOLL, EVENT_DECO_MACHOP_DOLL, SPRITE_MACHOP
+ decoration DECO_DOLL, TENTACOOL, SET_UP_DOLL, EVENT_DECO_TENTACOOL_DOLL, SPRITE_TENTACOOL
+ decoration DECO_PLANT, GOLD_TROPHY, SET_UP_DOLL, EVENT_DECO_GOLD_TROPHY, SPRITE_GOLD_TROPHY
+ decoration DECO_PLANT, SILVER_TROPHY, SET_UP_DOLL, EVENT_DECO_SILVER_TROPHY, SPRITE_SILVER_TROPHY
diff --git a/data/default_options.asm b/data/default_options.asm
new file mode 100644
index 000000000..7ecbe3163
--- /dev/null
+++ b/data/default_options.asm
@@ -0,0 +1,16 @@
+; Options: med text speed
+ db TEXT_DELAY_MED
+; wSaveFileExists: no
+ db $00
+; TextBoxFrame: frame 1
+ db FRAME_1
+; TextBoxFlags: ??
+ db $01
+; GBPrinter: normal brightness
+ db GBPRINTER_NORMAL
+; Options2: menu account on
+ db $01
+; $cfd2: ??
+ db $00
+; $cfd3: ??
+ db $00
diff --git a/data/egg_move_pointers.asm b/data/egg_move_pointers.asm
index 11665f23e..27558ddef 100644
--- a/data/egg_move_pointers.asm
+++ b/data/egg_move_pointers.asm
@@ -1,4 +1,3 @@
-EggMovePointers:: ; 0x23b11
dw BulbasaurEggMoves
dw NoEggMoves
dw NoEggMoves
diff --git a/data/egg_moves.asm b/data/egg_moves.asm
index 2fcf47232..d27c2f52b 100644
--- a/data/egg_moves.asm
+++ b/data/egg_moves.asm
@@ -10,6 +10,7 @@ SECTION "Egg Moves", ROMX
; and can only breed with Ditto.
+EggMovePointers:: ; 0x23b11
INCLUDE "data/egg_move_pointers.asm"
diff --git a/data/emote_headers.asm b/data/emote_headers.asm
new file mode 100644
index 000000000..8605471f9
--- /dev/null
+++ b/data/emote_headers.asm
@@ -0,0 +1,20 @@
+emote_header: MACRO
+; graphics pointer, length, starting tile
+ dw \1
+ db \2 tiles, BANK(\1)
+ dw VTiles1 tile \3
+ENDM
+
+; entries correspond to EMOTE_* constants
+ emote_header ShockEmote, 4, $78
+ emote_header QuestionEmote, 4, $78
+ emote_header HappyEmote, 4, $78
+ emote_header SadEmote, 4, $78
+ emote_header HeartEmote, 4, $78
+ emote_header BoltEmote, 4, $78
+ emote_header SleepEmote, 4, $78
+ emote_header FishEmote, 4, $78
+ emote_header JumpShadowGFX, 1, $7c
+ emote_header FishingRodGFX, 2, $7c
+ emote_header BoulderDustGFX, 2, $7e
+ emote_header GrassRustleGFX, 1, $7e
diff --git a/data/engine_flags.asm b/data/engine_flags.asm
new file mode 100644
index 000000000..facc30bac
--- /dev/null
+++ b/data/engine_flags.asm
@@ -0,0 +1,203 @@
+engine_flag: MACRO
+ dwb \1, 1 << \2
+ENDM
+
+ ; location, bit
+ ; (all locations are in WRAM bank 1)
+
+ ; pokegear
+ engine_flag wPokegearFlags, 1 ; radio card ; $0
+ engine_flag wPokegearFlags, 0 ; map card
+ engine_flag wPokegearFlags, 2 ; phone card
+ engine_flag wPokegearFlags, 3 ; expn card
+ engine_flag wPokegearFlags, 7 ; on/off
+
+ ; wDayCareMan, 7 ; day-care 1 on
+ engine_flag wDayCareMan, 6 ; egg is ready
+ ; wDayCareMan, 5 ; monster 1 and 2 are compatible
+ engine_flag wDayCareMan, 0 ; monster 1 in day-care
+
+ ; wDayCareLady, 7 = day-care 2 on
+ engine_flag wDayCareLady, 0 ; monster 2 in day-care
+
+ engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
+ engine_flag wMomSavingMoney, 7 ; dst
+
+ engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
+
+ engine_flag StatusFlags, 0 ; pokedex
+ engine_flag StatusFlags, 1 ; unown dex
+ engine_flag StatusFlags, 3 ; pokerus
+ engine_flag StatusFlags, 4 ; rocket signal on ch20
+ engine_flag StatusFlags, 6 ; credits skip
+ engine_flag StatusFlags, 7 ; bug contest on ; $10
+ engine_flag StatusFlags2, 2 ; bug contest timer
+ engine_flag StatusFlags2, 1 ; safari zone?
+ engine_flag StatusFlags2, 0 ; rockets in radio tower
+ engine_flag StatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd)
+ engine_flag StatusFlags2, 5 ; give pokerus
+ engine_flag StatusFlags2, 6 ; berry -> berry juice when trading?
+ engine_flag StatusFlags2, 7 ; rockets in mahogany
+
+ engine_flag BikeFlags, 0 ; strength active ; $18
+ engine_flag BikeFlags, 1 ; always on bike (cant surf)
+ engine_flag BikeFlags, 2 ; downhill (cycling road)
+
+ engine_flag JohtoBadges, 0 ; zephyrbadge
+ engine_flag JohtoBadges, 1 ; hivebadge
+ engine_flag JohtoBadges, 2 ; plainbadge
+ engine_flag JohtoBadges, 3 ; fogbadge
+ engine_flag JohtoBadges, 4 ; mineralbadge
+ engine_flag JohtoBadges, 5 ; stormbadge ; $20
+ engine_flag JohtoBadges, 6 ; glacierbadge
+ engine_flag JohtoBadges, 7 ; risingbadge
+
+ engine_flag KantoBadges, 0 ; boulderbadge
+ engine_flag KantoBadges, 1 ; cascadebadge
+ engine_flag KantoBadges, 2 ; thunderbadge
+ engine_flag KantoBadges, 3 ; rainbowbadge
+ engine_flag KantoBadges, 4 ; soulbadge
+ engine_flag KantoBadges, 5 ; marshbadge ; $28
+ engine_flag KantoBadges, 6 ; volcanobadge
+ engine_flag KantoBadges, 7 ; earthbadge
+
+ ; unown sets
+ engine_flag UnlockedUnowns, 0 ; 1
+ engine_flag UnlockedUnowns, 1 ; 2
+ engine_flag UnlockedUnowns, 2 ; 3
+ engine_flag UnlockedUnowns, 3 ; 4
+ engine_flag UnlockedUnowns, 4 ; 5
+ engine_flag UnlockedUnowns, 5 ; 6 ; $30
+ engine_flag UnlockedUnowns, 6 ; 7
+ engine_flag UnlockedUnowns, 7 ; 8
+
+ ; fly
+ engine_flag VisitedSpawns, 0 ; your house
+ engine_flag VisitedSpawns, 1 ; viridian pokecenter
+ engine_flag VisitedSpawns, 2 ; pallet
+ engine_flag VisitedSpawns, 3 ; viridian
+ engine_flag VisitedSpawns, 4 ; pewter
+ engine_flag VisitedSpawns, 5 ; cerulean ; $38
+ engine_flag VisitedSpawns, 6 ; rock tunnel
+ engine_flag VisitedSpawns, 7 ; vermilion
+ engine_flag VisitedSpawns + 1, 0 ; lavender
+ engine_flag VisitedSpawns + 1, 1 ; saffron
+ engine_flag VisitedSpawns + 1, 2 ; celadon
+ engine_flag VisitedSpawns + 1, 3 ; fuchsia
+ engine_flag VisitedSpawns + 1, 4 ; cinnabar
+ engine_flag VisitedSpawns + 1, 5 ; indigo plateau ; $40
+ engine_flag VisitedSpawns + 1, 6 ; new bark
+ engine_flag VisitedSpawns + 1, 7 ; cherrygrove
+ engine_flag VisitedSpawns + 2, 0 ; violet
+ ; union cave
+ engine_flag VisitedSpawns + 2, 2 ; azalea
+ engine_flag VisitedSpawns + 2, 3 ; cianwood
+ engine_flag VisitedSpawns + 2, 4 ; goldenrod
+ engine_flag VisitedSpawns + 2, 5 ; olivine
+ engine_flag VisitedSpawns + 2, 6 ; ecruteak ; $48
+ engine_flag VisitedSpawns + 2, 7 ; mahogany
+ engine_flag VisitedSpawns + 3, 0 ; lake of rage
+ engine_flag VisitedSpawns + 3, 1 ; blackthorn
+ engine_flag VisitedSpawns + 3, 2 ; silver cave
+ ; fast ship
+ engine_flag VisitedSpawns + 3, 4 ; unused
+
+ engine_flag wLuckyNumberShowFlag, 0 ; lucky number show
+ engine_flag StatusFlags2, 3 ; ????
+
+ engine_flag DailyFlags, 0 ; kurt making balls ; $50
+ engine_flag DailyFlags, 1 ; ????
+ engine_flag DailyFlags, 2 ; special wilddata?
+ engine_flag DailyFlags, 3 ; time capsule (24h wait)
+ engine_flag DailyFlags, 4 ; all fruit trees
+ engine_flag DailyFlags, 5 ; shuckle given
+ engine_flag DailyFlags, 6 ; goldenrod underground merchant closed
+ engine_flag DailyFlags, 7 ; fought in trainer hall today
+
+ engine_flag WeeklyFlags, 0 ; mt moon square clefairy ; $58
+ engine_flag WeeklyFlags, 1 ; union cave lapras
+ engine_flag WeeklyFlags, 2 ; goldenrod underground haircut used
+ engine_flag WeeklyFlags, 3 ; goldenrod mall happiness event floor05 person07
+ engine_flag WeeklyFlags, 4 ; tea in blues house
+ engine_flag WeeklyFlags, 5 ; indigo plateau rival fight
+ engine_flag WeeklyFlags, 6 ; move tutor
+ engine_flag WeeklyFlags, 7 ; buenas password
+
+ engine_flag SwarmFlags, 0 ; buenas password 2
+ engine_flag SwarmFlags, 1 ; goldenrod dept store sale is on
+
+ engine_flag GameTimerPause, 7 ; $62
+
+ engine_flag PlayerGender, 0 ; player is female
+
+ engine_flag wCelebiEvent, 2 ; have gs ball after kurt examined it
+
+ ; rematches
+ engine_flag wDailyRematchFlags, 0 ; jack
+ engine_flag wDailyRematchFlags, 1 ; huey
+ engine_flag wDailyRematchFlags, 2 ; gaven
+ engine_flag wDailyRematchFlags, 3 ; beth ; $68
+ engine_flag wDailyRematchFlags, 4 ; jose
+ engine_flag wDailyRematchFlags, 5 ; reena
+ engine_flag wDailyRematchFlags, 6 ; joey
+ engine_flag wDailyRematchFlags, 7 ; wade
+ engine_flag wDailyRematchFlags + 1, 0 ; ralph
+ engine_flag wDailyRematchFlags + 1, 1 ; liz
+ engine_flag wDailyRematchFlags + 1, 2 ; anthony
+ engine_flag wDailyRematchFlags + 1, 3 ; todd ; $70
+ engine_flag wDailyRematchFlags + 1, 4 ; gina
+ engine_flag wDailyRematchFlags + 1, 5 ; arnie
+ engine_flag wDailyRematchFlags + 1, 6 ; alan
+ engine_flag wDailyRematchFlags + 1, 7 ; dana
+ engine_flag wDailyRematchFlags + 2, 0 ; chad
+ engine_flag wDailyRematchFlags + 2, 1 ; tully
+ engine_flag wDailyRematchFlags + 2, 2 ; brent
+ engine_flag wDailyRematchFlags + 2, 3 ; tiffany ; $78
+ engine_flag wDailyRematchFlags + 2, 4 ; vance
+ engine_flag wDailyRematchFlags + 2, 5 ; wilton
+ engine_flag wDailyRematchFlags + 2, 6 ; parry
+ engine_flag wDailyRematchFlags + 2, 7 ; erin
+
+ engine_flag wDailyPhoneItemFlags, 0 ; beverly has nugget
+ engine_flag wDailyPhoneItemFlags, 1 ; jose has star piece
+ engine_flag wDailyPhoneItemFlags, 2 ; wade has item (see EVENT_WADE_HAS_*** in constants/event_flags.asm)
+ engine_flag wDailyPhoneItemFlags, 3 ; gina has leaf stone ; $80
+ engine_flag wDailyPhoneItemFlags, 4 ; alan has fire stone
+ engine_flag wDailyPhoneItemFlags, 5 ; liz has thunderstone
+ engine_flag wDailyPhoneItemFlags, 6 ; derek has nugget
+ engine_flag wDailyPhoneItemFlags, 7 ; tully has water stone
+
+ engine_flag wDailyPhoneItemFlags + 1, 0 ; tiffany has pink bow
+ engine_flag wDailyPhoneItemFlags + 1, 1 ; wilton has item (see EVENT_WILTON_HAS_*** in constants/event_flags.asm)
+
+ engine_flag wDailyPhoneTimeOfDayFlags, 0
+ engine_flag wDailyPhoneTimeOfDayFlags, 1 ; $88
+ engine_flag wDailyPhoneTimeOfDayFlags, 2
+ engine_flag wDailyPhoneTimeOfDayFlags, 3
+ engine_flag wDailyPhoneTimeOfDayFlags, 4
+ engine_flag wDailyPhoneTimeOfDayFlags, 5
+ engine_flag wDailyPhoneTimeOfDayFlags, 6
+ engine_flag wDailyPhoneTimeOfDayFlags, 7
+
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 0
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 1 ; $90
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 2
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 3
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 4
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 5
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 6
+ engine_flag wDailyPhoneTimeOfDayFlags + 1, 7
+
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 0
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 1 ; $98
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 2
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 3
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 4
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 5
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 6
+ engine_flag wDailyPhoneTimeOfDayFlags + 2, 7
+
+ engine_flag wPlayerSpriteSetupFlags, 2 ; female player has been transformed into male
+
+ engine_flag SwarmFlags, 2 ; dunsparce swarm ; $a0
+ engine_flag SwarmFlags, 3 ; yanma swarm
diff --git a/data/evos_attacks.asm b/data/evos_attacks.asm
index 749731812..c8e5da236 100644
--- a/data/evos_attacks.asm
+++ b/data/evos_attacks.asm
@@ -4,6 +4,7 @@ INCLUDE "includes.asm"
SECTION "Evolutions and Attacks", ROMX
+EvosAttacksPointers:: ; 0x425b1
INCLUDE "data/evos_attacks_pointers.asm"
diff --git a/data/evos_attacks_pointers.asm b/data/evos_attacks_pointers.asm
index 4ce10b105..863e17824 100644
--- a/data/evos_attacks_pointers.asm
+++ b/data/evos_attacks_pointers.asm
@@ -1,8 +1,5 @@
-; Pointer table for evolutions and attacks.
+; Evolutions and attacks are grouped together since they're both checked at level-up.
-; These are grouped together since they're both checked at level-up.
-
-EvosAttacksPointers:: ; 0x425b1
dw BulbasaurEvosAttacks
dw IvysaurEvosAttacks
dw VenusaurEvosAttacks
diff --git a/engine/facings.asm b/data/facings.asm
index 4d2a55364..4d2a55364 100644
--- a/engine/facings.asm
+++ b/data/facings.asm
diff --git a/data/fruit_tree_items.asm b/data/fruit_tree_items.asm
new file mode 100644
index 000000000..91fcb3a58
--- /dev/null
+++ b/data/fruit_tree_items.asm
@@ -0,0 +1,32 @@
+; entries correspond to FRUITTREE_* constants
+
+ db BERRY ; ROUTE_29
+ db BERRY ; ROUTE_30_1
+ db BERRY ; ROUTE_38
+ db BERRY ; ROUTE_46_1
+ db PSNCUREBERRY ; ROUTE_30_2
+ db PSNCUREBERRY ; ROUTE_33
+ db BITTER_BERRY ; ROUTE_31
+ db BITTER_BERRY ; ROUTE_43
+ db PRZCUREBERRY ; VIOLET_CITY
+ db PRZCUREBERRY ; ROUTE_46_2
+ db MYSTERYBERRY ; ROUTE_35
+ db MYSTERYBERRY ; ROUTE_45
+ db ICE_BERRY ; ROUTE_36
+ db ICE_BERRY ; ROUTE_26
+ db MINT_BERRY ; ROUTE_39
+ db BURNT_BERRY ; ROUTE_44
+ db RED_APRICORN ; ROUTE_37_1
+ db BLU_APRICORN ; ROUTE_37_2
+ db BLK_APRICORN ; ROUTE_37_3
+ db WHT_APRICORN ; AZALEA_TOWN
+ db PNK_APRICORN ; ROUTE_42_1
+ db GRN_APRICORN ; ROUTE_42_2
+ db YLW_APRICORN ; ROUTE_42_3
+ db BERRY ; ROUTE_11
+ db PSNCUREBERRY ; ROUTE_2
+ db BITTER_BERRY ; ROUTE_1
+ db PRZCUREBERRY ; ROUTE_8
+ db ICE_BERRY ; PEWTER_CITY_1
+ db MINT_BERRY ; PEWTER_CITY_2
+ db BURNT_BERRY ; FUCHSIA_CITY
diff --git a/data/happiness_changes.asm b/data/happiness_changes.asm
new file mode 100644
index 000000000..ba854bfc6
--- /dev/null
+++ b/data/happiness_changes.asm
@@ -0,0 +1,22 @@
+; entries correspond to HAPPINESS_* constants
+
+; change if happiness < 100, change if happiness < 200, change otherwise
+ db +5, +3, +2 ; Gained a level
+ db +5, +3, +2 ; Vitamin
+ db +1, +1, +0 ; X Item
+ db +3, +2, +1 ; Battled a Gym Leader
+ db +1, +1, +0 ; Learned a move
+ db -1, -1, -1 ; Lost to an enemy
+ db -5, -5, -10 ; Fainted due to poison
+ db -5, -5, -10 ; Lost to a much stronger enemy
+ db +1, +1, +1 ; Haircut (Y1)
+ db +3, +3, +1 ; Haircut (Y2)
+ db +5, +5, +2 ; Haircut (Y3)
+ db +1, +1, +1 ; Haircut (O1)
+ db +3, +3, +1 ; Haircut (O2)
+ db +10, +10, +4 ; Haircut (O3)
+ db -5, -5, -10 ; Used Heal Powder or Energypowder (bitter)
+ db -10, -10, -15 ; Used Energy Root (bitter)
+ db -15, -15, -20 ; Used Revival Herb (bitter)
+ db +3, +3, +1 ; Grooming
+ db +10, +6, +4 ; Gained a level in the place where it was caught
diff --git a/data/hm_blocks.asm b/data/hm_blocks.asm
new file mode 100644
index 000000000..5e9bbc1f4
--- /dev/null
+++ b/data/hm_blocks.asm
@@ -0,0 +1,53 @@
+CutTreeBlockPointers: ; c862
+; tileset, block list pointer
+ dbw TILESET_JOHTO_1, .johto1
+ dbw TILESET_JOHTO_2, .johto2
+ dbw TILESET_KANTO, .kanto
+ dbw TILESET_PARK, .park
+ dbw TILESET_ILEX_FOREST, .ilex
+ db -1
+
+.johto1 ; Johto OW
+; facing block, replacement block, animation
+ db $03, $02, $01 ; grass
+ db $5b, $3c, $00 ; tree
+ db $5f, $3d, $00 ; tree
+ db $63, $3f, $00 ; tree
+ db $67, $3e, $00 ; tree
+ db -1
+
+.johto2 ; Goldenrod area
+; facing block, replacement block, animation
+ db $03, $02, $01 ; grass
+ db -1
+
+.kanto ; Kanto OW
+; facing block, replacement block, animation
+ db $0b, $0a, $01 ; grass
+ db $32, $6d, $00 ; tree
+ db $33, $6c, $00 ; tree
+ db $34, $6f, $00 ; tree
+ db $35, $4c, $00 ; tree
+ db $60, $6e, $00 ; tree
+ db -1
+
+.park ; National Park
+; facing block, replacement block, animation
+ db $13, $03, $01 ; grass
+ db $03, $04, $01 ; grass
+ db -1
+
+.ilex ; Ilex Forest
+; facing block, replacement block, animation
+ db $0f, $17, $00
+ db -1
+
+
+WhirlpoolBlockPointers: ; c8a4
+ dbw TILESET_JOHTO_1, .johto
+ db -1
+
+.johto ; c8a8
+; facing block, replacement block, animation
+ db $07, $36, $00
+ db -1
diff --git a/data/landmarks.asm b/data/landmarks.asm
new file mode 100644
index 000000000..1de292ef8
--- /dev/null
+++ b/data/landmarks.asm
@@ -0,0 +1,207 @@
+landmark: MACRO
+; x, y, name
+ db \1, \2
+ dw \3
+ENDM
+
+; entries correspond to constants/landmark_constants.asm
+ landmark 0, 0, SpecialMapName
+ landmark 148, 116, NewBarkTownName
+ landmark 136, 116, Route29Name
+ landmark 108, 116, CherrygroveCityName
+ landmark 108, 96, Route30Name
+ landmark 104, 76, Route31Name
+ landmark 92, 76, VioletCityName
+ landmark 93, 74, SproutTowerName
+ landmark 92, 108, Route32Name
+ landmark 84, 92, RuinsOfAlphName
+ landmark 92, 140, UnionCaveName
+ landmark 90, 140, Route33Name
+ landmark 76, 140, AzaleaTownName
+ landmark 78, 138, SlowpokeWellName
+ landmark 60, 136, IlexForestName
+ landmark 60, 128, Route34Name
+ landmark 60, 108, GoldenrodCityName
+ landmark 58, 108, RadioTowerName
+ landmark 60, 92, Route35Name
+ landmark 60, 76, NationalParkName
+ landmark 72, 76, Route36Name
+ landmark 76, 68, Route37Name
+ landmark 76, 60, EcruteakCityName
+ landmark 78, 58, TinTowerName
+ landmark 74, 58, BurnedTowerName
+ landmark 60, 60, Route38Name
+ landmark 44, 64, Route39Name
+ landmark 44, 76, OlivineCityName
+ landmark 46, 78, LighthouseName
+ landmark 36, 72, BattleTowerName
+ landmark 36, 80, Route40Name
+ landmark 36, 108, WhirlIslandsName
+ landmark 36, 116, Route41Name
+ landmark 28, 116, CianwoodCityName
+ landmark 100, 60, Route42Name
+ landmark 92, 60, MtMortarName
+ landmark 116, 60, MahoganyTownName
+ landmark 116, 52, Route43Name
+ landmark 116, 44, LakeOfRageName
+ landmark 128, 60, Route44Name
+ landmark 138, 54, IcePathName
+ landmark 140, 60, BlackthornCityName
+ landmark 140, 52, DragonsDenName
+ landmark 140, 80, Route45Name
+ landmark 120, 88, DarkCaveName
+ landmark 132, 104, Route46Name
+ landmark 156, 84, SilverCaveName
+ landmark 60, 124, PalletTownName
+ landmark 60, 108, Route1Name
+ landmark 60, 92, ViridianCityName
+ landmark 60, 80, Route2Name
+ landmark 60, 68, PewterCityName
+ landmark 72, 68, Route3Name
+ landmark 84, 68, MtMoonName
+ landmark 96, 68, Route4Name
+ landmark 108, 68, CeruleanCityName
+ landmark 108, 60, Route24Name
+ landmark 116, 52, Route25Name
+ landmark 108, 76, Route5Name
+ landmark 116, 92, UndergroundName
+ landmark 108, 92, Route6Name
+ landmark 108, 100, VermilionCityName
+ landmark 96, 76, DiglettsCaveName
+ landmark 96, 84, Route7Name
+ landmark 124, 84, Route8Name
+ landmark 124, 68, Route9Name
+ landmark 140, 68, RockTunnelName
+ landmark 140, 72, Route10Name
+ landmark 140, 76, PowerPlantName
+ landmark 140, 84, LavenderTownName
+ landmark 148, 84, LavRadioTowerName
+ landmark 84, 84, CeladonCityName
+ landmark 108, 84, SaffronCityName
+ landmark 124, 100, Route11Name
+ landmark 140, 96, Route12Name
+ landmark 132, 116, Route13Name
+ landmark 124, 128, Route14Name
+ landmark 112, 132, Route15Name
+ landmark 76, 84, Route16Name
+ landmark 76, 108, Route17Name
+ landmark 88, 132, Route18Name
+ landmark 100, 132, FuchsiaCityName
+ landmark 100, 144, Route19Name
+ landmark 84, 148, Route20Name
+ landmark 76, 148, SeafoamIslandsName
+ landmark 60, 148, CinnabarIslandName
+ landmark 60, 136, Route21Name
+ landmark 44, 84, Route22Name
+ landmark 36, 68, VictoryRoadName
+ landmark 36, 60, Route23Name
+ landmark 36, 52, IndigoPlateauName
+ landmark 36, 108, Route26Name
+ landmark 28, 116, Route27Name
+ landmark 20, 116, TohjoFallsName
+ landmark 28, 84, Route28Name
+ landmark 148, 132, FastShipName
+
+
+NewBarkTownName: db "NEW BARK¯TOWN@"
+CherrygroveCityName: db "CHERRYGROVE¯CITY@"
+VioletCityName: db "VIOLET CITY@"
+AzaleaTownName: db "AZALEA TOWN@"
+GoldenrodCityName: db "GOLDENROD¯CITY@"
+EcruteakCityName: db "ECRUTEAK¯CITY@"
+OlivineCityName: db "OLIVINE¯CITY@"
+CianwoodCityName: db "CIANWOOD¯CITY@"
+MahoganyTownName: db "MAHOGANY¯TOWN@"
+BlackthornCityName: db "BLACKTHORN¯CITY@"
+LakeOfRageName: db "LAKE OF¯RAGE@"
+SilverCaveName: db "SILVER CAVE@"
+SproutTowerName: db "SPROUT¯TOWER@"
+RuinsOfAlphName: db "RUINS¯OF ALPH@"
+UnionCaveName: db "UNION CAVE@"
+SlowpokeWellName: db "SLOWPOKE¯WELL@"
+RadioTowerName: db "RADIO TOWER@"
+PowerPlantName: db "POWER PLANT@"
+NationalParkName: db "NATIONAL¯PARK@"
+TinTowerName: db "TIN TOWER@"
+LighthouseName: db "LIGHTHOUSE@"
+WhirlIslandsName: db "WHIRL¯ISLANDS@"
+MtMortarName: db "MT.MORTAR@"
+DragonsDenName: db "DRAGON'S¯DEN@"
+IcePathName: db "ICE PATH@"
+NotApplicableName: db "N/A@"
+PalletTownName: db "PALLET TOWN@"
+ViridianCityName: db "VIRIDIAN¯CITY@"
+PewterCityName: db "PEWTER CITY@"
+CeruleanCityName: db "CERULEAN¯CITY@"
+LavenderTownName: db "LAVENDER¯TOWN@"
+VermilionCityName: db "VERMILION¯CITY@"
+CeladonCityName: db "CELADON¯CITY@"
+SaffronCityName: db "SAFFRON¯CITY@"
+FuchsiaCityName: db "FUCHSIA¯CITY@"
+CinnabarIslandName: db "CINNABAR¯ISLAND@"
+IndigoPlateauName: db "INDIGO¯PLATEAU@"
+VictoryRoadName: db "VICTORY¯ROAD@"
+MtMoonName: db "MT.MOON@"
+RockTunnelName: db "ROCK TUNNEL@"
+LavRadioTowerName: db "LAV¯RADIO TOWER@"
+SilphCoName: db "SILPH CO.@"
+SafariZoneName: db "SAFARI ZONE@"
+SeafoamIslandsName: db "SEAFOAM¯ISLANDS@"
+PokemonMansionName: db "#MON¯MANSION@"
+CeruleanCaveName: db "CERULEAN¯CAVE@"
+Route1Name: db "ROUTE 1@"
+Route2Name: db "ROUTE 2@"
+Route3Name: db "ROUTE 3@"
+Route4Name: db "ROUTE 4@"
+Route5Name: db "ROUTE 5@"
+Route6Name: db "ROUTE 6@"
+Route7Name: db "ROUTE 7@"
+Route8Name: db "ROUTE 8@"
+Route9Name: db "ROUTE 9@"
+Route10Name: db "ROUTE 10@"
+Route11Name: db "ROUTE 11@"
+Route12Name: db "ROUTE 12@"
+Route13Name: db "ROUTE 13@"
+Route14Name: db "ROUTE 14@"
+Route15Name: db "ROUTE 15@"
+Route16Name: db "ROUTE 16@"
+Route17Name: db "ROUTE 17@"
+Route18Name: db "ROUTE 18@"
+Route19Name: db "ROUTE 19@"
+Route20Name: db "ROUTE 20@"
+Route21Name: db "ROUTE 21@"
+Route22Name: db "ROUTE 22@"
+Route23Name: db "ROUTE 23@"
+Route24Name: db "ROUTE 24@"
+Route25Name: db "ROUTE 25@"
+Route26Name: db "ROUTE 26@"
+Route27Name: db "ROUTE 27@"
+Route28Name: db "ROUTE 28@"
+Route29Name: db "ROUTE 29@"
+Route30Name: db "ROUTE 30@"
+Route31Name: db "ROUTE 31@"
+Route32Name: db "ROUTE 32@"
+Route33Name: db "ROUTE 33@"
+Route34Name: db "ROUTE 34@"
+Route35Name: db "ROUTE 35@"
+Route36Name: db "ROUTE 36@"
+Route37Name: db "ROUTE 37@"
+Route38Name: db "ROUTE 38@"
+Route39Name: db "ROUTE 39@"
+Route40Name: db "ROUTE 40@"
+Route41Name: db "ROUTE 41@"
+Route42Name: db "ROUTE 42@"
+Route43Name: db "ROUTE 43@"
+Route44Name: db "ROUTE 44@"
+Route45Name: db "ROUTE 45@"
+Route46Name: db "ROUTE 46@"
+DarkCaveName: db "DARK CAVE@"
+IlexForestName: db "ILEX¯FOREST@"
+BurnedTowerName: db "BURNED¯TOWER@"
+FastShipName: db "FAST SHIP@"
+ViridianForestName: db "VIRIDIAN¯FOREST@"
+DiglettsCaveName: db "DIGLETT'S¯CAVE@"
+TohjoFallsName: db "TOHJO FALLS@"
+UndergroundName: db "UNDERGROUND@"
+BattleTowerName: db "BATTLE¯TOWER@"
+SpecialMapName: db "SPECIAL@"
diff --git a/engine/map_triggers.asm b/data/map_triggers.asm
index 2b190fa3e..567165392 100644
--- a/engine/map_triggers.asm
+++ b/data/map_triggers.asm
@@ -1,6 +1,3 @@
-MapTriggers:: ; 4d01e
-; Map triggers
-
trigger_def: MACRO
; db group, map
; dw address
@@ -88,4 +85,3 @@ ENDM
trigger_def MOBILE_TRADE_ROOM_MOBILE, wMobileTradeRoomMobileTrigger
trigger_def MOBILE_BATTLE_ROOM, wMobileBattleRoomTrigger
db -1
-; 4d15b
diff --git a/data/mom_phone_items.asm b/data/mom_phone_items.asm
new file mode 100644
index 000000000..533241ca1
--- /dev/null
+++ b/data/mom_phone_items.asm
@@ -0,0 +1,27 @@
+momitem: macro
+; money to trigger, cost, kind, item
+ dt \1
+ dt \2
+ db \3, \4
+ENDM
+
+MomItems_1: ; fd136
+ momitem 0, 600, MOM_ITEM, SUPER_POTION
+ momitem 0, 90, MOM_ITEM, ANTIDOTE
+ momitem 0, 180, MOM_ITEM, POKE_BALL
+ momitem 0, 450, MOM_ITEM, ESCAPE_ROPE
+ momitem 0, 500, MOM_ITEM, GREAT_BALL
+MomItems_1End: ; fd15e
+
+MomItems_2: ; fd15e
+ momitem 900, 600, MOM_ITEM, SUPER_POTION
+ momitem 4000, 270, MOM_ITEM, REPEL
+ momitem 7000, 600, MOM_ITEM, SUPER_POTION
+ momitem 10000, 1800, MOM_DOLL, DECO_CHARMANDER_DOLL
+ momitem 15000, 3000, MOM_ITEM, MOON_STONE
+ momitem 19000, 600, MOM_ITEM, SUPER_POTION
+ momitem 30000, 4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
+ momitem 40000, 900, MOM_ITEM, HYPER_POTION
+ momitem 50000, 8000, MOM_DOLL, DECO_PIKACHU_DOLL
+ momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
+MomItems_2End: ; fd1ae
diff --git a/data/mon_menu_icons.asm b/data/mon_menu_icons.asm
new file mode 100644
index 000000000..f5c4386ad
--- /dev/null
+++ b/data/mon_menu_icons.asm
@@ -0,0 +1,252 @@
+; party menu icons
+ db ICON_BULBASAUR ; BULBASAUR
+ db ICON_BULBASAUR ; IVYSAUR
+ db ICON_BULBASAUR ; VENUSAUR
+ db ICON_CHARMANDER ; CHARMANDER
+ db ICON_CHARMANDER ; CHARMELEON
+ db ICON_BIGMON ; CHARIZARD
+ db ICON_SQUIRTLE ; SQUIRTLE
+ db ICON_SQUIRTLE ; WARTORTLE
+ db ICON_SQUIRTLE ; BLASTOISE
+ db ICON_CATERPILLAR ; CATERPIE
+ db ICON_CATERPILLAR ; METAPOD
+ db ICON_MOTH ; BUTTERFREE
+ db ICON_CATERPILLAR ; WEEDLE
+ db ICON_CATERPILLAR ; KAKUNA
+ db ICON_BUG ; BEEDRILL
+ db ICON_BIRD ; PIDGEY
+ db ICON_BIRD ; PIDGEOTTO
+ db ICON_BIRD ; PIDGEOT
+ db ICON_FOX ; RATTATA
+ db ICON_FOX ; RATICATE
+ db ICON_BIRD ; SPEAROW
+ db ICON_BIRD ; FEAROW
+ db ICON_SERPENT ; EKANS
+ db ICON_SERPENT ; ARBOK
+ db ICON_PIKACHU ; PIKACHU
+ db ICON_PIKACHU ; RAICHU
+ db ICON_MONSTER ; SANDSHREW
+ db ICON_MONSTER ; SANDSLASH
+ db ICON_FOX ; NIDORAN_F
+ db ICON_FOX ; NIDORINA
+ db ICON_MONSTER ; NIDOQUEEN
+ db ICON_FOX ; NIDORAN_M
+ db ICON_FOX ; NIDORINO
+ db ICON_MONSTER ; NIDOKING
+ db ICON_CLEFAIRY ; CLEFAIRY
+ db ICON_CLEFAIRY ; CLEFABLE
+ db ICON_FOX ; VULPIX
+ db ICON_FOX ; NINETALES
+ db ICON_JIGGLYPUFF ; JIGGLYPUFF
+ db ICON_JIGGLYPUFF ; WIGGLYTUFF
+ db ICON_BAT ; ZUBAT
+ db ICON_BAT ; GOLBAT
+ db ICON_ODDISH ; ODDISH
+ db ICON_ODDISH ; GLOOM
+ db ICON_ODDISH ; VILEPLUME
+ db ICON_BUG ; PARAS
+ db ICON_BUG ; PARASECT
+ db ICON_CATERPILLAR ; VENONAT
+ db ICON_MOTH ; VENOMOTH
+ db ICON_DIGLETT ; DIGLETT
+ db ICON_DIGLETT ; DUGTRIO
+ db ICON_FOX ; MEOWTH
+ db ICON_FOX ; PERSIAN
+ db ICON_MONSTER ; PSYDUCK
+ db ICON_MONSTER ; GOLDUCK
+ db ICON_FIGHTER ; MANKEY
+ db ICON_FIGHTER ; PRIMEAPE
+ db ICON_FOX ; GROWLITHE
+ db ICON_FOX ; ARCANINE
+ db ICON_POLIWAG ; POLIWAG
+ db ICON_POLIWAG ; POLIWHIRL
+ db ICON_POLIWAG ; POLIWRATH
+ db ICON_HUMANSHAPE ; ABRA
+ db ICON_HUMANSHAPE ; KADABRA
+ db ICON_HUMANSHAPE ; ALAKAZAM
+ db ICON_FIGHTER ; MACHOP
+ db ICON_FIGHTER ; MACHOKE
+ db ICON_FIGHTER ; MACHAMP
+ db ICON_ODDISH ; BELLSPROUT
+ db ICON_ODDISH ; WEEPINBELL
+ db ICON_ODDISH ; VICTREEBEL
+ db ICON_JELLYFISH ; TENTACOOL
+ db ICON_JELLYFISH ; TENTACRUEL
+ db ICON_GEODUDE ; GEODUDE
+ db ICON_GEODUDE ; GRAVELER
+ db ICON_GEODUDE ; GOLEM
+ db ICON_EQUINE ; PONYTA
+ db ICON_EQUINE ; RAPIDASH
+ db ICON_SLOWPOKE ; SLOWPOKE
+ db ICON_SLOWPOKE ; SLOWBRO
+ db ICON_VOLTORB ; MAGNEMITE
+ db ICON_VOLTORB ; MAGNETON
+ db ICON_BIRD ; FARFETCH_D
+ db ICON_BIRD ; DODUO
+ db ICON_BIRD ; DODRIO
+ db ICON_LAPRAS ; SEEL
+ db ICON_LAPRAS ; DEWGONG
+ db ICON_BLOB ; GRIMER
+ db ICON_BLOB ; MUK
+ db ICON_SHELL ; SHELLDER
+ db ICON_SHELL ; CLOYSTER
+ db ICON_GHOST ; GASTLY
+ db ICON_GHOST ; HAUNTER
+ db ICON_GHOST ; GENGAR
+ db ICON_SERPENT ; ONIX
+ db ICON_HUMANSHAPE ; DROWZEE
+ db ICON_HUMANSHAPE ; HYPNO
+ db ICON_SHELL ; KRABBY
+ db ICON_SHELL ; KINGLER
+ db ICON_VOLTORB ; VOLTORB
+ db ICON_VOLTORB ; ELECTRODE
+ db ICON_ODDISH ; EXEGGCUTE
+ db ICON_ODDISH ; EXEGGUTOR
+ db ICON_MONSTER ; CUBONE
+ db ICON_MONSTER ; MAROWAK
+ db ICON_FIGHTER ; HITMONLEE
+ db ICON_FIGHTER ; HITMONCHAN
+ db ICON_MONSTER ; LICKITUNG
+ db ICON_BLOB ; KOFFING
+ db ICON_BLOB ; WEEZING
+ db ICON_EQUINE ; RHYHORN
+ db ICON_MONSTER ; RHYDON
+ db ICON_CLEFAIRY ; CHANSEY
+ db ICON_ODDISH ; TANGELA
+ db ICON_MONSTER ; KANGASKHAN
+ db ICON_FISH ; HORSEA
+ db ICON_FISH ; SEADRA
+ db ICON_FISH ; GOLDEEN
+ db ICON_FISH ; SEAKING
+ db ICON_STARYU ; STARYU
+ db ICON_STARYU ; STARMIE
+ db ICON_HUMANSHAPE ; MR__MIME
+ db ICON_BUG ; SCYTHER
+ db ICON_HUMANSHAPE ; JYNX
+ db ICON_HUMANSHAPE ; ELECTABUZZ
+ db ICON_HUMANSHAPE ; MAGMAR
+ db ICON_BUG ; PINSIR
+ db ICON_EQUINE ; TAUROS
+ db ICON_FISH ; MAGIKARP
+ db ICON_GYARADOS ; GYARADOS
+ db ICON_LAPRAS ; LAPRAS
+ db ICON_BLOB ; DITTO
+ db ICON_FOX ; EEVEE
+ db ICON_FOX ; VAPOREON
+ db ICON_FOX ; JOLTEON
+ db ICON_FOX ; FLAREON
+ db ICON_VOLTORB ; PORYGON
+ db ICON_SHELL ; OMANYTE
+ db ICON_SHELL ; OMASTAR
+ db ICON_SHELL ; KABUTO
+ db ICON_SHELL ; KABUTOPS
+ db ICON_BIRD ; AERODACTYL
+ db ICON_SNORLAX ; SNORLAX
+ db ICON_BIRD ; ARTICUNO
+ db ICON_BIRD ; ZAPDOS
+ db ICON_BIRD ; MOLTRES
+ db ICON_SERPENT ; DRATINI
+ db ICON_SERPENT ; DRAGONAIR
+ db ICON_BIGMON ; DRAGONITE
+ db ICON_HUMANSHAPE ; MEWTWO
+ db ICON_HUMANSHAPE ; MEW
+ db ICON_ODDISH ; CHIKORITA
+ db ICON_ODDISH ; BAYLEEF
+ db ICON_ODDISH ; MEGANIUM
+ db ICON_FOX ; CYNDAQUIL
+ db ICON_FOX ; QUILAVA
+ db ICON_FOX ; TYPHLOSION
+ db ICON_MONSTER ; TOTODILE
+ db ICON_MONSTER ; CROCONAW
+ db ICON_MONSTER ; FERALIGATR
+ db ICON_FOX ; SENTRET
+ db ICON_FOX ; FURRET
+ db ICON_BIRD ; HOOTHOOT
+ db ICON_BIRD ; NOCTOWL
+ db ICON_BUG ; LEDYBA
+ db ICON_BUG ; LEDIAN
+ db ICON_BUG ; SPINARAK
+ db ICON_BUG ; ARIADOS
+ db ICON_BAT ; CROBAT
+ db ICON_FISH ; CHINCHOU
+ db ICON_FISH ; LANTURN
+ db ICON_PIKACHU ; PICHU
+ db ICON_CLEFAIRY ; CLEFFA
+ db ICON_JIGGLYPUFF ; IGGLYBUFF
+ db ICON_CLEFAIRY ; TOGEPI
+ db ICON_BIRD ; TOGETIC
+ db ICON_BIRD ; NATU
+ db ICON_BIRD ; XATU
+ db ICON_FOX ; MAREEP
+ db ICON_MONSTER ; FLAAFFY
+ db ICON_MONSTER ; AMPHAROS
+ db ICON_ODDISH ; BELLOSSOM
+ db ICON_JIGGLYPUFF ; MARILL
+ db ICON_JIGGLYPUFF ; AZUMARILL
+ db ICON_SUDOWOODO ; SUDOWOODO
+ db ICON_POLIWAG ; POLITOED
+ db ICON_ODDISH ; HOPPIP
+ db ICON_ODDISH ; SKIPLOOM
+ db ICON_ODDISH ; JUMPLUFF
+ db ICON_MONSTER ; AIPOM
+ db ICON_ODDISH ; SUNKERN
+ db ICON_ODDISH ; SUNFLORA
+ db ICON_BUG ; YANMA
+ db ICON_MONSTER ; WOOPER
+ db ICON_MONSTER ; QUAGSIRE
+ db ICON_FOX ; ESPEON
+ db ICON_FOX ; UMBREON
+ db ICON_BIRD ; MURKROW
+ db ICON_SLOWPOKE ; SLOWKING
+ db ICON_GHOST ; MISDREAVUS
+ db ICON_UNOWN ; UNOWN
+ db ICON_GHOST ; WOBBUFFET
+ db ICON_EQUINE ; GIRAFARIG
+ db ICON_BUG ; PINECO
+ db ICON_BUG ; FORRETRESS
+ db ICON_SERPENT ; DUNSPARCE
+ db ICON_BUG ; GLIGAR
+ db ICON_SERPENT ; STEELIX
+ db ICON_MONSTER ; SNUBBULL
+ db ICON_MONSTER ; GRANBULL
+ db ICON_FISH ; QWILFISH
+ db ICON_BUG ; SCIZOR
+ db ICON_BUG ; SHUCKLE
+ db ICON_BUG ; HERACROSS
+ db ICON_FOX ; SNEASEL
+ db ICON_MONSTER ; TEDDIURSA
+ db ICON_MONSTER ; URSARING
+ db ICON_BLOB ; SLUGMA
+ db ICON_BLOB ; MAGCARGO
+ db ICON_EQUINE ; SWINUB
+ db ICON_EQUINE ; PILOSWINE
+ db ICON_SHELL ; CORSOLA
+ db ICON_FISH ; REMORAID
+ db ICON_FISH ; OCTILLERY
+ db ICON_MONSTER ; DELIBIRD
+ db ICON_FISH ; MANTINE
+ db ICON_BIRD ; SKARMORY
+ db ICON_FOX ; HOUNDOUR
+ db ICON_FOX ; HOUNDOOM
+ db ICON_BIGMON ; KINGDRA
+ db ICON_EQUINE ; PHANPY
+ db ICON_EQUINE ; DONPHAN
+ db ICON_VOLTORB ; PORYGON2
+ db ICON_EQUINE ; STANTLER
+ db ICON_MONSTER ; SMEARGLE
+ db ICON_FIGHTER ; TYROGUE
+ db ICON_FIGHTER ; HITMONTOP
+ db ICON_HUMANSHAPE ; SMOOCHUM
+ db ICON_HUMANSHAPE ; ELEKID
+ db ICON_HUMANSHAPE ; MAGBY
+ db ICON_EQUINE ; MILTANK
+ db ICON_CLEFAIRY ; BLISSEY
+ db ICON_FOX ; RAIKOU
+ db ICON_FOX ; ENTEI
+ db ICON_FOX ; SUICUNE
+ db ICON_MONSTER ; LARVITAR
+ db ICON_MONSTER ; PUPITAR
+ db ICON_MONSTER ; TYRANITAR
+ db ICON_LUGIA ; LUGIA
+ db ICON_HO_OH ; HO_OH
+ db ICON_HUMANSHAPE ; CELEBI
diff --git a/data/mystery_gift/decos.asm b/data/mystery_gift/decos.asm
new file mode 100644
index 000000000..18cc0ac30
--- /dev/null
+++ b/data/mystery_gift/decos.asm
@@ -0,0 +1,37 @@
+ db DECOFLAG_PIKACHU_DOLL
+ db DECOFLAG_BULBASAUR_DOLL
+ db DECOFLAG_CHARMANDER_DOLL
+ db DECOFLAG_SQUIRTLE_DOLL
+ db DECOFLAG_POLIWAG_DOLL
+ db DECOFLAG_DIGLETT_DOLL
+ db DECOFLAG_STARMIE_DOLL
+ db DECOFLAG_MAGIKARP_DOLL
+ db DECOFLAG_ODDISH_DOLL
+ db DECOFLAG_GENGAR_DOLL
+ db DECOFLAG_CLEFAIRY_POSTER
+ db DECOFLAG_JIGGLYPUFF_POSTER
+ db DECOFLAG_SNES
+ db DECOFLAG_SHELLDER_DOLL
+ db DECOFLAG_VOLTORB_DOLL
+ db DECOFLAG_WEEDLE_DOLL
+ db DECOFLAG_MAGNAPLANT
+ db DECOFLAG_TROPICPLANT
+ db DECOFLAG_FAMICOM
+ db DECOFLAG_N64
+ db DECOFLAG_SURF_PIKACHU_DOLL
+ db DECOFLAG_JIGGLYPUFF_DOLL
+ db DECOFLAG_PINK_BED
+ db DECOFLAG_POLKADOT_BED
+ db DECOFLAG_RED_CARPET
+ db DECOFLAG_BLUE_CARPET
+ db DECOFLAG_YELLOW_CARPET
+ db DECOFLAG_GREEN_CARPET
+ db DECOFLAG_JUMBOPLANT
+ db DECOFLAG_VIRTUAL_BOY
+ db DECOFLAG_MACHOP_DOLL
+ db DECOFLAG_PIKACHU_POSTER
+ db DECOFLAG_TENTACOOL_DOLL
+ db DECOFLAG_BIG_ONIX_DOLL
+ db DECOFLAG_PIKACHU_BED
+ db DECOFLAG_GRIMER_DOLL
+ db DECOFLAG_UNOWN_DOLL
diff --git a/data/mystery_gift/items.asm b/data/mystery_gift/items.asm
new file mode 100644
index 000000000..1970d6826
--- /dev/null
+++ b/data/mystery_gift/items.asm
@@ -0,0 +1,37 @@
+ db BERRY
+ db PRZCUREBERRY
+ db MINT_BERRY
+ db ICE_BERRY
+ db BURNT_BERRY
+ db PSNCUREBERRY
+ db GUARD_SPEC
+ db X_DEFEND
+ db X_ATTACK
+ db BITTER_BERRY
+ db DIRE_HIT
+ db X_SPECIAL
+ db X_ACCURACY
+ db EON_MAIL
+ db MORPH_MAIL
+ db MUSIC_MAIL
+ db MIRACLEBERRY
+ db GOLD_BERRY
+ db REVIVE
+ db GREAT_BALL
+ db SUPER_REPEL
+ db MAX_REPEL
+ db ELIXER
+ db ETHER
+ db WATER_STONE
+ db FIRE_STONE
+ db LEAF_STONE
+ db THUNDERSTONE
+ db MAX_ETHER
+ db MAX_ELIXER
+ db MAX_REVIVE
+ db SCOPE_LENS
+ db HP_UP
+ db PP_UP
+ db RARE_CANDY
+ db BLUESKY_MAIL
+ db MIRAGE_MAIL
diff --git a/data/npc_trades.asm b/data/npc_trades.asm
new file mode 100644
index 000000000..1957d5c3f
--- /dev/null
+++ b/data/npc_trades.asm
@@ -0,0 +1,20 @@
+npctrade: MACRO
+; dialog set, requested mon, offered mon, nickname, dvs, item, OT ID, OT name, gender requested
+ db \1, \2, \3, \4, \5, \6, \7
+ shift
+ dw \7
+ db \8, \9, 0
+ENDM
+
+TRADE_EITHER_GENDER EQU 0
+TRADE_MALE_ONLY EQU 1
+TRADE_FEMALE_ONLY EQU 2
+
+; entries correspond to NPCTRADE_* constants
+ npctrade 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, 37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, 00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
+ npctrade 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
+ npctrade 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, 50082, "FOREST@@@@@", TRADE_EITHER_GENDER
diff --git a/data/odd_eggs.asm b/data/odd_eggs.asm
index 2a1e7d997..f3a3036f9 100644
--- a/data/odd_eggs.asm
+++ b/data/odd_eggs.asm
@@ -1,100 +1,4 @@
-GiveOddEgg: ; 1fb4b6
-
- ; Figure out which egg to give.
-
- ; Compare a random word to
- ; probabilities out of 0xffff.
- call Random
- ld hl, .Probabilities
- ld c, 0
- ld b, c
-.loop
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
-
- ; Break on $ffff.
- ld a, d
- cp $ffff / $100
- jr nz, .not_done
- ld a, e
- cp $ffff % $100
- jr z, .done
-.not_done
-
- ; Break when [hRandom] <= de.
- ld a, [hRandom + 1]
- cp d
- jr c, .done
- jr z, .ok
- jr .next
-.ok
- ld a, [hRandom + 0]
- cp e
- jr c, .done
- jr z, .done
-.next
- inc bc
- jr .loop
-.done
-
- ld hl, OddEggs
- ld a, OddEgg2 - OddEgg1
- call AddNTimes
-
- ld de, OddEggSpecies
- ld bc, PARTYMON_STRUCT_LENGTH + 2 * PKMN_NAME_LENGTH
- call CopyBytes
-
- ld a, EGG_TICKET
- ld [CurItem], a
- ld a, 1
- ld [wItemQuantityChangeBuffer], a
- ld a, -1
- ld [CurItemQuantity], a
- ld hl, NumItems
- call TossItem
-
- ; load species in wcd2a
- ld a, EGG
- ld [wMobileMonSpeciesBuffer], a
-
- ; load pointer to (wMobileMonSpeciesBuffer - 1) in wMobileMonSpeciesPointerBuffer
- ld a, (wMobileMonSpeciesBuffer - 1) % $100
- ld [wMobileMonSpeciesPointerBuffer], a
- ld a, (wMobileMonSpeciesBuffer - 1) / $100
- ld [wMobileMonSpeciesPointerBuffer + 1], a
- ; load pointer to OddEggSpecies in wMobileMonStructurePointerBuffer
- ld a, OddEggSpecies % $100
- ld [wMobileMonStructurePointerBuffer], a
- ld a, OddEggSpecies / $100
- ld [wMobileMonStructurePointerBuffer + 1], a
-
- ; load Odd Egg Name in wTempOddEggNickname
- ld hl, .Odd
- ld de, wTempOddEggNickname
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
-
- ; load pointer to wTempOddEggNickname in wMobileMonOTNamePointerBuffer
- ld a, wTempOddEggNickname % $100
- ld [wMobileMonOTNamePointerBuffer], a
- ld a, wTempOddEggNickname / $100
- ld [wMobileMonOTNamePointerBuffer + 1], a
- ; load pointer to wOddEggName in wMobileMonNicknamePointerBuffer
- ld a, wOddEggName % $100
- ld [wMobileMonNicknamePointerBuffer], a
- ld a, wOddEggName / $100
- ld [wMobileMonNicknamePointerBuffer + 1], a
- callba AddMobileMonToParty
- ret
-; 1fb546
-
-.Odd:
- db "ODD@@@@@@@@@"
-
-.Probabilities:
+OddEggProbabilities:
prob: MACRO
prob_total = prob_total + (\1)
diff --git a/data/outdoor_sprites.asm b/data/outdoor_sprites.asm
new file mode 100644
index 000000000..ef88fbb8a
--- /dev/null
+++ b/data/outdoor_sprites.asm
@@ -0,0 +1,694 @@
+OutdoorSprites: ; 144b8
+; Valid sprite IDs for each map group.
+ dw Group1Sprites
+ dw Group2Sprites
+ dw Group3Sprites
+ dw Group4Sprites
+ dw Group5Sprites
+ dw Group6Sprites
+ dw Group7Sprites
+ dw Group8Sprites
+ dw Group9Sprites
+ dw Group10Sprites
+ dw Group11Sprites
+ dw Group12Sprites
+ dw Group13Sprites
+ dw Group14Sprites
+ dw Group15Sprites
+ dw Group16Sprites
+ dw Group17Sprites
+ dw Group18Sprites
+ dw Group19Sprites
+ dw Group20Sprites
+ dw Group21Sprites
+ dw Group22Sprites
+ dw Group23Sprites
+ dw Group24Sprites
+ dw Group25Sprites
+ dw Group26Sprites
+; 144ec
+
+
+Group13Sprites: ; 144ec
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_TEACHER
+ db SPRITE_FISHER
+ db SPRITE_YOUNGSTER
+ db SPRITE_BLUE
+ db SPRITE_GRAMPS
+ db SPRITE_BUG_CATCHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_SWIMMER_GIRL
+ db SPRITE_SWIMMER_GUY
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 14503
+
+Group23Sprites: ; 14503
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_TEACHER
+ db SPRITE_FISHER
+ db SPRITE_YOUNGSTER
+ db SPRITE_BLUE
+ db SPRITE_GRAMPS
+ db SPRITE_BUG_CATCHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_SWIMMER_GIRL
+ db SPRITE_SWIMMER_GUY
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 1451a
+
+Group14Sprites: ; 1451a
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_TEACHER
+ db SPRITE_FISHER
+ db SPRITE_YOUNGSTER
+ db SPRITE_BLUE
+ db SPRITE_GRAMPS
+ db SPRITE_BUG_CATCHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_SWIMMER_GIRL
+ db SPRITE_SWIMMER_GUY
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 14531
+
+Group6Sprites: ; 14531
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_TEACHER
+ db SPRITE_FISHER
+ db SPRITE_YOUNGSTER
+ db SPRITE_BLUE
+ db SPRITE_GRAMPS
+ db SPRITE_BUG_CATCHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_SWIMMER_GIRL
+ db SPRITE_SWIMMER_GUY
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 14548
+
+Group7Sprites: ; 14548
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_SUPER_NERD
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_FISHER
+ db SPRITE_YOUNGSTER
+ db SPRITE_LASS
+ db SPRITE_POKEFAN_M
+ db SPRITE_ROCKET
+ db SPRITE_MISTY
+ db SPRITE_POKE_BALL
+ db SPRITE_SLOWPOKE
+; 1455f
+
+Group25Sprites: ; 1455f
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_SUPER_NERD
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_FISHER
+ db SPRITE_YOUNGSTER
+ db SPRITE_LASS
+ db SPRITE_POKEFAN_M
+ db SPRITE_ROCKET
+ db SPRITE_MISTY
+ db SPRITE_POKE_BALL
+ db SPRITE_SLOWPOKE
+; 14576
+
+Group21Sprites: ; 14576
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_FISHER
+ db SPRITE_POLIWAG
+ db SPRITE_TEACHER
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_LASS
+ db SPRITE_BIKER
+ db SPRITE_SILVER
+ db SPRITE_BLUE
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 1458d
+
+Group18Sprites: ; 1458d
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_POKEFAN_M
+ db SPRITE_MACHOP
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_FISHER
+ db SPRITE_TEACHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_BIKER
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 145a4
+
+Group12Sprites: ; 145a4
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_POKEFAN_M
+ db SPRITE_MACHOP
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_FISHER
+ db SPRITE_TEACHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_BIKER
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 145bb
+
+Group17Sprites: ; 145bb
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_POKEFAN_M
+ db SPRITE_MACHOP
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_FISHER
+ db SPRITE_TEACHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_BIKER
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 145d2
+
+Group16Sprites: ; 145d2
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_POKEFAN_M
+ db SPRITE_BUENA
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_FISHER
+ db SPRITE_TEACHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_MACHOP
+ db SPRITE_BIKER
+ db SPRITE_POKE_BALL
+ db SPRITE_BOULDER
+; 145e9
+
+Group24Sprites: ; 145e9
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_SILVER
+ db SPRITE_TEACHER
+ db SPRITE_FISHER
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_YOUNGSTER
+ db SPRITE_MONSTER
+ db SPRITE_GRAMPS
+ db SPRITE_BUG_CATCHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 14600
+
+Group26Sprites: ; 14600
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_SILVER
+ db SPRITE_TEACHER
+ db SPRITE_FISHER
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_YOUNGSTER
+ db SPRITE_MONSTER
+ db SPRITE_GRAMPS
+ db SPRITE_BUG_CATCHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 14617
+
+Group19Sprites: ; 14617
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_SILVER
+ db SPRITE_TEACHER
+ db SPRITE_FISHER
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_YOUNGSTER
+ db SPRITE_MONSTER
+ db SPRITE_GRAMPS
+ db SPRITE_BUG_CATCHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 1462e
+
+Group10Sprites: ; 1462e
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_FISHER
+ db SPRITE_LASS
+ db SPRITE_OFFICER
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_BUG_CATCHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_WEIRD_TREE
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 14645
+
+Group4Sprites: ; 14645
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_FISHER
+ db SPRITE_LASS
+ db SPRITE_OFFICER
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_BUG_CATCHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_WEIRD_TREE
+ db SPRITE_POKE_BALL
+ db SPRITE_FRUIT_TREE
+; 1465c
+
+Group8Sprites: ; 1465c
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_KURT_OUTSIDE
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_OFFICER
+ db SPRITE_POKEFAN_M
+ db SPRITE_BLACK_BELT
+ db SPRITE_TEACHER
+ db SPRITE_AZALEA_ROCKET
+ db SPRITE_LASS
+ db SPRITE_SILVER
+ db SPRITE_FRUIT_TREE
+ db SPRITE_SLOWPOKE
+; 14673
+
+Group11Sprites: ; 14673
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_POKE_BALL
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_OFFICER
+ db SPRITE_POKEFAN_M
+ db SPRITE_DAY_CARE_MON_1
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_ROCKET
+ db SPRITE_LASS
+ db SPRITE_DAY_CARE_MON_2
+ db SPRITE_FRUIT_TREE
+ db SPRITE_SLOWPOKE
+; 1468a
+
+Group22Sprites: ; 1468a
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_STANDING_YOUNGSTER
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_OLIVINE_RIVAL
+ db SPRITE_POKEFAN_M
+ db SPRITE_LASS
+ db SPRITE_BUENA
+ db SPRITE_SWIMMER_GIRL
+ db SPRITE_SAILOR
+ db SPRITE_POKEFAN_F
+ db SPRITE_SUPER_NERD
+ db SPRITE_TAUROS
+ db SPRITE_FRUIT_TREE
+ db SPRITE_ROCK
+; 146a1
+
+Group1Sprites: ; 146a1
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_STANDING_YOUNGSTER
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_OLIVINE_RIVAL
+ db SPRITE_POKEFAN_M
+ db SPRITE_LASS
+ db SPRITE_BUENA
+ db SPRITE_SWIMMER_GIRL
+ db SPRITE_SAILOR
+ db SPRITE_POKEFAN_F
+ db SPRITE_SUPER_NERD
+ db SPRITE_TAUROS
+ db SPRITE_FRUIT_TREE
+ db SPRITE_ROCK
+; 146b8
+
+Group9Sprites: ; 146b8
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_LANCE
+ db SPRITE_GRAMPS
+ db SPRITE_SUPER_NERD
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_FISHER
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_LASS
+ db SPRITE_YOUNGSTER
+ db SPRITE_GYARADOS
+ db SPRITE_FRUIT_TREE
+ db SPRITE_POKE_BALL
+; 146cf
+
+Group2Sprites: ; 146cf
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_LASS
+ db SPRITE_SUPER_NERD
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_POKEFAN_M
+ db SPRITE_BLACK_BELT
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_FISHER
+ db SPRITE_FRUIT_TREE
+ db SPRITE_POKE_BALL
+; 146e6
+
+Group5Sprites: ; 146e6
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_GRAMPS
+ db SPRITE_YOUNGSTER
+ db SPRITE_LASS
+ db SPRITE_SUPER_NERD
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_POKEFAN_M
+ db SPRITE_BLACK_BELT
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_FISHER
+ db SPRITE_FRUIT_TREE
+ db SPRITE_POKE_BALL
+; 146fd
+
+Group3Sprites: ; 146fd
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_GAMEBOY_KID
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_LASS
+ db SPRITE_POKEFAN_F
+ db SPRITE_TEACHER
+ db SPRITE_YOUNGSTER
+ db SPRITE_GROWLITHE
+ db SPRITE_POKEFAN_M
+ db SPRITE_ROCKER
+ db SPRITE_FISHER
+ db SPRITE_SCIENTIST
+ db SPRITE_POKE_BALL
+ db SPRITE_BOULDER
+; 14714
+
+Group15Sprites: ; 14714
+ db SPRITE_SUICUNE
+ db SPRITE_SILVER_TROPHY
+ db SPRITE_FAMICOM
+ db SPRITE_POKEDEX
+ db SPRITE_WILL
+ db SPRITE_KAREN
+ db SPRITE_NURSE
+ db SPRITE_OLD_LINK_RECEPTIONIST
+ db SPRITE_BIG_LAPRAS
+ db SPRITE_BIG_ONIX
+ db SPRITE_SUDOWOODO
+ db SPRITE_BIG_SNORLAX
+ db SPRITE_SAILOR
+ db SPRITE_FISHING_GURU
+ db SPRITE_GENTLEMAN
+ db SPRITE_SUPER_NERD
+ db SPRITE_HO_OH
+ db SPRITE_TEACHER
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_YOUNGSTER
+ db SPRITE_FAIRY
+ db SPRITE_POKE_BALL
+ db SPRITE_ROCK
+; 1472b
+
+Group20Sprites: ; 1472b
+ db SPRITE_OAK
+ db SPRITE_FISHER
+ db SPRITE_TEACHER
+ db SPRITE_TWIN
+ db SPRITE_POKEFAN_M
+ db SPRITE_GRAMPS
+ db SPRITE_FAIRY
+ db SPRITE_SILVER
+ db SPRITE_FISHING_GURU
+ db SPRITE_POKE_BALL
+ db SPRITE_POKEDEX
+; 14736
diff --git a/data/phone_contacts.asm b/data/phone_contacts.asm
new file mode 100644
index 000000000..c5614a64c
--- /dev/null
+++ b/data/phone_contacts.asm
@@ -0,0 +1,49 @@
+phone: macro
+; trainer class, trainer id, map, ?, script 1, ?, script 2
+ db \1, \2
+ map \3
+ db \4
+ dba \5
+ db \6
+ dba \7
+endm
+
+; entries correspond to PHONE_* constants
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_MOM, KRISS_HOUSE_1F, 7, MomPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_BILL, N_A, 7, BillPhoneScript1, 0, BillPhoneScript2
+ phone TRAINER_NONE, PHONECONTACT_ELM, ELMS_LAB, 7, ElmPhoneScript1, 0, ElmPhoneScript2
+ phone SCHOOLBOY, JACK1, NATIONAL_PARK, 7, JackPhoneScript1, 7, JackPhoneScript2
+ phone POKEFANF, BEVERLY1, NATIONAL_PARK, 7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
+ phone SAILOR, HUEY1, OLIVINE_LIGHTHOUSE_2F, 7, HueyPhoneScript1, 7, HueyPhoneScript2
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone COOLTRAINERM, GAVEN3, ROUTE_26, 7, GavenPhoneScript1, 7, GavenPhoneScript2
+ phone COOLTRAINERF, BETH1, ROUTE_26, 7, BethPhoneScript1, 7, BethPhoneScript2
+ phone BIRD_KEEPER, JOSE2, ROUTE_27, 7, JosePhoneScript1, 7, JosePhoneScript2
+ phone COOLTRAINERF, REENA1, ROUTE_27, 7, ReenaPhoneScript1, 7, ReenaPhoneScript2
+ phone YOUNGSTER, JOEY1, ROUTE_30, 7, JoeyPhoneScript1, 7, JoeyPhoneScript2
+ phone BUG_CATCHER, WADE1, ROUTE_31, 7, WadePhoneScript1, 7, WadePhoneScript2
+ phone FISHER, RALPH1, ROUTE_32, 7, RalphPhoneScript1, 7, RalphPhoneScript2
+ phone PICNICKER, LIZ1, ROUTE_32, 7, LizPhoneScript1, 7, LizPhoneScript2
+ phone HIKER, ANTHONY2, ROUTE_33, 7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
+ phone CAMPER, TODD1, ROUTE_34, 7, ToddPhoneScript1, 7, ToddPhoneScript2
+ phone PICNICKER, GINA1, ROUTE_34, 7, GinaPhoneScript1, 7, GinaPhoneScript2
+ phone JUGGLER, IRWIN1, ROUTE_35, 7, IrwinPhoneScript1, 7, IrwinPhoneScript2
+ phone BUG_CATCHER, ARNIE1, ROUTE_35, 7, ArniePhoneScript1, 7, ArniePhoneScript2
+ phone SCHOOLBOY, ALAN1, ROUTE_36, 7, AlanPhoneScript1, 7, AlanPhoneScript2
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone LASS, DANA1, ROUTE_38, 7, DanaPhoneScript1, 7, DanaPhoneScript2
+ phone SCHOOLBOY, CHAD1, ROUTE_38, 7, ChadPhoneScript1, 7, ChadPhoneScript2
+ phone POKEFANM, DEREK1, ROUTE_39, 7, DerekPhoneScript1, 7, DerekPhoneScript2
+ phone FISHER, TULLY1, ROUTE_42, 7, TullyPhoneScript1, 7, TullyPhoneScript2
+ phone POKEMANIAC, BRENT1, ROUTE_43, 7, BrentPhoneScript1, 7, BrentPhoneScript2
+ phone PICNICKER, TIFFANY3, ROUTE_43, 7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
+ phone BIRD_KEEPER, VANCE1, ROUTE_44, 7, VancePhoneScript1, 7, VancePhoneScript2
+ phone FISHER, WILTON1, ROUTE_44, 7, WiltonPhoneScript1, 7, WiltonPhoneScript2
+ phone BLACKBELT_T, KENJI3, ROUTE_45, 7, KenjiPhoneScript1, 7, KenjiPhoneScript2
+ phone HIKER, PARRY1, ROUTE_45, 7, ParryPhoneScript1, 7, ParryPhoneScript2
+ phone PICNICKER, ERIN1, ROUTE_46, 7, ErinPhoneScript1, 7, ErinPhoneScript2
+ phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1, 7, BuenaPhoneScript2
diff --git a/data/phone_special.asm b/data/phone_special.asm
new file mode 100644
index 000000000..5446e95c9
--- /dev/null
+++ b/data/phone_special.asm
@@ -0,0 +1,16 @@
+specialcall: macro
+; condition, contact, script
+ dw \1
+ db \2
+ dba \3
+endm
+
+; entries correspond to SPECIALCALL_* constants
+ specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+ specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+ specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+ specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+ specialcall SpecialCallWhereverYouAre, PHONE_ELM, ElmPhoneScript2
+ specialcall SpecialCallWhereverYouAre, PHONE_OAK, BikeShopPhoneScript
+ specialcall SpecialCallWhereverYouAre, PHONE_MOM, MomPhoneLectureScript
+ specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
diff --git a/data/spawn_points.asm b/data/spawn_points.asm
new file mode 100644
index 000000000..39b71c620
--- /dev/null
+++ b/data/spawn_points.asm
@@ -0,0 +1,39 @@
+spawn: MACRO
+; map, y, x
+ map \1
+ db \2, \3
+ENDM
+
+; entries correspond to SPAWN_* constants
+
+ spawn KRISS_HOUSE_2F, 3, 3
+ spawn VIRIDIAN_POKECENTER_1F, 5, 3
+
+ spawn PALLET_TOWN, 5, 6
+ spawn VIRIDIAN_CITY, 23, 26
+ spawn PEWTER_CITY, 13, 26
+ spawn CERULEAN_CITY, 19, 22
+ spawn ROUTE_10_NORTH, 11, 2
+ spawn VERMILION_CITY, 9, 6
+ spawn LAVENDER_TOWN, 5, 6
+ spawn SAFFRON_CITY, 9, 30
+ spawn CELADON_CITY, 29, 10
+ spawn FUCHSIA_CITY, 19, 28
+ spawn CINNABAR_ISLAND, 11, 12
+ spawn ROUTE_23, 9, 6
+
+ spawn NEW_BARK_TOWN, 13, 6
+ spawn CHERRYGROVE_CITY, 29, 4
+ spawn VIOLET_CITY, 31, 26
+ spawn ROUTE_32, 11, 74
+ spawn AZALEA_TOWN, 15, 10
+ spawn CIANWOOD_CITY, 23, 44
+ spawn GOLDENROD_CITY, 15, 28
+ spawn OLIVINE_CITY, 13, 22
+ spawn ECRUTEAK_CITY, 23, 28
+ spawn MAHOGANY_TOWN, 15, 14
+ spawn LAKE_OF_RAGE, 21, 29
+ spawn BLACKTHORN_CITY, 21, 30
+ spawn SILVER_CAVE_OUTSIDE, 23, 20
+ spawn FAST_SHIP_CABINS_SW_SSW_NW, 6, 2
+ spawn N_A, -1, -1
diff --git a/data/sprite_anim_seqs.asm b/data/sprite_anim_seqs.asm
new file mode 100644
index 000000000..8c70f96b3
--- /dev/null
+++ b/data/sprite_anim_seqs.asm
@@ -0,0 +1,92 @@
+; entries correspond to SPRITE_ANIM_INDEX_* constants
+ ; frameset sequence, tile
+; SPRITE_ANIM_INDEX_PARTY_MON
+ db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_SEQ_PARTY_MON, $00
+; SPRITE_ANIM_INDEX_01
+ db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00
+; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
+ db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05
+; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
+ db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00
+; SPRITE_ANIM_INDEX_GS_INTRO_STAR
+ db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR, SPRITE_ANIM_SEQ_GS_INTRO_STAR, $06
+; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
+ db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE, SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE, $06
+; SPRITE_ANIM_INDEX_SLOTS_GOLEM
+ db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM, SPRITE_ANIM_SEQ_SLOTS_GOLEM, $07
+; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
+ db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07
+; SPRITE_ANIM_INDEX_SLOTS_EGG
+ db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07
+; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+ db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_MAIL_CURSOR, $05
+; SPRITE_ANIM_INDEX_RED_WALK
+ db SPRITE_ANIM_FRAMESET_RED_WALK, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_0B
+ db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0D, $08
+; SPRITE_ANIM_INDEX_DUMMY_GAME
+ db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0E, $08
+; SPRITE_ANIM_INDEX_0D
+ db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0F, $08
+; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
+ db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL, SPRITE_ANIM_SEQ_TRADE_POKE_BALL, $00
+; SPRITE_ANIM_INDEX_TRADE_POOF
+ db SPRITE_ANIM_FRAMESET_TRADE_POOF, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
+ db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE, SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE, $00
+; SPRITE_ANIM_INDEX_TRADEMON_ICON
+ db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
+; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
+ db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
+; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
+ db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
+; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
+ db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB, SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB, $00
+; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
+ db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_LEAF
+ db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_CUT_LEAVES, $00
+; SPRITE_ANIM_INDEX_CUT_TREE
+ db SPRITE_ANIM_FRAMESET_CUT_TREE, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_FLY_LEAF
+ db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00
+; SPRITE_ANIM_INDEX_EGG_CRACK
+ db SPRITE_ANIM_FRAMESET_EGG_CRACK, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_1A
+ db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00
+; SPRITE_ANIM_INDEX_HEADBUTT
+ db SPRITE_ANIM_FRAMESET_HEADBUTT, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_EGG_HATCH
+ db SPRITE_ANIM_FRAMESET_EGG_HATCH, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
+; SPRITE_ANIM_INDEX_1D
+ db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00
+; SPRITE_ANIM_INDEX_BLUE_WALK
+ db SPRITE_ANIM_FRAMESET_BLUE_WALK, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
+ db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_20
+ db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_21
+ db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_22
+ db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_23
+ db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00
+; SPRITE_ANIM_INDEX_24
+ db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00
+; SPRITE_ANIM_INDEX_25
+ db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_INTRO_SUICUNE
+ db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE, SPRITE_ANIM_SEQ_INTRO_SUICUNE, $00
+; SPRITE_ANIM_INDEX_INTRO_PICHU
+ db SPRITE_ANIM_FRAMESET_INTRO_PICHU, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
+; SPRITE_ANIM_INDEX_INTRO_WOOPER
+ db SPRITE_ANIM_FRAMESET_INTRO_WOOPER, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
+; SPRITE_ANIM_INDEX_INTRO_UNOWN
+ db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1, SPRITE_ANIM_SEQ_INTRO_UNOWN, $00
+; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
+ db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F, SPRITE_ANIM_SEQ_INTRO_UNOWN_F, $00
+; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
+ db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY, $00
+; SPRITE_ANIM_INDEX_CELEBI
+ db SPRITE_ANIM_FRAMESET_CELEBI_LEFT, SPRITE_ANIM_SEQ_NULL, $00 ; 2c
diff --git a/data/sprite_mons.asm b/data/sprite_mons.asm
new file mode 100644
index 000000000..62f7fc15d
--- /dev/null
+++ b/data/sprite_mons.asm
@@ -0,0 +1,37 @@
+; entries correspond to SPRITE_* constants past SPRITE_POKEMON
+
+ db UNOWN
+ db GEODUDE
+ db GROWLITHE
+ db WEEDLE
+ db SHELLDER
+ db ODDISH
+ db GENGAR
+ db ZUBAT
+ db MAGIKARP
+ db SQUIRTLE
+ db TOGEPI
+ db BUTTERFREE
+ db DIGLETT
+ db POLIWAG
+ db PIKACHU
+ db CLEFAIRY
+ db CHARMANDER
+ db JYNX
+ db STARMIE
+ db BULBASAUR
+ db JIGGLYPUFF
+ db GRIMER
+ db EKANS
+ db PARAS
+ db TENTACOOL
+ db TAUROS
+ db MACHOP
+ db VOLTORB
+ db LAPRAS
+ db RHYDON
+ db MOLTRES
+ db SNORLAX
+ db GYARADOS
+ db LUGIA
+ db HO_OH
diff --git a/data/time_capsule/mon_order.asm b/data/time_capsule/mon_order.asm
new file mode 100644
index 000000000..2769794e6
--- /dev/null
+++ b/data/time_capsule/mon_order.asm
@@ -0,0 +1,253 @@
+ db RHYDON
+ db KANGASKHAN
+ db NIDORAN_M
+ db CLEFAIRY
+ db SPEAROW
+ db VOLTORB
+ db NIDOKING
+ db SLOWBRO
+ db IVYSAUR
+ db EXEGGUTOR
+ db LICKITUNG
+ db EXEGGCUTE
+ db GRIMER
+ db GENGAR
+ db NIDORAN_F
+ db NIDOQUEEN
+ db CUBONE
+ db RHYHORN
+ db LAPRAS
+ db ARCANINE
+ db MEW
+ db GYARADOS
+ db SHELLDER
+ db TENTACOOL
+ db GASTLY
+ db SCYTHER
+ db STARYU
+ db BLASTOISE
+ db PINSIR
+ db TANGELA
+ db SCIZOR ; MISSINGNO.
+ db SHUCKLE ; MISSINGNO.
+ db GROWLITHE
+ db ONIX
+ db FEAROW
+ db PIDGEY
+ db SLOWPOKE
+ db KADABRA
+ db GRAVELER
+ db CHANSEY
+ db MACHOKE
+ db MR__MIME
+ db HITMONLEE
+ db HITMONCHAN
+ db ARBOK
+ db PARASECT
+ db PSYDUCK
+ db DROWZEE
+ db GOLEM
+ db HERACROSS ; MISSINGNO.
+ db MAGMAR
+ db HO_OH ; MISSINGNO.
+ db ELECTABUZZ
+ db MAGNETON
+ db KOFFING
+ db SNEASEL ; MISSINGNO.
+ db MANKEY
+ db SEEL
+ db DIGLETT
+ db TAUROS
+ db TEDDIURSA ; MISSINGNO.
+ db URSARING ; MISSINGNO.
+ db SLUGMA ; MISSINGNO.
+ db FARFETCH_D
+ db VENONAT
+ db DRAGONITE
+ db MAGCARGO ; MISSINGNO.
+ db SWINUB ; MISSINGNO.
+ db PILOSWINE ; MISSINGNO.
+ db DODUO
+ db POLIWAG
+ db JYNX
+ db MOLTRES
+ db ARTICUNO
+ db ZAPDOS
+ db DITTO
+ db MEOWTH
+ db KRABBY
+ db CORSOLA ; MISSINGNO.
+ db REMORAID ; MISSINGNO.
+ db OCTILLERY ; MISSINGNO.
+ db VULPIX
+ db NINETALES
+ db PIKACHU
+ db RAICHU
+ db DELIBIRD ; MISSINGNO.
+ db MANTINE ; MISSINGNO.
+ db DRATINI
+ db DRAGONAIR
+ db KABUTO
+ db KABUTOPS
+ db HORSEA
+ db SEADRA
+ db SKARMORY ; MISSINGNO.
+ db HOUNDOUR ; MISSINGNO.
+ db SANDSHREW
+ db SANDSLASH
+ db OMANYTE
+ db OMASTAR
+ db JIGGLYPUFF
+ db WIGGLYTUFF
+ db EEVEE
+ db FLAREON
+ db JOLTEON
+ db VAPOREON
+ db MACHOP
+ db ZUBAT
+ db EKANS
+ db PARAS
+ db POLIWHIRL
+ db POLIWRATH
+ db WEEDLE
+ db KAKUNA
+ db BEEDRILL
+ db HOUNDOOM ; MISSINGNO.
+ db DODRIO
+ db PRIMEAPE
+ db DUGTRIO
+ db VENOMOTH
+ db DEWGONG
+ db KINGDRA ; MISSINGNO.
+ db PHANPY ; MISSINGNO.
+ db CATERPIE
+ db METAPOD
+ db BUTTERFREE
+ db MACHAMP
+ db DONPHAN ; MISSINGNO.
+ db GOLDUCK
+ db HYPNO
+ db GOLBAT
+ db MEWTWO
+ db SNORLAX
+ db MAGIKARP
+ db PORYGON2 ; MISSINGNO.
+ db STANTLER ; MISSINGNO.
+ db MUK
+ db SMEARGLE ; MISSINGNO.
+ db KINGLER
+ db CLOYSTER
+ db TYROGUE ; MISSINGNO.
+ db ELECTRODE
+ db CLEFABLE
+ db WEEZING
+ db PERSIAN
+ db MAROWAK
+ db HITMONTOP ; MISSINGNO.
+ db HAUNTER
+ db ABRA
+ db ALAKAZAM
+ db PIDGEOTTO
+ db PIDGEOT
+ db STARMIE
+ db BULBASAUR
+ db VENUSAUR
+ db TENTACRUEL
+ db SMOOCHUM ; MISSINGNO.
+ db GOLDEEN
+ db SEAKING
+ db ELEKID ; MISSINGNO.
+ db MAGBY ; MISSINGNO.
+ db MILTANK ; MISSINGNO.
+ db BLISSEY ; MISSINGNO.
+ db PONYTA
+ db RAPIDASH
+ db RATTATA
+ db RATICATE
+ db NIDORINO
+ db NIDORINA
+ db GEODUDE
+ db PORYGON
+ db AERODACTYL
+ db RAIKOU ; MISSINGNO.
+ db MAGNEMITE
+ db ENTEI ; MISSINGNO.
+ db SUICUNE ; MISSINGNO.
+ db CHARMANDER
+ db SQUIRTLE
+ db CHARMELEON
+ db WARTORTLE
+ db CHARIZARD
+ db LARVITAR ; MISSINGNO.
+ db PUPITAR ; MISSINGNO. KABUTOPS FOSSIL
+ db TYRANITAR ; MISSINGNO. AERODACTYL FOSSIL
+ db LUGIA ; MISSINGNO. GHOST
+ db ODDISH
+ db GLOOM
+ db VILEPLUME
+ db BELLSPROUT
+ db WEEPINBELL
+ db VICTREEBEL
+
+ db CHIKORITA
+ db BAYLEEF
+ db MEGANIUM
+ db CYNDAQUIL
+ db QUILAVA
+ db TYPHLOSION
+ db TOTODILE
+ db CROCONAW
+ db FERALIGATR
+ db SENTRET
+ db FURRET
+ db HOOTHOOT
+ db NOCTOWL
+ db LEDYBA
+ db LEDIAN
+ db SPINARAK
+ db ARIADOS
+ db CROBAT
+ db CHINCHOU
+ db LANTURN
+ db PICHU
+ db CLEFFA
+ db IGGLYBUFF
+ db TOGEPI
+ db TOGETIC
+ db NATU
+ db XATU
+ db MAREEP
+ db FLAAFFY
+ db AMPHAROS
+ db BELLOSSOM
+ db MARILL
+ db AZUMARILL
+ db SUDOWOODO
+ db POLITOED
+ db HOPPIP
+ db SKIPLOOM
+ db JUMPLUFF
+ db AIPOM
+ db SUNKERN
+ db SUNFLORA
+ db YANMA
+ db WOOPER
+ db QUAGSIRE
+ db ESPEON
+ db UMBREON
+ db MURKROW
+ db SLOWKING
+ db MISDREAVUS
+ db UNOWN
+ db WOBBUFFET
+ db GIRAFARIG
+ db PINECO
+ db FORRETRESS
+ db DUNSPARCE
+ db GLIGAR
+ db STEELIX
+ db SNUBBULL
+ db GRANBULL
+ db QWILFISH
+ db WOBBUFFET
+ db WOBBUFFET
diff --git a/data/time_capsule/special_stats.asm b/data/time_capsule/special_stats.asm
new file mode 100644
index 000000000..7da90e1c9
--- /dev/null
+++ b/data/time_capsule/special_stats.asm
@@ -0,0 +1,152 @@
+; The original base Special stat for each Pokémon from Red/Blue
+ db 65 ; BULBASAUR
+ db 80 ; IVYSAUR
+ db 100 ; VENUSAUR
+ db 50 ; CHARMANDER
+ db 65 ; CHARMELEON
+ db 85 ; CHARIZARD
+ db 50 ; SQUIRTLE
+ db 65 ; WARTORTLE
+ db 85 ; BLASTOISE
+ db 20 ; CATERPIE
+ db 25 ; METAPOD
+ db 80 ; BUTTERFREE
+ db 20 ; WEEDLE
+ db 25 ; KAKUNA
+ db 45 ; BEEDRILL
+ db 35 ; PIDGEY
+ db 50 ; PIDGEOTTO
+ db 70 ; PIDGEOT
+ db 25 ; RATTATA
+ db 50 ; RATICATE
+ db 31 ; SPEAROW
+ db 61 ; FEAROW
+ db 40 ; EKANS
+ db 65 ; ARBOK
+ db 50 ; PIKACHU
+ db 90 ; RAICHU
+ db 30 ; SANDSHREW
+ db 55 ; SANDSLASH
+ db 40 ; NIDORAN_F
+ db 55 ; NIDORINA
+ db 75 ; NIDOQUEEN
+ db 40 ; NIDORAN_M
+ db 55 ; NIDORINO
+ db 75 ; NIDOKING
+ db 60 ; CLEFAIRY
+ db 85 ; CLEFABLE
+ db 65 ; VULPIX
+ db 100 ; NINETALES
+ db 25 ; JIGGLYPUFF
+ db 50 ; WIGGLYTUFF
+ db 40 ; ZUBAT
+ db 75 ; GOLBAT
+ db 75 ; ODDISH
+ db 85 ; GLOOM
+ db 100 ; VILEPLUME
+ db 55 ; PARAS
+ db 80 ; PARASECT
+ db 40 ; VENONAT
+ db 90 ; VENOMOTH
+ db 45 ; DIGLETT
+ db 70 ; DUGTRIO
+ db 40 ; MEOWTH
+ db 65 ; PERSIAN
+ db 50 ; PSYDUCK
+ db 80 ; GOLDUCK
+ db 35 ; MANKEY
+ db 60 ; PRIMEAPE
+ db 50 ; GROWLITHE
+ db 80 ; ARCANINE
+ db 40 ; POLIWAG
+ db 50 ; POLIWHIRL
+ db 70 ; POLIWRATH
+ db 105 ; ABRA
+ db 120 ; KADABRA
+ db 135 ; ALAKAZAM
+ db 35 ; MACHOP
+ db 50 ; MACHOKE
+ db 65 ; MACHAMP
+ db 70 ; BELLSPROUT
+ db 85 ; WEEPINBELL
+ db 100 ; VICTREEBEL
+ db 100 ; TENTACOOL
+ db 120 ; TENTACRUEL
+ db 30 ; GEODUDE
+ db 45 ; GRAVELER
+ db 55 ; GOLEM
+ db 65 ; PONYTA
+ db 80 ; RAPIDASH
+ db 40 ; SLOWPOKE
+ db 80 ; SLOWBRO
+ db 95 ; MAGNEMITE
+ db 120 ; MAGNETON
+ db 58 ; FARFETCH_D
+ db 35 ; DODUO
+ db 60 ; DODRIO
+ db 70 ; SEEL
+ db 95 ; DEWGONG
+ db 40 ; GRIMER
+ db 65 ; MUK
+ db 45 ; SHELLDER
+ db 85 ; CLOYSTER
+ db 100 ; GASTLY
+ db 115 ; HAUNTER
+ db 130 ; GENGAR
+ db 30 ; ONIX
+ db 90 ; DROWZEE
+ db 115 ; HYPNO
+ db 25 ; KRABBY
+ db 50 ; KINGLER
+ db 55 ; VOLTORB
+ db 80 ; ELECTRODE
+ db 60 ; EXEGGCUTE
+ db 125 ; EXEGGUTOR
+ db 40 ; CUBONE
+ db 50 ; MAROWAK
+ db 35 ; HITMONLEE
+ db 35 ; HITMONCHAN
+ db 60 ; LICKITUNG
+ db 60 ; KOFFING
+ db 85 ; WEEZING
+ db 30 ; RHYHORN
+ db 45 ; RHYDON
+ db 105 ; CHANSEY
+ db 100 ; TANGELA
+ db 40 ; KANGASKHAN
+ db 70 ; HORSEA
+ db 95 ; SEADRA
+ db 50 ; GOLDEEN
+ db 80 ; SEAKING
+ db 70 ; STARYU
+ db 100 ; STARMIE
+ db 100 ; MR__MIME
+ db 55 ; SCYTHER
+ db 95 ; JYNX
+ db 85 ; ELECTABUZZ
+ db 85 ; MAGMAR
+ db 55 ; PINSIR
+ db 70 ; TAUROS
+ db 20 ; MAGIKARP
+ db 100 ; GYARADOS
+ db 95 ; LAPRAS
+ db 48 ; DITTO
+ db 65 ; EEVEE
+ db 110 ; VAPOREON
+ db 110 ; JOLTEON
+ db 110 ; FLAREON
+ db 75 ; PORYGON
+ db 90 ; OMANYTE
+ db 115 ; OMASTAR
+ db 45 ; KABUTO
+ db 70 ; KABUTOPS
+ db 60 ; AERODACTYL
+ db 65 ; SNORLAX
+ db 125 ; ARTICUNO
+ db 125 ; ZAPDOS
+ db 125 ; MOLTRES
+ db 50 ; DRATINI
+ db 70 ; DRAGONAIR
+ db 100 ; DRAGONITE
+ db 154 ; MEWTWO
+ db 100 ; MEW
diff --git a/data/tmhm_moves.asm b/data/tmhm_moves.asm
new file mode 100644
index 000000000..be9d4916b
--- /dev/null
+++ b/data/tmhm_moves.asm
@@ -0,0 +1,67 @@
+; TMs
+ db DYNAMICPUNCH
+ db HEADBUTT
+ db CURSE
+ db ROLLOUT
+ db ROAR
+ db TOXIC
+ db ZAP_CANNON
+ db ROCK_SMASH
+ db PSYCH_UP
+ db HIDDEN_POWER
+ db SUNNY_DAY
+ db SWEET_SCENT
+ db SNORE
+ db BLIZZARD
+ db HYPER_BEAM
+ db ICY_WIND
+ db PROTECT
+ db RAIN_DANCE
+ db GIGA_DRAIN
+ db ENDURE
+ db FRUSTRATION
+ db SOLARBEAM
+ db IRON_TAIL
+ db DRAGONBREATH
+ db THUNDER
+ db EARTHQUAKE
+ db RETURN
+ db DIG
+ db PSYCHIC_M
+ db SHADOW_BALL
+ db MUD_SLAP
+ db DOUBLE_TEAM
+ db ICE_PUNCH
+ db SWAGGER
+ db SLEEP_TALK
+ db SLUDGE_BOMB
+ db SANDSTORM
+ db FIRE_BLAST
+ db SWIFT
+ db DEFENSE_CURL
+ db THUNDERPUNCH
+ db DREAM_EATER
+ db DETECT
+ db REST
+ db ATTRACT
+ db THIEF
+ db STEEL_WING
+ db FIRE_PUNCH
+ db FURY_CUTTER
+ db NIGHTMARE
+
+; HMs
+ db CUT
+ db FLY
+ db SURF
+ db STRENGTH
+ db FLASH
+ db WHIRLPOOL
+ db WATERFALL
+
+; Move tutor
+ db FLAMETHROWER
+ db THUNDERBOLT
+ db ICE_BEAM
+
+ db 0 ; end
diff --git a/data/wild/bug_contest_mons.asm b/data/wild/bug_contest_mons.asm
new file mode 100644
index 000000000..1b74fb3ee
--- /dev/null
+++ b/data/wild/bug_contest_mons.asm
@@ -0,0 +1,12 @@
+ ; %, species, min, max
+ db 20, CATERPIE, 7, 18
+ db 20, WEEDLE, 7, 18
+ db 10, METAPOD, 9, 18
+ db 10, KAKUNA, 9, 18
+ db 5, BUTTERFREE, 12, 15
+ db 5, BEEDRILL, 12, 15
+ db 10, VENONAT, 10, 16
+ db 10, PARAS, 10, 17
+ db 5, SCYTHER, 13, 14
+ db 5, PINSIR, 13, 14
+ db -1, VENOMOTH, 30, 40
diff --git a/data/wild/probabilities.asm b/data/wild/probabilities.asm
new file mode 100644
index 000000000..a18e9d336
--- /dev/null
+++ b/data/wild/probabilities.asm
@@ -0,0 +1,15 @@
+GrassMonProbTable: ; 2a1cb
+ db 30, $0 ; 30% chance
+ db 60, $2 ; 30% chance
+ db 80, $4 ; 20% chance
+ db 90, $6 ; 10% chance
+ db 95, $8 ; 5% chance
+ db 99, $a ; 4% chance
+ db 100, $c ; 1% chance
+; 2a1d9
+
+WaterMonProbTable: ; 2a1d9
+ db 60, $0 ; 60% chance
+ db 90, $2 ; 30% chance
+ db 100, $4 ; 10% chance
+; 2a1df
diff --git a/data/wild/roammon_maps.asm b/data/wild/roammon_maps.asm
new file mode 100644
index 000000000..403ebef25
--- /dev/null
+++ b/data/wild/roammon_maps.asm
@@ -0,0 +1,31 @@
+; Maps that roaming monsters can be on, and possible maps they can jump to.
+; Notably missing are Route 40 and Route 41, which are water routes.
+
+roam_map: macro
+; map, # of other maps, other maps
+ map \1
+ db \2
+rept \2
+ map \3
+ shift
+endr
+ db 0
+endm
+
+ roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46
+ roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31
+ roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36
+ roam_map ROUTE_32, 3, ROUTE_36, ROUTE_31, ROUTE_33
+ roam_map ROUTE_33, 2, ROUTE_32, ROUTE_34
+ roam_map ROUTE_34, 2, ROUTE_33, ROUTE_35
+ roam_map ROUTE_35, 2, ROUTE_34, ROUTE_36
+ roam_map ROUTE_36, 4, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37
+ roam_map ROUTE_37, 3, ROUTE_36, ROUTE_38, ROUTE_42
+ roam_map ROUTE_38, 3, ROUTE_37, ROUTE_39, ROUTE_42
+ roam_map ROUTE_39, 1, ROUTE_38
+ roam_map ROUTE_42, 4, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38
+ roam_map ROUTE_43, 2, ROUTE_42, ROUTE_44
+ roam_map ROUTE_44, 3, ROUTE_42, ROUTE_43, ROUTE_45
+ roam_map ROUTE_45, 2, ROUTE_44, ROUTE_46
+ roam_map ROUTE_46, 2, ROUTE_45, ROUTE_29
+ db -1 ; end
diff --git a/data/wild/treemon_maps.asm b/data/wild/treemon_maps.asm
new file mode 100644
index 000000000..47491c2c9
--- /dev/null
+++ b/data/wild/treemon_maps.asm
@@ -0,0 +1,50 @@
+treemon_map: macro
+ map \1
+ db \2 ; treemon set
+endm
+
+TreeMonMaps: ; b825e
+ treemon_map ROUTE_26, 4
+ treemon_map ROUTE_27, 4
+ treemon_map ROUTE_28, 0
+ treemon_map ROUTE_29, 3
+ treemon_map ROUTE_30, 3
+ treemon_map ROUTE_31, 3
+ treemon_map ROUTE_32, 4
+ treemon_map ROUTE_33, 2
+ treemon_map ROUTE_34, 3
+ treemon_map ROUTE_35, 3
+ treemon_map ROUTE_36, 3
+ treemon_map ROUTE_37, 3
+ treemon_map ROUTE_38, 3
+ treemon_map ROUTE_39, 3
+ treemon_map ROUTE_40, 0
+ treemon_map ROUTE_41, 0
+ treemon_map ROUTE_42, 2
+ treemon_map ROUTE_43, 5
+ treemon_map ROUTE_44, 1
+ treemon_map ROUTE_45, 1
+ treemon_map ROUTE_46, 1
+ treemon_map NEW_BARK_TOWN, 0
+ treemon_map CHERRYGROVE_CITY, 0
+ treemon_map VIOLET_CITY, 0
+ treemon_map AZALEA_TOWN, 2
+ treemon_map CIANWOOD_CITY, 0
+ treemon_map GOLDENROD_CITY, 0
+ treemon_map OLIVINE_CITY, 0
+ treemon_map ECRUTEAK_CITY, 0
+ treemon_map MAHOGANY_TOWN, 0
+ treemon_map LAKE_OF_RAGE, 5
+ treemon_map BLACKTHORN_CITY, 0
+ treemon_map SILVER_CAVE_OUTSIDE, 0
+ treemon_map ILEX_FOREST, 6
+ db -1
+; b82c5
+
+RockMonMaps: ; b82c5
+ treemon_map CIANWOOD_CITY, 7
+ treemon_map ROUTE_40, 7
+ treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
+ treemon_map SLOWPOKE_WELL_B1F, 7
+ db -1
+; b82d2
diff --git a/data/wild/treemons.asm b/data/wild/treemons.asm
new file mode 100644
index 000000000..0cb8fa83d
--- /dev/null
+++ b/data/wild/treemons.asm
@@ -0,0 +1,128 @@
+TreeMons: ; b82e8
+ dw TreeMons1
+ dw TreeMons1
+ dw TreeMons2
+ dw TreeMons3
+ dw TreeMons4
+ dw TreeMons5
+ dw TreeMons6
+ dw RockMons
+ dw TreeMons1
+
+; Two tables each (common, rare).
+; Structure:
+; db %, species, level
+
+TreeMons1: ; b82fa
+; common
+ db 50, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+; rare
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+TreeMons2: ; b8320
+; common
+ db 50, SPEAROW, 10
+ db 15, EKANS, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+; rare
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+TreeMons3: ; b8346
+; common
+ db 50, HOOTHOOT, 10
+ db 15, SPINARAK, 10
+ db 15, LEDYBA, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+; rare
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons4: ; b836c
+; common
+ db 50, HOOTHOOT, 10
+ db 15, EKANS, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+; rare
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons5: ; b8392
+; common
+ db 50, HOOTHOOT, 10
+ db 15, VENONAT, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+; rare
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons6: ; b83b8
+; common
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, NOCTOWL, 10
+ db 5, BUTTERFREE, 10
+ db 5, BEEDRILL, 10
+ db -1
+; rare
+ db 50, HOOTHOOT, 10
+ db 15, CATERPIE, 10
+ db 15, WEEDLE, 10
+ db 10, HOOTHOOT, 10
+ db 5, METAPOD, 10
+ db 5, KAKUNA, 10
+ db -1
+
+RockMons: ; b83de
+ db 90, KRABBY, 15
+ db 10, SHUCKLE, 15
+ db -1
+; b83e5
diff --git a/engine/battle_tower.asm b/engine/battle_tower.asm
new file mode 100644
index 000000000..b880a099b
--- /dev/null
+++ b/engine/battle_tower.asm
@@ -0,0 +1,210 @@
+Function_LoadOpponentTrainerAndPokemons: ; 1f8000
+ ld a, [rSVBK]
+ push af
+ ld a, BANK(BT_OTTrainer)
+ ld [rSVBK], a
+
+ ; Fill BT_OTTrainer with zeros
+ xor a
+ ld hl, BT_OTTrainer
+ ld bc, BT_OTTrainerEnd - BT_OTTrainer
+ call ByteFill
+
+ ; Write $ff into the Item-Slots
+ ld a, $ff
+ ld [BT_OTPkmn1Item], a
+ ld [BT_OTPkmn2Item], a
+ ld [BT_OTPkmn3Item], a
+
+ ; Set BT_OTTrainer as start address to write the following data to
+ ld de, BT_OTTrainer
+
+ ld a, [hRandomAdd]
+ ld b, a
+.resample ; loop to find a random trainer
+ call Random
+ ld a, [hRandomAdd]
+ add b
+ ld b, a ; b contains the nr of the trainer
+IF DEF(CRYSTAL11)
+ and (1 << 7) - 1
+ cp 70
+ELSE
+ and (1 << 5) - 1
+ cp 21
+ENDC
+ jr nc, .resample
+ ld b, a
+
+ ld a, BANK(sBTTrainers)
+ call GetSRAMBank
+
+ ld c, BATTLETOWER_NROFTRAINERS
+ ld hl, sBTTrainers
+.next_trainer
+ ld a, [hli]
+ cp b
+ jr z, .resample
+ dec c
+ jr nz, .next_trainer ; c <= 7 initialise all 7 trainers?
+
+ ld hl, sBTTrainers
+ ld a, [sNrOfBeatenBattleTowerTrainers]
+ ld c, a
+ ld a, b
+ ld b, 0
+ add hl, bc
+ ld [hl], a
+
+ call CloseSRAM
+
+ push af
+; Copy name (10 bytes) and class (1 byte) of trainer
+ ld hl, BattleTowerTrainers
+ ld bc, NAME_LENGTH
+ call AddNTimes
+ ld bc, NAME_LENGTH
+ call CopyBytes
+
+ call Function_LoadRandomBattleTowerPkmn
+ pop af
+
+ ld hl, BattleTowerTrainerData
+ ld bc, BATTLETOWER_TRAINERDATALENGTH
+ call AddNTimes
+ ld bc, BATTLETOWER_TRAINERDATALENGTH
+.copy_bt_trainer_data_loop
+ ld a, BANK(BattleTowerTrainerData)
+ call GetFarByte
+ ld [de], a
+ inc hl
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .copy_bt_trainer_data_loop
+
+ pop af
+ ld [rSVBK], a
+
+ ret
+
+
+Function_LoadRandomBattleTowerPkmn: ; 1f8081
+ ld c, BATTLETOWER_NROFPKMNS
+.loop
+ push bc
+ ld a, BANK(sBTPkmnPrevTrainer1)
+ call GetSRAMBank
+
+.FindARandomBattleTowerPkmn:
+ ; From Which LevelGroup are the Pkmn loaded
+ ; a = 1..10
+ ld a, [wBTChoiceOfLvlGroup] ; [$d800]
+ dec a
+ ld hl, BattleTowerMons
+ ld bc, BattleTowerMons2 - BattleTowerMons1
+ call AddNTimes
+
+ ld a, [hRandomAdd]
+ ld b, a
+.resample
+ call Random
+ ld a, [hRandomAdd]
+ add b
+ ld b, a
+ and $1f
+ cp BATTLETOWER_NRMONSPERLEVELBRACKET
+ jr nc, .resample
+ ; in register 'a' is the chosen Pkmn of the LevelGroup
+
+ ; Check if Pkmn was already loaded before
+ ; Check current and the 2 previous teams
+ ; includes check if item is double at the current team
+ ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+ call AddNTimes
+ ld a, [hli]
+ ld b, a
+ ld a, [hld]
+ ld c, a
+ ld a, [BT_OTPkmn1]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [BT_OTPkmn1Item]
+ cp c
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [BT_OTPkmn2]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [BT_OTPkmn2Item]
+ cp c
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [BT_OTPkmn3]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [BT_OTPkmn3Item]
+ cp c
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [sBTPkmnPrevTrainer1]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [sBTPkmnPrevTrainer2]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [sBTPkmnPrevTrainer3]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [sBTPkmnPrevPrevTrainer1]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [sBTPkmnPrevPrevTrainer2]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+ ld a, [sBTPkmnPrevPrevTrainer3]
+ cp b
+ jr z, .FindARandomBattleTowerPkmn
+
+ ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+ call CopyBytes
+
+ ld a, [wNamedObjectIndexBuffer]
+ push af
+ push de
+ ld hl, - (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH)
+ add hl, de
+ ld a, [hl]
+ ld [wNamedObjectIndexBuffer], a
+ ld bc, PARTYMON_STRUCT_LENGTH
+ add hl, bc
+ push hl
+ call GetPokemonName
+ ld h, d
+ ld l, e
+ pop de
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+
+ pop de
+ pop af
+ ld [wNamedObjectIndexBuffer], a
+ pop bc
+ dec c
+ jp nz, .loop
+
+ ld a, [sBTPkmnPrevTrainer1]
+ ld [sBTPkmnPrevPrevTrainer1], a
+ ld a, [sBTPkmnPrevTrainer2]
+ ld [sBTPkmnPrevPrevTrainer2], a
+ ld a, [sBTPkmnPrevTrainer3]
+ ld [sBTPkmnPrevPrevTrainer3], a
+ ld a, [BT_OTPkmn1]
+ ld [sBTPkmnPrevTrainer1], a
+ ld a, [BT_OTPkmn2]
+ ld [sBTPkmnPrevTrainer2], a
+ ld a, [BT_OTPkmn3]
+ ld [sBTPkmnPrevTrainer3], a
+ call CloseSRAM
+ ret
+; 1f814e
+
+INCLUDE "data/battle_tower.asm"
diff --git a/engine/decorations.asm b/engine/decorations.asm
index ad82a2080..4d8410bb6 100755
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -541,70 +541,10 @@ GetDecorationSprite: ; 26a44
ret
; 26a4f
-decoration: MACRO
- ; type, name, command, event flag, tile/sprite
- db \1, \2, \3
- dw \4
- db \5
-ENDM
-
DecorationAttributes: ; 26a4f
- decoration DECO_PLANT, $00, $0, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BED, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_BED, FEATHERY_BED, SET_UP_BED, EVENT_DECO_BED_1, $1b
- decoration DECO_BED, PINK_BED, SET_UP_BED, EVENT_DECO_BED_2, $1c
- decoration DECO_BED, POLKADOT_BED, SET_UP_BED, EVENT_DECO_BED_3, $1d
- decoration DECO_BED, PIKACHU_BED, SET_UP_BED, EVENT_DECO_BED_4, $1e
- decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CARPET, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_CARPET, RED_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_1, $08
- decoration DECO_CARPET, BLUE_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_2, $0b
- decoration DECO_CARPET, YELLOW_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_3, $0e
- decoration DECO_CARPET, GREEN_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_4, $11
- decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_PLANT, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_PLANT, MAGNAPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_1, $20
- decoration DECO_PLANT, TROPICPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_2, $21
- decoration DECO_PLANT, JUMBOPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_3, $22
- decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_POSTER, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_PLANT, TOWN_MAP_D, SET_UP_POSTER, EVENT_DECO_PLANT_4, $1f
- decoration DECO_POSTER, PIKACHU, SET_UP_POSTER, EVENT_DECO_POSTER_1, $23
- decoration DECO_POSTER, CLEFAIRY, SET_UP_POSTER, EVENT_DECO_POSTER_2, $24
- decoration DECO_POSTER, JIGGLYPUFF, SET_UP_POSTER, EVENT_DECO_POSTER_3, $25
- decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CONSOLE, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_PLANT, FAMICOM, SET_UP_CONSOLE, EVENT_DECO_FAMICOM, SPRITE_FAMICOM
- decoration DECO_PLANT, SUPER_NES, SET_UP_CONSOLE, EVENT_DECO_SNES, SPRITE_SNES
- decoration DECO_PLANT, NINTENDO_64, SET_UP_CONSOLE, EVENT_DECO_N64, SPRITE_N64
- decoration DECO_PLANT, VIRTUAL_BOY, SET_UP_CONSOLE, EVENT_DECO_VIRTUAL_BOY, SPRITE_VIRTUAL_BOY
- decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BIG_DOLL, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_BIGDOLL, SNORLAX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_SNORLAX_DOLL, SPRITE_BIG_SNORLAX
- decoration DECO_BIGDOLL, ONIX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_ONIX_DOLL, SPRITE_BIG_ONIX
- decoration DECO_BIGDOLL, LAPRAS, SET_UP_BIG_DOLL, EVENT_DECO_BIG_LAPRAS_DOLL, SPRITE_BIG_LAPRAS
- decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_DOLL, EVENT_GAVE_KURT_APRICORNS, $00
- decoration DECO_DOLL, PIKACHU, SET_UP_DOLL, EVENT_DECO_PIKACHU_DOLL, SPRITE_PIKACHU
- decoration DECO_PLANT, SURF_PIKA_DOLL, SET_UP_DOLL, EVENT_DECO_SURFING_PIKACHU_DOLL, SPRITE_SURFING_PIKACHU
- decoration DECO_DOLL, CLEFAIRY, SET_UP_DOLL, EVENT_DECO_CLEFAIRY_DOLL, SPRITE_CLEFAIRY
- decoration DECO_DOLL, JIGGLYPUFF, SET_UP_DOLL, EVENT_DECO_JIGGLYPUFF_DOLL, SPRITE_JIGGLYPUFF
- decoration DECO_DOLL, BULBASAUR, SET_UP_DOLL, EVENT_DECO_BULBASAUR_DOLL, SPRITE_BULBASAUR
- decoration DECO_DOLL, CHARMANDER, SET_UP_DOLL, EVENT_DECO_CHARMANDER_DOLL, SPRITE_CHARMANDER
- decoration DECO_DOLL, SQUIRTLE, SET_UP_DOLL, EVENT_DECO_SQUIRTLE_DOLL, SPRITE_SQUIRTLE
- decoration DECO_DOLL, POLIWAG, SET_UP_DOLL, EVENT_DECO_POLIWAG_DOLL, SPRITE_POLIWAG
- decoration DECO_DOLL, DIGLETT, SET_UP_DOLL, EVENT_DECO_DIGLETT_DOLL, SPRITE_DIGLETT
- decoration DECO_DOLL, STARYU, SET_UP_DOLL, EVENT_DECO_STARMIE_DOLL, SPRITE_STARMIE
- decoration DECO_DOLL, MAGIKARP, SET_UP_DOLL, EVENT_DECO_MAGIKARP_DOLL, SPRITE_MAGIKARP
- decoration DECO_DOLL, ODDISH, SET_UP_DOLL, EVENT_DECO_ODDISH_DOLL, SPRITE_ODDISH
- decoration DECO_DOLL, GENGAR, SET_UP_DOLL, EVENT_DECO_GENGAR_DOLL, SPRITE_GENGAR
- decoration DECO_DOLL, SHELLDER, SET_UP_DOLL, EVENT_DECO_SHELLDER_DOLL, SPRITE_SHELLDER
- decoration DECO_DOLL, GRIMER, SET_UP_DOLL, EVENT_DECO_GRIMER_DOLL, SPRITE_GRIMER
- decoration DECO_DOLL, VOLTORB, SET_UP_DOLL, EVENT_DECO_VOLTORB_DOLL, SPRITE_VOLTORB
- decoration DECO_DOLL, WEEDLE, SET_UP_DOLL, EVENT_DECO_WEEDLE_DOLL, SPRITE_WEEDLE
- decoration DECO_DOLL, UNOWN, SET_UP_DOLL, EVENT_DECO_UNOWN_DOLL, SPRITE_UNOWN
- decoration DECO_DOLL, GEODUDE, SET_UP_DOLL, EVENT_DECO_GEODUDE_DOLL, SPRITE_GEODUDE
- decoration DECO_DOLL, MACHOP, SET_UP_DOLL, EVENT_DECO_MACHOP_DOLL, SPRITE_MACHOP
- decoration DECO_DOLL, TENTACOOL, SET_UP_DOLL, EVENT_DECO_TENTACOOL_DOLL, SPRITE_TENTACOOL
- decoration DECO_PLANT, GOLD_TROPHY, SET_UP_DOLL, EVENT_DECO_GOLD_TROPHY, SPRITE_GOLD_TROPHY
- decoration DECO_PLANT, SILVER_TROPHY, SET_UP_DOLL, EVENT_DECO_SILVER_TROPHY, SPRITE_SILVER_TROPHY
+INCLUDE "data/decoration_attributes.asm"
; 26b8d
-
DecorationNames: ; 26b8d
db "CANCEL@"
db "PUT IT AWAY@"
diff --git a/engine/delete_save_change_clock.asm b/engine/delete_save_change_clock.asm
index 7a806ad01..782b95425 100755
--- a/engine/delete_save_change_clock.asm
+++ b/engine/delete_save_change_clock.asm
@@ -127,7 +127,7 @@ ClockResetPassword: ; 4d41e
ld e, a
ld d, $0
add hl, de
- ld [hl], $61
+ ld [hl], "▲"
ret
.dpadinput ; 4d490
@@ -227,7 +227,7 @@ ClockResetPassword: ; 4d41e
ld c, $2
call .ComponentFromNumber
ld hl, sPlayerData + (PlayerName - wPlayerData)
- ld c, $5 ; PLAYER_NAME_LENGTH_J
+ ld c, NAME_LENGTH_JAPANESE - 1
call .ComponentFromString
ld hl, sPlayerData + (Money - wPlayerData)
ld c, $3
diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm
index 943735ca6..3ff7f42dd 100644
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -84,205 +84,4 @@ EngineFlagAction:: ; 80430
EngineFlags: ; 80462
-; All locations are in WRAM bank 1.
-engine_flag: MACRO
- dwb \1, 1 << \2
-ENDM
- ; location, bit
-
- ; pokegear
- engine_flag wPokegearFlags, 1 ; radio card ; $0
- engine_flag wPokegearFlags, 0 ; map card
- engine_flag wPokegearFlags, 2 ; phone card
- engine_flag wPokegearFlags, 3 ; expn card
- engine_flag wPokegearFlags, 7 ; on/off
-
- ; wDayCareMan, 7 ; day-care 1 on
- engine_flag wDayCareMan, 6 ; egg is ready
- ; wDayCareMan, 5 ; monster 1 and 2 are compatible
- engine_flag wDayCareMan, 0 ; monster 1 in day-care
-
- ; wDayCareLady, 7 = day-care 2 on
- engine_flag wDayCareLady, 0 ; monster 2 in day-care
-
- engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
- engine_flag wMomSavingMoney, 7 ; dst
-
- engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
-
- engine_flag StatusFlags, 0 ; pokedex
- engine_flag StatusFlags, 1 ; unown dex
- engine_flag StatusFlags, 3 ; pokerus
- engine_flag StatusFlags, 4 ; rocket signal on ch20
- engine_flag StatusFlags, 6 ; credits skip
- engine_flag StatusFlags, 7 ; bug contest on ; $10
- engine_flag StatusFlags2, 2 ; bug contest timer
- engine_flag StatusFlags2, 1 ; safari zone?
- engine_flag StatusFlags2, 0 ; rockets in radio tower
- engine_flag StatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd)
- engine_flag StatusFlags2, 5 ; give pokerus
- engine_flag StatusFlags2, 6 ; berry -> berry juice when trading?
- engine_flag StatusFlags2, 7 ; rockets in mahogany
-
- engine_flag BikeFlags, 0 ; strength active ; $18
- engine_flag BikeFlags, 1 ; always on bike (cant surf)
- engine_flag BikeFlags, 2 ; downhill (cycling road)
-
- engine_flag JohtoBadges, 0 ; zephyrbadge
- engine_flag JohtoBadges, 1 ; hivebadge
- engine_flag JohtoBadges, 2 ; plainbadge
- engine_flag JohtoBadges, 3 ; fogbadge
- engine_flag JohtoBadges, 4 ; mineralbadge
- engine_flag JohtoBadges, 5 ; stormbadge ; $20
- engine_flag JohtoBadges, 6 ; glacierbadge
- engine_flag JohtoBadges, 7 ; risingbadge
-
- engine_flag KantoBadges, 0 ; boulderbadge
- engine_flag KantoBadges, 1 ; cascadebadge
- engine_flag KantoBadges, 2 ; thunderbadge
- engine_flag KantoBadges, 3 ; rainbowbadge
- engine_flag KantoBadges, 4 ; soulbadge
- engine_flag KantoBadges, 5 ; marshbadge ; $28
- engine_flag KantoBadges, 6 ; volcanobadge
- engine_flag KantoBadges, 7 ; earthbadge
-
- ; unown sets
- engine_flag UnlockedUnowns, 0 ; 1
- engine_flag UnlockedUnowns, 1 ; 2
- engine_flag UnlockedUnowns, 2 ; 3
- engine_flag UnlockedUnowns, 3 ; 4
- engine_flag UnlockedUnowns, 4 ; 5
- engine_flag UnlockedUnowns, 5 ; 6 ; $30
- engine_flag UnlockedUnowns, 6 ; 7
- engine_flag UnlockedUnowns, 7 ; 8
-
- ; fly
- engine_flag VisitedSpawns, 0 ; your house
- engine_flag VisitedSpawns, 1 ; viridian pokecenter
- engine_flag VisitedSpawns, 2 ; pallet
- engine_flag VisitedSpawns, 3 ; viridian
- engine_flag VisitedSpawns, 4 ; pewter
- engine_flag VisitedSpawns, 5 ; cerulean ; $38
- engine_flag VisitedSpawns, 6 ; rock tunnel
- engine_flag VisitedSpawns, 7 ; vermilion
- engine_flag VisitedSpawns + 1, 0 ; lavender
- engine_flag VisitedSpawns + 1, 1 ; saffron
- engine_flag VisitedSpawns + 1, 2 ; celadon
- engine_flag VisitedSpawns + 1, 3 ; fuchsia
- engine_flag VisitedSpawns + 1, 4 ; cinnabar
- engine_flag VisitedSpawns + 1, 5 ; indigo plateau ; $40
- engine_flag VisitedSpawns + 1, 6 ; new bark
- engine_flag VisitedSpawns + 1, 7 ; cherrygrove
- engine_flag VisitedSpawns + 2, 0 ; violet
- ; union cave
- engine_flag VisitedSpawns + 2, 2 ; azalea
- engine_flag VisitedSpawns + 2, 3 ; cianwood
- engine_flag VisitedSpawns + 2, 4 ; goldenrod
- engine_flag VisitedSpawns + 2, 5 ; olivine
- engine_flag VisitedSpawns + 2, 6 ; ecruteak ; $48
- engine_flag VisitedSpawns + 2, 7 ; mahogany
- engine_flag VisitedSpawns + 3, 0 ; lake of rage
- engine_flag VisitedSpawns + 3, 1 ; blackthorn
- engine_flag VisitedSpawns + 3, 2 ; silver cave
- ; fast ship
- engine_flag VisitedSpawns + 3, 4 ; unused
-
- engine_flag wLuckyNumberShowFlag, 0 ; lucky number show
- engine_flag StatusFlags2, 3 ; ????
-
- engine_flag DailyFlags, 0 ; kurt making balls ; $50
- engine_flag DailyFlags, 1 ; ????
- engine_flag DailyFlags, 2 ; special wilddata?
- engine_flag DailyFlags, 3 ; time capsule (24h wait)
- engine_flag DailyFlags, 4 ; all fruit trees
- engine_flag DailyFlags, 5 ; shuckle given
- engine_flag DailyFlags, 6 ; goldenrod underground merchant closed
- engine_flag DailyFlags, 7 ; fought in trainer hall today
-
- engine_flag WeeklyFlags, 0 ; mt moon square clefairy ; $58
- engine_flag WeeklyFlags, 1 ; union cave lapras
- engine_flag WeeklyFlags, 2 ; goldenrod underground haircut used
- engine_flag WeeklyFlags, 3 ; goldenrod mall happiness event floor05 person07
- engine_flag WeeklyFlags, 4 ; tea in blues house
- engine_flag WeeklyFlags, 5 ; indigo plateau rival fight
- engine_flag WeeklyFlags, 6 ; move tutor
- engine_flag WeeklyFlags, 7 ; buenas password
-
- engine_flag SwarmFlags, 0 ; buenas password 2
- engine_flag SwarmFlags, 1 ; goldenrod dept store sale is on
-
- engine_flag GameTimerPause, 7 ; $62
-
- engine_flag PlayerGender, 0 ; player is female
-
- engine_flag wCelebiEvent, 2 ; have gs ball after kurt examined it
-
- ; rematches
- engine_flag wDailyRematchFlags, 0 ; jack
- engine_flag wDailyRematchFlags, 1 ; huey
- engine_flag wDailyRematchFlags, 2 ; gaven
- engine_flag wDailyRematchFlags, 3 ; beth ; $68
- engine_flag wDailyRematchFlags, 4 ; jose
- engine_flag wDailyRematchFlags, 5 ; reena
- engine_flag wDailyRematchFlags, 6 ; joey
- engine_flag wDailyRematchFlags, 7 ; wade
- engine_flag wDailyRematchFlags + 1, 0 ; ralph
- engine_flag wDailyRematchFlags + 1, 1 ; liz
- engine_flag wDailyRematchFlags + 1, 2 ; anthony
- engine_flag wDailyRematchFlags + 1, 3 ; todd ; $70
- engine_flag wDailyRematchFlags + 1, 4 ; gina
- engine_flag wDailyRematchFlags + 1, 5 ; arnie
- engine_flag wDailyRematchFlags + 1, 6 ; alan
- engine_flag wDailyRematchFlags + 1, 7 ; dana
- engine_flag wDailyRematchFlags + 2, 0 ; chad
- engine_flag wDailyRematchFlags + 2, 1 ; tully
- engine_flag wDailyRematchFlags + 2, 2 ; brent
- engine_flag wDailyRematchFlags + 2, 3 ; tiffany ; $78
- engine_flag wDailyRematchFlags + 2, 4 ; vance
- engine_flag wDailyRematchFlags + 2, 5 ; wilton
- engine_flag wDailyRematchFlags + 2, 6 ; parry
- engine_flag wDailyRematchFlags + 2, 7 ; erin
-
- engine_flag wDailyPhoneItemFlags, 0 ; beverly has nugget
- engine_flag wDailyPhoneItemFlags, 1 ; jose has star piece
- engine_flag wDailyPhoneItemFlags, 2 ; wade has item (see EVENT_WADE_HAS_*** in constants/event_flags.asm)
- engine_flag wDailyPhoneItemFlags, 3 ; gina has leaf stone ; $80
- engine_flag wDailyPhoneItemFlags, 4 ; alan has fire stone
- engine_flag wDailyPhoneItemFlags, 5 ; liz has thunderstone
- engine_flag wDailyPhoneItemFlags, 6 ; derek has nugget
- engine_flag wDailyPhoneItemFlags, 7 ; tully has water stone
-
- engine_flag wDailyPhoneItemFlags + 1, 0 ; tiffany has pink bow
- engine_flag wDailyPhoneItemFlags + 1, 1 ; wilton has item (see EVENT_WILTON_HAS_*** in constants/event_flags.asm)
-
- engine_flag wDailyPhoneTimeOfDayFlags, 0
- engine_flag wDailyPhoneTimeOfDayFlags, 1 ; $88
- engine_flag wDailyPhoneTimeOfDayFlags, 2
- engine_flag wDailyPhoneTimeOfDayFlags, 3
- engine_flag wDailyPhoneTimeOfDayFlags, 4
- engine_flag wDailyPhoneTimeOfDayFlags, 5
- engine_flag wDailyPhoneTimeOfDayFlags, 6
- engine_flag wDailyPhoneTimeOfDayFlags, 7
-
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 0
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 1 ; $90
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 2
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 3
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 4
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 5
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 6
- engine_flag wDailyPhoneTimeOfDayFlags + 1, 7
-
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 0
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 1 ; $98
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 2
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 3
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 4
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 5
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 6
- engine_flag wDailyPhoneTimeOfDayFlags + 2, 7
-
- engine_flag wPlayerSpriteSetupFlags, 2 ; female player has been transformed into male
-
- engine_flag SwarmFlags, 2 ; dunsparce swarm ; $a0
- engine_flag SwarmFlags, 3 ; yanma swarm
+INCLUDE "data/engine_flags.asm"
diff --git a/engine/events_2.asm b/engine/events_2.asm
index 285b3e05b..5a89f5e68 100644
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -254,18 +254,7 @@ TryWildEncounter_BugContest: ; 97d64
; 97d87
ContestMons: ; 97d87
- ; %, species, min, max
- db 20, CATERPIE, 7, 18
- db 20, WEEDLE, 7, 18
- db 10, METAPOD, 9, 18
- db 10, KAKUNA, 9, 18
- db 5, BUTTERFREE, 12, 15
- db 5, BEEDRILL, 12, 15
- db 10, VENONAT, 10, 16
- db 10, PARAS, 10, 17
- db 5, SCYTHER, 13, 14
- db 5, PINSIR, 13, 14
- db -1, VENOMOTH, 30, 40
+INCLUDE "data/wild/bug_contest_mons.asm"
; 97db3
DoBikeStep:: ; 97db3
diff --git a/engine/events_3.asm b/engine/events_3.asm
index b6aaea3b7..f53297d61 100755
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -455,55 +455,7 @@ GetTreeMonSet: ; b823f
ret
; b825e
-TreeMonMaps: ; b825e
-treemon_map: macro
- map \1
- db \2 ; treemon set
-endm
- treemon_map ROUTE_26, 4
- treemon_map ROUTE_27, 4
- treemon_map ROUTE_28, 0
- treemon_map ROUTE_29, 3
- treemon_map ROUTE_30, 3
- treemon_map ROUTE_31, 3
- treemon_map ROUTE_32, 4
- treemon_map ROUTE_33, 2
- treemon_map ROUTE_34, 3
- treemon_map ROUTE_35, 3
- treemon_map ROUTE_36, 3
- treemon_map ROUTE_37, 3
- treemon_map ROUTE_38, 3
- treemon_map ROUTE_39, 3
- treemon_map ROUTE_40, 0
- treemon_map ROUTE_41, 0
- treemon_map ROUTE_42, 2
- treemon_map ROUTE_43, 5
- treemon_map ROUTE_44, 1
- treemon_map ROUTE_45, 1
- treemon_map ROUTE_46, 1
- treemon_map NEW_BARK_TOWN, 0
- treemon_map CHERRYGROVE_CITY, 0
- treemon_map VIOLET_CITY, 0
- treemon_map AZALEA_TOWN, 2
- treemon_map CIANWOOD_CITY, 0
- treemon_map GOLDENROD_CITY, 0
- treemon_map OLIVINE_CITY, 0
- treemon_map ECRUTEAK_CITY, 0
- treemon_map MAHOGANY_TOWN, 0
- treemon_map LAKE_OF_RAGE, 5
- treemon_map BLACKTHORN_CITY, 0
- treemon_map SILVER_CAVE_OUTSIDE, 0
- treemon_map ILEX_FOREST, 6
- db -1
-; b82c5
-
-RockMonMaps: ; b82c5
- treemon_map CIANWOOD_CITY, 7
- treemon_map ROUTE_40, 7
- treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
- treemon_map SLOWPOKE_WELL_B1F, 7
- db -1
-; b82d2
+INCLUDE "data/wild/treemon_maps.asm"
GetTreeMons: ; b82d2
; Return the address of TreeMon table a in hl.
@@ -533,128 +485,7 @@ GetTreeMons: ; b82d2
ret
; b82e8
-TreeMons: ; b82e8
- dw TreeMons1
- dw TreeMons1
- dw TreeMons2
- dw TreeMons3
- dw TreeMons4
- dw TreeMons5
- dw TreeMons6
- dw RockMons
- dw TreeMons1
-
-; Two tables each (normal, rare).
-; Structure:
-; db %, species, level
-
-TreeMons1: ; b82fa
- db 50, SPEAROW, 10
- db 15, SPEAROW, 10
- db 15, SPEAROW, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db -1
-
- db 50, SPEAROW, 10
- db 15, HERACROSS, 10
- db 15, HERACROSS, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db -1
-
-TreeMons2: ; b8320
- db 50, SPEAROW, 10
- db 15, EKANS, 10
- db 15, SPEAROW, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db -1
-
- db 50, SPEAROW, 10
- db 15, HERACROSS, 10
- db 15, HERACROSS, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db -1
-
-TreeMons3: ; b8346
- db 50, HOOTHOOT, 10
- db 15, SPINARAK, 10
- db 15, LEDYBA, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db -1
-
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db -1
-
-TreeMons4: ; b836c
- db 50, HOOTHOOT, 10
- db 15, EKANS, 10
- db 15, HOOTHOOT, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db -1
-
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db -1
-
-TreeMons5: ; b8392
- db 50, HOOTHOOT, 10
- db 15, VENONAT, 10
- db 15, HOOTHOOT, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db -1
-
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db -1
-
-TreeMons6: ; b83b8
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, NOCTOWL, 10
- db 5, BUTTERFREE, 10
- db 5, BEEDRILL, 10
- db -1
-
- db 50, HOOTHOOT, 10
- db 15, CATERPIE, 10
- db 15, WEEDLE, 10
- db 10, HOOTHOOT, 10
- db 5, METAPOD, 10
- db 5, KAKUNA, 10
- db -1
-
-RockMons: ; b83de
- db 90, KRABBY, 15
- db 10, SHUCKLE, 15
- db -1
-; b83e5
+INCLUDE "data/wild/treemons.asm"
GetTreeMon: ; b83e5
push hl
diff --git a/engine/fruit_trees.asm b/engine/fruit_trees.asm
index 6a40fb05c..134adda60 100644
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -103,36 +103,7 @@ GetFruitTreeItem: ; 4408a
; 44097
FruitTreeItems: ; 44097
- db BERRY
- db BERRY
- db BERRY
- db BERRY
- db PSNCUREBERRY
- db PSNCUREBERRY
- db BITTER_BERRY
- db BITTER_BERRY
- db PRZCUREBERRY
- db PRZCUREBERRY
- db MYSTERYBERRY
- db MYSTERYBERRY
- db ICE_BERRY
- db ICE_BERRY
- db MINT_BERRY
- db BURNT_BERRY
- db RED_APRICORN
- db BLU_APRICORN
- db BLK_APRICORN
- db WHT_APRICORN
- db PNK_APRICORN
- db GRN_APRICORN
- db YLW_APRICORN
- db BERRY
- db PSNCUREBERRY
- db BITTER_BERRY
- db PRZCUREBERRY
- db ICE_BERRY
- db MINT_BERRY
- db BURNT_BERRY
+INCLUDE "data/fruit_tree_items.asm"
; 440b5
FruitBearingTreeText: ; 440b5
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index 6dcda93f3..e0ecd41fe 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -199,8 +199,6 @@ _ResetWRAM: ; 5bae
ld [Coins], a
ld [Coins + 1], a
-START_MONEY EQU 3000
-
IF START_MONEY / $10000
ld a, START_MONEY / $10000
ENDC
@@ -214,11 +212,11 @@ ENDC
ld [wWhichMomItem], a
ld hl, MomItemTriggerBalance
- ld [hl], 2300 / $10000
+ ld [hl], MOM_MONEY / $10000
inc hl
- ld [hl], 2300 / $100 % $100
+ ld [hl], MOM_MONEY / $100 % $100
inc hl
- ld [hl], 2300 % $100
+ ld [hl], MOM_MONEY % $100
call InitializeNPCNames
diff --git a/engine/landmarks.asm b/engine/landmarks.asm
index 465a70f3c..401073d83 100644
--- a/engine/landmarks.asm
+++ b/engine/landmarks.asm
@@ -48,212 +48,7 @@ GetLandmarkName:: ; 0x1ca8a5
Landmarks: ; 0x1ca8c3
-
-landmark: MACRO
- db \1, \2
- dw \3
-ENDM
-
- landmark 0, 0, SpecialMapName
- landmark 148, 116, NewBarkTownName
- landmark 136, 116, Route29Name
- landmark 108, 116, CherrygroveCityName
- landmark 108, 96, Route30Name
- landmark 104, 76, Route31Name
- landmark 92, 76, VioletCityName
- landmark 93, 74, SproutTowerName
- landmark 92, 108, Route32Name
- landmark 84, 92, RuinsOfAlphName
- landmark 92, 140, UnionCaveName
- landmark 90, 140, Route33Name
- landmark 76, 140, AzaleaTownName
- landmark 78, 138, SlowpokeWellName
- landmark 60, 136, IlexForestName
- landmark 60, 128, Route34Name
- landmark 60, 108, GoldenrodCityName
- landmark 58, 108, RadioTowerName
- landmark 60, 92, Route35Name
- landmark 60, 76, NationalParkName
- landmark 72, 76, Route36Name
- landmark 76, 68, Route37Name
- landmark 76, 60, EcruteakCityName
- landmark 78, 58, TinTowerName
- landmark 74, 58, BurnedTowerName
- landmark 60, 60, Route38Name
- landmark 44, 64, Route39Name
- landmark 44, 76, OlivineCityName
- landmark 46, 78, LighthouseName
- landmark 36, 72, BattleTowerName
- landmark 36, 80, Route40Name
- landmark 36, 108, WhirlIslandsName
- landmark 36, 116, Route41Name
- landmark 28, 116, CianwoodCityName
- landmark 100, 60, Route42Name
- landmark 92, 60, MtMortarName
- landmark 116, 60, MahoganyTownName
- landmark 116, 52, Route43Name
- landmark 116, 44, LakeOfRageName
- landmark 128, 60, Route44Name
- landmark 138, 54, IcePathName
- landmark 140, 60, BlackthornCityName
- landmark 140, 52, DragonsDenName
- landmark 140, 80, Route45Name
- landmark 120, 88, DarkCaveName
- landmark 132, 104, Route46Name
- landmark 156, 84, SilverCaveName
- landmark 60, 124, PalletTownName
- landmark 60, 108, Route1Name
- landmark 60, 92, ViridianCityName
- landmark 60, 80, Route2Name
- landmark 60, 68, PewterCityName
- landmark 72, 68, Route3Name
- landmark 84, 68, MtMoonName
- landmark 96, 68, Route4Name
- landmark 108, 68, CeruleanCityName
- landmark 108, 60, Route24Name
- landmark 116, 52, Route25Name
- landmark 108, 76, Route5Name
- landmark 116, 92, UndergroundName
- landmark 108, 92, Route6Name
- landmark 108, 100, VermilionCityName
- landmark 96, 76, DiglettsCaveName
- landmark 96, 84, Route7Name
- landmark 124, 84, Route8Name
- landmark 124, 68, Route9Name
- landmark 140, 68, RockTunnelName
- landmark 140, 72, Route10Name
- landmark 140, 76, PowerPlantName
- landmark 140, 84, LavenderTownName
- landmark 148, 84, LavRadioTowerName
- landmark 84, 84, CeladonCityName
- landmark 108, 84, SaffronCityName
- landmark 124, 100, Route11Name
- landmark 140, 96, Route12Name
- landmark 132, 116, Route13Name
- landmark 124, 128, Route14Name
- landmark 112, 132, Route15Name
- landmark 76, 84, Route16Name
- landmark 76, 108, Route17Name
- landmark 88, 132, Route18Name
- landmark 100, 132, FuchsiaCityName
- landmark 100, 144, Route19Name
- landmark 84, 148, Route20Name
- landmark 76, 148, SeafoamIslandsName
- landmark 60, 148, CinnabarIslandName
- landmark 60, 136, Route21Name
- landmark 44, 84, Route22Name
- landmark 36, 68, VictoryRoadName
- landmark 36, 60, Route23Name
- landmark 36, 52, IndigoPlateauName
- landmark 36, 108, Route26Name
- landmark 28, 116, Route27Name
- landmark 20, 116, TohjoFallsName
- landmark 28, 84, Route28Name
- landmark 148, 132, FastShipName
-
-
-NewBarkTownName: db "NEW BARK¯TOWN@"
-CherrygroveCityName: db "CHERRYGROVE¯CITY@"
-VioletCityName: db "VIOLET CITY@"
-AzaleaTownName: db "AZALEA TOWN@"
-GoldenrodCityName: db "GOLDENROD¯CITY@"
-EcruteakCityName: db "ECRUTEAK¯CITY@"
-OlivineCityName: db "OLIVINE¯CITY@"
-CianwoodCityName: db "CIANWOOD¯CITY@"
-MahoganyTownName: db "MAHOGANY¯TOWN@"
-BlackthornCityName: db "BLACKTHORN¯CITY@"
-LakeOfRageName: db "LAKE OF¯RAGE@"
-SilverCaveName: db "SILVER CAVE@"
-SproutTowerName: db "SPROUT¯TOWER@"
-RuinsOfAlphName: db "RUINS¯OF ALPH@"
-UnionCaveName: db "UNION CAVE@"
-SlowpokeWellName: db "SLOWPOKE¯WELL@"
-RadioTowerName: db "RADIO TOWER@"
-PowerPlantName: db "POWER PLANT@"
-NationalParkName: db "NATIONAL¯PARK@"
-TinTowerName: db "TIN TOWER@"
-LighthouseName: db "LIGHTHOUSE@"
-WhirlIslandsName: db "WHIRL¯ISLANDS@"
-MtMortarName: db "MT.MORTAR@"
-DragonsDenName: db "DRAGON'S¯DEN@"
-IcePathName: db "ICE PATH@"
-NotApplicableName: db "N/A@"
-PalletTownName: db "PALLET TOWN@"
-ViridianCityName: db "VIRIDIAN¯CITY@"
-PewterCityName: db "PEWTER CITY@"
-CeruleanCityName: db "CERULEAN¯CITY@"
-LavenderTownName: db "LAVENDER¯TOWN@"
-VermilionCityName: db "VERMILION¯CITY@"
-CeladonCityName: db "CELADON¯CITY@"
-SaffronCityName: db "SAFFRON¯CITY@"
-FuchsiaCityName: db "FUCHSIA¯CITY@"
-CinnabarIslandName: db "CINNABAR¯ISLAND@"
-IndigoPlateauName: db "INDIGO¯PLATEAU@"
-VictoryRoadName: db "VICTORY¯ROAD@"
-MtMoonName: db "MT.MOON@"
-RockTunnelName: db "ROCK TUNNEL@"
-LavRadioTowerName: db "LAV¯RADIO TOWER@"
-SilphCoName: db "SILPH CO.@"
-SafariZoneName: db "SAFARI ZONE@"
-SeafoamIslandsName: db "SEAFOAM¯ISLANDS@"
-PokemonMansionName: db "#MON¯MANSION@"
-CeruleanCaveName: db "CERULEAN¯CAVE@"
-Route1Name: db "ROUTE 1@"
-Route2Name: db "ROUTE 2@"
-Route3Name: db "ROUTE 3@"
-Route4Name: db "ROUTE 4@"
-Route5Name: db "ROUTE 5@"
-Route6Name: db "ROUTE 6@"
-Route7Name: db "ROUTE 7@"
-Route8Name: db "ROUTE 8@"
-Route9Name: db "ROUTE 9@"
-Route10Name: db "ROUTE 10@"
-Route11Name: db "ROUTE 11@"
-Route12Name: db "ROUTE 12@"
-Route13Name: db "ROUTE 13@"
-Route14Name: db "ROUTE 14@"
-Route15Name: db "ROUTE 15@"
-Route16Name: db "ROUTE 16@"
-Route17Name: db "ROUTE 17@"
-Route18Name: db "ROUTE 18@"
-Route19Name: db "ROUTE 19@"
-Route20Name: db "ROUTE 20@"
-Route21Name: db "ROUTE 21@"
-Route22Name: db "ROUTE 22@"
-Route23Name: db "ROUTE 23@"
-Route24Name: db "ROUTE 24@"
-Route25Name: db "ROUTE 25@"
-Route26Name: db "ROUTE 26@"
-Route27Name: db "ROUTE 27@"
-Route28Name: db "ROUTE 28@"
-Route29Name: db "ROUTE 29@"
-Route30Name: db "ROUTE 30@"
-Route31Name: db "ROUTE 31@"
-Route32Name: db "ROUTE 32@"
-Route33Name: db "ROUTE 33@"
-Route34Name: db "ROUTE 34@"
-Route35Name: db "ROUTE 35@"
-Route36Name: db "ROUTE 36@"
-Route37Name: db "ROUTE 37@"
-Route38Name: db "ROUTE 38@"
-Route39Name: db "ROUTE 39@"
-Route40Name: db "ROUTE 40@"
-Route41Name: db "ROUTE 41@"
-Route42Name: db "ROUTE 42@"
-Route43Name: db "ROUTE 43@"
-Route44Name: db "ROUTE 44@"
-Route45Name: db "ROUTE 45@"
-Route46Name: db "ROUTE 46@"
-DarkCaveName: db "DARK CAVE@"
-IlexForestName: db "ILEX¯FOREST@"
-BurnedTowerName: db "BURNED¯TOWER@"
-FastShipName: db "FAST SHIP@"
-ViridianForestName: db "VIRIDIAN¯FOREST@"
-DiglettsCaveName: db "DIGLETT'S¯CAVE@"
-TohjoFallsName: db "TOHJO FALLS@"
-UndergroundName: db "UNDERGROUND@"
-BattleTowerName: db "BATTLE¯TOWER@"
-SpecialMapName: db "SPECIAL@"
+INCLUDE "data/landmarks.asm"
RegionCheck: ; 0x1caea1
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index 83147c168..4ca7482fe 100644
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -1,5 +1,5 @@
-INCLUDE "engine/facings.asm"
+INCLUDE "data/facings.asm"
SpriteMovementData:: ; 4273
INCLUDE "data/map_objects.asm"
diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm
index 9c6fb1870..af1972dae 100755
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -450,4 +450,27 @@ HoldSwitchmonIcon: ; 8ea8c
jr nz, .loop
ret
-INCLUDE "menu/mon_icons.asm"
+ReadMonMenuIcon: ; 8eab3
+ cp EGG
+ jr z, .egg
+ dec a
+ ld hl, MonMenuIcons
+ ld e, a
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+ ret
+.egg
+ ld a, ICON_EGG
+ ret
+; 8eac4
+
+MonMenuIcons: ; 8eac4
+INCLUDE "data/mon_menu_icons.asm"
+
+
+INCLUDE "gfx/icon_pointers.asm"
+
+Icons:
+INCLUDE "gfx/icons.asm"
+
diff --git a/engine/mysterygift2.asm b/engine/mysterygift2.asm
index 0b8948c5b..e2ed30f3d 100755
--- a/engine/mysterygift2.asm
+++ b/engine/mysterygift2.asm
@@ -123,7 +123,7 @@ PrepMysteryGiftDataToSend: ; 2c642 (b:4642)
MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
ld a, c
- cp $25 ; 37
+ cp MysteryGiftItemsEnd - MysteryGiftItems
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftItems
ld b, 0
@@ -133,7 +133,7 @@ MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
MysteryGiftGetDecoration: ; 2c715 (b:4715)
ld a, c
- cp $25 ; 37
+ cp MysteryGiftDecosEnd - MysteryGiftDecos
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftDecos
ld b, 0
@@ -147,81 +147,11 @@ MysteryGiftFallbackItem: ; 2c722 (b:4722)
; 2c725 (b:4725)
MysteryGiftItems: ; 2c725
- db BERRY
- db PRZCUREBERRY
- db MINT_BERRY
- db ICE_BERRY
- db BURNT_BERRY
- db PSNCUREBERRY
- db GUARD_SPEC
- db X_DEFEND
- db X_ATTACK
- db BITTER_BERRY
- db DIRE_HIT
- db X_SPECIAL
- db X_ACCURACY
- db EON_MAIL
- db MORPH_MAIL
- db MUSIC_MAIL
- db MIRACLEBERRY
- db GOLD_BERRY
- db REVIVE
- db GREAT_BALL
- db SUPER_REPEL
- db MAX_REPEL
- db ELIXER
- db ETHER
- db WATER_STONE
- db FIRE_STONE
- db LEAF_STONE
- db THUNDERSTONE
- db MAX_ETHER
- db MAX_ELIXER
- db MAX_REVIVE
- db SCOPE_LENS
- db HP_UP
- db PP_UP
- db RARE_CANDY
- db BLUESKY_MAIL
- db MIRAGE_MAIL
+INCLUDE "data/mystery_gift/items.asm"
+MysteryGiftItemsEnd
; 2c74a
MysteryGiftDecos: ; 2c74a
- db DECOFLAG_PIKACHU_DOLL
- db DECOFLAG_BULBASAUR_DOLL
- db DECOFLAG_CHARMANDER_DOLL
- db DECOFLAG_SQUIRTLE_DOLL
- db DECOFLAG_POLIWAG_DOLL
- db DECOFLAG_DIGLETT_DOLL
- db DECOFLAG_STARMIE_DOLL
- db DECOFLAG_MAGIKARP_DOLL
- db DECOFLAG_ODDISH_DOLL
- db DECOFLAG_GENGAR_DOLL
- db DECOFLAG_CLEFAIRY_POSTER
- db DECOFLAG_JIGGLYPUFF_POSTER
- db DECOFLAG_SNES
- db DECOFLAG_SHELLDER_DOLL
- db DECOFLAG_VOLTORB_DOLL
- db DECOFLAG_WEEDLE_DOLL
- db DECOFLAG_MAGNAPLANT
- db DECOFLAG_TROPICPLANT
- db DECOFLAG_FAMICOM
- db DECOFLAG_N64
- db DECOFLAG_SURF_PIKACHU_DOLL
- db DECOFLAG_JIGGLYPUFF_DOLL
- db DECOFLAG_PINK_BED
- db DECOFLAG_POLKADOT_BED
- db DECOFLAG_RED_CARPET
- db DECOFLAG_BLUE_CARPET
- db DECOFLAG_YELLOW_CARPET
- db DECOFLAG_GREEN_CARPET
- db DECOFLAG_JUMBOPLANT
- db DECOFLAG_VIRTUAL_BOY
- db DECOFLAG_MACHOP_DOLL
- db DECOFLAG_PIKACHU_POSTER
- db DECOFLAG_TENTACOOL_DOLL
- db DECOFLAG_BIG_ONIX_DOLL
- db DECOFLAG_PIKACHU_BED
- db DECOFLAG_GRIMER_DOLL
- db DECOFLAG_UNOWN_DOLL
+INCLUDE "data/mystery_gift/decos.asm"
+MysteryGiftDecosEnd
; 2c76f
diff --git a/engine/npctrade.asm b/engine/npctrade.asm
index fa1be880e..1ec828b54 100755
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -1,26 +1,10 @@
-
-; Trade struct
-TRADE_DIALOG EQU 0
-TRADE_GIVEMON EQU 1
-TRADE_GETMON EQU 2
-TRADE_NICK EQU 3
-TRADE_DVS EQU 14
-TRADE_ITEM EQU 16
-TRADE_OT_ID EQU 17
-TRADE_OT_NAME EQU 19
-TRADE_GENDER EQU 30
-TRADE_PADDING EQU 31
-
; Trade dialogs
-TRADE_INTRO EQU 0
-TRADE_CANCEL EQU 1
-TRADE_WRONG EQU 2
-TRADE_COMPLETE EQU 3
-TRADE_AFTER EQU 4
-
-TRADE_EITHER_GENDER EQU 0
-TRADE_MALE_ONLY EQU 1
-TRADE_FEMALE_ONLY EQU 2
+ const_def
+ const TRADE_INTRO
+ const TRADE_CANCEL
+ const TRADE_WRONG
+ const TRADE_COMPLETE
+ const TRADE_AFTER
NPCTrade:: ; fcba8
ld a, e
@@ -428,23 +412,7 @@ GetTradeMonNames: ; fce1b
NPCTrades: ; fce58
-npctrade: MACRO
- db \1, \2, \3, \4 ; dialog set, requested mon, offered mon, nickname
- db \5, \6 ; dvs
- shift
- db \6 ; item
- dw \7 ; OT ID
- db \8, \9, 0 ; OT name, gender requested
-ENDM
-
-
- npctrade 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, 37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
- npctrade 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
- npctrade 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
- npctrade 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, 00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
- npctrade 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
- npctrade 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
- npctrade 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, 50082, "FOREST@@@@@", TRADE_EITHER_GENDER
+INCLUDE "data/npc_trades.asm"
; fcf38
diff --git a/engine/odd_eggs.asm b/engine/odd_eggs.asm
new file mode 100644
index 000000000..93d753dfb
--- /dev/null
+++ b/engine/odd_eggs.asm
@@ -0,0 +1,96 @@
+GiveOddEgg: ; 1fb4b6
+ ; Figure out which egg to give.
+
+ ; Compare a random word to
+ ; probabilities out of 0xffff.
+ call Random
+ ld hl, OddEggProbabilities
+ ld c, 0
+ ld b, c
+.loop
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+
+ ; Break on $ffff.
+ ld a, d
+ cp $ffff / $100
+ jr nz, .not_done
+ ld a, e
+ cp $ffff % $100
+ jr z, .done
+.not_done
+
+ ; Break when [hRandom] <= de.
+ ld a, [hRandom + 1]
+ cp d
+ jr c, .done
+ jr z, .ok
+ jr .next
+.ok
+ ld a, [hRandom + 0]
+ cp e
+ jr c, .done
+ jr z, .done
+.next
+ inc bc
+ jr .loop
+.done
+
+ ld hl, OddEggs
+ ld a, OddEgg2 - OddEgg1
+ call AddNTimes
+
+ ld de, OddEggSpecies
+ ld bc, PARTYMON_STRUCT_LENGTH + 2 * PKMN_NAME_LENGTH
+ call CopyBytes
+
+ ld a, EGG_TICKET
+ ld [CurItem], a
+ ld a, 1
+ ld [wItemQuantityChangeBuffer], a
+ ld a, -1
+ ld [CurItemQuantity], a
+ ld hl, NumItems
+ call TossItem
+
+ ; load species in wcd2a
+ ld a, EGG
+ ld [wMobileMonSpeciesBuffer], a
+
+ ; load pointer to (wMobileMonSpeciesBuffer - 1) in wMobileMonSpeciesPointerBuffer
+ ld a, (wMobileMonSpeciesBuffer - 1) % $100
+ ld [wMobileMonSpeciesPointerBuffer], a
+ ld a, (wMobileMonSpeciesBuffer - 1) / $100
+ ld [wMobileMonSpeciesPointerBuffer + 1], a
+ ; load pointer to OddEggSpecies in wMobileMonStructurePointerBuffer
+ ld a, OddEggSpecies % $100
+ ld [wMobileMonStructurePointerBuffer], a
+ ld a, OddEggSpecies / $100
+ ld [wMobileMonStructurePointerBuffer + 1], a
+
+ ; load Odd Egg Name in wTempOddEggNickname
+ ld hl, .Odd
+ ld de, wTempOddEggNickname
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+
+ ; load pointer to wTempOddEggNickname in wMobileMonOTNamePointerBuffer
+ ld a, wTempOddEggNickname % $100
+ ld [wMobileMonOTNamePointerBuffer], a
+ ld a, wTempOddEggNickname / $100
+ ld [wMobileMonOTNamePointerBuffer + 1], a
+ ; load pointer to wOddEggName in wMobileMonNicknamePointerBuffer
+ ld a, wOddEggName % $100
+ ld [wMobileMonNicknamePointerBuffer], a
+ ld a, wOddEggName / $100
+ ld [wMobileMonNicknamePointerBuffer + 1], a
+ callba AddMobileMonToParty
+ ret
+; 1fb546
+
+.Odd:
+ db "ODD@@@@@@@@@"
+
+INCLUDE "data/odd_eggs.asm"
diff --git a/engine/options_menu.asm b/engine/options_menu.asm
index ec41288ff..6e306a646 100755
--- a/engine/options_menu.asm
+++ b/engine/options_menu.asm
@@ -105,6 +105,11 @@ GetOptionPointer: ; e42d6
; e42f5
+ const_def
+ const TEXT_SPEED_FAST ; 0
+ const TEXT_SPEED_MED ; 1
+ const TEXT_SPEED_SLOW ; 2
+
Options_TextSpeed: ; e42f5
call GetTextSpeed
ld a, [hJoyPressed]
@@ -113,9 +118,9 @@ Options_TextSpeed: ; e42f5
bit D_RIGHT_F, a
jr z, .NonePressed
ld a, c ; right pressed
- cp SLOW_TEXT
+ cp TEXT_SPEED_SLOW
jr c, .Increase
- ld c, FAST_TEXT +- 1
+ ld c, TEXT_SPEED_FAST +- 1
.Increase:
inc c
@@ -126,7 +131,7 @@ Options_TextSpeed: ; e42f5
ld a, c
and a
jr nz, .Decrease
- ld c, SLOW_TEXT + 1
+ ld c, TEXT_SPEED_SLOW + 1
.Decrease:
dec c
@@ -154,38 +159,39 @@ Options_TextSpeed: ; e42f5
; e4331
.Strings:
+; entries correspond to TEXT_SPEED_* constants
dw .Fast
dw .Mid
dw .Slow
-.Fast:
- db "FAST@"
-.Mid:
- db "MID @"
-.Slow:
- db "SLOW@"
+.Fast: db "FAST@"
+.Mid: db "MID @"
+.Slow: db "SLOW@"
; e4346
GetTextSpeed: ; e4346
- ld a, [Options] ; This converts the number of frames, to 0, 1, 2 representing speed
- and 7
- cp 5 ; 5 frames of delay is slow
+; converts TEXT_DELAY_* value in a to TEXT_SPEED_* value in c,
+; with previous/next TEXT_DELAY_* values in d/e
+ ld a, [Options]
+ and $7
+ cp TEXT_DELAY_SLOW
jr z, .slow
- cp 1 ; 1 frame of delay is fast
+ cp TEXT_DELAY_FAST
jr z, .fast
- ld c, MED_TEXT ; set it to mid if not one of the above
- lb de, 1, 5
+ ; none of the above
+ ld c, TEXT_SPEED_MED
+ lb de, TEXT_DELAY_FAST, TEXT_DELAY_SLOW
ret
.slow
- ld c, SLOW_TEXT
- lb de, 3, 1
+ ld c, TEXT_SPEED_SLOW
+ lb de, TEXT_DELAY_MED, TEXT_DELAY_FAST
ret
.fast
- ld c, FAST_TEXT
- lb de, 5, 3
+ ld c, TEXT_SPEED_FAST
+ lb de, TEXT_DELAY_SLOW, TEXT_DELAY_MED
ret
; e4365
@@ -227,10 +233,8 @@ Options_BattleScene: ; e4365
ret
; e4398
-.On:
- db "ON @"
-.Off:
- db "OFF@"
+.On: db "ON @"
+.Off: db "OFF@"
; e43a0
@@ -270,10 +274,8 @@ Options_BattleStyle: ; e43a0
ret
; e43d1
-.Shift:
- db "SHIFT@"
-.Set:
- db "SET @"
+.Shift: db "SHIFT@"
+.Set: db "SET @"
; e43dd
@@ -320,13 +322,18 @@ Options_Sound: ; e43dd
ret
; e4416
-.Mono:
- db "MONO @"
-.Stereo:
- db "STEREO@"
+.Mono: db "MONO @"
+.Stereo: db "STEREO@"
; e4424
+ const_def
+ const PRINT_LIGHTEST ; 0
+ const PRINT_LIGHTER ; 1
+ const PRINT_NORMAL ; 2
+ const PRINT_DARKER ; 3
+ const PRINT_DARKEST ; 4
+
Options_Print: ; e4424
call GetPrinterSetting
ld a, [hJoyPressed]
@@ -335,9 +342,9 @@ Options_Print: ; e4424
bit D_RIGHT_F, a
jr z, .NonePressed
ld a, c
- cp 4
+ cp PRINT_DARKEST
jr c, .Increase
- ld c, -1
+ ld c, PRINT_LIGHTEST - 1
.Increase:
inc c
@@ -348,7 +355,7 @@ Options_Print: ; e4424
ld a, c
and a
jr nz, .Decrease
- ld c, 5
+ ld c, PRINT_DARKEST + 1
.Decrease:
dec c
@@ -373,57 +380,56 @@ Options_Print: ; e4424
; e445a
.Strings:
+; entries correspond to PRINT_* constants
dw .Lightest
dw .Lighter
dw .Normal
dw .Darker
dw .Darkest
-.Lightest:
- db "LIGHTEST@"
-.Lighter:
- db "LIGHTER @"
-.Normal:
- db "NORMAL @"
-.Darker:
- db "DARKER @"
-.Darkest:
- db "DARKEST @"
+.Lightest: db "LIGHTEST@"
+.Lighter: db "LIGHTER @"
+.Normal: db "NORMAL @"
+.Darker: db "DARKER @"
+.Darkest: db "DARKEST @"
; e4491
GetPrinterSetting: ; e4491
- ld a, [GBPrinter] ; converts from the stored printer setting to 0,1,2,3,4
+; converts GBPRINTER_* value in a to PRINT_* value in c,
+; with previous/next GBPRINTER_* values in d/e
+ ld a, [GBPrinter]
and a
jr z, .IsLightest
- cp PRINT_LIGHTER
+ cp GBPRINTER_LIGHTER
jr z, .IsLight
- cp PRINT_DARKER
+ cp GBPRINTER_DARKER
jr z, .IsDark
- cp PRINT_DARKEST
+ cp GBPRINTER_DARKEST
jr z, .IsDarkest
- ld c, 2 ; normal if none of the above
- lb de, PRINT_LIGHTER, PRINT_DARKER ; the 2 values next to this setting
+ ; none of the above
+ ld c, PRINT_NORMAL
+ lb de, GBPRINTER_LIGHTER, GBPRINTER_DARKER
ret
.IsLightest:
- ld c, 0
- lb de, PRINT_DARKEST, PRINT_LIGHTER ; the 2 values next to this setting
+ ld c, PRINT_LIGHTEST
+ lb de, GBPRINTER_DARKEST, GBPRINTER_LIGHTER
ret
.IsLight:
- ld c, 1
- lb de, PRINT_LIGHTEST, PRINT_NORMAL ; the 2 values next to this setting
+ ld c, PRINT_LIGHTER
+ lb de, GBPRINTER_LIGHTEST, GBPRINTER_NORMAL
ret
.IsDark:
- ld c, 3
- lb de, PRINT_NORMAL, PRINT_DARKEST ; the 2 values next to this setting
+ ld c, PRINT_DARKER
+ lb de, GBPRINTER_NORMAL, GBPRINTER_DARKEST
ret
.IsDarkest:
- ld c, 4
- lb de, PRINT_DARKER, PRINT_LIGHTEST ; the 2 values next to this setting
+ ld c, PRINT_DARKEST
+ lb de, GBPRINTER_DARKER, GBPRINTER_LIGHTEST
ret
; e44c1
@@ -463,10 +469,8 @@ Options_MenuAccount: ; e44c1
ret
; e44f2
-.Off:
- db "OFF@"
-.On:
- db "ON @"
+.Off: db "OFF@"
+.On: db "ON @"
; e44fa
diff --git a/engine/overworld.asm b/engine/overworld.asm
index 3ed029800..5681dd6b8 100755
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -716,764 +716,18 @@ LoadEmote:: ; 1442f
ret
; 1444d
-emote_header: MACRO
- dw \1
- db \2 tiles, BANK(\1)
- dw VTiles1 tile \3
-ENDM
EmotesPointers: ; 144d
-; entries correspond to EMOTE_* constants
-; graphics address, length, starting tile
- emote_header ShockEmote, 4, $78
- emote_header QuestionEmote, 4, $78
- emote_header HappyEmote, 4, $78
- emote_header SadEmote, 4, $78
- emote_header HeartEmote, 4, $78
- emote_header BoltEmote, 4, $78
- emote_header SleepEmote, 4, $78
- emote_header FishEmote, 4, $78
- emote_header JumpShadowGFX, 1, $7c
- emote_header FishingRodGFX, 2, $7c
- emote_header BoulderDustGFX, 2, $7e
- emote_header GrassRustleGFX, 1, $7e
+INCLUDE "data/emote_headers.asm"
; 14495
SpriteMons: ; 14495
- db UNOWN
- db GEODUDE
- db GROWLITHE
- db WEEDLE
- db SHELLDER
- db ODDISH
- db GENGAR
- db ZUBAT
- db MAGIKARP
- db SQUIRTLE
- db TOGEPI
- db BUTTERFREE
- db DIGLETT
- db POLIWAG
- db PIKACHU
- db CLEFAIRY
- db CHARMANDER
- db JYNX
- db STARMIE
- db BULBASAUR
- db JIGGLYPUFF
- db GRIMER
- db EKANS
- db PARAS
- db TENTACOOL
- db TAUROS
- db MACHOP
- db VOLTORB
- db LAPRAS
- db RHYDON
- db MOLTRES
- db SNORLAX
- db GYARADOS
- db LUGIA
- db HO_OH
+INCLUDE "data/sprite_mons.asm"
; 144b8
-OutdoorSprites: ; 144b8
-; Valid sprite IDs for each map group.
-
- dw Group1Sprites
- dw Group2Sprites
- dw Group3Sprites
- dw Group4Sprites
- dw Group5Sprites
- dw Group6Sprites
- dw Group7Sprites
- dw Group8Sprites
- dw Group9Sprites
- dw Group10Sprites
- dw Group11Sprites
- dw Group12Sprites
- dw Group13Sprites
- dw Group14Sprites
- dw Group15Sprites
- dw Group16Sprites
- dw Group17Sprites
- dw Group18Sprites
- dw Group19Sprites
- dw Group20Sprites
- dw Group21Sprites
- dw Group22Sprites
- dw Group23Sprites
- dw Group24Sprites
- dw Group25Sprites
- dw Group26Sprites
-; 144ec
-
-
-Group13Sprites: ; 144ec
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_TEACHER
- db SPRITE_FISHER
- db SPRITE_YOUNGSTER
- db SPRITE_BLUE
- db SPRITE_GRAMPS
- db SPRITE_BUG_CATCHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_SWIMMER_GIRL
- db SPRITE_SWIMMER_GUY
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 14503
-
-Group23Sprites: ; 14503
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_TEACHER
- db SPRITE_FISHER
- db SPRITE_YOUNGSTER
- db SPRITE_BLUE
- db SPRITE_GRAMPS
- db SPRITE_BUG_CATCHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_SWIMMER_GIRL
- db SPRITE_SWIMMER_GUY
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 1451a
-
-Group14Sprites: ; 1451a
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_TEACHER
- db SPRITE_FISHER
- db SPRITE_YOUNGSTER
- db SPRITE_BLUE
- db SPRITE_GRAMPS
- db SPRITE_BUG_CATCHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_SWIMMER_GIRL
- db SPRITE_SWIMMER_GUY
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 14531
-
-Group6Sprites: ; 14531
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_TEACHER
- db SPRITE_FISHER
- db SPRITE_YOUNGSTER
- db SPRITE_BLUE
- db SPRITE_GRAMPS
- db SPRITE_BUG_CATCHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_SWIMMER_GIRL
- db SPRITE_SWIMMER_GUY
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 14548
-
-Group7Sprites: ; 14548
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_COOLTRAINER_M
- db SPRITE_SUPER_NERD
- db SPRITE_COOLTRAINER_F
- db SPRITE_FISHER
- db SPRITE_YOUNGSTER
- db SPRITE_LASS
- db SPRITE_POKEFAN_M
- db SPRITE_ROCKET
- db SPRITE_MISTY
- db SPRITE_POKE_BALL
- db SPRITE_SLOWPOKE
-; 1455f
-
-Group25Sprites: ; 1455f
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_COOLTRAINER_M
- db SPRITE_SUPER_NERD
- db SPRITE_COOLTRAINER_F
- db SPRITE_FISHER
- db SPRITE_YOUNGSTER
- db SPRITE_LASS
- db SPRITE_POKEFAN_M
- db SPRITE_ROCKET
- db SPRITE_MISTY
- db SPRITE_POKE_BALL
- db SPRITE_SLOWPOKE
-; 14576
-
-Group21Sprites: ; 14576
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_FISHER
- db SPRITE_POLIWAG
- db SPRITE_TEACHER
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_LASS
- db SPRITE_BIKER
- db SPRITE_SILVER
- db SPRITE_BLUE
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 1458d
-
-Group18Sprites: ; 1458d
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_POKEFAN_M
- db SPRITE_MACHOP
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_FISHER
- db SPRITE_TEACHER
- db SPRITE_SUPER_NERD
- db SPRITE_BIG_SNORLAX
- db SPRITE_BIKER
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 145a4
-
-Group12Sprites: ; 145a4
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_POKEFAN_M
- db SPRITE_MACHOP
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_FISHER
- db SPRITE_TEACHER
- db SPRITE_SUPER_NERD
- db SPRITE_BIG_SNORLAX
- db SPRITE_BIKER
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 145bb
-
-Group17Sprites: ; 145bb
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_POKEFAN_M
- db SPRITE_MACHOP
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_FISHER
- db SPRITE_TEACHER
- db SPRITE_SUPER_NERD
- db SPRITE_BIG_SNORLAX
- db SPRITE_BIKER
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 145d2
-
-Group16Sprites: ; 145d2
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_POKEFAN_M
- db SPRITE_BUENA
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_FISHER
- db SPRITE_TEACHER
- db SPRITE_SUPER_NERD
- db SPRITE_MACHOP
- db SPRITE_BIKER
- db SPRITE_POKE_BALL
- db SPRITE_BOULDER
-; 145e9
-
-Group24Sprites: ; 145e9
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_SILVER
- db SPRITE_TEACHER
- db SPRITE_FISHER
- db SPRITE_COOLTRAINER_M
- db SPRITE_YOUNGSTER
- db SPRITE_MONSTER
- db SPRITE_GRAMPS
- db SPRITE_BUG_CATCHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 14600
-
-Group26Sprites: ; 14600
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_SILVER
- db SPRITE_TEACHER
- db SPRITE_FISHER
- db SPRITE_COOLTRAINER_M
- db SPRITE_YOUNGSTER
- db SPRITE_MONSTER
- db SPRITE_GRAMPS
- db SPRITE_BUG_CATCHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 14617
-
-Group19Sprites: ; 14617
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_SILVER
- db SPRITE_TEACHER
- db SPRITE_FISHER
- db SPRITE_COOLTRAINER_M
- db SPRITE_YOUNGSTER
- db SPRITE_MONSTER
- db SPRITE_GRAMPS
- db SPRITE_BUG_CATCHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 1462e
-
-Group10Sprites: ; 1462e
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_FISHER
- db SPRITE_LASS
- db SPRITE_OFFICER
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_COOLTRAINER_M
- db SPRITE_BUG_CATCHER
- db SPRITE_SUPER_NERD
- db SPRITE_WEIRD_TREE
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 14645
-
-Group4Sprites: ; 14645
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_FISHER
- db SPRITE_LASS
- db SPRITE_OFFICER
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_COOLTRAINER_M
- db SPRITE_BUG_CATCHER
- db SPRITE_SUPER_NERD
- db SPRITE_WEIRD_TREE
- db SPRITE_POKE_BALL
- db SPRITE_FRUIT_TREE
-; 1465c
-
-Group8Sprites: ; 1465c
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_KURT_OUTSIDE
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_OFFICER
- db SPRITE_POKEFAN_M
- db SPRITE_BLACK_BELT
- db SPRITE_TEACHER
- db SPRITE_AZALEA_ROCKET
- db SPRITE_LASS
- db SPRITE_SILVER
- db SPRITE_FRUIT_TREE
- db SPRITE_SLOWPOKE
-; 14673
-
-Group11Sprites: ; 14673
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_POKE_BALL
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_OFFICER
- db SPRITE_POKEFAN_M
- db SPRITE_DAY_CARE_MON_1
- db SPRITE_COOLTRAINER_F
- db SPRITE_ROCKET
- db SPRITE_LASS
- db SPRITE_DAY_CARE_MON_2
- db SPRITE_FRUIT_TREE
- db SPRITE_SLOWPOKE
-; 1468a
-
-Group22Sprites: ; 1468a
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_STANDING_YOUNGSTER
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_OLIVINE_RIVAL
- db SPRITE_POKEFAN_M
- db SPRITE_LASS
- db SPRITE_BUENA
- db SPRITE_SWIMMER_GIRL
- db SPRITE_SAILOR
- db SPRITE_POKEFAN_F
- db SPRITE_SUPER_NERD
- db SPRITE_TAUROS
- db SPRITE_FRUIT_TREE
- db SPRITE_ROCK
-; 146a1
-
-Group1Sprites: ; 146a1
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_STANDING_YOUNGSTER
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_OLIVINE_RIVAL
- db SPRITE_POKEFAN_M
- db SPRITE_LASS
- db SPRITE_BUENA
- db SPRITE_SWIMMER_GIRL
- db SPRITE_SAILOR
- db SPRITE_POKEFAN_F
- db SPRITE_SUPER_NERD
- db SPRITE_TAUROS
- db SPRITE_FRUIT_TREE
- db SPRITE_ROCK
-; 146b8
-
-Group9Sprites: ; 146b8
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_LANCE
- db SPRITE_GRAMPS
- db SPRITE_SUPER_NERD
- db SPRITE_COOLTRAINER_F
- db SPRITE_FISHER
- db SPRITE_COOLTRAINER_M
- db SPRITE_LASS
- db SPRITE_YOUNGSTER
- db SPRITE_GYARADOS
- db SPRITE_FRUIT_TREE
- db SPRITE_POKE_BALL
-; 146cf
-
-Group2Sprites: ; 146cf
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_LASS
- db SPRITE_SUPER_NERD
- db SPRITE_COOLTRAINER_M
- db SPRITE_POKEFAN_M
- db SPRITE_BLACK_BELT
- db SPRITE_COOLTRAINER_F
- db SPRITE_FISHER
- db SPRITE_FRUIT_TREE
- db SPRITE_POKE_BALL
-; 146e6
-
-Group5Sprites: ; 146e6
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_GRAMPS
- db SPRITE_YOUNGSTER
- db SPRITE_LASS
- db SPRITE_SUPER_NERD
- db SPRITE_COOLTRAINER_M
- db SPRITE_POKEFAN_M
- db SPRITE_BLACK_BELT
- db SPRITE_COOLTRAINER_F
- db SPRITE_FISHER
- db SPRITE_FRUIT_TREE
- db SPRITE_POKE_BALL
-; 146fd
-
-Group3Sprites: ; 146fd
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_GAMEBOY_KID
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_LASS
- db SPRITE_POKEFAN_F
- db SPRITE_TEACHER
- db SPRITE_YOUNGSTER
- db SPRITE_GROWLITHE
- db SPRITE_POKEFAN_M
- db SPRITE_ROCKER
- db SPRITE_FISHER
- db SPRITE_SCIENTIST
- db SPRITE_POKE_BALL
- db SPRITE_BOULDER
-; 14714
-
-Group15Sprites: ; 14714
- db SPRITE_SUICUNE
- db SPRITE_SILVER_TROPHY
- db SPRITE_FAMICOM
- db SPRITE_POKEDEX
- db SPRITE_WILL
- db SPRITE_KAREN
- db SPRITE_NURSE
- db SPRITE_OLD_LINK_RECEPTIONIST
- db SPRITE_BIG_LAPRAS
- db SPRITE_BIG_ONIX
- db SPRITE_SUDOWOODO
- db SPRITE_BIG_SNORLAX
- db SPRITE_SAILOR
- db SPRITE_FISHING_GURU
- db SPRITE_GENTLEMAN
- db SPRITE_SUPER_NERD
- db SPRITE_HO_OH
- db SPRITE_TEACHER
- db SPRITE_COOLTRAINER_F
- db SPRITE_YOUNGSTER
- db SPRITE_FAIRY
- db SPRITE_POKE_BALL
- db SPRITE_ROCK
-; 1472b
-
-Group20Sprites: ; 1472b
- db SPRITE_OAK
- db SPRITE_FISHER
- db SPRITE_TEACHER
- db SPRITE_TWIN
- db SPRITE_POKEFAN_M
- db SPRITE_GRAMPS
- db SPRITE_FAIRY
- db SPRITE_SILVER
- db SPRITE_FISHING_GURU
- db SPRITE_POKE_BALL
- db SPRITE_POKEDEX
-; 14736
+INCLUDE "data/outdoor_sprites.asm"
SpriteHeaders: ; 14736
diff --git a/engine/phone.asm b/engine/phone.asm
index 55deab4d1..ce9cfa081 100644
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -761,87 +761,11 @@ GetCallerLocation: ; 90439
; 9045f
PhoneContacts: ; 9045f
-phone: MACRO
- db \1, \2 ; trainer
- map \3 ; map
- db \4
- dba \5 ; script 1
- db \6
- dba \7 ; script 2
-ENDM
-; entries correspond to PHONE_* constants
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONECONTACT_MOM, KRISS_HOUSE_1F, 7, MomPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONECONTACT_BILL, N_A, 7, BillPhoneScript1, 0, BillPhoneScript2
- phone TRAINER_NONE, PHONECONTACT_ELM, ELMS_LAB, 7, ElmPhoneScript1, 0, ElmPhoneScript2
- phone SCHOOLBOY, JACK1, NATIONAL_PARK, 7, JackPhoneScript1, 7, JackPhoneScript2
- phone POKEFANF, BEVERLY1, NATIONAL_PARK, 7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
- phone SAILOR, HUEY1, OLIVINE_LIGHTHOUSE_2F, 7, HueyPhoneScript1, 7, HueyPhoneScript2
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone COOLTRAINERM, GAVEN3, ROUTE_26, 7, GavenPhoneScript1, 7, GavenPhoneScript2
- phone COOLTRAINERF, BETH1, ROUTE_26, 7, BethPhoneScript1, 7, BethPhoneScript2
- phone BIRD_KEEPER, JOSE2, ROUTE_27, 7, JosePhoneScript1, 7, JosePhoneScript2
- phone COOLTRAINERF, REENA1, ROUTE_27, 7, ReenaPhoneScript1, 7, ReenaPhoneScript2
- phone YOUNGSTER, JOEY1, ROUTE_30, 7, JoeyPhoneScript1, 7, JoeyPhoneScript2
- phone BUG_CATCHER, WADE1, ROUTE_31, 7, WadePhoneScript1, 7, WadePhoneScript2
- phone FISHER, RALPH1, ROUTE_32, 7, RalphPhoneScript1, 7, RalphPhoneScript2
- phone PICNICKER, LIZ1, ROUTE_32, 7, LizPhoneScript1, 7, LizPhoneScript2
- phone HIKER, ANTHONY2, ROUTE_33, 7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
- phone CAMPER, TODD1, ROUTE_34, 7, ToddPhoneScript1, 7, ToddPhoneScript2
- phone PICNICKER, GINA1, ROUTE_34, 7, GinaPhoneScript1, 7, GinaPhoneScript2
- phone JUGGLER, IRWIN1, ROUTE_35, 7, IrwinPhoneScript1, 7, IrwinPhoneScript2
- phone BUG_CATCHER, ARNIE1, ROUTE_35, 7, ArniePhoneScript1, 7, ArniePhoneScript2
- phone SCHOOLBOY, ALAN1, ROUTE_36, 7, AlanPhoneScript1, 7, AlanPhoneScript2
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone LASS, DANA1, ROUTE_38, 7, DanaPhoneScript1, 7, DanaPhoneScript2
- phone SCHOOLBOY, CHAD1, ROUTE_38, 7, ChadPhoneScript1, 7, ChadPhoneScript2
- phone POKEFANM, DEREK1, ROUTE_39, 7, DerekPhoneScript1, 7, DerekPhoneScript2
- phone FISHER, TULLY1, ROUTE_42, 7, TullyPhoneScript1, 7, TullyPhoneScript2
- phone POKEMANIAC, BRENT1, ROUTE_43, 7, BrentPhoneScript1, 7, BrentPhoneScript2
- phone PICNICKER, TIFFANY3, ROUTE_43, 7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
- phone BIRD_KEEPER, VANCE1, ROUTE_44, 7, VancePhoneScript1, 7, VancePhoneScript2
- phone FISHER, WILTON1, ROUTE_44, 7, WiltonPhoneScript1, 7, WiltonPhoneScript2
- phone BLACKBELT_T, KENJI3, ROUTE_45, 7, KenjiPhoneScript1, 7, KenjiPhoneScript2
- phone HIKER, PARRY1, ROUTE_45, 7, ParryPhoneScript1, 7, ParryPhoneScript2
- phone PICNICKER, ERIN1, ROUTE_46, 7, ErinPhoneScript1, 7, ErinPhoneScript2
- phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1, 7, BuenaPhoneScript2
+INCLUDE "data/phone_contacts.asm"
; 90627
SpecialPhoneCallList: ; 90627
- dw SpecialCallOnlyWhenOutside
- db PHONE_ELM
- dba ElmPhoneScript2
-
- dw SpecialCallOnlyWhenOutside
- db PHONE_ELM
- dba ElmPhoneScript2
-
- dw SpecialCallOnlyWhenOutside
- db PHONE_ELM
- dba ElmPhoneScript2
-
- dw SpecialCallOnlyWhenOutside
- db PHONE_ELM
- dba ElmPhoneScript2
-
- dw SpecialCallWhereverYouAre
- db PHONE_ELM
- dba ElmPhoneScript2
-
- dw SpecialCallWhereverYouAre
- db PHONE_OAK ; ????????
- dba BikeShopPhoneScript ; bike shop
-
- dw SpecialCallWhereverYouAre
- db PHONE_MOM
- dba MomPhoneLectureScript
-
- dw SpecialCallOnlyWhenOutside
- db PHONE_ELM
- dba ElmPhoneScript2
+INCLUDE "data/phone_special.asm"
; 90657
UnknownScript_0x90657: ; 0x90657
diff --git a/engine/save.asm b/engine/save.asm
index de2d3bc65..97267347c 100644
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -727,14 +727,7 @@ TryLoadSaveData: ; 14f1c
; 14f7c
DefaultOptions: ; 14f7c
- db $03 ; mid text speed
- db $00 ; wSaveFileExists
- db $00 ; frame 0
- db $01 ; TextBoxFlags
- db $40 ; gb printer: normal brightness
- db $01 ; menu account on
- db $00 ; ??
- db $00 ; ??
+INCLUDE "data/default_options.asm"
; 14f84
CheckPrimarySaveFile: ; 14f84
diff --git a/engine/spawn_points.asm b/engine/spawn_points.asm
index 8dda255a1..3ed0a98ce 100644
--- a/engine/spawn_points.asm
+++ b/engine/spawn_points.asm
@@ -1,44 +1,6 @@
SpawnPoints: ; 0x152ab
-
-spawn: MACRO
-; map, y, x
- map \1
- db \2, \3
-ENDM
-
- spawn KRISS_HOUSE_2F, 3, 3
- spawn VIRIDIAN_POKECENTER_1F, 5, 3
-
- spawn PALLET_TOWN, 5, 6
- spawn VIRIDIAN_CITY, 23, 26
- spawn PEWTER_CITY, 13, 26
- spawn CERULEAN_CITY, 19, 22
- spawn ROUTE_10_NORTH, 11, 2
- spawn VERMILION_CITY, 9, 6
- spawn LAVENDER_TOWN, 5, 6
- spawn SAFFRON_CITY, 9, 30
- spawn CELADON_CITY, 29, 10
- spawn FUCHSIA_CITY, 19, 28
- spawn CINNABAR_ISLAND, 11, 12
- spawn ROUTE_23, 9, 6
-
- spawn NEW_BARK_TOWN, 13, 6
- spawn CHERRYGROVE_CITY, 29, 4
- spawn VIOLET_CITY, 31, 26
- spawn ROUTE_32, 11, 74
- spawn AZALEA_TOWN, 15, 10
- spawn CIANWOOD_CITY, 23, 44
- spawn GOLDENROD_CITY, 15, 28
- spawn OLIVINE_CITY, 13, 22
- spawn ECRUTEAK_CITY, 23, 28
- spawn MAHOGANY_TOWN, 15, 14
- spawn LAKE_OF_RAGE, 21, 29
- spawn BLACKTHORN_CITY, 21, 30
- spawn SILVER_CAVE_OUTSIDE, 23, 20
- spawn FAST_SHIP_CABINS_SW_SSW_NW, 6, 2
- spawn N_A, -1, -1
-
+INCLUDE "data/spawn_points.asm"
LoadSpawnPoint: ; 1531f
diff --git a/engine/sprites.asm b/engine/sprites.asm
index ad36dfbc9..4b20a2371 100755
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -551,98 +551,7 @@ BrokenGetStdGraphics: ; 8d1ac
; 8d1c4
SpriteAnimSeqData: ; 8d1c4
-; entries correspond to SPRITE_ANIM_INDEX_* constants
- ; frameset sequence, tile
-; SPRITE_ANIM_INDEX_PARTY_MON
- db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_SEQ_PARTY_MON, $00
-; SPRITE_ANIM_INDEX_01
- db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00
-; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
- db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05
-; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
- db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00
-; SPRITE_ANIM_INDEX_GS_INTRO_STAR
- db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR, SPRITE_ANIM_SEQ_GS_INTRO_STAR, $06
-; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
- db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE, SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE, $06
-; SPRITE_ANIM_INDEX_SLOTS_GOLEM
- db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM, SPRITE_ANIM_SEQ_SLOTS_GOLEM, $07
-; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
- db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07
-; SPRITE_ANIM_INDEX_SLOTS_EGG
- db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07
-; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
- db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_MAIL_CURSOR, $05
-; SPRITE_ANIM_INDEX_RED_WALK
- db SPRITE_ANIM_FRAMESET_RED_WALK, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_0B
- db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0D, $08
-; SPRITE_ANIM_INDEX_DUMMY_GAME
- db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0E, $08
-; SPRITE_ANIM_INDEX_0D
- db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0F, $08
-; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
- db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL, SPRITE_ANIM_SEQ_TRADE_POKE_BALL, $00
-; SPRITE_ANIM_INDEX_TRADE_POOF
- db SPRITE_ANIM_FRAMESET_TRADE_POOF, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
- db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE, SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE, $00
-; SPRITE_ANIM_INDEX_TRADEMON_ICON
- db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
-; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
- db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
-; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
- db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
-; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
- db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB, SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB, $00
-; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
- db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_LEAF
- db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_CUT_LEAVES, $00
-; SPRITE_ANIM_INDEX_CUT_TREE
- db SPRITE_ANIM_FRAMESET_CUT_TREE, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_FLY_LEAF
- db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00
-; SPRITE_ANIM_INDEX_EGG_CRACK
- db SPRITE_ANIM_FRAMESET_EGG_CRACK, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_1A
- db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00
-; SPRITE_ANIM_INDEX_HEADBUTT
- db SPRITE_ANIM_FRAMESET_HEADBUTT, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_EGG_HATCH
- db SPRITE_ANIM_FRAMESET_EGG_HATCH, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
-; SPRITE_ANIM_INDEX_1D
- db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00
-; SPRITE_ANIM_INDEX_BLUE_WALK
- db SPRITE_ANIM_FRAMESET_BLUE_WALK, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
- db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_20
- db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_21
- db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_22
- db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_23
- db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00
-; SPRITE_ANIM_INDEX_24
- db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00
-; SPRITE_ANIM_INDEX_25
- db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_INTRO_SUICUNE
- db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE, SPRITE_ANIM_SEQ_INTRO_SUICUNE, $00
-; SPRITE_ANIM_INDEX_INTRO_PICHU
- db SPRITE_ANIM_FRAMESET_INTRO_PICHU, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
-; SPRITE_ANIM_INDEX_INTRO_WOOPER
- db SPRITE_ANIM_FRAMESET_INTRO_WOOPER, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
-; SPRITE_ANIM_INDEX_INTRO_UNOWN
- db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1, SPRITE_ANIM_SEQ_INTRO_UNOWN, $00
-; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
- db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F, SPRITE_ANIM_SEQ_INTRO_UNOWN_F, $00
-; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
- db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY, $00
-; SPRITE_ANIM_INDEX_CELEBI
- db SPRITE_ANIM_FRAMESET_CELEBI_LEFT, SPRITE_ANIM_SEQ_NULL, $00 ; 2c
+INCLUDE "data/sprite_anim_seqs.asm"
; 8d24b
INCLUDE "engine/sprite_anims.asm" ; DoAnimFrame
diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm
index 561721074..6f17398fd 100755
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -145,159 +145,7 @@ PlaceTradePartnerNamesAndParty: ; fb60d
; fb656
KantoMonSpecials: ; fb656
-; The original special base stat for
-; each Kanto monster from Red/Blue.
- db 65 ; BULBASAUR
- db 80 ; IVYSAUR
- db 100 ; VENUSAUR
- db 50 ; CHARMANDER
- db 65 ; CHARMELEON
- db 85 ; CHARIZARD
- db 50 ; SQUIRTLE
- db 65 ; WARTORTLE
- db 85 ; BLASTOISE
- db 20 ; CATERPIE
- db 25 ; METAPOD
- db 80 ; BUTTERFREE
- db 20 ; WEEDLE
- db 25 ; KAKUNA
- db 45 ; BEEDRILL
- db 35 ; PIDGEY
- db 50 ; PIDGEOTTO
- db 70 ; PIDGEOT
- db 25 ; RATTATA
- db 50 ; RATICATE
- db 31 ; SPEAROW
- db 61 ; FEAROW
- db 40 ; EKANS
- db 65 ; ARBOK
- db 50 ; PIKACHU
- db 90 ; RAICHU
- db 30 ; SANDSHREW
- db 55 ; SANDSLASH
- db 40 ; NIDORAN_F
- db 55 ; NIDORINA
- db 75 ; NIDOQUEEN
- db 40 ; NIDORAN_M
- db 55 ; NIDORINO
- db 75 ; NIDOKING
- db 60 ; CLEFAIRY
- db 85 ; CLEFABLE
- db 65 ; VULPIX
- db 100 ; NINETALES
- db 25 ; JIGGLYPUFF
- db 50 ; WIGGLYTUFF
- db 40 ; ZUBAT
- db 75 ; GOLBAT
- db 75 ; ODDISH
- db 85 ; GLOOM
- db 100 ; VILEPLUME
- db 55 ; PARAS
- db 80 ; PARASECT
- db 40 ; VENONAT
- db 90 ; VENOMOTH
- db 45 ; DIGLETT
- db 70 ; DUGTRIO
- db 40 ; MEOWTH
- db 65 ; PERSIAN
- db 50 ; PSYDUCK
- db 80 ; GOLDUCK
- db 35 ; MANKEY
- db 60 ; PRIMEAPE
- db 50 ; GROWLITHE
- db 80 ; ARCANINE
- db 40 ; POLIWAG
- db 50 ; POLIWHIRL
- db 70 ; POLIWRATH
- db 105 ; ABRA
- db 120 ; KADABRA
- db 135 ; ALAKAZAM
- db 35 ; MACHOP
- db 50 ; MACHOKE
- db 65 ; MACHAMP
- db 70 ; BELLSPROUT
- db 85 ; WEEPINBELL
- db 100 ; VICTREEBEL
- db 100 ; TENTACOOL
- db 120 ; TENTACRUEL
- db 30 ; GEODUDE
- db 45 ; GRAVELER
- db 55 ; GOLEM
- db 65 ; PONYTA
- db 80 ; RAPIDASH
- db 40 ; SLOWPOKE
- db 80 ; SLOWBRO
- db 95 ; MAGNEMITE
- db 120 ; MAGNETON
- db 58 ; FARFETCH_D
- db 35 ; DODUO
- db 60 ; DODRIO
- db 70 ; SEEL
- db 95 ; DEWGONG
- db 40 ; GRIMER
- db 65 ; MUK
- db 45 ; SHELLDER
- db 85 ; CLOYSTER
- db 100 ; GASTLY
- db 115 ; HAUNTER
- db 130 ; GENGAR
- db 30 ; ONIX
- db 90 ; DROWZEE
- db 115 ; HYPNO
- db 25 ; KRABBY
- db 50 ; KINGLER
- db 55 ; VOLTORB
- db 80 ; ELECTRODE
- db 60 ; EXEGGCUTE
- db 125 ; EXEGGUTOR
- db 40 ; CUBONE
- db 50 ; MAROWAK
- db 35 ; HITMONLEE
- db 35 ; HITMONCHAN
- db 60 ; LICKITUNG
- db 60 ; KOFFING
- db 85 ; WEEZING
- db 30 ; RHYHORN
- db 45 ; RHYDON
- db 105 ; CHANSEY
- db 100 ; TANGELA
- db 40 ; KANGASKHAN
- db 70 ; HORSEA
- db 95 ; SEADRA
- db 50 ; GOLDEEN
- db 80 ; SEAKING
- db 70 ; STARYU
- db 100 ; STARMIE
- db 100 ; MR__MIME
- db 55 ; SCYTHER
- db 95 ; JYNX
- db 85 ; ELECTABUZZ
- db 85 ; MAGMAR
- db 55 ; PINSIR
- db 70 ; TAUROS
- db 20 ; MAGIKARP
- db 100 ; GYARADOS
- db 95 ; LAPRAS
- db 48 ; DITTO
- db 65 ; EEVEE
- db 110 ; VAPOREON
- db 110 ; JOLTEON
- db 110 ; FLAREON
- db 75 ; PORYGON
- db 90 ; OMANYTE
- db 115 ; OMASTAR
- db 45 ; KABUTO
- db 70 ; KABUTOPS
- db 60 ; AERODACTYL
- db 65 ; SNORLAX
- db 125 ; ARTICUNO
- db 125 ; ZAPDOS
- db 125 ; MOLTRES
- db 50 ; DRATINI
- db 70 ; DRAGONAIR
- db 100 ; DRAGONITE
- db 154 ; MEWTWO
- db 100 ; MEW
+INCLUDE "data/time_capsule/special_stats.asm"
; fb6ed
@@ -427,256 +275,5 @@ ConvertMon_1to2: ; fb908
; fb91c
Pokered_MonIndices: ; fb91c
- db RHYDON
- db KANGASKHAN
- db NIDORAN_M
- db CLEFAIRY
- db SPEAROW
- db VOLTORB
- db NIDOKING
- db SLOWBRO
- db IVYSAUR
- db EXEGGUTOR
- db LICKITUNG
- db EXEGGCUTE
- db GRIMER
- db GENGAR
- db NIDORAN_F
- db NIDOQUEEN
- db CUBONE
- db RHYHORN
- db LAPRAS
- db ARCANINE
- db MEW
- db GYARADOS
- db SHELLDER
- db TENTACOOL
- db GASTLY
- db SCYTHER
- db STARYU
- db BLASTOISE
- db PINSIR
- db TANGELA
- db SCIZOR
- db SHUCKLE
- db GROWLITHE
- db ONIX
- db FEAROW
- db PIDGEY
- db SLOWPOKE
- db KADABRA
- db GRAVELER
- db CHANSEY
- db MACHOKE
- db MR__MIME
- db HITMONLEE
- db HITMONCHAN
- db ARBOK
- db PARASECT
- db PSYDUCK
- db DROWZEE
- db GOLEM
- db HERACROSS
- db MAGMAR
- db HO_OH
- db ELECTABUZZ
- db MAGNETON
- db KOFFING
- db SNEASEL
- db MANKEY
- db SEEL
- db DIGLETT
- db TAUROS
- db TEDDIURSA
- db URSARING
- db SLUGMA
- db FARFETCH_D
- db VENONAT
- db DRAGONITE
- db MAGCARGO
- db SWINUB
- db PILOSWINE
- db DODUO
- db POLIWAG
- db JYNX
- db MOLTRES
- db ARTICUNO
- db ZAPDOS
- db DITTO
- db MEOWTH
- db KRABBY
- db CORSOLA
- db REMORAID
- db OCTILLERY
- db VULPIX
- db NINETALES
- db PIKACHU
- db RAICHU
- db DELIBIRD
- db MANTINE
- db DRATINI
- db DRAGONAIR
- db KABUTO
- db KABUTOPS
- db HORSEA
- db SEADRA
- db SKARMORY
- db HOUNDOUR
- db SANDSHREW
- db SANDSLASH
- db OMANYTE
- db OMASTAR
- db JIGGLYPUFF
- db WIGGLYTUFF
- db EEVEE
- db FLAREON
- db JOLTEON
- db VAPOREON
- db MACHOP
- db ZUBAT
- db EKANS
- db PARAS
- db POLIWHIRL
- db POLIWRATH
- db WEEDLE
- db KAKUNA
- db BEEDRILL
- db HOUNDOOM
- db DODRIO
- db PRIMEAPE
- db DUGTRIO
- db VENOMOTH
- db DEWGONG
- db KINGDRA
- db PHANPY
- db CATERPIE
- db METAPOD
- db BUTTERFREE
- db MACHAMP
- db DONPHAN
- db GOLDUCK
- db HYPNO
- db GOLBAT
- db MEWTWO
- db SNORLAX
- db MAGIKARP
- db PORYGON2
- db STANTLER
- db MUK
- db SMEARGLE
- db KINGLER
- db CLOYSTER
- db TYROGUE
- db ELECTRODE
- db CLEFABLE
- db WEEZING
- db PERSIAN
- db MAROWAK
- db HITMONTOP
- db HAUNTER
- db ABRA
- db ALAKAZAM
- db PIDGEOTTO
- db PIDGEOT
- db STARMIE
- db BULBASAUR
- db VENUSAUR
- db TENTACRUEL
- db SMOOCHUM
- db GOLDEEN
- db SEAKING
- db ELEKID
- db MAGBY
- db MILTANK
- db BLISSEY
- db PONYTA
- db RAPIDASH
- db RATTATA
- db RATICATE
- db NIDORINO
- db NIDORINA
- db GEODUDE
- db PORYGON
- db AERODACTYL
- db RAIKOU
- db MAGNEMITE
- db ENTEI
- db SUICUNE
- db CHARMANDER
- db SQUIRTLE
- db CHARMELEON
- db WARTORTLE
- db CHARIZARD
- db LARVITAR
- db PUPITAR
- db TYRANITAR
- db LUGIA
- db ODDISH
- db GLOOM
- db VILEPLUME
- db BELLSPROUT
- db WEEPINBELL
- db VICTREEBEL
- db CHIKORITA
- db BAYLEEF
- db MEGANIUM
- db CYNDAQUIL
- db QUILAVA
- db TYPHLOSION
- db TOTODILE
- db CROCONAW
- db FERALIGATR
- db SENTRET
- db FURRET
- db HOOTHOOT
- db NOCTOWL
- db LEDYBA
- db LEDIAN
- db SPINARAK
- db ARIADOS
- db CROBAT
- db CHINCHOU
- db LANTURN
- db PICHU
- db CLEFFA
- db IGGLYBUFF
- db TOGEPI
- db TOGETIC
- db NATU
- db XATU
- db MAREEP
- db FLAAFFY
- db AMPHAROS
- db BELLOSSOM
- db MARILL
- db AZUMARILL
- db SUDOWOODO
- db POLITOED
- db HOPPIP
- db SKIPLOOM
- db JUMPLUFF
- db AIPOM
- db SUNKERN
- db SUNFLORA
- db YANMA
- db WOOPER
- db QUAGSIRE
- db ESPEON
- db UMBREON
- db MURKROW
- db SLOWKING
- db MISDREAVUS
- db UNOWN
- db WOBBUFFET
- db GIRAFARIG
- db PINECO
- db FORRETRESS
- db DUNSPARCE
- db GLIGAR
- db STEELIX
- db SNUBBULL
- db GRANBULL
- db QWILFISH
- db WOBBUFFET
- db WOBBUFFET
+INCLUDE "data/time_capsule/mon_order.asm"
; fba18
diff --git a/engine/tmhm.asm b/engine/tmhm.asm
index dc5d698e1..40922c9ad 100755
--- a/engine/tmhm.asm
+++ b/engine/tmhm.asm
@@ -46,68 +46,5 @@ GetTMHMMove: ; 1166a
; 1167a
TMHMMoves: ; 1167a
- db DYNAMICPUNCH
- db HEADBUTT
- db CURSE
- db ROLLOUT
- db ROAR
- db TOXIC
- db ZAP_CANNON
- db ROCK_SMASH
- db PSYCH_UP
- db HIDDEN_POWER
- db SUNNY_DAY
- db SWEET_SCENT
- db SNORE
- db BLIZZARD
- db HYPER_BEAM
- db ICY_WIND
- db PROTECT
- db RAIN_DANCE
- db GIGA_DRAIN
- db ENDURE
- db FRUSTRATION
- db SOLARBEAM
- db IRON_TAIL
- db DRAGONBREATH
- db THUNDER
- db EARTHQUAKE
- db RETURN
- db DIG
- db PSYCHIC_M
- db SHADOW_BALL
- db MUD_SLAP
- db DOUBLE_TEAM
- db ICE_PUNCH
- db SWAGGER
- db SLEEP_TALK
- db SLUDGE_BOMB
- db SANDSTORM
- db FIRE_BLAST
- db SWIFT
- db DEFENSE_CURL
- db THUNDERPUNCH
- db DREAM_EATER
- db DETECT
- db REST
- db ATTRACT
- db THIEF
- db STEEL_WING
- db FIRE_PUNCH
- db FURY_CUTTER
- db NIGHTMARE
- db CUT
- db FLY
- db SURF
- db STRENGTH
- db FLASH
- db WHIRLPOOL
- db WATERFALL
-
-; Move tutor
- db FLAMETHROWER
- db THUNDERBOLT
- db ICE_BEAM
-
- db 0 ; end
+INCLUDE "data/tmhm_moves.asm"
; 116b7
diff --git a/engine/wildmons.asm b/engine/wildmons.asm
index bb668f2be..8fab382b7 100755
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -271,14 +271,14 @@ ChooseWildEncounter: ; 2a14f
inc hl
inc hl
call CheckOnWater
- ld de, .WaterMonTable
+ ld de, WaterMonProbTable
jr z, .watermon
inc hl
inc hl
ld a, [TimeOfDay]
ld bc, $e
call AddNTimes
- ld de, .GrassMonTable
+ ld de, GrassMonProbTable
.watermon
; hl contains the pointer to the wild mon data, let's save that to the stack
@@ -357,21 +357,7 @@ ChooseWildEncounter: ; 2a14f
ret
; 2a1cb
-.GrassMonTable: ; 2a1cb
- db 30, $0 ; 30% chance
- db 60, $2 ; 30% chance
- db 80, $4 ; 20% chance
- db 90, $6 ; 10% chance
- db 95, $8 ; 5% chance
- db 99, $a ; 4% chance
- db 100, $c ; 1% chance
-; 2a1d9
-
-.WaterMonTable: ; 2a1d9
- db 60, $0 ; 60% chance
- db 90, $2 ; 30% chance
- db 100, $4 ; 10% chance
-; 2a1df
+INCLUDE "data/wild/probabilities.asm"
CheckRepelEffect:: ; 2a1df
; If there is no active Repel, there's no need to be here.
@@ -799,27 +785,7 @@ _BackUpMapIndices: ; 2a3f6
; 2a40f
RoamMaps: ; 2a40f
-; Maps that roaming monsters can be on,
-; and possible maps they can jump to.
-; Notably missing are Route 40 and
-; Route 41, which are water routes.
- roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46
- roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31
- roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36
- roam_map ROUTE_32, 3, ROUTE_36, ROUTE_31, ROUTE_33
- roam_map ROUTE_33, 2, ROUTE_32, ROUTE_34
- roam_map ROUTE_34, 2, ROUTE_33, ROUTE_35
- roam_map ROUTE_35, 2, ROUTE_34, ROUTE_36
- roam_map ROUTE_36, 4, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37
- roam_map ROUTE_37, 3, ROUTE_36, ROUTE_38, ROUTE_42
- roam_map ROUTE_38, 3, ROUTE_37, ROUTE_39, ROUTE_42
- roam_map ROUTE_39, 1, ROUTE_38
- roam_map ROUTE_42, 4, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38
- roam_map ROUTE_43, 2, ROUTE_42, ROUTE_44
- roam_map ROUTE_44, 3, ROUTE_42, ROUTE_43, ROUTE_45
- roam_map ROUTE_45, 2, ROUTE_44, ROUTE_46
- roam_map ROUTE_46, 2, ROUTE_45, ROUTE_29
- db -1
+INCLUDE "data/wild/roammon_maps.asm"
; 2a4a0
ValidateTempWildMonSpecies: ; 2a4a0
diff --git a/event/happiness_egg.asm b/event/happiness_egg.asm
index 7588108bf..7c6d6f46b 100755
--- a/event/happiness_egg.asm
+++ b/event/happiness_egg.asm
@@ -55,11 +55,11 @@ ChangeHappiness: ; 71c2
push de
ld a, [de]
- cp 100
+ cp HAPPINESS_THRESHOLD_1
ld e, 0
jr c, .ok
inc e
- cp 200
+ cp HAPPINESS_THRESHOLD_2
jr c, .ok
inc e
@@ -73,7 +73,7 @@ ChangeHappiness: ; 71c2
ld d, 0
add hl, de
ld a, [hl]
- cp 100
+ cp $64 ; $80?
pop de
ld a, [de]
@@ -103,25 +103,7 @@ ChangeHappiness: ; 71c2
ret
.Actions:
- db +5, +3, +2 ; Gained a level
- db +5, +3, +2 ; Vitamin
- db +1, +1, +0 ; X Item
- db +3, +2, +1 ; Battled a Gym Leader
- db +1, +1, +0 ; Learned a move
- db -1, -1, -1 ; Lost to an enemy
- db -5, -5, -10 ; Fainted due to poison
- db -5, -5, -10 ; Lost to a much stronger enemy
- db +1, +1, +1 ; Haircut (Y1)
- db +3, +3, +1 ; Haircut (Y2)
- db +5, +5, +2 ; Haircut (Y3)
- db +1, +1, +1 ; Haircut (O1)
- db +3, +3, +1 ; Haircut (O2)
- db +10, +10, +4 ; Haircut (O3)
- db -5, -5, -10 ; Used Heal Powder or Energypowder (bitter)
- db -10, -10, -15 ; Used Energy Root (bitter)
- db -15, -15, -20 ; Used Revival Herb (bitter)
- db +3, +3, +1 ; Grooming
- db +10, +6, +4 ; Gained a level in the place where it was caught
+INCLUDE "data/happiness_changes.asm"
StepHappiness:: ; 725a
; Raise the party's happiness by 1 point every other step cycle.
@@ -165,7 +147,7 @@ DayCareStep:: ; 7282
jr z, .day_care_lady
ld a, [wBreedMon1Level] ; level
- cp 100
+ cp MAX_LEVEL
jr nc, .day_care_lady
ld hl, wBreedMon1Exp + 2 ; exp
inc [hl]
@@ -187,7 +169,7 @@ DayCareStep:: ; 7282
jr z, .check_egg
ld a, [wBreedMon2Level] ; level
- cp 100
+ cp MAX_LEVEL
jr nc, .check_egg
ld hl, wBreedMon2Exp + 2 ; exp
inc [hl]
diff --git a/event/mom_phone.asm b/event/mom_phone.asm
index 818010091..0d7a2366f 100755
--- a/event/mom_phone.asm
+++ b/event/mom_phone.asm
@@ -80,11 +80,11 @@ CheckBalance_MomItem2: ; fd044
.check_have_2300
ld hl, hMoneyTemp
- ld [hl], (2300 / $10000) ; $00
+ ld [hl], MOM_MONEY / $10000
inc hl
- ld [hl], ((2300 % $10000) / $100) ; $08
+ ld [hl], MOM_MONEY / $100 % $100
inc hl
- ld [hl], (2300 % $100) ; $fc
+ ld [hl], MOM_MONEY % $100
.loop
ld de, MomItemTriggerBalance
ld bc, wMomsMoney
@@ -212,31 +212,7 @@ endr
ret
; fd136
-momitem: macro
-; money to trigger, cost, kind, item
- dt \1
- dt \2
- db \3, \4
-ENDM
-
-MomItems_1: ; fd136
- momitem 0, 600, MOM_ITEM, SUPER_POTION
- momitem 0, 90, MOM_ITEM, ANTIDOTE
- momitem 0, 180, MOM_ITEM, POKE_BALL
- momitem 0, 450, MOM_ITEM, ESCAPE_ROPE
- momitem 0, 500, MOM_ITEM, GREAT_BALL
-MomItems_2: ; fd15e
- momitem 900, 600, MOM_ITEM, SUPER_POTION
- momitem 4000, 270, MOM_ITEM, REPEL
- momitem 7000, 600, MOM_ITEM, SUPER_POTION
- momitem 10000, 1800, MOM_DOLL, DECO_CHARMANDER_DOLL
- momitem 15000, 3000, MOM_ITEM, MOON_STONE
- momitem 19000, 600, MOM_ITEM, SUPER_POTION
- momitem 30000, 4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
- momitem 40000, 900, MOM_ITEM, HYPER_POTION
- momitem 50000, 8000, MOM_DOLL, DECO_PIKACHU_DOLL
- momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
-; fd1ae
+INCLUDE "data/mom_phone_items.asm"
db 0, 0, 0 ; XXX
diff --git a/event/overworld.asm b/event/overworld.asm
index 4d67bf61e..221f02a4f 100755
--- a/event/overworld.asm
+++ b/event/overworld.asm
@@ -277,53 +277,9 @@ CheckOverworldTileArrays: ; c840
xor a
ret
-CutTreeBlockPointers: ; c862
-; Which tileset are we in?
- dbw TILESET_JOHTO_1, .johto1
- dbw TILESET_JOHTO_2, .johto2
- dbw TILESET_KANTO, .kanto
- dbw TILESET_PARK, .park
- dbw TILESET_ILEX_FOREST, .ilex
- db -1
-
-.johto1 ; Johto OW
-; Which meta tile are we facing, which should we replace it with, and which animation?
- db $03, $02, $01 ; grass
- db $5b, $3c, $00 ; tree
- db $5f, $3d, $00 ; tree
- db $63, $3f, $00 ; tree
- db $67, $3e, $00 ; tree
- db -1
-
-.johto2 ; Goldenrod area
- db $03, $02, $01 ; grass
- db -1
-
-.kanto ; Kanto OW
- db $0b, $0a, $01 ; grass
- db $32, $6d, $00 ; tree
- db $33, $6c, $00 ; tree
- db $34, $6f, $00 ; tree
- db $35, $4c, $00 ; tree
- db $60, $6e, $00 ; tree
- db -1
-
-.park ; National Park
- db $13, $03, $01 ; grass
- db $03, $04, $01 ; grass
- db -1
-
-.ilex ; Ilex Forest
- db $0f, $17, $00
- db -1
-
-WhirlpoolBlockPointers: ; c8a4
- dbw TILESET_JOHTO_1, .johto
- db -1
-
-.johto ; c8a8
- db $07, $36, $00
- db -1
+
+INCLUDE "data/hm_blocks.asm"
+
OWFlash: ; c8ac
call .CheckUseFlash
diff --git a/gfx/icon_pointers.asm b/gfx/icon_pointers.asm
new file mode 100644
index 000000000..bfe07abb6
--- /dev/null
+++ b/gfx/icon_pointers.asm
@@ -0,0 +1,41 @@
+IconPointers:
+; entries correspond to ICON_* constants
+ dw NullIcon
+ dw PoliwagIcon
+ dw JigglypuffIcon
+ dw DiglettIcon
+ dw PikachuIcon
+ dw StaryuIcon
+ dw FishIcon
+ dw BirdIcon
+ dw MonsterIcon
+ dw ClefairyIcon
+ dw OddishIcon
+ dw BugIcon
+ dw GhostIcon
+ dw LaprasIcon
+ dw HumanshapeIcon
+ dw FoxIcon
+ dw EquineIcon
+ dw ShellIcon
+ dw BlobIcon
+ dw SerpentIcon
+ dw VoltorbIcon
+ dw SquirtleIcon
+ dw BulbasaurIcon
+ dw CharmanderIcon
+ dw CaterpillarIcon
+ dw UnownIcon
+ dw GeodudeIcon
+ dw FighterIcon
+ dw EggIcon
+ dw JellyfishIcon
+ dw MothIcon
+ dw BatIcon
+ dw SnorlaxIcon
+ dw HoOhIcon
+ dw LugiaIcon
+ dw GyaradosIcon
+ dw SlowpokeIcon
+ dw SudowoodoIcon
+ dw BigmonIcon
diff --git a/gfx/icons.asm b/gfx/icons.asm
new file mode 100644
index 000000000..8d44c1fef
--- /dev/null
+++ b/gfx/icons.asm
@@ -0,0 +1,39 @@
+NullIcon:
+PoliwagIcon: INCBIN "gfx/icon/poliwag.2bpp" ; 0x8ec0d
+JigglypuffIcon: INCBIN "gfx/icon/jigglypuff.2bpp" ; 0x8ec8d
+DiglettIcon: INCBIN "gfx/icon/diglett.2bpp" ; 0x8ed0d
+PikachuIcon: INCBIN "gfx/icon/pikachu.2bpp" ; 0x8ed8d
+StaryuIcon: INCBIN "gfx/icon/staryu.2bpp" ; 0x8ee0d
+FishIcon: INCBIN "gfx/icon/fish.2bpp" ; 0x8ee8d
+BirdIcon: INCBIN "gfx/icon/bird.2bpp" ; 0x8ef0d
+MonsterIcon: INCBIN "gfx/icon/monster.2bpp" ; 0x8ef8d
+ClefairyIcon: INCBIN "gfx/icon/clefairy.2bpp" ; 0x8f00d
+OddishIcon: INCBIN "gfx/icon/oddish.2bpp" ; 0x8f08d
+BugIcon: INCBIN "gfx/icon/bug.2bpp" ; 0x8f10d
+GhostIcon: INCBIN "gfx/icon/ghost.2bpp" ; 0x8f18d
+LaprasIcon: INCBIN "gfx/icon/lapras.2bpp" ; 0x8f20d
+HumanshapeIcon: INCBIN "gfx/icon/humanshape.2bpp" ; 0x8f28d
+FoxIcon: INCBIN "gfx/icon/fox.2bpp" ; 0x8f30d
+EquineIcon: INCBIN "gfx/icon/equine.2bpp" ; 0x8f38d
+ShellIcon: INCBIN "gfx/icon/shell.2bpp" ; 0x8f40d
+BlobIcon: INCBIN "gfx/icon/blob.2bpp" ; 0x8f48d
+SerpentIcon: INCBIN "gfx/icon/serpent.2bpp" ; 0x8f50d
+VoltorbIcon: INCBIN "gfx/icon/voltorb.2bpp" ; 0x8f58d
+SquirtleIcon: INCBIN "gfx/icon/squirtle.2bpp" ; 0x8f60d
+BulbasaurIcon: INCBIN "gfx/icon/bulbasaur.2bpp" ; 0x8f68d
+CharmanderIcon: INCBIN "gfx/icon/charmander.2bpp" ; 0x8f70d
+CaterpillarIcon: INCBIN "gfx/icon/caterpillar.2bpp" ; 0x8f78d
+UnownIcon: INCBIN "gfx/icon/unown.2bpp" ; 0x8f80d
+GeodudeIcon: INCBIN "gfx/icon/geodude.2bpp" ; 0x8f88d
+FighterIcon: INCBIN "gfx/icon/fighter.2bpp" ; 0x8f90d
+EggIcon: INCBIN "gfx/icon/egg.2bpp" ; 0x8f98d
+JellyfishIcon: INCBIN "gfx/icon/jellyfish.2bpp" ; 0x8fa0d
+MothIcon: INCBIN "gfx/icon/moth.2bpp" ; 0x8fa8d
+BatIcon: INCBIN "gfx/icon/bat.2bpp" ; 0x8fb0d
+SnorlaxIcon: INCBIN "gfx/icon/snorlax.2bpp" ; 0x8fb8d
+HoOhIcon: INCBIN "gfx/icon/ho_oh.2bpp" ; 0x8fc0d
+LugiaIcon: INCBIN "gfx/icon/lugia.2bpp" ; 0x8fc8d
+GyaradosIcon: INCBIN "gfx/icon/gyarados.2bpp" ; 0x8fd0d
+SlowpokeIcon: INCBIN "gfx/icon/slowpoke.2bpp" ; 0x8fd8d
+SudowoodoIcon: INCBIN "gfx/icon/sudowoodo.2bpp" ; 0x8fe0d
+BigmonIcon: INCBIN "gfx/icon/bigmon.2bpp" ; 0x8fe8d
diff --git a/macros/map.asm b/macros/map.asm
index 40555d71c..eb78be725 100644
--- a/macros/map.asm
+++ b/macros/map.asm
@@ -212,15 +212,3 @@ stonetable: macro
db \1, \2
dw \3
endm
-
-
-roam_map: macro
-; A map and an arbitrary number of some more maps.
- map \1
- db \2
-rept \2
- map \3
- shift
-endr
- db 0
-endm
diff --git a/main.asm b/main.asm
index dd3a3f5d9..0c699954c 100644
--- a/main.asm
+++ b/main.asm
@@ -2350,7 +2350,9 @@ CheckSave:: ; 4cffe
ld c, $0
ret
-INCLUDE "engine/map_triggers.asm"
+MapTriggers:: ; 4d01e
+INCLUDE "data/map_triggers.asm"
+; 4d15b
_LoadMapPart:: ; 4d15b
ld hl, wMisc
@@ -6063,8 +6065,8 @@ INCBIN "unknown/1f5db4.bin"
SECTION "bank7E", ROMX
-INCLUDE "data/battle_tower.asm"
-INCLUDE "data/odd_eggs.asm"
+INCLUDE "engine/battle_tower.asm"
+INCLUDE "engine/odd_eggs.asm"
SECTION "bank7F", ROMX
diff --git a/maps/BlackthornEmysHouse.asm b/maps/BlackthornEmysHouse.asm
index 9869fe720..bb69914d4 100644
--- a/maps/BlackthornEmysHouse.asm
+++ b/maps/BlackthornEmysHouse.asm
@@ -11,7 +11,7 @@ BlackthornEmysHouse_MapScriptHeader:
Emy:
faceplayer
opentext
- trade $3
+ trade NPCTRADE_EMY
waitbutton
closetext
end
diff --git a/maps/GoldenrodDeptStore5F.asm b/maps/GoldenrodDeptStore5F.asm
index 247322ea6..0c33b44a3 100644
--- a/maps/GoldenrodDeptStore5F.asm
+++ b/maps/GoldenrodDeptStore5F.asm
@@ -126,7 +126,7 @@ LassScript_0x56130:
Mike:
faceplayer
opentext
- trade $0
+ trade NPCTRADE_MIKE
waitbutton
closetext
end
diff --git a/maps/OlivineTimsHouse.asm b/maps/OlivineTimsHouse.asm
index 0d9a2862c..bde18bee1 100644
--- a/maps/OlivineTimsHouse.asm
+++ b/maps/OlivineTimsHouse.asm
@@ -11,7 +11,7 @@ OlivineTimsHouse_MapScriptHeader:
Tim:
faceplayer
opentext
- trade $2
+ trade NPCTRADE_TIM
waitbutton
closetext
end
diff --git a/maps/PewterPokecenter1F.asm b/maps/PewterPokecenter1F.asm
index b0ef93e16..e9ddbbd32 100644
--- a/maps/PewterPokecenter1F.asm
+++ b/maps/PewterPokecenter1F.asm
@@ -32,7 +32,7 @@ BugCatcherScript_0x1a2ef7:
Chris:
faceplayer
opentext
- trade $4
+ trade NPCTRADE_CHRIS
waitbutton
closetext
end
diff --git a/maps/PowerPlant.asm b/maps/PowerPlant.asm
index 193bc7434..f96f0aef5 100644
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -191,7 +191,7 @@ UnknownScript_0x188ec5:
Forest:
faceplayer
opentext
- trade $6
+ trade NPCTRADE_FOREST
waitbutton
closetext
end
diff --git a/maps/Route14.asm b/maps/Route14.asm
index 0b4372bd6..841ee2c97 100644
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -14,7 +14,7 @@ Route14_MapScriptHeader:
Kim:
faceplayer
opentext
- trade $5
+ trade NPCTRADE_KIM
waitbutton
closetext
end
diff --git a/maps/VioletOnixTradeHouse.asm b/maps/VioletOnixTradeHouse.asm
index 8e6e44426..feb5b10af 100644
--- a/maps/VioletOnixTradeHouse.asm
+++ b/maps/VioletOnixTradeHouse.asm
@@ -15,7 +15,7 @@ PokefanMScript_0x6998d:
Kyle:
faceplayer
opentext
- trade $1
+ trade NPCTRADE_KYLE
waitbutton
closetext
end
diff --git a/menu/mon_icons.asm b/menu/mon_icons.asm
deleted file mode 100644
index aeb758282..000000000
--- a/menu/mon_icons.asm
+++ /dev/null
@@ -1,349 +0,0 @@
-ReadMonMenuIcon: ; 8eab3
- cp EGG
- jr z, .egg
- dec a
- ld hl, MonMenuIcons
- ld e, a
- ld d, 0
- add hl, de
- ld a, [hl]
- ret
-.egg
- ld a, ICON_EGG
- ret
-; 8eac4
-
-MonMenuIcons: ; 8eac4
- db ICON_BULBASAUR ; BULBASAUR
- db ICON_BULBASAUR ; IVYSAUR
- db ICON_BULBASAUR ; VENUSAUR
- db ICON_CHARMANDER ; CHARMANDER
- db ICON_CHARMANDER ; CHARMELEON
- db ICON_BIGMON ; CHARIZARD
- db ICON_SQUIRTLE ; SQUIRTLE
- db ICON_SQUIRTLE ; WARTORTLE
- db ICON_SQUIRTLE ; BLASTOISE
- db ICON_CATERPILLAR ; CATERPIE
- db ICON_CATERPILLAR ; METAPOD
- db ICON_MOTH ; BUTTERFREE
- db ICON_CATERPILLAR ; WEEDLE
- db ICON_CATERPILLAR ; KAKUNA
- db ICON_BUG ; BEEDRILL
- db ICON_BIRD ; PIDGEY
- db ICON_BIRD ; PIDGEOTTO
- db ICON_BIRD ; PIDGEOT
- db ICON_FOX ; RATTATA
- db ICON_FOX ; RATICATE
- db ICON_BIRD ; SPEAROW
- db ICON_BIRD ; FEAROW
- db ICON_SERPENT ; EKANS
- db ICON_SERPENT ; ARBOK
- db ICON_PIKACHU ; PIKACHU
- db ICON_PIKACHU ; RAICHU
- db ICON_MONSTER ; SANDSHREW
- db ICON_MONSTER ; SANDSLASH
- db ICON_FOX ; NIDORAN_F
- db ICON_FOX ; NIDORINA
- db ICON_MONSTER ; NIDOQUEEN
- db ICON_FOX ; NIDORAN_M
- db ICON_FOX ; NIDORINO
- db ICON_MONSTER ; NIDOKING
- db ICON_CLEFAIRY ; CLEFAIRY
- db ICON_CLEFAIRY ; CLEFABLE
- db ICON_FOX ; VULPIX
- db ICON_FOX ; NINETALES
- db ICON_JIGGLYPUFF ; JIGGLYPUFF
- db ICON_JIGGLYPUFF ; WIGGLYTUFF
- db ICON_BAT ; ZUBAT
- db ICON_BAT ; GOLBAT
- db ICON_ODDISH ; ODDISH
- db ICON_ODDISH ; GLOOM
- db ICON_ODDISH ; VILEPLUME
- db ICON_BUG ; PARAS
- db ICON_BUG ; PARASECT
- db ICON_CATERPILLAR ; VENONAT
- db ICON_MOTH ; VENOMOTH
- db ICON_DIGLETT ; DIGLETT
- db ICON_DIGLETT ; DUGTRIO
- db ICON_FOX ; MEOWTH
- db ICON_FOX ; PERSIAN
- db ICON_MONSTER ; PSYDUCK
- db ICON_MONSTER ; GOLDUCK
- db ICON_FIGHTER ; MANKEY
- db ICON_FIGHTER ; PRIMEAPE
- db ICON_FOX ; GROWLITHE
- db ICON_FOX ; ARCANINE
- db ICON_POLIWAG ; POLIWAG
- db ICON_POLIWAG ; POLIWHIRL
- db ICON_POLIWAG ; POLIWRATH
- db ICON_HUMANSHAPE ; ABRA
- db ICON_HUMANSHAPE ; KADABRA
- db ICON_HUMANSHAPE ; ALAKAZAM
- db ICON_FIGHTER ; MACHOP
- db ICON_FIGHTER ; MACHOKE
- db ICON_FIGHTER ; MACHAMP
- db ICON_ODDISH ; BELLSPROUT
- db ICON_ODDISH ; WEEPINBELL
- db ICON_ODDISH ; VICTREEBEL
- db ICON_JELLYFISH ; TENTACOOL
- db ICON_JELLYFISH ; TENTACRUEL
- db ICON_GEODUDE ; GEODUDE
- db ICON_GEODUDE ; GRAVELER
- db ICON_GEODUDE ; GOLEM
- db ICON_EQUINE ; PONYTA
- db ICON_EQUINE ; RAPIDASH
- db ICON_SLOWPOKE ; SLOWPOKE
- db ICON_SLOWPOKE ; SLOWBRO
- db ICON_VOLTORB ; MAGNEMITE
- db ICON_VOLTORB ; MAGNETON
- db ICON_BIRD ; FARFETCH_D
- db ICON_BIRD ; DODUO
- db ICON_BIRD ; DODRIO
- db ICON_LAPRAS ; SEEL
- db ICON_LAPRAS ; DEWGONG
- db ICON_BLOB ; GRIMER
- db ICON_BLOB ; MUK
- db ICON_SHELL ; SHELLDER
- db ICON_SHELL ; CLOYSTER
- db ICON_GHOST ; GASTLY
- db ICON_GHOST ; HAUNTER
- db ICON_GHOST ; GENGAR
- db ICON_SERPENT ; ONIX
- db ICON_HUMANSHAPE ; DROWZEE
- db ICON_HUMANSHAPE ; HYPNO
- db ICON_SHELL ; KRABBY
- db ICON_SHELL ; KINGLER
- db ICON_VOLTORB ; VOLTORB
- db ICON_VOLTORB ; ELECTRODE
- db ICON_ODDISH ; EXEGGCUTE
- db ICON_ODDISH ; EXEGGUTOR
- db ICON_MONSTER ; CUBONE
- db ICON_MONSTER ; MAROWAK
- db ICON_FIGHTER ; HITMONLEE
- db ICON_FIGHTER ; HITMONCHAN
- db ICON_MONSTER ; LICKITUNG
- db ICON_BLOB ; KOFFING
- db ICON_BLOB ; WEEZING
- db ICON_EQUINE ; RHYHORN
- db ICON_MONSTER ; RHYDON
- db ICON_CLEFAIRY ; CHANSEY
- db ICON_ODDISH ; TANGELA
- db ICON_MONSTER ; KANGASKHAN
- db ICON_FISH ; HORSEA
- db ICON_FISH ; SEADRA
- db ICON_FISH ; GOLDEEN
- db ICON_FISH ; SEAKING
- db ICON_STARYU ; STARYU
- db ICON_STARYU ; STARMIE
- db ICON_HUMANSHAPE ; MR__MIME
- db ICON_BUG ; SCYTHER
- db ICON_HUMANSHAPE ; JYNX
- db ICON_HUMANSHAPE ; ELECTABUZZ
- db ICON_HUMANSHAPE ; MAGMAR
- db ICON_BUG ; PINSIR
- db ICON_EQUINE ; TAUROS
- db ICON_FISH ; MAGIKARP
- db ICON_GYARADOS ; GYARADOS
- db ICON_LAPRAS ; LAPRAS
- db ICON_BLOB ; DITTO
- db ICON_FOX ; EEVEE
- db ICON_FOX ; VAPOREON
- db ICON_FOX ; JOLTEON
- db ICON_FOX ; FLAREON
- db ICON_VOLTORB ; PORYGON
- db ICON_SHELL ; OMANYTE
- db ICON_SHELL ; OMASTAR
- db ICON_SHELL ; KABUTO
- db ICON_SHELL ; KABUTOPS
- db ICON_BIRD ; AERODACTYL
- db ICON_SNORLAX ; SNORLAX
- db ICON_BIRD ; ARTICUNO
- db ICON_BIRD ; ZAPDOS
- db ICON_BIRD ; MOLTRES
- db ICON_SERPENT ; DRATINI
- db ICON_SERPENT ; DRAGONAIR
- db ICON_BIGMON ; DRAGONITE
- db ICON_HUMANSHAPE ; MEWTWO
- db ICON_HUMANSHAPE ; MEW
- db ICON_ODDISH ; CHIKORITA
- db ICON_ODDISH ; BAYLEEF
- db ICON_ODDISH ; MEGANIUM
- db ICON_FOX ; CYNDAQUIL
- db ICON_FOX ; QUILAVA
- db ICON_FOX ; TYPHLOSION
- db ICON_MONSTER ; TOTODILE
- db ICON_MONSTER ; CROCONAW
- db ICON_MONSTER ; FERALIGATR
- db ICON_FOX ; SENTRET
- db ICON_FOX ; FURRET
- db ICON_BIRD ; HOOTHOOT
- db ICON_BIRD ; NOCTOWL
- db ICON_BUG ; LEDYBA
- db ICON_BUG ; LEDIAN
- db ICON_BUG ; SPINARAK
- db ICON_BUG ; ARIADOS
- db ICON_BAT ; CROBAT
- db ICON_FISH ; CHINCHOU
- db ICON_FISH ; LANTURN
- db ICON_PIKACHU ; PICHU
- db ICON_CLEFAIRY ; CLEFFA
- db ICON_JIGGLYPUFF ; IGGLYBUFF
- db ICON_CLEFAIRY ; TOGEPI
- db ICON_BIRD ; TOGETIC
- db ICON_BIRD ; NATU
- db ICON_BIRD ; XATU
- db ICON_FOX ; MAREEP
- db ICON_MONSTER ; FLAAFFY
- db ICON_MONSTER ; AMPHAROS
- db ICON_ODDISH ; BELLOSSOM
- db ICON_JIGGLYPUFF ; MARILL
- db ICON_JIGGLYPUFF ; AZUMARILL
- db ICON_SUDOWOODO ; SUDOWOODO
- db ICON_POLIWAG ; POLITOED
- db ICON_ODDISH ; HOPPIP
- db ICON_ODDISH ; SKIPLOOM
- db ICON_ODDISH ; JUMPLUFF
- db ICON_MONSTER ; AIPOM
- db ICON_ODDISH ; SUNKERN
- db ICON_ODDISH ; SUNFLORA
- db ICON_BUG ; YANMA
- db ICON_MONSTER ; WOOPER
- db ICON_MONSTER ; QUAGSIRE
- db ICON_FOX ; ESPEON
- db ICON_FOX ; UMBREON
- db ICON_BIRD ; MURKROW
- db ICON_SLOWPOKE ; SLOWKING
- db ICON_GHOST ; MISDREAVUS
- db ICON_UNOWN ; UNOWN
- db ICON_GHOST ; WOBBUFFET
- db ICON_EQUINE ; GIRAFARIG
- db ICON_BUG ; PINECO
- db ICON_BUG ; FORRETRESS
- db ICON_SERPENT ; DUNSPARCE
- db ICON_BUG ; GLIGAR
- db ICON_SERPENT ; STEELIX
- db ICON_MONSTER ; SNUBBULL
- db ICON_MONSTER ; GRANBULL
- db ICON_FISH ; QWILFISH
- db ICON_BUG ; SCIZOR
- db ICON_BUG ; SHUCKLE
- db ICON_BUG ; HERACROSS
- db ICON_FOX ; SNEASEL
- db ICON_MONSTER ; TEDDIURSA
- db ICON_MONSTER ; URSARING
- db ICON_BLOB ; SLUGMA
- db ICON_BLOB ; MAGCARGO
- db ICON_EQUINE ; SWINUB
- db ICON_EQUINE ; PILOSWINE
- db ICON_SHELL ; CORSOLA
- db ICON_FISH ; REMORAID
- db ICON_FISH ; OCTILLERY
- db ICON_MONSTER ; DELIBIRD
- db ICON_FISH ; MANTINE
- db ICON_BIRD ; SKARMORY
- db ICON_FOX ; HOUNDOUR
- db ICON_FOX ; HOUNDOOM
- db ICON_BIGMON ; KINGDRA
- db ICON_EQUINE ; PHANPY
- db ICON_EQUINE ; DONPHAN
- db ICON_VOLTORB ; PORYGON2
- db ICON_EQUINE ; STANTLER
- db ICON_MONSTER ; SMEARGLE
- db ICON_FIGHTER ; TYROGUE
- db ICON_FIGHTER ; HITMONTOP
- db ICON_HUMANSHAPE ; SMOOCHUM
- db ICON_HUMANSHAPE ; ELEKID
- db ICON_HUMANSHAPE ; MAGBY
- db ICON_EQUINE ; MILTANK
- db ICON_CLEFAIRY ; BLISSEY
- db ICON_FOX ; RAIKOU
- db ICON_FOX ; ENTEI
- db ICON_FOX ; SUICUNE
- db ICON_MONSTER ; LARVITAR
- db ICON_MONSTER ; PUPITAR
- db ICON_MONSTER ; TYRANITAR
- db ICON_LUGIA ; LUGIA
- db ICON_HO_OH ; HO_OH
- db ICON_HUMANSHAPE ; CELEBI
-
-IconPointers:
- dw NullIcon
- dw PoliwagIcon
- dw JigglypuffIcon
- dw DiglettIcon
- dw PikachuIcon
- dw StaryuIcon
- dw FishIcon
- dw BirdIcon
- dw MonsterIcon
- dw ClefairyIcon
- dw OddishIcon
- dw BugIcon
- dw GhostIcon
- dw LaprasIcon
- dw HumanshapeIcon
- dw FoxIcon
- dw EquineIcon
- dw ShellIcon
- dw BlobIcon
- dw SerpentIcon
- dw VoltorbIcon
- dw SquirtleIcon
- dw BulbasaurIcon
- dw CharmanderIcon
- dw CaterpillarIcon
- dw UnownIcon
- dw GeodudeIcon
- dw FighterIcon
- dw EggIcon
- dw JellyfishIcon
- dw MothIcon
- dw BatIcon
- dw SnorlaxIcon
- dw HoOhIcon
- dw LugiaIcon
- dw GyaradosIcon
- dw SlowpokeIcon
- dw SudowoodoIcon
- dw BigmonIcon
-
-Icons:
-NullIcon:
-PoliwagIcon: INCBIN "gfx/icon/poliwag.2bpp" ; 0x8ec0d
-JigglypuffIcon: INCBIN "gfx/icon/jigglypuff.2bpp" ; 0x8ec8d
-DiglettIcon: INCBIN "gfx/icon/diglett.2bpp" ; 0x8ed0d
-PikachuIcon: INCBIN "gfx/icon/pikachu.2bpp" ; 0x8ed8d
-StaryuIcon: INCBIN "gfx/icon/staryu.2bpp" ; 0x8ee0d
-FishIcon: INCBIN "gfx/icon/fish.2bpp" ; 0x8ee8d
-BirdIcon: INCBIN "gfx/icon/bird.2bpp" ; 0x8ef0d
-MonsterIcon: INCBIN "gfx/icon/monster.2bpp" ; 0x8ef8d
-ClefairyIcon: INCBIN "gfx/icon/clefairy.2bpp" ; 0x8f00d
-OddishIcon: INCBIN "gfx/icon/oddish.2bpp" ; 0x8f08d
-BugIcon: INCBIN "gfx/icon/bug.2bpp" ; 0x8f10d
-GhostIcon: INCBIN "gfx/icon/ghost.2bpp" ; 0x8f18d
-LaprasIcon: INCBIN "gfx/icon/lapras.2bpp" ; 0x8f20d
-HumanshapeIcon: INCBIN "gfx/icon/humanshape.2bpp" ; 0x8f28d
-FoxIcon: INCBIN "gfx/icon/fox.2bpp" ; 0x8f30d
-EquineIcon: INCBIN "gfx/icon/equine.2bpp" ; 0x8f38d
-ShellIcon: INCBIN "gfx/icon/shell.2bpp" ; 0x8f40d
-BlobIcon: INCBIN "gfx/icon/blob.2bpp" ; 0x8f48d
-SerpentIcon: INCBIN "gfx/icon/serpent.2bpp" ; 0x8f50d
-VoltorbIcon: INCBIN "gfx/icon/voltorb.2bpp" ; 0x8f58d
-SquirtleIcon: INCBIN "gfx/icon/squirtle.2bpp" ; 0x8f60d
-BulbasaurIcon: INCBIN "gfx/icon/bulbasaur.2bpp" ; 0x8f68d
-CharmanderIcon: INCBIN "gfx/icon/charmander.2bpp" ; 0x8f70d
-CaterpillarIcon: INCBIN "gfx/icon/caterpillar.2bpp" ; 0x8f78d
-UnownIcon: INCBIN "gfx/icon/unown.2bpp" ; 0x8f80d
-GeodudeIcon: INCBIN "gfx/icon/geodude.2bpp" ; 0x8f88d
-FighterIcon: INCBIN "gfx/icon/fighter.2bpp" ; 0x8f90d
-EggIcon: INCBIN "gfx/icon/egg.2bpp" ; 0x8f98d
-JellyfishIcon: INCBIN "gfx/icon/jellyfish.2bpp" ; 0x8fa0d
-MothIcon: INCBIN "gfx/icon/moth.2bpp" ; 0x8fa8d
-BatIcon: INCBIN "gfx/icon/bat.2bpp" ; 0x8fb0d
-SnorlaxIcon: INCBIN "gfx/icon/snorlax.2bpp" ; 0x8fb8d
-HoOhIcon: INCBIN "gfx/icon/ho_oh.2bpp" ; 0x8fc0d
-LugiaIcon: INCBIN "gfx/icon/lugia.2bpp" ; 0x8fc8d
-GyaradosIcon: INCBIN "gfx/icon/gyarados.2bpp" ; 0x8fd0d
-SlowpokeIcon: INCBIN "gfx/icon/slowpoke.2bpp" ; 0x8fd8d
-SudowoodoIcon: INCBIN "gfx/icon/sudowoodo.2bpp" ; 0x8fe0d
-BigmonIcon: INCBIN "gfx/icon/bigmon.2bpp" ; 0x8fe8d
diff --git a/wram.asm b/wram.asm
index e70457eba..e7ed6741c 100644
--- a/wram.asm
+++ b/wram.asm
@@ -1613,9 +1613,9 @@ wTrainerHUDTiles:: db
NEXTU ; d002
; mobile participant nicknames
ds 4
-wMobileParticipant1Nickname:: ds 6
-wMobileParticipant2Nickname:: ds 6
-wMobileParticipant3Nickname:: ds 6
+wMobileParticipant1Nickname:: ds NAME_LENGTH_JAPANESE
+wMobileParticipant2Nickname:: ds NAME_LENGTH_JAPANESE
+wMobileParticipant3Nickname:: ds NAME_LENGTH_JAPANESE
NEXTU ; d002
; earthquake data buffer