forked from waicalibre/pokered-eo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
item_constants.asm
executable file
·225 lines (218 loc) · 6.07 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
225
; 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__