summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorDaniel Harding <33dannye@gmail.com>2020-05-16 21:42:24 -0500
committerGitHub <noreply@github.com>2020-05-16 21:42:24 -0500
commit8a924f1f783572ff395f617f99546b4c949c8b04 (patch)
tree1b6c7de331cb983256651b11b8adf413a3a434f1 /data
parent88d7e9a34a8b610b358cec1ccc6660634ca9ce80 (diff)
parented94962edf1668aba3f60938e8a5ba8040e2a59c (diff)
Merge pull request #30 from entrpntr/spring-cleaning
Spring Cleaning
Diffstat (limited to 'data')
-rw-r--r--data/battle/accuracy_multipliers.asm17
-rw-r--r--data/battle/ai/constant_damage_effects.asm10
-rw-r--r--data/battle/ai/encore_moves.asm34
-rw-r--r--data/battle/ai/rain_dance_moves.asm15
-rw-r--r--data/battle/ai/reckless_moves.asm9
-rw-r--r--data/battle/ai/residual_moves.asm16
-rw-r--r--data/battle/ai/risky_effects.asm7
-rw-r--r--data/battle/ai/stall_moves.asm37
-rw-r--r--data/battle/ai/status_only_effects.asm9
-rw-r--r--data/battle/ai/sunny_day_moves.asm12
-rw-r--r--data/battle/ai/useful_moves.asm23
-rw-r--r--data/battle/critical_hit_chances.asm8
-rw-r--r--data/battle/effect_command_pointers.asm181
-rw-r--r--data/battle/held_consumables.asm25
-rw-r--r--data/battle/held_heal_status.asm10
-rw-r--r--data/battle/held_stat_up.asm9
-rw-r--r--data/battle/stat_multipliers.asm20
-rw-r--r--data/battle/stat_multipliers_2.asm20
-rw-r--r--data/battle/stat_names.asm10
-rw-r--r--data/battle/wobble_probabilities.asm27
-rwxr-xr-xdata/collision_permissions.asm424
-rw-r--r--data/decorations/attributes.asm62
-rw-r--r--data/decorations/decorations.asm54
-rw-r--r--data/decorations/mystery_gift_decos.asm39
-rw-r--r--data/decorations/names.asm28
-rw-r--r--data/default_options.asm16
-rw-r--r--data/engine_flags.asm120
-rw-r--r--data/events/bug_contest_flags.asm12
-rw-r--r--data/events/bug_contest_winners.asm79
-rwxr-xr-xdata/events/collision_stdscripts.asm2
-rw-r--r--data/events/elevator_floors.asm35
-rw-r--r--data/events/field_move_blocks.asm52
-rw-r--r--data/events/happiness_changes.asm21
-rw-r--r--data/events/happiness_probabilities.asm18
-rw-r--r--data/events/pokedex_ratings.asm27
-rw-r--r--data/items/apricorn_balls.asm10
-rw-r--r--data/items/attributes.asm521
-rw-r--r--data/items/bargain_shop.asm8
-rw-r--r--data/items/catch_rate_items.asm18
-rw-r--r--data/items/descriptions.asm1007
-rw-r--r--data/items/heal_hp.asm17
-rw-r--r--data/items/heal_status.asm19
-rw-r--r--data/items/mail_items.asm12
-rw-r--r--data/items/marts.asm406
-rw-r--r--data/items/mystery_gift_items.asm39
-rw-r--r--data/items/names.asm257
-rw-r--r--data/items/pocket_names.asm11
-rw-r--r--data/items/x_stats.asm6
-rwxr-xr-xdata/map_objects.asm44
-rw-r--r--data/maps/attributes.asm6
-rw-r--r--data/maps/blocks.asm58
-rw-r--r--data/maps/environment_colors.asm35
-rw-r--r--data/maps/flypoints.asm30
-rw-r--r--data/maps/landmarks.asm205
-rw-r--r--data/maps/map_data.asm14
-rw-r--r--data/maps/maps.asm738
-rw-r--r--data/maps/outdoor_sprites.asm369
-rw-r--r--data/maps/scenes.asm67
-rw-r--r--data/maps/scripts.asm62
-rw-r--r--data/maps/setup_scripts.asm173
-rw-r--r--data/maps/sgb_roof_pal_inds.asm31
-rw-r--r--data/maps/spawn_points.asm41
-rw-r--r--data/mon_menu.asm46
-rw-r--r--data/moves/animations.asm221
-rw-r--r--data/moves/critical_hit_moves.asm9
-rw-r--r--data/moves/effects.asm2077
-rw-r--r--data/moves/effects_pointers.asm159
-rw-r--r--data/moves/effects_priorities.asm8
-rw-r--r--data/moves/flail_reversal_power.asm8
-rw-r--r--data/moves/grammar.asm101
-rw-r--r--data/moves/magnitude_power.asm9
-rw-r--r--data/moves/metronome_exception_moves.asm17
-rw-r--r--data/moves/names.asm252
-rw-r--r--data/moves/present_power.asm6
-rw-r--r--data/moves/tmhm_moves.asm66
-rw-r--r--data/phone/non_trainer_names.asm13
-rw-r--r--data/phone/permanent_numbers.asm4
-rw-r--r--data/phone/phone_contacts.asm49
-rw-r--r--data/phone/special_calls.asm17
-rw-r--r--data/player_names.asm25
-rw-r--r--data/pokemon/base_stats/abra.asm2
-rw-r--r--data/pokemon/base_stats/alakazam.asm2
-rw-r--r--data/pokemon/base_stats/celebi.asm2
-rw-r--r--data/pokemon/base_stats/drowzee.asm2
-rw-r--r--data/pokemon/base_stats/espeon.asm2
-rw-r--r--data/pokemon/base_stats/exeggcute.asm2
-rw-r--r--data/pokemon/base_stats/exeggutor.asm2
-rw-r--r--data/pokemon/base_stats/girafarig.asm2
-rw-r--r--data/pokemon/base_stats/hypno.asm2
-rw-r--r--data/pokemon/base_stats/jynx.asm2
-rw-r--r--data/pokemon/base_stats/kadabra.asm2
-rw-r--r--data/pokemon/base_stats/lugia.asm2
-rw-r--r--data/pokemon/base_stats/mew.asm2
-rw-r--r--data/pokemon/base_stats/mewtwo.asm2
-rw-r--r--data/pokemon/base_stats/mr__mime.asm2
-rw-r--r--data/pokemon/base_stats/natu.asm2
-rw-r--r--data/pokemon/base_stats/slowbro.asm2
-rw-r--r--data/pokemon/base_stats/slowking.asm2
-rw-r--r--data/pokemon/base_stats/slowpoke.asm2
-rw-r--r--data/pokemon/base_stats/smoochum.asm2
-rw-r--r--data/pokemon/base_stats/starmie.asm2
-rw-r--r--data/pokemon/base_stats/unown.asm2
-rw-r--r--data/pokemon/base_stats/wobbuffet.asm2
-rw-r--r--data/pokemon/base_stats/xatu.asm2
-rw-r--r--data/pokemon/cries.asm510
-rw-r--r--data/pokemon/dex_entries.asm4
-rw-r--r--data/pokemon/dex_entry_pointers.asm (renamed from data/pokedex/entry_pointers.asm)71
-rw-r--r--data/pokemon/dex_order_alpha.asm (renamed from data/pokedex/order_new.asm)447
-rw-r--r--data/pokemon/dex_order_new.asm (renamed from data/pokedex/order_alpha.asm)447
-rw-r--r--data/pokemon/egg_move_pointers.asm6
-rw-r--r--data/pokemon/egg_moves.asm280
-rw-r--r--data/pokemon/evos_attacks.asm81
-rw-r--r--data/pokemon/evos_attacks_pointers.asm6
-rw-r--r--data/pokemon/names.asm1
-rw-r--r--data/pokemon/palettes.asm540
-rw-r--r--data/pokemon/pic_pointers.asm509
-rw-r--r--data/pokemon/unown_pic_pointers.asm54
-rwxr-xr-xdata/predef_pointers.asm2
-rw-r--r--data/radio/channel_music.asm12
-rw-r--r--data/radio/oaks_pkmn_talk_routes.asm19
-rw-r--r--data/radio/pnp_hidden_people.asm26
-rw-r--r--data/radio/pnp_places.asm13
-rw-r--r--data/sgb_ctrl_packets.asm133
-rw-r--r--data/special_pointers.asm130
-rwxr-xr-xdata/sprite_anims/framesets.asm (renamed from data/sprite_engine.asm)0
-rw-r--r--data/sprites/emotes.asm21
-rw-r--r--data/sprites/facings.asm239
-rw-r--r--data/sprites/map_objects.asm306
-rw-r--r--data/sprites/player_sprites.asm6
-rw-r--r--data/sprites/sprite_mons.asm37
-rw-r--r--data/sprites/sprites.asm103
-rw-r--r--data/stadium/stadium_gold.bin1
-rw-r--r--data/stadium/stadium_silver.bin2
-rwxr-xr-xdata/text/battle.asm9
-rwxr-xr-xdata/text/common_1.asm395
-rw-r--r--data/text/common_2.asm436
-rw-r--r--data/text/common_3.asm208
-rw-r--r--data/text/dakutens.asm15
-rw-r--r--data/text/mail_input_chars.asm17
-rw-r--r--data/text/name_input_chars.asm31
-rw-r--r--data/text_buffers.asm9
-rw-r--r--data/tilesets.asm43
-rw-r--r--data/trainers/attributes.asm398
-rw-r--r--data/trainers/class_names.asm68
-rw-r--r--data/trainers/leaders.asm32
-rw-r--r--data/trainers/palettes.asm74
-rw-r--r--data/trainers/pic_pointers.asm70
-rw-r--r--data/types/type_boost_items.asm19
-rw-r--r--data/types/type_matchups.asm118
-rw-r--r--data/wild/bug_contest_mons.asm13
-rw-r--r--data/wild/fish.asm205
-rw-r--r--data/wild/flee_mons.asm35
-rw-r--r--data/wild/johto_grass.asm1871
-rw-r--r--data/wild/johto_water.asm112
-rw-r--r--data/wild/kanto_grass.asm1259
-rw-r--r--data/wild/kanto_water.asm68
-rw-r--r--data/wild/probabilities.asm18
-rw-r--r--data/wild/roammon_maps.asm33
-rw-r--r--data/wild/swarm_grass.asm139
-rw-r--r--data/wild/swarm_water.asm11
-rw-r--r--data/wild/treemon_maps.asm48
-rw-r--r--data/wild/treemons.asm92
-rw-r--r--data/wild/unlocked_unowns.asm24
163 files changed, 15185 insertions, 3518 deletions
diff --git a/data/battle/accuracy_multipliers.asm b/data/battle/accuracy_multipliers.asm
new file mode 100644
index 00000000..4b52a090
--- /dev/null
+++ b/data/battle/accuracy_multipliers.asm
@@ -0,0 +1,17 @@
+; Multiplier ratios for accuracy from modifier -6 to +6
+; (for other stats, see data/battle/stat_multipliers.asm).
+
+AccuracyLevelMultipliers:
+ db 33, 100 ; -6 = 33%
+ db 36, 100 ; -5 = 36%
+ db 43, 100 ; -4 = 43%
+ db 50, 100 ; -3 = 50%
+ db 60, 100 ; -2 = 60%
+ db 75, 100 ; -1 = 75%
+ db 1, 1 ; 0 = 100%
+ db 133, 100 ; +1 = 133%
+ db 166, 100 ; +2 = 166%
+ db 2, 1 ; +3 = 200%
+ db 233, 100 ; +4 = 233%
+ db 133, 50 ; +5 = 266%
+ db 3, 1 ; +6 = 300%
diff --git a/data/battle/ai/constant_damage_effects.asm b/data/battle/ai/constant_damage_effects.asm
new file mode 100644
index 00000000..cd812d41
--- /dev/null
+++ b/data/battle/ai/constant_damage_effects.asm
@@ -0,0 +1,10 @@
+; AIDamageCalc uses BattleCommand_ConstantDamage
+; to calculate damage for these instead of
+; BattleCommand_DamageCalc and BattleCommand_Stab.
+
+ConstantDamageEffects:
+ db EFFECT_SUPER_FANG
+ db EFFECT_STATIC_DAMAGE
+ db EFFECT_LEVEL_DAMAGE
+ db EFFECT_PSYWAVE
+ db -1 ; end
diff --git a/data/battle/ai/encore_moves.asm b/data/battle/ai/encore_moves.asm
new file mode 100644
index 00000000..03e028bd
--- /dev/null
+++ b/data/battle/ai/encore_moves.asm
@@ -0,0 +1,34 @@
+; AI_SMART encourages these moves with Encore.
+
+EncoreMoves:
+ db SWORDS_DANCE
+ db WHIRLWIND
+ db LEER
+ db ROAR
+ db DISABLE
+ db MIST
+ db LEECH_SEED
+ db GROWTH
+ db POISONPOWDER
+ db STRING_SHOT
+ db MEDITATE
+ db AGILITY
+ db TELEPORT
+ db SCREECH
+ db HAZE
+ db FOCUS_ENERGY
+ db DREAM_EATER
+ db POISON_GAS
+ db SPLASH
+ db SHARPEN
+ db CONVERSION
+ db SUPER_FANG
+ db SUBSTITUTE
+ db TRIPLE_KICK
+ db SPIDER_WEB
+ db MIND_READER
+ db FLAME_WHEEL
+ db AEROBLAST
+ db COTTON_SPORE
+ db POWDER_SNOW
+ db -1 ; end
diff --git a/data/battle/ai/rain_dance_moves.asm b/data/battle/ai/rain_dance_moves.asm
new file mode 100644
index 00000000..c00e0b60
--- /dev/null
+++ b/data/battle/ai/rain_dance_moves.asm
@@ -0,0 +1,15 @@
+; AI_SMART prefers these moves during rain.
+
+RainDanceMoves:
+ db WATER_GUN
+ db HYDRO_PUMP
+ db SURF
+ db BUBBLEBEAM
+ db THUNDER
+ db WATERFALL
+ db CLAMP
+ db BUBBLE
+ db CRABHAMMER
+ db OCTAZOOKA
+ db WHIRLPOOL
+ db -1 ; end
diff --git a/data/battle/ai/reckless_moves.asm b/data/battle/ai/reckless_moves.asm
new file mode 100644
index 00000000..67252979
--- /dev/null
+++ b/data/battle/ai/reckless_moves.asm
@@ -0,0 +1,9 @@
+; AI_AGGRESSIVE does not discourage these moves
+; even if a stronger one is available.
+
+RecklessMoves:
+ db EFFECT_SELFDESTRUCT
+ db EFFECT_RAMPAGE
+ db EFFECT_MULTI_HIT
+ db EFFECT_DOUBLE_HIT
+ db -1 ; end
diff --git a/data/battle/ai/residual_moves.asm b/data/battle/ai/residual_moves.asm
new file mode 100644
index 00000000..c99ac0f5
--- /dev/null
+++ b/data/battle/ai/residual_moves.asm
@@ -0,0 +1,16 @@
+; AI_CAUTIOUS discourages these moves after the first turn.
+
+ResidualMoves:
+ db MIST
+ db LEECH_SEED
+ db POISONPOWDER
+ db STUN_SPORE
+ db THUNDER_WAVE
+ db FOCUS_ENERGY
+ db BIDE
+ db POISON_GAS
+ db TRANSFORM
+ db CONVERSION
+ db SUBSTITUTE
+ db SPIKES
+ db -1 ; end
diff --git a/data/battle/ai/risky_effects.asm b/data/battle/ai/risky_effects.asm
new file mode 100644
index 00000000..529436c4
--- /dev/null
+++ b/data/battle/ai/risky_effects.asm
@@ -0,0 +1,7 @@
+; AI_RISKY will not use these effects at max HP
+; even if they would KO the player.
+
+RiskyEffects:
+ db EFFECT_SELFDESTRUCT
+ db EFFECT_OHKO
+ db -1 ; end
diff --git a/data/battle/ai/stall_moves.asm b/data/battle/ai/stall_moves.asm
new file mode 100644
index 00000000..65838e0f
--- /dev/null
+++ b/data/battle/ai/stall_moves.asm
@@ -0,0 +1,37 @@
+; AI_OPPORTUNIST discourages these moves
+; when the player's HP is low.
+
+StallMoves:
+ db SWORDS_DANCE
+ db TAIL_WHIP
+ db LEER
+ db GROWL
+ db DISABLE
+ db MIST
+ db COUNTER
+ db LEECH_SEED
+ db GROWTH
+ db STRING_SHOT
+ db MEDITATE
+ db AGILITY
+ db RAGE
+ db MIMIC
+ db SCREECH
+ db HARDEN
+ db WITHDRAW
+ db DEFENSE_CURL
+ db BARRIER
+ db LIGHT_SCREEN
+ db HAZE
+ db REFLECT
+ db FOCUS_ENERGY
+ db BIDE
+ db AMNESIA
+ db TRANSFORM
+ db SPLASH
+ db ACID_ARMOR
+ db SHARPEN
+ db CONVERSION
+ db SUBSTITUTE
+ db FLAME_WHEEL
+ db -1 ; end
diff --git a/data/battle/ai/status_only_effects.asm b/data/battle/ai/status_only_effects.asm
new file mode 100644
index 00000000..8748d93b
--- /dev/null
+++ b/data/battle/ai/status_only_effects.asm
@@ -0,0 +1,9 @@
+; AI_BASIC discourages these effects if the player
+; already has a status condition.
+
+StatusOnlyEffects:
+ db EFFECT_SLEEP
+ db EFFECT_TOXIC
+ db EFFECT_POISON
+ db EFFECT_PARALYZE
+ db -1 ; end
diff --git a/data/battle/ai/sunny_day_moves.asm b/data/battle/ai/sunny_day_moves.asm
new file mode 100644
index 00000000..38d6a8ee
--- /dev/null
+++ b/data/battle/ai/sunny_day_moves.asm
@@ -0,0 +1,12 @@
+; AI_SMART prefers these moves during harsh sunlight.
+
+SunnyDayMoves:
+ db FIRE_PUNCH
+ db EMBER
+ db FLAMETHROWER
+ db FIRE_SPIN
+ db FIRE_BLAST
+ db SACRED_FIRE
+ db MORNING_SUN
+ db SYNTHESIS
+ db -1 ; end
diff --git a/data/battle/ai/useful_moves.asm b/data/battle/ai/useful_moves.asm
new file mode 100644
index 00000000..456bda2d
--- /dev/null
+++ b/data/battle/ai/useful_moves.asm
@@ -0,0 +1,23 @@
+; AI_SMART knows these moves are usable all-around.
+
+UsefulMoves:
+ db DOUBLE_EDGE
+ db SING
+ db FLAMETHROWER
+ db HYDRO_PUMP
+ db SURF
+ db ICE_BEAM
+ db BLIZZARD
+ db HYPER_BEAM
+ db SLEEP_POWDER
+ db THUNDERBOLT
+ db THUNDER
+ db EARTHQUAKE
+ db TOXIC
+ db PSYCHIC_M
+ db HYPNOSIS
+ db RECOVER
+ db FIRE_BLAST
+ db SOFTBOILED
+ db SUPER_FANG
+ db -1 ; end
diff --git a/data/battle/critical_hit_chances.asm b/data/battle/critical_hit_chances.asm
new file mode 100644
index 00000000..bb1ce9ab
--- /dev/null
+++ b/data/battle/critical_hit_chances.asm
@@ -0,0 +1,8 @@
+CriticalHitChances:
+ db 1 out_of 15 ; 0
+ db 1 out_of 8 ; +1
+ db 1 out_of 4 ; +2
+ db 1 out_of 3 ; +3
+ db 1 out_of 2 ; +4
+ db 1 out_of 2 ; +5
+ db 1 out_of 2 ; +6
diff --git a/data/battle/effect_command_pointers.asm b/data/battle/effect_command_pointers.asm
new file mode 100644
index 00000000..d5c044d7
--- /dev/null
+++ b/data/battle/effect_command_pointers.asm
@@ -0,0 +1,181 @@
+; battle commands are defined in engine/battle/effect_commands.asm
+
+ dw 0 ; padding
+
+BattleCommandPointers:
+; entries correspond to macros/scripts/battle_commands.asm
+ dw BattleCommand_CheckTurn
+ dw BattleCommand_CheckObedience
+ dw BattleCommand_UsedMoveText
+ dw BattleCommand_DoTurn
+ dw BattleCommand_Critical
+ dw BattleCommand_DamageStats
+ dw BattleCommand_Stab
+ dw BattleCommand_DamageVariation
+ dw BattleCommand_CheckHit
+ dw BattleCommand_LowerSub
+ dw BattleCommand_MoveAnimNoSub
+ dw BattleCommand_RaiseSub
+ dw BattleCommand_FailureText
+ dw BattleCommand_ApplyDamage
+ dw BattleCommand_CriticalText
+ dw BattleCommand_SuperEffectiveText
+ dw BattleCommand_CheckFaint
+ dw BattleCommand_BuildOpponentRage
+ dw BattleCommand_PoisonTarget
+ dw BattleCommand_SleepTarget
+ dw BattleCommand_DrainTarget
+ dw BattleCommand_EatDream
+ dw BattleCommand_BurnTarget
+ dw BattleCommand_FreezeTarget
+ dw BattleCommand_ParalyzeTarget
+ dw BattleCommand_Selfdestruct
+ dw BattleCommand_MirrorMove
+ dw BattleCommand_StatUp
+ dw BattleCommand_StatDown
+ dw BattleCommand_PayDay
+ dw BattleCommand_Conversion
+ dw BattleCommand_ResetStats
+ dw BattleCommand_StoreEnergy
+ dw BattleCommand_UnleashEnergy
+ dw BattleCommand_ForceSwitch
+ dw BattleCommand_EndLoop
+ dw BattleCommand_FlinchTarget
+ dw BattleCommand_OHKO
+ dw BattleCommand_Recoil
+ dw BattleCommand_Mist
+ dw BattleCommand_FocusEnergy
+ dw BattleCommand_Confuse
+ dw BattleCommand_ConfuseTarget
+ dw BattleCommand_Heal
+ dw BattleCommand_Transform
+ dw BattleCommand_Screen
+ dw BattleCommand_Poison
+ dw BattleCommand_Paralyze
+ dw BattleCommand_Substitute
+ dw BattleCommand_RechargeNextTurn
+ dw BattleCommand_Mimic
+ dw BattleCommand_Metronome
+ dw BattleCommand_LeechSeed
+ dw BattleCommand_Splash
+ dw BattleCommand_Disable
+ dw BattleCommand_ClearText
+ dw BattleCommand_Charge
+ dw BattleCommand_CheckCharge
+ dw BattleCommand_TrapTarget
+ dw BattleCommand3c
+ dw BattleCommand_Rampage
+ dw BattleCommand_CheckRampage
+ dw BattleCommand_ConstantDamage
+ dw BattleCommand_Counter
+ dw BattleCommand_Encore
+ dw BattleCommand_PainSplit
+ dw BattleCommand_Snore
+ dw BattleCommand_Conversion2
+ dw BattleCommand_LockOn
+ dw BattleCommand_Sketch
+ dw BattleCommand_DefrostOpponent
+ dw BattleCommand_SleepTalk
+ dw BattleCommand_DestinyBond
+ dw BattleCommand_Spite
+ dw BattleCommand_FalseSwipe
+ dw BattleCommand_HealBell
+ dw BattleCommand_HeldFlinch
+ dw BattleCommand_TripleKick
+ dw BattleCommand_KickCounter
+ dw BattleCommand_Thief
+ dw BattleCommand_ArenaTrap
+ dw BattleCommand_Nightmare
+ dw BattleCommand_Defrost
+ dw BattleCommand_Curse
+ dw BattleCommand_Protect
+ dw BattleCommand_Spikes
+ dw BattleCommand_Foresight
+ dw BattleCommand_PerishSong
+ dw BattleCommand_StartSandstorm
+ dw BattleCommand_Endure
+ dw BattleCommand_CheckCurl
+ dw BattleCommand_RolloutPower
+ dw BattleCommand5d
+ dw BattleCommand_FuryCutter
+ dw BattleCommand_Attract
+ dw BattleCommand_HappinessPower
+ dw BattleCommand_Present
+ dw BattleCommand_DamageCalc
+ dw BattleCommand_FrustrationPower
+ dw BattleCommand_Safeguard
+ dw BattleCommand_CheckSafeguard
+ dw BattleCommand_GetMagnitude
+ dw BattleCommand_BatonPass
+ dw BattleCommand_Pursuit
+ dw BattleCommand_ClearHazards
+ dw BattleCommand_HealMorn
+ dw BattleCommand_HealDay
+ dw BattleCommand_HealNite
+ dw BattleCommand_HiddenPower
+ dw BattleCommand_StartRain
+ dw BattleCommand_StartSun
+ dw BattleCommand_AttackUp
+ dw BattleCommand_DefenseUp
+ dw BattleCommand_SpeedUp
+ dw BattleCommand_SpecialAttackUp
+ dw BattleCommand_SpecialDefenseUp
+ dw BattleCommand_AccuracyUp
+ dw BattleCommand_EvasionUp
+ dw BattleCommand_AttackUp2
+ dw BattleCommand_DefenseUp2
+ dw BattleCommand_SpeedUp2
+ dw BattleCommand_SpecialAttackUp2
+ dw BattleCommand_SpecialDefenseUp2
+ dw BattleCommand_AccuracyUp2
+ dw BattleCommand_EvasionUp2
+ dw BattleCommand_AttackDown
+ dw BattleCommand_DefenseDown
+ dw BattleCommand_SpeedDown
+ dw BattleCommand_SpecialAttackDown
+ dw BattleCommand_SpecialDefenseDown
+ dw BattleCommand_AccuracyDown
+ dw BattleCommand_EvasionDown
+ dw BattleCommand_AttackDown2
+ dw BattleCommand_DefenseDown2
+ dw BattleCommand_SpeedDown2
+ dw BattleCommand_SpecialAttackDown2
+ dw BattleCommand_SpecialDefenseDown2
+ dw BattleCommand_AccuracyDown2
+ dw BattleCommand_EvasionDown2
+ dw BattleCommand_StatUpMessage
+ dw BattleCommand_StatDownMessage
+ dw BattleCommand_StatUpFailText
+ dw BattleCommand_StatDownFailText
+ dw BattleCommand_EffectChance
+ dw BattleCommand_StatDownAnim
+ dw BattleCommand_StatUpAnim
+ dw BattleCommand_SwitchTurn
+ dw BattleCommand_FakeOut
+ dw BattleCommand_BellyDrum
+ dw BattleCommand_PsychUp
+ dw BattleCommand_Rage
+ dw BattleCommand_DoubleFlyingDamage
+ dw BattleCommand_DoubleUndergroundDamage
+ dw BattleCommand_MirrorCoat
+ dw BattleCommand_CheckFutureSight
+ dw BattleCommand_FutureSight
+ dw BattleCommand_DoubleMinimizeDamage
+ dw BattleCommand_SkipSunCharge
+ dw BattleCommand_ThunderAccuracy
+ dw BattleCommand_Teleport
+ dw BattleCommand_BeatUp
+ dw BattleCommand_RageDamage
+ dw BattleCommand_ResetTypeMatchup
+ dw BattleCommand_AllStatsUp
+ dw BattleCommand_BideFailText
+ dw BattleCommand_RaiseSubNoAnim
+ dw BattleCommand_LowerSubNoAnim
+ dw BattleCommand_BeatUpFailText
+ dw BattleCommand_ClearMissDamage
+ dw BattleCommand_MoveDelay
+ dw BattleCommand_MoveAnim
+ dw BattleCommand_TriStatusChance
+ dw BattleCommand_SuperEffectiveLoopText
+ dw BattleCommand_StartLoop
+ dw BattleCommand_Curl
diff --git a/data/battle/held_consumables.asm b/data/battle/held_consumables.asm
new file mode 100644
index 00000000..bd47c1d8
--- /dev/null
+++ b/data/battle/held_consumables.asm
@@ -0,0 +1,25 @@
+; Held item effects that are consumed on use
+
+ConsumableEffects:
+ db HELD_BERRY
+ db HELD_2
+ db HELD_5
+ db HELD_HEAL_POISON
+ db HELD_HEAL_FREEZE
+ db HELD_HEAL_BURN
+ db HELD_HEAL_SLEEP
+ db HELD_HEAL_PARALYZE
+ db HELD_HEAL_STATUS
+ db HELD_30
+ db HELD_ATTACK_UP
+ db HELD_DEFENSE_UP
+ db HELD_SPEED_UP
+ db HELD_SP_ATTACK_UP
+ db HELD_SP_DEFENSE_UP
+ db HELD_ACCURACY_UP
+ db HELD_EVASION_UP
+ db HELD_38
+ db HELD_71
+ db HELD_ESCAPE
+ db HELD_CRITICAL_UP
+ db -1
diff --git a/data/battle/held_heal_status.asm b/data/battle/held_heal_status.asm
new file mode 100644
index 00000000..ac11b645
--- /dev/null
+++ b/data/battle/held_heal_status.asm
@@ -0,0 +1,10 @@
+; See also data/items/heal_status.asm
+
+HeldStatusHealingEffects:
+ db HELD_HEAL_POISON, 1 << PSN
+ db HELD_HEAL_FREEZE, 1 << FRZ
+ db HELD_HEAL_BURN, 1 << BRN
+ db HELD_HEAL_SLEEP, SLP
+ db HELD_HEAL_PARALYZE, 1 << PAR
+ db HELD_HEAL_STATUS, ALL_STATUS
+ db -1 ; end
diff --git a/data/battle/held_stat_up.asm b/data/battle/held_stat_up.asm
new file mode 100644
index 00000000..4f28c0d0
--- /dev/null
+++ b/data/battle/held_stat_up.asm
@@ -0,0 +1,9 @@
+HeldStatUpItems:
+ dbw HELD_ATTACK_UP, BattleCommand_AttackUp
+ dbw HELD_DEFENSE_UP, BattleCommand_DefenseUp
+ dbw HELD_SPEED_UP, BattleCommand_SpeedUp
+ dbw HELD_SP_ATTACK_UP, BattleCommand_SpecialAttackUp
+ dbw HELD_SP_DEFENSE_UP, BattleCommand_SpecialDefenseUp
+ dbw HELD_ACCURACY_UP, BattleCommand_AccuracyUp
+ dbw HELD_EVASION_UP, BattleCommand_EvasionUp
+ db -1 ; end
diff --git a/data/battle/stat_multipliers.asm b/data/battle/stat_multipliers.asm
new file mode 100644
index 00000000..bbb1cadd
--- /dev/null
+++ b/data/battle/stat_multipliers.asm
@@ -0,0 +1,20 @@
+; Multiplier ratios for all stats from modifier -6 to +6
+; (except accuracy, see data/battle/accuracy_multipliers.asm).
+
+; This table is identical to data/battle/stat_multipliers_2.asm.
+; This one is used by CalcBattleStats.
+
+StatLevelMultipliers:
+ db 25, 100 ; -6 = 25%
+ db 28, 100 ; -5 = 28%
+ db 33, 100 ; -4 = 33%
+ db 40, 100 ; -3 = 40%
+ db 50, 100 ; -2 = 50%
+ db 66, 100 ; -1 = 66%
+ db 1, 1 ; 0 = 100%
+ db 15, 10 ; +1 = 150%
+ db 2, 1 ; +2 = 200%
+ db 25, 10 ; +3 = 250%
+ db 3, 1 ; +4 = 300%
+ db 35, 10 ; +5 = 350%
+ db 4, 1 ; +6 = 400%
diff --git a/data/battle/stat_multipliers_2.asm b/data/battle/stat_multipliers_2.asm
new file mode 100644
index 00000000..3f3dc234
--- /dev/null
+++ b/data/battle/stat_multipliers_2.asm
@@ -0,0 +1,20 @@
+; Multiplier ratios for all stats from modifier -6 to +6
+; (except accuracy, see data/battle/accuracy_multipliers.asm).
+
+; This table is identical to data/battle/stat_multipliers.asm.
+; This one is used by ApplyStatLevelMultiplier.
+
+StatLevelMultipliers_Applied:
+ db 25, 100 ; -6 = 25%
+ db 28, 100 ; -5 = 28%
+ db 33, 100 ; -4 = 33%
+ db 40, 100 ; -3 = 40%
+ db 50, 100 ; -2 = 50%
+ db 66, 100 ; -1 = 66%
+ db 1, 1 ; 0 = 100%
+ db 15, 10 ; +1 = 150%
+ db 2, 1 ; +2 = 200%
+ db 25, 10 ; +3 = 250%
+ db 3, 1 ; +4 = 300%
+ db 35, 10 ; +5 = 350%
+ db 4, 1 ; +6 = 400%
diff --git a/data/battle/stat_names.asm b/data/battle/stat_names.asm
new file mode 100644
index 00000000..a144a225
--- /dev/null
+++ b/data/battle/stat_names.asm
@@ -0,0 +1,10 @@
+StatNames:
+; entries correspond to stat ids
+ db "ATTACK@"
+ db "DEFENSE@"
+ db "SPEED@"
+ db "SPCL.ATK@"
+ db "SPCL.DEF@"
+ db "ACCURACY@"
+ db "EVASION@"
+ db "ABILITY@" ; used for BattleCommand_Curse
diff --git a/data/battle/wobble_probabilities.asm b/data/battle/wobble_probabilities.asm
new file mode 100644
index 00000000..38e9a12c
--- /dev/null
+++ b/data/battle/wobble_probabilities.asm
@@ -0,0 +1,27 @@
+WobbleProbabilities:
+; catch rate, chance of wobbling / 255
+; nLeft/255 = (nRight/255) ** 4
+ db 1, 63
+ db 2, 75
+ db 3, 84
+ db 4, 90
+ db 5, 95
+ db 7, 103
+ db 10, 113
+ db 15, 126
+ db 20, 134
+ db 30, 149
+ db 40, 160
+ db 50, 169
+ db 60, 177
+ db 80, 191
+ db 100, 201
+ db 120, 211
+ db 140, 220
+ db 160, 227
+ db 180, 234
+ db 200, 240
+ db 220, 246
+ db 240, 251
+ db 254, 253
+ db 255, 255
diff --git a/data/collision_permissions.asm b/data/collision_permissions.asm
index 82ebb770..93cf5509 100755
--- a/data/collision_permissions.asm
+++ b/data/collision_permissions.asm
@@ -3,54 +3,54 @@ TALKABLE EQUS "db TALK +"
TileCollisionTable::
; entries correspond to COLL_* constants
- NONTALKABLE LANDTILE ; COLL_FLOOR
- NONTALKABLE LANDTILE ; COLL_01
- NONTALKABLE LANDTILE ; 02
- NONTALKABLE LANDTILE ; COLL_03
- NONTALKABLE LANDTILE ; COLL_04
- NONTALKABLE LANDTILE ; 05
- NONTALKABLE LANDTILE ; 06
- NONTALKABLE WALLTILE ; COLL_WALL
- NONTALKABLE LANDTILE ; COLL_CUT_08
- NONTALKABLE LANDTILE ; 09
- NONTALKABLE LANDTILE ; 0a
- NONTALKABLE LANDTILE ; 0b
- NONTALKABLE LANDTILE ; 0c
- NONTALKABLE LANDTILE ; 0d
- NONTALKABLE LANDTILE ; 0e
- NONTALKABLE WALLTILE ; 0f
- NONTALKABLE LANDTILE ; COLL_TALL_GRASS_10
- NONTALKABLE LANDTILE ; 11
- TALKABLE WALLTILE ; COLL_CUT_TREE
- NONTALKABLE LANDTILE ; 13
- NONTALKABLE LANDTILE ; COLL_LONG_GRASS
- TALKABLE WALLTILE ; COLL_HEADBUTT_TREE
- NONTALKABLE LANDTILE ; 16
- NONTALKABLE LANDTILE ; 17
- NONTALKABLE LANDTILE ; COLL_TALL_GRASS
- NONTALKABLE LANDTILE ; 19
- TALKABLE WALLTILE ; COLL_CUT_TREE_1A
- NONTALKABLE LANDTILE ; 1b
- NONTALKABLE LANDTILE ; COLL_LONG_GRASS_1C
- TALKABLE WALLTILE ; COLL_HEADBUTT_TREE_1D
- NONTALKABLE LANDTILE ; 1e
- NONTALKABLE LANDTILE ; 1f
+ NONTALKABLE LAND_TILE ; COLL_FLOOR
+ NONTALKABLE LAND_TILE ; COLL_01
+ NONTALKABLE LAND_TILE ; 02
+ NONTALKABLE LAND_TILE ; COLL_03
+ NONTALKABLE LAND_TILE ; COLL_04
+ NONTALKABLE LAND_TILE ; 05
+ NONTALKABLE LAND_TILE ; 06
+ NONTALKABLE WALL_TILE ; COLL_WALL
+ NONTALKABLE LAND_TILE ; COLL_CUT_08
+ NONTALKABLE LAND_TILE ; 09
+ NONTALKABLE LAND_TILE ; 0a
+ NONTALKABLE LAND_TILE ; 0b
+ NONTALKABLE LAND_TILE ; 0c
+ NONTALKABLE LAND_TILE ; 0d
+ NONTALKABLE LAND_TILE ; 0e
+ NONTALKABLE WALL_TILE ; 0f
+ NONTALKABLE LAND_TILE ; COLL_TALL_GRASS_10
+ NONTALKABLE LAND_TILE ; 11
+ TALKABLE WALL_TILE ; COLL_CUT_TREE
+ NONTALKABLE LAND_TILE ; 13
+ NONTALKABLE LAND_TILE ; COLL_LONG_GRASS
+ TALKABLE WALL_TILE ; COLL_HEADBUTT_TREE
+ NONTALKABLE LAND_TILE ; 16
+ NONTALKABLE LAND_TILE ; 17
+ NONTALKABLE LAND_TILE ; COLL_TALL_GRASS
+ NONTALKABLE LAND_TILE ; 19
+ TALKABLE WALL_TILE ; COLL_CUT_TREE_1A
+ NONTALKABLE LAND_TILE ; 1b
+ NONTALKABLE LAND_TILE ; COLL_LONG_GRASS_1C
+ TALKABLE WALL_TILE ; COLL_HEADBUTT_TREE_1D
+ NONTALKABLE LAND_TILE ; 1e
+ NONTALKABLE LAND_TILE ; 1f
NONTALKABLE WATERTILE ; 20
NONTALKABLE WATERTILE ; COLL_WATER_21
TALKABLE WATERTILE ; 22
- NONTALKABLE LANDTILE ; COLL_ICE
+ NONTALKABLE LAND_TILE ; COLL_ICE
TALKABLE WATERTILE ; COLL_WHIRLPOOL
NONTALKABLE WATERTILE ; 25
NONTALKABLE WATERTILE ; 26
- NONTALKABLE WALLTILE ; COLL_BUOY
+ NONTALKABLE WALL_TILE ; COLL_BUOY
NONTALKABLE WATERTILE ; COLL_CUT_28
NONTALKABLE WATERTILE ; COLL_WATER
TALKABLE WATERTILE ; 2a
- NONTALKABLE LANDTILE ; COLL_ICE_2B
+ NONTALKABLE LAND_TILE ; COLL_ICE_2B
TALKABLE WATERTILE ; COLL_WHIRLPOOL_2C
NONTALKABLE WATERTILE ; 2d
NONTALKABLE WATERTILE ; 2e
- NONTALKABLE WALLTILE ; 2f
+ NONTALKABLE WALL_TILE ; 2f
NONTALKABLE WATERTILE ; COLL_WATERFALL_RIGHT
NONTALKABLE WATERTILE ; COLL_WATERFALL_LEFT
NONTALKABLE WATERTILE ; COLL_WATERFALL_UP
@@ -67,134 +67,134 @@ TileCollisionTable::
NONTALKABLE WATERTILE ; 3d
NONTALKABLE WATERTILE ; 3e
NONTALKABLE WATERTILE ; 3f
- NONTALKABLE LANDTILE ; COLL_BRAKE
- NONTALKABLE LANDTILE ; COLL_WALK_RIGHT
- NONTALKABLE LANDTILE ; COLL_WALK_LEFT
- NONTALKABLE LANDTILE ; COLL_WALK_UP
- NONTALKABLE LANDTILE ; COLL_WALK_DOWN
- NONTALKABLE LANDTILE ; COLL_BRAKE_45
- NONTALKABLE LANDTILE ; COLL_BRAKE_46
- NONTALKABLE LANDTILE ; COLL_BRAKE_47
- NONTALKABLE LANDTILE ; COLL_GRASS_48
- NONTALKABLE LANDTILE ; COLL_GRASS_49
- NONTALKABLE LANDTILE ; COLL_GRASS_4A
- NONTALKABLE LANDTILE ; COLL_GRASS_4B
- NONTALKABLE LANDTILE ; COLL_GRASS_4C
- NONTALKABLE LANDTILE ; 4d
- NONTALKABLE LANDTILE ; 4e
- NONTALKABLE LANDTILE ; 4f
- NONTALKABLE LANDTILE ; COLL_WALK_RIGHT_ALT
- NONTALKABLE LANDTILE ; COLL_WALK_LEFT_ALT
- NONTALKABLE LANDTILE ; COLL_WALK_UP_ALT
- NONTALKABLE LANDTILE ; COLL_WALK_DOWN_ALT
- NONTALKABLE LANDTILE ; COLL_BRAKE_ALT
- NONTALKABLE LANDTILE ; COLL_BRAKE_55
- NONTALKABLE LANDTILE ; COLL_BRAKE_56
- NONTALKABLE LANDTILE ; COLL_BRAKE_57
- NONTALKABLE LANDTILE ; 58
- NONTALKABLE LANDTILE ; 59
- NONTALKABLE LANDTILE ; 5a
- NONTALKABLE LANDTILE ; COLL_5B
- NONTALKABLE LANDTILE ; 5c
- NONTALKABLE LANDTILE ; 5d
- NONTALKABLE LANDTILE ; 5e
- NONTALKABLE LANDTILE ; 5f
- NONTALKABLE LANDTILE ; COLL_PIT
- NONTALKABLE LANDTILE ; COLL_VIRTUAL_BOY
- NONTALKABLE WALLTILE ; 62
- NONTALKABLE LANDTILE ; 63
- NONTALKABLE LANDTILE ; COLL_64
- NONTALKABLE LANDTILE ; COLL_65
- NONTALKABLE LANDTILE ; 66
- NONTALKABLE LANDTILE ; 67
- NONTALKABLE LANDTILE ; COLL_PIT_68
- NONTALKABLE LANDTILE ; 69
- NONTALKABLE WALLTILE ; 6a
- NONTALKABLE LANDTILE ; 6b
- NONTALKABLE LANDTILE ; 6c
- NONTALKABLE LANDTILE ; 6d
- NONTALKABLE LANDTILE ; 6e
- NONTALKABLE LANDTILE ; 6f
- NONTALKABLE LANDTILE ; COLL_WARP_CARPET_DOWN
- NONTALKABLE LANDTILE ; COLL_DOOR
- NONTALKABLE LANDTILE ; COLL_LADDER
- NONTALKABLE LANDTILE ; COLL_STAIRCASE_73
- NONTALKABLE LANDTILE ; COLL_CAVE_74
- NONTALKABLE LANDTILE ; COLL_DOOR_75
- NONTALKABLE LANDTILE ; COLL_WARP_CARPET_LEFT
- NONTALKABLE LANDTILE ; COLL_WARP_77
- NONTALKABLE LANDTILE ; COLL_WARP_CARPET_UP
- NONTALKABLE LANDTILE ; COLL_DOOR_79
- NONTALKABLE LANDTILE ; COLL_STAIRCASE
- NONTALKABLE LANDTILE ; COLL_CAVE
- NONTALKABLE LANDTILE ; COLL_WARP_PANEL
- NONTALKABLE LANDTILE ; COLL_DOOR_7D
- NONTALKABLE LANDTILE ; COLL_WARP_CARPET_RIGHT
- NONTALKABLE LANDTILE ; COLL_WARP_7F
- NONTALKABLE WALLTILE ; 80
- NONTALKABLE WALLTILE ; 81
- NONTALKABLE WALLTILE ; 82
- NONTALKABLE WALLTILE ; 83
- NONTALKABLE WALLTILE ; 84
- NONTALKABLE LANDTILE ; 85
- NONTALKABLE LANDTILE ; 86
- NONTALKABLE LANDTILE ; 87
- NONTALKABLE WALLTILE ; 88
- NONTALKABLE WALLTILE ; 89
- NONTALKABLE WALLTILE ; 8a
- NONTALKABLE WALLTILE ; 8b
- NONTALKABLE WALLTILE ; 8c
- NONTALKABLE LANDTILE ; 8d
- NONTALKABLE LANDTILE ; 8e
- NONTALKABLE LANDTILE ; 8f
- NONTALKABLE WALLTILE ; COLL_COUNTER
- NONTALKABLE WALLTILE ; COLL_BOOKSHELF
- NONTALKABLE WALLTILE ; 92
- NONTALKABLE WALLTILE ; COLL_PC
- NONTALKABLE WALLTILE ; COLL_RADIO
- NONTALKABLE WALLTILE ; COLL_TOWN_MAP
- NONTALKABLE WALLTILE ; COLL_MART_SHELF
- NONTALKABLE WALLTILE ; COLL_TV
- NONTALKABLE WALLTILE ; COLL_COUNTER_98
- NONTALKABLE WALLTILE ; 99
- NONTALKABLE WALLTILE ; 9a
- NONTALKABLE WALLTILE ; 9b
- NONTALKABLE WALLTILE ; COLL_9C
- NONTALKABLE WALLTILE ; COLL_WINDOW
- NONTALKABLE WALLTILE ; 9e
- NONTALKABLE WALLTILE ; COLL_INCENSE_BURNER
- NONTALKABLE LANDTILE ; COLL_HOP_RIGHT
- NONTALKABLE LANDTILE ; COLL_HOP_LEFT
- NONTALKABLE LANDTILE ; COLL_HOP_UP
- NONTALKABLE LANDTILE ; COLL_HOP_DOWN
- NONTALKABLE LANDTILE ; COLL_HOP_DOWN_RIGHT
- NONTALKABLE LANDTILE ; COLL_HOP_DOWN_LEFT
- NONTALKABLE LANDTILE ; COLL_HOP_UP_RIGHT
- NONTALKABLE LANDTILE ; COLL_HOP_UP_LEFT
- NONTALKABLE LANDTILE ; a8
- NONTALKABLE LANDTILE ; a9
- NONTALKABLE LANDTILE ; aa
- NONTALKABLE LANDTILE ; ab
- NONTALKABLE LANDTILE ; ac
- NONTALKABLE LANDTILE ; ad
- NONTALKABLE LANDTILE ; ae
- NONTALKABLE LANDTILE ; af
- NONTALKABLE LANDTILE ; COLL_RIGHT_WALL
- NONTALKABLE LANDTILE ; COLL_LEFT_WALL
- NONTALKABLE LANDTILE ; COLL_UP_WALL
- NONTALKABLE LANDTILE ; COLL_DOWN_WALL
- NONTALKABLE LANDTILE ; COLL_DOWN_RIGHT_WALL
- NONTALKABLE LANDTILE ; COLL_DOWN_LEFT_WALL
- NONTALKABLE LANDTILE ; COLL_UP_RIGHT_WALL
- NONTALKABLE LANDTILE ; COLL_UP_LEFT_WALL
- NONTALKABLE LANDTILE ; b8
- NONTALKABLE LANDTILE ; b9
- NONTALKABLE LANDTILE ; ba
- NONTALKABLE LANDTILE ; bb
- NONTALKABLE LANDTILE ; bc
- NONTALKABLE LANDTILE ; bd
- NONTALKABLE LANDTILE ; be
- NONTALKABLE LANDTILE ; bf
+ NONTALKABLE LAND_TILE ; COLL_BRAKE
+ NONTALKABLE LAND_TILE ; COLL_WALK_RIGHT
+ NONTALKABLE LAND_TILE ; COLL_WALK_LEFT
+ NONTALKABLE LAND_TILE ; COLL_WALK_UP
+ NONTALKABLE LAND_TILE ; COLL_WALK_DOWN
+ NONTALKABLE LAND_TILE ; COLL_BRAKE_45
+ NONTALKABLE LAND_TILE ; COLL_BRAKE_46
+ NONTALKABLE LAND_TILE ; COLL_BRAKE_47
+ NONTALKABLE LAND_TILE ; COLL_GRASS_48
+ NONTALKABLE LAND_TILE ; COLL_GRASS_49
+ NONTALKABLE LAND_TILE ; COLL_GRASS_4A
+ NONTALKABLE LAND_TILE ; COLL_GRASS_4B
+ NONTALKABLE LAND_TILE ; COLL_GRASS_4C
+ NONTALKABLE LAND_TILE ; 4d
+ NONTALKABLE LAND_TILE ; 4e
+ NONTALKABLE LAND_TILE ; 4f
+ NONTALKABLE LAND_TILE ; COLL_WALK_RIGHT_ALT
+ NONTALKABLE LAND_TILE ; COLL_WALK_LEFT_ALT
+ NONTALKABLE LAND_TILE ; COLL_WALK_UP_ALT
+ NONTALKABLE LAND_TILE ; COLL_WALK_DOWN_ALT
+ NONTALKABLE LAND_TILE ; COLL_BRAKE_ALT
+ NONTALKABLE LAND_TILE ; COLL_BRAKE_55
+ NONTALKABLE LAND_TILE ; COLL_BRAKE_56
+ NONTALKABLE LAND_TILE ; COLL_BRAKE_57
+ NONTALKABLE LAND_TILE ; 58
+ NONTALKABLE LAND_TILE ; 59
+ NONTALKABLE LAND_TILE ; 5a
+ NONTALKABLE LAND_TILE ; COLL_5B
+ NONTALKABLE LAND_TILE ; 5c
+ NONTALKABLE LAND_TILE ; 5d
+ NONTALKABLE LAND_TILE ; 5e
+ NONTALKABLE LAND_TILE ; 5f
+ NONTALKABLE LAND_TILE ; COLL_PIT
+ NONTALKABLE LAND_TILE ; COLL_VIRTUAL_BOY
+ NONTALKABLE WALL_TILE ; 62
+ NONTALKABLE LAND_TILE ; 63
+ NONTALKABLE LAND_TILE ; COLL_64
+ NONTALKABLE LAND_TILE ; COLL_65
+ NONTALKABLE LAND_TILE ; 66
+ NONTALKABLE LAND_TILE ; 67
+ NONTALKABLE LAND_TILE ; COLL_PIT_68
+ NONTALKABLE LAND_TILE ; 69
+ NONTALKABLE WALL_TILE ; 6a
+ NONTALKABLE LAND_TILE ; 6b
+ NONTALKABLE LAND_TILE ; 6c
+ NONTALKABLE LAND_TILE ; 6d
+ NONTALKABLE LAND_TILE ; 6e
+ NONTALKABLE LAND_TILE ; 6f
+ NONTALKABLE LAND_TILE ; COLL_WARP_CARPET_DOWN
+ NONTALKABLE LAND_TILE ; COLL_DOOR
+ NONTALKABLE LAND_TILE ; COLL_LADDER
+ NONTALKABLE LAND_TILE ; COLL_STAIRCASE_73
+ NONTALKABLE LAND_TILE ; COLL_CAVE_74
+ NONTALKABLE LAND_TILE ; COLL_DOOR_75
+ NONTALKABLE LAND_TILE ; COLL_WARP_CARPET_LEFT
+ NONTALKABLE LAND_TILE ; COLL_WARP_77
+ NONTALKABLE LAND_TILE ; COLL_WARP_CARPET_UP
+ NONTALKABLE LAND_TILE ; COLL_DOOR_79
+ NONTALKABLE LAND_TILE ; COLL_STAIRCASE
+ NONTALKABLE LAND_TILE ; COLL_CAVE
+ NONTALKABLE LAND_TILE ; COLL_WARP_PANEL
+ NONTALKABLE LAND_TILE ; COLL_DOOR_7D
+ NONTALKABLE LAND_TILE ; COLL_WARP_CARPET_RIGHT
+ NONTALKABLE LAND_TILE ; COLL_WARP_7F
+ NONTALKABLE WALL_TILE ; 80
+ NONTALKABLE WALL_TILE ; 81
+ NONTALKABLE WALL_TILE ; 82
+ NONTALKABLE WALL_TILE ; 83
+ NONTALKABLE WALL_TILE ; 84
+ NONTALKABLE LAND_TILE ; 85
+ NONTALKABLE LAND_TILE ; 86
+ NONTALKABLE LAND_TILE ; 87
+ NONTALKABLE WALL_TILE ; 88
+ NONTALKABLE WALL_TILE ; 89
+ NONTALKABLE WALL_TILE ; 8a
+ NONTALKABLE WALL_TILE ; 8b
+ NONTALKABLE WALL_TILE ; 8c
+ NONTALKABLE LAND_TILE ; 8d
+ NONTALKABLE LAND_TILE ; 8e
+ NONTALKABLE LAND_TILE ; 8f
+ NONTALKABLE WALL_TILE ; COLL_COUNTER
+ NONTALKABLE WALL_TILE ; COLL_BOOKSHELF
+ NONTALKABLE WALL_TILE ; 92
+ NONTALKABLE WALL_TILE ; COLL_PC
+ NONTALKABLE WALL_TILE ; COLL_RADIO
+ NONTALKABLE WALL_TILE ; COLL_TOWN_MAP
+ NONTALKABLE WALL_TILE ; COLL_MART_SHELF
+ NONTALKABLE WALL_TILE ; COLL_TV
+ NONTALKABLE WALL_TILE ; COLL_COUNTER_98
+ NONTALKABLE WALL_TILE ; 99
+ NONTALKABLE WALL_TILE ; 9a
+ NONTALKABLE WALL_TILE ; 9b
+ NONTALKABLE WALL_TILE ; COLL_9C
+ NONTALKABLE WALL_TILE ; COLL_WINDOW
+ NONTALKABLE WALL_TILE ; 9e
+ NONTALKABLE WALL_TILE ; COLL_INCENSE_BURNER
+ NONTALKABLE LAND_TILE ; COLL_HOP_RIGHT
+ NONTALKABLE LAND_TILE ; COLL_HOP_LEFT
+ NONTALKABLE LAND_TILE ; COLL_HOP_UP
+ NONTALKABLE LAND_TILE ; COLL_HOP_DOWN
+ NONTALKABLE LAND_TILE ; COLL_HOP_DOWN_RIGHT
+ NONTALKABLE LAND_TILE ; COLL_HOP_DOWN_LEFT
+ NONTALKABLE LAND_TILE ; COLL_HOP_UP_RIGHT
+ NONTALKABLE LAND_TILE ; COLL_HOP_UP_LEFT
+ NONTALKABLE LAND_TILE ; a8
+ NONTALKABLE LAND_TILE ; a9
+ NONTALKABLE LAND_TILE ; aa
+ NONTALKABLE LAND_TILE ; ab
+ NONTALKABLE LAND_TILE ; ac
+ NONTALKABLE LAND_TILE ; ad
+ NONTALKABLE LAND_TILE ; ae
+ NONTALKABLE LAND_TILE ; af
+ NONTALKABLE LAND_TILE ; COLL_RIGHT_WALL
+ NONTALKABLE LAND_TILE ; COLL_LEFT_WALL
+ NONTALKABLE LAND_TILE ; COLL_UP_WALL
+ NONTALKABLE LAND_TILE ; COLL_DOWN_WALL
+ NONTALKABLE LAND_TILE ; COLL_DOWN_RIGHT_WALL
+ NONTALKABLE LAND_TILE ; COLL_DOWN_LEFT_WALL
+ NONTALKABLE LAND_TILE ; COLL_UP_RIGHT_WALL
+ NONTALKABLE LAND_TILE ; COLL_UP_LEFT_WALL
+ NONTALKABLE LAND_TILE ; b8
+ NONTALKABLE LAND_TILE ; b9
+ NONTALKABLE LAND_TILE ; ba
+ NONTALKABLE LAND_TILE ; bb
+ NONTALKABLE LAND_TILE ; bc
+ NONTALKABLE LAND_TILE ; bd
+ NONTALKABLE LAND_TILE ; be
+ NONTALKABLE LAND_TILE ; bf
NONTALKABLE WATERTILE ; COLL_RIGHT_BUOY
NONTALKABLE WATERTILE ; COLL_LEFT_BUOY
NONTALKABLE WATERTILE ; COLL_UP_BUOY
@@ -211,51 +211,51 @@ TileCollisionTable::
NONTALKABLE WATERTILE ; cd
NONTALKABLE WATERTILE ; ce
NONTALKABLE WATERTILE ; cf
- NONTALKABLE LANDTILE ; d0
- NONTALKABLE LANDTILE ; d1
- NONTALKABLE LANDTILE ; d2
- NONTALKABLE LANDTILE ; d3
- NONTALKABLE LANDTILE ; d4
- NONTALKABLE LANDTILE ; d5
- NONTALKABLE LANDTILE ; d6
- NONTALKABLE LANDTILE ; d7
- NONTALKABLE LANDTILE ; d8
- NONTALKABLE LANDTILE ; d9
- NONTALKABLE LANDTILE ; da
- NONTALKABLE LANDTILE ; db
- NONTALKABLE LANDTILE ; dc
- NONTALKABLE LANDTILE ; dd
- NONTALKABLE LANDTILE ; de
- NONTALKABLE LANDTILE ; df
- NONTALKABLE LANDTILE ; e0
- NONTALKABLE LANDTILE ; e1
- NONTALKABLE LANDTILE ; e2
- NONTALKABLE LANDTILE ; e3
- NONTALKABLE LANDTILE ; e4
- NONTALKABLE LANDTILE ; e5
- NONTALKABLE LANDTILE ; e6
- NONTALKABLE LANDTILE ; e7
- NONTALKABLE LANDTILE ; e8
- NONTALKABLE LANDTILE ; e9
- NONTALKABLE LANDTILE ; ea
- NONTALKABLE LANDTILE ; eb
- NONTALKABLE LANDTILE ; ec
- NONTALKABLE LANDTILE ; ed
- NONTALKABLE LANDTILE ; ee
- NONTALKABLE LANDTILE ; ef
- NONTALKABLE LANDTILE ; f0
- NONTALKABLE LANDTILE ; f1
- NONTALKABLE LANDTILE ; f2
- NONTALKABLE LANDTILE ; f3
- NONTALKABLE LANDTILE ; f4
- NONTALKABLE LANDTILE ; f5
- NONTALKABLE LANDTILE ; f6
- NONTALKABLE LANDTILE ; f7
- NONTALKABLE LANDTILE ; f8
- NONTALKABLE LANDTILE ; f9
- NONTALKABLE LANDTILE ; fa
- NONTALKABLE LANDTILE ; fb
- NONTALKABLE LANDTILE ; fc
- NONTALKABLE LANDTILE ; fd
- NONTALKABLE LANDTILE ; fe
- NONTALKABLE WALLTILE ; COLL_FF
+ NONTALKABLE LAND_TILE ; d0
+ NONTALKABLE LAND_TILE ; d1
+ NONTALKABLE LAND_TILE ; d2
+ NONTALKABLE LAND_TILE ; d3
+ NONTALKABLE LAND_TILE ; d4
+ NONTALKABLE LAND_TILE ; d5
+ NONTALKABLE LAND_TILE ; d6
+ NONTALKABLE LAND_TILE ; d7
+ NONTALKABLE LAND_TILE ; d8
+ NONTALKABLE LAND_TILE ; d9
+ NONTALKABLE LAND_TILE ; da
+ NONTALKABLE LAND_TILE ; db
+ NONTALKABLE LAND_TILE ; dc
+ NONTALKABLE LAND_TILE ; dd
+ NONTALKABLE LAND_TILE ; de
+ NONTALKABLE LAND_TILE ; df
+ NONTALKABLE LAND_TILE ; e0
+ NONTALKABLE LAND_TILE ; e1
+ NONTALKABLE LAND_TILE ; e2
+ NONTALKABLE LAND_TILE ; e3
+ NONTALKABLE LAND_TILE ; e4
+ NONTALKABLE LAND_TILE ; e5
+ NONTALKABLE LAND_TILE ; e6
+ NONTALKABLE LAND_TILE ; e7
+ NONTALKABLE LAND_TILE ; e8
+ NONTALKABLE LAND_TILE ; e9
+ NONTALKABLE LAND_TILE ; ea
+ NONTALKABLE LAND_TILE ; eb
+ NONTALKABLE LAND_TILE ; ec
+ NONTALKABLE LAND_TILE ; ed
+ NONTALKABLE LAND_TILE ; ee
+ NONTALKABLE LAND_TILE ; ef
+ NONTALKABLE LAND_TILE ; f0
+ NONTALKABLE LAND_TILE ; f1
+ NONTALKABLE LAND_TILE ; f2
+ NONTALKABLE LAND_TILE ; f3
+ NONTALKABLE LAND_TILE ; f4
+ NONTALKABLE LAND_TILE ; f5
+ NONTALKABLE LAND_TILE ; f6
+ NONTALKABLE LAND_TILE ; f7
+ NONTALKABLE LAND_TILE ; f8
+ NONTALKABLE LAND_TILE ; f9
+ NONTALKABLE LAND_TILE ; fa
+ NONTALKABLE LAND_TILE ; fb
+ NONTALKABLE LAND_TILE ; fc
+ NONTALKABLE LAND_TILE ; fd
+ NONTALKABLE LAND_TILE ; fe
+ NONTALKABLE WALL_TILE ; COLL_FF
diff --git a/data/decorations/attributes.asm b/data/decorations/attributes.asm
new file mode 100644
index 00000000..77cd1388
--- /dev/null
+++ b/data/decorations/attributes.asm
@@ -0,0 +1,62 @@
+decoration: MACRO
+ ; type, name, command, event flag, tile/sprite
+ db \1, \2, \3
+ dw \4
+ db \5
+ENDM
+
+DecorationAttributes:
+; entries correspond to deco constants
+ decoration DECO_PLANT, 0, 0, EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BED, EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ 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_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ 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_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ 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_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ decoration DECO_PLANT, TOWN_MAP_POSTER, SET_UP_POSTER, EVENT_DECO_POSTER_1, $1f
+ decoration DECO_POSTER, PIKACHU, SET_UP_POSTER, EVENT_DECO_POSTER_2, $23
+ decoration DECO_POSTER, CLEFAIRY, SET_UP_POSTER, EVENT_DECO_POSTER_3, $24
+ decoration DECO_POSTER, JIGGLYPUFF, SET_UP_POSTER, EVENT_DECO_POSTER_4, $25
+ decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CONSOLE, EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ 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_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ 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_TEMPORARY_UNTIL_MAP_RELOAD_1, 0
+ 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/decorations/decorations.asm b/data/decorations/decorations.asm
new file mode 100644
index 00000000..947bca1b
--- /dev/null
+++ b/data/decorations/decorations.asm
@@ -0,0 +1,54 @@
+DecorationIDs:
+; see constants/deco_constants.asm
+ db DECO_FEATHERY_BED ; 2
+ db DECO_PINK_BED ; 3
+ db DECO_POLKADOT_BED ; 4
+ db DECO_PIKACHU_BED ; 5
+
+ db DECO_RED_CARPET ; 7
+ db DECO_BLUE_CARPET ; 8
+ db DECO_YELLOW_CARPET ; 9
+ db DECO_GREEN_CARPET ; a
+
+ db DECO_MAGNAPLANT ; c
+ db DECO_TROPICPLANT ; d
+ db DECO_JUMBOPLANT ; e
+
+ db DECO_TOWN_MAP ; 10
+ db DECO_PIKACHU_POSTER ; 11
+ db DECO_CLEFAIRY_POSTER ; 12
+ db DECO_JIGGLYPUFF_POSTER ; 13
+
+ db DECO_FAMICOM ; 15
+ db DECO_SNES ; 16
+ db DECO_N64 ; 17
+ db DECO_VIRTUAL_BOY ; 18
+
+ db DECO_PIKACHU_DOLL ; 1e
+ db DECO_SURF_PIKACHU_DOLL ; 1f
+ db DECO_CLEFAIRY_DOLL ; 20
+ db DECO_JIGGLYPUFF_DOLL ; 21
+ db DECO_BULBASAUR_DOLL ; 22
+ db DECO_CHARMANDER_DOLL ; 23
+ db DECO_SQUIRTLE_DOLL ; 24
+ db DECO_POLIWAG_DOLL ; 25
+ db DECO_DIGLETT_DOLL ; 26
+ db DECO_STARMIE_DOLL ; 27
+ db DECO_MAGIKARP_DOLL ; 28
+ db DECO_ODDISH_DOLL ; 29
+ db DECO_GENGAR_DOLL ; 2a
+ db DECO_SHELLDER_DOLL ; 2b
+ db DECO_GRIMER_DOLL ; 2c
+ db DECO_VOLTORB_DOLL ; 2d
+ db DECO_WEEDLE_DOLL ; 2e
+ db DECO_UNOWN_DOLL ; 2f
+ db DECO_GEODUDE_DOLL ; 30
+ db DECO_MACHOP_DOLL ; 31
+ db DECO_TENTACOOL_DOLL ; 32
+ db DECO_BIG_SNORLAX_DOLL ; 1a
+ db DECO_BIG_ONIX_DOLL ; 1b
+ db DECO_BIG_LAPRAS_DOLL ; 1c
+TrophyIDs:
+ db DECO_GOLD_TROPHY_DOLL ; 33
+ db DECO_SILVER_TROPHY_DOLL ; 34
+ db -1
diff --git a/data/decorations/mystery_gift_decos.asm b/data/decorations/mystery_gift_decos.asm
new file mode 100644
index 00000000..3b75c0a5
--- /dev/null
+++ b/data/decorations/mystery_gift_decos.asm
@@ -0,0 +1,39 @@
+MysteryGiftDecos:
+ 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
+.End
diff --git a/data/decorations/names.asm b/data/decorations/names.asm
new file mode 100644
index 00000000..3894bc7f
--- /dev/null
+++ b/data/decorations/names.asm
@@ -0,0 +1,28 @@
+DecorationNames:
+; entries correspond to constants/deco_constants.asm
+ db "CANCEL@"
+ db "PUT IT AWAY@"
+ db "MAGNAPLANT@"
+ db "TROPICPLANT@"
+ db "JUMBOPLANT@"
+ db "TOWN MAP@"
+ db "NES@"
+ db "SUPER NES@"
+ db "NINTENDO64@"
+ db "VIRTUAL BOY@"
+ db "GOLD TROPHY@"
+ db "SILVER TROPHY@"
+ db "SURF PIKACHU DOLL@"
+ db " BED@"
+ db " CARPET@"
+ db " POSTER@"
+ db " DOLL@"
+ db "BIG @"
+ db "FEATHERY@"
+ db "PIKACHU@"
+ db "PINK@"
+ db "POLKADOT@"
+ db "RED@"
+ db "BLUE@"
+ db "YELLOW@"
+ db "GREEN@"
diff --git a/data/default_options.asm b/data/default_options.asm
new file mode 100644
index 00000000..00fcfa10
--- /dev/null
+++ b/data/default_options.asm
@@ -0,0 +1,16 @@
+DefaultOptions:
+; wOptions: med text speed
+ db TEXT_DELAY_MED
+; wSaveFileExists: no
+ db FALSE
+; wTextboxFrame: frame 1
+ db FRAME_1
+; wTextboxFlags: use text speed
+ db 1 << FAST_TEXT_DELAY_F
+; wGBPrinterBrightness: normal
+ db GBPRINTER_NORMAL
+; wOptions2: menu account on
+ db 1 << MENU_ACCOUNT
+
+ db $00
+ db $00
diff --git a/data/engine_flags.asm b/data/engine_flags.asm
new file mode 100644
index 00000000..87e15afb
--- /dev/null
+++ b/data/engine_flags.asm
@@ -0,0 +1,120 @@
+engine_flag: MACRO
+; location, bit
+; (all locations are in WRAM bank 1)
+ dwb \1 + (\2 / 8), 1 << (\2 % 8)
+ENDM
+
+EngineFlags:
+; entries correspond to ENGINE_* constants
+
+ ; pokegear
+ engine_flag wPokegearFlags, POKEGEAR_RADIO_CARD_F ; $0
+ engine_flag wPokegearFlags, POKEGEAR_MAP_CARD_F
+ engine_flag wPokegearFlags, POKEGEAR_PHONE_CARD_F
+ engine_flag wPokegearFlags, POKEGEAR_EXPN_CARD_F
+ engine_flag wPokegearFlags, POKEGEAR_OBTAINED_F
+
+ ; day-care
+ engine_flag wDayCareMan, DAYCAREMAN_HAS_EGG_F
+ engine_flag wDayCareMan, DAYCAREMAN_HAS_MON_F
+ engine_flag wDayCareLady, DAYCARELADY_HAS_MON_F
+
+ engine_flag wMomSavingMoney, MOM_SAVING_SOME_MONEY_F ; $8
+ engine_flag wMomSavingMoney, MOM_ACTIVE_F
+
+ engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
+
+ engine_flag wStatusFlags, STATUSFLAGS_POKEDEX_F
+ engine_flag wStatusFlags, STATUSFLAGS_UNOWN_DEX_F
+ engine_flag wStatusFlags, STATUSFLAGS_CAUGHT_POKERUS_F
+ engine_flag wStatusFlags, STATUSFLAGS_ROCKET_SIGNAL_F
+ engine_flag wStatusFlags, STATUSFLAGS_HALL_OF_FAME_F
+
+ engine_flag wStatusFlags2, STATUSFLAGS2_BUG_CONTEST_TIMER_F ; $10
+ engine_flag wStatusFlags2, STATUSFLAGS2_SAFARI_GAME_F
+ engine_flag wStatusFlags2, STATUSFLAGS2_ROCKETS_IN_RADIO_TOWER_F
+ engine_flag wStatusFlags2, STATUSFLAGS2_BIKE_SHOP_CALL_F
+ engine_flag wStatusFlags2, STATUSFLAGS2_UNUSED_5_F
+ engine_flag wStatusFlags2, STATUSFLAGS2_REACHED_GOLDENROD_F
+ engine_flag wStatusFlags2, STATUSFLAGS2_ROCKETS_IN_MAHOGANY_F
+
+ engine_flag wBikeFlags, BIKEFLAGS_STRENGTH_ACTIVE_F
+ engine_flag wBikeFlags, BIKEFLAGS_ALWAYS_ON_BIKE_F ; $18
+ engine_flag wBikeFlags, BIKEFLAGS_DOWNHILL_F
+
+ engine_flag wJohtoBadges, ZEPHYRBADGE
+ engine_flag wJohtoBadges, HIVEBADGE
+ engine_flag wJohtoBadges, PLAINBADGE
+ engine_flag wJohtoBadges, FOGBADGE
+ engine_flag wJohtoBadges, MINERALBADGE
+ engine_flag wJohtoBadges, STORMBADGE
+ engine_flag wJohtoBadges, GLACIERBADGE ; $20
+ engine_flag wJohtoBadges, RISINGBADGE
+
+ engine_flag wKantoBadges, BOULDERBADGE
+ engine_flag wKantoBadges, CASCADEBADGE
+ engine_flag wKantoBadges, THUNDERBADGE
+ engine_flag wKantoBadges, RAINBOWBADGE
+ engine_flag wKantoBadges, SOULBADGE
+ engine_flag wKantoBadges, MARSHBADGE
+ engine_flag wKantoBadges, VOLCANOBADGE ; $28
+ engine_flag wKantoBadges, EARTHBADGE
+
+ ; unown sets (see data/wild/unlocked_unowns.asm)
+ engine_flag wUnlockedUnowns, 0 ; A-K
+ engine_flag wUnlockedUnowns, 1 ; L-R
+ engine_flag wUnlockedUnowns, 2 ; S-W
+ engine_flag wUnlockedUnowns, 3 ; X-Z
+ engine_flag wUnlockedUnowns, 4 ; unused
+ engine_flag wUnlockedUnowns, 5 ; unused
+ engine_flag wUnlockedUnowns, 6 ; unused ; $30
+ engine_flag wUnlockedUnowns, 7 ; unused
+
+ ; fly
+ engine_flag wVisitedSpawns, SPAWN_HOME
+ engine_flag wVisitedSpawns, SPAWN_DEBUG
+ engine_flag wVisitedSpawns, SPAWN_PALLET
+ engine_flag wVisitedSpawns, SPAWN_VIRIDIAN
+ engine_flag wVisitedSpawns, SPAWN_PEWTER
+ engine_flag wVisitedSpawns, SPAWN_CERULEAN
+ engine_flag wVisitedSpawns, SPAWN_ROCK_TUNNEL ; $38
+ engine_flag wVisitedSpawns, SPAWN_VERMILION
+ engine_flag wVisitedSpawns, SPAWN_LAVENDER
+ engine_flag wVisitedSpawns, SPAWN_SAFFRON
+ engine_flag wVisitedSpawns, SPAWN_CELADON
+ engine_flag wVisitedSpawns, SPAWN_FUCHSIA
+ engine_flag wVisitedSpawns, SPAWN_CINNABAR
+ engine_flag wVisitedSpawns, SPAWN_INDIGO
+ engine_flag wVisitedSpawns, SPAWN_NEW_BARK ; $40
+ engine_flag wVisitedSpawns, SPAWN_CHERRYGROVE
+ engine_flag wVisitedSpawns, SPAWN_VIOLET
+ engine_flag wVisitedSpawns, SPAWN_AZALEA
+ engine_flag wVisitedSpawns, SPAWN_CIANWOOD
+ engine_flag wVisitedSpawns, SPAWN_GOLDENROD
+ engine_flag wVisitedSpawns, SPAWN_OLIVINE
+ engine_flag wVisitedSpawns, SPAWN_ECRUTEAK
+ engine_flag wVisitedSpawns, SPAWN_MAHOGANY ; $48
+ engine_flag wVisitedSpawns, SPAWN_LAKE_OF_RAGE
+ engine_flag wVisitedSpawns, SPAWN_BLACKTHORN
+ engine_flag wVisitedSpawns, SPAWN_MT_SILVER
+ engine_flag wVisitedSpawns, NUM_SPAWNS ; unused
+
+ engine_flag wLuckyNumberShowFlag, LUCKYNUMBERSHOW_GAME_OVER_F
+
+ engine_flag wStatusFlags2, STATUSFLAGS2_UNUSED_3_F
+
+ engine_flag wDailyFlags1, DAILYFLAGS1_KURT_MAKING_BALLS_F
+ engine_flag wDailyFlags1, DAILYFLAGS1_BUG_CONTEST_F ; $50
+ engine_flag wDailyFlags1, DAILYFLAGS1_SWARM_F
+ engine_flag wDailyFlags1, DAILYFLAGS1_TIME_CAPSULE_F
+ engine_flag wDailyFlags1, DAILYFLAGS1_ALL_FRUIT_TREES_F
+ engine_flag wDailyFlags1, DAILYFLAGS1_GOT_SHUCKIE_TODAY_F
+ engine_flag wDailyFlags1, DAILYFLAGS1_GOLDENROD_UNDERGROUND_BARGAIN_F
+ engine_flag wDailyFlags1, DAILYFLAGS1_TRAINER_HOUSE_F
+
+ engine_flag wDailyFlags2, DAILYFLAGS2_MT_MOON_SQUARE_CLEFAIRY_F
+ engine_flag wDailyFlags2, DAILYFLAGS2_UNION_CAVE_LAPRAS_F ; $58
+ engine_flag wDailyFlags2, DAILYFLAGS2_GOLDENROD_UNDERGROUND_GOT_HAIRCUT_F
+ engine_flag wDailyFlags2, DAILYFLAGS2_GOLDENROD_DEPT_STORE_TM27_RETURN_F
+ engine_flag wDailyFlags2, DAILYFLAGS2_DAISYS_GROOMING_F
+ engine_flag wDailyFlags2, DAILYFLAGS2_INDIGO_PLATEAU_RIVAL_FIGHT_F
diff --git a/data/events/bug_contest_flags.asm b/data/events/bug_contest_flags.asm
new file mode 100644
index 00000000..734bf11f
--- /dev/null
+++ b/data/events/bug_contest_flags.asm
@@ -0,0 +1,12 @@
+BugCatchingContestantEventFlagTable:
+; there are NUM_BUG_CONTESTANTS entries
+ dw EVENT_BUG_CATCHING_CONTESTANT_1A
+ dw EVENT_BUG_CATCHING_CONTESTANT_2A
+ dw EVENT_BUG_CATCHING_CONTESTANT_3A
+ dw EVENT_BUG_CATCHING_CONTESTANT_4A
+ dw EVENT_BUG_CATCHING_CONTESTANT_5A
+ dw EVENT_BUG_CATCHING_CONTESTANT_6A
+ dw EVENT_BUG_CATCHING_CONTESTANT_7A
+ dw EVENT_BUG_CATCHING_CONTESTANT_8A
+ dw EVENT_BUG_CATCHING_CONTESTANT_9A
+ dw EVENT_BUG_CATCHING_CONTESTANT_10A
diff --git a/data/events/bug_contest_winners.asm b/data/events/bug_contest_winners.asm
new file mode 100644
index 00000000..e29ce043
--- /dev/null
+++ b/data/events/bug_contest_winners.asm
@@ -0,0 +1,79 @@
+BugContestantPointers:
+; there are NUM_BUG_CONTESTANTS + 1 entries
+ dw BugContestant_BugCatcherDon ; this reverts back to the player
+ dw BugContestant_BugCatcherDon
+ dw BugContestant_BugCatcherEd
+ dw BugContestant_CooltrainerMNick
+ dw BugContestant_PokefanMWilliam
+ dw BugContestant_BugCatcherBenny
+ dw BugContestant_CamperBarry
+ dw BugContestant_PicnickerCindy
+ dw BugContestant_BugCatcherJosh
+ dw BugContestant_YoungsterSamuel
+ dw BugContestant_SchoolboyKipp
+
+; contestant format:
+; db class, id
+; dbw 1st-place mon, score
+; dbw 2nd-place mon, score
+; dbw 3rd-place mon, score
+
+BugContestant_BugCatcherDon:
+ db BUG_CATCHER, DON
+ dbw KAKUNA, 300
+ dbw METAPOD, 285
+ dbw CATERPIE, 226
+
+BugContestant_BugCatcherEd:
+ db BUG_CATCHER, ED
+ dbw BUTTERFREE, 286
+ dbw BUTTERFREE, 251
+ dbw CATERPIE, 237
+
+BugContestant_CooltrainerMNick:
+ db COOLTRAINERM, NICK
+ dbw SCYTHER, 357
+ dbw BUTTERFREE, 349
+ dbw PINSIR, 368
+
+BugContestant_PokefanMWilliam:
+ db POKEFANM, WILLIAM
+ dbw PINSIR, 332
+ dbw BUTTERFREE, 324
+ dbw VENONAT, 321
+
+BugContestant_BugCatcherBenny:
+ db BUG_CATCHER, BUG_CATCHER_BENNY
+ dbw BUTTERFREE, 318
+ dbw WEEDLE, 295
+ dbw CATERPIE, 285
+
+BugContestant_CamperBarry:
+ db CAMPER, BARRY
+ dbw PINSIR, 366
+ dbw VENONAT, 329
+ dbw KAKUNA, 314
+
+BugContestant_PicnickerCindy:
+ db PICNICKER, CINDY
+ dbw BUTTERFREE, 341
+ dbw METAPOD, 301
+ dbw CATERPIE, 264
+
+BugContestant_BugCatcherJosh:
+ db BUG_CATCHER, JOSH
+ dbw SCYTHER, 326
+ dbw BUTTERFREE, 292
+ dbw METAPOD, 282
+
+BugContestant_YoungsterSamuel:
+ db YOUNGSTER, SAMUEL
+ dbw WEEDLE, 270
+ dbw PINSIR, 282
+ dbw CATERPIE, 251
+
+BugContestant_SchoolboyKipp:
+ db SCHOOLBOY, KIPP
+ dbw VENONAT, 267
+ dbw PARAS, 254
+ dbw KAKUNA, 259
diff --git a/data/events/collision_stdscripts.asm b/data/events/collision_stdscripts.asm
index 7e208d2f..dff26dd8 100755
--- a/data/events/collision_stdscripts.asm
+++ b/data/events/collision_stdscripts.asm
@@ -10,4 +10,4 @@ TileCollisionStdScripts:
dbw COLL_TV, tv
dbw COLL_WINDOW, window
dbw COLL_INCENSE_BURNER, incenseburner
- db -1 ; end \ No newline at end of file
+ db -1 ; end
diff --git a/data/events/elevator_floors.asm b/data/events/elevator_floors.asm
new file mode 100644
index 00000000..abc793cf
--- /dev/null
+++ b/data/events/elevator_floors.asm
@@ -0,0 +1,35 @@
+ElevatorFloorNames:
+; entries correspond to FLOOR_* constants
+ dw .B4F
+ dw .B3F
+ dw .B2F
+ dw .B1F
+ dw ._1F
+ dw ._2F
+ dw ._3F
+ dw ._4F
+ dw ._5F
+ dw ._6F
+ dw ._7F
+ dw ._8F
+ dw ._9F
+ dw ._10F
+ dw ._11F
+ dw .ROOF
+
+.B4F: db "B4F@"
+.B3F: db "B3F@"
+.B2F: db "B2F@"
+.B1F: db "B1F@"
+._1F: db "1F@"
+._2F: db "2F@"
+._3F: db "3F@"
+._4F: db "4F@"
+._5F: db "5F@"
+._6F: db "6F@"
+._7F: db "7F@"
+._8F: db "8F@"
+._9F: db "9F@"
+._10F: db "10F@"
+._11F: db "11F@"
+.ROOF: db "ROOF@"
diff --git a/data/events/field_move_blocks.asm b/data/events/field_move_blocks.asm
new file mode 100644
index 00000000..fea80f53
--- /dev/null
+++ b/data/events/field_move_blocks.asm
@@ -0,0 +1,52 @@
+CutTreeBlockPointers:
+; tileset, block list pointer
+ dbw TILESET_JOHTO, .johto
+ dbw TILESET_JOHTO_MODERN, .johto_modern
+ dbw TILESET_KANTO, .kanto
+ dbw TILESET_PARK, .park
+ dbw TILESET_FOREST, .forest
+ db -1 ; end
+
+.johto:
+; facing block, replacement block, animation
+ db $03, $02, 1 ; grass
+ db $5b, $3c, 0 ; tree
+ db $5f, $3d, 0 ; tree
+ db $63, $3f, 0 ; tree
+ db $67, $3e, 0 ; tree
+ db -1 ; end
+
+.johto_modern:
+; facing block, replacement block, animation
+ db $03, $02, $01 ; grass
+ db -1 ; end
+
+.kanto:
+; facing block, replacement block, animation
+ db $0b, $0a, 1 ; grass
+ db $32, $6d, 0 ; tree
+ db $33, $6c, 0 ; tree
+ db $34, $6f, 0 ; tree
+ db $35, $4c, 0 ; tree
+ db $60, $6e, 0 ; tree
+ db -1 ; end
+
+.park:
+; facing block, replacement block, animation
+ db $13, $03, 1 ; grass
+ db $03, $04, 1 ; grass
+ db -1 ; end
+
+.forest:
+; facing block, replacement block, animation
+ db $0f, $17, 0
+ db -1 ; end
+
+WhirlpoolBlockPointers:
+ dbw TILESET_JOHTO, .johto
+ db -1 ; end
+
+.johto:
+; facing block, replacement block, animation
+ db $07, $36, 0
+ db -1 ; end
diff --git a/data/events/happiness_changes.asm b/data/events/happiness_changes.asm
new file mode 100644
index 00000000..aa154e4c
--- /dev/null
+++ b/data/events/happiness_changes.asm
@@ -0,0 +1,21 @@
+HappinessChanges:
+; 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 (older brother) 1
+ db +3, +3, +1 ; Haircut (older brother) 2
+ db +5, +5, +2 ; Haircut (older brother) 3
+ db +1, +1, +1 ; Haircut (younger brother) 1
+ db +3, +3, +1 ; Haircut (younger brother) 2
+ db +10, +10, +4 ; Haircut (younger brother) 3
+ 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
diff --git a/data/events/happiness_probabilities.asm b/data/events/happiness_probabilities.asm
index 798c56fa..f67db07f 100644
--- a/data/events/happiness_probabilities.asm
+++ b/data/events/happiness_probabilities.asm
@@ -1,12 +1,12 @@
-HappinessData_YoungerHaircutBrother:
- db $4c, 2, HAPPINESS_YOUNGCUT1 ; 30% chance
- db $80, 3, HAPPINESS_YOUNGCUT2 ; 20% chance
- db $ff, 4, HAPPINESS_YOUNGCUT3 ; 50% chance
-
HappinessData_OlderHaircutBrother:
- db $9a, 2, HAPPINESS_OLDERCUT1 ; 60% chance
- db $4c, 3, HAPPINESS_OLDERCUT2 ; 10% chance
- db $ff, 4, HAPPINESS_OLDERCUT3 ; 30% chance
+ db 30 percent, 2, HAPPINESS_OLDERCUT1 ; 30% chance
+ db 50 percent + 1, 3, HAPPINESS_OLDERCUT2 ; 50% chance
+ db 100 percent, 4, HAPPINESS_OLDERCUT3 ; 20% chance
+
+HappinessData_YoungerHaircutBrother:
+ db 60 percent + 1, 2, HAPPINESS_YOUNGCUT1 ; 60% chance
+ db 30 percent, 3, HAPPINESS_YOUNGCUT2 ; 30% chance
+ db 100 percent, 4, HAPPINESS_YOUNGCUT3 ; 10% chance
HappinessData_DaisysGrooming:
- db $ff, 2, HAPPINESS_GROOMING ; 99.6% chance \ No newline at end of file
+ db 100 percent, 2, HAPPINESS_GROOMING ; 99.6% chance
diff --git a/data/events/pokedex_ratings.asm b/data/events/pokedex_ratings.asm
new file mode 100644
index 00000000..2a048860
--- /dev/null
+++ b/data/events/pokedex_ratings.asm
@@ -0,0 +1,27 @@
+rating: MACRO
+; count, sfx, text
+ dbww \1, \2, \3
+ENDM
+
+OakRatings:
+; if you caught at most this many, play this sound, load this text
+; (text is defined in engine/events/prof_oaks_pc.asm)
+ rating 9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
+ rating 19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
+ rating 34, SFX_DEX_FANFARE_20_49, OakRating03
+ rating 49, SFX_DEX_FANFARE_20_49, OakRating04
+ rating 64, SFX_DEX_FANFARE_50_79, OakRating05
+ rating 79, SFX_DEX_FANFARE_50_79, OakRating06
+ rating 94, SFX_DEX_FANFARE_80_109, OakRating07
+ rating 109, SFX_DEX_FANFARE_80_109, OakRating08
+ rating 124, SFX_CAUGHT_MON, OakRating09
+ rating 139, SFX_CAUGHT_MON, OakRating10
+ rating 154, SFX_DEX_FANFARE_140_169, OakRating11
+ rating 169, SFX_DEX_FANFARE_140_169, OakRating12
+ rating 184, SFX_DEX_FANFARE_170_199, OakRating13
+ rating 199, SFX_DEX_FANFARE_170_199, OakRating14
+ rating 214, SFX_DEX_FANFARE_200_229, OakRating15
+ rating 229, SFX_DEX_FANFARE_200_229, OakRating16
+ rating 239, SFX_DEX_FANFARE_230_PLUS, OakRating17
+ rating 248, SFX_DEX_FANFARE_230_PLUS, OakRating18
+ rating 255, SFX_DEX_FANFARE_230_PLUS, OakRating19
diff --git a/data/items/apricorn_balls.asm b/data/items/apricorn_balls.asm
new file mode 100644
index 00000000..814aeab2
--- /dev/null
+++ b/data/items/apricorn_balls.asm
@@ -0,0 +1,10 @@
+ApricornBalls:
+ ; apricorn, ball
+ db RED_APRICORN, LEVEL_BALL
+ db BLU_APRICORN, LURE_BALL
+ db YLW_APRICORN, MOON_BALL
+ db GRN_APRICORN, FRIEND_BALL
+ db WHT_APRICORN, FAST_BALL
+ db BLK_APRICORN, HEAVY_BALL
+ db PNK_APRICORN, LOVE_BALL
+ db -1
diff --git a/data/items/attributes.asm b/data/items/attributes.asm
new file mode 100644
index 00000000..1ed369f0
--- /dev/null
+++ b/data/items/attributes.asm
@@ -0,0 +1,521 @@
+item_attribute: MACRO
+; price, held effect, parameter, property, pocket, field menu, battle menu
+ dw \1
+ db \2, \3, \4, \5
+ dn \6, \7
+ENDM
+
+ItemAttributes:
+; entries correspond to item ids
+; MASTER_BALL
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; ULTRA_BALL
+ item_attribute 1200, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; BRIGHTPOWDER
+ item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; GREAT_BALL
+ item_attribute 600, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; POKE_BALL
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; TOWN_MAP
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BICYCLE
+ item_attribute 0, HELD_NONE, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; MOON_STONE
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; ANTIDOTE
+ item_attribute 100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; BURN_HEAL
+ item_attribute 250, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; ICE_HEAL
+ item_attribute 250, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; AWAKENING
+ item_attribute 250, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; PARLYZ_HEAL
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; FULL_RESTORE
+ item_attribute 3000, HELD_NONE, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; MAX_POTION
+ item_attribute 2500, HELD_NONE, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; HYPER_POTION
+ item_attribute 1200, HELD_NONE, 200, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; SUPER_POTION
+ item_attribute 700, HELD_NONE, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; POTION
+ item_attribute 300, HELD_NONE, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; ESCAPE_ROPE
+ item_attribute 550, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; REPEL
+ item_attribute 350, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
+; MAX_ELIXER
+ item_attribute 4500, HELD_NONE, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; FIRE_STONE
+ item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; THUNDERSTONE
+ item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; WATER_STONE
+ item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; ITEM_19
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; HP_UP
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; PROTEIN
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; IRON
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; CARBOS
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; LUCKY_PUNCH
+ item_attribute 10, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; CALCIUM
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; RARE_CANDY
+ item_attribute 4800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; X_ACCURACY
+ item_attribute 950, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; LEAF_STONE
+ item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; METAL_POWDER
+ item_attribute 10, HELD_METAL_POWDER, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; NUGGET
+ item_attribute 10000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; POKE_DOLL
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; FULL_HEAL
+ item_attribute 600, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; REVIVE
+ item_attribute 1500, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; MAX_REVIVE
+ item_attribute 4000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; GUARD_SPEC
+ item_attribute 700, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; SUPER_REPEL
+ item_attribute 500, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
+; MAX_REPEL
+ item_attribute 700, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
+; DIRE_HIT
+ item_attribute 650, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; ITEM_2D
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; FRESH_WATER
+ item_attribute 200, HELD_NONE, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; SODA_POP
+ item_attribute 300, HELD_NONE, 60, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; LEMONADE
+ item_attribute 350, HELD_NONE, 80, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; X_ATTACK
+ item_attribute 500, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; ITEM_32
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; X_DEFEND
+ item_attribute 550, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; X_SPEED
+ item_attribute 350, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; X_SPECIAL
+ item_attribute 350, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; COIN_CASE
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
+; ITEMFINDER
+ item_attribute 0, HELD_NONE, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; POKE_FLUTE
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; EXP_SHARE
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; OLD_ROD
+ item_attribute 0, HELD_NONE, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; GOOD_ROD
+ item_attribute 0, HELD_NONE, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; SILVER_LEAF
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SUPER_ROD
+ item_attribute 0, HELD_NONE, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; PP_UP
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; ETHER
+ item_attribute 1200, HELD_NONE, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; MAX_ETHER
+ item_attribute 2000, HELD_NONE, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; ELIXER
+ item_attribute 3000, HELD_NONE, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; RED_SCALE
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SECRETPOTION
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; S_S_TICKET
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MYSTERY_EGG
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_46
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SILVER_WING
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MOOMOO_MILK
+ item_attribute 500, HELD_NONE, 100, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; QUICK_CLAW
+ item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; PSNCUREBERRY
+ item_attribute 10, HELD_HEAL_POISON, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; GOLD_LEAF
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SOFT_SAND
+ item_attribute 100, HELD_GROUND_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SHARP_BEAK
+ item_attribute 100, HELD_FLYING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; PRZCUREBERRY
+ item_attribute 10, HELD_HEAL_PARALYZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; BURNT_BERRY
+ item_attribute 10, HELD_HEAL_FREEZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; ICE_BERRY
+ item_attribute 10, HELD_HEAL_BURN, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; POISON_BARB
+ item_attribute 100, HELD_POISON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; KINGS_ROCK
+ item_attribute 100, HELD_FLINCH, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BITTER_BERRY
+ item_attribute 10, HELD_HEAL_CONFUSION, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_PARTY
+; MINT_BERRY
+ item_attribute 10, HELD_HEAL_SLEEP, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; RED_APRICORN
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; TINYMUSHROOM
+ item_attribute 500, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BIG_MUSHROOM
+ item_attribute 5000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SILVERPOWDER
+ item_attribute 100, HELD_BUG_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BLU_APRICORN
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_5A
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; AMULET_COIN
+ item_attribute 100, HELD_AMULET_COIN, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; YLW_APRICORN
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; GRN_APRICORN
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; CLEANSE_TAG
+ item_attribute 200, HELD_CLEANSE_TAG, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MYSTIC_WATER
+ item_attribute 100, HELD_WATER_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; TWISTEDSPOON
+ item_attribute 100, HELD_PSYCHIC_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; WHT_APRICORN
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BLACKBELT_I
+ item_attribute 100, HELD_FIGHTING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BLK_APRICORN
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_64
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; PNK_APRICORN
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BLACKGLASSES
+ item_attribute 100, HELD_DARK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SLOWPOKETAIL
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; PINK_BOW
+ item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; STICK
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SMOKE_BALL
+ item_attribute 200, HELD_ESCAPE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; NEVERMELTICE
+ item_attribute 100, HELD_ICE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MAGNET
+ item_attribute 100, HELD_ELECTRIC_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MIRACLEBERRY
+ item_attribute 10, HELD_HEAL_STATUS, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; PEARL
+ item_attribute 1400, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BIG_PEARL
+ item_attribute 7500, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; EVERSTONE
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SPELL_TAG
+ item_attribute 100, HELD_GHOST_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; RAGECANDYBAR
+ item_attribute 300, HELD_NONE, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; ITEM_73
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_74
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MIRACLE_SEED
+ item_attribute 100, HELD_GRASS_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; THICK_CLUB
+ item_attribute 500, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; FOCUS_BAND
+ item_attribute 200, HELD_FOCUS_BAND, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_78
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ENERGYPOWDER
+ item_attribute 500, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; ENERGY_ROOT
+ item_attribute 800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; HEAL_POWDER
+ item_attribute 450, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; REVIVAL_HERB
+ item_attribute 2800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; HARD_STONE
+ item_attribute 100, HELD_ROCK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; LUCKY_EGG
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; CARD_KEY
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; MACHINE_PART
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_81
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; LOST_ITEM
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; STARDUST
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; STAR_PIECE
+ item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BASEMENT_KEY
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; PASS
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_87
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_88
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_89
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; CHARCOAL
+ item_attribute 9800, HELD_FIRE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BERRY_JUICE
+ item_attribute 100, HELD_BERRY, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; SCOPE_LENS
+ item_attribute 200, HELD_CRITICAL_UP, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_8D
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_8E
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; METAL_COAT
+ item_attribute 100, HELD_STEEL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; DRAGON_FANG
+ item_attribute 100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_91
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; LEFTOVERS
+ item_attribute 200, HELD_LEFTOVERS, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_93
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_94
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_95
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MYSTERYBERRY
+ item_attribute 10, HELD_RESTORE_PP, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; DRAGON_SCALE
+ item_attribute 2100, HELD_DRAGON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BERSERK_GENE
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_99
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_9A
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_9B
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SACRED_ASH
+ item_attribute 200, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; HEAVY_BALL
+ item_attribute 150, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; FLOWER_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; LEVEL_BALL
+ item_attribute 150, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; LURE_BALL
+ item_attribute 150, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; FAST_BALL
+ item_attribute 150, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; ITEM_A2
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; LIGHT_BALL
+ item_attribute 100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; FRIEND_BALL
+ item_attribute 150, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; MOON_BALL
+ item_attribute 150, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; LOVE_BALL
+ item_attribute 150, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; NORMAL_BOX
+ item_attribute 10, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
+; GORGEOUS_BOX
+ item_attribute 10, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
+; SUN_STONE
+ item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; POLKADOT_BOW
+ item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_AB
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; UP_GRADE
+ item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BERRY
+ item_attribute 10, HELD_BERRY, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; GOLD_BERRY
+ item_attribute 10, HELD_BERRY, 30, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
+; SQUIRTBOTTLE
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
+; ITEM_B0
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; PARK_BALL
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
+; RAINBOW_WING
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_B3
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BRICK_PIECE
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; SURF_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; LITEBLUEMAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; PORTRAITMAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; LOVELY_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; EON_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MORPH_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; BLUESKY_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MUSIC_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; MIRAGE_MAIL
+ item_attribute 50, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; ITEM_BE
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; TM01
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM02
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM03
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM04
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; ITEM_C3
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; TM05
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM06
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM07
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM08
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM09
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM10
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM11
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM12
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM13
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM14
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM15
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM16
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM17
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM18
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM19
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM20
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM21
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM22
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM23
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM24
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM25
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM26
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM27
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM28
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; ITEM_DC
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; TM29
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM30
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM31
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM32
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM33
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM34
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM35
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM36
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM37
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM38
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM39
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM40
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM41
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM42
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM43
+ item_attribute 1000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM44
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM45
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM46
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM47
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM48
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM49
+ item_attribute 3000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; TM50
+ item_attribute 2000, HELD_NONE, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; HM01
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; HM02
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; HM03
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; HM04
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; HM05
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; HM06
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; HM07
+ item_attribute 0, HELD_NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
+; ITEM_FA
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; $fb
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; $fc
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; $fd
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; $fe
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; $ff
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+; $00
+ item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
diff --git a/data/items/bargain_shop.asm b/data/items/bargain_shop.asm
new file mode 100644
index 00000000..a17db655
--- /dev/null
+++ b/data/items/bargain_shop.asm
@@ -0,0 +1,8 @@
+BargainShopData:
+ db 5
+ dbw NUGGET, 4500
+ dbw PEARL, 650
+ dbw BIG_PEARL, 3500
+ dbw STARDUST, 900
+ dbw STAR_PIECE, 4600
+ db -1
diff --git a/data/items/catch_rate_items.asm b/data/items/catch_rate_items.asm
new file mode 100644
index 00000000..9c39afac
--- /dev/null
+++ b/data/items/catch_rate_items.asm
@@ -0,0 +1,18 @@
+; Pokémon traded from RBY do not have held items, so GSC usually interprets the
+; catch rate as an item. However, if the catch rate appears in this table, the
+; item associated with the table entry is used instead.
+
+TimeCapsule_CatchRateItems:
+ db ITEM_19, LEFTOVERS
+ db ITEM_2D, BITTER_BERRY
+ db ITEM_32, GOLD_BERRY
+ db ITEM_5A, BERRY
+ db ITEM_64, BERRY
+ db ITEM_78, BERRY
+ db ITEM_87, BERRY
+ db ITEM_BE, BERRY
+ db ITEM_C3, BERRY
+ db ITEM_DC, BERRY
+ db ITEM_FA, BERRY
+ db -1, BERRY
+ db 0 ; end
diff --git a/data/items/descriptions.asm b/data/items/descriptions.asm
new file mode 100644
index 00000000..d259b364
--- /dev/null
+++ b/data/items/descriptions.asm
@@ -0,0 +1,1007 @@
+ItemDescriptions:
+; entries correspond to item ids
+ dw MasterBallDesc
+ dw UltraBallDesc
+ dw BrightpowderDesc
+ dw GreatBallDesc
+ dw PokeBallDesc
+ dw TeruSama1Desc
+ dw BicycleDesc
+ dw MoonStoneDesc
+ dw AntidoteDesc
+ dw BurnHealDesc
+ dw IceHealDesc
+ dw AwakeningDesc
+ dw ParlyzHealDesc
+ dw FullRestoreDesc
+ dw MaxPotionDesc
+ dw HyperPotionDesc
+ dw SuperPotionDesc
+ dw PotionDesc
+ dw EscapeRopeDesc
+ dw RepelDesc
+ dw MaxElixerDesc
+ dw FireStoneDesc
+ dw ThunderStoneDesc
+ dw WaterStoneDesc
+ dw TeruSama2Desc
+ dw HPUpDesc
+ dw ProteinDesc
+ dw IronDesc
+ dw CarbosDesc
+ dw LuckyPunchDesc
+ dw CalciumDesc
+ dw RareCandyDesc
+ dw XAccuracyDesc
+ dw LeafStoneDesc
+ dw MetalPowderDesc
+ dw NuggetDesc
+ dw PokeDollDesc
+ dw FullHealDesc
+ dw ReviveDesc
+ dw MaxReviveDesc
+ dw GuardSpecDesc
+ dw SuperRepelDesc
+ dw MaxRepelDesc
+ dw DireHitDesc
+ dw TeruSama3Desc
+ dw FreshWaterDesc
+ dw SodaPopDesc
+ dw LemonadeDesc
+ dw XAttackDesc
+ dw TeruSama4Desc
+ dw XDefendDesc
+ dw XSpeedDesc
+ dw XSpecialDesc
+ dw CoinCaseDesc
+ dw ItemfinderDesc
+ dw TeruSama5Desc
+ dw ExpShareDesc
+ dw OldRodDesc
+ dw GoodRodDesc
+ dw SilverLeafDesc
+ dw SuperRodDesc
+ dw PPUpDesc
+ dw EtherDesc
+ dw MaxEtherDesc
+ dw ElixerDesc
+ dw RedScaleDesc
+ dw SecretPotionDesc
+ dw SSTicketDesc
+ dw MysteryEggDesc
+ dw TeruSama6Desc
+ dw SilverWingDesc
+ dw MoomooMilkDesc
+ dw QuickClawDesc
+ dw PsnCureBerryDesc
+ dw GoldLeafDesc
+ dw SoftSandDesc
+ dw SharpBeakDesc
+ dw PrzCureBerryDesc
+ dw BurntBerryDesc
+ dw IceBerryDesc
+ dw PoisonBarbDesc
+ dw KingsRockDesc
+ dw BitterBerryDesc
+ dw MintBerryDesc
+ dw RedApricornDesc
+ dw TinyMushroomDesc
+ dw BigMushroomDesc
+ dw SilverPowderDesc
+ dw BluApricornDesc
+ dw TeruSama7Desc
+ dw AmuletCoinDesc
+ dw YlwApricornDesc
+ dw GrnApricornDesc
+ dw CleanseTagDesc
+ dw MysticWaterDesc
+ dw TwistedSpoonDesc
+ dw WhtApricornDesc
+ dw BlackbeltDesc
+ dw BlkApricornDesc
+ dw TeruSama8Desc
+ dw PnkApricornDesc
+ dw BlackGlassesDesc
+ dw SlowpokeTailDesc
+ dw PinkBowDesc
+ dw StickDesc
+ dw SmokeBallDesc
+ dw NeverMeltIceDesc
+ dw MagnetDesc
+ dw MiracleBerryDesc
+ dw PearlDesc
+ dw BigPearlDesc
+ dw EverStoneDesc
+ dw SpellTagDesc
+ dw RageCandyBarDesc
+ dw TeruSama9Desc
+ dw TeruSama10Desc
+ dw MiracleSeedDesc
+ dw ThickClubDesc
+ dw FocusBandDesc
+ dw TeruSama11Desc
+ dw EnergyPowderDesc
+ dw EnergyRootDesc
+ dw HealPowderDesc
+ dw RevivalHerbDesc
+ dw HardStoneDesc
+ dw LuckyEggDesc
+ dw CardKeyDesc
+ dw MachinePartDesc
+ dw TeruSama12Desc
+ dw LostItemDesc
+ dw StardustDesc
+ dw StarPieceDesc
+ dw BasementKeyDesc
+ dw PassDesc
+ dw TeruSama13Desc
+ dw TeruSama14Desc
+ dw TeruSama15Desc
+ dw CharcoalDesc
+ dw BerryJuiceDesc
+ dw ScopeLensDesc
+ dw TeruSama16Desc
+ dw TeruSama17Desc
+ dw MetalCoatDesc
+ dw DragonFangDesc
+ dw TeruSama18Desc
+ dw LeftoversDesc
+ dw TeruSama19Desc
+ dw TeruSama20Desc
+ dw TeruSama21Desc
+ dw MysteryBerryDesc
+ dw DragonScaleDesc
+ dw BerserkGeneDesc
+ dw TeruSama22Desc
+ dw TeruSama23Desc
+ dw TeruSama24Desc
+ dw SacredAshDesc
+ dw HeavyBallDesc
+ dw FlowerMailDesc
+ dw LevelBallDesc
+ dw LureBallDesc
+ dw FastBallDesc
+ dw TeruSama25Desc
+ dw LightBallDesc
+ dw FriendBallDesc
+ dw MoonBallDesc
+ dw LoveBallDesc
+ dw NormalBoxDesc
+ dw GorgeousBoxDesc
+ dw SunStoneDesc
+ dw PolkadotBowDesc
+ dw TeruSama26Desc
+ dw UpGradeDesc
+ dw BerryDesc
+ dw GoldBerryDesc
+ dw SquirtBottleDesc
+ dw TeruSama27Desc
+ dw ParkBallDesc
+ dw RainbowWingDesc
+ dw TeruSama28Desc
+ dw BrickPieceDesc
+ dw SurfMailDesc
+ dw LiteBlueMailDesc
+ dw PortraitMailDesc
+ dw LovelyMailDesc
+ dw EonMailDesc
+ dw MorphMailDesc
+ dw BlueSkyMailDesc
+ dw MusicMailDesc
+ dw MirageMailDesc
+ dw TeruSama29Desc
+ dw TeruSama30Desc
+ dw TeruSama30Desc
+ dw TeruSama30Desc
+ dw TeruSama30Desc
+ dw TeruSama30Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama31Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama32Desc
+ dw TeruSama33Desc
+ dw TeruSama34Desc
+ dw TeruSama35Desc
+ dw TeruSama36Desc
+ dw TeruSama37Desc
+ dw TeruSama37Desc
+
+MasterBallDesc:
+ db "The best BALL. It"
+ next "never misses.@"
+
+UltraBallDesc:
+ db "A BALL with a high"
+ next "rate of success.@"
+
+BrightpowderDesc:
+ db "Lowers the foe's"
+ next "accuracy. (HOLD)@"
+
+GreatBallDesc:
+ db "A BALL with a de-"
+ next "cent success rate.@"
+
+PokeBallDesc:
+ db "An item for catch-"
+ next "ing #MON.@"
+
+TeruSama1Desc:
+ db "?@"
+
+BicycleDesc:
+ db "A collapsible bike"
+ next "for fast movement.@"
+
+MoonStoneDesc:
+ db "Evolves certain"
+ next "kinds of #MON.@"
+
+AntidoteDesc:
+ db "Cures poisoned"
+ next "#MON.@"
+
+BurnHealDesc:
+ db "Heals burned"
+ next "#MON.@"
+
+IceHealDesc:
+ db "Defrosts frozen"
+ next "#MON.@"
+
+AwakeningDesc:
+ db "Awakens sleeping"
+ next "#MON.@"
+
+ParlyzHealDesc:
+ db "Heals paralyzed"
+ next "#MON.@"
+
+FullRestoreDesc:
+ db "Fully restores HP"
+ next "& status.@"
+
+MaxPotionDesc:
+ db "Fully restores"
+ next "#MON HP.@"
+
+HyperPotionDesc:
+ db "Restores #MON"
+ next "HP by 200.@"
+
+SuperPotionDesc:
+ db "Restores #MON"
+ next "HP by 50.@"
+
+PotionDesc:
+ db "Restores #MON"
+ next "HP by 20.@"
+
+EscapeRopeDesc:
+ db "Use for escaping"
+ next "from caves, etc.@"
+
+RepelDesc:
+ db "Repels weak #-"
+ next "MON for 100 steps.@"
+
+MaxElixerDesc:
+ db "Fully restores the"
+ next "PP of one #MON.@"
+
+FireStoneDesc:
+ db "Evolves certain"
+ next "kinds of #MON.@"
+
+ThunderStoneDesc:
+ db "Evolves certain"
+ next "kinds of #MON.@"
+
+WaterStoneDesc:
+ db "Evolves certain"
+ next "kinds of #MON.@"
+
+TeruSama2Desc:
+ db "?@"
+
+HPUpDesc:
+ db "Raises the HP of"
+ next "one #MON.@"
+
+ProteinDesc:
+ db "Raises ATTACK of"
+ next "one #MON.@"
+
+IronDesc:
+ db "Raises DEFENSE of"
+ next "one #MON.@"
+
+CarbosDesc:
+ db "Raises SPEED of"
+ next "one #MON.@"
+
+LuckyPunchDesc:
+ db "Ups critical hit"
+ next "ratio of CHANSEY.@"
+
+CalciumDesc:
+ db "Ups SPECIAL stats"
+ next "of one #MON.@"
+
+RareCandyDesc:
+ db "Raises level of a"
+ next "#MON by one.@"
+
+XAccuracyDesc:
+ db "Raises accuracy."
+ next "(1 BTL)@"
+
+LeafStoneDesc:
+ db "Evolves certain"
+ next "kinds of #MON.@"
+
+MetalPowderDesc:
+ db "Raises DEFENSE of"
+ next "DITTO. (HOLD)@"
+
+NuggetDesc:
+ db "Made of pure gold."
+ next "Sell high.@"
+
+PokeDollDesc:
+ db "Use to escape from"
+ next "a wild #MON.@"
+
+FullHealDesc:
+ db "Eliminates all"
+ next "status problems.@"
+
+ReviveDesc:
+ db "Restores a fainted"
+ next "#MON to 1/2 HP.@"
+
+MaxReviveDesc:
+ db "Fully restores a"
+ next "fainted #MON.@"
+
+GuardSpecDesc:
+ db "Prevents stat"
+ next "reduction. (1 BTL)@"
+
+SuperRepelDesc:
+ db "Repels weak #-"
+ next "MON for 200 steps.@"
+
+MaxRepelDesc:
+ db "Repels weak #-"
+ next "MON for 250 steps.@"
+
+DireHitDesc:
+ db "Ups critical hit"
+ next "ratio. (1 BTL)@"
+
+TeruSama3Desc:
+ db "?@"
+
+FreshWaterDesc:
+ db "Restores #MON"
+ next "HP by 50.@"
+
+SodaPopDesc:
+ db "Restores #MON"
+ next "HP by 60.@"
+
+LemonadeDesc:
+ db "Restores #MON"
+ next "HP by 80.@"
+
+XAttackDesc:
+ db "Raises ATTACK."
+ next "(1 BTL)@"
+
+TeruSama4Desc:
+ db "?@"
+
+XDefendDesc:
+ db "Raises DEFENSE."
+ next "(1 BTL)@"
+
+XSpeedDesc:
+ db "Raises SPEED."
+ next "(1 BTL)@"
+
+XSpecialDesc:
+ db "Raises SPECIAL"
+ next "stats. (1 BTL)@"
+
+CoinCaseDesc:
+ db "Holds up to 9,999"
+ next "game coins.@"
+
+ItemfinderDesc:
+ db "Checks for unseen"
+ next "items in the area.@"
+
+TeruSama5Desc:
+ db "?@"
+
+ExpShareDesc:
+ db "Shares battle EXP."
+ next "points. (HOLD)@"
+
+OldRodDesc:
+ db "Use by water to"
+ next "fish for #MON.@"
+
+GoodRodDesc:
+ db "A good ROD for"
+ next "catching #MON.@"
+
+SilverLeafDesc:
+ db "A strange, silver-"
+ next "colored leaf.@"
+
+SuperRodDesc:
+ db "The best ROD for"
+ next "catching #MON.@"
+
+PPUpDesc:
+ db "Raises max PP of"
+ next "a selected move.@"
+
+EtherDesc:
+ db "Restores PP of one"
+ next "move by 10.@"
+
+MaxEtherDesc:
+ db "Fully restores PP"
+ next "of one move.@"
+
+ElixerDesc:
+ db "Restores PP of all"
+ next "moves by 10.@"
+
+RedScaleDesc:
+ db "A scale from the"
+ next "red GYARADOS.@"
+
+SecretPotionDesc:
+ db "Fully heals any"
+ next "#MON.@"
+
+SSTicketDesc:
+ db "A ticket for the"
+ next "S.S.AQUA.@"
+
+MysteryEggDesc:
+ db "An EGG obtained"
+ next "from MR.#MON.@"
+
+TeruSama6Desc:
+ db "?@"
+
+SilverWingDesc:
+ db "A strange, silver-"
+ next "colored feather.@"
+
+MoomooMilkDesc:
+ db "Restores #MON"
+ next "HP by 100.@"
+
+QuickClawDesc:
+ db "Raises 1st strike"
+ next "ratio. (HOLD)@"
+
+PsnCureBerryDesc:
+ db "A self-cure for"
+ next "poison. (HOLD)@"
+
+GoldLeafDesc:
+ db "A strange, gold-"
+ next "colored leaf.@"
+
+SoftSandDesc:
+ db "Powers up ground-"
+ next "type moves. (HOLD)@"
+
+SharpBeakDesc:
+ db "Powers up flying-"
+ next "type moves. (HOLD)@"
+
+PrzCureBerryDesc:
+ db "A self-cure for"
+ next "paralysis. (HOLD)@"
+
+BurntBerryDesc:
+ db "A self-cure for"
+ next "freezing. (HOLD)@"
+
+IceBerryDesc:
+ db "A self-heal for a"
+ next "burn. (HOLD)@"
+
+PoisonBarbDesc:
+ db "Powers up poison-"
+ next "type moves. (HOLD)@"
+
+KingsRockDesc:
+ db "May make the foe"
+ next "flinch. (HOLD)@"
+
+BitterBerryDesc:
+ db "A self-cure for"
+ next "confusion. (HOLD)@"
+
+MintBerryDesc:
+ db "A self-awakening"
+ next "for sleep. (HOLD)@"
+
+RedApricornDesc:
+ db "A red APRICORN.@"
+
+TinyMushroomDesc:
+ db "An ordinary mush-"
+ next "room. Sell low.@"
+
+BigMushroomDesc:
+ db "A rare mushroom."
+ next "Sell high.@"
+
+SilverPowderDesc:
+ db "Powers up bug-type"
+ next "moves. (HOLD)@"
+
+BluApricornDesc:
+ db "A blue APRICORN.@"
+
+TeruSama7Desc:
+ db "?@"
+
+AmuletCoinDesc:
+ db "Doubles monetary"
+ next "earnings. (HOLD)@"
+
+YlwApricornDesc:
+ db "A yellow APRICORN.@"
+
+GrnApricornDesc:
+ db "A green APRICORN.@"
+
+CleanseTagDesc:
+ db "Helps repel wild"
+ next "#MON. (HOLD)@"
+
+MysticWaterDesc:
+ db "Powers up water-"
+ next "type moves. (HOLD)@"
+
+TwistedSpoonDesc:
+ db "Powers up psychic-"
+ next "type moves. (HOLD)@"
+
+WhtApricornDesc:
+ db "A white APRICORN.@"
+
+BlackbeltDesc:
+ db "Boosts fighting-"
+ next "type moves. (HOLD)@"
+
+BlkApricornDesc:
+ db "A black APRICORN."
+ next "@"
+
+TeruSama8Desc:
+ db "?@"
+
+PnkApricornDesc:
+ db "A pink APRICORN."
+ next "@"
+
+BlackGlassesDesc:
+ db "Powers up dark-"
+ next "type moves. (HOLD)@"
+
+SlowpokeTailDesc:
+ db "Very tasty. Sell"
+ next "high.@"
+
+PinkBowDesc:
+ db "Powers up normal-"
+ next "type moves. (HOLD)@"
+
+StickDesc:
+ db "An ordinary stick."
+ next "Sell low.@"
+
+SmokeBallDesc:
+ db "Escape from wild"
+ next "#MON. (HOLD)@"
+
+NeverMeltIceDesc:
+ db "Powers up ice-type"
+ next "moves. (HOLD)@"
+
+MagnetDesc:
+ db "Boosts electric-"
+ next "type moves. (HOLD)@"
+
+MiracleBerryDesc:
+ db "Cures all status"
+ next "problems. (HOLD)@"
+
+PearlDesc:
+ db "A beautiful pearl."
+ next "Sell low.@"
+
+BigPearlDesc:
+ db "A big, beautiful"
+ next "pearl. Sell high.@"
+
+EverStoneDesc:
+ db "Stops evolution."
+ next "(HOLD)@"
+
+SpellTagDesc:
+ db "Powers up ghost-"
+ next "type moves. (HOLD)@"
+
+RageCandyBarDesc:
+ db "Restores #MON"
+ next "HP by 20.@"
+
+TeruSama9Desc:
+ db "?@"
+
+TeruSama10Desc:
+ db "?@"
+
+MiracleSeedDesc:
+ db "Powers up grass-"
+ next "type moves. (HOLD)@"
+
+ThickClubDesc:
+ db "A bone of some"
+ next "sort. Sell low.@"
+
+FocusBandDesc:
+ db "May prevent faint-"
+ next "ing. (HOLD)@"
+
+TeruSama11Desc:
+ db "?@"
+
+EnergyPowderDesc:
+ db "Restores #MON"
+ next "HP by 50. Bitter.@"
+
+EnergyRootDesc:
+ db "Restores #MON"
+ next "HP by 200. Bitter.@"
+
+HealPowderDesc:
+ db "Cures all status"
+ next "problems. Bitter.@"
+
+RevivalHerbDesc:
+ db "Revives fainted"
+ next "#MON. Bitter.@"
+
+HardStoneDesc:
+ db "Powers up rock-"
+ next "type moves. (HOLD)@"
+
+LuckyEggDesc:
+ db "Earns extra EXP."
+ next "points. (HOLD)@"
+
+CardKeyDesc:
+ db "Opens shutters in"
+ next "the RADIO TOWER.@"
+
+MachinePartDesc:
+ db "A machine part for"
+ next "the POWER PLANT.@"
+
+TeruSama12Desc:
+ db "?@"
+
+LostItemDesc:
+ db "The # DOLL lost"
+ next "by the COPYCAT.@"
+
+StardustDesc:
+ db "Pretty, red sand."
+ next "Sell high.@"
+
+StarPieceDesc:
+ db "A hunk of red gem."
+ next "Sell very high.@"
+
+BasementKeyDesc:
+ db "Opens doors.@"
+
+PassDesc:
+ db "A ticket for the"
+ next "MAGNET TRAIN.@"
+
+TeruSama13Desc:
+ db "?@"
+
+TeruSama14Desc:
+ db "?@"
+
+TeruSama15Desc:
+ db "?@"
+
+CharcoalDesc:
+ db "Powers up fire-"
+ next "type moves. (HOLD)@"
+
+BerryJuiceDesc:
+ db "Restores #MON"
+ next "HP by 20.@"
+
+ScopeLensDesc:
+ db "Raises critical"
+ next "hit ratio. (HOLD)@"
+
+TeruSama16Desc:
+ db "?@"
+
+TeruSama17Desc:
+ db "?@"
+
+MetalCoatDesc:
+ db "Powers up steel-"
+ next "type moves. (HOLD)@"
+
+DragonFangDesc:
+ db "Powers up dragon-"
+ next "type moves. (HOLD)@"
+
+TeruSama18Desc:
+ db "?@"
+
+LeftoversDesc:
+ db "Restores HP during"
+ next "battle. (HOLD)@"
+
+TeruSama19Desc:
+ db "?@"
+
+TeruSama20Desc:
+ db "?@"
+
+TeruSama21Desc:
+ db "?@"
+
+MysteryBerryDesc:
+ db "A self-restore"
+ next "for PP. (HOLD)@"
+
+DragonScaleDesc:
+ db "A rare dragon-type"
+ next "item.@"
+
+BerserkGeneDesc:
+ db "Boosts ATTACK but"
+ next "causes confusion.@"
+
+TeruSama22Desc:
+ db "?@"
+
+TeruSama23Desc:
+ db "?@"
+
+TeruSama24Desc:
+ db "?@"
+
+SacredAshDesc:
+ db "Fully revives all"
+ next "fainted #MON.@"
+
+HeavyBallDesc:
+ db "A BALL for catch-"
+ next "ing heavy #MON.@"
+
+FlowerMailDesc:
+ db "Flower-print MAIL."
+ next "(HOLD)@"
+
+LevelBallDesc:
+ db "A BALL for lower-"
+ next "level #MON.@"
+
+LureBallDesc:
+ db "A BALL for #MON"
+ next "hooked by a ROD.@"
+
+FastBallDesc:
+ db "A BALL for catch-"
+ next "ing fast #MON.@"
+
+TeruSama25Desc:
+ db "?@"
+
+LightBallDesc:
+ db "An odd, electrical"
+ next "orb. (HOLD)@"
+
+FriendBallDesc:
+ db "A BALL that makes"
+ next "#MON friendly.@"
+
+MoonBallDesc:
+ db "A BALL for MOON"
+ next "STONE evolvers.@"
+
+LoveBallDesc:
+ db "For catching the"
+ next "opposite gender.@"
+
+NormalBoxDesc:
+ db "Open it and see"
+ next "what's inside.@"
+
+GorgeousBoxDesc:
+ db "Open it and see"
+ next "what's inside.@"
+
+SunStoneDesc:
+ db "Evolves certain"
+ next "kinds of #MON.@"
+
+PolkadotBowDesc:
+ db "Powers up normal-"
+ next "type moves. (HOLD)@"
+
+TeruSama26Desc:
+ db "?@"
+
+UpGradeDesc:
+ db "A mysterious box"
+ next "made by SILPH CO.@"
+
+BerryDesc:
+ db "A self-restore"
+ next "item. (10HP, HOLD)@"
+
+GoldBerryDesc:
+ db "A self-restore"
+ next "item. (30HP, HOLD)@"
+
+SquirtBottleDesc:
+ db "A bottle used for"
+ next "watering plants.@"
+
+TeruSama27Desc:
+ db "?@"
+
+ParkBallDesc:
+ db "The Bug-Catching"
+ next "Contest BALL.@"
+
+RainbowWingDesc:
+ db "A mystical feather"
+ next "of rainbow colors.@"
+
+TeruSama28Desc:
+ db "?@"
+
+BrickPieceDesc:
+ db "A rare chunk of"
+ next "brick.@"
+
+SurfMailDesc:
+ db "LAPRAS-print MAIL."
+ next "(HOLD)@"
+
+LiteBlueMailDesc:
+ db "DRATINI-print"
+ next "MAIL. (HOLD)@"
+
+PortraitMailDesc:
+ db "MAIL featuring the"
+ next "holder's likeness.@"
+
+LovelyMailDesc:
+ db "Heart-print MAIL."
+ next "(HOLD)@"
+
+EonMailDesc:
+ db "EEVEE-print MAIL."
+ next "(HOLD)@"
+
+MorphMailDesc:
+ db "DITTO-print MAIL."
+ next "(HOLD)@"
+
+BlueSkyMailDesc:
+ db "Sky-print MAIL."
+ next "(HOLD)@"
+
+MusicMailDesc:
+ db "NATU-print MAIL."
+ next "(HOLD)@"
+
+MirageMailDesc:
+ db "MEW-print MAIL."
+ next "(HOLD)@"
+
+TeruSama29Desc:
+ db "?@"
+
+TeruSama30Desc:
+ db "?@"
+
+TeruSama31Desc:
+ db "?@"
+
+TeruSama32Desc:
+ db "?@"
+
+TeruSama33Desc:
+ db "?@"
+
+TeruSama34Desc:
+ db "?@"
+
+TeruSama35Desc:
+ db "?@"
+
+TeruSama36Desc:
+ db "?@"
+
+TeruSama37Desc:
+ db "?@"
diff --git a/data/items/heal_hp.asm b/data/items/heal_hp.asm
new file mode 100644
index 00000000..cc3da236
--- /dev/null
+++ b/data/items/heal_hp.asm
@@ -0,0 +1,17 @@
+HealingHPAmounts:
+ dbw FRESH_WATER, 50
+ dbw SODA_POP, 60
+ dbw LEMONADE, 80
+ dbw HYPER_POTION, 200
+ dbw SUPER_POTION, 50
+ dbw POTION, 20
+ dbw MAX_POTION, MAX_STAT_VALUE
+ dbw FULL_RESTORE, MAX_STAT_VALUE
+ dbw MOOMOO_MILK, 100
+ dbw BERRY, 10
+ dbw GOLD_BERRY, 30
+ dbw ENERGYPOWDER, 50
+ dbw ENERGY_ROOT, 200
+ dbw RAGECANDYBAR, 20
+ dbw BERRY_JUICE, 20
+ dbw -1, 0 ; end
diff --git a/data/items/heal_status.asm b/data/items/heal_status.asm
new file mode 100644
index 00000000..b39f2f80
--- /dev/null
+++ b/data/items/heal_status.asm
@@ -0,0 +1,19 @@
+; See also data/battle/held_heal_status.asm
+
+StatusHealingActions:
+ ; item, party menu action text, status
+ db ANTIDOTE, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
+ db BURN_HEAL, PARTYMENUTEXT_HEAL_BRN, 1 << BRN
+ db ICE_HEAL, PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
+ db AWAKENING, PARTYMENUTEXT_HEAL_SLP, SLP
+ db PARLYZ_HEAL, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
+ db FULL_HEAL, PARTYMENUTEXT_HEAL_ALL, %11111111
+ db FULL_RESTORE, PARTYMENUTEXT_HEAL_ALL, %11111111
+ db HEAL_POWDER, PARTYMENUTEXT_HEAL_ALL, %11111111
+ db PSNCUREBERRY, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
+ db PRZCUREBERRY, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
+ db BURNT_BERRY, PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
+ db ICE_BERRY, PARTYMENUTEXT_HEAL_BRN, 1 << BRN
+ db MINT_BERRY, PARTYMENUTEXT_HEAL_SLP, SLP
+ db MIRACLEBERRY, PARTYMENUTEXT_HEAL_ALL, %11111111
+ db -1, 0, 0 ; end
diff --git a/data/items/mail_items.asm b/data/items/mail_items.asm
new file mode 100644
index 00000000..388613d9
--- /dev/null
+++ b/data/items/mail_items.asm
@@ -0,0 +1,12 @@
+MailItems:
+ db FLOWER_MAIL
+ db SURF_MAIL
+ db LITEBLUEMAIL
+ db PORTRAITMAIL
+ db LOVELY_MAIL
+ db EON_MAIL
+ db MORPH_MAIL
+ db BLUESKY_MAIL
+ db MUSIC_MAIL
+ db MIRAGE_MAIL
+ db -1
diff --git a/data/items/marts.asm b/data/items/marts.asm
new file mode 100644
index 00000000..1d48ea53
--- /dev/null
+++ b/data/items/marts.asm
@@ -0,0 +1,406 @@
+Marts:
+; entries correspond to MART_* constants
+ dw MartCherrygrove
+ dw MartCherrygroveDex
+ dw MartViolet
+ dw MartAzalea
+ dw MartCianwood
+ dw MartGoldenrod2F1
+ dw MartGoldenrod2F2
+ dw MartGoldenrod3F
+ dw MartGoldenrod4F
+ dw MartGoldenrod5F1
+ dw MartGoldenrod5F2
+ dw MartGoldenrod5F3
+ dw MartGoldenrod5F4
+ dw MartOlivine
+ dw MartEcruteak
+ dw MartMahogany1
+ dw MartMahogany2
+ dw MartBlackthorn
+ dw MartViridian
+ dw MartPewter
+ dw MartCerulean
+ dw MartLavender
+ dw MartVermilion
+ dw MartCeladon2F1
+ dw MartCeladon2F2
+ dw MartCeladon3F
+ dw MartCeladon4F
+ dw MartCeladon5F1
+ dw MartCeladon5F2
+ dw MartFuchsia
+ dw MartSaffron
+ dw MartMtMoon
+ dw MartIndigoPlateau
+ dw MartUnderground
+.End
+
+MartCherrygrove:
+ db 4 ; # items
+ db POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db -1 ; end
+
+MartCherrygroveDex:
+ db 5 ; # items
+ db POKE_BALL
+ db POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db -1 ; end
+
+MartViolet:
+ db 10 ; # items
+ db POKE_BALL
+ db POTION
+ db ESCAPE_ROPE
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db X_DEFEND
+ db X_ATTACK
+ db X_SPEED
+ db FLOWER_MAIL
+ db -1 ; end
+
+MartAzalea:
+ db 9 ; # items
+ db CHARCOAL
+ db POKE_BALL
+ db POTION
+ db SUPER_POTION
+ db ESCAPE_ROPE
+ db REPEL
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db FLOWER_MAIL
+ db -1 ; end
+
+MartCianwood:
+ db 5 ; # items
+ db POTION
+ db SUPER_POTION
+ db HYPER_POTION
+ db FULL_HEAL
+ db REVIVE
+ db -1 ; end
+
+MartGoldenrod2F1:
+ db 7 ; # items
+ db POTION
+ db SUPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db ICE_HEAL
+ db -1 ; end
+
+MartGoldenrod2F2:
+ db 8 ; # items
+ db POKE_BALL
+ db GREAT_BALL
+ db ESCAPE_ROPE
+ db REPEL
+ db REVIVE
+ db FULL_HEAL
+ db POKE_DOLL
+ db FLOWER_MAIL
+ db -1 ; end
+
+MartGoldenrod3F:
+ db 7 ; # items
+ db X_SPEED
+ db X_SPECIAL
+ db X_DEFEND
+ db X_ATTACK
+ db DIRE_HIT
+ db GUARD_SPEC
+ db X_ACCURACY
+ db -1 ; end
+
+MartGoldenrod4F:
+ db 5 ; # items
+ db PROTEIN
+ db IRON
+ db CARBOS
+ db CALCIUM
+ db HP_UP
+ db -1 ; end
+
+MartGoldenrod5F1:
+ db 3 ; # items
+ db TM_THUNDERPUNCH
+ db TM_FIRE_PUNCH
+ db TM_ICE_PUNCH
+ db -1 ; end
+
+MartGoldenrod5F2:
+ db 4 ; # items
+ db TM_THUNDERPUNCH
+ db TM_FIRE_PUNCH
+ db TM_ICE_PUNCH
+ db TM_HEADBUTT
+ db -1 ; end
+
+MartGoldenrod5F3:
+ db 4 ; # items
+ db TM_THUNDERPUNCH
+ db TM_FIRE_PUNCH
+ db TM_ICE_PUNCH
+ db TM_ROCK_SMASH
+ db -1 ; end
+
+MartGoldenrod5F4:
+ db 5 ; # items
+ db TM_THUNDERPUNCH
+ db TM_FIRE_PUNCH
+ db TM_ICE_PUNCH
+ db TM_HEADBUTT
+ db TM_ROCK_SMASH
+ db -1 ; end
+
+MartOlivine:
+ db 9 ; # items
+ db GREAT_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db ICE_HEAL
+ db SUPER_REPEL
+ db SURF_MAIL
+ db -1 ; end
+
+MartEcruteak:
+ db 10 ; # items
+ db POKE_BALL
+ db GREAT_BALL
+ db POTION
+ db SUPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db ICE_HEAL
+ db REVIVE
+ db -1 ; end
+
+MartMahogany1:
+ db 4 ; # items
+ db TINYMUSHROOM
+ db SLOWPOKETAIL
+ db POKE_BALL
+ db POTION
+ db -1 ; end
+
+MartMahogany2:
+ db 9 ; # items
+ db RAGECANDYBAR
+ db GREAT_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db SUPER_REPEL
+ db REVIVE
+ db FLOWER_MAIL
+ db -1 ; end
+
+MartBlackthorn:
+ db 9 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db HYPER_POTION
+ db MAX_POTION
+ db FULL_HEAL
+ db REVIVE
+ db MAX_REPEL
+ db X_DEFEND
+ db X_ATTACK
+ db -1 ; end
+
+MartViridian:
+ db 9 ; # items
+ db ULTRA_BALL
+ db HYPER_POTION
+ db FULL_HEAL
+ db REVIVE
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db FLOWER_MAIL
+ db -1 ; end
+
+MartPewter:
+ db 7 ; # items
+ db GREAT_BALL
+ db SUPER_POTION
+ db SUPER_REPEL
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db -1 ; end
+
+MartCerulean:
+ db 9 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db SUPER_POTION
+ db SUPER_REPEL
+ db FULL_HEAL
+ db X_DEFEND
+ db X_ATTACK
+ db DIRE_HIT
+ db SURF_MAIL
+ db -1 ; end
+
+MartLavender:
+ db 8 ; # items
+ db GREAT_BALL
+ db POTION
+ db SUPER_POTION
+ db MAX_REPEL
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db -1 ; end
+
+MartVermilion:
+ db 8 ; # items
+ db ULTRA_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db REVIVE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db LITEBLUEMAIL
+ db -1 ; end
+
+MartCeladon2F1:
+ db 7 ; # items
+ db POTION
+ db SUPER_POTION
+ db HYPER_POTION
+ db MAX_POTION
+ db REVIVE
+ db SUPER_REPEL
+ db MAX_REPEL
+ db -1 ; end
+
+MartCeladon2F2:
+ db 10 ; # items
+ db POKE_BALL
+ db GREAT_BALL
+ db ULTRA_BALL
+ db ESCAPE_ROPE
+ db FULL_HEAL
+ db ANTIDOTE
+ db BURN_HEAL
+ db ICE_HEAL
+ db AWAKENING
+ db PARLYZ_HEAL
+ db -1 ; end
+
+MartCeladon3F:
+ db 5 ; # items
+ db TM_HIDDEN_POWER
+ db TM_SUNNY_DAY
+ db TM_PROTECT
+ db TM_RAIN_DANCE
+ db TM_SANDSTORM
+ db -1 ; end
+
+MartCeladon4F:
+ db 3 ; # items
+ db POKE_DOLL
+ db LOVELY_MAIL
+ db SURF_MAIL
+ db -1 ; end
+
+MartCeladon5F1:
+ db 5 ; # items
+ db HP_UP
+ db PROTEIN
+ db IRON
+ db CARBOS
+ db CALCIUM
+ db -1 ; end
+
+MartCeladon5F2:
+ db 7 ; # items
+ db X_ACCURACY
+ db GUARD_SPEC
+ db DIRE_HIT
+ db X_ATTACK
+ db X_DEFEND
+ db X_SPEED
+ db X_SPECIAL
+ db -1 ; end
+
+MartFuchsia:
+ db 7 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db FULL_HEAL
+ db MAX_REPEL
+ db FLOWER_MAIL
+ db -1 ; end
+
+MartSaffron:
+ db 8 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db HYPER_POTION
+ db MAX_POTION
+ db FULL_HEAL
+ db X_ATTACK
+ db X_DEFEND
+ db FLOWER_MAIL
+ db -1 ; end
+
+MartMtMoon:
+ db 6 ; # items
+ db POKE_DOLL
+ db FRESH_WATER
+ db SODA_POP
+ db LEMONADE
+ db REPEL
+ db PORTRAITMAIL
+ db -1 ; end
+
+MartIndigoPlateau:
+ db 7 ; # items
+ db ULTRA_BALL
+ db MAX_REPEL
+ db HYPER_POTION
+ db MAX_POTION
+ db FULL_RESTORE
+ db REVIVE
+ db FULL_HEAL
+ db -1 ; end
+
+MartUnderground:
+ db 4 ; # items
+ db ENERGYPOWDER
+ db ENERGY_ROOT
+ db HEAL_POWDER
+ db REVIVAL_HERB
+ db -1 ; end
+
+DefaultMart:
+ db 2 ; # items
+ db POKE_BALL
+ db POTION
+ db -1 ; end
diff --git a/data/items/mystery_gift_items.asm b/data/items/mystery_gift_items.asm
new file mode 100644
index 00000000..242035ea
--- /dev/null
+++ b/data/items/mystery_gift_items.asm
@@ -0,0 +1,39 @@
+MysteryGiftItems:
+ 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
+.End
diff --git a/data/items/names.asm b/data/items/names.asm
new file mode 100644
index 00000000..e50567d7
--- /dev/null
+++ b/data/items/names.asm
@@ -0,0 +1,257 @@
+ItemNames::
+ db "MASTER BALL@"
+ db "ULTRA BALL@"
+ db "BRIGHTPOWDER@"
+ db "GREAT BALL@"
+ db "# BALL@"
+ db "TERU-SAMA@"
+ db "BICYCLE@"
+ db "MOON STONE@"
+ db "ANTIDOTE@"
+ db "BURN HEAL@"
+ db "ICE HEAL@"
+ db "AWAKENING@"
+ db "PARLYZ HEAL@"
+ db "FULL RESTORE@"
+ db "MAX POTION@"
+ db "HYPER POTION@"
+ db "SUPER POTION@"
+ db "POTION@"
+ db "ESCAPE ROPE@"
+ db "REPEL@"
+ db "MAX ELIXER@"
+ db "FIRE STONE@"
+ db "THUNDERSTONE@"
+ db "WATER STONE@"
+ db "TERU-SAMA@"
+ db "HP UP@"
+ db "PROTEIN@"
+ db "IRON@"
+ db "CARBOS@"
+ db "LUCKY PUNCH@"
+ db "CALCIUM@"
+ db "RARE CANDY@"
+ db "X ACCURACY@"
+ db "LEAF STONE@"
+ db "METAL POWDER@"
+ db "NUGGET@"
+ db "# DOLL@"
+ db "FULL HEAL@"
+ db "REVIVE@"
+ db "MAX REVIVE@"
+ db "GUARD SPEC.@"
+ db "SUPER REPEL@"
+ db "MAX REPEL@"
+ db "DIRE HIT@"
+ db "TERU-SAMA@"
+ db "FRESH WATER@"
+ db "SODA POP@"
+ db "LEMONADE@"
+ db "X ATTACK@"
+ db "TERU-SAMA@"
+ db "X DEFEND@"
+ db "X SPEED@"
+ db "X SPECIAL@"
+ db "COIN CASE@"
+ db "ITEMFINDER@"
+ db "TERU-SAMA@"
+ db "EXP.SHARE@"
+ db "OLD ROD@"
+ db "GOOD ROD@"
+ db "SILVER LEAF@"
+ db "SUPER ROD@"
+ db "PP UP@"
+ db "ETHER@"
+ db "MAX ETHER@"
+ db "ELIXER@"
+ db "RED SCALE@"
+ db "SECRETPOTION@"
+ db "S.S.TICKET@"
+ db "MYSTERY EGG@"
+ db "TERU-SAMA@"
+ db "SILVER WING@"
+ db "MOOMOO MILK@"
+ db "QUICK CLAW@"
+ db "PSNCUREBERRY@"
+ db "GOLD LEAF@"
+ db "SOFT SAND@"
+ db "SHARP BEAK@"
+ db "PRZCUREBERRY@"
+ db "BURNT BERRY@"
+ db "ICE BERRY@"
+ db "POISON BARB@"
+ db "KING'S ROCK@"
+ db "BITTER BERRY@"
+ db "MINT BERRY@"
+ db "RED APRICORN@"
+ db "TINYMUSHROOM@"
+ db "BIG MUSHROOM@"
+ db "SILVERPOWDER@"
+ db "BLU APRICORN@"
+ db "TERU-SAMA@"
+ db "AMULET COIN@"
+ db "YLW APRICORN@"
+ db "GRN APRICORN@"
+ db "CLEANSE TAG@"
+ db "MYSTIC WATER@"
+ db "TWISTEDSPOON@"
+ db "WHT APRICORN@"
+ db "BLACKBELT@"
+ db "BLK APRICORN@"
+ db "TERU-SAMA@"
+ db "PNK APRICORN@"
+ db "BLACKGLASSES@"
+ db "SLOWPOKETAIL@"
+ db "PINK BOW@"
+ db "STICK@"
+ db "SMOKE BALL@"
+ db "NEVERMELTICE@"
+ db "MAGNET@"
+ db "MIRACLEBERRY@"
+ db "PEARL@"
+ db "BIG PEARL@"
+ db "EVERSTONE@"
+ db "SPELL TAG@"
+ db "RAGECANDYBAR@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "MIRACLE SEED@"
+ db "THICK CLUB@"
+ db "FOCUS BAND@"
+ db "TERU-SAMA@"
+ db "ENERGYPOWDER@"
+ db "ENERGY ROOT@"
+ db "HEAL POWDER@"
+ db "REVIVAL HERB@"
+ db "HARD STONE@"
+ db "LUCKY EGG@"
+ db "CARD KEY@"
+ db "MACHINE PART@"
+ db "TERU-SAMA@"
+ db "LOST ITEM@"
+ db "STARDUST@"
+ db "STAR PIECE@"
+ db "BASEMENT KEY@"
+ db "PASS@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "CHARCOAL@"
+ db "BERRY JUICE@"
+ db "SCOPE LENS@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "METAL COAT@"
+ db "DRAGON FANG@"
+ db "TERU-SAMA@"
+ db "LEFTOVERS@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "MYSTERYBERRY@"
+ db "DRAGON SCALE@"
+ db "BERSERK GENE@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "SACRED ASH@"
+ db "HEAVY BALL@"
+ db "FLOWER MAIL@"
+ db "LEVEL BALL@"
+ db "LURE BALL@"
+ db "FAST BALL@"
+ db "TERU-SAMA@"
+ db "LIGHT BALL@"
+ db "FRIEND BALL@"
+ db "MOON BALL@"
+ db "LOVE BALL@"
+ db "NORMAL BOX@"
+ db "GORGEOUS BOX@"
+ db "SUN STONE@"
+ db "POLKADOT BOW@"
+ db "TERU-SAMA@"
+ db "UP-GRADE@"
+ db "BERRY@"
+ db "GOLD BERRY@"
+ db "SQUIRTBOTTLE@"
+ db "TERU-SAMA@"
+ db "PARK BALL@"
+ db "RAINBOW WING@"
+ db "TERU-SAMA@"
+ db "BRICK PIECE@"
+ db "SURF MAIL@"
+ db "LITEBLUEMAIL@"
+ db "PORTRAITMAIL@"
+ db "LOVELY MAIL@"
+ db "EON MAIL@"
+ db "MORPH MAIL@"
+ db "BLUESKY MAIL@"
+ db "MUSIC MAIL@"
+ db "MIRAGE MAIL@"
+ db "TERU-SAMA@"
+ db "TM01@"
+ db "TM02@"
+ db "TM03@"
+ db "TM04@"
+ db "TERU-SAMA@"
+ db "TM05@"
+ db "TM06@"
+ db "TM07@"
+ db "TM08@"
+ db "TM09@"
+ db "TM10@"
+ db "TM11@"
+ db "TM12@"
+ db "TM13@"
+ db "TM14@"
+ db "TM15@"
+ db "TM16@"
+ db "TM17@"
+ db "TM18@"
+ db "TM19@"
+ db "TM20@"
+ db "TM21@"
+ db "TM22@"
+ db "TM23@"
+ db "TM24@"
+ db "TM25@"
+ db "TM26@"
+ db "TM27@"
+ db "TM28@"
+ db "TERU-SAMA@"
+ db "TM29@"
+ db "TM30@"
+ db "TM31@"
+ db "TM32@"
+ db "TM33@"
+ db "TM34@"
+ db "TM35@"
+ db "TM36@"
+ db "TM37@"
+ db "TM38@"
+ db "TM39@"
+ db "TM40@"
+ db "TM41@"
+ db "TM42@"
+ db "TM43@"
+ db "TM44@"
+ db "TM45@"
+ db "TM46@"
+ db "TM47@"
+ db "TM48@"
+ db "TM49@"
+ db "TM50@"
+ db "HM01@"
+ db "HM02@"
+ db "HM03@"
+ db "HM04@"
+ db "HM05@"
+ db "HM06@"
+ db "HM07@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "TERU-SAMA@"
+ db "?@"
diff --git a/data/items/pocket_names.asm b/data/items/pocket_names.asm
new file mode 100644
index 00000000..880e08fe
--- /dev/null
+++ b/data/items/pocket_names.asm
@@ -0,0 +1,11 @@
+ItemPocketNames:
+; entries correspond to item type constants
+ dw .Item
+ dw .Key
+ dw .Ball
+ dw .TM
+
+.Item: db "ITEM POCKET@"
+.Key: db "KEY POCKET@"
+.Ball: db "BALL POCKET@"
+.TM: db "TM POCKET@"
diff --git a/data/items/x_stats.asm b/data/items/x_stats.asm
new file mode 100644
index 00000000..25554209
--- /dev/null
+++ b/data/items/x_stats.asm
@@ -0,0 +1,6 @@
+XItemStats:
+ ; item, stat
+ db X_ATTACK, ATTACK
+ db X_DEFEND, DEFENSE
+ db X_SPEED, SPEED
+ db X_SPECIAL, SP_ATTACK
diff --git a/data/map_objects.asm b/data/map_objects.asm
deleted file mode 100755
index fe218e42..00000000
--- a/data/map_objects.asm
+++ /dev/null
@@ -1,44 +0,0 @@
-sprite_movement_data: macro
- db \1, \2, \3, \4, \5
- dn \6, 0
-endm
-
- ; function, facing, action, flags1, flags2, palette flags
- sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 00
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 01
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 02
- sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 03
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 04
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 05
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 06
- sprite_movement_data SPRITEMOVEFN_STANDING, UP, OBJECT_ACTION_STAND, $00, $00, %0000 ; 07
- sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 08
- sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 09
- sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0a
- sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 0b
- sprite_movement_data SPRITEMOVEFN_08, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0c
- sprite_movement_data SPRITEMOVEFN_09, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0d
- sprite_movement_data SPRITEMOVEFN_0A, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0e
- sprite_movement_data SPRITEMOVEFN_0B, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0f
- sprite_movement_data SPRITEMOVEFN_0C, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 10
- sprite_movement_data SPRITEMOVEFN_0D, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 11
- sprite_movement_data SPRITEMOVEFN_0E, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 12
- sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 13
- sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 14
- sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, OBJECT_ACTION_BIG_DOLL_SYM, $2e, $01, %1100 ; 15
- sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, OBJECT_ACTION_BOUNCE, $2e, $00, %0000 ; 16
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 17
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $2e, $10, %0000 ; 18
- sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_STAND, $2e, $00, %0100 ; 19
- sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 1a
- sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, OBJECT_ACTION_00, $8e, $01, %0000 ; 1b
- sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, OBJECT_ACTION_EMOTE, $8e, $02, %0000 ; 1c
- sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, OBJECT_ACTION_00, $82, $00, %0000 ; 1d
- sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1e
- sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1f
- sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL_ASYM, $2e, $01, %1100 ; 20
- sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL, $2e, $01, %1100 ; 21
- sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, OBJECT_ACTION_BOULDER_DUST, $8e, $01, %0000 ; 22
- sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, OBJECT_ACTION_GRASS_SHAKE, $8e, $02, %0000 ; 23
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0010 ; 24
- sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 25
diff --git a/data/maps/attributes.asm b/data/maps/attributes.asm
index 2f9c0d05..d16b1c61 100644
--- a/data/maps/attributes.asm
+++ b/data/maps/attributes.asm
@@ -38,7 +38,7 @@ _tgt = 0
endc
if "\1" == "north"
-_blk = \3_WIDTH * (\3_HEIGHT + -3) + _src
+_blk = \3_WIDTH * (\3_HEIGHT - 3) + _src
_map = _tgt
_win = (\3_WIDTH + 6) * \3_HEIGHT + 1
_y = \3_HEIGHT * 2 - 1
@@ -60,9 +60,9 @@ _len = \3_WIDTH
endc
elif "\1" == "west"
-_blk = (\3_WIDTH * _src) + \3_WIDTH + -3
+_blk = (\3_WIDTH * _src) + \3_WIDTH - 3
_map = (CURRENT_MAP_WIDTH + 6) * _tgt
-_win = (\3_WIDTH + 6) * 2 + -6
+_win = (\3_WIDTH + 6) * 2 - 6
_y = (\4) * -2
_x = \3_WIDTH * 2 - 1
_len = CURRENT_MAP_HEIGHT + 3 - (\4)
diff --git a/data/maps/blocks.asm b/data/maps/blocks.asm
index af632833..e93719de 100644
--- a/data/maps/blocks.asm
+++ b/data/maps/blocks.asm
@@ -15,8 +15,8 @@ Route44_Blocks:
Route28_Blocks:
INCBIN "maps/Route28.blk"
-BetaHerosHouse_Blocks:
- INCBIN "maps/unused/BetaHerosHouse.blk"
+BetaPlayersHouse2F_Blocks:
+ INCBIN "maps/unused/BetaPlayersHouse2F.blk"
CeladonCity_Blocks:
INCBIN "maps/CeladonCity.blk"
@@ -103,8 +103,8 @@ Route3_Blocks:
PewterCity_Blocks:
INCBIN "maps/PewterCity.blk"
-BetaIlexForest_Blocks:
- INCBIN "maps/unused/BetaIlexForest.blk"
+BetaSilverCaveOutside_Blocks:
+ INCBIN "maps/unused/BetaSilverCaveOutside.blk"
BetaSproutTower2_Blocks:
INCBIN "maps/unused/BetaSproutTower2.blk"
@@ -121,8 +121,8 @@ Route20_Blocks:
BetaSproutTower6_Blocks:
INCBIN "maps/unused/BetaSproutTower6.blk"
-BetaPokecenterMainHouse_Blocks:
- INCBIN "maps/unused/BetaPokecenterMainHouse.blk"
+BetaPokecenter_Blocks:
+ INCBIN "maps/unused/BetaPokecenter.blk"
Route30_Blocks:
INCBIN "maps/Route30.blk"
@@ -446,8 +446,8 @@ VioletNicknameSpeechHouse_Blocks:
VioletKylesHouse_Blocks:
INCBIN "maps/House2.blk"
-BetaCave_Blocks:
- INCBIN "maps/unused/BetaCave.blk"
+BetaUnionCave_Blocks:
+ INCBIN "maps/unused/BetaUnionCave.blk"
UnionCaveB1F_Blocks:
INCBIN "maps/UnionCaveB1F.blk"
@@ -466,8 +466,8 @@ Route5UndergroundPathEntrance_Blocks:
Route6UndergroundPathEntrance_Blocks:
INCBIN "maps/UndergroundPathEntrance.blk"
-BetaPokecenterTradeStation_Blocks:
- INCBIN "maps/unused/BetaPokecenterTradeStation.blk"
+BetaCapsuleHouse_Blocks:
+ INCBIN "maps/unused/BetaCapsuleHouse.blk"
KurtsHouse_Blocks:
INCBIN "maps/KurtsHouse.blk"
@@ -685,17 +685,17 @@ SilverCaveRoom2_Blocks:
SilverCaveRoom3_Blocks:
INCBIN "maps/SilverCaveRoom3.blk"
-BetaRocketHideout1_Blocks:
- INCBIN "maps/unused/BetaRocketHideout1.blk"
+BetaRocketHideoutB2F_Blocks:
+ INCBIN "maps/unused/BetaRocketHideoutB2F.blk"
-BetaRocketHideout2_Blocks:
- INCBIN "maps/unused/BetaRocketHideout2.blk"
+BetaRocketHideoutB1F_Blocks:
+ INCBIN "maps/unused/BetaRocketHideoutB1F.blk"
-BetaEmptyHouse_Blocks:
- INCBIN "maps/unused/BetaEmptyHouse.blk"
+BetaRocketHideout1F_Blocks:
+ INCBIN "maps/unused/BetaRocketHideout1F.blk"
-BetaRocketHideout3_Blocks:
- INCBIN "maps/unused/BetaRocketHideout3.blk"
+BetaRocketHideoutB3F_Blocks:
+ INCBIN "maps/unused/BetaRocketHideoutB3F.blk"
MahoganyMart1F_Blocks:
MountMoonGiftShop_Blocks:
@@ -710,8 +710,8 @@ TeamRocketBaseB2F_Blocks:
TeamRocketBaseB3F_Blocks:
INCBIN "maps/TeamRocketBaseB3F.blk"
-BetaRoute23EarlyVersion_Blocks:
- INCBIN "maps/unused/BetaRoute23EarlyVersion.blk"
+BetaRoute23_Blocks:
+ INCBIN "maps/unused/BetaRoute23.blk"
IndigoPlateauPokecenter1F_Blocks:
INCBIN "maps/IndigoPlateauPokecenter1F.blk"
@@ -746,8 +746,8 @@ MahoganyGym_Blocks:
OlivineGym_Blocks:
INCBIN "maps/OlivineGym.blk"
-BetaUnknown_Blocks:
- INCBIN "maps/unused/BetaUnknown.blk"
+BetaUnknownGym_Blocks:
+ INCBIN "maps/unused/BetaUnknownGym.blk"
CianwoodGym_Blocks:
INCBIN "maps/CianwoodGym.blk"
@@ -779,8 +779,8 @@ OlivineLighthouse6F_Blocks:
SECTION "Map Blocks 3", ROMX
-BetaCave2_Blocks:
- INCBIN "maps/unused/BetaCave2.blk"
+BetaSlowpokeWell1F_Blocks:
+ INCBIN "maps/unused/BetaSlowpokeWell1F.blk"
SlowpokeWellB1F_Blocks:
INCBIN "maps/SlowpokeWellB1F.blk"
@@ -913,14 +913,14 @@ PewterGym_Blocks:
CeladonGym_Blocks:
INCBIN "maps/CeladonGym.blk"
-BetaHouse2_Blocks:
- INCBIN "maps/unused/BetaHouse2.blk"
+BetaCeladonMansion1F_Blocks:
+ INCBIN "maps/unused/BetaCeladonMansion1F.blk"
CeladonCafe_Blocks:
INCBIN "maps/CeladonCafe.blk"
-BetaCeladonMansion_Blocks:
- INCBIN "maps/unused/BetaCeladonMansion.blk"
+BetaCeladonMansion2F_Blocks:
+ INCBIN "maps/unused/BetaCeladonMansion2F.blk"
RockTunnel1F_Blocks:
INCBIN "maps/RockTunnel1F.blk"
@@ -994,5 +994,3 @@ DragonsDenB1F_Blocks:
TohjoFalls_Blocks:
INCBIN "maps/TohjoFalls.blk"
-
- dr $dd773, $e0000 ; XXX Probably not blockdata?
diff --git a/data/maps/environment_colors.asm b/data/maps/environment_colors.asm
new file mode 100644
index 00000000..3497b2b9
--- /dev/null
+++ b/data/maps/environment_colors.asm
@@ -0,0 +1,35 @@
+EnvironmentColorsPointers:
+; entries correspond to environment constants (see constants/map_data_constants.asm)
+ dw .OutdoorColors ; unused
+ dw .OutdoorColors ; TOWN
+ dw .OutdoorColors ; ROUTE
+ dw .IndoorColors ; INDOOR
+ dw .DungeonColors ; CAVE
+ dw .Env5Colors ; ENVIRONMENT_5
+ dw .IndoorColors ; GATE
+ dw .DungeonColors ; DUNGEON
+
+; Valid indices: $00 - $29 (see gfx/tilesets/bg_tiles.pal)
+.OutdoorColors:
+ db $00, $01, $02, $28, $04, $05, $06, $07 ; morn
+ db $08, $09, $0a, $28, $0c, $0d, $0e, $0f ; day
+ db $10, $11, $12, $29, $14, $15, $16, $17 ; nite
+ db $18, $19, $1a, $1b, $1c, $1d, $1e, $1f ; dark
+
+.IndoorColors:
+ db $20, $21, $22, $23, $24, $25, $26, $07 ; morn
+ db $20, $21, $22, $23, $24, $25, $26, $07 ; day
+ db $10, $11, $12, $13, $14, $15, $16, $07 ; nite
+ db $18, $19, $1a, $1b, $1c, $1d, $1e, $07 ; dark
+
+.DungeonColors:
+ db $00, $01, $02, $03, $04, $05, $06, $07 ; morn
+ db $08, $09, $0a, $0b, $0c, $0d, $0e, $0f ; day
+ db $10, $11, $12, $13, $14, $15, $16, $17 ; nite
+ db $18, $19, $1a, $1b, $1c, $1d, $1e, $1f ; dark
+
+.Env5Colors:
+ db $00, $01, $02, $03, $04, $05, $06, $07 ; morn
+ db $08, $09, $0a, $0b, $0c, $0d, $0e, $0f ; day
+ db $10, $11, $12, $13, $14, $15, $16, $17 ; nite
+ db $18, $19, $1a, $1b, $1c, $1d, $1e, $1f ; dark
diff --git a/data/maps/flypoints.asm b/data/maps/flypoints.asm
new file mode 100644
index 00000000..e3578daa
--- /dev/null
+++ b/data/maps/flypoints.asm
@@ -0,0 +1,30 @@
+Flypoints:
+; entries correspond to FLY_* constants
+; Johto
+ ; landmark, spawn point
+ db LANDMARK_NEW_BARK_TOWN, SPAWN_NEW_BARK
+ db LANDMARK_CHERRYGROVE_CITY, SPAWN_CHERRYGROVE
+ db LANDMARK_VIOLET_CITY, SPAWN_VIOLET
+ db LANDMARK_AZALEA_TOWN, SPAWN_AZALEA
+ db LANDMARK_GOLDENROD_CITY, SPAWN_GOLDENROD
+ db LANDMARK_ECRUTEAK_CITY, SPAWN_ECRUTEAK
+ db LANDMARK_OLIVINE_CITY, SPAWN_OLIVINE
+ db LANDMARK_CIANWOOD_CITY, SPAWN_CIANWOOD
+ db LANDMARK_MAHOGANY_TOWN, SPAWN_MAHOGANY
+ db LANDMARK_LAKE_OF_RAGE, SPAWN_LAKE_OF_RAGE
+ db LANDMARK_BLACKTHORN_CITY, SPAWN_BLACKTHORN
+ db LANDMARK_SILVER_CAVE, SPAWN_MT_SILVER
+; Kanto
+ db LANDMARK_PALLET_TOWN, SPAWN_PALLET
+ db LANDMARK_VIRIDIAN_CITY, SPAWN_VIRIDIAN
+ db LANDMARK_PEWTER_CITY, SPAWN_PEWTER
+ db LANDMARK_CERULEAN_CITY, SPAWN_CERULEAN
+ db LANDMARK_VERMILION_CITY, SPAWN_VERMILION
+ db LANDMARK_ROCK_TUNNEL, SPAWN_ROCK_TUNNEL
+ db LANDMARK_LAVENDER_TOWN, SPAWN_LAVENDER
+ db LANDMARK_CELADON_CITY, SPAWN_CELADON
+ db LANDMARK_SAFFRON_CITY, SPAWN_SAFFRON
+ db LANDMARK_FUCHSIA_CITY, SPAWN_FUCHSIA
+ db LANDMARK_CINNABAR_ISLAND, SPAWN_CINNABAR
+ db LANDMARK_INDIGO_PLATEAU, SPAWN_INDIGO
+ db -1
diff --git a/data/maps/landmarks.asm b/data/maps/landmarks.asm
new file mode 100644
index 00000000..8e25aca2
--- /dev/null
+++ b/data/maps/landmarks.asm
@@ -0,0 +1,205 @@
+landmark: MACRO
+; x, y, name
+ db \1 + 8, \2 + 16
+ dw \3
+ENDM
+
+Landmarks:
+; entries correspond to constants/landmark_constants.asm
+ dbbw 0, 0, SpecialMapName
+ landmark 140, 100, NewBarkTownName
+ landmark 128, 100, Route29Name
+ landmark 100, 100, CherrygroveCityName
+ landmark 100, 80, Route30Name
+ landmark 96, 60, Route31Name
+ landmark 84, 60, VioletCityName
+ landmark 85, 58, SproutTowerName
+ landmark 84, 92, Route32Name
+ landmark 76, 76, RuinsOfAlphName
+ landmark 84, 124, UnionCaveName
+ landmark 82, 124, Route33Name
+ landmark 68, 124, AzaleaTownName
+ landmark 70, 122, SlowpokeWellName
+ landmark 52, 120, IlexForestName
+ landmark 52, 112, Route34Name
+ landmark 52, 92, GoldenrodCityName
+ landmark 50, 92, RadioTowerName
+ landmark 52, 76, Route35Name
+ landmark 52, 60, NationalParkName
+ landmark 64, 60, Route36Name
+ landmark 68, 52, Route37Name
+ landmark 68, 44, EcruteakCityName
+ landmark 70, 42, TinTowerName
+ landmark 66, 42, BurnedTowerName
+ landmark 52, 44, Route38Name
+ landmark 36, 48, Route39Name
+ landmark 36, 60, OlivineCityName
+ landmark 38, 62, LighthouseName
+ landmark 28, 64, Route40Name
+ landmark 28, 92, WhirlIslandsName
+ landmark 28, 100, Route41Name
+ landmark 20, 100, CianwoodCityName
+ landmark 92, 44, Route42Name
+ landmark 84, 44, MtMortarName
+ landmark 108, 44, MahoganyTownName
+ landmark 108, 36, Route43Name
+ landmark 108, 28, LakeOfRageName
+ landmark 120, 44, Route44Name
+ landmark 130, 38, IcePathName
+ landmark 132, 44, BlackthornCityName
+ landmark 132, 36, DragonsDenName
+ landmark 132, 64, Route45Name
+ landmark 112, 72, DarkCaveName
+ landmark 124, 88, Route46Name
+ landmark 148, 68, SilverCaveName
+ landmark 52, 108, PalletTownName
+ landmark 52, 92, Route1Name
+ landmark 52, 76, ViridianCityName
+ landmark 52, 64, Route2Name
+ landmark 52, 52, PewterCityName
+ landmark 64, 52, Route3Name
+ landmark 76, 52, MtMoonName
+ landmark 88, 52, Route4Name
+ landmark 100, 52, CeruleanCityName
+ landmark 100, 44, Route24Name
+ landmark 108, 36, Route25Name
+ landmark 100, 60, Route5Name
+ landmark 108, 76, UndergroundName
+ landmark 100, 76, Route6Name
+ landmark 100, 84, VermilionCityName
+ landmark 88, 60, DiglettsCaveName
+ landmark 88, 68, Route7Name
+ landmark 116, 68, Route8Name
+ landmark 116, 52, Route9Name
+ landmark 132, 52, RockTunnelName
+ landmark 132, 56, Route10Name
+ landmark 132, 60, PowerPlantName
+ landmark 132, 68, LavenderTownName
+ landmark 140, 68, LavRadioTowerName
+ landmark 76, 68, CeladonCityName
+ landmark 100, 68, SaffronCityName
+ landmark 116, 84, Route11Name
+ landmark 132, 80, Route12Name
+ landmark 124, 100, Route13Name
+ landmark 116, 112, Route14Name
+ landmark 104, 116, Route15Name
+ landmark 68, 68, Route16Name
+ landmark 68, 92, Route17Name
+ landmark 80, 116, Route18Name
+ landmark 92, 116, FuchsiaCityName
+ landmark 92, 128, Route19Name
+ landmark 76, 132, Route20Name
+ landmark 68, 132, SeafoamIslandsName
+ landmark 52, 132, CinnabarIslandName
+ landmark 52, 120, Route21Name
+ landmark 36, 68, Route22Name
+ landmark 28, 52, VictoryRoadName
+ landmark 28, 44, Route23Name
+ landmark 28, 36, IndigoPlateauName
+ landmark 28, 92, Route26Name
+ landmark 20, 100, Route27Name
+ landmark 12, 100, TohjoFallsName
+ landmark 20, 68, Route28Name
+ landmark 140, 116, 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@" ; "オバケやしき" ("HAUNTED HOUSE") in Japanese
+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@"
+SpecialMapName: db "SPECIAL@"
diff --git a/data/maps/map_data.asm b/data/maps/map_data.asm
new file mode 100644
index 00000000..125f4474
--- /dev/null
+++ b/data/maps/map_data.asm
@@ -0,0 +1,14 @@
+INCLUDE "constants.asm"
+
+
+SECTION "Maps", ROMX
+
+INCLUDE "data/maps/scenes.asm"
+INCLUDE "data/maps/maps.asm"
+INCLUDE "data/maps/attributes.asm"
+
+
+INCLUDE "data/maps/blocks.asm"
+
+
+INCLUDE "data/maps/scripts.asm"
diff --git a/data/maps/maps.asm b/data/maps/maps.asm
index 339becec..46155310 100644
--- a/data/maps/maps.asm
+++ b/data/maps/maps.asm
@@ -2,7 +2,7 @@ map: MACRO
;\1: map name: for the MapAttributes pointer (see data/maps/attributes.asm)
;\2: tileset: a TILESET_* constant
;\3: environment: TOWN, ROUTE, INDOOR, CAVE, ENVIRONMENT_5, GATE, or DUNGEON
-;\4: location: from constants/landmark_constants.asm
+;\4: location: a LANDMARK_* constant
;\5: music: a MUSIC_* constant
;\6: phone service flag: TRUE to prevent phone calls
;\7: time of day: a PALETTE_* constant
@@ -44,421 +44,421 @@ MapGroupPointers::
dw MapGroup_Cherrygrove ; 26
MapGroup_Olivine:
- map OlivinePokecenter1F, TILESET_POKECENTER, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineGym, TILESET_CHAMPIONS_ROOM, INDOOR, OLIVINE_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineTimsHouse, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineHouseBeta, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivinePunishmentSpeechHouse, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineGoodRodHouse, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineCafe, TILESET_GAME_CORNER, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineMart, TILESET_MART, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route38EcruteakGate, TILESET_GATE, GATE, ROUTE_38, MUSIC_ROUTE_37, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route39Barn, TILESET_TRADITIONAL_HOUSE, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route39Farmhouse, TILESET_HOUSE, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route38, TILESET_JOHTO, ROUTE, ROUTE_38, MUSIC_ROUTE_37, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route39, TILESET_JOHTO, ROUTE, ROUTE_39, MUSIC_ROUTE_37, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map OlivineCity, TILESET_JOHTO, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map OlivinePokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineGym, TILESET_CHAMPIONS_ROOM, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineTimsHouse, TILESET_HOUSE, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineHouseBeta, TILESET_HOUSE, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivinePunishmentSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineGoodRodHouse, TILESET_HOUSE, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineCafe, TILESET_GAME_CORNER, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineMart, TILESET_MART, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route38EcruteakGate, TILESET_GATE, GATE, LANDMARK_ROUTE_38, MUSIC_ROUTE_37, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route39Barn, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_ROUTE_39, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route39Farmhouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_39, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route38, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_38, MUSIC_ROUTE_37, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route39, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_39, MUSIC_ROUTE_37, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map OlivineCity, TILESET_JOHTO, TOWN, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
MapGroup_Mahogany:
- map MahoganyRedGyaradosSpeechHouse, TILESET_HOUSE, INDOOR, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map MahoganyGym, TILESET_ELITE_FOUR_ROOM, INDOOR, MAHOGANY_TOWN, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map MahoganyPokecenter1F, TILESET_POKECENTER, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route42EcruteakGate, TILESET_GATE, GATE, ROUTE_42, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route42, TILESET_JOHTO, ROUTE, ROUTE_42, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
- map Route44, TILESET_JOHTO, ROUTE, ROUTE_44, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_REMORAID
- map MahoganyTown, TILESET_JOHTO, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map MahoganyRedGyaradosSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map MahoganyGym, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_MAHOGANY_TOWN, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map MahoganyPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route42EcruteakGate, TILESET_GATE, GATE, LANDMARK_ROUTE_42, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route42, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_42, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map Route44, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_44, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_REMORAID
+ map MahoganyTown, TILESET_JOHTO, TOWN, LANDMARK_MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
MapGroup_Dungeons:
- map SproutTower1F, TILESET_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SproutTower2F, TILESET_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SproutTower3F, TILESET_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower1F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower2F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower3F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower4F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower5F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower6F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower7F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower8F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTower9F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BurnedTower1F, TILESET_TOWER, DUNGEON, BURNED_TOWER, MUSIC_BURNED_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BurnedTowerB1F, TILESET_CAVE, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map NationalPark, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map NationalParkBugContest, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map RadioTower1F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RadioTower2F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RadioTower3F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RadioTower4F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RadioTower5F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RuinsOfAlphOutside, TILESET_JOHTO, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map RuinsOfAlphHoOhChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RuinsOfAlphKabutoChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RuinsOfAlphOmanyteChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RuinsOfAlphAerodactylChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RuinsOfAlphInnerChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map RuinsOfAlphResearchCenter, TILESET_FACILITY, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map UnionCave1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
- map UnionCaveB1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
- map UnionCaveB2F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_SHORE
- map SlowpokeWellB1F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
- map SlowpokeWellB2F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
- map OlivineLighthouse1F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineLighthouse2F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineLighthouse3F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineLighthouse4F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineLighthouse5F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivineLighthouse6F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map MahoganyMart1F, TILESET_TRADITIONAL_HOUSE, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map TeamRocketBaseB1F, TILESET_UNDERGROUND, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map TeamRocketBaseB2F, TILESET_FACILITY, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map TeamRocketBaseB3F, TILESET_FACILITY, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map IlexForest, TILESET_FOREST, CAVE, ILEX_FOREST, MUSIC_UNION_CAVE, FALSE, PALETTE_NITE, FISHGROUP_POND
- map GoldenrodUnderground, TILESET_GATE, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodUndergroundSwitchRoomEntrances, TILESET_ELITE_FOUR_ROOM, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStoreB1F, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodUndergroundWarehouse, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map MountMortar1FOutside, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
- map MountMortar1FInside, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
- map MountMortar2FInside, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
- map MountMortarB1F, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
- map IcePath1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
- map IcePathB1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
- map IcePathB2FMahoganySide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
- map IcePathB2FBlackthornSide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
- map IcePathB3F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
- map WhirlIslandNW, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map WhirlIslandNE, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map WhirlIslandSW, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map WhirlIslandCave, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map WhirlIslandSE, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map WhirlIslandB1F, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map WhirlIslandB2F, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map WhirlIslandLugiaChamber, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
- map SilverCaveRoom1, TILESET_DARK_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
- map SilverCaveRoom2, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
- map SilverCaveRoom3, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_DAY, FISHGROUP_LAKE
- map SilverCaveItemRooms, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
- map DarkCaveVioletEntrance, TILESET_DARK_CAVE, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
- map DarkCaveBlackthornEntrance, TILESET_DARK_CAVE, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
- map DragonsDen1F, TILESET_CAVE, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
- map DragonsDenB1F, TILESET_JOHTO, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
- map TohjoFalls, TILESET_CAVE, CAVE, TOHJO_FALLS, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
- map DiglettsCave, TILESET_CAVE, CAVE, DIGLETTS_CAVE, MUSIC_MT_MOON, TRUE, PALETTE_NITE, FISHGROUP_SHORE
- map MountMoon, TILESET_CAVE, CAVE, MT_MOON, MUSIC_MT_MOON, TRUE, PALETTE_NITE, FISHGROUP_SHORE
- map UndergroundPath, TILESET_UNDERGROUND, GATE, UNDERGROUND_PATH, MUSIC_MT_MOON, FALSE, PALETTE_NITE, FISHGROUP_SHORE
- map RockTunnel1F, TILESET_DARK_CAVE, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, TRUE, PALETTE_DARK, FISHGROUP_SHORE
- map RockTunnelB1F, TILESET_DARK_CAVE, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, TRUE, PALETTE_DARK, FISHGROUP_SHORE
- map SafariZoneFuchsiaGateBeta, TILESET_GATE, INDOOR, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SafariZoneBeta, TILESET_PARK, CAVE, FUCHSIA_CITY, MUSIC_EVOLUTION, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map VictoryRoad, TILESET_CAVE, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+ map SproutTower1F, TILESET_TOWER, DUNGEON, LANDMARK_SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SproutTower2F, TILESET_TOWER, DUNGEON, LANDMARK_SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SproutTower3F, TILESET_TOWER, DUNGEON, LANDMARK_SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower1F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower2F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower3F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower4F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower5F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower6F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower7F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower8F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTower9F, TILESET_TOWER, DUNGEON, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BurnedTower1F, TILESET_TOWER, DUNGEON, LANDMARK_BURNED_TOWER, MUSIC_BURNED_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BurnedTowerB1F, TILESET_CAVE, CAVE, LANDMARK_BURNED_TOWER, MUSIC_BURNED_TOWER, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map NationalPark, TILESET_PARK, ROUTE, LANDMARK_NATIONAL_PARK, MUSIC_NATIONAL_PARK, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map NationalParkBugContest, TILESET_PARK, ROUTE, LANDMARK_NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map RadioTower1F, TILESET_RADIO_TOWER, INDOOR, LANDMARK_RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RadioTower2F, TILESET_RADIO_TOWER, INDOOR, LANDMARK_RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RadioTower3F, TILESET_RADIO_TOWER, INDOOR, LANDMARK_RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RadioTower4F, TILESET_RADIO_TOWER, INDOOR, LANDMARK_RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RadioTower5F, TILESET_RADIO_TOWER, INDOOR, LANDMARK_RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RuinsOfAlphOutside, TILESET_JOHTO, ROUTE, LANDMARK_RUINS_OF_ALPH, MUSIC_UNION_CAVE, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map RuinsOfAlphHoOhChamber, TILESET_RUINS_OF_ALPH, DUNGEON, LANDMARK_RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RuinsOfAlphKabutoChamber, TILESET_RUINS_OF_ALPH, DUNGEON, LANDMARK_RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RuinsOfAlphOmanyteChamber, TILESET_RUINS_OF_ALPH, DUNGEON, LANDMARK_RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RuinsOfAlphAerodactylChamber, TILESET_RUINS_OF_ALPH, DUNGEON, LANDMARK_RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RuinsOfAlphInnerChamber, TILESET_RUINS_OF_ALPH, DUNGEON, LANDMARK_RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map RuinsOfAlphResearchCenter, TILESET_FACILITY, INDOOR, LANDMARK_RUINS_OF_ALPH, MUSIC_UNION_CAVE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map UnionCave1F, TILESET_CAVE, CAVE, LANDMARK_UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+ map UnionCaveB1F, TILESET_CAVE, CAVE, LANDMARK_UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+ map UnionCaveB2F, TILESET_CAVE, CAVE, LANDMARK_UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+ map SlowpokeWellB1F, TILESET_CAVE, CAVE, LANDMARK_SLOWPOKE_WELL, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+ map SlowpokeWellB2F, TILESET_CAVE, CAVE, LANDMARK_SLOWPOKE_WELL, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+ map OlivineLighthouse1F, TILESET_LIGHTHOUSE, DUNGEON, LANDMARK_LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineLighthouse2F, TILESET_LIGHTHOUSE, DUNGEON, LANDMARK_LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineLighthouse3F, TILESET_LIGHTHOUSE, DUNGEON, LANDMARK_LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineLighthouse4F, TILESET_LIGHTHOUSE, DUNGEON, LANDMARK_LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineLighthouse5F, TILESET_LIGHTHOUSE, DUNGEON, LANDMARK_LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivineLighthouse6F, TILESET_LIGHTHOUSE, DUNGEON, LANDMARK_LIGHTHOUSE, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map MahoganyMart1F, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map TeamRocketBaseB1F, TILESET_UNDERGROUND, DUNGEON, LANDMARK_MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map TeamRocketBaseB2F, TILESET_FACILITY, DUNGEON, LANDMARK_MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map TeamRocketBaseB3F, TILESET_FACILITY, DUNGEON, LANDMARK_MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map IlexForest, TILESET_FOREST, CAVE, LANDMARK_ILEX_FOREST, MUSIC_UNION_CAVE, FALSE, PALETTE_NITE, FISHGROUP_POND
+ map GoldenrodUnderground, TILESET_GATE, DUNGEON, LANDMARK_GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodUndergroundSwitchRoomEntrances, TILESET_ELITE_FOUR_ROOM, DUNGEON, LANDMARK_GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStoreB1F, TILESET_UNDERGROUND, DUNGEON, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodUndergroundWarehouse, TILESET_UNDERGROUND, DUNGEON, LANDMARK_GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map MountMortar1FOutside, TILESET_DARK_CAVE, CAVE, LANDMARK_MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+ map MountMortar1FInside, TILESET_DARK_CAVE, CAVE, LANDMARK_MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+ map MountMortar2FInside, TILESET_DARK_CAVE, CAVE, LANDMARK_MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+ map MountMortarB1F, TILESET_DARK_CAVE, CAVE, LANDMARK_MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+ map IcePath1F, TILESET_ICE_PATH, CAVE, LANDMARK_ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+ map IcePathB1F, TILESET_ICE_PATH, CAVE, LANDMARK_ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+ map IcePathB2FMahoganySide, TILESET_ICE_PATH, CAVE, LANDMARK_ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+ map IcePathB2FBlackthornSide, TILESET_ICE_PATH, CAVE, LANDMARK_ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+ map IcePathB3F, TILESET_ICE_PATH, CAVE, LANDMARK_ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+ map WhirlIslandNW, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map WhirlIslandNE, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map WhirlIslandSW, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map WhirlIslandCave, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map WhirlIslandSE, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map WhirlIslandB1F, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map WhirlIslandB2F, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map WhirlIslandLugiaChamber, TILESET_DARK_CAVE, CAVE, LANDMARK_WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+ map SilverCaveRoom1, TILESET_DARK_CAVE, CAVE, LANDMARK_SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+ map SilverCaveRoom2, TILESET_CAVE, CAVE, LANDMARK_SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+ map SilverCaveRoom3, TILESET_CAVE, CAVE, LANDMARK_SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_DAY, FISHGROUP_LAKE
+ map SilverCaveItemRooms, TILESET_CAVE, CAVE, LANDMARK_SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+ map DarkCaveVioletEntrance, TILESET_DARK_CAVE, CAVE, LANDMARK_DARK_CAVE, MUSIC_DARK_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+ map DarkCaveBlackthornEntrance, TILESET_DARK_CAVE, CAVE, LANDMARK_DARK_CAVE, MUSIC_DARK_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+ map DragonsDen1F, TILESET_CAVE, CAVE, LANDMARK_DRAGONS_DEN, MUSIC_DRAGONS_DEN, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+ map DragonsDenB1F, TILESET_JOHTO, CAVE, LANDMARK_DRAGONS_DEN, MUSIC_DRAGONS_DEN, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+ map TohjoFalls, TILESET_CAVE, CAVE, LANDMARK_TOHJO_FALLS, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+ map DiglettsCave, TILESET_CAVE, CAVE, LANDMARK_DIGLETTS_CAVE, MUSIC_MT_MOON, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+ map MountMoon, TILESET_CAVE, CAVE, LANDMARK_MT_MOON, MUSIC_MT_MOON, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+ map UndergroundPath, TILESET_UNDERGROUND, GATE, LANDMARK_UNDERGROUND_PATH, MUSIC_MT_MOON, FALSE, PALETTE_NITE, FISHGROUP_SHORE
+ map RockTunnel1F, TILESET_DARK_CAVE, CAVE, LANDMARK_ROCK_TUNNEL, MUSIC_MT_MOON, TRUE, PALETTE_DARK, FISHGROUP_SHORE
+ map RockTunnelB1F, TILESET_DARK_CAVE, CAVE, LANDMARK_ROCK_TUNNEL, MUSIC_MT_MOON, TRUE, PALETTE_DARK, FISHGROUP_SHORE
+ map SafariZoneFuchsiaGateBeta, TILESET_GATE, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SafariZoneBeta, TILESET_PARK, CAVE, LANDMARK_FUCHSIA_CITY, MUSIC_EVOLUTION, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map VictoryRoad, TILESET_CAVE, CAVE, LANDMARK_VICTORY_ROAD, MUSIC_VICTORY_ROAD, TRUE, PALETTE_NITE, FISHGROUP_SHORE
MapGroup_Ecruteak:
- map EcruteakTinTowerEntrance, TILESET_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map WiseTriosRoom, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map EcruteakPokecenter1F, TILESET_POKECENTER, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map EcruteakLugiaSpeechHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map DanceTheatre, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map EcruteakMart, TILESET_MART, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map EcruteakGym, TILESET_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map EcruteakItemfinderHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map EcruteakCity, TILESET_JOHTO, TOWN, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map EcruteakTinTowerEntrance, TILESET_TOWER, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map WiseTriosRoom, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map EcruteakPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map EcruteakLugiaSpeechHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map DanceTheatre, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_DANCING_HALL, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map EcruteakMart, TILESET_MART, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map EcruteakGym, TILESET_TOWER, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map EcruteakItemfinderHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map EcruteakCity, TILESET_JOHTO, TOWN, LANDMARK_ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
MapGroup_Blackthorn:
- map BlackthornGym1F, TILESET_ELITE_FOUR_ROOM, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map BlackthornGym2F, TILESET_ELITE_FOUR_ROOM, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map BlackthornDragonSpeechHouse, TILESET_HOUSE, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BlackthornEmysHouse, TILESET_HOUSE, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BlackthornMart, TILESET_MART, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BlackthornPokecenter1F, TILESET_POKECENTER, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map MoveDeletersHouse, TILESET_HOUSE, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route45, TILESET_JOHTO, ROUTE, ROUTE_45, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_DRATINI_2
- map Route46, TILESET_JOHTO, ROUTE, ROUTE_46, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map BlackthornCity, TILESET_JOHTO, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map BlackthornGym1F, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_BLACKTHORN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map BlackthornGym2F, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_BLACKTHORN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map BlackthornDragonSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BlackthornEmysHouse, TILESET_HOUSE, INDOOR, LANDMARK_BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BlackthornMart, TILESET_MART, INDOOR, LANDMARK_BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BlackthornPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map MoveDeletersHouse, TILESET_HOUSE, INDOOR, LANDMARK_BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route45, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_45, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_DRATINI_2
+ map Route46, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_46, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map BlackthornCity, TILESET_JOHTO, TOWN, LANDMARK_BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_POND
MapGroup_Cinnabar:
- map CinnabarPokecenter1F, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CinnabarPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route19FuchsiaGate, TILESET_GATE, GATE, ROUTE_19, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SeafoamGym, TILESET_CAVE, INDOOR, SEAFOAM_ISLANDS, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map Route19, TILESET_KANTO, ROUTE, ROUTE_19, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route20, TILESET_KANTO, ROUTE, ROUTE_20, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map Route21, TILESET_KANTO, ROUTE, ROUTE_21, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map CinnabarIsland, TILESET_KANTO, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map CinnabarPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CinnabarPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route19FuchsiaGate, TILESET_GATE, GATE, LANDMARK_ROUTE_19, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SeafoamGym, TILESET_CAVE, INDOOR, LANDMARK_SEAFOAM_ISLANDS, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route19, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_19, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route20, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_20, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map Route21, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_21, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map CinnabarIsland, TILESET_KANTO, TOWN, LANDMARK_CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
MapGroup_Cerulean:
- map CeruleanGymBadgeSpeechHouse, TILESET_HOUSE, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeruleanPoliceStation, TILESET_HOUSE, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeruleanTradeSpeechHouse, TILESET_HOUSE, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeruleanPokecenter1F, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeruleanPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeruleanGym, TILESET_PORT, INDOOR, CERULEAN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map CeruleanMart, TILESET_MART, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route10Pokecenter1F, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route10Pokecenter2FBeta, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PowerPlant, TILESET_FACILITY, INDOOR, POWER_PLANT, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BillsHouse, TILESET_HOUSE, INDOOR, ROUTE_25, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route4, TILESET_KANTO, ROUTE, ROUTE_4, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
- map Route9, TILESET_KANTO, ROUTE, ROUTE_9, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
- map Route10North, TILESET_KANTO, ROUTE, ROUTE_10, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
- map Route24, TILESET_KANTO, ROUTE, ROUTE_24, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
- map Route25, TILESET_KANTO, ROUTE, ROUTE_25, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
- map CeruleanCity, TILESET_KANTO, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map CeruleanGymBadgeSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeruleanPoliceStation, TILESET_HOUSE, INDOOR, LANDMARK_CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeruleanTradeSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeruleanPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_CERULEAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeruleanPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_CERULEAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeruleanGym, TILESET_PORT, INDOOR, LANDMARK_CERULEAN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeruleanMart, TILESET_MART, INDOOR, LANDMARK_CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route10Pokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_ROUTE_10, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route10Pokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_ROUTE_10, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PowerPlant, TILESET_FACILITY, INDOOR, LANDMARK_POWER_PLANT, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BillsHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_25, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route4, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_4, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map Route9, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_9, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map Route10North, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_10, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map Route24, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_24, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map Route25, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_25, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map CeruleanCity, TILESET_KANTO, TOWN, LANDMARK_CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
MapGroup_Azalea:
- map AzaleaPokecenter1F, TILESET_POKECENTER, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CharcoalKiln, TILESET_HOUSE, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map AzaleaMart, TILESET_MART, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map KurtsHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map AzaleaGym, TILESET_ELITE_FOUR_ROOM, INDOOR, AZALEA_TOWN, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map Route33, TILESET_JOHTO_MODERN, ROUTE, ROUTE_33, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map AzaleaTown, TILESET_JOHTO_MODERN, TOWN, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map AzaleaPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_AZALEA_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CharcoalKiln, TILESET_HOUSE, INDOOR, LANDMARK_AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map AzaleaMart, TILESET_MART, INDOOR, LANDMARK_AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map KurtsHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map AzaleaGym, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_AZALEA_TOWN, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route33, TILESET_JOHTO_MODERN, ROUTE, LANDMARK_ROUTE_33, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map AzaleaTown, TILESET_JOHTO_MODERN, TOWN, LANDMARK_AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
MapGroup_LakeOfRage:
- map LakeOfRageHiddenPowerHouse, TILESET_HOUSE, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map LakeOfRageMagikarpHouse, TILESET_HOUSE, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route43MahoganyGate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route43Gate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route43, TILESET_JOHTO, ROUTE, ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map LakeOfRage, TILESET_JOHTO, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_GYARADOS
+ map LakeOfRageHiddenPowerHouse, TILESET_HOUSE, INDOOR, LANDMARK_LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map LakeOfRageMagikarpHouse, TILESET_HOUSE, INDOOR, LANDMARK_LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route43MahoganyGate, TILESET_GATE, GATE, LANDMARK_ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route43Gate, TILESET_GATE, GATE, LANDMARK_ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route43, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map LakeOfRage, TILESET_JOHTO, TOWN, LANDMARK_LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_GYARADOS
MapGroup_Violet:
- map Route32, TILESET_JOHTO, ROUTE, ROUTE_32, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH
- map Route35, TILESET_JOHTO, ROUTE, ROUTE_35, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map Route36, TILESET_JOHTO, ROUTE, ROUTE_36, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route37, TILESET_JOHTO, ROUTE, ROUTE_37, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map VioletCity, TILESET_JOHTO, TOWN, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map VioletMart, TILESET_MART, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VioletGym, TILESET_ELITE_FOUR_ROOM, INDOOR, VIOLET_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map EarlsPokemonAcademy, TILESET_LAB, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VioletNicknameSpeechHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VioletPokecenter1F, TILESET_POKECENTER, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VioletKylesHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route32RuinsOfAlphGate, TILESET_GATE, GATE, ROUTE_32, MUSIC_ROUTE_30, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route32Pokecenter1F, TILESET_POKECENTER, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route35GoldenrodGate, TILESET_GATE, GATE, ROUTE_35, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route35NationalParkGate, TILESET_GATE, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route36RuinsOfAlphGate, TILESET_GATE, GATE, ROUTE_36, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route36NationalParkGate, TILESET_GATE, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route32, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_32, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH
+ map Route35, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_35, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map Route36, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_36, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route37, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_37, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map VioletCity, TILESET_JOHTO, TOWN, LANDMARK_VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map VioletMart, TILESET_MART, INDOOR, LANDMARK_VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VioletGym, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_VIOLET_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map EarlsPokemonAcademy, TILESET_LAB, INDOOR, LANDMARK_VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VioletNicknameSpeechHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VioletPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_VIOLET_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VioletKylesHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route32RuinsOfAlphGate, TILESET_GATE, GATE, LANDMARK_ROUTE_32, MUSIC_ROUTE_30, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route32Pokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_ROUTE_32, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route35GoldenrodGate, TILESET_GATE, GATE, LANDMARK_ROUTE_35, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route35NationalParkGate, TILESET_GATE, INDOOR, LANDMARK_ROUTE_35, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route36RuinsOfAlphGate, TILESET_GATE, GATE, LANDMARK_ROUTE_36, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route36NationalParkGate, TILESET_GATE, INDOOR, LANDMARK_ROUTE_36, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Goldenrod:
- map Route34, TILESET_JOHTO_MODERN, ROUTE, ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map GoldenrodCity, TILESET_JOHTO_MODERN, TOWN, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map GoldenrodGym, TILESET_ELITE_FOUR_ROOM, INDOOR, GOLDENROD_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodBikeShop, TILESET_CHAMPIONS_ROOM, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodHappinessRater, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BillsFamilysHouse, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodFlowerShop, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodPokecenter1F, TILESET_POKECENTER, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodPPSpeechHouse, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodNameRater, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStore1F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStore2F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStore3F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStore4F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStore5F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStore6F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodDeptStoreElevator, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GoldenrodGameCorner, TILESET_GAME_CORNER, INDOOR, GOLDENROD_CITY, MUSIC_GAME_CORNER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map IlexForestAzaleaGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route34IlexForestGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map DayCare, TILESET_HOUSE, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route34, TILESET_JOHTO_MODERN, ROUTE, LANDMARK_ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map GoldenrodCity, TILESET_JOHTO_MODERN, TOWN, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map GoldenrodGym, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodBikeShop, TILESET_CHAMPIONS_ROOM, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodHappinessRater, TILESET_HOUSE, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BillsFamilysHouse, TILESET_HOUSE, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodFlowerShop, TILESET_HOUSE, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodPPSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodNameRater, TILESET_HOUSE, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStore1F, TILESET_MART, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStore2F, TILESET_MART, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStore3F, TILESET_MART, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStore4F, TILESET_MART, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStore5F, TILESET_MART, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStore6F, TILESET_MART, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodDeptStoreElevator, TILESET_MART, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GoldenrodGameCorner, TILESET_GAME_CORNER, INDOOR, LANDMARK_GOLDENROD_CITY, MUSIC_GAME_CORNER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map IlexForestAzaleaGate, TILESET_GATE, GATE, LANDMARK_ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route34IlexForestGate, TILESET_GATE, GATE, LANDMARK_ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map DayCare, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_34, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Vermilion:
- map Route6, TILESET_KANTO, ROUTE, ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map Route11, TILESET_KANTO, ROUTE, ROUTE_11, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map VermilionCity, TILESET_KANTO, TOWN, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map VermilionFishingSpeechHouse, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VermilionPokecenter1F, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VermilionPokecenter2FBeta, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PokemonFanClub, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VermilionMagnetTrainSpeechHouse, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VermilionMart, TILESET_MART, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VermilionDiglettsCaveSpeechHouse, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VermilionGym, TILESET_GAME_CORNER, INDOOR, VERMILION_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map Route6SaffronGate, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route6UndergroundPathEntrance, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route6, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map Route11, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_11, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map VermilionCity, TILESET_KANTO, TOWN, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map VermilionFishingSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VermilionPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VermilionPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PokemonFanClub, TILESET_HOUSE, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VermilionMagnetTrainSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VermilionMart, TILESET_MART, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VermilionDiglettsCaveSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VermilionGym, TILESET_GAME_CORNER, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route6SaffronGate, TILESET_GATE, GATE, LANDMARK_ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route6UndergroundPathEntrance, TILESET_GATE, GATE, LANDMARK_ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Pallet:
- map Route1, TILESET_KANTO, ROUTE, ROUTE_1, MUSIC_ROUTE_1, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map PalletTown, TILESET_KANTO, TOWN, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map RedsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map RedsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map BluesHouse, TILESET_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OaksLab, TILESET_LAB, INDOOR, PALLET_TOWN, MUSIC_POKEMON_TALK, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route1, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_1, MUSIC_ROUTE_1, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map PalletTown, TILESET_KANTO, TOWN, LANDMARK_PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map RedsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, LANDMARK_PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map RedsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, LANDMARK_PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map BluesHouse, TILESET_HOUSE, INDOOR, LANDMARK_PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OaksLab, TILESET_LAB, INDOOR, LANDMARK_PALLET_TOWN, MUSIC_POKEMON_TALK, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Pewter:
- map Route3, TILESET_KANTO, ROUTE, ROUTE_3, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map PewterCity, TILESET_KANTO, TOWN, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map PewterNidoranSpeechHouse, TILESET_HOUSE, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PewterGym, TILESET_TOWER, INDOOR, PEWTER_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map PewterMart, TILESET_MART, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PewterPokecenter1F, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PewterPokecenter2FBeta, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PewterSnoozeSpeechHouse, TILESET_HOUSE, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route3, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_3, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map PewterCity, TILESET_KANTO, TOWN, LANDMARK_PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map PewterNidoranSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PewterGym, TILESET_TOWER, INDOOR, LANDMARK_PEWTER_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map PewterMart, TILESET_MART, INDOOR, LANDMARK_PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PewterPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_PEWTER_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PewterPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PewterSnoozeSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_FastShip:
- map OlivinePort, TILESET_PORT, ROUTE, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map VermilionPort, TILESET_PORT, ROUTE, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map FastShip1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map FastShipCabins_NNW_NNE_NE, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map FastShipCabins_SW_SSW_NW, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map FastShipCabins_SE_SSE_CaptainsCabin, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map FastShipB1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map OlivinePortPassage, TILESET_UNDERGROUND, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VermilionPortPassage, TILESET_UNDERGROUND, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map MountMoonSquare, TILESET_KANTO, ROUTE, MT_MOON, MUSIC_MT_MOON_SQUARE, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map MountMoonGiftShop, TILESET_TRADITIONAL_HOUSE, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TinTowerRoof, TILESET_TOWER, ROUTE, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map OlivinePort, TILESET_PORT, ROUTE, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map VermilionPort, TILESET_PORT, ROUTE, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map FastShip1F, TILESET_LIGHTHOUSE, INDOOR, LANDMARK_FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map FastShipCabins_NNW_NNE_NE, TILESET_LIGHTHOUSE, INDOOR, LANDMARK_FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map FastShipCabins_SW_SSW_NW, TILESET_LIGHTHOUSE, INDOOR, LANDMARK_FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map FastShipCabins_SE_SSE_CaptainsCabin, TILESET_LIGHTHOUSE, INDOOR, LANDMARK_FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map FastShipB1F, TILESET_LIGHTHOUSE, INDOOR, LANDMARK_FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map OlivinePortPassage, TILESET_UNDERGROUND, INDOOR, LANDMARK_OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VermilionPortPassage, TILESET_UNDERGROUND, INDOOR, LANDMARK_VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map MountMoonSquare, TILESET_KANTO, ROUTE, LANDMARK_MT_MOON, MUSIC_MT_MOON_SQUARE, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map MountMoonGiftShop, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_MT_MOON, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TinTowerRoof, TILESET_TOWER, ROUTE, LANDMARK_TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
MapGroup_Indigo:
- map Route23, TILESET_KANTO, TOWN, ROUTE_23, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map IndigoPlateauPokecenter1F, TILESET_POKECENTER, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map WillsRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map KogasRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map BrunosRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map KarensRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map LancesRoom, TILESET_CHAMPIONS_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map HallOfFame, TILESET_ICE_PATH, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route23, TILESET_KANTO, TOWN, LANDMARK_ROUTE_23, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map IndigoPlateauPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map WillsRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map KogasRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map BrunosRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map KarensRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, LANDMARK_INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map LancesRoom, TILESET_CHAMPIONS_ROOM, INDOOR, LANDMARK_INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map HallOfFame, TILESET_ICE_PATH, INDOOR, LANDMARK_INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, TRUE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Fuchsia:
- map Route13, TILESET_KANTO, ROUTE, ROUTE_13, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
- map Route14, TILESET_KANTO, ROUTE, ROUTE_14, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route15, TILESET_KANTO, ROUTE, ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route18, TILESET_KANTO, ROUTE, ROUTE_18, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map FuchsiaCity, TILESET_KANTO, TOWN, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_AUTO, FISHGROUP_GYARADOS
- map FuchsiaMart, TILESET_MART, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SafariZoneMainOffice, TILESET_GAME_CORNER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map FuchsiaGym, TILESET_LAB, INDOOR, FUCHSIA_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map BillsBrothersHouse, TILESET_HOUSE, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map FuchsiaPokecenter1F, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map FuchsiaPokecenter2FBeta, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SafariZoneWardensHome, TILESET_HOUSE, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route15FuchsiaGate, TILESET_GATE, GATE, ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route13, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_13, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
+ map Route14, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_14, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route15, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route18, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_18, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map FuchsiaCity, TILESET_KANTO, TOWN, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_AUTO, FISHGROUP_GYARADOS
+ map FuchsiaMart, TILESET_MART, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SafariZoneMainOffice, TILESET_GAME_CORNER, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map FuchsiaGym, TILESET_LAB, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map BillsBrothersHouse, TILESET_HOUSE, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map FuchsiaPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map FuchsiaPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SafariZoneWardensHome, TILESET_HOUSE, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route15FuchsiaGate, TILESET_GATE, GATE, LANDMARK_ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Lavender:
- map Route8, TILESET_KANTO, ROUTE, ROUTE_8, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route12, TILESET_KANTO, ROUTE, ROUTE_12, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
- map Route10South, TILESET_KANTO, ROUTE, ROUTE_10, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
- map LavenderTown, TILESET_KANTO, TOWN, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map LavenderPokecenter1F, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map LavenderPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map MrFujisHouse, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map LavenderSpeechHouse, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map LavenderNameRater, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map LavenderMart, TILESET_MART, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SoulHouse, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map LavRadioTower1F, TILESET_RADIO_TOWER, INDOOR, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route8SaffronGate, TILESET_GATE, GATE, ROUTE_8, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route12SuperRodHouse, TILESET_HOUSE, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route8, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_8, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route12, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_12, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
+ map Route10South, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_10, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+ map LavenderTown, TILESET_KANTO, TOWN, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map LavenderPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map LavenderPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map MrFujisHouse, TILESET_HOUSE, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map LavenderSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map LavenderNameRater, TILESET_HOUSE, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map LavenderMart, TILESET_MART, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SoulHouse, TILESET_HOUSE, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map LavRadioTower1F, TILESET_RADIO_TOWER, INDOOR, LANDMARK_LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route8SaffronGate, TILESET_GATE, GATE, LANDMARK_ROUTE_8, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route12SuperRodHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_12, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Silver:
- map Route28, TILESET_KANTO, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map SilverCaveOutside, TILESET_KANTO, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map SilverCavePokecenter1F, TILESET_POKECENTER, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route28SteelWingHouse, TILESET_HOUSE, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route28, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_28, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map SilverCaveOutside, TILESET_KANTO, TOWN, LANDMARK_SILVER_CAVE, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map SilverCavePokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_SILVER_CAVE, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route28SteelWingHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_28, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_CableClub:
- map Pokecenter2F, TILESET_POKECENTER, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map TradeCenter, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map Colosseum, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map TimeCapsule, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map Pokecenter2F, TILESET_POKECENTER, INDOOR, LANDMARK_SPECIAL, MUSIC_POKEMON_CENTER, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map TradeCenter, TILESET_GATE, INDOOR, LANDMARK_SPECIAL, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map Colosseum, TILESET_GATE, INDOOR, LANDMARK_SPECIAL, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map TimeCapsule, TILESET_GATE, INDOOR, LANDMARK_SPECIAL, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Celadon:
- map Route7, TILESET_KANTO, ROUTE, ROUTE_7, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route16, TILESET_KANTO, ROUTE, ROUTE_16, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route17, TILESET_KANTO, ROUTE, ROUTE_17, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_NONE
- map CeladonCity, TILESET_KANTO, TOWN, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_AUTO, FISHGROUP_NONE
- map CeladonDeptStore1F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonDeptStore2F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonDeptStore3F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonDeptStore4F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonDeptStore5F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonDeptStore6F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonDeptStoreElevator, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonMansion1F, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonMansion2F, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonMansion3F, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonMansionRoof, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonMansionRoofHouse, TILESET_HOUSE, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonPokecenter1F, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonGameCorner, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_GAME_CORNER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonGameCornerPrizeRoom, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonGym, TILESET_TRAIN_STATION, INDOOR, CELADON_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map CeladonCafe, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route16FuchsiaSpeechHouse, TILESET_HOUSE, INDOOR, ROUTE_16, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route16Gate, TILESET_GATE, GATE, ROUTE_16, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route7SaffronGate, TILESET_GATE, GATE, ROUTE_7, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route17Route18Gate, TILESET_GATE, GATE, ROUTE_17, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route7, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_7, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route16, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_16, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route17, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_17, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_NONE
+ map CeladonCity, TILESET_KANTO, TOWN, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_AUTO, FISHGROUP_NONE
+ map CeladonDeptStore1F, TILESET_MART, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonDeptStore2F, TILESET_MART, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonDeptStore3F, TILESET_MART, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonDeptStore4F, TILESET_MART, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonDeptStore5F, TILESET_MART, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonDeptStore6F, TILESET_MART, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonDeptStoreElevator, TILESET_MART, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonMansion1F, TILESET_MANSION, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonMansion2F, TILESET_MANSION, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonMansion3F, TILESET_MANSION, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonMansionRoof, TILESET_MANSION, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonMansionRoofHouse, TILESET_HOUSE, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_CELADON_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonGameCorner, TILESET_GAME_CORNER, INDOOR, LANDMARK_CELADON_CITY, MUSIC_GAME_CORNER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonGameCornerPrizeRoom, TILESET_GAME_CORNER, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonGym, TILESET_TRAIN_STATION, INDOOR, LANDMARK_CELADON_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map CeladonCafe, TILESET_GAME_CORNER, INDOOR, LANDMARK_CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route16FuchsiaSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_16, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route16Gate, TILESET_GATE, GATE, LANDMARK_ROUTE_16, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route7SaffronGate, TILESET_GATE, GATE, LANDMARK_ROUTE_7, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route17Route18Gate, TILESET_GATE, GATE, LANDMARK_ROUTE_17, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Cianwood:
- map Route40, TILESET_JOHTO, ROUTE, ROUTE_40, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route41, TILESET_JOHTO, ROUTE, ROUTE_41, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map CianwoodCity, TILESET_JOHTO, TOWN, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map ManiasHouse, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CianwoodGym, TILESET_TOWER, INDOOR, CIANWOOD_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map CianwoodPokecenter1F, TILESET_POKECENTER, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CianwoodPharmacy, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CianwoodPhotoStudio, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CianwoodLugiaSpeechHouse, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route40, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_40, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route41, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_41, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map CianwoodCity, TILESET_JOHTO, TOWN, LANDMARK_CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map ManiasHouse, TILESET_HOUSE, INDOOR, LANDMARK_CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CianwoodGym, TILESET_TOWER, INDOOR, LANDMARK_CIANWOOD_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map CianwoodPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_CIANWOOD_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CianwoodPharmacy, TILESET_HOUSE, INDOOR, LANDMARK_CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CianwoodPhotoStudio, TILESET_HOUSE, INDOOR, LANDMARK_CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CianwoodLugiaSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Viridian:
- map Route2, TILESET_KANTO, ROUTE, ROUTE_2, MUSIC_ROUTE_2, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map Route22, TILESET_KANTO, ROUTE, ROUTE_22, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map ViridianCity, TILESET_KANTO, TOWN, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map ViridianGym, TILESET_TRAIN_STATION, INDOOR, VIRIDIAN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map ViridianNicknameSpeechHouse, TILESET_HOUSE, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TrainerHouse1F, TILESET_HOUSE, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map TrainerHouseB1F, TILESET_FACILITY, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map ViridianMart, TILESET_MART, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map ViridianPokecenter1F, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map ViridianPokecenter2FBeta, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route2NuggetHouse, TILESET_HOUSE, INDOOR, ROUTE_2, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route2Gate, TILESET_GATE, GATE, ROUTE_2, MUSIC_ROUTE_2, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map VictoryRoadGate, TILESET_GATE, GATE, ROUTE_26, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route2, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_2, MUSIC_ROUTE_2, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map Route22, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_22, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map ViridianCity, TILESET_KANTO, TOWN, LANDMARK_VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map ViridianGym, TILESET_TRAIN_STATION, INDOOR, LANDMARK_VIRIDIAN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map ViridianNicknameSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TrainerHouse1F, TILESET_HOUSE, INDOOR, LANDMARK_VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map TrainerHouseB1F, TILESET_FACILITY, INDOOR, LANDMARK_VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map ViridianMart, TILESET_MART, INDOOR, LANDMARK_VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map ViridianPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map ViridianPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route2NuggetHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_2, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route2Gate, TILESET_GATE, GATE, LANDMARK_ROUTE_2, MUSIC_ROUTE_2, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map VictoryRoadGate, TILESET_GATE, GATE, LANDMARK_ROUTE_26, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_NewBark:
- map Route26, TILESET_JOHTO, ROUTE, ROUTE_26, MUSIC_ROUTE_26, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map Route27, TILESET_JOHTO, ROUTE, ROUTE_27, MUSIC_ROUTE_26, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map Route29, TILESET_JOHTO, ROUTE, ROUTE_29, MUSIC_ROUTE_29, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map NewBarkTown, TILESET_JOHTO, TOWN, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
- map ElmsLab, TILESET_LAB, INDOOR, NEW_BARK_TOWN, MUSIC_PROF_ELM, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PlayersHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PlayersHouse2F, TILESET_PLAYERS_ROOM, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map PlayersNeighborsHouse, TILESET_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map ElmsHouse, TILESET_PLAYERS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route26HealHouse, TILESET_HOUSE, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map DayOfWeekSiblingsHouse, TILESET_HOUSE, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route27SandstormHouse, TILESET_HOUSE, INDOOR, ROUTE_27, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route29Route46Gate, TILESET_GATE, GATE, ROUTE_29, MUSIC_ROUTE_29, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route26, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_26, MUSIC_ROUTE_26, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map Route27, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_27, MUSIC_ROUTE_26, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map Route29, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_29, MUSIC_ROUTE_29, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map NewBarkTown, TILESET_JOHTO, TOWN, LANDMARK_NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+ map ElmsLab, TILESET_LAB, INDOOR, LANDMARK_NEW_BARK_TOWN, MUSIC_PROF_ELM, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PlayersHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, LANDMARK_NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PlayersHouse2F, TILESET_PLAYERS_ROOM, INDOOR, LANDMARK_NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map PlayersNeighborsHouse, TILESET_HOUSE, INDOOR, LANDMARK_NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map ElmsHouse, TILESET_PLAYERS_HOUSE, INDOOR, LANDMARK_NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route26HealHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_26, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map DayOfWeekSiblingsHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_26, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route27SandstormHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_27, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route29Route46Gate, TILESET_GATE, GATE, LANDMARK_ROUTE_29, MUSIC_ROUTE_29, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Saffron:
- map Route5, TILESET_KANTO, ROUTE, ROUTE_5, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map SaffronCity, TILESET_KANTO, TOWN, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map FightingDojo, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SaffronGym, TILESET_UNDERGROUND, INDOOR, SAFFRON_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
- map SaffronMart, TILESET_MART, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SaffronPokecenter1F, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SaffronPokecenter2FBeta, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map MrPsychicsHouse, TILESET_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SaffronMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map SilphCo1F, TILESET_FACILITY, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CopycatsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CopycatsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route5UndergroundPathEntrance, TILESET_GATE, GATE, ROUTE_5, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route5SaffronGate, TILESET_GATE, GATE, ROUTE_5, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route5CleanseTagHouse, TILESET_HOUSE, INDOOR, ROUTE_5, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route5, TILESET_KANTO, ROUTE, LANDMARK_ROUTE_5, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map SaffronCity, TILESET_KANTO, TOWN, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map FightingDojo, TILESET_TRAIN_STATION, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SaffronGym, TILESET_UNDERGROUND, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+ map SaffronMart, TILESET_MART, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SaffronPokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SaffronPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map MrPsychicsHouse, TILESET_HOUSE, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SaffronMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map SilphCo1F, TILESET_FACILITY, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CopycatsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CopycatsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, LANDMARK_SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route5UndergroundPathEntrance, TILESET_GATE, GATE, LANDMARK_ROUTE_5, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route5SaffronGate, TILESET_GATE, GATE, LANDMARK_ROUTE_5, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route5CleanseTagHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_5, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
MapGroup_Cherrygrove:
- map Route30, TILESET_JOHTO, ROUTE, ROUTE_30, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map Route31, TILESET_JOHTO, ROUTE, ROUTE_31, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_POND
- map CherrygroveCity, TILESET_JOHTO, TOWN, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
- map CherrygroveMart, TILESET_MART, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CherrygrovePokecenter1F, TILESET_POKECENTER, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CherrygroveGymSpeechHouse, TILESET_HOUSE, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map GuideGentsHouse, TILESET_HOUSE, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map CherrygroveEvolutionSpeechHouse, TILESET_HOUSE, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route30BerryHouse, TILESET_HOUSE, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map MrPokemonsHouse, TILESET_FACILITY, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
- map Route31VioletGate, TILESET_GATE, GATE, ROUTE_31, MUSIC_ROUTE_30, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route30, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_30, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map Route31, TILESET_JOHTO, ROUTE, LANDMARK_ROUTE_31, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_POND
+ map CherrygroveCity, TILESET_JOHTO, TOWN, LANDMARK_CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+ map CherrygroveMart, TILESET_MART, INDOOR, LANDMARK_CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CherrygrovePokecenter1F, TILESET_POKECENTER, INDOOR, LANDMARK_CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CherrygroveGymSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map GuideGentsHouse, TILESET_HOUSE, INDOOR, LANDMARK_CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map CherrygroveEvolutionSpeechHouse, TILESET_HOUSE, INDOOR, LANDMARK_CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route30BerryHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_30, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map MrPokemonsHouse, TILESET_FACILITY, INDOOR, LANDMARK_ROUTE_30, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+ map Route31VioletGate, TILESET_GATE, GATE, LANDMARK_ROUTE_31, MUSIC_ROUTE_30, FALSE, PALETTE_DAY, FISHGROUP_SHORE
diff --git a/data/maps/outdoor_sprites.asm b/data/maps/outdoor_sprites.asm
new file mode 100644
index 00000000..160ca804
--- /dev/null
+++ b/data/maps/outdoor_sprites.asm
@@ -0,0 +1,369 @@
+; Valid sprite IDs for each map group.
+; Maps with environment ROUTE or TOWN can only use these sprites.
+
+OutdoorSprites:
+; entries correspond to map groups
+ dw OlivineGroupSprites
+ dw MahoganyGroupSprites
+ dw DungeonsGroupSprites
+ dw EcruteakGroupSprites
+ dw BlackthornGroupSprites
+ dw CinnabarGroupSprites
+ dw CeruleanGroupSprites
+ dw AzaleaGroupSprites
+ dw LakeOfRageGroupSprites
+ dw VioletGroupSprites
+ dw GoldenrodGroupSprites
+ dw VermilionGroupSprites
+ dw PalletGroupSprites
+ dw PewterGroupSprites
+ dw FastShipGroupSprites
+ dw IndigoGroupSprites
+ dw FuchsiaGroupSprites
+ dw LavenderGroupSprites
+ dw SilverGroupSprites
+ dw CableClubGroupSprites
+ dw CeladonGroupSprites
+ dw CianwoodGroupSprites
+ dw ViridianGroupSprites
+ dw NewBarkGroupSprites
+ dw SaffronGroupSprites
+ dw CherrygroveGroupSprites
+
+PalletGroupSprites:
+ 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
+
+ViridianGroupSprites:
+ 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
+
+PewterGroupSprites:
+ 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
+
+CinnabarGroupSprites:
+ 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
+
+CeruleanGroupSprites:
+ 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
+
+SaffronGroupSprites:
+ 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
+
+CeladonGroupSprites:
+ 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
+
+LavenderGroupSprites:
+ 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
+
+VermilionGroupSprites:
+ 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
+
+FuchsiaGroupSprites:
+ 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
+
+IndigoGroupSprites:
+ 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
+
+NewBarkGroupSprites:
+ 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
+
+CherrygroveGroupSprites:
+ 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
+
+SilverGroupSprites:
+ 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
+
+VioletGroupSprites:
+ 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
+
+EcruteakGroupSprites:
+ 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
+
+AzaleaGroupSprites:
+ 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
+
+GoldenrodGroupSprites:
+ 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
+
+CianwoodGroupSprites:
+ 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_YOUNGSTER
+ db SPRITE_TAUROS
+ db SPRITE_FRUIT_TREE
+ db SPRITE_ROCK
+
+OlivineGroupSprites:
+ 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_YOUNGSTER
+ db SPRITE_TAUROS
+ db SPRITE_FRUIT_TREE
+ db SPRITE_ROCK
+
+LakeOfRageGroupSprites:
+ 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
+
+MahoganyGroupSprites:
+ 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
+
+BlackthornGroupSprites:
+ 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
+
+DungeonsGroupSprites:
+ 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_GAMEBOY_KID
+ db SPRITE_SCIENTIST
+ db SPRITE_POKE_BALL
+ db SPRITE_BOULDER
+
+FastShipGroupSprites:
+ 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
+
+CableClubGroupSprites:
+ 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
diff --git a/data/maps/scenes.asm b/data/maps/scenes.asm
new file mode 100644
index 00000000..13ce4dcd
--- /dev/null
+++ b/data/maps/scenes.asm
@@ -0,0 +1,67 @@
+scene_var: MACRO
+; map, variable
+ map_id \1
+ dw \2
+ENDM
+
+MapScenes::
+ scene_var POKECENTER_2F, wPokecenter2FSceneID
+ scene_var TRADE_CENTER, wTradeCenterSceneID
+ scene_var COLOSSEUM, wColosseumSceneID
+ scene_var TIME_CAPSULE, wTimeCapsuleSceneID
+ scene_var POWER_PLANT, wPowerPlantSceneID
+ scene_var CERULEAN_GYM, wCeruleanGymSceneID
+ scene_var ROUTE_25, wRoute25SceneID
+ scene_var TRAINER_HOUSE_B1F, wTrainerHouseB1FSceneID
+ scene_var VICTORY_ROAD_GATE, wVictoryRoadGateSceneID
+ scene_var SAFFRON_MAGNET_TRAIN_STATION, wSaffronMagnetTrainStationSceneID
+ scene_var ROUTE_16_GATE, wRoute16GateSceneID
+ scene_var ROUTE_17_ROUTE_18_GATE, wRoute17Route18GateSceneID
+ scene_var INDIGO_PLATEAU_POKECENTER_1F, wIndigoPlateauPokecenter1FSceneID
+ scene_var WILLS_ROOM, wWillsRoomSceneID
+ scene_var KOGAS_ROOM, wKogasRoomSceneID
+ scene_var BRUNOS_ROOM, wBrunosRoomSceneID
+ scene_var KARENS_ROOM, wKarensRoomSceneID
+ scene_var LANCES_ROOM, wLancesRoomSceneID
+ scene_var HALL_OF_FAME, wHallOfFameSceneID
+ scene_var ROUTE_27, wRoute27SceneID
+ scene_var NEW_BARK_TOWN, wNewBarkTownSceneID
+ scene_var ELMS_LAB, wElmsLabSceneID
+ scene_var PLAYERS_HOUSE_1F, wPlayersHouse1FSceneID
+ scene_var ROUTE_29, wRoute29SceneID
+ scene_var CHERRYGROVE_CITY, wCherrygroveCitySceneID
+ scene_var MR_POKEMONS_HOUSE, wMrPokemonsHouseSceneID
+ scene_var ROUTE_32, wRoute32SceneID
+ scene_var ROUTE_35_NATIONAL_PARK_GATE, wRoute35NationalParkGateSceneID
+ scene_var ROUTE_36_NATIONAL_PARK_GATE, wRoute36NationalParkGateSceneID
+ scene_var AZALEA_TOWN, wAzaleaTownSceneID
+ scene_var GOLDENROD_GYM, wGoldenrodGymSceneID
+ scene_var GOLDENROD_MAGNET_TRAIN_STATION, wGoldenrodMagnetTrainStationSceneID
+ scene_var OLIVINE_CITY, wOlivineCitySceneID
+ scene_var ROUTE_34, wRoute34SceneID ; unused
+ scene_var ECRUTEAK_TIN_TOWER_ENTRANCE, wEcruteakTinTowerEntranceSceneID
+ scene_var ECRUTEAK_POKECENTER_1F, wEcruteakPokecenter1FSceneID
+ scene_var MAHOGANY_TOWN, wMahoganyTownSceneID
+ scene_var ROUTE_43_GATE, wRoute43GateSceneID
+ scene_var MOUNT_MOON, wMountMoonSceneID
+ scene_var SPROUT_TOWER_3F, wSproutTower3FSceneID
+ scene_var BURNED_TOWER_1F, wBurnedTower1FSceneID
+ scene_var BURNED_TOWER_B1F, wBurnedTowerB1FSceneID
+ scene_var RADIO_TOWER_5F, wRadioTower5FSceneID
+ scene_var RUINS_OF_ALPH_OUTSIDE, wRuinsOfAlphOutsideSceneID
+ scene_var RUINS_OF_ALPH_RESEARCH_CENTER, wRuinsOfAlphResearchCenterSceneID
+ scene_var RUINS_OF_ALPH_INNER_CHAMBER, wRuinsOfAlphInnerChamberSceneID
+ scene_var MAHOGANY_MART_1F, wMahoganyMart1FSceneID
+ scene_var TEAM_ROCKET_BASE_B1F, wTeamRocketBaseB1FSceneID
+ scene_var TEAM_ROCKET_BASE_B2F, wTeamRocketBaseB2FSceneID
+ scene_var TEAM_ROCKET_BASE_B3F, wTeamRocketBaseB3FSceneID
+ scene_var GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES, wGoldenrodUndergroundSwitchRoomEntrancesSceneID
+ scene_var SILVER_CAVE_ROOM_3, wSilverCaveRoom3SceneID ; unused
+ scene_var VICTORY_ROAD, wVictoryRoadSceneID
+ scene_var DRAGONS_DEN_B1F, wDragonsDenB1FSceneID
+ scene_var OLIVINE_PORT, wOlivinePortSceneID
+ scene_var VERMILION_PORT, wVermilionPortSceneID
+ scene_var FAST_SHIP_1F, wFastShip1FSceneID
+ scene_var FAST_SHIP_B1F, wFastShipB1FSceneID
+ scene_var MOUNT_MOON_SQUARE, wMountMoonSquareSceneID
+ db -1 ; end
diff --git a/data/maps/scripts.asm b/data/maps/scripts.asm
index 160ef64e..54c71ab9 100644
--- a/data/maps/scripts.asm
+++ b/data/maps/scripts.asm
@@ -1,4 +1,5 @@
SECTION "Map Scripts 1", ROMX
+
INCLUDE "maps/SproutTower1F.asm"
INCLUDE "maps/SproutTower2F.asm"
INCLUDE "maps/SproutTower3F.asm"
@@ -22,7 +23,9 @@ INCLUDE "maps/SafariZoneFuchsiaGateBeta.asm"
INCLUDE "maps/SafariZoneBeta.asm"
INCLUDE "maps/VictoryRoad.asm"
+
SECTION "Map Scripts 2", ROMX
+
INCLUDE "maps/NationalPark.asm"
INCLUDE "maps/NationalParkBugContest.asm"
INCLUDE "maps/RadioTower1F.asm"
@@ -31,7 +34,9 @@ INCLUDE "maps/RadioTower3F.asm"
INCLUDE "maps/RadioTower4F.asm"
INCLUDE "maps/RadioTower5F.asm"
+
SECTION "Map Scripts 3", ROMX
+
INCLUDE "maps/RuinsOfAlphOutside.asm"
INCLUDE "maps/RuinsOfAlphHoOhChamber.asm"
INCLUDE "maps/RuinsOfAlphKabutoChamber.asm"
@@ -51,14 +56,18 @@ INCLUDE "maps/OlivineLighthouse4F.asm"
INCLUDE "maps/OlivineLighthouse5F.asm"
INCLUDE "maps/OlivineLighthouse6F.asm"
+
SECTION "Map Scripts 4", ROMX
+
INCLUDE "maps/MahoganyMart1F.asm"
INCLUDE "maps/TeamRocketBaseB1F.asm"
INCLUDE "maps/TeamRocketBaseB2F.asm"
INCLUDE "maps/TeamRocketBaseB3F.asm"
INCLUDE "maps/IlexForest.asm"
+
SECTION "Map Scripts 5", ROMX
+
INCLUDE "maps/GoldenrodUnderground.asm"
INCLUDE "maps/GoldenrodUndergroundSwitchRoomEntrances.asm"
INCLUDE "maps/GoldenrodDeptStoreB1F.asm"
@@ -73,7 +82,9 @@ INCLUDE "maps/IcePathB2FMahoganySide.asm"
INCLUDE "maps/IcePathB2FBlackthornSide.asm"
INCLUDE "maps/IcePathB3F.asm"
+
SECTION "Map Scripts 6", ROMX
+
INCLUDE "maps/WhirlIslandNW.asm"
INCLUDE "maps/WhirlIslandNE.asm"
INCLUDE "maps/WhirlIslandSW.asm"
@@ -92,7 +103,9 @@ INCLUDE "maps/DragonsDen1F.asm"
INCLUDE "maps/DragonsDenB1F.asm"
INCLUDE "maps/TohjoFalls.asm"
+
SECTION "Map Scripts 7", ROMX
+
INCLUDE "maps/NewBarkTown.asm"
INCLUDE "maps/CherrygroveCity.asm"
INCLUDE "maps/VioletCity.asm"
@@ -100,7 +113,9 @@ INCLUDE "maps/AzaleaTown.asm"
INCLUDE "maps/CianwoodCity.asm"
INCLUDE "maps/GoldenrodCity.asm"
+
SECTION "Map Scripts 8", ROMX
+
INCLUDE "maps/OlivineCity.asm"
INCLUDE "maps/EcruteakCity.asm"
INCLUDE "maps/MahoganyTown.asm"
@@ -108,7 +123,9 @@ INCLUDE "maps/LakeOfRage.asm"
INCLUDE "maps/BlackthornCity.asm"
INCLUDE "maps/SilverCaveOutside.asm"
+
SECTION "Map Scripts 9", ROMX
+
INCLUDE "maps/Route26.asm"
INCLUDE "maps/Route27.asm"
INCLUDE "maps/Route28.asm"
@@ -116,14 +133,18 @@ INCLUDE "maps/Route29.asm"
INCLUDE "maps/Route30.asm"
INCLUDE "maps/Route31.asm"
+
SECTION "Map Scripts 10", ROMX
+
INCLUDE "maps/Route32.asm"
INCLUDE "maps/Route33.asm"
INCLUDE "maps/Route34.asm"
INCLUDE "maps/Route35.asm"
INCLUDE "maps/Route36.asm"
+
SECTION "Map Scripts 11", ROMX
+
INCLUDE "maps/Route37.asm"
INCLUDE "maps/Route38.asm"
INCLUDE "maps/Route39.asm"
@@ -131,7 +152,9 @@ INCLUDE "maps/Route40.asm"
INCLUDE "maps/Route41.asm"
INCLUDE "maps/Route42.asm"
+
SECTION "Map Scripts 12", ROMX
+
INCLUDE "maps/Route43.asm"
INCLUDE "maps/Route44.asm"
INCLUDE "maps/Route45.asm"
@@ -139,7 +162,9 @@ INCLUDE "maps/Route46.asm"
INCLUDE "maps/PewterCity.asm"
INCLUDE "maps/Route2.asm"
+
SECTION "Map Scripts 13", ROMX
+
INCLUDE "maps/ViridianCity.asm"
INCLUDE "maps/Route22.asm"
INCLUDE "maps/Route1.asm"
@@ -155,7 +180,9 @@ INCLUDE "maps/Route16.asm"
INCLUDE "maps/CeladonCity.asm"
INCLUDE "maps/Route7.asm"
+
SECTION "Map Scripts 14", ROMX
+
INCLUDE "maps/Route15.asm"
INCLUDE "maps/Route14.asm"
INCLUDE "maps/Route13.asm"
@@ -168,7 +195,9 @@ INCLUDE "maps/SaffronCity.asm"
INCLUDE "maps/Route5.asm"
INCLUDE "maps/CeruleanCity.asm"
+
SECTION "Map Scripts 15", ROMX
+
INCLUDE "maps/Route9.asm"
INCLUDE "maps/Route24.asm"
INCLUDE "maps/Route25.asm"
@@ -179,7 +208,9 @@ INCLUDE "maps/Route10North.asm"
INCLUDE "maps/Route10South.asm"
INCLUDE "maps/Route23.asm"
+
SECTION "Map Scripts 16", ROMX
+
INCLUDE "maps/OlivinePokecenter1F.asm"
INCLUDE "maps/OlivineGym.asm"
INCLUDE "maps/OlivineTimsHouse.asm"
@@ -196,7 +227,9 @@ INCLUDE "maps/MahoganyGym.asm"
INCLUDE "maps/MahoganyPokecenter1F.asm"
INCLUDE "maps/Route42EcruteakGate.asm"
+
SECTION "Map Scripts 17", ROMX
+
INCLUDE "maps/EcruteakTinTowerEntrance.asm"
INCLUDE "maps/WiseTriosRoom.asm"
INCLUDE "maps/EcruteakPokecenter1F.asm"
@@ -206,7 +239,9 @@ INCLUDE "maps/EcruteakMart.asm"
INCLUDE "maps/EcruteakGym.asm"
INCLUDE "maps/EcruteakItemfinderHouse.asm"
+
SECTION "Map Scripts 18", ROMX
+
INCLUDE "maps/BlackthornGym1F.asm"
INCLUDE "maps/BlackthornGym2F.asm"
INCLUDE "maps/BlackthornDragonSpeechHouse.asm"
@@ -223,7 +258,9 @@ INCLUDE "maps/LakeOfRageMagikarpHouse.asm"
INCLUDE "maps/Route43MahoganyGate.asm"
INCLUDE "maps/Route43Gate.asm"
+
SECTION "Map Scripts 19", ROMX
+
INCLUDE "maps/CeruleanGymBadgeSpeechHouse.asm"
INCLUDE "maps/CeruleanPoliceStation.asm"
INCLUDE "maps/CeruleanTradeSpeechHouse.asm"
@@ -236,14 +273,18 @@ INCLUDE "maps/Route10Pokecenter2FBeta.asm"
INCLUDE "maps/PowerPlant.asm"
INCLUDE "maps/BillsHouse.asm"
+
SECTION "Map Scripts 20", ROMX
+
INCLUDE "maps/AzaleaPokecenter1F.asm"
INCLUDE "maps/CharcoalKiln.asm"
INCLUDE "maps/AzaleaMart.asm"
INCLUDE "maps/KurtsHouse.asm"
INCLUDE "maps/AzaleaGym.asm"
+
SECTION "Map Scripts 21", ROMX
+
INCLUDE "maps/VioletMart.asm"
INCLUDE "maps/VioletGym.asm"
INCLUDE "maps/EarlsPokemonAcademy.asm"
@@ -257,6 +298,7 @@ INCLUDE "maps/Route35NationalParkGate.asm"
INCLUDE "maps/Route36RuinsOfAlphGate.asm"
INCLUDE "maps/Route36NationalParkGate.asm"
+
SECTION "Map Scripts 22", ROMX
INCLUDE "maps/GoldenrodGym.asm"
@@ -280,7 +322,9 @@ INCLUDE "maps/IlexForestAzaleaGate.asm"
INCLUDE "maps/Route34IlexForestGate.asm"
INCLUDE "maps/DayCare.asm"
+
SECTION "Map Scripts 23", ROMX
+
INCLUDE "maps/VermilionFishingSpeechHouse.asm"
INCLUDE "maps/VermilionPokecenter1F.asm"
INCLUDE "maps/VermilionPokecenter2FBeta.asm"
@@ -296,7 +340,9 @@ INCLUDE "maps/RedsHouse2F.asm"
INCLUDE "maps/BluesHouse.asm"
INCLUDE "maps/OaksLab.asm"
+
SECTION "Map Scripts 24", ROMX
+
INCLUDE "maps/PewterNidoranSpeechHouse.asm"
INCLUDE "maps/PewterGym.asm"
INCLUDE "maps/PewterMart.asm"
@@ -311,7 +357,9 @@ INCLUDE "maps/KarensRoom.asm"
INCLUDE "maps/LancesRoom.asm"
INCLUDE "maps/HallOfFame.asm"
+
SECTION "Map Scripts 25", ROMX
+
INCLUDE "maps/OlivinePort.asm"
INCLUDE "maps/VermilionPort.asm"
INCLUDE "maps/FastShip1F.asm"
@@ -325,7 +373,9 @@ INCLUDE "maps/MountMoonSquare.asm"
INCLUDE "maps/MountMoonGiftShop.asm"
INCLUDE "maps/TinTowerRoof.asm"
+
SECTION "Map Scripts 26", ROMX
+
INCLUDE "maps/FuchsiaMart.asm"
INCLUDE "maps/SafariZoneMainOffice.asm"
INCLUDE "maps/FuchsiaGym.asm"
@@ -341,7 +391,9 @@ INCLUDE "maps/TradeCenter.asm"
INCLUDE "maps/Colosseum.asm"
INCLUDE "maps/TimeCapsule.asm"
+
SECTION "Map Scripts 27", ROMX
+
INCLUDE "maps/LavenderPokecenter1F.asm"
INCLUDE "maps/LavenderPokecenter2FBeta.asm"
INCLUDE "maps/MrFujisHouse.asm"
@@ -359,7 +411,9 @@ INCLUDE "maps/CianwoodPharmacy.asm"
INCLUDE "maps/CianwoodPhotoStudio.asm"
INCLUDE "maps/CianwoodLugiaSpeechHouse.asm"
+
SECTION "Map Scripts 28", ROMX
+
INCLUDE "maps/CeladonDeptStore1F.asm"
INCLUDE "maps/CeladonDeptStore2F.asm"
INCLUDE "maps/CeladonDeptStore3F.asm"
@@ -383,7 +437,9 @@ INCLUDE "maps/Route16Gate.asm"
INCLUDE "maps/Route7SaffronGate.asm"
INCLUDE "maps/Route17Route18Gate.asm"
+
SECTION "Map Scripts 29", ROMX
+
INCLUDE "maps/ViridianGym.asm"
INCLUDE "maps/ViridianNicknameSpeechHouse.asm"
INCLUDE "maps/TrainerHouse1F.asm"
@@ -395,7 +451,9 @@ INCLUDE "maps/Route2NuggetHouse.asm"
INCLUDE "maps/Route2Gate.asm"
INCLUDE "maps/VictoryRoadGate.asm"
+
SECTION "Map Scripts 30", ROMX
+
INCLUDE "maps/ElmsLab.asm"
INCLUDE "maps/PlayersHouse1F.asm"
INCLUDE "maps/PlayersHouse2F.asm"
@@ -406,7 +464,9 @@ INCLUDE "maps/DayOfWeekSiblingsHouse.asm"
INCLUDE "maps/Route27SandstormHouse.asm"
INCLUDE "maps/Route29Route46Gate.asm"
+
SECTION "Map Scripts 31", ROMX
+
INCLUDE "maps/FightingDojo.asm"
INCLUDE "maps/SaffronGym.asm"
INCLUDE "maps/SaffronMart.asm"
@@ -421,7 +481,9 @@ INCLUDE "maps/Route5UndergroundPathEntrance.asm"
INCLUDE "maps/Route5SaffronGate.asm"
INCLUDE "maps/Route5CleanseTagHouse.asm"
+
SECTION "Map Scripts 32", ROMX
+
INCLUDE "maps/CherrygroveMart.asm"
INCLUDE "maps/CherrygrovePokecenter1F.asm"
INCLUDE "maps/CherrygroveGymSpeechHouse.asm"
diff --git a/data/maps/setup_scripts.asm b/data/maps/setup_scripts.asm
new file mode 100644
index 00000000..e4dbb927
--- /dev/null
+++ b/data/maps/setup_scripts.asm
@@ -0,0 +1,173 @@
+MapSetupScripts:
+; entries correspond to MAPSETUP_* constants (see constants/map_setup_constants.asm)
+ dw MapSetupScript_Warp
+ dw MapSetupScript_Continue
+ dw MapSetupScript_ReloadMap
+ dw MapSetupScript_Teleport
+ dw MapSetupScript_Door
+ dw MapSetupScript_Fall
+ dw MapSetupScript_Connection
+ dw MapSetupScript_LinkReturn
+ dw MapSetupScript_Train
+ dw MapSetupScript_Submenu
+ dw MapSetupScript_BadWarp
+
+MapSetupScript_Teleport:
+ db map_fade_out_palettes
+ db map_reset_player_object_action
+ db map_jump_roam_mons
+MapSetupScript_Warp:
+ db map_disable_lcd
+ db map_init_sound
+ db map_enter_spawn_point
+ db map_load_attributes
+ db map_handle_new
+ db map_spawn_player
+ db map_refresh_player_coords
+ db map_get_screen_coords
+ db map_load_block_data
+ db map_buffer_screen
+ db map_load_graphics
+ db map_load_time_of_day
+ db map_load_objects
+ db map_enable_lcd
+ db map_load_palettes
+ db map_spawn_in_facing_down
+ db map_refresh_sprites
+ db map_play_music_bike
+ db map_fade_in_music
+ db map_fade_in_palettes
+ db map_activate_anims
+ db map_load_wild_mon_data
+ db map_end
+
+MapSetupScript_BadWarp:
+ db map_enter_spawn_point
+ db map_load_attributes
+ db map_handle_new
+ db map_spawn_player
+ db map_refresh_player_coords
+ db map_get_screen_coords
+ db map_load_block_data
+ db map_buffer_screen
+ db map_disable_lcd
+ db map_load_graphics
+ db map_load_time_of_day
+ db map_fade_out_music
+ db map_enable_lcd
+ db map_load_objects
+ db map_load_palettes
+ db map_spawn_in_facing_down
+ db map_refresh_sprites
+ db map_fade_to_music
+ db map_fade_in_palettes
+ db map_activate_anims
+ db map_load_wild_mon_data
+ db map_end
+
+MapSetupScript_Connection:
+ db map_suspend_anims
+ db map_enter_connection
+ db map_load_attributes
+ db map_handle_new
+ db map_refresh_player_coords
+ db map_load_block_data
+ db map_load_tileset
+ db map_save_screen
+ db map_load_objects
+ db map_fade_to_music
+ db map_load_palettes
+ db map_apply_palettes
+ db map_load_wild_mon_data
+ db map_update_roam_mons
+ db map_activate_anims
+ db map_end
+
+MapSetupScript_Fall:
+ db map_reset_player_object_action
+MapSetupScript_Door:
+ db map_fade_out_palettes
+MapSetupScript_Train:
+ db map_enter_warp
+ db map_load_attributes
+ db map_get_warp_dest_coords
+ db map_handle_new
+ db map_refresh_player_coords
+ db map_load_block_data
+ db map_buffer_screen
+ db map_disable_lcd
+ db map_load_graphics
+ db map_load_time_of_day
+ db map_fade_out_music
+ db map_enable_lcd
+ db map_load_objects
+ db map_load_palettes
+ db map_refresh_sprites
+ db map_fade_to_music
+ db map_fade_in_palettes
+ db map_activate_anims
+ db map_load_wild_mon_data
+ db map_update_roam_mons
+ db map_end
+
+MapSetupScript_ReloadMap:
+ db map_fade_music_and_palettes
+ db map_clear_bg_palettes
+ db map_disable_lcd
+ db map_init_sound
+ db map_load_block_data
+ db map_load_connection_block_data
+ db map_load_graphics
+ db map_load_time_of_day
+ db map_enable_lcd
+ db map_load_palettes
+ db map_refresh_sprites
+ db map_force_music
+ db map_fade_in_palettes
+ db map_activate_anims
+ db map_load_wild_mon_data
+ db map_end
+
+MapSetupScript_LinkReturn:
+ db map_fade_music_and_palettes
+ db map_disable_lcd
+ db map_init_sound
+ db map_handle_new
+ db map_load_block_data
+ db map_buffer_screen
+ db map_load_graphics
+ db map_load_time_of_day
+ db map_enable_lcd
+ db map_load_palettes
+ db map_refresh_sprites
+ db map_play_music_bike
+ db map_fade_in_palettes
+ db map_activate_anims
+ db map_load_wild_mon_data
+ db map_enable_text_acceleration
+ db map_end
+
+MapSetupScript_Continue:
+ db map_disable_lcd
+ db map_init_sound
+ db map_load_attributes_no_objects
+ db map_get_screen_coords
+ db map_handle_continue
+ db map_load_block_data
+ db map_load_connection_block_data
+ db map_buffer_screen
+ db map_load_graphics
+ db map_load_time_of_day
+ db map_enable_lcd
+ db map_load_palettes
+ db map_refresh_sprites
+ db map_play_music_bike
+ db map_fade_in_palettes
+ db map_activate_anims
+ db map_load_wild_mon_data
+ db map_end
+
+MapSetupScript_Submenu:
+ db map_load_block_data
+ db map_load_connection_block_data
+ db map_end
diff --git a/data/maps/sgb_roof_pal_inds.asm b/data/maps/sgb_roof_pal_inds.asm
new file mode 100644
index 00000000..a2620e19
--- /dev/null
+++ b/data/maps/sgb_roof_pal_inds.asm
@@ -0,0 +1,31 @@
+; Crystal does not support SGB, so this is unused.
+
+MapGroupRoofSGBPalInds:
+; entries correspond to map groups
+ db PREDEFPAL_ROUTES
+ db PREDEFPAL_OLIVINE
+ db PREDEFPAL_MAHOGANY
+ db PREDEFPAL_DUNGEONS
+ db PREDEFPAL_ECRUTEAK
+ db PREDEFPAL_BLACKTHORN
+ db PREDEFPAL_CINNABAR
+ db PREDEFPAL_CERULEAN
+ db PREDEFPAL_AZALEA
+ db PREDEFPAL_LAKE_OF_RAGE
+ db PREDEFPAL_VIOLET
+ db PREDEFPAL_GOLDENROD
+ db PREDEFPAL_VERMILION
+ db PREDEFPAL_PALLET
+ db PREDEFPAL_PEWTER
+ db PREDEFPAL_VERMILION
+ db PREDEFPAL_INDIGO
+ db PREDEFPAL_FUCHSIA
+ db PREDEFPAL_LAVENDER
+ db PREDEFPAL_SILVER_CAVE
+ db PREDEFPAL_FUCHSIA
+ db PREDEFPAL_CELADON
+ db PREDEFPAL_CIANWOOD
+ db PREDEFPAL_VIRIDIAN
+ db PREDEFPAL_NEW_BARK
+ db PREDEFPAL_SAFFRON
+ db PREDEFPAL_CHERRYGROVE
diff --git a/data/maps/spawn_points.asm b/data/maps/spawn_points.asm
new file mode 100644
index 00000000..2d99fff7
--- /dev/null
+++ b/data/maps/spawn_points.asm
@@ -0,0 +1,41 @@
+spawn: MACRO
+; map, x, y
+ map_id \1
+ db \2, \3
+ENDM
+
+SpawnPoints:
+; entries correspond to SPAWN_* constants
+
+ spawn PLAYERS_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/mon_menu.asm b/data/mon_menu.asm
new file mode 100644
index 00000000..f2b9f3ac
--- /dev/null
+++ b/data/mon_menu.asm
@@ -0,0 +1,46 @@
+; MonMenuOptionStrings indexes
+ const_def 1
+ const MONMENUVALUE_STATS ; 1
+ const MONMENUVALUE_SWITCH ; 2
+ const MONMENUVALUE_ITEM ; 3
+ const MONMENUVALUE_CANCEL ; 4
+ const MONMENUVALUE_MOVE ; 5
+ const MONMENUVALUE_MAIL ; 6
+ const MONMENUVALUE_ERROR ; 7
+
+MonMenuOptionStrings:
+; entries correspond to MONMENUVALUE_* constants
+ db "STATS@"
+ db "SWITCH@"
+ db "ITEM@"
+ db "CANCEL@"
+ db "MOVE@"
+ db "MAIL@"
+ db "ERROR!@"
+
+MonMenuOptions:
+; category, item, value; actions are in PokemonActionSubmenu (see engine/pokemon/mon_menu.asm)
+; moves
+ db MONMENU_FIELD_MOVE, MONMENUITEM_CUT, CUT
+ db MONMENU_FIELD_MOVE, MONMENUITEM_FLY, FLY
+ db MONMENU_FIELD_MOVE, MONMENUITEM_SURF, SURF
+ db MONMENU_FIELD_MOVE, MONMENUITEM_STRENGTH, STRENGTH
+ db MONMENU_FIELD_MOVE, MONMENUITEM_FLASH, FLASH
+ db MONMENU_FIELD_MOVE, MONMENUITEM_WATERFALL, WATERFALL
+ db MONMENU_FIELD_MOVE, MONMENUITEM_WHIRLPOOL, WHIRLPOOL
+ db MONMENU_FIELD_MOVE, MONMENUITEM_DIG, DIG
+ db MONMENU_FIELD_MOVE, MONMENUITEM_TELEPORT, TELEPORT
+ db MONMENU_FIELD_MOVE, MONMENUITEM_SOFTBOILED, SOFTBOILED
+ db MONMENU_FIELD_MOVE, MONMENUITEM_HEADBUTT, HEADBUTT
+ db MONMENU_FIELD_MOVE, MONMENUITEM_ROCKSMASH, ROCK_SMASH
+ db MONMENU_FIELD_MOVE, MONMENUITEM_MILKDRINK, MILK_DRINK
+ db MONMENU_FIELD_MOVE, MONMENUITEM_SWEETSCENT, SWEET_SCENT
+; options
+ db MONMENU_MENUOPTION, MONMENUITEM_STATS, MONMENUVALUE_STATS
+ db MONMENU_MENUOPTION, MONMENUITEM_SWITCH, MONMENUVALUE_SWITCH
+ db MONMENU_MENUOPTION, MONMENUITEM_ITEM, MONMENUVALUE_ITEM
+ db MONMENU_MENUOPTION, MONMENUITEM_CANCEL, MONMENUVALUE_CANCEL
+ db MONMENU_MENUOPTION, MONMENUITEM_MOVE, MONMENUVALUE_MOVE
+ db MONMENU_MENUOPTION, MONMENUITEM_MAIL, MONMENUVALUE_MAIL
+ db MONMENU_MENUOPTION, MONMENUITEM_ERROR, MONMENUVALUE_ERROR
+ db -1
diff --git a/data/moves/animations.asm b/data/moves/animations.asm
index badbf7ba..0e1033a6 100644
--- a/data/moves/animations.asm
+++ b/data/moves/animations.asm
@@ -481,7 +481,7 @@ BattleAnim_SendOutMon:
BattleAnim_ReturnMon:
anim_sound 0, 0, SFX_BALL_POOF
-BattleAnim_BatonPass_branch_c9486:
+.anim:
anim_bgeffect ANIM_BG_RETURN_MON, $0, $1, $0
anim_wait 32
anim_ret
@@ -679,7 +679,7 @@ BattleAnim_KarateChop:
BattleAnim_Doubleslap:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_Doubleslap_branch_c961b
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_DOUBLESLAP
anim_obj ANIM_OBJ_08, 144, 48, $0
anim_wait 6
@@ -687,7 +687,7 @@ BattleAnim_Doubleslap:
anim_wait 8
anim_ret
-BattleAnim_Doubleslap_branch_c961b:
+.alternate:
anim_sound 0, 1, SFX_DOUBLESLAP
anim_obj ANIM_OBJ_08, 120, 48, $0
anim_wait 6
@@ -697,7 +697,7 @@ BattleAnim_Doubleslap_branch_c961b:
BattleAnim_CometPunch:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_CometPunch_branch_c9641
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_COMET_PUNCH
anim_obj ANIM_OBJ_06, 144, 48, $0
anim_wait 6
@@ -705,7 +705,7 @@ BattleAnim_CometPunch:
anim_wait 8
anim_ret
-BattleAnim_CometPunch_branch_c9641:
+.alternate:
anim_sound 0, 1, SFX_COMET_PUNCH
anim_obj ANIM_OBJ_06, 120, 64, $0
anim_wait 6
@@ -713,7 +713,6 @@ BattleAnim_CometPunch_branch_c9641:
anim_wait 8
anim_ret
-BattleAnim_Bide_branch_c9651:
BattleAnim_MegaPunch:
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $40, $2, $0
@@ -750,7 +749,7 @@ BattleAnim_Stomp:
BattleAnim_DoubleKick:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_DoubleKick_branch_c96bd
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 144, 48, $0
anim_wait 6
@@ -758,7 +757,7 @@ BattleAnim_DoubleKick:
anim_wait 8
anim_ret
-BattleAnim_DoubleKick_branch_c96bd:
+.alternate:
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 120, 64, $0
anim_wait 6
@@ -768,7 +767,7 @@ BattleAnim_DoubleKick_branch_c96bd:
BattleAnim_JumpKick:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_JumpKick_branch_c96f1
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_JUMP_KICK
anim_obj ANIM_OBJ_07, 112, 72, $0
anim_obj ANIM_OBJ_07, 100, 60, $0
@@ -780,7 +779,7 @@ BattleAnim_JumpKick:
anim_wait 16
anim_ret
-BattleAnim_JumpKick_branch_c96f1:
+.alternate:
anim_wait 8
anim_sound 0, 0, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_04, 44, 88, $0
@@ -790,7 +789,7 @@ BattleAnim_JumpKick_branch_c96f1:
BattleAnim_HiJumpKick:
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $40, $2, $0
- anim_if_param_equal $1, BattleAnim_HiJumpKick_branch_c971e
+ anim_if_param_equal $1, .alternate
anim_wait 32
anim_sound 0, 1, SFX_JUMP_KICK
anim_obj ANIM_OBJ_07, 112, 72, $0
@@ -801,7 +800,7 @@ BattleAnim_HiJumpKick:
anim_wait 16
anim_ret
-BattleAnim_HiJumpKick_branch_c971e:
+.alternate:
anim_wait 16
anim_sound 0, 0, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_04, 44, 88, $0
@@ -882,7 +881,7 @@ BattleAnim_Ember:
BattleAnim_FirePunch:
anim_2gfx ANIM_GFX_HIT, ANIM_GFX_FIRE
anim_obj ANIM_OBJ_0A, 136, 56, $43
- anim_call BattleAnim_FirePunch_branch_cbbcc
+ anim_call BattleAnimSub_Fire
anim_wait 16
anim_ret
@@ -978,7 +977,7 @@ BattleAnim_FireBlast:
BattleAnim_IcePunch:
anim_2gfx ANIM_GFX_HIT, ANIM_GFX_ICE
anim_obj ANIM_OBJ_0A, 136, 56, $43
- anim_call BattleAnim_IcePunch_branch_cbbdf
+ anim_call BattleAnimSub_Ice
anim_wait 32
anim_ret
@@ -1231,7 +1230,7 @@ BattleAnim_Solarbeam:
.FireSolarBeam
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_Solarbeam_branch_cbb39
+ anim_call BattleAnimSub_Beam
anim_wait 48
anim_ret
@@ -1291,7 +1290,7 @@ BattleAnim_Thunder:
anim_ret
BattleAnim_RazorWind:
- anim_if_param_equal $1, BattleAnim_RazorWind_branch_c9fb5
+ anim_if_param_equal $1, BattleAnim_FocusEnergy
anim_1gfx ANIM_GFX_WHIP
anim_bgeffect ANIM_BG_06, $0, $1, $0
.loop
@@ -1357,12 +1356,12 @@ BattleAnim_Selfdestruct:
anim_1gfx ANIM_GFX_EXPLOSION
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $24
anim_if_param_equal $1, .loop
- anim_call BattleAnim_Selfdestruct_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_ret
.loop
- anim_call BattleAnim_Selfdestruct_branch_cbb62
+ anim_call BattleAnimSub_Explosion1
anim_wait 5
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
anim_loop 2, .loop
@@ -1374,12 +1373,12 @@ BattleAnim_Explosion:
anim_bgeffect ANIM_BG_1F, $60, $4, $10
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $24
anim_if_param_equal $1, .loop
- anim_call BattleAnim_Explosion_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_ret
.loop
- anim_call BattleAnim_Explosion_branch_cbb62
+ anim_call BattleAnimSub_Explosion1
anim_wait 5
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
anim_loop 2, .loop
@@ -1388,7 +1387,7 @@ BattleAnim_Explosion:
BattleAnim_Acid:
anim_1gfx ANIM_GFX_POISON
- anim_call BattleAnim_Acid_branch_cbc35
+ anim_call BattleAnimSub_Acid
anim_wait 64
anim_ret
@@ -1483,7 +1482,7 @@ BattleAnim_HyperBeam:
anim_bgeffect ANIM_BG_1F, $30, $4, $10
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $40
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_HyperBeam_branch_cbb39
+ anim_call BattleAnimSub_Beam
anim_wait 48
anim_ret
@@ -1492,7 +1491,7 @@ BattleAnim_AuroraBeam:
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
anim_wait 64
- anim_call BattleAnim_AuroraBeam_branch_cbb39
+ anim_call BattleAnimSub_Beam
anim_wait 48
anim_incobj 5
anim_wait 64
@@ -1517,7 +1516,7 @@ BattleAnim_Scratch:
BattleAnim_FurySwipes:
anim_1gfx ANIM_GFX_CUT
- anim_if_param_equal $1, BattleAnim_FurySwipes_branch_c9dd9
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_SCRATCH
anim_obj ANIM_OBJ_37, 144, 48, $0
anim_obj ANIM_OBJ_37, 140, 44, $0
@@ -1526,7 +1525,7 @@ BattleAnim_FurySwipes:
anim_wait 32
anim_ret
-BattleAnim_FurySwipes_branch_c9dd9:
+.alternate:
anim_sound 0, 1, SFX_SCRATCH
anim_obj ANIM_OBJ_38, 120, 48, $0
anim_obj ANIM_OBJ_38, 124, 44, $0
@@ -1586,27 +1585,27 @@ BattleAnim_Teleport:
anim_incbgeffect ANIM_BG_TELEPORT
anim_call BattleAnim_ShowMon_0
anim_bgeffect ANIM_BG_06, $0, $1, $0
- anim_call BattleAnim_Teleport_branch_cbb12
+ anim_call BattleAnimSub_WarpAway
anim_wait 64
anim_ret
BattleAnim_Fly:
- anim_if_param_equal $1, BattleAnim_Fly_branch_c9e89
- anim_if_param_equal $2, BattleAnim_Fly_branch_c9e82
+ anim_if_param_equal $1, .turn1
+ anim_if_param_equal $2, .miss
anim_1gfx ANIM_GFX_HIT
anim_sound 0, 1, SFX_WING_ATTACK
anim_obj ANIM_OBJ_01, 136, 56, $0
anim_wait 32
-BattleAnim_Fly_branch_c9e82:
+.miss:
anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
anim_wait 32
anim_ret
-BattleAnim_Fly_branch_c9e89:
+.turn1:
anim_1gfx ANIM_GFX_SPEED
anim_bgeffect ANIM_BG_06, $0, $1, $0
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
- anim_call BattleAnim_Fly_branch_cbb12
+ anim_call BattleAnimSub_WarpAway
anim_wait 64
anim_ret
@@ -1726,9 +1725,6 @@ BattleAnim_Softboiled:
anim_ret
BattleAnim_FocusEnergy:
-BattleAnim_RazorWind_branch_c9fb5:
-BattleAnim_SkullBash_branch_c9fb5:
-BattleAnim_SkyAttack_branch_c9fb5:
anim_1gfx ANIM_GFX_SPEED
anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_16, $0, $1, $40
@@ -1756,7 +1752,7 @@ BattleAnim_SkyAttack_branch_c9fb5:
anim_ret
BattleAnim_Bide:
- anim_if_param_equal $0, BattleAnim_Bide_branch_c9651
+ anim_if_param_equal $0, BattleAnim_MegaPunch
anim_1gfx ANIM_GFX_HIT
anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_ESCAPE_ROPE
@@ -1844,7 +1840,7 @@ BattleAnim_Growl:
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_cry $0
.loop
- anim_call BattleAnim_Growl_branch_cbbbc
+ anim_call BattleAnimSub_Sound
anim_wait 16
anim_loop 3, .loop
anim_wait 9
@@ -1865,7 +1861,7 @@ BattleAnim_Roar:
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_cry $1
.loop
- anim_call BattleAnim_Roar_branch_cbbbc
+ anim_call BattleAnimSub_Sound
anim_wait 16
anim_loop 3, .loop
anim_wait 16
@@ -1919,7 +1915,7 @@ BattleAnim_ConfuseRay:
BattleAnim_Leer:
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_Leer_branch_cbadc
+ anim_call BattleAnimSub_ShakeEnemy
anim_wait 16
anim_ret
@@ -2045,7 +2041,7 @@ BattleAnim_Dig:
BattleAnim_SandAttack:
anim_1gfx ANIM_GFX_SAND
- anim_call BattleAnim_SandAttack_branch_cbc5b
+ anim_call BattleAnimSub_SandOrMud
anim_ret
BattleAnim_StringShot:
@@ -2350,7 +2346,7 @@ BattleAnim_Transform:
anim_call BattleAnim_TargetObj_2Row
anim_sound 0, 0, SFX_PSYBEAM
anim_bgeffect ANIM_BG_WAVE_DEFORM_USER, $0, $1, $0
- anim_wait 48
+ anim_wait 48
anim_transform
anim_incbgeffect ANIM_BG_WAVE_DEFORM_USER
anim_wait 48
@@ -2451,7 +2447,7 @@ BattleAnim_Crabhammer:
anim_ret
BattleAnim_SkullBash:
- anim_if_param_equal $1, BattleAnim_SkullBash_branch_c9fb5
+ anim_if_param_equal $1, BattleAnim_FocusEnergy
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $14, $2, $0
anim_wait 32
@@ -2551,9 +2547,9 @@ BattleAnim_Flash:
BattleAnim_Substitute:
anim_sound 0, 0, SFX_SURF
- anim_if_param_equal $3, BattleAnim_Substitute_branch_ca77c
- anim_if_param_equal $2, BattleAnim_Substitute_branch_ca76e
- anim_if_param_equal $1, BattleAnim_Substitute_branch_ca760
+ anim_if_param_equal $3, .dropsub2
+ anim_if_param_equal $2, .raisesub
+ anim_if_param_equal $1, .dropsub
anim_1gfx ANIM_GFX_SMOKE
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 48
@@ -2563,7 +2559,7 @@ BattleAnim_Substitute:
anim_wait 32
anim_ret
-BattleAnim_Substitute_branch_ca760:
+.dropsub:
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 48
anim_dropsub
@@ -2571,7 +2567,7 @@ BattleAnim_Substitute_branch_ca760:
anim_wait 32
anim_ret
-BattleAnim_Substitute_branch_ca76e:
+.raisesub:
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 48
anim_raisesub
@@ -2579,7 +2575,7 @@ BattleAnim_Substitute_branch_ca76e:
anim_wait 32
anim_ret
-BattleAnim_Substitute_branch_ca77c:
+.dropsub2:
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
anim_wait 48
anim_dropsub
@@ -2592,7 +2588,7 @@ BattleAnim_Minimize:
anim_1gfx ANIM_GFX_HIT
anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_WAVE_DEFORM_USER, $0, $1, $0
- anim_wait 48
+ anim_wait 48
anim_minimizeopp
anim_incbgeffect ANIM_BG_WAVE_DEFORM_USER
anim_wait 48
@@ -2600,7 +2596,7 @@ BattleAnim_Minimize:
anim_ret
BattleAnim_SkyAttack:
- anim_if_param_equal $1, BattleAnim_SkyAttack_branch_c9fb5
+ anim_if_param_equal $1, BattleAnim_FocusEnergy
anim_1gfx ANIM_GFX_SKY_ATTACK
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 32
@@ -2640,9 +2636,9 @@ BattleAnim_Lick:
BattleAnim_TriAttack:
anim_3gfx ANIM_GFX_FIRE, ANIM_GFX_ICE, ANIM_GFX_LIGHTNING
- anim_call BattleAnim_TriAttack_branch_cbbcc
+ anim_call BattleAnimSub_Fire
anim_wait 16
- anim_call BattleAnim_TriAttack_branch_cbbdf
+ anim_call BattleAnimSub_Ice
anim_wait 16
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $4
anim_sound 0, 1, SFX_THUNDER
@@ -2681,7 +2677,7 @@ BattleAnim_DreamEater:
anim_bgp $1b
anim_obp0 $27
anim_sound 6, 3, SFX_WATER_GUN
- anim_call BattleAnim_DreamEater_branch_cbab3
+ anim_call BattleAnimSub_Drain
anim_wait 128
anim_wait 48
anim_ret
@@ -2689,7 +2685,7 @@ BattleAnim_DreamEater:
BattleAnim_LeechLife:
anim_1gfx ANIM_GFX_BUBBLE
anim_sound 6, 3, SFX_WATER_GUN
- anim_call BattleAnim_LeechLife_branch_cbab3
+ anim_call BattleAnimSub_Drain
anim_wait 128
anim_wait 48
anim_ret
@@ -2698,7 +2694,7 @@ BattleAnim_Harden:
anim_1gfx ANIM_GFX_REFLECT
anim_obp0 $0
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_Harden_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_call BattleAnim_ShowMon_0
anim_ret
@@ -2725,7 +2721,7 @@ BattleAnim_Glare:
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $20
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_Glare_branch_cbadc
+ anim_call BattleAnimSub_ShakeEnemy
anim_wait 16
anim_ret
@@ -2985,16 +2981,16 @@ BattleAnim_PsychicM:
BattleAnim_Sludge:
anim_1gfx ANIM_GFX_POISON
- anim_call BattleAnim_Sludge_branch_cbc15
+ anim_call BattleAnimSub_Sludge
anim_wait 56
anim_ret
BattleAnim_Toxic:
anim_1gfx ANIM_GFX_POISON
anim_bgeffect ANIM_BG_BLACK_HUES, $0, $8, $0
- anim_call BattleAnim_Toxic_branch_cbc35
+ anim_call BattleAnimSub_Acid
anim_wait 32
- anim_call BattleAnim_Toxic_branch_cbc15
+ anim_call BattleAnimSub_Sludge
anim_wait 64
anim_ret
@@ -3116,8 +3112,8 @@ BattleAnim_Sketch:
BattleAnim_TripleKick:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_TripleKick_branch_cac95
- anim_if_param_equal $2, BattleAnim_TripleKick_branch_caca5
+ anim_if_param_equal $1, .alternate1
+ anim_if_param_equal $2, .alternate2
anim_sound 0, 1, SFX_MEGA_KICK
anim_obj ANIM_OBJ_07, 144, 48, $0
anim_wait 6
@@ -3125,7 +3121,7 @@ BattleAnim_TripleKick:
anim_wait 8
anim_ret
-BattleAnim_TripleKick_branch_cac95:
+.alternate1:
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 120, 64, $0
anim_wait 6
@@ -3133,7 +3129,7 @@ BattleAnim_TripleKick_branch_cac95:
anim_wait 8
anim_ret
-BattleAnim_TripleKick_branch_caca5:
+.alternate2:
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 132, 32, $0
anim_wait 6
@@ -3223,7 +3219,7 @@ BattleAnim_Snore:
anim_bgeffect ANIM_BG_1F, $60, $2, $0
anim_sound 0, 0, SFX_SNORE
.loop
- anim_call BattleAnim_Snore_branch_cbbbc
+ anim_call BattleAnimSub_Sound
anim_wait 16
anim_loop 2, .loop
anim_wait 8
@@ -3380,7 +3376,7 @@ BattleAnim_PowderSnow:
anim_loop 2, .loop
anim_bgeffect ANIM_BG_WHITE_HUES, $0, $8, $0
anim_wait 40
- anim_call BattleAnim_PowderSnow_branch_cbbdf
+ anim_call BattleAnimSub_Ice
anim_wait 32
anim_ret
@@ -3420,7 +3416,7 @@ BattleAnim_ScaryFace:
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_ScaryFace_branch_cbadc
+ anim_call BattleAnimSub_ShakeEnemy
anim_wait 64
anim_ret
@@ -3501,14 +3497,14 @@ BattleAnim_SludgeBomb:
anim_sound 6, 2, SFX_SLUDGE_BOMB
anim_obj ANIM_OBJ_SLUDGE_BOMB, 64, 92, $10
anim_wait 36
- anim_call BattleAnim_SludgeBomb_branch_cbc15
+ anim_call BattleAnimSub_Sludge
anim_wait 64
anim_ret
BattleAnim_MudSlap:
anim_1gfx ANIM_GFX_SAND
anim_obp0 $fc
- anim_call BattleAnim_MudSlap_branch_cbc5b
+ anim_call BattleAnimSub_SandOrMud
anim_ret
BattleAnim_Octazooka:
@@ -3572,13 +3568,13 @@ BattleAnim_DestinyBond:
anim_1gfx ANIM_GFX_ANGELS
anim_bgp $1b
anim_obp0 $0
- anim_if_param_equal $1, BattleAnim_DestinyBond_branch_cb104
+ anim_if_param_equal $1, .fainted
anim_sound 6, 2, SFX_WHIRLWIND
anim_obj ANIM_OBJ_DESTINY_BOND, 44, 120, $2
anim_wait 128
anim_ret
-BattleAnim_DestinyBond_branch_cb104:
+.fainted:
anim_obj ANIM_OBJ_DESTINY_BOND, 132, 76, $0
anim_sound 0, 1, SFX_KINESIS
anim_bgeffect ANIM_BG_RETURN_MON, $0, $0, $0
@@ -3701,7 +3697,7 @@ BattleAnim_GigaDrain:
anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1C, $0, $0, $10
anim_sound 6, 3, SFX_GIGA_DRAIN
- anim_call BattleAnim_GigaDrain_branch_cbab3
+ anim_call BattleAnimSub_Drain
anim_wait 48
anim_wait 128
anim_incbgeffect ANIM_BG_1C
@@ -3858,7 +3854,7 @@ BattleAnim_SteelWing:
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_SteelWing_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_call BattleAnim_ShowMon_0
anim_1gfx ANIM_GFX_HIT
anim_resetobp0
@@ -3967,7 +3963,7 @@ BattleAnim_Present:
anim_1gfx ANIM_GFX_EXPLOSION
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $12
.loop
- anim_call BattleAnim_Present_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_jumpuntil .loop
anim_ret
@@ -4078,7 +4074,7 @@ BattleAnim_Dynamicpunch:
anim_obj ANIM_OBJ_0A, 136, 56, $43
anim_wait 16
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $12
- anim_call BattleAnim_Dynamicpunch_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_ret
@@ -4108,7 +4104,7 @@ BattleAnim_BatonPass:
anim_1gfx ANIM_GFX_MISC
anim_obj ANIM_OBJ_BATON_PASS, 44, 104, $20
anim_sound 0, 0, SFX_BATON_PASS
- anim_call BattleAnim_BatonPass_branch_c9486
+ anim_call BattleAnim_ReturnMon.anim
anim_wait 64
anim_ret
@@ -4126,13 +4122,13 @@ BattleAnim_Encore:
BattleAnim_Pursuit:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_Pursuit_branch_cb62b
+ anim_if_param_equal $1, .pursued
anim_sound 0, 1, SFX_COMET_PUNCH
anim_obj ANIM_OBJ_01, 136, 56, $0
anim_wait 16
anim_ret
-BattleAnim_Pursuit_branch_cb62b:
+.pursued:
anim_bgeffect ANIM_BG_HIDE_MON, $0, $0, $0
anim_wait 4
anim_call BattleAnim_UserObj_1Row
@@ -4194,7 +4190,7 @@ BattleAnim_IronTail:
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_IronTail_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_wait 4
anim_1gfx ANIM_GFX_HIT
anim_resetobp0
@@ -4212,7 +4208,7 @@ BattleAnim_MetalClaw:
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_MetalClaw_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_call BattleAnim_ShowMon_0
anim_1gfx ANIM_GFX_CUT
anim_resetobp0
@@ -4255,11 +4251,11 @@ BattleAnim_MorningSun:
anim_loop 5, .loop
anim_wait 32
anim_if_param_equal 0, .zero
- anim_call BattleAnim_MorningSun_branch_cbc6a
+ anim_call BattleAnimSub_Glimmer
anim_ret
.zero
- anim_call BattleAnim_MorningSun_branch_cbc80
+ anim_call BattleAnimSub_Glimmer2
anim_ret
BattleAnim_Synthesis:
@@ -4272,11 +4268,11 @@ BattleAnim_Synthesis:
anim_incbgeffect ANIM_BG_18
anim_call BattleAnim_ShowMon_0
anim_if_param_equal $1, .one
- anim_call BattleAnim_Synthesis_branch_cbc6a
+ anim_call BattleAnimSub_Glimmer
anim_ret
.one
- anim_call BattleAnim_Synthesis_branch_cbc80
+ anim_call BattleAnimSub_Glimmer2
anim_ret
BattleAnim_Crunch:
@@ -4308,11 +4304,11 @@ BattleAnim_Moonlight:
anim_sound 0, 0, SFX_MOONLIGHT
anim_wait 63
anim_if_param_equal $3, .three
- anim_call BattleAnim_Moonlight_branch_cbc6a
+ anim_call BattleAnimSub_Glimmer
anim_ret
.three
- anim_call BattleAnim_Moonlight_branch_cbc80
+ anim_call BattleAnimSub_Glimmer2
anim_ret
BattleAnim_HiddenPower:
@@ -4596,9 +4592,7 @@ BattleAnim_BeatUp:
anim_call BattleAnim_ShowMon_0
anim_ret
-BattleAnim_DreamEater_branch_cbab3:
-BattleAnim_GigaDrain_branch_cbab3:
-BattleAnim_LeechLife_branch_cbab3:
+BattleAnimSub_Drain:
anim_obj ANIM_OBJ_71, 132, 44, $0
anim_obj ANIM_OBJ_71, 132, 44, $8
anim_obj ANIM_OBJ_71, 132, 44, $10
@@ -4609,9 +4603,7 @@ BattleAnim_LeechLife_branch_cbab3:
anim_obj ANIM_OBJ_71, 132, 44, $38
anim_ret
-BattleAnim_Glare_branch_cbadc:
-BattleAnim_Leer_branch_cbadc:
-BattleAnim_ScaryFace_branch_cbadc:
+BattleAnimSub_ShakeEnemy:
anim_sound 6, 2, SFX_LEER
anim_obj ANIM_OBJ_4E, 72, 84, $0
anim_obj ANIM_OBJ_4E, 64, 80, $0
@@ -4625,8 +4617,7 @@ BattleAnim_ScaryFace_branch_cbadc:
anim_obj ANIM_OBJ_4F, 122, 50, $0
anim_ret
-BattleAnim_Fly_branch_cbb12:
-BattleAnim_Teleport_branch_cbb12:
+BattleAnimSub_WarpAway:
anim_sound 0, 0, SFX_WARP_TO
anim_obj ANIM_OBJ_44, 44, 108, $0
anim_obj ANIM_OBJ_44, 44, 100, $0
@@ -4637,9 +4628,7 @@ BattleAnim_Teleport_branch_cbb12:
anim_obj ANIM_OBJ_44, 44, 60, $0
anim_ret
-BattleAnim_AuroraBeam_branch_cbb39:
-BattleAnim_HyperBeam_branch_cbb39:
-BattleAnim_Solarbeam_branch_cbb39:
+BattleAnimSub_Beam:
anim_sound 0, 0, SFX_HYPER_BEAM
anim_obj ANIM_OBJ_27, 64, 92, $0
anim_wait 4
@@ -4654,8 +4643,7 @@ BattleAnim_Solarbeam_branch_cbb39:
anim_obj ANIM_OBJ_28, 126, 62, $0
anim_ret
-BattleAnim_Explosion_branch_cbb62:
-BattleAnim_Selfdestruct_branch_cbb62:
+BattleAnimSub_Explosion1:
anim_sound 0, 0, SFX_EGG_BOMB
anim_obj ANIM_OBJ_17, 24, 64, $0
anim_wait 5
@@ -4672,10 +4660,7 @@ BattleAnim_Selfdestruct_branch_cbb62:
anim_obj ANIM_OBJ_17, 40, 84, $0
anim_ret
-BattleAnim_Dynamicpunch_branch_cbb8f:
-BattleAnim_Explosion_branch_cbb8f:
-BattleAnim_Present_branch_cbb8f:
-BattleAnim_Selfdestruct_branch_cbb8f:
+BattleAnimSub_Explosion2:
anim_sound 0, 1, SFX_EGG_BOMB
anim_obj ANIM_OBJ_17, 148, 32, $0
anim_wait 5
@@ -4692,16 +4677,13 @@ BattleAnim_Selfdestruct_branch_cbb8f:
anim_obj ANIM_OBJ_17, 132, 52, $0
anim_ret
-BattleAnim_Growl_branch_cbbbc:
-BattleAnim_Roar_branch_cbbbc:
-BattleAnim_Snore_branch_cbbbc:
+BattleAnimSub_Sound:
anim_obj ANIM_OBJ_4B, 64, 76, $0
anim_obj ANIM_OBJ_4B, 64, 88, $1
anim_obj ANIM_OBJ_4B, 64, 100, $2
anim_ret
-BattleAnim_FirePunch_branch_cbbcc:
-BattleAnim_TriAttack_branch_cbbcc:
+BattleAnimSub_Fire:
anim_sound 0, 1, SFX_EMBER
.loop
anim_obj ANIM_OBJ_BURNED, 136, 56, $10
@@ -4710,9 +4692,7 @@ BattleAnim_TriAttack_branch_cbbcc:
anim_loop 4, .loop
anim_ret
-BattleAnim_IcePunch_branch_cbbdf:
-BattleAnim_PowderSnow_branch_cbbdf:
-BattleAnim_TriAttack_branch_cbbdf:
+BattleAnimSub_Ice:
anim_sound 0, 1, SFX_SHINE
anim_obj ANIM_OBJ_12, 128, 42, $0
anim_wait 6
@@ -4732,9 +4712,7 @@ BattleAnim_TriAttack_branch_cbbdf:
anim_obj ANIM_OBJ_12, 128, 70, $0
anim_ret
-BattleAnim_SludgeBomb_branch_cbc15:
-BattleAnim_Sludge_branch_cbc15:
-BattleAnim_Toxic_branch_cbc15:
+BattleAnimSub_Sludge:
.loop
anim_sound 0, 1, SFX_TOXIC
anim_obj ANIM_OBJ_1A, 132, 72, $0
@@ -4748,8 +4726,7 @@ BattleAnim_Toxic_branch_cbc15:
anim_loop 5, .loop
anim_ret
-BattleAnim_Acid_branch_cbc35:
-BattleAnim_Toxic_branch_cbc35:
+BattleAnimSub_Acid:
.loop
anim_sound 6, 2, SFX_BUBBLEBEAM
anim_obj ANIM_OBJ_19, 64, 92, $10
@@ -4757,10 +4734,7 @@ BattleAnim_Toxic_branch_cbc35:
anim_loop 8, .loop
anim_ret
-BattleAnim_Harden_branch_cbc43:
-BattleAnim_IronTail_branch_cbc43:
-BattleAnim_MetalClaw_branch_cbc43:
-BattleAnim_SteelWing_branch_cbc43:
+BattleAnimSub_Metallic:
anim_sound 0, 0, SFX_SHINE
anim_bgeffect ANIM_BG_17, $0, $1, $40
anim_wait 8
@@ -4771,8 +4745,7 @@ BattleAnim_SteelWing_branch_cbc43:
anim_incbgeffect ANIM_BG_17
anim_ret
-BattleAnim_MudSlap_branch_cbc5b:
-BattleAnim_SandAttack_branch_cbc5b:
+BattleAnimSub_SandOrMud:
.loop
anim_sound 6, 2, SFX_MENU
anim_obj ANIM_OBJ_58, 64, 92, $4
@@ -4781,9 +4754,7 @@ BattleAnim_SandAttack_branch_cbc5b:
anim_wait 32
anim_ret
-BattleAnim_Moonlight_branch_cbc6a:
-BattleAnim_MorningSun_branch_cbc6a:
-BattleAnim_Synthesis_branch_cbc6a:
+BattleAnimSub_Glimmer:
anim_sound 0, 0, SFX_METRONOME
anim_obj ANIM_OBJ_GLIMMER, 44, 64, $0
anim_wait 5
@@ -4793,9 +4764,7 @@ BattleAnim_Synthesis_branch_cbc6a:
anim_wait 21
anim_ret
-BattleAnim_Moonlight_branch_cbc80:
-BattleAnim_MorningSun_branch_cbc80:
-BattleAnim_Synthesis_branch_cbc80:
+BattleAnimSub_Glimmer2:
anim_sound 0, 0, SFX_METRONOME
.loop
anim_obj ANIM_OBJ_GLIMMER, 24, 64, $0
diff --git a/data/moves/critical_hit_moves.asm b/data/moves/critical_hit_moves.asm
new file mode 100644
index 00000000..4a473057
--- /dev/null
+++ b/data/moves/critical_hit_moves.asm
@@ -0,0 +1,9 @@
+CriticalHitMoves:
+ db KARATE_CHOP
+ db RAZOR_WIND
+ db RAZOR_LEAF
+ db CRABHAMMER
+ db SLASH
+ db AEROBLAST
+ db CROSS_CHOP
+ db -1
diff --git a/data/moves/effects.asm b/data/moves/effects.asm
new file mode 100644
index 00000000..8e5b5c17
--- /dev/null
+++ b/data/moves/effects.asm
@@ -0,0 +1,2077 @@
+INCLUDE "data/moves/effects_pointers.asm"
+
+MoveEffects: ; used only for BANK(MoveEffects)
+
+NormalHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+DoSleep:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ checksafeguard
+ sleeptarget
+ endmove
+
+PoisonHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ poisontarget
+ endmove
+
+LeechHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ draintarget
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+BurnHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ burntarget
+ endmove
+
+FreezeHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ freezetarget
+ endmove
+
+ParalyzeHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ paralyzetarget
+ endmove
+
+Selfdestruct:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ selfdestruct
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+DreamEater:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ eatdream
+ checkfaint
+ buildopponentrage
+ endmove
+
+MirrorMove:
+ checkobedience
+ usedmovetext
+ doturn
+ mirrormove
+ endmove
+
+AttackUp:
+ checkobedience
+ usedmovetext
+ doturn
+ attackup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+DefenseUp:
+ checkobedience
+ usedmovetext
+ doturn
+ defenseup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpeedUp:
+ checkobedience
+ usedmovetext
+ doturn
+ speedup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialAttackUp:
+ checkobedience
+ usedmovetext
+ doturn
+ specialattackup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialDefenseUp:
+ checkobedience
+ usedmovetext
+ doturn
+ specialdefenseup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AccuracyUp:
+ checkobedience
+ usedmovetext
+ doturn
+ accuracyup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+EvasionUp:
+ checkobedience
+ usedmovetext
+ doturn
+ lowersub
+ evasionup
+ statupanim
+ lowersubnoanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AttackUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ attackup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+DefenseUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ defenseup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpeedUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ speedup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialAttackUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ specialattackup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialDefenseUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ specialdefenseup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AccuracyUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ accuracyup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+EvasionUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ evasionup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AttackDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ attackdown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+DefenseDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ defensedown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpeedDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ speeddown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialAttackDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialattackdown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialDefenseDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialdefensedown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AccuracyDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ accuracydown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+EvasionDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ evasiondown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AttackDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ attackdown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+DefenseDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ defensedown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpeedDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ speeddown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialAttackDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialattackdown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialDefenseDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialdefensedown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AccuracyDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ accuracydown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+EvasionDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ evasiondown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AttackDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ attackdown
+ statdownmessage
+ endmove
+
+DefenseDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ effectchance ; bug: duplicate effectchance shouldn't be here
+ defensedown
+ statdownmessage
+ endmove
+
+SpeedDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ speeddown
+ statdownmessage
+ endmove
+
+SpecialAttackDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ specialattackdown
+ statdownmessage
+ endmove
+
+SpecialDefenseDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ specialdefensedown
+ statdownmessage
+ endmove
+
+AccuracyDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ accuracydown
+ statdownmessage
+ endmove
+
+EvasionDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ evasiondown
+ statdownmessage
+ endmove
+
+DefenseUpHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ defenseup
+ statupmessage
+ endmove
+
+AttackUpHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ attackup
+ statupmessage
+ endmove
+
+AllUpHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ allstatsup
+ endmove
+
+PayDay:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ payday
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Conversion:
+ checkobedience
+ usedmovetext
+ doturn
+ conversion
+ endmove
+
+ResetStats:
+ checkobedience
+ usedmovetext
+ doturn
+ resetstats
+ endmove
+
+Bide:
+ storeenergy
+ checkobedience
+ doturn
+ usedmovetext
+ unleashenergy
+ resettypematchup
+ checkhit
+ moveanim
+ bidefailtext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Rampage:
+ checkrampage
+ checkobedience
+ doturn
+ rampage
+ usedmovetext
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+ForceSwitch:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ forceswitch
+ endmove
+
+MultiHit:
+ checkobedience
+ usedmovetext
+ doturn
+ startloop
+ lowersub
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivelooptext
+ checkfaint
+ buildopponentrage
+ endloop
+ raisesub
+ kingsrock
+ endmove
+
+PoisonMultiHit:
+ checkobedience
+ usedmovetext
+ doturn
+ startloop
+ lowersub
+ checkhit
+ effectchance
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivelooptext
+ checkfaint
+ buildopponentrage
+ endloop
+ raisesub
+ kingsrock
+ poisontarget
+ endmove
+
+FlinchHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ endmove
+
+OHKOHit:
+ checkobedience
+ usedmovetext
+ doturn
+ stab
+ ohko
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endmove
+
+RecoilHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ recoil
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Mist:
+ checkobedience
+ usedmovetext
+ doturn
+ mist
+ endmove
+
+FocusEnergy:
+ checkobedience
+ usedmovetext
+ doturn
+ focusenergy
+ endmove
+
+DoConfuse:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ checksafeguard
+ confuse
+ endmove
+
+ConfuseHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ confusetarget
+ endmove
+
+Heal:
+ checkobedience
+ usedmovetext
+ doturn
+ heal
+ endmove
+
+Transform:
+ checkobedience
+ usedmovetext
+ doturn
+ transform
+ endmove
+
+LightScreen:
+Reflect:
+ checkobedience
+ usedmovetext
+ doturn
+ screen
+ endmove
+
+TriAttack:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ tristatuschance
+ endmove
+
+Toxic:
+DoPoison:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ stab
+ checksafeguard
+ poison
+ endmove
+
+DoParalyze:
+ checkobedience
+ usedmovetext
+ doturn
+ stab
+ checkhit
+ checksafeguard
+ paralyze
+ endmove
+
+SkyAttack:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ kingsrock
+ endmove
+
+Substitute:
+ checkobedience
+ usedmovetext
+ doturn
+ substitute
+ endmove
+
+HyperBeam:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ rechargenextturn
+ checkfaint
+ buildopponentrage
+ endmove
+
+Rage:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ checkhit
+ ragedamage
+ damagevariation
+ moveanim
+ failuretext
+ rage
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Mimic:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ mimic
+ endmove
+
+Metronome:
+ checkobedience
+ usedmovetext
+ doturn
+ metronome
+ endmove
+
+LeechSeed:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ leechseed
+ endmove
+
+Splash:
+ checkobedience
+ usedmovetext
+ doturn
+ splash
+ endmove
+
+Disable:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ disable
+ endmove
+
+RazorWind:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Fly:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanimnosub
+ raisesub
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+TrapTarget:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ traptarget
+ endmove
+
+SuperFang:
+Psywave:
+StaticDamage:
+ checkobedience
+ usedmovetext
+ doturn
+ constantdamage
+ checkhit
+ resettypematchup
+ moveanim
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Reversal:
+ checkobedience
+ usedmovetext
+ doturn
+ constantdamage
+ stab
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Counter:
+ checkobedience
+ usedmovetext
+ doturn
+ counter
+ moveanim
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Encore:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ encore
+ endmove
+
+PainSplit:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ painsplit
+ endmove
+
+Snore:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ snore
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ kingsrock
+ endmove
+
+Conversion2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ conversion2
+ endmove
+
+LockOn:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ lockon
+ endmove
+
+Sketch:
+ checkobedience
+ usedmovetext
+ doturn
+ sketch
+ endmove
+
+DefrostOpponent:
+ checkobedience
+ usedmovetext
+ doturn
+ defrostopponent
+ endmove
+
+SleepTalk:
+ checkobedience
+ usedmovetext
+ doturn
+ sleeptalk
+ endmove
+
+DestinyBond:
+ checkobedience
+ usedmovetext
+ doturn
+ destinybond
+ endmove
+
+Spite:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ spite
+ endmove
+
+FalseSwipe:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ falseswipe
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+HealBell:
+ checkobedience
+ usedmovetext
+ doturn
+ healbell
+ endmove
+
+TripleKick:
+ checkobedience
+ usedmovetext
+ doturn
+ startloop
+ lowersub
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ triplekick
+ stab
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivelooptext
+ checkfaint
+ buildopponentrage
+ kickcounter
+ endloop
+ raisesub
+ kingsrock
+ endmove
+
+Thief:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ thief
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+MeanLook:
+ checkobedience
+ usedmovetext
+ doturn
+ arenatrap
+ endmove
+
+Nightmare:
+ checkobedience
+ usedmovetext
+ doturn
+ nightmare
+ endmove
+
+FlameWheel:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ defrost
+ checkfaint
+ buildopponentrage
+ burntarget
+ endmove
+
+Curse:
+ checkobedience
+ usedmovetext
+ doturn
+ curse
+ endmove
+
+Protect:
+ checkobedience
+ usedmovetext
+ doturn
+ protect
+ endmove
+
+Spikes:
+ checkobedience
+ usedmovetext
+ doturn
+ spikes
+ endmove
+
+Foresight:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ foresight
+ endmove
+
+PerishSong:
+ checkobedience
+ usedmovetext
+ doturn
+ perishsong
+ endmove
+
+Sandstorm:
+ checkobedience
+ usedmovetext
+ doturn
+ startsandstorm
+ endmove
+
+Endure:
+ checkobedience
+ usedmovetext
+ doturn
+ endure
+ endmove
+
+Rollout:
+ checkcurl
+ checkobedience
+ doturn
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ checkhit
+ rolloutpower
+ damagevariation
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Swagger:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ switchturn
+ attackup2
+ switchturn
+ lowersub
+ statupanim
+ raisesub
+ failuretext
+ switchturn
+ statupmessage
+ switchturn
+ confusetarget
+ endmove
+
+FuryCutter:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ checkhit
+ furycutter
+ damagevariation
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Attract:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ attract
+ endmove
+
+Return:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ happinesspower
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Present:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ critical
+ damagestats
+ present
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Frustration:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ frustrationpower
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Safeguard:
+ checkobedience
+ usedmovetext
+ doturn
+ safeguard
+ endmove
+
+SacredFire:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ defrost
+ checkfaint
+ buildopponentrage
+ burntarget
+ endmove
+
+Magnitude:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ getmagnitude
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ doubleundergrounddamage
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+BatonPass:
+ checkobedience
+ usedmovetext
+ doturn
+ batonpass
+ endmove
+
+Pursuit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ pursuit
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+RapidSpin:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ clearhazards
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+MorningSun:
+ checkobedience
+ usedmovetext
+ doturn
+ healmorn
+ endmove
+
+Synthesis:
+ checkobedience
+ usedmovetext
+ doturn
+ healday
+ endmove
+
+Moonlight:
+ checkobedience
+ usedmovetext
+ doturn
+ healnite
+ endmove
+
+HiddenPower:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ hiddenpower
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+RainDance:
+ checkobedience
+ usedmovetext
+ doturn
+ startrain
+ endmove
+
+SunnyDay:
+ checkobedience
+ usedmovetext
+ doturn
+ startsun
+ endmove
+
+FakeOut:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ fakeout
+ moveanim
+ failuretext
+ endmove
+
+BellyDrum:
+ checkobedience
+ usedmovetext
+ doturn
+ bellydrum
+ endmove
+
+PsychUp:
+ checkobedience
+ usedmovetext
+ doturn
+ psychup
+ endmove
+
+MirrorCoat:
+ checkobedience
+ usedmovetext
+ doturn
+ mirrorcoat
+ moveanim
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+SkullBash:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endturn
+ defenseup
+ statupmessage
+ endmove
+
+Twister:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleflyingdamage
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ endmove
+
+Earthquake:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleundergrounddamage
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endmove
+
+FutureSight:
+ checkfuturesight
+ checkobedience
+ usedmovetext
+ doturn
+ damagestats
+ damagecalc
+ futuresight
+ damagevariation ; skip here if last turn
+ checkhit
+ moveanimnosub
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ endmove
+
+Gust:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleflyingdamage
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endmove
+
+Stomp:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleminimizedamage
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ endmove
+
+Solarbeam:
+ checkcharge
+ checkobedience
+ doturn
+ skipsuncharge
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Thunder:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ thunderaccuracy
+ checkhit
+ effectchance
+ stab
+ damagevariation
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ paralyzetarget
+ endmove
+
+Teleport:
+ checkobedience
+ usedmovetext
+ doturn
+ teleport
+ endmove
+
+BeatUp:
+ checkobedience
+ usedmovetext
+ movedelay
+ doturn
+ startloop
+ lowersub
+ checkhit
+ critical
+ beatup
+ damagecalc
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endloop
+ beatupfailtext
+ raisesub
+ kingsrock
+ endmove
+
+DefenseCurl:
+ checkobedience
+ usedmovetext
+ doturn
+ defenseup
+ curl
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
diff --git a/data/moves/effects_pointers.asm b/data/moves/effects_pointers.asm
new file mode 100644
index 00000000..94834de7
--- /dev/null
+++ b/data/moves/effects_pointers.asm
@@ -0,0 +1,159 @@
+MoveEffectsPointers:
+; entries correspond to EFFECT_* constants
+ dw NormalHit
+ dw DoSleep
+ dw PoisonHit
+ dw LeechHit
+ dw BurnHit
+ dw FreezeHit
+ dw ParalyzeHit
+ dw Selfdestruct
+ dw DreamEater
+ dw MirrorMove
+ dw AttackUp
+ dw DefenseUp
+ dw SpeedUp
+ dw SpecialAttackUp
+ dw SpecialDefenseUp
+ dw AccuracyUp
+ dw EvasionUp
+ dw NormalHit
+ dw AttackDown
+ dw DefenseDown
+ dw SpeedDown
+ dw SpecialAttackDown
+ dw SpecialDefenseDown
+ dw AccuracyDown
+ dw EvasionDown
+ dw ResetStats
+ dw Bide
+ dw Rampage
+ dw ForceSwitch
+ dw MultiHit
+ dw Conversion
+ dw FlinchHit
+ dw Heal
+ dw Toxic
+ dw PayDay
+ dw LightScreen
+ dw TriAttack
+ dw NormalHit
+ dw OHKOHit
+ dw RazorWind
+ dw SuperFang
+ dw StaticDamage
+ dw TrapTarget
+ dw NormalHit
+ dw MultiHit
+ dw NormalHit
+ dw Mist
+ dw FocusEnergy
+ dw RecoilHit
+ dw DoConfuse
+ dw AttackUp2
+ dw DefenseUp2
+ dw SpeedUp2
+ dw SpecialAttackUp2
+ dw SpecialDefenseUp2
+ dw AccuracyUp2
+ dw EvasionUp2
+ dw Transform
+ dw AttackDown2
+ dw DefenseDown2
+ dw SpeedDown2
+ dw SpecialAttackDown2
+ dw SpecialDefenseDown2
+ dw AccuracyDown2
+ dw EvasionDown2
+ dw Reflect
+ dw DoPoison
+ dw DoParalyze
+ dw AttackDownHit
+ dw DefenseDownHit
+ dw SpeedDownHit
+ dw SpecialAttackDownHit
+ dw SpecialDefenseDownHit
+ dw AccuracyDownHit
+ dw EvasionDownHit
+ dw SkyAttack
+ dw ConfuseHit
+ dw PoisonMultiHit
+ dw NormalHit
+ dw Substitute
+ dw HyperBeam
+ dw Rage
+ dw Mimic
+ dw Metronome
+ dw LeechSeed
+ dw Splash
+ dw Disable
+ dw StaticDamage
+ dw Psywave
+ dw Counter
+ dw Encore
+ dw PainSplit
+ dw Snore
+ dw Conversion2
+ dw LockOn
+ dw Sketch
+ dw DefrostOpponent
+ dw SleepTalk
+ dw DestinyBond
+ dw Reversal
+ dw Spite
+ dw FalseSwipe
+ dw HealBell
+ dw NormalHit
+ dw TripleKick
+ dw Thief
+ dw MeanLook
+ dw Nightmare
+ dw FlameWheel
+ dw Curse
+ dw NormalHit
+ dw Protect
+ dw Spikes
+ dw Foresight
+ dw PerishSong
+ dw Sandstorm
+ dw Endure
+ dw Rollout
+ dw Swagger
+ dw FuryCutter
+ dw Attract
+ dw Return
+ dw Present
+ dw Frustration
+ dw Safeguard
+ dw SacredFire
+ dw Magnitude
+ dw BatonPass
+ dw Pursuit
+ dw RapidSpin
+ dw NormalHit
+ dw NormalHit
+ dw MorningSun
+ dw Synthesis
+ dw Moonlight
+ dw HiddenPower
+ dw RainDance
+ dw SunnyDay
+ dw DefenseUpHit
+ dw AttackUpHit
+ dw AllUpHit
+ dw FakeOut
+ dw BellyDrum
+ dw PsychUp
+ dw MirrorCoat
+ dw SkullBash
+ dw Twister
+ dw Earthquake
+ dw FutureSight
+ dw Gust
+ dw Stomp
+ dw Solarbeam
+ dw Thunder
+ dw Teleport
+ dw BeatUp
+ dw Fly
+ dw DefenseCurl
diff --git a/data/moves/effects_priorities.asm b/data/moves/effects_priorities.asm
new file mode 100644
index 00000000..dfdb636a
--- /dev/null
+++ b/data/moves/effects_priorities.asm
@@ -0,0 +1,8 @@
+MoveEffectPriorities:
+ db EFFECT_PROTECT, 3
+ db EFFECT_ENDURE, 3
+ db EFFECT_PRIORITY_HIT, 2
+ db EFFECT_FORCE_SWITCH, 0
+ db EFFECT_COUNTER, 0
+ db EFFECT_MIRROR_COAT, 0
+ db -1
diff --git a/data/moves/flail_reversal_power.asm b/data/moves/flail_reversal_power.asm
new file mode 100644
index 00000000..fb915905
--- /dev/null
+++ b/data/moves/flail_reversal_power.asm
@@ -0,0 +1,8 @@
+FlailReversalPower:
+ ; hp bar pixels, power
+ db HP_BAR_LENGTH_PX / 48, 200
+ db HP_BAR_LENGTH_PX / 12, 150
+ db HP_BAR_LENGTH_PX / 5, 100
+ db HP_BAR_LENGTH_PX / 3, 80
+ db HP_BAR_LENGTH_PX * 2 / 3, 40
+ db HP_BAR_LENGTH_PX, 20
diff --git a/data/moves/grammar.asm b/data/moves/grammar.asm
new file mode 100644
index 00000000..f2474808
--- /dev/null
+++ b/data/moves/grammar.asm
@@ -0,0 +1,101 @@
+; Used by GetMoveGrammar (see engine/battle/used_move_text.asm)
+; Each move is given an identifier for what usedmovetext to use (0-4).
+; Made redundant in English localization, where all are just "[mon]¯used [move]!"
+
+MoveGrammar:
+; 0: originally "[mon]の¯[move]¯つかった!" ("[mon]¯used¯[move]!")
+ db SWORDS_DANCE
+ db GROWTH
+ db STRENGTH
+ db HARDEN
+ db MINIMIZE
+ db SMOKESCREEN
+ db WITHDRAW
+ db DEFENSE_CURL
+ db EGG_BOMB
+ db SMOG
+ db BONE_CLUB
+ db FLASH
+ db SPLASH
+ db ACID_ARMOR
+ db BONEMERANG
+ db REST
+ db SHARPEN
+ db SUBSTITUTE
+ db MIND_READER
+ db SNORE
+ db PROTECT
+ db SPIKES
+ db ENDURE
+ db ROLLOUT
+ db SWAGGER
+ db SLEEP_TALK
+ db HIDDEN_POWER
+ db PSYCH_UP
+ db EXTREMESPEED
+ db 0 ; end set
+
+; 1: originally "[mon]の¯[move]した!" ("[mon]¯did [move]!")
+ db RECOVER
+ db TELEPORT
+ db BIDE
+ db SELFDESTRUCT
+ db AMNESIA
+ db FLAIL
+ db 0 ; end set
+
+; 2: originally "[mon]の¯[move]¯した!" ("[mon]¯did¯[move]!")
+ db MEDITATE
+ db AGILITY
+ db MIMIC
+ db DOUBLE_TEAM
+ db BARRAGE
+ db TRANSFORM
+ db STRUGGLE
+ db SCARY_FACE
+ db 0 ; end set
+
+; 3: originally "[mon]の¯[move] こうげき!" ("[mon]'s¯[move] attack!")
+ db POUND
+ db SCRATCH
+ db VICEGRIP
+ db WING_ATTACK
+ db FLY
+ db BIND
+ db SLAM
+ db HORN_ATTACK
+ db WRAP
+ db THRASH
+ db TAIL_WHIP
+ db LEER
+ db BITE
+ db GROWL
+ db ROAR
+ db SING
+ db PECK
+ db ABSORB
+ db STRING_SHOT
+ db EARTHQUAKE
+ db FISSURE
+ db DIG
+ db TOXIC
+ db SCREECH
+ db METRONOME
+ db LICK
+ db CLAMP
+ db CONSTRICT
+ db POISON_GAS
+ db BUBBLE
+ db SLASH
+ db SPIDER_WEB
+ db NIGHTMARE
+ db CURSE
+ db FORESIGHT
+ db CHARM
+ db ATTRACT
+ db ROCK_SMASH
+ db 0 ; end set
+
+; 4: originally "[mon]の¯[move]!" ("[mon]'s¯[move]!")
+; Any move not listed above uses this grammar.
+ db -1 ; end
diff --git a/data/moves/magnitude_power.asm b/data/moves/magnitude_power.asm
new file mode 100644
index 00000000..632a0c03
--- /dev/null
+++ b/data/moves/magnitude_power.asm
@@ -0,0 +1,9 @@
+MagnitudePower:
+ ; chance, power, magnitude #
+ db 5 percent + 1, 10, 4 ; 5%
+ db 15 percent, 30, 5 ; 10%
+ db 35 percent, 50, 6 ; 20%
+ db 65 percent + 1, 70, 7 ; 30%
+ db 85 percent + 1, 90, 8 ; 20%
+ db 95 percent, 110, 9 ; 10%
+ db 100 percent, 150, 10 ; 5%
diff --git a/data/moves/metronome_exception_moves.asm b/data/moves/metronome_exception_moves.asm
new file mode 100644
index 00000000..a5aa4413
--- /dev/null
+++ b/data/moves/metronome_exception_moves.asm
@@ -0,0 +1,17 @@
+; Metronome cannot turn into these moves.
+
+MetronomeExcepts:
+ db NO_MOVE
+ db METRONOME
+ db STRUGGLE
+ db SKETCH
+ db MIMIC
+ db COUNTER
+ db MIRROR_COAT
+ db PROTECT
+ db DETECT
+ db ENDURE
+ db DESTINY_BOND
+ db SLEEP_TALK
+ db THIEF
+ db -1
diff --git a/data/moves/names.asm b/data/moves/names.asm
new file mode 100644
index 00000000..cfc7ac54
--- /dev/null
+++ b/data/moves/names.asm
@@ -0,0 +1,252 @@
+MoveNames::
+ db "POUND@"
+ db "KARATE CHOP@"
+ db "DOUBLESLAP@"
+ db "COMET PUNCH@"
+ db "MEGA PUNCH@"
+ db "PAY DAY@"
+ db "FIRE PUNCH@"
+ db "ICE PUNCH@"
+ db "THUNDERPUNCH@"
+ db "SCRATCH@"
+ db "VICEGRIP@"
+ db "GUILLOTINE@"
+ db "RAZOR WIND@"
+ db "SWORDS DANCE@"
+ db "CUT@"
+ db "GUST@"
+ db "WING ATTACK@"
+ db "WHIRLWIND@"
+ db "FLY@"
+ db "BIND@"
+ db "SLAM@"
+ db "VINE WHIP@"
+ db "STOMP@"
+ db "DOUBLE KICK@"
+ db "MEGA KICK@"
+ db "JUMP KICK@"
+ db "ROLLING KICK@"
+ db "SAND-ATTACK@"
+ db "HEADBUTT@"
+ db "HORN ATTACK@"
+ db "FURY ATTACK@"
+ db "HORN DRILL@"
+ db "TACKLE@"
+ db "BODY SLAM@"
+ db "WRAP@"
+ db "TAKE DOWN@"
+ db "THRASH@"
+ db "DOUBLE-EDGE@"
+ db "TAIL WHIP@"
+ db "POISON STING@"
+ db "TWINEEDLE@"
+ db "PIN MISSILE@"
+ db "LEER@"
+ db "BITE@"
+ db "GROWL@"
+ db "ROAR@"
+ db "SING@"
+ db "SUPERSONIC@"
+ db "SONICBOOM@"
+ db "DISABLE@"
+ db "ACID@"
+ db "EMBER@"
+ db "FLAMETHROWER@"
+ db "MIST@"
+ db "WATER GUN@"
+ db "HYDRO PUMP@"
+ db "SURF@"
+ db "ICE BEAM@"
+ db "BLIZZARD@"
+ db "PSYBEAM@"
+ db "BUBBLEBEAM@"
+ db "AURORA BEAM@"
+ db "HYPER BEAM@"
+ db "PECK@"
+ db "DRILL PECK@"
+ db "SUBMISSION@"
+ db "LOW KICK@"
+ db "COUNTER@"
+ db "SEISMIC TOSS@"
+ db "STRENGTH@"
+ db "ABSORB@"
+ db "MEGA DRAIN@"
+ db "LEECH SEED@"
+ db "GROWTH@"
+ db "RAZOR LEAF@"
+ db "SOLARBEAM@"
+ db "POISONPOWDER@"
+ db "STUN SPORE@"
+ db "SLEEP POWDER@"
+ db "PETAL DANCE@"
+ db "STRING SHOT@"
+ db "DRAGON RAGE@"
+ db "FIRE SPIN@"
+ db "THUNDERSHOCK@"
+ db "THUNDERBOLT@"
+ db "THUNDER WAVE@"
+ db "THUNDER@"
+ db "ROCK THROW@"
+ db "EARTHQUAKE@"
+ db "FISSURE@"
+ db "DIG@"
+ db "TOXIC@"
+ db "CONFUSION@"
+ db "PSYCHIC@"
+ db "HYPNOSIS@"
+ db "MEDITATE@"
+ db "AGILITY@"
+ db "QUICK ATTACK@"
+ db "RAGE@"
+ db "TELEPORT@"
+ db "NIGHT SHADE@"
+ db "MIMIC@"
+ db "SCREECH@"
+ db "DOUBLE TEAM@"
+ db "RECOVER@"
+ db "HARDEN@"
+ db "MINIMIZE@"
+ db "SMOKESCREEN@"
+ db "CONFUSE RAY@"
+ db "WITHDRAW@"
+ db "DEFENSE CURL@"
+ db "BARRIER@"
+ db "LIGHT SCREEN@"
+ db "HAZE@"
+ db "REFLECT@"
+ db "FOCUS ENERGY@"
+ db "BIDE@"
+ db "METRONOME@"
+ db "MIRROR MOVE@"
+ db "SELFDESTRUCT@"
+ db "EGG BOMB@"
+ db "LICK@"
+ db "SMOG@"
+ db "SLUDGE@"
+ db "BONE CLUB@"
+ db "FIRE BLAST@"
+ db "WATERFALL@"
+ db "CLAMP@"
+ db "SWIFT@"
+ db "SKULL BASH@"
+ db "SPIKE CANNON@"
+ db "CONSTRICT@"
+ db "AMNESIA@"
+ db "KINESIS@"
+ db "SOFTBOILED@"
+ db "HI JUMP KICK@"
+ db "GLARE@"
+ db "DREAM EATER@"
+ db "POISON GAS@"
+ db "BARRAGE@"
+ db "LEECH LIFE@"
+ db "LOVELY KISS@"
+ db "SKY ATTACK@"
+ db "TRANSFORM@"
+ db "BUBBLE@"
+ db "DIZZY PUNCH@"
+ db "SPORE@"
+ db "FLASH@"
+ db "PSYWAVE@"
+ db "SPLASH@"
+ db "ACID ARMOR@"
+ db "CRABHAMMER@"
+ db "EXPLOSION@"
+ db "FURY SWIPES@"
+ db "BONEMERANG@"
+ db "REST@"
+ db "ROCK SLIDE@"
+ db "HYPER FANG@"
+ db "SHARPEN@"
+ db "CONVERSION@"
+ db "TRI ATTACK@"
+ db "SUPER FANG@"
+ db "SLASH@"
+ db "SUBSTITUTE@"
+ db "STRUGGLE@"
+ db "SKETCH@"
+ db "TRIPLE KICK@"
+ db "THIEF@"
+ db "SPIDER WEB@"
+ db "MIND READER@"
+ db "NIGHTMARE@"
+ db "FLAME WHEEL@"
+ db "SNORE@"
+ db "CURSE@"
+ db "FLAIL@"
+ db "CONVERSION2@"
+ db "AEROBLAST@"
+ db "COTTON SPORE@"
+ db "REVERSAL@"
+ db "SPITE@"
+ db "POWDER SNOW@"
+ db "PROTECT@"
+ db "MACH PUNCH@"
+ db "SCARY FACE@"
+ db "FAINT ATTACK@"
+ db "SWEET KISS@"
+ db "BELLY DRUM@"
+ db "SLUDGE BOMB@"
+ db "MUD-SLAP@"
+ db "OCTAZOOKA@"
+ db "SPIKES@"
+ db "ZAP CANNON@"
+ db "FORESIGHT@"
+ db "DESTINY BOND@"
+ db "PERISH SONG@"
+ db "ICY WIND@"
+ db "DETECT@"
+ db "BONE RUSH@"
+ db "LOCK-ON@"
+ db "OUTRAGE@"
+ db "SANDSTORM@"
+ db "GIGA DRAIN@"
+ db "ENDURE@"
+ db "CHARM@"
+ db "ROLLOUT@"
+ db "FALSE SWIPE@"
+ db "SWAGGER@"
+ db "MILK DRINK@"
+ db "SPARK@"
+ db "FURY CUTTER@"
+ db "STEEL WING@"
+ db "MEAN LOOK@"
+ db "ATTRACT@"
+ db "SLEEP TALK@"
+ db "HEAL BELL@"
+ db "RETURN@"
+ db "PRESENT@"
+ db "FRUSTRATION@"
+ db "SAFEGUARD@"
+ db "PAIN SPLIT@"
+ db "SACRED FIRE@"
+ db "MAGNITUDE@"
+ db "DYNAMICPUNCH@"
+ db "MEGAHORN@"
+ db "DRAGONBREATH@"
+ db "BATON PASS@"
+ db "ENCORE@"
+ db "PURSUIT@"
+ db "RAPID SPIN@"
+ db "SWEET SCENT@"
+ db "IRON TAIL@"
+ db "METAL CLAW@"
+ db "VITAL THROW@"
+ db "MORNING SUN@"
+ db "SYNTHESIS@"
+ db "MOONLIGHT@"
+ db "HIDDEN POWER@"
+ db "CROSS CHOP@"
+ db "TWISTER@"
+ db "RAIN DANCE@"
+ db "SUNNY DAY@"
+ db "CRUNCH@"
+ db "MIRROR COAT@"
+ db "PSYCH UP@"
+ db "EXTREMESPEED@"
+ db "ANCIENTPOWER@"
+ db "SHADOW BALL@"
+ db "FUTURE SIGHT@"
+ db "ROCK SMASH@"
+ db "WHIRLPOOL@"
+ db "BEAT UP@"
diff --git a/data/moves/present_power.asm b/data/moves/present_power.asm
new file mode 100644
index 00000000..9f85b8a6
--- /dev/null
+++ b/data/moves/present_power.asm
@@ -0,0 +1,6 @@
+PresentPower:
+ ; chance, power
+ db 40 percent, 40 ; 40% chance
+ db 70 percent + 1, 80 ; 30% chance
+ db 80 percent, 120 ; 10% chance
+ db -1 ; 20% chance to heal instead
diff --git a/data/moves/tmhm_moves.asm b/data/moves/tmhm_moves.asm
new file mode 100644
index 00000000..81c7d0ba
--- /dev/null
+++ b/data/moves/tmhm_moves.asm
@@ -0,0 +1,66 @@
+TMHMMoves:
+; entries correspond to *_TMNUM enums (see constants/item_constants.asm)
+; 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 (Crystal-only)
+ db 0
+ db 0
+ db 0
+ db 0 ; end
diff --git a/data/phone/non_trainer_names.asm b/data/phone/non_trainer_names.asm
new file mode 100644
index 00000000..4159014a
--- /dev/null
+++ b/data/phone/non_trainer_names.asm
@@ -0,0 +1,13 @@
+NonTrainerCallerNames:
+; entries correspond to PHONECONTACT_* constants
+ dw .none
+ dw .mom
+ dw .bikeshop
+ dw .bill
+ dw .elm
+
+.none: db "----------@"
+.mom: db "MOM@"
+.bill: db "BILL@"
+.elm: db "PROF.ELM@"
+.bikeshop: db "BIKE SHOP@"
diff --git a/data/phone/permanent_numbers.asm b/data/phone/permanent_numbers.asm
new file mode 100644
index 00000000..98c6212d
--- /dev/null
+++ b/data/phone/permanent_numbers.asm
@@ -0,0 +1,4 @@
+PermanentNumbers:
+ db PHONECONTACT_MOM
+ db PHONECONTACT_ELM
+ db -1 ; end
diff --git a/data/phone/phone_contacts.asm b/data/phone/phone_contacts.asm
new file mode 100644
index 00000000..d2b2c7a7
--- /dev/null
+++ b/data/phone/phone_contacts.asm
@@ -0,0 +1,49 @@
+phone: MACRO
+; trainer class, trainer id, map, callee time, callee script, caller time, caller script
+ db \1, \2
+ map_id \3
+ db \4
+ dba \5
+ db \6
+ dba \7
+ENDM
+
+PhoneContacts:
+; entries correspond to PHONE_* constants
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_MOM, PLAYERS_HOUSE_1F, ANYTIME, MomPhoneCalleeScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_BILL, N_A, ANYTIME, BillPhoneCalleeScript, 0, BillPhoneCallerScript
+ phone TRAINER_NONE, PHONECONTACT_ELM, ELMS_LAB, ANYTIME, ElmPhoneCalleeScript, 0, ElmPhoneCallerScript
+ phone SCHOOLBOY, JACK1, NATIONAL_PARK, ANYTIME, JackPhoneCalleeScript, ANYTIME, JackPhoneCallerScript
+ phone POKEFANF, BEVERLY1, NATIONAL_PARK, ANYTIME, BeverlyPhoneCalleeScript, ANYTIME, BeverlyPhoneCallerScript
+ phone SAILOR, HUEY1, OLIVINE_LIGHTHOUSE_2F, ANYTIME, HueyPhoneCalleeScript, ANYTIME, HueyPhoneCallerScript
+ 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, ANYTIME, GavenPhoneCalleeScript, ANYTIME, GavenPhoneCallerScript
+ phone COOLTRAINERF, BETH1, ROUTE_26, ANYTIME, BethPhoneCalleeScript, ANYTIME, BethPhoneCallerScript
+ phone BIRD_KEEPER, JOSE2, ROUTE_27, ANYTIME, JosePhoneCalleeScript, ANYTIME, JosePhoneCallerScript
+ phone COOLTRAINERF, REENA1, ROUTE_27, ANYTIME, ReenaPhoneCalleeScript, ANYTIME, ReenaPhoneCallerScript
+ phone YOUNGSTER, JOEY1, ROUTE_30, ANYTIME, JoeyPhoneCalleeScript, ANYTIME, JoeyPhoneCallerScript
+ phone BUG_CATCHER, WADE1, ROUTE_31, ANYTIME, WadePhoneCalleeScript, ANYTIME, WadePhoneCallerScript
+ phone FISHER, RALPH1, ROUTE_32, ANYTIME, RalphPhoneCalleeScript, ANYTIME, RalphPhoneCallerScript
+ phone PICNICKER, LIZ1, ROUTE_32, ANYTIME, LizPhoneCalleeScript, ANYTIME, LizPhoneCallerScript
+ phone HIKER, ANTHONY2, ROUTE_33, ANYTIME, AnthonyPhoneCalleeScript, ANYTIME, AnthonyPhoneCallerScript
+ phone CAMPER, TODD1, ROUTE_34, ANYTIME, ToddPhoneCalleeScript, ANYTIME, ToddPhoneCallerScript
+ phone PICNICKER, GINA1, ROUTE_34, ANYTIME, GinaPhoneCalleeScript, ANYTIME, GinaPhoneCallerScript
+ phone JUGGLER, IRWIN1, ROUTE_35, ANYTIME, IrwinPhoneCalleeScript, ANYTIME, IrwinPhoneCallerScript
+ phone BUG_CATCHER, ARNIE1, ROUTE_35, ANYTIME, ArniePhoneCalleeScript, ANYTIME, ArniePhoneCallerScript
+ phone SCHOOLBOY, ALAN1, ROUTE_36, ANYTIME, AlanPhoneCalleeScript, ANYTIME, AlanPhoneCallerScript
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone LASS, DANA1, ROUTE_38, ANYTIME, DanaPhoneCalleeScript, ANYTIME, DanaPhoneCallerScript
+ phone SCHOOLBOY, CHAD1, ROUTE_38, ANYTIME, ChadPhoneCalleeScript, ANYTIME, ChadPhoneCallerScript
+ phone POKEFANM, DEREK1, ROUTE_39, ANYTIME, DerekPhoneCalleeScript, ANYTIME, DerekPhoneCallerScript
+ phone FISHER, CHRIS1, ROUTE_42, ANYTIME, ChrisPhoneCalleeScript, ANYTIME, ChrisPhoneCallerScript
+ phone POKEMANIAC, BRENT1, ROUTE_43, ANYTIME, BrentPhoneCalleeScript, ANYTIME, BrentPhoneCallerScript
+ phone PICNICKER, TIFFANY3, ROUTE_43, ANYTIME, TiffanyPhoneCalleeScript, ANYTIME, TiffanyPhoneCallerScript
+ phone BIRD_KEEPER, VANCE1, ROUTE_44, ANYTIME, VancePhoneCalleeScript, ANYTIME, VancePhoneCallerScript
+ phone FISHER, WILTON1, ROUTE_44, ANYTIME, WiltonPhoneCalleeScript, ANYTIME, WiltonPhoneCallerScript
+ phone BLACKBELT_T, KENJI3, ROUTE_45, ANYTIME, KenjiPhoneCalleeScript, ANYTIME, KenjiPhoneCallerScript
+ phone HIKER, PARRY1, ROUTE_45, ANYTIME, ParryPhoneCalleeScript, ANYTIME, ParryPhoneCallerScript
+ phone PICNICKER, ERIN1, ROUTE_46, ANYTIME, ErinPhoneCalleeScript, ANYTIME, ErinPhoneCallerScript
diff --git a/data/phone/special_calls.asm b/data/phone/special_calls.asm
new file mode 100644
index 00000000..826a5d28
--- /dev/null
+++ b/data/phone/special_calls.asm
@@ -0,0 +1,17 @@
+specialcall: MACRO
+; condition, contact, script
+ dw \1
+ db \2
+ dba \3
+ENDM
+
+SpecialPhoneCallList:
+; entries correspond to SPECIALCALL_* constants
+ specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript
+ specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript
+ specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript
+ specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript
+ specialcall SpecialCallWhereverYouAre, PHONECONTACT_ELM, ElmPhoneCallerScript
+ specialcall SpecialCallWhereverYouAre, PHONECONTACT_BIKESHOP, BikeShopPhoneCallerScript
+ specialcall SpecialCallWhereverYouAre, PHONECONTACT_MOM, MomPhoneLectureScript
+ specialcall SpecialCallOnlyWhenOutside, PHONECONTACT_ELM, ElmPhoneCallerScript
diff --git a/data/player_names.asm b/data/player_names.asm
new file mode 100644
index 00000000..0155dac4
--- /dev/null
+++ b/data/player_names.asm
@@ -0,0 +1,25 @@
+NameMenuHeader:
+ db STATICMENU_NO_TOP_SPACING
+ menu_coords 0, 0, 10, TEXTBOX_Y - 1
+ dw .Names
+ db 1
+
+.Names:
+ db STATICMENU_CURSOR | STATICMENU_PLACE_TITLE | STATICMENU_DISABLE_B ; flags
+ db 5 ; items
+ db "NEW NAME@"
+
+PlayerNameArray:
+IF DEF(_GOLD)
+ db "GOLD@"
+ db "HIRO@"
+ db "TAYLOR@"
+ db "KARL@"
+ELIF DEF(_SILVER)
+ db "SILVER@"
+ db "KAMON@"
+ db "OSCAR@"
+ db "MAX@"
+ENDC
+ db 2
+ db "NAME@" ; title
diff --git a/data/pokemon/base_stats/abra.asm b/data/pokemon/base_stats/abra.asm
index e43adeec..d5073235 100644
--- a/data/pokemon/base_stats/abra.asm
+++ b/data/pokemon/base_stats/abra.asm
@@ -3,7 +3,7 @@
db 25, 20, 15, 90, 105, 55
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 200 ; catch rate
db 73 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/alakazam.asm b/data/pokemon/base_stats/alakazam.asm
index 6524400b..673ae050 100644
--- a/data/pokemon/base_stats/alakazam.asm
+++ b/data/pokemon/base_stats/alakazam.asm
@@ -3,7 +3,7 @@
db 55, 50, 45, 120, 135, 85
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 50 ; catch rate
db 186 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/celebi.asm b/data/pokemon/base_stats/celebi.asm
index 49cb349d..cef8879f 100644
--- a/data/pokemon/base_stats/celebi.asm
+++ b/data/pokemon/base_stats/celebi.asm
@@ -3,7 +3,7 @@
db 100, 100, 100, 100, 100, 100
; hp atk def spd sat sdf
- db PSYCHIC, GRASS ; type
+ db PSYCHIC_TYPE, GRASS ; type
db 45 ; catch rate
db 64 ; base exp
db NO_ITEM, MIRACLEBERRY ; items
diff --git a/data/pokemon/base_stats/drowzee.asm b/data/pokemon/base_stats/drowzee.asm
index 614dd3d8..f6865872 100644
--- a/data/pokemon/base_stats/drowzee.asm
+++ b/data/pokemon/base_stats/drowzee.asm
@@ -3,7 +3,7 @@
db 60, 48, 45, 42, 43, 90
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 190 ; catch rate
db 102 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/espeon.asm b/data/pokemon/base_stats/espeon.asm
index 7913fc16..44126640 100644
--- a/data/pokemon/base_stats/espeon.asm
+++ b/data/pokemon/base_stats/espeon.asm
@@ -3,7 +3,7 @@
db 65, 65, 60, 110, 130, 95
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 45 ; catch rate
db 197 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/exeggcute.asm b/data/pokemon/base_stats/exeggcute.asm
index 6aad891f..8ec4ac50 100644
--- a/data/pokemon/base_stats/exeggcute.asm
+++ b/data/pokemon/base_stats/exeggcute.asm
@@ -3,7 +3,7 @@
db 60, 40, 80, 40, 60, 45
; hp atk def spd sat sdf
- db GRASS, PSYCHIC ; type
+ db GRASS, PSYCHIC_TYPE ; type
db 90 ; catch rate
db 98 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/exeggutor.asm b/data/pokemon/base_stats/exeggutor.asm
index f67ecf4a..7a217259 100644
--- a/data/pokemon/base_stats/exeggutor.asm
+++ b/data/pokemon/base_stats/exeggutor.asm
@@ -3,7 +3,7 @@
db 95, 95, 85, 55, 125, 65
; hp atk def spd sat sdf
- db GRASS, PSYCHIC ; type
+ db GRASS, PSYCHIC_TYPE ; type
db 45 ; catch rate
db 212 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/girafarig.asm b/data/pokemon/base_stats/girafarig.asm
index 93acd159..015b46ad 100644
--- a/data/pokemon/base_stats/girafarig.asm
+++ b/data/pokemon/base_stats/girafarig.asm
@@ -3,7 +3,7 @@
db 70, 80, 65, 85, 90, 65
; hp atk def spd sat sdf
- db NORMAL, PSYCHIC ; type
+ db NORMAL, PSYCHIC_TYPE ; type
db 60 ; catch rate
db 149 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/hypno.asm b/data/pokemon/base_stats/hypno.asm
index f19dd638..8490a106 100644
--- a/data/pokemon/base_stats/hypno.asm
+++ b/data/pokemon/base_stats/hypno.asm
@@ -3,7 +3,7 @@
db 85, 73, 70, 67, 73, 115
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 75 ; catch rate
db 165 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/jynx.asm b/data/pokemon/base_stats/jynx.asm
index 3e43e23b..6563aa28 100644
--- a/data/pokemon/base_stats/jynx.asm
+++ b/data/pokemon/base_stats/jynx.asm
@@ -3,7 +3,7 @@
db 65, 50, 35, 95, 115, 95
; hp atk def spd sat sdf
- db ICE, PSYCHIC ; type
+ db ICE, PSYCHIC_TYPE ; type
db 45 ; catch rate
db 137 ; base exp
db ICE_BERRY, ICE_BERRY ; items
diff --git a/data/pokemon/base_stats/kadabra.asm b/data/pokemon/base_stats/kadabra.asm
index da2f3bf4..48a34dde 100644
--- a/data/pokemon/base_stats/kadabra.asm
+++ b/data/pokemon/base_stats/kadabra.asm
@@ -3,7 +3,7 @@
db 40, 35, 30, 105, 120, 70
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 100 ; catch rate
db 145 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/lugia.asm b/data/pokemon/base_stats/lugia.asm
index 9fa2a759..f29ccc33 100644
--- a/data/pokemon/base_stats/lugia.asm
+++ b/data/pokemon/base_stats/lugia.asm
@@ -3,7 +3,7 @@
db 106, 90, 130, 110, 90, 154
; hp atk def spd sat sdf
- db PSYCHIC, FLYING ; type
+ db PSYCHIC_TYPE, FLYING ; type
db 3 ; catch rate
db 220 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/mew.asm b/data/pokemon/base_stats/mew.asm
index c910fa66..6236dc88 100644
--- a/data/pokemon/base_stats/mew.asm
+++ b/data/pokemon/base_stats/mew.asm
@@ -3,7 +3,7 @@
db 100, 100, 100, 100, 100, 100
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 45 ; catch rate
db 64 ; base exp
db NO_ITEM, MIRACLEBERRY ; items
diff --git a/data/pokemon/base_stats/mewtwo.asm b/data/pokemon/base_stats/mewtwo.asm
index 39f1fdbf..66a7bd72 100644
--- a/data/pokemon/base_stats/mewtwo.asm
+++ b/data/pokemon/base_stats/mewtwo.asm
@@ -3,7 +3,7 @@
db 106, 110, 90, 130, 154, 90
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 3 ; catch rate
db 220 ; base exp
db NO_ITEM, BERSERK_GENE ; items
diff --git a/data/pokemon/base_stats/mr__mime.asm b/data/pokemon/base_stats/mr__mime.asm
index 5d7d2bad..f690cec6 100644
--- a/data/pokemon/base_stats/mr__mime.asm
+++ b/data/pokemon/base_stats/mr__mime.asm
@@ -3,7 +3,7 @@
db 40, 45, 65, 90, 100, 120
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 45 ; catch rate
db 136 ; base exp
db NO_ITEM, MYSTERYBERRY ; items
diff --git a/data/pokemon/base_stats/natu.asm b/data/pokemon/base_stats/natu.asm
index 4eaa2677..e4906ab9 100644
--- a/data/pokemon/base_stats/natu.asm
+++ b/data/pokemon/base_stats/natu.asm
@@ -3,7 +3,7 @@
db 40, 50, 45, 70, 70, 45
; hp atk def spd sat sdf
- db PSYCHIC, FLYING ; type
+ db PSYCHIC_TYPE, FLYING ; type
db 190 ; catch rate
db 73 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/slowbro.asm b/data/pokemon/base_stats/slowbro.asm
index 2e256b36..ffe95d6c 100644
--- a/data/pokemon/base_stats/slowbro.asm
+++ b/data/pokemon/base_stats/slowbro.asm
@@ -3,7 +3,7 @@
db 95, 75, 110, 30, 100, 80
; hp atk def spd sat sdf
- db WATER, PSYCHIC ; type
+ db WATER, PSYCHIC_TYPE ; type
db 75 ; catch rate
db 164 ; base exp
db NO_ITEM, KINGS_ROCK ; items
diff --git a/data/pokemon/base_stats/slowking.asm b/data/pokemon/base_stats/slowking.asm
index 0c870f4a..d7e9b4af 100644
--- a/data/pokemon/base_stats/slowking.asm
+++ b/data/pokemon/base_stats/slowking.asm
@@ -3,7 +3,7 @@
db 95, 75, 80, 30, 100, 110
; hp atk def spd sat sdf
- db WATER, PSYCHIC ; type
+ db WATER, PSYCHIC_TYPE ; type
db 70 ; catch rate
db 164 ; base exp
db NO_ITEM, KINGS_ROCK ; items
diff --git a/data/pokemon/base_stats/slowpoke.asm b/data/pokemon/base_stats/slowpoke.asm
index e8c718b8..cc06c5b0 100644
--- a/data/pokemon/base_stats/slowpoke.asm
+++ b/data/pokemon/base_stats/slowpoke.asm
@@ -3,7 +3,7 @@
db 90, 65, 65, 15, 40, 40
; hp atk def spd sat sdf
- db WATER, PSYCHIC ; type
+ db WATER, PSYCHIC_TYPE ; type
db 190 ; catch rate
db 99 ; base exp
db NO_ITEM, KINGS_ROCK ; items
diff --git a/data/pokemon/base_stats/smoochum.asm b/data/pokemon/base_stats/smoochum.asm
index d8670632..548ad5f5 100644
--- a/data/pokemon/base_stats/smoochum.asm
+++ b/data/pokemon/base_stats/smoochum.asm
@@ -3,7 +3,7 @@
db 45, 30, 15, 65, 85, 65
; hp atk def spd sat sdf
- db ICE, PSYCHIC ; type
+ db ICE, PSYCHIC_TYPE ; type
db 45 ; catch rate
db 87 ; base exp
db ICE_BERRY, ICE_BERRY ; items
diff --git a/data/pokemon/base_stats/starmie.asm b/data/pokemon/base_stats/starmie.asm
index 262cd612..337afa76 100644
--- a/data/pokemon/base_stats/starmie.asm
+++ b/data/pokemon/base_stats/starmie.asm
@@ -3,7 +3,7 @@
db 60, 75, 85, 115, 100, 85
; hp atk def spd sat sdf
- db WATER, PSYCHIC ; type
+ db WATER, PSYCHIC_TYPE ; type
db 60 ; catch rate
db 207 ; base exp
db STARDUST, STAR_PIECE ; items
diff --git a/data/pokemon/base_stats/unown.asm b/data/pokemon/base_stats/unown.asm
index bf3d0f1f..b8db2883 100644
--- a/data/pokemon/base_stats/unown.asm
+++ b/data/pokemon/base_stats/unown.asm
@@ -3,7 +3,7 @@
db 48, 72, 48, 48, 72, 48
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 225 ; catch rate
db 61 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/wobbuffet.asm b/data/pokemon/base_stats/wobbuffet.asm
index e04d443a..855a7d99 100644
--- a/data/pokemon/base_stats/wobbuffet.asm
+++ b/data/pokemon/base_stats/wobbuffet.asm
@@ -3,7 +3,7 @@
db 190, 33, 58, 33, 33, 58
; hp atk def spd sat sdf
- db PSYCHIC, PSYCHIC ; type
+ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type
db 45 ; catch rate
db 177 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/base_stats/xatu.asm b/data/pokemon/base_stats/xatu.asm
index d0fe363f..f1fc7a55 100644
--- a/data/pokemon/base_stats/xatu.asm
+++ b/data/pokemon/base_stats/xatu.asm
@@ -3,7 +3,7 @@
db 65, 75, 70, 95, 95, 70
; hp atk def spd sat sdf
- db PSYCHIC, FLYING ; type
+ db PSYCHIC_TYPE, FLYING ; type
db 75 ; catch rate
db 171 ; base exp
db NO_ITEM, NO_ITEM ; items
diff --git a/data/pokemon/cries.asm b/data/pokemon/cries.asm
index a57eac98..e6255e04 100644
--- a/data/pokemon/cries.asm
+++ b/data/pokemon/cries.asm
@@ -5,258 +5,258 @@ ENDM
PokemonCries::
; entries correspond to constants/pokemon_constants.asm
- mon_cry CRY_BULBASAUR, $080, $081 ; BULBASAUR
- mon_cry CRY_BULBASAUR, $020, $100 ; IVYSAUR
- mon_cry CRY_BULBASAUR, $000, $140 ; VENUSAUR
- mon_cry CRY_CHARMANDER, $060, $0c0 ; CHARMANDER
- mon_cry CRY_CHARMANDER, $020, $0c0 ; CHARMELEON
- mon_cry CRY_CHARMANDER, $000, $100 ; CHARIZARD
- mon_cry CRY_SQUIRTLE, $060, $0c0 ; SQUIRTLE
- mon_cry CRY_SQUIRTLE, $020, $0c0 ; WARTORTLE
- mon_cry CRY_BLASTOISE, $000, $100 ; BLASTOISE
- mon_cry CRY_CATERPIE, $080, $0a0 ; CATERPIE
- mon_cry CRY_METAPOD, $0cc, $081 ; METAPOD
- mon_cry CRY_CATERPIE, $077, $0c0 ; BUTTERFREE
- mon_cry CRY_WEEDLE, $0ee, $081 ; WEEDLE
- mon_cry CRY_BLASTOISE, $0ff, $081 ; KAKUNA
- mon_cry CRY_BLASTOISE, $060, $100 ; BEEDRILL
- mon_cry CRY_PIDGEY, $0df, $084 ; PIDGEY
- mon_cry CRY_PIDGEOTTO, $028, $140 ; PIDGEOTTO
- mon_cry CRY_PIDGEOTTO, $011, $17f ; PIDGEOT
- mon_cry CRY_RATTATA, $000, $100 ; RATTATA
- mon_cry CRY_RATTATA, $020, $17f ; RATICATE
- mon_cry CRY_SPEAROW, $000, $100 ; SPEAROW
- mon_cry CRY_FEAROW, $040, $120 ; FEAROW
- mon_cry CRY_EKANS, $012, $0c0 ; EKANS
- mon_cry CRY_EKANS, $0e0, $090 ; ARBOK
- mon_cry CRY_BULBASAUR, $0ee, $081 ; PIKACHU
- mon_cry CRY_RAICHU, $0ee, $088 ; RAICHU
- mon_cry CRY_NIDORAN_M, $020, $0c0 ; SANDSHREW
- mon_cry CRY_NIDORAN_M, $0ff, $17f ; SANDSLASH
- mon_cry CRY_NIDORAN_F, $000, $100 ; NIDORAN_F
- mon_cry CRY_NIDORAN_F, $02c, $160 ; NIDORINA
- mon_cry CRY_NIDOQUEEN, $000, $100 ; NIDOQUEEN
- mon_cry CRY_NIDORAN_M, $000, $100 ; NIDORAN_M
- mon_cry CRY_NIDORAN_M, $02c, $140 ; NIDORINO
- mon_cry CRY_RAICHU, $000, $100 ; NIDOKING
- mon_cry CRY_CLEFAIRY, $0cc, $081 ; CLEFAIRY
- mon_cry CRY_CLEFAIRY, $0aa, $0a0 ; CLEFABLE
- mon_cry CRY_VULPIX, $04f, $090 ; VULPIX
- mon_cry CRY_VULPIX, $088, $0e0 ; NINETALES
- mon_cry CRY_PIDGEY, $0ff, $0b5 ; JIGGLYPUFF
- mon_cry CRY_PIDGEY, $068, $0e0 ; WIGGLYTUFF
- mon_cry CRY_SQUIRTLE, $0e0, $100 ; ZUBAT
- mon_cry CRY_SQUIRTLE, $0fa, $100 ; GOLBAT
- mon_cry CRY_ODDISH, $0dd, $081 ; ODDISH
- mon_cry CRY_ODDISH, $0aa, $0c0 ; GLOOM
- mon_cry CRY_VILEPLUME, $022, $17f ; VILEPLUME
- mon_cry CRY_PARAS, $020, $160 ; PARAS
- mon_cry CRY_PARAS, $042, $17f ; PARASECT
- mon_cry CRY_VENONAT, $044, $0c0 ; VENONAT
- mon_cry CRY_VENONAT, $029, $100 ; VENOMOTH
- mon_cry CRY_DIGLETT, $0aa, $081 ; DIGLETT
- mon_cry CRY_DIGLETT, $02a, $090 ; DUGTRIO
- mon_cry CRY_CLEFAIRY, $077, $090 ; MEOWTH
- mon_cry CRY_CLEFAIRY, $099, $17f ; PERSIAN
- mon_cry CRY_PSYDUCK, $020, $0e0 ; PSYDUCK
- mon_cry CRY_PSYDUCK, $0ff, $0c0 ; GOLDUCK
- mon_cry CRY_NIDOQUEEN, $0dd, $0e0 ; MANKEY
- mon_cry CRY_NIDOQUEEN, $0af, $0c0 ; PRIMEAPE
- mon_cry CRY_GROWLITHE, $020, $0c0 ; GROWLITHE
- mon_cry CRY_WEEDLE, $000, $100 ; ARCANINE
- mon_cry CRY_PIDGEY, $0ff, $17f ; POLIWAG
- mon_cry CRY_PIDGEY, $077, $0e0 ; POLIWHIRL
- mon_cry CRY_PIDGEY, $000, $17f ; POLIWRATH
- mon_cry CRY_METAPOD, $0c0, $081 ; ABRA
- mon_cry CRY_METAPOD, $0a8, $140 ; KADABRA
- mon_cry CRY_METAPOD, $098, $17f ; ALAKAZAM
- mon_cry CRY_GROWLITHE, $0ee, $081 ; MACHOP
- mon_cry CRY_GROWLITHE, $048, $0e0 ; MACHOKE
- mon_cry CRY_GROWLITHE, $008, $140 ; MACHAMP
- mon_cry CRY_PSYDUCK, $055, $081 ; BELLSPROUT
- mon_cry CRY_WEEPINBELL, $044, $0a0 ; WEEPINBELL
- mon_cry CRY_WEEPINBELL, $066, $14c ; VICTREEBEL
- mon_cry CRY_VENONAT, $000, $100 ; TENTACOOL
- mon_cry CRY_VENONAT, $0ee, $17f ; TENTACRUEL
- mon_cry CRY_VULPIX, $0f0, $090 ; GEODUDE
- mon_cry CRY_VULPIX, $000, $100 ; GRAVELER
- mon_cry CRY_GOLEM, $0e0, $0c0 ; GOLEM
- mon_cry CRY_WEEPINBELL, $000, $100 ; PONYTA
- mon_cry CRY_WEEPINBELL, $020, $140 ; RAPIDASH
- mon_cry CRY_SLOWPOKE, $000, $100 ; SLOWPOKE
- mon_cry CRY_GROWLITHE, $000, $100 ; SLOWBRO
- mon_cry CRY_METAPOD, $080, $0e0 ; MAGNEMITE
- mon_cry CRY_METAPOD, $020, $140 ; MAGNETON
- mon_cry CRY_SPEAROW, $0dd, $081 ; FARFETCH_D
- mon_cry CRY_DIGLETT, $0bb, $081 ; DODUO
- mon_cry CRY_DIGLETT, $099, $0a0 ; DODRIO
- mon_cry CRY_SEEL, $088, $140 ; SEEL
- mon_cry CRY_SEEL, $023, $17f ; DEWGONG
- mon_cry CRY_GRIMER, $000, $100 ; GRIMER
- mon_cry CRY_MUK, $0ef, $17f ; MUK
- mon_cry CRY_FEAROW, $000, $100 ; SHELLDER
- mon_cry CRY_FEAROW, $06f, $160 ; CLOYSTER
- mon_cry CRY_METAPOD, $000, $100 ; GASTLY
- mon_cry CRY_METAPOD, $030, $0c0 ; HAUNTER
- mon_cry CRY_MUK, $000, $17f ; GENGAR
- mon_cry CRY_EKANS, $0ff, $140 ; ONIX
- mon_cry CRY_DROWZEE, $088, $0a0 ; DROWZEE
- mon_cry CRY_DROWZEE, $0ee, $0c0 ; HYPNO
- mon_cry CRY_KRABBY, $020, $160 ; KRABBY
- mon_cry CRY_KRABBY, $0ee, $160 ; KINGLER
- mon_cry CRY_VOLTORB, $0ed, $100 ; VOLTORB
- mon_cry CRY_VOLTORB, $0a8, $110 ; ELECTRODE
- mon_cry CRY_DIGLETT, $000, $100 ; EXEGGCUTE
- mon_cry CRY_DROWZEE, $000, $100 ; EXEGGUTOR
- mon_cry CRY_CLEFAIRY, $000, $100 ; CUBONE
- mon_cry CRY_ODDISH, $04f, $0e0 ; MAROWAK
- mon_cry CRY_GOLEM, $080, $140 ; HITMONLEE
- mon_cry CRY_SEEL, $0ee, $140 ; HITMONCHAN
- mon_cry CRY_SEEL, $000, $100 ; LICKITUNG
- mon_cry CRY_GOLEM, $0e6, $15d ; KOFFING
- mon_cry CRY_GOLEM, $0ff, $17f ; WEEZING
- mon_cry CRY_CHARMANDER, $000, $100 ; RHYHORN
- mon_cry CRY_RHYDON, $000, $100 ; RHYDON
- mon_cry CRY_PIDGEOTTO, $00a, $140 ; CHANSEY
- mon_cry CRY_GOLEM, $000, $100 ; TANGELA
- mon_cry CRY_KANGASKHAN, $000, $100 ; KANGASKHAN
- mon_cry CRY_CLEFAIRY, $099, $090 ; HORSEA
- mon_cry CRY_CLEFAIRY, $03c, $081 ; SEADRA
- mon_cry CRY_CATERPIE, $080, $0c0 ; GOLDEEN
- mon_cry CRY_CATERPIE, $010, $17f ; SEAKING
- mon_cry CRY_PARAS, $002, $0a0 ; STARYU
- mon_cry CRY_PARAS, $000, $100 ; STARMIE
- mon_cry CRY_KRABBY, $008, $0c0 ; MR__MIME
- mon_cry CRY_CATERPIE, $000, $100 ; SCYTHER
- mon_cry CRY_DROWZEE, $0ff, $17f ; JYNX
- mon_cry CRY_VOLTORB, $08f, $17f ; ELECTABUZZ
- mon_cry CRY_CHARMANDER, $0ff, $0b0 ; MAGMAR
- mon_cry CRY_PIDGEOTTO, $000, $100 ; PINSIR
- mon_cry CRY_SQUIRTLE, $011, $0c0 ; TAUROS
- mon_cry CRY_EKANS, $080, $080 ; MAGIKARP
- mon_cry CRY_EKANS, $000, $100 ; GYARADOS
- mon_cry CRY_LAPRAS, $000, $100 ; LAPRAS
- mon_cry CRY_PIDGEY, $0ff, $17f ; DITTO
- mon_cry CRY_VENONAT, $088, $0e0 ; EEVEE
- mon_cry CRY_VENONAT, $0aa, $17f ; VAPOREON
- mon_cry CRY_VENONAT, $03d, $100 ; JOLTEON
- mon_cry CRY_VENONAT, $010, $0a0 ; FLAREON
- mon_cry CRY_WEEPINBELL, $0aa, $17f ; PORYGON
- mon_cry CRY_GROWLITHE, $0f0, $081 ; OMANYTE
- mon_cry CRY_GROWLITHE, $0ff, $0c0 ; OMASTAR
- mon_cry CRY_CATERPIE, $0bb, $0c0 ; KABUTO
- mon_cry CRY_FEAROW, $0ee, $081 ; KABUTOPS
- mon_cry CRY_VILEPLUME, $020, $170 ; AERODACTYL
- mon_cry CRY_GRIMER, $055, $081 ; SNORLAX
- mon_cry CRY_RAICHU, $080, $0c0 ; ARTICUNO
- mon_cry CRY_FEAROW, $0ff, $100 ; ZAPDOS
- mon_cry CRY_RAICHU, $0f8, $0c0 ; MOLTRES
- mon_cry CRY_BULBASAUR, $060, $0c0 ; DRATINI
- mon_cry CRY_BULBASAUR, $040, $100 ; DRAGONAIR
- mon_cry CRY_BULBASAUR, $03c, $140 ; DRAGONITE
- mon_cry CRY_PARAS, $099, $17f ; MEWTWO
- mon_cry CRY_PARAS, $0ee, $17f ; MEW
- mon_cry CRY_CHIKORITA, -$010, $0b0 ; CHIKORITA
- mon_cry CRY_CHIKORITA, -$022, $120 ; BAYLEEF
- mon_cry CRY_CHIKORITA, -$0b7, $200 ; MEGANIUM
- mon_cry CRY_CYNDAQUIL, $347, $080 ; CYNDAQUIL
- mon_cry CRY_CYNDAQUIL, $321, $120 ; QUILAVA
- mon_cry CRY_TYPHLOSION, $f00, $0d4 ; TYPHLOSION
- mon_cry CRY_TOTODILE, $46c, $0e8 ; TOTODILE
- mon_cry CRY_TOTODILE, $440, $110 ; CROCONAW
- mon_cry CRY_TOTODILE, $3fc, $180 ; FERALIGATR
- mon_cry CRY_SENTRET, $08a, $0b8 ; SENTRET
- mon_cry CRY_SENTRET, $06b, $102 ; FURRET
- mon_cry CRY_HOOTHOOT, $091, $0d8 ; HOOTHOOT
- mon_cry CRY_HOOTHOOT, $000, $1a0 ; NOCTOWL
- mon_cry CRY_LEDYBA, $000, $0de ; LEDYBA
- mon_cry CRY_LEDYBA, -$096, $138 ; LEDIAN
- mon_cry CRY_SPINARAK, $011, $200 ; SPINARAK
- mon_cry CRY_SPINARAK, -$0ae, $1e2 ; ARIADOS
- mon_cry CRY_SQUIRTLE, -$010, $140 ; CROBAT
- mon_cry CRY_CYNDAQUIL, $3c9, $140 ; CHINCHOU
- mon_cry CRY_CYNDAQUIL, $2d0, $110 ; LANTURN
- mon_cry CRY_PICHU, $000, $140 ; PICHU
- mon_cry CRY_CLEFFA, $061, $091 ; CLEFFA
- mon_cry CRY_CHIKORITA, $0e8, $0e8 ; IGGLYBUFF
- mon_cry CRY_TOGEPI, $010, $100 ; TOGEPI
- mon_cry CRY_TOGETIC, $03b, $038 ; TOGETIC
- mon_cry CRY_NATU, -$067, $100 ; NATU
- mon_cry CRY_NATU, -$0a7, $168 ; XATU
- mon_cry CRY_MAREEP, $022, $0d8 ; MAREEP
- mon_cry CRY_MAREEP, -$007, $180 ; FLAAFFY
- mon_cry CRY_AMPHAROS, -$07c, $0e8 ; AMPHAROS
- mon_cry CRY_CLEFFA, $084, $150 ; BELLOSSOM
- mon_cry CRY_MARILL, $11b, $120 ; MARILL
- mon_cry CRY_MARILL, $0b6, $180 ; AZUMARILL
- mon_cry CRY_CLEFFA, $f40, $180 ; SUDOWOODO
- mon_cry CRY_CLEFFA, -$2a3, $1c8 ; POLITOED
- mon_cry CRY_CLEFFA, $03b, $0c8 ; HOPPIP
- mon_cry CRY_CLEFFA, $027, $138 ; SKIPLOOM
- mon_cry CRY_CLEFFA, $000, $180 ; JUMPLUFF
- mon_cry CRY_AIPOM, -$051, $0e8 ; AIPOM
- mon_cry CRY_MARILL, $12b, $0b8 ; SUNKERN
- mon_cry CRY_SUNFLORA, -$020, $180 ; SUNFLORA
- mon_cry CRY_TOTODILE, $031, $0c8 ; YANMA
- mon_cry CRY_WOOPER, $093, $0af ; WOOPER
- mon_cry CRY_WOOPER, -$0c6, $140 ; QUAGSIRE
- mon_cry CRY_AIPOM, $0a2, $140 ; ESPEON
- mon_cry CRY_VENONAT, -$0e9, $0f0 ; UMBREON
- mon_cry CRY_MARILL, -$01f, $180 ; MURKROW
- mon_cry CRY_SLOWKING, $104, $200 ; SLOWKING
- mon_cry CRY_HOOTHOOT, $130, $0e8 ; MISDREAVUS
- mon_cry CRY_HOOTHOOT, $162, $100 ; UNOWN
- mon_cry CRY_AMPHAROS, $27b, $144 ; WOBBUFFET
- mon_cry CRY_GIRAFARIG, $041, $200 ; GIRAFARIG
- mon_cry CRY_SLOWKING, $080, $100 ; PINECO
- mon_cry CRY_SLOWKING, $000, $180 ; FORRETRESS
- mon_cry CRY_DUNSPARCE, $1c4, $100 ; DUNSPARCE
- mon_cry CRY_GLIGAR, -$102, $100 ; GLIGAR
- mon_cry CRY_TYPHLOSION, $0ef, $0f7 ; STEELIX
- mon_cry CRY_DUNSPARCE, $112, $0e8 ; SNUBBULL
- mon_cry CRY_DUNSPARCE, $000, $180 ; GRANBULL
- mon_cry CRY_SLOWKING, $160, $0e0 ; QWILFISH
- mon_cry CRY_AMPHAROS, $000, $160 ; SCIZOR
- mon_cry CRY_DUNSPARCE, $290, $0a8 ; SHUCKLE
- mon_cry CRY_AMPHAROS, $035, $0e0 ; HERACROSS
- mon_cry CRY_WOOPER, $053, $0af ; SNEASEL
- mon_cry CRY_TEDDIURSA, $7a2, $06e ; TEDDIURSA
- mon_cry CRY_TEDDIURSA, $640, $0d8 ; URSARING
- mon_cry CRY_SLUGMA, -$1d8, $140 ; SLUGMA
- mon_cry CRY_MAGCARGO, -$20d, $1c0 ; MAGCARGO
- mon_cry CRY_CYNDAQUIL, $1fe, $140 ; SWINUB
- mon_cry CRY_MAGCARGO, -$109, $100 ; PILOSWINE
- mon_cry CRY_MAGCARGO, $0a1, $0e8 ; CORSOLA
- mon_cry CRY_SUNFLORA, $00d, $100 ; REMORAID
- mon_cry CRY_TOTODILE, $000, $180 ; OCTILLERY
- mon_cry CRY_TEDDIURSA, $002, $06a ; DELIBIRD
- mon_cry CRY_MANTINE, -$0be, $0f0 ; MANTINE
- mon_cry CRY_AMPHAROS, $8a9, $180 ; SKARMORY
- mon_cry CRY_CYNDAQUIL, $039, $140 ; HOUNDOUR
- mon_cry CRY_TOTODILE, -$10a, $100 ; HOUNDOOM
- mon_cry CRY_SLUGMA, $2fb, $100 ; KINGDRA
- mon_cry CRY_SENTRET, $048, $230 ; PHANPY
- mon_cry CRY_DONPHAN, $000, $1a0 ; DONPHAN
- mon_cry CRY_GIRAFARIG, $073, $240 ; PORYGON2
- mon_cry CRY_AIPOM, -$160, $180 ; STANTLER
- mon_cry CRY_PICHU, -$21a, $1f0 ; SMEARGLE
- mon_cry CRY_AIPOM, $02c, $108 ; TYROGUE
- mon_cry CRY_SLUGMA, $000, $100 ; HITMONTOP
- mon_cry CRY_MARILL, $068, $100 ; SMOOCHUM
- mon_cry CRY_SUNFLORA, -$2d8, $0b4 ; ELEKID
- mon_cry CRY_TEDDIURSA, $176, $03a ; MAGBY
- mon_cry CRY_GLIGAR, -$1cd, $1a0 ; MILTANK
- mon_cry CRY_SLOWKING, $293, $140 ; BLISSEY
- mon_cry CRY_RAIKOU, $22e, $120 ; RAIKOU
- mon_cry CRY_ENTEI, $000, $1a0 ; ENTEI
- mon_cry CRY_MAGCARGO, $000, $180 ; SUICUNE
- mon_cry CRY_RAIKOU, $05f, $0d0 ; LARVITAR
- mon_cry CRY_SPINARAK, -$1db, $150 ; PUPITAR
- mon_cry CRY_RAIKOU, -$100, $180 ; TYRANITAR
- mon_cry CRY_TYPHLOSION, $000, $100 ; LUGIA
- mon_cry CRY_AIPOM, $000, $180 ; HO_OH
- mon_cry CRY_ENTEI, $14a, $111 ; CELEBI
- mon_cry CRY_NIDORAN_M, 0, 0 ; 252
- mon_cry CRY_NIDORAN_M, 0, 0 ; 253
- mon_cry CRY_NIDORAN_M, 0, 0 ; 254
- mon_cry CRY_NIDORAN_M, 0, 0 ; 255
+ mon_cry CRY_BULBASAUR, 128, 129 ; BULBASAUR
+ mon_cry CRY_BULBASAUR, 32, 256 ; IVYSAUR
+ mon_cry CRY_BULBASAUR, 0, 320 ; VENUSAUR
+ mon_cry CRY_CHARMANDER, 96, 192 ; CHARMANDER
+ mon_cry CRY_CHARMANDER, 32, 192 ; CHARMELEON
+ mon_cry CRY_CHARMANDER, 0, 256 ; CHARIZARD
+ mon_cry CRY_SQUIRTLE, 96, 192 ; SQUIRTLE
+ mon_cry CRY_SQUIRTLE, 32, 192 ; WARTORTLE
+ mon_cry CRY_BLASTOISE, 0, 256 ; BLASTOISE
+ mon_cry CRY_CATERPIE, 128, 160 ; CATERPIE
+ mon_cry CRY_METAPOD, 204, 129 ; METAPOD
+ mon_cry CRY_CATERPIE, 119, 192 ; BUTTERFREE
+ mon_cry CRY_WEEDLE, 238, 129 ; WEEDLE
+ mon_cry CRY_BLASTOISE, 255, 129 ; KAKUNA
+ mon_cry CRY_BLASTOISE, 96, 256 ; BEEDRILL
+ mon_cry CRY_PIDGEY, 223, 132 ; PIDGEY
+ mon_cry CRY_PIDGEOTTO, 40, 320 ; PIDGEOTTO
+ mon_cry CRY_PIDGEOTTO, 17, 383 ; PIDGEOT
+ mon_cry CRY_RATTATA, 0, 256 ; RATTATA
+ mon_cry CRY_RATTATA, 32, 383 ; RATICATE
+ mon_cry CRY_SPEAROW, 0, 256 ; SPEAROW
+ mon_cry CRY_FEAROW, 64, 288 ; FEAROW
+ mon_cry CRY_EKANS, 18, 192 ; EKANS
+ mon_cry CRY_EKANS, 224, 144 ; ARBOK
+ mon_cry CRY_BULBASAUR, 238, 129 ; PIKACHU
+ mon_cry CRY_RAICHU, 238, 136 ; RAICHU
+ mon_cry CRY_NIDORAN_M, 32, 192 ; SANDSHREW
+ mon_cry CRY_NIDORAN_M, 255, 383 ; SANDSLASH
+ mon_cry CRY_NIDORAN_F, 0, 256 ; NIDORAN_F
+ mon_cry CRY_NIDORAN_F, 44, 352 ; NIDORINA
+ mon_cry CRY_NIDOQUEEN, 0, 256 ; NIDOQUEEN
+ mon_cry CRY_NIDORAN_M, 0, 256 ; NIDORAN_M
+ mon_cry CRY_NIDORAN_M, 44, 320 ; NIDORINO
+ mon_cry CRY_RAICHU, 0, 256 ; NIDOKING
+ mon_cry CRY_CLEFAIRY, 204, 129 ; CLEFAIRY
+ mon_cry CRY_CLEFAIRY, 170, 160 ; CLEFABLE
+ mon_cry CRY_VULPIX, 79, 144 ; VULPIX
+ mon_cry CRY_VULPIX, 136, 224 ; NINETALES
+ mon_cry CRY_PIDGEY, 255, 181 ; JIGGLYPUFF
+ mon_cry CRY_PIDGEY, 104, 224 ; WIGGLYTUFF
+ mon_cry CRY_SQUIRTLE, 224, 256 ; ZUBAT
+ mon_cry CRY_SQUIRTLE, 250, 256 ; GOLBAT
+ mon_cry CRY_ODDISH, 221, 129 ; ODDISH
+ mon_cry CRY_ODDISH, 170, 192 ; GLOOM
+ mon_cry CRY_VILEPLUME, 34, 383 ; VILEPLUME
+ mon_cry CRY_PARAS, 32, 352 ; PARAS
+ mon_cry CRY_PARAS, 66, 383 ; PARASECT
+ mon_cry CRY_VENONAT, 68, 192 ; VENONAT
+ mon_cry CRY_VENONAT, 41, 256 ; VENOMOTH
+ mon_cry CRY_DIGLETT, 170, 129 ; DIGLETT
+ mon_cry CRY_DIGLETT, 42, 144 ; DUGTRIO
+ mon_cry CRY_CLEFAIRY, 119, 144 ; MEOWTH
+ mon_cry CRY_CLEFAIRY, 153, 383 ; PERSIAN
+ mon_cry CRY_PSYDUCK, 32, 224 ; PSYDUCK
+ mon_cry CRY_PSYDUCK, 255, 192 ; GOLDUCK
+ mon_cry CRY_NIDOQUEEN, 221, 224 ; MANKEY
+ mon_cry CRY_NIDOQUEEN, 175, 192 ; PRIMEAPE
+ mon_cry CRY_GROWLITHE, 32, 192 ; GROWLITHE
+ mon_cry CRY_WEEDLE, 0, 256 ; ARCANINE
+ mon_cry CRY_PIDGEY, 255, 383 ; POLIWAG
+ mon_cry CRY_PIDGEY, 119, 224 ; POLIWHIRL
+ mon_cry CRY_PIDGEY, 0, 383 ; POLIWRATH
+ mon_cry CRY_METAPOD, 192, 129 ; ABRA
+ mon_cry CRY_METAPOD, 168, 320 ; KADABRA
+ mon_cry CRY_METAPOD, 152, 383 ; ALAKAZAM
+ mon_cry CRY_GROWLITHE, 238, 129 ; MACHOP
+ mon_cry CRY_GROWLITHE, 72, 224 ; MACHOKE
+ mon_cry CRY_GROWLITHE, 8, 320 ; MACHAMP
+ mon_cry CRY_PSYDUCK, 85, 129 ; BELLSPROUT
+ mon_cry CRY_WEEPINBELL, 68, 160 ; WEEPINBELL
+ mon_cry CRY_WEEPINBELL, 102, 332 ; VICTREEBEL
+ mon_cry CRY_VENONAT, 0, 256 ; TENTACOOL
+ mon_cry CRY_VENONAT, 238, 383 ; TENTACRUEL
+ mon_cry CRY_VULPIX, 240, 144 ; GEODUDE
+ mon_cry CRY_VULPIX, 0, 256 ; GRAVELER
+ mon_cry CRY_GOLEM, 224, 192 ; GOLEM
+ mon_cry CRY_WEEPINBELL, 0, 256 ; PONYTA
+ mon_cry CRY_WEEPINBELL, 32, 320 ; RAPIDASH
+ mon_cry CRY_SLOWPOKE, 0, 256 ; SLOWPOKE
+ mon_cry CRY_GROWLITHE, 0, 256 ; SLOWBRO
+ mon_cry CRY_METAPOD, 128, 224 ; MAGNEMITE
+ mon_cry CRY_METAPOD, 32, 320 ; MAGNETON
+ mon_cry CRY_SPEAROW, 221, 129 ; FARFETCH_D
+ mon_cry CRY_DIGLETT, 187, 129 ; DODUO
+ mon_cry CRY_DIGLETT, 153, 160 ; DODRIO
+ mon_cry CRY_SEEL, 136, 320 ; SEEL
+ mon_cry CRY_SEEL, 35, 383 ; DEWGONG
+ mon_cry CRY_GRIMER, 0, 256 ; GRIMER
+ mon_cry CRY_MUK, 239, 383 ; MUK
+ mon_cry CRY_FEAROW, 0, 256 ; SHELLDER
+ mon_cry CRY_FEAROW, 111, 352 ; CLOYSTER
+ mon_cry CRY_METAPOD, 0, 256 ; GASTLY
+ mon_cry CRY_METAPOD, 48, 192 ; HAUNTER
+ mon_cry CRY_MUK, 0, 383 ; GENGAR
+ mon_cry CRY_EKANS, 255, 320 ; ONIX
+ mon_cry CRY_DROWZEE, 136, 160 ; DROWZEE
+ mon_cry CRY_DROWZEE, 238, 192 ; HYPNO
+ mon_cry CRY_KRABBY, 32, 352 ; KRABBY
+ mon_cry CRY_KRABBY, 238, 352 ; KINGLER
+ mon_cry CRY_VOLTORB, 237, 256 ; VOLTORB
+ mon_cry CRY_VOLTORB, 168, 272 ; ELECTRODE
+ mon_cry CRY_DIGLETT, 0, 256 ; EXEGGCUTE
+ mon_cry CRY_DROWZEE, 0, 256 ; EXEGGUTOR
+ mon_cry CRY_CLEFAIRY, 0, 256 ; CUBONE
+ mon_cry CRY_ODDISH, 79, 224 ; MAROWAK
+ mon_cry CRY_GOLEM, 128, 320 ; HITMONLEE
+ mon_cry CRY_SEEL, 238, 320 ; HITMONCHAN
+ mon_cry CRY_SEEL, 0, 256 ; LICKITUNG
+ mon_cry CRY_GOLEM, 230, 349 ; KOFFING
+ mon_cry CRY_GOLEM, 255, 383 ; WEEZING
+ mon_cry CRY_CHARMANDER, 0, 256 ; RHYHORN
+ mon_cry CRY_RHYDON, 0, 256 ; RHYDON
+ mon_cry CRY_PIDGEOTTO, 10, 320 ; CHANSEY
+ mon_cry CRY_GOLEM, 0, 256 ; TANGELA
+ mon_cry CRY_KANGASKHAN, 0, 256 ; KANGASKHAN
+ mon_cry CRY_CLEFAIRY, 153, 144 ; HORSEA
+ mon_cry CRY_CLEFAIRY, 60, 129 ; SEADRA
+ mon_cry CRY_CATERPIE, 128, 192 ; GOLDEEN
+ mon_cry CRY_CATERPIE, 16, 383 ; SEAKING
+ mon_cry CRY_PARAS, 2, 160 ; STARYU
+ mon_cry CRY_PARAS, 0, 256 ; STARMIE
+ mon_cry CRY_KRABBY, 8, 192 ; MR__MIME
+ mon_cry CRY_CATERPIE, 0, 256 ; SCYTHER
+ mon_cry CRY_DROWZEE, 255, 383 ; JYNX
+ mon_cry CRY_VOLTORB, 143, 383 ; ELECTABUZZ
+ mon_cry CRY_CHARMANDER, 255, 176 ; MAGMAR
+ mon_cry CRY_PIDGEOTTO, 0, 256 ; PINSIR
+ mon_cry CRY_SQUIRTLE, 17, 192 ; TAUROS
+ mon_cry CRY_EKANS, 128, 128 ; MAGIKARP
+ mon_cry CRY_EKANS, 0, 256 ; GYARADOS
+ mon_cry CRY_LAPRAS, 0, 256 ; LAPRAS
+ mon_cry CRY_PIDGEY, 255, 383 ; DITTO
+ mon_cry CRY_VENONAT, 136, 224 ; EEVEE
+ mon_cry CRY_VENONAT, 170, 383 ; VAPOREON
+ mon_cry CRY_VENONAT, 61, 256 ; JOLTEON
+ mon_cry CRY_VENONAT, 16, 160 ; FLAREON
+ mon_cry CRY_WEEPINBELL, 170, 383 ; PORYGON
+ mon_cry CRY_GROWLITHE, 240, 129 ; OMANYTE
+ mon_cry CRY_GROWLITHE, 255, 192 ; OMASTAR
+ mon_cry CRY_CATERPIE, 187, 192 ; KABUTO
+ mon_cry CRY_FEAROW, 238, 129 ; KABUTOPS
+ mon_cry CRY_VILEPLUME, 32, 368 ; AERODACTYL
+ mon_cry CRY_GRIMER, 85, 129 ; SNORLAX
+ mon_cry CRY_RAICHU, 128, 192 ; ARTICUNO
+ mon_cry CRY_FEAROW, 255, 256 ; ZAPDOS
+ mon_cry CRY_RAICHU, 248, 192 ; MOLTRES
+ mon_cry CRY_BULBASAUR, 96, 192 ; DRATINI
+ mon_cry CRY_BULBASAUR, 64, 256 ; DRAGONAIR
+ mon_cry CRY_BULBASAUR, 60, 320 ; DRAGONITE
+ mon_cry CRY_PARAS, 153, 383 ; MEWTWO
+ mon_cry CRY_PARAS, 238, 383 ; MEW
+ mon_cry CRY_CHIKORITA, -16, 176 ; CHIKORITA
+ mon_cry CRY_CHIKORITA, -34, 288 ; BAYLEEF
+ mon_cry CRY_CHIKORITA, -183, 512 ; MEGANIUM
+ mon_cry CRY_CYNDAQUIL, 839, 128 ; CYNDAQUIL
+ mon_cry CRY_CYNDAQUIL, 801, 288 ; QUILAVA
+ mon_cry CRY_TYPHLOSION, 3840, 212 ; TYPHLOSION
+ mon_cry CRY_TOTODILE, 1132, 232 ; TOTODILE
+ mon_cry CRY_TOTODILE, 1088, 272 ; CROCONAW
+ mon_cry CRY_TOTODILE, 1020, 384 ; FERALIGATR
+ mon_cry CRY_SENTRET, 138, 184 ; SENTRET
+ mon_cry CRY_SENTRET, 107, 258 ; FURRET
+ mon_cry CRY_HOOTHOOT, 145, 216 ; HOOTHOOT
+ mon_cry CRY_HOOTHOOT, 0, 416 ; NOCTOWL
+ mon_cry CRY_LEDYBA, 0, 222 ; LEDYBA
+ mon_cry CRY_LEDYBA, -150, 312 ; LEDIAN
+ mon_cry CRY_SPINARAK, 17, 512 ; SPINARAK
+ mon_cry CRY_SPINARAK, -174, 482 ; ARIADOS
+ mon_cry CRY_SQUIRTLE, -16, 320 ; CROBAT
+ mon_cry CRY_CYNDAQUIL, 969, 320 ; CHINCHOU
+ mon_cry CRY_CYNDAQUIL, 720, 272 ; LANTURN
+ mon_cry CRY_PICHU, 0, 320 ; PICHU
+ mon_cry CRY_CLEFFA, 97, 145 ; CLEFFA
+ mon_cry CRY_CHIKORITA, 232, 232 ; IGGLYBUFF
+ mon_cry CRY_TOGEPI, 16, 256 ; TOGEPI
+ mon_cry CRY_TOGETIC, 59, 56 ; TOGETIC
+ mon_cry CRY_NATU, -103, 256 ; NATU
+ mon_cry CRY_NATU, -167, 360 ; XATU
+ mon_cry CRY_MAREEP, 34, 216 ; MAREEP
+ mon_cry CRY_MAREEP, -7, 384 ; FLAAFFY
+ mon_cry CRY_AMPHAROS, -124, 232 ; AMPHAROS
+ mon_cry CRY_CLEFFA, 132, 336 ; BELLOSSOM
+ mon_cry CRY_MARILL, 283, 288 ; MARILL
+ mon_cry CRY_MARILL, 182, 384 ; AZUMARILL
+ mon_cry CRY_CLEFFA, 3904, 384 ; SUDOWOODO
+ mon_cry CRY_CLEFFA, -675, 456 ; POLITOED
+ mon_cry CRY_CLEFFA, 59, 200 ; HOPPIP
+ mon_cry CRY_CLEFFA, 39, 312 ; SKIPLOOM
+ mon_cry CRY_CLEFFA, 0, 384 ; JUMPLUFF
+ mon_cry CRY_AIPOM, -81, 232 ; AIPOM
+ mon_cry CRY_MARILL, 299, 184 ; SUNKERN
+ mon_cry CRY_SUNFLORA, -32, 384 ; SUNFLORA
+ mon_cry CRY_TOTODILE, 49, 200 ; YANMA
+ mon_cry CRY_WOOPER, 147, 175 ; WOOPER
+ mon_cry CRY_WOOPER, -198, 320 ; QUAGSIRE
+ mon_cry CRY_AIPOM, 162, 320 ; ESPEON
+ mon_cry CRY_VENONAT, -233, 240 ; UMBREON
+ mon_cry CRY_MARILL, -31, 384 ; MURKROW
+ mon_cry CRY_SLOWKING, 260, 512 ; SLOWKING
+ mon_cry CRY_HOOTHOOT, 304, 232 ; MISDREAVUS
+ mon_cry CRY_HOOTHOOT, 354, 256 ; UNOWN
+ mon_cry CRY_AMPHAROS, 635, 324 ; WOBBUFFET
+ mon_cry CRY_GIRAFARIG, 65, 512 ; GIRAFARIG
+ mon_cry CRY_SLOWKING, 128, 256 ; PINECO
+ mon_cry CRY_SLOWKING, 0, 384 ; FORRETRESS
+ mon_cry CRY_DUNSPARCE, 452, 256 ; DUNSPARCE
+ mon_cry CRY_GLIGAR, -258, 256 ; GLIGAR
+ mon_cry CRY_TYPHLOSION, 239, 247 ; STEELIX
+ mon_cry CRY_DUNSPARCE, 274, 232 ; SNUBBULL
+ mon_cry CRY_DUNSPARCE, 0, 384 ; GRANBULL
+ mon_cry CRY_SLOWKING, 352, 224 ; QWILFISH
+ mon_cry CRY_AMPHAROS, 0, 352 ; SCIZOR
+ mon_cry CRY_DUNSPARCE, 656, 168 ; SHUCKLE
+ mon_cry CRY_AMPHAROS, 53, 224 ; HERACROSS
+ mon_cry CRY_WOOPER, 83, 175 ; SNEASEL
+ mon_cry CRY_TEDDIURSA, 1954, 110 ; TEDDIURSA
+ mon_cry CRY_TEDDIURSA, 1600, 216 ; URSARING
+ mon_cry CRY_SLUGMA, -472, 320 ; SLUGMA
+ mon_cry CRY_MAGCARGO, -525, 448 ; MAGCARGO
+ mon_cry CRY_CYNDAQUIL, 510, 320 ; SWINUB
+ mon_cry CRY_MAGCARGO, -265, 256 ; PILOSWINE
+ mon_cry CRY_MAGCARGO, 161, 232 ; CORSOLA
+ mon_cry CRY_SUNFLORA, 13, 256 ; REMORAID
+ mon_cry CRY_TOTODILE, 0, 384 ; OCTILLERY
+ mon_cry CRY_TEDDIURSA, 2, 106 ; DELIBIRD
+ mon_cry CRY_MANTINE, -190, 240 ; MANTINE
+ mon_cry CRY_AMPHAROS, 2217, 384 ; SKARMORY
+ mon_cry CRY_CYNDAQUIL, 57, 320 ; HOUNDOUR
+ mon_cry CRY_TOTODILE, -266, 256 ; HOUNDOOM
+ mon_cry CRY_SLUGMA, 763, 256 ; KINGDRA
+ mon_cry CRY_SENTRET, 72, 560 ; PHANPY
+ mon_cry CRY_DONPHAN, 0, 416 ; DONPHAN
+ mon_cry CRY_GIRAFARIG, 115, 576 ; PORYGON2
+ mon_cry CRY_AIPOM, -352, 384 ; STANTLER
+ mon_cry CRY_PICHU, -538, 496 ; SMEARGLE
+ mon_cry CRY_AIPOM, 44, 264 ; TYROGUE
+ mon_cry CRY_SLUGMA, 0, 256 ; HITMONTOP
+ mon_cry CRY_MARILL, 104, 256 ; SMOOCHUM
+ mon_cry CRY_SUNFLORA, -728, 180 ; ELEKID
+ mon_cry CRY_TEDDIURSA, 374, 58 ; MAGBY
+ mon_cry CRY_GLIGAR, -461, 416 ; MILTANK
+ mon_cry CRY_SLOWKING, 659, 320 ; BLISSEY
+ mon_cry CRY_RAIKOU, 558, 288 ; RAIKOU
+ mon_cry CRY_ENTEI, 0, 416 ; ENTEI
+ mon_cry CRY_MAGCARGO, 0, 384 ; SUICUNE
+ mon_cry CRY_RAIKOU, 95, 208 ; LARVITAR
+ mon_cry CRY_SPINARAK, -475, 336 ; PUPITAR
+ mon_cry CRY_RAIKOU, -256, 384 ; TYRANITAR
+ mon_cry CRY_TYPHLOSION, 0, 256 ; LUGIA
+ mon_cry CRY_AIPOM, 0, 384 ; HO_OH
+ mon_cry CRY_ENTEI, 330, 273 ; CELEBI
+ mon_cry CRY_NIDORAN_M, 0, 0 ; 252
+ mon_cry CRY_NIDORAN_M, 0, 0 ; 253
+ mon_cry CRY_NIDORAN_M, 0, 0 ; 254
+ mon_cry CRY_NIDORAN_M, 0, 0 ; 255
diff --git a/data/pokemon/dex_entries.asm b/data/pokemon/dex_entries.asm
index 3dd456e2..6550eae4 100644
--- a/data/pokemon/dex_entries.asm
+++ b/data/pokemon/dex_entries.asm
@@ -1,6 +1,6 @@
INCLUDE "constants.asm"
-IF DEF(GOLD)
+IF DEF(_GOLD)
SECTION "Pokedex Entries 001-064", ROMX
BulbasaurPokedexEntry:: INCLUDE "data/pokemon/dex_entries/gold/bulbasaur.asm"
@@ -268,7 +268,7 @@ HoOhPokedexEntry:: INCLUDE "data/pokemon/dex_entries/gold/ho_oh.asm"
CelebiPokedexEntry:: INCLUDE "data/pokemon/dex_entries/gold/celebi.asm"
ENDC
-IF DEF(SILVER)
+IF DEF(_SILVER)
SECTION "Pokedex Entries 001-064", ROMX
BulbasaurPokedexEntry:: INCLUDE "data/pokemon/dex_entries/silver/bulbasaur.asm"
diff --git a/data/pokedex/entry_pointers.asm b/data/pokemon/dex_entry_pointers.asm
index cd9d1175..6081757e 100644
--- a/data/pokedex/entry_pointers.asm
+++ b/data/pokemon/dex_entry_pointers.asm
@@ -1,72 +1,5 @@
-GetDexEntryPointer: ; 44333
-; return dex entry pointer b:de
- push hl
- ld hl, PokedexDataPointerTable
- ld a, b
- dec a
- ld d, 0
- ld e, a
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
- push de
- rlca
- rlca
- and $3
- ld hl, .PokedexEntryBanks
- ld d, 0
- ld e, a
- add hl, de
- ld b, [hl]
- pop de
- pop hl
- ret
-
-.PokedexEntryBanks: ; 44351
-
- db BANK("Pokedex Entries 001-064")
- db BANK("Pokedex Entries 065-128")
- db BANK("Pokedex Entries 129-192")
- db BANK("Pokedex Entries 193-251")
-
-GetDexEntryPagePointer: ; 44355
- call GetDexEntryPointer ; b:de
- push hl
- ld h, d
- ld l, e
-; skip species name
-.loop1
- ld a, b
- call GetFarByte
- inc hl
- cp "@"
- jr nz, .loop1
-; skip height and weight
-rept 4
- inc hl
-endr
-; if c != 1: skip entry
- dec c
- jr z, .done
-; skip entry
-.loop2
- ld a, b
- call GetFarByte
- inc hl
- cp "@"
- jr nz, .loop2
-
-.done
- ld d, h
- ld e, l
- pop hl
- ret
-
-PokedexDataPointerTable: ; 0x44378
-; Pointers to all the Pokedex entries.
-
+PokedexDataPointerTable:
+; entries correspond to constants/pokemon_constants.asm
dw BulbasaurPokedexEntry
dw IvysaurPokedexEntry
dw VenusaurPokedexEntry
diff --git a/data/pokedex/order_new.asm b/data/pokemon/dex_order_alpha.asm
index a98a658c..b93238cb 100644
--- a/data/pokedex/order_new.asm
+++ b/data/pokemon/dex_order_alpha.asm
@@ -1,253 +1,254 @@
-; Every Pokemon sorted in New Pokedex Order.
+; Every Pokémon sorted alphabetically by name.
- db CHIKORITA
+AlphabeticalPokedexOrder:
+ db ABRA
+ db AERODACTYL
+ db AIPOM
+ db ALAKAZAM
+ db AMPHAROS
+ db ARBOK
+ db ARCANINE
+ db ARIADOS
+ db ARTICUNO
+ db AZUMARILL
db BAYLEEF
- db MEGANIUM
- db CYNDAQUIL
- db QUILAVA
- db TYPHLOSION
- db TOTODILE
- db CROCONAW
- db FERALIGATR
- db PIDGEY
- db PIDGEOTTO
- db PIDGEOT
- db SPEAROW
- db FEAROW
- db HOOTHOOT
- db NOCTOWL
- db RATTATA
- db RATICATE
- db SENTRET
- db FURRET
- db PICHU
- db PIKACHU
- db RAICHU
- db CATERPIE
- db METAPOD
- db BUTTERFREE
- db WEEDLE
- db KAKUNA
db BEEDRILL
- db LEDYBA
- db LEDIAN
- db SPINARAK
- db ARIADOS
- db GEODUDE
- db GRAVELER
- db GOLEM
- db ZUBAT
- db GOLBAT
- db CROBAT
- db CLEFFA
- db CLEFAIRY
+ db BELLOSSOM
+ db BELLSPROUT
+ db BLASTOISE
+ db BLISSEY
+ db BULBASAUR
+ db BUTTERFREE
+ db CATERPIE
+ db CELEBI
+ db CHANSEY
+ db CHARIZARD
+ db CHARMANDER
+ db CHARMELEON
+ db CHIKORITA
+ db CHINCHOU
db CLEFABLE
- db IGGLYBUFF
- db JIGGLYPUFF
- db WIGGLYTUFF
- db TOGEPI
- db TOGETIC
- db SANDSHREW
- db SANDSLASH
- db EKANS
- db ARBOK
+ db CLEFAIRY
+ db CLEFFA
+ db CLOYSTER
+ db CORSOLA
+ db CROBAT
+ db CROCONAW
+ db CUBONE
+ db CYNDAQUIL
+ db DELIBIRD
+ db DEWGONG
+ db DIGLETT
+ db DITTO
+ db DODRIO
+ db DODUO
+ db DONPHAN
+ db DRAGONAIR
+ db DRAGONITE
+ db DRATINI
+ db DROWZEE
+ db DUGTRIO
db DUNSPARCE
- db MAREEP
+ db EEVEE
+ db EKANS
+ db ELECTABUZZ
+ db ELECTRODE
+ db ELEKID
+ db ENTEI
+ db ESPEON
+ db EXEGGCUTE
+ db EXEGGUTOR
+ db FARFETCH_D
+ db FEAROW
+ db FERALIGATR
db FLAAFFY
- db AMPHAROS
- db WOOPER
- db QUAGSIRE
+ db FLAREON
+ db FORRETRESS
+ db FURRET
db GASTLY
- db HAUNTER
db GENGAR
- db UNOWN
- db ONIX
- db STEELIX
- db BELLSPROUT
- db WEEPINBELL
- db VICTREEBEL
- db HOPPIP
- db SKIPLOOM
- db JUMPLUFF
- db PARAS
- db PARASECT
- db POLIWAG
- db POLIWHIRL
- db POLIWRATH
- db POLITOED
- db MAGIKARP
- db GYARADOS
- db GOLDEEN
- db SEAKING
- db SLOWPOKE
- db SLOWBRO
- db SLOWKING
- db ODDISH
+ db GEODUDE
+ db GIRAFARIG
+ db GLIGAR
db GLOOM
- db VILEPLUME
- db BELLOSSOM
- db DROWZEE
+ db GOLBAT
+ db GOLDEEN
+ db GOLDUCK
+ db GOLEM
+ db GRANBULL
+ db GRAVELER
+ db GRIMER
+ db GROWLITHE
+ db GYARADOS
+ db HAUNTER
+ db HERACROSS
+ db HITMONCHAN
+ db HITMONLEE
+ db HITMONTOP
+ db HO_OH
+ db HOOTHOOT
+ db HOPPIP
+ db HORSEA
+ db HOUNDOOM
+ db HOUNDOUR
db HYPNO
- db ABRA
+ db IGGLYBUFF
+ db IVYSAUR
+ db JIGGLYPUFF
+ db JOLTEON
+ db JUMPLUFF
+ db JYNX
+ db KABUTO
+ db KABUTOPS
db KADABRA
- db ALAKAZAM
- db DITTO
- db PINECO
- db FORRETRESS
- db NIDORAN_F
- db NIDORINA
- db NIDOQUEEN
- db NIDORAN_M
- db NIDORINO
- db NIDOKING
- db YANMA
- db SUNKERN
- db SUNFLORA
- db EXEGGCUTE
- db EXEGGUTOR
- db SUDOWOODO
- db WOBBUFFET
- db VENONAT
- db VENOMOTH
- db SCYTHER
- db SCIZOR
- db PINSIR
- db HERACROSS
+ db KAKUNA
+ db KANGASKHAN
+ db KINGDRA
+ db KINGLER
db KOFFING
- db WEEZING
- db GRIMER
- db MUK
+ db KRABBY
+ db LANTURN
+ db LAPRAS
+ db LARVITAR
+ db LEDIAN
+ db LEDYBA
+ db LICKITUNG
+ db LUGIA
+ db MACHAMP
+ db MACHOKE
+ db MACHOP
+ db MAGBY
+ db MAGCARGO
+ db MAGIKARP
+ db MAGMAR
db MAGNEMITE
db MAGNETON
- db VOLTORB
- db ELECTRODE
- db AIPOM
- db SNUBBULL
- db GRANBULL
- db VULPIX
- db NINETALES
- db GROWLITHE
- db ARCANINE
- db STANTLER
- db MARILL
- db AZUMARILL
- db DIGLETT
- db DUGTRIO
db MANKEY
- db PRIMEAPE
+ db MANTINE
+ db MAREEP
+ db MARILL
+ db MAROWAK
+ db MEGANIUM
db MEOWTH
- db PERSIAN
- db PSYDUCK
- db GOLDUCK
- db MACHOP
- db MACHOKE
- db MACHAMP
- db TYROGUE
- db HITMONLEE
- db HITMONCHAN
- db HITMONTOP
- db GIRAFARIG
- db TAUROS
+ db METAPOD
+ db MEW
+ db MEWTWO
db MILTANK
- db MAGBY
- db MAGMAR
- db SMOOCHUM
- db JYNX
- db ELEKID
- db ELECTABUZZ
+ db MISDREAVUS
+ db MOLTRES
db MR__MIME
- db SMEARGLE
- db FARFETCH_D
+ db MUK
+ db MURKROW
db NATU
- db XATU
- db QWILFISH
- db TENTACOOL
- db TENTACRUEL
- db KRABBY
- db KINGLER
- db SHUCKLE
- db STARYU
- db STARMIE
- db SHELLDER
- db CLOYSTER
- db CORSOLA
- db REMORAID
+ db NIDOKING
+ db NIDOQUEEN
+ db NIDORAN_F
+ db NIDORAN_M
+ db NIDORINA
+ db NIDORINO
+ db NINETALES
+ db NOCTOWL
db OCTILLERY
- db CHINCHOU
- db LANTURN
- db SEEL
- db DEWGONG
- db LICKITUNG
- db TANGELA
- db EEVEE
- db VAPOREON
- db JOLTEON
- db FLAREON
- db ESPEON
- db UMBREON
- db HORSEA
- db SEADRA
- db KINGDRA
- db GLIGAR
- db DELIBIRD
- db SWINUB
- db PILOSWINE
- db TEDDIURSA
- db URSARING
+ db ODDISH
+ db OMANYTE
+ db OMASTAR
+ db ONIX
+ db PARAS
+ db PARASECT
+ db PERSIAN
db PHANPY
- db DONPHAN
- db MANTINE
- db SKARMORY
- db DODUO
- db DODRIO
+ db PICHU
+ db PIDGEOT
+ db PIDGEOTTO
+ db PIDGEY
+ db PIKACHU
+ db PILOSWINE
+ db PINECO
+ db PINSIR
+ db POLITOED
+ db POLIWAG
+ db POLIWHIRL
+ db POLIWRATH
db PONYTA
+ db PORYGON
+ db PORYGON2
+ db PRIMEAPE
+ db PSYDUCK
+ db PUPITAR
+ db QUAGSIRE
+ db QUILAVA
+ db QWILFISH
+ db RAICHU
+ db RAIKOU
db RAPIDASH
- db CUBONE
- db MAROWAK
- db KANGASKHAN
- db RHYHORN
+ db RATICATE
+ db RATTATA
+ db REMORAID
db RHYDON
- db MURKROW
- db HOUNDOUR
- db HOUNDOOM
+ db RHYHORN
+ db SANDSHREW
+ db SANDSLASH
+ db SCIZOR
+ db SCYTHER
+ db SEADRA
+ db SEAKING
+ db SEEL
+ db SENTRET
+ db SHELLDER
+ db SHUCKLE
+ db SKARMORY
+ db SKIPLOOM
+ db SLOWBRO
+ db SLOWKING
+ db SLOWPOKE
db SLUGMA
- db MAGCARGO
+ db SMEARGLE
+ db SMOOCHUM
db SNEASEL
- db MISDREAVUS
- db PORYGON
- db PORYGON2
- db CHANSEY
- db BLISSEY
- db LAPRAS
- db OMANYTE
- db OMASTAR
- db KABUTO
- db KABUTOPS
- db AERODACTYL
db SNORLAX
- db BULBASAUR
- db IVYSAUR
- db VENUSAUR
- db CHARMANDER
- db CHARMELEON
- db CHARIZARD
+ db SNUBBULL
+ db SPEAROW
+ db SPINARAK
db SQUIRTLE
- db WARTORTLE
- db BLASTOISE
- db ARTICUNO
- db ZAPDOS
- db MOLTRES
- db RAIKOU
- db ENTEI
+ db STANTLER
+ db STARMIE
+ db STARYU
+ db STEELIX
+ db SUDOWOODO
db SUICUNE
- db DRATINI
- db DRAGONAIR
- db DRAGONITE
- db LARVITAR
- db PUPITAR
+ db SUNFLORA
+ db SUNKERN
+ db SWINUB
+ db TANGELA
+ db TAUROS
+ db TEDDIURSA
+ db TENTACOOL
+ db TENTACRUEL
+ db TOGEPI
+ db TOGETIC
+ db TOTODILE
+ db TYPHLOSION
db TYRANITAR
- db LUGIA
- db HO_OH
- db MEWTWO
- db MEW
- db CELEBI
+ db TYROGUE
+ db UMBREON
+ db UNOWN
+ db URSARING
+ db VAPOREON
+ db VENOMOTH
+ db VENONAT
+ db VENUSAUR
+ db VICTREEBEL
+ db VILEPLUME
+ db VOLTORB
+ db VULPIX
+ db WARTORTLE
+ db WEEDLE
+ db WEEPINBELL
+ db WEEZING
+ db WIGGLYTUFF
+ db WOBBUFFET
+ db WOOPER
+ db XATU
+ db YANMA
+ db ZAPDOS
+ db ZUBAT
diff --git a/data/pokedex/order_alpha.asm b/data/pokemon/dex_order_new.asm
index bab0a981..853fbe73 100644
--- a/data/pokedex/order_alpha.asm
+++ b/data/pokemon/dex_order_new.asm
@@ -1,253 +1,254 @@
-; Every Pokemon sorted alphabetically by name.
+; Every Pokémon sorted in New Pokédex Order.
- db ABRA
- db AERODACTYL
- db AIPOM
- db ALAKAZAM
- db AMPHAROS
- db ARBOK
- db ARCANINE
- db ARIADOS
- db ARTICUNO
- db AZUMARILL
- db BAYLEEF
- db BEEDRILL
- db BELLOSSOM
- db BELLSPROUT
- db BLASTOISE
- db BLISSEY
- db BULBASAUR
- db BUTTERFREE
- db CATERPIE
- db CELEBI
- db CHANSEY
- db CHARIZARD
- db CHARMANDER
- db CHARMELEON
+NewPokedexOrder:
db CHIKORITA
- db CHINCHOU
- db CLEFABLE
- db CLEFAIRY
- db CLEFFA
- db CLOYSTER
- db CORSOLA
- db CROBAT
- db CROCONAW
- db CUBONE
+ db BAYLEEF
+ db MEGANIUM
db CYNDAQUIL
- db DELIBIRD
- db DEWGONG
- db DIGLETT
- db DITTO
- db DODRIO
- db DODUO
- db DONPHAN
- db DRAGONAIR
- db DRAGONITE
- db DRATINI
- db DROWZEE
- db DUGTRIO
- db DUNSPARCE
- db EEVEE
- db EKANS
- db ELECTABUZZ
- db ELECTRODE
- db ELEKID
- db ENTEI
- db ESPEON
- db EXEGGCUTE
- db EXEGGUTOR
- db FARFETCH_D
- db FEAROW
+ db QUILAVA
+ db TYPHLOSION
+ db TOTODILE
+ db CROCONAW
db FERALIGATR
- db FLAAFFY
- db FLAREON
- db FORRETRESS
+ db PIDGEY
+ db PIDGEOTTO
+ db PIDGEOT
+ db SPEAROW
+ db FEAROW
+ db HOOTHOOT
+ db NOCTOWL
+ db RATTATA
+ db RATICATE
+ db SENTRET
db FURRET
- db GASTLY
- db GENGAR
+ db PICHU
+ db PIKACHU
+ db RAICHU
+ db CATERPIE
+ db METAPOD
+ db BUTTERFREE
+ db WEEDLE
+ db KAKUNA
+ db BEEDRILL
+ db LEDYBA
+ db LEDIAN
+ db SPINARAK
+ db ARIADOS
db GEODUDE
- db GIRAFARIG
- db GLIGAR
- db GLOOM
- db GOLBAT
- db GOLDEEN
- db GOLDUCK
- db GOLEM
- db GRANBULL
db GRAVELER
- db GRIMER
- db GROWLITHE
- db GYARADOS
- db HAUNTER
- db HERACROSS
- db HITMONCHAN
- db HITMONLEE
- db HITMONTOP
- db HO_OH
- db HOOTHOOT
- db HOPPIP
- db HORSEA
- db HOUNDOOM
- db HOUNDOUR
- db HYPNO
+ db GOLEM
+ db ZUBAT
+ db GOLBAT
+ db CROBAT
+ db CLEFFA
+ db CLEFAIRY
+ db CLEFABLE
db IGGLYBUFF
- db IVYSAUR
db JIGGLYPUFF
- db JOLTEON
+ db WIGGLYTUFF
+ db TOGEPI
+ db TOGETIC
+ db SANDSHREW
+ db SANDSLASH
+ db EKANS
+ db ARBOK
+ db DUNSPARCE
+ db MAREEP
+ db FLAAFFY
+ db AMPHAROS
+ db WOOPER
+ db QUAGSIRE
+ db GASTLY
+ db HAUNTER
+ db GENGAR
+ db UNOWN
+ db ONIX
+ db STEELIX
+ db BELLSPROUT
+ db WEEPINBELL
+ db VICTREEBEL
+ db HOPPIP
+ db SKIPLOOM
db JUMPLUFF
- db JYNX
- db KABUTO
- db KABUTOPS
+ db PARAS
+ db PARASECT
+ db POLIWAG
+ db POLIWHIRL
+ db POLIWRATH
+ db POLITOED
+ db MAGIKARP
+ db GYARADOS
+ db GOLDEEN
+ db SEAKING
+ db SLOWPOKE
+ db SLOWBRO
+ db SLOWKING
+ db ODDISH
+ db GLOOM
+ db VILEPLUME
+ db BELLOSSOM
+ db DROWZEE
+ db HYPNO
+ db ABRA
db KADABRA
- db KAKUNA
- db KANGASKHAN
- db KINGDRA
- db KINGLER
+ db ALAKAZAM
+ db DITTO
+ db PINECO
+ db FORRETRESS
+ db NIDORAN_F
+ db NIDORINA
+ db NIDOQUEEN
+ db NIDORAN_M
+ db NIDORINO
+ db NIDOKING
+ db YANMA
+ db SUNKERN
+ db SUNFLORA
+ db EXEGGCUTE
+ db EXEGGUTOR
+ db SUDOWOODO
+ db WOBBUFFET
+ db VENONAT
+ db VENOMOTH
+ db SCYTHER
+ db SCIZOR
+ db PINSIR
+ db HERACROSS
db KOFFING
- db KRABBY
- db LANTURN
- db LAPRAS
- db LARVITAR
- db LEDIAN
- db LEDYBA
- db LICKITUNG
- db LUGIA
- db MACHAMP
- db MACHOKE
- db MACHOP
- db MAGBY
- db MAGCARGO
- db MAGIKARP
- db MAGMAR
+ db WEEZING
+ db GRIMER
+ db MUK
db MAGNEMITE
db MAGNETON
- db MANKEY
- db MANTINE
- db MAREEP
+ db VOLTORB
+ db ELECTRODE
+ db AIPOM
+ db SNUBBULL
+ db GRANBULL
+ db VULPIX
+ db NINETALES
+ db GROWLITHE
+ db ARCANINE
+ db STANTLER
db MARILL
- db MAROWAK
- db MEGANIUM
+ db AZUMARILL
+ db DIGLETT
+ db DUGTRIO
+ db MANKEY
+ db PRIMEAPE
db MEOWTH
- db METAPOD
- db MEW
- db MEWTWO
+ db PERSIAN
+ db PSYDUCK
+ db GOLDUCK
+ db MACHOP
+ db MACHOKE
+ db MACHAMP
+ db TYROGUE
+ db HITMONLEE
+ db HITMONCHAN
+ db HITMONTOP
+ db GIRAFARIG
+ db TAUROS
db MILTANK
- db MISDREAVUS
- db MOLTRES
+ db MAGBY
+ db MAGMAR
+ db SMOOCHUM
+ db JYNX
+ db ELEKID
+ db ELECTABUZZ
db MR__MIME
- db MUK
- db MURKROW
+ db SMEARGLE
+ db FARFETCH_D
db NATU
- db NIDOKING
- db NIDOQUEEN
- db NIDORAN_F
- db NIDORAN_M
- db NIDORINA
- db NIDORINO
- db NINETALES
- db NOCTOWL
+ db XATU
+ db QWILFISH
+ db TENTACOOL
+ db TENTACRUEL
+ db KRABBY
+ db KINGLER
+ db SHUCKLE
+ db STARYU
+ db STARMIE
+ db SHELLDER
+ db CLOYSTER
+ db CORSOLA
+ db REMORAID
db OCTILLERY
- db ODDISH
- db OMANYTE
- db OMASTAR
- db ONIX
- db PARAS
- db PARASECT
- db PERSIAN
- db PHANPY
- db PICHU
- db PIDGEOT
- db PIDGEOTTO
- db PIDGEY
- db PIKACHU
+ db CHINCHOU
+ db LANTURN
+ db SEEL
+ db DEWGONG
+ db LICKITUNG
+ db TANGELA
+ db EEVEE
+ db VAPOREON
+ db JOLTEON
+ db FLAREON
+ db ESPEON
+ db UMBREON
+ db HORSEA
+ db SEADRA
+ db KINGDRA
+ db GLIGAR
+ db DELIBIRD
+ db SWINUB
db PILOSWINE
- db PINECO
- db PINSIR
- db POLITOED
- db POLIWAG
- db POLIWHIRL
- db POLIWRATH
+ db TEDDIURSA
+ db URSARING
+ db PHANPY
+ db DONPHAN
+ db MANTINE
+ db SKARMORY
+ db DODUO
+ db DODRIO
db PONYTA
- db PORYGON
- db PORYGON2
- db PRIMEAPE
- db PSYDUCK
- db PUPITAR
- db QUAGSIRE
- db QUILAVA
- db QWILFISH
- db RAICHU
- db RAIKOU
db RAPIDASH
- db RATICATE
- db RATTATA
- db REMORAID
- db RHYDON
+ db CUBONE
+ db MAROWAK
+ db KANGASKHAN
db RHYHORN
- db SANDSHREW
- db SANDSLASH
- db SCIZOR
- db SCYTHER
- db SEADRA
- db SEAKING
- db SEEL
- db SENTRET
- db SHELLDER
- db SHUCKLE
- db SKARMORY
- db SKIPLOOM
- db SLOWBRO
- db SLOWKING
- db SLOWPOKE
+ db RHYDON
+ db MURKROW
+ db HOUNDOUR
+ db HOUNDOOM
db SLUGMA
- db SMEARGLE
- db SMOOCHUM
+ db MAGCARGO
db SNEASEL
+ db MISDREAVUS
+ db PORYGON
+ db PORYGON2
+ db CHANSEY
+ db BLISSEY
+ db LAPRAS
+ db OMANYTE
+ db OMASTAR
+ db KABUTO
+ db KABUTOPS
+ db AERODACTYL
db SNORLAX
- db SNUBBULL
- db SPEAROW
- db SPINARAK
- db SQUIRTLE
- db STANTLER
- db STARMIE
- db STARYU
- db STEELIX
- db SUDOWOODO
- db SUICUNE
- db SUNFLORA
- db SUNKERN
- db SWINUB
- db TANGELA
- db TAUROS
- db TEDDIURSA
- db TENTACOOL
- db TENTACRUEL
- db TOGEPI
- db TOGETIC
- db TOTODILE
- db TYPHLOSION
- db TYRANITAR
- db TYROGUE
- db UMBREON
- db UNOWN
- db URSARING
- db VAPOREON
- db VENOMOTH
- db VENONAT
+ db BULBASAUR
+ db IVYSAUR
db VENUSAUR
- db VICTREEBEL
- db VILEPLUME
- db VOLTORB
- db VULPIX
+ db CHARMANDER
+ db CHARMELEON
+ db CHARIZARD
+ db SQUIRTLE
db WARTORTLE
- db WEEDLE
- db WEEPINBELL
- db WEEZING
- db WIGGLYTUFF
- db WOBBUFFET
- db WOOPER
- db XATU
- db YANMA
+ db BLASTOISE
+ db ARTICUNO
db ZAPDOS
- db ZUBAT
+ db MOLTRES
+ db RAIKOU
+ db ENTEI
+ db SUICUNE
+ db DRATINI
+ db DRAGONAIR
+ db DRAGONITE
+ db LARVITAR
+ db PUPITAR
+ db TYRANITAR
+ db LUGIA
+ db HO_OH
+ db MEWTWO
+ db MEW
+ db CELEBI
diff --git a/data/pokemon/egg_move_pointers.asm b/data/pokemon/egg_move_pointers.asm
index 11665f23..67a2c625 100644
--- a/data/pokemon/egg_move_pointers.asm
+++ b/data/pokemon/egg_move_pointers.asm
@@ -1,4 +1,4 @@
-EggMovePointers:: ; 0x23b11
+EggMovePointers::
dw BulbasaurEggMoves
dw NoEggMoves
dw NoEggMoves
@@ -118,11 +118,7 @@ EggMovePointers:: ; 0x23b11
dw NoEggMoves
dw GoldeenEggMoves
dw NoEggMoves
-if _CRYSTAL
- dw NoEggMoves
-else
dw StaryuEggMoves
-endc
dw NoEggMoves
dw MrMimeEggMoves
dw ScytherEggMoves
diff --git a/data/pokemon/egg_moves.asm b/data/pokemon/egg_moves.asm
index a31a6d23..6576a8df 100644
--- a/data/pokemon/egg_moves.asm
+++ b/data/pokemon/egg_moves.asm
@@ -1,29 +1,26 @@
INCLUDE "constants.asm"
-SECTION "Egg Moves", ROMX, BANK[EGG_MOVES]
+
+SECTION "Egg Moves", ROMX
; All instances of Charm, Steel Wing, Sweet Scent, and Lovely Kiss were
-; removed from egg move lists in Crystal, because they are also TMs.
+; removed from egg move lists in Crystal.
+; Sweet Scent and Steel Wing were redundant since they're TMs, and
+; Charm and Lovely Kiss were unobtainable.
; Staryu's egg moves were removed in Crystal, because Staryu is genderless
; and can only breed with Ditto.
-
INCLUDE "data/pokemon/egg_move_pointers.asm"
-
-EggMoves::
-
BulbasaurEggMoves:
db LIGHT_SCREEN
db SKULL_BASH
db SAFEGUARD
-if !_CRYSTAL
db CHARM
-endc
db RAZOR_WIND
db PETAL_DANCE
- db $ff
+ db -1 ; end
CharmanderEggMoves:
db BELLY_DRUM
@@ -32,7 +29,7 @@ CharmanderEggMoves:
db BITE
db OUTRAGE
db BEAT_UP
- db $ff
+ db -1 ; end
SquirtleEggMoves:
db MIRROR_COAT
@@ -41,16 +38,14 @@ SquirtleEggMoves:
db CONFUSION
db FORESIGHT
db FLAIL
- db $ff
+ db -1 ; end
PidgeyEggMoves:
db PURSUIT
db FAINT_ATTACK
db FORESIGHT
-if !_CRYSTAL
db STEEL_WING
-endc
- db $ff
+ db -1 ; end
RattataEggMoves:
db SCREECH
@@ -59,7 +54,7 @@ RattataEggMoves:
db BITE
db COUNTER
db REVERSAL
- db $ff
+ db -1 ; end
SpearowEggMoves:
db FAINT_ATTACK
@@ -67,27 +62,21 @@ SpearowEggMoves:
db SCARY_FACE
db QUICK_ATTACK
db TRI_ATTACK
- db $ff
+ db -1 ; end
EkansEggMoves:
db PURSUIT
db SLAM
db SPITE
db BEAT_UP
-if _CRYSTAL
- db CRUNCH
-endc
- db $ff
+ db -1 ; end
SandshrewEggMoves:
db FLAIL
db SAFEGUARD
db COUNTER
db RAPID_SPIN
-if _CRYSTAL
- db METAL_CLAW
-endc
- db $ff
+ db -1 ; end
NidoranFEggMoves:
db SUPERSONIC
@@ -97,7 +86,7 @@ NidoranFEggMoves:
db CHARM
db COUNTER
db BEAT_UP
- db $ff
+ db -1 ; end
NidoranMEggMoves:
db SUPERSONIC
@@ -107,7 +96,7 @@ NidoranMEggMoves:
db AMNESIA
db COUNTER
db BEAT_UP
- db $ff
+ db -1 ; end
VulpixEggMoves:
db FAINT_ATTACK
@@ -115,7 +104,7 @@ VulpixEggMoves:
db FLAIL
db SPITE
db DISABLE
- db $ff
+ db -1 ; end
ZubatEggMoves:
db QUICK_ATTACK
@@ -123,17 +112,15 @@ ZubatEggMoves:
db FAINT_ATTACK
db GUST
db WHIRLWIND
- db $ff
+ db -1 ; end
OddishEggMoves:
db SWORDS_DANCE
db RAZOR_LEAF
db FLAIL
db SYNTHESIS
-if !_CRYSTAL
db CHARM
-endc
- db $ff
+ db -1 ; end
ParasEggMoves:
db FALSE_SWIPE
@@ -141,18 +128,16 @@ ParasEggMoves:
db COUNTER
db PSYBEAM
db FLAIL
-if !_CRYSTAL
db SWEET_SCENT
-endc
db LIGHT_SCREEN
db PURSUIT
- db $ff
+ db -1 ; end
VenonatEggMoves:
db BATON_PASS
db SCREECH
db GIGA_DRAIN
- db $ff
+ db -1 ; end
DiglettEggMoves:
db FAINT_ATTACK
@@ -160,14 +145,14 @@ DiglettEggMoves:
db ANCIENTPOWER
db PURSUIT
db BEAT_UP
- db $ff
+ db -1 ; end
MeowthEggMoves:
db SPITE
db CHARM
db HYPNOSIS
db AMNESIA
- db $ff
+ db -1 ; end
PsyduckEggMoves:
db ICE_BEAM
@@ -177,10 +162,7 @@ PsyduckEggMoves:
db LIGHT_SCREEN
db FUTURE_SIGHT
db PSYCHIC_M
-if _CRYSTAL
- db CROSS_CHOP
-endc
- db $ff
+ db -1 ; end
MankeyEggMoves:
db ROCK_SLIDE
@@ -189,7 +171,7 @@ MankeyEggMoves:
db COUNTER
db REVERSAL
db BEAT_UP
- db $ff
+ db -1 ; end
GrowlitheEggMoves:
db BODY_SLAM
@@ -197,7 +179,7 @@ GrowlitheEggMoves:
db CRUNCH
db THRASH
db FIRE_SPIN
- db $ff
+ db -1 ; end
PoliwagEggMoves:
db MIST
@@ -205,20 +187,20 @@ PoliwagEggMoves:
db BUBBLEBEAM
db HAZE
db MIND_READER
- db $ff
+ db -1 ; end
AbraEggMoves:
db LIGHT_SCREEN
db ENCORE
db BARRIER
- db $ff
+ db -1 ; end
MachopEggMoves:
db LIGHT_SCREEN
db MEDITATE
db ROLLING_KICK
db ENCORE
- db $ff
+ db -1 ; end
BellsproutEggMoves:
db SWORDS_DANCE
@@ -226,7 +208,7 @@ BellsproutEggMoves:
db REFLECT
db SYNTHESIS
db LEECH_LIFE
- db $ff
+ db -1 ; end
TentacoolEggMoves:
db AURORA_BEAM
@@ -234,12 +216,12 @@ TentacoolEggMoves:
db RAPID_SPIN
db HAZE
db SAFEGUARD
- db $ff
+ db -1 ; end
GeodudeEggMoves:
db MEGA_PUNCH
db ROCK_SLIDE
- db $ff
+ db -1 ; end
PonytaEggMoves:
db FLAME_WHEEL
@@ -248,25 +230,23 @@ PonytaEggMoves:
db HYPNOSIS
db CHARM
db QUICK_ATTACK
- db $ff
+ db -1 ; end
SlowpokeEggMoves:
db SAFEGUARD
db BELLY_DRUM
db FUTURE_SIGHT
db STOMP
- db $ff
+ db -1 ; end
FarfetchDEggMoves:
-if !_CRYSTAL
db STEEL_WING
-endc
db FORESIGHT
db MIRROR_MOVE
db GUST
db QUICK_ATTACK
db FLAIL
- db $ff
+ db -1 ; end
DoduoEggMoves:
db QUICK_ATTACK
@@ -274,7 +254,7 @@ DoduoEggMoves:
db HAZE
db FAINT_ATTACK
db FLAIL
- db $ff
+ db -1 ; end
SeelEggMoves:
db LICK
@@ -283,13 +263,13 @@ SeelEggMoves:
db PECK
db SLAM
db ENCORE
- db $ff
+ db -1 ; end
GrimerEggMoves:
db HAZE
db MEAN_LOOK
db LICK
- db $ff
+ db -1 ; end
ShellderEggMoves:
db BUBBLEBEAM
@@ -297,23 +277,23 @@ ShellderEggMoves:
db BARRIER
db RAPID_SPIN
db SCREECH
- db $ff
+ db -1 ; end
GastlyEggMoves:
db PSYWAVE
db PERISH_SONG
db HAZE
- db $ff
+ db -1 ; end
OnixEggMoves:
db ROCK_SLIDE
db FLAIL
- db $ff
+ db -1 ; end
DrowzeeEggMoves:
db LIGHT_SCREEN
db BARRIER
- db $ff
+ db -1 ; end
KrabbyEggMoves:
db DIG
@@ -321,7 +301,7 @@ KrabbyEggMoves:
db AMNESIA
db FLAIL
db SLAM
- db $ff
+ db -1 ; end
ExeggcuteEggMoves:
db SYNTHESIS
@@ -329,7 +309,7 @@ ExeggcuteEggMoves:
db REFLECT
db MEGA_DRAIN
db ANCIENTPOWER
- db $ff
+ db -1 ; end
CuboneEggMoves:
db ROCK_SLIDE
@@ -338,16 +318,13 @@ CuboneEggMoves:
db SCREECH
db SKULL_BASH
db PERISH_SONG
-if _CRYSTAL
- db SWORDS_DANCE
-endc
- db $ff
+ db -1 ; end
LickitungEggMoves:
db BELLY_DRUM
db MAGNITUDE
db BODY_SLAM
- db $ff
+ db -1 ; end
KoffingEggMoves:
db SCREECH
@@ -355,7 +332,7 @@ KoffingEggMoves:
db PSYBEAM
db DESTINY_BOND
db PAIN_SPLIT
- db $ff
+ db -1 ; end
RhyhornEggMoves:
db CRUNCH
@@ -365,13 +342,13 @@ RhyhornEggMoves:
db PURSUIT
db COUNTER
db MAGNITUDE
- db $ff
+ db -1 ; end
ChanseyEggMoves:
db PRESENT
db METRONOME
db HEAL_BELL
- db $ff
+ db -1 ; end
TangelaEggMoves:
db FLAIL
@@ -379,7 +356,7 @@ TangelaEggMoves:
db MEGA_DRAIN
db REFLECT
db AMNESIA
- db $ff
+ db -1 ; end
KangaskhanEggMoves:
db STOMP
@@ -387,7 +364,7 @@ KangaskhanEggMoves:
db FOCUS_ENERGY
db SAFEGUARD
db DISABLE
- db $ff
+ db -1 ; end
HorseaEggMoves:
db FLAIL
@@ -396,27 +373,25 @@ HorseaEggMoves:
db DISABLE
db SPLASH
db DRAGON_RAGE
- db $ff
+ db -1 ; end
GoldeenEggMoves:
db PSYBEAM
db HAZE
db HYDRO_PUMP
- db $ff
+ db -1 ; end
-if !_CRYSTAL
StaryuEggMoves:
db AURORA_BEAM
db BARRIER
db SUPERSONIC
- db $ff
-endc
+ db -1
MrMimeEggMoves:
db FUTURE_SIGHT
db HYPNOSIS
db MIMIC
- db $ff
+ db -1 ; end
ScytherEggMoves:
db COUNTER
@@ -425,22 +400,22 @@ ScytherEggMoves:
db RAZOR_WIND
db REVERSAL
db LIGHT_SCREEN
- db $ff
+ db -1 ; end
PinsirEggMoves:
db FURY_ATTACK
db FLAIL
- db $ff
+ db -1 ; end
LaprasEggMoves:
db AURORA_BEAM
db FORESIGHT
- db $ff
+ db -1 ; end
EeveeEggMoves:
db FLAIL
db CHARM
- db $ff
+ db -1 ; end
OmanyteEggMoves:
db BUBBLEBEAM
@@ -448,7 +423,7 @@ OmanyteEggMoves:
db SLAM
db SUPERSONIC
db HAZE
- db $ff
+ db -1 ; end
KabutoEggMoves:
db BUBBLEBEAM
@@ -456,30 +431,26 @@ KabutoEggMoves:
db RAPID_SPIN
db DIG
db FLAIL
- db $ff
+ db -1 ; end
AerodactylEggMoves:
db WHIRLWIND
db PURSUIT
db FORESIGHT
-if !_CRYSTAL
db STEEL_WING
-endc
- db $ff
+ db -1 ; end
SnorlaxEggMoves:
db LICK
-if !_CRYSTAL
db CHARM
-endc
- db $ff
+ db -1 ; end
DratiniEggMoves:
db LIGHT_SCREEN
db MIST
db HAZE
db SUPERSONIC
- db $ff
+ db -1 ; end
ChikoritaEggMoves:
db VINE_WHIP
@@ -487,8 +458,7 @@ ChikoritaEggMoves:
db COUNTER
db ANCIENTPOWER
db FLAIL
- db SWORDS_DANCE
- db $ff
+ db -1 ; end
CyndaquilEggMoves:
db FURY_SWIPES
@@ -496,10 +466,7 @@ CyndaquilEggMoves:
db REVERSAL
db THRASH
db FORESIGHT
-if _CRYSTAL
- db SUBMISSION
-endc
- db $ff
+ db -1 ; end
TotodileEggMoves:
db CRUNCH
@@ -508,7 +475,7 @@ TotodileEggMoves:
db ANCIENTPOWER
db RAZOR_WIND
db ROCK_SLIDE
- db $ff
+ db -1 ; end
SentretEggMoves:
db DOUBLE_EDGE
@@ -516,7 +483,7 @@ SentretEggMoves:
db SLASH
db FOCUS_ENERGY
db REVERSAL
- db $ff
+ db -1 ; end
HoothootEggMoves:
db MIRROR_MOVE
@@ -524,16 +491,13 @@ HoothootEggMoves:
db FAINT_ATTACK
db WING_ATTACK
db WHIRLWIND
-if _CRYSTAL
- db SKY_ATTACK
-endc
- db $ff
+ db -1 ; end
LedybaEggMoves:
db PSYBEAM
db BIDE
db LIGHT_SCREEN
- db $ff
+ db -1 ; end
SpinarakEggMoves:
db PSYBEAM
@@ -541,13 +505,13 @@ SpinarakEggMoves:
db SONICBOOM
db BATON_PASS
db PURSUIT
- db $ff
+ db -1 ; end
ChinchouEggMoves:
db FLAIL
db SUPERSONIC
db SCREECH
- db $ff
+ db -1 ; end
PichuEggMoves:
db REVERSAL
@@ -555,7 +519,7 @@ PichuEggMoves:
db PRESENT
db ENCORE
db DOUBLESLAP
- db $ff
+ db -1 ; end
CleffaEggMoves:
db PRESENT
@@ -564,13 +528,13 @@ CleffaEggMoves:
db BELLY_DRUM
db SPLASH
db MIMIC
- db $ff
+ db -1 ; end
IgglybuffEggMoves:
db PERISH_SONG
db PRESENT
db FAINT_ATTACK
- db $ff
+ db -1 ; end
TogepiEggMoves:
db PRESENT
@@ -578,7 +542,7 @@ TogepiEggMoves:
db PECK
db FORESIGHT
db FUTURE_SIGHT
- db $ff
+ db -1 ; end
NatuEggMoves:
db HAZE
@@ -586,7 +550,7 @@ NatuEggMoves:
db QUICK_ATTACK
db FAINT_ATTACK
db STEEL_WING
- db $ff
+ db -1 ; end
MareepEggMoves:
db THUNDERBOLT
@@ -595,7 +559,7 @@ MareepEggMoves:
db SAFEGUARD
db SCREECH
db REFLECT
- db $ff
+ db -1 ; end
MarillEggMoves:
db LIGHT_SCREEN
@@ -606,11 +570,11 @@ MarillEggMoves:
db PERISH_SONG
db SUPERSONIC
db FORESIGHT
- db $ff
+ db -1 ; end
SudowoodoEggMoves:
db SELFDESTRUCT
- db $ff
+ db -1 ; end
HoppipEggMoves:
db CONFUSION
@@ -620,7 +584,7 @@ HoppipEggMoves:
db REFLECT
db AMNESIA
db PAY_DAY
- db $ff
+ db -1 ; end
AipomEggMoves:
db COUNTER
@@ -631,19 +595,19 @@ AipomEggMoves:
db SLAM
db DOUBLESLAP
db BEAT_UP
- db $ff
+ db -1 ; end
YanmaEggMoves:
db WHIRLWIND
db REVERSAL
db LEECH_LIFE
- db $ff
+ db -1 ; end
WooperEggMoves:
db BODY_SLAM
db ANCIENTPOWER
db SAFEGUARD
- db $ff
+ db -1 ; end
MurkrowEggMoves:
db WHIRLWIND
@@ -651,15 +615,12 @@ MurkrowEggMoves:
db QUICK_ATTACK
db MIRROR_MOVE
db WING_ATTACK
-if _CRYSTAL
- db SKY_ATTACK
-endc
- db $ff
+ db -1 ; end
MisdreavusEggMoves:
db SCREECH
db DESTINY_BOND
- db $ff
+ db -1 ; end
GirafarigEggMoves:
db TAKE_DOWN
@@ -667,14 +628,14 @@ GirafarigEggMoves:
db FORESIGHT
db FUTURE_SIGHT
db BEAT_UP
- db $ff
+ db -1 ; end
PinecoEggMoves:
db REFLECT
db PIN_MISSILE
db FLAIL
db SWIFT
- db $ff
+ db -1 ; end
DunsparceEggMoves:
db BIDE
@@ -682,14 +643,14 @@ DunsparceEggMoves:
db ROCK_SLIDE
db BITE
db RAGE
- db $ff
+ db -1 ; end
GligarEggMoves:
db METAL_CLAW
db WING_ATTACK
db RAZOR_WIND
db COUNTER
- db $ff
+ db -1 ; end
SnubbullEggMoves:
db METRONOME
@@ -700,24 +661,24 @@ SnubbullEggMoves:
db HEAL_BELL
db LICK
db LEER
- db $ff
+ db -1 ; end
QwilfishEggMoves:
db FLAIL
db HAZE
db BUBBLEBEAM
db SUPERSONIC
- db $ff
+ db -1 ; end
ShuckleEggMoves:
db SWEET_SCENT
- db $ff
+ db -1 ; end
HeracrossEggMoves:
db HARDEN
db BIDE
db FLAIL
- db $ff
+ db -1 ; end
SneaselEggMoves:
db COUNTER
@@ -725,7 +686,7 @@ SneaselEggMoves:
db FORESIGHT
db REFLECT
db BITE
- db $ff
+ db -1 ; end
TeddiursaEggMoves:
db CRUNCH
@@ -733,14 +694,11 @@ TeddiursaEggMoves:
db SEISMIC_TOSS
db FOCUS_ENERGY
db COUNTER
-if _CRYSTAL
- db METAL_CLAW
-endc
- db $ff
+ db -1 ; end
SlugmaEggMoves:
db ACID_ARMOR
- db $ff
+ db -1 ; end
SwinubEggMoves:
db TAKE_DOWN
@@ -748,7 +706,7 @@ SwinubEggMoves:
db BODY_SLAM
db ROCK_SLIDE
db ANCIENTPOWER
- db $ff
+ db -1 ; end
CorsolaEggMoves:
db ROCK_SLIDE
@@ -756,7 +714,7 @@ CorsolaEggMoves:
db SCREECH
db MIST
db AMNESIA
- db $ff
+ db -1 ; end
RemoraidEggMoves:
db AURORA_BEAM
@@ -764,7 +722,7 @@ RemoraidEggMoves:
db SUPERSONIC
db HAZE
db SCREECH
- db $ff
+ db -1 ; end
DelibirdEggMoves:
db AURORA_BEAM
@@ -772,23 +730,20 @@ DelibirdEggMoves:
db FUTURE_SIGHT
db SPLASH
db RAPID_SPIN
- db $ff
+ db -1 ; end
MantineEggMoves:
db TWISTER
db HYDRO_PUMP
db HAZE
db SLAM
- db $ff
+ db -1 ; end
SkarmoryEggMoves:
db DRILL_PECK
db PURSUIT
db WHIRLWIND
-if _CRYSTAL
- db SKY_ATTACK
-endc
- db $ff
+ db -1 ; end
HoundourEggMoves:
db FIRE_SPIN
@@ -798,16 +753,13 @@ HoundourEggMoves:
db SPITE
db REVERSAL
db BEAT_UP
- db $ff
+ db -1 ; end
PhanpyEggMoves:
db FOCUS_ENERGY
db BODY_SLAM
db ANCIENTPOWER
-if _CRYSTAL
- db WATER_GUN
-endc
- db $ff
+ db -1 ; end
StantlerEggMoves:
db REFLECT
@@ -815,47 +767,39 @@ StantlerEggMoves:
db DISABLE
db LIGHT_SCREEN
db BITE
- db $ff
+ db -1 ; end
TyrogueEggMoves:
db RAPID_SPIN
db HI_JUMP_KICK
db MACH_PUNCH
db MIND_READER
- db $ff
+ db -1 ; end
SmoochumEggMoves:
-if !_CRYSTAL
db LOVELY_KISS
-endc
db MEDITATE
- db $ff
+ db -1 ; end
ElekidEggMoves:
db KARATE_CHOP
db BARRIER
db ROLLING_KICK
db MEDITATE
-if _CRYSTAL
- db CROSS_CHOP
-endc
- db $ff
+ db -1 ; end
MagbyEggMoves:
db KARATE_CHOP
db MEGA_PUNCH
db BARRIER
db SCREECH
-if _CRYSTAL
- db CROSS_CHOP
-endc
- db $ff
+ db -1 ; end
MiltankEggMoves:
db PRESENT
db REVERSAL
db SEISMIC_TOSS
- db $ff
+ db -1 ; end
LarvitarEggMoves:
db PURSUIT
@@ -863,7 +807,7 @@ LarvitarEggMoves:
db OUTRAGE
db FOCUS_ENERGY
db ANCIENTPOWER
- db $ff
+ db -1 ; end
NoEggMoves:
- db $ff
+ db -1 ; end
diff --git a/data/pokemon/evos_attacks.asm b/data/pokemon/evos_attacks.asm
index dcacee0d..42ca37d4 100644
--- a/data/pokemon/evos_attacks.asm
+++ b/data/pokemon/evos_attacks.asm
@@ -1,10 +1,21 @@
INCLUDE "constants.asm"
-SECTION "Evolutions and Attacks", ROMX, BANK[EVOS_ATTACKS]
-INCLUDE "data/pokemon/evos_attacks_pointers.asm"
+SECTION "Evolutions and Attacks", ROMX
+
+; Evos+attacks data structure:
+; - Evolution methods:
+; * db EVOLVE_LEVEL, level, species
+; * db EVOLVE_ITEM, used item, species
+; * db EVOLVE_TRADE, held item (or -1 for none), species
+; * db EVOLVE_HAPPINESS, TR_* constant (ANYTIME, MORNDAY, NITE), species
+; * db EVOLVE_STAT, level, ATK_*_DEF constant (LT, GT, EQ), species
+; - db 0 ; no more evolutions
+; - Learnset (in increasing level order):
+; * db level, move
+; - db 0 ; no more level-up moves
-EvosAttacks::
+INCLUDE "data/pokemon/evos_attacks_pointers.asm"
BulbasaurEvosAttacks:
db EVOLVE_LEVEL, 16, IVYSAUR
@@ -659,9 +670,6 @@ DiglettEvosAttacks:
DugtrioEvosAttacks:
db 0 ; no more evolutions
-if _CRYSTAL
- db 1, TRI_ATTACK
-endc
db 1, SCRATCH
db 1, GROWL
db 1, MAGNITUDE
@@ -828,7 +836,7 @@ AbraEvosAttacks:
db 0 ; no more level-up moves
KadabraEvosAttacks:
- db EVOLVE_TRADE, $ff, ALAKAZAM
+ db EVOLVE_TRADE, -1, ALAKAZAM
db 0 ; no more evolutions
db 1, TELEPORT
db 1, KINESIS
@@ -872,7 +880,7 @@ MachopEvosAttacks:
db 0 ; no more level-up moves
MachokeEvosAttacks:
- db EVOLVE_TRADE, $ff, MACHAMP
+ db EVOLVE_TRADE, -1, MACHAMP
db 0 ; no more evolutions
db 1, LOW_KICK
db 1, LEER
@@ -986,7 +994,7 @@ GeodudeEvosAttacks:
db 0 ; no more level-up moves
GravelerEvosAttacks:
- db EVOLVE_TRADE, $ff, GOLEM
+ db EVOLVE_TRADE, -1, GOLEM
db 0 ; no more evolutions
db 1, TACKLE
db 1, DEFENSE_CURL
@@ -1104,11 +1112,7 @@ MagnetonEvosAttacks:
db 16, SONICBOOM
db 21, THUNDER_WAVE
db 27, LOCK_ON
-if _CRYSTAL
- db 35, TRI_ATTACK
-else
db 35, SWIFT
-endc
db 43, SCREECH
db 53, ZAP_CANNON
db 0 ; no more level-up moves
@@ -1193,6 +1197,7 @@ GrimerEvosAttacks:
MukEvosAttacks:
db 0 ; no more evolutions
+ ; moves are not sorted by level
db 1, POISON_GAS
db 1, POUND
db 1, HARDEN
@@ -1224,9 +1229,6 @@ CloysterEvosAttacks:
db 1, SUPERSONIC
db 1, AURORA_BEAM
db 1, PROTECT
-if _CRYSTAL
- db 33, SPIKES
-endc
db 41, SPIKE_CANNON
db 0 ; no more level-up moves
@@ -1245,7 +1247,7 @@ GastlyEvosAttacks:
db 0 ; no more level-up moves
HaunterEvosAttacks:
- db EVOLVE_TRADE, $ff, GENGAR
+ db EVOLVE_TRADE, -1, GENGAR
db 0 ; no more evolutions
db 1, HYPNOSIS
db 1, LICK
@@ -1803,11 +1805,7 @@ EeveeEvosAttacks:
db 16, GROWL
db 23, QUICK_ATTACK
db 30, BITE
-if _CRYSTAL
- db 36, BATON_PASS
-else
db 36, FOCUS_ENERGY
-endc
db 42, TAKE_DOWN
db 0 ; no more level-up moves
@@ -2286,11 +2284,7 @@ SpinarakEvosAttacks:
db 23, LEECH_LIFE
db 30, FURY_SWIPES
db 37, SPIDER_WEB
-if _CRYSTAL
- db 45, AGILITY
-else
db 45, SCREECH
-endc
db 53, PSYCHIC_M
db 0 ; no more level-up moves
@@ -2306,11 +2300,7 @@ AriadosEvosAttacks:
db 25, LEECH_LIFE
db 34, FURY_SWIPES
db 43, SPIDER_WEB
-if _CRYSTAL
- db 53, AGILITY
-else
db 53, SCREECH
-endc
db 63, PSYCHIC_M
db 0 ; no more level-up moves
@@ -2533,11 +2523,7 @@ HoppipEvosAttacks:
db EVOLVE_LEVEL, 18, SKIPLOOM
db 0 ; no more evolutions
db 1, SPLASH
-if _CRYSTAL
- db 5, SYNTHESIS
-else
db 1, SYNTHESIS
-endc
db 5, TAIL_WHIP
db 10, TACKLE
db 13, POISONPOWDER
@@ -2555,9 +2541,6 @@ SkiploomEvosAttacks:
db 1, SYNTHESIS
db 1, TAIL_WHIP
db 1, TACKLE
-if _CRYSTAL
- db 5, SYNTHESIS
-endc
db 5, TAIL_WHIP
db 10, TACKLE
db 13, POISONPOWDER
@@ -2574,9 +2557,6 @@ JumpluffEvosAttacks:
db 1, SYNTHESIS
db 1, TAIL_WHIP
db 1, TACKLE
-if _CRYSTAL
- db 5, SYNTHESIS
-endc
db 5, TAIL_WHIP
db 10, TACKLE
db 13, POISONPOWDER
@@ -2630,11 +2610,7 @@ YanmaEvosAttacks:
db 19, SONICBOOM
db 25, DETECT
db 31, SUPERSONIC
-if _CRYSTAL
- db 37, WING_ATTACK
-else
db 37, SWIFT
-endc
db 43, SCREECH
db 0 ; no more level-up moves
@@ -2846,9 +2822,6 @@ GranbullEvosAttacks:
QwilfishEvosAttacks:
db 0 ; no more evolutions
-if _CRYSTAL
- db 1, SPIKES
-endc
db 1, TACKLE
db 1, POISON_STING
db 10, HARDEN
@@ -2908,9 +2881,6 @@ SneaselEvosAttacks:
db 41, AGILITY
db 49, SLASH
db 57, BEAT_UP
-if _CRYSTAL
- db 65, METAL_CLAW
-endc
db 0 ; no more level-up moves
TeddiursaEvosAttacks:
@@ -2978,9 +2948,6 @@ SwinubEvosAttacks:
db 28, TAKE_DOWN
db 37, MIST
db 46, BLIZZARD
-if _CRYSTAL
- db 55, AMNESIA
-endc
db 0 ; no more level-up moves
PiloswineEvosAttacks:
@@ -2994,9 +2961,6 @@ PiloswineEvosAttacks:
db 33, FURY_ATTACK
db 42, MIST
db 56, BLIZZARD
-if _CRYSTAL
- db 70, AMNESIA
-endc
db 0 ; no more level-up moves
CorsolaEvosAttacks:
@@ -3289,17 +3253,10 @@ SuicuneEvosAttacks:
db 0 ; no more evolutions
db 1, BITE
db 1, LEER
-if _CRYSTAL
- db 11, BUBBLEBEAM
- db 21, RAIN_DANCE
- db 31, GUST
- db 41, AURORA_BEAM
-else
db 11, WATER_GUN
db 21, ROAR
db 31, GUST
db 41, BUBBLEBEAM
-endc
db 51, MIST
db 61, MIRROR_COAT
db 71, HYDRO_PUMP
diff --git a/data/pokemon/evos_attacks_pointers.asm b/data/pokemon/evos_attacks_pointers.asm
index 4ce10b10..7b27c6a7 100644
--- a/data/pokemon/evos_attacks_pointers.asm
+++ b/data/pokemon/evos_attacks_pointers.asm
@@ -1,8 +1,6 @@
-; 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
+EvosAttacksPointers::
dw BulbasaurEvosAttacks
dw IvysaurEvosAttacks
dw VenusaurEvosAttacks
diff --git a/data/pokemon/names.asm b/data/pokemon/names.asm
index 06b1a6e5..266b0c02 100644
--- a/data/pokemon/names.asm
+++ b/data/pokemon/names.asm
@@ -1,3 +1,4 @@
+PokemonNames::
db "BULBASAUR@"
db "IVYSAUR@@@"
db "VENUSAUR@@"
diff --git a/data/pokemon/palettes.asm b/data/pokemon/palettes.asm
new file mode 100644
index 00000000..7cdff532
--- /dev/null
+++ b/data/pokemon/palettes.asm
@@ -0,0 +1,540 @@
+PokemonPalettes:
+; entries correspond to Pokémon species, two apiece
+
+; Each front.gbcpal is generated from the corresponding .png, and
+; only the middle two colors are included, not black or white.
+; Shiny palettes are defined directly, not generated.
+
+; 000
+ RGB 30, 22, 17
+ RGB 16, 14, 19
+; 000 shiny
+ RGB 30, 22, 17
+ RGB 16, 14, 19
+
+INCLUDE "gfx/pokemon/bulbasaur/normal.pal"
+INCLUDE "gfx/pokemon/bulbasaur/shiny.pal"
+INCLUDE "gfx/pokemon/ivysaur/normal.pal"
+INCLUDE "gfx/pokemon/ivysaur/shiny.pal"
+INCLUDE "gfx/pokemon/venusaur/normal.pal"
+INCLUDE "gfx/pokemon/venusaur/shiny.pal"
+INCLUDE "gfx/pokemon/charmander/normal.pal"
+INCLUDE "gfx/pokemon/charmander/shiny.pal"
+INCLUDE "gfx/pokemon/charmeleon/normal.pal"
+INCLUDE "gfx/pokemon/charmeleon/shiny.pal"
+INCLUDE "gfx/pokemon/charizard/normal.pal"
+INCLUDE "gfx/pokemon/charizard/shiny.pal"
+INCLUDE "gfx/pokemon/squirtle/normal.pal"
+INCLUDE "gfx/pokemon/squirtle/shiny.pal"
+INCLUDE "gfx/pokemon/wartortle/normal.pal"
+INCLUDE "gfx/pokemon/wartortle/shiny.pal"
+INCLUDE "gfx/pokemon/blastoise/normal.pal"
+INCLUDE "gfx/pokemon/blastoise/shiny.pal"
+INCLUDE "gfx/pokemon/caterpie/normal.pal"
+INCLUDE "gfx/pokemon/caterpie/shiny.pal"
+INCLUDE "gfx/pokemon/metapod/normal.pal"
+INCLUDE "gfx/pokemon/metapod/shiny.pal"
+INCLUDE "gfx/pokemon/butterfree/normal.pal"
+INCLUDE "gfx/pokemon/butterfree/shiny.pal"
+INCLUDE "gfx/pokemon/weedle/normal.pal"
+INCLUDE "gfx/pokemon/weedle/shiny.pal"
+INCLUDE "gfx/pokemon/kakuna/normal.pal"
+INCLUDE "gfx/pokemon/kakuna/shiny.pal"
+INCLUDE "gfx/pokemon/beedrill/normal.pal"
+INCLUDE "gfx/pokemon/beedrill/shiny.pal"
+INCLUDE "gfx/pokemon/pidgey/normal.pal"
+INCLUDE "gfx/pokemon/pidgey/shiny.pal"
+INCLUDE "gfx/pokemon/pidgeotto/normal.pal"
+INCLUDE "gfx/pokemon/pidgeotto/shiny.pal"
+INCLUDE "gfx/pokemon/pidgeot/normal.pal"
+INCLUDE "gfx/pokemon/pidgeot/shiny.pal"
+INCLUDE "gfx/pokemon/rattata/normal.pal"
+INCLUDE "gfx/pokemon/rattata/shiny.pal"
+INCLUDE "gfx/pokemon/raticate/normal.pal"
+INCLUDE "gfx/pokemon/raticate/shiny.pal"
+INCLUDE "gfx/pokemon/spearow/normal.pal"
+INCLUDE "gfx/pokemon/spearow/shiny.pal"
+INCLUDE "gfx/pokemon/fearow/normal.pal"
+INCLUDE "gfx/pokemon/fearow/shiny.pal"
+INCLUDE "gfx/pokemon/ekans/normal.pal"
+INCLUDE "gfx/pokemon/ekans/shiny.pal"
+INCLUDE "gfx/pokemon/arbok/normal.pal"
+INCLUDE "gfx/pokemon/arbok/shiny.pal"
+INCLUDE "gfx/pokemon/pikachu/normal.pal"
+INCLUDE "gfx/pokemon/pikachu/shiny.pal"
+INCLUDE "gfx/pokemon/raichu/normal.pal"
+INCLUDE "gfx/pokemon/raichu/shiny.pal"
+INCLUDE "gfx/pokemon/sandshrew/normal.pal"
+INCLUDE "gfx/pokemon/sandshrew/shiny.pal"
+INCLUDE "gfx/pokemon/sandslash/normal.pal"
+INCLUDE "gfx/pokemon/sandslash/shiny.pal"
+INCLUDE "gfx/pokemon/nidoran_f/normal.pal"
+INCLUDE "gfx/pokemon/nidoran_f/shiny.pal"
+INCLUDE "gfx/pokemon/nidorina/normal.pal"
+INCLUDE "gfx/pokemon/nidorina/shiny.pal"
+INCLUDE "gfx/pokemon/nidoqueen/normal.pal"
+INCLUDE "gfx/pokemon/nidoqueen/shiny.pal"
+INCLUDE "gfx/pokemon/nidoran_m/normal.pal"
+INCLUDE "gfx/pokemon/nidoran_m/shiny.pal"
+INCLUDE "gfx/pokemon/nidorino/normal.pal"
+INCLUDE "gfx/pokemon/nidorino/shiny.pal"
+INCLUDE "gfx/pokemon/nidoking/normal.pal"
+INCLUDE "gfx/pokemon/nidoking/shiny.pal"
+INCLUDE "gfx/pokemon/clefairy/normal.pal"
+INCLUDE "gfx/pokemon/clefairy/shiny.pal"
+INCLUDE "gfx/pokemon/clefable/normal.pal"
+INCLUDE "gfx/pokemon/clefable/shiny.pal"
+INCLUDE "gfx/pokemon/vulpix/normal.pal"
+INCLUDE "gfx/pokemon/vulpix/shiny.pal"
+INCLUDE "gfx/pokemon/ninetales/normal.pal"
+INCLUDE "gfx/pokemon/ninetales/shiny.pal"
+INCLUDE "gfx/pokemon/jigglypuff/normal.pal"
+INCLUDE "gfx/pokemon/jigglypuff/shiny.pal"
+INCLUDE "gfx/pokemon/wigglytuff/normal.pal"
+INCLUDE "gfx/pokemon/wigglytuff/shiny.pal"
+INCLUDE "gfx/pokemon/zubat/normal.pal"
+INCLUDE "gfx/pokemon/zubat/shiny.pal"
+INCLUDE "gfx/pokemon/golbat/normal.pal"
+INCLUDE "gfx/pokemon/golbat/shiny.pal"
+INCLUDE "gfx/pokemon/oddish/normal.pal"
+INCLUDE "gfx/pokemon/oddish/shiny.pal"
+INCLUDE "gfx/pokemon/gloom/normal.pal"
+INCLUDE "gfx/pokemon/gloom/shiny.pal"
+INCLUDE "gfx/pokemon/vileplume/normal.pal"
+INCLUDE "gfx/pokemon/vileplume/shiny.pal"
+INCLUDE "gfx/pokemon/paras/normal.pal"
+INCLUDE "gfx/pokemon/paras/shiny.pal"
+INCLUDE "gfx/pokemon/parasect/normal.pal"
+INCLUDE "gfx/pokemon/parasect/shiny.pal"
+INCLUDE "gfx/pokemon/venonat/normal.pal"
+INCLUDE "gfx/pokemon/venonat/shiny.pal"
+INCLUDE "gfx/pokemon/venomoth/normal.pal"
+INCLUDE "gfx/pokemon/venomoth/shiny.pal"
+INCLUDE "gfx/pokemon/diglett/normal.pal"
+INCLUDE "gfx/pokemon/diglett/shiny.pal"
+INCLUDE "gfx/pokemon/dugtrio/normal.pal"
+INCLUDE "gfx/pokemon/dugtrio/shiny.pal"
+INCLUDE "gfx/pokemon/meowth/normal.pal"
+INCLUDE "gfx/pokemon/meowth/shiny.pal"
+INCLUDE "gfx/pokemon/persian/normal.pal"
+INCLUDE "gfx/pokemon/persian/shiny.pal"
+INCLUDE "gfx/pokemon/psyduck/normal.pal"
+INCLUDE "gfx/pokemon/psyduck/shiny.pal"
+INCLUDE "gfx/pokemon/golduck/normal.pal"
+INCLUDE "gfx/pokemon/golduck/shiny.pal"
+INCLUDE "gfx/pokemon/mankey/normal.pal"
+INCLUDE "gfx/pokemon/mankey/shiny.pal"
+INCLUDE "gfx/pokemon/primeape/normal.pal"
+INCLUDE "gfx/pokemon/primeape/shiny.pal"
+INCLUDE "gfx/pokemon/growlithe/normal.pal"
+INCLUDE "gfx/pokemon/growlithe/shiny.pal"
+INCLUDE "gfx/pokemon/arcanine/normal.pal"
+INCLUDE "gfx/pokemon/arcanine/shiny.pal"
+INCLUDE "gfx/pokemon/poliwag/normal.pal"
+INCLUDE "gfx/pokemon/poliwag/shiny.pal"
+INCLUDE "gfx/pokemon/poliwhirl/normal.pal"
+INCLUDE "gfx/pokemon/poliwhirl/shiny.pal"
+INCLUDE "gfx/pokemon/poliwrath/normal.pal"
+INCLUDE "gfx/pokemon/poliwrath/shiny.pal"
+INCLUDE "gfx/pokemon/abra/normal.pal"
+INCLUDE "gfx/pokemon/abra/shiny.pal"
+INCLUDE "gfx/pokemon/kadabra/normal.pal"
+INCLUDE "gfx/pokemon/kadabra/shiny.pal"
+INCLUDE "gfx/pokemon/alakazam/normal.pal"
+INCLUDE "gfx/pokemon/alakazam/shiny.pal"
+INCLUDE "gfx/pokemon/machop/normal.pal"
+INCLUDE "gfx/pokemon/machop/shiny.pal"
+INCLUDE "gfx/pokemon/machoke/normal.pal"
+INCLUDE "gfx/pokemon/machoke/shiny.pal"
+INCLUDE "gfx/pokemon/machamp/normal.pal"
+INCLUDE "gfx/pokemon/machamp/shiny.pal"
+INCLUDE "gfx/pokemon/bellsprout/normal.pal"
+INCLUDE "gfx/pokemon/bellsprout/shiny.pal"
+INCLUDE "gfx/pokemon/weepinbell/normal.pal"
+INCLUDE "gfx/pokemon/weepinbell/shiny.pal"
+INCLUDE "gfx/pokemon/victreebel/normal.pal"
+INCLUDE "gfx/pokemon/victreebel/shiny.pal"
+INCLUDE "gfx/pokemon/tentacool/normal.pal"
+INCLUDE "gfx/pokemon/tentacool/shiny.pal"
+INCLUDE "gfx/pokemon/tentacruel/normal.pal"
+INCLUDE "gfx/pokemon/tentacruel/shiny.pal"
+INCLUDE "gfx/pokemon/geodude/normal.pal"
+INCLUDE "gfx/pokemon/geodude/shiny.pal"
+INCLUDE "gfx/pokemon/graveler/normal.pal"
+INCLUDE "gfx/pokemon/graveler/shiny.pal"
+INCLUDE "gfx/pokemon/golem/normal.pal"
+INCLUDE "gfx/pokemon/golem/shiny.pal"
+INCLUDE "gfx/pokemon/ponyta/normal.pal"
+INCLUDE "gfx/pokemon/ponyta/shiny.pal"
+INCLUDE "gfx/pokemon/rapidash/normal.pal"
+INCLUDE "gfx/pokemon/rapidash/shiny.pal"
+INCLUDE "gfx/pokemon/slowpoke/normal.pal"
+INCLUDE "gfx/pokemon/slowpoke/shiny.pal"
+INCLUDE "gfx/pokemon/slowbro/normal.pal"
+INCLUDE "gfx/pokemon/slowbro/shiny.pal"
+INCLUDE "gfx/pokemon/magnemite/normal.pal"
+INCLUDE "gfx/pokemon/magnemite/shiny.pal"
+INCLUDE "gfx/pokemon/magneton/normal.pal"
+INCLUDE "gfx/pokemon/magneton/shiny.pal"
+INCLUDE "gfx/pokemon/farfetch_d/normal.pal"
+INCLUDE "gfx/pokemon/farfetch_d/shiny.pal"
+INCLUDE "gfx/pokemon/doduo/normal.pal"
+INCLUDE "gfx/pokemon/doduo/shiny.pal"
+INCLUDE "gfx/pokemon/dodrio/normal.pal"
+INCLUDE "gfx/pokemon/dodrio/shiny.pal"
+INCLUDE "gfx/pokemon/seel/normal.pal"
+INCLUDE "gfx/pokemon/seel/shiny.pal"
+INCLUDE "gfx/pokemon/dewgong/normal.pal"
+INCLUDE "gfx/pokemon/dewgong/shiny.pal"
+INCLUDE "gfx/pokemon/grimer/normal.pal"
+INCLUDE "gfx/pokemon/grimer/shiny.pal"
+INCLUDE "gfx/pokemon/muk/normal.pal"
+INCLUDE "gfx/pokemon/muk/shiny.pal"
+INCLUDE "gfx/pokemon/shellder/normal.pal"
+INCLUDE "gfx/pokemon/shellder/shiny.pal"
+INCLUDE "gfx/pokemon/cloyster/normal.pal"
+INCLUDE "gfx/pokemon/cloyster/shiny.pal"
+INCLUDE "gfx/pokemon/gastly/normal.pal"
+INCLUDE "gfx/pokemon/gastly/shiny.pal"
+INCLUDE "gfx/pokemon/haunter/normal.pal"
+INCLUDE "gfx/pokemon/haunter/shiny.pal"
+INCLUDE "gfx/pokemon/gengar/normal.pal"
+INCLUDE "gfx/pokemon/gengar/shiny.pal"
+INCLUDE "gfx/pokemon/onix/normal.pal"
+INCLUDE "gfx/pokemon/onix/shiny.pal"
+INCLUDE "gfx/pokemon/drowzee/normal.pal"
+INCLUDE "gfx/pokemon/drowzee/shiny.pal"
+INCLUDE "gfx/pokemon/hypno/normal.pal"
+INCLUDE "gfx/pokemon/hypno/shiny.pal"
+INCLUDE "gfx/pokemon/krabby/normal.pal"
+INCLUDE "gfx/pokemon/krabby/shiny.pal"
+INCLUDE "gfx/pokemon/kingler/normal.pal"
+INCLUDE "gfx/pokemon/kingler/shiny.pal"
+INCLUDE "gfx/pokemon/voltorb/normal.pal"
+INCLUDE "gfx/pokemon/voltorb/shiny.pal"
+INCLUDE "gfx/pokemon/electrode/normal.pal"
+INCLUDE "gfx/pokemon/electrode/shiny.pal"
+INCLUDE "gfx/pokemon/exeggcute/normal.pal"
+INCLUDE "gfx/pokemon/exeggcute/shiny.pal"
+INCLUDE "gfx/pokemon/exeggutor/normal.pal"
+INCLUDE "gfx/pokemon/exeggutor/shiny.pal"
+INCLUDE "gfx/pokemon/cubone/normal.pal"
+INCLUDE "gfx/pokemon/cubone/shiny.pal"
+INCLUDE "gfx/pokemon/marowak/normal.pal"
+INCLUDE "gfx/pokemon/marowak/shiny.pal"
+INCLUDE "gfx/pokemon/hitmonlee/normal.pal"
+INCLUDE "gfx/pokemon/hitmonlee/shiny.pal"
+INCLUDE "gfx/pokemon/hitmonchan/normal.pal"
+INCLUDE "gfx/pokemon/hitmonchan/shiny.pal"
+INCLUDE "gfx/pokemon/lickitung/normal.pal"
+INCLUDE "gfx/pokemon/lickitung/shiny.pal"
+INCLUDE "gfx/pokemon/koffing/normal.pal"
+INCLUDE "gfx/pokemon/koffing/shiny.pal"
+INCLUDE "gfx/pokemon/weezing/normal.pal"
+INCLUDE "gfx/pokemon/weezing/shiny.pal"
+INCLUDE "gfx/pokemon/rhyhorn/normal.pal"
+INCLUDE "gfx/pokemon/rhyhorn/shiny.pal"
+INCLUDE "gfx/pokemon/rhydon/normal.pal"
+INCLUDE "gfx/pokemon/rhydon/shiny.pal"
+INCLUDE "gfx/pokemon/chansey/normal.pal"
+INCLUDE "gfx/pokemon/chansey/shiny.pal"
+INCLUDE "gfx/pokemon/tangela/normal.pal"
+INCLUDE "gfx/pokemon/tangela/shiny.pal"
+INCLUDE "gfx/pokemon/kangaskhan/normal.pal"
+INCLUDE "gfx/pokemon/kangaskhan/shiny.pal"
+INCLUDE "gfx/pokemon/horsea/normal.pal"
+INCLUDE "gfx/pokemon/horsea/shiny.pal"
+INCLUDE "gfx/pokemon/seadra/normal.pal"
+INCLUDE "gfx/pokemon/seadra/shiny.pal"
+INCLUDE "gfx/pokemon/goldeen/normal.pal"
+INCLUDE "gfx/pokemon/goldeen/shiny.pal"
+INCLUDE "gfx/pokemon/seaking/normal.pal"
+INCLUDE "gfx/pokemon/seaking/shiny.pal"
+INCLUDE "gfx/pokemon/staryu/normal.pal"
+INCLUDE "gfx/pokemon/staryu/shiny.pal"
+INCLUDE "gfx/pokemon/starmie/normal.pal"
+INCLUDE "gfx/pokemon/starmie/shiny.pal"
+INCLUDE "gfx/pokemon/mr__mime/normal.pal"
+INCLUDE "gfx/pokemon/mr__mime/shiny.pal"
+INCLUDE "gfx/pokemon/scyther/normal.pal"
+INCLUDE "gfx/pokemon/scyther/shiny.pal"
+INCLUDE "gfx/pokemon/jynx/normal.pal"
+INCLUDE "gfx/pokemon/jynx/shiny.pal"
+INCLUDE "gfx/pokemon/electabuzz/normal.pal"
+INCLUDE "gfx/pokemon/electabuzz/shiny.pal"
+INCLUDE "gfx/pokemon/magmar/normal.pal"
+INCLUDE "gfx/pokemon/magmar/shiny.pal"
+INCLUDE "gfx/pokemon/pinsir/normal.pal"
+INCLUDE "gfx/pokemon/pinsir/shiny.pal"
+INCLUDE "gfx/pokemon/tauros/normal.pal"
+INCLUDE "gfx/pokemon/tauros/shiny.pal"
+INCLUDE "gfx/pokemon/magikarp/normal.pal"
+INCLUDE "gfx/pokemon/magikarp/shiny.pal"
+INCLUDE "gfx/pokemon/gyarados/normal.pal"
+INCLUDE "gfx/pokemon/gyarados/shiny.pal"
+INCLUDE "gfx/pokemon/lapras/normal.pal"
+INCLUDE "gfx/pokemon/lapras/shiny.pal"
+INCLUDE "gfx/pokemon/ditto/normal.pal"
+INCLUDE "gfx/pokemon/ditto/shiny.pal"
+INCLUDE "gfx/pokemon/eevee/normal.pal"
+INCLUDE "gfx/pokemon/eevee/shiny.pal"
+INCLUDE "gfx/pokemon/vaporeon/normal.pal"
+INCLUDE "gfx/pokemon/vaporeon/shiny.pal"
+INCLUDE "gfx/pokemon/jolteon/normal.pal"
+INCLUDE "gfx/pokemon/jolteon/shiny.pal"
+INCLUDE "gfx/pokemon/flareon/normal.pal"
+INCLUDE "gfx/pokemon/flareon/shiny.pal"
+INCLUDE "gfx/pokemon/porygon/normal.pal"
+INCLUDE "gfx/pokemon/porygon/shiny.pal"
+INCLUDE "gfx/pokemon/omanyte/normal.pal"
+INCLUDE "gfx/pokemon/omanyte/shiny.pal"
+INCLUDE "gfx/pokemon/omastar/normal.pal"
+INCLUDE "gfx/pokemon/omastar/shiny.pal"
+INCLUDE "gfx/pokemon/kabuto/normal.pal"
+INCLUDE "gfx/pokemon/kabuto/shiny.pal"
+INCLUDE "gfx/pokemon/kabutops/normal.pal"
+INCLUDE "gfx/pokemon/kabutops/shiny.pal"
+INCLUDE "gfx/pokemon/aerodactyl/normal.pal"
+INCLUDE "gfx/pokemon/aerodactyl/shiny.pal"
+INCLUDE "gfx/pokemon/snorlax/normal.pal"
+INCLUDE "gfx/pokemon/snorlax/shiny.pal"
+INCLUDE "gfx/pokemon/articuno/normal.pal"
+INCLUDE "gfx/pokemon/articuno/shiny.pal"
+INCLUDE "gfx/pokemon/zapdos/normal.pal"
+INCLUDE "gfx/pokemon/zapdos/shiny.pal"
+INCLUDE "gfx/pokemon/moltres/normal.pal"
+INCLUDE "gfx/pokemon/moltres/shiny.pal"
+INCLUDE "gfx/pokemon/dratini/normal.pal"
+INCLUDE "gfx/pokemon/dratini/shiny.pal"
+INCLUDE "gfx/pokemon/dragonair/normal.pal"
+INCLUDE "gfx/pokemon/dragonair/shiny.pal"
+INCLUDE "gfx/pokemon/dragonite/normal.pal"
+INCLUDE "gfx/pokemon/dragonite/shiny.pal"
+INCLUDE "gfx/pokemon/mewtwo/normal.pal"
+INCLUDE "gfx/pokemon/mewtwo/shiny.pal"
+INCLUDE "gfx/pokemon/mew/normal.pal"
+INCLUDE "gfx/pokemon/mew/shiny.pal"
+INCLUDE "gfx/pokemon/chikorita/normal.pal"
+INCLUDE "gfx/pokemon/chikorita/shiny.pal"
+INCLUDE "gfx/pokemon/bayleef/normal.pal"
+INCLUDE "gfx/pokemon/bayleef/shiny.pal"
+INCLUDE "gfx/pokemon/meganium/normal.pal"
+INCLUDE "gfx/pokemon/meganium/shiny.pal"
+INCLUDE "gfx/pokemon/cyndaquil/normal.pal"
+INCLUDE "gfx/pokemon/cyndaquil/shiny.pal"
+INCLUDE "gfx/pokemon/quilava/normal.pal"
+INCLUDE "gfx/pokemon/quilava/shiny.pal"
+INCLUDE "gfx/pokemon/typhlosion/normal.pal"
+INCLUDE "gfx/pokemon/typhlosion/shiny.pal"
+INCLUDE "gfx/pokemon/totodile/normal.pal"
+INCLUDE "gfx/pokemon/totodile/shiny.pal"
+INCLUDE "gfx/pokemon/croconaw/normal.pal"
+INCLUDE "gfx/pokemon/croconaw/shiny.pal"
+INCLUDE "gfx/pokemon/feraligatr/normal.pal"
+INCLUDE "gfx/pokemon/feraligatr/shiny.pal"
+INCLUDE "gfx/pokemon/sentret/normal.pal"
+INCLUDE "gfx/pokemon/sentret/shiny.pal"
+INCLUDE "gfx/pokemon/furret/normal.pal"
+INCLUDE "gfx/pokemon/furret/shiny.pal"
+INCLUDE "gfx/pokemon/hoothoot/normal.pal"
+INCLUDE "gfx/pokemon/hoothoot/shiny.pal"
+INCLUDE "gfx/pokemon/noctowl/normal.pal"
+INCLUDE "gfx/pokemon/noctowl/shiny.pal"
+INCLUDE "gfx/pokemon/ledyba/normal.pal"
+INCLUDE "gfx/pokemon/ledyba/shiny.pal"
+INCLUDE "gfx/pokemon/ledian/normal.pal"
+INCLUDE "gfx/pokemon/ledian/shiny.pal"
+INCLUDE "gfx/pokemon/spinarak/normal.pal"
+INCLUDE "gfx/pokemon/spinarak/shiny.pal"
+INCLUDE "gfx/pokemon/ariados/normal.pal"
+INCLUDE "gfx/pokemon/ariados/shiny.pal"
+INCLUDE "gfx/pokemon/crobat/normal.pal"
+INCLUDE "gfx/pokemon/crobat/shiny.pal"
+INCLUDE "gfx/pokemon/chinchou/normal.pal"
+INCLUDE "gfx/pokemon/chinchou/shiny.pal"
+INCLUDE "gfx/pokemon/lanturn/normal.pal"
+INCLUDE "gfx/pokemon/lanturn/shiny.pal"
+INCLUDE "gfx/pokemon/pichu/normal.pal"
+INCLUDE "gfx/pokemon/pichu/shiny.pal"
+INCLUDE "gfx/pokemon/cleffa/normal.pal"
+INCLUDE "gfx/pokemon/cleffa/shiny.pal"
+INCLUDE "gfx/pokemon/igglybuff/normal.pal"
+INCLUDE "gfx/pokemon/igglybuff/shiny.pal"
+INCLUDE "gfx/pokemon/togepi/normal.pal"
+INCLUDE "gfx/pokemon/togepi/shiny.pal"
+INCLUDE "gfx/pokemon/togetic/normal.pal"
+INCLUDE "gfx/pokemon/togetic/shiny.pal"
+INCLUDE "gfx/pokemon/natu/normal.pal"
+INCLUDE "gfx/pokemon/natu/shiny.pal"
+INCLUDE "gfx/pokemon/xatu/normal.pal"
+INCLUDE "gfx/pokemon/xatu/shiny.pal"
+INCLUDE "gfx/pokemon/mareep/normal.pal"
+INCLUDE "gfx/pokemon/mareep/shiny.pal"
+INCLUDE "gfx/pokemon/flaaffy/normal.pal"
+INCLUDE "gfx/pokemon/flaaffy/shiny.pal"
+INCLUDE "gfx/pokemon/ampharos/normal.pal"
+INCLUDE "gfx/pokemon/ampharos/shiny.pal"
+INCLUDE "gfx/pokemon/bellossom/normal.pal"
+INCLUDE "gfx/pokemon/bellossom/shiny.pal"
+INCLUDE "gfx/pokemon/marill/normal.pal"
+INCLUDE "gfx/pokemon/marill/shiny.pal"
+INCLUDE "gfx/pokemon/azumarill/normal.pal"
+INCLUDE "gfx/pokemon/azumarill/shiny.pal"
+INCLUDE "gfx/pokemon/sudowoodo/normal.pal"
+INCLUDE "gfx/pokemon/sudowoodo/shiny.pal"
+INCLUDE "gfx/pokemon/politoed/normal.pal"
+INCLUDE "gfx/pokemon/politoed/shiny.pal"
+INCLUDE "gfx/pokemon/hoppip/normal.pal"
+INCLUDE "gfx/pokemon/hoppip/shiny.pal"
+INCLUDE "gfx/pokemon/skiploom/normal.pal"
+INCLUDE "gfx/pokemon/skiploom/shiny.pal"
+INCLUDE "gfx/pokemon/jumpluff/normal.pal"
+INCLUDE "gfx/pokemon/jumpluff/shiny.pal"
+INCLUDE "gfx/pokemon/aipom/normal.pal"
+INCLUDE "gfx/pokemon/aipom/shiny.pal"
+INCLUDE "gfx/pokemon/sunkern/normal.pal"
+INCLUDE "gfx/pokemon/sunkern/shiny.pal"
+INCLUDE "gfx/pokemon/sunflora/normal.pal"
+INCLUDE "gfx/pokemon/sunflora/shiny.pal"
+INCLUDE "gfx/pokemon/yanma/normal.pal"
+INCLUDE "gfx/pokemon/yanma/shiny.pal"
+INCLUDE "gfx/pokemon/wooper/normal.pal"
+INCLUDE "gfx/pokemon/wooper/shiny.pal"
+INCLUDE "gfx/pokemon/quagsire/normal.pal"
+INCLUDE "gfx/pokemon/quagsire/shiny.pal"
+INCLUDE "gfx/pokemon/espeon/normal.pal"
+INCLUDE "gfx/pokemon/espeon/shiny.pal"
+INCLUDE "gfx/pokemon/umbreon/normal.pal"
+INCLUDE "gfx/pokemon/umbreon/shiny.pal"
+INCLUDE "gfx/pokemon/murkrow/normal.pal"
+INCLUDE "gfx/pokemon/murkrow/shiny.pal"
+INCLUDE "gfx/pokemon/slowking/normal.pal"
+INCLUDE "gfx/pokemon/slowking/shiny.pal"
+INCLUDE "gfx/pokemon/misdreavus/normal.pal"
+INCLUDE "gfx/pokemon/misdreavus/shiny.pal"
+INCLUDE "gfx/pokemon/unown/normal.pal"
+INCLUDE "gfx/pokemon/unown/shiny.pal"
+INCLUDE "gfx/pokemon/wobbuffet/normal.pal"
+INCLUDE "gfx/pokemon/wobbuffet/shiny.pal"
+INCLUDE "gfx/pokemon/girafarig/normal.pal"
+INCLUDE "gfx/pokemon/girafarig/shiny.pal"
+INCLUDE "gfx/pokemon/pineco/normal.pal"
+INCLUDE "gfx/pokemon/pineco/shiny.pal"
+INCLUDE "gfx/pokemon/forretress/normal.pal"
+INCLUDE "gfx/pokemon/forretress/shiny.pal"
+INCLUDE "gfx/pokemon/dunsparce/normal.pal"
+INCLUDE "gfx/pokemon/dunsparce/shiny.pal"
+INCLUDE "gfx/pokemon/gligar/normal.pal"
+INCLUDE "gfx/pokemon/gligar/shiny.pal"
+INCLUDE "gfx/pokemon/steelix/normal.pal"
+INCLUDE "gfx/pokemon/steelix/shiny.pal"
+INCLUDE "gfx/pokemon/snubbull/normal.pal"
+INCLUDE "gfx/pokemon/snubbull/shiny.pal"
+INCLUDE "gfx/pokemon/granbull/normal.pal"
+INCLUDE "gfx/pokemon/granbull/shiny.pal"
+INCLUDE "gfx/pokemon/qwilfish/normal.pal"
+INCLUDE "gfx/pokemon/qwilfish/shiny.pal"
+INCLUDE "gfx/pokemon/scizor/normal.pal"
+INCLUDE "gfx/pokemon/scizor/shiny.pal"
+INCLUDE "gfx/pokemon/shuckle/normal.pal"
+INCLUDE "gfx/pokemon/shuckle/shiny.pal"
+INCLUDE "gfx/pokemon/heracross/normal.pal"
+INCLUDE "gfx/pokemon/heracross/shiny.pal"
+INCLUDE "gfx/pokemon/sneasel/normal.pal"
+INCLUDE "gfx/pokemon/sneasel/shiny.pal"
+INCLUDE "gfx/pokemon/teddiursa/normal.pal"
+INCLUDE "gfx/pokemon/teddiursa/shiny.pal"
+INCLUDE "gfx/pokemon/ursaring/normal.pal"
+INCLUDE "gfx/pokemon/ursaring/shiny.pal"
+INCLUDE "gfx/pokemon/slugma/normal.pal"
+INCLUDE "gfx/pokemon/slugma/shiny.pal"
+INCLUDE "gfx/pokemon/magcargo/normal.pal"
+INCLUDE "gfx/pokemon/magcargo/shiny.pal"
+INCLUDE "gfx/pokemon/swinub/normal.pal"
+INCLUDE "gfx/pokemon/swinub/shiny.pal"
+INCLUDE "gfx/pokemon/piloswine/normal.pal"
+INCLUDE "gfx/pokemon/piloswine/shiny.pal"
+INCLUDE "gfx/pokemon/corsola/normal.pal"
+INCLUDE "gfx/pokemon/corsola/shiny.pal"
+INCLUDE "gfx/pokemon/remoraid/normal.pal"
+INCLUDE "gfx/pokemon/remoraid/shiny.pal"
+INCLUDE "gfx/pokemon/octillery/normal.pal"
+INCLUDE "gfx/pokemon/octillery/shiny.pal"
+INCLUDE "gfx/pokemon/delibird/normal.pal"
+INCLUDE "gfx/pokemon/delibird/shiny.pal"
+INCLUDE "gfx/pokemon/mantine/normal.pal"
+INCLUDE "gfx/pokemon/mantine/shiny.pal"
+INCLUDE "gfx/pokemon/skarmory/normal.pal"
+INCLUDE "gfx/pokemon/skarmory/shiny.pal"
+INCLUDE "gfx/pokemon/houndour/normal.pal"
+INCLUDE "gfx/pokemon/houndour/shiny.pal"
+INCLUDE "gfx/pokemon/houndoom/normal.pal"
+INCLUDE "gfx/pokemon/houndoom/shiny.pal"
+INCLUDE "gfx/pokemon/kingdra/normal.pal"
+INCLUDE "gfx/pokemon/kingdra/shiny.pal"
+INCLUDE "gfx/pokemon/phanpy/normal.pal"
+INCLUDE "gfx/pokemon/phanpy/shiny.pal"
+INCLUDE "gfx/pokemon/donphan/normal.pal"
+INCLUDE "gfx/pokemon/donphan/shiny.pal"
+INCLUDE "gfx/pokemon/porygon2/normal.pal"
+INCLUDE "gfx/pokemon/porygon2/shiny.pal"
+INCLUDE "gfx/pokemon/stantler/normal.pal"
+INCLUDE "gfx/pokemon/stantler/shiny.pal"
+INCLUDE "gfx/pokemon/smeargle/normal.pal"
+INCLUDE "gfx/pokemon/smeargle/shiny.pal"
+INCLUDE "gfx/pokemon/tyrogue/normal.pal"
+INCLUDE "gfx/pokemon/tyrogue/shiny.pal"
+INCLUDE "gfx/pokemon/hitmontop/normal.pal"
+INCLUDE "gfx/pokemon/hitmontop/shiny.pal"
+INCLUDE "gfx/pokemon/smoochum/normal.pal"
+INCLUDE "gfx/pokemon/smoochum/shiny.pal"
+INCLUDE "gfx/pokemon/elekid/normal.pal"
+INCLUDE "gfx/pokemon/elekid/shiny.pal"
+INCLUDE "gfx/pokemon/magby/normal.pal"
+INCLUDE "gfx/pokemon/magby/shiny.pal"
+INCLUDE "gfx/pokemon/miltank/normal.pal"
+INCLUDE "gfx/pokemon/miltank/shiny.pal"
+INCLUDE "gfx/pokemon/blissey/normal.pal"
+INCLUDE "gfx/pokemon/blissey/shiny.pal"
+INCLUDE "gfx/pokemon/raikou/normal.pal"
+INCLUDE "gfx/pokemon/raikou/shiny.pal"
+INCLUDE "gfx/pokemon/entei/normal.pal"
+INCLUDE "gfx/pokemon/entei/shiny.pal"
+INCLUDE "gfx/pokemon/suicune/normal.pal"
+INCLUDE "gfx/pokemon/suicune/shiny.pal"
+INCLUDE "gfx/pokemon/larvitar/normal.pal"
+INCLUDE "gfx/pokemon/larvitar/shiny.pal"
+INCLUDE "gfx/pokemon/pupitar/normal.pal"
+INCLUDE "gfx/pokemon/pupitar/shiny.pal"
+INCLUDE "gfx/pokemon/tyranitar/normal.pal"
+INCLUDE "gfx/pokemon/tyranitar/shiny.pal"
+INCLUDE "gfx/pokemon/lugia/normal.pal"
+INCLUDE "gfx/pokemon/lugia/shiny.pal"
+INCLUDE "gfx/pokemon/ho_oh/normal.pal"
+INCLUDE "gfx/pokemon/ho_oh/shiny.pal"
+INCLUDE "gfx/pokemon/celebi/normal.pal"
+INCLUDE "gfx/pokemon/celebi/shiny.pal"
+
+; 252
+ RGB 30, 26, 11
+ RGB 23, 16, 00
+; 252 shiny
+ RGB 30, 26, 11
+ RGB 23, 16, 00
+
+INCLUDE "gfx/pokemon/egg/normal.pal"
+INCLUDE "gfx/pokemon/egg/shiny.pal"
+
+; 254
+ RGB 30, 26, 11
+ RGB 23, 16, 00
+; 254 shiny
+ RGB 30, 26, 11
+ RGB 23, 16, 00
+
+; 255
+ RGB 23, 23, 23
+ RGB 17, 17, 17
+; 255 shiny
+ RGB 23, 23, 23
+ RGB 17, 17, 17
diff --git a/data/pokemon/pic_pointers.asm b/data/pokemon/pic_pointers.asm
new file mode 100644
index 00000000..b5912852
--- /dev/null
+++ b/data/pokemon/pic_pointers.asm
@@ -0,0 +1,509 @@
+; Pics are defined in gfx/pics_gold.asm and gfx/pics_silver.asm
+
+PokemonPicPointers::
+; entries correspond to Pokémon species, two apiece
+ dba_pic BulbasaurFrontpic
+ dba_pic BulbasaurBackpic
+ dba_pic IvysaurFrontpic
+ dba_pic IvysaurBackpic
+ dba_pic VenusaurFrontpic
+ dba_pic VenusaurBackpic
+ dba_pic CharmanderFrontpic
+ dba_pic CharmanderBackpic
+ dba_pic CharmeleonFrontpic
+ dba_pic CharmeleonBackpic
+ dba_pic CharizardFrontpic
+ dba_pic CharizardBackpic
+ dba_pic SquirtleFrontpic
+ dba_pic SquirtleBackpic
+ dba_pic WartortleFrontpic
+ dba_pic WartortleBackpic
+ dba_pic BlastoiseFrontpic
+ dba_pic BlastoiseBackpic
+ dba_pic CaterpieFrontpic
+ dba_pic CaterpieBackpic
+ dba_pic MetapodFrontpic
+ dba_pic MetapodBackpic
+ dba_pic ButterfreeFrontpic
+ dba_pic ButterfreeBackpic
+ dba_pic WeedleFrontpic
+ dba_pic WeedleBackpic
+ dba_pic KakunaFrontpic
+ dba_pic KakunaBackpic
+ dba_pic BeedrillFrontpic
+ dba_pic BeedrillBackpic
+ dba_pic PidgeyFrontpic
+ dba_pic PidgeyBackpic
+ dba_pic PidgeottoFrontpic
+ dba_pic PidgeottoBackpic
+ dba_pic PidgeotFrontpic
+ dba_pic PidgeotBackpic
+ dba_pic RattataFrontpic
+ dba_pic RattataBackpic
+ dba_pic RaticateFrontpic
+ dba_pic RaticateBackpic
+ dba_pic SpearowFrontpic
+ dba_pic SpearowBackpic
+ dba_pic FearowFrontpic
+ dba_pic FearowBackpic
+ dba_pic EkansFrontpic
+ dba_pic EkansBackpic
+ dba_pic ArbokFrontpic
+ dba_pic ArbokBackpic
+ dba_pic PikachuFrontpic
+ dba_pic PikachuBackpic
+ dba_pic RaichuFrontpic
+ dba_pic RaichuBackpic
+ dba_pic SandshrewFrontpic
+ dba_pic SandshrewBackpic
+ dba_pic SandslashFrontpic
+ dba_pic SandslashBackpic
+ dba_pic NidoranFFrontpic
+ dba_pic NidoranFBackpic
+ dba_pic NidorinaFrontpic
+ dba_pic NidorinaBackpic
+ dba_pic NidoqueenFrontpic
+ dba_pic NidoqueenBackpic
+ dba_pic NidoranMFrontpic
+ dba_pic NidoranMBackpic
+ dba_pic NidorinoFrontpic
+ dba_pic NidorinoBackpic
+ dba_pic NidokingFrontpic
+ dba_pic NidokingBackpic
+ dba_pic ClefairyFrontpic
+ dba_pic ClefairyBackpic
+ dba_pic ClefableFrontpic
+ dba_pic ClefableBackpic
+ dba_pic VulpixFrontpic
+ dba_pic VulpixBackpic
+ dba_pic NinetalesFrontpic
+ dba_pic NinetalesBackpic
+ dba_pic JigglypuffFrontpic
+ dba_pic JigglypuffBackpic
+ dba_pic WigglytuffFrontpic
+ dba_pic WigglytuffBackpic
+ dba_pic ZubatFrontpic
+ dba_pic ZubatBackpic
+ dba_pic GolbatFrontpic
+ dba_pic GolbatBackpic
+ dba_pic OddishFrontpic
+ dba_pic OddishBackpic
+ dba_pic GloomFrontpic
+ dba_pic GloomBackpic
+ dba_pic VileplumeFrontpic
+ dba_pic VileplumeBackpic
+ dba_pic ParasFrontpic
+ dba_pic ParasBackpic
+ dba_pic ParasectFrontpic
+ dba_pic ParasectBackpic
+ dba_pic VenonatFrontpic
+ dba_pic VenonatBackpic
+ dba_pic VenomothFrontpic
+ dba_pic VenomothBackpic
+ dba_pic DiglettFrontpic
+ dba_pic DiglettBackpic
+ dba_pic DugtrioFrontpic
+ dba_pic DugtrioBackpic
+ dba_pic MeowthFrontpic
+ dba_pic MeowthBackpic
+ dba_pic PersianFrontpic
+ dba_pic PersianBackpic
+ dba_pic PsyduckFrontpic
+ dba_pic PsyduckBackpic
+ dba_pic GolduckFrontpic
+ dba_pic GolduckBackpic
+ dba_pic MankeyFrontpic
+ dba_pic MankeyBackpic
+ dba_pic PrimeapeFrontpic
+ dba_pic PrimeapeBackpic
+ dba_pic GrowlitheFrontpic
+ dba_pic GrowlitheBackpic
+ dba_pic ArcanineFrontpic
+ dba_pic ArcanineBackpic
+ dba_pic PoliwagFrontpic
+ dba_pic PoliwagBackpic
+ dba_pic PoliwhirlFrontpic
+ dba_pic PoliwhirlBackpic
+ dba_pic PoliwrathFrontpic
+ dba_pic PoliwrathBackpic
+ dba_pic AbraFrontpic
+ dba_pic AbraBackpic
+ dba_pic KadabraFrontpic
+ dba_pic KadabraBackpic
+ dba_pic AlakazamFrontpic
+ dba_pic AlakazamBackpic
+ dba_pic MachopFrontpic
+ dba_pic MachopBackpic
+ dba_pic MachokeFrontpic
+ dba_pic MachokeBackpic
+ dba_pic MachampFrontpic
+ dba_pic MachampBackpic
+ dba_pic BellsproutFrontpic
+ dba_pic BellsproutBackpic
+ dba_pic WeepinbellFrontpic
+ dba_pic WeepinbellBackpic
+ dba_pic VictreebelFrontpic
+ dba_pic VictreebelBackpic
+ dba_pic TentacoolFrontpic
+ dba_pic TentacoolBackpic
+ dba_pic TentacruelFrontpic
+ dba_pic TentacruelBackpic
+ dba_pic GeodudeFrontpic
+ dba_pic GeodudeBackpic
+ dba_pic GravelerFrontpic
+ dba_pic GravelerBackpic
+ dba_pic GolemFrontpic
+ dba_pic GolemBackpic
+ dba_pic PonytaFrontpic
+ dba_pic PonytaBackpic
+ dba_pic RapidashFrontpic
+ dba_pic RapidashBackpic
+ dba_pic SlowpokeFrontpic
+ dba_pic SlowpokeBackpic
+ dba_pic SlowbroFrontpic
+ dba_pic SlowbroBackpic
+ dba_pic MagnemiteFrontpic
+ dba_pic MagnemiteBackpic
+ dba_pic MagnetonFrontpic
+ dba_pic MagnetonBackpic
+ dba_pic FarfetchDFrontpic
+ dba_pic FarfetchDBackpic
+ dba_pic DoduoFrontpic
+ dba_pic DoduoBackpic
+ dba_pic DodrioFrontpic
+ dba_pic DodrioBackpic
+ dba_pic SeelFrontpic
+ dba_pic SeelBackpic
+ dba_pic DewgongFrontpic
+ dba_pic DewgongBackpic
+ dba_pic GrimerFrontpic
+ dba_pic GrimerBackpic
+ dba_pic MukFrontpic
+ dba_pic MukBackpic
+ dba_pic ShellderFrontpic
+ dba_pic ShellderBackpic
+ dba_pic CloysterFrontpic
+ dba_pic CloysterBackpic
+ dba_pic GastlyFrontpic
+ dba_pic GastlyBackpic
+ dba_pic HaunterFrontpic
+ dba_pic HaunterBackpic
+ dba_pic GengarFrontpic
+ dba_pic GengarBackpic
+ dba_pic OnixFrontpic
+ dba_pic OnixBackpic
+ dba_pic DrowzeeFrontpic
+ dba_pic DrowzeeBackpic
+ dba_pic HypnoFrontpic
+ dba_pic HypnoBackpic
+ dba_pic KrabbyFrontpic
+ dba_pic KrabbyBackpic
+ dba_pic KinglerFrontpic
+ dba_pic KinglerBackpic
+ dba_pic VoltorbFrontpic
+ dba_pic VoltorbBackpic
+ dba_pic ElectrodeFrontpic
+ dba_pic ElectrodeBackpic
+ dba_pic ExeggcuteFrontpic
+ dba_pic ExeggcuteBackpic
+ dba_pic ExeggutorFrontpic
+ dba_pic ExeggutorBackpic
+ dba_pic CuboneFrontpic
+ dba_pic CuboneBackpic
+ dba_pic MarowakFrontpic
+ dba_pic MarowakBackpic
+ dba_pic HitmonleeFrontpic
+ dba_pic HitmonleeBackpic
+ dba_pic HitmonchanFrontpic
+ dba_pic HitmonchanBackpic
+ dba_pic LickitungFrontpic
+ dba_pic LickitungBackpic
+ dba_pic KoffingFrontpic
+ dba_pic KoffingBackpic
+ dba_pic WeezingFrontpic
+ dba_pic WeezingBackpic
+ dba_pic RhyhornFrontpic
+ dba_pic RhyhornBackpic
+ dba_pic RhydonFrontpic
+ dba_pic RhydonBackpic
+ dba_pic ChanseyFrontpic
+ dba_pic ChanseyBackpic
+ dba_pic TangelaFrontpic
+ dba_pic TangelaBackpic
+ dba_pic KangaskhanFrontpic
+ dba_pic KangaskhanBackpic
+ dba_pic HorseaFrontpic
+ dba_pic HorseaBackpic
+ dba_pic SeadraFrontpic
+ dba_pic SeadraBackpic
+ dba_pic GoldeenFrontpic
+ dba_pic GoldeenBackpic
+ dba_pic SeakingFrontpic
+ dba_pic SeakingBackpic
+ dba_pic StaryuFrontpic
+ dba_pic StaryuBackpic
+ dba_pic StarmieFrontpic
+ dba_pic StarmieBackpic
+ dba_pic MrMimeFrontpic
+ dba_pic MrMimeBackpic
+ dba_pic ScytherFrontpic
+ dba_pic ScytherBackpic
+ dba_pic JynxFrontpic
+ dba_pic JynxBackpic
+ dba_pic ElectabuzzFrontpic
+ dba_pic ElectabuzzBackpic
+ dba_pic MagmarFrontpic
+ dba_pic MagmarBackpic
+ dba_pic PinsirFrontpic
+ dba_pic PinsirBackpic
+ dba_pic TaurosFrontpic
+ dba_pic TaurosBackpic
+ dba_pic MagikarpFrontpic
+ dba_pic MagikarpBackpic
+ dba_pic GyaradosFrontpic
+ dba_pic GyaradosBackpic
+ dba_pic LaprasFrontpic
+ dba_pic LaprasBackpic
+ dba_pic DittoFrontpic
+ dba_pic DittoBackpic
+ dba_pic EeveeFrontpic
+ dba_pic EeveeBackpic
+ dba_pic VaporeonFrontpic
+ dba_pic VaporeonBackpic
+ dba_pic JolteonFrontpic
+ dba_pic JolteonBackpic
+ dba_pic FlareonFrontpic
+ dba_pic FlareonBackpic
+ dba_pic PorygonFrontpic
+ dba_pic PorygonBackpic
+ dba_pic OmanyteFrontpic
+ dba_pic OmanyteBackpic
+ dba_pic OmastarFrontpic
+ dba_pic OmastarBackpic
+ dba_pic KabutoFrontpic
+ dba_pic KabutoBackpic
+ dba_pic KabutopsFrontpic
+ dba_pic KabutopsBackpic
+ dba_pic AerodactylFrontpic
+ dba_pic AerodactylBackpic
+ dba_pic SnorlaxFrontpic
+ dba_pic SnorlaxBackpic
+ dba_pic ArticunoFrontpic
+ dba_pic ArticunoBackpic
+ dba_pic ZapdosFrontpic
+ dba_pic ZapdosBackpic
+ dba_pic MoltresFrontpic
+ dba_pic MoltresBackpic
+ dba_pic DratiniFrontpic
+ dba_pic DratiniBackpic
+ dba_pic DragonairFrontpic
+ dba_pic DragonairBackpic
+ dba_pic DragoniteFrontpic
+ dba_pic DragoniteBackpic
+ dba_pic MewtwoFrontpic
+ dba_pic MewtwoBackpic
+ dba_pic MewFrontpic
+ dba_pic MewBackpic
+ dba_pic ChikoritaFrontpic
+ dba_pic ChikoritaBackpic
+ dba_pic BayleefFrontpic
+ dba_pic BayleefBackpic
+ dba_pic MeganiumFrontpic
+ dba_pic MeganiumBackpic
+ dba_pic CyndaquilFrontpic
+ dba_pic CyndaquilBackpic
+ dba_pic QuilavaFrontpic
+ dba_pic QuilavaBackpic
+ dba_pic TyphlosionFrontpic
+ dba_pic TyphlosionBackpic
+ dba_pic TotodileFrontpic
+ dba_pic TotodileBackpic
+ dba_pic CroconawFrontpic
+ dba_pic CroconawBackpic
+ dba_pic FeraligatrFrontpic
+ dba_pic FeraligatrBackpic
+ dba_pic SentretFrontpic
+ dba_pic SentretBackpic
+ dba_pic FurretFrontpic
+ dba_pic FurretBackpic
+ dba_pic HoothootFrontpic
+ dba_pic HoothootBackpic
+ dba_pic NoctowlFrontpic
+ dba_pic NoctowlBackpic
+ dba_pic LedybaFrontpic
+ dba_pic LedybaBackpic
+ dba_pic LedianFrontpic
+ dba_pic LedianBackpic
+ dba_pic SpinarakFrontpic
+ dba_pic SpinarakBackpic
+ dba_pic AriadosFrontpic
+ dba_pic AriadosBackpic
+ dba_pic CrobatFrontpic
+ dba_pic CrobatBackpic
+ dba_pic ChinchouFrontpic
+ dba_pic ChinchouBackpic
+ dba_pic LanturnFrontpic
+ dba_pic LanturnBackpic
+ dba_pic PichuFrontpic
+ dba_pic PichuBackpic
+ dba_pic CleffaFrontpic
+ dba_pic CleffaBackpic
+ dba_pic IgglybuffFrontpic
+ dba_pic IgglybuffBackpic
+ dba_pic TogepiFrontpic
+ dba_pic TogepiBackpic
+ dba_pic TogeticFrontpic
+ dba_pic TogeticBackpic
+ dba_pic NatuFrontpic
+ dba_pic NatuBackpic
+ dba_pic XatuFrontpic
+ dba_pic XatuBackpic
+ dba_pic MareepFrontpic
+ dba_pic MareepBackpic
+ dba_pic FlaaffyFrontpic
+ dba_pic FlaaffyBackpic
+ dba_pic AmpharosFrontpic
+ dba_pic AmpharosBackpic
+ dba_pic BellossomFrontpic
+ dba_pic BellossomBackpic
+ dba_pic MarillFrontpic
+ dba_pic MarillBackpic
+ dba_pic AzumarillFrontpic
+ dba_pic AzumarillBackpic
+ dba_pic SudowoodoFrontpic
+ dba_pic SudowoodoBackpic
+ dba_pic PolitoedFrontpic
+ dba_pic PolitoedBackpic
+ dba_pic HoppipFrontpic
+ dba_pic HoppipBackpic
+ dba_pic SkiploomFrontpic
+ dba_pic SkiploomBackpic
+ dba_pic JumpluffFrontpic
+ dba_pic JumpluffBackpic
+ dba_pic AipomFrontpic
+ dba_pic AipomBackpic
+ dba_pic SunkernFrontpic
+ dba_pic SunkernBackpic
+ dba_pic SunfloraFrontpic
+ dba_pic SunfloraBackpic
+ dba_pic YanmaFrontpic
+ dba_pic YanmaBackpic
+ dba_pic WooperFrontpic
+ dba_pic WooperBackpic
+ dba_pic QuagsireFrontpic
+ dba_pic QuagsireBackpic
+ dba_pic EspeonFrontpic
+ dba_pic EspeonBackpic
+ dba_pic UmbreonFrontpic
+ dba_pic UmbreonBackpic
+ dba_pic MurkrowFrontpic
+ dba_pic MurkrowBackpic
+ dba_pic SlowkingFrontpic
+ dba_pic SlowkingBackpic
+ dba_pic MisdreavusFrontpic
+ dba_pic MisdreavusBackpic
+
+ ; Unown pics have their own table. See UnownPicPointers
+ dbw -1, -1
+ dbw -1, -1
+
+ dba_pic WobbuffetFrontpic
+ dba_pic WobbuffetBackpic
+ dba_pic GirafarigFrontpic
+ dba_pic GirafarigBackpic
+ dba_pic PinecoFrontpic
+ dba_pic PinecoBackpic
+ dba_pic ForretressFrontpic
+ dba_pic ForretressBackpic
+ dba_pic DunsparceFrontpic
+ dba_pic DunsparceBackpic
+ dba_pic GligarFrontpic
+ dba_pic GligarBackpic
+ dba_pic SteelixFrontpic
+ dba_pic SteelixBackpic
+ dba_pic SnubbullFrontpic
+ dba_pic SnubbullBackpic
+ dba_pic GranbullFrontpic
+ dba_pic GranbullBackpic
+ dba_pic QwilfishFrontpic
+ dba_pic QwilfishBackpic
+ dba_pic ScizorFrontpic
+ dba_pic ScizorBackpic
+ dba_pic ShuckleFrontpic
+ dba_pic ShuckleBackpic
+ dba_pic HeracrossFrontpic
+ dba_pic HeracrossBackpic
+ dba_pic SneaselFrontpic
+ dba_pic SneaselBackpic
+ dba_pic TeddiursaFrontpic
+ dba_pic TeddiursaBackpic
+ dba_pic UrsaringFrontpic
+ dba_pic UrsaringBackpic
+ dba_pic SlugmaFrontpic
+ dba_pic SlugmaBackpic
+ dba_pic MagcargoFrontpic
+ dba_pic MagcargoBackpic
+ dba_pic SwinubFrontpic
+ dba_pic SwinubBackpic
+ dba_pic PiloswineFrontpic
+ dba_pic PiloswineBackpic
+ dba_pic CorsolaFrontpic
+ dba_pic CorsolaBackpic
+ dba_pic RemoraidFrontpic
+ dba_pic RemoraidBackpic
+ dba_pic OctilleryFrontpic
+ dba_pic OctilleryBackpic
+ dba_pic DelibirdFrontpic
+ dba_pic DelibirdBackpic
+ dba_pic MantineFrontpic
+ dba_pic MantineBackpic
+ dba_pic SkarmoryFrontpic
+ dba_pic SkarmoryBackpic
+ dba_pic HoundourFrontpic
+ dba_pic HoundourBackpic
+ dba_pic HoundoomFrontpic
+ dba_pic HoundoomBackpic
+ dba_pic KingdraFrontpic
+ dba_pic KingdraBackpic
+ dba_pic PhanpyFrontpic
+ dba_pic PhanpyBackpic
+ dba_pic DonphanFrontpic
+ dba_pic DonphanBackpic
+ dba_pic Porygon2Frontpic
+ dba_pic Porygon2Backpic
+ dba_pic StantlerFrontpic
+ dba_pic StantlerBackpic
+ dba_pic SmeargleFrontpic
+ dba_pic SmeargleBackpic
+ dba_pic TyrogueFrontpic
+ dba_pic TyrogueBackpic
+ dba_pic HitmontopFrontpic
+ dba_pic HitmontopBackpic
+ dba_pic SmoochumFrontpic
+ dba_pic SmoochumBackpic
+ dba_pic ElekidFrontpic
+ dba_pic ElekidBackpic
+ dba_pic MagbyFrontpic
+ dba_pic MagbyBackpic
+ dba_pic MiltankFrontpic
+ dba_pic MiltankBackpic
+ dba_pic BlisseyFrontpic
+ dba_pic BlisseyBackpic
+ dba_pic RaikouFrontpic
+ dba_pic RaikouBackpic
+ dba_pic EnteiFrontpic
+ dba_pic EnteiBackpic
+ dba_pic SuicuneFrontpic
+ dba_pic SuicuneBackpic
+ dba_pic LarvitarFrontpic
+ dba_pic LarvitarBackpic
+ dba_pic PupitarFrontpic
+ dba_pic PupitarBackpic
+ dba_pic TyranitarFrontpic
+ dba_pic TyranitarBackpic
+ dba_pic LugiaFrontpic
+ dba_pic LugiaBackpic
+ dba_pic HoOhFrontpic
+ dba_pic HoOhBackpic
+ dba_pic CelebiFrontpic
+ dba_pic CelebiBackpic
diff --git a/data/pokemon/unown_pic_pointers.asm b/data/pokemon/unown_pic_pointers.asm
new file mode 100644
index 00000000..1ae0da6b
--- /dev/null
+++ b/data/pokemon/unown_pic_pointers.asm
@@ -0,0 +1,54 @@
+UnownPicPointers::
+; entries correspond to Unown letters, two apiece
+ dba_pic UnownAFrontpic
+ dba_pic UnownABackpic
+ dba_pic UnownBFrontpic
+ dba_pic UnownBBackpic
+ dba_pic UnownCFrontpic
+ dba_pic UnownCBackpic
+ dba_pic UnownDFrontpic
+ dba_pic UnownDBackpic
+ dba_pic UnownEFrontpic
+ dba_pic UnownEBackpic
+ dba_pic UnownFFrontpic
+ dba_pic UnownFBackpic
+ dba_pic UnownGFrontpic
+ dba_pic UnownGBackpic
+ dba_pic UnownHFrontpic
+ dba_pic UnownHBackpic
+ dba_pic UnownIFrontpic
+ dba_pic UnownIBackpic
+ dba_pic UnownJFrontpic
+ dba_pic UnownJBackpic
+ dba_pic UnownKFrontpic
+ dba_pic UnownKBackpic
+ dba_pic UnownLFrontpic
+ dba_pic UnownLBackpic
+ dba_pic UnownMFrontpic
+ dba_pic UnownMBackpic
+ dba_pic UnownNFrontpic
+ dba_pic UnownNBackpic
+ dba_pic UnownOFrontpic
+ dba_pic UnownOBackpic
+ dba_pic UnownPFrontpic
+ dba_pic UnownPBackpic
+ dba_pic UnownQFrontpic
+ dba_pic UnownQBackpic
+ dba_pic UnownRFrontpic
+ dba_pic UnownRBackpic
+ dba_pic UnownSFrontpic
+ dba_pic UnownSBackpic
+ dba_pic UnownTFrontpic
+ dba_pic UnownTBackpic
+ dba_pic UnownUFrontpic
+ dba_pic UnownUBackpic
+ dba_pic UnownVFrontpic
+ dba_pic UnownVBackpic
+ dba_pic UnownWFrontpic
+ dba_pic UnownWBackpic
+ dba_pic UnownXFrontpic
+ dba_pic UnownXBackpic
+ dba_pic UnownYFrontpic
+ dba_pic UnownYBackpic
+ dba_pic UnownZFrontpic
+ dba_pic UnownZBackpic
diff --git a/data/predef_pointers.asm b/data/predef_pointers.asm
index 8e4dac0f..8f7fd669 100755
--- a/data/predef_pointers.asm
+++ b/data/predef_pointers.asm
@@ -74,6 +74,6 @@ PredefPointers::
add_predef CheckTypeMatchup ; $40
add_predef ConvertMon_1to2
add_predef NewPokedexEntry
- add_predef FrontpicPredef
+ add_predef UnusedFrontpicPredef
add_predef UpdateTimePredef
dbw -1, InexplicablyEmptyFunction ; ???
diff --git a/data/radio/channel_music.asm b/data/radio/channel_music.asm
new file mode 100644
index 00000000..c11360af
--- /dev/null
+++ b/data/radio/channel_music.asm
@@ -0,0 +1,12 @@
+RadioChannelSongs:
+; entries correspond to radio channel ids
+ dw MUSIC_POKEMON_TALK
+ dw MUSIC_POKEMON_CENTER
+ dw MUSIC_TITLE
+ dw MUSIC_GAME_CORNER
+ dw MUSIC_VIRIDIAN_CITY
+ dw MUSIC_BICYCLE
+ dw MUSIC_ROCKET_OVERTURE
+ dw MUSIC_POKE_FLUTE_CHANNEL
+ dw MUSIC_RUINS_OF_ALPH_RADIO
+ dw MUSIC_LAKE_OF_RAGE_ROCKET_RADIO
diff --git a/data/radio/oaks_pkmn_talk_routes.asm b/data/radio/oaks_pkmn_talk_routes.asm
new file mode 100644
index 00000000..acef4bdd
--- /dev/null
+++ b/data/radio/oaks_pkmn_talk_routes.asm
@@ -0,0 +1,19 @@
+; Oak's Pokémon Talk will list wild Pokémon on these maps.
+
+OaksPKMNTalkRoutes:
+ map_id ROUTE_29
+ map_id ROUTE_46
+ map_id ROUTE_30
+ map_id ROUTE_32
+ map_id ROUTE_34
+ map_id ROUTE_35
+ map_id ROUTE_37
+ map_id ROUTE_38
+ map_id ROUTE_39
+ map_id ROUTE_42
+ map_id ROUTE_43
+ map_id ROUTE_44
+ map_id ROUTE_45
+ map_id ROUTE_36
+ map_id ROUTE_31
+.End
diff --git a/data/radio/pnp_hidden_people.asm b/data/radio/pnp_hidden_people.asm
new file mode 100644
index 00000000..5eb17857
--- /dev/null
+++ b/data/radio/pnp_hidden_people.asm
@@ -0,0 +1,26 @@
+; Places and People will not describe these trainers.
+
+PnP_HiddenPeople:
+ db WILL
+ db BRUNO
+ db KAREN
+ db KOGA
+ db CHAMPION
+ ; fallthrough
+PnP_HiddenPeople_BeatE4:
+ db BROCK
+ db MISTY
+ db LT_SURGE
+ db ERIKA
+ db JANINE
+ db SABRINA
+ db BLAINE
+ db BLUE
+ ; fallthrough
+PnP_HiddenPeople_BeatKanto:
+ db RIVAL1
+ db POKEMON_PROF
+ db CAL
+ db RIVAL2
+ db RED
+ db -1
diff --git a/data/radio/pnp_places.asm b/data/radio/pnp_places.asm
new file mode 100644
index 00000000..540078ef
--- /dev/null
+++ b/data/radio/pnp_places.asm
@@ -0,0 +1,13 @@
+; Places and People will describe the landmarks of these maps.
+
+PnP_Places:
+ map_id PALLET_TOWN ; PALLET_TOWN
+ map_id ROUTE_22 ; ROUTE_22
+ map_id PEWTER_CITY ; PEWTER_CITY
+ map_id CERULEAN_POLICE_STATION ; CERULEAN_CITY
+ map_id ROUTE_12 ; ROUTE_12
+ map_id ROUTE_11 ; ROUTE_11
+ map_id ROUTE_16 ; ROUTE_16
+ map_id ROUTE_14 ; ROUTE_14
+ map_id CINNABAR_POKECENTER_2F_BETA ; CINNABAR_ISLAND
+.End
diff --git a/data/sgb_ctrl_packets.asm b/data/sgb_ctrl_packets.asm
new file mode 100644
index 00000000..b3c2b040
--- /dev/null
+++ b/data/sgb_ctrl_packets.asm
@@ -0,0 +1,133 @@
+; macros taken from pokered's data/sgb_packets.asm
+; names taken from pandocs
+; http://gbdev.gg8.se/wiki/articles/SGB_Functions#SGB_Palette_Commands
+
+sgb_pal_trn: MACRO
+ db (SGB_PAL_TRN << 3) + 1
+ ds 15
+ENDM
+
+sgb_mlt_req: MACRO
+ db (SGB_MLT_REG << 3) + 1
+ db \1 - 1
+ ds 14
+ENDM
+
+sgb_chr_trn: MACRO
+ db (SGB_CHR_TRN << 3) + 1
+ db \1 + (\2 << 1)
+ ds 14
+ENDM
+
+sgb_pct_trn: MACRO
+ db (SGB_PCT_TRN << 3) + 1
+ ds 15
+ENDM
+
+sgb_mask_en: MACRO
+ db (SGB_MASK_EN << 3) + 1
+ db \1
+ ds 14
+ENDM
+
+sgb_data_snd: MACRO
+ db (SGB_DATA_SND << 3) + 1
+ dw \1 ; address
+ db \2 ; bank
+ db \3 ; length (1-11)
+ENDM
+
+; Crystal does not support SGB, so this is unused.
+
+PalTrnPacket: sgb_pal_trn
+MltReq1Packet: sgb_mlt_req 1
+MltReq2Packet: sgb_mlt_req 2
+ChrTrnPacket: sgb_chr_trn 0, 0
+PctTrnPacket: sgb_pct_trn
+
+MaskEnFreezePacket: sgb_mask_en 1
+MaskEnCancelPacket: sgb_mask_en 0
+
+; These are packets containing SNES code.
+; This set of packets is found in several Japanese SGB-compatible titles.
+; It appears to be part of NCL's SGB devkit.
+
+DataSndPacket1:
+ sgb_data_snd $085d, $0, 11
+ db $8c ; cpx #$8c (2)
+ db $d0, $f4 ; bne -$0c
+ db $60 ; rts
+ ds 7
+
+DataSndPacket2:
+ sgb_data_snd $0852, $0, 11
+ db $a9, $e7 ; lda #$e7
+ db $9f, $01, $c0, $7e ; sta $7ec001, x
+ db $e8 ; inx
+ db $e8 ; inx
+ db $e8 ; inx
+ db $e8 ; inx
+ db $e0 ; cpx #$8c (1)
+
+DataSndPacket3:
+ sgb_data_snd $0847, $0, 11
+ db $c4 ; cmp #$c4 (2)
+ db $d0, $16 ; bne +$16
+ db $a5 ; lda dp
+ db $cb ; wai
+ db $c9, $05 ; cmp #$05
+ db $d0, $10 ; bne +$10
+ db $a2, $28 ; ldx #$28
+
+DataSndPacket4:
+ sgb_data_snd $083c, $0, 11
+ db $f0, $12 ; beq +$12
+ db $a5 ; lda dp
+ db $c9, $c9 ; cmp #$c9
+ db $c8 ; iny
+ db $d0, $1c ; bne +$1c
+ db $a5 ; lda dp
+ db $ca ; dex
+ db $c9 ; cmp #$c4 (1)
+
+DataSndPacket5:
+ sgb_data_snd $0831, $0, 11
+ dbw $0c, $caa5 ; tsb $caa5
+ db $c9, $7e ; cmp #$7e
+ db $d0, $06 ; bne +$06
+ db $a5 ; lda dp
+ db $cb ; wai
+ db $c9, $7e ; cmp #$7e
+
+DataSndPacket6:
+ sgb_data_snd $0826, $0, 11
+ db $39 ; bne +$39 (2)
+ dbw $cd, $0c48 ; cmp $0c48
+ db $d0, $34 ; bne +$34
+ db $a5 ; lda dp
+ db $c9, $c9 ; cmp #$c9
+ db $80, $d0 ; bra -$30
+
+DataSndPacket7:
+ sgb_data_snd $081b, $0, 11
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ ; $0820:
+ db $a9, $01 ; lda #01
+ dbw $cd, $0c4f ; cmp $c4f
+ db $d0 ; bne +$39 (1)
+
+DataSndPacket8:
+ sgb_data_snd $0810, $0, 11
+ dbw $4c, $0820 ; jmp $0820
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $60 ; rts
+ db $ea ; nop
+ db $ea ; nop
diff --git a/data/special_pointers.asm b/data/special_pointers.asm
new file mode 100644
index 00000000..03492518
--- /dev/null
+++ b/data/special_pointers.asm
@@ -0,0 +1,130 @@
+; Special routines can be used with the "special" map script command.
+; They often use wScriptVar for arguments and return values.
+
+add_special: MACRO
+; Some ROM0 specials have a nonzero bank.
+\1Special::
+IF _NARG == 1
+ dba \1
+ELSE
+ dbw \2, \1
+ENDC
+ENDM
+
+SpecialsPointers::
+ add_special WarpToSpawnPoint ; $0
+
+; Communications
+ add_special SetBitsForLinkTradeRequest
+ add_special WaitForLinkedFriend
+ add_special CheckLinkTimeout
+ add_special TryQuickSave
+ add_special CheckBothSelectedSameRoom
+ add_special FailedLinkToPast
+ add_special CloseLink
+ add_special WaitForOtherPlayerToExit ; $8
+ add_special SetBitsForBattleRequest
+ add_special SetBitsForTimeCapsuleRequest
+ add_special CheckTimeCapsuleCompatibility
+ add_special EnterTimeCapsule
+ add_special TradeCenter
+ add_special Colosseum
+ add_special TimeCapsule
+ add_special CableClubCheckWhichChris ; $10
+ add_special CheckMysteryGift
+ add_special GetMysteryGiftItem
+ add_special UnlockMysteryGift
+
+; Map events
+ add_special BugContestJudging
+ add_special CheckPartyFullAfterContest
+ add_special ContestDropOffMons
+ add_special ContestReturnMons
+ add_special GiveParkBalls ; $18
+ add_special CheckMagikarpLength
+ add_special MagikarpHouseSign
+ add_special HealParty ; this is both a special and a predef
+ add_special PokemonCenterPC
+ add_special PlayersHousePC
+ add_special DayCareMan
+ add_special DayCareLady
+ add_special DayCareManOutside ; $20
+ add_special MoveDeletion
+ add_special BankOfMom
+ add_special MagnetTrain
+ add_special NameRival
+ add_special SetDayOfWeek
+ add_special OverworldTownMap
+ add_special UnownPrinter
+ add_special MapRadio ; $28
+ add_special UnownPuzzle
+ add_special SlotMachine
+ add_special CardFlip
+ add_special DummyNonfunctionalGameCornerGame
+ add_special ClearBGPalettesBufferScreen
+ add_special FadeOutPalettes
+ add_special FadeBlackQuickly
+ add_special FadeInPalettes ; $30
+ add_special FadeInQuickly
+ add_special ReloadSpritesNoPalettes, 2
+ add_special ClearBGPalettes
+ add_special UpdateTimePals
+ add_special ClearTilemap
+ add_special UpdateSprites
+ add_special ReplaceChrisSprite
+ add_special GameCornerPrizeMonCheckDex ; $38
+ add_special UnusedSetSeenMon
+ add_special WaitSFX, 3
+ add_special PlayMapMusic
+ add_special RestartMapMusic
+ add_special HealMachineAnim
+ add_special SurfStartStep
+ add_special FindPartyMonAboveLevel
+ add_special FindPartyMonAtLeastThatHappy ; $40
+ add_special FindPartyMonThatSpecies
+ add_special FindPartyMonThatSpeciesYourTrainerID
+ add_special UnusedCheckUnusedTwoDayTimer
+ add_special DayCareMon1
+ add_special DayCareMon2
+ add_special SelectRandomBugContestContestants
+ add_special ActivateFishingSwarm
+ add_special ToggleMaptileDecorations ; $48
+ add_special ToggleDecorationsVisibility
+ add_special GiveShuckle
+ add_special ReturnShuckle
+ add_special BillsGrandfather
+ add_special CheckPokerus
+ add_special DisplayCoinCaseBalance
+ add_special DisplayMoneyAndCoinBalance
+ add_special PlaceMoneyTopRight ; $50
+ add_special CheckForLuckyNumberWinners
+ add_special CheckLuckyNumberShowFlag
+ add_special ResetLuckyNumberShowFlag
+ add_special PrintTodaysLuckyNumber
+ add_special SelectApricornForKurt
+ add_special NameRater
+ add_special DisplayLinkRecord
+ add_special GetFirstPokemonHappiness ; $58
+ add_special CheckFirstMonIsEgg
+ add_special RandomUnseenWildMon
+ add_special RandomPhoneWildMon
+ add_special RandomPhoneMon
+ add_special LoadUsedSpritesGFX
+ add_special PlaySlowCry
+ add_special SnorlaxAwake
+ add_special OlderHaircutBrother ; $60
+ add_special YoungerHaircutBrother
+ add_special DaisysGrooming
+ add_special PlayCurMonCry
+ add_special ProfOaksPCBoot
+ add_special GameboyCheck
+ add_special TrainerHouse
+ add_special PhotoStudio
+ add_special InitRoamMons ; $68
+ add_special FadeOutMusic
+ add_special Diploma
+ add_special PrintDiploma
+ add_special InitialSetDSTFlag
+ add_special InitialClearDSTFlag
+ add_special MrChrono
+ add_special DummySpecial_c389
diff --git a/data/sprite_engine.asm b/data/sprite_anims/framesets.asm
index e53b1c47..e53b1c47 100755
--- a/data/sprite_engine.asm
+++ b/data/sprite_anims/framesets.asm
diff --git a/data/sprites/emotes.asm b/data/sprites/emotes.asm
new file mode 100644
index 00000000..2371c462
--- /dev/null
+++ b/data/sprites/emotes.asm
@@ -0,0 +1,21 @@
+emote: MACRO
+; graphics pointer, length, starting tile
+ dw \1
+ db \2 tiles, BANK(\1)
+ dw vTiles0 tile \3
+ENDM
+
+Emotes:
+; entries correspond to EMOTE_* constants
+ emote ShockEmote, 4, $f8
+ emote QuestionEmote, 4, $f8
+ emote HappyEmote, 4, $f8
+ emote SadEmote, 4, $f8
+ emote HeartEmote, 4, $f8
+ emote BoltEmote, 4, $f8
+ emote SleepEmote, 4, $f8
+ emote FishEmote, 4, $f8
+ emote JumpShadowGFX, 1, $fc
+ emote FishingRodGFX, 2, $fc
+ emote BoulderDustGFX, 2, $fe
+ emote GrassRustleGFX, 1, $fe
diff --git a/data/sprites/facings.asm b/data/sprites/facings.asm
new file mode 100644
index 00000000..ccf91082
--- /dev/null
+++ b/data/sprites/facings.asm
@@ -0,0 +1,239 @@
+Facings:
+; entries correspond to FACING_* constants
+ dw FacingStepDown0
+ dw FacingStepDown1
+ dw FacingStepDown2
+ dw FacingStepDown3
+ dw FacingStepUp0
+ dw FacingStepUp1
+ dw FacingStepUp2
+ dw FacingStepUp3
+ dw FacingStepLeft0
+ dw FacingStepLeft1
+ dw FacingStepLeft2
+ dw FacingStepLeft3
+ dw FacingStepRight0
+ dw FacingStepRight1
+ dw FacingStepRight2
+ dw FacingStepRight3
+ dw FacingFishDown
+ dw FacingFishUp
+ dw FacingFishLeft
+ dw FacingFishRight
+ dw FacingEmote
+ dw FacingShadow
+ dw FacingBigDollAsymmetric
+ dw FacingBigDollSymmetric
+ dw FacingWeirdTree0
+ dw FacingWeirdTree1
+ dw FacingWeirdTree2
+ dw FacingWeirdTree3
+ dw FacingBoulderDust1
+ dw FacingBoulderDust2
+ dw FacingGrass1
+ dw FacingGrass2
+.End
+ dw 0
+
+NUM_FACINGS EQU (Facings.End - Facings) / 2
+
+; Tables used as a reference to transform OAM data.
+
+; Format:
+; db y, x, attributes, tile index
+
+FacingStepDown0:
+FacingStepDown2:
+FacingWeirdTree0:
+FacingWeirdTree2: ; standing down
+ db 4 ; #
+ db 0, 0, 0, $00
+ db 0, 8, 0, $01
+ db 8, 0, RELATIVE_ATTRIBUTES, $02
+ db 8, 8, RELATIVE_ATTRIBUTES, $03
+
+FacingStepDown1: ; walking down 1
+ db 4 ; #
+ db 0, 0, 0, $80
+ db 0, 8, 0, $81
+ db 8, 0, RELATIVE_ATTRIBUTES, $82
+ db 8, 8, RELATIVE_ATTRIBUTES, $83
+
+FacingStepDown3: ; walking down 2
+ db 4 ; #
+ db 0, 8, X_FLIP, $80
+ db 0, 0, X_FLIP, $81
+ db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $82
+ db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $83
+
+FacingStepUp0:
+FacingStepUp2: ; standing up
+ db 4 ; #
+ db 0, 0, 0, $04
+ db 0, 8, 0, $05
+ db 8, 0, RELATIVE_ATTRIBUTES, $06
+ db 8, 8, RELATIVE_ATTRIBUTES, $07
+
+FacingStepUp1: ; walking up 1
+ db 4 ; #
+ db 0, 0, 0, $84
+ db 0, 8, 0, $85
+ db 8, 0, RELATIVE_ATTRIBUTES, $86
+ db 8, 8, RELATIVE_ATTRIBUTES, $87
+
+FacingStepUp3: ; walking up 2
+ db 4 ; #
+ db 0, 8, X_FLIP, $84
+ db 0, 0, X_FLIP, $85
+ db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $86
+ db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $87
+
+FacingStepLeft0:
+FacingStepLeft2: ; standing left
+ db 4 ; #
+ db 0, 0, 0, $08
+ db 0, 8, 0, $09
+ db 8, 0, RELATIVE_ATTRIBUTES, $0a
+ db 8, 8, RELATIVE_ATTRIBUTES, $0b
+
+FacingStepRight0:
+FacingStepRight2: ; standing right
+ db 4 ; #
+ db 0, 8, X_FLIP, $08
+ db 0, 0, X_FLIP, $09
+ db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a
+ db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b
+
+FacingStepLeft1:
+FacingStepLeft3: ; walking left
+ db 4 ; #
+ db 0, 0, 0, $88
+ db 0, 8, 0, $89
+ db 8, 0, RELATIVE_ATTRIBUTES, $8a
+ db 8, 8, RELATIVE_ATTRIBUTES, $8b
+
+FacingStepRight1:
+FacingStepRight3: ; walking right
+ db 4 ; #
+ db 0, 8, X_FLIP, $88
+ db 0, 0, X_FLIP, $89
+ db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $8a
+ db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $8b
+
+FacingFishDown: ; fishing down
+ db 5 ; #
+ db 0, 0, 0, $00
+ db 0, 8, 0, $01
+ db 8, 0, RELATIVE_ATTRIBUTES, $02
+ db 8, 8, RELATIVE_ATTRIBUTES, $03
+ db 16, 0, ABSOLUTE_TILE_ID, $fc
+
+FacingFishUp: ; fishing up
+ db 5 ; #
+ db 0, 0, 0, $04
+ db 0, 8, 0, $05
+ db 8, 0, RELATIVE_ATTRIBUTES, $06
+ db 8, 8, RELATIVE_ATTRIBUTES, $07
+ db -8, 0, ABSOLUTE_TILE_ID, $fc
+
+FacingFishLeft: ; fishing left
+ db 5 ; #
+ db 0, 0, 0, $08
+ db 0, 8, 0, $09
+ db 8, 0, RELATIVE_ATTRIBUTES, $0a
+ db 8, 8, RELATIVE_ATTRIBUTES, $0b
+ db 5, -8, ABSOLUTE_TILE_ID | X_FLIP, $fd
+
+FacingFishRight: ; fishing right
+ db 5 ; #
+ db 0, 8, X_FLIP, $08
+ db 0, 0, X_FLIP, $09
+ db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a
+ db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b
+ db 5, 16, ABSOLUTE_TILE_ID, $fd
+
+FacingEmote: ; emote
+ db 4 ; #
+ db 0, 0, ABSOLUTE_TILE_ID, $f8
+ db 0, 8, ABSOLUTE_TILE_ID, $f9
+ db 8, 0, ABSOLUTE_TILE_ID, $fa
+ db 8, 8, ABSOLUTE_TILE_ID, $fb
+
+FacingShadow: ; shadow
+ db 2 ; #
+ db 0, 0, ABSOLUTE_TILE_ID, $fc
+ db 0, 8, ABSOLUTE_TILE_ID | X_FLIP, $fc
+
+FacingBigDollSymmetric: ; big snorlax or lapras doll
+ db 16 ; #
+ db 0, 0, 0, $00
+ db 0, 8, 0, $01
+ db 8, 0, 0, $02
+ db 8, 8, 0, $03
+ db 16, 0, 0, $04
+ db 16, 8, 0, $05
+ db 24, 0, 0, $06
+ db 24, 8, 0, $07
+ db 0, 24, X_FLIP, $00
+ db 0, 16, X_FLIP, $01
+ db 8, 24, X_FLIP, $02
+ db 8, 16, X_FLIP, $03
+ db 16, 24, X_FLIP, $04
+ db 16, 16, X_FLIP, $05
+ db 24, 24, X_FLIP, $06
+ db 24, 16, X_FLIP, $07
+
+FacingWeirdTree1:
+ db 4 ; #
+ db 0, 0, 0, $04
+ db 0, 8, 0, $05
+ db 8, 0, 0, $06
+ db 8, 8, 0, $07
+
+FacingWeirdTree3:
+ db 4 ; #
+ db 0, 8, X_FLIP, $04
+ db 0, 0, X_FLIP, $05
+ db 8, 8, X_FLIP, $06
+ db 8, 0, X_FLIP, $07
+
+FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
+ db 14 ; #
+ db 0, 0, 0, $00
+ db 0, 8, 0, $01
+ db 8, 0, 0, $04
+ db 8, 8, 0, $05
+ db 16, 8, 0, $07
+ db 24, 8, 0, $0a
+ db 0, 24, 0, $03
+ db 0, 16, 0, $02
+ db 8, 24, X_FLIP, $02
+ db 8, 16, 0, $06
+ db 16, 24, 0, $09
+ db 16, 16, 0, $08
+ db 24, 24, X_FLIP, $04
+ db 24, 16, 0, $0b
+
+FacingBoulderDust1: ; boulder dust 1
+ db 4 ; #
+ db 0, 0, ABSOLUTE_TILE_ID, $fe
+ db 0, 8, ABSOLUTE_TILE_ID, $fe
+ db 8, 0, ABSOLUTE_TILE_ID, $fe
+ db 8, 8, ABSOLUTE_TILE_ID, $fe
+
+FacingBoulderDust2: ; boulder dust 2
+ db 4 ; #
+ db 0, 0, ABSOLUTE_TILE_ID, $ff
+ db 0, 8, ABSOLUTE_TILE_ID, $ff
+ db 8, 0, ABSOLUTE_TILE_ID, $ff
+ db 8, 8, ABSOLUTE_TILE_ID, $ff
+
+FacingGrass1:
+ db 2 ; #
+ db 8, 0, 0, $00
+ db 8, 8, 0 | X_FLIP, $00
+
+FacingGrass2:
+ db 2 ; #
+ db 9, -1, 0, $00
+ db 9, 9, 0 | X_FLIP, $00
diff --git a/data/sprites/map_objects.asm b/data/sprites/map_objects.asm
new file mode 100644
index 00000000..10afaf57
--- /dev/null
+++ b/data/sprites/map_objects.asm
@@ -0,0 +1,306 @@
+SpriteMovementData::
+; entries correspond to SPRITEMOVEDATA_* constants
+
+; SPRITEMOVEDATA_00
+ db SPRITEMOVEFN_00 ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db WONT_DELETE ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_STILL
+ db SPRITEMOVEFN_STANDING ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db FIXED_FACING | SLIDING ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_WANDER
+ db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SPINRANDOM_SLOW
+ db SPRITEMOVEFN_SLOW_RANDOM_SPIN ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_WALK_UP_DOWN
+ db SPRITEMOVEFN_RANDOM_WALK_Y ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_WALK_LEFT_RIGHT
+ db SPRITEMOVEFN_RANDOM_WALK_X ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_STANDING_DOWN
+ db SPRITEMOVEFN_STANDING ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_STANDING_UP
+ db SPRITEMOVEFN_STANDING ; movement function
+ db UP ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_STANDING_LEFT
+ db SPRITEMOVEFN_STANDING ; movement function
+ db LEFT ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_STANDING_RIGHT
+ db SPRITEMOVEFN_STANDING ; movement function
+ db RIGHT ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SPINRANDOM_FAST
+ db SPRITEMOVEFN_FAST_RANDOM_SPIN ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_PLAYER
+ db SPRITEMOVEFN_OBEY_DPAD ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db WONT_DELETE ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_0C
+ db SPRITEMOVEFN_08 ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_0D
+ db SPRITEMOVEFN_09 ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_0E
+ db SPRITEMOVEFN_0A ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_0F
+ db SPRITEMOVEFN_0B ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_10
+ db SPRITEMOVEFN_0C ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_11
+ db SPRITEMOVEFN_0D ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_12
+ db SPRITEMOVEFN_0E ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_FOLLOWING
+ db SPRITEMOVEFN_FOLLOW ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db WONT_DELETE ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SCRIPTED
+ db SPRITEMOVEFN_SCRIPTED ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db WONT_DELETE ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_BIGDOLLSYM
+ db SPRITEMOVEFN_BIG_SNORLAX ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_BIG_DOLL_SYM ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
+ db LOW_PRIORITY ; flags2
+ db STRENGTH_BOULDER | BIG_OBJECT ; palette flags
+
+; SPRITEMOVEDATA_POKEMON
+ db SPRITEMOVEFN_BOUNCE ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_BOUNCE ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SUDOWOODO
+ db SPRITEMOVEFN_STANDING ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db FIXED_FACING | SLIDING ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SMASHABLE_ROCK
+ db SPRITEMOVEFN_STANDING ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
+ db USE_OBP1 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_STRENGTH_BOULDER
+ db SPRITEMOVEFN_STRENGTH ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
+ db 0 ; flags2
+ db STRENGTH_BOULDER ; palette flags
+
+; SPRITEMOVEDATA_FOLLOWNOTEXACT
+ db SPRITEMOVEFN_FOLLOWNOTEXACT ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db WONT_DELETE ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SHADOW
+ db SPRITEMOVEFN_SHADOW ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_00 ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
+ db LOW_PRIORITY ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_EMOTE
+ db SPRITEMOVEFN_EMOTE ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_EMOTE ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
+ db HIGH_PRIORITY ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SCREENSHAKE
+ db SPRITEMOVEFN_SCREENSHAKE ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_00 ; action
+ db WONT_DELETE | EMOTE_OBJECT ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
+ db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE ; movement function
+ db LEFT ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SPINCLOCKWISE
+ db SPRITEMOVEFN_SPIN_CLOCKWISE ; movement function
+ db RIGHT ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_BIGDOLLASYM
+ db SPRITEMOVEFN_STRENGTH ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_BIG_DOLL_ASYM ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
+ db LOW_PRIORITY ; flags2
+ db STRENGTH_BOULDER | BIG_OBJECT ; palette flags
+
+; SPRITEMOVEDATA_BIGDOLL
+ db SPRITEMOVEFN_STRENGTH ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_BIG_DOLL ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1
+ db LOW_PRIORITY ; flags2
+ db STRENGTH_BOULDER | BIG_OBJECT ; palette flags
+
+; SPRITEMOVEDATA_BOULDERDUST
+ db SPRITEMOVEFN_BOULDERDUST ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_BOULDER_DUST ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
+ db LOW_PRIORITY ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_GRASS
+ db SPRITEMOVEFN_GRASS ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_GRASS_SHAKE ; action
+ db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1
+ db HIGH_PRIORITY ; flags2
+ db 0 ; palette flags
+
+; SPRITEMOVEDATA_SWIM_WANDER
+ db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db SWIMMING ; palette flags
+
+; 25
+ db SPRITEMOVEFN_00 ; movement function
+ db DOWN ; facing
+ db OBJECT_ACTION_STAND ; action
+ db 0 ; flags1
+ db 0 ; flags2
+ db 0 ; palette flags
diff --git a/data/sprites/player_sprites.asm b/data/sprites/player_sprites.asm
new file mode 100644
index 00000000..63d3ab67
--- /dev/null
+++ b/data/sprites/player_sprites.asm
@@ -0,0 +1,6 @@
+ChrisStateSprites:
+ db PLAYER_NORMAL, SPRITE_CHRIS
+ db PLAYER_BIKE, SPRITE_CHRIS_BIKE
+ db PLAYER_SURF, SPRITE_SURF
+ db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
+ db -1 ; end
diff --git a/data/sprites/sprite_mons.asm b/data/sprites/sprite_mons.asm
new file mode 100644
index 00000000..3d53804d
--- /dev/null
+++ b/data/sprites/sprite_mons.asm
@@ -0,0 +1,37 @@
+SpriteMons:
+; 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/sprites/sprites.asm b/data/sprites/sprites.asm
new file mode 100644
index 00000000..b208b862
--- /dev/null
+++ b/data/sprites/sprites.asm
@@ -0,0 +1,103 @@
+overworld_sprite: MACRO
+; pointer, length, type, palette
+ dw \1
+ db \2 tiles, BANK(\1), \3, \4
+ENDM
+
+OverworldSprites:
+; entries correspond to SPRITE_* constants
+ overworld_sprite ChrisSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite ChrisBikeSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite GameboyKidSpriteGFX, 12, STANDING_SPRITE, PAL_OW_GREEN
+ overworld_sprite SilverSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite OakSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite RedSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BlueSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BillSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite ElderSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite JanineSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite KurtSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite MomSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BlaineSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite RedsMomSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite DaisySpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite ElmSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite WillSpriteGFX, 12, STANDING_SPRITE, PAL_OW_RED
+ overworld_sprite FalknerSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite WhitneySpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BugsySpriteGFX, 12, WALKING_SPRITE, PAL_OW_GREEN
+ overworld_sprite MortySpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite ChuckSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite JasmineSpriteGFX, 12, WALKING_SPRITE, PAL_OW_GREEN
+ overworld_sprite PryceSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite ClairSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BrockSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite KarenSpriteGFX, 12, STANDING_SPRITE, PAL_OW_BLUE
+ overworld_sprite BrunoSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite MistySpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite LanceSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite SurgeSpriteGFX, 12, WALKING_SPRITE, PAL_OW_GREEN
+ overworld_sprite ErikaSpriteGFX, 12, WALKING_SPRITE, PAL_OW_GREEN
+ overworld_sprite KogaSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite SabrinaSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite CooltrainerMSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite CooltrainerFSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite BugCatcherSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite TwinSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite YoungsterSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite LassSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite TeacherSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BuenaSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite SuperNerdSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite RockerSpriteGFX, 12, WALKING_SPRITE, PAL_OW_GREEN
+ overworld_sprite PokefanMSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite PokefanFSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite GrampsSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite GrannySpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite SwimmerGuySpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite SwimmerGirlSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite BigSnorlaxSpriteGFX, 12, STANDING_SPRITE, PAL_OW_BLUE
+ overworld_sprite SurfingPikachuSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite RocketSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite RocketGirlSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite NurseSpriteGFX, 12, STANDING_SPRITE, PAL_OW_RED
+ overworld_sprite LinkReceptionistSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite ClerkSpriteGFX, 12, WALKING_SPRITE, PAL_OW_GREEN
+ overworld_sprite FisherSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite FishingGuruSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite ScientistSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite KimonoGirlSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite SageSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite UnusedGuySpriteGFX, 12, STANDING_SPRITE, PAL_OW_RED
+ overworld_sprite GentlemanSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite BlackBeltSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite ReceptionistSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite OfficerSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite CalSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite SlowpokeSpriteGFX, 4, STILL_SPRITE, PAL_OW_RED
+ overworld_sprite CaptainSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite BigLaprasSpriteGFX, 12, STANDING_SPRITE, PAL_OW_BLUE
+ overworld_sprite GymGuySpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite SailorSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite BikerSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
+ overworld_sprite PharmacistSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite MonsterSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite FairySpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BirdSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite DragonSpriteGFX, 12, WALKING_SPRITE, PAL_OW_RED
+ overworld_sprite BigOnixSpriteGFX, 12, STANDING_SPRITE, PAL_OW_BROWN
+ overworld_sprite N64SpriteGFX, 4, STILL_SPRITE, PAL_OW_BROWN
+ overworld_sprite SudowoodoSpriteGFX, 12, STANDING_SPRITE, PAL_OW_GREEN
+ overworld_sprite SurfSpriteGFX, 12, WALKING_SPRITE, PAL_OW_BLUE
+ overworld_sprite PokeBallSpriteGFX, 4, STILL_SPRITE, PAL_OW_RED
+ overworld_sprite PokedexSpriteGFX, 4, STILL_SPRITE, PAL_OW_BROWN
+ overworld_sprite PaperSpriteGFX, 4, STILL_SPRITE, PAL_OW_BLUE
+ overworld_sprite VirtualBoySpriteGFX, 4, STILL_SPRITE, PAL_OW_RED
+ overworld_sprite OldLinkReceptionistSpriteGFX, 12, STANDING_SPRITE, PAL_OW_RED
+ overworld_sprite RockSpriteGFX, 4, STILL_SPRITE, PAL_OW_ROCK
+ overworld_sprite BoulderSpriteGFX, 4, STILL_SPRITE, PAL_OW_ROCK
+ overworld_sprite SnesSpriteGFX, 4, STILL_SPRITE, PAL_OW_BLUE
+ overworld_sprite FamicomSpriteGFX, 4, STILL_SPRITE, PAL_OW_RED
+ overworld_sprite FruitTreeSpriteGFX, 4, STILL_SPRITE, PAL_OW_TREE
+ overworld_sprite GoldTrophySpriteGFX, 4, STILL_SPRITE, PAL_OW_BROWN
+ overworld_sprite SilverTrophySpriteGFX, 4, STILL_SPRITE, PAL_OW_SILVER
diff --git a/data/stadium/stadium_gold.bin b/data/stadium/stadium_gold.bin
new file mode 100644
index 00000000..1b690363
--- /dev/null
+++ b/data/stadium/stadium_gold.bin
@@ -0,0 +1 @@
+N64PS3nZ[05iBuQ]0U`5Ѷ*LP%'gER^]@jtYiO8SXXxDT.*œ634V_U-N7KeR1ܦz)^@ K9{muŨbqG6_W*Y'.E)gyyYkiu%HKmB>Aa0ѥ扟&#\Rյ&U+y:;$i-C)=>Xʷi*=e/lYiAI_7by\j<^ar}ik쵩1rh:ДmԮ>7ᅂU% \ No newline at end of file
diff --git a/data/stadium/stadium_silver.bin b/data/stadium/stadium_silver.bin
new file mode 100644
index 00000000..7e092ab1
--- /dev/null
+++ b/data/stadium/stadium_silver.bin
@@ -0,0 +1,2 @@
+N64PS3yPZ1VB|<%v1Pe0-`5Ѷ*LP%'gE2^]@jtYԲi8$SX4Cd.h#V66Q2)whd˘%
+嗫eQ<p`$(z){^?Kr{muŨbG6_W*U'.C)gyyK)}%HKmB>Aa0ѥ扟&#\Rյ&U+y:;$i-C)=>Xʷi*=e/lYiAI_7by\j<^ar}ik쵩1rh"{Ԯ>7ᅂR \ No newline at end of file
diff --git a/data/text/battle.asm b/data/text/battle.asm
index a222cac5..58fad4a9 100755
--- a/data/text/battle.asm
+++ b/data/text/battle.asm
@@ -405,9 +405,8 @@ BecameConfusedText:
text "<TARGET>"
line "became confused!"
prompt
-; ItemHealedConfusion
-BattleText_ItemHealedConfusion: ; ItemHealedConfusion
+BattleText_ItemHealedConfusion:
text "A @"
text_ram wStringBuffer1
text " rid"
@@ -442,7 +441,7 @@ UsedBindText:
cont "<TARGET>!"
prompt
-WhirlpoolTrapText:
+WasTrappedText:
text "<TARGET>"
line "was trapped!"
prompt
@@ -806,7 +805,7 @@ SubFadedText:
line "SUBSTITUTE faded!"
prompt
-LearnedMoveText:
+MimicLearnedMoveText:
text "<USER>"
line "learned"
cont "@"
@@ -1072,7 +1071,7 @@ BeatUpAttackText:
line "attack!"
done
-CanReceiveGiftText:
+CantReceiveGiftText:
text "<TARGET> can't"
line "receive the gift!"
prompt
diff --git a/data/text/common_1.asm b/data/text/common_1.asm
index 40f4bb79..0bea4456 100755
--- a/data/text/common_1.asm
+++ b/data/text/common_1.asm
@@ -27,73 +27,73 @@ _NothingHereText::
line "here…"
done
-UnknownText_0x1bc0a2::
+_RecoveredSomeHPText::
text_ram wStringBuffer1
text_start
line "recovered @"
- text_decimal wLinkBuffer, 2, 3
+ text_decimal wCurHPAnimDeltaHP, 2, 3
text "HP!"
done
-UnknownText_0x1bc0bb::
+_CuredOfPoisonText::
text_ram wStringBuffer1
text "'s"
line "cured of poison."
done
-UnknownText_0x1bc0d2::
+_RidOfParalysisText::
text_ram wStringBuffer1
text "'s"
line "rid of paralysis."
done
-UnknownText_0x1bc0ea::
+_BurnWasHealedText::
text_ram wStringBuffer1
text "'s"
line "burn was healed."
done
-UnknownText_0x1bc101::
+_WasDefrostedText::
text_ram wStringBuffer1
text_start
line "was defrosted."
done
-UnknownText_0x1bc115::
+_WokeUpText::
text_ram wStringBuffer1
text_start
line "woke up."
done
-UnknownText_0x1bc123::
+_HealthReturnedText::
text_ram wStringBuffer1
text "'s"
line "health returned."
done
-UnknownText_0x1bc13a::
+_RevitalizedText::
text_ram wStringBuffer1
text_start
line "is revitalized."
done
-UnknownText_0x1bc14f::
+_GrewToLevelText::
text_ram wStringBuffer1
text " grew to"
line "level @"
text_decimal wCurPartyLevel, 1, 3
text "!@"
- sound_dex_fanfare_50_79
+ sound_dex_fanfare_50_79 ; plays SFX_DEX_FANFARE_50_79, identical to SFX_LEVEL_UP
text_promptbutton
- db "@"
+ text_end
-UnknownText_0x1bc16e::
+_CameToItsSensesText::
text_ram wStringBuffer1
text " came"
line "to its senses."
done
-UnknownText_0x1bc29c::
+_OakTimeWokeUpText::
text "<……><……><……><……><……><……>"
line "<……><……><……><……><……><……>"
@@ -104,52 +104,56 @@ UnknownText_0x1bc29c::
line "clock for me?"
prompt
-UnknownText_0x1bc2eb::
+_OakTimeWhatTimeIsItText::
text "What time is it?"
done
-UnknownText_0x1bc2fd::
- text "What?@@"
+_OakTimeWhatHoursText::
+ text "What?@"
+ text_end
+
+_OakTimeHoursQuestionMarkText::
text "?"
done
-UnknownText_0x1bc308::
+_OakTimeHowManyMinutesText::
text "How many minutes?"
done
-UnknownText_0x1bc31b::
- text "Whoa!@@"
+_OakTimeWhoaMinutesText::
+ text "Whoa!@"
+ text_end
-UnknownText_0x1bc323::
+_OakTimeMinutesQuestionMarkText::
text "?"
done
-UnknownText_0x1bc326::
+_OakTimeOversleptText::
text "!"
line "I overslept!"
done
-UnknownText_0x1bc336::
+_OakTimeYikesText::
text "!"
line "Yikes! I over-"
cont "slept!"
done
-UnknownText_0x1bc34f::
+_OakTimeSoDarkText::
text "!"
line "No wonder it's so"
cont "dark!"
done
-UnknownText_0x1bc369::
+_OakTimeWhatDayIsItText::
text "What day is it?"
done
-UnknownText_0x1bc37a::
+_OakTimeIsItText::
text ", is it?"
done
-Text_EnemyWithdrew::
+_EnemyWithdrewText::
text "<ENEMY>"
line "withdrew"
cont "@"
@@ -157,7 +161,7 @@ Text_EnemyWithdrew::
text "!"
prompt
-Text_EnemyUsedOn::
+_EnemyUsedOnText::
text "<ENEMY>"
line "used @"
text_ram wMonOrItemNameBuffer
@@ -223,7 +227,7 @@ Text_BreedingIsNotPossible::
UnknownText_0x1bd0d8::
text "The compatibility"
line "is @"
- text_decimal wTempNumBuffer, 1, 3
+ text_decimal wBreedingCompatibility, 1, 3
text "."
cont "Should they breed?"
done
@@ -280,41 +284,41 @@ UnknownText_0x1bc45e::
line "amount."
done
-UnknownText_0x1bc471::
+_NothingToChooseText::
text "There's nothing to"
line "choose."
prompt
-UnknownText_0x1bc48c::
+_WhichSidePutOnText::
text "Which side do you"
line "want to put it on?"
done
-UnknownText_0x1bc4b2::
+_WhichSidePutAwayText::
text "Which side do you"
line "want to put away?"
done
-UnknownText_0x1bc4d7::
+_PutAwayTheDecoText::
text "Put away the"
line "@"
text_ram wStringBuffer3
text "."
prompt
-UnknownText_0x1bc4ec::
+_NothingToPutAwayText::
text "There's nothing to"
line "put away."
prompt
-UnknownText_0x1bc509::
+_SetUpTheDecoText::
text "Set up the"
line "@"
text_ram wStringBuffer3
text "."
prompt
-UnknownText_0x1bc51c::
+_PutAwayAndSetUpText::
text "Put away the"
line "@"
text_ram wStringBuffer3
@@ -326,74 +330,74 @@ UnknownText_0x1bc51c::
text "."
prompt
-UnknownText_0x1bc546::
+_AlreadySetUpText::
text "That's already set"
line "up."
prompt
-UnknownText_0x1bc55d::
+_LookTownMapText::
text "It's the TOWN MAP."
done
-UnknownText_0x1bc570::
+_LookPikachuPosterText::
text "It's a poster of a"
line "cute PIKACHU."
done
-UnknownText_0x1bc591::
+_LookClefairyPosterText::
text "It's a poster of a"
line "cute CLEFAIRY."
done
-UnknownText_0x1bc5b3::
+_LookJigglypuffPosterText::
text "It's a poster of a"
line "cute JIGGLYPUFF."
done
-UnknownText_0x1bc5d7::
+_LookAdorableDecoText::
text "It's an adorable"
line "@"
text_ram wStringBuffer3
text "."
done
-UnknownText_0x1bc5ef::
+_LookGiantDecoText::
text "A giant doll! It's"
line "fluffy and cuddly."
done
-UnknownText_0x1bc615::
+_MomHiHowAreYouText::
text "Hi, <PLAYER>!"
line "How are you?"
prompt
-UnknownText_0x1bc62a::
+_MomFoundAnItemText::
text "I found a useful"
line "item shopping, so"
prompt
-UnknownText_0x1bc64e::
+_MomBoughtWithYourMoneyText::
text "I bought it with"
line "your money. Sorry!"
prompt
-UnknownText_0x1bc673::
+_MomItsInPCText::
text "It's in your PC."
line "You'll like it!"
done
-UnknownText_0x1bc693::
+_MomFoundADollText::
text "While shopping"
line "today, I saw this"
cont "adorable doll, so"
prompt
-UnknownText_0x1bc6c7::
+_MomItsInYourRoomText::
text "It's in your room."
line "You'll love it!"
done
-UnknownText_0x1bc6e9::
+_MonWasSentToText::
text_ram wPlayerTrademonSpeciesName
text " was"
line "sent to @"
@@ -401,29 +405,29 @@ UnknownText_0x1bc6e9::
text "."
done
-UnknownText_0x1bc701::
+_MonNameSentToText::
text_start
done
-UnknownText_0x1bc703::
+_BidsFarewellToMonText::
text_ram wOTTrademonSenderName
text " bids"
line "farewell to"
done
-UnknownText_0x1bc719::
+_MonNameBidsFarewellText::
text_ram wOTTrademonSpeciesName
text "."
done
-UnknownText_0x1bc71f::
+_TakeGoodCareOfMonText::
text "Take good care of"
line "@"
text_ram wOTTrademonSpeciesName
text "."
done
-UnknownText_0x1bc739::
+_ForYourMonSendsText::
text "For @"
text_ram wPlayerTrademonSenderName
text "'s"
@@ -432,7 +436,7 @@ UnknownText_0x1bc739::
text ","
done
-UnknownText_0x1bc74c::
+_OTSendsText::
text_ram wOTTrademonSenderName
text " sends"
line "@"
@@ -440,14 +444,16 @@ UnknownText_0x1bc74c::
text "."
done
-UnknownText_0x1bc75e::
+_WillTradeText::
text_ram wOTTrademonSenderName
text " will"
line "trade @"
text_ram wOTTrademonSpeciesName
- db "@@"
+ text_end
+
+ text_end ; unused
-UnknownText_0x1bc774::
+_ForYourMonWillTradeText::
text "for @"
text_ram wPlayerTrademonSenderName
text "'s"
@@ -477,7 +483,9 @@ _OPT_OakText1::
text_start
line "OAK: @"
text_ram wMonOrItemNameBuffer
- db "@@"
+ text_end
+
+ text_end ; unused
_OPT_OakText2::
text_start
@@ -498,162 +506,162 @@ _OPT_MaryText1::
text "'s"
done
-OPT_SweetAdorably::
+_OPT_SweetAdorablyText::
text_start
line "sweet and adorably"
done
-OPT_WigglySlickly::
+_OPT_WigglySlicklyText::
text_start
line "wiggly and slickly"
done
-OPT_AptlyNamed::
+_OPT_AptlyNamedText::
text_start
line "aptly named and"
done
-OPT_UndeniablyKindOf::
+_OPT_UndeniablyKindOfText::
text_start
line "undeniably kind of"
done
-OPT_Unbearably::
+_OPT_UnbearablyText::
text_start
line "so, so unbearably"
done
-OPT_WowImpressively::
+_OPT_WowImpressivelyText::
text_start
line "wow, impressively"
done
-OPT_AlmostPoisonously::
+_OPT_AlmostPoisonouslyText::
text_start
line "almost poisonously"
done
-OPT_Sensually::
+_OPT_SensuallyText::
text_start
line "ooh, so sensually"
done
-OPT_Mischievously::
+_OPT_MischievouslyText::
text_start
line "so mischievously"
done
-OPT_Topically::
+_OPT_TopicallyText::
text_start
line "so very topically"
done
-OPT_Addictively::
+_OPT_AddictivelyText::
text_start
line "sure addictively"
done
-OPT_LooksInWater::
+_OPT_LooksInWaterText::
text_start
line "looks in water is"
done
-OPT_EvolutionMustBe::
+_OPT_EvolutionMustBeText::
text_start
line "evolution must be"
done
-OPT_Provocatively::
+_OPT_ProvocativelyText::
text_start
line "provocatively"
done
-OPT_FlippedOut::
+_OPT_FlippedOutText::
text_start
line "so flipped out and"
done
-OPT_HeartMeltingly::
+_OPT_HeartMeltinglyText::
text_start
line "heart-meltingly"
done
-OPT_Cute::
+_OPT_CuteText::
text_start
line "cute."
done
-OPT_Weird::
+_OPT_WeirdText::
text_start
line "weird."
done
-OPT_Pleasant::
+_OPT_PleasantText::
text_start
line "pleasant."
done
-OPT_BoldSortOf::
+_OPT_BoldSortOfText::
text_start
line "bold, sort of."
done
-OPT_Frightening::
+_OPT_FrighteningText::
text_start
line "frightening."
done
-OPT_SuaveDebonair::
+_OPT_SuaveDebonairText::
text_start
line "suave & debonair!"
done
-OPT_Powerful::
+_OPT_PowerfulText::
text_start
line "powerful."
done
-OPT_Exciting::
+_OPT_ExcitingText::
text_start
line "exciting."
done
-OPT_Groovy::
+_OPT_NowText::
text_start
line "now!"
done
-OPT_Inspiring::
+_OPT_InspiringText::
text_start
line "inspiring."
done
-OPT_Friendly::
+_OPT_FriendlyText::
text_start
line "friendly."
done
-OPT_HotHotHot::
+_OPT_HotHotHotText::
text_start
line "hot, hot, hot!"
done
-OPT_Stimulating::
+_OPT_StimulatingText::
text_start
line "stimulating."
done
-OPT_Guarded::
+_OPT_GuardedText::
text_start
line "guarded."
done
-OPT_Lovely::
+_OPT_LovelyText::
text_start
line "lovely."
done
-OPT_Speedy::
+_OPT_SpeedyText::
text_start
line "speedy."
done
@@ -666,7 +674,7 @@ _PokedexShowText::
text_start
line "@"
text_ram wStringBuffer1
- db "@"
+ text_end
; Pokémon Music Channel / Pokémusic
@@ -815,84 +823,86 @@ _PnP_Text4::
text_ram wStringBuffer2
text " @"
text_ram wStringBuffer1
- db "@@"
+ text_end
-_PnP_cute::
+ text_end ; unused
+
+_PnP_CuteText::
text_start
line "is cute."
done
-_PnP_lazy::
+_PnP_LazyText::
text_start
line "is sort of lazy."
done
-_PnP_happy::
+_PnP_HappyText::
text_start
line "is always happy."
done
-_PnP_noisy::
+_PnP_NoisyText::
text_start
line "is quite noisy."
done
-_PnP_precocious::
+_PnP_PrecociousText::
text_start
line "is precocious."
done
-_PnP_bold::
+_PnP_BoldText::
text_start
line "is somewhat bold."
done
-_PnP_picky::
+_PnP_PickyText::
text_start
line "is too picky!"
done
-_PnP_sortofok::
+_PnP_SortOfOKText::
text_start
line "is sort of OK."
done
-_PnP_soso::
+_PnP_SoSoText::
text_start
line "is just so-so."
done
-_PnP_great::
+_PnP_GreatText::
text_start
line "is actually great."
done
-_PnP_mytype::
+_PnP_MyTypeText::
text_start
line "is just my type."
done
-_PnP_cool::
+_PnP_CoolText::
text_start
line "is so cool, no?"
done
-_PnP_inspiring::
+_PnP_InspiringText::
text_start
line "is inspiring!"
done
-_PnP_weird::
+_PnP_WeirdText::
text_start
line "is kind of weird."
done
-_PnP_rightforme::
+_PnP_RightForMeText::
text_start
line "is right for me?"
done
-_PnP_odd::
+_PnP_OddText::
text_start
line "is definitely odd!"
done
@@ -901,7 +911,9 @@ _PnP_Text5::
text_start
line "@"
text_ram wStringBuffer1
- db "@@"
+ text_end
+
+ text_end ; unused
_RocketRadioText1::
text_start
@@ -961,7 +973,7 @@ _RocketRadioText10::
text "Is he listening?"
done
-UnknownText_0x1bd2bc::
+_AskFloorElevatorText::
text "Which floor?"
done
@@ -993,7 +1005,7 @@ _ButNoSpaceText::
line "no space left…"
done
-UnknownText_0x1bd34b::
+_JustSawSomeRareMonText::
text "I just saw some"
line "rare @"
text_ram wStringBuffer1
@@ -1007,12 +1019,12 @@ UnknownText_0x1bd34b::
cont "#MON, OK?"
prompt
-UnknownText_0x1bd39e::
+_SavingRecordText::
text "SAVING RECORD…"
line "DON'T TURN OFF!"
done
-ReceivedMysteryGiftText_::
+_ReceiveItemText::
text_ram wPlayerName
text " received"
line "@"
@@ -1020,37 +1032,38 @@ ReceivedMysteryGiftText_::
text "!@"
sound_item
text_promptbutton
- db "@"
+ text_end
-NoCoinsText_::
+_NoCoinsText::
text "You have no coins."
prompt
-NoCoinCaseText_::
+_NoCoinCaseText::
text "You don't have a"
line "COIN CASE."
prompt
-UnknownText_0x1bd407::
+_NPCTradeCableText::
text "OK, connect the"
line "Game Link Cable."
prompt
-UnknownText_0x1bd429::
+Text_NPCTraded::
text "<PLAYER> traded"
line "@"
text_ram wStringBuffer2
text " for"
cont "@"
text_ram wMonOrItemNameBuffer
- text ".@@"
+ text ".@"
+ text_end
-UnknownText_0x1bd445::
+_NPCTradeFanfareText::
sound_dex_fanfare_80_109
text_pause
- db "@"
+ text_end
-UnknownText_0x1bd449::
+_NPCTradeIntroText1::
text "I collect #MON."
line "Do you have"
cont "@"
@@ -1063,12 +1076,12 @@ UnknownText_0x1bd449::
text "?"
done
-UnknownText_0x1bd48c::
+_NPCTradeCancelText1::
text "You don't want to"
line "trade? Aww…"
done
-UnknownText_0x1bd4aa::
+_NPCTradeWrongText1::
text "Huh? That's not"
line "@"
text_ram wStringBuffer1
@@ -1076,7 +1089,7 @@ UnknownText_0x1bd4aa::
cont "What a letdown…"
done
-UnknownText_0x1bd4d2::
+_NPCTradeCompleteText1::
text "Yay! I got myself"
line "@"
text_ram wStringBuffer1
@@ -1084,14 +1097,14 @@ UnknownText_0x1bd4d2::
cont "Thanks!"
done
-UnknownText_0x1bd4f4::
+_NPCTradeAfterText1::
text "Hi, how's my old"
line "@"
text_ram wStringBuffer2
text " doing?"
done
-UnknownText_0x1bd512::
+_NPCTradeIntroText2::
text "Hi, I'm looking"
line "for this #MON."
@@ -1106,7 +1119,7 @@ UnknownText_0x1bd512::
text "?"
done
-UnknownText_0x1bd565::
+_NPCTradeCancelText2::
text "You don't have"
line "one either?"
@@ -1114,7 +1127,7 @@ UnknownText_0x1bd565::
line "disappointing…"
done
-UnknownText_0x1bd5a1::
+_NPCTradeWrongText2::
text "You don't have"
line "@"
text_ram wStringBuffer1
@@ -1122,7 +1135,7 @@ UnknownText_0x1bd5a1::
cont "too bad, then."
done
-UnknownText_0x1bd5cc::
+_NPCTradeCompleteText2::
text "Great! Thank you!"
para "I finally got"
@@ -1131,7 +1144,7 @@ UnknownText_0x1bd5cc::
text "."
done
-UnknownText_0x1bd5f4::
+_NPCTradeAfterText2::
text "Hi! The @"
text_ram wMonOrItemNameBuffer
text_start
@@ -1139,7 +1152,7 @@ UnknownText_0x1bd5f4::
cont "doing great!"
done
-UnknownText_0x1bd621::
+_NPCTradeIntroText3::
text_ram wMonOrItemNameBuffer
text "'s cute,"
line "but I don't have"
@@ -1155,12 +1168,12 @@ UnknownText_0x1bd621::
text "?"
done
-UnknownText_0x1bd673::
+_NPCTradeCancelText3::
text "You don't want to"
line "trade? Oh, darn…"
done
-UnknownText_0x1bd696::
+_NPCTradeWrongText3::
text "That's not"
line "@"
text_ram wStringBuffer1
@@ -1170,7 +1183,7 @@ UnknownText_0x1bd696::
line "me if you get one."
done
-UnknownText_0x1bd6cd::
+_NPCTradeCompleteText3::
text "Wow! Thank you!"
line "I always wanted"
cont "@"
@@ -1178,7 +1191,7 @@ UnknownText_0x1bd6cd::
text "!"
done
-UnknownText_0x1bd6f5::
+_NPCTradeAfterText3::
text "How is that"
line "@"
text_ram wStringBuffer2
@@ -1191,7 +1204,7 @@ UnknownText_0x1bd6f5::
line "so cute!"
done
-UnknownText_0x1bd77f::
+_MomLeavingText1::
text "Wow, that's a cute"
line "#MON."
@@ -1219,14 +1232,14 @@ UnknownText_0x1bd77f::
line "save your money?"
done
-UnknownText_0x1bd868::
+_MomLeavingText2::
text "OK, I'll take care"
line "of your money."
para "<……><……><……>"
prompt
-UnknownText_0x1bd88e::
+_MomLeavingText3::
text "Be careful."
para "#MON are your"
@@ -1236,7 +1249,7 @@ UnknownText_0x1bd88e::
para "Now, go on!"
done
-UnknownText_0x1bd8da::
+_MomIsThisAboutYourMoneyText::
text "Hi! Welcome home!"
line "You're trying very"
cont "hard, I see."
@@ -1248,47 +1261,47 @@ UnknownText_0x1bd8da::
line "your money?"
done
-UnknownText_0x1bd942::
+_MomBankWhatDoYouWantToDoText::
text "What do you want"
line "to do?"
done
-UnknownText_0x1bd95b::
+_MomStoreMoneyText::
text "How much do you"
line "want to save?"
done
-UnknownText_0x1bd97a::
+_MomTakeMoneyText::
text "How much do you"
line "want to take?"
done
-UnknownText_0x1bd999::
+_MomSaveMoneyText::
text "Do you want to"
line "save some money?"
done
-UnknownText_0x1bd9ba::
+_MomHaventSavedThatMuchText::
text "You haven't saved"
line "that much."
prompt
-UnknownText_0x1bd9d7::
+_MomNotEnoughRoomInWalletText::
text "You can't take"
line "that much."
prompt
-UnknownText_0x1bd9f1::
+_MomInsufficientFundsInWalletText::
text "You don't have"
line "that much."
prompt
-UnknownText_0x1bda0b::
+_MomNotEnoughRoomInBankText::
text "You can't save"
line "that much."
prompt
-UnknownText_0x1bda25::
+_MomStartSavingMoneyText::
text "OK, I'll save your"
line "money. Trust me!"
@@ -1296,17 +1309,17 @@ UnknownText_0x1bda25::
line "with it!"
done
-UnknownText_0x1bda5b::
+_MomStoredMoneyText::
text "Your money's safe"
line "here! Get going!"
done
-UnknownText_0x1bda7e::
+_MomTakenMoneyText::
text "<PLAYER>, don't"
line "give up!"
done
-UnknownText_0x1bda90::
+_MomJustDoWhatYouCanText::
text "Just do what"
line "you can."
done
@@ -1377,7 +1390,7 @@ _OnlyOneMonText::
line "just one #MON."
prompt
-_CantRaiseEggText::
+_CantAcceptEggText::
text "Sorry, but I can't"
line "accept an EGG."
prompt
@@ -1461,7 +1474,7 @@ _HaveNoRoomText::
line "for it."
prompt
-_DCNotEnoughMoneyText::
+_NotEnoughMoneyText::
text "You don't have"
line "enough money."
prompt
@@ -1507,7 +1520,7 @@ _TakeGoodCareOfEggText::
line "it."
done
-_RefuseEggText::
+_IllKeepItThanksText::
text "Well then, I'll"
line "keep it. Thanks!"
done
@@ -1518,28 +1531,28 @@ _NoRoomForEggText::
cont "Come back later."
done
-UnknownText_0x1be024::
+_WhichMonPhotoText::
text "Which #MON"
line "should I photo-"
cont "graph?"
prompt
-UnknownText_0x1be047::
+_HoldStillText::
text "All righty. Hold"
line "still for a bit."
prompt
-UnknownText_0x1be06a::
+_PrestoAllDoneText::
text "Presto! All done."
line "Come again, OK?"
done
-UnknownText_0x1c0000::
+_NoPhotoText::
text "Oh, no picture?"
line "Come again, OK?"
done
-UnknownText_0x1c0021::
+_EggPhotoText::
text "An EGG? My talent"
line "is worth more…"
done
@@ -1633,7 +1646,7 @@ Text_Gained::
text_ram wStringBuffer1
text " gained@@"
-Text_ABoostedStringBuffer2ExpPoints::
+_BoostedExpPointsText::
text_start
line "a boosted"
cont "@"
@@ -1641,7 +1654,7 @@ Text_ABoostedStringBuffer2ExpPoints::
text " EXP. Points!"
prompt
-Text_StringBuffer2ExpPoints::
+_ExpPointsText::
text_start
line "@"
text_decimal wStringBuffer2, 2, 4
@@ -1674,44 +1687,46 @@ Text_YourFoesWeakGetmMon::
text "!"
done
-Text_ThatsEnoughComeBack::
+Text_BattleMonNickComma::
text_ram wBattleMonNick
text ",@@"
+
+_ThatsEnoughComeBackText::
text " that's"
line "enough! Come back!"
done
-Text_OKComeBack::
+_OKComeBackText::
text " OK!"
line "Come back!"
done
-Text_GoodComeBack::
+_GoodComeBackText::
text " good!"
line "Come back!"
done
-Text_ComeBack::
+_ComeBackText::
text " come"
line "back!"
done
-BattleText_PlayerPickedUpPayDayMoney:
+_PlayerPickedUpPayDayMoney::
text "<PLAYER> picked up"
line "¥@"
text_decimal wPayDayMoney, 3, 6
text "!"
prompt
-UnknownText_0x1c0373::
+_BootedTMText::
text "Booted up a TM."
prompt
-UnknownText_0x1c0384::
+_BootedHMText::
text "Booted up an HM."
prompt
-UnknownText_0x1c0396::
+_ContainedMoveText::
text "It contained"
line "@"
text_ram wStringBuffer2
@@ -1723,7 +1738,7 @@ UnknownText_0x1c0396::
line "to a #MON?"
done
-UnknownText_0x1c03c2::
+_TMHMNotCompatibleText::
text_ram wStringBuffer2
text " is"
line "not compatible"
@@ -1737,7 +1752,7 @@ UnknownText_0x1c03c2::
text "."
prompt
-UnknownText_0x1c03fa::
+_NoRoomTMHMText::
text "You have no room"
line "for any more"
cont "@"
@@ -1745,44 +1760,44 @@ UnknownText_0x1c03fa::
text "S."
prompt
-UnknownText_0x1c0421::
+_ReceivedTMHMText::
text "You received"
line "@"
text_ram wStringBuffer1
text "!"
prompt
-UnknownText_0x1c0436::
+_MysteryGiftCanceledText::
text "The link has been"
line "cancelled."
prompt
-UnknownText_0x1c0454::
+_MysteryGiftCommErrorText::
text "Communication"
line "error."
prompt
-UnknownText_0x1c046a::
+_RetrieveMysteryGiftText::
text "Must retrieve GIFT"
line "at #MON CENTER."
prompt
-UnknownText_0x1c048e::
+_YourFriendIsNotReadyText::
text "Your friend isn't"
line "ready."
prompt
-UnknownText_0x1c04a7::
+_MysteryGiftFiveADayText::
text "Sorry--only five"
line "GIFTS a day."
prompt
-UnknownText_0x1c04c6::
+_MysteryGiftOneADayText::
text "Sorry. One GIFT"
line "a day per person."
prompt
-UnknownText_0x1c04e9::
+_MysteryGiftSentText::
text_ram wMysteryGiftPartnerName
text " sent"
line "@"
@@ -1790,7 +1805,7 @@ UnknownText_0x1c04e9::
text "."
prompt
-UnknownText_0x1c04fa::
+_MysteryGiftSentHomeText::
text_ram wMysteryGiftPartnerName
text " sent"
line "@"
@@ -1801,35 +1816,35 @@ UnknownText_0x1c04fa::
text "'s home."
prompt
-BadgeRequiredText_::
+_BadgeRequiredText::
text "Sorry! A new BADGE"
line "is required."
prompt
-CantUseFieldMoveHereText_::
+_CantUseItemText::
text "Can't use that"
line "here."
prompt
-Text_UsedCut_::
+_UseCutText::
text_ram wStringBuffer2
text " used"
line "CUT!"
prompt
-Text_NothingToCut_::
+_CutNothingText::
text "There's nothing to"
line "CUT here."
prompt
-Text_UsedFlash_::
+_BlindingFlashText::
text "A blinding FLASH"
line "lights the area!@"
text_promptbutton
db "@@"
-UsedSurfText_::
+_UsedSurfText::
text_ram wStringBuffer2
text " used"
line "SURF!"
- done \ No newline at end of file
+ done
diff --git a/data/text/common_2.asm b/data/text/common_2.asm
index c8b243be..931605fd 100644
--- a/data/text/common_2.asm
+++ b/data/text/common_2.asm
@@ -1,80 +1,80 @@
-CantSurfText_::
+_CantSurfText::
text "You can't SURF"
line "here."
prompt
-AlreadySurfingText_::
+_AlreadySurfingText::
text "You're already"
line "SURFING."
prompt
-AskSurfText_::
+_AskSurfText::
text "The water is calm."
line "Want to SURF?"
done
-Text_UsedWaterfall_::
+_UseWaterfallText::
text_ram wStringBuffer2
text " used"
line "WATERFALL!"
done
-Text_CantDoWaterfall_::
+_HugeWaterfallText::
text "Wow, it's a huge"
line "waterfall."
done
-Text_AskUseWaterfall_::
+_AskWaterfallText::
text "Do you want to use"
line "WATERFALL?"
done
-Text_UsedDig_::
+_UseDigText::
text_ram wStringBuffer2
text " used"
line "DIG!"
done
-Text_UsedEscapeRope_::
+_UseEscapeRopeText::
text "<PLAYER> used an"
line "ESCAPE ROPE."
done
-Text_CantUseDigEscapeRopeHere_::
+_CantUseDigText::
text "Can't use that"
line "here."
done
-Text_ReturnToLastMonCenter_::
+_TeleportReturnText::
text "Return to the last"
line "#MON CENTER."
done
-Text_CantUseTeleportHere_::
+_CantUseTeleportText::
text "Can't use that"
line "here."
para ""
done
-Text_AlreadyUsingStrength_::
+_AlreadyUsingStrengthText::
text "A #MON is using"
line "STRENGTH already."
prompt
-Text_UsedStrength_::
+_UseStrengthText::
text_ram wStringBuffer2
text " used"
line "STRENGTH!"
done
-Text_AllowedToMoveBoulders_::
+_MoveBoulderText::
text_ram wStringBuffer1
text " can"
line "move boulders."
prompt
-Text_AskStrength_::
+_AskStrengthText::
text "A #MON may be"
line "able to move this."
@@ -82,23 +82,23 @@ Text_AskStrength_::
line "STRENGTH?"
done
-Text_BouldersMayNowBeMoved_::
+_BouldersMoveText::
text "Boulders may now"
line "be moved!"
done
-Text_MonMayBeAbleToMove_::
+_BouldersMayMoveText::
text "A #MON may be"
line "able to move this."
done
-Text_UsedWhirlpool_::
+_UseWhirlpoolText::
text_ram wStringBuffer2
text " used"
line "WHIRLPOOL!"
prompt
-Text_MightyWhirlpool_::
+_MayPassWhirlpoolText::
text "It's a vicious"
line "whirlpool!"
@@ -106,7 +106,7 @@ Text_MightyWhirlpool_::
line "able to pass it."
done
-Text_AskWhirlpool_::
+_AskWhirlpoolText::
text "A whirlpool is in"
line "the way."
@@ -114,17 +114,17 @@ Text_AskWhirlpool_::
line "WHIRLPOOL?"
done
-Text_DidAHeadbutt_::
+_UseHeadbuttText::
text_ram wStringBuffer2
text " did a"
line "HEADBUTT!"
prompt
-Text_NothingFromHeadbutt_::
+_HeadbuttNothingText::
text "Nope. Nothing…"
done
-Text_AskHeadbutt_::
+_AskHeadbuttText::
text "A #MON could be"
line "in this tree."
@@ -132,18 +132,18 @@ Text_AskHeadbutt_::
line "it?"
done
-Text_UsedRockSmash_::
+_UseRockSmashText::
text_ram wStringBuffer2
text " used"
line "ROCK SMASH!"
prompt
-Text_MayBeBreakable_::
+_MaySmashText::
text "A #MON may be"
line "able to break it."
done
-Text_AskRockSmash_::
+_AskRockSmashText::
text "This rock looks"
line "breakable."
@@ -151,47 +151,48 @@ Text_AskRockSmash_::
line "SMASH?"
done
-Text_OhABite_::
+_RodBiteText::
text "Oh!"
line "A bite!"
prompt
-Text_NotEvenANibble_::
+_RodNothingText::
text "Not even a nibble!"
prompt
-Text_NothingHereToFish_::
+; unused
+_UnusedNothingHereText::
text "Looks like there's"
line "nothing here."
prompt
-Text_CantGetOffBike_::
+_CantGetOffBikeText::
text "You can't get off"
line "here!"
done
-Text_GotOnTheBike_::
+_GotOnBikeText::
text "<PLAYER> got on the"
line "@"
text_ram wStringBuffer2
text "."
done
-Text_GotOffTheBike_::
+_GotOffBikeText::
text "<PLAYER> got off"
line "the @"
text_ram wStringBuffer2
text "."
done
-Text_AskCut_::
+_AskCutText::
text "This tree can be"
line "CUT!"
para "Want to use CUT?"
done
-Text_MonCanCutThis_::
+_CanCutText::
text "This tree can be"
line "CUT!"
done
@@ -209,7 +210,7 @@ _CantCarryItemText::
cont "items!"
done
-UnknownText_0x1c0a4e::
+_WhitedOutText::
text "<PLAYER> is out of"
line "useable #MON!"
@@ -217,24 +218,24 @@ UnknownText_0x1c0a4e::
line "out!"
done
-UnknownText_0x1c0a77::
+_ItemfinderItemNearbyText::
text "Yes! ITEMFINDER"
line "indicates there's"
cont "an item nearby."
prompt
-UnknownText_0x1c0aa9::
+_ItemfinderNopeText::
text "Nope! ITEMFINDER"
line "isn't responding."
prompt
-UnknownText_0x1c0acc::
+_PoisonFaintText::
text_ram wStringBuffer3
text_start
line "fainted!"
prompt
-UnknownText_0x1c0ada::
+_PoisonWhiteoutText::
text "<PLAYER> is out of"
line "useable #MON!"
@@ -242,18 +243,18 @@ UnknownText_0x1c0ada::
line "out!"
prompt
-UnknownText_0x1c0b03::
+_UseSweetScentText::
text_ram wStringBuffer3
text " used"
line "SWEET SCENT!"
done
-UnknownText_0x1c0b1a::
+_SweetScentNothingText::
text "Looks like there's"
line "nothing here…"
done
-UnknownText_0x1c0b3b::
+_SquirtbottleNothingText::
text "<PLAYER> sprinkled"
line "water."
@@ -261,26 +262,26 @@ UnknownText_0x1c0b3b::
line "happened…"
done
-UnknownText_0x1c0b65::
+_UseSacredAshText::
text "<PLAYER>'s #MON"
line "were all healed!"
done
-Text_AnEGGCantHoldAnItem::
+_AnEggCantHoldAnItemText::
text "An EGG can't hold"
line "an item."
prompt
-Text_PackNoItems_::
+_PackNoItemText::
text "No items."
done
-Text_ThrowAwayHowMany_::
+_AskThrowAwayText::
text "Throw away how"
line "many?"
done
-Text_ConfirmThrowAway_::
+_AskQuantityThrowAwayText::
text "Throw away @"
text_decimal wItemQuantityChangeBuffer, 1, 2
text_start
@@ -289,46 +290,46 @@ Text_ConfirmThrowAway_::
text "(S)?"
done
-Text_ThrewAway_::
+_ThrewAwayText::
text "Threw away"
line "@"
text_ram wStringBuffer2
text "(S)."
prompt
-Text_ThisIsntTheTime_::
+_OakThisIsntTheTimeText::
text "OAK: <PLAYER>!"
line "This isn't the"
cont "time to use that!"
prompt
-Text_YouDontHaveAMon::
+_YouDontHaveAMonText::
text "You don't have a"
line "#MON!"
prompt
-Text_RegisteredTheItem_::
+_RegisteredItemText::
text "Registered the"
line "@"
text_ram wStringBuffer2
text "."
prompt
-Text_CantRegisterThatItem_::
+_CantRegisterText::
text "You can't register"
line "that item."
prompt
-Text_MoveItemWhere_::
+_AskItemMoveText::
text "Where should this"
line "be moved to?"
done
-Text_PackEmptyString_::
+_PackEmptyText::
text_start
done
-Text_YouCantUseItInABattle::
+_YouCantUseItInABattleText::
text "You can't use it"
line "in a battle."
prompt
@@ -372,94 +373,100 @@ _EndUsedMove5Text::
text "!"
done
-UnknownText_0x1c0cc6::
+Text_BattleEffectActivate::
text "<USER>'s"
line "@"
text_ram wStringBuffer2
- db "@@"
+ text_end
+
+ text_end ; unused
-UnknownText_0x1c0cd0::
+_BattleStatWentWayUpText::
text_pause
text "<SCROLL>went way up!"
prompt
-UnknownText_0x1c0ce0::
+_BattleStatWentUpText::
text " went up!"
prompt
-UnknownText_0x1c0ceb::
+Text_BattleFoeEffectActivate::
text "<TARGET>'s"
line "@"
text_ram wStringBuffer2
- db "@@"
+ text_end
+
+ text_end ; unused
-UnknownText_0x1c0cf5::
+_BattleStatSharplyFellText::
text_pause
text "<SCROLL>sharply fell!"
prompt
-UnknownText_0x1c0d06::
+_BattleStatFellText::
text " fell!"
prompt
-UnknownText_0x1c0d0e::
- text "<USER>@@"
+Text_BattleUser::
+ text "<USER>@"
+ text_end
-UnknownText_0x1c0d12::
+_BattleMadeWhirlwindText::
text_start
line "made a whirlwind!"
prompt
-UnknownText_0x1c0d26::
+_BattleTookSunlightText::
text_start
line "took in sunlight!"
prompt
-UnknownText_0x1c0d3a::
+_BattleLoweredHeadText::
text_start
line "lowered its head!"
prompt
-UnknownText_0x1c0d4e::
+_BattleGlowingText::
text_start
line "is glowing!"
prompt
-UnknownText_0x1c0d5c::
+_BattleFlewText::
text_start
line "flew up high!"
prompt
-UnknownText_0x1c0d6c::
+_BattleDugText::
text_start
line "dug a hole!"
prompt
-UnknownText_0x1c0db0::
+Text_BreedHuh::
text "Huh?"
- para "@@"
+ para "@"
+ text_end
-UnknownText_0x1c0db8::
+_BreedClearboxText::
text_start
done
-UnknownText_0x1c0dba::
+_BreedEggHatchText::
text_ram wStringBuffer1
text " came"
line "out of its EGG!@"
sound_caught_mon
text_promptbutton
- db "@"
+ text_end
-UnknownText_0x1c0dd8::
+_BreedAskNicknameText::
text "Give a nickname to"
line "@"
text_ram wStringBuffer1
text "?"
done
-UnknownText_0x1c0df3::
+_LeftWithDayCareLadyText::
text "It's @"
text_ram wBreedMon2Nick
text_start
@@ -467,41 +474,41 @@ UnknownText_0x1c0df3::
cont "the DAY-CARE LADY."
done
-UnknownText_0x1c0e24::
+_LeftWithDayCareManText::
text "It's @"
- text_ram wDayCareMan + 1
+ text_ram wBreedMon1Nick
text_start
line "that was left with"
cont "the DAY-CARE MAN."
done
-UnknownText_0x1c0e54::
+_BreedBrimmingWithEnergyText::
text "It's brimming with"
line "energy."
prompt
-UnknownText_0x1c0e6f::
+_BreedNoInterestText::
text "It has no interest"
line "in @"
text_ram wStringBuffer1
text "."
prompt
-UnknownText_0x1c0e8d::
+_BreedAppearsToCareForText::
text "It appears to care"
line "for @"
text_ram wStringBuffer1
text "."
prompt
-UnknownText_0x1c0eac::
+_BreedFriendlyText::
text "It's friendly with"
line "@"
text_ram wStringBuffer1
text "."
prompt
-UnknownText_0x1c0ec6::
+_BreedShowsInterestText::
text "It shows interest"
line "in @"
text_ram wStringBuffer1
@@ -513,51 +520,51 @@ _EmptyMailboxText::
line "here."
prompt
-ClearedMailPutAwayText::
+_MailClearedPutAwayText::
text "The cleared MAIL"
line "was put away."
prompt
-MailPackFullText::
+_MailPackFullText::
text "The PACK is full."
prompt
-MailMessageLostText::
+_MailMessageLostText::
text "The MAIL's message"
line "will be lost. OK?"
done
-MailAlreadyHoldingItemText::
+_MailAlreadyHoldingItemText::
text "It's already hold-"
line "ing an item."
prompt
-MailEggText::
+_MailEggText::
text "An EGG can't hold"
line "any MAIL."
prompt
-MailMovedFromBoxText::
+_MailMovedFromBoxText::
text "The MAIL was moved"
line "from the MAILBOX."
prompt
-Text_WasSentToBillsPC::
+_WasSentToBillsPCText::
text_ram wStringBuffer1
text " was"
line "sent to BILL's PC."
prompt
-Text_GottaHavePokemon_::
+_PCGottaHavePokemonText::
text "You gotta have"
line "#MON to call!"
prompt
-Text_BillsPCWhat_::
+_PCWhatText::
text "What?"
done
-Text_PleaseRemoveMailBeforeMovePkmnWOMail_::
+_PCMonHoldingMailText::
text "There is a #MON"
line "holding MAIL."
@@ -565,39 +572,39 @@ Text_PleaseRemoveMailBeforeMovePkmnWOMail_::
line "MAIL."
prompt
-Text_YouDontHaveASinglePokemon_::
+_PCNoSingleMonText::
text "You don't have a"
line "single #MON!"
prompt
-Text_ItsYourLastPokemon_::
+_PCCantDepositLastMonText::
text "You can't deposit"
line "your last #MON!"
prompt
-Text_CantTakeAnyMorePokemon_::
+_PCCantTakeText::
text "You can't take any"
line "more #MON."
prompt
-Text_CaughtBugMon_::
+_ContestCaughtMonText::
text "Caught @"
text_ram wStringBuffer1
text "!"
prompt
-UnknownText_0x1c10cf::
+_ContestAskSwitchText::
text "Switch #MON?"
done
-UnknownText_0x1c10dd::
+_ContestAlreadyCaughtText::
text "You already caught"
line "a @"
text_ram wStringBuffer1
text "."
prompt
-ContestJudging_FirstPlaceText::
+_ContestJudging_FirstPlaceText::
text "This Bug-Catching"
line "Contest winner is@"
text_pause
@@ -609,9 +616,10 @@ ContestJudging_FirstPlaceText::
line "who caught a"
cont "@"
text_ram wStringBuffer1
- text "!@@"
+ text "!@"
+ text_end
-ContestJudging_FirstPlaceScoreText::
+_ContestJudging_FirstPlaceScoreText::
text_start
para "The winning score"
@@ -620,7 +628,7 @@ ContestJudging_FirstPlaceScoreText::
text " points!"
prompt
-ContestJudging_SecondPlaceText::
+_ContestJudging_SecondPlaceText::
text "Placing second was"
line "@"
text_ram wBugContestWinnerName
@@ -629,9 +637,10 @@ ContestJudging_SecondPlaceText::
para "who caught a"
line "@"
text_ram wStringBuffer1
- text "!@@"
+ text "!@"
+ text_end
-ContestJudging_SecondPlaceScoreText::
+_ContestJudging_SecondPlaceScoreText::
text_start
para "The score was"
@@ -640,7 +649,7 @@ ContestJudging_SecondPlaceScoreText::
text " points!"
prompt
-ContestJudging_ThirdPlaceText::
+_ContestJudging_ThirdPlaceText::
text "Placing third was"
line "@"
text_ram wBugContestWinnerName
@@ -649,9 +658,10 @@ ContestJudging_ThirdPlaceText::
para "who caught a"
line "@"
text_ram wStringBuffer1
- text "!@@"
+ text "!@"
+ text_end
-ContestJudging_ThirdPlaceScoreText::
+_ContestJudging_ThirdPlaceScoreText::
text_start
para "The score was"
@@ -660,7 +670,7 @@ ContestJudging_ThirdPlaceScoreText::
text " points!"
prompt
-UnknownText_0x1c1203::
+_MagikarpGuruMeasureText::
text "Let me measure"
line "that MAGIKARP."
@@ -670,7 +680,7 @@ UnknownText_0x1c1203::
text "."
prompt
-UnknownText_0x1c123a::
+_KarpGuruRecordText::
text "CURRENT RECORD"
para "@"
@@ -679,9 +689,9 @@ UnknownText_0x1c123a::
line "@"
text_ram wMagikarpRecordHoldersName
text_promptbutton
- db "@"
+ text_end
-UnknownText_0x1c1261::
+_LuckyNumberMatchPartyText::
text "Congratulations!"
para "We have a match"
@@ -693,7 +703,7 @@ UnknownText_0x1c1261::
line "your party."
prompt
-UnknownText_0x1c12ae::
+_LuckyNumberMatchPCText::
text "Congratulations!"
para "We have a match"
@@ -705,7 +715,7 @@ UnknownText_0x1c12ae::
line "your PC BOX."
prompt
-UnknownText_0x1c12fc::
+_CaughtAskNicknameText::
text "Give a nickname to"
line "the @"
text_ram wStringBuffer1
@@ -713,18 +723,18 @@ UnknownText_0x1c12fc::
cont "received?"
done
-UnknownText_0x1c1328::
+_PokecenterPCCantUseText::
text "Bzzzzt! You must"
line "have a #MON to"
cont "use this!"
prompt
-UnknownText_0x1c1353::
+_PlayersPCTurnOnText::
text "<PLAYER> turned on"
line "the PC."
prompt
-UnknownText_0x1c1368::
+_PlayersPCAskWhatDoText::
text "What do you want"
line "to do?"
done
@@ -748,7 +758,7 @@ _PlayersPCNoRoomWithdrawText::
line "for more items."
prompt
-UnknownText_0x1c13df::
+_PlayersPCNoItemsText::
text "No items here!"
prompt
@@ -771,16 +781,16 @@ _PlayersPCNoRoomDepositText::
line "store items."
prompt
-UnknownText_0x1c144d::
+_PokecenterPCTurnOnText::
text "<PLAYER> turned on"
line "the PC."
prompt
-UnknownText_0x1c1462::
+_PokecenterPCWhoseText::
text "Access whose PC?"
done
-UnknownText_0x1c1474::
+_PokecenterBillsPCText::
text "BILL's PC"
line "accessed."
@@ -788,14 +798,14 @@ UnknownText_0x1c1474::
line "System opened."
prompt
-UnknownText_0x1c14a4::
+_PokecenterPlayersPCText::
text "Accessed own PC."
para "Item Storage"
line "System opened."
prompt
-UnknownText_0x1c14d2::
+_PokecenterOaksPCText::
text "PROF.OAK's PC"
line "accessed."
@@ -803,7 +813,7 @@ UnknownText_0x1c14d2::
line "System opened."
prompt
-UnknownText_0x1c1505::
+_PokecenterPCOaksClosedText::
text "…"
line "Link closed…"
done
@@ -973,27 +983,27 @@ _OakPCText4::
line "OAK's PC closed."
done
-UnknownText_0x1c1a5b::
+_DummyGameYeahText::
text " , yeah!"
done
-UnknownText_0x1c1a65::
+_DummyGameDarnText::
text "Darn…"
done
-UnknownText_0x1c1a6c::
+_StartMenuContestEndText::
text "Would you like to"
line "end the Contest?"
done
-UnknownText_0x1c1a90::
+_ItemsTossOutHowManyText::
text "Toss out how many"
line "@"
text_ram wStringBuffer2
text "(S)?"
done
-UnknownText_0x1c1aad::
+_ItemsThrowAwayText::
text "Throw away @"
text_decimal wItemQuantityChangeBuffer, 1, 2
text_start
@@ -1002,25 +1012,25 @@ UnknownText_0x1c1aad::
text "(S)?"
done
-UnknownText_0x1c1aca::
+_ItemsDiscardedText::
text "Discarded"
line "@"
text_ram wStringBuffer1
text "(S)."
prompt
-UnknownText_0x1c1adf::
+_ItemsTooImportantText::
text "That's too impor-"
line "tant to toss out!"
prompt
-UnknownText_0x1c1b03::
+_ItemsOakWarningText::
text "OAK: <PLAYER>!"
line "This isn't the"
cont "time to use that!"
done
-UnknownText_0x1c1b2c::
+_PokemonSwapItemText::
text "Took @"
text_ram wMonOrItemNameBuffer
text "'s"
@@ -1034,7 +1044,7 @@ UnknownText_0x1c1b2c::
text "."
prompt
-UnknownText_0x1c1b57::
+_PokemonHoldItemText::
text "Made @"
text_ram wMonOrItemNameBuffer
text_start
@@ -1043,23 +1053,23 @@ UnknownText_0x1c1b57::
text "."
prompt
-UnknownText_0x1c1b6f::
+_PokemonRemoveMailText::
text "Please remove the"
line "MAIL first."
prompt
-UnknownText_0x1c1b8e::
+_PokemonNotHoldingText::
text_ram wMonOrItemNameBuffer
text " isn't"
line "holding anything."
prompt
-UnknownText_0x1c1baa::
+_ItemStorageFullText::
text "Item storage space"
line "full."
prompt
-UnknownText_0x1c1bc4::
+_PokemonTookItemText::
text "Took @"
text_ram wStringBuffer1
text_start
@@ -1068,7 +1078,7 @@ UnknownText_0x1c1bc4::
text "."
prompt
-UnknownText_0x1c1bdc::
+_PokemonAskSwapItemText::
text_ram wMonOrItemNameBuffer
text " is"
line "already holding"
@@ -1079,48 +1089,48 @@ UnknownText_0x1c1bdc::
line "Switch items?"
done
-UnknownText_0x1c1c09::
+_ItemCantHeldText::
text "This item can't be"
line "held."
prompt
-UnknownText_0x1c1c22::
+_MailLoseMessageText::
text "The MAIL will lose"
line "its message. OK?"
done
-UnknownText_0x1c1c47::
+_MailDetachedText::
text "MAIL detached from"
line "@"
text_ram wStringBuffer1
text "."
prompt
-UnknownText_0x1c1c62::
+_MailNoSpaceText::
text "There's no space"
line "for removing MAIL."
prompt
-UnknownText_0x1c1c86::
+_MailAskSendToPCText::
text "Send the removed"
line "MAIL to your PC?"
done
-UnknownText_0x1c1ca9::
+_MailboxFullText::
text "Your PC's MAILBOX"
line "is full."
prompt
-UnknownText_0x1c1cc4::
+_MailSentToPCText::
text "The MAIL was sent"
line "to your PC."
prompt
-UnknownText_0x1c1ce3::
+_PokemonNotEnoughHPText::
text "Not enough HP!"
prompt
-UnknownText_0x1c1cf3::
+_MayRegisterItemText::
text "An item in your"
line "PACK may be"
@@ -1128,7 +1138,7 @@ UnknownText_0x1c1cf3::
line "on SELECT Button."
done
-_ClockTimeUnknownText::
+_MainMenuTimeUnknownText::
text "Clock time unknown"
done
@@ -1149,11 +1159,12 @@ _OakText2::
text "This world is in-"
line "habited by crea-"
cont "tures that we call"
- cont "#MON.@@"
+ cont "#MON.@"
+ text_end
_OakText3::
text_promptbutton
- db "@"
+ text_end
_OakText4::
text "People and #MON"
@@ -1207,7 +1218,7 @@ _OakText7::
line "later!"
done
-UnknownText_0x1c40e6::
+_ClockTimeMayBeWrongText::
text "The clock's time"
line "may be wrong."
@@ -1215,7 +1226,7 @@ UnknownText_0x1c40e6::
line "time."
prompt
-UnknownText_0x1c411c::
+_ClockSetWithControlPadText::
text "Set with the"
line "Control Pad."
@@ -1223,28 +1234,28 @@ UnknownText_0x1c411c::
line "Cancel: B Button"
done
-UnknownText_0x1c415b::
+_ClockIsThisOKText::
text "Is this OK?"
done
-UnknownText_0x1c4168::
+_ClockHasResetText::
text "The clock has been"
line "reset."
done
-UnknownText_0x1c4183::
+_LinkTimeoutText::
text "Too much time has"
line "elapsed. Please"
cont "try again."
prompt
-UnknownText_0x1c41b1::
+_LinkTradeCantBattleText::
text "If you trade that"
line "#MON, you won't"
cont "be able to battle."
prompt
-UnknownText_0x1c41e6::
+_LinkAbnormalMonText::
text "Your friend's"
line "@"
text_ram wStringBuffer1
@@ -1252,54 +1263,54 @@ UnknownText_0x1c41e6::
cont "to be abnormal!"
prompt
-UnknownText_0x1c4212::
+_LinkAskTradeForText::
text "Trade @"
- text_ram wTemporaryBuffer
+ text_ram wceef
text_start
line "for @"
text_ram wStringBuffer1
text "?"
done
-UnknownText_0x1c454b::
+_WouldYouLikeToSaveTheGameText::
text "Would you like to"
line "save the game?"
done
-UnknownText_0x1c456d::
+_SavingDontTurnOffThePowerText::
text "SAVING… DON'T TURN"
line "OFF THE POWER."
done
-UnknownText_0x1c4590::
+_SavedTheGameText::
text "<PLAYER> saved"
line "the game."
done
-UnknownText_0x1c45a3::
+_AlreadyASaveFileText::
text "There is already a"
line "save file. Is it"
cont "OK to overwrite?"
done
-UnknownText_0x1c45d9::
+_AnotherSaveFileText::
text "There is another"
line "save file. Is it"
cont "OK to overwrite?"
done
-UnknownText_0x1c460d::
+_SaveFileCorruptedText::
text "The save file is"
line "corrupted!"
prompt
-UnknownText_0x1c462a::
+_ChangeBoxSaveText::
text "When you change a"
line "#MON BOX, data"
cont "will be saved. OK?"
done
-UnknownText_0x1c465f::
+_MoveMonWOMailSaveText::
text "Each time you move"
line "a #MON, data"
cont "will be saved. OK?"
@@ -1310,7 +1321,7 @@ UnknownText_0x1c4693::
line "area was exceeded."
done
-UnknownText_0x1c46b7::
+_WindowPoppingErrorText::
text "No windows avail-"
line "able for popping."
done
@@ -1323,22 +1334,22 @@ _ObjectEventText::
text "Object event."
done
-BGEventText_::
+_BGEventText::
text "BG event"
done
-CoordinatesEventText_::
+_CoordinatesEventText::
text "Coordinates event"
done
-UnknownText_0x1c4719::
+_ReceivedItemText::
text "<PLAYER> received"
line "@"
text_ram wStringBuffer4
text "."
done
-UnknownText_0x1c472c::
+_PutItemInPocketText::
text "<PLAYER> put the"
line "@"
text_ram wStringBuffer1
@@ -1348,7 +1359,7 @@ UnknownText_0x1c472c::
text "."
prompt
-UnknownText_0x1c474b::
+_PocketIsFullText::
text "The @"
text_ram wStringBuffer3
text_start
@@ -1384,11 +1395,11 @@ UnknownText_0x1c4be3::
line "is evolving!"
done
-UnknownText_0x1c4bfd::
+_MartHowManyText::
text "How many?"
done
-UnknownText_0x1c4c08::
+_MartFinalPriceText::
text_decimal wItemQuantityChangeBuffer, 1, 2
text " @"
text_ram wStringBuffer2
@@ -1398,7 +1409,7 @@ UnknownText_0x1c4c08::
text "."
done
-UnknownText_0x1c4c28::
+_HerbShopLadyIntroText::
text "Hello, dear."
para "I sell inexpensive"
@@ -1413,11 +1424,11 @@ UnknownText_0x1c4c28::
para "Hehehehe…"
done
-UnknownText_0x1c4ca3::
+_HerbalLadyHowManyText::
text "How many?"
done
-UnknownText_0x1c4cae::
+_HerbalLadyFinalPriceText::
text_decimal wItemQuantityChangeBuffer, 1, 2
text " @"
text_ram wStringBuffer2
@@ -1427,27 +1438,27 @@ UnknownText_0x1c4cae::
text "."
done
-UnknownText_0x1c4cce::
+_HerbalLadyThanksText::
text "Thank you, dear."
line "Hehehehe…"
done
-UnknownText_0x1c4cea::
+_HerbalLadyPackFullText::
text "Oh? Your PACK is"
line "full, dear."
done
-UnknownText_0x1c4d08::
+_HerbalLadyNoMoneyText::
text "Hehehe… You don't"
line "have the money."
done
-UnknownText_0x1c4d2a::
+_HerbalLadyComeAgainText::
text "Come again, dear."
line "Hehehehe…"
done
-UnknownText_0x1c4d47::
+_BargainShopIntroText::
text "Hiya! Care to see"
line "some bargains?"
@@ -1458,7 +1469,7 @@ UnknownText_0x1c4d47::
line "one of each item."
done
-UnknownText_0x1c4db0::
+_BargainShopFinalPriceText::
text_ram wStringBuffer2
text " costs"
line "¥@"
@@ -1466,41 +1477,41 @@ UnknownText_0x1c4db0::
text ". Want it?"
done
-UnknownText_0x1c4dcd::
+_BargainShopThanksText::
text "Thanks."
done
-UnknownText_0x1c4dd6::
+_BargainShopPackFullText::
text "Uh-oh, your PACK"
line "is chock-full."
done
-UnknownText_0x1c4df7::
+_BargainShopSoldOutText::
text "You bought that"
line "already. I'm all"
cont "sold out of it."
done
-UnknownText_0x1c4e28::
+_BargainShopNoFundsText::
text "Uh-oh, you're"
line "short on funds."
done
-UnknownText_0x1c4e46::
+_BargainShopComeAgainText::
text "Come by again"
line "sometime."
done
-UnknownText_0x1c4e5f::
+_PharmacyIntroText::
text "What's up? Need"
line "some medicine?"
done
-UnknownText_0x1c4e7e::
+_PharmacyHowManyText::
text "How many?"
done
-UnknownText_0x1c4e89::
+_PharmacyFinalPriceText::
text_decimal wItemQuantityChangeBuffer, 1, 2
text " @"
text_ram wStringBuffer2
@@ -1510,35 +1521,36 @@ UnknownText_0x1c4e89::
text "."
done
-UnknownText_0x1c4eab::
+_PharmacyThanksText::
text "Thanks much!"
done
-UnknownText_0x1c4eb9::
+_PharmacyPackFullText::
text "You don't have any"
line "more space."
done
-UnknownText_0x1c4ed8::
+_PharmacyNoMoneyText::
text "Huh? That's not"
line "enough money."
done
-UnknownText_0x1c4ef6::
+_PharmacyComeAgainText::
text "All right."
line "See you around."
done
-UnknownText_0x1c4f12::
+;unused
+_NothingToSellText::
text "You don't have"
line "anything to sell."
prompt
-UnknownText_0x1c4f33::
+_MartSellHowManyText::
text "How many?"
done
-UnknownText_0x1c4f3e::
+_MartSellPriceText::
text "I can pay you"
line "¥@"
text_decimal hMoneyTemp, 3, 6
@@ -1547,41 +1559,41 @@ UnknownText_0x1c4f3e::
para "Is that OK?"
done
-UnknownText_0x1c4f62::
+_MartWelcomeText::
text "Welcome! How may I"
line "help you?"
done
-UnknownText_0x1c4f80::
+_MartThanksText::
text "Here you are."
line "Thank you!"
done
-UnknownText_0x1c4f9a::
+_MartNoMoneyText::
text "You don't have"
line "enough money."
done
-UnknownText_0x1c4fb7::
+_MartPackFullText::
text "You can't carry"
line "any more items."
done
-UnknownText_0x1c4fd7::
+_MartCantBuyText::
text "Sorry, I can't buy"
line "that from you."
done
-UnknownText_0x1c4ff9::
+_MartComeAgainText::
text "Please come again!"
done
-UnknownText_0x1c500d::
+_MartAskMoreText::
text "Can I do anything"
line "else for you?"
done
-UnknownText_0x1c502e::
+_MartBoughtText::
text "Got ¥@"
text_decimal hMoneyTemp, 3, 6
text " for"
@@ -1590,7 +1602,7 @@ UnknownText_0x1c502e::
text "(S)."
done
-UnknownText_0x1c5049::
+_SlotsBetHowManyCoinsText::
text "Bet how many"
line "coins?"
- done \ No newline at end of file
+ done
diff --git a/data/text/common_3.asm b/data/text/common_3.asm
index 503d5a76..4064b0f4 100644
--- a/data/text/common_3.asm
+++ b/data/text/common_3.asm
@@ -1,116 +1,117 @@
-UnknownText_0x1c505e::
+_SlotsStartText::
text "Start!"
done
-UnknownText_0x1c5066::
+_SlotsNotEnoughCoinsText::
text "Not enough"
line "coins."
prompt
-UnknownText_0x1c5079::
+_SlotsRanOutOfCoinsText::
text "Darn… Ran out of"
line "coins…"
done
-UnknownText_0x1c5092::
+_SlotsPlayAgainText::
text "Play again?"
done
-UnknownText_0x1c509f::
+_SlotsLinedUpText::
text "lined up!"
line "Won @"
text_ram wStringBuffer2
text " coins!"
done
-UnknownText_0x1c50bb::
+_SlotsDarnText::
text "Darn!"
done
-UnknownText_0x1c5821::
+_GearTodayText::
text_today
- db "@"
+ text_end
-UnknownText_0x1c5824::
+_GearEllipseText::
text "<……>"
done
-UnknownText_0x1c5827::
+_GearOutOfServiceText::
text "You're out of the"
line "service area."
prompt
-UnknownText_0x1c5847::
+_PokegearAskWhoCallText::
text "Whom do you want"
line "to call?"
done
-UnknownText_0x1c5862::
+_PokegearPressButtonText::
text "Press any button"
line "to exit."
done
-UnknownText_0x1c587d::
+_PokegearAskDeleteText::
text "Delete this stored"
line "phone number?"
done
-UnknownText_0x1c5565::
+_PhoneWrongNumberText::
text "Huh? Sorry, wrong"
line "number!"
done
-UnknownText_0x1c5580::
+_PhoneClickText::
text "Click!"
done
-UnknownText_0x1c5588::
+_PhoneEllipseText::
text "<……>"
done
-UnknownText_0x1c558b::
+_PhoneOutOfAreaText::
text "That number is out"
line "of the area."
done
-UnknownText_0x1c55ac::
+_PhoneJustTalkToThemText::
text "Just go talk to"
line "that person!"
done
-UnknownText_0x1c55ca::
+_PhoneThankYouText::
text "Thank you!"
done
+; unused
UnknownText_0x1c55d6::
text " :"
done
-UnknownText_0x1c55db::
+_PasswordAskResetText::
text "Password OK."
line "Select CONTINUE &"
cont "reset settings."
prompt
-UnknownText_0x1c560b::
+_PasswordWrongText::
text "Wrong password!"
prompt
-UnknownText_0x1c561c::
+_PasswordAskResetClockText::
text "Reset the clock?"
done
-UnknownText_0x1c562e::
+_PasswordAskEnterText::
text "Please enter the"
line "password."
done
-UnknownText_0x1c564a::
+_ClearAllSaveDataText::
text "Clear all save"
line "data area?"
done
-Text_LearnedMove_::
+_LearnedMoveText::
text_ram wMonOrItemNameBuffer
text " learned"
line "@"
@@ -118,21 +119,21 @@ Text_LearnedMove_::
text "!@"
sound_dex_fanfare_50_79
text_promptbutton
- db "@"
+ text_end
-Text_ForgetWhich_::
+_MoveAskForgetText::
text "Which move should"
next "be forgotten?"
done
-Text_StopLearning_::
+_StopLearningMoveText::
text "Stop learning"
line "@"
text_ram wStringBuffer2
text "?"
done
-Text_DidNotLearn_::
+_DidNotLearnMoveText::
text_ram wMonOrItemNameBuffer
text_start
line "did not learn"
@@ -141,7 +142,7 @@ Text_DidNotLearn_::
text "."
prompt
-Text_TryingToLearn_::
+_AskForgetMoveText::
text_ram wMonOrItemNameBuffer
text " is"
line "trying to learn"
@@ -162,12 +163,14 @@ Text_TryingToLearn_::
text "?"
done
-Text_1_2_and_Poof_::
+Text_MoveForgetCount::
text "1, 2 and…@"
text_pause
- db "@@"
+ text_end
-Text_PoofForgot_::
+ text_end ; unused
+
+_MoveForgotText::
text " Poof!@"
text_pause
text_start
@@ -182,47 +185,47 @@ Text_PoofForgot_::
para "And…"
prompt
-Text_CantForgetHM_::
+_MoveCantForgetHMText::
text "HM moves can't be"
line "forgotten now."
prompt
-UnknownText_0x1c5793::
+_CardFlipPlayWithThreeCoinsText::
text "Play with three"
line "coins?"
done
-UnknownText_0x1c57ab::
+_CardFlipNotEnoughCoinsText::
text "Not enough coins…"
prompt
-UnknownText_0x1c57be::
+_CardFlipChooseACardText::
text "Choose a card."
done
-UnknownText_0x1c57ce::
+_CardFlipPlaceYourBetText::
text "Place your bet."
done
-UnknownText_0x1c57df::
+_CardFlipPlayAgainText::
text "Want to play"
line "again?"
done
-UnknownText_0x1c57f4::
+_CardFlipShuffledText::
text "The cards have"
line "been shuffled."
prompt
-UnknownText_0x1c5813::
+_CardFlipYeahText::
text "Yeah!"
done
-UnknownText_0x1c581a::
+_CardFlipDarnText::
text "Darn…"
done
-Text_ThisMonCantBeCaught_::
+_BallDodgedText::
text "It dodged the"
line "thrown BALL!"
@@ -230,66 +233,68 @@ Text_ThisMonCantBeCaught_::
line "can't be caught!"
prompt
-Text_YouMissedThePokemon_::
+_BallMissedText::
text "You missed the"
line "#MON!"
prompt
-Text_ThePokemonBrokeFree_::
+_BallBrokeFreeText::
text "Oh no! The #MON"
line "broke free!"
prompt
-Text_AppearedToBeCaught_::
+_BallAppearedCaughtText::
text "Aww! It appeared"
line "to be caught!"
prompt
-Text_AarghAlmostHadIt_::
+_BallAlmostHadItText::
text "Aargh!"
line "Almost had it!"
prompt
-Text_ShootItWasSoCloseToo_::
+_BallSoCloseText::
text "Shoot! It was so"
line "close too!"
prompt
-Text_GotchaMonWasCaught_::
+Text_BallCaught::
text "Gotcha! @"
text_ram wEnemyMonNick
text_start
line "was caught!@"
sound_caught_mon
- db "@@"
+ text_end
+
+ text_end ; unused
-Text_Promptbutton_2::
+_WaitButtonText::
text_promptbutton
- db "@"
+ text_end
-Text_SentToBillsPC_::
+_BallSentToPCText::
text_ram wMonOrItemNameBuffer
text " was"
line "sent to BILL's PC."
prompt
-Text_MonNewlyAddedToPokedex_::
+_NewDexDataText::
text_ram wEnemyMonNick
text "'s data"
line "was newly added to"
cont "the #DEX.@"
sound_slot_machine_start
text_promptbutton
- db "@"
+ text_end
-Text_AskNicknameNewlyCaughtMon_::
+_AskGiveNicknameText::
text "Give a nickname to"
line "@"
text_ram wStringBuffer1
text "?"
done
-Text_StatRoseFromVitamin_::
+_ItemStatRoseText::
text_ram wStringBuffer1
text "'s"
line "@"
@@ -297,18 +302,18 @@ Text_StatRoseFromVitamin_::
text " rose."
prompt
-Text_MilkDrinkCantBeUsed_::
+_ItemCantUseOnMonText::
text "That can't be used"
line "on this #MON."
prompt
-Text_RepelUsedEarlierIsStillInEffect::
+_RepelUsedEarlierIsStillInEffectText::
text "The REPEL used"
line "earlier is still"
cont "in effect."
prompt
-Text_NowThatsACatchyTune_::
+_PlayedFluteText::
text "Played the #"
line "FLUTE."
@@ -316,50 +321,53 @@ Text_NowThatsACatchyTune_::
line "catchy tune!"
prompt
-Text_AllSleepingMonWokeUp_::
+_FluteWakeUpText::
text "All sleeping"
line "#MON woke up."
prompt
-Text_PlayedThePokeFlute_::
+Text_PlayedPokeFlute::
text "<PLAYER> played the"
line "# FLUTE.@"
text_promptbutton
- db "@@"
+ text_end
+
+ text_end ; unused
-Text_CoinCase_::
+; BUG: "done" is not a valid terminator here, needs to change to "text_end"
+_CoinCaseCountText::
text "Coins:"
line "@"
text_decimal wCoins, 2, 4
done
-Text_RaiseThePPOfWhichMove_::
+_RaiseThePPOfWhichMoveText::
text "Raise the PP of"
line "which move?"
done
-Text_RestoreThePPOfWhichMove_::
+_RestoreThePPOfWhichMoveText::
text "Restore the PP of"
line "which move?"
done
-Text_PPIsMaxedOut_::
+_PPIsMaxedOutText::
text_ram wStringBuffer2
text "'s PP"
line "is maxed out."
prompt
-Text_PPsIncreased_::
+_PPsIncreasedText::
text_ram wStringBuffer2
text "'s PP"
line "increased."
prompt
-Text_PPWasRestored_::
+_PPRestoredText::
text "PP was restored."
prompt
-Text_TrophyInside_::
+_SentTrophyHomeText::
text "There was a trophy"
line "inside!@"
sound_dex_fanfare_50_79
@@ -371,73 +379,73 @@ Text_TrophyInside_::
line "trophy home."
prompt
-Text_LooksBitter_::
+_ItemLooksBitterText::
text "It looks bitter…"
prompt
-Text_CantUseOnEgg_::
+_ItemCantUseOnEggText::
text "That can't be used"
line "on an EGG."
prompt
-Text_IsntTheTimeToUseThat_::
+_ItemOakWarningText::
text "OAK: <PLAYER>!"
line "This isn't the"
cont "time to use that!"
prompt
-Text_BelongsToSomeoneElse_::
+_ItemBelongsToSomeoneElseText::
text "That belongs to"
line "someone else!"
prompt
-Text_WontHaveAnyEffect_::
+_ItemWontHaveEffectText::
text "It won't have any"
line "effect."
prompt
-Text_BlockedTheBall_::
+_BallBlockedText::
text "The trainer"
line "blocked the BALL!"
prompt
-Text_DontBeAThief_::
+_BallDontBeAThiefText::
text "Don't be a thief!"
prompt
-Text_CyclingIsntAllowed_::
+_NoCyclingText::
text "Cycling isn't"
line "allowed here."
prompt
-Text_CantGetOnYourItemNow_::
+_ItemCantGetOnText::
text "Can't get on your"
line "@"
text_ram wStringBuffer1
text " now."
prompt
-Text_CantUseBallBoxIsFull_::
+_BallBoxFullText::
text "The #MON BOX"
line "is full. That"
cont "can't be used now."
prompt
-Text_UsedItem_::
+_ItemUsedText::
text "<PLAYER> used the"
line "@"
text_ram wStringBuffer2
text "."
done
-Text_GotOnItem_::
+_ItemGotOnText::
text "<PLAYER> got on the@"
text_low
text_ram wStringBuffer2
text "."
prompt
-Text_GotOffItem_::
+_ItemGotOffText::
text "<PLAYER> got off@"
text_low
text "the @"
@@ -445,7 +453,7 @@ Text_GotOffItem_::
text "."
prompt
-Text_KnowsMove_::
+_KnowsMoveText::
text_ram wStringBuffer1
text " knows"
line "@"
@@ -453,39 +461,39 @@ Text_KnowsMove_::
text "."
prompt
-UnknownText_0x1c5eba::
+_MoveKnowsOneText::
text "That #MON knows"
line "only one move."
done
-UnknownText_0x1c5eda::
+_AskDeleteMoveText::
text "Oh, make it forget"
line "@"
text_ram wStringBuffer1
text "?"
done
-UnknownText_0x1c5ef5::
+_DeleterForgotMoveText::
text "Done! Your #MON"
line "forgot the move."
done
-UnknownText_0x1c5f17::
+_DeleterEggText::
text "An EGG doesn't"
line "know any moves!"
done
-UnknownText_0x1c5f36::
+_DeleterNoComeAgainText::
text "No? Come visit me"
line "again."
done
-UnknownText_0x1c5f50::
+_DeleterAskWhichMoveText::
text "Which move should"
line "it forget, then?"
prompt
-UnknownText_0x1c5f74::
+_DeleterIntroText::
text "Um… Oh, yes, I'm"
line "the MOVE DELETER."
@@ -496,43 +504,43 @@ UnknownText_0x1c5f74::
line "#MON forget?"
done
-UnknownText_0x1c5fd1::
+_DeleterAskWhichMonText::
text "Which #MON?"
prompt
-Text_DSTIsThatOK::
+_DSTIsThatOKText::
text " DST,"
line "is that OK?"
done
-UnknownText_0x1c5ff1::
+_TimeAskOkayText::
text ","
line "is that OK?"
done
-UnknownText_0x1c6000::
+_TimesetAskDSTText::
text "Do you want to"
line "switch to Daylight"
cont "Saving Time?"
done
-UnknownText_0x1c6030::
+_TimesetDSTText::
text "I set the clock"
line "forward by one"
cont "hour."
prompt
-UnknownText_0x1c6056::
+_TimesetAskNotDSTText::
text "Is Daylight Saving"
line "Time over?"
done
-UnknownText_0x1c6075::
+_TimesetNotDSTText::
text "I put the clock"
line "back one hour."
prompt
-UnknownText_0x1c6095::
+_TimesetAskAdjustDSTText::
text "Do you want to"
line "adjust your clock"
@@ -540,7 +548,7 @@ UnknownText_0x1c6095::
line "Saving Time?"
done
-UnknownText_0x1c60d1::
+_MomLostGearBookletText::
text "I lost the in-"
line "struction booklet"
cont "for the #GEAR."
diff --git a/data/text/dakutens.asm b/data/text/dakutens.asm
new file mode 100644
index 00000000..7a53c71f
--- /dev/null
+++ b/data/text/dakutens.asm
@@ -0,0 +1,15 @@
+Dakutens:
+ db "かが", "きぎ", "くぐ", "けげ", "こご"
+ db "さざ", "しじ", "すず", "せぜ", "そぞ"
+ db "ただ", "ちぢ", "つづ", "てで", "とど"
+ db "はば", "ひび", "ふぶ", "へべ", "ほぼ"
+ db "カガ", "キギ", "クグ", "ケゲ", "コゴ"
+ db "サザ", "シジ", "スズ", "セゼ", "ソゾ"
+ db "タダ", "チヂ", "ツヅ", "テデ", "トド"
+ db "ハバ", "ヒビ", "フブ", "へべ", "ホボ"
+ db -1 ; end
+
+Handakutens:
+ db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
+ db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
+ db -1 ; end
diff --git a/data/text/mail_input_chars.asm b/data/text/mail_input_chars.asm
new file mode 100644
index 00000000..ac76e71e
--- /dev/null
+++ b/data/text/mail_input_chars.asm
@@ -0,0 +1,17 @@
+; see engine/naming_screen.asm
+
+MailEntry_Uppercase:
+ db "A B C D E F G H I J"
+ db "K L M N O P Q R S T"
+ db "U V W X Y Z , ? !"
+ db "1 2 3 4 5 6 7 8 9 0"
+ db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
+ db "lower DEL END "
+
+MailEntry_Lowercase:
+ db "a b c d e f g h i j"
+ db "k l m n o p q r s t"
+ db "u v w x y z . - /"
+ db "'d 'l 'm 'r 's 't 'v & ( )"
+ db "“ ” [ ] ' : ; "
+ db "UPPER DEL END "
diff --git a/data/text/name_input_chars.asm b/data/text/name_input_chars.asm
new file mode 100644
index 00000000..d8928914
--- /dev/null
+++ b/data/text/name_input_chars.asm
@@ -0,0 +1,31 @@
+; see engine/naming_screen.asm
+
+NameInputLower:
+ db "a b c d e f g h i"
+ db "j k l m n o p q r"
+ db "s t u v w x y z "
+ db "× ( ) : ; [ ] <PK> <MN>"
+ db "UPPER DEL END "
+
+BoxNameInputLower:
+ db "a b c d e f g h i"
+ db "j k l m n o p q r"
+ db "s t u v w x y z "
+ db "é 'd 'l 'm 'r 's 't 'v 0"
+ db "1 2 3 4 5 6 7 8 9"
+ db "UPPER DEL END "
+
+NameInputUpper:
+ db "A B C D E F G H I"
+ db "J K L M N O P Q R"
+ db "S T U V W X Y Z "
+ db "- ? ! / . , "
+ db "lower DEL END "
+
+BoxNameInputUpper:
+ db "A B C D E F G H I"
+ db "J K L M N O P Q R"
+ db "S T U V W X Y Z "
+ db "× ( ) : ; [ ] <PK> <MN>"
+ db "- ? ! ♂ ♀ / . , &"
+ db "lower DEL END "
diff --git a/data/text_buffers.asm b/data/text_buffers.asm
new file mode 100644
index 00000000..7c28c11e
--- /dev/null
+++ b/data/text_buffers.asm
@@ -0,0 +1,9 @@
+StringBufferPointers::
+; entries correspond to arguments for text_buffer (TX_STRINGBUFFER)
+ dw wStringBuffer3 ; 0
+ dw wStringBuffer4 ; 1
+ dw wStringBuffer5 ; 2
+ dw wStringBuffer2 ; 3
+ dw wStringBuffer1 ; 4
+ dw wEnemyMonNick ; 5
+ dw wBattleMonNick ; 6
diff --git a/data/tilesets.asm b/data/tilesets.asm
new file mode 100644
index 00000000..bc1f1b2f
--- /dev/null
+++ b/data/tilesets.asm
@@ -0,0 +1,43 @@
+tileset: MACRO
+ dba \1GFX, \1Meta, \1Coll
+ dw \1Anim
+ dw NULL
+ dw \1PalMap
+ENDM
+
+; Associated data:
+; - The *GFX, *Meta, and *Coll are defined in gfx/tilesets.asm
+; - The *PalMap are defined in gfx/tileset_palette_maps.asm
+; - The *Anim are defined in engine/tilesets/tileset_anims.asm
+
+Tilesets::
+; entries correspond to TILESET_* constants
+ tileset Tileset0
+ tileset TilesetJohto
+ tileset TilesetJohtoModern
+ tileset TilesetKanto
+ tileset TilesetHouse
+ tileset TilesetPlayersHouse
+ tileset TilesetPokecenter
+ tileset TilesetGate
+ tileset TilesetPort
+ tileset TilesetLab
+ tileset TilesetFacility
+ tileset TilesetMart
+ tileset TilesetMansion
+ tileset TilesetGameCorner
+ tileset TilesetEliteFourRoom
+ tileset TilesetTraditionalHouse
+ tileset TilesetTrainStation
+ tileset TilesetChampionsRoom
+ tileset TilesetLighthouse
+ tileset TilesetPlayersRoom
+ tileset TilesetTower
+ tileset TilesetCave
+ tileset TilesetPark
+ tileset TilesetRuinsOfAlph
+ tileset TilesetRadioTower
+ tileset TilesetUnderground
+ tileset TilesetIcePath
+ tileset TilesetDarkCave
+ tileset TilesetForest
diff --git a/data/trainers/attributes.asm b/data/trainers/attributes.asm
new file mode 100644
index 00000000..86f5841c
--- /dev/null
+++ b/data/trainers/attributes.asm
@@ -0,0 +1,398 @@
+TrainerClassAttributes:
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
+
+; Falkner
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Whitney
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Bugsy
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Morty
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Pryce
+ db HYPER_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Jasmine
+ db HYPER_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Chuck
+ db FULL_HEAL, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Clair
+ db FULL_HEAL, HYPER_POTION ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Rival1
+ db NO_ITEM, NO_ITEM ; items
+ db 15 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Pokemon Prof
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_AGGRESSIVE | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Will
+ db MAX_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Cal
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Bruno
+ db MAX_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Karen
+ db FULL_HEAL, MAX_POTION ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Koga
+ db FULL_HEAL, FULL_RESTORE ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Champion
+ db FULL_HEAL, FULL_RESTORE ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Brock
+ db HYPER_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Misty
+ db FULL_HEAL, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Lt Surge
+ db HYPER_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Scientist
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Erika
+ db HYPER_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Youngster
+ db NO_ITEM, NO_ITEM ; items
+ db 4 ; base reward
+ dw AI_BASIC | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Schoolboy
+ db NO_ITEM, NO_ITEM ; items
+ db 8 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_OFTEN
+
+; Bird Keeper
+ db NO_ITEM, NO_ITEM ; items
+ db 6 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Lass
+ db NO_ITEM, NO_ITEM ; items
+ db 6 ; base reward
+ dw AI_BASIC | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_OFTEN
+
+; Janine
+ db DIRE_HIT, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Cooltrainerm
+ db NO_ITEM, NO_ITEM ; items
+ db 12 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Cooltrainerf
+ db NO_ITEM, NO_ITEM ; items
+ db 12 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Beauty
+ db NO_ITEM, NO_ITEM ; items
+ db 22 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Pokemaniac
+ db NO_ITEM, NO_ITEM ; items
+ db 15 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_OFFENSIVE | AI_AGGRESSIVE | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Gruntm
+ db NO_ITEM, NO_ITEM ; items
+ db 10 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Gentleman
+ db NO_ITEM, NO_ITEM ; items
+ db 18 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_AGGRESSIVE | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Skier
+ db NO_ITEM, NO_ITEM ; items
+ db 18 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Teacher
+ db NO_ITEM, NO_ITEM ; items
+ db 18 ; base reward
+ dw AI_BASIC | AI_OPPORTUNIST | AI_AGGRESSIVE | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Sabrina
+ db HYPER_POTION, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Bug Catcher
+ db NO_ITEM, NO_ITEM ; items
+ db 4 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Fisher
+ db NO_ITEM, NO_ITEM ; items
+ db 10 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_OFTEN
+
+; Swimmerm
+ db NO_ITEM, NO_ITEM ; items
+ db 2 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_OFFENSIVE | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Swimmerf
+ db NO_ITEM, NO_ITEM ; items
+ db 5 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Sailor
+ db NO_ITEM, NO_ITEM ; items
+ db 10 ; base reward
+ dw AI_BASIC | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Super Nerd
+ db NO_ITEM, NO_ITEM ; items
+ db 8 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Rival2
+ db NO_ITEM, NO_ITEM ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Guitarist
+ db NO_ITEM, NO_ITEM ; items
+ db 8 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Hiker
+ db NO_ITEM, NO_ITEM ; items
+ db 8 ; base reward
+ dw AI_BASIC | AI_OFFENSIVE | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Biker
+ db NO_ITEM, NO_ITEM ; items
+ db 8 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Blaine
+ db MAX_POTION, FULL_HEAL ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Burglar
+ db NO_ITEM, NO_ITEM ; items
+ db 22 ; base reward
+ dw AI_BASIC | AI_OFFENSIVE | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Firebreather
+ db NO_ITEM, NO_ITEM ; items
+ db 12 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Juggler
+ db NO_ITEM, NO_ITEM ; items
+ db 10 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Blackbelt T
+ db NO_ITEM, NO_ITEM ; items
+ db 6 ; base reward
+ dw AI_BASIC | AI_OFFENSIVE | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Executivem
+ db NO_ITEM, NO_ITEM ; items
+ db 18 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Psychic T
+ db NO_ITEM, NO_ITEM ; items
+ db 8 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Picnicker
+ db NO_ITEM, NO_ITEM ; items
+ db 5 ; base reward
+ dw AI_BASIC | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Camper
+ db NO_ITEM, NO_ITEM ; items
+ db 5 ; base reward
+ dw AI_BASIC | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Executivef
+ db NO_ITEM, NO_ITEM ; items
+ db 18 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Sage
+ db NO_ITEM, NO_ITEM ; items
+ db 8 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Medium
+ db NO_ITEM, NO_ITEM ; items
+ db 10 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Boarder
+ db NO_ITEM, NO_ITEM ; items
+ db 18 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Pokefanm
+ db NO_ITEM, NO_ITEM ; items
+ db 20 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Kimono Girl
+ db NO_ITEM, NO_ITEM ; items
+ db 18 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Twins
+ db NO_ITEM, NO_ITEM ; items
+ db 5 ; base reward
+ dw NO_AI
+ dw CONTEXT_USE | SWITCH_OFTEN
+
+; Pokefanf
+ db NO_ITEM, NO_ITEM ; items
+ db 20 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Red
+ db FULL_RESTORE, FULL_RESTORE ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Blue
+ db FULL_RESTORE, FULL_RESTORE ; items
+ db 25 ; base reward
+ dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Officer
+ db NO_ITEM, NO_ITEM ; items
+ db 10 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_STATUS
+ dw CONTEXT_USE | SWITCH_SOMETIMES
+
+; Gruntf
+ db NO_ITEM, NO_ITEM ; items
+ db 10 ; base reward
+ dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
+ dw CONTEXT_USE | SWITCH_SOMETIMES
diff --git a/data/trainers/class_names.asm b/data/trainers/class_names.asm
new file mode 100644
index 00000000..ea68f2f4
--- /dev/null
+++ b/data/trainers/class_names.asm
@@ -0,0 +1,68 @@
+TrainerClassNames::
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
+ db "LEADER@"
+ db "LEADER@"
+ db "LEADER@"
+ db "LEADER@"
+ db "LEADER@"
+ db "LEADER@"
+ db "LEADER@"
+ db "LEADER@"
+ db "RIVAL@"
+ db "#MON PROF.@"
+ db "ELITE FOUR@"
+ db "<PKMN> TRAINER@"
+ db "ELITE FOUR@"
+ db "ELITE FOUR@"
+ db "ELITE FOUR@"
+ db "CHAMPION@"
+ db "LEADER@"
+ db "LEADER@"
+ db "LEADER@"
+ db "SCIENTIST@"
+ db "LEADER@"
+ db "YOUNGSTER@"
+ db "SCHOOLBOY@"
+ db "BIRD KEEPER@"
+ db "LASS@"
+ db "LEADER@"
+ db "COOLTRAINER@"
+ db "COOLTRAINER@"
+ db "BEAUTY@"
+ db "#MANIAC@"
+ db "ROCKET@"
+ db "GENTLEMAN@"
+ db "SKIER@"
+ db "TEACHER@"
+ db "LEADER@"
+ db "BUG CATCHER@"
+ db "FISHER@"
+ db "SWIMMER♂@"
+ db "SWIMMER♀@"
+ db "SAILOR@"
+ db "SUPER NERD@"
+ db "RIVAL@"
+ db "GUITARIST@"
+ db "HIKER@"
+ db "BIKER@"
+ db "LEADER@"
+ db "BURGLAR@"
+ db "FIREBREATHER@"
+ db "JUGGLER@"
+ db "BLACKBELT@"
+ db "ROCKET@"
+ db "PSYCHIC@"
+ db "PICNICKER@"
+ db "CAMPER@"
+ db "ROCKET@"
+ db "SAGE@"
+ db "MEDIUM@"
+ db "BOARDER@"
+ db "#FAN@"
+ db "KIMONO GIRL@"
+ db "TWINS@"
+ db "#FAN@"
+ db "<PKMN> TRAINER@"
+ db "LEADER@"
+ db "OFFICER@"
+ db "ROCKET@"
diff --git a/data/trainers/leaders.asm b/data/trainers/leaders.asm
new file mode 100644
index 00000000..a41f641e
--- /dev/null
+++ b/data/trainers/leaders.asm
@@ -0,0 +1,32 @@
+; These lists determine the battle music and victory music, and whether to
+; award HAPPINESS_GYMBATTLE for winning.
+
+; Note: CHAMPION and RED are unused for battle music checks, since they are
+; accounted for prior to the list check.
+
+GymLeaders:
+ db FALKNER
+ db WHITNEY
+ db BUGSY
+ db MORTY
+ db PRYCE
+ db JASMINE
+ db CHUCK
+ db CLAIR
+ db WILL
+ db BRUNO
+ db KAREN
+ db KOGA
+ db CHAMPION
+ db RED
+; fallthrough
+KantoGymLeaders:
+ db BROCK
+ db MISTY
+ db LT_SURGE
+ db ERIKA
+ db JANINE
+ db SABRINA
+ db BLAINE
+ db BLUE
+ db -1
diff --git a/data/trainers/palettes.asm b/data/trainers/palettes.asm
new file mode 100644
index 00000000..b21729f8
--- /dev/null
+++ b/data/trainers/palettes.asm
@@ -0,0 +1,74 @@
+TrainerPalettes:
+; entries correspond to trainer classes
+
+; Each .gbcpal is generated from the corresponding .png, and
+; only the middle two colors are included, not black or white.
+
+PlayerPalette: ; Chris uses the same colors as Cal
+INCLUDE "gfx/trainers/cal.pal"
+INCLUDE "gfx/trainers/falkner.pal"
+INCLUDE "gfx/trainers/whitney.pal"
+INCLUDE "gfx/trainers/bugsy.pal"
+INCLUDE "gfx/trainers/morty.pal"
+INCLUDE "gfx/trainers/pryce.pal"
+INCLUDE "gfx/trainers/jasmine.pal"
+INCLUDE "gfx/trainers/chuck.pal"
+INCLUDE "gfx/trainers/clair.pal"
+INCLUDE "gfx/trainers/rival1.pal"
+INCLUDE "gfx/trainers/oak.pal"
+INCLUDE "gfx/trainers/will.pal"
+INCLUDE "gfx/trainers/cal.pal"
+INCLUDE "gfx/trainers/bruno.pal"
+INCLUDE "gfx/trainers/karen.pal"
+INCLUDE "gfx/trainers/koga.pal"
+INCLUDE "gfx/trainers/champion.pal"
+INCLUDE "gfx/trainers/brock.pal"
+INCLUDE "gfx/trainers/misty.pal"
+INCLUDE "gfx/trainers/lt_surge.pal"
+INCLUDE "gfx/trainers/scientist.pal"
+INCLUDE "gfx/trainers/erika.pal"
+INCLUDE "gfx/trainers/youngster.pal"
+INCLUDE "gfx/trainers/schoolboy.pal"
+INCLUDE "gfx/trainers/bird_keeper.pal"
+INCLUDE "gfx/trainers/lass.pal"
+INCLUDE "gfx/trainers/janine.pal"
+INCLUDE "gfx/trainers/cooltrainer_m.pal"
+INCLUDE "gfx/trainers/cooltrainer_f.pal"
+INCLUDE "gfx/trainers/beauty.pal"
+INCLUDE "gfx/trainers/pokemaniac.pal"
+INCLUDE "gfx/trainers/grunt_m.pal"
+INCLUDE "gfx/trainers/gentleman.pal"
+INCLUDE "gfx/trainers/skier.pal"
+INCLUDE "gfx/trainers/teacher.pal"
+INCLUDE "gfx/trainers/sabrina.pal"
+INCLUDE "gfx/trainers/bug_catcher.pal"
+INCLUDE "gfx/trainers/fisher.pal"
+INCLUDE "gfx/trainers/swimmer_m.pal"
+INCLUDE "gfx/trainers/swimmer_f.pal"
+INCLUDE "gfx/trainers/sailor.pal"
+INCLUDE "gfx/trainers/super_nerd.pal"
+INCLUDE "gfx/trainers/rival2.pal"
+INCLUDE "gfx/trainers/guitarist.pal"
+INCLUDE "gfx/trainers/hiker.pal"
+INCLUDE "gfx/trainers/biker.pal"
+INCLUDE "gfx/trainers/blaine.pal"
+INCLUDE "gfx/trainers/burglar.pal"
+INCLUDE "gfx/trainers/firebreather.pal"
+INCLUDE "gfx/trainers/juggler.pal"
+INCLUDE "gfx/trainers/blackbelt_t.pal"
+INCLUDE "gfx/trainers/executive_m.pal"
+INCLUDE "gfx/trainers/psychic_t.pal"
+INCLUDE "gfx/trainers/picnicker.pal"
+INCLUDE "gfx/trainers/camper.pal"
+INCLUDE "gfx/trainers/executive_f.pal"
+INCLUDE "gfx/trainers/sage.pal"
+INCLUDE "gfx/trainers/medium.pal"
+INCLUDE "gfx/trainers/boarder.pal"
+INCLUDE "gfx/trainers/pokefan_m.pal"
+INCLUDE "gfx/trainers/kimono_girl.pal"
+INCLUDE "gfx/trainers/twins.pal"
+INCLUDE "gfx/trainers/pokefan_f.pal"
+INCLUDE "gfx/trainers/red.pal"
+INCLUDE "gfx/trainers/blue.pal"
+INCLUDE "gfx/trainers/officer.pal"
+INCLUDE "gfx/trainers/grunt_f.pal"
diff --git a/data/trainers/pic_pointers.asm b/data/trainers/pic_pointers.asm
new file mode 100644
index 00000000..134fec36
--- /dev/null
+++ b/data/trainers/pic_pointers.asm
@@ -0,0 +1,70 @@
+; Pics are defined in gfx/pics.asm
+
+TrainerPicPointers::
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
+ dba_pic FalknerPic
+ dba_pic WhitneyPic
+ dba_pic BugsyPic
+ dba_pic MortyPic
+ dba_pic PrycePic
+ dba_pic JasminePic
+ dba_pic ChuckPic
+ dba_pic ClairPic
+ dba_pic Rival1Pic
+ dba_pic PokemonProfPic
+ dba_pic WillPic
+ dba_pic CalPic
+ dba_pic BrunoPic
+ dba_pic KarenPic
+ dba_pic KogaPic
+ dba_pic ChampionPic
+ dba_pic BrockPic
+ dba_pic MistyPic
+ dba_pic LtSurgePic
+ dba_pic ScientistPic
+ dba_pic ErikaPic
+ dba_pic YoungsterPic
+ dba_pic SchoolboyPic
+ dba_pic BirdKeeperPic
+ dba_pic LassPic
+ dba_pic JaninePic
+ dba_pic CooltrainermPic
+ dba_pic CooltrainerfPic
+ dba_pic BeautyPic
+ dba_pic PokemaniacPic
+ dba_pic GruntmPic
+ dba_pic GentlemanPic
+ dba_pic SkierPic
+ dba_pic TeacherPic
+ dba_pic SabrinaPic
+ dba_pic BugCatcherPic
+ dba_pic FisherPic
+ dba_pic SwimmermPic
+ dba_pic SwimmerfPic
+ dba_pic SailorPic
+ dba_pic SuperNerdPic
+ dba_pic Rival2Pic
+ dba_pic GuitaristPic
+ dba_pic HikerPic
+ dba_pic BikerPic
+ dba_pic BlainePic
+ dba_pic BurglarPic
+ dba_pic FirebreatherPic
+ dba_pic JugglerPic
+ dba_pic BlackbeltTPic
+ dba_pic ExecutivemPic
+ dba_pic PsychicTPic
+ dba_pic PicnickerPic
+ dba_pic CamperPic
+ dba_pic ExecutivefPic
+ dba_pic SagePic
+ dba_pic MediumPic
+ dba_pic BoarderPic
+ dba_pic PokefanmPic
+ dba_pic KimonoGirlPic
+ dba_pic TwinsPic
+ dba_pic PokefanfPic
+ dba_pic RedPic
+ dba_pic BluePic
+ dba_pic OfficerPic
+ dba_pic GruntfPic
diff --git a/data/types/type_boost_items.asm b/data/types/type_boost_items.asm
new file mode 100644
index 00000000..85a58db1
--- /dev/null
+++ b/data/types/type_boost_items.asm
@@ -0,0 +1,19 @@
+TypeBoostItems:
+ db HELD_NORMAL_BOOST, NORMAL ; PINK_BOW/POLKADOT_BOW
+ db HELD_FIGHTING_BOOST, FIGHTING ; BLACKBELT_I
+ db HELD_FLYING_BOOST, FLYING ; SHARP_BEAK
+ db HELD_POISON_BOOST, POISON ; POISON BARB
+ db HELD_GROUND_BOOST, GROUND ; SOFT_SAND
+ db HELD_ROCK_BOOST, ROCK ; HARD_STONE
+ db HELD_BUG_BOOST, BUG ; SILVERPOWDER
+ db HELD_GHOST_BOOST, GHOST ; SPELL_TAG
+ db HELD_FIRE_BOOST, FIRE ; CHARCOAL
+ db HELD_WATER_BOOST, WATER ; MYSTIC WATER
+ db HELD_GRASS_BOOST, GRASS ; MIRACLE_SEED
+ db HELD_ELECTRIC_BOOST, ELECTRIC ; MAGNET
+ db HELD_PSYCHIC_BOOST, PSYCHIC_TYPE ; TWISTEDSPOON
+ db HELD_ICE_BOOST, ICE ; NEVERMELTICE
+ db HELD_DRAGON_BOOST, DRAGON ; DRAGON_SCALE
+ db HELD_DARK_BOOST, DARK ; BLACKGLASSES
+ db HELD_STEEL_BOOST, STEEL ; METAL_COAT
+ db -1
diff --git a/data/types/type_matchups.asm b/data/types/type_matchups.asm
new file mode 100644
index 00000000..81906b0f
--- /dev/null
+++ b/data/types/type_matchups.asm
@@ -0,0 +1,118 @@
+TypeMatchups:
+ ; attacker, defender, *=
+ db NORMAL, ROCK, NOT_VERY_EFFECTIVE
+ db NORMAL, STEEL, NOT_VERY_EFFECTIVE
+ db FIRE, FIRE, NOT_VERY_EFFECTIVE
+ db FIRE, WATER, NOT_VERY_EFFECTIVE
+ db FIRE, GRASS, SUPER_EFFECTIVE
+ db FIRE, ICE, SUPER_EFFECTIVE
+ db FIRE, BUG, SUPER_EFFECTIVE
+ db FIRE, ROCK, NOT_VERY_EFFECTIVE
+ db FIRE, DRAGON, NOT_VERY_EFFECTIVE
+ db FIRE, STEEL, SUPER_EFFECTIVE
+ db WATER, FIRE, SUPER_EFFECTIVE
+ db WATER, WATER, NOT_VERY_EFFECTIVE
+ db WATER, GRASS, NOT_VERY_EFFECTIVE
+ db WATER, GROUND, SUPER_EFFECTIVE
+ db WATER, ROCK, SUPER_EFFECTIVE
+ db WATER, DRAGON, NOT_VERY_EFFECTIVE
+ db ELECTRIC, WATER, SUPER_EFFECTIVE
+ db ELECTRIC, ELECTRIC, NOT_VERY_EFFECTIVE
+ db ELECTRIC, GRASS, NOT_VERY_EFFECTIVE
+ db ELECTRIC, GROUND, NO_EFFECT
+ db ELECTRIC, FLYING, SUPER_EFFECTIVE
+ db ELECTRIC, DRAGON, NOT_VERY_EFFECTIVE
+ db GRASS, FIRE, NOT_VERY_EFFECTIVE
+ db GRASS, WATER, SUPER_EFFECTIVE
+ db GRASS, GRASS, NOT_VERY_EFFECTIVE
+ db GRASS, POISON, NOT_VERY_EFFECTIVE
+ db GRASS, GROUND, SUPER_EFFECTIVE
+ db GRASS, FLYING, NOT_VERY_EFFECTIVE
+ db GRASS, BUG, NOT_VERY_EFFECTIVE
+ db GRASS, ROCK, SUPER_EFFECTIVE
+ db GRASS, DRAGON, NOT_VERY_EFFECTIVE
+ db GRASS, STEEL, NOT_VERY_EFFECTIVE
+ db ICE, WATER, NOT_VERY_EFFECTIVE
+ db ICE, GRASS, SUPER_EFFECTIVE
+ db ICE, ICE, NOT_VERY_EFFECTIVE
+ db ICE, GROUND, SUPER_EFFECTIVE
+ db ICE, FLYING, SUPER_EFFECTIVE
+ db ICE, DRAGON, SUPER_EFFECTIVE
+ db ICE, STEEL, NOT_VERY_EFFECTIVE
+ db ICE, FIRE, NOT_VERY_EFFECTIVE
+ db FIGHTING, NORMAL, SUPER_EFFECTIVE
+ db FIGHTING, ICE, SUPER_EFFECTIVE
+ db FIGHTING, POISON, NOT_VERY_EFFECTIVE
+ db FIGHTING, FLYING, NOT_VERY_EFFECTIVE
+ db FIGHTING, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
+ db FIGHTING, BUG, NOT_VERY_EFFECTIVE
+ db FIGHTING, ROCK, SUPER_EFFECTIVE
+ db FIGHTING, DARK, SUPER_EFFECTIVE
+ db FIGHTING, STEEL, SUPER_EFFECTIVE
+ db POISON, GRASS, SUPER_EFFECTIVE
+ db POISON, POISON, NOT_VERY_EFFECTIVE
+ db POISON, GROUND, NOT_VERY_EFFECTIVE
+ db POISON, ROCK, NOT_VERY_EFFECTIVE
+ db POISON, GHOST, NOT_VERY_EFFECTIVE
+ db POISON, STEEL, NO_EFFECT
+ db GROUND, FIRE, SUPER_EFFECTIVE
+ db GROUND, ELECTRIC, SUPER_EFFECTIVE
+ db GROUND, GRASS, NOT_VERY_EFFECTIVE
+ db GROUND, POISON, SUPER_EFFECTIVE
+ db GROUND, FLYING, NO_EFFECT
+ db GROUND, BUG, NOT_VERY_EFFECTIVE
+ db GROUND, ROCK, SUPER_EFFECTIVE
+ db GROUND, STEEL, SUPER_EFFECTIVE
+ db FLYING, ELECTRIC, NOT_VERY_EFFECTIVE
+ db FLYING, GRASS, SUPER_EFFECTIVE
+ db FLYING, FIGHTING, SUPER_EFFECTIVE
+ db FLYING, BUG, SUPER_EFFECTIVE
+ db FLYING, ROCK, NOT_VERY_EFFECTIVE
+ db FLYING, STEEL, NOT_VERY_EFFECTIVE
+ db PSYCHIC_TYPE, FIGHTING, SUPER_EFFECTIVE
+ db PSYCHIC_TYPE, POISON, SUPER_EFFECTIVE
+ db PSYCHIC_TYPE, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
+ db PSYCHIC_TYPE, DARK, NO_EFFECT
+ db PSYCHIC_TYPE, STEEL, NOT_VERY_EFFECTIVE
+ db BUG, FIRE, NOT_VERY_EFFECTIVE
+ db BUG, GRASS, SUPER_EFFECTIVE
+ db BUG, FIGHTING, NOT_VERY_EFFECTIVE
+ db BUG, POISON, NOT_VERY_EFFECTIVE
+ db BUG, FLYING, NOT_VERY_EFFECTIVE
+ db BUG, PSYCHIC_TYPE, SUPER_EFFECTIVE
+ db BUG, GHOST, NOT_VERY_EFFECTIVE
+ db BUG, DARK, SUPER_EFFECTIVE
+ db BUG, STEEL, NOT_VERY_EFFECTIVE
+ db ROCK, FIRE, SUPER_EFFECTIVE
+ db ROCK, ICE, SUPER_EFFECTIVE
+ db ROCK, FIGHTING, NOT_VERY_EFFECTIVE
+ db ROCK, GROUND, NOT_VERY_EFFECTIVE
+ db ROCK, FLYING, SUPER_EFFECTIVE
+ db ROCK, BUG, SUPER_EFFECTIVE
+ db ROCK, STEEL, NOT_VERY_EFFECTIVE
+ db GHOST, NORMAL, NO_EFFECT
+ db GHOST, PSYCHIC_TYPE, SUPER_EFFECTIVE
+ db GHOST, DARK, NOT_VERY_EFFECTIVE
+ db GHOST, STEEL, NOT_VERY_EFFECTIVE
+ db GHOST, GHOST, SUPER_EFFECTIVE
+ db DRAGON, DRAGON, SUPER_EFFECTIVE
+ db DRAGON, STEEL, NOT_VERY_EFFECTIVE
+ db DARK, FIGHTING, NOT_VERY_EFFECTIVE
+ db DARK, PSYCHIC_TYPE, SUPER_EFFECTIVE
+ db DARK, GHOST, SUPER_EFFECTIVE
+ db DARK, DARK, NOT_VERY_EFFECTIVE
+ db DARK, STEEL, NOT_VERY_EFFECTIVE
+ db STEEL, FIRE, NOT_VERY_EFFECTIVE
+ db STEEL, WATER, NOT_VERY_EFFECTIVE
+ db STEEL, ELECTRIC, NOT_VERY_EFFECTIVE
+ db STEEL, ICE, SUPER_EFFECTIVE
+ db STEEL, ROCK, SUPER_EFFECTIVE
+ db STEEL, STEEL, NOT_VERY_EFFECTIVE
+
+ db -2 ; end (with Foresight)
+
+; Foresight removes Ghost's immunities.
+ db NORMAL, GHOST, NO_EFFECT
+ db FIGHTING, GHOST, NO_EFFECT
+
+ db -1 ; end
diff --git a/data/wild/bug_contest_mons.asm b/data/wild/bug_contest_mons.asm
new file mode 100644
index 00000000..79712703
--- /dev/null
+++ b/data/wild/bug_contest_mons.asm
@@ -0,0 +1,13 @@
+ContestMons:
+ ; %, 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/fish.asm b/data/wild/fish.asm
index de7e57a3..1976c8f9 100644
--- a/data/wild/fish.asm
+++ b/data/wild/fish.asm
@@ -1,225 +1,230 @@
-FishGroups: ; 92488
- dbwww 50 percent + 1, .Shore_Old, .Shore_Good, .Shore_Super
- dbwww 50 percent + 1, .Ocean_Old, .Ocean_Good, .Ocean_Super
- dbwww 50 percent + 1, .Lake_Old, .Lake_Good, .Lake_Super
- dbwww 50 percent + 1, .Pond_Old, .Pond_Good, .Pond_Super
- dbwww 50 percent + 1, .Dratini_Old, .Dratini_Good, .Dratini_Super
- dbwww 50 percent + 1, .Qwilfish_Swarm_Old, .Qwilfish_Swarm_Good, .Qwilfish_Swarm_Super
- dbwww 50 percent + 1, .Remoraid_Swarm_Old, .Remoraid_Swarm_Good, .Remoraid_Swarm_Super
- dbwww 50 percent + 1, .Gyarados_Old, .Gyarados_Good, .Gyarados_Super
- dbwww 50 percent + 1, .Dratini_2_Old, .Dratini_2_Good, .Dratini_2_Super
- dbwww 50 percent + 1, .WhirlIslands_Old, .WhirlIslands_Good, .WhirlIslands_Super
- dbwww 50 percent + 1, .Qwilfish_Old, .Qwilfish_Good, .Qwilfish_Super
- dbwww 50 percent + 1, .Remoraid_Old, .Remoraid_Good, .Remoraid_Super
- dbwww 50 percent + 1, .Qwilfish_NoSwarm_Old, .Qwilfish_NoSwarm_Good, .Qwilfish_NoSwarm_Super
+time_group EQUS "0," ; use the nth TimeFishGroups entry
-.Shore_Old: ; 924e3
+fishgroup: MACRO
+; chance, old rod, good rod, super rod
+ dbwww \1, \2, \3, \4
+ENDM
+
+FishGroups:
+; entries correspond to FISHGROUP_* constants
+ fishgroup 50 percent + 1, .Shore_Old, .Shore_Good, .Shore_Super
+ fishgroup 50 percent + 1, .Ocean_Old, .Ocean_Good, .Ocean_Super
+ fishgroup 50 percent + 1, .Lake_Old, .Lake_Good, .Lake_Super
+ fishgroup 50 percent + 1, .Pond_Old, .Pond_Good, .Pond_Super
+ fishgroup 50 percent + 1, .Dratini_Old, .Dratini_Good, .Dratini_Super
+ fishgroup 50 percent + 1, .Qwilfish_Swarm_Old, .Qwilfish_Swarm_Good, .Qwilfish_Swarm_Super
+ fishgroup 50 percent + 1, .Remoraid_Swarm_Old, .Remoraid_Swarm_Good, .Remoraid_Swarm_Super
+ fishgroup 50 percent + 1, .Gyarados_Old, .Gyarados_Good, .Gyarados_Super
+ fishgroup 50 percent + 1, .Dratini_2_Old, .Dratini_2_Good, .Dratini_2_Super
+ fishgroup 50 percent + 1, .WhirlIslands_Old, .WhirlIslands_Good, .WhirlIslands_Super
+ fishgroup 50 percent + 1, .Qwilfish_Old, .Qwilfish_Good, .Qwilfish_Super
+ fishgroup 50 percent + 1, .Remoraid_Old, .Remoraid_Good, .Remoraid_Super
+ fishgroup 50 percent + 1, .Qwilfish_NoSwarm_Old, .Qwilfish_NoSwarm_Good, .Qwilfish_NoSwarm_Super
+
+.Shore_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, KRABBY, 10
-.Shore_Good: ; 924ec
+.Shore_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, KRABBY, 20
db 90 percent + 1, KRABBY, 20
- db 100 percent, 0, 0
-.Shore_Super: ; 924f8
+ db 100 percent, time_group 0
+.Shore_Super:
db 40 percent, KRABBY, 40
- db 70 percent, 0, 1
+ db 70 percent, time_group 1
db 90 percent + 1, KRABBY, 40
db 100 percent, KINGLER, 40
-.Ocean_Old: ; 92504
+.Ocean_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, TENTACOOL, 10
-.Ocean_Good: ; 9250d
+.Ocean_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, TENTACOOL, 20
db 90 percent + 1, CHINCHOU, 20
- db 100 percent, 0, 2
-.Ocean_Super: ; 92519
+ db 100 percent, time_group 2
+.Ocean_Super:
db 40 percent, CHINCHOU, 40
- db 70 percent, 0, 3
+ db 70 percent, time_group 3
db 90 percent + 1, TENTACRUEL, 40
db 100 percent, LANTURN, 40
-.Lake_Old: ; 92525
+.Lake_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, GOLDEEN, 10
-.Lake_Good: ; 9252e
+.Lake_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, GOLDEEN, 20
db 90 percent + 1, GOLDEEN, 20
- db 100 percent, 0, 4
-.Lake_Super: ; 9253a
+ db 100 percent, time_group 4
+.Lake_Super:
db 40 percent, GOLDEEN, 40
- db 70 percent, 0, 5
+ db 70 percent, time_group 5
db 90 percent + 1, MAGIKARP, 40
db 100 percent, SEAKING, 40
-.Pond_Old: ; 92546
+.Pond_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, POLIWAG, 10
-.Pond_Good: ; 9254f
+.Pond_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, POLIWAG, 20
db 90 percent + 1, POLIWAG, 20
- db 100 percent, 0, 6
-.Pond_Super: ; 9255b
+ db 100 percent, time_group 6
+.Pond_Super:
db 40 percent, POLIWAG, 40
- db 70 percent, 0, 7
+ db 70 percent, time_group 7
db 90 percent + 1, MAGIKARP, 40
db 100 percent, POLIWAG, 40
-.Dratini_Old: ; 92567
+.Dratini_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, MAGIKARP, 10
-.Dratini_Good: ; 92570
+.Dratini_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, MAGIKARP, 20
db 90 percent + 1, MAGIKARP, 20
- db 100 percent, 0, 8
-.Dratini_Super: ; 9257c
+ db 100 percent, time_group 8
+.Dratini_Super:
db 40 percent, MAGIKARP, 40
- db 70 percent, 0, 9
+ db 70 percent, time_group 9
db 90 percent + 1, MAGIKARP, 40
db 100 percent, DRAGONAIR, 40
-.Qwilfish_Swarm_Old: ; 92588
+.Qwilfish_Swarm_Old:
db 70 percent + 1, MAGIKARP, 5
db 85 percent + 1, MAGIKARP, 5
db 100 percent, QWILFISH, 5
-.Qwilfish_Swarm_Good: ; 92591
+.Qwilfish_Swarm_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, QWILFISH, 20
db 90 percent + 1, QWILFISH, 20
- db 100 percent, 0, 10
-.Qwilfish_Swarm_Super: ; 9259d
+ db 100 percent, time_group 10
+.Qwilfish_Swarm_Super:
db 40 percent, QWILFISH, 40
- db 70 percent, 0, 11
+ db 70 percent, time_group 11
db 90 percent + 1, QWILFISH, 40
db 100 percent, QWILFISH, 40
-.Remoraid_Swarm_Old: ; 925a9
+.Remoraid_Swarm_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, REMORAID, 10
-.Remoraid_Swarm_Good: ; 925b2
+.Remoraid_Swarm_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, REMORAID, 20
db 90 percent + 1, REMORAID, 20
- db 100 percent, 0, 12
-.Remoraid_Swarm_Super: ; 925be
+ db 100 percent, time_group 12
+.Remoraid_Swarm_Super:
db 40 percent, REMORAID, 40
- db 70 percent, 0, 13
+ db 70 percent, time_group 13
db 90 percent + 1, REMORAID, 40
db 100 percent, REMORAID, 40
-.Gyarados_Old: ; 925ca
+.Gyarados_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, MAGIKARP, 10
-.Gyarados_Good: ; 925d3
+.Gyarados_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, MAGIKARP, 20
db 90 percent + 1, MAGIKARP, 20
- db 100 percent, 0, 14
-.Gyarados_Super: ; 925df
+ db 100 percent, time_group 14
+.Gyarados_Super:
db 40 percent, MAGIKARP, 40
- db 70 percent, 0, 15
+ db 70 percent, time_group 15
db 90 percent + 1, MAGIKARP, 40
db 100 percent, MAGIKARP, 40
-.Dratini_2_Old: ; 925eb
+.Dratini_2_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, MAGIKARP, 10
-.Dratini_2_Good: ; 925f4
+.Dratini_2_Good:
db 35 percent, MAGIKARP, 10
db 70 percent, MAGIKARP, 10
db 90 percent + 1, MAGIKARP, 10
- db 100 percent, 0, 16
-.Dratini_2_Super: ; 92600
+ db 100 percent, time_group 16
+.Dratini_2_Super:
db 40 percent, MAGIKARP, 10
- db 70 percent, 0, 17
+ db 70 percent, time_group 17
db 90 percent + 1, MAGIKARP, 10
db 100 percent, DRAGONAIR, 10
-.WhirlIslands_Old: ; 9260c
+.WhirlIslands_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, KRABBY, 10
-.WhirlIslands_Good: ; 92615
+.WhirlIslands_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, KRABBY, 20
db 90 percent + 1, KRABBY, 20
- db 100 percent, 0, 18
-.WhirlIslands_Super: ; 92621
+ db 100 percent, time_group 18
+.WhirlIslands_Super:
db 40 percent, KRABBY, 40
- db 70 percent, 0, 19
+ db 70 percent, time_group 19
db 90 percent + 1, KINGLER, 40
db 100 percent, SEADRA, 40
.Qwilfish_NoSwarm_Old:
-.Qwilfish_Old: ; 9262d
+.Qwilfish_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, TENTACOOL, 10
.Qwilfish_NoSwarm_Good:
-.Qwilfish_Good: ; 92636
+.Qwilfish_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, TENTACOOL, 20
db 90 percent + 1, TENTACOOL, 20
- db 100 percent, 0, 20
+ db 100 percent, time_group 20
.Qwilfish_NoSwarm_Super:
-.Qwilfish_Super: ; 92642
+.Qwilfish_Super:
db 40 percent, TENTACOOL, 40
- db 70 percent, 0, 21
+ db 70 percent, time_group 21
db 90 percent + 1, MAGIKARP, 40
db 100 percent, QWILFISH, 40
-.Remoraid_Old: ; 9264e
+.Remoraid_Old:
db 70 percent + 1, MAGIKARP, 10
db 85 percent + 1, MAGIKARP, 10
db 100 percent, POLIWAG, 10
-.Remoraid_Good: ; 92657
+.Remoraid_Good:
db 35 percent, MAGIKARP, 20
db 70 percent, POLIWAG, 20
db 90 percent + 1, POLIWAG, 20
- db 100 percent, 0, 6
-.Remoraid_Super: ; 92663
+ db 100 percent, time_group 6
+.Remoraid_Super:
db 40 percent, POLIWAG, 40
- db 70 percent, 0, 7
+ db 70 percent, time_group 7
db 90 percent + 1, MAGIKARP, 40
db 100 percent, REMORAID, 40
-; 9266f
-
-TimeFishGroups: ; 9266f
+TimeFishGroups:
; day nite
- db CORSOLA, 20, STARYU, 20
- db CORSOLA, 40, STARYU, 40
- db SHELLDER, 20, SHELLDER, 20
- db SHELLDER, 40, SHELLDER, 40
- db GOLDEEN, 20, GOLDEEN, 20
- db GOLDEEN, 40, GOLDEEN, 40
- db POLIWAG, 20, POLIWAG, 20
- db POLIWAG, 40, POLIWAG, 40
- db DRATINI, 20, DRATINI, 20
- db DRATINI, 40, DRATINI, 40
- db QWILFISH, 20, QWILFISH, 20
- db QWILFISH, 40, QWILFISH, 40
- db REMORAID, 20, REMORAID, 20
- db REMORAID, 40, REMORAID, 40
- db GYARADOS, 20, GYARADOS, 20
- db GYARADOS, 40, GYARADOS, 40
- db DRATINI, 10, DRATINI, 10
- db DRATINI, 10, DRATINI, 10
- db HORSEA, 20, HORSEA, 20
- db HORSEA, 40, HORSEA, 40
- db TENTACOOL, 20, TENTACOOL, 20
- db TENTACOOL, 40, TENTACOOL, 40
-; 926c7
+ db CORSOLA, 20, STARYU, 20 ; 0
+ db CORSOLA, 40, STARYU, 40 ; 1
+ db SHELLDER, 20, SHELLDER, 20 ; 2
+ db SHELLDER, 40, SHELLDER, 40 ; 3
+ db GOLDEEN, 20, GOLDEEN, 20 ; 4
+ db GOLDEEN, 40, GOLDEEN, 40 ; 5
+ db POLIWAG, 20, POLIWAG, 20 ; 6
+ db POLIWAG, 40, POLIWAG, 40 ; 7
+ db DRATINI, 20, DRATINI, 20 ; 8
+ db DRATINI, 40, DRATINI, 40 ; 9
+ db QWILFISH, 20, QWILFISH, 20 ; 10
+ db QWILFISH, 40, QWILFISH, 40 ; 11
+ db REMORAID, 20, REMORAID, 20 ; 12
+ db REMORAID, 40, REMORAID, 40 ; 13
+ db GYARADOS, 20, GYARADOS, 20 ; 14
+ db GYARADOS, 40, GYARADOS, 40 ; 15
+ db DRATINI, 10, DRATINI, 10 ; 16
+ db DRATINI, 10, DRATINI, 10 ; 17
+ db HORSEA, 20, HORSEA, 20 ; 18
+ db HORSEA, 40, HORSEA, 40 ; 19
+ db TENTACOOL, 20, TENTACOOL, 20 ; 20
+ db TENTACOOL, 40, TENTACOOL, 40 ; 21
diff --git a/data/wild/flee_mons.asm b/data/wild/flee_mons.asm
new file mode 100644
index 00000000..1c3700fd
--- /dev/null
+++ b/data/wild/flee_mons.asm
@@ -0,0 +1,35 @@
+FleeMons:
+; referenced by TryEnemyFlee and FastBallMultiplier
+
+SometimesFleeMons:
+ db MAGNEMITE
+ db GRIMER
+ db TANGELA
+ db MR__MIME
+ db EEVEE
+ db PORYGON
+ db DRATINI
+ db DRAGONAIR
+ db TOGETIC
+ db UMBREON
+ db UNOWN
+ db SNUBBULL
+ db HERACROSS
+ db -1
+
+OftenFleeMons:
+ db CUBONE
+ db ARTICUNO
+ db ZAPDOS
+ db MOLTRES
+ db QUAGSIRE
+ db DELIBIRD
+ db PHANPY
+ db TEDDIURSA
+ db -1
+
+AlwaysFleeMons:
+ db RAIKOU
+ db ENTEI
+ db SUICUNE
+ db -1
diff --git a/data/wild/johto_grass.asm b/data/wild/johto_grass.asm
index f241dd5d..ebc95c3f 100644
--- a/data/wild/johto_grass.asm
+++ b/data/wild/johto_grass.asm
@@ -1,6 +1,8 @@
; Johto Pokémon in grass
- map SPROUT_TOWER_2F
+JohtoGrassWildMons:
+
+ map_id SPROUT_TOWER_2F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 3, RATTATA
@@ -27,7 +29,7 @@
db 5, RATTATA
db 5, RATTATA
- map SPROUT_TOWER_3F
+ map_id SPROUT_TOWER_3F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 3, RATTATA
@@ -54,7 +56,7 @@
db 5, RATTATA
db 5, RATTATA
- map TIN_TOWER_2F
+ map_id TIN_TOWER_2F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -81,7 +83,7 @@
db 24, RATTATA
db 24, RATTATA
- map TIN_TOWER_3F
+ map_id TIN_TOWER_3F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -108,7 +110,7 @@
db 24, RATTATA
db 24, RATTATA
- map TIN_TOWER_4F
+ map_id TIN_TOWER_4F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -135,7 +137,7 @@
db 24, RATTATA
db 24, RATTATA
- map TIN_TOWER_5F
+ map_id TIN_TOWER_5F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -162,7 +164,7 @@
db 24, RATTATA
db 24, RATTATA
- map TIN_TOWER_6F
+ map_id TIN_TOWER_6F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -189,7 +191,7 @@
db 24, RATTATA
db 24, RATTATA
- map TIN_TOWER_7F
+ map_id TIN_TOWER_7F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -216,7 +218,7 @@
db 24, RATTATA
db 24, RATTATA
- map TIN_TOWER_8F
+ map_id TIN_TOWER_8F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -243,7 +245,7 @@
db 24, RATTATA
db 24, RATTATA
- map TIN_TOWER_9F
+ map_id TIN_TOWER_9F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 20, RATTATA
@@ -270,14 +272,14 @@
db 24, RATTATA
db 24, RATTATA
- map BURNED_TOWER_1F
+ map_id BURNED_TOWER_1F
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
; morn
db 13, RATTATA
db 14, KOFFING
db 15, RATTATA
db 14, ZUBAT
- db 15, RATTATA
+ db 16, KOFFING
db 15, RATICATE
db 15, RATICATE
; day
@@ -285,7 +287,7 @@
db 14, KOFFING
db 15, RATTATA
db 14, ZUBAT
- db 15, RATTATA
+ db 16, KOFFING
db 15, RATICATE
db 15, RATICATE
; nite
@@ -293,65 +295,87 @@
db 14, KOFFING
db 15, RATTATA
db 14, ZUBAT
- db 15, RATTATA
+ db 16, KOFFING
db 15, RATICATE
db 15, RATICATE
- map BURNED_TOWER_B1F
+ map_id BURNED_TOWER_B1F
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 14, RATTATA
db 14, KOFFING
db 16, KOFFING
+ db 16, RATTATA
db 15, ZUBAT
- db 12, KOFFING
- db 16, KOFFING
- db 16, WEEZING
+ db 14, MAGMAR
+ db 14, MAGMAR
; day
db 14, RATTATA
db 14, KOFFING
db 16, KOFFING
+ db 16, MAGMAR
db 15, ZUBAT
- db 12, KOFFING
- db 16, KOFFING
- db 16, WEEZING
+ db 14, RATTATA
+ db 14, RATTATA
; nite
db 14, RATTATA
db 14, KOFFING
db 16, KOFFING
+ db 16, RATTATA
db 15, ZUBAT
- db 12, KOFFING
- db 16, KOFFING
- db 16, WEEZING
+ db 14, MAGMAR
+ db 14, MAGMAR
- map NATIONAL_PARK
+ map_id NATIONAL_PARK
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 12, NIDORAN_M
- db 12, NIDORAN_F
- db 14, LEDYBA
- db 13, PIDGEY
db 10, CATERPIE
- db 10, WEEDLE
- db 10, WEEDLE
+ db 10, METAPOD
+ db 12, CATERPIE
+ db 12, PIDGEY
+ db 10, PIDGEY
+ db 14, PIDGEY
+ db 14, PIDGEY
; day
- db 12, NIDORAN_F
- db 12, NIDORAN_M
- db 14, SUNKERN
- db 13, PIDGEY
db 10, CATERPIE
+ db 10, METAPOD
+ db 11, SUNKERN
+ db 12, PIDGEY
+ db 13, SUNKERN
+ db 14, PIDGEY
+ db 14, PIDGEY
+
+ ELIF DEF(_SILVER)
+ ; morn
db 10, WEEDLE
+ db 10, KAKUNA
+ db 12, WEEDLE
+ db 12, PIDGEY
+ db 10, PIDGEY
+ db 14, PIDGEY
+ db 14, PIDGEY
+ ; day
db 10, WEEDLE
+ db 10, KAKUNA
+ db 11, SUNKERN
+ db 12, PIDGEY
+ db 13, SUNKERN
+ db 14, PIDGEY
+ db 14, PIDGEY
+ ENDC
+
; nite
- db 12, PSYDUCK
- db 13, HOOTHOOT
- db 14, SPINARAK
- db 15, HOOTHOOT
- db 10, VENONAT
- db 12, VENONAT
- db 12, VENONAT
+ db 10, HOOTHOOT
+ db 10, HOOTHOOT
+ db 12, HOOTHOOT
+ db 12, HOOTHOOT
+ db 10, HOOTHOOT
+ db 14, HOOTHOOT
+ db 14, HOOTHOOT
- map RUINS_OF_ALPH_OUTSIDE
+ map_id RUINS_OF_ALPH_OUTSIDE
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
; morn
db 20, NATU
@@ -374,11 +398,11 @@
db 22, NATU
db 18, NATU
db 24, NATU
- db 22, WOOPER
- db 22, QUAGSIRE
- db 22, QUAGSIRE
+ db 20, SMEARGLE
+ db 22, SMEARGLE
+ db 22, SMEARGLE
- map RUINS_OF_ALPH_INNER_CHAMBER
+ map_id RUINS_OF_ALPH_INNER_CHAMBER
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 5, UNOWN
@@ -405,8 +429,10 @@
db 5, UNOWN
db 5, UNOWN
- map UNION_CAVE_1F
+ map_id UNION_CAVE_1F
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 6, GEODUDE
db 6, SANDSHREW
@@ -425,68 +451,124 @@
db 6, ONIX
; nite
db 6, GEODUDE
+ db 6, SANDSHREW
+ db 5, ZUBAT
+ db 4, RATTATA
+ db 7, ZUBAT
+ db 6, ONIX
+ db 6, ONIX
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 6, GEODUDE
db 6, RATTATA
- db 5, WOOPER
+ db 5, ZUBAT
db 4, RATTATA
db 7, ZUBAT
db 6, ONIX
db 6, ONIX
+ ; day
+ db 6, GEODUDE
+ db 6, RATTATA
+ db 5, ZUBAT
+ db 4, RATTATA
+ db 7, ZUBAT
+ db 6, ONIX
+ db 6, ONIX
+ ; nite
+ db 6, GEODUDE
+ db 6, RATTATA
+ db 5, ZUBAT
+ db 4, RATTATA
+ db 7, ZUBAT
+ db 6, ONIX
+ db 6, ONIX
+ ENDC
- map UNION_CAVE_B1F
+ map_id UNION_CAVE_B1F
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 8, GEODUDE
- db 6, ZUBAT
- db 8, ZUBAT
+ db 8, SANDSHREW
+ db 7, ZUBAT
db 8, ONIX
+ db 9, ZUBAT
+ db 6, RATTATA
db 6, RATTATA
- db 8, RATTATA
- db 8, RATTATA
; day
db 8, GEODUDE
- db 6, ZUBAT
- db 8, ZUBAT
+ db 8, SANDSHREW
+ db 7, ZUBAT
db 8, ONIX
+ db 9, ZUBAT
+ db 6, RATTATA
db 6, RATTATA
- db 8, RATTATA
- db 8, RATTATA
; nite
db 8, GEODUDE
- db 6, ZUBAT
- db 8, WOOPER
+ db 8, SANDSHREW
+ db 7, ZUBAT
db 8, ONIX
+ db 9, ZUBAT
db 6, RATTATA
+ db 6, RATTATA
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 8, GEODUDE
db 8, RATTATA
+ db 7, ZUBAT
+ db 8, ONIX
+ db 9, ZUBAT
+ db 6, RATTATA
+ db 6, RATTATA
+ ; day
+ db 8, GEODUDE
db 8, RATTATA
+ db 7, ZUBAT
+ db 8, ONIX
+ db 9, ZUBAT
+ db 6, RATTATA
+ db 6, RATTATA
+ ; nite
+ db 8, GEODUDE
+ db 8, RATTATA
+ db 7, ZUBAT
+ db 8, ONIX
+ db 9, ZUBAT
+ db 6, RATTATA
+ db 6, RATTATA
+ ENDC
- map UNION_CAVE_B2F
+ map_id UNION_CAVE_B2F
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
; morn
db 22, ZUBAT
+ db 22, RATICATE
db 22, GOLBAT
- db 22, ZUBAT
- db 21, RATICATE
- db 20, GEODUDE
+ db 21, GEODUDE
+ db 20, RATTATA
db 23, ONIX
db 23, ONIX
; day
db 22, ZUBAT
+ db 22, RATICATE
db 22, GOLBAT
- db 22, ZUBAT
- db 21, RATICATE
- db 20, GEODUDE
+ db 21, GEODUDE
+ db 20, RATTATA
db 23, ONIX
db 23, ONIX
; nite
db 22, ZUBAT
+ db 22, RATICATE
db 22, GOLBAT
- db 22, QUAGSIRE
- db 21, RATICATE
- db 20, GEODUDE
+ db 21, GEODUDE
+ db 20, RATTATA
db 23, ONIX
db 23, ONIX
- map SLOWPOKE_WELL_B1F
+ map_id SLOWPOKE_WELL_B1F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 5, ZUBAT
@@ -513,7 +595,7 @@
db 8, SLOWPOKE
db 8, SLOWPOKE
- map SLOWPOKE_WELL_B2F
+ map_id SLOWPOKE_WELL_B2F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
; morn
db 21, ZUBAT
@@ -540,88 +622,110 @@
db 23, SLOWPOKE
db 23, SLOWPOKE
- map ILEX_FOREST
+ map_id ILEX_FOREST
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 5, CATERPIE
- db 5, WEEDLE
- db 7, METAPOD
- db 7, KAKUNA
- db 7, PIDGEY
+ db 6, METAPOD
+ db 6, CATERPIE
+ db 5, PARAS
+ db 5, ZUBAT
db 6, PARAS
db 6, PARAS
; day
db 5, CATERPIE
+ db 6, CATERPIE
+ db 5, METAPOD
+ db 6, METAPOD
+ db 5, ZUBAT
+ db 6, PARAS
+ db 6, PARAS
+
+ ELIF DEF(_SILVER)
+ ; morn
db 5, WEEDLE
- db 7, METAPOD
- db 7, KAKUNA
- db 7, PIDGEY
+ db 6, KAKUNA
+ db 6, WEEDLE
+ db 5, PARAS
+ db 5, ZUBAT
+ db 6, PARAS
+ db 6, PARAS
+ ; day
+ db 5, WEEDLE
+ db 6, WEEDLE
+ db 5, KAKUNA
+ db 6, KAKUNA
+ db 5, ZUBAT
db 6, PARAS
db 6, PARAS
+ ENDC
+
; nite
db 5, ODDISH
- db 5, VENONAT
- db 7, ODDISH
- db 7, PSYDUCK
- db 7, HOOTHOOT
+ db 6, ODDISH
+ db 6, ZUBAT
+ db 5, PARAS
+ db 5, ZUBAT
db 6, PARAS
db 6, PARAS
- map MOUNT_MORTAR_1F_OUTSIDE
+ map_id MOUNT_MORTAR_1F_OUTSIDE
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
- db 14, RATTATA
db 13, ZUBAT
+ db 15, ZUBAT
db 14, MACHOP
- db 13, GOLBAT
+ db 14, RATTATA
db 14, GEODUDE
- db 16, RATICATE
- db 16, RATICATE
+ db 16, RATTATA
+ db 15, MARILL
; day
- db 14, RATTATA
db 13, ZUBAT
+ db 15, ZUBAT
db 14, MACHOP
- db 13, GOLBAT
+ db 14, RATTATA
db 14, GEODUDE
- db 16, RATICATE
- db 16, RATICATE
+ db 16, RATTATA
+ db 15, MARILL
; nite
- db 14, RATTATA
db 13, ZUBAT
- db 14, MARILL
- db 13, GOLBAT
+ db 15, ZUBAT
+ db 14, MACHOP
+ db 14, RATTATA
db 14, GEODUDE
- db 16, RATICATE
- db 16, RATICATE
+ db 16, RATTATA
+ db 15, MARILL
- map MOUNT_MORTAR_1F_INSIDE
+ map_id MOUNT_MORTAR_1F_INSIDE
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 13, GEODUDE
+ db 13, MACHOP
+ db 15, GEODUDE
db 14, RATTATA
db 15, MACHOP
- db 14, RATICATE
- db 15, ZUBAT
- db 15, GOLBAT
- db 15, GOLBAT
+ db 14, ZUBAT
+ db 14, ZUBAT
; day
db 13, GEODUDE
+ db 13, MACHOP
+ db 15, GEODUDE
db 14, RATTATA
db 15, MACHOP
- db 14, RATICATE
- db 15, ZUBAT
- db 15, GOLBAT
- db 15, GOLBAT
+ db 14, ZUBAT
+ db 14, ZUBAT
; nite
db 13, GEODUDE
+ db 13, MACHOP
+ db 15, GEODUDE
db 14, RATTATA
- db 15, RATICATE
+ db 15, MACHOP
+ db 14, ZUBAT
db 14, ZUBAT
- db 15, MARILL
- db 15, GOLBAT
- db 15, GOLBAT
- map MOUNT_MORTAR_2F_INSIDE
+ map_id MOUNT_MORTAR_2F_INSIDE
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 31, GRAVELER
@@ -641,507 +745,768 @@
db 30, GOLBAT
; nite
db 31, GRAVELER
+ db 32, MACHOKE
db 31, GEODUDE
db 30, RATICATE
+ db 28, MACHOP
+ db 30, GOLBAT
db 30, GOLBAT
- db 28, MARILL
- db 32, GOLBAT
- db 32, GOLBAT
- map MOUNT_MORTAR_B1F
+ map_id MOUNT_MORTAR_B1F
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 15, ZUBAT
db 17, ZUBAT
- db 17, GOLBAT
+ db 16, RATTATA
db 16, MACHOP
db 16, GEODUDE
- db 18, RATICATE
- db 18, RATICATE
+ db 16, RATICATE
+ db 16, RATICATE
; day
db 15, ZUBAT
db 17, ZUBAT
- db 17, GOLBAT
+ db 16, RATTATA
db 16, MACHOP
db 16, GEODUDE
- db 18, RATICATE
- db 18, RATICATE
+ db 16, RATICATE
+ db 16, RATICATE
; nite
db 15, ZUBAT
db 17, ZUBAT
- db 17, GOLBAT
- db 16, MARILL
+ db 16, RATTATA
+ db 16, MACHOP
db 16, GEODUDE
- db 18, RATICATE
- db 18, RATICATE
+ db 16, RATICATE
+ db 16, RATICATE
- map ICE_PATH_1F
+ map_id ICE_PATH_1F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 21, SWINUB
+ db 22, GOLBAT
+ db 22, ZUBAT
+ db 23, SWINUB
db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
+ ; day
+ db 21, SWINUB
db 22, GOLBAT
+ db 22, ZUBAT
db 23, SWINUB
- db 24, GOLBAT
+ db 22, JYNX
+ db 20, JYNX
+ db 20, JYNX
+ ; nite
+ db 21, SWINUB
db 22, GOLBAT
+ db 22, ZUBAT
+ db 23, SWINUB
+ db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 21, SWINUB
db 22, GOLBAT
+ db 22, DELIBIRD
+ db 23, SWINUB
+ db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
; day
db 21, SWINUB
- db 22, ZUBAT
db 22, GOLBAT
+ db 22, DELIBIRD
db 23, SWINUB
- db 24, GOLBAT
+ db 22, JYNX
+ db 20, JYNX
+ db 20, JYNX
+ ; nite
+ db 21, SWINUB
db 22, GOLBAT
+ db 22, DELIBIRD
+ db 23, SWINUB
+ db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
+ ENDC
+
+ map_id ICE_PATH_B1F
+ db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
+ ; morn
+ db 21, SWINUB
db 22, GOLBAT
+ db 22, ZUBAT
+ db 23, SWINUB
+ db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
+ ; day
+ db 21, SWINUB
+ db 22, GOLBAT
+ db 22, ZUBAT
+ db 23, SWINUB
+ db 22, JYNX
+ db 20, JYNX
+ db 20, JYNX
; nite
- db 21, DELIBIRD
+ db 21, SWINUB
+ db 22, GOLBAT
+ db 22, ZUBAT
+ db 23, SWINUB
db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 21, SWINUB
db 22, GOLBAT
- db 23, DELIBIRD
- db 24, GOLBAT
+ db 22, DELIBIRD
+ db 23, SWINUB
+ db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
+ ; day
+ db 21, SWINUB
db 22, GOLBAT
+ db 22, DELIBIRD
+ db 23, SWINUB
+ db 22, JYNX
+ db 20, JYNX
+ db 20, JYNX
+ ; nite
+ db 21, SWINUB
db 22, GOLBAT
+ db 22, DELIBIRD
+ db 23, SWINUB
+ db 22, ZUBAT
+ db 22, JYNX
+ db 22, JYNX
+ ENDC
- map ICE_PATH_B1F
+ map_id ICE_PATH_B2F_MAHOGANY_SIDE
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 22, SWINUB
+ db 23, GOLBAT
+ db 23, ZUBAT
+ db 24, SWINUB
db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
+ ; day
+ db 22, SWINUB
db 23, GOLBAT
+ db 23, ZUBAT
db 24, SWINUB
- db 25, GOLBAT
+ db 23, JYNX
+ db 21, JYNX
+ db 21, JYNX
+ ; nite
+ db 22, SWINUB
db 23, GOLBAT
- db 22, JYNX
+ db 23, ZUBAT
+ db 24, SWINUB
+ db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 22, SWINUB
+ db 23, GOLBAT
+ db 23, DELIBIRD
+ db 24, SWINUB
+ db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
; day
db 22, SWINUB
+ db 23, GOLBAT
+ db 23, DELIBIRD
+ db 24, SWINUB
+ db 23, JYNX
+ db 21, JYNX
+ db 21, JYNX
+ ; nite
+ db 22, SWINUB
+ db 23, GOLBAT
+ db 23, DELIBIRD
+ db 24, SWINUB
db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
+ ENDC
+
+ map_id ICE_PATH_B2F_BLACKTHORN_SIDE
+ db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
+ ; morn
+ db 22, SWINUB
db 23, GOLBAT
+ db 23, ZUBAT
db 24, SWINUB
- db 25, GOLBAT
+ db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
+ ; day
+ db 22, SWINUB
db 23, GOLBAT
- db 22, JYNX
+ db 23, ZUBAT
+ db 24, SWINUB
+ db 23, JYNX
+ db 21, JYNX
+ db 21, JYNX
; nite
- db 22, DELIBIRD
+ db 22, SWINUB
+ db 23, GOLBAT
db 23, ZUBAT
+ db 24, SWINUB
+ db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 22, SWINUB
db 23, GOLBAT
- db 24, DELIBIRD
- db 25, GOLBAT
+ db 23, DELIBIRD
+ db 24, SWINUB
+ db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
+ ; day
+ db 22, SWINUB
+ db 23, GOLBAT
+ db 23, DELIBIRD
+ db 24, SWINUB
+ db 23, JYNX
+ db 21, JYNX
+ db 21, JYNX
+ ; nite
+ db 22, SWINUB
db 23, GOLBAT
- db 22, SNEASEL
+ db 23, DELIBIRD
+ db 24, SWINUB
+ db 23, ZUBAT
+ db 23, JYNX
+ db 23, JYNX
+ ENDC
- map ICE_PATH_B2F_MAHOGANY_SIDE
+ map_id ICE_PATH_B3F
db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 23, SWINUB
- db 24, ZUBAT
db 24, GOLBAT
+ db 24, ZUBAT
db 25, SWINUB
- db 26, GOLBAT
- db 22, JYNX
+ db 24, ZUBAT
+ db 24, JYNX
db 24, JYNX
; day
db 23, SWINUB
- db 24, ZUBAT
db 24, GOLBAT
+ db 24, ZUBAT
db 25, SWINUB
- db 26, GOLBAT
- db 22, JYNX
db 24, JYNX
+ db 22, JYNX
+ db 22, JYNX
; nite
- db 23, DELIBIRD
- db 24, ZUBAT
+ db 23, SWINUB
db 24, GOLBAT
- db 25, DELIBIRD
- db 26, GOLBAT
- db 22, SNEASEL
- db 24, SNEASEL
+ db 24, ZUBAT
+ db 25, SWINUB
+ db 24, ZUBAT
+ db 24, JYNX
+ db 24, JYNX
- map ICE_PATH_B2F_BLACKTHORN_SIDE
- db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+ ELIF DEF(_SILVER)
; morn
db 23, SWINUB
- db 24, ZUBAT
db 24, GOLBAT
+ db 24, DELIBIRD
db 25, SWINUB
- db 26, GOLBAT
- db 22, JYNX
+ db 24, ZUBAT
+ db 24, JYNX
db 24, JYNX
; day
db 23, SWINUB
- db 24, ZUBAT
db 24, GOLBAT
+ db 24, DELIBIRD
db 25, SWINUB
- db 26, GOLBAT
- db 22, JYNX
db 24, JYNX
- ; nite
- db 23, DELIBIRD
- db 24, ZUBAT
- db 24, GOLBAT
- db 25, DELIBIRD
- db 26, GOLBAT
- db 22, SNEASEL
- db 24, SNEASEL
-
- map ICE_PATH_B3F
- db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
- ; morn
- db 24, SWINUB
- db 25, ZUBAT
- db 25, GOLBAT
- db 26, SWINUB
db 22, JYNX
- db 24, JYNX
- db 26, JYNX
- ; day
- db 24, SWINUB
- db 25, ZUBAT
- db 25, GOLBAT
- db 26, SWINUB
db 22, JYNX
- db 24, JYNX
- db 26, JYNX
; nite
+ db 23, SWINUB
+ db 24, GOLBAT
db 24, DELIBIRD
- db 25, ZUBAT
- db 25, GOLBAT
- db 26, DELIBIRD
- db 22, SNEASEL
- db 24, SNEASEL
- db 26, SNEASEL
+ db 25, SWINUB
+ db 24, ZUBAT
+ db 24, JYNX
+ db 24, JYNX
+ ENDC
- map WHIRL_ISLAND_NW
+ map_id WHIRL_ISLAND_NW
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; day
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; nite
db 22, KRABBY
db 23, ZUBAT
- db 22, KRABBY
db 24, KRABBY
- db 25, GOLBAT
- db 24, GOLBAT
- db 24, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
+ db 24, SEEL
+ db 24, SEEL
- map WHIRL_ISLAND_NE
+ map_id WHIRL_ISLAND_NE
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; day
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; nite
db 22, KRABBY
db 23, ZUBAT
- db 22, KRABBY
db 24, KRABBY
- db 25, GOLBAT
- db 24, GOLBAT
- db 24, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
+ db 24, SEEL
+ db 24, SEEL
- map WHIRL_ISLAND_SW
+ map_id WHIRL_ISLAND_SW
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; day
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; nite
db 22, KRABBY
db 23, ZUBAT
- db 22, KRABBY
db 24, KRABBY
- db 25, GOLBAT
- db 24, GOLBAT
- db 24, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
+ db 24, SEEL
+ db 24, SEEL
- map WHIRL_ISLAND_CAVE
+ map_id WHIRL_ISLAND_CAVE
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; day
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; nite
db 22, KRABBY
db 23, ZUBAT
- db 22, KRABBY
db 24, KRABBY
- db 25, GOLBAT
- db 24, GOLBAT
- db 24, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
+ db 24, SEEL
+ db 24, SEEL
- map WHIRL_ISLAND_SE
+ map_id WHIRL_ISLAND_SE
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; day
db 22, KRABBY
db 23, ZUBAT
- db 22, SEEL
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
db 24, SEEL
db 24, SEEL
; nite
db 22, KRABBY
db 23, ZUBAT
- db 22, KRABBY
db 24, KRABBY
- db 25, GOLBAT
+ db 22, SEEL
+ db 23, GOLBAT
+ db 24, SEEL
+ db 24, SEEL
+
+ map_id WHIRL_ISLAND_B1F
+ db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+ ; morn
+ db 23, KRABBY
+ db 24, ZUBAT
+ db 25, KRABBY
+ db 23, SEEL
+ db 24, GOLBAT
+ db 25, SEEL
+ db 25, SEEL
+ ; day
+ db 23, KRABBY
+ db 24, ZUBAT
+ db 25, KRABBY
+ db 23, SEEL
db 24, GOLBAT
+ db 25, SEEL
+ db 25, SEEL
+ ; nite
+ db 23, KRABBY
+ db 24, ZUBAT
+ db 25, KRABBY
+ db 23, SEEL
db 24, GOLBAT
+ db 25, SEEL
+ db 25, SEEL
- map WHIRL_ISLAND_B1F
+ map_id WHIRL_ISLAND_B2F
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 23, KRABBY
db 24, ZUBAT
- db 23, SEEL
db 25, KRABBY
- db 26, GOLBAT
+ db 23, SEEL
+ db 24, GOLBAT
db 25, SEEL
db 25, SEEL
; day
db 23, KRABBY
db 24, ZUBAT
- db 23, SEEL
db 25, KRABBY
- db 26, GOLBAT
+ db 23, SEEL
+ db 24, GOLBAT
db 25, SEEL
db 25, SEEL
; nite
db 23, KRABBY
db 24, ZUBAT
- db 23, KRABBY
db 25, KRABBY
- db 26, GOLBAT
- db 25, GOLBAT
- db 25, GOLBAT
+ db 23, SEEL
+ db 24, GOLBAT
+ db 25, SEEL
+ db 25, SEEL
- map WHIRL_ISLAND_B2F
+ map_id WHIRL_ISLAND_LUGIA_CHAMBER
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 24, KRABBY
db 25, ZUBAT
- db 24, SEEL
db 26, KRABBY
- db 27, GOLBAT
+ db 24, SEEL
+ db 25, GOLBAT
db 26, SEEL
db 26, SEEL
; day
db 24, KRABBY
db 25, ZUBAT
- db 24, SEEL
db 26, KRABBY
- db 27, GOLBAT
+ db 24, SEEL
+ db 25, GOLBAT
db 26, SEEL
db 26, SEEL
; nite
db 24, KRABBY
db 25, ZUBAT
- db 24, KRABBY
db 26, KRABBY
- db 27, GOLBAT
- db 26, GOLBAT
- db 26, GOLBAT
+ db 24, SEEL
+ db 25, GOLBAT
+ db 26, SEEL
+ db 26, SEEL
- map WHIRL_ISLAND_LUGIA_CHAMBER
+ map_id SILVER_CAVE_ROOM_1
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 25, KRABBY
- db 26, ZUBAT
- db 25, SEEL
- db 27, KRABBY
- db 28, GOLBAT
- db 27, SEEL
- db 27, SEEL
+ db 42, ONIX
+ db 44, URSARING
+ db 43, GRAVELER
+ db 43, GRAVELER
+ db 45, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
; day
- db 25, KRABBY
- db 26, ZUBAT
- db 25, SEEL
- db 27, KRABBY
- db 28, GOLBAT
- db 27, SEEL
- db 27, SEEL
+ db 42, ONIX
+ db 44, URSARING
+ db 43, GRAVELER
+ db 43, GRAVELER
+ db 45, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
; nite
- db 25, KRABBY
- db 26, ZUBAT
- db 25, KRABBY
- db 27, KRABBY
- db 28, GOLBAT
- db 27, GOLBAT
- db 27, GOLBAT
+ db 42, ONIX
+ db 44, URSARING
+ db 43, GRAVELER
+ db 43, GRAVELER
+ db 45, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
- map SILVER_CAVE_ROOM_1
- db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+ ELIF DEF(_SILVER)
; morn
- db 43, GRAVELER
- db 44, URSARING
db 42, ONIX
- db 45, MAGMAR
+ db 44, DONPHAN
+ db 43, GRAVELER
+ db 43, GRAVELER
db 45, GOLBAT
db 20, LARVITAR
db 15, LARVITAR
; day
- db 43, GRAVELER
- db 44, URSARING
db 42, ONIX
- db 45, MAGMAR
+ db 44, DONPHAN
+ db 43, GRAVELER
+ db 43, GRAVELER
db 45, GOLBAT
db 20, LARVITAR
db 15, LARVITAR
; nite
- db 43, GRAVELER
- db 44, GOLBAT
db 42, ONIX
- db 42, GOLBAT
- db 45, GOLDUCK
- db 46, GOLBAT
- db 46, GOLBAT
+ db 44, DONPHAN
+ db 43, GRAVELER
+ db 43, GRAVELER
+ db 45, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ENDC
- map SILVER_CAVE_ROOM_2
+ map_id SILVER_CAVE_ROOM_2
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 48, GOLBAT
- db 48, MACHOKE
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
db 47, URSARING
- db 46, PARASECT
- db 48, PARASECT
- db 15, LARVITAR
+ db 45, QUAGSIRE
+ db 48, GOLBAT
db 20, LARVITAR
+ db 15, LARVITAR
; day
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
+ db 47, URSARING
+ db 45, QUAGSIRE
db 48, GOLBAT
- db 48, MACHOKE
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ; nite
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
db 47, URSARING
- db 46, PARASECT
- db 48, PARASECT
+ db 45, MISDREAVUS
+ db 48, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
+ db 47, DONPHAN
+ db 45, QUAGSIRE
+ db 48, GOLBAT
+ db 20, LARVITAR
db 15, LARVITAR
+ ; day
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
+ db 47, DONPHAN
+ db 45, QUAGSIRE
+ db 48, GOLBAT
db 20, LARVITAR
+ db 15, LARVITAR
; nite
- db 48, GOLBAT
+ db 45, QUAGSIRE
db 48, GOLDUCK
- db 46, GOLBAT
- db 46, PARASECT
- db 48, PARASECT
- db 45, MISDREAVUS
+ db 47, DONPHAN
db 45, MISDREAVUS
+ db 48, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ENDC
- map SILVER_CAVE_ROOM_3
+ map_id SILVER_CAVE_ROOM_3
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 51, GOLBAT
db 48, ONIX
- db 48, GRAVELER
+ db 48, GOLBAT
db 50, URSARING
+ db 51, GOLDUCK
db 20, LARVITAR
db 15, LARVITAR
- db 20, PUPITAR
; day
db 51, GOLBAT
db 48, ONIX
- db 48, GRAVELER
+ db 48, GOLBAT
db 50, URSARING
+ db 51, GOLDUCK
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ; nite
+ db 51, GOLBAT
+ db 48, ONIX
+ db 48, GOLBAT
+ db 50, URSARING
+ db 51, GOLDUCK
+ db 20, LARVITAR
+ db 15, LARVITAR
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 51, GOLBAT
+ db 48, ONIX
+ db 48, GOLBAT
+ db 50, DONPHAN
+ db 51, GOLDUCK
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ; day
+ db 51, GOLBAT
+ db 48, ONIX
+ db 48, GOLBAT
+ db 50, DONPHAN
+ db 51, GOLDUCK
db 20, LARVITAR
db 15, LARVITAR
- db 20, PUPITAR
; nite
db 51, GOLBAT
db 48, ONIX
- db 48, GRAVELER
- db 49, GOLBAT
- db 45, GOLDUCK
- db 53, GOLBAT
- db 53, GOLBAT
+ db 48, GOLBAT
+ db 50, DONPHAN
+ db 51, GOLDUCK
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ENDC
- map SILVER_CAVE_ITEM_ROOMS
+ map_id SILVER_CAVE_ITEM_ROOMS
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
+ db 47, URSARING
+ db 45, QUAGSIRE
db 48, GOLBAT
- db 46, GOLBAT
- db 50, GOLBAT
- db 46, PARASECT
- db 48, PARASECT
- db 50, PARASECT
- db 52, PARASECT
+ db 20, LARVITAR
+ db 15, LARVITAR
; day
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
+ db 47, URSARING
+ db 45, QUAGSIRE
db 48, GOLBAT
- db 46, GOLBAT
- db 50, GOLBAT
- db 46, PARASECT
- db 48, PARASECT
- db 50, PARASECT
- db 52, PARASECT
+ db 20, LARVITAR
+ db 15, LARVITAR
; nite
db 45, MISDREAVUS
+ db 48, GOLDUCK
+ db 47, URSARING
+ db 45, QUAGSIRE
db 48, GOLBAT
- db 50, GOLBAT
- db 46, PARASECT
- db 48, PARASECT
- db 50, PARASECT
- db 52, PARASECT
+ db 20, LARVITAR
+ db 15, LARVITAR
- map DARK_CAVE_VIOLET_ENTRANCE
+ ELIF DEF(_SILVER)
+ ; morn
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
+ db 47, DONPHAN
+ db 45, QUAGSIRE
+ db 48, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ; day
+ db 45, QUAGSIRE
+ db 48, GOLDUCK
+ db 47, DONPHAN
+ db 45, QUAGSIRE
+ db 48, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ; nite
+ db 45, MISDREAVUS
+ db 48, GOLDUCK
+ db 47, DONPHAN
+ db 45, QUAGSIRE
+ db 48, GOLBAT
+ db 20, LARVITAR
+ db 15, LARVITAR
+ ENDC
+
+ map_id DARK_CAVE_VIOLET_ENTRANCE
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
; morn
db 3, GEODUDE
db 2, ZUBAT
db 2, GEODUDE
db 4, GEODUDE
- db 2, TEDDIURSA
+ db 3, ZUBAT
db 4, ZUBAT
db 4, DUNSPARCE
; day
@@ -1149,7 +1514,7 @@
db 2, ZUBAT
db 2, GEODUDE
db 4, GEODUDE
- db 2, ZUBAT
+ db 3, ZUBAT
db 4, ZUBAT
db 4, DUNSPARCE
; nite
@@ -1157,26 +1522,26 @@
db 2, ZUBAT
db 2, GEODUDE
db 4, GEODUDE
- db 2, ZUBAT
+ db 3, ZUBAT
db 4, ZUBAT
db 4, DUNSPARCE
- map DARK_CAVE_BLACKTHORN_ENTRANCE
+ map_id DARK_CAVE_BLACKTHORN_ENTRANCE
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
; morn
db 23, GEODUDE
db 23, ZUBAT
db 25, GRAVELER
- db 25, URSARING
- db 20, TEDDIURSA
+ db 20, WOBBUFFET
+ db 25, WOBBUFFET
db 23, GOLBAT
db 23, GOLBAT
; day
db 23, GEODUDE
db 23, ZUBAT
db 25, GRAVELER
- db 25, URSARING
- db 30, URSARING
+ db 20, WOBBUFFET
+ db 25, WOBBUFFET
db 23, GOLBAT
db 23, GOLBAT
; nite
@@ -1188,444 +1553,791 @@
db 23, GOLBAT
db 23, GOLBAT
- map ROUTE_29
+ map_id ROUTE_29
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 2, PIDGEY
- db 2, SENTRET
- db 3, PIDGEY
db 3, SENTRET
- db 2, RATTATA
- db 3, HOPPIP
- db 3, HOPPIP
+ db 3, PIDGEY
+ db 2, SENTRET
+ db 4, RATTATA
+ db 4, PIDGEY
+ db 4, PIDGEY
; day
db 2, PIDGEY
- db 2, SENTRET
- db 3, PIDGEY
db 3, SENTRET
- db 2, RATTATA
- db 3, HOPPIP
- db 3, HOPPIP
+ db 3, PIDGEY
+ db 2, SENTRET
+ db 4, RATTATA
+ db 4, PIDGEY
+ db 4, PIDGEY
; nite
db 2, HOOTHOOT
- db 2, RATTATA
- db 3, HOOTHOOT
- db 3, RATTATA
- db 2, RATTATA
db 3, HOOTHOOT
db 3, HOOTHOOT
+ db 2, RATTATA
+ db 4, RATTATA
+ db 4, HOOTHOOT
+ db 4, HOOTHOOT
- map ROUTE_30
+ map_id ROUTE_30
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 3, LEDYBA
+ db 2, PIDGEY
db 3, CATERPIE
db 4, CATERPIE
+ db 4, METAPOD
+ db 4, PIDGEY
+ db 4, PIDGEY
db 4, PIDGEY
- db 3, WEEDLE
- db 4, HOPPIP
- db 4, HOPPIP
; day
- db 3, PIDGEY
+ db 2, PIDGEY
db 3, CATERPIE
+ db 4, PIDGEY
+ db 4, METAPOD
db 4, CATERPIE
+ db 5, METAPOD
+ db 5, METAPOD
+ ; nite
+ db 3, SPINARAK
+ db 3, RATTATA
+ db 4, HOOTHOOT
+ db 4, RATTATA
+ db 4, HOOTHOOT
+ db 4, HOOTHOOT
+ db 4, HOOTHOOT
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 3, LEDYBA
+ db 3, WEEDLE
+ db 4, WEEDLE
+ db 4, KAKUNA
+ db 4, PIDGEY
+ db 4, PIDGEY
db 4, PIDGEY
+ ; day
+ db 2, PIDGEY
db 3, WEEDLE
- db 4, HOPPIP
- db 4, HOPPIP
+ db 4, PIDGEY
+ db 4, KAKUNA
+ db 4, WEEDLE
+ db 5, KAKUNA
+ db 5, KAKUNA
; nite
- db 3, SPINARAK
- db 3, HOOTHOOT
- db 4, POLIWAG
+ db 2, HOOTHOOT
+ db 3, RATTATA
+ db 4, HOOTHOOT
+ db 4, RATTATA
db 4, HOOTHOOT
- db 3, ZUBAT
db 4, HOOTHOOT
db 4, HOOTHOOT
+ ENDC
- map ROUTE_31
+ map_id ROUTE_31
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 4, LEDYBA
+ db 3, PIDGEY
db 4, CATERPIE
- db 5, BELLSPROUT
- db 5, PIDGEY
- db 4, WEEDLE
- db 5, HOPPIP
- db 5, HOPPIP
+ db 3, BELLSPROUT
+ db 5, METAPOD
+ db 5, CATERPIE
+ db 5, METAPOD
+ db 5, METAPOD
; day
- db 4, PIDGEY
+ db 3, PIDGEY
db 4, CATERPIE
- db 5, BELLSPROUT
+ db 3, BELLSPROUT
+ db 5, METAPOD
+ db 5, CATERPIE
+ db 6, METAPOD
+ db 6, METAPOD
+ ; nite
+ db 4, SPINARAK
+ db 4, RATTATA
+ db 3, BELLSPROUT
+ db 5, RATTATA
+ db 5, HOOTHOOT
+ db 5, HOOTHOOT
+ db 5, HOOTHOOT
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 4, LEDYBA
+ db 4, WEEDLE
+ db 3, BELLSPROUT
+ db 5, KAKUNA
db 5, PIDGEY
+ db 5, PIDGEY
+ db 5, PIDGEY
+ ; day
+ db 3, PIDGEY
db 4, WEEDLE
- db 5, HOPPIP
- db 5, HOPPIP
+ db 3, BELLSPROUT
+ db 5, KAKUNA
+ db 5, WEEDLE
+ db 6, KAKUNA
+ db 6, KAKUNA
; nite
- db 4, SPINARAK
- db 4, POLIWAG
- db 5, BELLSPROUT
+ db 3, HOOTHOOT
+ db 4, RATTATA
+ db 3, BELLSPROUT
+ db 5, RATTATA
db 5, HOOTHOOT
- db 4, ZUBAT
- db 5, GASTLY
- db 5, GASTLY
+ db 5, HOOTHOOT
+ db 5, HOOTHOOT
+ ENDC
- map ROUTE_32
+ map_id ROUTE_32
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
+ db 6, BELLSPROUT
+ db 4, RATTATA
+ db 6, MAREEP
+ db 6, HOPPIP
+ db 6, RATTATA
+ db 4, WOOPER
+ db 4, ZUBAT
+ ; day
+ db 6, BELLSPROUT
+ db 4, RATTATA
+ db 6, MAREEP
+ db 6, HOPPIP
+ db 6, RATTATA
+ db 8, RATTATA
+ db 8, RATTATA
+ ; nite
+ db 6, WOOPER
+ db 4, RATTATA
+ db 6, BELLSPROUT
+ db 6, MAREEP
+ db 8, WOOPER
+ db 8, ZUBAT
+ db 8, ZUBAT
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 6, BELLSPROUT
db 4, EKANS
- db 5, RATTATA
- db 7, BELLSPROUT
+ db 6, MAREEP
db 6, HOPPIP
- db 7, PIDGEY
- db 7, HOPPIP
- db 7, HOPPIP
+ db 6, RATTATA
+ db 4, WOOPER
+ db 4, ZUBAT
; day
+ db 6, BELLSPROUT
db 4, EKANS
- db 5, RATTATA
- db 7, BELLSPROUT
+ db 6, MAREEP
db 6, HOPPIP
- db 7, PIDGEY
- db 7, HOPPIP
- db 7, HOPPIP
+ db 6, RATTATA
+ db 8, RATTATA
+ db 8, RATTATA
; nite
- db 4, WOOPER
- db 5, RATTATA
- db 7, BELLSPROUT
- db 6, ZUBAT
- db 7, HOOTHOOT
- db 7, GASTLY
- db 7, GASTLY
+ db 6, WOOPER
+ db 4, EKANS
+ db 6, BELLSPROUT
+ db 6, MAREEP
+ db 8, WOOPER
+ db 8, ZUBAT
+ db 8, ZUBAT
+ ENDC
- map ROUTE_33
+ map_id ROUTE_33
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
+ db 6, HOPPIP
+ db 7, RATTATA
+ db 6, SPEAROW
db 6, RATTATA
+ db 8, HOPPIP
+ db 4, ZUBAT
+ db 4, ZUBAT
+ ; day
+ db 6, HOPPIP
+ db 7, RATTATA
db 6, SPEAROW
- db 6, GEODUDE
+ db 6, RATTATA
+ db 8, HOPPIP
+ db 8, RATTATA
+ db 8, RATTATA
+ ; nite
+ db 6, ZUBAT
+ db 7, RATTATA
+ db 6, RATTATA
+ db 6, RATTATA
+ db 8, ZUBAT
+ db 8, ZUBAT
+ db 8, ZUBAT
+
+ ELIF DEF(_SILVER)
+ ; morn
db 6, HOPPIP
db 7, EKANS
- db 7, HOPPIP
- db 7, HOPPIP
- ; day
- db 6, RATTATA
db 6, SPEAROW
- db 6, GEODUDE
+ db 6, RATTATA
+ db 8, HOPPIP
+ db 4, ZUBAT
+ db 4, ZUBAT
+ ; day
db 6, HOPPIP
db 7, EKANS
- db 7, HOPPIP
- db 7, HOPPIP
- ; nite
+ db 6, SPEAROW
db 6, RATTATA
+ db 8, HOPPIP
+ db 8, RATTATA
+ db 8, RATTATA
+ ; nite
db 6, ZUBAT
- db 6, GEODUDE
- db 6, ZUBAT
- db 7, RATTATA
- db 7, RATTATA
- db 7, RATTATA
+ db 7, EKANS
+ db 6, RATTATA
+ db 6, RATTATA
+ db 8, ZUBAT
+ db 8, ZUBAT
+ db 8, ZUBAT
+ ENDC
- map ROUTE_34
+ map_id ROUTE_34
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
- db 10, SNUBBULL
+ db 10, DROWZEE
db 11, RATTATA
- db 12, PIDGEY
+ db 12, DROWZEE
db 10, ABRA
- db 12, JIGGLYPUFF
+ db 13, RATTATA
db 10, DITTO
db 10, DITTO
; day
- db 10, SNUBBULL
+ db 10, DROWZEE
db 11, RATTATA
- db 12, PIDGEY
+ db 12, DROWZEE
db 10, ABRA
- db 12, JIGGLYPUFF
+ db 13, RATTATA
db 10, DITTO
db 10, DITTO
; nite
- db 12, DROWZEE
+ db 10, DROWZEE
db 11, RATTATA
- db 12, HOOTHOOT
+ db 12, DROWZEE
db 10, ABRA
- db 12, JIGGLYPUFF
+ db 13, RATTATA
db 10, DITTO
db 10, DITTO
- map ROUTE_35
+ map_id ROUTE_35
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 12, SNUBBULL
- db 14, PIDGEY
- db 13, GROWLITHE
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 14, DROWZEE
db 10, ABRA
- db 12, JIGGLYPUFF
+ db 14, PIDGEY
db 10, DITTO
db 12, YANMA
; day
- db 12, SNUBBULL
- db 14, PIDGEY
- db 13, GROWLITHE
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 14, DROWZEE
db 10, ABRA
- db 12, JIGGLYPUFF
+ db 14, PIDGEY
db 10, DITTO
db 12, YANMA
; nite
- db 12, DROWZEE
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 14, DROWZEE
+ db 10, ABRA
db 14, HOOTHOOT
- db 13, PSYDUCK
+ db 10, DITTO
+ db 12, YANMA
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 12, NIDORAN_F
+ db 12, NIDORAN_M
+ db 14, DROWZEE
db 10, ABRA
- db 12, JIGGLYPUFF
+ db 14, PIDGEY
db 10, DITTO
db 12, YANMA
+ ; day
+ db 12, NIDORAN_F
+ db 12, NIDORAN_M
+ db 14, DROWZEE
+ db 10, ABRA
+ db 14, PIDGEY
+ db 10, DITTO
+ db 12, YANMA
+ ; nite
+ db 12, NIDORAN_F
+ db 12, NIDORAN_M
+ db 14, DROWZEE
+ db 10, ABRA
+ db 14, HOOTHOOT
+ db 10, DITTO
+ db 12, YANMA
+ ENDC
- map ROUTE_36
+ map_id ROUTE_36
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 4, LEDYBA
- db 4, PIDGEY
- db 5, BELLSPROUT
- db 5, GROWLITHE
- db 5, PIDGEY
- db 6, PIDGEY
- db 6, PIDGEY
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 13, PIDGEY
+ db 13, GROWLITHE
+ db 13, STANTLER
+ db 15, PIDGEY
+ db 15, PIDGEY
; day
- db 4, PIDGEY
- db 4, PIDGEY
- db 5, BELLSPROUT
- db 5, GROWLITHE
- db 5, PIDGEY
- db 6, PIDGEY
- db 6, PIDGEY
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 14, PIDGEY
+ db 13, GROWLITHE
+ db 13, STANTLER
+ db 15, GROWLITHE
+ db 15, GROWLITHE
; nite
- db 4, SPINARAK
- db 4, HOOTHOOT
- db 5, BELLSPROUT
- db 5, HOOTHOOT
- db 5, HOOTHOOT
- db 5, GASTLY
- db 5, GASTLY
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 13, HOOTHOOT
+ db 13, GROWLITHE
+ db 13, STANTLER
+ db 15, HOOTHOOT
+ db 15, HOOTHOOT
- map ROUTE_37
+ ELIF DEF(_SILVER)
+ ; morn
+ db 12, NIDORAN_F
+ db 12, NIDORAN_M
+ db 13, PIDGEY
+ db 13, VULPIX
+ db 13, STANTLER
+ db 15, PIDGEY
+ db 15, PIDGEY
+ ; day
+ db 12, NIDORAN_F
+ db 12, NIDORAN_M
+ db 14, PIDGEY
+ db 13, VULPIX
+ db 13, STANTLER
+ db 15, VULPIX
+ db 15, VULPIX
+ ; nite
+ db 12, NIDORAN_F
+ db 12, NIDORAN_M
+ db 13, HOOTHOOT
+ db 13, VULPIX
+ db 13, STANTLER
+ db 15, HOOTHOOT
+ db 15, HOOTHOOT
+ ENDC
+
+ map_id ROUTE_37
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 13, LEDYBA
+ db 13, PIDGEY
+ db 15, STANTLER
+ db 15, PIDGEY
db 14, GROWLITHE
db 15, PIDGEY
- db 16, GROWLITHE
- db 15, PIDGEOTTO
- db 15, LEDIAN
- db 15, LEDIAN
+ db 15, PIDGEY
+ db 15, PIDGEY
; day
db 13, PIDGEY
- db 14, GROWLITHE
+ db 15, STANTLER
db 15, PIDGEY
- db 16, GROWLITHE
+ db 14, GROWLITHE
db 15, PIDGEOTTO
+ db 16, GROWLITHE
+ db 16, GROWLITHE
+ ; nite
+ db 13, SPINARAK
+ db 15, STANTLER
+ db 15, HOOTHOOT
+ db 14, GROWLITHE
+ db 15, SPINARAK
+ db 15, SPINARAK
+ db 15, SPINARAK
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 13, LEDYBA
+ db 15, STANTLER
db 15, PIDGEY
+ db 14, VULPIX
+ db 15, LEDYBA
+ db 15, LEDYBA
+ db 15, LEDYBA
+ ; day
+ db 13, PIDGEY
+ db 15, STANTLER
db 15, PIDGEY
+ db 14, VULPIX
+ db 15, PIDGEOTTO
+ db 16, VULPIX
+ db 16, VULPIX
; nite
- db 13, SPINARAK
- db 14, STANTLER
+ db 13, HOOTHOOT
+ db 15, STANTLER
+ db 15, HOOTHOOT
+ db 14, VULPIX
+ db 15, HOOTHOOT
db 15, HOOTHOOT
- db 16, STANTLER
- db 15, NOCTOWL
- db 15, ARIADOS
- db 15, ARIADOS
+ db 15, HOOTHOOT
+ ENDC
- map ROUTE_38
+ map_id ROUTE_38
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 16, RATTATA
db 16, RATICATE
db 16, MAGNEMITE
- db 16, PIDGEOTTO
- db 13, TAUROS
- db 13, MILTANK
+ db 16, FARFETCH_D
db 13, MILTANK
+ db 13, TAUROS
+ db 13, SNUBBULL
; day
db 16, RATTATA
db 16, RATICATE
db 16, MAGNEMITE
- db 16, PIDGEOTTO
- db 13, TAUROS
- db 13, MILTANK
+ db 16, FARFETCH_D
db 13, MILTANK
+ db 13, TAUROS
+ db 13, SNUBBULL
; nite
+ db 16, RATTATA
+ db 16, RATICATE
+ db 16, MAGNEMITE
+ db 16, RATTATA
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, SNUBBULL
+
+ ELIF DEF(_SILVER)
+ ; morn
db 16, MEOWTH
db 16, RATICATE
db 16, MAGNEMITE
- db 16, NOCTOWL
+ db 16, FARFETCH_D
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, SNUBBULL
+ ; day
db 16, MEOWTH
+ db 16, RATICATE
+ db 16, MAGNEMITE
+ db 16, FARFETCH_D
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, SNUBBULL
+ ; nite
db 16, MEOWTH
+ db 16, RATICATE
+ db 16, MAGNEMITE
db 16, MEOWTH
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, SNUBBULL
+ ENDC
- map ROUTE_39
- db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+ map_id ROUTE_39
+ IF DEF(_GOLD)
+ db 2 percent, 2 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 16, RATTATA
- db 16, RATICATE
+ db 17, RATICATE
db 16, MAGNEMITE
- db 16, PIDGEOTTO
+ db 16, FARFETCH_D
db 15, MILTANK
db 15, TAUROS
db 15, TAUROS
; day
db 16, RATTATA
- db 16, RATICATE
+ db 17, RATICATE
db 16, MAGNEMITE
- db 16, PIDGEOTTO
+ db 16, FARFETCH_D
db 15, MILTANK
db 15, TAUROS
db 15, TAUROS
; nite
+ db 16, RATTATA
+ db 17, RATICATE
+ db 16, MAGNEMITE
+ db 16, RATTATA
+ db 15, MILTANK
+ db 15, TAUROS
+ db 15, TAUROS
+
+ ELIF DEF(_SILVER)
+ db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
+ ; morn
db 16, MEOWTH
- db 16, RATICATE
+ db 17, RATICATE
db 16, MAGNEMITE
- db 16, NOCTOWL
- db 18, MEOWTH
- db 18, MEOWTH
- db 18, MEOWTH
+ db 16, FARFETCH_D
+ db 15, MILTANK
+ db 15, TAUROS
+ db 15, TAUROS
+ ; day
+ db 16, MEOWTH
+ db 17, RATICATE
+ db 16, MAGNEMITE
+ db 16, FARFETCH_D
+ db 15, MILTANK
+ db 15, TAUROS
+ db 15, TAUROS
+ ; nite
+ db 16, MEOWTH
+ db 17, RATICATE
+ db 16, MAGNEMITE
+ db 16, MEOWTH
+ db 15, MILTANK
+ db 15, TAUROS
+ db 15, TAUROS
+ ENDC
- map ROUTE_42
+ map_id ROUTE_42
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 13, EKANS
+ db 15, MANKEY
+ db 13, MAREEP
db 14, SPEAROW
- db 15, RATTATA
- db 16, RATICATE
- db 15, ARBOK
- db 16, FEAROW
- db 16, FEAROW
+ db 16, SPEAROW
+ db 15, FLAAFFY
+ db 17, FLAAFFY
+ db 17, FLAAFFY
; day
- db 13, EKANS
+ db 15, MANKEY
+ db 13, MAREEP
db 14, SPEAROW
- db 15, RATTATA
- db 16, RATICATE
- db 15, ARBOK
- db 16, FEAROW
- db 16, FEAROW
+ db 16, SPEAROW
+ db 15, FLAAFFY
+ db 17, FLAAFFY
+ db 17, FLAAFFY
; nite
- db 13, RATTATA
+ db 15, MANKEY
+ db 13, MAREEP
db 14, ZUBAT
- db 15, RATICATE
- db 16, GOLBAT
- db 15, MARILL
- db 16, GOLBAT
- db 16, GOLBAT
+ db 16, ZUBAT
+ db 15, FLAAFFY
+ db 17, FLAAFFY
+ db 17, FLAAFFY
- map ROUTE_43
+ ELIF DEF(_SILVER)
+ ; morn
+ db 13, MAREEP
+ db 14, SPEAROW
+ db 15, MAREEP
+ db 16, SPEAROW
+ db 15, FLAAFFY
+ db 17, FLAAFFY
+ db 17, FLAAFFY
+ ; day
+ db 13, MAREEP
+ db 14, SPEAROW
+ db 15, MAREEP
+ db 16, SPEAROW
+ db 15, FLAAFFY
+ db 17, FLAAFFY
+ db 17, FLAAFFY
+ ; nite
+ db 13, MAREEP
+ db 14, ZUBAT
+ db 15, MAREEP
+ db 16, ZUBAT
+ db 15, FLAAFFY
+ db 17, FLAAFFY
+ db 17, FLAAFFY
+ ENDC
+
+ map_id ROUTE_43
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
- db 15, SENTRET
- db 16, PIDGEOTTO
- db 16, FARFETCH_D
- db 15, FURRET
- db 17, RATICATE
- db 17, FURRET
- db 17, FURRET
+ db 15, FLAAFFY
+ db 15, GIRAFARIG
+ db 17, PIDGEOTTO
+ db 15, MAREEP
+ db 16, VENONAT
+ db 17, PIDGEOTTO
+ db 17, PIDGEOTTO
; day
- db 15, SENTRET
- db 16, PIDGEOTTO
- db 16, FARFETCH_D
- db 15, FURRET
- db 17, RATICATE
- db 17, FURRET
- db 17, FURRET
+ db 15, FLAAFFY
+ db 15, GIRAFARIG
+ db 17, PIDGEOTTO
+ db 15, MAREEP
+ db 17, FLAAFFY
+ db 17, FLAAFFY
+ db 17, FLAAFFY
; nite
- db 15, VENONAT
- db 16, NOCTOWL
- db 16, RATICATE
- db 17, VENONAT
- db 17, RATICATE
- db 17, VENOMOTH
- db 17, VENOMOTH
+ db 15, FLAAFFY
+ db 15, GIRAFARIG
+ db 17, NOCTOWL
+ db 16, VENONAT
+ db 15, MAREEP
+ db 16, VENONAT
+ db 16, VENONAT
- map ROUTE_44
+ map_id ROUTE_44
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 23, TANGELA
- db 22, LICKITUNG
+ db 22, WEEPINBELL
db 22, BELLSPROUT
- db 24, WEEPINBELL
db 24, LICKITUNG
+ db 24, WEEPINBELL
db 26, LICKITUNG
db 26, LICKITUNG
; day
db 23, TANGELA
- db 22, LICKITUNG
+ db 22, WEEPINBELL
db 22, BELLSPROUT
- db 24, WEEPINBELL
db 24, LICKITUNG
+ db 24, WEEPINBELL
db 26, LICKITUNG
db 26, LICKITUNG
; nite
db 23, TANGELA
- db 22, POLIWAG
+ db 22, WEEPINBELL
db 22, BELLSPROUT
+ db 24, LICKITUNG
db 24, WEEPINBELL
- db 24, POLIWHIRL
- db 26, POLIWHIRL
- db 26, POLIWHIRL
+ db 26, LICKITUNG
+ db 26, LICKITUNG
- map ROUTE_45
+ map_id ROUTE_45
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 23, GEODUDE
db 23, GRAVELER
db 24, GLIGAR
- db 25, DONPHAN
+ db 20, TEDDIURSA
+ db 25, GRAVELER
+ db 27, GRAVELER
+ db 27, GRAVELER
+ ; day
+ db 23, GEODUDE
+ db 23, GRAVELER
+ db 24, GLIGAR
+ db 20, TEDDIURSA
+ db 25, GRAVELER
+ db 27, GRAVELER
+ db 27, GRAVELER
+ ; nite
+ db 23, GEODUDE
+ db 23, GRAVELER
+ db 24, GLIGAR
+ db 20, TEDDIURSA
+ db 25, GRAVELER
+ db 27, GRAVELER
+ db 27, GRAVELER
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 23, GEODUDE
+ db 23, GRAVELER
+ db 24, GRAVELER
db 20, PHANPY
+ db 25, GRAVELER
db 27, SKARMORY
db 27, SKARMORY
; day
db 23, GEODUDE
db 23, GRAVELER
- db 24, GLIGAR
- db 25, DONPHAN
- db 30, DONPHAN
+ db 24, GRAVELER
+ db 20, PHANPY
+ db 25, GRAVELER
db 27, SKARMORY
db 27, SKARMORY
; nite
db 23, GEODUDE
db 23, GRAVELER
- db 24, GLIGAR
+ db 24, GRAVELER
+ db 20, PHANPY
db 25, GRAVELER
- db 27, GRAVELER
- db 27, GRAVELER
- db 27, GRAVELER
+ db 27, SKARMORY
+ db 27, SKARMORY
+ ENDC
- map ROUTE_46
+ map_id ROUTE_46
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
- db 2, GEODUDE
- db 2, SPEAROW
db 3, GEODUDE
- db 3, RATTATA
- db 2, PHANPY
- db 2, RATTATA
+ db 2, SPEAROW
db 2, RATTATA
- ; day
db 2, GEODUDE
- db 2, SPEAROW
+ db 3, SPEAROW
+ db 3, JIGGLYPUFF
+ db 5, JIGGLYPUFF
+ ; day
db 3, GEODUDE
- db 3, RATTATA
- db 2, RATTATA
- db 2, RATTATA
+ db 2, SPEAROW
db 2, RATTATA
- ; nite
db 2, GEODUDE
- db 2, RATTATA
+ db 3, SPEAROW
+ db 3, JIGGLYPUFF
+ db 5, JIGGLYPUFF
+ ; nite
db 3, GEODUDE
db 3, RATTATA
db 2, RATTATA
- db 2, RATTATA
- db 2, RATTATA
+ db 2, GEODUDE
+ db 4, GEODUDE
+ db 3, JIGGLYPUFF
+ db 5, JIGGLYPUFF
- map SILVER_CAVE_OUTSIDE
+ map_id SILVER_CAVE_OUTSIDE
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
+ ; morn
+ db 41, TANGELA
+ db 42, PONYTA
+ db 42, URSARING
+ db 44, RAPIDASH
+ db 41, DODUO
+ db 43, DODRIO
+ db 43, DODRIO
+ ; day
+ db 41, TANGELA
+ db 42, PONYTA
+ db 42, URSARING
+ db 44, RAPIDASH
+ db 41, DODUO
+ db 43, DODRIO
+ db 43, DODRIO
+ ; nite
+ db 41, TANGELA
+ db 42, PONYTA
+ db 42, URSARING
+ db 44, RAPIDASH
+ db 38, SNEASEL
+ db 42, SNEASEL
+ db 42, SNEASEL
+
+ ELIF DEF(_SILVER)
; morn
db 41, TANGELA
db 42, PONYTA
- db 42, ARBOK
+ db 42, DONPHAN
db 44, RAPIDASH
db 41, DODUO
db 43, DODRIO
@@ -1633,18 +2345,19 @@
; day
db 41, TANGELA
db 42, PONYTA
- db 42, ARBOK
+ db 42, DONPHAN
db 44, RAPIDASH
db 41, DODUO
db 43, DODRIO
db 43, DODRIO
; nite
db 41, TANGELA
- db 42, POLIWHIRL
- db 42, GOLBAT
- db 44, POLIWHIRL
- db 40, GOLBAT
- db 44, GOLBAT
- db 44, GOLBAT
+ db 42, PONYTA
+ db 42, DONPHAN
+ db 44, RAPIDASH
+ db 38, SNEASEL
+ db 42, SNEASEL
+ db 42, SNEASEL
+ ENDC
db -1 ; end
diff --git a/data/wild/johto_water.asm b/data/wild/johto_water.asm
index a4d957ef..0924807c 100644
--- a/data/wild/johto_water.asm
+++ b/data/wild/johto_water.asm
@@ -1,231 +1,249 @@
; Johto Pokémon in water
- map RUINS_OF_ALPH_OUTSIDE
+JohtoWaterWildMons:
+
+ map_id RUINS_OF_ALPH_OUTSIDE
db 2 percent ; encounter rate
db 15, WOOPER
db 20, QUAGSIRE
db 15, QUAGSIRE
- map UNION_CAVE_1F
+ map_id UNION_CAVE_1F
db 2 percent ; encounter rate
db 15, WOOPER
db 20, QUAGSIRE
db 15, QUAGSIRE
- map UNION_CAVE_B1F
+ map_id UNION_CAVE_B1F
db 2 percent ; encounter rate
db 15, WOOPER
db 20, QUAGSIRE
db 15, QUAGSIRE
- map UNION_CAVE_B2F
+ map_id UNION_CAVE_B2F
db 4 percent ; encounter rate
db 15, TENTACOOL
db 20, QUAGSIRE
db 20, TENTACRUEL
- map SLOWPOKE_WELL_B1F
+ map_id SLOWPOKE_WELL_B1F
db 2 percent ; encounter rate
db 15, SLOWPOKE
db 20, SLOWPOKE
db 10, SLOWPOKE
- map SLOWPOKE_WELL_B2F
+ map_id SLOWPOKE_WELL_B2F
+ IF DEF(_GOLD)
+ db 4 percent ; encounter rate
+ ELIF DEF(_SILVER)
db 2 percent ; encounter rate
+ ENDC
db 15, SLOWPOKE
db 20, SLOWPOKE
db 20, SLOWBRO
- map ILEX_FOREST
+ map_id ILEX_FOREST
db 2 percent ; encounter rate
db 15, PSYDUCK
db 10, PSYDUCK
db 15, GOLDUCK
- map MOUNT_MORTAR_1F_OUTSIDE
+ map_id MOUNT_MORTAR_1F_OUTSIDE
db 4 percent ; encounter rate
+ db 20, GOLDEEN
db 15, GOLDEEN
- db 20, MARILL
db 20, SEAKING
- map MOUNT_MORTAR_2F_INSIDE
+ map_id MOUNT_MORTAR_2F_INSIDE
db 2 percent ; encounter rate
db 20, GOLDEEN
- db 25, MARILL
+ db 25, GOLDEEN
db 25, SEAKING
- map MOUNT_MORTAR_B1F
+ map_id MOUNT_MORTAR_B1F
db 2 percent ; encounter rate
+ db 20, GOLDEEN
db 15, GOLDEEN
- db 20, MARILL
db 20, SEAKING
- map WHIRL_ISLAND_SW
+ map_id WHIRL_ISLAND_SW
db 4 percent ; encounter rate
db 20, TENTACOOL
db 15, HORSEA
db 20, TENTACRUEL
- map WHIRL_ISLAND_B2F
+ map_id WHIRL_ISLAND_B2F
db 4 percent ; encounter rate
db 15, HORSEA
db 20, HORSEA
db 20, TENTACRUEL
- map WHIRL_ISLAND_LUGIA_CHAMBER
+ map_id WHIRL_ISLAND_LUGIA_CHAMBER
db 4 percent ; encounter rate
db 20, HORSEA
db 20, TENTACRUEL
db 20, SEADRA
- map SILVER_CAVE_ROOM_2
+ map_id SILVER_CAVE_ROOM_2
db 2 percent ; encounter rate
db 35, SEAKING
- db 35, GOLDUCK
+ db 40, SEAKING
db 35, GOLDEEN
- map DARK_CAVE_VIOLET_ENTRANCE
+ map_id DARK_CAVE_VIOLET_ENTRANCE
db 2 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 5, MAGIKARP
- map DARK_CAVE_BLACKTHORN_ENTRANCE
+ map_id DARK_CAVE_BLACKTHORN_ENTRANCE
db 2 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 5, MAGIKARP
- map DRAGONS_DEN_B1F
+ map_id DRAGONS_DEN_B1F
db 4 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 10, DRATINI
- map OLIVINE_PORT
- db 2 percent ; encounter rate
- db 20, TENTACOOL
- db 15, TENTACOOL
- db 20, TENTACRUEL
-
- map ROUTE_30
+ map_id ROUTE_30
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
- map ROUTE_31
+ map_id ROUTE_31
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
- map ROUTE_32
+ map_id ROUTE_32
db 6 percent ; encounter rate
db 15, TENTACOOL
db 20, QUAGSIRE
db 20, TENTACRUEL
- map ROUTE_34
+ map_id ROUTE_34
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
- map ROUTE_35
+ map_id ROUTE_35
db 4 percent ; encounter rate
db 20, PSYDUCK
db 15, PSYDUCK
db 20, GOLDUCK
- map ROUTE_40
+ map_id ROUTE_40
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
- map ROUTE_41
+ map_id ROUTE_41
db 6 percent ; encounter rate
+
+ IF DEF(_GOLD)
db 20, TENTACOOL
db 20, TENTACRUEL
db 20, MANTINE
- map ROUTE_42
+ ELIF DEF(_SILVER)
+ db 20, TENTACOOL
+ db 20, TENTACRUEL
+ db 15, TENTACOOL
+ ENDC
+
+ map_id ROUTE_42
db 4 percent ; encounter rate
db 20, GOLDEEN
db 15, GOLDEEN
db 20, SEAKING
- map ROUTE_43
+ map_id ROUTE_43
db 2 percent ; encounter rate
db 20, MAGIKARP
db 15, MAGIKARP
db 10, MAGIKARP
- map ROUTE_44
+ map_id ROUTE_44
db 2 percent ; encounter rate
db 25, POLIWAG
db 20, POLIWAG
db 25, POLIWHIRL
- map ROUTE_45
+ map_id ROUTE_45
db 2 percent ; encounter rate
db 20, MAGIKARP
db 15, MAGIKARP
db 5, MAGIKARP
- map NEW_BARK_TOWN
+ map_id NEW_BARK_TOWN
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
- map CHERRYGROVE_CITY
+ map_id CHERRYGROVE_CITY
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
- map VIOLET_CITY
+ map_id VIOLET_CITY
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
- map CIANWOOD_CITY
+ map_id CIANWOOD_CITY
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
- map OLIVINE_CITY
+ map_id OLIVINE_CITY
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
- map ECRUTEAK_CITY
+ map_id ECRUTEAK_CITY
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
- map LAKE_OF_RAGE
+ map_id LAKE_OF_RAGE
+ IF DEF(_GOLD)
+ db 4 percent ; encounter rate
+ ELIF DEF(_SILVER)
db 6 percent ; encounter rate
+ ENDC
db 15, MAGIKARP
db 10, MAGIKARP
db 15, GYARADOS
- map BLACKTHORN_CITY
+ map_id BLACKTHORN_CITY
db 4 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 5, MAGIKARP
- map SILVER_CAVE_OUTSIDE
+ map_id SILVER_CAVE_OUTSIDE
db 2 percent ; encounter rate
db 35, POLIWHIRL
db 40, POLIWHIRL
db 35, POLIWAG
+ map_id OLIVINE_PORT
+ db 2 percent ; encounter rate
+ db 20, TENTACOOL
+ db 15, TENTACOOL
+ db 20, TENTACRUEL
+
db -1 ; end
diff --git a/data/wild/kanto_grass.asm b/data/wild/kanto_grass.asm
index e06627d1..2884d010 100644
--- a/data/wild/kanto_grass.asm
+++ b/data/wild/kanto_grass.asm
@@ -1,40 +1,44 @@
; Kanto Pokémon in grass
- map DIGLETTS_CAVE
+KantoGrassWildMons:
+
+ map_id DIGLETTS_CAVE
db 4 percent, 2 percent, 8 percent ; encounter rates: morn/day/nite
; morn
- db 3, DIGLETT
- db 6, DIGLETT
- db 12, DIGLETT
- db 24, DIGLETT
+ db 15, DIGLETT
+ db 17, DIGLETT
+ db 19, DIGLETT
+ db 13, DIGLETT
+ db 19, DUGTRIO
db 24, DUGTRIO
+ db 29, DUGTRIO
+ ; day
+ db 15, DIGLETT
+ db 17, DIGLETT
+ db 19, DIGLETT
+ db 13, DIGLETT
+ db 19, DUGTRIO
db 24, DUGTRIO
+ db 29, DUGTRIO
+ ; nite
+ db 15, DIGLETT
+ db 17, DIGLETT
+ db 19, DIGLETT
+ db 13, DIGLETT
+ db 19, DUGTRIO
db 24, DUGTRIO
- ; day
- db 2, DIGLETT
- db 4, DIGLETT
- db 8, DIGLETT
- db 16, DIGLETT
- db 16, DUGTRIO
- db 16, DUGTRIO
- db 16, DUGTRIO
- ; nite
- db 4, DIGLETT
- db 8, DIGLETT
- db 16, DIGLETT
- db 32, DIGLETT
- db 32, DUGTRIO
- db 32, DUGTRIO
- db 32, DUGTRIO
-
- map MOUNT_MOON
+ db 29, DUGTRIO
+
+ map_id MOUNT_MOON
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 6, ZUBAT
db 8, GEODUDE
db 8, SANDSHREW
db 12, PARAS
- db 10, GEODUDE
+ db 10, SANDSLASH
db 8, CLEFAIRY
db 8, CLEFAIRY
; day
@@ -42,105 +46,165 @@
db 8, GEODUDE
db 8, SANDSHREW
db 12, PARAS
- db 10, GEODUDE
+ db 10, SANDSLASH
db 8, CLEFAIRY
db 8, CLEFAIRY
; nite
db 6, ZUBAT
db 8, GEODUDE
+ db 8, SANDSHREW
+ db 12, PARAS
+ db 10, SANDSLASH
+ db 8, CLEFAIRY
db 8, CLEFAIRY
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 6, ZUBAT
+ db 8, GEODUDE
+ db 8, ZUBAT
+ db 12, PARAS
+ db 10, GEODUDE
+ db 8, CLEFAIRY
+ db 8, CLEFAIRY
+ ; day
+ db 6, ZUBAT
+ db 8, GEODUDE
+ db 8, ZUBAT
+ db 12, PARAS
+ db 10, GEODUDE
+ db 8, CLEFAIRY
+ db 8, CLEFAIRY
+ ; nite
+ db 6, ZUBAT
+ db 8, GEODUDE
+ db 8, ZUBAT
db 12, PARAS
db 10, GEODUDE
- db 12, CLEFAIRY
- db 12, CLEFAIRY
+ db 8, CLEFAIRY
+ db 8, CLEFAIRY
+ ENDC
- map ROCK_TUNNEL_1F
+ map_id ROCK_TUNNEL_1F
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 10, CUBONE
- db 11, GEODUDE
+ db 10, GEODUDE
db 12, MACHOP
- db 12, ZUBAT
- db 15, MACHOKE
- db 12, MAROWAK
- db 12, MAROWAK
+ db 8, ZUBAT
+ db 14, MACHOKE
+ db 13, CUBONE
+ db 13, CUBONE
; day
db 10, CUBONE
- db 11, GEODUDE
+ db 10, GEODUDE
db 12, MACHOP
- db 12, ZUBAT
- db 15, MACHOKE
- db 12, MAROWAK
- db 12, MAROWAK
+ db 8, ZUBAT
+ db 14, MACHOKE
+ db 13, CUBONE
+ db 13, CUBONE
; nite
- db 12, ZUBAT
- db 11, GEODUDE
- db 12, GEODUDE
- db 17, HAUNTER
- db 15, ZUBAT
- db 15, ZUBAT
- db 15, ZUBAT
+ db 10, CUBONE
+ db 10, GEODUDE
+ db 12, MACHOP
+ db 8, ZUBAT
+ db 14, MACHOKE
+ db 13, CUBONE
+ db 13, CUBONE
- map ROCK_TUNNEL_B1F
+ map_id ROCK_TUNNEL_B1F
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 12, CUBONE
- db 14, GEODUDE
+ db 12, GEODUDE
db 16, ONIX
- db 12, ZUBAT
- db 15, MAROWAK
- db 15, KANGASKHAN
- db 15, KANGASKHAN
+ db 10, ZUBAT
+ db 14, MAROWAK
+ db 14, KANGASKHAN
+ db 14, KANGASKHAN
; day
db 12, CUBONE
- db 14, GEODUDE
+ db 12, GEODUDE
db 16, ONIX
- db 12, ZUBAT
- db 15, MAROWAK
- db 15, KANGASKHAN
- db 15, KANGASKHAN
+ db 10, ZUBAT
+ db 14, MAROWAK
+ db 14, KANGASKHAN
+ db 14, KANGASKHAN
; nite
- db 12, ZUBAT
- db 14, GEODUDE
+ db 12, CUBONE
+ db 12, GEODUDE
db 16, ONIX
- db 15, ZUBAT
- db 15, HAUNTER
- db 15, GOLBAT
- db 15, GOLBAT
+ db 10, ZUBAT
+ db 14, MAROWAK
+ db 14, KANGASKHAN
+ db 14, KANGASKHAN
- map VICTORY_ROAD
+ map_id VICTORY_ROAD
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 34, GRAVELER
- db 32, RHYHORN
- db 33, ONIX
- db 34, GOLBAT
- db 35, SANDSLASH
- db 35, RHYDON
- db 35, RHYDON
- ; day
- db 34, GRAVELER
- db 32, RHYHORN
- db 33, ONIX
- db 34, GOLBAT
- db 35, SANDSLASH
- db 35, RHYDON
- db 35, RHYDON
- ; nite
- db 34, GOLBAT
- db 34, GRAVELER
- db 32, ONIX
- db 36, GRAVELER
- db 38, GRAVELER
- db 40, GRAVELER
- db 40, GRAVELER
-
- map TOHJO_FALLS
+ db 32, GRAVELER
+ db 32, GOLBAT
+ db 33, URSARING
+ db 34, ONIX
+ db 36, ONIX
+ db 35, RHYHORN
+ db 35, RHYHORN
+ ; day
+ db 32, GRAVELER
+ db 32, GOLBAT
+ db 33, URSARING
+ db 34, ONIX
+ db 36, ONIX
+ db 35, RHYHORN
+ db 35, RHYHORN
+ ; nite
+ db 32, GRAVELER
+ db 32, GOLBAT
+ db 33, URSARING
+ db 34, ONIX
+ db 36, ONIX
+ db 35, RHYHORN
+ db 35, RHYHORN
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 32, GRAVELER
+ db 32, GOLBAT
+ db 33, DONPHAN
+ db 34, ONIX
+ db 36, ONIX
+ db 35, RHYHORN
+ db 35, RHYHORN
+ ; day
+ db 32, GRAVELER
+ db 32, GOLBAT
+ db 33, DONPHAN
+ db 34, ONIX
+ db 36, ONIX
+ db 35, RHYHORN
+ db 35, RHYHORN
+ ; nite
+ db 32, GRAVELER
+ db 32, GOLBAT
+ db 33, DONPHAN
+ db 34, ONIX
+ db 36, ONIX
+ db 35, RHYHORN
+ db 35, RHYHORN
+ ENDC
+
+ map_id TOHJO_FALLS
+ IF DEF(_GOLD)
+ db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
+ ELIF DEF(_SILVER)
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
+ ENDC
; morn
db 22, ZUBAT
db 22, RATICATE
- db 24, GOLBAT
+ db 22, GOLBAT
db 21, SLOWPOKE
db 20, RATTATA
db 23, SLOWPOKE
@@ -148,7 +212,7 @@
; day
db 22, ZUBAT
db 22, RATICATE
- db 24, GOLBAT
+ db 22, GOLBAT
db 21, SLOWPOKE
db 20, RATTATA
db 23, SLOWPOKE
@@ -156,13 +220,13 @@
; nite
db 22, ZUBAT
db 22, RATICATE
- db 24, GOLBAT
+ db 22, GOLBAT
db 21, SLOWPOKE
db 20, RATTATA
db 23, SLOWPOKE
db 23, SLOWPOKE
- map ROUTE_1
+ map_id ROUTE_1
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 2, PIDGEY
@@ -185,25 +249,27 @@
db 2, RATTATA
db 3, RATTATA
db 3, HOOTHOOT
- db 6, RATICATE
+ db 6, RATTATA
db 4, HOOTHOOT
db 4, HOOTHOOT
- map ROUTE_2
+ map_id ROUTE_2
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 3, CATERPIE
- db 3, LEDYBA
- db 5, PIDGEY
+ db 3, PIDGEY
+ db 5, METAPOD
db 7, BUTTERFREE
- db 7, LEDIAN
+ db 7, PIDGEOTTO
db 4, PIKACHU
db 4, PIKACHU
; day
db 3, CATERPIE
db 3, PIDGEY
- db 5, PIDGEY
- db 7, BUTTERFREE
+ db 5, METAPOD
+ db 7, PIDGEY
db 7, PIDGEOTTO
db 4, PIKACHU
db 4, PIKACHU
@@ -213,341 +279,659 @@
db 5, HOOTHOOT
db 7, NOCTOWL
db 7, ARIADOS
- db 4, NOCTOWL
- db 4, NOCTOWL
+ db 4, PIKACHU
+ db 4, PIKACHU
- map ROUTE_3
+ ELIF DEF(_SILVER)
+ ; morn
+ db 3, WEEDLE
+ db 3, LEDYBA
+ db 5, KAKUNA
+ db 7, BEEDRILL
+ db 7, LEDIAN
+ db 4, PIKACHU
+ db 4, PIKACHU
+ ; day
+ db 3, WEEDLE
+ db 3, PIDGEY
+ db 5, KAKUNA
+ db 7, PIDGEY
+ db 7, PIDGEOTTO
+ db 4, PIKACHU
+ db 4, PIKACHU
+ ; nite
+ db 3, HOOTHOOT
+ db 3, HOOTHOOT
+ db 5, HOOTHOOT
+ db 7, NOCTOWL
+ db 7, NOCTOWL
+ db 4, PIKACHU
+ db 4, PIKACHU
+ ENDC
+
+ map_id ROUTE_3
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
+ ; morn
+ db 5, SPEAROW
+ db 5, RATTATA
+ db 8, SPEAROW
+ db 6, JIGGLYPUFF
+ db 10, RATTATA
+ db 8, SPEAROW
+ db 8, SPEAROW
+ ; day
+ db 5, SPEAROW
+ db 5, RATTATA
+ db 8, SPEAROW
+ db 6, JIGGLYPUFF
+ db 10, RATTATA
+ db 8, SPEAROW
+ db 8, SPEAROW
+ ; nite
+ db 5, RATTATA
+ db 5, ZUBAT
+ db 8, RATTATA
+ db 6, JIGGLYPUFF
+ db 10, RATTATA
+ db 8, RATTATA
+ db 8, RATTATA
+
+ ELIF DEF(_SILVER)
; morn
db 5, SPEAROW
db 5, RATTATA
db 8, EKANS
- db 10, RATICATE
+ db 6, JIGGLYPUFF
db 10, ARBOK
- db 10, SANDSHREW
- db 10, SANDSHREW
+ db 8, SPEAROW
+ db 8, SPEAROW
; day
db 5, SPEAROW
db 5, RATTATA
db 8, EKANS
- db 10, RATICATE
+ db 6, JIGGLYPUFF
db 10, ARBOK
- db 10, SANDSHREW
- db 10, SANDSHREW
+ db 8, SPEAROW
+ db 8, SPEAROW
; nite
db 5, RATTATA
+ db 5, ZUBAT
+ db 8, EKANS
+ db 6, JIGGLYPUFF
+ db 10, ARBOK
+ db 8, RATTATA
+ db 8, RATTATA
+ ENDC
+
+ map_id ROUTE_4
+ db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+ ; morn
+
+ IF DEF(_GOLD)
+ ; morn
+ db 5, SPEAROW
+ db 5, RATTATA
+ db 8, SPEAROW
+ db 6, JIGGLYPUFF
db 10, RATTATA
- db 10, RATICATE
- db 6, ZUBAT
+ db 8, SPEAROW
+ db 8, SPEAROW
+ ; day
+ db 5, SPEAROW
db 5, RATTATA
- db 6, CLEFAIRY
- db 6, CLEFAIRY
+ db 8, SPEAROW
+ db 6, JIGGLYPUFF
+ db 10, RATTATA
+ db 8, SPEAROW
+ db 8, SPEAROW
+ ; nite
+ db 5, SPEAROW
+ db 5, ZUBAT
+ db 8, RATTATA
+ db 6, JIGGLYPUFF
+ db 10, RATTATA
+ db 8, RATTATA
+ db 8, RATTATA
- map ROUTE_4
- db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+ ELIF DEF(_SILVER)
; morn
db 5, SPEAROW
db 5, RATTATA
db 8, EKANS
- db 10, RATICATE
+ db 6, JIGGLYPUFF
db 10, ARBOK
- db 10, SANDSHREW
- db 10, SANDSHREW
+ db 8, SPEAROW
+ db 8, SPEAROW
; day
db 5, SPEAROW
db 5, RATTATA
db 8, EKANS
- db 10, RATICATE
+ db 6, JIGGLYPUFF
db 10, ARBOK
- db 10, SANDSHREW
- db 10, SANDSHREW
+ db 8, SPEAROW
+ db 8, SPEAROW
; nite
db 5, RATTATA
- db 10, RATTATA
- db 10, RATICATE
- db 6, ZUBAT
- db 5, RATTATA
- db 6, CLEFAIRY
- db 6, CLEFAIRY
+ db 5, ZUBAT
+ db 8, EKANS
+ db 6, JIGGLYPUFF
+ db 10, ARBOK
+ db 8, RATTATA
+ db 8, RATTATA
+ ENDC
- map ROUTE_5
+ map_id ROUTE_5
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 13, PIDGEY
- db 13, SNUBBULL
- db 15, PIDGEOTTO
+ db 13, BELLSPROUT
+ db 14, PIDGEY
+ db 15, PIDGEY
db 12, ABRA
- db 14, JIGGLYPUFF
db 14, ABRA
db 14, ABRA
; day
db 13, PIDGEY
- db 13, SNUBBULL
- db 15, PIDGEOTTO
+ db 13, BELLSPROUT
+ db 14, PIDGEY
+ db 15, PIDGEY
db 12, ABRA
- db 14, JIGGLYPUFF
db 14, ABRA
db 14, ABRA
; nite
- db 13, HOOTHOOT
- db 13, MEOWTH
- db 15, NOCTOWL
+ db 13, ODDISH
+ db 14, ODDISH
+ db 13, BELLSPROUT
+ db 15, GLOOM
db 12, ABRA
- db 14, JIGGLYPUFF
db 14, ABRA
db 14, ABRA
- map ROUTE_6
+ ELIF DEF(_SILVER)
+ ; morn
+ db 13, PIDGEY
+ db 13, BELLSPROUT
+ db 14, MEOWTH
+ db 15, PIDGEY
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
+ ; day
+ db 13, PIDGEY
+ db 13, BELLSPROUT
+ db 14, MEOWTH
+ db 15, PIDGEY
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
+ ; nite
+ db 13, ODDISH
+ db 14, MEOWTH
+ db 13, BELLSPROUT
+ db 15, GLOOM
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
+ ENDC
+
+ map_id ROUTE_6
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 13, RATTATA
- db 13, SNUBBULL
- db 14, MAGNEMITE
- db 15, RATICATE
- db 12, JIGGLYPUFF
- db 15, GRANBULL
- db 15, GRANBULL
+ db 13, PIDGEY
+ db 13, BELLSPROUT
+ db 14, PIDGEY
+ db 15, MAGNEMITE
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
; day
- db 13, RATTATA
- db 13, SNUBBULL
- db 14, MAGNEMITE
- db 15, RATICATE
- db 12, JIGGLYPUFF
- db 15, GRANBULL
- db 15, GRANBULL
- ; nite
- db 13, MEOWTH
- db 13, DROWZEE
- db 14, MAGNEMITE
- db 15, PSYDUCK
- db 12, JIGGLYPUFF
- db 15, RATICATE
- db 15, RATICATE
+ db 13, PIDGEY
+ db 13, BELLSPROUT
+ db 14, PIDGEY
+ db 15, MAGNEMITE
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
+ ; nite
+ db 13, ODDISH
+ db 14, ODDISH
+ db 13, BELLSPROUT
+ db 15, MAGNEMITE
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
- map ROUTE_7
+ ELIF DEF(_SILVER)
+ ; morn
+ db 13, PIDGEY
+ db 13, BELLSPROUT
+ db 14, MEOWTH
+ db 15, MAGNEMITE
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
+ ; day
+ db 13, PIDGEY
+ db 13, BELLSPROUT
+ db 14, MEOWTH
+ db 15, MAGNEMITE
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
+ ; nite
+ db 13, ODDISH
+ db 14, MEOWTH
+ db 13, BELLSPROUT
+ db 15, MAGNEMITE
+ db 12, ABRA
+ db 14, ABRA
+ db 14, ABRA
+ ENDC
+
+ map_id ROUTE_7
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 17, RATTATA
db 17, SPEAROW
- db 18, SNUBBULL
- db 18, RATICATE
- db 18, JIGGLYPUFF
- db 16, ABRA
- db 16, ABRA
+ db 18, GROWLITHE
+ db 19, RATICATE
+ db 19, RATTATA
+ db 15, RATTATA
+ db 15, RATTATA
; day
db 17, RATTATA
db 17, SPEAROW
- db 18, SNUBBULL
- db 18, RATICATE
- db 18, JIGGLYPUFF
- db 16, ABRA
- db 16, ABRA
+ db 18, GROWLITHE
+ db 19, RATICATE
+ db 19, RATTATA
+ db 15, GROWLITHE
+ db 15, GROWLITHE
+ ; nite
+ db 17, RATTATA
+ db 17, MURKROW
+ db 18, GROWLITHE
+ db 19, RATICATE
+ db 19, MURKROW
+ db 15, HOUNDOUR
+ db 15, HOUNDOUR
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 17, MEOWTH
+ db 17, SPEAROW
+ db 18, VULPIX
+ db 19, RATICATE
+ db 19, PERSIAN
+ db 15, RATTATA
+ db 15, RATTATA
+ ; day
+ db 17, MEOWTH
+ db 17, SPEAROW
+ db 18, VULPIX
+ db 19, RATICATE
+ db 19, PERSIAN
+ db 15, VULPIX
+ db 15, VULPIX
; nite
db 17, MEOWTH
db 17, MURKROW
- db 18, HOUNDOUR
- db 18, PERSIAN
- db 18, JIGGLYPUFF
- db 16, ABRA
- db 16, ABRA
+ db 18, VULPIX
+ db 19, RATICATE
+ db 19, PERSIAN
+ db 15, HOUNDOUR
+ db 15, HOUNDOUR
+ ENDC
- map ROUTE_8
+ map_id ROUTE_8
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 17, SNUBBULL
+ db 17, PIDGEOTTO
db 19, PIDGEOTTO
- db 16, ABRA
- db 17, GROWLITHE
- db 16, JIGGLYPUFF
- db 18, KADABRA
- db 18, KADABRA
+ db 15, ABRA
+ db 18, GROWLITHE
+ db 17, PIDGEOTTO
+ db 15, KADABRA
+ db 15, KADABRA
; day
- db 17, SNUBBULL
+ db 17, PIDGEOTTO
db 19, PIDGEOTTO
- db 16, ABRA
- db 17, GROWLITHE
- db 16, JIGGLYPUFF
- db 18, KADABRA
- db 18, KADABRA
+ db 15, ABRA
+ db 18, GROWLITHE
+ db 17, PIDGEOTTO
+ db 15, KADABRA
+ db 15, KADABRA
; nite
+ db 17, NOCTOWL
+ db 20, HAUNTER
+ db 15, ABRA
+ db 19, NOCTOWL
+ db 18, GROWLITHE
+ db 15, KADABRA
+ db 15, KADABRA
+
+ ELIF DEF(_SILVER)
+ ; morn
db 17, MEOWTH
- db 20, NOCTOWL
- db 16, ABRA
- db 17, HAUNTER
- db 16, JIGGLYPUFF
- db 18, KADABRA
- db 18, KADABRA
-
- map ROUTE_9
+ db 19, PIDGEOTTO
+ db 15, ABRA
+ db 18, VULPIX
+ db 17, PIDGEOTTO
+ db 15, KADABRA
+ db 15, KADABRA
+ ; day
+ db 17, MEOWTH
+ db 19, PIDGEOTTO
+ db 15, ABRA
+ db 18, VULPIX
+ db 17, PIDGEOTTO
+ db 15, KADABRA
+ db 15, KADABRA
+ ; nite
+ db 17, MEOWTH
+ db 20, HAUNTER
+ db 15, ABRA
+ db 19, NOCTOWL
+ db 18, VULPIX
+ db 15, KADABRA
+ db 15, KADABRA
+ ENDC
+
+ map_id ROUTE_9
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
+ db 13, MANKEY
db 15, RATTATA
- db 15, SPEAROW
+ db 13, SPEAROW
db 15, RATICATE
db 15, FEAROW
- db 15, FEAROW
- db 18, MAROWAK
- db 18, MAROWAK
+ db 15, PRIMEAPE
+ db 15, PRIMEAPE
; day
+ db 13, MANKEY
db 15, RATTATA
- db 15, SPEAROW
+ db 13, SPEAROW
db 15, RATICATE
db 15, FEAROW
- db 15, FEAROW
- db 18, MAROWAK
- db 18, MAROWAK
+ db 15, PRIMEAPE
+ db 15, PRIMEAPE
; nite
+ db 13, MANKEY
db 15, RATTATA
- db 15, VENONAT
db 15, RATICATE
- db 15, VENOMOTH
- db 15, ZUBAT
- db 18, RATICATE
- db 18, RATICATE
+ db 13, RATTATA
+ db 15, RATICATE
+ db 15, PRIMEAPE
+ db 15, PRIMEAPE
- map ROUTE_10_NORTH
- db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+ ELIF DEF(_SILVER)
; morn
+ db 13, RATTATA
db 15, SPEAROW
- db 17, VOLTORB
+ db 13, SPEAROW
db 15, RATICATE
db 15, FEAROW
- db 15, MAROWAK
- db 16, ELECTABUZZ
- db 16, ELECTABUZZ
+ db 15, RATICATE
+ db 15, RATICATE
; day
+ db 13, RATTATA
db 15, SPEAROW
- db 17, VOLTORB
+ db 13, SPEAROW
db 15, RATICATE
db 15, FEAROW
- db 15, MAROWAK
- db 18, ELECTABUZZ
- db 18, ELECTABUZZ
+ db 15, RATICATE
+ db 15, RATICATE
; nite
- db 15, VENONAT
- db 17, VOLTORB
+ db 13, RATTATA
+ db 15, RATTATA
+ db 15, RATICATE
+ db 13, RATTATA
db 15, RATICATE
- db 15, VENOMOTH
- db 15, ZUBAT
- db 16, ELECTABUZZ
- db 16, ELECTABUZZ
+ db 15, RATICATE
+ db 15, RATICATE
+ ENDC
- map ROUTE_11
+ map_id ROUTE_10_NORTH
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
- db 14, HOPPIP
- db 13, RATICATE
+ db 16, SPEAROW
+ db 17, VOLTORB
+ db 16, RATICATE
+ db 18, FEAROW
+ db 16, QUAGSIRE
+ db 15, ELECTABUZZ
+ db 15, ELECTABUZZ
+ ; day
+ db 16, SPEAROW
+ db 17, VOLTORB
+ db 17, RATICATE
+ db 18, FEAROW
+ db 15, ELECTABUZZ
+ db 17, ELECTABUZZ
+ db 17, ELECTABUZZ
+ ; nite
+ db 16, QUAGSIRE
+ db 17, VOLTORB
+ db 16, RATICATE
+ db 17, QUAGSIRE
+ db 18, RATICATE
+ db 15, ELECTABUZZ
+ db 15, ELECTABUZZ
+
+ map_id ROUTE_11
+ db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+ ; morn
+ db 14, DROWZEE
+ db 15, RATTATA
db 15, MAGNEMITE
- db 16, PIDGEOTTO
- db 16, RATTATA
- db 16, HOPPIP
- db 16, HOPPIP
+ db 16, DROWZEE
+ db 16, HYPNO
+ db 16, HYPNO
+ db 16, HYPNO
; day
- db 14, HOPPIP
- db 13, RATICATE
+ db 14, DROWZEE
+ db 15, RATTATA
db 15, MAGNEMITE
- db 16, PIDGEOTTO
- db 16, RATTATA
- db 16, HOPPIP
- db 16, HOPPIP
+ db 16, DROWZEE
+ db 16, HYPNO
+ db 16, HYPNO
+ db 16, HYPNO
; nite
db 14, DROWZEE
- db 13, MEOWTH
+ db 15, RATTATA
db 15, MAGNEMITE
- db 16, NOCTOWL
- db 16, RATICATE
+ db 16, DROWZEE
+ db 16, HYPNO
db 16, HYPNO
db 16, HYPNO
- map ROUTE_13
+ map_id ROUTE_13
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
+ db 23, NIDORINA
db 23, NIDORINO
+ db 25, PIDGEOTTO
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 22, QUAGSIRE
+ db 25, CHANSEY
+ ; day
db 23, NIDORINA
+ db 23, NIDORINO
db 25, PIDGEOTTO
- db 25, HOPPIP
- db 27, HOPPIP
- db 27, HOPPIP
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 24, HOPPIP
+ db 25, CHANSEY
+ ; nite
+ db 23, NIDORINA
+ db 23, NIDORINO
+ db 25, NOCTOWL
+ db 22, QUAGSIRE
+ db 24, QUAGSIRE
+ db 24, QUAGSIRE
+ db 25, CHANSEY
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 23, NIDORINO
+ db 23, NIDORINA
+ db 25, PIDGEOTTO
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 22, QUAGSIRE
db 25, CHANSEY
; day
db 23, NIDORINO
db 23, NIDORINA
db 25, PIDGEOTTO
- db 25, HOPPIP
- db 27, HOPPIP
- db 27, HOPPIP
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 24, HOPPIP
db 25, CHANSEY
; nite
- db 23, VENONAT
- db 23, QUAGSIRE
+ db 23, NIDORINO
+ db 23, NIDORINA
db 25, NOCTOWL
- db 25, VENOMOTH
- db 25, QUAGSIRE
- db 25, QUAGSIRE
+ db 22, QUAGSIRE
+ db 24, QUAGSIRE
+ db 24, QUAGSIRE
db 25, CHANSEY
+ ENDC
- map ROUTE_14
+ map_id ROUTE_14
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
- db 26, NIDORINO
- db 26, NIDORINA
- db 28, PIDGEOTTO
- db 28, HOPPIP
- db 30, SKIPLOOM
- db 30, SKIPLOOM
- db 28, CHANSEY
- ; day
- db 26, NIDORINO
- db 26, NIDORINA
- db 28, PIDGEOTTO
- db 28, HOPPIP
- db 30, SKIPLOOM
- db 30, SKIPLOOM
- db 28, CHANSEY
- ; nite
- db 26, VENONAT
- db 26, QUAGSIRE
- db 28, NOCTOWL
- db 28, VENOMOTH
- db 28, QUAGSIRE
- db 28, QUAGSIRE
- db 28, CHANSEY
+ db 23, NIDORINA
+ db 23, NIDORINO
+ db 25, PIDGEOTTO
+ db 24, HOPPIP
+ db 26, SKIPLOOM
+ db 22, QUAGSIRE
+ db 25, CHANSEY
+ ; day
+ db 23, NIDORINA
+ db 23, NIDORINO
+ db 25, PIDGEOTTO
+ db 24, HOPPIP
+ db 26, SKIPLOOM
+ db 26, SKIPLOOM
+ db 25, CHANSEY
+ ; nite
+ db 23, NIDORINA
+ db 23, NIDORINO
+ db 25, NOCTOWL
+ db 22, QUAGSIRE
+ db 24, QUAGSIRE
+ db 24, QUAGSIRE
+ db 25, CHANSEY
- map ROUTE_15
+ ELIF DEF(_SILVER)
+ ; morn
+ db 23, NIDORINO
+ db 23, NIDORINA
+ db 25, PIDGEOTTO
+ db 24, HOPPIP
+ db 26, SKIPLOOM
+ db 22, QUAGSIRE
+ db 25, CHANSEY
+ ; day
+ db 23, NIDORINO
+ db 23, NIDORINA
+ db 25, PIDGEOTTO
+ db 24, HOPPIP
+ db 26, SKIPLOOM
+ db 26, SKIPLOOM
+ db 25, CHANSEY
+ ; nite
+ db 23, NIDORINO
+ db 23, NIDORINA
+ db 25, NOCTOWL
+ db 22, QUAGSIRE
+ db 24, QUAGSIRE
+ db 24, QUAGSIRE
+ db 25, CHANSEY
+ ENDC
+
+ map_id ROUTE_15
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
+ ; morn
+ db 23, NIDORINA
+ db 23, NIDORINO
+ db 25, PIDGEOTTO
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 22, QUAGSIRE
+ db 25, CHANSEY
+ ; day
+ db 23, NIDORINA
+ db 23, NIDORINO
+ db 25, PIDGEOTTO
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 24, HOPPIP
+ db 25, CHANSEY
+ ; nite
+ db 23, NIDORINA
+ db 23, NIDORINO
+ db 25, NOCTOWL
+ db 22, QUAGSIRE
+ db 24, QUAGSIRE
+ db 24, QUAGSIRE
+ db 25, CHANSEY
+
+ ELIF DEF(_SILVER)
; morn
db 23, NIDORINO
db 23, NIDORINA
db 25, PIDGEOTTO
- db 25, HOPPIP
- db 27, HOPPIP
- db 27, HOPPIP
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 22, QUAGSIRE
db 25, CHANSEY
; day
db 23, NIDORINO
db 23, NIDORINA
db 25, PIDGEOTTO
- db 25, HOPPIP
- db 27, HOPPIP
- db 27, HOPPIP
+ db 22, HOPPIP
+ db 24, HOPPIP
+ db 24, HOPPIP
db 25, CHANSEY
; nite
- db 23, VENONAT
- db 23, QUAGSIRE
+ db 23, NIDORINO
+ db 23, NIDORINA
db 25, NOCTOWL
- db 25, VENOMOTH
- db 25, QUAGSIRE
- db 25, QUAGSIRE
+ db 22, QUAGSIRE
+ db 24, QUAGSIRE
+ db 24, QUAGSIRE
db 25, CHANSEY
+ ENDC
- map ROUTE_16
+ map_id ROUTE_16
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 26, GRIMER
db 27, FEAROW
db 28, GRIMER
db 29, FEAROW
- db 29, FEAROW
+ db 27, SLUGMA
db 30, MUK
db 30, MUK
; day
@@ -555,53 +939,53 @@
db 27, FEAROW
db 28, GRIMER
db 29, FEAROW
- db 29, SLUGMA
+ db 27, SLUGMA
db 30, MUK
db 30, MUK
; nite
db 26, GRIMER
db 27, GRIMER
db 28, GRIMER
- db 29, MURKROW
- db 29, MURKROW
+ db 28, MURKROW
+ db 27, SLUGMA
db 30, MUK
db 30, MUK
- map ROUTE_17
+ map_id ROUTE_17
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
- db 30, FEAROW
+ db 28, FEAROW
+ db 27, GRIMER
db 29, GRIMER
- db 31, GRIMER
- db 32, FEAROW
- db 33, GRIMER
- db 33, MUK
- db 33, MUK
- ; day
db 30, FEAROW
db 29, SLUGMA
+ db 32, MUK
+ db 32, MUK
+ ; day
+ db 28, FEAROW
+ db 27, SLUGMA
db 29, GRIMER
- db 32, FEAROW
- db 32, SLUGMA
- db 33, MUK
- db 33, MUK
+ db 30, FEAROW
+ db 25, SLUGMA
+ db 32, MUK
+ db 32, MUK
; nite
- db 30, GRIMER
+ db 28, GRIMER
+ db 27, GRIMER
db 29, GRIMER
- db 31, GRIMER
- db 32, GRIMER
- db 33, GRIMER
- db 33, MUK
- db 33, MUK
+ db 30, MUK
+ db 29, SLUGMA
+ db 32, MUK
+ db 32, MUK
- map ROUTE_18
+ map_id ROUTE_18
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 26, GRIMER
db 27, FEAROW
db 28, GRIMER
db 29, FEAROW
- db 29, FEAROW
+ db 27, SLUGMA
db 30, MUK
db 30, MUK
; day
@@ -609,46 +993,46 @@
db 27, FEAROW
db 28, GRIMER
db 29, FEAROW
- db 29, SLUGMA
+ db 27, SLUGMA
db 30, MUK
db 30, MUK
; nite
db 26, GRIMER
db 27, GRIMER
db 28, GRIMER
- db 29, GRIMER
- db 29, GRIMER
+ db 28, MUK
+ db 27, SLUGMA
db 30, MUK
db 30, MUK
- map ROUTE_21
+ map_id ROUTE_21
db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
db 30, TANGELA
- db 25, RATTATA
+ db 25, TANGELA
db 35, TANGELA
- db 20, RATICATE
- db 30, MR__MIME
+ db 20, TANGELA
+ db 30, TANGELA
db 28, MR__MIME
db 28, MR__MIME
; day
db 30, TANGELA
- db 25, RATTATA
+ db 25, TANGELA
db 35, TANGELA
- db 20, RATICATE
+ db 20, TANGELA
db 28, MR__MIME
db 30, MR__MIME
db 30, MR__MIME
; nite
db 30, TANGELA
- db 25, RATTATA
+ db 25, TANGELA
db 35, TANGELA
- db 20, RATICATE
+ db 20, TANGELA
db 30, TANGELA
- db 28, TANGELA
- db 28, TANGELA
+ db 28, MR__MIME
+ db 28, MR__MIME
- map ROUTE_22
+ map_id ROUTE_22
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 3, RATTATA
@@ -668,146 +1052,233 @@
db 7, FEAROW
; nite
db 3, RATTATA
- db 3, POLIWAG
+ db 3, RATTATA
db 5, RATTATA
- db 4, POLIWAG
- db 6, RATTATA
+ db 4, RATTATA
+ db 6, PONYTA
db 7, RATTATA
db 7, RATTATA
- map ROUTE_24
+ map_id ROUTE_24
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
- db 8, CATERPIE
- db 10, CATERPIE
- db 12, METAPOD
- db 12, ABRA
+ db 8, BELLSPROUT
db 10, BELLSPROUT
- db 14, BUTTERFREE
- db 14, BUTTERFREE
+ db 9, ABRA
+ db 12, WEEPINBELL
+ db 8, VENONAT
+ db 14, WEEPINBELL
+ db 14, WEEPINBELL
; day
- db 8, CATERPIE
- db 12, SUNKERN
- db 10, CATERPIE
- db 12, ABRA
+ db 8, BELLSPROUT
+ db 10, SUNKERN
+ db 9, ABRA
+ db 12, WEEPINBELL
db 10, BELLSPROUT
- db 14, BUTTERFREE
- db 14, BUTTERFREE
+ db 14, WEEPINBELL
+ db 14, WEEPINBELL
; nite
- db 10, VENONAT
+ db 8, VENONAT
db 10, ODDISH
- db 12, ODDISH
- db 12, ABRA
+ db 9, ABRA
+ db 13, WEEPINBELL
db 10, BELLSPROUT
- db 14, GLOOM
- db 14, GLOOM
+ db 10, VENOMOTH
+ db 10, VENOMOTH
- map ROUTE_25
+ map_id ROUTE_25
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
- db 10, CATERPIE
- db 10, PIDGEY
- db 12, PIDGEOTTO
- db 12, METAPOD
+ db 8, PIDGEY
db 10, BELLSPROUT
- db 14, BUTTERFREE
- db 14, BUTTERFREE
+ db 8, VENONAT
+ db 9, ABRA
+ db 10, PIDGEOTTO
+ db 14, WEEPINBELL
+ db 14, WEEPINBELL
; day
- db 10, CATERPIE
+ db 8, PIDGEY
+ db 10, BELLSPROUT
db 10, PIDGEY
+ db 9, ABRA
db 12, PIDGEOTTO
- db 12, METAPOD
- db 10, BELLSPROUT
- db 14, BUTTERFREE
- db 14, BUTTERFREE
+ db 14, WEEPINBELL
+ db 14, WEEPINBELL
; nite
+ db 8, VENONAT
db 10, ODDISH
- db 10, HOOTHOOT
- db 10, VENONAT
- db 12, NOCTOWL
+ db 10, VENOMOTH
+ db 9, ABRA
+ db 14, WEEPINBELL
+ db 10, BELLSPROUT
db 10, BELLSPROUT
- db 14, NOCTOWL
- db 14, NOCTOWL
- map ROUTE_26
+ map_id ROUTE_26
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 28, DODUO
db 28, SANDSLASH
db 32, PONYTA
- db 30, RATICATE
db 30, DODUO
- db 30, ARBOK
- db 30, ARBOK
+ db 30, DODRIO
+ db 30, RATICATE
+ db 30, QUAGSIRE
; day
db 28, DODUO
db 28, SANDSLASH
db 32, PONYTA
+ db 30, DODUO
+ db 30, RATICATE
+ db 30, DODRIO
+ db 30, DODRIO
+ ; nite
+ db 28, RATICATE
+ db 28, SANDSLASH
+ db 32, PONYTA
+ db 30, RATICATE
+ db 30, QUAGSIRE
+ db 32, QUAGSIRE
+ db 32, QUAGSIRE
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 28, DODUO
+ db 28, RATICATE
+ db 32, PONYTA
+ db 30, DODUO
+ db 30, ARBOK
db 30, RATICATE
+ db 30, QUAGSIRE
+ ; day
+ db 28, DODUO
+ db 28, RATICATE
+ db 32, PONYTA
db 30, DODUO
+ db 30, RATICATE
db 30, ARBOK
db 30, ARBOK
; nite
- db 28, NOCTOWL
db 28, RATICATE
- db 32, NOCTOWL
+ db 28, RATICATE
+ db 32, PONYTA
db 30, RATICATE
db 30, QUAGSIRE
- db 30, QUAGSIRE
- db 30, QUAGSIRE
+ db 30, ARBOK
+ db 30, ARBOK
+ ENDC
- map ROUTE_27
+ map_id ROUTE_27
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
; morn
db 28, DODUO
- db 28, ARBOK
+ db 28, RATICATE
+ db 30, DODUO
+ db 28, QUAGSIRE
+ db 32, PONYTA
+ db 30, SANDSLASH
+ db 30, SANDSLASH
+ ; day
+ db 28, DODUO
+ db 28, RATICATE
+ db 30, DODUO
db 30, RATICATE
+ db 32, PONYTA
+ db 30, SANDSLASH
+ db 30, SANDSLASH
+ ; nite
+ db 28, QUAGSIRE
+ db 28, RATICATE
+ db 30, QUAGSIRE
+ db 30, RATICATE
+ db 32, PONYTA
+ db 30, SANDSLASH
+ db 30, SANDSLASH
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 28, DODUO
+ db 28, ARBOK
db 30, DODUO
+ db 28, QUAGSIRE
db 32, PONYTA
db 30, DODRIO
db 30, DODRIO
; day
db 28, DODUO
db 28, ARBOK
- db 30, RATICATE
db 30, DODUO
+ db 30, RATICATE
db 32, PONYTA
db 30, DODRIO
db 30, DODRIO
; nite
db 28, QUAGSIRE
- db 28, NOCTOWL
- db 30, RATICATE
+ db 28, ARBOK
db 30, QUAGSIRE
- db 32, NOCTOWL
- db 32, NOCTOWL
- db 32, NOCTOWL
+ db 30, RATICATE
+ db 32, PONYTA
+ db 32, QUAGSIRE
+ db 32, QUAGSIRE
+ ENDC
- map ROUTE_28
+ map_id ROUTE_28
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
+ ; morn
+ db 39, TANGELA
+ db 40, PONYTA
+ db 40, URSARING
+ db 42, RAPIDASH
+ db 41, DODUO
+ db 43, DODRIO
+ db 43, DODRIO
+ ; day
+ db 39, TANGELA
+ db 40, PONYTA
+ db 40, URSARING
+ db 42, RAPIDASH
+ db 41, DODUO
+ db 43, DODRIO
+ db 43, DODRIO
+ ; nite
+ db 39, TANGELA
+ db 40, PONYTA
+ db 40, URSARING
+ db 40, SNEASEL
+ db 42, RAPIDASH
+ db 42, RAPIDASH
+ db 42, RAPIDASH
+
+ ELIF DEF(_SILVER)
; morn
db 39, TANGELA
db 40, PONYTA
- db 40, RAPIDASH
- db 42, ARBOK
+ db 40, DONPHAN
+ db 42, RAPIDASH
db 41, DODUO
db 43, DODRIO
db 43, DODRIO
; day
db 39, TANGELA
db 40, PONYTA
- db 40, RAPIDASH
- db 42, ARBOK
+ db 40, DONPHAN
+ db 42, RAPIDASH
db 41, DODUO
db 43, DODRIO
db 43, DODRIO
; nite
db 39, TANGELA
- db 40, POLIWHIRL
- db 40, GOLBAT
- db 40, POLIWHIRL
- db 42, GOLBAT
- db 42, GOLBAT
- db 42, GOLBAT
+ db 40, PONYTA
+ db 40, DONPHAN
+ db 40, SNEASEL
+ db 42, RAPIDASH
+ db 42, RAPIDASH
+ db 42, RAPIDASH
+ ENDC
db -1 ; end
diff --git a/data/wild/kanto_water.asm b/data/wild/kanto_water.asm
index 558d56a2..1f91e95e 100644
--- a/data/wild/kanto_water.asm
+++ b/data/wild/kanto_water.asm
@@ -1,147 +1,149 @@
; Kanto Pokémon in water
- map TOHJO_FALLS
- db 4 percent ; encounter rate
- db 20, GOLDEEN
- db 20, SLOWPOKE
- db 20, SEAKING
-
- map VERMILION_PORT
- db 2 percent ; encounter rate
- db 35, TENTACOOL
- db 30, TENTACOOL
- db 35, TENTACRUEL
+KantoWaterWildMons:
- map ROUTE_4
+ map_id ROUTE_4
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
- map ROUTE_6
+ map_id ROUTE_6
db 2 percent ; encounter rate
db 10, PSYDUCK
db 5, PSYDUCK
db 10, GOLDUCK
- map ROUTE_9
+ map_id ROUTE_9
db 4 percent ; encounter rate
db 15, GOLDEEN
db 10, GOLDEEN
db 15, SEAKING
- map ROUTE_10_NORTH
+ map_id ROUTE_10_NORTH
db 4 percent ; encounter rate
db 15, GOLDEEN
db 10, GOLDEEN
db 15, SEAKING
- map ROUTE_12
+ map_id ROUTE_12
db 6 percent ; encounter rate
db 25, TENTACOOL
db 25, QUAGSIRE
db 25, TENTACRUEL
- map ROUTE_13
+ map_id ROUTE_13
db 6 percent ; encounter rate
db 25, TENTACOOL
db 25, QUAGSIRE
db 25, TENTACRUEL
- map ROUTE_19
+ map_id ROUTE_19
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
- map ROUTE_20
+ map_id ROUTE_20
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
- map ROUTE_21
+ map_id ROUTE_21
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
- map ROUTE_22
+ map_id ROUTE_22
db 2 percent ; encounter rate
db 10, POLIWAG
db 5, POLIWAG
db 10, POLIWHIRL
- map ROUTE_24
+ map_id ROUTE_24
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
- map ROUTE_25
+ map_id ROUTE_25
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
- map ROUTE_26
+ map_id ROUTE_26
db 6 percent ; encounter rate
db 30, TENTACOOL
db 25, TENTACOOL
db 30, TENTACRUEL
- map ROUTE_27
+ map_id ROUTE_27
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
- map ROUTE_28
+ map_id TOHJO_FALLS
+ db 4 percent ; encounter rate
+ db 20, GOLDEEN
+ db 20, SLOWPOKE
+ db 20, SEAKING
+
+ map_id ROUTE_28
db 2 percent ; encounter rate
db 40, POLIWAG
db 35, POLIWAG
db 40, POLIWHIRL
- map PALLET_TOWN
+ map_id PALLET_TOWN
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
- map VIRIDIAN_CITY
+ map_id VIRIDIAN_CITY
db 2 percent ; encounter rate
db 10, POLIWAG
db 5, POLIWAG
db 10, POLIWHIRL
- map CERULEAN_CITY
+ map_id CERULEAN_CITY
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
- map VERMILION_CITY
+ map_id VERMILION_CITY
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
- map CELADON_CITY
+ map_id CELADON_CITY
db 2 percent ; encounter rate
db 20, GRIMER
db 15, GRIMER
db 15, MUK
- map FUCHSIA_CITY
+ map_id FUCHSIA_CITY
db 2 percent ; encounter rate
db 20, MAGIKARP
db 15, MAGIKARP
db 10, MAGIKARP
- map CINNABAR_ISLAND
+ map_id CINNABAR_ISLAND
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
+ map_id VERMILION_PORT
+ db 2 percent ; encounter rate
+ db 35, TENTACOOL
+ db 30, TENTACOOL
+ db 35, TENTACRUEL
+
db -1 ; end
diff --git a/data/wild/probabilities.asm b/data/wild/probabilities.asm
new file mode 100644
index 00000000..bf3144bb
--- /dev/null
+++ b/data/wild/probabilities.asm
@@ -0,0 +1,18 @@
+mon_prob: MACRO
+; percent, index
+ db \1, \2 * 2
+ENDM
+
+GrassMonProbTable:
+ mon_prob 30, 0 ; 30% chance
+ mon_prob 60, 1 ; 30% chance
+ mon_prob 80, 2 ; 20% chance
+ mon_prob 90, 3 ; 10% chance
+ mon_prob 95, 4 ; 5% chance
+ mon_prob 99, 5 ; 4% chance
+ mon_prob 100, 6 ; 1% chance
+
+WaterMonProbTable:
+ mon_prob 60, 0 ; 60% chance
+ mon_prob 90, 1 ; 30% chance
+ mon_prob 100, 2 ; 10% chance
diff --git a/data/wild/roammon_maps.asm b/data/wild/roammon_maps.asm
new file mode 100644
index 00000000..628a2679
--- /dev/null
+++ b/data/wild/roammon_maps.asm
@@ -0,0 +1,33 @@
+; 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_id \1
+ db _NARG - 1
+rept _NARG - 1
+ map_id \2
+ shift
+endr
+ db 0
+ENDM
+
+RoamMaps:
+; there are NUM_ROAMMON_MAPS entries
+ ; start map, ...other maps
+ roam_map ROUTE_29, ROUTE_30, ROUTE_46
+ roam_map ROUTE_30, ROUTE_29, ROUTE_31
+ roam_map ROUTE_31, ROUTE_30, ROUTE_32, ROUTE_36
+ roam_map ROUTE_32, ROUTE_36, ROUTE_31, ROUTE_33
+ roam_map ROUTE_33, ROUTE_32, ROUTE_34
+ roam_map ROUTE_34, ROUTE_33, ROUTE_35
+ roam_map ROUTE_35, ROUTE_34, ROUTE_36
+ roam_map ROUTE_36, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37
+ roam_map ROUTE_37, ROUTE_36, ROUTE_38, ROUTE_42
+ roam_map ROUTE_38, ROUTE_37, ROUTE_39, ROUTE_42
+ roam_map ROUTE_39, ROUTE_38
+ roam_map ROUTE_42, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38
+ roam_map ROUTE_43, ROUTE_42, ROUTE_44
+ roam_map ROUTE_44, ROUTE_42, ROUTE_43, ROUTE_45
+ roam_map ROUTE_45, ROUTE_44, ROUTE_46
+ roam_map ROUTE_46, ROUTE_45, ROUTE_29
+ db -1 ; end
diff --git a/data/wild/swarm_grass.asm b/data/wild/swarm_grass.asm
index 61d0d853..954ec7bb 100644
--- a/data/wild/swarm_grass.asm
+++ b/data/wild/swarm_grass.asm
@@ -1,7 +1,94 @@
-; swarms in grass
+; Pokémon swarms in grass
+
+SwarmGrassWildMons:
+
+; Yanma swarm
+ map_id ROUTE_35
+ db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+ ; morn
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 12, YANMA
+ db 14, YANMA
+ db 14, PIDGEY
+ db 10, DITTO
+ db 10, DITTO
+ ; day
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 12, YANMA
+ db 14, YANMA
+ db 14, PIDGEY
+ db 10, DITTO
+ db 10, DITTO
+ ; nite
+ db 12, NIDORAN_M
+ db 12, NIDORAN_F
+ db 12, YANMA
+ db 14, YANMA
+ db 14, HOOTHOOT
+ db 10, DITTO
+ db 10, DITTO
+
+; Snubbull swarm
+ map_id ROUTE_38
+ db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+
+ IF DEF(_GOLD)
+ ; morn
+ db 16, SNUBBULL
+ db 16, RATICATE
+ db 16, MAGNEMITE
+ db 16, FARFETCH_D
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, TAUROS
+ ; day
+ db 16, SNUBBULL
+ db 16, RATICATE
+ db 16, MAGNEMITE
+ db 16, FARFETCH_D
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, TAUROS
+ ; nite
+ db 16, SNUBBULL
+ db 16, RATICATE
+ db 16, MAGNEMITE
+ db 16, RATTATA
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, TAUROS
+
+ ELIF DEF(_SILVER)
+ ; morn
+ db 16, SNUBBULL
+ db 16, MEOWTH
+ db 16, MAGNEMITE
+ db 16, FARFETCH_D
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, TAUROS
+ ; day
+ db 16, SNUBBULL
+ db 16, MEOWTH
+ db 16, MAGNEMITE
+ db 16, FARFETCH_D
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, TAUROS
+ ; nite
+ db 16, SNUBBULL
+ db 16, MEOWTH
+ db 16, MAGNEMITE
+ db 16, MEOWTH
+ db 13, MILTANK
+ db 13, TAUROS
+ db 13, TAUROS
+ ENDC
; Dunsparce swarm
- map DARK_CAVE_VIOLET_ENTRANCE
+ map_id DARK_CAVE_VIOLET_ENTRANCE
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
; morn
db 3, GEODUDE
@@ -28,32 +115,32 @@
db 4, DUNSPARCE
db 4, DUNSPARCE
-; Yanma swarm
- map ROUTE_35
- db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
+; Marill swarm
+ map_id MOUNT_MORTAR_1F_OUTSIDE
+ db 6 percent, 6 percent, 6 percent ; encounter rates: morn/day/nite
; morn
- db 12, NIDORAN_M
- db 12, NIDORAN_F
- db 12, YANMA
- db 14, YANMA
- db 14, PIDGEY
- db 10, DITTO
- db 10, DITTO
+ db 13, MARILL
+ db 15, ZUBAT
+ db 14, MACHOP
+ db 15, MARILL
+ db 14, GEODUDE
+ db 16, RATTATA
+ db 16, RATTATA
; day
- db 12, NIDORAN_M
- db 12, NIDORAN_F
- db 12, YANMA
- db 14, YANMA
- db 14, PIDGEY
- db 10, DITTO
- db 10, DITTO
+ db 13, MARILL
+ db 15, ZUBAT
+ db 14, MACHOP
+ db 15, MARILL
+ db 14, GEODUDE
+ db 16, RATTATA
+ db 16, RATTATA
; nite
- db 12, NIDORAN_M
- db 12, NIDORAN_F
- db 12, YANMA
- db 14, YANMA
- db 14, HOOTHOOT
- db 10, DITTO
- db 10, DITTO
+ db 13, MARILL
+ db 15, ZUBAT
+ db 14, MACHOP
+ db 15, MARILL
+ db 14, GEODUDE
+ db 16, RATTATA
+ db 16, RATTATA
db -1 ; end
diff --git a/data/wild/swarm_water.asm b/data/wild/swarm_water.asm
index 67751b2b..d535dc6d 100644
--- a/data/wild/swarm_water.asm
+++ b/data/wild/swarm_water.asm
@@ -1,5 +1,12 @@
-; swarms in water
+; Pokémon swarms in water
- ; No swarms encountered while surfing in Crystal
+SwarmWaterWildMons:
+
+; Marill swarm
+ map_id MOUNT_MORTAR_1F_OUTSIDE
+ db 4 percent ; encounter rate
+ db 20, GOLDEEN
+ db 20, MARILL
+ db 20, SEAKING
db -1 ; end
diff --git a/data/wild/treemon_maps.asm b/data/wild/treemon_maps.asm
new file mode 100644
index 00000000..ed547b84
--- /dev/null
+++ b/data/wild/treemon_maps.asm
@@ -0,0 +1,48 @@
+treemon_map: MACRO
+ map_id \1
+ db \2 ; treemon set
+ENDM
+
+TreeMonMaps:
+ treemon_map ROUTE_26, TREEMON_SET_FOREST
+ treemon_map ROUTE_27, TREEMON_SET_FOREST
+ treemon_map ROUTE_28, TREEMON_SET_NONE
+ treemon_map ROUTE_29, TREEMON_SET_CANYON
+ treemon_map ROUTE_30, TREEMON_SET_CANYON
+ treemon_map ROUTE_31, TREEMON_SET_CANYON
+ treemon_map ROUTE_32, TREEMON_SET_CANYON
+ treemon_map ROUTE_33, TREEMON_SET_CANYON
+ treemon_map ROUTE_34, TREEMON_SET_FOREST
+ treemon_map ROUTE_35, TREEMON_SET_FOREST
+ treemon_map ROUTE_36, TREEMON_SET_FOREST
+ treemon_map ROUTE_37, TREEMON_SET_FOREST
+ treemon_map ROUTE_38, TREEMON_SET_FOREST
+ treemon_map ROUTE_39, TREEMON_SET_FOREST
+ treemon_map ROUTE_40, TREEMON_SET_NONE
+ treemon_map ROUTE_41, TREEMON_SET_NONE
+ treemon_map ROUTE_42, TREEMON_SET_CANYON
+ treemon_map ROUTE_43, TREEMON_SET_CANYON
+ treemon_map ROUTE_44, TREEMON_SET_CANYON
+ treemon_map ROUTE_45, TREEMON_SET_CANYON
+ treemon_map ROUTE_46, TREEMON_SET_CANYON
+ treemon_map NEW_BARK_TOWN, TREEMON_SET_CITY
+ treemon_map CHERRYGROVE_CITY, TREEMON_SET_NONE
+ treemon_map VIOLET_CITY, TREEMON_SET_CITY
+ treemon_map AZALEA_TOWN, TREEMON_SET_FOREST
+ treemon_map CIANWOOD_CITY, TREEMON_SET_NONE
+ treemon_map GOLDENROD_CITY, TREEMON_SET_NONE
+ treemon_map OLIVINE_CITY, TREEMON_SET_NONE
+ treemon_map ECRUTEAK_CITY, TREEMON_SET_CITY
+ treemon_map MAHOGANY_TOWN, TREEMON_SET_CITY
+ treemon_map LAKE_OF_RAGE, TREEMON_SET_FOREST
+ treemon_map BLACKTHORN_CITY, TREEMON_SET_CITY
+ treemon_map SILVER_CAVE_OUTSIDE, TREEMON_SET_NONE
+ treemon_map ILEX_FOREST, TREEMON_SET_FOREST
+ db -1
+
+RockMonMaps:
+ treemon_map CIANWOOD_CITY, TREEMON_SET_ROCK
+ treemon_map ROUTE_40, TREEMON_SET_ROCK
+ treemon_map DARK_CAVE_VIOLET_ENTRANCE, TREEMON_SET_ROCK
+ treemon_map SLOWPOKE_WELL_B1F, TREEMON_SET_ROCK
+ db -1
diff --git a/data/wild/treemons.asm b/data/wild/treemons.asm
new file mode 100644
index 00000000..f2687339
--- /dev/null
+++ b/data/wild/treemons.asm
@@ -0,0 +1,92 @@
+TreeMons:
+; entries correspond to TREEMON_SET_* constants
+ dw TreeMonSet_None
+ dw TreeMonSet_Forest
+ dw TreeMonSet_Canyon
+ dw TreeMonSet_Rock
+ dw TreeMonSet_Unused
+ dw TreeMonSet_City
+
+; Two tables each (common, rare).
+; Structure:
+; db %, species, level
+
+TreeMonSet_None:
+TreeMonSet_Unused:
+TreeMonSet_City:
+; common
+ db 50, VENONAT, 15
+ db 30, VENONAT, 15
+ db 10, ABRA, 15
+ db 5, ABRA, 15
+ db 5, VENOMOTH, 15
+ db -1
+; rare
+ db 50, VENONAT, 15
+ db 30, MAGNEMITE, 15
+ db 10, ABRA, 15
+ db 5, ABRA, 15
+ db 5, VENOMOTH, 15
+ db -1
+
+TreeMonSet_Forest:
+
+IF DEF(_GOLD)
+; common
+ db 50, CATERPIE, 10
+ db 15, CATERPIE, 10
+ db 15, METAPOD, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, BUTTERFREE, 10
+ db -1
+; rare
+ db 50, CATERPIE, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, BUTTERFREE, 10
+ db -1
+
+ELIF DEF(_SILVER)
+; common
+ db 50, WEEDLE, 10
+ db 15, WEEDLE, 10
+ db 15, KAKUNA, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, BEEDRILL, 10
+ db -1
+; rare
+ db 50, WEEDLE, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, BEEDRILL, 10
+ db -1
+ENDC
+
+TreeMonSet_Canyon:
+; 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
+
+TreeMonSet_Rock:
+ db 90, KRABBY, 15
+ db 10, SHUCKLE, 15
+ db -1
diff --git a/data/wild/unlocked_unowns.asm b/data/wild/unlocked_unowns.asm
new file mode 100644
index 00000000..d09064c4
--- /dev/null
+++ b/data/wild/unlocked_unowns.asm
@@ -0,0 +1,24 @@
+unown_set: MACRO
+rept _NARG
+ db UNOWN_\1
+ shift
+endr
+ db -1
+ENDM
+
+UnlockedUnownLetterSets:
+; entries correspond to wUnlockedUnowns bits
+ dw .Set_A_K ; ENGINE_UNLOCKED_UNOWNS_A_TO_K
+ dw .Set_L_R ; ENGINE_UNLOCKED_UNOWNS_L_TO_R
+ dw .Set_S_W ; ENGINE_UNLOCKED_UNOWNS_S_TO_W
+ dw .Set_X_Z ; ENGINE_UNLOCKED_UNOWNS_X_TO_Z
+.End
+
+.Set_A_K:
+ unown_set A, B, C, D, E, F, G, H, I, J, K
+.Set_L_R:
+ unown_set L, M, N, O, P, Q, R
+.Set_S_W:
+ unown_set S, T, U, V, W
+.Set_X_Z:
+ unown_set X, Y, Z