mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-05 15:34:41 +00:00
Defines for SaveContext
flags (eventChkInf
, itemGetInf
, infTable
, eventInf
) (#1094)
* script-assisted `itemGetInf` flags * comment near non-trivial `itemGetInf` usage * Run formatter * Try something with the itemgetinf flags that can't use the packed value * Add defines for `eventChkInf` (direct access) * Add defines for `eventChkInf` (access through `Flags_GetEventChkInf`) * Add defines for `eventChkInf` (access through `Flags_SetEventChkInf`) * Add defines for `infTable` (direct access) * Add defines for `infTable` (used by `Flags_GetInfTable`) * Add defines for `infTable` (used by `Flags_SetInfTable`) * Add defines for `eventInf` * parenthesis cleanup near `GET_EVENTCHKINF` usage * parenthesis cleanup near `GET_ITEMGETINF` usage * parenthesis cleanup near `GET_INFTABLE` usage * fixup one `eventInf` usage * parenthesis cleanup near `GET_EVENTINF` usage * parenthesis cleanup near `Flags_GetEventChkInf` usage * slight `z64save.h` formatting improvement * Improve itemGetInf flags in z_bg_dy_yoseizo * Questionable improvement in z_en_ge2 * Questionable improvement in z_en_daiku * Questionable improvement in z_en_mu * Run formatter * Parentheses around `gSaveContext` macros arguments * Move individual flags define to the end of z64save.h, and improve comments separating the groups
This commit is contained in:
parent
16790bc253
commit
6336df5fcd
146 changed files with 1931 additions and 1315 deletions
|
@ -208,7 +208,7 @@ u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment) {
|
|||
|
||||
if (equipment == EQUIP_SWORD) {
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_NONE;
|
||||
gSaveContext.infTable[29] = 1;
|
||||
gSaveContext.infTable[INFTABLE_1DX_INDEX] = 1;
|
||||
}
|
||||
|
||||
Player_SetEquipmentData(globalCtx, player);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -52,40 +52,40 @@ CutsceneStateHandler sCsStateHandlers2[] = {
|
|||
u8 sTitleCsState = 0;
|
||||
|
||||
EntranceCutscene sEntranceCutsceneTable[] = {
|
||||
{ 0x0185, 2, 0xA0, gHyruleFieldIntroCs },
|
||||
{ 0x013D, 2, 0xA1, gDMTIntroCs },
|
||||
{ 0x00DB, 2, 0xA3, gKakarikoVillageIntroCs },
|
||||
{ 0x0108, 2, 0xA4, gZorasDomainIntroCs },
|
||||
{ 0x0138, 1, 0xA5, gHyruleCastleIntroCs },
|
||||
{ 0x014D, 2, 0xA6, gGoronCityIntroCs },
|
||||
{ 0x0053, 2, 0xA7, gTempleOfTimeIntroCs },
|
||||
{ 0x0000, 2, 0xA8, gDekuTreeIntroCs },
|
||||
{ 0x028A, 0, 0x18, gHyruleFieldSouthEponaJumpCs },
|
||||
{ 0x0292, 0, 0x18, gHyruleFieldEastEponaJumpCs },
|
||||
{ 0x028E, 0, 0x18, gHyruleFieldWestEponaJumpCs },
|
||||
{ 0x0476, 0, 0x18, gHyruleFieldGateEponaJumpCs },
|
||||
{ 0x050F, 1, 0xA9, gHyruleFieldGetOoTCs },
|
||||
{ 0x0102, 2, 0xB1, gLakeHyliaIntroCs },
|
||||
{ 0x0117, 2, 0xB2, gGerudoValleyIntroCs },
|
||||
{ 0x0129, 2, 0xB3, gGerudoFortressIntroCs },
|
||||
{ 0x0157, 2, 0xB4, gLonLonRanchIntroCs },
|
||||
{ 0x0028, 2, 0xB5, gJabuJabuIntroCs },
|
||||
{ 0x00E4, 2, 0xB6, gGraveyardIntroCs },
|
||||
{ 0x0225, 2, 0xB7, gZorasFountainIntroCs },
|
||||
{ 0x0123, 2, 0xB8, gDesertColossusIntroCs },
|
||||
{ 0x0147, 2, 0xB9, gDeathMountainCraterIntroCs },
|
||||
{ 0x0138, 0, 0xBA, gGanonsCastleIntroCs },
|
||||
{ 0x0574, 2, 0x5A, gSunSongGraveSunSongTeachPart2Cs },
|
||||
{ 0x0538, 2, 0xBB, gForestBarrierCs },
|
||||
{ 0x053C, 2, 0xBC, gWaterBarrierCs },
|
||||
{ 0x0540, 2, 0xBD, gShadowBarrierCs },
|
||||
{ 0x0544, 2, 0xBE, gFireBarrierCs },
|
||||
{ 0x0548, 2, 0xBF, gLightBarrierCs },
|
||||
{ 0x054C, 2, 0xAD, gSpiritBarrierCs },
|
||||
{ 0x008D, 0, 0xC0, gSpiritBossNabooruKnuckleIntroCs },
|
||||
{ 0x03B4, 0, 0xC7, gGerudoFortressFirstCaptureCs },
|
||||
{ 0x0246, 2, 0xB9, gDeathMountainCraterIntroCs },
|
||||
{ 0x05E8, 2, 0xC6, gKokiriForestDekuSproutCs },
|
||||
{ 0x0185, 2, EVENTCHKINF_A0, gHyruleFieldIntroCs },
|
||||
{ 0x013D, 2, EVENTCHKINF_A1, gDMTIntroCs },
|
||||
{ 0x00DB, 2, EVENTCHKINF_A3, gKakarikoVillageIntroCs },
|
||||
{ 0x0108, 2, EVENTCHKINF_A4, gZorasDomainIntroCs },
|
||||
{ 0x0138, 1, EVENTCHKINF_A5, gHyruleCastleIntroCs },
|
||||
{ 0x014D, 2, EVENTCHKINF_A6, gGoronCityIntroCs },
|
||||
{ 0x0053, 2, EVENTCHKINF_A7, gTempleOfTimeIntroCs },
|
||||
{ 0x0000, 2, EVENTCHKINF_A8, gDekuTreeIntroCs },
|
||||
{ 0x028A, 0, EVENTCHKINF_18, gHyruleFieldSouthEponaJumpCs },
|
||||
{ 0x0292, 0, EVENTCHKINF_18, gHyruleFieldEastEponaJumpCs },
|
||||
{ 0x028E, 0, EVENTCHKINF_18, gHyruleFieldWestEponaJumpCs },
|
||||
{ 0x0476, 0, EVENTCHKINF_18, gHyruleFieldGateEponaJumpCs },
|
||||
{ 0x050F, 1, EVENTCHKINF_A9, gHyruleFieldGetOoTCs },
|
||||
{ 0x0102, 2, EVENTCHKINF_B1, gLakeHyliaIntroCs },
|
||||
{ 0x0117, 2, EVENTCHKINF_B2, gGerudoValleyIntroCs },
|
||||
{ 0x0129, 2, EVENTCHKINF_B3, gGerudoFortressIntroCs },
|
||||
{ 0x0157, 2, EVENTCHKINF_B4, gLonLonRanchIntroCs },
|
||||
{ 0x0028, 2, EVENTCHKINF_B5, gJabuJabuIntroCs },
|
||||
{ 0x00E4, 2, EVENTCHKINF_B6, gGraveyardIntroCs },
|
||||
{ 0x0225, 2, EVENTCHKINF_B7, gZorasFountainIntroCs },
|
||||
{ 0x0123, 2, EVENTCHKINF_B8, gDesertColossusIntroCs },
|
||||
{ 0x0147, 2, EVENTCHKINF_B9, gDeathMountainCraterIntroCs },
|
||||
{ 0x0138, 0, EVENTCHKINF_BA, gGanonsCastleIntroCs },
|
||||
{ 0x0574, 2, EVENTCHKINF_5A, gSunSongGraveSunSongTeachPart2Cs },
|
||||
{ 0x0538, 2, EVENTCHKINF_BB, gForestBarrierCs },
|
||||
{ 0x053C, 2, EVENTCHKINF_BC, gWaterBarrierCs },
|
||||
{ 0x0540, 2, EVENTCHKINF_BD, gShadowBarrierCs },
|
||||
{ 0x0544, 2, EVENTCHKINF_BE, gFireBarrierCs },
|
||||
{ 0x0548, 2, EVENTCHKINF_BF, gLightBarrierCs },
|
||||
{ 0x054C, 2, EVENTCHKINF_AD, gSpiritBarrierCs },
|
||||
{ 0x008D, 0, EVENTCHKINF_C0, gSpiritBossNabooruKnuckleIntroCs },
|
||||
{ 0x03B4, 0, EVENTCHKINF_C7, gGerudoFortressFirstCaptureCs },
|
||||
{ 0x0246, 2, EVENTCHKINF_B9, gDeathMountainCraterIntroCs },
|
||||
{ 0x05E8, 2, EVENTCHKINF_C6, gKokiriForestDekuSproutCs },
|
||||
};
|
||||
|
||||
// Unused, seems to be an early list of dungeon entrance cutscene locations
|
||||
|
@ -336,13 +336,13 @@ void func_80064824(GlobalContext* globalCtx, CutsceneContext* csCtx, CsCmdBase*
|
|||
}
|
||||
break;
|
||||
case 19:
|
||||
gSaveContext.eventChkInf[6] |= 0x0020;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_65);
|
||||
break;
|
||||
case 20:
|
||||
gSaveContext.eventChkInf[6] |= 0x0080;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_67);
|
||||
break;
|
||||
case 21:
|
||||
gSaveContext.eventChkInf[6] |= 0x0200;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_69);
|
||||
break;
|
||||
case 22:
|
||||
D_801614B0.r = 255;
|
||||
|
@ -561,8 +561,8 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
case 8:
|
||||
gSaveContext.fw.set = 0;
|
||||
gSaveContext.respawn[RESPAWN_MODE_TOP].data = 0;
|
||||
if (!(gSaveContext.eventChkInf[4] & 0x20)) {
|
||||
gSaveContext.eventChkInf[4] |= 0x20;
|
||||
if (!GET_EVENTCHKINF(EVENTCHKINF_45)) {
|
||||
SET_EVENTCHKINF(EVENTCHKINF_45);
|
||||
globalCtx->nextEntranceIndex = 0x00A0;
|
||||
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
|
||||
gSaveContext.cutsceneIndex = 0xFFF3;
|
||||
|
@ -634,7 +634,7 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
break;
|
||||
case 18:
|
||||
gSaveContext.eventChkInf[4] |= 0x8000;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_4F);
|
||||
globalCtx->nextEntranceIndex = 0x0324;
|
||||
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
|
||||
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
|
||||
|
@ -779,14 +779,14 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_INSTANT;
|
||||
break;
|
||||
case 46:
|
||||
gSaveContext.eventChkInf[4] |= 0x8000;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_4F);
|
||||
globalCtx->nextEntranceIndex = 0x0324;
|
||||
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
|
||||
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
|
||||
break;
|
||||
case 47:
|
||||
Item_Give(globalCtx, ITEM_SONG_NOCTURNE);
|
||||
gSaveContext.eventChkInf[5] |= 0x10;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_54);
|
||||
globalCtx->nextEntranceIndex = 0x00DB;
|
||||
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
|
||||
gSaveContext.cutsceneIndex = 0xFFF1;
|
||||
|
@ -1014,8 +1014,8 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
break;
|
||||
case 95:
|
||||
if ((gSaveContext.eventChkInf[4] & 0x100) && (gSaveContext.eventChkInf[4] & 0x200) &&
|
||||
(gSaveContext.eventChkInf[4] & 0x400)) {
|
||||
if (GET_EVENTCHKINF(EVENTCHKINF_48) && GET_EVENTCHKINF(EVENTCHKINF_49) &&
|
||||
GET_EVENTCHKINF(EVENTCHKINF_4A)) {
|
||||
globalCtx->nextEntranceIndex = 0x0053;
|
||||
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
|
||||
gSaveContext.cutsceneIndex = 0xFFF3;
|
||||
|
@ -1048,7 +1048,7 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
gSaveContext.cutsceneIndex = 0xFFF1;
|
||||
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
|
||||
} else {
|
||||
gSaveContext.eventChkInf[12] |= 0x100;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_C8);
|
||||
globalCtx->nextEntranceIndex = 0x0610;
|
||||
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
|
||||
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
|
@ -1170,8 +1170,9 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
|
||||
break;
|
||||
case 113:
|
||||
if (Flags_GetEventChkInf(0xBB) && Flags_GetEventChkInf(0xBC) && Flags_GetEventChkInf(0xBD) &&
|
||||
Flags_GetEventChkInf(0xBE) && Flags_GetEventChkInf(0xBF) && Flags_GetEventChkInf(0xAD)) {
|
||||
if (Flags_GetEventChkInf(EVENTCHKINF_BB) && Flags_GetEventChkInf(EVENTCHKINF_BC) &&
|
||||
Flags_GetEventChkInf(EVENTCHKINF_BD) && Flags_GetEventChkInf(EVENTCHKINF_BE) &&
|
||||
Flags_GetEventChkInf(EVENTCHKINF_BF) && Flags_GetEventChkInf(EVENTCHKINF_AD)) {
|
||||
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gTowerBarrierCs);
|
||||
globalCtx->csCtx.frames = 0;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
|
@ -1194,7 +1195,7 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
|
||||
break;
|
||||
case 116:
|
||||
if (gSaveContext.eventChkInf[12] & 0x100) {
|
||||
if (GET_EVENTCHKINF(EVENTCHKINF_C8)) {
|
||||
globalCtx->nextEntranceIndex = 0x0580;
|
||||
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
|
||||
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
|
@ -2060,7 +2061,7 @@ void Cutscene_HandleEntranceTriggers(GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
if ((gSaveContext.entranceIndex == entranceCutscene->entrance) &&
|
||||
(!Flags_GetEventChkInf(entranceCutscene->flag) || (entranceCutscene->flag == 0x18)) &&
|
||||
(!Flags_GetEventChkInf(entranceCutscene->flag) || (entranceCutscene->flag == EVENTCHKINF_18)) &&
|
||||
(gSaveContext.cutsceneIndex < 0xFFF0) && ((u8)gSaveContext.linkAge == requiredAge) &&
|
||||
(gSaveContext.respawnFlag <= 0)) {
|
||||
Flags_SetEventChkInf(entranceCutscene->flag);
|
||||
|
@ -2076,29 +2077,29 @@ void Cutscene_HandleConditionalTriggers(GlobalContext* globalCtx) {
|
|||
osSyncPrintf("\ngame_info.mode=[%d] restart_flag", ((void)0, gSaveContext.respawnFlag));
|
||||
|
||||
if ((gSaveContext.gameMode == 0) && (gSaveContext.respawnFlag <= 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) {
|
||||
if ((gSaveContext.entranceIndex == 0x01E1) && !Flags_GetEventChkInf(0xAC)) {
|
||||
Flags_SetEventChkInf(0xAC);
|
||||
if ((gSaveContext.entranceIndex == 0x01E1) && !Flags_GetEventChkInf(EVENTCHKINF_AC)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_AC);
|
||||
gSaveContext.entranceIndex = 0x0123;
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if ((gSaveContext.entranceIndex == 0x00DB) && LINK_IS_ADULT && (gSaveContext.eventChkInf[4] & 0x0100) &&
|
||||
(gSaveContext.eventChkInf[4] & 0x0200) && (gSaveContext.eventChkInf[4] & 0x0400) &&
|
||||
!Flags_GetEventChkInf(0xAA)) {
|
||||
Flags_SetEventChkInf(0xAA);
|
||||
} else if ((gSaveContext.entranceIndex == 0x00DB) && LINK_IS_ADULT && GET_EVENTCHKINF(EVENTCHKINF_48) &&
|
||||
GET_EVENTCHKINF(EVENTCHKINF_49) && GET_EVENTCHKINF(EVENTCHKINF_4A) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_AA)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_AA);
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if ((gSaveContext.entranceIndex == 0x05E0) && !Flags_GetEventChkInf(0xC1)) {
|
||||
Flags_SetEventChkInf(0xC1);
|
||||
} else if ((gSaveContext.entranceIndex == 0x05E0) && !Flags_GetEventChkInf(EVENTCHKINF_C1)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_C1);
|
||||
Item_Give(globalCtx, ITEM_OCARINA_FAIRY);
|
||||
gSaveContext.entranceIndex = 0x011E;
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
|
||||
LINK_IS_ADULT && !Flags_GetEventChkInf(0xC4) &&
|
||||
LINK_IS_ADULT && !Flags_GetEventChkInf(EVENTCHKINF_C4) &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TOKINOMA)) {
|
||||
Flags_SetEventChkInf(0xC4);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_C4);
|
||||
gSaveContext.entranceIndex = 0x0053;
|
||||
gSaveContext.cutsceneIndex = 0xFFF8;
|
||||
} else if (!Flags_GetEventChkInf(0xC7) &&
|
||||
} else if (!Flags_GetEventChkInf(EVENTCHKINF_C7) &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_DEMO)) {
|
||||
Flags_SetEventChkInf(0xC7);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_C7);
|
||||
gSaveContext.entranceIndex = 0x0517;
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
}
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
ElfMessage sChildSariaMsgs[] = {
|
||||
ELF_MSG_STRENGTH_UPG(SKIP, 3, false, 0),
|
||||
ELF_MSG_FLAG(CHECK, 0x61, false, 0x37), /* eventChkInf[3] & 0x80 */
|
||||
ELF_MSG_FLAG(CHECK, 0x61, false, EVENTCHKINF_37),
|
||||
ELF_MSG_END(0x64),
|
||||
ELF_MSG_FLAG(CHECK, 0x62, false, 0x25), /* eventChkInf[2] & 0x20 */
|
||||
ELF_MSG_FLAG(CHECK, 0x63, false, 0x37), /* eventChkInf[3] & 0x80 */
|
||||
ELF_MSG_FLAG(CHECK, 0x65, false, 0x43), /* eventChkInf[4] & 0x8 */
|
||||
ELF_MSG_FLAG(CHECK, 0x62, false, EVENTCHKINF_25),
|
||||
ELF_MSG_FLAG(CHECK, 0x63, false, EVENTCHKINF_37),
|
||||
ELF_MSG_FLAG(CHECK, 0x65, false, EVENTCHKINF_43),
|
||||
ELF_MSG_MEDALLION(CHECK, 0x66, false, ITEM_MEDALLION_FOREST),
|
||||
ELF_MSG_MEDALLION(CHECK, 0x66, false, ITEM_MEDALLION_FIRE),
|
||||
ELF_MSG_MEDALLION(CHECK, 0x66, false, ITEM_MEDALLION_WATER),
|
||||
|
|
|
@ -30,7 +30,7 @@ void GameOver_Update(GlobalContext* globalCtx) {
|
|||
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.eventInf[1] &= ~1;
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
|
||||
// search inventory for spoiling items and revert if necessary
|
||||
for (i = 0; i < ARRAY_COUNT(gSpoilingItems); i++) {
|
||||
|
|
|
@ -47,7 +47,7 @@ void func_8006D0EC(GlobalContext* globalCtx, Player* player) {
|
|||
{ SCENE_SPOT20, 928, 0, -2280, 0, 2 },
|
||||
};
|
||||
|
||||
if ((AREG(6) != 0) && (Flags_GetEventChkInf(0x18) || (DREG(1) != 0))) {
|
||||
if ((AREG(6) != 0) && (Flags_GetEventChkInf(EVENTCHKINF_18) || (DREG(1) != 0))) {
|
||||
player->rideActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, player->actor.world.pos.x,
|
||||
player->actor.world.pos.y, player->actor.world.pos.z, player->actor.shape.rot.x,
|
||||
player->actor.shape.rot.y, player->actor.shape.rot.z, 9);
|
||||
|
@ -67,15 +67,15 @@ void func_8006D0EC(GlobalContext* globalCtx, Player* player) {
|
|||
horseActor =
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, 3586.0f, 1413.0f, -402.0f, 0, 0x4000, 0, 1);
|
||||
horseActor->room = -1;
|
||||
} else if ((gSaveContext.entranceIndex == 1230) && (gSaveContext.eventChkInf[1] & 0x100)) {
|
||||
} else if ((gSaveContext.entranceIndex == 1230) && GET_EVENTCHKINF(EVENTCHKINF_18)) {
|
||||
Actor* horseActor =
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, -25.0f, 0.0f, -1600.0f, 0, -0x4000, 0, 1);
|
||||
ASSERT(horseActor != NULL, "horse_actor != NULL", "../z_horse.c", 389);
|
||||
} else if ((globalCtx->sceneNum == gSaveContext.horseData.scene) &&
|
||||
(Flags_GetEventChkInf(0x18) != 0 || DREG(1) != 0)) {
|
||||
(Flags_GetEventChkInf(EVENTCHKINF_18) || DREG(1) != 0)) {
|
||||
// "Set by existence of horse %d %d %d"
|
||||
osSyncPrintf("馬存在によるセット %d %d %d\n", gSaveContext.horseData.scene, Flags_GetEventChkInf(0x18),
|
||||
DREG(1));
|
||||
osSyncPrintf("馬存在によるセット %d %d %d\n", gSaveContext.horseData.scene,
|
||||
Flags_GetEventChkInf(EVENTCHKINF_18), DREG(1));
|
||||
|
||||
if (func_8006CFC0(gSaveContext.horseData.scene)) {
|
||||
Actor* horseActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE,
|
||||
|
@ -92,11 +92,11 @@ void func_8006D0EC(GlobalContext* globalCtx, Player* player) {
|
|||
osSyncPrintf(VT_RST);
|
||||
func_8006D074(globalCtx);
|
||||
}
|
||||
} else if ((globalCtx->sceneNum == SCENE_SPOT20) && !Flags_GetEventChkInf(0x18) && (DREG(1) == 0)) {
|
||||
} else if ((globalCtx->sceneNum == SCENE_SPOT20) && !Flags_GetEventChkInf(EVENTCHKINF_18) && (DREG(1) == 0)) {
|
||||
Actor* horseActor =
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, 0.0f, 0.0f, -500.0f, 0, 0, 0, 1);
|
||||
ASSERT(horseActor != NULL, "horse_actor != NULL", "../z_horse.c", 443);
|
||||
} else if (Flags_GetEventChkInf(0x18) || (DREG(1) != 0)) {
|
||||
} else if (Flags_GetEventChkInf(EVENTCHKINF_18) || (DREG(1) != 0)) {
|
||||
for (i = 0; i < ARRAY_COUNT(horseSpawns); i++) {
|
||||
HorseSpawn* horseSpawn = &horseSpawns[i];
|
||||
if (horseSpawn->scene == globalCtx->sceneNum) {
|
||||
|
@ -111,7 +111,7 @@ void func_8006D0EC(GlobalContext* globalCtx, Player* player) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
} else if (!Flags_GetEventChkInf(0x18)) {
|
||||
} else if (!Flags_GetEventChkInf(EVENTCHKINF_18)) {
|
||||
if ((DREG(1) == 0) && (globalCtx->sceneNum == SCENE_SOUKO) && !IS_DAY) {
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, 0.0f, 0.0f, -60.0f, 0, 0x7360, 0, 1);
|
||||
}
|
||||
|
@ -158,8 +158,11 @@ void func_8006D684(GlobalContext* globalCtx, Player* player) {
|
|||
Actor_MountHorse(globalCtx, player, player->rideActor);
|
||||
func_8002DE74(globalCtx, player);
|
||||
gSaveContext.horseData.scene = globalCtx->sceneNum;
|
||||
} else if ((globalCtx->sceneNum == SCENE_SPOT20) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
|
||||
(Flags_GetEventChkInf(0x18) == 0) && (DREG(1) == 0)) {
|
||||
} else if ((globalCtx->sceneNum == SCENE_SPOT20) &&
|
||||
((gSaveContext.eventInf[EVENTINF_0X_INDEX] &
|
||||
(EVENTINF_00_MASK | EVENTINF_01_MASK | EVENTINF_02_MASK | EVENTINF_03_MASK)) ==
|
||||
(EVENTINF_01_MASK | EVENTINF_02_MASK)) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_18) && (DREG(1) == 0)) {
|
||||
player->rideActor =
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, 894.0f, 0.0f, -2084.0f, 0, -0x7FFF, 0, 5);
|
||||
ASSERT(player->rideActor != NULL, "player->ride.actor != NULL", "../z_horse.c", 582);
|
||||
|
@ -200,7 +203,7 @@ void func_8006D684(GlobalContext* globalCtx, Player* player) {
|
|||
Vec3f sp54;
|
||||
s32 temp = 0;
|
||||
|
||||
if (((gSaveContext.eventInf[0] & 0x10) >> 4) && D_8011F9B8[i].type == 6) {
|
||||
if ((GET_EVENTINF(EVENTINF_04) >> EVENTINF_04_SHIFT) && D_8011F9B8[i].type == 6) {
|
||||
temp = 0x8000;
|
||||
}
|
||||
|
||||
|
@ -249,8 +252,11 @@ void func_8006DC68(GlobalContext* globalCtx, Player* player) {
|
|||
((gSaveContext.entranceIndex == 0x028A || gSaveContext.entranceIndex == 0x028E ||
|
||||
gSaveContext.entranceIndex == 0x0292 || gSaveContext.entranceIndex == 0x0476) &&
|
||||
(gSaveContext.respawnFlag == 0)) ||
|
||||
((globalCtx->sceneNum == SCENE_SPOT20) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
|
||||
!Flags_GetEventChkInf(0x18) && (DREG(1) == 0))) {
|
||||
((globalCtx->sceneNum == SCENE_SPOT20) &&
|
||||
((gSaveContext.eventInf[EVENTINF_0X_INDEX] &
|
||||
(EVENTINF_00_MASK | EVENTINF_01_MASK | EVENTINF_02_MASK | EVENTINF_03_MASK)) ==
|
||||
(EVENTINF_01_MASK | EVENTINF_02_MASK)) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_18) && (DREG(1) == 0))) {
|
||||
func_8006D684(globalCtx, player);
|
||||
} else {
|
||||
func_8006D0EC(globalCtx, player);
|
||||
|
|
|
@ -2443,19 +2443,19 @@ void Environment_WarpSongLeave(GlobalContext* globalCtx) {
|
|||
|
||||
switch (globalCtx->nextEntranceIndex) {
|
||||
case 0x147:
|
||||
Flags_SetEventChkInf(0xB9);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_B9);
|
||||
break;
|
||||
case 0x0102:
|
||||
Flags_SetEventChkInf(0xB1);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_B1);
|
||||
break;
|
||||
case 0x0123:
|
||||
Flags_SetEventChkInf(0xB8);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_B8);
|
||||
break;
|
||||
case 0x00E4:
|
||||
Flags_SetEventChkInf(0xB6);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_B6);
|
||||
break;
|
||||
case 0x0053:
|
||||
Flags_SetEventChkInf(0xA7);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_A7);
|
||||
break;
|
||||
case 0x00FC:
|
||||
break;
|
||||
|
|
|
@ -239,8 +239,26 @@ static s16 sOwEntranceIconPosY[24] = {
|
|||
};
|
||||
|
||||
static u16 sOwEntranceFlag[20] = {
|
||||
0xFFFF, 0x0008, 0x0007, 0xFFFF, 0x0000, 0x0003, 0x0005, 0xFFFF, 0x0002, 0xFFFF,
|
||||
0xFFFF, 0x0006, 0x000B, 0xFFFF, 0xFFFF, 0x0001, 0x0004, 0xFFFF, 0xFFFF, 0x000D,
|
||||
0xFFFF,
|
||||
INFTABLE_1A8_SHIFT,
|
||||
INFTABLE_1A7_SHIFT,
|
||||
0xFFFF,
|
||||
INFTABLE_1A0_SHIFT,
|
||||
INFTABLE_1A3_SHIFT,
|
||||
INFTABLE_1A5_SHIFT,
|
||||
0xFFFF,
|
||||
INFTABLE_1A2_SHIFT,
|
||||
0xFFFF,
|
||||
0xFFFF,
|
||||
INFTABLE_1A6_SHIFT,
|
||||
INFTABLE_1AB_SHIFT,
|
||||
0xFFFF,
|
||||
0xFFFF,
|
||||
INFTABLE_1A1_SHIFT,
|
||||
INFTABLE_1A4_SHIFT,
|
||||
0xFFFF,
|
||||
0xFFFF,
|
||||
INFTABLE_1AD_SHIFT,
|
||||
};
|
||||
|
||||
static f32 sFloorCoordY[10][8] = {
|
||||
|
|
|
@ -118,11 +118,16 @@ void Map_InitData(GlobalContext* globalCtx, s16 room) {
|
|||
extendedMapIndex = 0x15;
|
||||
}
|
||||
} else if (globalCtx->sceneNum == SCENE_SPOT09) {
|
||||
if ((LINK_AGE_IN_YEARS == YEARS_ADULT) && !((gSaveContext.eventChkInf[9] & 0xF) == 0xF)) {
|
||||
if ((LINK_AGE_IN_YEARS == YEARS_ADULT) &&
|
||||
!CHECK_FLAG_ALL(gSaveContext.eventChkInf[EVENTCHKINF_90_91_92_93_INDEX],
|
||||
EVENTCHKINF_90_MASK | EVENTCHKINF_91_MASK | EVENTCHKINF_92_MASK |
|
||||
EVENTCHKINF_93_MASK)) {
|
||||
extendedMapIndex = 0x16;
|
||||
}
|
||||
} else if (globalCtx->sceneNum == SCENE_SPOT12) {
|
||||
if ((gSaveContext.eventChkInf[9] & 0xF) == 0xF) {
|
||||
if (CHECK_FLAG_ALL(gSaveContext.eventChkInf[EVENTCHKINF_90_91_92_93_INDEX],
|
||||
EVENTCHKINF_90_MASK | EVENTCHKINF_91_MASK | EVENTCHKINF_92_MASK |
|
||||
EVENTCHKINF_93_MASK)) {
|
||||
extendedMapIndex = 0x17;
|
||||
}
|
||||
}
|
||||
|
@ -455,7 +460,8 @@ void Minimap_Draw(GlobalContext* globalCtx) {
|
|||
(LINK_AGE_IN_YEARS != YEARS_ADULT)) {
|
||||
if ((gMapData->owEntranceFlag[sEntranceIconMapIndex] == 0xFFFF) ||
|
||||
((gMapData->owEntranceFlag[sEntranceIconMapIndex] != 0xFFFF) &&
|
||||
(gSaveContext.infTable[26] & gBitFlags[gMapData->owEntranceFlag[mapIndex]]))) {
|
||||
(gSaveContext.infTable[INFTABLE_1AX_INDEX] &
|
||||
gBitFlags[gMapData->owEntranceFlag[mapIndex]]))) {
|
||||
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b,
|
||||
8, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
|
@ -470,7 +476,8 @@ void Minimap_Draw(GlobalContext* globalCtx) {
|
|||
}
|
||||
}
|
||||
|
||||
if ((globalCtx->sceneNum == SCENE_SPOT08) && (gSaveContext.infTable[26] & gBitFlags[9])) {
|
||||
if ((globalCtx->sceneNum == SCENE_SPOT08) &&
|
||||
(gSaveContext.infTable[INFTABLE_1AX_INDEX] & gBitFlags[INFTABLE_1A9_SHIFT])) {
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8,
|
||||
8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
|
|
@ -1605,7 +1605,7 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) {
|
|||
textId += (gSaveContext.inventory.questItems & 0xF0000000 & 0xF0000000) >> QUEST_HEART_PIECE_COUNT;
|
||||
} else if (msgCtx->textId == 0xC && CHECK_OWNED_EQUIP(EQUIP_SWORD, 2)) {
|
||||
textId = 0xB; // Traded Giant's Knife for Biggoron Sword
|
||||
} else if (msgCtx->textId == 0xB4 && (gSaveContext.eventChkInf[9] & 0x40)) {
|
||||
} else if (msgCtx->textId == 0xB4 && GET_EVENTCHKINF(EVENTCHKINF_96)) {
|
||||
textId = 0xB5; // Destroyed Gold Skulltula
|
||||
}
|
||||
// Ocarina Staff + Dialog
|
||||
|
@ -2456,7 +2456,9 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
|
|||
if (msgCtx->disableWarpSongs || interfaceCtx->restrictions.warpSongs == 3) {
|
||||
Message_StartTextbox(globalCtx, 0x88C, NULL); // "You can't warp here!"
|
||||
globalCtx->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
} else if ((gSaveContext.eventInf[0] & 0xF) != 1) {
|
||||
} else if ((gSaveContext.eventInf[EVENTINF_0X_INDEX] &
|
||||
(EVENTINF_00_MASK | EVENTINF_01_MASK | EVENTINF_02_MASK | EVENTINF_03_MASK)) !=
|
||||
EVENTINF_00_MASK) {
|
||||
Message_StartTextbox(globalCtx, msgCtx->lastPlayedSong + 0x88D,
|
||||
NULL); // "Warp to [place name]?"
|
||||
globalCtx->msgCtx.ocarinaMode = OCARINA_MODE_01;
|
||||
|
@ -3217,8 +3219,10 @@ void Message_Update(GlobalContext* globalCtx) {
|
|||
if (Message_ShouldAdvance(globalCtx)) {
|
||||
osSyncPrintf("OCARINA_MODE=%d -> ", globalCtx->msgCtx.ocarinaMode);
|
||||
globalCtx->msgCtx.ocarinaMode = (msgCtx->choiceIndex == 0) ? OCARINA_MODE_02 : OCARINA_MODE_04;
|
||||
osSyncPrintf("InRaceSeq=%d(%d) OCARINA_MODE=%d --> ", gSaveContext.eventInf[0] & 0xF, 1,
|
||||
globalCtx->msgCtx.ocarinaMode);
|
||||
osSyncPrintf("InRaceSeq=%d(%d) OCARINA_MODE=%d --> ",
|
||||
gSaveContext.eventInf[EVENTINF_0X_INDEX] &
|
||||
(EVENTINF_00_MASK | EVENTINF_01_MASK | EVENTINF_02_MASK | EVENTINF_03_MASK),
|
||||
1, globalCtx->msgCtx.ocarinaMode);
|
||||
Message_CloseTextbox(globalCtx);
|
||||
osSyncPrintf("OCARINA_MODE=%d\n", globalCtx->msgCtx.ocarinaMode);
|
||||
}
|
||||
|
|
|
@ -768,7 +768,9 @@ void func_80083108(GlobalContext* globalCtx) {
|
|||
gSaveContext.unk_13EA = 0;
|
||||
Interface_ChangeAlpha(50);
|
||||
}
|
||||
} else if ((gSaveContext.eventInf[0] & 0xF) == 1) {
|
||||
} else if ((gSaveContext.eventInf[EVENTINF_0X_INDEX] &
|
||||
(EVENTINF_00_MASK | EVENTINF_01_MASK | EVENTINF_02_MASK | EVENTINF_03_MASK)) ==
|
||||
EVENTINF_00_MASK) {
|
||||
if (player->stateFlags1 & PLAYER_STATE1_23) {
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_BOW)) {
|
||||
|
@ -828,7 +830,8 @@ void func_80083108(GlobalContext* globalCtx) {
|
|||
(gSaveContext.equips.buttonItems[0] == ITEM_BOW) ||
|
||||
(gSaveContext.equips.buttonItems[0] == ITEM_BOMBCHU) ||
|
||||
(gSaveContext.equips.buttonItems[0] == ITEM_NONE)) {
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) || (gSaveContext.infTable[29] == 0)) {
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) ||
|
||||
(gSaveContext.infTable[INFTABLE_1DX_INDEX] == 0)) {
|
||||
gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0];
|
||||
sp28 = true;
|
||||
|
||||
|
@ -851,7 +854,8 @@ void func_80083108(GlobalContext* globalCtx) {
|
|||
(gSaveContext.equips.buttonItems[0] == ITEM_BOW) ||
|
||||
(gSaveContext.equips.buttonItems[0] == ITEM_BOMBCHU) ||
|
||||
(gSaveContext.equips.buttonItems[0] == ITEM_NONE)) {
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) || (gSaveContext.infTable[29] == 0)) {
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) ||
|
||||
(gSaveContext.infTable[INFTABLE_1DX_INDEX] == 0)) {
|
||||
gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0];
|
||||
sp28 = true;
|
||||
|
||||
|
@ -1303,7 +1307,7 @@ void func_80084BF4(GlobalContext* globalCtx, u16 flag) {
|
|||
Interface_LoadItemIcon1(globalCtx, 0);
|
||||
}
|
||||
} else if (gSaveContext.equips.buttonItems[0] == ITEM_NONE) {
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) || (gSaveContext.infTable[29] == 0)) {
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) || (gSaveContext.infTable[INFTABLE_1DX_INDEX] == 0)) {
|
||||
gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0];
|
||||
Interface_LoadItemIcon1(globalCtx, 0);
|
||||
}
|
||||
|
@ -1636,8 +1640,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
|||
AMMO(ITEM_SLINGSHOT) = CUR_CAPACITY(UPG_BULLET_BAG);
|
||||
}
|
||||
|
||||
if (!(gSaveContext.itemGetInf[1] & 8)) {
|
||||
gSaveContext.itemGetInf[1] |= 8;
|
||||
if (!GET_ITEMGETINF(ITEMGETINF_13)) {
|
||||
SET_ITEMGETINF(ITEMGETINF_13);
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
|
@ -1649,8 +1653,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
|||
AMMO(ITEM_SLINGSHOT) = CUR_CAPACITY(UPG_BULLET_BAG);
|
||||
}
|
||||
|
||||
if (!(gSaveContext.itemGetInf[1] & 8)) {
|
||||
gSaveContext.itemGetInf[1] |= 8;
|
||||
if (!GET_ITEMGETINF(ITEMGETINF_13)) {
|
||||
SET_ITEMGETINF(ITEMGETINF_13);
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
|
@ -1695,8 +1699,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
|||
|
||||
func_80087708(globalCtx, 12, 5);
|
||||
|
||||
if (!(gSaveContext.infTable[25] & 0x100)) {
|
||||
gSaveContext.infTable[25] |= 0x100;
|
||||
if (!GET_INFTABLE(INFTABLE_198)) {
|
||||
SET_INFTABLE(INFTABLE_198);
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
|
@ -1708,8 +1712,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
|||
|
||||
func_80087708(globalCtx, 24, 5);
|
||||
|
||||
if (!(gSaveContext.infTable[25] & 0x100)) {
|
||||
gSaveContext.infTable[25] |= 0x100;
|
||||
if (!GET_INFTABLE(INFTABLE_198)) {
|
||||
SET_INFTABLE(INFTABLE_198);
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
|
@ -1770,7 +1774,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
|||
}
|
||||
} else if ((item >= ITEM_WEIRD_EGG) && (item <= ITEM_CLAIM_CHECK)) {
|
||||
if (item == ITEM_SAW) {
|
||||
gSaveContext.itemGetInf[1] |= 0x8000;
|
||||
SET_ITEMGETINF(ITEMGETINF_1F);
|
||||
}
|
||||
|
||||
temp = INV_CONTENT(item);
|
||||
|
@ -1875,7 +1879,7 @@ u8 Item_CheckObtainability(u8 item) {
|
|||
} else if (item == ITEM_LONGSHOT) {
|
||||
return ITEM_NONE;
|
||||
} else if ((item == ITEM_SEEDS) || (item == ITEM_SEEDS_30)) {
|
||||
if (!(gSaveContext.itemGetInf[1] & 0x8)) {
|
||||
if (!GET_ITEMGETINF(ITEMGETINF_13)) {
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
return ITEM_SEEDS;
|
||||
|
@ -1890,8 +1894,8 @@ u8 Item_CheckObtainability(u8 item) {
|
|||
return ITEM_HEART;
|
||||
} else if ((item == ITEM_MAGIC_SMALL) || (item == ITEM_MAGIC_LARGE)) {
|
||||
// "Magic Pot Get_Inf_Table( 25, 0x0100)=%d"
|
||||
osSyncPrintf("魔法の壷 Get_Inf_Table( 25, 0x0100)=%d\n", gSaveContext.infTable[25] & 0x100);
|
||||
if (!(gSaveContext.infTable[25] & 0x100)) {
|
||||
osSyncPrintf("魔法の壷 Get_Inf_Table( 25, 0x0100)=%d\n", GET_INFTABLE(INFTABLE_198));
|
||||
if (!GET_INFTABLE(INFTABLE_198)) {
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
return item;
|
||||
|
@ -2639,7 +2643,7 @@ void func_80088AA0(s16 arg0) {
|
|||
|
||||
void func_80088AF0(GlobalContext* globalCtx) {
|
||||
if (gSaveContext.timer2State != 0) {
|
||||
if (gSaveContext.eventInf[1] & 1) {
|
||||
if (GET_EVENTINF(EVENTINF_10)) {
|
||||
gSaveContext.timer2Value = 239;
|
||||
} else {
|
||||
gSaveContext.timer2Value = 1;
|
||||
|
@ -3408,8 +3412,10 @@ void Interface_Draw(GlobalContext* globalCtx) {
|
|||
// Revert any spoiling trade quest items
|
||||
for (svar1 = 0; svar1 < ARRAY_COUNT(gSpoilingItems); svar1++) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == gSpoilingItems[svar1]) {
|
||||
gSaveContext.eventInf[0] &= 0x7F80;
|
||||
osSyncPrintf("EVENT_INF=%x\n", gSaveContext.eventInf[0]);
|
||||
gSaveContext.eventInf[EVENTINF_0X_INDEX] &=
|
||||
(u16) ~(EVENTINF_00_MASK | EVENTINF_01_MASK | EVENTINF_02_MASK | EVENTINF_03_MASK |
|
||||
EVENTINF_04_MASK | EVENTINF_05_MASK | EVENTINF_06_MASK | EVENTINF_0F_MASK);
|
||||
osSyncPrintf("EVENT_INF=%x\n", gSaveContext.eventInf[EVENTINF_0X_INDEX]);
|
||||
globalCtx->nextEntranceIndex = spoilingItemEntrances[svar1];
|
||||
INV_CONTENT(gSpoilingItemReverts[svar1]) = gSpoilingItemReverts[svar1];
|
||||
|
||||
|
@ -3719,10 +3725,10 @@ void Interface_Draw(GlobalContext* globalCtx) {
|
|||
}
|
||||
} else {
|
||||
gSaveContext.timer2Value++;
|
||||
if (gSaveContext.eventInf[1] & 1) {
|
||||
if (GET_EVENTINF(EVENTINF_10)) {
|
||||
if (gSaveContext.timer2Value == 240) {
|
||||
Message_StartTextbox(globalCtx, 0x6083, NULL);
|
||||
gSaveContext.eventInf[1] &= ~1;
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
gSaveContext.timer2State = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -292,7 +292,7 @@ void Gameplay_Init(GameState* thisx) {
|
|||
}
|
||||
} else if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_SPOT04) && LINK_IS_ADULT &&
|
||||
gSaveContext.sceneSetupIndex < 4) {
|
||||
gSaveContext.sceneSetupIndex = (gSaveContext.eventChkInf[4] & 0x100) ? 3 : 2;
|
||||
gSaveContext.sceneSetupIndex = GET_EVENTCHKINF(EVENTCHKINF_48) ? 3 : 2;
|
||||
}
|
||||
|
||||
Gameplay_SpawnScene(
|
||||
|
|
|
@ -2846,7 +2846,7 @@ void func_8009E0B8(GlobalContext* globalCtx) {
|
|||
spA3 = 255 - (u8)globalCtx->roomCtx.unk_74[0];
|
||||
} else if (gSaveContext.sceneSetupIndex == 6) {
|
||||
spA0 = globalCtx->roomCtx.unk_74[0] + 500;
|
||||
} else if (((gSaveContext.sceneSetupIndex < 4) || LINK_IS_ADULT) && (gSaveContext.eventChkInf[0] & 0x80)) {
|
||||
} else if (((gSaveContext.sceneSetupIndex < 4) || LINK_IS_ADULT) && GET_EVENTCHKINF(EVENTCHKINF_07)) {
|
||||
spA0 = 2150;
|
||||
}
|
||||
|
||||
|
@ -2874,7 +2874,7 @@ void func_8009E54C(GlobalContext* globalCtx) {
|
|||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_scene_table.c", 7058);
|
||||
|
||||
if ((gSaveContext.sceneSetupIndex > 3) || (LINK_IS_ADULT && !(gSaveContext.eventChkInf[6] & 0x200))) {
|
||||
if ((gSaveContext.sceneSetupIndex > 3) || (LINK_IS_ADULT && !GET_EVENTCHKINF(EVENTCHKINF_69))) {
|
||||
globalCtx->roomCtx.unk_74[0] = 87;
|
||||
}
|
||||
|
||||
|
|
|
@ -175,7 +175,7 @@ void Sram_InitNewSave(void) {
|
|||
gSaveContext.horseData.pos.z = 5497;
|
||||
gSaveContext.horseData.angle = -0x6AD9;
|
||||
gSaveContext.magicLevel = 0;
|
||||
gSaveContext.infTable[29] = 1;
|
||||
gSaveContext.infTable[INFTABLE_1DX_INDEX] = 1;
|
||||
gSaveContext.sceneFlags[5].swch = 0x40000000;
|
||||
}
|
||||
|
||||
|
@ -265,8 +265,8 @@ void Sram_InitDebugSave(void) {
|
|||
gSaveContext.horseData.angle = -0x6AD9;
|
||||
gSaveContext.infTable[0] |= 0x5009;
|
||||
gSaveContext.eventChkInf[0] |= 0x123F;
|
||||
gSaveContext.eventChkInf[8] |= 1;
|
||||
gSaveContext.eventChkInf[12] |= 0x10;
|
||||
SET_EVENTCHKINF(EVENTCHKINF_80);
|
||||
SET_EVENTCHKINF(EVENTCHKINF_C4);
|
||||
|
||||
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KOKIRI;
|
||||
|
@ -408,9 +408,9 @@ void Sram_OpenSave(SramContext* sramCtx) {
|
|||
}
|
||||
|
||||
// if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter
|
||||
if ((gSaveContext.eventChkInf[4] & 1) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) {
|
||||
i = gSaveContext.eventChkInf[4] & ~1;
|
||||
gSaveContext.eventChkInf[4] = i;
|
||||
if (GET_EVENTCHKINF(EVENTCHKINF_40) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) {
|
||||
i = gSaveContext.eventChkInf[EVENTCHKINF_40_INDEX] & ~EVENTCHKINF_40_MASK;
|
||||
gSaveContext.eventChkInf[EVENTCHKINF_40_INDEX] = i;
|
||||
|
||||
INV_CONTENT(ITEM_LETTER_ZELDA) = ITEM_CHICKEN;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue