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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
|
; toggleable objects for each map
ToggleableObjectMapPointers:
; entries correspond to map ids
table_width 2
FOR n, NUM_MAPS
IF DEF(TOGGLEMAP{n}) ; defined by `toggle_consts_for`
dw ToggleData{n}
ELSE
dw NoToggleData
ENDC
ENDR
assert_table_length NUM_MAPS
dw -1 ; end
NoToggleData:
db -1, -1, -1 ; end
DEF toggles_ok = 1
MACRO? toggleable_objects_for
DEF toggle_map_id = \1 ; map id
ToggleData{toggle_map_id}:
IF toggles_ok
ASSERT DEF(TOGGLEMAP{toggle_map_id}), \
"`toggleable_objects_for \1` is not defined"
DEF toggles_ok &= DEF(TOGGLEMAP{toggle_map_id})
IF toggles_ok
assert_table_length TOGGLEMAP{toggle_map_id}
DEF toggles_ok &= TOGGLEMAP{toggle_map_id} * 3 == @ - ToggleableObjectStates
ENDC
ENDC
ENDM
MACRO toggle_object_state
db toggle_map_id ; from previous `toggleable_objects_for`
db \1 ; object id
db \2 ; OFF/ON
ENDM
ToggleableObjectStates:
; entries correspond to TOGGLE_* constants (see constants/toggle_constants.asm)
table_width 3
toggleable_objects_for PALLET_TOWN
toggle_object_state PALLETTOWN_OAK, OFF
toggleable_objects_for VIRIDIAN_CITY
toggle_object_state VIRIDIANCITY_OLD_MAN_SLEEPY, ON
toggle_object_state VIRIDIANCITY_OLD_MAN, OFF
toggleable_objects_for PEWTER_CITY
toggle_object_state PEWTERCITY_SUPER_NERD1, ON
toggle_object_state PEWTERCITY_YOUNGSTER, ON
toggleable_objects_for CERULEAN_CITY
toggle_object_state CERULEANCITY_RIVAL, OFF
toggle_object_state CERULEANCITY_ROCKET, ON
toggle_object_state CERULEANCITY_GUARD1, OFF
toggle_object_state CERULEANCITY_SUPER_NERD3, ON
toggle_object_state CERULEANCITY_GUARD2, ON
toggleable_objects_for SAFFRON_CITY
toggle_object_state SAFFRONCITY_ROCKET1, ON
toggle_object_state SAFFRONCITY_ROCKET2, ON
toggle_object_state SAFFRONCITY_ROCKET3, ON
toggle_object_state SAFFRONCITY_ROCKET4, ON
toggle_object_state SAFFRONCITY_ROCKET5, ON
toggle_object_state SAFFRONCITY_ROCKET6, ON
toggle_object_state SAFFRONCITY_ROCKET7, ON
toggle_object_state SAFFRONCITY_SCIENTIST, OFF
toggle_object_state SAFFRONCITY_SILPH_WORKER_M, OFF
toggle_object_state SAFFRONCITY_SILPH_WORKER_F, OFF
toggle_object_state SAFFRONCITY_GENTLEMAN, OFF
toggle_object_state SAFFRONCITY_PIDGEOT, OFF
toggle_object_state SAFFRONCITY_ROCKER, OFF
toggle_object_state SAFFRONCITY_ROCKET8, ON
toggle_object_state SAFFRONCITY_ROCKET9, OFF
toggleable_objects_for ROUTE_2
toggle_object_state ROUTE2_MOON_STONE, ON
toggle_object_state ROUTE2_HP_UP, ON
toggleable_objects_for ROUTE_4
toggle_object_state ROUTE4_TM_WHIRLWIND, ON
toggleable_objects_for ROUTE_9
toggle_object_state ROUTE9_TM_TELEPORT, ON
toggleable_objects_for ROUTE_12
toggle_object_state ROUTE12_SNORLAX, ON
toggle_object_state ROUTE12_TM_PAY_DAY, ON
toggle_object_state ROUTE12_IRON, ON
toggleable_objects_for ROUTE_15
toggle_object_state ROUTE15_TM_RAGE, ON
toggleable_objects_for ROUTE_16
toggle_object_state ROUTE16_SNORLAX, ON
toggleable_objects_for ROUTE_22
toggle_object_state ROUTE22_RIVAL1, OFF
toggle_object_state ROUTE22_RIVAL2, OFF
toggleable_objects_for ROUTE_24
toggle_object_state ROUTE24_COOLTRAINER_M1, ON
toggle_object_state ROUTE24_TM_THUNDER_WAVE, ON
toggleable_objects_for ROUTE_25
toggle_object_state ROUTE25_TM_SEISMIC_TOSS, ON
toggleable_objects_for BLUES_HOUSE
toggle_object_state BLUESHOUSE_DAISY1, ON
toggle_object_state BLUESHOUSE_DAISY2, OFF
toggle_object_state BLUESHOUSE_TOWN_MAP, ON
toggleable_objects_for OAKS_LAB
toggle_object_state OAKSLAB_RIVAL, ON
toggle_object_state OAKSLAB_CHARMANDER_POKE_BALL, ON
toggle_object_state OAKSLAB_SQUIRTLE_POKE_BALL, ON
toggle_object_state OAKSLAB_BULBASAUR_POKE_BALL, ON
toggle_object_state OAKSLAB_OAK1, OFF
toggle_object_state OAKSLAB_POKEDEX1, ON
toggle_object_state OAKSLAB_POKEDEX2, ON
toggle_object_state OAKSLAB_OAK2, OFF
toggleable_objects_for VIRIDIAN_GYM
toggle_object_state VIRIDIANGYM_GIOVANNI, ON
toggle_object_state VIRIDIANGYM_REVIVE, ON
toggleable_objects_for MUSEUM_1F
toggle_object_state MUSEUM1F_OLD_AMBER, ON
toggleable_objects_for CERULEAN_CAVE_1F
toggle_object_state CERULEANCAVE1F_FULL_RESTORE, ON
toggle_object_state CERULEANCAVE1F_MAX_ELIXER, ON
toggle_object_state CERULEANCAVE1F_NUGGET, ON
toggleable_objects_for POKEMON_TOWER_2F
toggle_object_state POKEMONTOWER2F_RIVAL, ON
toggleable_objects_for POKEMON_TOWER_3F
toggle_object_state POKEMONTOWER3F_ESCAPE_ROPE, ON
toggleable_objects_for POKEMON_TOWER_4F
toggle_object_state POKEMONTOWER4F_ELIXER, ON
toggle_object_state POKEMONTOWER4F_AWAKENING, ON
toggle_object_state POKEMONTOWER4F_HP_UP, ON
toggleable_objects_for POKEMON_TOWER_5F
toggle_object_state POKEMONTOWER5F_NUGGET, ON
toggleable_objects_for POKEMON_TOWER_6F
toggle_object_state POKEMONTOWER6F_RARE_CANDY, ON
toggle_object_state POKEMONTOWER6F_X_ACCURACY, ON
toggleable_objects_for POKEMON_TOWER_7F
toggle_object_state POKEMONTOWER7F_ROCKET1, ON
toggle_object_state POKEMONTOWER7F_ROCKET2, ON
toggle_object_state POKEMONTOWER7F_ROCKET3, ON
toggle_object_state POKEMONTOWER7F_MR_FUJI, ON
toggleable_objects_for MR_FUJIS_HOUSE
toggle_object_state MRFUJISHOUSE_MR_FUJI, OFF
toggleable_objects_for CELADON_MANSION_ROOF_HOUSE
toggle_object_state CELADONMANSION_ROOF_HOUSE_EEVEE_POKEBALL, ON
toggleable_objects_for GAME_CORNER
toggle_object_state GAMECORNER_ROCKET, ON
toggleable_objects_for WARDENS_HOUSE
toggle_object_state WARDENSHOUSE_RARE_CANDY, ON
toggleable_objects_for POKEMON_MANSION_1F
toggle_object_state POKEMONMANSION1F_ESCAPE_ROPE, ON
toggle_object_state POKEMONMANSION1F_CARBOS, ON
toggleable_objects_for FIGHTING_DOJO
toggle_object_state FIGHTINGDOJO_HITMONLEE_POKE_BALL, ON
toggle_object_state FIGHTINGDOJO_HITMONCHAN_POKE_BALL, ON
toggleable_objects_for SILPH_CO_1F
toggle_object_state SILPHCO1F_LINK_RECEPTIONIST, OFF
toggleable_objects_for POWER_PLANT
toggle_object_state POWERPLANT_VOLTORB1, ON
toggle_object_state POWERPLANT_VOLTORB2, ON
toggle_object_state POWERPLANT_VOLTORB3, ON
toggle_object_state POWERPLANT_ELECTRODE1, ON
toggle_object_state POWERPLANT_VOLTORB4, ON
toggle_object_state POWERPLANT_VOLTORB5, ON
toggle_object_state POWERPLANT_ELECTRODE2, ON
toggle_object_state POWERPLANT_VOLTORB6, ON
toggle_object_state POWERPLANT_ZAPDOS, ON
toggle_object_state POWERPLANT_CARBOS, ON
toggle_object_state POWERPLANT_HP_UP, ON
toggle_object_state POWERPLANT_RARE_CANDY, ON
toggle_object_state POWERPLANT_TM_THUNDER, ON
toggle_object_state POWERPLANT_TM_REFLECT, ON
toggleable_objects_for VICTORY_ROAD_2F
toggle_object_state VICTORYROAD2F_MOLTRES, ON
toggle_object_state VICTORYROAD2F_TM_SUBMISSION, ON
toggle_object_state VICTORYROAD2F_FULL_HEAL, ON
toggle_object_state VICTORYROAD2F_TM_MEGA_KICK, ON
toggle_object_state VICTORYROAD2F_GUARD_SPEC, ON
toggle_object_state VICTORYROAD2F_BOULDER3, ON
toggleable_objects_for BILLS_HOUSE
toggle_object_state BILLSHOUSE_BILL_POKEMON, ON
toggle_object_state BILLSHOUSE_BILL1, OFF
toggle_object_state BILLSHOUSE_BILL2, OFF
toggleable_objects_for VIRIDIAN_FOREST
toggle_object_state VIRIDIANFOREST_ANTIDOTE, ON
toggle_object_state VIRIDIANFOREST_POTION, ON
toggle_object_state VIRIDIANFOREST_POKE_BALL, ON
toggleable_objects_for MT_MOON_1F
toggle_object_state MTMOON1F_POTION1, ON
toggle_object_state MTMOON1F_MOON_STONE, ON
toggle_object_state MTMOON1F_RARE_CANDY, ON
toggle_object_state MTMOON1F_ESCAPE_ROPE, ON
toggle_object_state MTMOON1F_POTION2, ON
toggle_object_state MTMOON1F_TM_WATER_GUN, ON
toggleable_objects_for MT_MOON_B2F
toggle_object_state MTMOONB2F_DOME_FOSSIL, ON
toggle_object_state MTMOONB2F_HELIX_FOSSIL, ON
toggle_object_state MTMOONB2F_HP_UP, ON
toggle_object_state MTMOONB2F_TM_MEGA_PUNCH, ON
toggleable_objects_for SS_ANNE_2F
toggle_object_state SSANNE2F_RIVAL, OFF
toggleable_objects_for SS_ANNE_1F_ROOMS
toggle_object_state SSANNE1FROOMS_TM_BODY_SLAM, ON
toggleable_objects_for SS_ANNE_2F_ROOMS
toggle_object_state SSANNE2FROOMS_MAX_ETHER, ON
toggle_object_state SSANNE2FROOMS_RARE_CANDY, ON
toggleable_objects_for SS_ANNE_B1F_ROOMS
toggle_object_state SSANNEB1FROOMS_ETHER, ON
toggle_object_state SSANNEB1FROOMS_TM_REST, ON
toggle_object_state SSANNEB1FROOMS_MAX_POTION, ON
toggleable_objects_for VICTORY_ROAD_3F
toggle_object_state VICTORYROAD3F_MAX_REVIVE, ON
toggle_object_state VICTORYROAD3F_TM_EXPLOSION, ON
toggle_object_state VICTORYROAD3F_BOULDER4, ON
toggleable_objects_for ROCKET_HIDEOUT_B1F
toggle_object_state ROCKETHIDEOUTB1F_ESCAPE_ROPE, ON
toggle_object_state ROCKETHIDEOUTB1F_HYPER_POTION, ON
toggleable_objects_for ROCKET_HIDEOUT_B2F
toggle_object_state ROCKETHIDEOUTB2F_MOON_STONE, ON
toggle_object_state ROCKETHIDEOUTB2F_NUGGET, ON
toggle_object_state ROCKETHIDEOUTB2F_TM_HORN_DRILL, ON
toggle_object_state ROCKETHIDEOUTB2F_SUPER_POTION, ON
toggleable_objects_for ROCKET_HIDEOUT_B3F
toggle_object_state ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE, ON
toggle_object_state ROCKETHIDEOUTB3F_RARE_CANDY, ON
toggleable_objects_for ROCKET_HIDEOUT_B4F
toggle_object_state ROCKETHIDEOUTB4F_GIOVANNI, ON
toggle_object_state ROCKETHIDEOUTB4F_HP_UP, ON
toggle_object_state ROCKETHIDEOUTB4F_TM_RAZOR_WIND, ON
toggle_object_state ROCKETHIDEOUTB4F_IRON, ON
toggle_object_state ROCKETHIDEOUTB4F_SILPH_SCOPE, OFF
toggle_object_state ROCKETHIDEOUTB4F_LIFT_KEY, OFF
toggleable_objects_for SILPH_CO_2F
toggle_object_state SILPHCO2F_SILPH_WORKER_F, ON
toggle_object_state SILPHCO2F_SCIENTIST1, ON
toggle_object_state SILPHCO2F_SCIENTIST2, ON
toggle_object_state SILPHCO2F_ROCKET1, ON
toggle_object_state SILPHCO2F_ROCKET2, ON
toggleable_objects_for SILPH_CO_3F
toggle_object_state SILPHCO3F_ROCKET, ON
toggle_object_state SILPHCO3F_SCIENTIST, ON
toggle_object_state SILPHCO3F_HYPER_POTION, ON
toggleable_objects_for SILPH_CO_4F
toggle_object_state SILPHCO4F_ROCKET1, ON
toggle_object_state SILPHCO4F_SCIENTIST, ON
toggle_object_state SILPHCO4F_ROCKET2, ON
toggle_object_state SILPHCO4F_FULL_HEAL, ON
toggle_object_state SILPHCO4F_MAX_REVIVE, ON
toggle_object_state SILPHCO4F_ESCAPE_ROPE, ON
toggleable_objects_for SILPH_CO_5F
toggle_object_state SILPHCO5F_ROCKET1, ON
toggle_object_state SILPHCO5F_SCIENTIST, ON
toggle_object_state SILPHCO5F_ROCKER, ON
toggle_object_state SILPHCO5F_ROCKET2, ON
toggle_object_state SILPHCO5F_TM_TAKE_DOWN, ON
toggle_object_state SILPHCO5F_PROTEIN, ON
toggle_object_state SILPHCO5F_CARD_KEY, ON
toggleable_objects_for SILPH_CO_6F
toggle_object_state SILPHCO6F_ROCKET1, ON
toggle_object_state SILPHCO6F_SCIENTIST, ON
toggle_object_state SILPHCO6F_ROCKET2, ON
toggle_object_state SILPHCO6F_HP_UP, ON
toggle_object_state SILPHCO6F_X_ACCURACY, ON
toggleable_objects_for SILPH_CO_7F
toggle_object_state SILPHCO7F_ROCKET1, ON
toggle_object_state SILPHCO7F_SCIENTIST, ON
toggle_object_state SILPHCO7F_ROCKET2, ON
toggle_object_state SILPHCO7F_ROCKET3, ON
toggle_object_state SILPHCO7F_RIVAL, ON
toggle_object_state SILPHCO7F_CALCIUM, ON
toggle_object_state SILPHCO7F_TM_SWORDS_DANCE, ON
toggle_object_state SILPHCO7F_UNUSED, ON
toggleable_objects_for SILPH_CO_8F
toggle_object_state SILPHCO8F_ROCKET1, ON
toggle_object_state SILPHCO8F_SCIENTIST, ON
toggle_object_state SILPHCO8F_ROCKET2, ON
toggleable_objects_for SILPH_CO_9F
toggle_object_state SILPHCO9F_ROCKET1, ON
toggle_object_state SILPHCO9F_SCIENTIST, ON
toggle_object_state SILPHCO9F_ROCKET2, ON
toggleable_objects_for SILPH_CO_10F
toggle_object_state SILPHCO10F_ROCKET, ON
toggle_object_state SILPHCO10F_SCIENTIST, ON
toggle_object_state SILPHCO10F_SILPH_WORKER_F, ON
toggle_object_state SILPHCO10F_TM_EARTHQUAKE, ON
toggle_object_state SILPHCO10F_RARE_CANDY, ON
toggle_object_state SILPHCO10F_CARBOS, ON
toggleable_objects_for SILPH_CO_11F
toggle_object_state SILPHCO11F_GIOVANNI, ON
toggle_object_state SILPHCO11F_ROCKET1, ON
toggle_object_state SILPHCO11F_ROCKET2, ON
toggleable_objects_for UNUSED_MAP_F4
toggle_object_state $02, ON ; unused
toggleable_objects_for POKEMON_MANSION_2F
toggle_object_state POKEMONMANSION2F_CALCIUM, ON
toggleable_objects_for POKEMON_MANSION_3F
toggle_object_state POKEMONMANSION3F_MAX_POTION, ON
toggle_object_state POKEMONMANSION3F_IRON, ON
toggleable_objects_for POKEMON_MANSION_B1F
toggle_object_state POKEMONMANSIONB1F_RARE_CANDY, ON
toggle_object_state POKEMONMANSIONB1F_FULL_RESTORE, ON
toggle_object_state POKEMONMANSIONB1F_TM_BLIZZARD, ON
toggle_object_state POKEMONMANSIONB1F_TM_SOLARBEAM, ON
toggle_object_state POKEMONMANSIONB1F_SECRET_KEY, ON
toggleable_objects_for SAFARI_ZONE_EAST
toggle_object_state SAFARIZONEEAST_FULL_RESTORE, ON
toggle_object_state SAFARIZONEEAST_MAX_RESTORE, ON
toggle_object_state SAFARIZONEEAST_CARBOS, ON
toggle_object_state SAFARIZONEEAST_TM_EGG_BOMB, ON
toggleable_objects_for SAFARI_ZONE_NORTH
toggle_object_state SAFARIZONENORTH_PROTEIN, ON
toggle_object_state SAFARIZONENORTH_TM_SKULL_BASH, ON
toggleable_objects_for SAFARI_ZONE_WEST
toggle_object_state SAFARIZONEWEST_MAX_POTION, ON
toggle_object_state SAFARIZONEWEST_TM_DOUBLE_TEAM, ON
toggle_object_state SAFARIZONEWEST_MAX_REVIVE, ON
toggle_object_state SAFARIZONEWEST_GOLD_TEETH, ON
toggleable_objects_for SAFARI_ZONE_CENTER
toggle_object_state SAFARIZONECENTER_NUGGET, ON
toggleable_objects_for CERULEAN_CAVE_2F
toggle_object_state CERULEANCAVE2F_PP_UP, ON
toggle_object_state CERULEANCAVE2F_ULTRA_BALL, ON
toggle_object_state CERULEANCAVE2F_FULL_RESTORE, ON
toggleable_objects_for CERULEAN_CAVE_B1F
toggle_object_state CERULEANCAVEB1F_MEWTWO, ON
toggle_object_state CERULEANCAVEB1F_ULTRA_BALL, ON
toggle_object_state CERULEANCAVEB1F_MAX_REVIVE, ON
toggleable_objects_for VICTORY_ROAD_1F
toggle_object_state VICTORYROAD1F_TM_SKY_ATTACK, ON
toggle_object_state VICTORYROAD1F_RARE_CANDY, ON
toggleable_objects_for CHAMPIONS_ROOM
toggle_object_state CHAMPIONSROOM_OAK, OFF
toggleable_objects_for SEAFOAM_ISLANDS_1F
toggle_object_state SEAFOAMISLANDS1F_BOULDER1, ON
toggle_object_state SEAFOAMISLANDS1F_BOULDER2, ON
toggleable_objects_for SEAFOAM_ISLANDS_B1F
toggle_object_state SEAFOAMISLANDSB1F_BOULDER1, OFF
toggle_object_state SEAFOAMISLANDSB1F_BOULDER2, OFF
toggleable_objects_for SEAFOAM_ISLANDS_B2F
toggle_object_state SEAFOAMISLANDSB2F_BOULDER1, OFF
toggle_object_state SEAFOAMISLANDSB2F_BOULDER2, OFF
toggleable_objects_for SEAFOAM_ISLANDS_B3F
toggle_object_state SEAFOAMISLANDSB3F_BOULDER2, ON
toggle_object_state SEAFOAMISLANDSB3F_BOULDER3, ON
toggle_object_state SEAFOAMISLANDSB3F_BOULDER5, OFF
toggle_object_state SEAFOAMISLANDSB3F_BOULDER6, OFF
toggleable_objects_for SEAFOAM_ISLANDS_B4F
toggle_object_state SEAFOAMISLANDSB4F_BOULDER1, OFF
toggle_object_state SEAFOAMISLANDSB4F_BOULDER2, OFF
toggle_object_state SEAFOAMISLANDSB4F_ARTICUNO, ON
assert_table_length NUM_TOGGLEABLE_OBJECTS
db -1, 1, ON ; end
|