pokegold/engine/engine_flags.asm
2016-06-19 12:53:07 -04:00

198 lines
5.6 KiB
NASM
Executable File

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