summaryrefslogtreecommitdiff
path: root/engine/engine_flags.asm
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-19 12:53:07 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-19 12:53:07 -0400
commita036fe6042779f65be5f291f9ffd485663d61e08 (patch)
tree84fd0bc679dad36f7ff50e9eabe91d102b89c634 /engine/engine_flags.asm
parentbbbb70988a068ca26f47f9b08810949f7ea355cb (diff)
Engine Flags
Diffstat (limited to 'engine/engine_flags.asm')
-rwxr-xr-xengine/engine_flags.asm197
1 files changed, 197 insertions, 0 deletions
diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm
new file mode 100755
index 00000000..4f253336
--- /dev/null
+++ b/engine/engine_flags.asm
@@ -0,0 +1,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