mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-20 15:41:10 -04:00
Scene table (#1207)
* scene_table.h * Move restriction flgs to scene_table.h * format * rename D_801C5FC0 to sPersistentCycleFlags * format * move persistent flags to table * cleanups * review * PERSISTENT_CYCLE_FLAGS_SET * PERSISTENT_CYCLE_FLAGS_NONE * move comment above the scene * bss * tons of bss * whoops * bss * bss * bss * Update include/tables/scene_table.h Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/code/z_scene_table.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * SCENE_MAX * bss * bss * bss --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "buffers.h"
|
||||
#include "system_malloc.h"
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
* -Y +Z -Y
|
||||
*
|
||||
*/
|
||||
|
||||
#include "global.h"
|
||||
#include "z64quake.h"
|
||||
#include "z64shrink_window.h"
|
||||
|
||||
@@ -273,6 +273,7 @@ void EffectSS_DrawAllParticles(PlayState* play) {
|
||||
|
||||
s16 func_800B096C(s16 arg0, s16 arg1, s32 arg2) {
|
||||
s16 ret = (arg2 == 0) ? arg1 : arg0 + (s32)((arg1 - arg0) / (f32)arg2);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
+9
-113
@@ -73,125 +73,21 @@ Input sPostmanTimerInput[MAXCONTROLLERS];
|
||||
#define RESTRICTIONS_MOON RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0)
|
||||
#define RESTRICTIONS_NO_DOUBLE_TIME RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
#define DEFINE_SCENE(_name, enumValue, _textId, _drawConfig, restrictionFlags, _persistentCycleFlags) \
|
||||
{ enumValue, restrictionFlags },
|
||||
|
||||
#define DEFINE_SCENE_UNSET(enumValue) { enumValue, RESTRICTIONS_NONE },
|
||||
|
||||
RestrictionFlags sRestrictionFlags[] = {
|
||||
{ SCENE_20SICHITAI2, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_1, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_2, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_3, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_4, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_5, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_6, RESTRICTIONS_NONE },
|
||||
{ SCENE_KAKUSIANA, RESTRICTIONS_NONE },
|
||||
{ SCENE_SPOT00, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_9, RESTRICTIONS_NONE },
|
||||
{ SCENE_WITCH_SHOP, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_LAST_BS, RESTRICTIONS_MOON },
|
||||
{ SCENE_HAKASHITA, RESTRICTIONS_NONE },
|
||||
{ SCENE_AYASHIISHOP, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_UNSET_E, RESTRICTIONS_NONE },
|
||||
{ SCENE_UNSET_F, RESTRICTIONS_NONE },
|
||||
{ SCENE_OMOYA, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0) },
|
||||
{ SCENE_BOWLING, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_SONCHONOIE, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_IKANA, RESTRICTIONS_NONE },
|
||||
{ SCENE_KAIZOKU, RESTRICTIONS_NONE },
|
||||
{ SCENE_MILK_BAR, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_INISIE_N, RESTRICTIONS_NONE },
|
||||
{ SCENE_TAKARAYA, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_INISIE_R, RESTRICTIONS_NONE },
|
||||
{ SCENE_OKUJOU, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0) },
|
||||
{ SCENE_OPENINGDAN, RESTRICTIONS_NONE },
|
||||
{ SCENE_MITURIN, RESTRICTIONS_NONE },
|
||||
{ SCENE_13HUBUKINOMITI, RESTRICTIONS_NONE },
|
||||
{ SCENE_CASTLE, RESTRICTIONS_NONE },
|
||||
{ SCENE_DEKUTES, RESTRICTIONS_SET(0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1) },
|
||||
{ SCENE_MITURIN_BS, RESTRICTIONS_NONE },
|
||||
{ SCENE_SYATEKI_MIZU, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_HAKUGIN, RESTRICTIONS_NONE },
|
||||
{ SCENE_ROMANYMAE, RESTRICTIONS_NONE },
|
||||
{ SCENE_PIRATE, RESTRICTIONS_NONE },
|
||||
{ SCENE_SYATEKI_MORI, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_SINKAI, RESTRICTIONS_NONE },
|
||||
{ SCENE_YOUSEI_IZUMI, RESTRICTIONS_NONE },
|
||||
{ SCENE_KINSTA1, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_KINDAN2, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_TENMON_DAI, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0) },
|
||||
{ SCENE_LAST_DEKU, RESTRICTIONS_MOON },
|
||||
{ SCENE_22DEKUCITY, RESTRICTIONS_NONE },
|
||||
{ SCENE_KAJIYA, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) },
|
||||
{ SCENE_00KEIKOKU, RESTRICTIONS_NONE },
|
||||
{ SCENE_POSTHOUSE, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) },
|
||||
{ SCENE_LABO, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) },
|
||||
{ SCENE_DANPEI2TEST, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_UNSET_31, RESTRICTIONS_NONE },
|
||||
{ SCENE_16GORON_HOUSE, RESTRICTIONS_NONE },
|
||||
{ SCENE_33ZORACITY, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0) },
|
||||
{ SCENE_8ITEMSHOP, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) },
|
||||
{ SCENE_F01, RESTRICTIONS_NONE },
|
||||
{ SCENE_INISIE_BS, RESTRICTIONS_NONE },
|
||||
{ SCENE_30GYOSON, RESTRICTIONS_NONE },
|
||||
{ SCENE_31MISAKI, RESTRICTIONS_NONE },
|
||||
{ SCENE_TAKARAKUJI, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) },
|
||||
{ SCENE_UNSET_3A, RESTRICTIONS_NONE },
|
||||
{ SCENE_TORIDE, RESTRICTIONS_NONE },
|
||||
{ SCENE_FISHERMAN, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) },
|
||||
{ SCENE_GORONSHOP, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_DEKU_KING, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) },
|
||||
{ SCENE_LAST_GORON, RESTRICTIONS_MOON },
|
||||
{ SCENE_24KEMONOMITI, RESTRICTIONS_NONE },
|
||||
{ SCENE_F01_B, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_F01C, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_BOTI, RESTRICTIONS_NONE },
|
||||
{ SCENE_HAKUGIN_BS, RESTRICTIONS_NONE },
|
||||
{ SCENE_20SICHITAI, RESTRICTIONS_NONE },
|
||||
{ SCENE_21MITURINMAE, RESTRICTIONS_NONE },
|
||||
{ SCENE_LAST_ZORA, RESTRICTIONS_MOON },
|
||||
{ SCENE_11GORONNOSATO2, RESTRICTIONS_NONE },
|
||||
{ SCENE_SEA, RESTRICTIONS_NONE },
|
||||
{ SCENE_35TAKI, RESTRICTIONS_NONE },
|
||||
{ SCENE_REDEAD, RESTRICTIONS_NONE },
|
||||
{ SCENE_BANDROOM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) },
|
||||
{ SCENE_11GORONNOSATO, RESTRICTIONS_NONE },
|
||||
{ SCENE_GORON_HAKA, RESTRICTIONS_NONE },
|
||||
{ SCENE_SECOM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0) },
|
||||
{ SCENE_10YUKIYAMANOMURA, RESTRICTIONS_NONE },
|
||||
{ SCENE_TOUGITES, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0) },
|
||||
{ SCENE_DANPEI, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_IKANAMAE, RESTRICTIONS_NONE },
|
||||
{ SCENE_DOUJOU, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) },
|
||||
{ SCENE_MUSICHOUSE, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) },
|
||||
{ SCENE_IKNINSIDE, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0) },
|
||||
{ SCENE_MAP_SHOP, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_F40, RESTRICTIONS_NONE },
|
||||
{ SCENE_F41, RESTRICTIONS_NONE },
|
||||
{ SCENE_10YUKIYAMANOMURA2, RESTRICTIONS_NONE },
|
||||
{ SCENE_14YUKIDAMANOMITI, RESTRICTIONS_NONE },
|
||||
{ SCENE_12HAKUGINMAE, RESTRICTIONS_NONE },
|
||||
{ SCENE_17SETUGEN, RESTRICTIONS_NONE },
|
||||
{ SCENE_17SETUGEN2, RESTRICTIONS_NONE },
|
||||
{ SCENE_SEA_BS, RESTRICTIONS_NONE },
|
||||
{ SCENE_RANDOM, RESTRICTIONS_NONE },
|
||||
{ SCENE_YADOYA, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_KONPEKI_ENT, RESTRICTIONS_NONE },
|
||||
{ SCENE_INSIDETOWER, RESTRICTIONS_SET(0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0) },
|
||||
{ SCENE_26SARUNOMORI, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_LOST_WOODS, RESTRICTIONS_NONE },
|
||||
{ SCENE_LAST_LINK, RESTRICTIONS_MOON },
|
||||
{ SCENE_SOUGEN, RESTRICTIONS_MOON },
|
||||
{ SCENE_BOMYA, RESTRICTIONS_INDOORS },
|
||||
{ SCENE_KYOJINNOMA, RESTRICTIONS_NONE },
|
||||
{ SCENE_KOEPONARACE, RESTRICTIONS_NO_DOUBLE_TIME },
|
||||
{ SCENE_GORONRACE, RESTRICTIONS_NONE },
|
||||
{ SCENE_TOWN, RESTRICTIONS_NONE },
|
||||
{ SCENE_ICHIBA, RESTRICTIONS_NONE },
|
||||
{ SCENE_BACKTOWN, RESTRICTIONS_NONE },
|
||||
{ SCENE_CLOCKTOWER, RESTRICTIONS_NONE },
|
||||
{ SCENE_ALLEY, RESTRICTIONS_NONE },
|
||||
#include "tables/scene_table.h"
|
||||
// { RESTRICTIONS_TABLE_END, RESTRICTIONS_NONE }, // See note below
|
||||
};
|
||||
//! @note: in `Interface_SetSceneRestrictions`, `RESTRICTIONS_TABLE_END` act as a terminating value to
|
||||
// stop looping through the array. If a scene is missing, then this will cause issues.
|
||||
|
||||
#undef DEFINE_SCENE
|
||||
#undef DEFINE_SCENE_UNSET
|
||||
|
||||
s16 sPictoState = PICTO_BOX_STATE_OFF;
|
||||
s16 sPictoPhotoBeingTaken = false;
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
|
||||
#define FLAGS \
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
|
||||
s32 sMatAnimStep;
|
||||
|
||||
+18
-118
@@ -1,127 +1,27 @@
|
||||
#include "global.h"
|
||||
|
||||
#define SCENE_ENTRY(name, textId, config) \
|
||||
{ { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, config, 0, 0 }
|
||||
#define DEFINE_SCENE(name, _enumValue, textId, drawConfig, _restrictionFlags, _persistentCycleFlags) \
|
||||
DECLARE_ROM_SEGMENT(name)
|
||||
|
||||
#define SCENE_ENTRY_NONE() \
|
||||
{ { 0, 0 }, 0, 0, 0, 0, 0 }
|
||||
#define DEFINE_SCENE_UNSET(_enumValue)
|
||||
|
||||
SceneTableEntry gSceneTable[] = {
|
||||
/* 0x00 */ SCENE_ENTRY(Z2_20SICHITAI2, 0x0116, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x01 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x02 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x03 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x04 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x05 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x06 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x07 */ SCENE_ENTRY(KAKUSIANA, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x08 */ SCENE_ENTRY(SPOT00, 0x0000, SCENE_DRAW_CFG_NOTHING),
|
||||
/* 0x09 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x0A */ SCENE_ENTRY(Z2_WITCH_SHOP, 0x011A, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x0B */ SCENE_ENTRY(Z2_LAST_BS, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x0C */ SCENE_ENTRY(Z2_HAKASHITA, 0x0113, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x0D */ SCENE_ENTRY(Z2_AYASHIISHOP, 0x010E, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x0E */ SCENE_ENTRY_NONE(),
|
||||
/* 0x0F */ SCENE_ENTRY_NONE(),
|
||||
/* 0x10 */ SCENE_ENTRY(Z2_OMOYA, 0x0132, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x11 */ SCENE_ENTRY(Z2_BOWLING, 0x0108, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x12 */ SCENE_ENTRY(Z2_SONCHONOIE, 0x010B, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x13 */ SCENE_ENTRY(Z2_IKANA, 0x0141, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x14 */ SCENE_ENTRY(Z2_KAIZOKU, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x15 */ SCENE_ENTRY(Z2_MILK_BAR, 0x010C, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x16 */ SCENE_ENTRY(Z2_INISIE_N, 0x0144, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x17 */ SCENE_ENTRY(Z2_TAKARAYA, 0x0109, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x18 */ SCENE_ENTRY(Z2_INISIE_R, 0x0144, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x19 */ SCENE_ENTRY(Z2_OKUJOU, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x1A */ SCENE_ENTRY(Z2_OPENINGDAN, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x1B */ SCENE_ENTRY(Z2_MITURIN, 0x011F, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x1C */ SCENE_ENTRY(Z2_13HUBUKINOMITI, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x1D */ SCENE_ENTRY(Z2_CASTLE, 0x0142, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x1E */ SCENE_ENTRY(Z2_DEKUTES, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x1F */ SCENE_ENTRY(Z2_MITURIN_BS, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x20 */ SCENE_ENTRY(Z2_SYATEKI_MIZU, 0x0107, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x21 */ SCENE_ENTRY(Z2_HAKUGIN, 0x012B, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x22 */ SCENE_ENTRY(Z2_ROMANYMAE, 0x0149, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x23 */ SCENE_ENTRY(Z2_PIRATE, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x24 */ SCENE_ENTRY(Z2_SYATEKI_MORI, 0x011B, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x25 */ SCENE_ENTRY(Z2_SINKAI, 0x0135, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x26 */ SCENE_ENTRY(Z2_YOUSEI_IZUMI, 0x013E, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x27 */ SCENE_ENTRY(Z2_KINSTA1, 0x011E, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x28 */ SCENE_ENTRY(Z2_KINDAN2, 0x013F, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x29 */ SCENE_ENTRY(Z2_TENMON_DAI, 0x0114, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x2A */ SCENE_ENTRY(Z2_LAST_DEKU, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x2B */ SCENE_ENTRY(Z2_22DEKUCITY, 0x0118, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x2C */ SCENE_ENTRY(Z2_KAJIYA, 0x0127, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x2D */ SCENE_ENTRY(Z2_00KEIKOKU, 0x0100, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x2E */ SCENE_ENTRY(Z2_POSTHOUSE, 0x0111, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x2F */ SCENE_ENTRY(Z2_LABO, 0x013A, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x30 */ SCENE_ENTRY(Z2_DANPEI2TEST, 0x0113, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x31 */ SCENE_ENTRY_NONE(),
|
||||
/* 0x32 */ SCENE_ENTRY(Z2_16GORON_HOUSE, 0x0124, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x33 */ SCENE_ENTRY(Z2_33ZORACITY, 0x0136, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x34 */ SCENE_ENTRY(Z2_8ITEMSHOP, 0x010F, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x35 */ SCENE_ENTRY(Z2_F01, 0x012E, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x36 */ SCENE_ENTRY(Z2_INISIE_BS, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x37 */ SCENE_ENTRY(Z2_30GYOSON, 0x0134, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x38 */ SCENE_ENTRY(Z2_31MISAKI, 0x0134, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x39 */ SCENE_ENTRY(Z2_TAKARAKUJI, 0x0112, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x3A */ SCENE_ENTRY_NONE(),
|
||||
/* 0x3B */ SCENE_ENTRY(Z2_TORIDE, 0x0138, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x3C */ SCENE_ENTRY(Z2_FISHERMAN, 0x013B, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x3D */ SCENE_ENTRY(Z2_GORONSHOP, 0x0129, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x3E */ SCENE_ENTRY(Z2_DEKU_KING, 0x011C, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x3F */ SCENE_ENTRY(Z2_LAST_GORON, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x40 */ SCENE_ENTRY(Z2_24KEMONOMITI, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x41 */ SCENE_ENTRY(Z2_F01_B, 0x0130, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x42 */ SCENE_ENTRY(Z2_F01C, 0x012F, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x43 */ SCENE_ENTRY(Z2_BOTI, 0x0106, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x44 */ SCENE_ENTRY(Z2_HAKUGIN_BS, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x45 */ SCENE_ENTRY(Z2_20SICHITAI, 0x0116, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x46 */ SCENE_ENTRY(Z2_21MITURINMAE, 0x0117, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x47 */ SCENE_ENTRY(Z2_LAST_ZORA, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x48 */ SCENE_ENTRY(Z2_11GORONNOSATO2, 0x0123, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x49 */ SCENE_ENTRY(Z2_SEA, 0x013D, SCENE_DRAW_CFG_GREAT_BAY_TEMPLE),
|
||||
/* 0x4A */ SCENE_ENTRY(Z2_35TAKI, 0x0137, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x4B */ SCENE_ENTRY(Z2_REDEAD, 0x0145, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x4C */ SCENE_ENTRY(Z2_BANDROOM, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x4D */ SCENE_ENTRY(Z2_11GORONNOSATO, 0x0123, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x4E */ SCENE_ENTRY(Z2_GORON_HAKA, 0x012A, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x4F */ SCENE_ENTRY(Z2_SECOM, 0x0143, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP),
|
||||
/* 0x50 */ SCENE_ENTRY(Z2_10YUKIYAMANOMURA, 0x0122, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x51 */ SCENE_ENTRY(Z2_TOUGITES, 0x0146, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x52 */ SCENE_ENTRY(Z2_DANPEI, 0x0120, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x53 */ SCENE_ENTRY(Z2_IKANAMAE, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x54 */ SCENE_ENTRY(Z2_DOUJOU, 0x0110, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x55 */ SCENE_ENTRY(Z2_MUSICHOUSE, 0x0147, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP),
|
||||
/* 0x56 */ SCENE_ENTRY(Z2_IKNINSIDE, 0x0142, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x57 */ SCENE_ENTRY(Z2_MAP_SHOP, 0x0119, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x58 */ SCENE_ENTRY(Z2_F40, 0x0140, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x59 */ SCENE_ENTRY(Z2_F41, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x5A */ SCENE_ENTRY(Z2_10YUKIYAMANOMURA2, 0x0122, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x5B */ SCENE_ENTRY(Z2_14YUKIDAMANOMITI, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x5C */ SCENE_ENTRY(Z2_12HAKUGINMAE, 0x0125, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x5D */ SCENE_ENTRY(Z2_17SETUGEN, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x5E */ SCENE_ENTRY(Z2_17SETUGEN2, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x5F */ SCENE_ENTRY(Z2_SEA_BS, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x60 */ SCENE_ENTRY(Z2_RANDOM, 0x012C, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x61 */ SCENE_ENTRY(Z2_YADOYA, 0x010A, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x62 */ SCENE_ENTRY(Z2_KONPEKI_ENT, 0x0139, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x63 */ SCENE_ENTRY(Z2_INSIDETOWER, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x64 */ SCENE_ENTRY(Z2_26SARUNOMORI, 0x011D, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x65 */ SCENE_ENTRY(Z2_LOST_WOODS, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x66 */ SCENE_ENTRY(Z2_LAST_LINK, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x67 */ SCENE_ENTRY(Z2_SOUGEN, 0x0000, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x68 */ SCENE_ENTRY(Z2_BOMYA, 0x010D, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x69 */ SCENE_ENTRY(Z2_KYOJINNOMA, 0x0000, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x6A */ SCENE_ENTRY(Z2_KOEPONARACE, 0x0131, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x6B */ SCENE_ENTRY(Z2_GORONRACE, 0x0126, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x6C */ SCENE_ENTRY(Z2_TOWN, 0x0101, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x6D */ SCENE_ENTRY(Z2_ICHIBA, 0x0102, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x6E */ SCENE_ENTRY(Z2_BACKTOWN, 0x0103, SCENE_DRAW_CFG_DEFAULT),
|
||||
/* 0x6F */ SCENE_ENTRY(Z2_CLOCKTOWER, 0x0104, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
/* 0x70 */ SCENE_ENTRY(Z2_ALLEY, 0x0105, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
#include "tables/scene_table.h"
|
||||
|
||||
#undef DEFINE_SCENE
|
||||
#undef DEFINE_SCENE_UNSET
|
||||
|
||||
#define DEFINE_SCENE(name, _enumValue, textId, drawConfig, _restrictionFlags, _persistentCycleFlags) \
|
||||
{ { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, drawConfig, 0, 0 },
|
||||
|
||||
#define DEFINE_SCENE_UNSET(_enumValue) { 0 },
|
||||
|
||||
SceneTableEntry gSceneTable[SCENE_MAX] = {
|
||||
#include "tables/scene_table.h"
|
||||
};
|
||||
|
||||
#undef DEFINE_SCENE
|
||||
#undef DEFINE_SCENE_UNSET
|
||||
|
||||
static EntranceTableEntry sMayorsResidenceEntrance0[] = {
|
||||
{ SCENE_SONCHONOIE, 0, 0x4102 },
|
||||
};
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "z64skin.h"
|
||||
|
||||
|
||||
+33
-128
@@ -10,128 +10,30 @@ 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')
|
||||
|
||||
// default scene flags (?)
|
||||
// indices of subarray:
|
||||
// - 0: switch0
|
||||
// - 1: switch1
|
||||
// - 2: chest
|
||||
// - 3: collectible
|
||||
u32 D_801C5FC0[SCENE_MAX][4] = {
|
||||
{ 0xC00, 0, 0, 0x40000000 }, // SCENE_20SICHITAI2
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_1
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_2
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_3
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_4
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_5
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_6
|
||||
{ 0, 0, 0, 0xC04 }, // SCENE_KAKUSIANA
|
||||
{ 0, 0, 0, 0 }, // SCENE_SPOT00
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_9
|
||||
{ 0, 0, 0, 0 }, // SCENE_WITCH_SHOP
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_LAST_BS
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_HAKASHITA
|
||||
{ 0, 0, 0, 0 }, // SCENE_AYASHIISHOP
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_E
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_F
|
||||
{ 0, 0, 0, 0 }, // SCENE_OMOYA
|
||||
{ 0, 0, 0, 0 }, // SCENE_BOWLING
|
||||
{ 0, 0, 0, 0 }, // SCENE_SONCHONOIE
|
||||
{ 0x100000, 0, 0, 0x40000002 }, // SCENE_IKANA
|
||||
{ 0, 0, 0, 0 }, // SCENE_KAIZOKU
|
||||
{ 0, 0, 0, 0 }, // SCENE_MILK_BAR
|
||||
{ 0x4000000, 0, 0, 0 }, // SCENE_INISIE_N
|
||||
{ 2, 0, 0, 0 }, // SCENE_TAKARAYA
|
||||
{ 0x4000000, 0, 0, 0 }, // SCENE_INISIE_R
|
||||
{ 0, 0, 0, 0 }, // SCENE_OKUJOU
|
||||
{ 0xF, 0, 0, 0 }, // SCENE_OPENINGDAN
|
||||
{ 0x70B000, 0, 0, 0 }, // SCENE_MITURIN
|
||||
{ 0, 0, 0, 0 }, // SCENE_13HUBUKINOMITI
|
||||
{ 0, 0x80000000, 0, 0x400 }, // SCENE_CASTLE
|
||||
{ 0, 0, 0, 0 }, // SCENE_DEKUTES
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_MITURIN_BS
|
||||
{ 0, 0, 0, 0 }, // SCENE_SYATEKI_MIZU
|
||||
{ 0x1A00020, 0, 0, 0 }, // SCENE_HAKUGIN
|
||||
{ 0x400, 0, 0, 0 }, // SCENE_ROMANYMAE
|
||||
{ 0, 0, 0, 0x1000 }, // SCENE_PIRATE
|
||||
{ 0, 0, 0, 0 }, // SCENE_SYATEKI_MORI
|
||||
{ 0, 0, 0, 2 }, // SCENE_SINKAI
|
||||
{ 0x400, 0, 0, 0 }, // SCENE_YOUSEI_IZUMI
|
||||
{ 0, 0, 0, 0 }, // SCENE_KINSTA1
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_KINDAN2
|
||||
{ 0, 0, 0, 0 }, // SCENE_TENMON_DAI
|
||||
{ 0, 0, 0, 2 }, // SCENE_LAST_DEKU
|
||||
{ 0, 0, 0, 0x40000000 }, // SCENE_22DEKUCITY
|
||||
{ 0, 0, 0, 0 }, // SCENE_KAJIYA
|
||||
{ 0x10, 0, 0, 0 }, // SCENE_00KEIKOKU
|
||||
{ 3, 0, 0, 0 }, // SCENE_POSTHOUSE
|
||||
{ 0, 0, 0, 0 }, // SCENE_LABO
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_DANPEI2TEST
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_31
|
||||
{ 0, 0, 0, 0 }, // SCENE_16GORON_HOUSE
|
||||
{ 0, 0, 0, 0 }, // SCENE_33ZORACITY
|
||||
{ 0, 0, 0, 0 }, // SCENE_8ITEMSHOP
|
||||
{ 0, 0, 0, 0 }, // SCENE_F01
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_INISIE_BS
|
||||
{ 0x100400, 0, 0, 0x22 }, // SCENE_30GYOSON
|
||||
{ 0x400, 0, 0, 0x80 }, // SCENE_31MISAKI
|
||||
{ 0, 0, 0, 0 }, // SCENE_TAKARAKUJI
|
||||
{ 0, 0, 0, 0 }, // SCENE_UNSET_3A
|
||||
{ 0x400, 0, 0, 0 }, // SCENE_TORIDE
|
||||
{ 0, 0, 0, 0 }, // SCENE_FISHERMAN
|
||||
{ 0, 0, 0, 0 }, // SCENE_GORONSHOP
|
||||
{ 0, 0, 0, 0 }, // SCENE_DEKU_KING
|
||||
{ 0, 0, 0, 2 }, // SCENE_LAST_GORON
|
||||
{ 0, 0, 0, 0x80000002 }, // SCENE_24KEMONOMITI
|
||||
{ 0, 0, 0, 0 }, // SCENE_F01_B
|
||||
{ 0, 0, 0, 0 }, // SCENE_F01C
|
||||
{ 0, 0, 0, 0 }, // SCENE_BOTI
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_HAKUGIN_BS
|
||||
{ 0xC00, 0, 0, 0x40000000 }, // SCENE_20SICHITAI
|
||||
{ 0x102, 0, 0, 0x400 }, // SCENE_21MITURINMAE
|
||||
{ 0, 0, 0, 2 }, // SCENE_LAST_ZORA
|
||||
{ 0, 0, 0, 0x40000000 }, // SCENE_11GORONNOSATO2
|
||||
{ 0x70, 0, 0, 0 }, // SCENE_SEA
|
||||
{ 0, 0, 0, 0 }, // SCENE_35TAKI
|
||||
{ 0, 0, 0, 0 }, // SCENE_REDEAD
|
||||
{ 0, 0, 0, 0x40000000 }, // SCENE_BANDROOM
|
||||
{ 0, 0, 0, 0x40000000 }, // SCENE_11GORONNOSATO
|
||||
{ 0, 0, 0, 0 }, // SCENE_GORON_HAKA
|
||||
{ 0, 0, 0, 0 }, // SCENE_SECOM
|
||||
{ 0x100000, 0, 0, 0x80000000 }, // SCENE_10YUKIYAMANOMURA
|
||||
{ 0, 0, 0, 0 }, // SCENE_TOUGITES
|
||||
{ 0, 0, 0, 0 }, // SCENE_DANPEI
|
||||
{ 0, 0, 0, 0 }, // SCENE_IKANAMAE
|
||||
{ 0, 0, 0, 0 }, // SCENE_DOUJOU
|
||||
{ 0, 0, 0, 0 }, // SCENE_MUSICHOUSE
|
||||
{ 0, 0, 0, 0 }, // SCENE_IKNINSIDE
|
||||
{ 0, 0, 0, 0 }, // SCENE_MAP_SHOP
|
||||
{ 0x400, 0, 0, 0 }, // SCENE_F40
|
||||
{ 0x400, 0, 0, 0 }, // SCENE_F41
|
||||
{ 0x100000, 0, 0, 0x80000000 }, // SCENE_10YUKIYAMANOMURA2
|
||||
{ 0, 0, 0, 0x100 }, // SCENE_14YUKIDAMANOMITI
|
||||
{ 0x400, 0, 0, 0 }, // SCENE_12HAKUGINMAE
|
||||
{ 0, 0, 0, 0x80 }, // SCENE_17SETUGEN
|
||||
{ 0, 0, 0, 0x80 }, // SCENE_17SETUGEN2
|
||||
{ 0, 0, 0, 0x80000000 }, // SCENE_SEA_BS
|
||||
{ 0, 0, 0, 0x400 }, // SCENE_RANDOM
|
||||
{ 0, 0, 0, 0 }, // SCENE_YADOYA
|
||||
{ 0, 0, 0, 0 }, // SCENE_KONPEKI_ENT
|
||||
{ 1, 0, 0, 0 }, // SCENE_INSIDETOWER
|
||||
{ 0, 0, 0, 0 }, // SCENE_26SARUNOMORI
|
||||
{ 0, 0, 0, 0 }, // SCENE_LOST_WOODS
|
||||
{ 0, 0, 0, 2 }, // SCENE_LAST_LINK
|
||||
{ 0, 0, 0, 0 }, // SCENE_SOUGEN
|
||||
{ 0, 0, 0, 0 }, // SCENE_BOMYA
|
||||
{ 0, 0, 0, 0 }, // SCENE_KYOJINNOMA
|
||||
{ 0, 0, 0, 0 }, // SCENE_KOEPONARACE
|
||||
{ 0, 0, 0, 0 }, // SCENE_GORONRACE
|
||||
{ 1, 0, 0, 0 }, // SCENE_TOWN
|
||||
{ 0, 0, 0, 0 }, // SCENE_ICHIBA
|
||||
{ 0, 0, 0, 0x400 }, // SCENE_BACKTOWN
|
||||
{ 0x100000, 0, 0, 0x400 }, // SCENE_CLOCKTOWER
|
||||
{ 0, 0, 1, 0 }, // SCENE_ALLEY
|
||||
typedef struct PersistentCycleFlags {
|
||||
/* 0x0 */ u32 switch0;
|
||||
/* 0x4 */ u32 switch1;
|
||||
/* 0x8 */ u32 chest;
|
||||
/* 0xC */ u32 collectible;
|
||||
} PersistentCycleFlags; // 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)
|
||||
|
||||
#define DEFINE_SCENE(_name, _enumValue, _textId, _drawConfig, _restrictionFlags, persistentCycleFlags) \
|
||||
persistentCycleFlags
|
||||
#define DEFINE_SCENE_UNSET(_enumValue) PERSISTENT_CYCLE_FLAGS_NONE
|
||||
|
||||
/**
|
||||
* Array of bitwise flags which won't be turned off on a cycle reset (will persist between cycles)
|
||||
*/
|
||||
PersistentCycleFlags sPersistentCycleFlags[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
|
||||
// weekEventReg flags which will be not be cleared on a cycle reset
|
||||
u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = {
|
||||
@@ -350,18 +252,21 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
sceneId = Play_GetOriginalSceneId(play->sceneId);
|
||||
Play_SaveCycleSceneFlags(&play->state);
|
||||
|
||||
play->actorCtx.sceneFlags.chest &= D_801C5FC0[sceneId][2];
|
||||
play->actorCtx.sceneFlags.switches[0] &= D_801C5FC0[sceneId][0];
|
||||
play->actorCtx.sceneFlags.switches[1] &= D_801C5FC0[sceneId][1];
|
||||
play->actorCtx.sceneFlags.collectible[0] &= D_801C5FC0[sceneId][3];
|
||||
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.clearedRoom = 0;
|
||||
|
||||
for (i = 0; i < SCENE_MAX; i++) {
|
||||
gSaveContext.cycleSceneFlags[i].switch0 = ((void)0, gSaveContext.cycleSceneFlags[i].switch0) & D_801C5FC0[i][0];
|
||||
gSaveContext.cycleSceneFlags[i].switch1 = ((void)0, gSaveContext.cycleSceneFlags[i].switch1) & D_801C5FC0[i][1];
|
||||
gSaveContext.cycleSceneFlags[i].chest = ((void)0, gSaveContext.cycleSceneFlags[i].chest) & D_801C5FC0[i][2];
|
||||
gSaveContext.cycleSceneFlags[i].switch0 =
|
||||
((void)0, gSaveContext.cycleSceneFlags[i].switch0) & sPersistentCycleFlags[i].switch0;
|
||||
gSaveContext.cycleSceneFlags[i].switch1 =
|
||||
((void)0, gSaveContext.cycleSceneFlags[i].switch1) & sPersistentCycleFlags[i].switch1;
|
||||
gSaveContext.cycleSceneFlags[i].chest =
|
||||
((void)0, gSaveContext.cycleSceneFlags[i].chest) & sPersistentCycleFlags[i].chest;
|
||||
gSaveContext.cycleSceneFlags[i].collectible =
|
||||
((void)0, gSaveContext.cycleSceneFlags[i].collectible) & D_801C5FC0[i][3];
|
||||
((void)0, gSaveContext.cycleSceneFlags[i].collectible) & sPersistentCycleFlags[i].collectible;
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = 0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].unk_14 = 0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].rooms = 0;
|
||||
|
||||
Reference in New Issue
Block a user