From 4143097c5a6080a1ebbb3d328b85178ab13ab8e6 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Mon, 29 May 2023 19:57:14 -0400 Subject: [PATCH] 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> --- include/segment_symbols.h | 102 -------- include/tables/scene_table.h | 229 ++++++++++++++++++ include/variables.h | 4 +- include/z64scene.h | 122 +--------- src/boot_O2_g3/CIC6105.c | 1 - src/boot_O2_g3/yaz0.c | 1 + src/code/sys_cfb.c | 1 + src/code/z_camera.c | 1 + src/code/z_effect_soft_sprite.c | 1 + src/code/z_parameter.c | 122 +--------- src/code/z_player_call.c | 1 - src/code/z_scene_proc.c | 1 - src/code/z_scene_table.c | 136 ++--------- src/code/z_skin.c | 1 - src/code/z_sram_NES.c | 161 +++--------- src/libultra/flash/osFlash.c | 1 - .../z_bg_hakugin_switch.c | 1 + src/overlays/actors/ovl_Boss_06/z_boss_06.c | 1 - .../actors/ovl_En_Fishing/z_en_fishing.c | 2 +- src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c | 1 - src/overlays/actors/ovl_En_Test7/z_en_test7.c | 1 + tools/disasm/variables.txt | 2 +- 22 files changed, 308 insertions(+), 585 deletions(-) create mode 100644 include/tables/scene_table.h diff --git a/include/segment_symbols.h b/include/segment_symbols.h index 9fc49a6cb5..a8e88e794c 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -124,56 +124,44 @@ DECLARE_ROM_SEGMENT(d2_fine_pal_static) DECLARE_ROM_SEGMENT(elf_message_field) DECLARE_ROM_SEGMENT(elf_message_ydan) -DECLARE_ROM_SEGMENT(Z2_20SICHITAI2) DECLARE_ROM_SEGMENT(Z2_20SICHITAI2_room_00) DECLARE_ROM_SEGMENT(Z2_20SICHITAI2_room_01) DECLARE_ROM_SEGMENT(Z2_20SICHITAI2_room_02) -DECLARE_ROM_SEGMENT(Z2_WITCH_SHOP) DECLARE_ROM_SEGMENT(Z2_WITCH_SHOP_room_00) -DECLARE_ROM_SEGMENT(Z2_LAST_BS) DECLARE_ROM_SEGMENT(Z2_LAST_BS_room_00) -DECLARE_ROM_SEGMENT(Z2_HAKASHITA) DECLARE_ROM_SEGMENT(Z2_HAKASHITA_room_00) DECLARE_ROM_SEGMENT(Z2_HAKASHITA_room_01) DECLARE_ROM_SEGMENT(Z2_HAKASHITA_room_02) DECLARE_ROM_SEGMENT(Z2_HAKASHITA_room_03) DECLARE_ROM_SEGMENT(Z2_HAKASHITA_room_04) -DECLARE_ROM_SEGMENT(Z2_AYASHIISHOP) DECLARE_ROM_SEGMENT(Z2_AYASHIISHOP_room_00) DECLARE_ROM_SEGMENT(Z2_AYASHIISHOP_room_01) -DECLARE_ROM_SEGMENT(Z2_OMOYA) DECLARE_ROM_SEGMENT(Z2_OMOYA_room_00) DECLARE_ROM_SEGMENT(Z2_OMOYA_room_01) DECLARE_ROM_SEGMENT(Z2_OMOYA_room_02) -DECLARE_ROM_SEGMENT(Z2_BOWLING) DECLARE_ROM_SEGMENT(Z2_BOWLING_room_00) -DECLARE_ROM_SEGMENT(Z2_SONCHONOIE) DECLARE_ROM_SEGMENT(Z2_SONCHONOIE_room_00) DECLARE_ROM_SEGMENT(Z2_SONCHONOIE_room_01) DECLARE_ROM_SEGMENT(Z2_SONCHONOIE_room_02) DECLARE_ROM_SEGMENT(Z2_SONCHONOIE_room_03) -DECLARE_ROM_SEGMENT(Z2_IKANA) DECLARE_ROM_SEGMENT(Z2_IKANA_room_00) DECLARE_ROM_SEGMENT(Z2_IKANA_room_01) DECLARE_ROM_SEGMENT(Z2_IKANA_room_02) DECLARE_ROM_SEGMENT(Z2_IKANA_room_03) DECLARE_ROM_SEGMENT(Z2_IKANA_room_04) -DECLARE_ROM_SEGMENT(Z2_KAIZOKU) DECLARE_ROM_SEGMENT(Z2_KAIZOKU_room_00) -DECLARE_ROM_SEGMENT(Z2_MILK_BAR) DECLARE_ROM_SEGMENT(Z2_MILK_BAR_room_00) -DECLARE_ROM_SEGMENT(Z2_INISIE_N) DECLARE_ROM_SEGMENT(Z2_INISIE_N_room_00) DECLARE_ROM_SEGMENT(Z2_INISIE_N_room_01) DECLARE_ROM_SEGMENT(Z2_INISIE_N_room_02) @@ -187,10 +175,8 @@ DECLARE_ROM_SEGMENT(Z2_INISIE_N_room_09) DECLARE_ROM_SEGMENT(Z2_INISIE_N_room_10) DECLARE_ROM_SEGMENT(Z2_INISIE_N_room_11) -DECLARE_ROM_SEGMENT(Z2_TAKARAYA) DECLARE_ROM_SEGMENT(Z2_TAKARAYA_room_00) -DECLARE_ROM_SEGMENT(Z2_INISIE_R) DECLARE_ROM_SEGMENT(Z2_INISIE_R_room_00) DECLARE_ROM_SEGMENT(Z2_INISIE_R_room_01) DECLARE_ROM_SEGMENT(Z2_INISIE_R_room_02) @@ -204,14 +190,11 @@ DECLARE_ROM_SEGMENT(Z2_INISIE_R_room_09) DECLARE_ROM_SEGMENT(Z2_INISIE_R_room_10) DECLARE_ROM_SEGMENT(Z2_INISIE_R_room_11) -DECLARE_ROM_SEGMENT(Z2_OKUJOU) DECLARE_ROM_SEGMENT(Z2_OKUJOU_room_00) -DECLARE_ROM_SEGMENT(Z2_OPENINGDAN) DECLARE_ROM_SEGMENT(Z2_OPENINGDAN_room_00) DECLARE_ROM_SEGMENT(Z2_OPENINGDAN_room_01) -DECLARE_ROM_SEGMENT(Z2_MITURIN) DECLARE_ROM_SEGMENT(Z2_MITURIN_room_00) DECLARE_ROM_SEGMENT(Z2_MITURIN_room_01) DECLARE_ROM_SEGMENT(Z2_MITURIN_room_02) @@ -226,10 +209,8 @@ DECLARE_ROM_SEGMENT(Z2_MITURIN_room_10) DECLARE_ROM_SEGMENT(Z2_MITURIN_room_11) DECLARE_ROM_SEGMENT(Z2_MITURIN_room_12) -DECLARE_ROM_SEGMENT(Z2_13HUBUKINOMITI) DECLARE_ROM_SEGMENT(Z2_13HUBUKINOMITI_room_00) -DECLARE_ROM_SEGMENT(Z2_CASTLE) DECLARE_ROM_SEGMENT(Z2_CASTLE_room_00) DECLARE_ROM_SEGMENT(Z2_CASTLE_room_01) DECLARE_ROM_SEGMENT(Z2_CASTLE_room_02) @@ -241,16 +222,12 @@ DECLARE_ROM_SEGMENT(Z2_CASTLE_room_07) DECLARE_ROM_SEGMENT(Z2_CASTLE_room_08) DECLARE_ROM_SEGMENT(Z2_CASTLE_room_09) -DECLARE_ROM_SEGMENT(Z2_DEKUTES) DECLARE_ROM_SEGMENT(Z2_DEKUTES_room_00) -DECLARE_ROM_SEGMENT(Z2_MITURIN_BS) DECLARE_ROM_SEGMENT(Z2_MITURIN_BS_room_00) -DECLARE_ROM_SEGMENT(Z2_SYATEKI_MIZU) DECLARE_ROM_SEGMENT(Z2_SYATEKI_MIZU_room_00) -DECLARE_ROM_SEGMENT(Z2_HAKUGIN) DECLARE_ROM_SEGMENT(Z2_HAKUGIN_room_00) DECLARE_ROM_SEGMENT(Z2_HAKUGIN_room_01) DECLARE_ROM_SEGMENT(Z2_HAKUGIN_room_02) @@ -266,10 +243,8 @@ DECLARE_ROM_SEGMENT(Z2_HAKUGIN_room_11) DECLARE_ROM_SEGMENT(Z2_HAKUGIN_room_12) DECLARE_ROM_SEGMENT(Z2_HAKUGIN_room_13) -DECLARE_ROM_SEGMENT(Z2_ROMANYMAE) DECLARE_ROM_SEGMENT(Z2_ROMANYMAE_room_00) -DECLARE_ROM_SEGMENT(Z2_PIRATE) DECLARE_ROM_SEGMENT(Z2_PIRATE_room_00) DECLARE_ROM_SEGMENT(Z2_PIRATE_room_01) DECLARE_ROM_SEGMENT(Z2_PIRATE_room_02) @@ -286,20 +261,16 @@ DECLARE_ROM_SEGMENT(Z2_PIRATE_room_12) DECLARE_ROM_SEGMENT(Z2_PIRATE_room_13) DECLARE_ROM_SEGMENT(Z2_PIRATE_room_14) -DECLARE_ROM_SEGMENT(Z2_SYATEKI_MORI) DECLARE_ROM_SEGMENT(Z2_SYATEKI_MORI_room_00) -DECLARE_ROM_SEGMENT(Z2_SINKAI) DECLARE_ROM_SEGMENT(Z2_SINKAI_room_00) -DECLARE_ROM_SEGMENT(Z2_YOUSEI_IZUMI) DECLARE_ROM_SEGMENT(Z2_YOUSEI_IZUMI_room_00) DECLARE_ROM_SEGMENT(Z2_YOUSEI_IZUMI_room_01) DECLARE_ROM_SEGMENT(Z2_YOUSEI_IZUMI_room_02) DECLARE_ROM_SEGMENT(Z2_YOUSEI_IZUMI_room_03) DECLARE_ROM_SEGMENT(Z2_YOUSEI_IZUMI_room_04) -DECLARE_ROM_SEGMENT(Z2_KINSTA1) DECLARE_ROM_SEGMENT(Z2_KINSTA1_room_00) DECLARE_ROM_SEGMENT(Z2_KINSTA1_room_01) DECLARE_ROM_SEGMENT(Z2_KINSTA1_room_02) @@ -307,7 +278,6 @@ DECLARE_ROM_SEGMENT(Z2_KINSTA1_room_03) DECLARE_ROM_SEGMENT(Z2_KINSTA1_room_04) DECLARE_ROM_SEGMENT(Z2_KINSTA1_room_05) -DECLARE_ROM_SEGMENT(Z2_KINDAN2) DECLARE_ROM_SEGMENT(Z2_KINDAN2_room_00) DECLARE_ROM_SEGMENT(Z2_KINDAN2_room_01) DECLARE_ROM_SEGMENT(Z2_KINDAN2_room_02) @@ -315,108 +285,77 @@ DECLARE_ROM_SEGMENT(Z2_KINDAN2_room_03) DECLARE_ROM_SEGMENT(Z2_KINDAN2_room_04) DECLARE_ROM_SEGMENT(Z2_KINDAN2_room_05) -DECLARE_ROM_SEGMENT(Z2_TENMON_DAI) DECLARE_ROM_SEGMENT(Z2_TENMON_DAI_room_00) DECLARE_ROM_SEGMENT(Z2_TENMON_DAI_room_01) -DECLARE_ROM_SEGMENT(Z2_LAST_DEKU) DECLARE_ROM_SEGMENT(Z2_LAST_DEKU_room_00) DECLARE_ROM_SEGMENT(Z2_LAST_DEKU_room_01) -DECLARE_ROM_SEGMENT(Z2_22DEKUCITY) DECLARE_ROM_SEGMENT(Z2_22DEKUCITY_room_00) DECLARE_ROM_SEGMENT(Z2_22DEKUCITY_room_01) DECLARE_ROM_SEGMENT(Z2_22DEKUCITY_room_02) -DECLARE_ROM_SEGMENT(Z2_KAJIYA) DECLARE_ROM_SEGMENT(Z2_KAJIYA_room_00) -DECLARE_ROM_SEGMENT(Z2_00KEIKOKU) DECLARE_ROM_SEGMENT(Z2_00KEIKOKU_room_00) -DECLARE_ROM_SEGMENT(Z2_POSTHOUSE) DECLARE_ROM_SEGMENT(Z2_POSTHOUSE_room_00) -DECLARE_ROM_SEGMENT(Z2_LABO) DECLARE_ROM_SEGMENT(Z2_LABO_room_00) -DECLARE_ROM_SEGMENT(Z2_DANPEI2TEST) DECLARE_ROM_SEGMENT(Z2_DANPEI2TEST_room_00) DECLARE_ROM_SEGMENT(Z2_DANPEI2TEST_room_01) -DECLARE_ROM_SEGMENT(Z2_16GORON_HOUSE) DECLARE_ROM_SEGMENT(Z2_16GORON_HOUSE_room_00) DECLARE_ROM_SEGMENT(Z2_16GORON_HOUSE_room_01) -DECLARE_ROM_SEGMENT(Z2_33ZORACITY) DECLARE_ROM_SEGMENT(Z2_33ZORACITY_room_00) -DECLARE_ROM_SEGMENT(Z2_8ITEMSHOP) DECLARE_ROM_SEGMENT(Z2_8ITEMSHOP_room_00) -DECLARE_ROM_SEGMENT(Z2_F01) DECLARE_ROM_SEGMENT(Z2_F01_room_00) -DECLARE_ROM_SEGMENT(Z2_INISIE_BS) DECLARE_ROM_SEGMENT(Z2_INISIE_BS_room_00) -DECLARE_ROM_SEGMENT(Z2_30GYOSON) DECLARE_ROM_SEGMENT(Z2_30GYOSON_room_00) -DECLARE_ROM_SEGMENT(Z2_31MISAKI) DECLARE_ROM_SEGMENT(Z2_31MISAKI_room_00) -DECLARE_ROM_SEGMENT(Z2_TAKARAKUJI) DECLARE_ROM_SEGMENT(Z2_TAKARAKUJI_room_00) -DECLARE_ROM_SEGMENT(Z2_TORIDE) DECLARE_ROM_SEGMENT(Z2_TORIDE_room_00) -DECLARE_ROM_SEGMENT(Z2_FISHERMAN) DECLARE_ROM_SEGMENT(Z2_FISHERMAN_room_00) -DECLARE_ROM_SEGMENT(Z2_GORONSHOP) DECLARE_ROM_SEGMENT(Z2_GORONSHOP_room_00) -DECLARE_ROM_SEGMENT(Z2_DEKU_KING) DECLARE_ROM_SEGMENT(Z2_DEKU_KING_room_00) -DECLARE_ROM_SEGMENT(Z2_LAST_GORON) DECLARE_ROM_SEGMENT(Z2_LAST_GORON_room_00) DECLARE_ROM_SEGMENT(Z2_LAST_GORON_room_01) -DECLARE_ROM_SEGMENT(Z2_24KEMONOMITI) DECLARE_ROM_SEGMENT(Z2_24KEMONOMITI_room_00) -DECLARE_ROM_SEGMENT(Z2_F01_B) DECLARE_ROM_SEGMENT(Z2_F01_B_room_00) -DECLARE_ROM_SEGMENT(Z2_F01C) DECLARE_ROM_SEGMENT(Z2_F01C_room_00) -DECLARE_ROM_SEGMENT(Z2_BOTI) DECLARE_ROM_SEGMENT(Z2_BOTI_room_00) DECLARE_ROM_SEGMENT(Z2_BOTI_room_01) -DECLARE_ROM_SEGMENT(Z2_HAKUGIN_BS) DECLARE_ROM_SEGMENT(Z2_HAKUGIN_BS_room_00) -DECLARE_ROM_SEGMENT(Z2_20SICHITAI) DECLARE_ROM_SEGMENT(Z2_20SICHITAI_room_00) DECLARE_ROM_SEGMENT(Z2_20SICHITAI_room_01) DECLARE_ROM_SEGMENT(Z2_20SICHITAI_room_02) -DECLARE_ROM_SEGMENT(Z2_21MITURINMAE) DECLARE_ROM_SEGMENT(Z2_21MITURINMAE_room_00) -DECLARE_ROM_SEGMENT(Z2_LAST_ZORA) DECLARE_ROM_SEGMENT(Z2_LAST_ZORA_room_00) -DECLARE_ROM_SEGMENT(Z2_11GORONNOSATO2) DECLARE_ROM_SEGMENT(Z2_11GORONNOSATO2_room_00) DECLARE_ROM_SEGMENT(Z2_11GORONNOSATO2_room_01) -DECLARE_ROM_SEGMENT(Z2_SEA) DECLARE_ROM_SEGMENT(Z2_SEA_room_00) DECLARE_ROM_SEGMENT(Z2_SEA_room_01) DECLARE_ROM_SEGMENT(Z2_SEA_room_02) @@ -434,10 +373,8 @@ DECLARE_ROM_SEGMENT(Z2_SEA_room_13) DECLARE_ROM_SEGMENT(Z2_SEA_room_14) DECLARE_ROM_SEGMENT(Z2_SEA_room_15) -DECLARE_ROM_SEGMENT(Z2_35TAKI) DECLARE_ROM_SEGMENT(Z2_35TAKI_room_00) -DECLARE_ROM_SEGMENT(Z2_REDEAD) DECLARE_ROM_SEGMENT(Z2_REDEAD_room_00) DECLARE_ROM_SEGMENT(Z2_REDEAD_room_01) DECLARE_ROM_SEGMENT(Z2_REDEAD_room_02) @@ -453,31 +390,24 @@ DECLARE_ROM_SEGMENT(Z2_REDEAD_room_11) DECLARE_ROM_SEGMENT(Z2_REDEAD_room_12) DECLARE_ROM_SEGMENT(Z2_REDEAD_room_13) -DECLARE_ROM_SEGMENT(Z2_BANDROOM) DECLARE_ROM_SEGMENT(Z2_BANDROOM_room_00) DECLARE_ROM_SEGMENT(Z2_BANDROOM_room_01) DECLARE_ROM_SEGMENT(Z2_BANDROOM_room_02) DECLARE_ROM_SEGMENT(Z2_BANDROOM_room_03) DECLARE_ROM_SEGMENT(Z2_BANDROOM_room_04) -DECLARE_ROM_SEGMENT(Z2_11GORONNOSATO) DECLARE_ROM_SEGMENT(Z2_11GORONNOSATO_room_00) DECLARE_ROM_SEGMENT(Z2_11GORONNOSATO_room_01) -DECLARE_ROM_SEGMENT(Z2_GORON_HAKA) DECLARE_ROM_SEGMENT(Z2_GORON_HAKA_room_00) -DECLARE_ROM_SEGMENT(Z2_SECOM) DECLARE_ROM_SEGMENT(Z2_SECOM_room_00) DECLARE_ROM_SEGMENT(Z2_SECOM_room_01) -DECLARE_ROM_SEGMENT(Z2_10YUKIYAMANOMURA) DECLARE_ROM_SEGMENT(Z2_10YUKIYAMANOMURA_room_00) -DECLARE_ROM_SEGMENT(Z2_TOUGITES) DECLARE_ROM_SEGMENT(Z2_TOUGITES_room_00) -DECLARE_ROM_SEGMENT(Z2_DANPEI) DECLARE_ROM_SEGMENT(Z2_DANPEI_room_00) DECLARE_ROM_SEGMENT(Z2_DANPEI_room_01) DECLARE_ROM_SEGMENT(Z2_DANPEI_room_02) @@ -488,48 +418,34 @@ DECLARE_ROM_SEGMENT(Z2_DANPEI_room_06) DECLARE_ROM_SEGMENT(Z2_DANPEI_room_07) DECLARE_ROM_SEGMENT(Z2_DANPEI_room_08) -DECLARE_ROM_SEGMENT(Z2_IKANAMAE) DECLARE_ROM_SEGMENT(Z2_IKANAMAE_room_00) -DECLARE_ROM_SEGMENT(Z2_DOUJOU) DECLARE_ROM_SEGMENT(Z2_DOUJOU_room_00) -DECLARE_ROM_SEGMENT(Z2_MUSICHOUSE) DECLARE_ROM_SEGMENT(Z2_MUSICHOUSE_room_00) -DECLARE_ROM_SEGMENT(Z2_IKNINSIDE) DECLARE_ROM_SEGMENT(Z2_IKNINSIDE_room_00) DECLARE_ROM_SEGMENT(Z2_IKNINSIDE_room_01) -DECLARE_ROM_SEGMENT(Z2_MAP_SHOP) DECLARE_ROM_SEGMENT(Z2_MAP_SHOP_room_00) -DECLARE_ROM_SEGMENT(Z2_F40) DECLARE_ROM_SEGMENT(Z2_F40_room_00) -DECLARE_ROM_SEGMENT(Z2_F41) DECLARE_ROM_SEGMENT(Z2_F41_room_00) -DECLARE_ROM_SEGMENT(Z2_10YUKIYAMANOMURA2) DECLARE_ROM_SEGMENT(Z2_10YUKIYAMANOMURA2_room_00) DECLARE_ROM_SEGMENT(Z2_10YUKIYAMANOMURA2_room_01) -DECLARE_ROM_SEGMENT(Z2_14YUKIDAMANOMITI) DECLARE_ROM_SEGMENT(Z2_14YUKIDAMANOMITI_room_00) -DECLARE_ROM_SEGMENT(Z2_12HAKUGINMAE) DECLARE_ROM_SEGMENT(Z2_12HAKUGINMAE_room_00) -DECLARE_ROM_SEGMENT(Z2_17SETUGEN) DECLARE_ROM_SEGMENT(Z2_17SETUGEN_room_00) -DECLARE_ROM_SEGMENT(Z2_17SETUGEN2) DECLARE_ROM_SEGMENT(Z2_17SETUGEN2_room_00) -DECLARE_ROM_SEGMENT(Z2_SEA_BS) DECLARE_ROM_SEGMENT(Z2_SEA_BS_room_00) -DECLARE_ROM_SEGMENT(Z2_RANDOM) DECLARE_ROM_SEGMENT(Z2_RANDOM_room_00) DECLARE_ROM_SEGMENT(Z2_RANDOM_room_01) DECLARE_ROM_SEGMENT(Z2_RANDOM_room_02) @@ -537,21 +453,17 @@ DECLARE_ROM_SEGMENT(Z2_RANDOM_room_03) DECLARE_ROM_SEGMENT(Z2_RANDOM_room_04) DECLARE_ROM_SEGMENT(Z2_RANDOM_room_05) -DECLARE_ROM_SEGMENT(Z2_YADOYA) DECLARE_ROM_SEGMENT(Z2_YADOYA_room_00) DECLARE_ROM_SEGMENT(Z2_YADOYA_room_01) DECLARE_ROM_SEGMENT(Z2_YADOYA_room_02) DECLARE_ROM_SEGMENT(Z2_YADOYA_room_03) DECLARE_ROM_SEGMENT(Z2_YADOYA_room_04) -DECLARE_ROM_SEGMENT(Z2_KONPEKI_ENT) DECLARE_ROM_SEGMENT(Z2_KONPEKI_ENT_room_00) -DECLARE_ROM_SEGMENT(Z2_INSIDETOWER) DECLARE_ROM_SEGMENT(Z2_INSIDETOWER_room_00) DECLARE_ROM_SEGMENT(Z2_INSIDETOWER_room_01) -DECLARE_ROM_SEGMENT(Z2_26SARUNOMORI) DECLARE_ROM_SEGMENT(Z2_26SARUNOMORI_room_00) DECLARE_ROM_SEGMENT(Z2_26SARUNOMORI_room_01) DECLARE_ROM_SEGMENT(Z2_26SARUNOMORI_room_02) @@ -562,12 +474,10 @@ DECLARE_ROM_SEGMENT(Z2_26SARUNOMORI_room_06) DECLARE_ROM_SEGMENT(Z2_26SARUNOMORI_room_07) DECLARE_ROM_SEGMENT(Z2_26SARUNOMORI_room_08) -DECLARE_ROM_SEGMENT(Z2_LOST_WOODS) DECLARE_ROM_SEGMENT(Z2_LOST_WOODS_room_00) DECLARE_ROM_SEGMENT(Z2_LOST_WOODS_room_01) DECLARE_ROM_SEGMENT(Z2_LOST_WOODS_room_02) -DECLARE_ROM_SEGMENT(Z2_LAST_LINK) DECLARE_ROM_SEGMENT(Z2_LAST_LINK_room_00) DECLARE_ROM_SEGMENT(Z2_LAST_LINK_room_01) DECLARE_ROM_SEGMENT(Z2_LAST_LINK_room_02) @@ -577,40 +487,28 @@ DECLARE_ROM_SEGMENT(Z2_LAST_LINK_room_05) DECLARE_ROM_SEGMENT(Z2_LAST_LINK_room_06) DECLARE_ROM_SEGMENT(Z2_LAST_LINK_room_07) -DECLARE_ROM_SEGMENT(Z2_SOUGEN) DECLARE_ROM_SEGMENT(Z2_SOUGEN_room_00) -DECLARE_ROM_SEGMENT(Z2_BOMYA) DECLARE_ROM_SEGMENT(Z2_BOMYA_room_00) -DECLARE_ROM_SEGMENT(Z2_KYOJINNOMA) DECLARE_ROM_SEGMENT(Z2_KYOJINNOMA_room_00) -DECLARE_ROM_SEGMENT(Z2_KOEPONARACE) DECLARE_ROM_SEGMENT(Z2_KOEPONARACE_room_00) -DECLARE_ROM_SEGMENT(Z2_GORONRACE) DECLARE_ROM_SEGMENT(Z2_GORONRACE_room_00) -DECLARE_ROM_SEGMENT(Z2_TOWN) DECLARE_ROM_SEGMENT(Z2_TOWN_room_00) -DECLARE_ROM_SEGMENT(Z2_ICHIBA) DECLARE_ROM_SEGMENT(Z2_ICHIBA_room_00) -DECLARE_ROM_SEGMENT(Z2_BACKTOWN) DECLARE_ROM_SEGMENT(Z2_BACKTOWN_room_00) -DECLARE_ROM_SEGMENT(Z2_CLOCKTOWER) DECLARE_ROM_SEGMENT(Z2_CLOCKTOWER_room_00) -DECLARE_ROM_SEGMENT(Z2_ALLEY) DECLARE_ROM_SEGMENT(Z2_ALLEY_room_00) -DECLARE_ROM_SEGMENT(SPOT00) DECLARE_ROM_SEGMENT(SPOT00_room_00) -DECLARE_ROM_SEGMENT(KAKUSIANA) DECLARE_ROM_SEGMENT(KAKUSIANA_room_00) DECLARE_ROM_SEGMENT(KAKUSIANA_room_01) DECLARE_ROM_SEGMENT(KAKUSIANA_room_02) diff --git a/include/tables/scene_table.h b/include/tables/scene_table.h new file mode 100644 index 0000000000..ebd8cdb03c --- /dev/null +++ b/include/tables/scene_table.h @@ -0,0 +1,229 @@ +/** + * Scene Table + * + * DEFINE_SCENE should be used for non-empty scenes + * - Argument 0: Name of the scene segment in spec + * - Argument 1: Enum value for this scene + * - Argument 2: Title card's text id, or zero for no title card + * - Argument 3: Scene draw config index + * - Argument 4: Restriction flags. See `RESTRICTIONS_SET` on z_parameter.c + * - Argument 5: Persistent cycle flag set: bitwise flags which won't be turned off on a cycle reset (will persist between cycles) + * + * DEFINE_SCENE_UNSET is needed to define empty entries from the original game + * - Argument 0: Enum value for this scene + */ +// Southern Swamp (Clear) +/* 0x00 */ DEFINE_SCENE(Z2_20SICHITAI2, SCENE_20SICHITAI2, 0x116, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 11), 0, 0, (1 << 30))) +/* 0x01 */ DEFINE_SCENE_UNSET(SCENE_UNSET_01) +/* 0x02 */ DEFINE_SCENE_UNSET(SCENE_UNSET_02) +/* 0x03 */ DEFINE_SCENE_UNSET(SCENE_UNSET_03) +/* 0x04 */ DEFINE_SCENE_UNSET(SCENE_UNSET_04) +/* 0x05 */ DEFINE_SCENE_UNSET(SCENE_UNSET_05) +/* 0x06 */ DEFINE_SCENE_UNSET(SCENE_UNSET_06) +// Lone Peak Shrine & Grottos +/* 0x07 */ DEFINE_SCENE(KAKUSIANA, SCENE_KAKUSIANA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 2) | (1 << 10) | (1 << 11))) +// Cutscene Scene +/* 0x08 */ DEFINE_SCENE(SPOT00, SCENE_SPOT00, 0, SCENE_DRAW_CFG_NOTHING, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +/* 0x09 */ DEFINE_SCENE_UNSET(SCENE_UNSET_09) +// Magic Hags' Potion Shop +/* 0x0A */ DEFINE_SCENE(Z2_WITCH_SHOP, SCENE_WITCH_SHOP, 0x11A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Majora's Lair +/* 0x0B */ DEFINE_SCENE(Z2_LAST_BS, SCENE_LAST_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +// Beneath the Graveyard +/* 0x0C */ DEFINE_SCENE(Z2_HAKASHITA, SCENE_HAKASHITA, 0x113, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +// Curiosity Shop +/* 0x0D */ DEFINE_SCENE(Z2_AYASHIISHOP, SCENE_AYASHIISHOP, 0x10E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +/* 0x0E */ DEFINE_SCENE_UNSET(SCENE_UNSET_0E) +/* 0x0F */ DEFINE_SCENE_UNSET(SCENE_UNSET_0F) +// Mama's House (Ranch House in PAL) & Barn +/* 0x10 */ DEFINE_SCENE(Z2_OMOYA, SCENE_OMOYA, 0x132, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Honey & Darling's Shop +/* 0x11 */ DEFINE_SCENE(Z2_BOWLING, SCENE_BOWLING, 0x108, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// The Mayor's Residence +/* 0x12 */ DEFINE_SCENE(Z2_SONCHONOIE, SCENE_SONCHONOIE, 0x10B, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Ikana Canyon +/* 0x13 */ DEFINE_SCENE(Z2_IKANA, SCENE_IKANA, 0x141, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 1) | (1 << 30))) +// Pirates' Fortress +/* 0x14 */ DEFINE_SCENE(Z2_KAIZOKU, SCENE_KAIZOKU, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Milk Bar +/* 0x15 */ DEFINE_SCENE(Z2_MILK_BAR, SCENE_MILK_BAR, 0x10C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Stone Tower Temple +/* 0x16 */ DEFINE_SCENE(Z2_INISIE_N, SCENE_INISIE_N, 0x144, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 26), 0, 0, 0)) +// Treasure Chest Shop +/* 0x17 */ DEFINE_SCENE(Z2_TAKARAYA, SCENE_TAKARAYA, 0x109, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_SET(2, 0, 0, 0)) +// Inverted Stone Tower Temple +/* 0x18 */ DEFINE_SCENE(Z2_INISIE_R, SCENE_INISIE_R, 0x144, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 26), 0, 0, 0)) +// Clock Tower Rooftop +/* 0x19 */ DEFINE_SCENE(Z2_OKUJOU, SCENE_OKUJOU, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Before Clock Town +/* 0x1A */ DEFINE_SCENE(Z2_OPENINGDAN, SCENE_OPENINGDAN, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3), 0, 0, 0)) +// Woodfall Temple +/* 0x1B */ DEFINE_SCENE(Z2_MITURIN, SCENE_MITURIN, 0x11F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 12) | (1 << 13) | (1 << 15) | (1 << 20) | (1 << 21) | (1 << 22), 0, 0, 0)) +// Path to Mountain Village +/* 0x1C */ DEFINE_SCENE(Z2_13HUBUKINOMITI, SCENE_13HUBUKINOMITI, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Ancient Castle of Ikana +/* 0x1D */ DEFINE_SCENE(Z2_CASTLE, SCENE_CASTLE, 0x142, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, (1 << 31), 0, (1 << 10))) +// Deku Scrub Playground +/* 0x1E */ DEFINE_SCENE(Z2_DEKUTES, SCENE_DEKUTES, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE) +// Odolwa's Lair +/* 0x1F */ DEFINE_SCENE(Z2_MITURIN_BS, SCENE_MITURIN_BS, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +// Town Shooting Gallery +/* 0x20 */ DEFINE_SCENE(Z2_SYATEKI_MIZU, SCENE_SYATEKI_MIZU, 0x107, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Snowhead Temple +/* 0x21 */ DEFINE_SCENE(Z2_HAKUGIN, SCENE_HAKUGIN, 0x12B, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 5) | (1 << 21) | (1 << 23) | (1 << 24), 0, 0, 0)) +// Milk Road +/* 0x22 */ DEFINE_SCENE(Z2_ROMANYMAE, SCENE_ROMANYMAE, 0x149, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0)) +// Pirates' Fortress Interior +/* 0x23 */ DEFINE_SCENE(Z2_PIRATE, SCENE_PIRATE, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 12))) +// Swamp Shooting Gallery +/* 0x24 */ DEFINE_SCENE(Z2_SYATEKI_MORI, SCENE_SYATEKI_MORI, 0x11B, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Pinnacle Rock +/* 0x25 */ DEFINE_SCENE(Z2_SINKAI, SCENE_SINKAI, 0x135, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2)) +// Fairy's Fountain +/* 0x26 */ DEFINE_SCENE(Z2_YOUSEI_IZUMI, SCENE_YOUSEI_IZUMI, 0x13E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0)) +// Swamp Spider House +/* 0x27 */ DEFINE_SCENE(Z2_KINSTA1, SCENE_KINSTA1, 0x11E, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE) +// Oceanside Spider House +/* 0x28 */ DEFINE_SCENE(Z2_KINDAN2, SCENE_KINDAN2, 0x13F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +// Astral Observatory +/* 0x29 */ DEFINE_SCENE(Z2_TENMON_DAI, SCENE_TENMON_DAI, 0x114, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Moon Deku Trial +/* 0x2A */ DEFINE_SCENE(Z2_LAST_DEKU, SCENE_LAST_DEKU, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2)) +// Deku Palace +/* 0x2B */ DEFINE_SCENE(Z2_22DEKUCITY, SCENE_22DEKUCITY, 0x118, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30))) +// Mountain Smithy +/* 0x2C */ DEFINE_SCENE(Z2_KAJIYA, SCENE_KAJIYA, 0x127, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Termina Field +/* 0x2D */ DEFINE_SCENE(Z2_00KEIKOKU, SCENE_00KEIKOKU, 0x100, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 4), 0, 0, 0)) +// Post Office +/* 0x2E */ DEFINE_SCENE(Z2_POSTHOUSE, SCENE_POSTHOUSE, 0x111, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_SET(3, 0, 0, 0)) +// Marine Research Lab +/* 0x2F */ DEFINE_SCENE(Z2_LABO, SCENE_LABO, 0x13A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE) +// Beneath the Graveyard (Day 3) and Dampe's House +/* 0x30 */ DEFINE_SCENE(Z2_DANPEI2TEST, SCENE_DANPEI2TEST, 0x113, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +/* 0x31 */ DEFINE_SCENE_UNSET(SCENE_UNSET_31) +// Goron Shrine +/* 0x32 */ DEFINE_SCENE(Z2_16GORON_HOUSE, SCENE_16GORON_HOUSE, 0x124, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Zora Hall +/* 0x33 */ DEFINE_SCENE(Z2_33ZORACITY, SCENE_33ZORACITY, 0x136, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Trading Post +/* 0x34 */ DEFINE_SCENE(Z2_8ITEMSHOP, SCENE_8ITEMSHOP, 0x10F, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE) +// Romani Ranch +/* 0x35 */ DEFINE_SCENE(Z2_F01, SCENE_F01, 0x12E, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Twinmold's Lair +/* 0x36 */ DEFINE_SCENE(Z2_INISIE_BS, SCENE_INISIE_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +// Great Bay Coast +/* 0x37 */ DEFINE_SCENE(Z2_30GYOSON, SCENE_30GYOSON, 0x134, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 20), 0, 0, (1 << 1) | (1 << 5))) +// Zora Cape +/* 0x38 */ DEFINE_SCENE(Z2_31MISAKI, SCENE_31MISAKI, 0x134, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, (1 << 7))) +// Lottery Shop +/* 0x39 */ DEFINE_SCENE(Z2_TAKARAKUJI, SCENE_TAKARAKUJI, 0x112, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE) +/* 0x3A */ DEFINE_SCENE_UNSET(SCENE_UNSET_3A) +// Pirates' Fortress Moat +/* 0x3B */ DEFINE_SCENE(Z2_TORIDE, SCENE_TORIDE, 0x138, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0)) +// Fisherman's Hut +/* 0x3C */ DEFINE_SCENE(Z2_FISHERMAN, SCENE_FISHERMAN, 0x13B, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE) +// Goron Shop +/* 0x3D */ DEFINE_SCENE(Z2_GORONSHOP, SCENE_GORONSHOP, 0x129, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Deku King's Chamber +/* 0x3E */ DEFINE_SCENE(Z2_DEKU_KING, SCENE_DEKU_KING, 0x11C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Moon Goron Trial +/* 0x3F */ DEFINE_SCENE(Z2_LAST_GORON, SCENE_LAST_GORON, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2)) +// Road to Southern Swamp +/* 0x40 */ DEFINE_SCENE(Z2_24KEMONOMITI, SCENE_24KEMONOMITI, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 1) | (1 << 31))) +// Doggy Racetrack +/* 0x41 */ DEFINE_SCENE(Z2_F01_B, SCENE_F01_B, 0x130, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE) +// Cucco Shack +/* 0x42 */ DEFINE_SCENE(Z2_F01C, SCENE_F01C, 0x12F, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE) +// Ikana Graveyard +/* 0x43 */ DEFINE_SCENE(Z2_BOTI, SCENE_BOTI, 0x106, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Goht's Lair +/* 0x44 */ DEFINE_SCENE(Z2_HAKUGIN_BS, SCENE_HAKUGIN_BS, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +// Southern Swamp (poison) +/* 0x45 */ DEFINE_SCENE(Z2_20SICHITAI, SCENE_20SICHITAI, 0x116, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10) | (1 << 11), 0, 0, (1 << 30))) +// Woodfall +/* 0x46 */ DEFINE_SCENE(Z2_21MITURINMAE, SCENE_21MITURINMAE, 0x117, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0x102, 0, 0, (1 << 10))) +// Moon Zora Trial +/* 0x47 */ DEFINE_SCENE(Z2_LAST_ZORA, SCENE_LAST_ZORA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2)) +// Goron Village (spring) +/* 0x48 */ DEFINE_SCENE(Z2_11GORONNOSATO2, SCENE_11GORONNOSATO2, 0x123, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30))) +// Great Bay Temple +/* 0x49 */ DEFINE_SCENE(Z2_SEA, SCENE_SEA, 0x13D, SCENE_DRAW_CFG_GREAT_BAY_TEMPLE, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 4) | (1 << 5) | (1 << 6), 0, 0, 0)) +// Waterfall Rapids +/* 0x4A */ DEFINE_SCENE(Z2_35TAKI, SCENE_35TAKI, 0x137, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Beneath the Well +/* 0x4B */ DEFINE_SCENE(Z2_REDEAD, SCENE_REDEAD, 0x145, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Zora Hall Rooms +/* 0x4C */ DEFINE_SCENE(Z2_BANDROOM, SCENE_BANDROOM, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30))) +// Goron Village (winter) +/* 0x4D */ DEFINE_SCENE(Z2_11GORONNOSATO, SCENE_11GORONNOSATO, 0x123, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 30))) +// Goron Graveyard +/* 0x4E */ DEFINE_SCENE(Z2_GORON_HAKA, SCENE_GORON_HAKA, 0x12A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Sakon's Hideout +/* 0x4F */ DEFINE_SCENE(Z2_SECOM, SCENE_SECOM, 0x143, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Mountain Village (winter) +/* 0x50 */ DEFINE_SCENE(Z2_10YUKIYAMANOMURA, SCENE_10YUKIYAMANOMURA, 0x122, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 31))) +// Ghost Hut +/* 0x51 */ DEFINE_SCENE(Z2_TOUGITES, SCENE_TOUGITES, 0x146, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Deku Shrine +/* 0x52 */ DEFINE_SCENE(Z2_DANPEI, SCENE_DANPEI, 0x120, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE) +// Road to Ikana +/* 0x53 */ DEFINE_SCENE(Z2_IKANAMAE, SCENE_IKANAMAE, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Swordsman's School +/* 0x54 */ DEFINE_SCENE(Z2_DOUJOU, SCENE_DOUJOU, 0x110, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1), PERSISTENT_CYCLE_FLAGS_NONE) +// Music Box House +/* 0x55 */ DEFINE_SCENE(Z2_MUSICHOUSE, SCENE_MUSICHOUSE, 0x147, SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Igos du Ikana's Lair +/* 0x56 */ DEFINE_SCENE(Z2_IKNINSIDE, SCENE_IKNINSIDE, 0x142, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_NONE) +// Tourist Information +/* 0x57 */ DEFINE_SCENE(Z2_MAP_SHOP, SCENE_MAP_SHOP, 0x119, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Stone Tower +/* 0x58 */ DEFINE_SCENE(Z2_F40, SCENE_F40, 0x140, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0)) +// Inverted Stone Tower +/* 0x59 */ DEFINE_SCENE(Z2_F41, SCENE_F41, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0)) +// Mountain Village (spring) +/* 0x5A */ DEFINE_SCENE(Z2_10YUKIYAMANOMURA2, SCENE_10YUKIYAMANOMURA2, 0x122, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 31))) +// Path to Snowhead +/* 0x5B */ DEFINE_SCENE(Z2_14YUKIDAMANOMITI, SCENE_14YUKIDAMANOMITI, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 8))) +// Snowhead +/* 0x5C */ DEFINE_SCENE(Z2_12HAKUGINMAE, SCENE_12HAKUGINMAE, 0x125, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 10), 0, 0, 0)) +// Path to Goron Village (winter) +/* 0x5D */ DEFINE_SCENE(Z2_17SETUGEN, SCENE_17SETUGEN, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 7))) +// Path to Goron Village (spring) +/* 0x5E */ DEFINE_SCENE(Z2_17SETUGEN2, SCENE_17SETUGEN2, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 7))) +// Gyorg's Lair +/* 0x5F */ DEFINE_SCENE(Z2_SEA_BS, SCENE_SEA_BS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 31))) +// Secret Shrine +/* 0x60 */ DEFINE_SCENE(Z2_RANDOM, SCENE_RANDOM, 0x12C, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 10))) +// Stock Pot Inn +/* 0x61 */ DEFINE_SCENE(Z2_YADOYA, SCENE_YADOYA, 0x10A, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Great Bay Cutscene +/* 0x62 */ DEFINE_SCENE(Z2_KONPEKI_ENT, SCENE_KONPEKI_ENT, 0x139, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Clock Tower Interior +/* 0x63 */ DEFINE_SCENE(Z2_INSIDETOWER, SCENE_INSIDETOWER, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_SET(0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0), PERSISTENT_CYCLE_FLAGS_SET(1 << 0, 0, 0, 0)) +// Woods of Mystery +/* 0x64 */ DEFINE_SCENE(Z2_26SARUNOMORI, SCENE_26SARUNOMORI, 0x11D, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE) +// Lost Woods (Intro) +/* 0x65 */ DEFINE_SCENE(Z2_LOST_WOODS, SCENE_LOST_WOODS, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Moon Link Trial +/* 0x66 */ DEFINE_SCENE(Z2_LAST_LINK, SCENE_LAST_LINK, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 2)) +// The Moon +/* 0x67 */ DEFINE_SCENE(Z2_SOUGEN, SCENE_SOUGEN, 0, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_MOON, PERSISTENT_CYCLE_FLAGS_NONE) +// Bomb Shop +/* 0x68 */ DEFINE_SCENE(Z2_BOMYA, SCENE_BOMYA, 0x10D, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_INDOORS, PERSISTENT_CYCLE_FLAGS_NONE) +// Giants' Chamber +/* 0x69 */ DEFINE_SCENE(Z2_KYOJINNOMA, SCENE_KYOJINNOMA, 0, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// Gorman Track +/* 0x6A */ DEFINE_SCENE(Z2_KOEPONARACE, SCENE_KOEPONARACE, 0x131, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NO_DOUBLE_TIME, PERSISTENT_CYCLE_FLAGS_NONE) +// Goron Racetrack +/* 0x6B */ DEFINE_SCENE(Z2_GORONRACE, SCENE_GORONRACE, 0x126, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// East Clock Town +/* 0x6C */ DEFINE_SCENE(Z2_TOWN, SCENE_TOWN, 0x101, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(1, 0, 0, 0)) +// West Clock Town +/* 0x6D */ DEFINE_SCENE(Z2_ICHIBA, SCENE_ICHIBA, 0x102, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_NONE) +// North Clock Town +/* 0x6E */ DEFINE_SCENE(Z2_BACKTOWN, SCENE_BACKTOWN, 0x103, SCENE_DRAW_CFG_DEFAULT, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, (1 << 10))) +// South Clock Town +/* 0x6F */ DEFINE_SCENE(Z2_CLOCKTOWER, SCENE_CLOCKTOWER, 0x104, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET((1 << 20), 0, 0, (1 << 10))) +// Laundry Pool +/* 0x70 */ DEFINE_SCENE(Z2_ALLEY, SCENE_ALLEY, 0x105, SCENE_DRAW_CFG_MAT_ANIM, RESTRICTIONS_NONE, PERSISTENT_CYCLE_FLAGS_SET(0, 0, 1, 0)) diff --git a/include/variables.h b/include/variables.h index dfb0ab7916..61ac8824bd 100644 --- a/include/variables.h +++ b/include/variables.h @@ -581,7 +581,7 @@ extern s16 gPlayerFormObjectIndices[PLAYER_FORM_MAX]; extern ObjectId gObjectTableSize; extern RomFile gObjectTable[OBJECT_ID_MAX]; -extern SceneTableEntry gSceneTable[]; +extern SceneTableEntry gSceneTable[SCENE_MAX]; extern UNK_PTR D_801C5C50; // extern UNK_TYPE1 D_801C5C9C; extern UNK_PTR D_801C5CB0; @@ -2422,6 +2422,7 @@ extern volatile OSTime sRSPOtherTotalTime; // extern UNK_TYPE1 D_801FBB18; extern volatile OSTime gRDPTotalTime; // extern UNK_TYPE1 D_801FBB28; + extern OSViMode sNotebookViMode; extern void* gFramebuffers[2]; extern OSViMode* gActiveViMode; @@ -2446,6 +2447,7 @@ extern s16 gCfbHeight; extern s16 gCfbLeftAdjust; extern s16 gCfbUpperAdjust; extern u8 gSysCfbHiResEnabled; + extern Vec3f D_801FBBF0; extern LineSegment Math3D_ColSphereTri_line; extern Vec3f Math3D_ColSphereTri_point; diff --git a/include/z64scene.h b/include/z64scene.h index c31b7ce58f..387d584f55 100644 --- a/include/z64scene.h +++ b/include/z64scene.h @@ -584,123 +584,17 @@ typedef enum { /* 6 */ TINGLE_MAP_MAX } TingleMapId; -typedef enum { - /* 0x00 */ SCENE_20SICHITAI2, // Southern Swamp (Clear) - /* 0x01 */ SCENE_UNSET_1, - /* 0x02 */ SCENE_UNSET_2, - /* 0x03 */ SCENE_UNSET_3, - /* 0x04 */ SCENE_UNSET_4, - /* 0x05 */ SCENE_UNSET_5, - /* 0x06 */ SCENE_UNSET_6, - /* 0x07 */ SCENE_KAKUSIANA, // Lone Peak Shrine & Grottos - /* 0x08 */ SCENE_SPOT00, // Cutscene Scene - /* 0x09 */ SCENE_UNSET_9, - /* 0x0A */ SCENE_WITCH_SHOP, // Magic Hags' Potion Shop - /* 0x0B */ SCENE_LAST_BS, // Majora's Lair - /* 0x0C */ SCENE_HAKASHITA, // Beneath the Graveyard - /* 0x0D */ SCENE_AYASHIISHOP, // Curiosity Shop - /* 0x0E */ SCENE_UNSET_E, - /* 0x0F */ SCENE_UNSET_F, - /* 0x10 */ SCENE_OMOYA, // Mama's House (Ranch House in PAL) & Barn - /* 0x11 */ SCENE_BOWLING, // Honey & Darling's Shop - /* 0x12 */ SCENE_SONCHONOIE, // The Mayor's Residence - /* 0x13 */ SCENE_IKANA, // Ikana Canyon - /* 0x14 */ SCENE_KAIZOKU, // Pirates' Fortress - /* 0x15 */ SCENE_MILK_BAR, // Milk Bar - /* 0x16 */ SCENE_INISIE_N, // Stone Tower Temple - /* 0x17 */ SCENE_TAKARAYA, // Treasure Chest Shop - /* 0x18 */ SCENE_INISIE_R, // Inverted Stone Tower Temple - /* 0x19 */ SCENE_OKUJOU, // Clock Tower Rooftop - /* 0x1A */ SCENE_OPENINGDAN, // Before Clock Town - /* 0x1B */ SCENE_MITURIN, // Woodfall Temple - /* 0x1C */ SCENE_13HUBUKINOMITI, // Path to Mountain Village - /* 0x1D */ SCENE_CASTLE, // Ancient Castle of Ikana - /* 0x1E */ SCENE_DEKUTES, // Deku Scrub Playground - /* 0x1F */ SCENE_MITURIN_BS, // Odolwa's Lair - /* 0x20 */ SCENE_SYATEKI_MIZU, // Town Shooting Gallery - /* 0x21 */ SCENE_HAKUGIN, // Snowhead Temple - /* 0x22 */ SCENE_ROMANYMAE, // Milk Road - /* 0x23 */ SCENE_PIRATE, // Pirates' Fortress Interior - /* 0x24 */ SCENE_SYATEKI_MORI, // Swamp Shooting Gallery - /* 0x25 */ SCENE_SINKAI, // Pinnacle Rock - /* 0x26 */ SCENE_YOUSEI_IZUMI, // Fairy's Fountain - /* 0x27 */ SCENE_KINSTA1, // Swamp Spider House - /* 0x28 */ SCENE_KINDAN2, // Oceanside Spider House - /* 0x29 */ SCENE_TENMON_DAI, // Astral Observatory - /* 0x2A */ SCENE_LAST_DEKU, // Moon Deku Trial - /* 0x2B */ SCENE_22DEKUCITY, // Deku Palace - /* 0x2C */ SCENE_KAJIYA, // Mountain Smithy - /* 0x2D */ SCENE_00KEIKOKU, // Termina Field - /* 0x2E */ SCENE_POSTHOUSE, // Post Office - /* 0x2F */ SCENE_LABO, // Marine Research Lab - /* 0x30 */ SCENE_DANPEI2TEST, // Beneath the Graveyard (Day 3) and Dampe's House - /* 0x31 */ SCENE_UNSET_31, - /* 0x32 */ SCENE_16GORON_HOUSE, // Goron Shrine - /* 0x33 */ SCENE_33ZORACITY, // Zora Hall - /* 0x34 */ SCENE_8ITEMSHOP, // Trading Post - /* 0x35 */ SCENE_F01, // Romani Ranch - /* 0x36 */ SCENE_INISIE_BS, // Twinmold's Lair - /* 0x37 */ SCENE_30GYOSON, // Great Bay Coast - /* 0x38 */ SCENE_31MISAKI, // Zora Cape - /* 0x39 */ SCENE_TAKARAKUJI, // Lottery Shop - /* 0x3A */ SCENE_UNSET_3A, - /* 0x3B */ SCENE_TORIDE, // Pirates' Fortress Moat - /* 0x3C */ SCENE_FISHERMAN, // Fisherman's Hut - /* 0x3D */ SCENE_GORONSHOP, // Goron Shop - /* 0x3E */ SCENE_DEKU_KING, // Deku King's Chamber - /* 0x3F */ SCENE_LAST_GORON, // Moon Goron Trial - /* 0x40 */ SCENE_24KEMONOMITI, // Road to Southern Swamp - /* 0x41 */ SCENE_F01_B, // Doggy Racetrack - /* 0x42 */ SCENE_F01C, // Cucco Shack - /* 0x43 */ SCENE_BOTI, // Ikana Graveyard - /* 0x44 */ SCENE_HAKUGIN_BS, // Goht's Lair - /* 0x45 */ SCENE_20SICHITAI, // Southern Swamp (poison) - /* 0x46 */ SCENE_21MITURINMAE, // Woodfall - /* 0x47 */ SCENE_LAST_ZORA, // Moon Zora Trial - /* 0x48 */ SCENE_11GORONNOSATO2, // Goron Village (spring) - /* 0x49 */ SCENE_SEA, // Great Bay Temple - /* 0x4A */ SCENE_35TAKI, // Waterfall Rapids - /* 0x4B */ SCENE_REDEAD, // Beneath the Well - /* 0x4C */ SCENE_BANDROOM, // Zora Hall Rooms - /* 0x4D */ SCENE_11GORONNOSATO, // Goron Village (winter) - /* 0x4E */ SCENE_GORON_HAKA, // Goron Graveyard - /* 0x4F */ SCENE_SECOM, // Sakon's Hideout - /* 0x50 */ SCENE_10YUKIYAMANOMURA, // Mountain Village (winter) - /* 0x51 */ SCENE_TOUGITES, // Ghost Hut - /* 0x52 */ SCENE_DANPEI, // Deku Shrine - /* 0x53 */ SCENE_IKANAMAE, // Road to Ikana - /* 0x54 */ SCENE_DOUJOU, // Swordsman's School - /* 0x55 */ SCENE_MUSICHOUSE, // Music Box House - /* 0x56 */ SCENE_IKNINSIDE, // Igos du Ikana's Lair - /* 0x57 */ SCENE_MAP_SHOP, // Tourist Information - /* 0x58 */ SCENE_F40, // Stone Tower - /* 0x59 */ SCENE_F41, // Inverted Stone Tower - /* 0x5A */ SCENE_10YUKIYAMANOMURA2, // Mountain Village (spring) - /* 0x5B */ SCENE_14YUKIDAMANOMITI, // Path to Snowhead - /* 0x5C */ SCENE_12HAKUGINMAE, // Snowhead - /* 0x5D */ SCENE_17SETUGEN, // Path to Goron Village (winter) - /* 0x5E */ SCENE_17SETUGEN2, // Path to Goron Village (spring) - /* 0x5F */ SCENE_SEA_BS, // Gyorg's Lair - /* 0x60 */ SCENE_RANDOM, // Secret Shrine - /* 0x61 */ SCENE_YADOYA, // Stock Pot Inn - /* 0x62 */ SCENE_KONPEKI_ENT, // Great Bay Cutscene - /* 0x63 */ SCENE_INSIDETOWER, // Clock Tower Interior - /* 0x64 */ SCENE_26SARUNOMORI, // Woods of Mystery - /* 0x65 */ SCENE_LOST_WOODS, // Lost Woods (Intro) - /* 0x66 */ SCENE_LAST_LINK, // Moon Link Trial - /* 0x67 */ SCENE_SOUGEN, // The Moon - /* 0x68 */ SCENE_BOMYA, // Bomb Shop - /* 0x69 */ SCENE_KYOJINNOMA, // Giants' Chamber - /* 0x6A */ SCENE_KOEPONARACE, // Gorman Track - /* 0x6B */ SCENE_GORONRACE, // Goron Racetrack - /* 0x6C */ SCENE_TOWN, // East Clock Town - /* 0x6D */ SCENE_ICHIBA, // West Clock Town - /* 0x6E */ SCENE_BACKTOWN, // North Clock Town - /* 0x6F */ SCENE_CLOCKTOWER, // South Clock Town - /* 0x70 */ SCENE_ALLEY, // Laundry Pool +#define DEFINE_SCENE(_name, enumValue, _textId, _drawConfig, _restrictionFlags, _persistentCycleFlags) enumValue, +#define DEFINE_SCENE_UNSET(enumValue) enumValue, + +typedef enum SceneId { + #include "tables/scene_table.h" /* 0x71 */ SCENE_MAX } SceneId; +#undef DEFINE_SCENE +#undef DEFINE_SCENE_UNSET + typedef enum { /* 0x00 */ ENTR_SCENE_MAYORS_RESIDENCE, /* 0x01 */ ENTR_SCENE_MAJORAS_LAIR, diff --git a/src/boot_O2_g3/CIC6105.c b/src/boot_O2_g3/CIC6105.c index 4745ad5c89..78eed1a775 100644 --- a/src/boot_O2_g3/CIC6105.c +++ b/src/boot_O2_g3/CIC6105.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" UNK_TYPE4 D_8009BE30; diff --git a/src/boot_O2_g3/yaz0.c b/src/boot_O2_g3/yaz0.c index 3517b97ae4..aa7ecdfe12 100644 --- a/src/boot_O2_g3/yaz0.c +++ b/src/boot_O2_g3/yaz0.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" u8 sYaz0DataBuffer[0x400]; diff --git a/src/code/sys_cfb.c b/src/code/sys_cfb.c index 16c39855cd..29d6e39c43 100644 --- a/src/code/sys_cfb.c +++ b/src/code/sys_cfb.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #include "buffers.h" #include "system_malloc.h" diff --git a/src/code/z_camera.c b/src/code/z_camera.c index 89b1489421..91a1d6b063 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -42,6 +42,7 @@ * -Y +Z -Y * */ + #include "global.h" #include "z64quake.h" #include "z64shrink_window.h" diff --git a/src/code/z_effect_soft_sprite.c b/src/code/z_effect_soft_sprite.c index 775b68f01e..1866087295 100644 --- a/src/code/z_effect_soft_sprite.c +++ b/src/code/z_effect_soft_sprite.c @@ -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; } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d0558d7f80..86b6d01075 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -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; diff --git a/src/code/z_player_call.c b/src/code/z_player_call.c index a109dab176..6aee18baff 100644 --- a/src/code/z_player_call.c +++ b/src/code/z_player_call.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #define FLAGS \ diff --git a/src/code/z_scene_proc.c b/src/code/z_scene_proc.c index 6ec3f2b803..c899b4d83d 100644 --- a/src/code/z_scene_proc.c +++ b/src/code/z_scene_proc.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" s32 sMatAnimStep; diff --git a/src/code/z_scene_table.c b/src/code/z_scene_table.c index f80ad551da..e31e4b185e 100644 --- a/src/code/z_scene_table.c +++ b/src/code/z_scene_table.c @@ -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 }, }; diff --git a/src/code/z_skin.c b/src/code/z_skin.c index 9bfd8d5661..0d3e0bf85d 100644 --- a/src/code/z_skin.c +++ b/src/code/z_skin.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "z64skin.h" diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index c10c1943e3..6556adfa75 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -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; diff --git a/src/libultra/flash/osFlash.c b/src/libultra/flash/osFlash.c index 3ed33f45d2..cd4420c4af 100644 --- a/src/libultra/flash/osFlash.c +++ b/src/libultra/flash/osFlash.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "ultra64.h" #include "global.h" diff --git a/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c b/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c index c7fa3d69ed..bcc662c9f9 100644 --- a/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c +++ b/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c @@ -4,6 +4,7 @@ * Description: Goron Link Switch */ +#include "prevent_bss_reordering.h" #include "z_bg_hakugin_switch.h" #include "z64rumble.h" #include "objects/object_goronswitch/object_goronswitch.h" diff --git a/src/overlays/actors/ovl_Boss_06/z_boss_06.c b/src/overlays/actors/ovl_Boss_06/z_boss_06.c index aa6291aae6..aa2929f287 100644 --- a/src/overlays/actors/ovl_Boss_06/z_boss_06.c +++ b/src/overlays/actors/ovl_Boss_06/z_boss_06.c @@ -4,7 +4,6 @@ * Description: Igos du Ikana window - curtains and ray effects */ -#include "prevent_bss_reordering.h" #include "z_boss_06.h" #include "z64shrink_window.h" #include "overlays/actors/ovl_En_Knight/z_en_knight.h" diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index ef15c27a96..010106fe59 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -3,7 +3,7 @@ * Overlay: ovl_En_Fishing * Description: Fishing Pond Elements (Owner, Fish, Props, Effects...) */ -#include "prevent_bss_reordering.h" + #include "z_en_fishing.h" #include "z64rumble.h" #include "z64shrink_window.h" diff --git a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c index f400d157f4..5d7a5fd5b3 100644 --- a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c +++ b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c @@ -4,7 +4,6 @@ * Description: Keaton grass */ -#include "prevent_bss_reordering.h" #include "z_en_kusa2.h" #include "objects/gameplay_field_keep/gameplay_field_keep.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/overlays/actors/ovl_En_Test7/z_en_test7.c b/src/overlays/actors/ovl_En_Test7/z_en_test7.c index fa378ec68b..2606331e2c 100644 --- a/src/overlays/actors/ovl_En_Test7/z_en_test7.c +++ b/src/overlays/actors/ovl_En_Test7/z_en_test7.c @@ -4,6 +4,7 @@ * Description: Soaring effects (wings, sphere, etc) */ +#include "prevent_bss_reordering.h" #include "z_en_test7.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 53b35efa0a..6f08583ace 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1935,7 +1935,7 @@ 0x801C5EB0:("D_801C5EB0","UNK_TYPE4","",0x4), 0x801C5EC4:("D_801C5EC4","UNK_TYPE2","",0x2), 0x801C5F44:("D_801C5F44","UNK_TYPE4","",0x4), - 0x801C5FC0:("D_801C5FC0","u32","[452]",0x710), + 0x801C5FC0:("sPersistentCycleFlags","u32","[452]",0x710), 0x801C66D0:("D_801C66D0","UNK_TYPE2","",0x2), 0x801C6798:("D_801C6798","UNK_TYPE4","",0x4), 0x801C67B0:("gAmmoItems","UNK_TYPE1","",0x1),