summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorengineer124 <47598039+engineer124@users.noreply.github.com>2023-06-09 04:46:13 +1000
committerGitHub <noreply@github.com>2023-06-08 14:46:13 -0400
commitf05d1723d6c0ee94fb4342958395f67ef751bdfe (patch)
tree74e3466282f0cf2c5d8e3a55e993ecd48bbf6691 /src/code
parent8c961f2b16334649b0d3ad811b856b95381c87d2 (diff)
Persistent Cycle Weekeventregs (#1267)
* persistent weekeventregs * move macro * PR Suggestions * 2 to ALT * PR Suggestions
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_sram_NES.c251
1 files changed, 181 insertions, 70 deletions
diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c
index 21bfaf7ef..fa690758c 100644
--- a/src/code/z_sram_NES.c
+++ b/src/code/z_sram_NES.c
@@ -11,12 +11,12 @@ void func_80147414(SramContext* sramCtx, s32 fileNum, s32 arg2);
((newf)[0] != 'Z' || (newf)[1] != 'E' || (newf)[2] != 'L' || (newf)[3] != 'D' || (newf)[4] != 'A' || \
(newf)[5] != '3')
-typedef struct PersistentCycleFlags {
+typedef struct PersistentCycleSceneFlags {
/* 0x0 */ u32 switch0;
/* 0x4 */ u32 switch1;
/* 0x8 */ u32 chest;
/* 0xC */ u32 collectible;
-} PersistentCycleFlags; // size = 0x10
+} PersistentCycleSceneFlags; // size = 0x10
#define PERSISTENT_CYCLE_FLAGS_SET(switch0, switch1, chest, collectible) { switch0, switch1, chest, collectible },
#define PERSISTENT_CYCLE_FLAGS_NONE PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 0)
@@ -28,58 +28,105 @@ typedef struct PersistentCycleFlags {
/**
* Array of bitwise flags which won't be turned off on a cycle reset (will persist between cycles)
*/
-PersistentCycleFlags sPersistentCycleFlags[SCENE_MAX] = {
+PersistentCycleSceneFlags sPersistentCycleSceneFlags[SCENE_MAX] = {
#include "tables/scene_table.h"
};
#undef DEFINE_SCENE
#undef DEFINE_SCENE_UNSET
-// TODO: figure out a way to use the WEEKEVENTREG defines here
+// Each flag has 2 bits to store persistence over the three-day reset cycle
+// Only 1 of these bits need to be set to persist (Values 1, 2, 3).
+// Therefore, the final game does not distinguish between these two macros in use
+#define PERSISTENT_WEEKEVENTREG(flag) (3 << (2 * BIT_FLAG_TO_SHIFT(flag)))
+#define PERSISTENT_WEEKEVENTREG_ALT(flag) (2 << (2 * BIT_FLAG_TO_SHIFT(flag)))
+
// weekEventReg flags which will be not be cleared on a cycle reset
-u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = {
- /* 0 */ 0xFFFC,
- /* 1 */ 0xFFFF,
- /* 2 */ 0xFFFF,
- /* 3 */ 0xFFFF,
+//! @note The index of the flag in this array must be the same to its index in the WeekeventReg array
+//! Only the mask is read from the `PERSISTENT_` macros.
+u16 sPersistentCycleWeekEventRegs[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = {
+ /* 0 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_TERMINA_FIELD) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_IKANA_GRAVEYARD) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_ROMANI_RANCH) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_GORMAN_TRACK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOUNTAIN_VILLAGE_WINTER) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_GORON_SHRINE) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_SNOWHEAD),
+ /* 1 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_SOUTHERN_SWAMP_POISONED) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_DEKU_PALACE) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_GREAT_BAY_COAST) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_PIRATES_FORTRESS) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_ZORA_HALL) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WATERFALL_RAPIDS) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_IKANA_CANYON),
+ /* 2 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_IKANA_CASTLE) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER_INVERTED) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_EAST_CLOCK_TOWN) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WEST_CLOCK_TOWN) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_NORTH_CLOCK_TOWN) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_SNOWHEAD_TEMPLE),
+ /* 3 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_PIRATES_FORTRESS_EXTERIOR) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE_INVERTED) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_THE_MOON) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOON_DEKU_TRIAL) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOON_GORON_TRIAL) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOON_ZORA_TRIAL) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_03_80),
/* 4 */ 0,
/* 5 */ 0,
/* 6 */ 0,
- /* 7 */ 0xC000,
- /* 8 */ 0xC00,
+ /* 7 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE_PRISON),
+ /* 8 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_DOGGY_RACETRACK_HEART_PIECE),
/* 9 */ 0,
- /* 10 */ 0xC0,
+ /* 10 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_10_08),
/* 11 */ 0,
- /* 12 */ 0x300,
- /* 13 */ 0x3000,
- /* 14 */ 0xC000,
- /* 15 */ 0xC00,
+ /* 12 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_12_10),
+ /* 13 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_OCEANSIDE_WALLET_UPGRADE),
+ /* 14 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_14_80),
+ /* 15 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_15_20),
/* 16 */ 0,
/* 17 */ 0,
/* 18 */ 0,
/* 19 */ 0,
/* 20 */ 0,
/* 21 */ 0,
- /* 22 */ 0xC00C,
- /* 23 */ 0xC00C,
- /* 24 */ 0xC008,
- /* 25 */ 3,
- /* 26 */ 0x3000,
+ /* 22 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_22_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_22_80),
+ /* 23 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_23_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_23_80),
+ /* 24 */ PERSISTENT_WEEKEVENTREG_ALT(WEEKEVENTREG_24_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_24_80),
+ /* 25 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_25_01),
+ /* 26 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_26_40),
/* 27 */ 0,
/* 28 */ 0,
/* 29 */ 0,
- /* 30 */ 0xFF00,
- /* 31 */ 0xC3F,
- /* 32 */ 0x3F,
+ /* 30 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_20) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_40) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_80),
+ /* 31 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_02) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_20),
+ /* 32 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_32_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_32_02) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_32_04),
/* 33 */ 0,
/* 34 */ 0,
- /* 35 */ 0xCFFF,
+ /* 35 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_02) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_08) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_20) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_80),
/* 36 */ 0,
/* 37 */ 0,
- /* 38 */ 0xC00,
- /* 39 */ 0xC00,
+ /* 38 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_38_20),
+ /* 39 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_39_20),
/* 40 */ 0,
- /* 41 */ 0xC0,
+ /* 41 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_41_08),
/* 42 */ 0,
/* 43 */ 0,
/* 44 */ 0,
@@ -88,50 +135,111 @@ u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = {
/* 47 */ 0,
/* 48 */ 0,
/* 49 */ 0,
- /* 50 */ 0x3C,
- /* 51 */ 0x20,
+ /* 50 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_50_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_50_04),
+ /* 51 */ PERSISTENT_WEEKEVENTREG_ALT(WEEKEVENTREG_51_04),
/* 52 */ 0,
- /* 53 */ 0x300C,
- /* 54 */ 0x3000,
+ /* 53 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_53_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_53_40),
+ /* 54 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_54_40),
/* 55 */ 0,
- /* 56 */ 0xC,
- /* 57 */ 0xC0,
+ /* 56 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_56_02),
+ /* 57 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_57_08),
/* 58 */ 0,
- /* 59 */ 0xFF0,
- /* 60 */ 0x300,
+ /* 59 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_08) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_20),
+ /* 60 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_60_10),
/* 61 */ 0,
/* 62 */ 0,
- /* 63 */ 0xC00,
+ /* 63 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_63_20),
/* 64 */ 0,
/* 65 */ 0,
- /* 66 */ 0xFFFF,
- /* 67 */ 0xFFFF,
- /* 68 */ 0xFFFF,
- /* 69 */ 0xFFFF,
- /* 70 */ 0xFFFF,
- /* 71 */ 0xFFFF,
- /* 72 */ 0xFFFF,
- /* 73 */ 0xC0,
+ /* 66 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA),
+ /* 67 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG),
+ /* 68 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI),
+ /* 69 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA),
+ /* 70 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP),
+ /* 71 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK),
+ /* 72 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_72_80),
+ /* 73 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_73_08),
/* 74 */ 0,
- /* 75 */ 0xC000,
+ /* 75 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_75_80),
/* 76 */ 0,
- /* 77 */ 3,
+ /* 77 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_77_01),
/* 78 */ 0,
- /* 79 */ 0xC000,
+ /* 79 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_79_80),
/* 80 */ 0,
- /* 81 */ 0xC0,
- /* 82 */ 0x300,
+ /* 81 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_81_08),
+ /* 82 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_82_10),
/* 83 */ 0,
/* 84 */ 0,
/* 85 */ 0,
- /* 86 */ 0xC000,
- /* 87 */ 0xFFF0,
+ /* 86 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_86_80),
+ /* 87 */
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_08) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_20) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_40) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_80),
/* 88 */ 0,
/* 89 */ 0,
- /* 90 */ 0x300,
+ /* 90 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_90_10),
/* 91 */ 0,
- /* 92 */ 0xC000,
- /* 93 */ 0xF0,
+ /* 92 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_92_80),
+ /* 93 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_93_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_93_08),
/* 94 */ 0,
/* 95 */ 0,
/* 96 */ 0,
@@ -266,7 +374,10 @@ s32 gFlashSaveSizes[] = {
offsetof(SaveContext, fileNum), // size = 0x3CA0 - File 2 Owl Save Backup
};
-u8 D_801C6890[8] = { 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7 };
+// Bit Flag array in which sBitFlags8[n] is (1 << n)
+u8 sBitFlags8[] = {
+ (1 << 0), (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7),
+};
u16 D_801F6AF0;
u8 D_801F6AF2;
@@ -326,21 +437,21 @@ void Sram_SaveEndOfCycle(PlayState* play) {
sceneId = Play_GetOriginalSceneId(play->sceneId);
Play_SaveCycleSceneFlags(&play->state);
- play->actorCtx.sceneFlags.chest &= sPersistentCycleFlags[sceneId].chest;
- play->actorCtx.sceneFlags.switches[0] &= sPersistentCycleFlags[sceneId].switch0;
- play->actorCtx.sceneFlags.switches[1] &= sPersistentCycleFlags[sceneId].switch1;
- play->actorCtx.sceneFlags.collectible[0] &= sPersistentCycleFlags[sceneId].collectible;
+ play->actorCtx.sceneFlags.chest &= sPersistentCycleSceneFlags[sceneId].chest;
+ play->actorCtx.sceneFlags.switches[0] &= sPersistentCycleSceneFlags[sceneId].switch0;
+ play->actorCtx.sceneFlags.switches[1] &= sPersistentCycleSceneFlags[sceneId].switch1;
+ play->actorCtx.sceneFlags.collectible[0] &= sPersistentCycleSceneFlags[sceneId].collectible;
play->actorCtx.sceneFlags.clearedRoom = 0;
for (i = 0; i < SCENE_MAX; i++) {
gSaveContext.cycleSceneFlags[i].switch0 =
- ((void)0, gSaveContext.cycleSceneFlags[i].switch0) & sPersistentCycleFlags[i].switch0;
+ ((void)0, gSaveContext.cycleSceneFlags[i].switch0) & sPersistentCycleSceneFlags[i].switch0;
gSaveContext.cycleSceneFlags[i].switch1 =
- ((void)0, gSaveContext.cycleSceneFlags[i].switch1) & sPersistentCycleFlags[i].switch1;
+ ((void)0, gSaveContext.cycleSceneFlags[i].switch1) & sPersistentCycleSceneFlags[i].switch1;
gSaveContext.cycleSceneFlags[i].chest =
- ((void)0, gSaveContext.cycleSceneFlags[i].chest) & sPersistentCycleFlags[i].chest;
+ ((void)0, gSaveContext.cycleSceneFlags[i].chest) & sPersistentCycleSceneFlags[i].chest;
gSaveContext.cycleSceneFlags[i].collectible =
- ((void)0, gSaveContext.cycleSceneFlags[i].collectible) & sPersistentCycleFlags[i].collectible;
+ ((void)0, gSaveContext.cycleSceneFlags[i].collectible) & sPersistentCycleSceneFlags[i].collectible;
gSaveContext.cycleSceneFlags[i].clearedRoom = 0;
gSaveContext.save.saveInfo.permanentSceneFlags[i].unk_14 = 0;
gSaveContext.save.saveInfo.permanentSceneFlags[i].rooms = 0;
@@ -362,15 +473,15 @@ void Sram_SaveEndOfCycle(PlayState* play) {
Inventory_DeleteItem(ITEM_MASK_FIERCE_DEITY, SLOT(ITEM_MASK_FIERCE_DEITY));
}
- for (i = 0; i < ARRAY_COUNT(D_801C66D0); i++) {
- u16 phi_v1_3 = D_801C66D0[i];
+ for (i = 0; i < ARRAY_COUNT(sPersistentCycleWeekEventRegs); i++) {
+ u16 isPersistentBits = sPersistentCycleWeekEventRegs[i];
- for (j = 0; j < ARRAY_COUNT(D_801C6890); j++) {
- if ((phi_v1_3 & 3) == 0) {
+ for (j = 0; j < ARRAY_COUNT(sBitFlags8); j++) {
+ if (!(isPersistentBits & 3)) {
gSaveContext.save.saveInfo.weekEventReg[i] =
- ((void)0, gSaveContext.save.saveInfo.weekEventReg[i]) & (0xFF ^ D_801C6890[j]);
+ ((void)0, gSaveContext.save.saveInfo.weekEventReg[i]) & (0xFF ^ sBitFlags8[j]);
}
- phi_v1_3 >>= 2;
+ isPersistentBits >>= 2;
}
}