EngineFlagAction:: ; 80430 ; 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 ; 80462 EngineFlags: ; 80462 ; All locations are in WRAM bank 1. engine_flag: MACRO dwb \1, 1 << \2 ENDM ; location, bit ; pokegear 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 ; wDaycareMan, 7 ; daycare 1 on engine_flag wDaycareMan, 6 ; egg is ready ; wDaycareMan, 5 ; monster 1 and 2 are compatible engine_flag wDaycareMan, 0 ; monster 1 in daycare ; wDaycareLady, 7 = daycare 2 on engine_flag wDaycareLady, 0 ; monster 2 in daycare engine_flag wMomSavingMoney, 0 ; mom saving money ; $8 engine_flag wMomSavingMoney, 7 ; dst engine_flag wdc39, 0 ; unused, possibly related to a 2-day timer engine_flag StatusFlags, 0 ; pokedex engine_flag StatusFlags, 1 ; unown dex engine_flag StatusFlags, 3 ; pokerus engine_flag StatusFlags, 4 ; rocket signal on ch20 engine_flag StatusFlags, 6 ; credits skip engine_flag StatusFlags, 7 ; bug contest on ; $10 engine_flag StatusFlags2, 2 ; bug contest timer engine_flag StatusFlags2, 1 ; safari zone? engine_flag StatusFlags2, 0 ; rockets in radio tower engine_flag StatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd) engine_flag StatusFlags2, 5 ; give pokerus engine_flag StatusFlags2, 6 ; berry -> berry juice when trading? engine_flag StatusFlags2, 7 ; rockets in mahogany engine_flag BikeFlags, 0 ; strength active ; $18 engine_flag BikeFlags, 1 ; always on bike (cant surf) engine_flag BikeFlags, 2 ; downhill (cycling road) engine_flag JohtoBadges, 0 ; zephyrbadge engine_flag JohtoBadges, 1 ; hivebadge engine_flag JohtoBadges, 2 ; plainbadge engine_flag JohtoBadges, 3 ; fogbadge engine_flag JohtoBadges, 4 ; mineralbadge engine_flag JohtoBadges, 5 ; stormbadge ; $20 engine_flag JohtoBadges, 6 ; glacierbadge engine_flag JohtoBadges, 7 ; risingbadge engine_flag KantoBadges, 0 ; boulderbadge engine_flag KantoBadges, 1 ; cascadebadge engine_flag KantoBadges, 2 ; thunderbadge engine_flag KantoBadges, 3 ; rainbowbadge engine_flag KantoBadges, 4 ; soulbadge engine_flag KantoBadges, 5 ; marshbadge ; $28 engine_flag KantoBadges, 6 ; volcanobadge engine_flag KantoBadges, 7 ; earthbadge ; unown sets engine_flag UnlockedUnowns, 0 ; 1 engine_flag UnlockedUnowns, 1 ; 2 engine_flag UnlockedUnowns, 2 ; 3 engine_flag UnlockedUnowns, 3 ; 4 engine_flag UnlockedUnowns, 4 ; 5 engine_flag UnlockedUnowns, 5 ; 6 ; $30 engine_flag UnlockedUnowns, 6 ; 7 engine_flag UnlockedUnowns, 7 ; 8 ; fly engine_flag VisitedSpawns, 0 ; your house engine_flag VisitedSpawns, 1 ; viridian pokecenter engine_flag VisitedSpawns, 2 ; pallet engine_flag VisitedSpawns, 3 ; viridian engine_flag VisitedSpawns, 4 ; pewter engine_flag VisitedSpawns, 5 ; cerulean ; $38 engine_flag VisitedSpawns, 6 ; rock tunnel engine_flag VisitedSpawns, 7 ; vermilion engine_flag VisitedSpawns + 1, 0 ; lavender engine_flag VisitedSpawns + 1, 1 ; saffron engine_flag VisitedSpawns + 1, 2 ; celadon engine_flag VisitedSpawns + 1, 3 ; fuchsia engine_flag VisitedSpawns + 1, 4 ; cinnabar engine_flag VisitedSpawns + 1, 5 ; indigo plateau ; $40 engine_flag VisitedSpawns + 1, 6 ; new bark engine_flag VisitedSpawns + 1, 7 ; cherrygrove engine_flag VisitedSpawns + 2, 0 ; violet ; union cave engine_flag VisitedSpawns + 2, 2 ; azalea engine_flag VisitedSpawns + 2, 3 ; cianwood engine_flag VisitedSpawns + 2, 4 ; goldenrod engine_flag VisitedSpawns + 2, 5 ; olivine engine_flag VisitedSpawns + 2, 6 ; ecruteak ; $48 engine_flag VisitedSpawns + 2, 7 ; mahogany engine_flag VisitedSpawns + 3, 0 ; lake of rage engine_flag VisitedSpawns + 3, 1 ; blackthorn engine_flag VisitedSpawns + 3, 2 ; silver cave ; fast ship engine_flag VisitedSpawns + 3, 4 ; unused engine_flag wLuckyNumberShowFlag, 0 ; lucky number show engine_flag StatusFlags2, 3 ; ???? engine_flag DailyFlags, 0 ; kurt making balls ; $50 engine_flag DailyFlags, 1 ; ???? engine_flag DailyFlags, 2 ; special wilddata? engine_flag DailyFlags, 3 ; time capsule (24h wait) engine_flag DailyFlags, 4 ; all fruit trees engine_flag DailyFlags, 5 ; shuckle given engine_flag DailyFlags, 6 ; goldenrod underground merchant closed engine_flag DailyFlags, 7 ; fought in trainer hall today engine_flag WeeklyFlags, 0 ; mt moon square clefairy ; $58 engine_flag WeeklyFlags, 1 ; union cave lapras engine_flag WeeklyFlags, 2 ; goldenrod underground haircut used engine_flag WeeklyFlags, 3 ; goldenrod mall happiness event floor05 person07 engine_flag WeeklyFlags, 4 ; tea in blues house engine_flag WeeklyFlags, 5 ; indigo plateau rival fight engine_flag WeeklyFlags, 6 ; move tutor engine_flag WeeklyFlags, 7 ; buenas password engine_flag SwarmFlags, 0 ; $60 engine_flag SwarmFlags, 1 ; goldenrod dept store sale is on engine_flag GameTimerPause, 7 ; $62 engine_flag PlayerGender, 0 ; player is female engine_flag wCelebiEvent, 2 ; have gs ball after kurt examined it ; rematches engine_flag wDailyRematchFlags, 0 ; jack engine_flag wDailyRematchFlags, 1 ; huey engine_flag wDailyRematchFlags, 2 ; gaven engine_flag wDailyRematchFlags, 3 ; beth ; $68 engine_flag wDailyRematchFlags, 4 ; jose engine_flag wDailyRematchFlags, 5 ; reena engine_flag wDailyRematchFlags, 6 ; joey engine_flag wDailyRematchFlags, 7 ; wade engine_flag wDailyRematchFlags + 1, 0 ; ralph engine_flag wDailyRematchFlags + 1, 1 ; liz engine_flag wDailyRematchFlags + 1, 2 ; anthony engine_flag wDailyRematchFlags + 1, 3 ; todd ; $70 engine_flag wDailyRematchFlags + 1, 4 ; gina engine_flag wDailyRematchFlags + 1, 5 ; arnie engine_flag wDailyRematchFlags + 1, 6 ; alan engine_flag wDailyRematchFlags + 1, 7 ; dana engine_flag wDailyRematchFlags + 2, 0 ; chad engine_flag wDailyRematchFlags + 2, 1 ; tully engine_flag wDailyRematchFlags + 2, 2 ; brent engine_flag wDailyRematchFlags + 2, 3 ; tiffany ; $78 engine_flag wDailyRematchFlags + 2, 4 ; vance engine_flag wDailyRematchFlags + 2, 5 ; wilton engine_flag wDailyRematchFlags + 2, 6 ; parry engine_flag wDailyRematchFlags + 2, 7 ; erin engine_flag wDailyPhoneItemFlags, 0 ; beverly has nugget engine_flag wDailyPhoneItemFlags, 1 ; jose has star piece engine_flag wDailyPhoneItemFlags, 2 ; wade has item (see EVENT_WADE_HAS_*** in constants/event_flags.asm) engine_flag wDailyPhoneItemFlags, 3 ; gina has leaf stone ; $80 engine_flag wDailyPhoneItemFlags, 4 ; alan has fire stone engine_flag wDailyPhoneItemFlags, 5 ; liz has thunderstone engine_flag wDailyPhoneItemFlags, 6 ; derek has nugget engine_flag wDailyPhoneItemFlags, 7 ; tully has water stone engine_flag wDailyPhoneItemFlags + 1, 0 ; tiffany has pink bow engine_flag wDailyPhoneItemFlags + 1, 1 ; wilton has item (see EVENT_WILTON_HAS_*** in constants/event_flags.asm) engine_flag wDailyPhoneTimeOfDayFlags, 0 engine_flag wDailyPhoneTimeOfDayFlags, 1 ; $88 engine_flag wDailyPhoneTimeOfDayFlags, 2 engine_flag wDailyPhoneTimeOfDayFlags, 3 engine_flag wDailyPhoneTimeOfDayFlags, 4 engine_flag wDailyPhoneTimeOfDayFlags, 5 engine_flag wDailyPhoneTimeOfDayFlags, 6 engine_flag wDailyPhoneTimeOfDayFlags, 7 engine_flag wDailyPhoneTimeOfDayFlags + 1, 0 engine_flag wDailyPhoneTimeOfDayFlags + 1, 1 ; $90 engine_flag wDailyPhoneTimeOfDayFlags + 1, 2 engine_flag wDailyPhoneTimeOfDayFlags + 1, 3 engine_flag wDailyPhoneTimeOfDayFlags + 1, 4 engine_flag wDailyPhoneTimeOfDayFlags + 1, 5 engine_flag wDailyPhoneTimeOfDayFlags + 1, 6 engine_flag wDailyPhoneTimeOfDayFlags + 1, 7 engine_flag wDailyPhoneTimeOfDayFlags + 2, 0 engine_flag wDailyPhoneTimeOfDayFlags + 2, 1 ; $98 engine_flag wDailyPhoneTimeOfDayFlags + 2, 2 engine_flag wDailyPhoneTimeOfDayFlags + 2, 3 engine_flag wDailyPhoneTimeOfDayFlags + 2, 4 engine_flag wDailyPhoneTimeOfDayFlags + 2, 5 engine_flag wDailyPhoneTimeOfDayFlags + 2, 6 engine_flag wDailyPhoneTimeOfDayFlags + 2, 7 engine_flag wPlayerSpriteSetupFlags, 2 ; female player has been transformed into male engine_flag SwarmFlags, 2 ; dunsparce swarm ; $a0 engine_flag SwarmFlags, 3 ; yanma swarm