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:
Anghelo Carvajal
2023-05-30 09:57:14 +10:00
committed by GitHub
co-authored by engineer124
parent 65d72a54cf
commit 4143097c5a
22 changed files with 308 additions and 585 deletions
+9 -113
View File
@@ -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;