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
|
EngineFlagAction:: ; c01b
; Do action b on engine flag de
;
; b = 0: reset flag
; = 1: set flag
; > 1: check flag, result in c
;
; Setting/resetting does not return a result.
; 16-bit flag ids are considered invalid, but it's nice
; to know that the infrastructure is there.
ld a, d
cp 0
jr z, .ceiling
jr c, .read ; cp 0 can't set carry!
jr .invalid
; There are only $a2 engine flags, so
; anything beyond that is invalid too.
.ceiling
ld a, e
cp NUM_ENGINE_FLAGS
jr c, .read
; Invalid flags are treated as flag 00.
.invalid
xor a
ld e, a
ld d, a
; Get this flag's location.
.read
ld hl, EngineFlags
; location
add hl, de
add hl, de
; bit
add hl, de
; location
ld e, [hl]
inc hl
ld d, [hl]
inc hl
; bit
ld c, [hl]
; What are we doing with this flag?
ld a, b
cp 1
jr c, .reset ; b = 0
jr z, .set ; b = 1
; Return the given flag in c.
.check
ld a, [de]
and c
ld c, a
ret
; Set the given flag.
.set
ld a, [de]
or c
ld [de], a
ret
; Reset the given flag.
.reset
ld a, c
cpl ; AND all bits except the one in question
ld c, a
ld a, [de]
and c
ld [de], a
ret
; 404d
EngineFlags:
; All locations are in WRAM bank 1.
engine_flag: MACRO
dwb \1, 1 << \2
ENDM
; location, bit
engine_flag wPokegearFlags, 1 ; radio card ; $0
engine_flag wPokegearFlags, 0 ; map card
engine_flag wPokegearFlags, 2 ; phone card
engine_flag wPokegearFlags, 3 ; expn card
engine_flag wPokegearFlags, 7 ; on/off
engine_flag wDayCareMan, 6 ; egg is ready
engine_flag wDayCareMan, 0 ; monster 1 in daycare
engine_flag wDaycareLady, 0 ; monster 2 in daycare
engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
engine_flag wMomSavingMoney, 7 ; dst
engine_flag wUnusedTwoDayTimerOn, 0 ; unused
engine_flag wStatusFlags, 0 ; pokedex
engine_flag wStatusFlags, 1 ; unown dex
engine_flag wStatusFlags, 3 ; pokerus
engine_flag wStatusFlags, 4 ; rocket signal on ch20
engine_flag wStatusFlags, 6 ; credits skip
engine_flag wStatusFlags2, 2 ; bug contest timer ; $10
engine_flag wStatusFlags2, 1 ; safari zone?
engine_flag wStatusFlags2, 0 ; rockets in radio tower
engine_flag wStatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd)
engine_flag wStatusFlags2, 5 ; give pokerus
engine_flag wStatusFlags2, 6 ; berry -> berry juice when trading?
engine_flag wStatusFlags2, 7 ; rockets in mahogany
engine_flag wBikeFlags, 0 ; strength active
engine_flag wBikeFlags, 1 ; always on bike (cant surf) ; $18
engine_flag wBikeFlags, 2 ; downhill (cycling road)
engine_flag wJohtoBadges, 0 ; zephyrbadge
engine_flag wJohtoBadges, 1 ; hivebadge
engine_flag wJohtoBadges, 2 ; plainbadge
engine_flag wJohtoBadges, 3 ; fogbadge
engine_flag wJohtoBadges, 4 ; mineralbadge
engine_flag wJohtoBadges, 5 ; stormbadge
engine_flag wJohtoBadges, 6 ; glacierbadge ; $20
engine_flag wJohtoBadges, 7 ; risingbadge
engine_flag wKantoBadges, 0 ; boulderbadge
engine_flag wKantoBadges, 1 ; cascadebadge
engine_flag wKantoBadges, 2 ; thunderbadge
engine_flag wKantoBadges, 3 ; rainbowbadge
engine_flag wKantoBadges, 4 ; soulbadge
engine_flag wKantoBadges, 5 ; marshbadge
engine_flag wKantoBadges, 6 ; volcanobadge ; $28
engine_flag wKantoBadges, 7 ; earthbadge
engine_flag wUnlockedUnowns, 0
engine_flag wUnlockedUnowns, 1
engine_flag wUnlockedUnowns, 2
engine_flag wUnlockedUnowns, 3
engine_flag wUnlockedUnowns, 4
engine_flag wUnlockedUnowns, 5
engine_flag wUnlockedUnowns, 6 ; $30
engine_flag wUnlockedUnowns, 7
engine_flag wVisitedSpawns, 0 ; your house
engine_flag wVisitedSpawns, 1 ; viridian pokecenter
engine_flag wVisitedSpawns, 2 ; pallet
engine_flag wVisitedSpawns, 3 ; viridian
engine_flag wVisitedSpawns, 4 ; pewter
engine_flag wVisitedSpawns, 5 ; cerulean
engine_flag wVisitedSpawns, 6 ; rock tunnel ; $38
engine_flag wVisitedSpawns, 7 ; vermilion
engine_flag wVisitedSpawns + 1, 0 ; lavender
engine_flag wVisitedSpawns + 1, 1 ; saffron
engine_flag wVisitedSpawns + 1, 2 ; celadon
engine_flag wVisitedSpawns + 1, 3 ; fuchsia
engine_flag wVisitedSpawns + 1, 4 ; cinnabar
engine_flag wVisitedSpawns + 1, 5 ; indigo plateau
engine_flag wVisitedSpawns + 1, 6 ; new bark ; $40
engine_flag wVisitedSpawns + 1, 7 ; cherrygrove
engine_flag wVisitedSpawns + 2, 0 ; violet
; union cave
engine_flag wVisitedSpawns + 2, 2 ; azalea
engine_flag wVisitedSpawns + 2, 3 ; cianwood
engine_flag wVisitedSpawns + 2, 4 ; goldenrod
engine_flag wVisitedSpawns + 2, 5 ; olivine
engine_flag wVisitedSpawns + 2, 6 ; ecruteak
engine_flag wVisitedSpawns + 2, 7 ; mahogany ; $48
engine_flag wVisitedSpawns + 3, 0 ; lake of rage
engine_flag wVisitedSpawns + 3, 1 ; blackthorn
engine_flag wVisitedSpawns + 3, 2 ; silver cave
; fast ship
engine_flag wVisitedSpawns + 3, 4 ; unused
engine_flag wLuckyNumberShowFlag, 0
engine_flag wStatusFlags2, 3
engine_flag wDailyFlags, 0 ; kurt making balls
engine_flag wDailyFlags, 1 ; did bug catching contest today ; $50
engine_flag wDailyFlags, 2 ; special wilddata?
engine_flag wDailyFlags, 3 ; time capsule (24h wait)
engine_flag wDailyFlags, 4 ; all fruit trees
engine_flag wDailyFlags, 5 ; shuckle given
engine_flag wDailyFlags, 6 ; goldenrod underground merchant closed
engine_flag wDailyFlags, 7 ; fought in trainer hall today
engine_flag wWeeklyFlags, 0 ; mt moon square clefairy
engine_flag wWeeklyFlags, 1 ; union cave lapras ; $58
engine_flag wWeeklyFlags, 2 ; goldenrod underground haircut used
engine_flag wWeeklyFlags, 3 ; goldenrod mall happiness event floor05 person07
engine_flag wWeeklyFlags, 4 ; tea in blues house
engine_flag wWeeklyFlags, 5 ; indigo plateau rival fight
|