summaryrefslogtreecommitdiff
path: root/engine/events/engine_flags.asm
diff options
context:
space:
mode:
authorentrpntr <entrpntr@gmail.com>2020-03-17 16:20:00 -0400
committerentrpntr <entrpntr@gmail.com>2020-03-17 16:20:00 -0400
commite67786a7a26ae7531301e928870b204043fb8a6a (patch)
tree579c9e876fa2cd46c13ecceed0e8f0358e347131 /engine/events/engine_flags.asm
parentc248b30aa7487b51a9182a833b1db29f14a7267c (diff)
Cleanup of files for banks $02 and $03 for main.asm.
Diffstat (limited to 'engine/events/engine_flags.asm')
-rwxr-xr-xengine/events/engine_flags.asm195
1 files changed, 195 insertions, 0 deletions
diff --git a/engine/events/engine_flags.asm b/engine/events/engine_flags.asm
new file mode 100755
index 00000000..9fa5f8c0
--- /dev/null
+++ b/engine/events/engine_flags.asm
@@ -0,0 +1,195 @@
+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.
+
+ ; location, bit
+ engine_flag ENGINE_RADIO_CARD
+ engine_flag ENGINE_MAP_CARD
+ engine_flag ENGINE_PHONE_CARD
+ engine_flag ENGINE_EXPN_CARD
+ engine_flag ENGINE_POKEGEAR
+
+ engine_flag ENGINE_DAY_CARE_MAN_HAS_EGG
+ engine_flag ENGINE_DAY_CARE_MAN_HAS_MON
+
+ engine_flag ENGINE_DAY_CARE_LADY_HAS_MON
+
+ engine_flag ENGINE_MOM_SAVING_MONEY
+ engine_flag ENGINE_DST
+
+ engine_flag ENGINE_0A
+
+ engine_flag ENGINE_POKEDEX
+ engine_flag ENGINE_UNOWN_DEX
+ engine_flag ENGINE_POKERUS
+ engine_flag ENGINE_ROCKET_SIGNAL_ON_CH20
+ engine_flag ENGINE_CREDITS_SKIP
+ engine_flag ENGINE_BUG_CONTEST_TIMER
+ engine_flag ENGINE_SAFARI_ZONE
+ engine_flag ENGINE_ROCKETS_IN_RADIO_TOWER
+ engine_flag ENGINE_BIKE_SHOP_CALL_ENABLED
+ engine_flag ENGINE_GIVE_POKERUS
+ engine_flag ENGINE_REACHED_GOLDENROD
+ engine_flag ENGINE_ROCKETS_IN_MAHOGANY
+
+ engine_flag ENGINE_STRENGTH_ACTIVE
+ engine_flag ENGINE_ALWAYS_ON_BIKE
+ engine_flag ENGINE_DOWNHILL
+
+ engine_flag ENGINE_ZEPHYRBADGE
+ engine_flag ENGINE_HIVEBADGE
+ engine_flag ENGINE_PLAINBADGE
+ engine_flag ENGINE_FOGBADGE
+ engine_flag ENGINE_MINERALBADGE
+ engine_flag ENGINE_STORMBADGE
+ engine_flag ENGINE_GLACIERBADGE
+ engine_flag ENGINE_RISINGBADGE
+
+ engine_flag ENGINE_BOULDERBADGE
+ engine_flag ENGINE_CASCADEBADGE
+ engine_flag ENGINE_THUNDERBADGE
+ engine_flag ENGINE_RAINBOWBADGE
+ engine_flag ENGINE_SOULBADGE
+ engine_flag ENGINE_MARSHBADGE
+ engine_flag ENGINE_VOLCANOBADGE
+ engine_flag ENGINE_EARTHBADGE
+
+ engine_flag ENGINE_UNLOCKED_UNOWNS_A_TO_K
+ engine_flag ENGINE_UNLOCKED_UNOWNS_L_TO_R
+ engine_flag ENGINE_UNLOCKED_UNOWNS_S_TO_W
+ engine_flag ENGINE_UNLOCKED_UNOWNS_X_TO_Z
+ engine_flag ENGINE_UNLOCKED_UNOWNS_UNUSED_4
+ engine_flag ENGINE_UNLOCKED_UNOWNS_UNUSED_5
+ engine_flag ENGINE_UNLOCKED_UNOWNS_UNUSED_6
+ engine_flag ENGINE_UNLOCKED_UNOWNS_UNUSED_7
+
+ engine_flag ENGINE_FLYPOINT_PLAYERS_HOUSE
+ engine_flag ENGINE_FLYPOINT_VIRIDIAN_POKECENTER
+ engine_flag ENGINE_FLYPOINT_PALLET
+ engine_flag ENGINE_FLYPOINT_VIRIDIAN
+ engine_flag ENGINE_FLYPOINT_PEWTER
+ engine_flag ENGINE_FLYPOINT_CERULEAN
+ engine_flag ENGINE_FLYPOINT_ROCK_TUNNEL
+ engine_flag ENGINE_FLYPOINT_VERMILION
+ engine_flag ENGINE_FLYPOINT_LAVENDER
+ engine_flag ENGINE_FLYPOINT_SAFFRON
+ engine_flag ENGINE_FLYPOINT_CELADON
+ engine_flag ENGINE_FLYPOINT_FUCHSIA
+ engine_flag ENGINE_FLYPOINT_CINNABAR
+ engine_flag ENGINE_FLYPOINT_INDIGO_PLATEAU
+ engine_flag ENGINE_FLYPOINT_NEW_BARK
+ engine_flag ENGINE_FLYPOINT_CHERRYGROVE
+ engine_flag ENGINE_FLYPOINT_VIOLET
+
+ engine_flag ENGINE_FLYPOINT_AZALEA
+ engine_flag ENGINE_FLYPOINT_CIANWOOD
+ engine_flag ENGINE_FLYPOINT_GOLDENROD
+ engine_flag ENGINE_FLYPOINT_OLIVINE
+ engine_flag ENGINE_FLYPOINT_ECRUTEAK
+ engine_flag ENGINE_FLYPOINT_MAHOGANY
+ engine_flag ENGINE_FLYPOINT_LAKE_OF_RAGE
+ engine_flag ENGINE_FLYPOINT_BLACKTHORN
+ engine_flag ENGINE_FLYPOINT_SILVER_CAVE
+
+ engine_flag ENGINE_FLYPOINT_UNUSED
+ engine_flag ENGINE_LUCKY_NUMBER_SHOW
+ engine_flag ENGINE_4E
+
+ engine_flag ENGINE_KURT_MAKING_BALLS
+ engine_flag ENGINE_DAILY_BUG_CONTEST
+ engine_flag ENGINE_SPECIAL_WILDDATA
+ engine_flag ENGINE_TIME_CAPSULE
+ engine_flag ENGINE_ALL_FRUIT_TREES
+ engine_flag ENGINE_GOT_SHUCKIE_TODAY
+ engine_flag ENGINE_GOLDENROD_UNDERGROUND_MERCHANT_CLOSED
+ engine_flag ENGINE_FOUGHT_IN_TRAINER_HALL_TODAY
+
+ engine_flag ENGINE_MT_MOON_SQUARE_CLEFAIRY
+ engine_flag ENGINE_UNION_CAVE_LAPRAS
+ engine_flag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
+ engine_flag ENGINE_GOLDENROD_DEPT_STORE_TM27_RETURN
+ engine_flag ENGINE_DAISYS_GROOMING
+ engine_flag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT