pokered/constants/item_constants.asm

225 lines
6.1 KiB
NASM
Executable file

; item ids
; indexes for:
; - ItemNames (see data/items/names.asm)
; - ItemPrices (see data/items/prices.asm)
; - TechnicalMachinePrices (see data/items/tm_prices.asm)
; - KeyItemBitfield (see data/items/key_items.asm)
; - ItemUsePtrTable (see engine/items/item_effects.asm)
const_def
const NO_ITEM ; $00
const MASTER_BALL ; $01
const ULTRA_BALL ; $02
const GREAT_BALL ; $03
const POKE_BALL ; $04
const TOWN_MAP ; $05
const BICYCLE ; $06
const SURFBOARD ; $07 buggy?
const SAFARI_BALL ; $08
const POKEDEX ; $09
const MOON_STONE ; $0A
const ANTIDOTE ; $0B
const BURN_HEAL ; $0C
const ICE_HEAL ; $0D
const AWAKENING ; $0E
const PARLYZ_HEAL ; $0F
const FULL_RESTORE ; $10
const MAX_POTION ; $11
const HYPER_POTION ; $12
const SUPER_POTION ; $13
const POTION ; $14
const BOULDERBADGE ; $15
const CASCADEBADGE ; $16
SAFARI_BAIT EQU $15 ; overload
SAFARI_ROCK EQU $16 ; overload
const THUNDERBADGE ; $17
const RAINBOWBADGE ; $18
const SOULBADGE ; $19
const MARSHBADGE ; $1A
const VOLCANOBADGE ; $1B
const EARTHBADGE ; $1C
const ESCAPE_ROPE ; $1D
const REPEL ; $1E
const OLD_AMBER ; $1F
const FIRE_STONE ; $20
const THUNDER_STONE ; $21
const WATER_STONE ; $22
const HP_UP ; $23
const PROTEIN ; $24
const IRON ; $25
const CARBOS ; $26
const CALCIUM ; $27
const RARE_CANDY ; $28
const DOME_FOSSIL ; $29
const HELIX_FOSSIL ; $2A
const SECRET_KEY ; $2B
const UNUSED_ITEM ; $2C "?????"
const BIKE_VOUCHER ; $2D
const X_ACCURACY ; $2E
const LEAF_STONE ; $2F
const CARD_KEY ; $30
const NUGGET ; $31
const PP_UP_2 ; $32
const POKE_DOLL ; $33
const FULL_HEAL ; $34
const REVIVE ; $35
const MAX_REVIVE ; $36
const GUARD_SPEC ; $37
const SUPER_REPEL ; $38
const MAX_REPEL ; $39
const DIRE_HIT ; $3A
const COIN ; $3B
const FRESH_WATER ; $3C
const SODA_POP ; $3D
const LEMONADE ; $3E
const S_S_TICKET ; $3F
const GOLD_TEETH ; $40
const X_ATTACK ; $41
const X_DEFEND ; $42
const X_SPEED ; $43
const X_SPECIAL ; $44
const COIN_CASE ; $45
const OAKS_PARCEL ; $46
const ITEMFINDER ; $47
const SILPH_SCOPE ; $48
const POKE_FLUTE ; $49
const LIFT_KEY ; $4A
const EXP_ALL ; $4B
const OLD_ROD ; $4C
const GOOD_ROD ; $4D
const SUPER_ROD ; $4E
const PP_UP ; $4F
const ETHER ; $50
const MAX_ETHER ; $51
const ELIXER ; $52
const MAX_ELIXER ; $53
const FLOOR_B2F ; $54
const FLOOR_B1F ; $55
const FLOOR_1F ; $56
const FLOOR_2F ; $57
const FLOOR_3F ; $58
const FLOOR_4F ; $59
const FLOOR_5F ; $5A
const FLOOR_6F ; $5B
const FLOOR_7F ; $5C
const FLOOR_8F ; $5D
const FLOOR_9F ; $5E
const FLOOR_10F ; $5F
const FLOOR_11F ; $60
const FLOOR_B4F ; $61
const_next $C4
; HMs are defined before TMs, so the actual number of TM definitions
; is not yet available. The TM quantity is hard-coded here and must
; match the actual number below.
NUM_TMS EQU 50
add_hm: MACRO
; Defines three constants:
; - HM_\1: the item id, starting at $C4
; - \1_TMNUM: the learnable TM/HM flag, starting at 51
; - HM##_MOVE: alias for the move id, equal to the value of \1
; The first usage also defines HM01 as the first HM item id.
IF !DEF(HM01)
HM01 EQU const_value
__tmhm_value__ = NUM_TMS + 1
ENDC
HM_VALUE EQU __tmhm_value__ - NUM_TMS
IF HM_VALUE < 10
MOVE_FOR_HM EQUS "HM0{d:HM_VALUE}_MOVE"
ELSE
MOVE_FOR_HM EQUS "HM{d:HM_VALUE}_MOVE"
ENDC
MOVE_FOR_HM = \1
PURGE MOVE_FOR_HM
PURGE HM_VALUE
const HM_\1
\1_TMNUM EQU __tmhm_value__
__tmhm_value__ = __tmhm_value__ + 1
ENDM
add_hm CUT ; $C4
add_hm FLY ; $C5
add_hm SURF ; $C6
add_hm STRENGTH ; $C7
add_hm FLASH ; $C8
NUM_HMS EQU const_value - HM01
add_tm: MACRO
; Defines three constants:
; - TM_\1: the item id, starting at $C9
; - \1_TMNUM: the learnable TM/HM flag, starting at 1
; - TM##_MOVE: alias for the move id, equal to the value of \1
; The first usage also defines TM01 as the first TM item id.
IF !DEF(TM01)
TM01 EQU const_value
__tmhm_value__ = 1
ENDC
IF __tmhm_value__ < 10
MOVE_FOR_TM EQUS "TM0{d:__tmhm_value__}_MOVE"
ELSE
MOVE_FOR_TM EQUS "TM{d:__tmhm_value__}_MOVE"
ENDC
MOVE_FOR_TM = \1
PURGE MOVE_FOR_TM
const TM_\1
\1_TMNUM EQU __tmhm_value__
__tmhm_value__ = __tmhm_value__ + 1
ENDM
add_tm MEGA_PUNCH ; $C9
add_tm RAZOR_WIND ; $CA
add_tm SWORDS_DANCE ; $CB
add_tm WHIRLWIND ; $CC
add_tm MEGA_KICK ; $CD
add_tm TOXIC ; $CE
add_tm HORN_DRILL ; $CF
add_tm BODY_SLAM ; $D0
add_tm TAKE_DOWN ; $D1
add_tm DOUBLE_EDGE ; $D2
add_tm BUBBLEBEAM ; $D3
add_tm WATER_GUN ; $D4
add_tm ICE_BEAM ; $D5
add_tm BLIZZARD ; $D6
add_tm HYPER_BEAM ; $D7
add_tm PAY_DAY ; $D8
add_tm SUBMISSION ; $D9
add_tm COUNTER ; $DA
add_tm SEISMIC_TOSS ; $DB
add_tm RAGE ; $DC
add_tm MEGA_DRAIN ; $DD
add_tm SOLARBEAM ; $DE
add_tm DRAGON_RAGE ; $DF
add_tm THUNDERBOLT ; $E0
add_tm THUNDER ; $E1
add_tm EARTHQUAKE ; $E2
add_tm FISSURE ; $E3
add_tm DIG ; $E4
add_tm PSYCHIC_M ; $E5
add_tm TELEPORT ; $E6
add_tm MIMIC ; $E7
add_tm DOUBLE_TEAM ; $E8
add_tm REFLECT ; $E9
add_tm BIDE ; $EA
add_tm METRONOME ; $EB
add_tm SELFDESTRUCT ; $EC
add_tm EGG_BOMB ; $ED
add_tm FIRE_BLAST ; $EE
add_tm SWIFT ; $EF
add_tm SKULL_BASH ; $F0
add_tm SOFTBOILED ; $F1
add_tm DREAM_EATER ; $F2
add_tm SKY_ATTACK ; $F3
add_tm REST ; $F4
add_tm THUNDER_WAVE ; $F5
add_tm PSYWAVE ; $F6
add_tm EXPLOSION ; $F7
add_tm ROCK_SLIDE ; $F8
add_tm TRI_ATTACK ; $F9
add_tm SUBSTITUTE ; $FA
assert NUM_TMS == const_value - TM01, "NUM_TMS ({d:NUM_TMS}) does not match the number of add_tm definitions"
; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon.
; These fit in 7 bytes, with one unused bit left over.
__tmhm_value__ = NUM_TMS + NUM_HMS + 1
UNUSED_TMNUM EQU __tmhm_value__