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.
table_width 2
dw $F82C ; C_
dw $F89D ; C#
dw $F907 ; D_
@ -12,3 +13,4 @@
dw $FB58 ; A_
dw $FB9B ; A#
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/serial_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/pokedex_constants.asm"
INCLUDE "constants/pokemon_data_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/sprite_constants.asm"
INCLUDE "constants/sprite_data_constants.asm"

View file

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

View file

@ -1,9 +1,36 @@
MAX_LEVEL EQU 100
NUM_MOVES EQU 4
NUM_STATS EQU 5
NUM_STAT_MODS EQU 8
NUM_DVS EQU 2
NUM_MOVES EQU 4
; VitaminStats indexes (see data/battle/stat_names.asm)
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
BIT_TEST_BATTLE EQU 0

View file

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

View file

@ -37,3 +37,4 @@ REDRAW_ROW EQU 2
const TILEMAP_GENGAR_INTRO_3
const TILEMAP_GAME_BOY
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_2 ; E2
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 ELIXER ; $52
const MAX_ELIXER ; $53
NUM_ITEMS EQU const_value - 1
; elevator floors use item IDs
const FLOOR_B2F ; $54
const FLOOR_B1F ; $55
const FLOOR_1F ; $56
@ -106,6 +109,7 @@ SAFARI_ROCK EQU $16 ; overload
const FLOOR_10F ; $5F
const FLOOR_11F ; $60
const FLOOR_B4F ; $61
NUM_FLOORS EQU const_value - 1 - NUM_ITEMS
const_next $C4

View file

@ -266,6 +266,7 @@ FIRST_INDOOR_MAP EQU const_value
mapconst LORELEIS_ROOM, 6, 5 ; $F5
mapconst BRUNOS_ROOM, 6, 5 ; $F6
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
; 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 HEAL_CANCEL_MENU ; 6
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
CHOSE_MENU_ITEM EQU 1 ; pressed A

View file

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

View file

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

View file

@ -91,3 +91,4 @@
const LEECH_SEED_EFFECT ; $54
const SPLASH_EFFECT ; $55
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_CAVE ; $23
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
MONS_PER_BOX EQU 20
@ -39,3 +65,8 @@ EVOLUTION_SIZE EQU 4
const GROWTH_MEDIUM_SLOW
const GROWTH_FAST
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_CRINKLES
const TRADE_FOR_SPOT
NUM_NPC_TRADES EQU const_value
; in game trade dialog sets
; 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_2 ; $47
const SPRITE_GAMBLER_ASLEEP ; $48
NUM_SPRITES EQU const_value - 1

View file

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

View file

@ -62,3 +62,4 @@ ENDM
trainer_const CHANNELER ; $2D
trainer_const AGATHA ; $2E
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 ICE ; $19
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:
db "ATTACK@"
db "DEFENSE@"
db "SPEED@"
db "SPECIAL@"
db "ACCURACY@"
db "EVADE@"
; Stats that vitamins can raise or lower
VitaminStats:
list_start VitaminStats
li "HEALTH"
li "ATTACK"
li "DEFENSE"
li "SPEED"
li "SPECIAL"
assert_list_length NUM_STATS

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -11,9 +11,11 @@ ENDM
GrowthRateTable:
; 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 3, 4, 10, 0, 30 ; Slightly Fast
growth_rate 3, 4, 20, 0, 70 ; Slightly Slow
growth_rate 6, 5, -15, 100, 140 ; Medium Slow
growth_rate 4, 5, 0, 0, 0 ; Fast
growth_rate 5, 4, 0, 0, 0 ; Slow
assert_table_length NUM_GROWTH_RATES

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,6 @@
; see also MapHeaderBanks
MapHeaderPointers::
table_width 2, MapHeaderPointers
dw PalletTown_h
dw ViridianCity_h
dw PewterCity_h
@ -247,4 +248,5 @@ MapHeaderPointers::
dw SilphCo2F_h ; UNUSED_MAP_F4
dw LoreleisRoom_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@"
ViridianCityName: db "VIRIDIAN CITY@"
PewterCityName: db "PEWTER CITY@"

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,3 @@
Moves:
; Characteristics of each move.
move: MACRO
db \1 ; animation (interchangeable with move id)
db \2 ; effect
@ -10,8 +7,10 @@ move: MACRO
db \6 ; pp
ENDM
Moves:
; Characteristics of each move.
table_width MOVE_LENGTH, Moves
move POUND, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35
MoveEnd:
move KARATE_CHOP, NO_ADDITIONAL_EFFECT, 50, NORMAL, 100, 25
move DOUBLESLAP, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 10
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 SUBSTITUTE, SUBSTITUTE_EFFECT, 0, NORMAL, 100, 10
move STRUGGLE, RECOIL_EFFECT, 50, NORMAL, 100, 10
assert_table_length NUM_ATTACKS

View file

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

View file

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

View file

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

View file

@ -1,7 +1,6 @@
BaseStats::
MonBaseStats::
table_width BASE_DATA_SIZE, BaseStats
INCLUDE "data/pokemon/base_stats/bulbasaur.asm"
MonBaseStatsEnd::
INCLUDE "data/pokemon/base_stats/ivysaur.asm"
INCLUDE "data/pokemon/base_stats/venusaur.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/dragonite.asm"
INCLUDE "data/pokemon/base_stats/mewtwo.asm"
BaseStatsEnd::
assert BaseStatsEnd - BaseStats == (wMonHeaderEnd - wMonHeader) * (NUM_POKEMON - 1) ; discount Mew
assert_table_length NUM_POKEMON - 1 ; discount Mew

View file

@ -4,6 +4,7 @@ mon_cry: MACRO
ENDM
CryData::
table_width 3, CryData
; base cry, pitch, length
mon_cry SFX_CRY_11, $00, $80 ; Rhydon
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_25, $44, $20 ; Weepinbell
mon_cry SFX_CRY_25, $66, $CC ; Victreebel
assert_table_length NUM_POKEMON_INDEXES

View file

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

View file

@ -1,4 +1,5 @@
PokedexOrder:
table_width 1, PokedexOrder
db DEX_RHYDON
db DEX_KANGASKHAN
db DEX_NIDORAN_M
@ -189,3 +190,4 @@ PokedexOrder:
db DEX_BELLSPROUT
db DEX_WEEPINBELL
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
EvosMovesPointerTable:
table_width 2, EvosMovesPointerTable
dw RhydonEvosMoves
dw KangaskhanEvosMoves
dw NidoranMEvosMoves
@ -192,6 +193,7 @@ EvosMovesPointerTable:
dw BellsproutEvosMoves
dw WeepinbellEvosMoves
dw VictreebelEvosMoves
assert_table_length NUM_POKEMON_INDEXES
RhydonEvosMoves:
; Evolutions

View file

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

View file

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

View file

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

View file

@ -1,5 +1,6 @@
SuperPalettes:
; 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, 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
@ -49,3 +50,4 @@ ENDC
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, 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
SpriteSheetPointerTable:
table_width 4, SpriteSheetPointerTable
; graphics, tile count
overworld_sprite RedSprite, 12 ; SPRITE_RED
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_2
overworld_sprite GamblerAsleepSprite, 4 ; SPRITE_GAMBLER_ASLEEP
assert_table_length NUM_SPRITES

View file

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

View file

@ -7,6 +7,7 @@ tileset: MACRO
ENDM
Tilesets:
table_width 12, Tilesets
; block, gfx, coll, 3 counter tiles, grass tile, animations
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
@ -32,3 +33,4 @@ Tilesets:
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 Plateau_Block, Plateau_GFX, Plateau_Coll, $FF,$FF,$FF, $45, TILEANIM_WATER
assert_table_length NUM_TILESETS

View file

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

View file

@ -1,4 +1,5 @@
TrainerAIPointers:
table_width 3, 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
@ -50,3 +51,4 @@ TrainerAIPointers:
dbw 3, GenericAI
dbw 2, AgathaAI ; agatha
dbw 1, LanceAI ; lance
assert_table_length NUM_TRAINERS

View file

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

View file

@ -269,7 +269,7 @@ BikerData:
; Route 17
; From https://www.smogon.com/smog/issue27/glitch:
; 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.
; (BaseStats = $43DE and BANK(BaseStats) = $0E.)
; Finally, PokedexOrder lists 0 as the dex ID for every MissingNo.

View file

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

View file

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

View file

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

View file

@ -1,5 +1,5 @@
DungeonMons1:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 46, GOLBAT
db 46, HYPNO
db 46, MAGNETON
@ -15,5 +15,7 @@ ENDC
db 52, PARASECT
db 53, RAICHU
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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
db 51, DODRIO
db 51, VENOMOTH
db 51, KADABRA
@ -10,5 +10,7 @@ DungeonMons2:
db 54, WIGGLYTUFF
db 55, 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:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 55, RHYDON
db 55, MAROWAK
db 55, ELECTRODE
@ -15,5 +15,7 @@ ENDC
db 65, DITTO
db 63, 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:
db 20 ; grass encounter rate
def_grass_wildmons 20 ; encounter rate
db 18, DIGLETT
db 19, DIGLETT
db 17, DIGLETT
@ -10,5 +10,7 @@ CaveMons:
db 22, DIGLETT
db 29, 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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 8, ZUBAT
db 7, ZUBAT
db 9, ZUBAT
@ -10,5 +10,7 @@ MoonMons1:
db 8, PARAS
db 11, ZUBAT
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 8, ZUBAT
db 7, ZUBAT
db 7, GEODUDE
@ -10,5 +10,7 @@ MoonMonsB1:
db 11, ZUBAT
db 9, CLEFAIRY
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 9, ZUBAT
db 9, GEODUDE
db 10, ZUBAT
@ -10,5 +10,7 @@ MoonMonsB2:
db 10, CLEFAIRY
db 12, ZUBAT
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
IF DEF(_RED)
db 32, KOFFING
db 30, KOFFING
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 37, MUK
db 39, WEEZING
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
IF DEF(_RED)
db 32, GROWLITHE
db 34, KOFFING
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 39, MUK
db 37, WEEZING
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
IF DEF(_RED)
db 31, KOFFING
db 33, GROWLITHE
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 36, PONYTA
db 42, WEEZING
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
IF DEF(_RED)
db 33, KOFFING
db 31, KOFFING
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 38, MAGMAR
db 42, WEEZING
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:
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:
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 20, GASTLY
db 21, GASTLY
db 22, GASTLY
@ -10,5 +10,7 @@ TowerMons3:
db 20, CUBONE
db 22, CUBONE
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 20, GASTLY
db 21, GASTLY
db 22, GASTLY
@ -10,5 +10,7 @@ TowerMons4:
db 20, CUBONE
db 22, CUBONE
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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 20, GASTLY
db 21, GASTLY
db 22, GASTLY
@ -10,5 +10,7 @@ TowerMons5:
db 20, CUBONE
db 22, CUBONE
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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
db 21, GASTLY
db 22, GASTLY
db 23, GASTLY
@ -10,5 +10,7 @@ TowerMons6:
db 22, CUBONE
db 24, CUBONE
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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
db 21, GASTLY
db 22, GASTLY
db 23, GASTLY
@ -10,5 +10,7 @@ TowerMons7:
db 24, CUBONE
db 28, 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:
db 10 ; grass encounter rate
def_grass_wildmons 10 ; encounter rate
db 21, VOLTORB
db 21, MAGNEMITE
db 20, PIKACHU
@ -16,5 +16,7 @@ IF DEF(_BLUE)
db 33, RAICHU
db 36, RAICHU
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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
db 16, ZUBAT
db 17, ZUBAT
db 17, GEODUDE
@ -10,5 +10,7 @@ TunnelMonsB1:
db 17, MACHOP
db 13, 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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
db 16, ZUBAT
db 17, ZUBAT
db 17, GEODUDE
@ -10,5 +10,7 @@ TunnelMonsB2:
db 17, ONIX
db 13, ONIX
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:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 3, PIDGEY
db 3, RATTATA
db 3, RATTATA
@ -10,5 +10,7 @@ Route1Mons:
db 4, RATTATA
db 4, 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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
db 16, VOLTORB
db 16, SPEAROW
db 14, VOLTORB
@ -21,5 +21,7 @@ IF DEF(_BLUE)
db 13, SANDSHREW
db 17, SANDSHREW
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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
IF DEF(_RED)
db 14, EKANS
db 15, SPEAROW
@ -21,5 +21,7 @@ ENDC
db 17, SPEAROW
db 11, 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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
IF DEF(_RED)
db 24, ODDISH
db 25, PIDGEY
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 28, WEEPINBELL
db 30, WEEPINBELL
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:
db 20 ; grass encounter rate
def_grass_wildmons 20 ; encounter rate
IF DEF(_RED)
db 24, ODDISH
db 25, PIDGEY
@ -24,5 +24,7 @@ IF DEF(_BLUE)
db 28, WEEPINBELL
db 30, WEEPINBELL
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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
IF DEF(_RED)
db 24, ODDISH
db 26, PIDGEY
@ -22,5 +22,7 @@ IF DEF(_BLUE)
ENDC
db 28, 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:
db 15 ; grass encounter rate
def_grass_wildmons 15 ; encounter rate
IF DEF(_RED)
db 24, ODDISH
db 26, DITTO
@ -22,5 +22,7 @@ IF DEF(_BLUE)
ENDC
db 28, 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:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 20, SPEAROW
db 22, SPEAROW
db 18, RATTATA
@ -10,5 +10,7 @@ Route16Mons:
db 22, RATTATA
db 23, 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:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 20, SPEAROW
db 22, SPEAROW
db 25, RATICATE
@ -10,5 +10,7 @@ Route17Mons:
db 29, RATICATE
db 25, 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:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 20, SPEAROW
db 22, SPEAROW
db 25, RATICATE
@ -10,5 +10,7 @@ Route18Mons:
db 29, RATICATE
db 27, 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:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 3, RATTATA
db 3, PIDGEY
db 4, PIDGEY
@ -19,5 +19,7 @@ IF DEF(_BLUE)
db 4, CATERPIE
db 5, CATERPIE
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:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 21, RATTATA
db 23, PIDGEY
db 30, RATICATE
@ -10,8 +10,9 @@ Route21Mons:
db 28, TANGELA
db 30, TANGELA
db 32, TANGELA
end_grass_wildmons
db 5 ; water encounter rate
def_water_wildmons 5 ; encounter rate
db 5, TENTACOOL
db 10, TENTACOOL
db 15, TENTACOOL
@ -22,3 +23,4 @@ Route21Mons:
db 30, TENTACOOL
db 35, TENTACOOL
db 40, TENTACOOL
end_water_wildmons

View file

@ -1,5 +1,5 @@
Route22Mons:
db 25 ; grass encounter rate
def_grass_wildmons 25 ; encounter rate
db 3, RATTATA
IF DEF(_RED)
db 3, NIDORAN_M
@ -23,5 +23,7 @@ IF DEF(_BLUE)
db 3, NIDORAN_M
db 4, NIDORAN_M
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