summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/battle/always_happen_effects.asm13
-rw-r--r--data/battle/critical_hit_moves.asm6
-rw-r--r--data/battle/residual_effects_1.asm20
-rw-r--r--data/battle/residual_effects_2.asm32
-rw-r--r--data/battle/set_damage_effects.asm6
-rw-r--r--data/battle/special_effects.asm24
-rw-r--r--data/battle/stat_modifiers.asm15
-rw-r--r--data/battle/unused_critical_hit_moves.asm6
-rw-r--r--data/bookshelf_tile_ids.asm37
-rw-r--r--data/cut_tree_blocks.asm13
-rw-r--r--data/door_tile_ids.asm48
-rw-r--r--data/dungeon_maps.asm29
-rw-r--r--data/effects_pointers.asm87
-rw-r--r--data/growth_rates.asm12
-rw-r--r--data/guard_drink_items.asm2
-rw-r--r--data/ledge_tiles.asm11
-rw-r--r--data/mon_party_sprite_pointers.asm140
-rw-r--r--data/move_animation_pointers.asm81
-rw-r--r--data/move_animation_special_effects.asm75
-rw-r--r--data/move_grammar.asm14
-rw-r--r--data/move_sfx.asm168
-rw-r--r--data/overworld_items.asm9
-rw-r--r--data/party_items.asm39
-rw-r--r--data/predef_pointers.asm102
-rw-r--r--data/rest_house_maps.asm5
-rw-r--r--data/trainer_ai_pointers.asm51
-rw-r--r--data/trainer_move_choices.asm50
-rwxr-xr-xdata/trainer_pic_money_pointers.asm143
-rw-r--r--data/vending_prices.asm7
-rw-r--r--data/warp_carpet_tile_ids.asm17
-rw-r--r--data/warp_pad_hole_tile_ids.asm7
-rw-r--r--data/water_tilesets.asm4
-rw-r--r--data/wild_probabilities.asm15
33 files changed, 1288 insertions, 0 deletions
diff --git a/data/battle/always_happen_effects.asm b/data/battle/always_happen_effects.asm
new file mode 100644
index 00000000..4b6d466f
--- /dev/null
+++ b/data/battle/always_happen_effects.asm
@@ -0,0 +1,13 @@
+AlwaysHappenSideEffects:
+; Attacks that aren't finished after they faint the opponent.
+ db DRAIN_HP_EFFECT
+ db EXPLODE_EFFECT
+ db DREAM_EATER_EFFECT
+ db PAY_DAY_EFFECT
+ db TWO_TO_FIVE_ATTACKS_EFFECT
+ db $1E
+ db ATTACK_TWICE_EFFECT
+ db RECOIL_EFFECT
+ db TWINEEDLE_EFFECT
+ db RAGE_EFFECT
+ db -1
diff --git a/data/battle/critical_hit_moves.asm b/data/battle/critical_hit_moves.asm
new file mode 100644
index 00000000..ee7543e8
--- /dev/null
+++ b/data/battle/critical_hit_moves.asm
@@ -0,0 +1,6 @@
+HighCriticalMoves:
+ db KARATE_CHOP
+ db RAZOR_LEAF
+ db CRABHAMMER
+ db SLASH
+ db $FF
diff --git a/data/battle/residual_effects_1.asm b/data/battle/residual_effects_1.asm
new file mode 100644
index 00000000..36e28391
--- /dev/null
+++ b/data/battle/residual_effects_1.asm
@@ -0,0 +1,20 @@
+; These are move effects (second value from the Moves table in bank $E).
+ResidualEffects1:
+; most non-side effects
+ db CONVERSION_EFFECT
+ db HAZE_EFFECT
+ db SWITCH_AND_TELEPORT_EFFECT
+ db MIST_EFFECT
+ db FOCUS_ENERGY_EFFECT
+ db CONFUSION_EFFECT
+ db HEAL_EFFECT
+ db TRANSFORM_EFFECT
+ db LIGHT_SCREEN_EFFECT
+ db REFLECT_EFFECT
+ db POISON_EFFECT
+ db PARALYZE_EFFECT
+ db SUBSTITUTE_EFFECT
+ db MIMIC_EFFECT
+ db LEECH_SEED_EFFECT
+ db SPLASH_EFFECT
+ db -1
diff --git a/data/battle/residual_effects_2.asm b/data/battle/residual_effects_2.asm
new file mode 100644
index 00000000..cde55cc9
--- /dev/null
+++ b/data/battle/residual_effects_2.asm
@@ -0,0 +1,32 @@
+ResidualEffects2:
+; non-side effects not included in ResidualEffects1
+; stat-affecting moves, sleep-inflicting moves, and Bide
+; e.g., Meditate, Bide, Hypnosis
+ db $01
+ db ATTACK_UP1_EFFECT
+ db DEFENSE_UP1_EFFECT
+ db SPEED_UP1_EFFECT
+ db SPECIAL_UP1_EFFECT
+ db ACCURACY_UP1_EFFECT
+ db EVASION_UP1_EFFECT
+ db ATTACK_DOWN1_EFFECT
+ db DEFENSE_DOWN1_EFFECT
+ db SPEED_DOWN1_EFFECT
+ db SPECIAL_DOWN1_EFFECT
+ db ACCURACY_DOWN1_EFFECT
+ db EVASION_DOWN1_EFFECT
+ db BIDE_EFFECT
+ db SLEEP_EFFECT
+ db ATTACK_UP2_EFFECT
+ db DEFENSE_UP2_EFFECT
+ db SPEED_UP2_EFFECT
+ db SPECIAL_UP2_EFFECT
+ db ACCURACY_UP2_EFFECT
+ db EVASION_UP2_EFFECT
+ db ATTACK_DOWN2_EFFECT
+ db DEFENSE_DOWN2_EFFECT
+ db SPEED_DOWN2_EFFECT
+ db SPECIAL_DOWN2_EFFECT
+ db ACCURACY_DOWN2_EFFECT
+ db EVASION_DOWN2_EFFECT
+ db -1
diff --git a/data/battle/set_damage_effects.asm b/data/battle/set_damage_effects.asm
new file mode 100644
index 00000000..3fc75e41
--- /dev/null
+++ b/data/battle/set_damage_effects.asm
@@ -0,0 +1,6 @@
+SetDamageEffects:
+; moves that do damage but not through normal calculations
+; e.g., Super Fang, Psywave
+ db SUPER_FANG_EFFECT
+ db SPECIAL_DAMAGE_EFFECT
+ db -1
diff --git a/data/battle/special_effects.asm b/data/battle/special_effects.asm
new file mode 100644
index 00000000..0db05b9a
--- /dev/null
+++ b/data/battle/special_effects.asm
@@ -0,0 +1,24 @@
+SpecialEffects:
+; Effects from arrays 2, 4, and 5B, minus Twineedle and Rage.
+; Includes all effects that do not need to be called at the end of
+; ExecutePlayerMove (or ExecuteEnemyMove), because they have already been handled
+ db DRAIN_HP_EFFECT
+ db EXPLODE_EFFECT
+ db DREAM_EATER_EFFECT
+ db PAY_DAY_EFFECT
+ db SWIFT_EFFECT
+ db TWO_TO_FIVE_ATTACKS_EFFECT
+ db $1E
+ db CHARGE_EFFECT
+ db SUPER_FANG_EFFECT
+ db SPECIAL_DAMAGE_EFFECT
+ db FLY_EFFECT
+ db ATTACK_TWICE_EFFECT
+ db JUMP_KICK_EFFECT
+ db RECOIL_EFFECT
+ ; fallthrough to Next EffectsArray
+SpecialEffectsCont:
+; damaging moves whose effect is executed prior to damage calculation
+ db THRASH_PETAL_DANCE_EFFECT
+ db TRAPPING_EFFECT
+ db -1
diff --git a/data/battle/stat_modifiers.asm b/data/battle/stat_modifiers.asm
new file mode 100644
index 00000000..c0a6355a
--- /dev/null
+++ b/data/battle/stat_modifiers.asm
@@ -0,0 +1,15 @@
+StatModifierRatios:
+; first byte is numerator, second byte is denominator
+ db 25, 100 ; 0.25
+ db 28, 100 ; 0.28
+ db 33, 100 ; 0.33
+ db 40, 100 ; 0.40
+ db 50, 100 ; 0.50
+ db 66, 100 ; 0.66
+ db 1, 1 ; 1.00
+ db 15, 10 ; 1.50
+ db 2, 1 ; 2.00
+ db 25, 10 ; 2.50
+ db 3, 1 ; 3.00
+ db 35, 10 ; 3.50
+ db 4, 1 ; 4.00
diff --git a/data/battle/unused_critical_hit_moves.asm b/data/battle/unused_critical_hit_moves.asm
new file mode 100644
index 00000000..84cb65ce
--- /dev/null
+++ b/data/battle/unused_critical_hit_moves.asm
@@ -0,0 +1,6 @@
+UnusedHighCriticalMoves:
+ db KARATE_CHOP
+ db RAZOR_LEAF
+ db CRABHAMMER
+ db SLASH
+ db $FF
diff --git a/data/bookshelf_tile_ids.asm b/data/bookshelf_tile_ids.asm
new file mode 100644
index 00000000..535bf8e9
--- /dev/null
+++ b/data/bookshelf_tile_ids.asm
@@ -0,0 +1,37 @@
+; format: db tileset id, bookshelf tile id, text id
+BookshelfTileIDs:
+ db PLATEAU, $30
+ db_tx_pre IndigoPlateauStatues
+ db HOUSE, $3D
+ db_tx_pre TownMapText
+ db HOUSE, $1E
+ db_tx_pre BookOrSculptureText
+ db MANSION, $32
+ db_tx_pre BookOrSculptureText
+ db REDS_HOUSE_1, $32
+ db_tx_pre BookOrSculptureText
+ db LAB, $28
+ db_tx_pre BookOrSculptureText
+ db LOBBY, $16
+ db_tx_pre ElevatorText
+ db GYM, $1D
+ db_tx_pre BookOrSculptureText
+ db DOJO, $1D
+ db_tx_pre BookOrSculptureText
+ db GATE, $22
+ db_tx_pre BookOrSculptureText
+ db MART, $54
+ db_tx_pre PokemonStuffText
+ db MART, $55
+ db_tx_pre PokemonStuffText
+ db POKECENTER, $54
+ db_tx_pre PokemonStuffText
+ db POKECENTER, $55
+ db_tx_pre PokemonStuffText
+ db LOBBY, $50
+ db_tx_pre PokemonStuffText
+ db LOBBY, $52
+ db_tx_pre PokemonStuffText
+ db SHIP, $36
+ db_tx_pre BookOrSculptureText
+ db $FF
diff --git a/data/cut_tree_blocks.asm b/data/cut_tree_blocks.asm
new file mode 100644
index 00000000..eb63a712
--- /dev/null
+++ b/data/cut_tree_blocks.asm
@@ -0,0 +1,13 @@
+CutTreeBlockSwaps:
+; first byte = tileset block containing the cut tree
+; second byte = corresponding tileset block after the cut animation happens
+ db $32, $6D
+ db $33, $6C
+ db $34, $6F
+ db $35, $4C
+ db $60, $6E
+ db $0B, $0A
+ db $3C, $35
+ db $3F, $35
+ db $3D, $36
+ db $FF ; list terminator
diff --git a/data/door_tile_ids.asm b/data/door_tile_ids.asm
new file mode 100644
index 00000000..686e418c
--- /dev/null
+++ b/data/door_tile_ids.asm
@@ -0,0 +1,48 @@
+DoorTileIDPointers:
+ dbw OVERWORLD, OverworldDoorTileIDs
+ dbw FOREST, ForestDoorTileIDs
+ dbw MART, MartDoorTileIDs
+ dbw HOUSE, HouseDoorTileIDs
+ dbw FOREST_GATE, TilesetMuseumDoorTileIDs
+ dbw MUSEUM, TilesetMuseumDoorTileIDs
+ dbw GATE, TilesetMuseumDoorTileIDs
+ dbw SHIP, ShipDoorTileIDs
+ dbw LOBBY, LobbyDoorTileIDs
+ dbw MANSION, MansionDoorTileIDs
+ dbw LAB, LabDoorTileIDs
+ dbw FACILITY, FacilityDoorTileIDs
+ dbw PLATEAU, PlateauDoorTileIDs
+ db $ff
+
+OverworldDoorTileIDs:
+ db $1B,$58,$00
+
+ForestDoorTileIDs:
+ db $3a,$00
+
+MartDoorTileIDs:
+ db $5e,$00
+
+HouseDoorTileIDs:
+ db $54,$00
+
+TilesetMuseumDoorTileIDs:
+ db $3b,$00
+
+ShipDoorTileIDs:
+ db $1e,$00
+
+LobbyDoorTileIDs:
+ db $1c,$38,$1a,$00
+
+MansionDoorTileIDs:
+ db $1a,$1c,$53,$00
+
+LabDoorTileIDs:
+ db $34,$00
+
+FacilityDoorTileIDs:
+ db $43,$58,$1b,$00
+
+PlateauDoorTileIDs:
+ db $3b,$1b,$00
diff --git a/data/dungeon_maps.asm b/data/dungeon_maps.asm
new file mode 100644
index 00000000..118cf46b
--- /dev/null
+++ b/data/dungeon_maps.asm
@@ -0,0 +1,29 @@
+; GetBattleTransitionID_IsDungeonMap checks if wCurMap
+; is equal to one of these maps
+DungeonMaps1:
+ db VIRIDIAN_FOREST
+ db ROCK_TUNNEL_1F
+ db SEAFOAM_ISLANDS_1F
+ db ROCK_TUNNEL_B1F
+ db $FF
+
+; GetBattleTransitionID_IsDungeonMap checks if wCurMap
+; is in between or equal to each pair of maps
+DungeonMaps2:
+ ; all MT_MOON maps
+ db MT_MOON_1F
+ db MT_MOON_B2F
+
+ ; all SS_ANNE maps, VICTORY_ROAD_1F, LANCES_ROOM, and HALL_OF_FAME
+ db SS_ANNE_1F
+ db HALL_OF_FAME
+
+ ; all POKEMON_TOWER maps and Lavender Town buildings
+ db LAVENDER_POKECENTER
+ db LAVENDER_CUBONE_HOUSE
+
+ ; SILPH_CO_[2-8]F, POKEMON_MANSION[2F-B1F], SAFARI_ZONE, and
+ ; CERULEAN_CAVE maps, except for SILPH_CO_1F
+ db SILPH_CO_2F
+ db CERULEAN_CAVE_1F
+ db $FF
diff --git a/data/effects_pointers.asm b/data/effects_pointers.asm
new file mode 100644
index 00000000..0d36e887
--- /dev/null
+++ b/data/effects_pointers.asm
@@ -0,0 +1,87 @@
+MoveEffectPointerTable:
+ dw SleepEffect ; unused effect
+ dw PoisonEffect ; POISON_SIDE_EFFECT1
+ dw DrainHPEffect ; DRAIN_HP_EFFECT
+ dw FreezeBurnParalyzeEffect ; BURN_SIDE_EFFECT1
+ dw FreezeBurnParalyzeEffect ; FREEZE_SIDE_EFFECT
+ dw FreezeBurnParalyzeEffect ; PARALYZE_SIDE_EFFECT1
+ dw ExplodeEffect ; EXPLODE_EFFECT
+ dw DrainHPEffect ; DREAM_EATER_EFFECT
+ dw $0000 ; MIRROR_MOVE_EFFECT
+ dw StatModifierUpEffect ; ATTACK_UP1_EFFECT
+ dw StatModifierUpEffect ; DEFENSE_UP1_EFFECT
+ dw StatModifierUpEffect ; SPEED_UP1_EFFECT
+ dw StatModifierUpEffect ; SPECIAL_UP1_EFFECT
+ dw StatModifierUpEffect ; ACCURACY_UP1_EFFECT
+ dw StatModifierUpEffect ; EVASION_UP1_EFFECT
+ dw PayDayEffect ; PAY_DAY_EFFECT
+ dw $0000 ; SWIFT_EFFECT
+ dw StatModifierDownEffect ; ATTACK_DOWN1_EFFECT
+ dw StatModifierDownEffect ; DEFENSE_DOWN1_EFFECT
+ dw StatModifierDownEffect ; SPEED_DOWN1_EFFECT
+ dw StatModifierDownEffect ; SPECIAL_DOWN1_EFFECT
+ dw StatModifierDownEffect ; ACCURACY_DOWN1_EFFECT
+ dw StatModifierDownEffect ; EVASION_DOWN1_EFFECT
+ dw ConversionEffect ; CONVERSION_EFFECT
+ dw HazeEffect ; HAZE_EFFECT
+ dw BideEffect ; BIDE_EFFECT
+ dw ThrashPetalDanceEffect ; THRASH_PETAL_DANCE_EFFECT
+ dw SwitchAndTeleportEffect ; SWITCH_AND_TELEPORT_EFFECT
+ dw TwoToFiveAttacksEffect ; TWO_TO_FIVE_ATTACKS_EFFECT
+ dw TwoToFiveAttacksEffect ; unused effect
+ dw FlinchSideEffect ; FLINCH_SIDE_EFFECT1
+ dw SleepEffect ; SLEEP_EFFECT
+ dw PoisonEffect ; POISON_SIDE_EFFECT2
+ dw FreezeBurnParalyzeEffect ; BURN_SIDE_EFFECT2
+ dw FreezeBurnParalyzeEffect ; unused effect
+ dw FreezeBurnParalyzeEffect ; PARALYZE_SIDE_EFFECT2
+ dw FlinchSideEffect ; FLINCH_SIDE_EFFECT2
+ dw OneHitKOEffect ; OHKO_EFFECT
+ dw ChargeEffect ; CHARGE_EFFECT
+ dw $0000 ; SUPER_FANG_EFFECT
+ dw $0000 ; SPECIAL_DAMAGE_EFFECT
+ dw TrappingEffect ; TRAPPING_EFFECT
+ dw ChargeEffect ; FLY_EFFECT
+ dw TwoToFiveAttacksEffect ; ATTACK_TWICE_EFFECT
+ dw $0000 ; JUMP_KICK_EFFECT
+ dw MistEffect ; MIST_EFFECT
+ dw FocusEnergyEffect ; FOCUS_ENERGY_EFFECT
+ dw RecoilEffect ; RECOIL_EFFECT
+ dw ConfusionEffect ; CONFUSION_EFFECT
+ dw StatModifierUpEffect ; ATTACK_UP2_EFFECT
+ dw StatModifierUpEffect ; DEFENSE_UP2_EFFECT
+ dw StatModifierUpEffect ; SPEED_UP2_EFFECT
+ dw StatModifierUpEffect ; SPECIAL_UP2_EFFECT
+ dw StatModifierUpEffect ; ACCURACY_UP2_EFFECT
+ dw StatModifierUpEffect ; EVASION_UP2_EFFECT
+ dw HealEffect ; HEAL_EFFECT
+ dw TransformEffect ; TRANSFORM_EFFECT
+ dw StatModifierDownEffect ; ATTACK_DOWN2_EFFECT
+ dw StatModifierDownEffect ; DEFENSE_DOWN2_EFFECT
+ dw StatModifierDownEffect ; SPEED_DOWN2_EFFECT
+ dw StatModifierDownEffect ; SPECIAL_DOWN2_EFFECT
+ dw StatModifierDownEffect ; ACCURACY_DOWN2_EFFECT
+ dw StatModifierDownEffect ; EVASION_DOWN2_EFFECT
+ dw ReflectLightScreenEffect ; LIGHT_SCREEN_EFFECT
+ dw ReflectLightScreenEffect ; REFLECT_EFFECT
+ dw PoisonEffect ; POISON_EFFECT
+ dw ParalyzeEffect ; PARALYZE_EFFECT
+ dw StatModifierDownEffect ; ATTACK_DOWN_SIDE_EFFECT
+ dw StatModifierDownEffect ; DEFENSE_DOWN_SIDE_EFFECT
+ dw StatModifierDownEffect ; SPEED_DOWN_SIDE_EFFECT
+ dw StatModifierDownEffect ; SPECIAL_DOWN_SIDE_EFFECT
+ dw StatModifierDownEffect ; unused effect
+ dw StatModifierDownEffect ; unused effect
+ dw StatModifierDownEffect ; unused effect
+ dw StatModifierDownEffect ; unused effect
+ dw ConfusionSideEffect ; CONFUSION_SIDE_EFFECT
+ dw TwoToFiveAttacksEffect ; TWINEEDLE_EFFECT
+ dw $0000 ; unused effect
+ dw SubstituteEffect ; SUBSTITUTE_EFFECT
+ dw HyperBeamEffect ; HYPER_BEAM_EFFECT
+ dw RageEffect ; RAGE_EFFECT
+ dw MimicEffect ; MIMIC_EFFECT
+ dw $0000 ; METRONOME_EFFECT
+ dw LeechSeedEffect ; LEECH_SEED_EFFECT
+ dw SplashEffect ; SPLASH_EFFECT
+ dw DisableEffect ; DISABLE_EFFECT
diff --git a/data/growth_rates.asm b/data/growth_rates.asm
new file mode 100644
index 00000000..6c443183
--- /dev/null
+++ b/data/growth_rates.asm
@@ -0,0 +1,12 @@
+; each entry has the following scheme:
+; %AAAABBBB %SCCCCCCC %DDDDDDDD %EEEEEEEE
+; resulting in
+; (a*n^3)/b + sign*c*n^2 + d*n - e
+; where sign = -1 <=> S=1
+GrowthRateTable:
+ db $11,$00,$00,$00 ; medium fast n^3
+ db $34,$0A,$00,$1E ; (unused?) 3/4 n^3 + 10 n^2 - 30
+ db $34,$14,$00,$46 ; (unused?) 3/4 n^3 + 20 n^2 - 70
+ db $65,$8F,$64,$8C ; medium slow: 6/5 n^3 - 15 n^2 + 100 n - 140
+ db $45,$00,$00,$00 ; fast: 4/5 n^3
+ db $54,$00,$00,$00 ; slow: 5/4 n^3
diff --git a/data/guard_drink_items.asm b/data/guard_drink_items.asm
new file mode 100644
index 00000000..effef203
--- /dev/null
+++ b/data/guard_drink_items.asm
@@ -0,0 +1,2 @@
+GuardDrinksList:
+ db FRESH_WATER, SODA_POP, LEMONADE, $00
diff --git a/data/ledge_tiles.asm b/data/ledge_tiles.asm
new file mode 100644
index 00000000..b742af1a
--- /dev/null
+++ b/data/ledge_tiles.asm
@@ -0,0 +1,11 @@
+LedgeTiles:
+ ; (player direction) (tile player standing on) (ledge tile) (input required)
+ db SPRITE_FACING_DOWN, $2C,$37,D_DOWN
+ db SPRITE_FACING_DOWN, $39,$36,D_DOWN
+ db SPRITE_FACING_DOWN, $39,$37,D_DOWN
+ db SPRITE_FACING_LEFT, $2C,$27,D_LEFT
+ db SPRITE_FACING_LEFT, $39,$27,D_LEFT
+ db SPRITE_FACING_RIGHT,$2C,$0D,D_RIGHT
+ db SPRITE_FACING_RIGHT,$2C,$1D,D_RIGHT
+ db SPRITE_FACING_RIGHT,$39,$0D,D_RIGHT
+ db $FF
diff --git a/data/mon_party_sprite_pointers.asm b/data/mon_party_sprite_pointers.asm
new file mode 100644
index 00000000..7e94b04a
--- /dev/null
+++ b/data/mon_party_sprite_pointers.asm
@@ -0,0 +1,140 @@
+MonPartySpritePointers:
+ dw SlowbroSprite + $c0
+ db $40 / $10 ; 40 bytes
+ db BANK(SlowbroSprite)
+ dw vSprites
+
+ dw BallSprite
+ db $80 / $10 ; $80 bytes
+ db BANK(BallSprite)
+ dw vSprites + $40
+
+ dw ClefairySprite + $c0
+ db $40 / $10 ; $40 bytes
+ db BANK(ClefairySprite)
+ dw vSprites + $c0
+
+ dw BirdSprite + $c0
+ db $40 / $10 ; $40 bytes
+ db BANK(BirdSprite)
+ dw vSprites + $100
+
+ dw SeelSprite
+ db $40 / $10 ; $40 bytes
+ db BANK(SeelSprite)
+ dw vSprites + $140
+
+ dw MonPartySprites + $40
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $180
+
+ dw MonPartySprites + $50
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $1a0
+
+ dw MonPartySprites + $60
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $1c0
+
+ dw MonPartySprites + $70
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $1e0
+
+ dw MonPartySprites + $80
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $200
+
+ dw MonPartySprites + $90
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $220
+
+ dw MonPartySprites + $A0
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $240
+
+ dw MonPartySprites + $B0
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $260
+
+ dw MonPartySprites + $100
+ db $40 / $10 ; $40 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $380
+
+ dw SlowbroSprite
+ db $40 / $10 ; $40 bytes
+ db BANK(SlowbroSprite)
+ dw vSprites + $400
+
+ dw BallSprite
+ db $80 / $10 ; $80 bytes
+ db BANK(BallSprite)
+ dw vSprites + $440
+
+ dw ClefairySprite
+ db $40 / $10 ; $40 bytes
+ db BANK(ClefairySprite)
+ dw vSprites + $4c0
+
+ dw BirdSprite
+ db $40 / $10 ; $40 bytes
+ db BANK(BirdSprite)
+ dw vSprites + $500
+
+ dw SeelSprite + $C0
+ db $40 / $10 ; $40 bytes
+ db BANK(SeelSprite)
+ dw vSprites + $540
+
+ dw MonPartySprites
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $580
+
+ dw MonPartySprites + $10
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $5a0
+
+ dw MonPartySprites + $20
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $5c0
+
+ dw MonPartySprites + $30
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $5E0
+
+ dw MonPartySprites + $C0
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $600
+
+ dw MonPartySprites + $D0
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $620
+
+ dw MonPartySprites + $E0
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $640
+
+ dw MonPartySprites + $F0
+ db $10 / $10 ; $10 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $660
+
+ dw MonPartySprites + $140
+ db $40 / $10 ; $40 bytes
+ db BANK(MonPartySprites)
+ dw vSprites + $780
diff --git a/data/move_animation_pointers.asm b/data/move_animation_pointers.asm
new file mode 100644
index 00000000..ba607141
--- /dev/null
+++ b/data/move_animation_pointers.asm
@@ -0,0 +1,81 @@
+; Format: Special Effect ID (1 byte), Address (2 bytes)
+SpecialEffectPointers:
+ db SE_DARK_SCREEN_FLASH ; $FE
+ dw AnimationFlashScreen
+ db SE_DARK_SCREEN_PALETTE ; $FD
+ dw AnimationDarkScreenPalette
+ db SE_RESET_SCREEN_PALETTE ; $FC
+ dw AnimationResetScreenPalette
+ db SE_SHAKE_SCREEN ; $FB
+ dw AnimationShakeScreen
+ db SE_WATER_DROPLETS_EVERYWHERE ; $FA
+ dw AnimationWaterDropletsEverywhere
+ db SE_DARKEN_MON_PALETTE ; $F9
+ dw AnimationDarkenMonPalette
+ db SE_FLASH_SCREEN_LONG ; $F8
+ dw AnimationFlashScreenLong
+ db SE_SLIDE_MON_UP ; $F7
+ dw AnimationSlideMonUp
+ db SE_SLIDE_MON_DOWN ; $F6
+ dw AnimationSlideMonDown
+ db SE_FLASH_MON_PIC ; $F5
+ dw AnimationFlashMonPic
+ db SE_SLIDE_MON_OFF ; $F4
+ dw AnimationSlideMonOff
+ db SE_BLINK_MON ; $F3
+ dw AnimationBlinkMon
+ db SE_MOVE_MON_HORIZONTALLY ; $F2
+ dw AnimationMoveMonHorizontally
+ db SE_RESET_MON_POSITION ; $F1
+ dw AnimationResetMonPosition
+ db SE_LIGHT_SCREEN_PALETTE ; $F0
+ dw AnimationLightScreenPalette
+ db SE_HIDE_MON_PIC ; $EF
+ dw AnimationHideMonPic
+ db SE_SQUISH_MON_PIC ; $EE
+ dw AnimationSquishMonPic
+ db SE_SHOOT_BALLS_UPWARD ; $ED
+ dw AnimationShootBallsUpward
+ db SE_SHOOT_MANY_BALLS_UPWARD ; $EC
+ dw AnimationShootManyBallsUpward
+ db SE_BOUNCE_UP_AND_DOWN ; $EB
+ dw AnimationBoundUpAndDown
+ db SE_MINIMIZE_MON ; $EA
+ dw AnimationMinimizeMon
+ db SE_SLIDE_MON_DOWN_AND_HIDE ; $E9
+ dw AnimationSlideMonDownAndHide
+ db SE_TRANSFORM_MON ; $E8
+ dw AnimationTransformMon
+ db SE_LEAVES_FALLING ; $E7
+ dw AnimationLeavesFalling
+ db SE_PETALS_FALLING ; $E6
+ dw AnimationPetalsFalling
+ db SE_SLIDE_MON_HALF_OFF ; $E5
+ dw AnimationSlideMonHalfOff
+ db SE_SHAKE_ENEMY_HUD ; $E4
+ dw AnimationShakeEnemyHUD
+ db SE_SHAKE_ENEMY_HUD_2 ; unused--same pointer as SE_SHAKE_ENEMY_HUD ($E4)
+ dw AnimationShakeEnemyHUD
+ db SE_SPIRAL_BALLS_INWARD ; $E2
+ dw AnimationSpiralBallsInward
+ db SE_DELAY_ANIMATION_10 ; $E1
+ dw AnimationDelay10
+ db SE_FLASH_ENEMY_MON_PIC ; unused--same as SE_FLASH_MON_PIC ($F5), but for the enemy mon
+ dw AnimationFlashEnemyMonPic
+ db SE_HIDE_ENEMY_MON_PIC ; $DF
+ dw AnimationHideEnemyMonPic
+ db SE_BLINK_ENEMY_MON ; $DE
+ dw AnimationBlinkEnemyMon
+ db SE_SHOW_MON_PIC ; $DD
+ dw AnimationShowMonPic
+ db SE_SHOW_ENEMY_MON_PIC ; $DC
+ dw AnimationShowEnemyMonPic
+ db SE_SLIDE_ENEMY_MON_OFF ; $DB
+ dw AnimationSlideEnemyMonOff
+ db SE_SHAKE_BACK_AND_FORTH ; $DA
+ dw AnimationShakeBackAndForth
+ db SE_SUBSTITUTE_MON ; $D9
+ dw AnimationSubstitute
+ db SE_WAVY_SCREEN ; $D8
+ dw AnimationWavyScreen
+ db $FF
diff --git a/data/move_animation_special_effects.asm b/data/move_animation_special_effects.asm
new file mode 100644
index 00000000..9dfb5645
--- /dev/null
+++ b/data/move_animation_special_effects.asm
@@ -0,0 +1,75 @@
+; Format: Animation ID (1 byte), Address (2 bytes)
+AnimationIdSpecialEffects:
+ db MEGA_PUNCH
+ dw AnimationFlashScreen
+
+ db GUILLOTINE
+ dw AnimationFlashScreen
+
+ db MEGA_KICK
+ dw AnimationFlashScreen
+
+ db HEADBUTT
+ dw AnimationFlashScreen
+
+ db TAIL_WHIP
+ dw TailWhipAnimationUnused
+
+ db GROWL
+ dw DoGrowlSpecialEffects
+
+ db DISABLE
+ dw AnimationFlashScreen
+
+ db BLIZZARD
+ dw DoBlizzardSpecialEffects
+
+ db BUBBLEBEAM
+ dw AnimationFlashScreen
+
+ db HYPER_BEAM
+ dw FlashScreenEveryFourFrameBlocks
+
+ db THUNDERBOLT
+ dw FlashScreenEveryEightFrameBlocks
+
+ db REFLECT
+ dw AnimationFlashScreen
+
+ db SELFDESTRUCT
+ dw DoExplodeSpecialEffects
+
+ db SPORE
+ dw AnimationFlashScreen
+
+ db EXPLOSION
+ dw DoExplodeSpecialEffects
+
+ db ROCK_SLIDE
+ dw DoRockSlideSpecialEffects
+
+ db TRADE_BALL_DROP_ANIM
+ dw TradeHidePokemon
+
+ db TRADE_BALL_SHAKE_ANIM
+ dw TradeShakePokeball
+
+ db TRADE_BALL_TILT_ANIM
+ dw TradeJumpPokeball
+
+ db TOSS_ANIM
+ dw DoBallTossSpecialEffects
+
+ db SHAKE_ANIM
+ dw DoBallShakeSpecialEffects
+
+ db POOF_ANIM
+ dw DoPoofSpecialEffects
+
+ db GREATTOSS_ANIM
+ dw DoBallTossSpecialEffects
+
+ db ULTRATOSS_ANIM
+ dw DoBallTossSpecialEffects
+
+ db $FF ; terminator
diff --git a/data/move_grammar.asm b/data/move_grammar.asm
new file mode 100644
index 00000000..8113ab7c
--- /dev/null
+++ b/data/move_grammar.asm
@@ -0,0 +1,14 @@
+ExclamationPointMoveSets:
+ db SWORDS_DANCE, GROWTH
+ db $00
+ db RECOVER, BIDE, SELFDESTRUCT, AMNESIA
+ db $00
+ db MEDITATE, AGILITY, TELEPORT, MIMIC, DOUBLE_TEAM, BARRAGE
+ db $00
+ db POUND, SCRATCH, VICEGRIP, WING_ATTACK, FLY, BIND, SLAM, HORN_ATTACK, BODY_SLAM
+ db WRAP, THRASH, TAIL_WHIP, LEER, BITE, GROWL, ROAR, SING, PECK, COUNTER
+ db STRENGTH, ABSORB, STRING_SHOT, EARTHQUAKE, FISSURE, DIG, TOXIC, SCREECH, HARDEN
+ db MINIMIZE, WITHDRAW, DEFENSE_CURL, METRONOME, LICK, CLAMP, CONSTRICT, POISON_GAS
+ db LEECH_LIFE, BUBBLE, FLASH, SPLASH, ACID_ARMOR, FURY_SWIPES, REST, SHARPEN, SLASH, SUBSTITUTE
+ db $00
+ db $FF ; terminator
diff --git a/data/move_sfx.asm b/data/move_sfx.asm
new file mode 100644
index 00000000..28ad0b63
--- /dev/null
+++ b/data/move_sfx.asm
@@ -0,0 +1,168 @@
+MoveSoundTable:
+ ; ID, pitch mod, tempo mod
+ db SFX_POUND, $00,$80 ; POUND
+ db SFX_BATTLE_0C, $10,$80 ; KARATE_CHOP
+ db SFX_DOUBLESLAP, $00,$80 ; DOUBLESLAP
+ db SFX_BATTLE_0B, $01,$80 ; COMET_PUNCH
+ db SFX_BATTLE_0D, $00,$40 ; MEGA_PUNCH
+ db SFX_SILPH_SCOPE, $00,$ff ; PAY_DAY
+ db SFX_BATTLE_0D, $10,$60 ; FIRE_PUNCH
+ db SFX_BATTLE_0D, $20,$80 ; ICE_PUNCH
+ db SFX_BATTLE_0D, $00,$a0 ; THUNDERPUNCH
+ db SFX_DAMAGE, $00,$80 ; SCRATCH
+ db SFX_BATTLE_0F, $20,$40 ; VICEGRIP
+ db SFX_BATTLE_0F, $00,$80 ; GUILLOTINE
+ db SFX_BATTLE_0E, $00,$a0 ; RAZOR_WIND
+ db SFX_NOT_VERY_EFFECTIVE,$10,$c0 ; SWORDS_DANCE
+ db SFX_NOT_VERY_EFFECTIVE,$00,$a0 ; CUT
+ db SFX_BATTLE_12, $00,$c0 ; GUST
+ db SFX_BATTLE_12, $10,$a0 ; WING_ATTACK
+ db SFX_BATTLE_13, $00,$e0 ; WHIRLWIND
+ db SFX_NOT_VERY_EFFECTIVE,$20,$c0 ; FLY
+ db SFX_BATTLE_14, $00,$80 ; BIND
+ db SFX_BATTLE_22, $00,$80 ; SLAM
+ db SFX_VINE_WHIP, $01,$80 ; VINE_WHIP
+ db SFX_BATTLE_20, $00,$80 ; STOMP
+ db SFX_BATTLE_17, $f0,$40 ; DOUBLE_KICK
+ db SFX_SUPER_EFFECTIVE, $00,$80 ; MEGA_KICK
+ db SFX_BATTLE_17, $00,$80 ; JUMP_KICK
+ db SFX_BATTLE_21, $10,$80 ; ROLLING_KICK
+ db SFX_BATTLE_1B, $01,$a0 ; SAND_ATTACK
+ db SFX_BATTLE_18, $00,$80 ; HEADBUTT
+ db SFX_BATTLE_1E, $00,$60 ; HORN_ATTACK
+ db SFX_BATTLE_1E, $01,$40 ; FURY_ATTACK
+ db SFX_HORN_DRILL, $00,$a0 ; HORN_DRILL
+ db SFX_SUPER_EFFECTIVE, $10,$a0 ; TACKLE
+ db SFX_BATTLE_20, $00,$c0 ; BODY_SLAM
+ db SFX_BATTLE_14, $10,$60 ; WRAP
+ db SFX_SUPER_EFFECTIVE, $00,$a0 ; TAKE_DOWN
+ db SFX_BATTLE_22, $11,$c0 ; THRASH
+ db SFX_SUPER_EFFECTIVE, $20,$c0 ; DOUBLE_EDGE
+ db SFX_BATTLE_21, $00,$80 ; TAIL_WHIP
+ db SFX_BATTLE_1B, $00,$80 ; POISON_STING
+ db SFX_BATTLE_1B, $20,$c0 ; TWINEEDLE
+ db SFX_BATTLE_19, $00,$80 ; PIN_MISSILE
+ db SFX_BATTLE_31, $ff,$40 ; LEER
+ db SFX_BATTLE_1E, $00,$80 ; BITE
+ db SFX_BATTLE_0B, $00,$c0 ; GROWL
+ db SFX_BATTLE_0B, $00,$40 ; ROAR
+ db SFX_BATTLE_35, $00,$80 ; SING
+ db SFX_BATTLE_27, $40,$60 ; SUPERSONIC
+ db SFX_BATTLE_27, $00,$80 ; SONICBOOM
+ db SFX_BATTLE_27, $ff,$40 ; DISABLE
+ db SFX_BATTLE_2A, $80,$c0 ; ACID
+ db SFX_BATTLE_19, $10,$a0 ; EMBER
+ db SFX_BATTLE_19, $21,$e0 ; FLAMETHROWER
+ db SFX_BATTLE_29, $00,$80 ; MIST
+ db SFX_BATTLE_24, $20,$60 ; WATER_GUN
+ db SFX_BATTLE_2A, $00,$80 ; HYDRO_PUMP
+ db SFX_BATTLE_2C, $00,$80 ; SURF
+ db SFX_BATTLE_28, $40,$80 ; ICE_BEAM
+ db SFX_BATTLE_29, $f0,$e0 ; BLIZZARD
+ db SFX_PSYBEAM, $00,$80 ; PSYBEAM
+ db SFX_BATTLE_2A, $f0,$60 ; BUBBLEBEAM
+ db SFX_BATTLE_28, $00,$80 ; AURORA_BEAM
+ db SFX_BATTLE_36, $00,$80 ; HYPER_BEAM
+ db SFX_PECK, $01,$a0 ; PECK
+ db SFX_BATTLE_13, $f0,$20 ; DRILL_PECK
+ db SFX_BATTLE_23, $01,$c0 ; SUBMISSION
+ db SFX_BATTLE_23, $00,$80 ; LOW_KICK
+ db SFX_SUPER_EFFECTIVE, $00,$e0 ; COUNTER
+ db SFX_BATTLE_26, $01,$60 ; SEISMIC_TOSS
+ db SFX_BATTLE_26, $20,$40 ; STRENGTH
+ db SFX_BATTLE_24, $00,$80 ; ABSORB
+ db SFX_BATTLE_24, $40,$c0 ; MEGA_DRAIN
+ db SFX_BATTLE_1B, $03,$60 ; LEECH_SEED
+ db SFX_BATTLE_25, $11,$e0 ; GROWTH
+ db SFX_BATTLE_12, $20,$e0 ; RAZOR_LEAF
+ db SFX_BATTLE_2E, $00,$80 ; SOLARBEAM
+ db SFX_BATTLE_1C, $00,$80 ; POISONPOWDER
+ db SFX_BATTLE_1C, $11,$a0 ; STUN_SPORE
+ db SFX_BATTLE_1C, $01,$c0 ; SLEEP_POWDER
+ db SFX_BATTLE_13, $14,$c0 ; PETAL_DANCE
+ db SFX_BATTLE_1B, $02,$a0 ; STRING_SHOT
+ db SFX_BATTLE_29, $f0,$80 ; DRAGON_RAGE
+ db SFX_BATTLE_29, $20,$c0 ; FIRE_SPIN
+ db SFX_BATTLE_2F, $00,$20 ; THUNDERSHOCK
+ db SFX_BATTLE_2F, $20,$80 ; THUNDERBOLT
+ db SFX_BATTLE_2E, $12,$60 ; THUNDER_WAVE
+ db SFX_BATTLE_26, $00,$80 ; THUNDER
+ db SFX_BATTLE_14, $01,$e0 ; ROCK_THROW
+ db SFX_BATTLE_29, $0f,$e0 ; EARTHQUAKE
+ db SFX_BATTLE_29, $11,$20 ; FISSURE
+ db SFX_DAMAGE, $10,$40 ; DIG
+ db SFX_BATTLE_0F, $10,$c0 ; TOXIC
+ db SFX_BATTLE_14, $00,$20 ; CONFUSION
+ db SFX_PSYCHIC_M, $00,$80 ; PSYCHIC_M
+ db SFX_BATTLE_35, $11,$18 ; HYPNOSIS
+ db SFX_BATTLE_09, $20,$c0 ; MEDITATE
+ db SFX_FAINT_FALL, $20,$c0 ; AGILITY
+ db SFX_BATTLE_25, $00,$10 ; QUICK_ATTACK
+ db SFX_BATTLE_26, $f0,$20 ; RAGE
+ db SFX_BATTLE_33, $f0,$c0 ; TELEPORT
+ db SFX_NOT_VERY_EFFECTIVE,$f0,$e0 ; NIGHT_SHADE
+ db SFX_BATTLE_09, $f0,$40 ; MIMIC
+ db SFX_BATTLE_31, $00,$80 ; SCREECH
+ db SFX_BATTLE_33, $80,$40 ; DOUBLE_TEAM
+ db SFX_BATTLE_33, $00,$80 ; RECOVER
+ db SFX_BATTLE_14, $11,$20 ; HARDEN
+ db SFX_BATTLE_14, $22,$10 ; MINIMIZE
+ db SFX_BATTLE_1B, $f1,$ff ; SMOKESCREEN
+ db SFX_BATTLE_13, $f1,$ff ; CONFUSE_RAY
+ db SFX_BATTLE_14, $33,$30 ; WITHDRAW
+ db SFX_BATTLE_32, $40,$c0 ; DEFENSE_CURL
+ db SFX_BATTLE_0E, $20,$20 ; BARRIER
+ db SFX_BATTLE_0E, $f0,$10 ; LIGHT_SCREEN
+ db SFX_BATTLE_0F, $f8,$10 ; HAZE
+ db SFX_NOT_VERY_EFFECTIVE,$f0,$10 ; REFLECT
+ db SFX_BATTLE_25, $00,$80 ; FOCUS_ENERGY
+ db SFX_BATTLE_18, $00,$c0 ; BIDE
+ db SFX_BATTLE_32, $c0,$ff ; METRONOME
+ db SFX_BATTLE_09, $f2,$20 ; MIRROR_MOVE
+ db SFX_BATTLE_34, $00,$80 ; SELFDESTRUCT
+ db SFX_BATTLE_34, $00,$40 ; EGG_BOMB
+ db SFX_BATTLE_09, $00,$40 ; LICK
+ db SFX_NOT_VERY_EFFECTIVE,$10,$ff ; SMOG
+ db SFX_BATTLE_2A, $20,$20 ; SLUDGE
+ db SFX_BATTLE_32, $00,$80 ; BONE_CLUB
+ db SFX_BATTLE_29, $1f,$20 ; FIRE_BLAST
+ db SFX_BATTLE_25, $2f,$80 ; WATERFALL
+ db SFX_BATTLE_0F, $1f,$ff ; CLAMP
+ db SFX_BATTLE_2B, $1f,$60 ; SWIFT
+ db SFX_BATTLE_26, $1e,$20 ; SKULL_BASH
+ db SFX_BATTLE_26, $1f,$18 ; SPIKE_CANNON
+ db SFX_BATTLE_14, $0f,$80 ; CONSTRICT
+ db SFX_BATTLE_09, $f8,$10 ; AMNESIA
+ db SFX_FAINT_FALL, $18,$20 ; KINESIS
+ db SFX_BATTLE_32, $08,$40 ; SOFTBOILED
+ db SFX_BATTLE_17, $01,$e0 ; HI_JUMP_KICK
+ db SFX_NOT_VERY_EFFECTIVE,$09,$ff ; GLARE
+ db SFX_BATTLE_35, $42,$01 ; DREAM_EATER
+ db SFX_BATTLE_1C, $00,$ff ; POISON_GAS
+ db SFX_BATTLE_32, $08,$e0 ; BARRAGE
+ db SFX_BATTLE_24, $00,$80 ; LEECH_LIFE
+ db SFX_BATTLE_09, $88,$10 ; LOVELY_KISS
+ db SFX_BATTLE_25, $48,$ff ; SKY_ATTACK
+ db SFX_FAINT_FALL, $ff,$ff ; TRANSFORM
+ db SFX_BATTLE_24, $ff,$10 ; BUBBLE
+ db SFX_FAINT_FALL, $ff,$04 ; DIZZY_PUNCH
+ db SFX_BATTLE_1C, $01,$ff ; SPORE
+ db SFX_BATTLE_13, $f8,$ff ; FLASH
+ db SFX_BATTLE_0C, $f0,$f0 ; PSYWAVE
+ db SFX_BATTLE_0F, $08,$10 ; SPLASH
+ db SFX_BATTLE_0D, $f0,$ff ; ACID_ARMOR
+ db SFX_SUPER_EFFECTIVE, $f0,$ff ; CRABHAMMER
+ db SFX_BATTLE_34, $10,$ff ; EXPLOSION
+ db SFX_BATTLE_0E, $f0,$20 ; FURY_SWIPES
+ db SFX_BATTLE_2B, $f0,$60 ; BONEMERANG
+ db SFX_BATTLE_21, $12,$10 ; REST
+ db SFX_BATTLE_36, $f0,$20 ; ROCK_SLIDE
+ db SFX_BATTLE_1E, $12,$ff ; HYPER_FANG
+ db SFX_BATTLE_31, $80,$04 ; SHARPEN
+ db SFX_BATTLE_33, $f0,$10 ; CONVERSION
+ db SFX_BATTLE_29, $f8,$ff ; TRI_ATTACK
+ db SFX_BATTLE_26, $f0,$ff ; SUPER_FANG
+ db SFX_NOT_VERY_EFFECTIVE,$01,$ff ; SLASH
+ db SFX_BATTLE_2C, $d8,$04 ; SUBSTITUTE
+ db SFX_BATTLE_0B, $00,$80 ; STRUGGLE
+ db SFX_BATTLE_0B, $00,$80
diff --git a/data/overworld_items.asm b/data/overworld_items.asm
new file mode 100644
index 00000000..c2c244fe
--- /dev/null
+++ b/data/overworld_items.asm
@@ -0,0 +1,9 @@
+; items which close the item menu when used
+UsableItems_CloseMenu:
+ db ESCAPE_ROPE
+ db ITEMFINDER
+ db POKE_FLUTE
+ db OLD_ROD
+ db GOOD_ROD
+ db SUPER_ROD
+ db $ff
diff --git a/data/party_items.asm b/data/party_items.asm
new file mode 100644
index 00000000..0126ed5e
--- /dev/null
+++ b/data/party_items.asm
@@ -0,0 +1,39 @@
+; items which bring up the party menu when used
+UsableItems_PartyMenu:
+ 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 FIRE_STONE
+ db THUNDER_STONE
+ db WATER_STONE
+ db HP_UP
+ db PROTEIN
+ db IRON
+ db CARBOS
+ db CALCIUM
+ db RARE_CANDY
+ db LEAF_STONE
+ db FULL_HEAL
+ db REVIVE
+ db MAX_REVIVE
+ db FRESH_WATER
+ db SODA_POP
+ db LEMONADE
+ db X_ATTACK
+ db X_DEFEND
+ db X_SPEED
+ db X_SPECIAL
+ db PP_UP
+ db ETHER
+ db MAX_ETHER
+ db ELIXER
+ db MAX_ELIXER
+ db $ff
diff --git a/data/predef_pointers.asm b/data/predef_pointers.asm
new file mode 100644
index 00000000..5ce797e0
--- /dev/null
+++ b/data/predef_pointers.asm
@@ -0,0 +1,102 @@
+PredefPointers::
+; these are pointers to ASM routines.
+; they appear to be used in overworld map scripts.
+ add_predef DrawPlayerHUDAndHPBar
+ add_predef CopyUncompressedPicToTilemap
+ add_predef AnimateSendingOutMon
+ add_predef ScaleSpriteByTwo
+ add_predef LoadMonBackPic
+ add_predef CopyDownscaledMonTiles
+ dbw $03,JumpMoveEffect ; wrong bank
+ add_predef HealParty
+ add_predef MoveAnimation
+ add_predef DivideBCDPredef
+ add_predef DivideBCDPredef2
+ add_predef AddBCDPredef
+ add_predef SubBCDPredef
+ add_predef DivideBCDPredef3
+ add_predef DivideBCDPredef4
+ add_predef InitPlayerData
+ add_predef FlagActionPredef
+ add_predef HideObject
+ add_predef IsObjectHidden
+ add_predef ApplyOutOfBattlePoisonDamage
+ add_predef AnyPartyAlive
+ add_predef ShowObject
+ add_predef ShowObject2
+ add_predef ReplaceTileBlock
+ add_predef InitPlayerData2
+ add_predef LoadTilesetHeader
+ add_predef LearnMoveFromLevelUp
+ add_predef LearnMove
+ add_predef GetQuantityOfItemInBag
+ dbw $03,CheckForHiddenObjectOrBookshelfOrCardKeyDoor ; home bank
+ dbw $03,GiveItem ; home bank
+ add_predef ChangeBGPalColor0_4Frames
+ add_predef FindPathToPlayer
+ add_predef PredefShakeScreenVertically
+ add_predef CalcPositionOfPlayerRelativeToNPC
+ add_predef ConvertNPCMovementDirectionsToJoypadMasks
+ add_predef PredefShakeScreenHorizontally
+ add_predef UpdateHPBar
+ add_predef HPBarLength
+ add_predef Diploma_TextBoxBorder
+ add_predef DoubleOrHalveSelectedStats
+ add_predef ShowPokedexMenu
+ add_predef EvolutionAfterBattle
+ add_predef SaveSAVtoSRAM0
+ add_predef InitOpponent
+ add_predef CableClub_Run
+ add_predef DrawBadges
+ add_predef ExternalClockTradeAnim
+ add_predef BattleTransition
+ add_predef CopyTileIDsFromList
+ add_predef PlayIntro
+ add_predef GetMoveSoundB
+ add_predef FlashScreen
+ add_predef GetTileAndCoordsInFrontOfPlayer
+ add_predef StatusScreen
+ add_predef StatusScreen2
+ add_predef InternalClockTradeAnim
+ add_predef TrainerEngage
+ add_predef IndexToPokedex
+ add_predef DisplayPicCenteredOrUpperRight
+ add_predef UsedCut
+ add_predef ShowPokedexData
+ add_predef WriteMonMoves
+ add_predef SaveSAV
+ add_predef LoadSGB
+ add_predef MarkTownVisitedAndLoadMissableObjects
+ add_predef SetPartyMonTypes
+ add_predef CanLearnTM
+ add_predef TMToMove
+ add_predef _RunPaletteCommand
+ add_predef StarterDex
+ add_predef _AddPartyMon
+ add_predef UpdateHPBar2
+ add_predef DrawEnemyHUDAndHPBar
+ add_predef LoadTownMap_Nest
+ add_predef PrintMonType
+ add_predef EmotionBubble
+ add_predef EmptyFunc3; return immediately
+ add_predef AskName
+ add_predef PewterGuys
+ add_predef SaveSAVtoSRAM2
+ add_predef LoadSAV2
+ add_predef LoadSAV
+ add_predef SaveSAVtoSRAM1
+ add_predef DoInGameTradeDialogue
+ add_predef HallOfFamePC
+ add_predef DisplayDexRating
+ dbw $1E, _LeaveMapAnim ; wrong bank
+ dbw $1E, EnterMapAnim ; wrong bank
+ add_predef GetTileTwoStepsInFrontOfPlayer
+ add_predef CheckForCollisionWhenPushingBoulder
+ add_predef PrintStrengthTxt
+ add_predef PickUpItem
+ add_predef PrintMoveType
+ add_predef LoadMovePPs
+ add_predef DrawHP
+ add_predef DrawHP2
+ add_predef DisplayElevatorFloorMenu
+ add_predef OaksAideScript
diff --git a/data/rest_house_maps.asm b/data/rest_house_maps.asm
new file mode 100644
index 00000000..2feb89d3
--- /dev/null
+++ b/data/rest_house_maps.asm
@@ -0,0 +1,5 @@
+SafariZoneRestHouses:
+ db SAFARI_ZONE_WEST_REST_HOUSE
+ db SAFARI_ZONE_EAST_REST_HOUSE
+ db SAFARI_ZONE_NORTH_REST_HOUSE
+ db -1
diff --git a/data/trainer_ai_pointers.asm b/data/trainer_ai_pointers.asm
new file mode 100644
index 00000000..d7cb5f19
--- /dev/null
+++ b/data/trainer_ai_pointers.asm
@@ -0,0 +1,51 @@
+TrainerAIPointers:
+; one entry per trainer class
+; first byte, number of times (per Pokémon) it can occur
+; next two bytes, pointer to AI subroutine for trainer class
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,JugglerAI ; juggler_x
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 3,JugglerAI ; juggler
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 2,BlackbeltAI ; blackbelt
+ dbw 3,GenericAI
+ dbw 3,GenericAI
+ dbw 1,GenericAI ; chief
+ dbw 3,GenericAI
+ dbw 1,GiovanniAI ; giovanni
+ dbw 3,GenericAI
+ dbw 2,CooltrainerMAI ; cooltrainerm
+ dbw 1,CooltrainerFAI ; cooltrainerf
+ dbw 2,BrunoAI ; bruno
+ dbw 5,BrockAI ; brock
+ dbw 1,MistyAI ; misty
+ dbw 1,LtSurgeAI ; surge
+ dbw 1,ErikaAI ; erika
+ dbw 2,KogaAI ; koga
+ dbw 2,BlaineAI ; blaine
+ dbw 1,SabrinaAI ; sabrina
+ dbw 3,GenericAI
+ dbw 1,Sony2AI ; sony2
+ dbw 1,Sony3AI ; sony3
+ dbw 2,LoreleiAI ; lorelei
+ dbw 3,GenericAI
+ dbw 2,AgathaAI ; agatha
+ dbw 1,LanceAI ; lance
diff --git a/data/trainer_move_choices.asm b/data/trainer_move_choices.asm
new file mode 100644
index 00000000..ccbae448
--- /dev/null
+++ b/data/trainer_move_choices.asm
@@ -0,0 +1,50 @@
+; move choice modification methods that are applied for each trainer class
+; 0 is sentinel value
+TrainerClassMoveChoiceModifications:
+ db 0 ; YOUNGSTER
+ db 1,0 ; BUG CATCHER
+ db 1,0 ; LASS
+ db 1,3,0 ; SAILOR
+ db 1,0 ; JR_TRAINER_M
+ db 1,0 ; JR_TRAINER_F
+ db 1,2,3,0; POKEMANIAC
+ db 1,2,0 ; SUPER_NERD
+ db 1,0 ; HIKER
+ db 1,0 ; BIKER
+ db 1,3,0 ; BURGLAR
+ db 1,0 ; ENGINEER
+ db 1,2,0 ; JUGGLER_X
+ db 1,3,0 ; FISHER
+ db 1,3,0 ; SWIMMER
+ db 0 ; CUE_BALL
+ db 1,0 ; GAMBLER
+ db 1,3,0 ; BEAUTY
+ db 1,2,0 ; PSYCHIC_TR
+ db 1,3,0 ; ROCKER
+ db 1,0 ; JUGGLER
+ db 1,0 ; TAMER
+ db 1,0 ; BIRD_KEEPER
+ db 1,0 ; BLACKBELT
+ db 1,0 ; SONY1
+ db 1,3,0 ; PROF_OAK
+ db 1,2,0 ; CHIEF
+ db 1,2,0 ; SCIENTIST
+ db 1,3,0 ; GIOVANNI
+ db 1,0 ; ROCKET
+ db 1,3,0 ; COOLTRAINER_M
+ db 1,3,0 ; COOLTRAINER_F
+ db 1,0 ; BRUNO
+ db 1,0 ; BROCK
+ db 1,3,0 ; MISTY
+ db 1,3,0 ; LT_SURGE
+ db 1,3,0 ; ERIKA
+ db 1,3,0 ; KOGA
+ db 1,3,0 ; BLAINE
+ db 1,3,0 ; SABRINA
+ db 1,2,0 ; GENTLEMAN
+ db 1,3,0 ; SONY2
+ db 1,3,0 ; SONY3
+ db 1,2,3,0; LORELEI
+ db 1,0 ; CHANNELER
+ db 1,0 ; AGATHA
+ db 1,3,0 ; LANCE
diff --git a/data/trainer_pic_money_pointers.asm b/data/trainer_pic_money_pointers.asm
new file mode 100755
index 00000000..37678e74
--- /dev/null
+++ b/data/trainer_pic_money_pointers.asm
@@ -0,0 +1,143 @@
+TrainerPicAndMoneyPointers:
+; trainer pic pointers and base money.
+; money received after battle = base money × level of highest-level enemy mon
+ dw YoungsterPic
+ money 1500
+
+ dw BugCatcherPic
+ money 1000
+
+ dw LassPic
+ money 1500
+
+ dw SailorPic
+ money 3000
+
+ dw JrTrainerMPic
+ money 2000
+
+ dw JrTrainerFPic
+ money 2000
+
+ dw PokemaniacPic
+ money 5000
+
+ dw SuperNerdPic
+ money 2500
+
+ dw HikerPic
+ money 3500
+
+ dw BikerPic
+ money 2000
+
+ dw BurglarPic
+ money 9000
+
+ dw EngineerPic
+ money 5000
+
+ dw JugglerPic
+ money 3500
+
+ dw FisherPic
+ money 3500
+
+ dw SwimmerPic
+ money 500
+
+ dw CueBallPic
+ money 2500
+
+ dw GamblerPic
+ money 7000
+
+ dw BeautyPic
+ money 7000
+
+ dw PsychicPic
+ money 1000
+
+ dw RockerPic
+ money 2500
+
+ dw JugglerPic
+ money 3500
+
+ dw TamerPic
+ money 4000
+
+ dw BirdKeeperPic
+ money 2500
+
+ dw BlackbeltPic
+ money 2500
+
+ dw Rival1Pic
+ money 3500
+
+ dw ProfOakPic
+ money 9900
+
+ dw ChiefPic
+ money 3000
+
+ dw ScientistPic
+ money 5000
+
+ dw GiovanniPic
+ money 9900
+
+ dw RocketPic
+ money 3000
+
+ dw CooltrainerMPic
+ money 3500
+
+ dw CooltrainerFPic
+ money 3500
+
+ dw BrunoPic
+ money 9900
+
+ dw BrockPic
+ money 9900
+
+ dw MistyPic
+ money 9900
+
+ dw LtSurgePic
+ money 9900
+
+ dw ErikaPic
+ money 9900
+
+ dw KogaPic
+ money 9900
+
+ dw BlainePic
+ money 9900
+
+ dw SabrinaPic
+ money 9900
+
+ dw GentlemanPic
+ money 7000
+
+ dw Rival2Pic
+ money 6500
+
+ dw Rival3Pic
+ money 9900
+
+ dw LoreleiPic
+ money 9900
+
+ dw ChannelerPic
+ money 3000
+
+ dw AgathaPic
+ money 9900
+
+ dw LancePic
+ money 9900
diff --git a/data/vending_prices.asm b/data/vending_prices.asm
new file mode 100644
index 00000000..9a473cc9
--- /dev/null
+++ b/data/vending_prices.asm
@@ -0,0 +1,7 @@
+VendingPrices:
+ db FRESH_WATER
+ money 200
+ db SODA_POP
+ money 300
+ db LEMONADE
+ money 350
diff --git a/data/warp_carpet_tile_ids.asm b/data/warp_carpet_tile_ids.asm
new file mode 100644
index 00000000..6f312bc7
--- /dev/null
+++ b/data/warp_carpet_tile_ids.asm
@@ -0,0 +1,17 @@
+WarpTileListPointers:
+ dw .facingDownWarpTiles
+ dw .facingUpWarpTiles
+ dw .facingLeftWarpTiles
+ dw .facingRightWarpTiles
+
+.facingDownWarpTiles
+ db $01,$12,$17,$3D,$04,$18,$33,$FF
+
+.facingUpWarpTiles
+ db $01,$5C,$FF
+
+.facingLeftWarpTiles
+ db $1A,$4B,$FF
+
+.facingRightWarpTiles
+ db $0F,$4E,$FF
diff --git a/data/warp_pad_hole_tile_ids.asm b/data/warp_pad_hole_tile_ids.asm
new file mode 100644
index 00000000..3e2c1890
--- /dev/null
+++ b/data/warp_pad_hole_tile_ids.asm
@@ -0,0 +1,7 @@
+; format: db tileset id, tile id, value to be put in [wStandingOnWarpPadOrHole]
+WarpPadAndHoleData:
+ db FACILITY, $20, 1 ; warp pad
+ db FACILITY, $11, 2 ; hole
+ db CAVERN, $22, 2 ; hole
+ db INTERIOR, $55, 1 ; warp pad
+ db $FF
diff --git a/data/water_tilesets.asm b/data/water_tilesets.asm
new file mode 100644
index 00000000..00f0ab1f
--- /dev/null
+++ b/data/water_tilesets.asm
@@ -0,0 +1,4 @@
+; tilesets with water
+WaterTilesets:
+ db OVERWORLD, FOREST, DOJO, GYM, SHIP, SHIP_PORT, CAVERN, FACILITY, PLATEAU
+ db $ff ; terminator
diff --git a/data/wild_probabilities.asm b/data/wild_probabilities.asm
new file mode 100644
index 00000000..9d4704c6
--- /dev/null
+++ b/data/wild_probabilities.asm
@@ -0,0 +1,15 @@
+WildMonEncounterSlotChances:
+; There are 10 slots for wild pokemon, and this is the table that defines how common each of
+; those 10 slots is. A random number is generated and then the first byte of each pair in this
+; table is compared against that random number. If the random number is less than or equal
+; to the first byte, then that slot is chosen. The second byte is double the slot number.
+ db $32, $00 ; 51/256 = 19.9% chance of slot 0
+ db $65, $02 ; 51/256 = 19.9% chance of slot 1
+ db $8C, $04 ; 39/256 = 15.2% chance of slot 2
+ db $A5, $06 ; 25/256 = 9.8% chance of slot 3
+ db $BE, $08 ; 25/256 = 9.8% chance of slot 4
+ db $D7, $0A ; 25/256 = 9.8% chance of slot 5
+ db $E4, $0C ; 13/256 = 5.1% chance of slot 6
+ db $F1, $0E ; 13/256 = 5.1% chance of slot 7
+ db $FC, $10 ; 11/256 = 4.3% chance of slot 8
+ db $FF, $12 ; 3/256 = 1.2% chance of slot 9