diff options
| author | entrpntr <entrpntr@gmail.com> | 2020-03-17 16:20:00 -0400 |
|---|---|---|
| committer | entrpntr <entrpntr@gmail.com> | 2020-03-17 16:20:00 -0400 |
| commit | e67786a7a26ae7531301e928870b204043fb8a6a (patch) | |
| tree | 579c9e876fa2cd46c13ecceed0e8f0358e347131 /engine/events/engine_flags.asm | |
| parent | c248b30aa7487b51a9182a833b1db29f14a7267c (diff) | |
Cleanup of files for banks $02 and $03 for main.asm.
Diffstat (limited to 'engine/events/engine_flags.asm')
| -rwxr-xr-x | engine/events/engine_flags.asm | 195 |
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 |
