-
Notifications
You must be signed in to change notification settings - Fork 274
/
Copy pathitem_constants.asm
224 lines (210 loc) · 5.99 KB
/
item_constants.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
; item ids
; indexes for:
; - ItemNames (see data/items/names.asm)
; - ItemPrices (see data/items/prices.asm)
; - TechnicalMachinePrices (see data/items/tm_prices.asm)
; - KeyItemFlags (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
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
DEF SAFARI_BAIT EQU BOULDERBADGE ; overload
const CASCADEBADGE ; $16
DEF SAFARI_ROCK EQU CASCADEBADGE ; 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 ITEM_2C ; $2C ; unused
const BIKE_VOUCHER ; $2D
const X_ACCURACY ; $2E
const LEAF_STONE ; $2F
const CARD_KEY ; $30
const NUGGET ; $31
const ITEM_32 ; $32 ; unused
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
DEF NUM_ITEMS EQU const_value - 1
; elevator floors use item IDs
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
DEF NUM_FLOORS EQU const_value - 1 - NUM_ITEMS
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.
DEF NUM_TMS EQU 50
DEF __tmhm_value__ = NUM_TMS + 1
MACRO add_tmnum
DEF \1_TMNUM EQU __tmhm_value__
DEF __tmhm_value__ += 1
ENDM
MACRO add_hm
; 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
const HM_\1
DEF HM_VALUE = __tmhm_value__ - NUM_TMS
DEF HM{02d:HM_VALUE}_MOVE EQU \1
add_tmnum \1
ENDM
DEF HM01 EQU const_value
add_hm CUT ; $C4
add_hm FLY ; $C5
add_hm SURF ; $C6
add_hm STRENGTH ; $C7
add_hm FLASH ; $C8
DEF NUM_HMS EQU const_value - HM01
DEF __tmhm_value__ = 1
MACRO add_tm
; 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
const TM_\1
DEF TM{02d:__tmhm_value__}_MOVE EQU \1
add_tmnum \1
ENDM
DEF TM01 EQU const_value
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"
DEF NUM_TM_HM EQU NUM_TMS + NUM_HMS
; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon.
; These fit in 7 bytes, with one unused bit left over.
DEF __tmhm_value__ = NUM_TM_HM + 1
DEF UNUSED_TMNUM EQU __tmhm_value__
DEF MAX_HIDDEN_ITEMS EQU 112
DEF MAX_HIDDEN_COINS EQU 16
; used for Time Capsule held item compatibility
DEF TWISTEDSPOON_GSC EQU $60
DEF LIGHT_BALL_GSC EQU $a3