Verify data table and name list sizes with assertion macros

Fixes #312
This commit is contained in:
Rangi 2021-03-25 16:33:05 -04:00
parent e1f6bb5393
commit 95ec2cf039
139 changed files with 863 additions and 437 deletions

View file

@ -1,5 +1,6 @@
; This file is INCLUDEd three times, once in each audio engine. ; This file is INCLUDEd three times, once in each audio engine.
table_width 2
dw $F82C ; C_ dw $F82C ; C_
dw $F89D ; C# dw $F89D ; C#
dw $F907 ; D_ dw $F907 ; D_
@ -12,3 +13,4 @@
dw $FB58 ; A_ dw $FB58 ; A_
dw $FB9B ; A# dw $FB9B ; A#
dw $FBDA ; B_ dw $FBDA ; B_
assert_table_length NUM_NOTES

View file

@ -9,16 +9,16 @@ INCLUDE "constants/gfx_constants.asm"
INCLUDE "constants/input_constants.asm" INCLUDE "constants/input_constants.asm"
INCLUDE "constants/serial_constants.asm" INCLUDE "constants/serial_constants.asm"
INCLUDE "constants/script_constants.asm" INCLUDE "constants/script_constants.asm"
INCLUDE "constants/type_constants.asm"
INCLUDE "constants/battle_constants.asm"
INCLUDE "constants/move_constants.asm"
INCLUDE "constants/move_animation_constants.asm"
INCLUDE "constants/move_effect_constants.asm"
INCLUDE "constants/item_constants.asm"
INCLUDE "constants/pokemon_constants.asm" INCLUDE "constants/pokemon_constants.asm"
INCLUDE "constants/pokedex_constants.asm" INCLUDE "constants/pokedex_constants.asm"
INCLUDE "constants/pokemon_data_constants.asm" INCLUDE "constants/pokemon_data_constants.asm"
INCLUDE "constants/trainer_constants.asm" INCLUDE "constants/trainer_constants.asm"
INCLUDE "constants/type_constants.asm"
INCLUDE "constants/move_constants.asm"
INCLUDE "constants/move_animation_constants.asm"
INCLUDE "constants/move_effect_constants.asm"
INCLUDE "constants/battle_constants.asm"
INCLUDE "constants/item_constants.asm"
INCLUDE "constants/icon_constants.asm" INCLUDE "constants/icon_constants.asm"
INCLUDE "constants/sprite_constants.asm" INCLUDE "constants/sprite_constants.asm"
INCLUDE "constants/sprite_data_constants.asm" INCLUDE "constants/sprite_data_constants.asm"

View file

@ -13,6 +13,7 @@
const A_ ; 9 const A_ ; 9
const A# ; A const A# ; A
const B_ ; B const B_ ; B
NUM_NOTES EQU const_value
; channel ; channel
; Audio[1|2|3]_HWChannelBaseAddresses, Audio[1|2|3]_HWChannelDisableMasks, ; Audio[1|2|3]_HWChannelBaseAddresses, Audio[1|2|3]_HWChannelDisableMasks,

View file

@ -1,9 +1,36 @@
MAX_LEVEL EQU 100 MAX_LEVEL EQU 100
NUM_MOVES EQU 4 NUM_MOVES EQU 4
NUM_STATS EQU 5
NUM_STAT_MODS EQU 8 ; VitaminStats indexes (see data/battle/stat_names.asm)
NUM_DVS EQU 2 const_def
const STAT_HEALTH
const STAT_ATTACK
const STAT_DEFENSE
const STAT_SPEED
const STAT_SPECIAL
NUM_STATS EQU const_value
; StatModTextStrings indexes (see data/battle/stat_mod_names.asm)
const_def
const MOD_ATTACK
const MOD_DEFENSE
const MOD_SPEED
const MOD_SPECIAL
const MOD_ACCURACY
const MOD_EVASION
const_skip 2
NUM_STAT_MODS EQU const_value
; Moves struct fields (see data/moves/moves.asm)
rsreset
MOVE_ANIM rb
MOVE_EFFECT rb
MOVE_POWER rb
MOVE_TYPE rb
MOVE_ACC rb
MOVE_PP rb
MOVE_LENGTH EQU _RS
; D733 flags ; D733 flags
BIT_TEST_BATTLE EQU 0 BIT_TEST_BATTLE EQU 0

View file

@ -64,6 +64,7 @@
const CRED_FUKUI ; $3D const CRED_FUKUI ; $3D
const CRED_CLUB ; $3E const CRED_CLUB ; $3E
const CRED_PAAD ; $3F const CRED_PAAD ; $3F
NUM_CRED_STRINGS EQU const_value
const_def -1, -1 const_def -1, -1
const CRED_TEXT_FADE_MON ; $FF const CRED_TEXT_FADE_MON ; $FF

View file

@ -37,3 +37,4 @@ REDRAW_ROW EQU 2
const TILEMAP_GENGAR_INTRO_3 const TILEMAP_GENGAR_INTRO_3
const TILEMAP_GAME_BOY const TILEMAP_GAME_BOY
const TILEMAP_LINK_CABLE const TILEMAP_LINK_CABLE
NUM_TILEMAPS EQU const_value

View file

@ -237,3 +237,4 @@ SHOW EQU $15
const HS_SEAFOAM_ISLANDS_B4F_BOULDER_1 ; E1 const HS_SEAFOAM_ISLANDS_B4F_BOULDER_1 ; E1
const HS_SEAFOAM_ISLANDS_B4F_BOULDER_2 ; E2 const HS_SEAFOAM_ISLANDS_B4F_BOULDER_2 ; E2
const HS_ARTICUNO ; E3 X const HS_ARTICUNO ; E3 X
NUM_HS_OBJECTS EQU const_value

View file

@ -92,6 +92,9 @@ SAFARI_ROCK EQU $16 ; overload
const MAX_ETHER ; $51 const MAX_ETHER ; $51
const ELIXER ; $52 const ELIXER ; $52
const MAX_ELIXER ; $53 const MAX_ELIXER ; $53
NUM_ITEMS EQU const_value - 1
; elevator floors use item IDs
const FLOOR_B2F ; $54 const FLOOR_B2F ; $54
const FLOOR_B1F ; $55 const FLOOR_B1F ; $55
const FLOOR_1F ; $56 const FLOOR_1F ; $56
@ -106,6 +109,7 @@ SAFARI_ROCK EQU $16 ; overload
const FLOOR_10F ; $5F const FLOOR_10F ; $5F
const FLOOR_11F ; $60 const FLOOR_11F ; $60
const FLOOR_B4F ; $61 const FLOOR_B4F ; $61
NUM_FLOORS EQU const_value - 1 - NUM_ITEMS
const_next $C4 const_next $C4

View file

@ -266,6 +266,7 @@ FIRST_INDOOR_MAP EQU const_value
mapconst LORELEIS_ROOM, 6, 5 ; $F5 mapconst LORELEIS_ROOM, 6, 5 ; $F5
mapconst BRUNOS_ROOM, 6, 5 ; $F6 mapconst BRUNOS_ROOM, 6, 5 ; $F6
mapconst AGATHAS_ROOM, 6, 5 ; $F7 mapconst AGATHAS_ROOM, 6, 5 ; $F7
NUM_MAPS EQU const_value
; Indoor maps, such as houses, use this as the Map ID in their exit warps ; Indoor maps, such as houses, use this as the Map ID in their exit warps
; This map ID takes the player back to the last outdoor map they were on, stored in wLastMap ; This map ID takes the player back to the last outdoor map they were on, stored in wLastMap

View file

@ -42,6 +42,7 @@ PC_ITEM_CAPACITY EQU 50
const TRADE_CANCEL_MENU ; 5 const TRADE_CANCEL_MENU ; 5
const HEAL_CANCEL_MENU ; 6 const HEAL_CANCEL_MENU ; 6
const NO_YES_MENU ; 7 const NO_YES_MENU ; 7
NUM_TWO_OPTION_MENUS EQU const_value
; menu exit method constants for list menus and the buy/sell/quit menu ; menu exit method constants for list menus and the buy/sell/quit menu
CHOSE_MENU_ITEM EQU 1 ; pressed A CHOSE_MENU_ITEM EQU 1 ; pressed A

View file

@ -132,6 +132,7 @@ FIRST_SE_ID EQU const_value
const SUBANIM_53 const SUBANIM_53
const SUBANIM_54 const SUBANIM_54
const SUBANIM_55 const SUBANIM_55
NUM_SUBANIMS EQU const_value
; types of subanimations ; types of subanimations
const_def const_def
@ -267,6 +268,7 @@ FIRST_SE_ID EQU const_value
const FRAMEBLOCK_77 const FRAMEBLOCK_77
const FRAMEBLOCK_78 const FRAMEBLOCK_78
const FRAMEBLOCK_79 const FRAMEBLOCK_79
NUM_FRAMEBLOCKS EQU const_value
; base coordinates that are part of subanimations ; base coordinates that are part of subanimations
; FrameBlockBaseCoords indexes (see data/battle_anims/base_coords.asm) ; FrameBlockBaseCoords indexes (see data/battle_anims/base_coords.asm)
@ -448,6 +450,7 @@ FIRST_SE_ID EQU const_value
const BASECOORD_AE const BASECOORD_AE
const BASECOORD_AF const BASECOORD_AF
const BASECOORD_B0 const BASECOORD_B0
NUM_BASECOORDS EQU const_value
; frame block modes that are part of subanimations ; frame block modes that are part of subanimations
const_def const_def

View file

@ -170,10 +170,8 @@
const SUPER_FANG ; a2 const SUPER_FANG ; a2
const SLASH ; a3 const SLASH ; a3
const SUBSTITUTE ; a4 const SUBSTITUTE ; a4
NUM_ATTACKS EQU const_value - 1
const STRUGGLE ; a5 const STRUGGLE ; a5
NUM_ATTACKS EQU const_value - 1
; Moves do double duty as animation identifiers. ; Moves do double duty as animation identifiers.
@ -214,3 +212,5 @@ NUM_ATTACKS EQU const_value - 1
const HIDEPIC_ANIM ; monster disappears const HIDEPIC_ANIM ; monster disappears
const ROCK_ANIM ; throw rock const ROCK_ANIM ; throw rock
const BAIT_ANIM ; throw bait const BAIT_ANIM ; throw bait
NUM_ATTACK_ANIMS EQU const_value - 1

View file

@ -91,3 +91,4 @@
const LEECH_SEED_EFFECT ; $54 const LEECH_SEED_EFFECT ; $54
const SPLASH_EFFECT ; $55 const SPLASH_EFFECT ; $55
const DISABLE_EFFECT ; $56 const DISABLE_EFFECT ; $56
NUM_MOVE_EFFECTS EQU const_value - 1

View file

@ -70,3 +70,4 @@ SET_PAL_DEFAULT EQU $ff
const PAL_BADGE ; $22 const PAL_BADGE ; $22
const PAL_CAVE ; $23 const PAL_CAVE ; $23
const PAL_GAMEFREAK ; $24 const PAL_GAMEFREAK ; $24
NUM_SGB_PALS EQU const_value

View file

@ -1,3 +1,29 @@
; base data struct members (see data/pokemon/base_stats/*.asm)
rsreset
BASE_DEX_NO rb
BASE_STATS rb NUM_STATS
rsset BASE_STATS
BASE_HP rb
BASE_ATK rb
BASE_DEF rb
BASE_SPD rb
BASE_SPC rb
BASE_TYPES rw
rsset BASE_TYPES
BASE_TYPE_1 rb
BASE_TYPE_2 rb
BASE_CATCH_RATE rb
BASE_EXP rb
BASE_PIC_SIZE rb
BASE_FRONTPIC rw
BASE_BACKPIC rw
BASE_MOVES rb NUM_MOVES
BASE_GROWTH_RATE rb
BASE_TMHM rb (NUM_TM_HM + 7) / 8
rb_skip
BASE_DATA_SIZE EQU _RS
PARTY_LENGTH EQU 6 PARTY_LENGTH EQU 6
MONS_PER_BOX EQU 20 MONS_PER_BOX EQU 20
@ -39,3 +65,8 @@ EVOLUTION_SIZE EQU 4
const GROWTH_MEDIUM_SLOW const GROWTH_MEDIUM_SLOW
const GROWTH_FAST const GROWTH_FAST
const GROWTH_SLOW const GROWTH_SLOW
NUM_GROWTH_RATES EQU const_value
; wild data (see data/wild/maps/*.asm)
NUM_WILDMONS EQU 10
WILDDATA_LENGTH EQU 1 + NUM_WILDMONS * 2

View file

@ -30,6 +30,7 @@ SLOTS_SOMEONESKEYS EQU $ff
const TRADE_FOR_DORIS const TRADE_FOR_DORIS
const TRADE_FOR_CRINKLES const TRADE_FOR_CRINKLES
const TRADE_FOR_SPOT const TRADE_FOR_SPOT
NUM_NPC_TRADES EQU const_value
; in game trade dialog sets ; in game trade dialog sets
; InGameTradeTextPointers indexes (see engine/events/in_game_trades.asm) ; InGameTradeTextPointers indexes (see engine/events/in_game_trades.asm)

View file

@ -75,3 +75,4 @@ FIRST_STILL_SPRITE EQU const_value
const SPRITE_UNUSED_GAMBLER_ASLEEP_1 ; $46 const SPRITE_UNUSED_GAMBLER_ASLEEP_1 ; $46
const SPRITE_UNUSED_GAMBLER_ASLEEP_2 ; $47 const SPRITE_UNUSED_GAMBLER_ASLEEP_2 ; $47
const SPRITE_GAMBLER_ASLEEP ; $48 const SPRITE_GAMBLER_ASLEEP ; $48
NUM_SPRITES EQU const_value - 1

View file

@ -25,3 +25,4 @@
const CLUB ; 21 const CLUB ; 21
const FACILITY ; 22 const FACILITY ; 22
const PLATEAU ; 23 const PLATEAU ; 23
NUM_TILESETS EQU const_value

View file

@ -62,3 +62,4 @@ ENDM
trainer_const CHANNELER ; $2D trainer_const CHANNELER ; $2D
trainer_const AGATHA ; $2E trainer_const AGATHA ; $2E
trainer_const LANCE ; $2F trainer_const LANCE ; $2F
NUM_TRAINERS EQU const_value - 1

View file

@ -22,3 +22,5 @@ SPECIAL EQU const_value
const PSYCHIC_TYPE ; $18 const PSYCHIC_TYPE ; $18
const ICE ; $19 const ICE ; $19
const DRAGON ; $1A const DRAGON ; $1A
NUM_TYPES EQU const_value

View file

@ -0,0 +1,17 @@
; Stats that move effects can raise or lower
; The relevant move effect IDs correspond to the stats
StatModTextStrings:
list_start StatModTextStrings
li "ATTACK"
li "DEFENSE"
li "SPEED"
li "SPECIAL"
assert_list_length SPECIAL_DOWN_SIDE_EFFECT - ATTACK_DOWN_SIDE_EFFECT + 1
li "ACCURACY"
li "EVADE"
assert_list_length NUM_STAT_MODS - 2 ; two bytes are unused
assert_list_length EVASION_UP1_EFFECT - ATTACK_UP1_EFFECT + 1
assert_list_length EVASION_DOWN1_EFFECT - ATTACK_DOWN1_EFFECT + 1
assert_list_length EVASION_UP2_EFFECT - ATTACK_UP2_EFFECT + 1
assert_list_length EVASION_DOWN2_EFFECT - ATTACK_DOWN2_EFFECT + 1

View file

@ -1,7 +1,10 @@
StatsTextStrings: ; Stats that vitamins can raise or lower
db "ATTACK@"
db "DEFENSE@" VitaminStats:
db "SPEED@" list_start VitaminStats
db "SPECIAL@" li "HEALTH"
db "ACCURACY@" li "ATTACK"
db "EVADE@" li "DEFENSE"
li "SPEED"
li "SPECIAL"
assert_list_length NUM_STATS

View file

@ -1,4 +1,5 @@
FrameBlockBaseCoords: FrameBlockBaseCoords:
table_width 2, FrameBlockBaseCoords
db $10, $68 ; BASECOORD_00 db $10, $68 ; BASECOORD_00
db $10, $70 ; BASECOORD_01 db $10, $70 ; BASECOORD_01
db $10, $78 ; BASECOORD_02 db $10, $78 ; BASECOORD_02
@ -176,3 +177,4 @@ FrameBlockBaseCoords:
db $18, $4C ; BASECOORD_AE db $18, $4C ; BASECOORD_AE
db $1C, $48 ; BASECOORD_AF db $1C, $48 ; BASECOORD_AF
db $48, $28 ; BASECOORD_B0 db $48, $28 ; BASECOORD_B0
assert_table_length NUM_BASECOORDS

View file

@ -1,4 +1,5 @@
FrameBlockPointers: FrameBlockPointers:
table_width 2, FrameBlockPointers
dw FrameBlock00 dw FrameBlock00
dw FrameBlock01 dw FrameBlock01
dw FrameBlock02 dw FrameBlock02
@ -121,6 +122,7 @@ FrameBlockPointers:
dw FrameBlock77 dw FrameBlock77
dw FrameBlock78 dw FrameBlock78
dw FrameBlock79 dw FrameBlock79
assert_table_length NUM_FRAMEBLOCKS
FrameBlock01: FrameBlock01:
db 9 ; # db 9 ; #

View file

@ -1,4 +1,5 @@
SubanimationPointers: SubanimationPointers:
table_width 2, SubanimationPointers
dw Subanimation00 dw Subanimation00
dw Subanimation01 dw Subanimation01
dw Subanimation02 dw Subanimation02
@ -85,6 +86,7 @@ SubanimationPointers:
dw Subanimation53 dw Subanimation53
dw Subanimation54 dw Subanimation54
dw Subanimation55 dw Subanimation55
assert_table_length NUM_SUBANIMS
; format: ; format:
; subanim type, count ; subanim type, count

View file

@ -1,4 +1,5 @@
CreditsMons: CreditsMons:
; one entry per CRED_TEXT_MON or CRED_TEXT_FADE_MON in CreditsOrder
db VENUSAUR db VENUSAUR
db ARBOK db ARBOK
db RHYHORN db RHYHORN

View file

@ -1,5 +1,6 @@
CreditsTextPointers: CreditsTextPointers:
; entries correspond to CRED_* constants ; entries correspond to CRED_* constants
table_width 2, CreditsTextPointers
dw CredVersion dw CredVersion
dw CredTajiri dw CredTajiri
dw CredTaOota dw CredTaOota
@ -64,6 +65,7 @@ CreditsTextPointers:
dw CredFukui dw CredFukui
dw CredClub dw CredClub
dw CredPAAD dw CredPAAD
assert_table_length NUM_CRED_STRINGS
CredVersion: ; this 1 byte difference makes all bank addresses offset by 1 in the blue version CredVersion: ; this 1 byte difference makes all bank addresses offset by 1 in the blue version
IF DEF(_RED) IF DEF(_RED)

View file

@ -1,5 +1,6 @@
TradeMons: TradeMons:
; entries correspond to TRADE_FOR_* constants ; entries correspond to TRADE_FOR_* constants
table_width 3 + NAME_LENGTH, TradeMons
; give mon, get mon, dialog id, nickname ; give mon, get mon, dialog id, nickname
db NIDORINO, NIDORINA, TRADE_DIALOGSET_CASUAL, "TERRY@@@@@@" db NIDORINO, NIDORINA, TRADE_DIALOGSET_CASUAL, "TERRY@@@@@@"
db ABRA, MR_MIME, TRADE_DIALOGSET_CASUAL, "MARCEL@@@@@" db ABRA, MR_MIME, TRADE_DIALOGSET_CASUAL, "MARCEL@@@@@"
@ -11,3 +12,4 @@ TradeMons:
db RAICHU, ELECTRODE, TRADE_DIALOGSET_POLITE, "DORIS@@@@@@" db RAICHU, ELECTRODE, TRADE_DIALOGSET_POLITE, "DORIS@@@@@@"
db VENONAT, TANGELA, TRADE_DIALOGSET_HAPPY, "CRINKLES@@@" db VENONAT, TANGELA, TRADE_DIALOGSET_HAPPY, "CRINKLES@@@"
db NIDORAN_M, NIDORAN_F, TRADE_DIALOGSET_HAPPY, "SPOT@@@@@@@" db NIDORAN_M, NIDORAN_F, TRADE_DIALOGSET_HAPPY, "SPOT@@@@@@@"
assert_table_length NUM_NPC_TRADES

View file

@ -11,9 +11,11 @@ ENDM
GrowthRateTable: GrowthRateTable:
; entries correspond to GROWTH_* (see constants/pokemon_data_constants.asm) ; entries correspond to GROWTH_* (see constants/pokemon_data_constants.asm)
table_width 4, GrowthRateTable
growth_rate 1, 1, 0, 0, 0 ; Medium Fast growth_rate 1, 1, 0, 0, 0 ; Medium Fast
growth_rate 3, 4, 10, 0, 30 ; Slightly Fast growth_rate 3, 4, 10, 0, 30 ; Slightly Fast
growth_rate 3, 4, 20, 0, 70 ; Slightly Slow growth_rate 3, 4, 20, 0, 70 ; Slightly Slow
growth_rate 6, 5, -15, 100, 140 ; Medium Slow growth_rate 6, 5, -15, 100, 140 ; Medium Slow
growth_rate 4, 5, 0, 0, 0 ; Fast growth_rate 4, 5, 0, 0, 0 ; Fast
growth_rate 5, 4, 0, 0, 0 ; Slow growth_rate 5, 4, 0, 0, 0 ; Slow
assert_table_length NUM_GROWTH_RATES

View file

@ -17,6 +17,7 @@ ENDC
ENDM ENDM
KeyItemBitfield: KeyItemBitfield:
table_width 1, KeyItemBitfield
key_item_bits \ key_item_bits \
FALSE, \ ; MASTER_BALL FALSE, \ ; MASTER_BALL
FALSE, \ ; ULTRA_BALL FALSE, \ ; ULTRA_BALL
@ -101,3 +102,4 @@ KeyItemBitfield:
FALSE, \ ; MAX_ETHER FALSE, \ ; MAX_ETHER
FALSE, \ ; ELIXER FALSE, \ ; ELIXER
FALSE ; MAX_ELIXER FALSE ; MAX_ELIXER
assert_table_length (NUM_ITEMS + 7) / 8

View file

@ -1,98 +1,101 @@
ItemNames:: ItemNames::
db "MASTER BALL@" list_start ItemNames
db "ULTRA BALL@" li "MASTER BALL"
db "GREAT BALL@" li "ULTRA BALL"
db "POKé BALL@" li "GREAT BALL"
db "TOWN MAP@" li "POKé BALL"
db "BICYCLE@" li "TOWN MAP"
db "?????@" li "BICYCLE"
db "SAFARI BALL@" li "?????"
db "POKéDEX@" li "SAFARI BALL"
db "MOON STONE@" li "POKéDEX"
db "ANTIDOTE@" li "MOON STONE"
db "BURN HEAL@" li "ANTIDOTE"
db "ICE HEAL@" li "BURN HEAL"
db "AWAKENING@" li "ICE HEAL"
db "PARLYZ HEAL@" li "AWAKENING"
db "FULL RESTORE@" li "PARLYZ HEAL"
db "MAX POTION@" li "FULL RESTORE"
db "HYPER POTION@" li "MAX POTION"
db "SUPER POTION@" li "HYPER POTION"
db "POTION@" li "SUPER POTION"
db "BOULDERBADGE@" li "POTION"
db "CASCADEBADGE@" li "BOULDERBADGE"
db "THUNDERBADGE@" li "CASCADEBADGE"
db "RAINBOWBADGE@" li "THUNDERBADGE"
db "SOULBADGE@" li "RAINBOWBADGE"
db "MARSHBADGE@" li "SOULBADGE"
db "VOLCANOBADGE@" li "MARSHBADGE"
db "EARTHBADGE@" li "VOLCANOBADGE"
db "ESCAPE ROPE@" li "EARTHBADGE"
db "REPEL@" li "ESCAPE ROPE"
db "OLD AMBER@" li "REPEL"
db "FIRE STONE@" li "OLD AMBER"
db "THUNDERSTONE@" li "FIRE STONE"
db "WATER STONE@" li "THUNDERSTONE"
db "HP UP@" li "WATER STONE"
db "PROTEIN@" li "HP UP"
db "IRON@" li "PROTEIN"
db "CARBOS@" li "IRON"
db "CALCIUM@" li "CARBOS"
db "RARE CANDY@" li "CALCIUM"
db "DOME FOSSIL@" li "RARE CANDY"
db "HELIX FOSSIL@" li "DOME FOSSIL"
db "SECRET KEY@" li "HELIX FOSSIL"
db "?????@" li "SECRET KEY"
db "BIKE VOUCHER@" li "?????"
db "X ACCURACY@" li "BIKE VOUCHER"
db "LEAF STONE@" li "X ACCURACY"
db "CARD KEY@" li "LEAF STONE"
db "NUGGET@" li "CARD KEY"
db "PP UP@" li "NUGGET"
db "POKé DOLL@" li "PP UP"
db "FULL HEAL@" li "POKé DOLL"
db "REVIVE@" li "FULL HEAL"
db "MAX REVIVE@" li "REVIVE"
db "GUARD SPEC.@" li "MAX REVIVE"
db "SUPER REPEL@" li "GUARD SPEC."
db "MAX REPEL@" li "SUPER REPEL"
db "DIRE HIT@" li "MAX REPEL"
db "COIN@" li "DIRE HIT"
db "FRESH WATER@" li "COIN"
db "SODA POP@" li "FRESH WATER"
db "LEMONADE@" li "SODA POP"
db "S.S.TICKET@" li "LEMONADE"
db "GOLD TEETH@" li "S.S.TICKET"
db "X ATTACK@" li "GOLD TEETH"
db "X DEFEND@" li "X ATTACK"
db "X SPEED@" li "X DEFEND"
db "X SPECIAL@" li "X SPEED"
db "COIN CASE@" li "X SPECIAL"
db "OAK's PARCEL@" li "COIN CASE"
db "ITEMFINDER@" li "OAK's PARCEL"
db "SILPH SCOPE@" li "ITEMFINDER"
db "POKé FLUTE@" li "SILPH SCOPE"
db "LIFT KEY@" li "POKé FLUTE"
db "EXP.ALL@" li "LIFT KEY"
db "OLD ROD@" li "EXP.ALL"
db "GOOD ROD@" li "OLD ROD"
db "SUPER ROD@" li "GOOD ROD"
db "PP UP@" li "SUPER ROD"
db "ETHER@" li "PP UP"
db "MAX ETHER@" li "ETHER"
db "ELIXER@" li "MAX ETHER"
db "MAX ELIXER@" li "ELIXER"
db "B2F@" li "MAX ELIXER"
db "B1F@" assert_list_length NUM_ITEMS
db "1F@" li "B2F"
db "2F@" li "B1F"
db "3F@" li "1F"
db "4F@" li "2F"
db "5F@" li "3F"
db "6F@" li "4F"
db "7F@" li "5F"
db "8F@" li "6F"
db "9F@" li "7F"
db "10F@" li "8F"
db "11F@" li "9F"
db "B4F@" li "10F"
li "11F"
li "B4F"
assert_list_length NUM_ITEMS + NUM_FLOORS

View file

@ -1,4 +1,5 @@
ItemPrices:: ItemPrices::
table_width 3, ItemPrices
money 0 ; MASTER_BALL money 0 ; MASTER_BALL
money 1200 ; ULTRA_BALL money 1200 ; ULTRA_BALL
money 600 ; GREAT_BALL money 600 ; GREAT_BALL
@ -82,6 +83,7 @@ ItemPrices::
money 0 ; MAX_ETHER money 0 ; MAX_ETHER
money 0 ; ELIXER money 0 ; ELIXER
money 0 ; MAX_ELIXER money 0 ; MAX_ELIXER
assert_table_length NUM_ITEMS
money 0 ; FLOOR_B2F money 0 ; FLOOR_B2F
money 0 ; FLOOR_B1F money 0 ; FLOOR_B1F
money 0 ; FLOOR_1F money 0 ; FLOOR_1F
@ -96,3 +98,4 @@ ItemPrices::
money 0 ; FLOOR_10F money 0 ; FLOOR_10F
money 0 ; FLOOR_11F money 0 ; FLOOR_11F
money 0 ; FLOOR_B4F money 0 ; FLOOR_B4F
assert_table_length NUM_ITEMS + NUM_FLOORS

View file

@ -1,5 +1,6 @@
TechnicalMachinePrices: TechnicalMachinePrices:
; In thousands (nybbles). ; In thousands (nybbles).
table_width 1, TechnicalMachinePrices
dn 3, 2 ; TM01, TM02 dn 3, 2 ; TM01, TM02
dn 2, 1 ; TM03, TM04 dn 2, 1 ; TM03, TM04
dn 3, 4 ; TM05, TM06 dn 3, 4 ; TM05, TM06
@ -25,3 +26,4 @@ TechnicalMachinePrices:
dn 2, 4 ; TM45, TM46 dn 2, 4 ; TM45, TM46
dn 3, 4 ; TM47, TM48 dn 3, 4 ; TM47, TM48
dn 4, 2 ; TM49, TM50 dn 4, 2 ; TM49, TM50
assert_table_length (NUM_TMS + 1) / 2

View file

@ -2,6 +2,7 @@
MapHSPointers: MapHSPointers:
; entries correspond to map ids ; entries correspond to map ids
table_width 2, MapHSPointers
dw PalletTownHS dw PalletTownHS
dw ViridianCityHS dw ViridianCityHS
dw PewterCityHS dw PewterCityHS
@ -250,6 +251,7 @@ MapHSPointers:
dw NoHS dw NoHS
dw NoHS dw NoHS
dw NoHS dw NoHS
assert_table_length NUM_MAPS
dw -1 ; end dw -1 ; end
NoHS: NoHS:
@ -257,6 +259,7 @@ NoHS:
MissableObjects: MissableObjects:
; entries correspond to HS_* constants (see constants/hide_show_constants) ; entries correspond to HS_* constants (see constants/hide_show_constants)
table_width 3, MissableObjects
; format: map id, object id, HIDE/SHOW ; format: map id, object id, HIDE/SHOW
PalletTownHS: PalletTownHS:
@ -562,3 +565,4 @@ SeafoamIslandsB4FHS:
db SEAFOAM_ISLANDS_B4F, $02, HIDE db SEAFOAM_ISLANDS_B4F, $02, HIDE
db SEAFOAM_ISLANDS_B4F, $03, SHOW db SEAFOAM_ISLANDS_B4F, $03, SHOW
db $FF, $01, SHOW ; end db $FF, $01, SHOW ; end
assert_table_length NUM_HS_OBJECTS + 1

View file

@ -1,5 +1,6 @@
; see also MapHeaderPointers ; see also MapHeaderPointers
MapHeaderBanks:: MapHeaderBanks::
table_width 1, MapHeaderBanks
db BANK(PalletTown_h) db BANK(PalletTown_h)
db BANK(ViridianCity_h) db BANK(ViridianCity_h)
db BANK(PewterCity_h) db BANK(PewterCity_h)
@ -248,3 +249,4 @@ MapHeaderBanks::
db BANK(LoreleisRoom_h) db BANK(LoreleisRoom_h)
db BANK(BrunosRoom_h) db BANK(BrunosRoom_h)
db BANK(AgathasRoom_h) db BANK(AgathasRoom_h)
assert_table_length NUM_MAPS

View file

@ -1,5 +1,6 @@
; see also MapHeaderBanks ; see also MapHeaderBanks
MapHeaderPointers:: MapHeaderPointers::
table_width 2, MapHeaderPointers
dw PalletTown_h dw PalletTown_h
dw ViridianCity_h dw ViridianCity_h
dw PewterCity_h dw PewterCity_h
@ -247,4 +248,5 @@ MapHeaderPointers::
dw SilphCo2F_h ; UNUSED_MAP_F4 dw SilphCo2F_h ; UNUSED_MAP_F4
dw LoreleisRoom_h dw LoreleisRoom_h
dw BrunosRoom_h dw BrunosRoom_h
dw AgathasRoom_h ;247 dw AgathasRoom_h
assert_table_length NUM_MAPS

View file

@ -1,4 +1,3 @@
MapNames:
PalletTownName: db "PALLET TOWN@" PalletTownName: db "PALLET TOWN@"
ViridianCityName: db "VIRIDIAN CITY@" ViridianCityName: db "VIRIDIAN CITY@"
PewterCityName: db "PEWTER CITY@" PewterCityName: db "PEWTER CITY@"

View file

@ -1,4 +1,5 @@
MapSongBanks:: MapSongBanks::
table_width 2, MapSongBanks
db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; PALLET_TOWN db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; PALLET_TOWN
db MUSIC_CITIES1, BANK(Music_Cities1) ; VIRIDIAN_CITY db MUSIC_CITIES1, BANK(Music_Cities1) ; VIRIDIAN_CITY
db MUSIC_CITIES1, BANK(Music_Cities1) ; PEWTER_CITY db MUSIC_CITIES1, BANK(Music_Cities1) ; PEWTER_CITY
@ -247,3 +248,4 @@ MapSongBanks::
db MUSIC_GYM, BANK(Music_Gym) ; LORELEIS_ROOM db MUSIC_GYM, BANK(Music_Gym) ; LORELEIS_ROOM
db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; BRUNOS_ROOM db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; BRUNOS_ROOM
db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; AGATHAS_ROOM db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; AGATHAS_ROOM
assert_table_length NUM_MAPS

View file

@ -1,4 +1,5 @@
MapSpriteSets: MapSpriteSets:
table_width 1, MapSpriteSets
db $01 ; PALLET_TOWN db $01 ; PALLET_TOWN
db $01 ; VIRIDIAN_CITY db $01 ; VIRIDIAN_CITY
db $02 ; PEWTER_CITY db $02 ; PEWTER_CITY
@ -36,6 +37,7 @@ MapSpriteSets:
db $06 ; ROUTE_23 db $06 ; ROUTE_23
db $02 ; ROUTE_24 db $02 ; ROUTE_24
db $02 ; ROUTE_25 db $02 ; ROUTE_25
assert_table_length FIRST_INDOOR_MAP
EAST_WEST EQU 1 EAST_WEST EQU 1
NORTH_SOUTH EQU 2 NORTH_SOUTH EQU 2
@ -60,7 +62,12 @@ SplitMapSpriteSets:
db EAST_WEST, 3, $07, $03 ; $fc db EAST_WEST, 3, $07, $03 ; $fc
SpriteSets: SpriteSets:
; each sprite set has 9 walking sprites and 2 still sprites
SPRITE_SET_LENGTH EQU 9 + 2
; sprite set $01 ; sprite set $01
table_width 1
db SPRITE_BLUE db SPRITE_BLUE
db SPRITE_YOUNGSTER db SPRITE_YOUNGSTER
db SPRITE_GIRL db SPRITE_GIRL
@ -72,8 +79,10 @@ SpriteSets:
db SPRITE_SWIMMER db SPRITE_SWIMMER
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_GAMBLER_ASLEEP db SPRITE_GAMBLER_ASLEEP
assert_table_length SPRITE_SET_LENGTH
; sprite set $02 ; sprite set $02
table_width 1
db SPRITE_YOUNGSTER db SPRITE_YOUNGSTER
db SPRITE_ROCKET db SPRITE_ROCKET
db SPRITE_SUPER_NERD db SPRITE_SUPER_NERD
@ -85,8 +94,10 @@ SpriteSets:
db SPRITE_COOLTRAINER_M db SPRITE_COOLTRAINER_M
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2 db SPRITE_UNUSED_GAMBLER_ASLEEP_2
assert_table_length SPRITE_SET_LENGTH
; sprite set $03 ; sprite set $03
table_width 1
db SPRITE_LITTLE_GIRL db SPRITE_LITTLE_GIRL
db SPRITE_GIRL db SPRITE_GIRL
db SPRITE_SUPER_NERD db SPRITE_SUPER_NERD
@ -98,8 +109,10 @@ SpriteSets:
db SPRITE_GUARD db SPRITE_GUARD
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2 db SPRITE_UNUSED_GAMBLER_ASLEEP_2
assert_table_length SPRITE_SET_LENGTH
; sprite set $04 ; sprite set $04
table_width 1
db SPRITE_BEAUTY db SPRITE_BEAUTY
db SPRITE_SUPER_NERD db SPRITE_SUPER_NERD
db SPRITE_YOUNGSTER db SPRITE_YOUNGSTER
@ -111,8 +124,10 @@ SpriteSets:
db SPRITE_COOLTRAINER_M db SPRITE_COOLTRAINER_M
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2 db SPRITE_UNUSED_GAMBLER_ASLEEP_2
assert_table_length SPRITE_SET_LENGTH
; sprite set $05 ; sprite set $05
table_width 1
db SPRITE_LITTLE_GIRL db SPRITE_LITTLE_GIRL
db SPRITE_LITTLE_BOY db SPRITE_LITTLE_BOY
db SPRITE_GIRL db SPRITE_GIRL
@ -124,8 +139,10 @@ SpriteSets:
db SPRITE_ROCKET db SPRITE_ROCKET
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_SNORLAX db SPRITE_SNORLAX
assert_table_length SPRITE_SET_LENGTH
; sprite set $06 ; sprite set $06
table_width 1
db SPRITE_YOUNGSTER db SPRITE_YOUNGSTER
db SPRITE_GYM_GUIDE db SPRITE_GYM_GUIDE
db SPRITE_MONSTER db SPRITE_MONSTER
@ -137,8 +154,10 @@ SpriteSets:
db SPRITE_GAMBLER db SPRITE_GAMBLER
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2 db SPRITE_UNUSED_GAMBLER_ASLEEP_2
assert_table_length SPRITE_SET_LENGTH
; sprite set $07 ; sprite set $07
table_width 1
db SPRITE_ROCKET db SPRITE_ROCKET
db SPRITE_SCIENTIST db SPRITE_SCIENTIST
db SPRITE_SILPH_WORKER db SPRITE_SILPH_WORKER
@ -150,8 +169,10 @@ SpriteSets:
db SPRITE_MONSTER db SPRITE_MONSTER
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2 db SPRITE_UNUSED_GAMBLER_ASLEEP_2
assert_table_length SPRITE_SET_LENGTH
; sprite set $08 ; sprite set $08
table_width 1
db SPRITE_BIKER db SPRITE_BIKER
db SPRITE_SUPER_NERD db SPRITE_SUPER_NERD
db SPRITE_MIDDLE_AGED_MAN db SPRITE_MIDDLE_AGED_MAN
@ -163,8 +184,10 @@ SpriteSets:
db SPRITE_MONSTER db SPRITE_MONSTER
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_SNORLAX db SPRITE_SNORLAX
assert_table_length SPRITE_SET_LENGTH
; sprite set $09 ; sprite set $09
table_width 1
db SPRITE_BIKER db SPRITE_BIKER
db SPRITE_COOLTRAINER_M db SPRITE_COOLTRAINER_M
db SPRITE_SILPH_WORKER db SPRITE_SILPH_WORKER
@ -176,8 +199,10 @@ SpriteSets:
db SPRITE_SUPER_NERD db SPRITE_SUPER_NERD
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_SNORLAX db SPRITE_SNORLAX
assert_table_length SPRITE_SET_LENGTH
; sprite set $0a ; sprite set $0a
table_width 1
db SPRITE_BIRD db SPRITE_BIRD
db SPRITE_COOLTRAINER_M db SPRITE_COOLTRAINER_M
db SPRITE_FAIRY db SPRITE_FAIRY
@ -189,3 +214,4 @@ SpriteSets:
db SPRITE_YOUNGSTER db SPRITE_YOUNGSTER
db SPRITE_POKE_BALL db SPRITE_POKE_BALL
db SPRITE_FOSSIL db SPRITE_FOSSIL
assert_table_length SPRITE_SET_LENGTH

View file

@ -5,6 +5,7 @@ ENDM
; the appearance of towns and routes in the town map ; the appearance of towns and routes in the town map
ExternalMapEntries: ExternalMapEntries:
table_width 3, ExternalMapEntries
; x, y, name ; x, y, name
external_map 2, 11, PalletTownName external_map 2, 11, PalletTownName
external_map 2, 8, ViridianCityName external_map 2, 8, ViridianCityName
@ -43,6 +44,7 @@ ExternalMapEntries:
external_map 0, 6, Route23Name external_map 0, 6, Route23Name
external_map 10, 1, Route24Name external_map 10, 1, Route24Name
external_map 11, 0, Route25Name external_map 11, 0, Route25Name
assert_table_length FIRST_INDOOR_MAP
internal_map: MACRO internal_map: MACRO

View file

@ -1,4 +1,5 @@
AttackAnimationPointers: AttackAnimationPointers:
table_width 2, AttackAnimationPointers
dw PoundAnim dw PoundAnim
dw KarateChopAnim dw KarateChopAnim
dw DoubleSlapAnim dw DoubleSlapAnim
@ -164,6 +165,7 @@ AttackAnimationPointers:
dw SlashAnim dw SlashAnim
dw SubstituteAnim dw SubstituteAnim
dw StruggleAnim dw StruggleAnim
assert_table_length NUM_ATTACKS
dw ShowPicAnim dw ShowPicAnim
dw EnemyFlashAnim dw EnemyFlashAnim
dw PlayerFlashAnim dw PlayerFlashAnim
@ -201,6 +203,7 @@ AttackAnimationPointers:
dw HidePicAnim dw HidePicAnim
dw ThrowRockAnim dw ThrowRockAnim
dw ThrowBaitAnim dw ThrowBaitAnim
assert_table_length NUM_ATTACK_ANIMS
dw ZigZagScreenAnim dw ZigZagScreenAnim
; each animation is a list of subanimations ; each animation is a list of subanimations

View file

@ -1,5 +1,6 @@
MoveEffectPointerTable: MoveEffectPointerTable:
; entries correspond to *_EFFECT constants ; entries correspond to *_EFFECT constants
table_width 2, MoveEffectPointerTable
dw SleepEffect ; EFFECT_01 dw SleepEffect ; EFFECT_01
dw PoisonEffect ; POISON_SIDE_EFFECT1 dw PoisonEffect ; POISON_SIDE_EFFECT1
dw DrainHPEffect ; DRAIN_HP_EFFECT dw DrainHPEffect ; DRAIN_HP_EFFECT
@ -86,3 +87,4 @@ MoveEffectPointerTable:
dw LeechSeedEffect ; LEECH_SEED_EFFECT dw LeechSeedEffect ; LEECH_SEED_EFFECT
dw SplashEffect ; SPLASH_EFFECT dw SplashEffect ; SPLASH_EFFECT
dw DisableEffect ; DISABLE_EFFECT dw DisableEffect ; DISABLE_EFFECT
assert_table_length NUM_MOVE_EFFECTS

View file

@ -1,3 +1,4 @@
; see also FieldMoveDisplayData
FieldMoveNames: FieldMoveNames:
db "CUT@" db "CUT@"
db "FLY@" db "FLY@"

View file

@ -1,6 +1,3 @@
Moves:
; Characteristics of each move.
move: MACRO move: MACRO
db \1 ; animation (interchangeable with move id) db \1 ; animation (interchangeable with move id)
db \2 ; effect db \2 ; effect
@ -10,8 +7,10 @@ move: MACRO
db \6 ; pp db \6 ; pp
ENDM ENDM
Moves:
; Characteristics of each move.
table_width MOVE_LENGTH, Moves
move POUND, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35 move POUND, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35
MoveEnd:
move KARATE_CHOP, NO_ADDITIONAL_EFFECT, 50, NORMAL, 100, 25 move KARATE_CHOP, NO_ADDITIONAL_EFFECT, 50, NORMAL, 100, 25
move DOUBLESLAP, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 10 move DOUBLESLAP, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 10
move COMET_PUNCH, TWO_TO_FIVE_ATTACKS_EFFECT, 18, NORMAL, 85, 15 move COMET_PUNCH, TWO_TO_FIVE_ATTACKS_EFFECT, 18, NORMAL, 85, 15
@ -176,3 +175,4 @@ MoveEnd:
move SLASH, NO_ADDITIONAL_EFFECT, 70, NORMAL, 100, 20 move SLASH, NO_ADDITIONAL_EFFECT, 70, NORMAL, 100, 20
move SUBSTITUTE, SUBSTITUTE_EFFECT, 0, NORMAL, 100, 10 move SUBSTITUTE, SUBSTITUTE_EFFECT, 0, NORMAL, 100, 10
move STRUGGLE, RECOIL_EFFECT, 50, NORMAL, 100, 10 move STRUGGLE, RECOIL_EFFECT, 50, NORMAL, 100, 10
assert_table_length NUM_ATTACKS

View file

@ -1,166 +1,168 @@
MoveNames:: MoveNames::
db "POUND@" list_start MoveNames
db "KARATE CHOP@" li "POUND"
db "DOUBLESLAP@" li "KARATE CHOP"
db "COMET PUNCH@" li "DOUBLESLAP"
db "MEGA PUNCH@" li "COMET PUNCH"
db "PAY DAY@" li "MEGA PUNCH"
db "FIRE PUNCH@" li "PAY DAY"
db "ICE PUNCH@" li "FIRE PUNCH"
db "THUNDERPUNCH@" li "ICE PUNCH"
db "SCRATCH@" li "THUNDERPUNCH"
db "VICEGRIP@" li "SCRATCH"
db "GUILLOTINE@" li "VICEGRIP"
db "RAZOR WIND@" li "GUILLOTINE"
db "SWORDS DANCE@" li "RAZOR WIND"
db "CUT@" li "SWORDS DANCE"
db "GUST@" li "CUT"
db "WING ATTACK@" li "GUST"
db "WHIRLWIND@" li "WING ATTACK"
db "FLY@" li "WHIRLWIND"
db "BIND@" li "FLY"
db "SLAM@" li "BIND"
db "VINE WHIP@" li "SLAM"
db "STOMP@" li "VINE WHIP"
db "DOUBLE KICK@" li "STOMP"
db "MEGA KICK@" li "DOUBLE KICK"
db "JUMP KICK@" li "MEGA KICK"
db "ROLLING KICK@" li "JUMP KICK"
db "SAND-ATTACK@" li "ROLLING KICK"
db "HEADBUTT@" li "SAND-ATTACK"
db "HORN ATTACK@" li "HEADBUTT"
db "FURY ATTACK@" li "HORN ATTACK"
db "HORN DRILL@" li "FURY ATTACK"
db "TACKLE@" li "HORN DRILL"
db "BODY SLAM@" li "TACKLE"
db "WRAP@" li "BODY SLAM"
db "TAKE DOWN@" li "WRAP"
db "THRASH@" li "TAKE DOWN"
db "DOUBLE-EDGE@" li "THRASH"
db "TAIL WHIP@" li "DOUBLE-EDGE"
db "POISON STING@" li "TAIL WHIP"
db "TWINEEDLE@" li "POISON STING"
db "PIN MISSILE@" li "TWINEEDLE"
db "LEER@" li "PIN MISSILE"
db "BITE@" li "LEER"
db "GROWL@" li "BITE"
db "ROAR@" li "GROWL"
db "SING@" li "ROAR"
db "SUPERSONIC@" li "SING"
db "SONICBOOM@" li "SUPERSONIC"
db "DISABLE@" li "SONICBOOM"
db "ACID@" li "DISABLE"
db "EMBER@" li "ACID"
db "FLAMETHROWER@" li "EMBER"
db "MIST@" li "FLAMETHROWER"
db "WATER GUN@" li "MIST"
db "HYDRO PUMP@" li "WATER GUN"
db "SURF@" li "HYDRO PUMP"
db "ICE BEAM@" li "SURF"
db "BLIZZARD@" li "ICE BEAM"
db "PSYBEAM@" li "BLIZZARD"
db "BUBBLEBEAM@" li "PSYBEAM"
db "AURORA BEAM@" li "BUBBLEBEAM"
db "HYPER BEAM@" li "AURORA BEAM"
db "PECK@" li "HYPER BEAM"
db "DRILL PECK@" li "PECK"
db "SUBMISSION@" li "DRILL PECK"
db "LOW KICK@" li "SUBMISSION"
db "COUNTER@" li "LOW KICK"
db "SEISMIC TOSS@" li "COUNTER"
db "STRENGTH@" li "SEISMIC TOSS"
db "ABSORB@" li "STRENGTH"
db "MEGA DRAIN@" li "ABSORB"
db "LEECH SEED@" li "MEGA DRAIN"
db "GROWTH@" li "LEECH SEED"
db "RAZOR LEAF@" li "GROWTH"
db "SOLARBEAM@" li "RAZOR LEAF"
db "POISONPOWDER@" li "SOLARBEAM"
db "STUN SPORE@" li "POISONPOWDER"
db "SLEEP POWDER@" li "STUN SPORE"
db "PETAL DANCE@" li "SLEEP POWDER"
db "STRING SHOT@" li "PETAL DANCE"
db "DRAGON RAGE@" li "STRING SHOT"
db "FIRE SPIN@" li "DRAGON RAGE"
db "THUNDERSHOCK@" li "FIRE SPIN"
db "THUNDERBOLT@" li "THUNDERSHOCK"
db "THUNDER WAVE@" li "THUNDERBOLT"
db "THUNDER@" li "THUNDER WAVE"
db "ROCK THROW@" li "THUNDER"
db "EARTHQUAKE@" li "ROCK THROW"
db "FISSURE@" li "EARTHQUAKE"
db "DIG@" li "FISSURE"
db "TOXIC@" li "DIG"
db "CONFUSION@" li "TOXIC"
db "PSYCHIC@" li "CONFUSION"
db "HYPNOSIS@" li "PSYCHIC"
db "MEDITATE@" li "HYPNOSIS"
db "AGILITY@" li "MEDITATE"
db "QUICK ATTACK@" li "AGILITY"
db "RAGE@" li "QUICK ATTACK"
db "TELEPORT@" li "RAGE"
db "NIGHT SHADE@" li "TELEPORT"
db "MIMIC@" li "NIGHT SHADE"
db "SCREECH@" li "MIMIC"
db "DOUBLE TEAM@" li "SCREECH"
db "RECOVER@" li "DOUBLE TEAM"
db "HARDEN@" li "RECOVER"
db "MINIMIZE@" li "HARDEN"
db "SMOKESCREEN@" li "MINIMIZE"
db "CONFUSE RAY@" li "SMOKESCREEN"
db "WITHDRAW@" li "CONFUSE RAY"
db "DEFENSE CURL@" li "WITHDRAW"
db "BARRIER@" li "DEFENSE CURL"
db "LIGHT SCREEN@" li "BARRIER"
db "HAZE@" li "LIGHT SCREEN"
db "REFLECT@" li "HAZE"
db "FOCUS ENERGY@" li "REFLECT"
db "BIDE@" li "FOCUS ENERGY"
db "METRONOME@" li "BIDE"
db "MIRROR MOVE@" li "METRONOME"
db "SELFDESTRUCT@" li "MIRROR MOVE"
db "EGG BOMB@" li "SELFDESTRUCT"
db "LICK@" li "EGG BOMB"
db "SMOG@" li "LICK"
db "SLUDGE@" li "SMOG"
db "BONE CLUB@" li "SLUDGE"
db "FIRE BLAST@" li "BONE CLUB"
db "WATERFALL@" li "FIRE BLAST"
db "CLAMP@" li "WATERFALL"
db "SWIFT@" li "CLAMP"
db "SKULL BASH@" li "SWIFT"
db "SPIKE CANNON@" li "SKULL BASH"
db "CONSTRICT@" li "SPIKE CANNON"
db "AMNESIA@" li "CONSTRICT"
db "KINESIS@" li "AMNESIA"
db "SOFTBOILED@" li "KINESIS"
db "HI JUMP KICK@" li "SOFTBOILED"
db "GLARE@" li "HI JUMP KICK"
db "DREAM EATER@" li "GLARE"
db "POISON GAS@" li "DREAM EATER"
db "BARRAGE@" li "POISON GAS"
db "LEECH LIFE@" li "BARRAGE"
db "LOVELY KISS@" li "LEECH LIFE"
db "SKY ATTACK@" li "LOVELY KISS"
db "TRANSFORM@" li "SKY ATTACK"
db "BUBBLE@" li "TRANSFORM"
db "DIZZY PUNCH@" li "BUBBLE"
db "SPORE@" li "DIZZY PUNCH"
db "FLASH@" li "SPORE"
db "PSYWAVE@" li "FLASH"
db "SPLASH@" li "PSYWAVE"
db "ACID ARMOR@" li "SPLASH"
db "CRABHAMMER@" li "ACID ARMOR"
db "EXPLOSION@" li "CRABHAMMER"
db "FURY SWIPES@" li "EXPLOSION"
db "BONEMERANG@" li "FURY SWIPES"
db "REST@" li "BONEMERANG"
db "ROCK SLIDE@" li "REST"
db "HYPER FANG@" li "ROCK SLIDE"
db "SHARPEN@" li "HYPER FANG"
db "CONVERSION@" li "SHARPEN"
db "TRI ATTACK@" li "CONVERSION"
db "SUPER FANG@" li "TRI ATTACK"
db "SLASH@" li "SUPER FANG"
db "SUBSTITUTE@" li "SLASH"
db "STRUGGLE@" li "SUBSTITUTE"
li "STRUGGLE"
assert_list_length NUM_ATTACKS

View file

@ -1,4 +1,5 @@
MoveSoundTable: MoveSoundTable:
table_width 3, MoveSoundTable
; ID, pitch mod, tempo mod ; ID, pitch mod, tempo mod
db SFX_POUND, $00, $80 ; POUND db SFX_POUND, $00, $80 ; POUND
db SFX_BATTLE_0C, $10, $80 ; KARATE_CHOP db SFX_BATTLE_0C, $10, $80 ; KARATE_CHOP
@ -165,4 +166,5 @@ MoveSoundTable:
db SFX_NOT_VERY_EFFECTIVE, $01, $ff ; SLASH db SFX_NOT_VERY_EFFECTIVE, $01, $ff ; SLASH
db SFX_BATTLE_2C, $d8, $04 ; SUBSTITUTE db SFX_BATTLE_2C, $d8, $04 ; SUBSTITUTE
db SFX_BATTLE_0B, $00, $80 ; STRUGGLE db SFX_BATTLE_0B, $00, $80 ; STRUGGLE
assert_table_length NUM_ATTACKS
db SFX_BATTLE_0B, $00, $80 db SFX_BATTLE_0B, $00, $80

View file

@ -2,6 +2,7 @@
; define constants for the item IDs and for the corresponding move values. ; define constants for the item IDs and for the corresponding move values.
TechnicalMachines: TechnicalMachines:
table_width 1, TechnicalMachines
n = 1 n = 1
REPT NUM_TMS REPT NUM_TMS
@ -14,6 +15,7 @@ ENDC
PURGE MOVE_FOR_TM PURGE MOVE_FOR_TM
n = n + 1 n = n + 1
ENDR ENDR
assert_table_length NUM_TMS
n = 1 n = 1
REPT NUM_HMS REPT NUM_HMS
@ -26,3 +28,4 @@ ENDC
PURGE MOVE_FOR_HM PURGE MOVE_FOR_HM
n = n + 1 n = n + 1
ENDR ENDR
assert_table_length NUM_TM_HM

View file

@ -1,7 +1,6 @@
BaseStats:: BaseStats::
MonBaseStats:: table_width BASE_DATA_SIZE, BaseStats
INCLUDE "data/pokemon/base_stats/bulbasaur.asm" INCLUDE "data/pokemon/base_stats/bulbasaur.asm"
MonBaseStatsEnd::
INCLUDE "data/pokemon/base_stats/ivysaur.asm" INCLUDE "data/pokemon/base_stats/ivysaur.asm"
INCLUDE "data/pokemon/base_stats/venusaur.asm" INCLUDE "data/pokemon/base_stats/venusaur.asm"
INCLUDE "data/pokemon/base_stats/charmander.asm" INCLUDE "data/pokemon/base_stats/charmander.asm"
@ -151,5 +150,4 @@ INCLUDE "data/pokemon/base_stats/dratini.asm"
INCLUDE "data/pokemon/base_stats/dragonair.asm" INCLUDE "data/pokemon/base_stats/dragonair.asm"
INCLUDE "data/pokemon/base_stats/dragonite.asm" INCLUDE "data/pokemon/base_stats/dragonite.asm"
INCLUDE "data/pokemon/base_stats/mewtwo.asm" INCLUDE "data/pokemon/base_stats/mewtwo.asm"
BaseStatsEnd:: assert_table_length NUM_POKEMON - 1 ; discount Mew
assert BaseStatsEnd - BaseStats == (wMonHeaderEnd - wMonHeader) * (NUM_POKEMON - 1) ; discount Mew

View file

@ -4,6 +4,7 @@ mon_cry: MACRO
ENDM ENDM
CryData:: CryData::
table_width 3, CryData
; base cry, pitch, length ; base cry, pitch, length
mon_cry SFX_CRY_11, $00, $80 ; Rhydon mon_cry SFX_CRY_11, $00, $80 ; Rhydon
mon_cry SFX_CRY_03, $00, $80 ; Kangaskhan mon_cry SFX_CRY_03, $00, $80 ; Kangaskhan
@ -195,3 +196,4 @@ CryData::
mon_cry SFX_CRY_21, $55, $01 ; Bellsprout mon_cry SFX_CRY_21, $55, $01 ; Bellsprout
mon_cry SFX_CRY_25, $44, $20 ; Weepinbell mon_cry SFX_CRY_25, $44, $20 ; Weepinbell
mon_cry SFX_CRY_25, $66, $CC ; Victreebel mon_cry SFX_CRY_25, $66, $CC ; Victreebel
assert_table_length NUM_POKEMON_INDEXES

View file

@ -1,4 +1,5 @@
PokedexEntryPointers: PokedexEntryPointers:
table_width 2, PokedexEntryPointers
dw RhydonDexEntry dw RhydonDexEntry
dw KangaskhanDexEntry dw KangaskhanDexEntry
dw NidoranMDexEntry dw NidoranMDexEntry
@ -189,6 +190,7 @@ PokedexEntryPointers:
dw BellsproutDexEntry dw BellsproutDexEntry
dw WeepinbellDexEntry dw WeepinbellDexEntry
dw VictreebelDexEntry dw VictreebelDexEntry
assert_table_length NUM_POKEMON_INDEXES
; string: species name ; string: species name
; height in feet, inches ; height in feet, inches

View file

@ -1,4 +1,5 @@
PokedexOrder: PokedexOrder:
table_width 1, PokedexOrder
db DEX_RHYDON db DEX_RHYDON
db DEX_KANGASKHAN db DEX_KANGASKHAN
db DEX_NIDORAN_M db DEX_NIDORAN_M
@ -189,3 +190,4 @@ PokedexOrder:
db DEX_BELLSPROUT db DEX_BELLSPROUT
db DEX_WEEPINBELL db DEX_WEEPINBELL
db DEX_VICTREEBEL db DEX_VICTREEBEL
assert_table_length NUM_POKEMON_INDEXES

View file

@ -2,6 +2,7 @@
; The max number of evolutions per monster is MAX_EVOLUTIONS ; The max number of evolutions per monster is MAX_EVOLUTIONS
EvosMovesPointerTable: EvosMovesPointerTable:
table_width 2, EvosMovesPointerTable
dw RhydonEvosMoves dw RhydonEvosMoves
dw KangaskhanEvosMoves dw KangaskhanEvosMoves
dw NidoranMEvosMoves dw NidoranMEvosMoves
@ -192,6 +193,7 @@ EvosMovesPointerTable:
dw BellsproutEvosMoves dw BellsproutEvosMoves
dw WeepinbellEvosMoves dw WeepinbellEvosMoves
dw VictreebelEvosMoves dw VictreebelEvosMoves
assert_table_length NUM_POKEMON_INDEXES
RhydonEvosMoves: RhydonEvosMoves:
; Evolutions ; Evolutions

View file

@ -1,4 +1,5 @@
MonPartyData: MonPartyData:
table_width 1, MonPartyData
dn ICON_GRASS, ICON_GRASS ; Bulbasaur / Ivysaur dn ICON_GRASS, ICON_GRASS ; Bulbasaur / Ivysaur
dn ICON_GRASS, ICON_MON ; Venusaur / Charmander dn ICON_GRASS, ICON_MON ; Venusaur / Charmander
dn ICON_MON, ICON_MON ; Charmeleon / Charizard dn ICON_MON, ICON_MON ; Charmeleon / Charizard
@ -75,3 +76,4 @@ MonPartyData:
dn ICON_SNAKE, ICON_SNAKE ; Dratini / Dragonair dn ICON_SNAKE, ICON_SNAKE ; Dratini / Dragonair
dn ICON_SNAKE, ICON_MON ; Dragonite / Mewtwo dn ICON_SNAKE, ICON_MON ; Dragonite / Mewtwo
dn ICON_MON, 0 ; Mew / padding dn ICON_MON, 0 ; Mew / padding
assert_table_length (NUM_POKEMON + 1) / 2

View file

@ -1,4 +1,5 @@
MonsterNames:: MonsterNames::
table_width NAME_LENGTH - 1, MonsterNames
db "RHYDON@@@@" db "RHYDON@@@@"
db "KANGASKHAN" db "KANGASKHAN"
db "NIDORAN♂@@" db "NIDORAN♂@@"
@ -189,3 +190,4 @@ MonsterNames::
db "BELLSPROUT" db "BELLSPROUT"
db "WEEPINBELL" db "WEEPINBELL"
db "VICTREEBEL" db "VICTREEBEL"
assert_table_length NUM_POKEMON_INDEXES

View file

@ -1,4 +1,5 @@
MonsterPalettes: MonsterPalettes:
table_width 1, MonsterPalettes
db PAL_MEWMON ; MISSINGNO db PAL_MEWMON ; MISSINGNO
db PAL_GREENMON ; BULBASAUR db PAL_GREENMON ; BULBASAUR
db PAL_GREENMON ; IVYSAUR db PAL_GREENMON ; IVYSAUR
@ -151,3 +152,4 @@ MonsterPalettes:
db PAL_BROWNMON ; DRAGONITE db PAL_BROWNMON ; DRAGONITE
db PAL_MEWMON ; MEWTWO db PAL_MEWMON ; MEWTWO
db PAL_MEWMON ; MEW db PAL_MEWMON ; MEW
assert_table_length NUM_POKEMON + 1

View file

@ -1,5 +1,6 @@
SuperPalettes: SuperPalettes:
; entries correspond to PAL_* constants ; entries correspond to PAL_* constants
table_width 2 * 4, SuperPalettes
RGB 31,29,31, 21,28,11, 20,26,31, 03,02,02 ; PAL_ROUTE RGB 31,29,31, 21,28,11, 20,26,31, 03,02,02 ; PAL_ROUTE
RGB 31,29,31, 25,28,27, 20,26,31, 03,02,02 ; PAL_PALLET RGB 31,29,31, 25,28,27, 20,26,31, 03,02,02 ; PAL_PALLET
RGB 31,29,31, 17,26,03, 20,26,31, 03,02,02 ; PAL_VIRIDIAN RGB 31,29,31, 17,26,03, 20,26,31, 03,02,02 ; PAL_VIRIDIAN
@ -49,3 +50,4 @@ ENDC
RGB 31,29,31, 30,22,17, 11,15,23, 03,02,02 ; PAL_BADGE RGB 31,29,31, 30,22,17, 11,15,23, 03,02,02 ; PAL_BADGE
RGB 31,29,31, 21,14,09, 18,24,22, 03,02,02 ; PAL_CAVE RGB 31,29,31, 21,14,09, 18,24,22, 03,02,02 ; PAL_CAVE
RGB 31,29,31, 31,28,14, 24,20,10, 03,02,02 ; PAL_GAMEFREAK RGB 31,29,31, 31,28,14, 24,20,10, 03,02,02 ; PAL_GAMEFREAK
assert_table_length NUM_SGB_PALS

View file

@ -5,6 +5,7 @@ overworld_sprite: MACRO
ENDM ENDM
SpriteSheetPointerTable: SpriteSheetPointerTable:
table_width 4, SpriteSheetPointerTable
; graphics, tile count ; graphics, tile count
overworld_sprite RedSprite, 12 ; SPRITE_RED overworld_sprite RedSprite, 12 ; SPRITE_RED
overworld_sprite BlueSprite, 12 ; SPRITE_BLUE overworld_sprite BlueSprite, 12 ; SPRITE_BLUE
@ -78,3 +79,4 @@ SpriteSheetPointerTable:
overworld_sprite GamblerAsleepSprite, 4 ; SPRITE_UNUSED_GAMBLER_ASLEEP_1 overworld_sprite GamblerAsleepSprite, 4 ; SPRITE_UNUSED_GAMBLER_ASLEEP_1
overworld_sprite GamblerAsleepSprite, 4 ; SPRITE_UNUSED_GAMBLER_ASLEEP_2 overworld_sprite GamblerAsleepSprite, 4 ; SPRITE_UNUSED_GAMBLER_ASLEEP_2
overworld_sprite GamblerAsleepSprite, 4 ; SPRITE_GAMBLER_ASLEEP overworld_sprite GamblerAsleepSprite, 4 ; SPRITE_GAMBLER_ASLEEP
assert_table_length NUM_SPRITES

View file

@ -5,6 +5,7 @@ ENDM
TileIDListPointerTable: TileIDListPointerTable:
; entries correspond to TILEMAP_* constants (see constants/gfx_constants.asm) ; entries correspond to TILEMAP_* constants (see constants/gfx_constants.asm)
table_width 3, TileIDListPointerTable
; tilemap pointer, width, height ; tilemap pointer, width, height
tile_ids MonTiles, 7, 7 tile_ids MonTiles, 7, 7
tile_ids SlideDownMonTiles_7x5, 7, 5 tile_ids SlideDownMonTiles_7x5, 7, 5
@ -14,6 +15,7 @@ TileIDListPointerTable:
tile_ids GengarIntroTiles3, 7, 7 tile_ids GengarIntroTiles3, 7, 7
tile_ids GameBoyTiles, 6, 8 tile_ids GameBoyTiles, 6, 8
tile_ids LinkCableTiles, 12, 3 tile_ids LinkCableTiles, 12, 3
assert_table_length NUM_TILEMAPS
DownscaledMonTiles_5x5: DownscaledMonTiles_5x5:
INCBIN "gfx/pokemon/downscaled_5x5.tilemap" INCBIN "gfx/pokemon/downscaled_5x5.tilemap"

View file

@ -7,6 +7,7 @@ tileset: MACRO
ENDM ENDM
Tilesets: Tilesets:
table_width 12, Tilesets
; block, gfx, coll, 3 counter tiles, grass tile, animations ; block, gfx, coll, 3 counter tiles, grass tile, animations
tileset Overworld_Block, Overworld_GFX, Overworld_Coll, $FF,$FF,$FF, $52, TILEANIM_WATER_FLOWER tileset Overworld_Block, Overworld_GFX, Overworld_Coll, $FF,$FF,$FF, $52, TILEANIM_WATER_FLOWER
tileset RedsHouse1_Block, RedsHouse1_GFX, RedsHouse1_Coll, $FF,$FF,$FF, $FF, TILEANIM_NONE tileset RedsHouse1_Block, RedsHouse1_GFX, RedsHouse1_Coll, $FF,$FF,$FF, $FF, TILEANIM_NONE
@ -32,3 +33,4 @@ Tilesets:
tileset Club_Block, Club_GFX, Club_Coll, $07,$17,$FF, $FF, TILEANIM_NONE tileset Club_Block, Club_GFX, Club_Coll, $07,$17,$FF, $FF, TILEANIM_NONE
tileset Facility_Block, Facility_GFX, Facility_Coll, $12,$FF,$FF, $FF, TILEANIM_WATER tileset Facility_Block, Facility_GFX, Facility_Coll, $12,$FF,$FF, $FF, TILEANIM_WATER
tileset Plateau_Block, Plateau_GFX, Plateau_Coll, $FF,$FF,$FF, $45, TILEANIM_WATER tileset Plateau_Block, Plateau_GFX, Plateau_Coll, $FF,$FF,$FF, $45, TILEANIM_WATER
assert_table_length NUM_TILESETS

View file

@ -1,4 +1,5 @@
WarpTileIDPointers: WarpTileIDPointers:
table_width 2, WarpTileIDPointers
dw .OverworldWarpTileIDs dw .OverworldWarpTileIDs
dw .RedsHouse1WarpTileIDs dw .RedsHouse1WarpTileIDs
dw .MartWarpTileIDs dw .MartWarpTileIDs
@ -23,6 +24,7 @@ WarpTileIDPointers:
dw .ClubWarpTileIDs dw .ClubWarpTileIDs
dw .FacilityWarpTileIDs dw .FacilityWarpTileIDs
dw .PlateauWarpTileIDs dw .PlateauWarpTileIDs
assert_table_length NUM_TILESETS
warp_tiles: MACRO warp_tiles: MACRO
REPT _NARG REPT _NARG

View file

@ -1,4 +1,5 @@
TrainerAIPointers: TrainerAIPointers:
table_width 3, TrainerAIPointers
; one entry per trainer class ; one entry per trainer class
; first byte, number of times (per Pokémon) it can occur ; first byte, number of times (per Pokémon) it can occur
; next two bytes, pointer to AI subroutine for trainer class ; next two bytes, pointer to AI subroutine for trainer class
@ -50,3 +51,4 @@ TrainerAIPointers:
dbw 3, GenericAI dbw 3, GenericAI
dbw 2, AgathaAI ; agatha dbw 2, AgathaAI ; agatha
dbw 1, LanceAI ; lance dbw 1, LanceAI ; lance
assert_table_length NUM_TRAINERS

View file

@ -4,10 +4,12 @@ REPT _NARG
shift shift
ENDR ENDR
db 0 ; end db 0 ; end
list_index = list_index + 1
ENDM ENDM
; move choice modification methods that are applied for each trainer class ; move choice modification methods that are applied for each trainer class
TrainerClassMoveChoiceModifications: TrainerClassMoveChoiceModifications:
list_start TrainerClassMoveChoiceModifications
move_choices ; YOUNGSTER move_choices ; YOUNGSTER
move_choices 1 ; BUG CATCHER move_choices 1 ; BUG CATCHER
move_choices 1 ; LASS move_choices 1 ; LASS
@ -55,3 +57,4 @@ TrainerClassMoveChoiceModifications:
move_choices 1 ; CHANNELER move_choices 1 ; CHANNELER
move_choices 1 ; AGATHA move_choices 1 ; AGATHA
move_choices 1, 3 ; LANCE move_choices 1, 3 ; LANCE
assert_list_length NUM_TRAINERS

View file

@ -269,7 +269,7 @@ BikerData:
; Route 17 ; Route 17
; From https://www.smogon.com/smog/issue27/glitch: ; From https://www.smogon.com/smog/issue27/glitch:
; 0E:5FC2 is offset of the ending 0 for this first Biker on Route 17. ; 0E:5FC2 is offset of the ending 0 for this first Biker on Route 17.
; BaseStats + (MonBaseStatsEnd - MonBaseStats) * (000 - 1) = $5FC2; ; BaseStats + (BASE_DATA_SIZE) * (000 - 1) = $5FC2;
; that's the formula from GetMonHeader for the base stats of mon #000. ; that's the formula from GetMonHeader for the base stats of mon #000.
; (BaseStats = $43DE and BANK(BaseStats) = $0E.) ; (BaseStats = $43DE and BANK(BaseStats) = $0E.)
; Finally, PokedexOrder lists 0 as the dex ID for every MissingNo. ; Finally, PokedexOrder lists 0 as the dex ID for every MissingNo.

View file

@ -4,6 +4,7 @@ pic_money: MACRO
ENDM ENDM
TrainerPicAndMoneyPointers:: TrainerPicAndMoneyPointers::
table_width 5, TrainerPicAndMoneyPointers
; pic pointer, base reward money ; pic pointer, base reward money
; money received after battle = base money × level of highest-level enemy mon ; money received after battle = base money × level of highest-level enemy mon
pic_money YoungsterPic, 1500 pic_money YoungsterPic, 1500
@ -53,3 +54,4 @@ TrainerPicAndMoneyPointers::
pic_money ChannelerPic, 3000 pic_money ChannelerPic, 3000
pic_money AgathaPic, 9900 pic_money AgathaPic, 9900
pic_money LancePic, 9900 pic_money LancePic, 9900
assert_table_length NUM_TRAINERS

View file

@ -1,4 +1,5 @@
TypeNames: TypeNames:
table_width 2, TypeNames
dw .Normal dw .Normal
dw .Fighting dw .Fighting
@ -22,6 +23,8 @@ ENDR
dw .Ice dw .Ice
dw .Dragon dw .Dragon
assert_table_length NUM_TYPES
.Normal: db "NORMAL@" .Normal: db "NORMAL@"
.Fighting: db "FIGHTING@" .Fighting: db "FIGHTING@"
.Flying: db "FLYING@" .Flying: db "FLYING@"

View file

@ -1,4 +1,5 @@
WildDataPointers: WildDataPointers:
table_width 2, WildDataPointers
dw NoMons ; PALLET_TOWN dw NoMons ; PALLET_TOWN
dw NoMons ; VIRIDIAN_CITY dw NoMons ; VIRIDIAN_CITY
dw NoMons ; PEWTER_CITY dw NoMons ; PEWTER_CITY
@ -247,6 +248,7 @@ WildDataPointers:
dw NoMons dw NoMons
dw NoMons dw NoMons
dw NoMons dw NoMons
assert_table_length NUM_MAPS
dw -1 ; end dw -1 ; end
; wild pokemon data is divided into two parts. ; wild pokemon data is divided into two parts.

View file

@ -1,5 +1,5 @@
DungeonMons1: DungeonMons1:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 46, GOLBAT db 46, GOLBAT
db 46, HYPNO db 46, HYPNO
db 46, MAGNETON db 46, MAGNETON
@ -15,5 +15,7 @@ ENDC
db 52, PARASECT db 52, PARASECT
db 53, RAICHU db 53, RAICHU
db 53, DITTO db 53, DITTO
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
DungeonMons2: DungeonMons2:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
db 51, DODRIO db 51, DODRIO
db 51, VENOMOTH db 51, VENOMOTH
db 51, KADABRA db 51, KADABRA
@ -10,5 +10,7 @@ DungeonMons2:
db 54, WIGGLYTUFF db 54, WIGGLYTUFF
db 55, DITTO db 55, DITTO
db 60, DITTO db 60, DITTO
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
DungeonMonsB1: DungeonMonsB1:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 55, RHYDON db 55, RHYDON
db 55, MAROWAK db 55, MAROWAK
db 55, ELECTRODE db 55, ELECTRODE
@ -15,5 +15,7 @@ ENDC
db 65, DITTO db 65, DITTO
db 63, DITTO db 63, DITTO
db 67, DITTO db 67, DITTO
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
CaveMons: CaveMons:
db 20 ; grass encounter rate def_grass_wildmons 20 ; encounter rate
db 18, DIGLETT db 18, DIGLETT
db 19, DIGLETT db 19, DIGLETT
db 17, DIGLETT db 17, DIGLETT
@ -10,5 +10,7 @@ CaveMons:
db 22, DIGLETT db 22, DIGLETT
db 29, DUGTRIO db 29, DUGTRIO
db 31, DUGTRIO db 31, DUGTRIO
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
MoonMons1: MoonMons1:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 8, ZUBAT db 8, ZUBAT
db 7, ZUBAT db 7, ZUBAT
db 9, ZUBAT db 9, ZUBAT
@ -10,5 +10,7 @@ MoonMons1:
db 8, PARAS db 8, PARAS
db 11, ZUBAT db 11, ZUBAT
db 8, CLEFAIRY db 8, CLEFAIRY
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
MoonMonsB1: MoonMonsB1:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 8, ZUBAT db 8, ZUBAT
db 7, ZUBAT db 7, ZUBAT
db 7, GEODUDE db 7, GEODUDE
@ -10,5 +10,7 @@ MoonMonsB1:
db 11, ZUBAT db 11, ZUBAT
db 9, CLEFAIRY db 9, CLEFAIRY
db 9, GEODUDE db 9, GEODUDE
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
MoonMonsB2: MoonMonsB2:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 9, ZUBAT db 9, ZUBAT
db 9, GEODUDE db 9, GEODUDE
db 10, ZUBAT db 10, ZUBAT
@ -10,5 +10,7 @@ MoonMonsB2:
db 10, CLEFAIRY db 10, CLEFAIRY
db 12, ZUBAT db 12, ZUBAT
db 12, CLEFAIRY db 12, CLEFAIRY
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
MansionMons1: MansionMons1:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 32, KOFFING db 32, KOFFING
db 30, KOFFING db 30, KOFFING
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 37, MUK db 37, MUK
db 39, WEEZING db 39, WEEZING
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
MansionMons2: MansionMons2:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 32, GROWLITHE db 32, GROWLITHE
db 34, KOFFING db 34, KOFFING
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 39, MUK db 39, MUK
db 37, WEEZING db 37, WEEZING
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
MansionMons3: MansionMons3:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 31, KOFFING db 31, KOFFING
db 33, GROWLITHE db 33, GROWLITHE
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 36, PONYTA db 36, PONYTA
db 42, WEEZING db 42, WEEZING
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
MansionMonsB1: MansionMonsB1:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 33, KOFFING db 33, KOFFING
db 31, KOFFING db 31, KOFFING
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 38, MAGMAR db 38, MAGMAR
db 42, WEEZING db 42, WEEZING
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,4 +1,6 @@
TowerMons1: TowerMons1:
db 0 ; grass encounter rate def_grass_wildmons 0 ; encounter rate
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,4 +1,6 @@
TowerMons2: TowerMons2:
db 0 ; grass encounter rate def_grass_wildmons 0 ; encounter rate
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
TowerMons3: TowerMons3:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 20, GASTLY db 20, GASTLY
db 21, GASTLY db 21, GASTLY
db 22, GASTLY db 22, GASTLY
@ -10,5 +10,7 @@ TowerMons3:
db 20, CUBONE db 20, CUBONE
db 22, CUBONE db 22, CUBONE
db 25, HAUNTER db 25, HAUNTER
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
TowerMons4: TowerMons4:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 20, GASTLY db 20, GASTLY
db 21, GASTLY db 21, GASTLY
db 22, GASTLY db 22, GASTLY
@ -10,5 +10,7 @@ TowerMons4:
db 20, CUBONE db 20, CUBONE
db 22, CUBONE db 22, CUBONE
db 24, GASTLY db 24, GASTLY
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
TowerMons5: TowerMons5:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 20, GASTLY db 20, GASTLY
db 21, GASTLY db 21, GASTLY
db 22, GASTLY db 22, GASTLY
@ -10,5 +10,7 @@ TowerMons5:
db 20, CUBONE db 20, CUBONE
db 22, CUBONE db 22, CUBONE
db 24, GASTLY db 24, GASTLY
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
TowerMons6: TowerMons6:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
db 21, GASTLY db 21, GASTLY
db 22, GASTLY db 22, GASTLY
db 23, GASTLY db 23, GASTLY
@ -10,5 +10,7 @@ TowerMons6:
db 22, CUBONE db 22, CUBONE
db 24, CUBONE db 24, CUBONE
db 28, HAUNTER db 28, HAUNTER
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
TowerMons7: TowerMons7:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
db 21, GASTLY db 21, GASTLY
db 22, GASTLY db 22, GASTLY
db 23, GASTLY db 23, GASTLY
@ -10,5 +10,7 @@ TowerMons7:
db 24, CUBONE db 24, CUBONE
db 28, HAUNTER db 28, HAUNTER
db 30, HAUNTER db 30, HAUNTER
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
PowerPlantMons: PowerPlantMons:
db 10 ; grass encounter rate def_grass_wildmons 10 ; encounter rate
db 21, VOLTORB db 21, VOLTORB
db 21, MAGNEMITE db 21, MAGNEMITE
db 20, PIKACHU db 20, PIKACHU
@ -16,5 +16,7 @@ IF DEF(_BLUE)
db 33, RAICHU db 33, RAICHU
db 36, RAICHU db 36, RAICHU
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
TunnelMonsB1: TunnelMonsB1:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
db 16, ZUBAT db 16, ZUBAT
db 17, ZUBAT db 17, ZUBAT
db 17, GEODUDE db 17, GEODUDE
@ -10,5 +10,7 @@ TunnelMonsB1:
db 17, MACHOP db 17, MACHOP
db 13, ONIX db 13, ONIX
db 15, ONIX db 15, ONIX
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
TunnelMonsB2: TunnelMonsB2:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
db 16, ZUBAT db 16, ZUBAT
db 17, ZUBAT db 17, ZUBAT
db 17, GEODUDE db 17, GEODUDE
@ -10,5 +10,7 @@ TunnelMonsB2:
db 17, ONIX db 17, ONIX
db 13, ONIX db 13, ONIX
db 18, GEODUDE db 18, GEODUDE
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route1Mons: Route1Mons:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 3, PIDGEY db 3, PIDGEY
db 3, RATTATA db 3, RATTATA
db 3, RATTATA db 3, RATTATA
@ -10,5 +10,7 @@ Route1Mons:
db 4, RATTATA db 4, RATTATA
db 4, PIDGEY db 4, PIDGEY
db 5, PIDGEY db 5, PIDGEY
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route10Mons: Route10Mons:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
db 16, VOLTORB db 16, VOLTORB
db 16, SPEAROW db 16, SPEAROW
db 14, VOLTORB db 14, VOLTORB
@ -21,5 +21,7 @@ IF DEF(_BLUE)
db 13, SANDSHREW db 13, SANDSHREW
db 17, SANDSHREW db 17, SANDSHREW
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route11Mons: Route11Mons:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 14, EKANS db 14, EKANS
db 15, SPEAROW db 15, SPEAROW
@ -21,5 +21,7 @@ ENDC
db 17, SPEAROW db 17, SPEAROW
db 11, DROWZEE db 11, DROWZEE
db 15, DROWZEE db 15, DROWZEE
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route12Mons: Route12Mons:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 24, ODDISH db 24, ODDISH
db 25, PIDGEY db 25, PIDGEY
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 28, WEEPINBELL db 28, WEEPINBELL
db 30, WEEPINBELL db 30, WEEPINBELL
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route13Mons: Route13Mons:
db 20 ; grass encounter rate def_grass_wildmons 20 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 24, ODDISH db 24, ODDISH
db 25, PIDGEY db 25, PIDGEY
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 28, WEEPINBELL db 28, WEEPINBELL
db 30, WEEPINBELL db 30, WEEPINBELL
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route14Mons: Route14Mons:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 24, ODDISH db 24, ODDISH
db 26, PIDGEY db 26, PIDGEY
@ -22,5 +22,7 @@ IF DEF(_BLUE)
ENDC ENDC
db 28, PIDGEOTTO db 28, PIDGEOTTO
db 30, PIDGEOTTO db 30, PIDGEOTTO
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route15Mons: Route15Mons:
db 15 ; grass encounter rate def_grass_wildmons 15 ; encounter rate
IF DEF(_RED) IF DEF(_RED)
db 24, ODDISH db 24, ODDISH
db 26, DITTO db 26, DITTO
@ -22,5 +22,7 @@ IF DEF(_BLUE)
ENDC ENDC
db 28, PIDGEOTTO db 28, PIDGEOTTO
db 30, PIDGEOTTO db 30, PIDGEOTTO
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route16Mons: Route16Mons:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 20, SPEAROW db 20, SPEAROW
db 22, SPEAROW db 22, SPEAROW
db 18, RATTATA db 18, RATTATA
@ -10,5 +10,7 @@ Route16Mons:
db 22, RATTATA db 22, RATTATA
db 23, RATICATE db 23, RATICATE
db 25, RATICATE db 25, RATICATE
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route17Mons: Route17Mons:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 20, SPEAROW db 20, SPEAROW
db 22, SPEAROW db 22, SPEAROW
db 25, RATICATE db 25, RATICATE
@ -10,5 +10,7 @@ Route17Mons:
db 29, RATICATE db 29, RATICATE
db 25, FEAROW db 25, FEAROW
db 27, FEAROW db 27, FEAROW
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route18Mons: Route18Mons:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 20, SPEAROW db 20, SPEAROW
db 22, SPEAROW db 22, SPEAROW
db 25, RATICATE db 25, RATICATE
@ -10,5 +10,7 @@ Route18Mons:
db 29, RATICATE db 29, RATICATE
db 27, FEAROW db 27, FEAROW
db 29, FEAROW db 29, FEAROW
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route2Mons: Route2Mons:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 3, RATTATA db 3, RATTATA
db 3, PIDGEY db 3, PIDGEY
db 4, PIDGEY db 4, PIDGEY
@ -19,5 +19,7 @@ IF DEF(_BLUE)
db 4, CATERPIE db 4, CATERPIE
db 5, CATERPIE db 5, CATERPIE
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route21Mons: Route21Mons:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 21, RATTATA db 21, RATTATA
db 23, PIDGEY db 23, PIDGEY
db 30, RATICATE db 30, RATICATE
@ -10,8 +10,9 @@ Route21Mons:
db 28, TANGELA db 28, TANGELA
db 30, TANGELA db 30, TANGELA
db 32, TANGELA db 32, TANGELA
end_grass_wildmons
db 5 ; water encounter rate def_water_wildmons 5 ; encounter rate
db 5, TENTACOOL db 5, TENTACOOL
db 10, TENTACOOL db 10, TENTACOOL
db 15, TENTACOOL db 15, TENTACOOL
@ -22,3 +23,4 @@ Route21Mons:
db 30, TENTACOOL db 30, TENTACOOL
db 35, TENTACOOL db 35, TENTACOOL
db 40, TENTACOOL db 40, TENTACOOL
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route22Mons: Route22Mons:
db 25 ; grass encounter rate def_grass_wildmons 25 ; encounter rate
db 3, RATTATA db 3, RATTATA
IF DEF(_RED) IF DEF(_RED)
db 3, NIDORAN_M db 3, NIDORAN_M
@ -23,5 +23,7 @@ IF DEF(_BLUE)
db 3, NIDORAN_M db 3, NIDORAN_M
db 4, NIDORAN_M db 4, NIDORAN_M
ENDC ENDC
end_grass_wildmons
db 0 ; water encounter rate def_water_wildmons 0 ; encounter rate
end_water_wildmons

Some files were not shown because too many files have changed in this diff Show more