mirror of
https://github.com/zeldaret/mm.git
synced 2025-02-21 14:00:48 +00:00
Persistent Cycle Weekeventregs (#1267)
* persistent weekeventregs * move macro * PR Suggestions * 2 to ALT * PR Suggestions
This commit is contained in:
parent
8c961f2b16
commit
f05d1723d6
@ -68,6 +68,17 @@
|
||||
#define ALIGN64(val) (((val) + 0x3F) & ~0x3F)
|
||||
#define ALIGN256(val) (((val) + 0xFF) & ~0xFF)
|
||||
|
||||
#define BIT_FLAG_TO_SHIFT(flag) \
|
||||
((flag & 0x80) ? 7 : \
|
||||
(flag & 0x40) ? 6 : \
|
||||
(flag & 0x20) ? 5 : \
|
||||
(flag & 0x10) ? 4 : \
|
||||
(flag & 0x8) ? 3 : \
|
||||
(flag & 0x4) ? 2 : \
|
||||
(flag & 0x2) ? 1 : \
|
||||
(flag & 0x1) ? 0 : \
|
||||
0)
|
||||
|
||||
/**
|
||||
* `x` vertex x
|
||||
* `y` vertex y
|
||||
|
@ -580,17 +580,6 @@ typedef union CutsceneData {
|
||||
s8 b[4];
|
||||
} CutsceneData;
|
||||
|
||||
#define BIT_FLAG_TO_SHIFT(flag) \
|
||||
((flag & 0x80) ? 7 : \
|
||||
(flag & 0x40) ? 6 : \
|
||||
(flag & 0x20) ? 5 : \
|
||||
(flag & 0x10) ? 4 : \
|
||||
(flag & 0x8) ? 3 : \
|
||||
(flag & 0x4) ? 2 : \
|
||||
(flag & 0x2) ? 1 : \
|
||||
(flag & 0x1) ? 0 : \
|
||||
0)
|
||||
|
||||
// Do not trigger the scripted cutscene upon any spawn
|
||||
#define CS_SPAWN_FLAG_NONE 0xFF
|
||||
// Always trigger the scripted cutscene upon the specified spawn
|
||||
|
@ -970,7 +970,7 @@ typedef enum {
|
||||
#define WEEKEVENTREG_51_40 PACK_WEEKEVENTREG_FLAG(51, 0x40)
|
||||
#define WEEKEVENTREG_51_80 PACK_WEEKEVENTREG_FLAG(51, 0x80)
|
||||
|
||||
// ProtectedCremia
|
||||
// Protected Cremia
|
||||
#define WEEKEVENTREG_ESCORTED_CREMIA PACK_WEEKEVENTREG_FLAG(52, 0x01)
|
||||
// Lose Milk Run minigame
|
||||
#define WEEKEVENTREG_52_02 PACK_WEEKEVENTREG_FLAG(52, 0x02)
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1925,8 +1925,8 @@
|
||||
0x801C5EB0:("D_801C5EB0","UNK_TYPE4","",0x4),
|
||||
0x801C5EC4:("D_801C5EC4","UNK_TYPE2","",0x2),
|
||||
0x801C5F44:("D_801C5F44","UNK_TYPE4","",0x4),
|
||||
0x801C5FC0:("sPersistentCycleFlags","u32","[452]",0x710),
|
||||
0x801C66D0:("D_801C66D0","UNK_TYPE2","",0x2),
|
||||
0x801C5FC0:("sPersistentCycleSceneFlags","u32","[452]",0x710),
|
||||
0x801C66D0:("sPersistentCycleWeekEventRegs","UNK_TYPE2","",0x2),
|
||||
0x801C6798:("gSramSlotOffsets","UNK_TYPE4","",0x4),
|
||||
0x801C67B0:("gAmmoItems","UNK_TYPE1","",0x1),
|
||||
0x801C67C8:("gFlashSaveStartPages","s32","[10]",0x28),
|
||||
|
Loading…
x
Reference in New Issue
Block a user