From e02638ac6d02d3a545fbfecb35e52f9dc043865a Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 15:55:38 -0600 Subject: [PATCH 01/11] Fix custom flow entry nodes --- src/d/d_msg_flow.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/d/d_msg_flow.cpp b/src/d/d_msg_flow.cpp index 9b4ea2164c..4b67bb1bda 100644 --- a/src/d/d_msg_flow.cpp +++ b/src/d/d_msg_flow.cpp @@ -446,6 +446,12 @@ u8* dMsgFlow_c::getMsgDataBlock(char const* block_tag) { } u16 dMsgFlow_c::getInitNodeIndex(u16 param_1) { +#if TARGET_PC + if (param_1 >= dusk::flow::kCustomNodeMin) { + return param_1; + } +#endif + u8* var_r30 = NULL; u16 var_r27 = -1; From 29b86f938f124aa39f842855e1bb7929e81fbd31 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 16:50:09 -0600 Subject: [PATCH 02/11] Fix group lookup for custom flows --- src/d/d_msg_flow.cpp | 11 +++++++---- src/d/d_msg_object.cpp | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/d/d_msg_flow.cpp b/src/d/d_msg_flow.cpp index 4b67bb1bda..8ce605e122 100644 --- a/src/d/d_msg_flow.cpp +++ b/src/d/d_msg_flow.cpp @@ -43,6 +43,11 @@ u16 message_id(const MessageEntryData& entry) { return static_cast(static_cast(entry.bytes[4]) << 8 | entry.bytes[5]); } +u16 flow_group(int flowId) { + const bool isCommonFlow = flowId >= 3000 && flowId < dusk::flow::kCustomNodeMin; + return isCommonFlow ? 0 : static_cast(dMsgObject_getGroupID()); +} + } // namespace #endif @@ -70,8 +75,7 @@ void dMsgFlow_c::init(fopAc_ac_c* i_partner, int i_flowID, int param_2, fopAc_ac dMsgObject_changeFlowGroup(i_flowID); #if TARGET_PC - dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), - i_flowID >= 3000 ? 0 : static_cast(dMsgObject_getGroupID())); + dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), flow_group(i_flowID)); #endif if (param_2 == 0) { @@ -399,8 +403,7 @@ void dMsgFlow_c::setInitValueGroupChange(int i_msgNo, fopAc_ac_c** i_talkPartner dMsgObject_changeFlowGroup(i_msgNo); #if TARGET_PC - dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), - i_msgNo >= 3000 ? 0 : static_cast(dMsgObject_getGroupID())); + dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), flow_group(i_msgNo)); #endif setInitValue(0); diff --git a/src/d/d_msg_object.cpp b/src/d/d_msg_object.cpp index e9e62ce635..072bd5039b 100644 --- a/src/d/d_msg_object.cpp +++ b/src/d/d_msg_object.cpp @@ -1865,7 +1865,11 @@ void dMsgObject_c::readMessageGroupLocal(mDoDvdThd_mountXArchive_c** p_arcMount) void dMsgObject_c::changeFlowGroupLocal(s32 param_0) { mFlowChk = 1; +#if TARGET_PC + changeGroup(param_0 >= 3000 && param_0 < dusk::flow::kCustomNodeMin ? (s16)0 : s_groupID); +#else changeGroup(param_0 >= 3000 ? (s16)0 : s_groupID); +#endif } void dMsgObject_c::demoMessageGroupLocal() { From 5a8622c6b22c810c3c8f9020b8c5802f05809982 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 20:39:25 -0600 Subject: [PATCH 03/11] Fix forced Poe item demo --- src/d/actor/d_a_e_hp.cpp | 1 + src/d/actor/d_a_e_po.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/d/actor/d_a_e_hp.cpp b/src/d/actor/d_a_e_hp.cpp index a7729d81f6..29ae9d43f5 100644 --- a/src/d/actor/d_a_e_hp.cpp +++ b/src/d/actor/d_a_e_hp.cpp @@ -733,6 +733,7 @@ void daE_HP_c::executeDead() { if (itemCheck.itemNo == dItemNo_NONE_e) { dusk::mods::item_check_complete(itemCheck, this); } else { + daAlink_getAlinkActorClass()->procWolfAtnActorMoveInit(); dusk::mods::item_check_enqueue(itemCheck, dusk::mods::ItemGiveMode::ForcedDemo); } #else diff --git a/src/d/actor/d_a_e_po.cpp b/src/d/actor/d_a_e_po.cpp index 3e1bcb8073..a415cfaa65 100644 --- a/src/d/actor/d_a_e_po.cpp +++ b/src/d/actor/d_a_e_po.cpp @@ -7,6 +7,9 @@ #include "d/actor/d_a_e_po.h" #include "d/actor/d_a_obj_poFire.h" +#if TARGET_PC +#include "d/actor/d_a_alink.h" +#endif #include "d/d_cc_d.h" #include "d/d_cc_uty.h" #include "f_op/f_op_actor_enemy.h" @@ -1139,6 +1142,7 @@ static void e_po_dead(e_po_class* i_this) { if (itemCheck.itemNo == dItemNo_NONE_e) { dusk::mods::item_check_complete(itemCheck, a_this); } else { + daAlink_getAlinkActorClass()->procWolfAtnActorMoveInit(); dusk::mods::item_check_enqueue(itemCheck, dusk::mods::ItemGiveMode::ForcedDemo); } #else From c53f3f774b4bba9281346f74a7b0fa169efa6ac0 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 20:45:43 -0600 Subject: [PATCH 04/11] Add Golden Wolf item checks --- include/d/actor/d_a_obj_life_container.h | 1 + sdk/include/mods/items.h | 1 + src/d/actor/d_a_obj_life_container.cpp | 12 +++++++++++- src/dusk/mods/item.hpp | 2 ++ src/dusk/mods/item_checks.cpp | 16 ++++++++++++++++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/include/d/actor/d_a_obj_life_container.h b/include/d/actor/d_a_obj_life_container.h index 1b98c1afe8..d832c63843 100644 --- a/include/d/actor/d_a_obj_life_container.h +++ b/include/d/actor/d_a_obj_life_container.h @@ -92,6 +92,7 @@ private: u8 mOriginalItemNo; bool mItemOverridden; bool mOverrideHover; + bool mGoldenWolfItem; #endif }; diff --git a/sdk/include/mods/items.h b/sdk/include/mods/items.h index e10b6df639..e0b1cae2d9 100644 --- a/sdk/include/mods/items.h +++ b/sdk/include/mods/items.h @@ -8,6 +8,7 @@ #define ITEM_CHECK_BUG_PREFIX "bug:" /* */ #define ITEM_CHECK_CHEST_PREFIX "chest:" /* : */ #define ITEM_CHECK_FREESTANDING_PREFIX "freestanding:" /* : */ +#define ITEM_CHECK_GOLDEN_WOLF_PREFIX "golden_wolf:" /* */ #define ITEM_CHECK_POE_PREFIX "poe:" /* : */ #define ITEM_CHECK_SHOP_PREFIX "shop:" /* : */ #define ITEM_CHECK_SKY_PREFIX "sky:" /* : */ diff --git a/src/d/actor/d_a_obj_life_container.cpp b/src/d/actor/d_a_obj_life_container.cpp index cd58c828dc..815d03f390 100644 --- a/src/d/actor/d_a_obj_life_container.cpp +++ b/src/d/actor/d_a_obj_life_container.cpp @@ -159,9 +159,19 @@ int daObjLife_c::create() { if (mItemOverridden) { fopAcM_SetParam(this, (params & 0xFFFFFF00) | resolvedItem); } + } else if (mGoldenWolfItem) { + mOriginalItemNo = mItemGiveOriginalNo; + const u16 obtainedItemFlag = static_cast(field_0x938); + const u8 resolvedItem = + dusk::mods::item_check_golden_wolf(obtainedItemFlag, mOriginalItemNo, this); + mItemGiveTag = dusk::mods::item_give_tag_golden_wolf(obtainedItemFlag); + mItemOverridden = resolvedItem != mOriginalItemNo; + if (resolvedItem != parameterItemNo) { + fopAcM_SetParam(this, (params & 0xFFFFFF00) | resolvedItem); + } } else { mOriginalItemNo = mItemGiveOriginalNo; - mItemOverridden = parameterItemNo != mItemGiveOriginalNo; + mItemOverridden = parameterItemNo != mOriginalItemNo; } mOverrideHover = mItemOverridden && diff --git a/src/dusk/mods/item.hpp b/src/dusk/mods/item.hpp index 5577358f38..f27079427e 100644 --- a/src/dusk/mods/item.hpp +++ b/src/dusk/mods/item.hpp @@ -25,12 +25,14 @@ ItemCheckResult item_check_commit(uint32_t giveTag, uint8_t itemNo, fopAc_ac_c* uint8_t item_check_chest(uint8_t boxNo, uint8_t itemNo, fopAc_ac_c* chest); uint8_t item_check_boss(uint8_t itemNo, fopAc_ac_c* boss); uint8_t item_check_freestanding(uint8_t bitNo, uint8_t itemNo, fopAc_ac_c* item); +uint8_t item_check_golden_wolf(uint16_t eventFlag, uint8_t itemNo, fopAc_ac_c* item); uint8_t item_check_shop(uint8_t itemNo, fopAc_ac_c* giver); uint32_t item_give_tag(const char* name); uint32_t item_give_tag_chest(uint8_t boxNo); uint32_t item_give_tag_boss(); uint32_t item_give_tag_freestanding(uint8_t bitNo); +uint32_t item_give_tag_golden_wolf(uint16_t eventFlag); uint32_t item_give_tag_poe(uint8_t bitNo); uint32_t item_give_tag_shop(uint8_t itemNo); uint32_t item_give_tag_bug(uint8_t insectId); diff --git a/src/dusk/mods/item_checks.cpp b/src/dusk/mods/item_checks.cpp index 1684310c42..6327a07e0a 100644 --- a/src/dusk/mods/item_checks.cpp +++ b/src/dusk/mods/item_checks.cpp @@ -143,6 +143,10 @@ std::string freestanding_check_name(uint8_t bitNo) { return fmt::format("freestanding:{}:{}", current_stage_name(), bitNo); } +std::string golden_wolf_check_name(uint16_t eventFlag) { + return fmt::format("golden_wolf:{}", eventFlag); +} + std::string poe_check_name(uint8_t bitNo) { return fmt::format("poe:{}:{}", current_stage_name(), bitNo); } @@ -274,6 +278,14 @@ uint8_t item_check_freestanding(uint8_t bitNo, uint8_t itemNo, fopAc_ac_c* item) return item_check(name.c_str(), itemNo, item); } +uint8_t item_check_golden_wolf(uint16_t eventFlag, uint8_t itemNo, fopAc_ac_c* item) { + if (s_modChecks.empty()) { + return itemNo; + } + const auto name = golden_wolf_check_name(eventFlag); + return item_check(name.c_str(), itemNo, item); +} + uint8_t item_check_shop(uint8_t itemNo, fopAc_ac_c* giver) { if (s_modChecks.empty()) { return itemNo; @@ -314,6 +326,10 @@ uint32_t item_give_tag_freestanding(uint8_t bitNo) { return item_give_tag(freestanding_check_name(bitNo).c_str()); } +uint32_t item_give_tag_golden_wolf(uint16_t eventFlag) { + return item_give_tag(golden_wolf_check_name(eventFlag).c_str()); +} + uint32_t item_give_tag_poe(uint8_t bitNo) { return item_give_tag(poe_check_name(bitNo).c_str()); } From 72ccb14d3508912c8c73c78d90e869e6c85d07a3 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 23:21:21 -0600 Subject: [PATCH 05/11] Guard against null stag_info --- src/d/d_com_inf_game.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index 61aa0dc179..dea395644b 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -1503,7 +1503,11 @@ static void dummy1() { } BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif return dComIfGs_isTbox(i_no); } else { return dComIfGs_isSaveTbox(i_stageNo, i_no); @@ -1511,7 +1515,11 @@ BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no) { } void dComIfGs_onStageSwitch(int i_stageNo, int i_no) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif dComIfGs_onSwitch(i_no, -1); } @@ -1527,7 +1535,11 @@ void dComIfGs_offStageSwitch(int i_stageNo, int i_no) { } BOOL dComIfGs_isStageSwitch(int i_stageNo, int i_no) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif return dComIfGs_isSwitch(i_no, -1); } else { return dComIfGs_isSaveSwitch(i_stageNo, i_no); @@ -1535,7 +1547,11 @@ BOOL dComIfGs_isStageSwitch(int i_stageNo, int i_no) { } void dComIfGs_onDungeonItemMap(int i_stageNo) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif dComIfGs_onDungeonItemMap(); } @@ -1551,7 +1567,11 @@ void dComIfGs_offDungeonItemMap(int i_stageNo) { } s32 dComIfGs_isDungeonItemMap(int i_stageNo) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif return dComIfGs_isDungeonItemMap(); } @@ -1559,7 +1579,11 @@ s32 dComIfGs_isDungeonItemMap(int i_stageNo) { } void dComIfGs_onDungeonItemCompass(int i_stageNo) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif dComIfGs_onDungeonItemCompass(); } @@ -1575,7 +1599,11 @@ void dComIfGs_offDungeonItemCompass(int i_stageNo) { } s32 dComIfGs_isDungeonItemCompass(int i_stageNo) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif return dComIfGs_isDungeonItemCompass(); } @@ -1583,7 +1611,11 @@ s32 dComIfGs_isDungeonItemCompass(int i_stageNo) { } void dComIfGs_onDungeonItemBossKey(int i_stageNo) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif dComIfGs_onDungeonItemBossKey(); } @@ -1599,7 +1631,11 @@ void dComIfGs_offDungeonItemBossKey(int i_stageNo) { } s32 dComIfGs_isDungeonItemBossKey(int i_stageNo) { +#if TARGET_PC + if (dComIfGp_getStageStagInfo() && i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#else if (i_stageNo == dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo())) { +#endif return dComIfGs_isDungeonItemBossKey(); } From 2d70c24b377f62cde01c6bddfb64791940d5664d Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 11:49:45 -0600 Subject: [PATCH 06/11] Improve mod hook compatibility (inlines) --- CMakeLists.txt | 46 +- include/d/actor/d_a_alink.h | 2 + include/d/actor/d_a_player.h | 2 + include/d/d_com_inf_game.h | 1012 +++++++++- include/global.h | 8 + src/d/d_com_inf_game.cpp | 3596 ++++++++++++++++++++++++++++++++++ 6 files changed, 4585 insertions(+), 81 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f3bb07a27a..3ebfe29dc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -411,7 +411,47 @@ if (DUSK_ENABLE_CODE_MODS) setup_symbol_manifest(dusklight) endif () -# Hook reliability: guaranteed patchable entries on the game ABI surface, and no identical-code folding. +# Hook reliability: prevent auto-inlining, guarantee patchable function entries, +# and disable identical-code folding for game functions. +set(DUSK_GAME_ABI_INLINE_OPTIONS) +if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU") + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + list(APPEND DUSK_GAME_ABI_INLINE_OPTIONS + $<$:-finline-hint-functions>) + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + list(APPEND DUSK_GAME_ABI_INLINE_OPTIONS + $<$:-flive-patching=inline-clone> + $<$:-fno-inline-functions> + $<$:-fno-inline-small-functions> + $<$:-fno-inline-functions-called-once> + $<$:-fno-early-inlining> + $<$:-fno-ipa-cp> + $<$:-fno-ipa-cp-clone> + $<$:-fno-ipa-sra> + $<$:-fno-partial-inlining>) + endif () +endif () + +if (DUSK_GAME_ABI_INLINE_OPTIONS) + set(_game_abi_files ${GAME_BASE_FILES} ${GAME_DEBUG_FILES}) + list(FILTER _game_abi_files EXCLUDE REGEX "^src/dusk/") + set_property(SOURCE ${_game_abi_files} APPEND PROPERTY + COMPILE_OPTIONS ${DUSK_GAME_ABI_INLINE_OPTIONS}) + + foreach(jsystem_lib IN LISTS JSYSTEM_LIBRARIES) + target_compile_options(${jsystem_lib} PRIVATE ${DUSK_GAME_ABI_INLINE_OPTIONS}) + endforeach() + foreach(_sdk_lib aurora_card aurora_core aurora_dvd aurora_gd aurora_gx aurora_mtx + aurora_os aurora_pad aurora_si aurora_vi) + if (TARGET ${_sdk_lib}) + get_target_property(_sdk_lib_imported ${_sdk_lib} IMPORTED) + if (NOT _sdk_lib_imported) + target_compile_options(${_sdk_lib} PRIVATE ${DUSK_GAME_ABI_INLINE_OPTIONS}) + endif () + endif () + endforeach () +endif () + if (MSVC) if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(DUSK_PATCHABLE_ENTRY_FLAG $<$:/hotpatch>) @@ -421,8 +461,8 @@ if (MSVC) else () target_link_options(dusklight PRIVATE /FUNCTIONPADMIN /OPT:NOICF) endif () -elseif (CMAKE_CXX_COMPILER_ID MATCHES "^(AppleClang|Clang)$") - if (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" OR CMAKE_OSX_ARCHITECTURES MATCHES "arm64") +elseif (CMAKE_CXX_COMPILER_ID MATCHES "^(AppleClang|Clang|GNU)$") + if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64|aarch64)$" OR CMAKE_OSX_ARCHITECTURES MATCHES "arm64") set(DUSK_PATCHABLE_ENTRY_FLAG $<$:-fpatchable-function-entry=2,1>) else () set(DUSK_PATCHABLE_ENTRY_FLAG $<$:-fpatchable-function-entry=10,4>) diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 8728bc16a8..384891c8d5 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -8449,8 +8449,10 @@ struct daAlink_cutHorseParamTbl { /* 0xA */ u8 m_cutType; }; // Size: 0xC +#if !TARGET_PC inline BOOL dComIfGs_isTransformLV(int i_no); inline BOOL dComIfGs_isEventBit(const u16); +#endif static fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* i_actor, void* i_data); static fopAc_ac_c* daAlink_searchCanoe(fopAc_ac_c* i_actor, void* i_data); diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 66139b54cf..ce6158fcf7 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -311,9 +311,11 @@ private: class daMidna_c; class daSpinner_c; class daPy_py_c; +#if !TARGET_PC inline daPy_py_c* dComIfGp_getLinkPlayer(); inline BOOL dComIfGs_isEventBit(const u16); inline u32 dComIfGs_getLastSceneMode(); +#endif class daPy_py_c : public fopAc_ac_c { public: diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index a598cbcc10..62b8744b51 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -20,11 +20,6 @@ #if defined(DUSK_BUILDING_GAME) #include #include "dusk/settings.h" -#else -#ifndef ZoneScoped -#define ZoneScoped -#define ZoneScopedN(name) -#endif #endif enum dComIfG_ButtonStatus { @@ -1276,6 +1271,938 @@ int dComIfGd_setShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3 f32 param_5, f32 param_6, f32 param_7, cBgS_PolyInfo& param_8, dKy_tevstr_c* param_9, s16 param_10, f32 param_11, TGXTexObj* param_12); +#if TARGET_PC +DUSK_NOINLINE dSv_info_c* dComIfGs_getSaveInfo(); +DUSK_NOINLINE dSv_save_c* dComIfGs_getSaveData(); +DUSK_NOINLINE u16 dComIfGs_getMaxLife(); +DUSK_NOINLINE void dComIfGs_setMaxLife(u8 i_maxLife); +DUSK_NOINLINE u16 dComIfGs_getLife(); +DUSK_NOINLINE void dComIfGs_setLife(u16 i_life); +DUSK_NOINLINE u16 dComIfGs_getRupee(); +DUSK_NOINLINE void dComIfGs_setRupee(u16 i_rupees); +DUSK_NOINLINE u16 dComIfGs_getMaxOil(); +DUSK_NOINLINE void dComIfGs_setMaxOil(u16 i_maxOil); +DUSK_NOINLINE u16 dComIfGs_getOil(); +DUSK_NOINLINE void dComIfGs_setOil(u16 i_oil); +DUSK_NOINLINE u8 dComIfGs_getSelectEquipClothes(); +DUSK_NOINLINE u8 dComIfGs_getSelectEquipSword(); +DUSK_NOINLINE u8 dComIfGs_getSelectEquipShield(); +DUSK_NOINLINE u8 dComIfGs_getCollectSmell(); +DUSK_NOINLINE void dComIfGs_setCollectSmell(u8 smell); +DUSK_NOINLINE u8 dComIfGs_getBButtonItemKey(); +DUSK_NOINLINE void dComIfGs_setBButtonItemKey(u8 i_itemNo); +DUSK_NOINLINE u8 dComIfGs_getWalletSize(); +DUSK_NOINLINE void dComIfGs_setWalletSize(u8 i_size); +DUSK_NOINLINE u8 dComIfGs_getMaxMagic(); +DUSK_NOINLINE void dComIfGs_setMaxMagic(u8 i_maxMagic); +DUSK_NOINLINE u8 dComIfGs_getMagic(); +DUSK_NOINLINE void dComIfGs_setMagic(u8 i_magic); +DUSK_NOINLINE u8 dComIfGs_getTransformStatus(); +DUSK_NOINLINE void dComIfGs_setTransformStatus(u8 i_status); +DUSK_NOINLINE u8 dComIfGs_getSelectItemIndex(int i_no); +DUSK_NOINLINE u16 dComIfGs_getRupeeMax(); +DUSK_NOINLINE void dComIfGs_offGetMagicUseFlag(); +DUSK_NOINLINE s32 dComIfGs_isGetMagicUseFlag(); +DUSK_NOINLINE f32 dComIfGs_getTime(); +DUSK_NOINLINE void dComIfGs_setTime(f32 i_time); +DUSK_NOINLINE u16 dComIfGs_getDate(); +DUSK_NOINLINE void dComIfGs_setDate(u16 i_date); +DUSK_NOINLINE void dComIfGs_onDarkClearLV(int i_no); +DUSK_NOINLINE void dComIfGs_offDarkClearLV(int i_no); +DUSK_NOINLINE BOOL dComIfGs_isDarkClearLV(int i_no); +DUSK_NOINLINE void dComIfGs_onTransformLV(int i_no); +DUSK_NOINLINE void dComIfGs_offTransformLV(int i_no); +DUSK_NOINLINE BOOL dComIfGs_isTransformLV(int i_no); +DUSK_NOINLINE cXyz dComIfGs_getHorseRestartPos(); +DUSK_NOINLINE s16 dComIfGs_getHorseRestartAngleY(); +DUSK_NOINLINE const char* dComIfGs_getHorseRestartStageName(); +DUSK_NOINLINE s8 dComIfGs_getHorseRestartRoomNo(); +DUSK_NOINLINE void dComIfGs_setHorseRestart( + const char* i_stageName, cXyz& i_pos, s16 i_angle, s8 i_roomNo); +DUSK_NOINLINE cXyz dComIfGs_getPlayerFieldLastStayPos(); +DUSK_NOINLINE s16 dComIfGs_getPlayerFieldLastStayAngleY(); +DUSK_NOINLINE char* dComIfGs_getPlayerFieldLastStayName(); +DUSK_NOINLINE u8 dComIfGs_getPlayerFieldLastStayRegionNo(); +DUSK_NOINLINE bool dComIfGs_isPlayerFieldLastStayFieldDataExistFlag(); +DUSK_NOINLINE void dComIfGs_offPlayerFieldLastStayFieldDataExistFlag(); +DUSK_NOINLINE void dComIfGs_onPlayerFieldLastStayFieldDataExistFlag(); +DUSK_NOINLINE BOOL dComIfGs_isRegionBit(int i_region); +DUSK_NOINLINE void dComIfGs_onRegionBit(int i_region); +DUSK_NOINLINE void dComIfGs_setPlayerFieldLastStayInfo( + const char* i_stage, cXyz& i_pos, s16 i_angle, s8 i_point, u8 i_region); +DUSK_NOINLINE cXyz dComIfGs_getLastWarpMarkPlayerPos(); +DUSK_NOINLINE s16 dComIfGs_getLastWarpMarkPlayerAngleY(); +DUSK_NOINLINE const char* dComIfGs_getLastWarpMarkStageName(); +DUSK_NOINLINE u8 dComIfGs_getLastWarpMarkRoomNo(); +DUSK_NOINLINE s8 dComIfGs_getLastWarpAcceptStage(); +DUSK_NOINLINE void dComIfGs_setLastWarpAcceptStage(s8 param_0); +DUSK_NOINLINE void dComIfGs_resetLastWarpAcceptStage(); +DUSK_NOINLINE void dComIfGs_setItem(int i_slotNo, u8 i_itemNo); +DUSK_NOINLINE u8 dComIfGs_getItem(int i_slotNo, bool i_checkCombo); +DUSK_NOINLINE void dComIfGs_setLineUpItem(); +DUSK_NOINLINE u8 dComIfGs_getLineUpItem(int i_slotNo); +DUSK_NOINLINE void dComIfGs_setBottleItemIn(u8 curItem, u8 newItem); +DUSK_NOINLINE void dComIfGs_setEmptyBottleItemIn(u8 i_itemNo); +DUSK_NOINLINE void dComIfGs_setEmptyBottle(); +DUSK_NOINLINE void dComIfGs_setEmptyBottle(u8 i_itemNo); +DUSK_NOINLINE void dComIfGs_setEquipBottleItemIn(u8 i_curItem, u8 i_newItem); +DUSK_NOINLINE void dComIfGs_setEquipBottleItemEmpty(u8 i_curItem); +DUSK_NOINLINE u8 dComIfGs_checkBottle(u8 i_itemNo); +DUSK_NOINLINE u8 dComIfGs_checkInsectBottle(); +DUSK_NOINLINE u8 dComIfGs_checkEmptyBottle(); +DUSK_NOINLINE void dComIfGs_setEmptyBombBagItemIn(u8 i_newBomb, bool i_setNum); +DUSK_NOINLINE void dComIfGs_setEmptyBombBagItemIn(u8 i_newBomb, u8 i_bombNum, bool i_setNum); +DUSK_NOINLINE void dComIfGs_setEmptyBombBag(); +DUSK_NOINLINE void dComIfGs_setEmptyBombBag(u8 i_newBomb, u8 i_bombNum); +DUSK_NOINLINE u8 dComIfGs_checkBombBag(u8 i_itemNo); +DUSK_NOINLINE void dComIfGs_setWarashibeItem(u8 i_itemNo); +DUSK_NOINLINE void dComIfGs_setRodTypeLevelUp(); +DUSK_NOINLINE void dComIfGs_setBaitItem(u8 i_item); +DUSK_NOINLINE void dComIfGs_onItemFirstBit(u8 i_itemNo); +DUSK_NOINLINE void dComIfGs_offItemFirstBit(u8 i_itemNo); +DUSK_NOINLINE int dComIfGs_isItemFirstBit(u8 i_no); +DUSK_NOINLINE u8 dComIfGs_getArrowNum(); +DUSK_NOINLINE void dComIfGs_setArrowNum(u8 i_arrowNum); +DUSK_NOINLINE u8 dComIfGs_getPachinkoNum(); +DUSK_NOINLINE void dComIfGs_setPachinkoNum(u8 i_num); +DUSK_NOINLINE u8 dComIfGs_getPachinkoMax(); +DUSK_NOINLINE void dComIfGs_setBombNum(u8 i_num); +DUSK_NOINLINE void dComIfGs_setBombNum(u8 i_bagIdx, u8 i_bombNum); +DUSK_NOINLINE u8 dComIfGs_getBombNum(u8 i_bagIdx); +DUSK_NOINLINE void dComIfGs_setBottleNum(u8 i_bottleIdx, u8 i_bottleNum); +DUSK_NOINLINE void dComIfGs_addBottleNum(u8 i_bottleIdx, s16 i_num); +DUSK_NOINLINE u8 dComIfGs_getBottleNum(u8 i_bottleIdx); +DUSK_NOINLINE u8 dComIfGs_getArrowMax(); +DUSK_NOINLINE void dComIfGs_setArrowMax(u8 i_arrowMax); +DUSK_NOINLINE void dComIfGs_setBombMax(u8 i_max); +DUSK_NOINLINE void dComIfGs_setBombMax(u8 i_type, u8 i_max); +DUSK_NOINLINE u8 dComIfGs_getBombMax(); +DUSK_NOINLINE u8 dComIfGs_getBombMax(u8 i_bombType); +DUSK_NOINLINE void dComIfGs_setPohSpiritNum(u8 i_num); +DUSK_NOINLINE u8 dComIfGs_getPohSpiritNum(); +DUSK_NOINLINE void dComIfGs_addPohSpiritNum(); +DUSK_NOINLINE BOOL dComIfGs_isCollectClothes(u8 i_clothesNo); +DUSK_NOINLINE void dComIfGs_setCollectClothes(u8 i_clothesNo); +DUSK_NOINLINE void dComIfGs_setCollectSword(u8 i_swordNo); +DUSK_NOINLINE void dComIfGs_setCollectShield(u8 i_shieldNo); +DUSK_NOINLINE BOOL dComIfGs_isCollectClothing(u8 i_clothesNo); +DUSK_NOINLINE void dComIfGs_offCollectClothes(u8 i_clothesNo); +DUSK_NOINLINE BOOL dComIfGs_isCollectSword(u8 i_swordNo); +DUSK_NOINLINE void dComIfGs_offCollectSword(u8 i_swordNo); +DUSK_NOINLINE BOOL dComIfGs_isCollectShield(u8 i_item); +DUSK_NOINLINE void dComIfGs_offCollectShield(u8 i_shieldNo); +DUSK_NOINLINE void dComIfGs_onCollectCrystal(u8 i_item); +DUSK_NOINLINE void dComIfGs_offCollectCrystal(u8 i_item); +DUSK_NOINLINE bool dComIfGs_isCollectCrystal(u8 i_item); +DUSK_NOINLINE void dComIfGs_onCollectMirror(u8 i_item); +DUSK_NOINLINE void dComIfGs_offCollectMirror(u8 i_item); +DUSK_NOINLINE bool dComIfGs_isCollectMirror(u8 i_item); +DUSK_NOINLINE void dComIfGs_setLightDropNum(u8 i_level, u8 i_num); +DUSK_NOINLINE u8 dComIfGs_getLightDropNum(u8 i_nowLevel); +DUSK_NOINLINE void dComIfGs_onLightDropGetFlag(u8 i_nowLevel); +DUSK_NOINLINE void dComIfGs_offLightDropGetFlag(u8 i_level); +DUSK_NOINLINE BOOL dComIfGs_isLightDropGetFlag(u8 i_nowLevel); +DUSK_NOINLINE void dComIfGs_onLetterGetFlag(int i_no); +DUSK_NOINLINE BOOL dComIfGs_isLetterGetFlag(int i_no); +DUSK_NOINLINE void dComIfGs_onLetterReadFlag(int i_no); +DUSK_NOINLINE int dComIfGs_isLetterReadFlag(int i_no); +DUSK_NOINLINE u8 dComIfGs_getGetNumber(int i_no); +DUSK_NOINLINE void dComIfGs_setGetNumber(int i_no, u8 i_value); +DUSK_NOINLINE void dComIfGs_addFishNum(u8 param_0); +DUSK_NOINLINE u16 dComIfGs_getFishNum(u8 param_0); +DUSK_NOINLINE u8 dComIfGs_getFishSize(u8 param_0); +DUSK_NOINLINE void dComIfGs_setFishSize(u8 param_0, u8 param_1); +DUSK_NOINLINE OSTime dComIfGs_getTotalTime(); +DUSK_NOINLINE void dComIfGs_addDeathCount(); +DUSK_NOINLINE u16 dComIfGs_getDeathCount(); +DUSK_NOINLINE TEXT_SPAN dComIfGs_getPlayerName(); +DUSK_NOINLINE void dComIfGs_setPlayerName(const char* i_name); +DUSK_NOINLINE TEXT_SPAN dComIfGs_getHorseName(); +DUSK_NOINLINE void dComIfGs_setHorseName(const char* i_name); +DUSK_NOINLINE u8 dComIfGs_getClearCount(); + +// Ruby inline names are from TWW debug. +DUSK_NOINLINE u8 dComIfGs_getOptRuby(); +DUSK_NOINLINE void dComIfGs_setOptRuby(u8 i_ruby); +DUSK_NOINLINE u8 dComIfGs_getOptAttentionType(); +DUSK_NOINLINE void dComIfGs_setOptAttentionType(u8 i_attentionType); +DUSK_NOINLINE void dComIfGs_setOptCalibrateDist(u16 i_calibrateDist); +DUSK_NOINLINE void dComIfGs_setOptCalValue(s8 i_calValue); +DUSK_NOINLINE u8 dComIfGs_getOptCameraControl(); +DUSK_NOINLINE void dComIfGs_setOptCameraControl(u8 i_cameraControl); +DUSK_NOINLINE u8 dComIfGs_getOptPointer(); +DUSK_NOINLINE void dComIfGs_setOptPointer(u8 i_pointer); +DUSK_NOINLINE u8 dComIfGs_checkOptVibration(); +DUSK_NOINLINE u8 dComIfGs_getOptSound(); +DUSK_NOINLINE void dComIfGs_setOptSound(u8 i_mode); +DUSK_NOINLINE u8 dComIfGs_getOptVibration(); +DUSK_NOINLINE void dComIfGs_setOptVibration(u8 i_status); +DUSK_NOINLINE u8 dComIfGs_getPalLanguage(); +DUSK_NOINLINE BOOL dComIfGs_isSaveTbox(int i_stageNo, int i_no); +DUSK_NOINLINE void dComIfGs_onSaveSwitch(int i_stageNo, int i_no); +DUSK_NOINLINE void dComIfGs_offSaveSwitch(int i_stageNo, int i_no); +DUSK_NOINLINE BOOL dComIfGs_isSaveSwitch(int i_stageNo, int i_no); +DUSK_NOINLINE void dComIfGs_onSaveVisitedRoom(int param_0, int i_roomNo); +DUSK_NOINLINE void dComIfGs_offSaveVisitedRoom(int param_0, int i_roomNo); +DUSK_NOINLINE BOOL dComIfGs_isSaveVisitedRoom(int param_0, int i_roomNo); +DUSK_NOINLINE void* dComIfGs_getPEventBit(); +DUSK_NOINLINE void dComIfGs_onEventBit(const u16 i_flag); +DUSK_NOINLINE void dComIfGs_offEventBit(const u16 i_flag); +DUSK_NOINLINE BOOL dComIfGs_isEventBit(const u16 i_flag); +DUSK_NOINLINE void dComIfGs_setEventReg(u16 reg, u8 value); +DUSK_NOINLINE u8 dComIfGs_getEventReg(u16 reg); +DUSK_NOINLINE int dComIfGs_getHookGameTime(); +DUSK_NOINLINE void dComIfGs_setHookGameTime(u32 i_time); +DUSK_NOINLINE u32 dComIfGs_getBalloonScore(); +DUSK_NOINLINE void dComIfGs_setBalloonScore(u32 i_score); +DUSK_NOINLINE int dComIfGs_getRaceGameTime(); +DUSK_NOINLINE void dComIfGs_setRaceGameTime(int i_time); +DUSK_NOINLINE u8 dComIfGs_getKeyNum(); +DUSK_NOINLINE void dComIfGs_setKeyNum(u8 i_keyNum); +DUSK_NOINLINE void dComIfGs_onDungeonItemMap(); +DUSK_NOINLINE void dComIfGs_offDungeonItemMap(); +DUSK_NOINLINE s32 dComIfGs_isDungeonItemMap(); +DUSK_NOINLINE void dComIfGs_onDungeonItemCompass(); +DUSK_NOINLINE void dComIfGs_offDungeonItemCompass(); +DUSK_NOINLINE s32 dComIfGs_isDungeonItemCompass(); +DUSK_NOINLINE void dComIfGs_onDungeonItemBossKey(); +DUSK_NOINLINE void dComIfGs_offDungeonItemBossKey(); +DUSK_NOINLINE s32 dComIfGs_isDungeonItemBossKey(); +DUSK_NOINLINE void dComIfGs_onStageBossEnemy(); +DUSK_NOINLINE void dComIfGs_offStageBossEnemy(); +DUSK_NOINLINE s32 dComIfGs_isStageBossEnemy(); +DUSK_NOINLINE void dComIfGs_onStageLife(); +DUSK_NOINLINE void dComIfGs_offStageLife(); +DUSK_NOINLINE s32 dComIfGs_isStageLife(); +DUSK_NOINLINE void dComIfGs_onStageBossDemo(); +DUSK_NOINLINE void dComIfGs_offStageBossDemo(); +DUSK_NOINLINE s32 dComIfGs_isStageBossDemo(); +DUSK_NOINLINE void dComIfGs_onDungeonItemWarp(); +DUSK_NOINLINE void dComIfGs_offDungeonItemWarp(); +DUSK_NOINLINE s32 dComIfGs_isDungeonItemWarp(); +DUSK_NOINLINE void dComIfGs_onStageMiddleBoss(); +DUSK_NOINLINE void dComIfGs_offStageMiddleBoss(); +DUSK_NOINLINE BOOL dComIfGs_isStageMiddleBoss(); +DUSK_NOINLINE void dComIfGs_onTbox(int i_no); +DUSK_NOINLINE void dComIfGs_offTbox(int i_no); +DUSK_NOINLINE BOOL dComIfGs_isTbox(int i_no); +DUSK_NOINLINE void dComIfGs_onSaveSwitch(int i_no); +DUSK_NOINLINE void dComIfGs_offSaveSwitch(int i_no); +DUSK_NOINLINE BOOL dComIfGs_isSaveSwitch(int i_no); +DUSK_NOINLINE BOOL dComIfGs_isSaveItem(int i_no); +DUSK_NOINLINE void dComIfGs_onSaveDunSwitch(int i_swNo); +DUSK_NOINLINE void dComIfGs_offSaveDunSwitch(int i_swNo); +DUSK_NOINLINE BOOL dComIfGs_isSaveDunSwitch(int i_no); +DUSK_NOINLINE BOOL dComIfGs_isSaveDunItem(int i_no); +DUSK_NOINLINE void dComIfGs_resetDan(); +DUSK_NOINLINE void dComIfGs_initDan(s8 i_stageNo); +DUSK_NOINLINE void dComIfGs_clearRoomSwitch(int i_zoneNo); +DUSK_NOINLINE void dComIfGs_clearRoomItem(int i_zoneNo); +DUSK_NOINLINE void dComIfGs_onSvZoneSwitch(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_offSvZoneSwitch(int i_zoneNo, int i_swBit); +DUSK_NOINLINE BOOL dComIfGs_isSvZoneSwitch(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_onSvOneZoneSwitch(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_offSvOneZoneSwitch(int i_zoneNo, int i_swBit); +DUSK_NOINLINE BOOL dComIfGs_isSvOneZoneSwitch(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_onSvZoneItem(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_offSvZoneItem(int i_zoneNo, int i_swBit); +DUSK_NOINLINE BOOL dComIfGs_isSvZoneItem(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_onSvOneZoneItem(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_offSvOneZoneItem(int i_zoneNo, int i_swBit); +DUSK_NOINLINE BOOL dComIfGs_isSvOneZoneItem(int i_zoneNo, int i_swBit); +DUSK_NOINLINE void dComIfGs_removeZone(int i_zoneNo); +DUSK_NOINLINE s8 dComIfGs_getRestartRoomNo(); +DUSK_NOINLINE s16 dComIfGs_getStartPoint(); +DUSK_NOINLINE void dComIfGs_setStartPoint(s16 i_point); +DUSK_NOINLINE s16 dComIfGs_getRestartRoomAngleY(); +DUSK_NOINLINE const cXyz& dComIfGs_getRestartRoomPos(); +DUSK_NOINLINE u32 dComIfGs_getRestartRoomParam(); +DUSK_NOINLINE void dComIfGs_setRestartRoomParam(u32 i_param); +DUSK_NOINLINE f32 dComIfGs_getLastSceneSpeedF(); +DUSK_NOINLINE u32 dComIfGs_getLastSceneMode(); +DUSK_NOINLINE s16 dComIfGs_getLastSceneAngleY(); +DUSK_NOINLINE void dComIfGs_setRestartRoom(const cXyz& i_position, s16 i_angle, s8 i_roomNo); +DUSK_NOINLINE void dComIfGs_onTmpBit(const u16 i_flag); +DUSK_NOINLINE void dComIfGs_offTmpBit(const u16 i_flag); +DUSK_NOINLINE BOOL dComIfGs_isTmpBit(const u16 i_flag); +DUSK_NOINLINE void dComIfGs_setTmpReg(u16 i_reg, u8 i_no); +DUSK_NOINLINE u8 dComIfGs_getTmpReg(const u16 i_reg); +DUSK_NOINLINE dSv_turnRestart_c& dComIfGs_getTurnRestart(); +DUSK_NOINLINE const cXyz& dComIfGs_getTurnRestartPos(); +DUSK_NOINLINE u32 dComIfGs_getTurnRestartParam(); +DUSK_NOINLINE s16 dComIfGs_getTurnRestartAngleY(); +DUSK_NOINLINE s8 dComIfGs_getTurnRestartRoomNo(); +DUSK_NOINLINE void dComIfGs_setTurnRestart( + const cXyz& i_position, s16 i_angle, s8 param_2, u32 i_param); +DUSK_NOINLINE u8 dComIfGs_getDataNum(); +DUSK_NOINLINE void dComIfGs_setDataNum(u8 i_num); +DUSK_NOINLINE u8 dComIfGs_getNewFile(); +DUSK_NOINLINE void dComIfGs_setNewFile(u8 i_fileNo); +DUSK_NOINLINE u8 dComIfGs_getNoFile(); +DUSK_NOINLINE void dComIfGs_setNoFile(u8 i_file); +DUSK_NOINLINE s64 dComIfGs_getSaveStartTime(); +DUSK_NOINLINE void dComIfGs_setSaveStartTime(s64 i_time); +DUSK_NOINLINE s64 dComIfGs_getSaveTotalTime(); +DUSK_NOINLINE void dComIfGs_setSaveTotalTime(s64 i_time); +DUSK_NOINLINE void dComIfGs_init(); +DUSK_NOINLINE void dComIfGs_getSave(int i_stageNo); +DUSK_NOINLINE void dComIfGs_putSave(int i_stageNo); +DUSK_NOINLINE void dComIfGs_initZone(); +DUSK_NOINLINE int dComIfGs_createZone(int roomNo); +DUSK_NOINLINE void dComIfGs_onSwitch(int i_no, int i_roomNo); +DUSK_NOINLINE void dComIfGs_offSwitch(int i_no, int i_roomNo); +DUSK_NOINLINE BOOL dComIfGs_isSwitch(int i_no, int i_roomNo); +DUSK_NOINLINE void dComIfGs_revSwitch(int i_no, int i_roomNo); +DUSK_NOINLINE void dComIfGs_onItem(int i_bitNo, int i_roomNo); +DUSK_NOINLINE bool dComIfGs_isItem(int i_bitNo, int i_roomNo); +DUSK_NOINLINE void dComIfGs_onActor(int i_bitNo, int i_roomNo); +DUSK_NOINLINE void dComIfGs_offActor(int i_no, int i_roomNo); +DUSK_NOINLINE BOOL dComIfGs_isActor(int i_no, int i_roomNo); +DUSK_NOINLINE void dComIfGs_setMemoryToCard(u8* i_saveData, int i_dataNum); +DUSK_NOINLINE void dComIfGs_setCardToMemory(u8* card_ptr, int dataNum); +DUSK_NOINLINE void dComIfGs_setInitDataToCard(u8* i_saveData, int i_dataNum); +DUSK_NOINLINE u8 dComIfGs_getWolfAbility(int i_idx); +DUSK_NOINLINE s8 dComIfGs_Grass_hide_Check(); +DUSK_NOINLINE dStage_startStage_c* dComIfGp_getStartStage(); +DUSK_NOINLINE void dComIfGp_setStartStage(dStage_startStage_c* p_startStage); +DUSK_NOINLINE const char* dComIfGp_getStartStageName(); +DUSK_NOINLINE s16 dComIfGp_getStartStagePoint(); +DUSK_NOINLINE s8 dComIfGp_getStartStageRoomNo(); +DUSK_NOINLINE s8 dComIfGp_getStartStageLayer(); +DUSK_NOINLINE void dComIfGp_setStartStageLayer(s8 layer); +DUSK_NOINLINE s8 dComIfGp_getStartStageDarkArea(); +DUSK_NOINLINE void dComIfGp_setStartStageDarkArea(s8 darkArea); +DUSK_NOINLINE dStage_startStage_c* dComIfGp_getNextStartStage(); +DUSK_NOINLINE const char* dComIfGp_getNextStageName(); +DUSK_NOINLINE s16 dComIfGp_getNextStagePoint(); +DUSK_NOINLINE s16 dComIfGp_getNextStageRoomNo(); +DUSK_NOINLINE s16 dComIfGp_getNextStageLayer(); +DUSK_NOINLINE BOOL dComIfGp_isEnableNextStage(); +DUSK_NOINLINE void dComIfGp_offEnableNextStage(); +DUSK_NOINLINE s8 dComIfGp_getNextStageWipe(); +DUSK_NOINLINE u8 dComIfGp_getNextStageWipeSpeed(); +DUSK_NOINLINE dStage_stageDt_c* dComIfGp_getStage(); +DUSK_NOINLINE roomRead_class* dComIfGp_getStageRoom(); +DUSK_NOINLINE stage_palette_info_class* dComIfGp_getStagePaletteInfo(); +DUSK_NOINLINE stage_pselect_info_class* dComIfGp_getStagePselectInfo(); +DUSK_NOINLINE stage_envr_info_class* dComIfGp_getStageEnvrInfo(); +DUSK_NOINLINE stage_vrboxcol_info_class* dComIfGp_getStageVrboxcolInfo(); +DUSK_NOINLINE stage_plight_info_class* dComIfGp_getStagePlightInfo(); +DUSK_NOINLINE int dComIfGp_getStagePaletteNumInfo(); +DUSK_NOINLINE int dComIfGp_getStagePselectNumInfo(); +DUSK_NOINLINE int dComIfGp_getStageEnvrNumInfo(); +DUSK_NOINLINE int dComIfGp_getStageVrboxcolNumInfo(); +DUSK_NOINLINE int dComIfGp_getStagePlightNumInfo(); +DUSK_NOINLINE stage_stag_info_class* dComIfGp_getStageStagInfo(); +DUSK_NOINLINE stage_scls_info_dummy_class* dComIfGp_getStageSclsInfo(); +DUSK_NOINLINE dStage_Multi_c* dComIfGp_getMulti(); +DUSK_NOINLINE void dComIfGp_setOldMulti(); +DUSK_NOINLINE void dComIfGp_resetOldMulti(); +DUSK_NOINLINE s16 dComIfGp_getStageWorldRollAngleX(); +DUSK_NOINLINE s16 dComIfGp_getStageWorldRollDirAngleY(); +DUSK_NOINLINE int dComIfGp_roomControl_getStayNo(); +DUSK_NOINLINE BOOL dComIfGp_roomControl_getTimePass(); +DUSK_NOINLINE void dComIfGp_roomControl_setTimePass(int isPassing); +DUSK_NOINLINE dKy_tevstr_c* dComIfGp_roomControl_getTevStr(int i_roomNo); +DUSK_NOINLINE void dComIfGp_roomControl_setStatusFlag(int i_roomNo, u8 flag); +DUSK_NOINLINE void dComIfGp_roomControl_onStatusFlag(int i_roomNo, u8 flag); +DUSK_NOINLINE void dComIfGp_roomControl_offStatusFlag(int i_roomNo, u8 flag); +DUSK_NOINLINE u8 dComIfGp_roomControl_checkStatusFlag(int i_roomNo, u8 flag); +DUSK_NOINLINE s32 dComIfGp_roomControl_getZoneNo(int i_roomNo); +DUSK_NOINLINE void dComIfGp_roomControl_setZoneNo(int roomNo, int zoneNo); +DUSK_NOINLINE void dComIfGp_roomControl_init(); +DUSK_NOINLINE void dComIfGp_roomControl_initZone(); +DUSK_NOINLINE dStage_roomDt_c* dComIfGp_roomControl_getStatusRoomDt(int room_no); +DUSK_NOINLINE void dComIfGp_roomControl_setStayNo(int stayNo); +DUSK_NOINLINE BOOL dComIfGp_roomControl_checkRoomDisp(int i_roomNo); +DUSK_NOINLINE int dComIfGp_roomControl_loadRoom(int param_0, u8* param_1, bool param_2); +DUSK_NOINLINE void dComIfGp_roomControl_zoneCountCheck(int i_roomNo); +DUSK_NOINLINE dEvt_control_c* dComIfGp_getEvent(); +DUSK_NOINLINE u16 dComIfGp_event_chkEventFlag(u16 i_flag); +DUSK_NOINLINE void dComIfGp_event_onEventFlag(u16 i_flag); +DUSK_NOINLINE void dComIfGp_event_onHindFlag(u16 i_flag); +DUSK_NOINLINE void dComIfGp_event_offHindFlag(u16 i_flag); +DUSK_NOINLINE u8 dComIfGp_event_getMode(); +DUSK_NOINLINE BOOL dComIfGp_event_runCheck(); +DUSK_NOINLINE u16 dComIfGp_event_checkHind(u16 i_hindFlag); +DUSK_NOINLINE BOOL dComIfGp_event_chkTalkXY(); +DUSK_NOINLINE u8 dComIfGp_event_getPreItemNo(); +DUSK_NOINLINE f32 dComIfGp_event_getCullRate(); +DUSK_NOINLINE void dComIfGp_event_setCullRate(f32 i_rate); +DUSK_NOINLINE int dComIfGp_event_order(u16 i_type, u16 i_prio, u16 i_flags, u16 i_hindFlags, + void* i_requestActor, void* i_targetActor, s16 i_eventID, u8 i_mapToolId); +DUSK_NOINLINE void dComIfGp_event_reset(); +DUSK_NOINLINE int dComIfGp_event_moveApproval(void* i_actor); +DUSK_NOINLINE BOOL dComIfGp_event_compulsory( + void* i_actor, const char* i_eventname, u16 i_hindFlag); +DUSK_NOINLINE void dComIfGp_event_remove(); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_event_getPt1(); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_event_getPt2(); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_event_getTalkPartner(); +DUSK_NOINLINE void dComIfGp_event_setTalkPartner(void* i_actor); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_event_getItemPartner(); +DUSK_NOINLINE void dComIfGp_event_setItemPartner(void* i_actor); +DUSK_NOINLINE void dComIfGp_event_setItemPartnerId(fpc_ProcID i_id); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_event_getDoorPartner(); +DUSK_NOINLINE void dComIfGp_event_setDoorPartner(void* i_partner); +DUSK_NOINLINE u8 dComIfGp_event_getGtItm(); +DUSK_NOINLINE void dComIfGp_event_setGtItm(u8 i_itemNo); +DUSK_NOINLINE dEvent_manager_c& dComIfGp_getEventManager(); +DUSK_NOINLINE dEvent_manager_c* dComIfGp_getPEvtManager(); +DUSK_NOINLINE int dComIfGp_evmng_cameraPlay(); +DUSK_NOINLINE int dComIfGp_evmng_startDemo(int i_mapToolId); +DUSK_NOINLINE void dComIfGp_evmng_create(); +DUSK_NOINLINE void dComIfGp_evmng_remove(); +DUSK_NOINLINE bool dComIfGp_evmng_existence(s16 eventId); +DUSK_NOINLINE s16 dComIfGp_evmng_getEventIdx(const char* eventName, u8 mapToolID); +DUSK_NOINLINE bool dComIfGp_evmng_existence(const char* eventname); +DUSK_NOINLINE BOOL dComIfGp_evmng_isMapToolCamera(u8 mapToolID); +DUSK_NOINLINE BOOL dComIfGp_evmng_startCheck(s16 i_eventId); +DUSK_NOINLINE BOOL dComIfGp_evmng_startCheck(char const* i_eventname); +DUSK_NOINLINE BOOL dComIfGp_evmng_endCheck(s16 i_eventID); +DUSK_NOINLINE BOOL dComIfGp_evmng_endCheck(const char* i_eventname); +DUSK_NOINLINE int dComIfGp_evmng_getMyStaffId( + const char* i_staffname, fopAc_ac_c* i_actor, int i_tagId); +DUSK_NOINLINE int dComIfGp_evmng_getIsAddvance(int i_staffId); +DUSK_NOINLINE int dComIfGp_evmng_getMyActIdx(int i_staffId, DUSK_CONST char* DUSK_CONST* i_actions, + int i_actionNum, BOOL param_3, BOOL param_4); +DUSK_NOINLINE f32* dComIfGp_evmng_getMyFloatP(int i_staffId, DUSK_CONST char* i_dataname); +DUSK_NOINLINE cXyz* dComIfGp_evmng_getMyXyzP(int i_staffId, DUSK_CONST char* i_dataname); +DUSK_NOINLINE int* dComIfGp_evmng_getMyIntegerP(int i_staffId, DUSK_CONST char* i_dataname); +DUSK_NOINLINE char* dComIfGp_evmng_getMyStringP(int i_staffId, DUSK_CONST char* i_dataname); +DUSK_NOINLINE int dComIfGp_evmng_getMySubstanceNum(int i_staffId, DUSK_CONST char* i_dataname); +DUSK_NOINLINE void dComIfGp_evmng_cutEnd(int i_staffId); +DUSK_NOINLINE void dComIfGp_evmng_setGoal(cXyz* i_pos); +DUSK_NOINLINE cXyz* dComIfGp_evmng_getGoal(); +DUSK_NOINLINE BOOL dComIfGp_evmng_ChkPresentEnd(); +DUSK_NOINLINE int dComIfGp_evmng_checkStartDemo(); +DUSK_NOINLINE dAttention_c* dComIfGp_getAttention(); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_att_getZHint(); +DUSK_NOINLINE int dComIfGp_att_ZHintRequest(fopAc_ac_c* param_1, int param_2); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_att_getCatghTarget(); +DUSK_NOINLINE u8 dComIfGp_att_getCatchChgItem(); +DUSK_NOINLINE int dComIfGp_att_CatchRequest(fopAc_ac_c* param_0, u8 param_1, f32 i_horizontalDist, + f32 i_upDist, f32 i_downDist, s16 i_angle, int param_5); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_att_getLookTarget(); +DUSK_NOINLINE void dComIfGp_att_LookRequest(fopAc_ac_c* param_0, f32 i_horizontalDist, f32 i_upDist, + f32 i_downDist, s16 i_angle, int param_5); +DUSK_NOINLINE dVibration_c& dComIfGp_getVibration(); +DUSK_NOINLINE JKRAramArchive* dComIfGp_getFieldMapArchive2(); +DUSK_NOINLINE void dComIfGp_setFieldMapArchive2(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getMsgArchive(int idx); +DUSK_NOINLINE void dComIfGp_setMsgArchive(int i, JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getDemoMsgArchive(); +DUSK_NOINLINE void dComIfGp_setDemoMsgArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getMeterButtonArchive(); +DUSK_NOINLINE void dComIfGp_setMeterButtonArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getFontArchive(); +DUSK_NOINLINE void dComIfGp_setFontArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getRubyArchive(); +DUSK_NOINLINE void dComIfGp_setRubyArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getAnmArchive(); +DUSK_NOINLINE void dComIfGp_setAnmArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getCollectResArchive(); +DUSK_NOINLINE void dComIfGp_setCollectResArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getFmapResArchive(); +DUSK_NOINLINE void dComIfGp_setFmapResArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getDmapResArchive(); +DUSK_NOINLINE void dComIfGp_setDmapResArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getOptionResArchive(); +DUSK_NOINLINE void dComIfGp_setOptionResArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getItemIconArchive(); +DUSK_NOINLINE void dComIfGp_setItemIconArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getNameResArchive(); +DUSK_NOINLINE void dComIfGp_setNameResArchive(JKRArchive* arc); +DUSK_NOINLINE void dComIfGp_setErrorResArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getAllMapArchive(); +DUSK_NOINLINE void dComIfGp_setAllMapArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getMsgCommonArchive(); +DUSK_NOINLINE void dComIfGp_setMsgCommonArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getRingResArchive(); +DUSK_NOINLINE void dComIfGp_setRingResArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getCardIconResArchive(); +DUSK_NOINLINE void dComIfGp_setCardIconResArchive(JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getMsgDtArchive(); +DUSK_NOINLINE JKRArchive* dComIfGp_getMsgDtArchive(int idx); +DUSK_NOINLINE void dComIfGp_setMsgDtArchive(int i, JKRArchive* arc); +DUSK_NOINLINE JKRArchive* dComIfGp_getMain2DArchive(); +DUSK_NOINLINE void dComIfGp_setMain2DArchive(JKRArchive* arc); +DUSK_NOINLINE JKRExpHeap* dComIfGp_particle_getResHeap(); +DUSK_NOINLINE void dComIfGp_particle_levelExecute(u32 param_0); +DUSK_NOINLINE void dComIfGp_particle_createCommon(const void* data); +DUSK_NOINLINE void dComIfGp_particle_readScene(u8 particle_no, mDoDvdThd_toMainRam_c** param_1); +DUSK_NOINLINE void dComIfGp_particle_createScene(const void* param_0); +DUSK_NOINLINE void dComIfGp_particle_removeScene(bool param_0); +DUSK_NOINLINE void dComIfGp_particle_cleanup(); +DUSK_NOINLINE void dComIfGp_particle_calc3D(); +DUSK_NOINLINE void dComIfGp_particle_calc2D(); +DUSK_NOINLINE void dComIfGp_particle_calcMenu(); +DUSK_NOINLINE void dComIfGp_particle_draw(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawFog(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawP1(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawProjection(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawNormalPri0_A(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawNormalPri0_B(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawFogPri0_A(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawFogPri0_B(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawFogPri1(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawFogPri2(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawFogPri3(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawFogPri4(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawDarkworld(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_drawScreen(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_draw2Dgame(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_draw2Dfore(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_draw2Dback(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_draw2DmenuFore(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_particle_draw2DmenuBack(JPADrawInfo* i_drawInfo); +DUSK_NOINLINE void dComIfGp_setHitMark(u16 i_hitmark, fopAc_ac_c* param_1, const cXyz* param_2, + const csXyz* param_3, const cXyz* param_4, u32 i_atType); +DUSK_NOINLINE void dComIfGp_particle_setWaterRipple(u32* param_0, cBgS_PolyInfo& param_1, + const cXyz* param_2, f32 param_3, const dKy_tevstr_c* param_4, const cXyz* param_5, s8 param_6); +DUSK_NOINLINE u32 dComIfGp_particle_setPolyColor(u32 param_0, u16 param_1, cBgS_PolyInfo& param_2, + const cXyz* param_3, const dKy_tevstr_c* param_4, const csXyz* param_5, const cXyz* param_6, + int param_7, dPa_levelEcallBack* param_8, s8 param_9, const cXyz* param_10); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_setPolyColor(u16 param_1, cBgS_PolyInfo& param_2, + const cXyz* param_3, const dKy_tevstr_c* param_4, const csXyz* param_5, const cXyz* param_6, + int param_7, dPa_levelEcallBack* param_8, s8 param_9, const cXyz* param_10); +DUSK_NOINLINE void dComIfGp_particle_setSimple(u16 param_0, cXyz* i_pos, u8 param_2, + GXColor& param_3, GXColor& param_4, int param_5, float param_6); +DUSK_NOINLINE u32 dComIfGp_particle_setStopContinue(u32 param_0); +DUSK_NOINLINE u32 dComIfGp_particle_setSimpleFoot(u32 param_0, u32* param_1, cBgS_PolyInfo& param_2, + cXyz const* param_3, dKy_tevstr_c const* param_4, int param_5, csXyz const* param_6, + cXyz const* param_7, dPa_levelEcallBack* param_8, s8 param_9, cXyz const* param_10); +DUSK_NOINLINE u16 dComIfGp_particle_setCommonPoly(u32* param_0, cBgS_PolyInfo* param_1, + const cXyz* param_2, const cXyz* param_3, const dKy_tevstr_c* param_4, u32 param_5, u32 param_6, + const csXyz* param_7, const cXyz* param_8, s8 param_9); +DUSK_NOINLINE void dComIfGp_particle_levelEmitterOnEventMove(u32 param_0); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_getEmitter(u32 param_0); +DUSK_NOINLINE u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos, + const dKy_tevstr_c* param_3, const csXyz* i_rotation, const cXyz* i_scale, u8 i_alpha, + dPa_levelEcallBack* param_7, s8 param_8, const GXColor* param_9, const GXColor* param_10, + const cXyz* param_11); +DUSK_NOINLINE u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos, + const csXyz* i_rotation, const cXyz* i_scale, u8 param_5, dPa_levelEcallBack* param_6, + s8 param_7, const GXColor* param_8, const GXColor* param_9, const cXyz* param_10); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, + const dKy_tevstr_c* param_3, const csXyz* i_rotation, const cXyz* i_scale, u8 i_alpha, + dPa_levelEcallBack* i_callback, s8 param_8, const GXColor* i_prmColor, + const GXColor* i_envColor, const cXyz* i_particleScale); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, + const csXyz* i_rotation, const cXyz* i_scale, u8 i_alpha, dPa_levelEcallBack* i_callback, + s8 param_7, const GXColor* i_prmColor, const GXColor* i_envColor, const cXyz* i_particleScale); +DUSK_NOINLINE u32 dComIfGp_particle_set( + u32 param_0, u16 param_1, const cXyz* i_pos, const dKy_tevstr_c* param_3); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_set( + u16 i_resID, const cXyz* i_pos, const csXyz* i_rotation, const cXyz* i_scale); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, + const dKy_tevstr_c* param_2, const csXyz* i_rotation, const cXyz* i_scale); +DUSK_NOINLINE u32 dComIfGp_particle_set( + u32 param_0, u16 param_1, const cXyz* i_pos, const csXyz* param_3, const cXyz* param_4); +DUSK_NOINLINE u32 dComIfGp_particle_setColor(u32 param_0, u16 param_1, const cXyz* i_pos, + const dKy_tevstr_c* param_3, const GXColor* param_4, const GXColor* param_5, f32 param_6, + u8 param_7, const csXyz* param_8, const cXyz* param_9, dPa_levelEcallBack* param_10, + s8 param_11, const cXyz* param_12); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_setColor(u16 param_0, const cXyz* i_pos, + const dKy_tevstr_c* param_2, const GXColor* param_3, const GXColor* param_4, f32 param_5, + u8 param_6, const csXyz* param_7, const cXyz* param_8, dPa_levelEcallBack* param_9, s8 param_10, + const cXyz* param_11); +DUSK_NOINLINE JPABaseEmitter* dComIfGp_particle_setColor(u16 param_0, const cXyz* i_pos, + const dKy_tevstr_c* param_2, const GXColor* param_3, const GXColor* param_4, f32 param_5, + u8 param_6); +DUSK_NOINLINE u32 dComIfGp_particle_getHeapSize(); +DUSK_NOINLINE u32 dComIfGp_particle_getSceneHeapSize(); +DUSK_NOINLINE int dComIfGp_particle_getEmitterNum(); +DUSK_NOINLINE int dComIfGp_particle_getParticleNum(); +DUSK_NOINLINE dSmplMdl_draw_c* dComIfGp_getSimpleModel(); +DUSK_NOINLINE int dComIfGp_getWindowNum(); +DUSK_NOINLINE void dComIfGp_setWindowNum(int num); +DUSK_NOINLINE s8 dComIfGp_getLayerOld(); +DUSK_NOINLINE s32 dComIfGp_checkStatus(u16 flags); +DUSK_NOINLINE void dComIfGp_setStatus(u16 status); +DUSK_NOINLINE void dComIfGp_onStatus(u16 i_status); +DUSK_NOINLINE dDlst_window_c* dComIfGp_getWindow(int i); +DUSK_NOINLINE void dComIfGp_setWindow(u8 i, f32 param_1, f32 param_2, f32 param_3, f32 param_4, + f32 param_5, f32 param_6, int camID, int mode); +DUSK_NOINLINE camera_process_class* dComIfGp_getCamera(int idx); +DUSK_NOINLINE void dComIfGp_setCamera(int i, camera_class* cam); +DUSK_NOINLINE int dComIfGp_getCameraWinID(int idx); +DUSK_NOINLINE int dComIfGp_getCameraPlayer1ID(int idx); +DUSK_NOINLINE int dComIfGp_getCameraPlayer2ID(int idx); +DUSK_NOINLINE u32 dComIfGp_getCameraAttentionStatus(int i_no); +DUSK_NOINLINE BOOL dComIfGp_checkCameraAttentionStatus(int i, u32 flag); +DUSK_NOINLINE void dComIfGp_onCameraAttentionStatus(int i, u32 flag); +DUSK_NOINLINE void dComIfGp_offCameraAttentionStatus(int i, u32 flag); +DUSK_NOINLINE void dComIfGp_setCameraInfo( + int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4); +DUSK_NOINLINE f32 dComIfGp_getCameraZoomScale(int i_no); +DUSK_NOINLINE void dComIfGp_setCameraZoomScale(int i_no, f32 i_scale); +DUSK_NOINLINE f32 dComIfGp_getCameraZoomForcus(int i_no); +DUSK_NOINLINE void dComIfGp_setCameraZoomForcus(int i_no, f32 i_focus); +DUSK_NOINLINE const char* dComIfGp_getCameraParamFileName(int i); +DUSK_NOINLINE void dComIfGp_setCameraParamFileName(int i, char* name); +DUSK_NOINLINE void dComIfGp_saveCameraPosition( + int i, cXyz* i_pos, cXyz* i_target, f32 i_fovy, s16 i_bank); +DUSK_NOINLINE void dComIfGp_loadCameraPosition( + int i, cXyz* o_pos, cXyz* o_target, f32* o_fovy, s16* o_bank); +DUSK_NOINLINE fopAc_ac_c* dComIfGp_getPlayer(int idx); +DUSK_NOINLINE void dComIfGp_setPlayer(int i, fopAc_ac_c* player); +DUSK_NOINLINE int dComIfGp_getPlayerCameraID(int idx); +DUSK_NOINLINE void dComIfGp_setPlayerInfo(int plyrIdx, fopAc_ac_c* ptr, int camIdx); +DUSK_NOINLINE daPy_py_c* dComIfGp_getLinkPlayer(); +DUSK_NOINLINE daHorse_c* dComIfGp_getHorseActor(); +DUSK_NOINLINE void dComIfGp_setLinkPlayer(fopAc_ac_c* ptr); +DUSK_NOINLINE void dComIfGp_setHorseActor(fopAc_ac_c* i_horse); +DUSK_NOINLINE void dComIfGp_setPlayerPtr(int i, fopAc_ac_c* ptr); +DUSK_NOINLINE dMsgObject_c* dComIfGp_getMsgObjectClass(); +DUSK_NOINLINE void dComIfGp_setMsgObjectClass(dMsgObject_c* obj); +DUSK_NOINLINE f32 dComIfGp_getItemLifeCount(); +DUSK_NOINLINE u8 dComIfGp_getItemLifeCountType(); +DUSK_NOINLINE void dComIfGp_setItemLifeCount(f32 amount, u8 type); +DUSK_NOINLINE void dComIfGp_clearItemLifeCount(); +DUSK_NOINLINE s32 dComIfGp_getItemRupeeCount(); +DUSK_NOINLINE void dComIfGp_setItemRupeeCount(s32 amount); +DUSK_NOINLINE void dComIfGp_clearItemRupeeCount(); +DUSK_NOINLINE s16 dComIfGp_getItemKeyNumCount(); +DUSK_NOINLINE void dComIfGp_setItemKeyNumCount(s16 count); +DUSK_NOINLINE void dComIfGp_clearItemKeyNumCount(); +DUSK_NOINLINE s16 dComIfGp_getItemMaxLifeCount(); +DUSK_NOINLINE void dComIfGp_setItemMaxLifeCount(s16 count); +DUSK_NOINLINE void dComIfGp_clearItemMaxLifeCount(); +DUSK_NOINLINE void dComIfGp_setItemMagicCount(s16 count); +DUSK_NOINLINE void dComIfGp_setItemNowMagic(s16 magic); +DUSK_NOINLINE void dComIfGp_setItemMaxMagicCount(s16 count); +DUSK_NOINLINE s32 dComIfGp_getItemOilCount(); +DUSK_NOINLINE void dComIfGp_setItemOilCount(s32 oil); +DUSK_NOINLINE void dComIfGp_setItemMaxOilCount(s32 oil); +DUSK_NOINLINE void dComIfGp_clearItemOilCount(); +DUSK_NOINLINE s32 dComIfGp_getItemNowOil(); +DUSK_NOINLINE void dComIfGp_setItemNowOil(s32 oil); +DUSK_NOINLINE s32 dComIfGp_getItemMaxOilCount(); +DUSK_NOINLINE void dComIfGp_clearItemMaxOilCount(); +DUSK_NOINLINE int dComIfGp_getOxygen(); +DUSK_NOINLINE void dComIfGp_setOxygen(s32 oxygen); +DUSK_NOINLINE int dComIfGp_getNowOxygen(); +DUSK_NOINLINE void dComIfGp_setNowOxygen(s32 oxygen); +DUSK_NOINLINE s32 dComIfGp_getMaxOxygen(); +DUSK_NOINLINE void dComIfGp_setMaxOxygen(s32 i_oxygen); +DUSK_NOINLINE s32 dComIfGp_getOxygenCount(); +DUSK_NOINLINE void dComIfGp_setOxygenCount(s32 oxygen); +DUSK_NOINLINE void dComIfGp_clearOxygenCount(); +DUSK_NOINLINE void dComIfGp_setMaxOxygenCount(s32 oxygen); +DUSK_NOINLINE s32 dComIfGp_getMaxOxygenCount(); +DUSK_NOINLINE void dComIfGp_clearMaxOxygenCount(); +DUSK_NOINLINE s16 dComIfGp_getItemArrowNumCount(); +DUSK_NOINLINE void dComIfGp_setItemArrowNumCount(s16 count); +DUSK_NOINLINE void dComIfGp_clearItemArrowNumCount(); +DUSK_NOINLINE s16 dComIfGp_getItemPachinkoNumCount(); +DUSK_NOINLINE void dComIfGp_setItemPachinkoNumCount(s16 count); +DUSK_NOINLINE void dComIfGp_clearItemPachinkoNumCount(); +DUSK_NOINLINE s16 dComIfGp_getItemMaxArrowNumCount(); +DUSK_NOINLINE int dComIfGp_getMessageCountNumber(); +DUSK_NOINLINE void dComIfGp_setMessageCountNumber(s32 number); +DUSK_NOINLINE u16 dComIfGp_getItemNowLife(); +DUSK_NOINLINE void dComIfGp_setItemNowLife(u16 life); +DUSK_NOINLINE u8 dComIfGp_getMesgStatus(); +DUSK_NOINLINE u8 dComIfGp_getRStatus(); +DUSK_NOINLINE bool dComIfGp_isRSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setRStatus(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getRStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getRSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setRStatusForce(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getAStatus(); +DUSK_NOINLINE bool dComIfGp_isASetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setAStatus(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getAStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getASetFlagForce(); +DUSK_NOINLINE void dComIfGp_setAStatusForce(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getNunStatus(); +DUSK_NOINLINE bool dComIfGp_isNunSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setNunStatus(u8 status, u8 param_1, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getBottleStatus(); +DUSK_NOINLINE bool dComIfGp_isBottleSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setBottleStatus(u8 param_0, u8 param_1); +DUSK_NOINLINE u8 dComIfGp_getBottleStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getBottleSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setBottleStatusForce(u8 param_0, u8 param_1); +DUSK_NOINLINE u8 dComIfGp_getRemoConStatus(); +DUSK_NOINLINE bool dComIfGp_isRemoConSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setRemoConStatus(u8 status, u8 param_1, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getDoStatus(); +DUSK_NOINLINE bool dComIfGp_isDoSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setDoStatus(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getDoStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getDoSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setDoStatusForce(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_get3DStatus(); +DUSK_NOINLINE u8 dComIfGp_get3DDirection(); +DUSK_NOINLINE bool dComIfGp_is3DSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_set3DStatus(u8 status, u8 direction, u8 flag); +DUSK_NOINLINE u8 dComIfGp_get3DStatusForce(); +DUSK_NOINLINE u8 dComIfGp_get3DDirectionForce(); +DUSK_NOINLINE u8 dComIfGp_get3DSetFlagForce(); +DUSK_NOINLINE void dComIfGp_set3DStatusForce(u8 status, u8 direction, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getCStickStatus(); +DUSK_NOINLINE u8 dComIfGp_getCStickDirection(); +DUSK_NOINLINE bool dComIfGp_isCStickSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setCStickStatus(u8 status, u8 param_1, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getCStickStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getCStickDirectionForce(); +DUSK_NOINLINE u8 dComIfGp_getCStickSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setCStickStatusForce(u8 status, u8 param_1, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getSButtonStatus(); +DUSK_NOINLINE bool dComIfGp_isSButtonSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setSButtonStatus(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getSButtonStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getSButtonSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setSButtonStatusForce(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getZStatus(); +DUSK_NOINLINE bool dComIfGp_isZSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setZStatus(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getZStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getZSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setZStatusForce(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getXStatus(); +DUSK_NOINLINE bool dComIfGp_isXSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setXStatus(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getXStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getXSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setXStatusForce(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getYStatus(); +DUSK_NOINLINE bool dComIfGp_isYSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setYStatus(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getYStatusForce(); +DUSK_NOINLINE u8 dComIfGp_getYSetFlagForce(); +DUSK_NOINLINE void dComIfGp_setYStatusForce(u8 status, u8 flag); +DUSK_NOINLINE u8 dComIfGp_getNunZStatus(); +DUSK_NOINLINE bool dComIfGp_isNunZSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setNunZStatus(u8 param_0, u8 param_1); +DUSK_NOINLINE u8 dComIfGp_getNunCStatus(); +DUSK_NOINLINE bool dComIfGp_isNunCSetFlag(u8 flag); +DUSK_NOINLINE void dComIfGp_setNunCStatus(u8 param_0, u8 param_1); +DUSK_NOINLINE void dComIfGp_setSelectEquipClothes(u8 i_clothNo); +DUSK_NOINLINE void dComIfGp_setSelectEquipSword(u8 i_swordNo); +DUSK_NOINLINE void dComIfGp_setSelectEquipShield(u8 i_shieldNo); +DUSK_NOINLINE u8 dComIfGp_getMesgAnimeAttrInfo(); +DUSK_NOINLINE void dComIfGp_setMesgAnimeAttrInfo(u8 param_1); +DUSK_NOINLINE void dComIfGp_clearMesgAnimeAttrInfo(); +DUSK_NOINLINE u8 dComIfGp_getMesgFaceAnimeAttrInfo(); +DUSK_NOINLINE void dComIfGp_setMesgFaceAnimeAttrInfo(u8 id); +DUSK_NOINLINE void dComIfGp_clearMesgFaceAnimeAttrInfo(); +DUSK_NOINLINE void dComIfGp_clearMesgAnimeTagInfo(); +DUSK_NOINLINE void dComIfGp_setItem(u8 slot, u8 i_no); +DUSK_NOINLINE u8 dComIfGp_getAdvanceDirection(); +DUSK_NOINLINE void dComIfGp_setAdvanceDirection(u8 i_dir); +DUSK_NOINLINE u8 dComIfGp_checkMesgCancelButton(); +DUSK_NOINLINE void dComIfGp_setMesgCancelButton(u8 button); +DUSK_NOINLINE u8 dComIfGp_getGameoverStatus(); +DUSK_NOINLINE void dComIfGp_setGameoverStatus(u8 i_status); +DUSK_NOINLINE u8 dComIfGp_isHeapLockFlag(); +DUSK_NOINLINE u8 dComIfGp_getSubHeapLockFlag(int idx); +DUSK_NOINLINE void dComIfGp_setSubHeapLockFlag(int idx, u8 status); +DUSK_NOINLINE u8 dComIfGp_getNeedLightDropNum(); +DUSK_NOINLINE void dComIfGp_setNeedLightDropNum(u8 i_num); +DUSK_NOINLINE u8 dComIfGp_checkMesgBgm(); +DUSK_NOINLINE void dComIfGp_setMesgBgmOff(); +DUSK_NOINLINE void dComIfGp_setMesgBgmOn(); +DUSK_NOINLINE u8 dComIfGp_isPauseFlag(); +DUSK_NOINLINE void dComIfGp_offPauseFlag(); +DUSK_NOINLINE void dComIfGp_onPauseFlag(); +DUSK_NOINLINE u8 dComIfGp_getOxygenShowFlag(); +DUSK_NOINLINE void dComIfGp_offOxygenShowFlag(); +DUSK_NOINLINE void dComIfGp_onOxygenShowFlag(); +DUSK_NOINLINE u8 dComIfGp_2dShowCheck(); +DUSK_NOINLINE void dComIfGp_2dShowOn(); +DUSK_NOINLINE void dComIfGp_2dShowOff(); +DUSK_NOINLINE JKRExpHeap* dComIfGp_getExpHeap2D(); +DUSK_NOINLINE void dComIfGp_setExpHeap2D(void* heap); +DUSK_NOINLINE JKRExpHeap* dComIfGp_getSubExpHeap2D(int idx); +DUSK_NOINLINE void dComIfGp_setSubExpHeap2D(int idx, void* heap); +DUSK_NOINLINE JKRExpHeap* dComIfGp_getMsgExpHeap(); +DUSK_NOINLINE void dComIfGp_setMsgExpHeap(void* heap); +DUSK_NOINLINE dComIfG_MesgCamInfo_c* dComIfGp_getMesgCameraInfo(); +DUSK_NOINLINE void dComIfGp_setMesgCameraTagInfo(int id); +DUSK_NOINLINE void dComIfGp_clearMesgCameraTagInfo(); +DUSK_NOINLINE void dComIfGp_setMesgCameraAttrInfo(int param_1); +DUSK_NOINLINE void dComIfGp_clearMesgCameraAttrInfo(); +DUSK_NOINLINE void dComIfGp_setMesgCameraInfoActor(fopAc_ac_c* param_1, fopAc_ac_c* param_2, + fopAc_ac_c* param_3, fopAc_ac_c* param_4, fopAc_ac_c* param_5, fopAc_ac_c* param_6, + fopAc_ac_c* param_7, fopAc_ac_c* param_8, fopAc_ac_c* param_9, fopAc_ac_c* param_10); +DUSK_NOINLINE u32 dComIfGp_checkPlayerStatus0(int param_0, u32 flag); +DUSK_NOINLINE u32 dComIfGp_checkPlayerStatus1(int param_0, u32 flag); +DUSK_NOINLINE void dComIfGp_setPlayerStatus0(int param_0, u32 flag); +DUSK_NOINLINE void dComIfGp_setPlayerStatus1(int param_0, u32 flag); +DUSK_NOINLINE void dComIfGp_clearPlayerStatus0(int param_0, u32 flag); +DUSK_NOINLINE void dComIfGp_clearPlayerStatus1(int param_0, u32 flag); +DUSK_NOINLINE void dComIfGp_setCurrentWindow(dDlst_window_c* i_window); +DUSK_NOINLINE void dComIfGp_setCurrentView(view_class* i_view); +DUSK_NOINLINE void dComIfGp_setCurrentViewport(view_port_class* i_viewport); +DUSK_NOINLINE J2DGrafContext* dComIfGp_getCurrentGrafPort(); +DUSK_NOINLINE void dComIfGp_setCurrentGrafPort(J2DOrthoGraph* i_graf); +DUSK_NOINLINE void* dComIfGp_getItemTable(); +DUSK_NOINLINE void dComIfGp_setItemTable(void* data); +DUSK_NOINLINE char* dComIfGp_getLastPlayStageName(); +DUSK_NOINLINE void dComIfGp_setLastPlayStageName(char* name); +DUSK_NOINLINE void dComIfGp_init(); +DUSK_NOINLINE void dComIfGp_itemDataInit(); +DUSK_NOINLINE void dComIfGp_setItemBombNumCount(u8 i_item, s16 count); +DUSK_NOINLINE s16 dComIfGp_getItemBombNumCount(u8 i_no); +DUSK_NOINLINE void dComIfGp_clearItemBombNumCount(u8 i_no); +DUSK_NOINLINE s16 dComIfGp_getItemMaxBombNumCount(); +DUSK_NOINLINE void dComIfGp_setNowVibration(u8 status); +DUSK_NOINLINE u32 dComIfGp_getNowVibration(); +DUSK_NOINLINE void dComIfGp_particle_create(); +DUSK_NOINLINE void dComIfGp_createSimpleModel(); +DUSK_NOINLINE void dComIfGp_deleteSimpleModel(); +DUSK_NOINLINE void dComIfGp_drawSimpleModel(); +DUSK_NOINLINE int dComIfGp_addSimpleModel(J3DModelData* i_modelData, int roomNo, u8 i_drawBG); +DUSK_NOINLINE void dComIfGp_removeSimpleModel(J3DModelData* i_modelData, int roomNo); +DUSK_NOINLINE void dComIfGp_entrySimpleModel(J3DModel* model, int roomNo); +DUSK_NOINLINE void dComIfG_ct(); +DUSK_NOINLINE dBgS& dComIfG_Bgsp(); +DUSK_NOINLINE dCcS* dComIfG_Ccsp(); +DUSK_NOINLINE dCcS& dComIfG_Ccsp2(); +DUSK_NOINLINE void dComIfG_setTimerNowTimeMs(int time); +DUSK_NOINLINE int dComIfG_getTimerNowTimeMs(); +DUSK_NOINLINE void dComIfG_setTimerLimitTimeMs(int i_time); +DUSK_NOINLINE int dComIfG_getTimerLimitTimeMs(); +DUSK_NOINLINE void dComIfG_setTimerMode(int mode); +DUSK_NOINLINE int dComIfG_getTimerMode(); +DUSK_NOINLINE void dComIfG_setTimerType(u8 i_type); +DUSK_NOINLINE u8 dComIfG_getTimerType(); +DUSK_NOINLINE void dComIfG_setTimerPtr(dTimer_c* i_ptr); +DUSK_NOINLINE dTimer_c* dComIfG_getTimerPtr(); + +/** + * Attempts to add a new Object Resource Archive (*.arc) into the Resource Control. + * @param i_arcName Name of archive to be added + * @param i_mountDirection The direction to mount the archive. mDoDvd_MOUNT_DIRECTION_HEAD or + * mDoDvd_MOUNT_DIRECTION_TAIL + * @param i_heap Pointer to heap to load resources into + * @return TRUE if successful, FALSE otherwise + */ +DUSK_NOINLINE int dComIfG_setObjectRes(const char* i_arcName, u8 i_mountDirection, JKRHeap* i_heap); +DUSK_NOINLINE int dComIfG_setObjectRes( + const char* i_arcName, void* i_archiveRes, u32 i_bufferSize, JKRHeap* i_heap); + +/** + * Attempts to add a new Stage Resource Archive (*.arc) into the Resource Control. + * @param i_arcName Name of archive to be added + * @param i_heap Pointer to heap to load resources into + * @return TRUE if successful, FALSE otherwise + */ +DUSK_NOINLINE int dComIfG_setStageRes(const char* i_arcName, JKRHeap* i_heap); +DUSK_NOINLINE int dComIfG_syncObjectRes(const char* i_arcName); +DUSK_NOINLINE int dComIfG_syncStageRes(const char* i_arcName); +DUSK_NOINLINE int dComIfG_deleteObjectResMain(const char* i_arcName); +DUSK_NOINLINE int dComIfG_deleteStageRes(const char* i_arcName); +DUSK_NOINLINE void* dComIfG_getStageRes(const char* i_arcName, const char* i_resName); +DUSK_NOINLINE void* dComIfG_getObjectRes(const char* i_arcName, const char* i_resName); +DUSK_NOINLINE void* dComIfG_getObjectRes(const char* i_arcName, int i_index); +DUSK_NOINLINE void dComIfG_dumpResControl(); +DUSK_NOINLINE dRes_info_c* dComIfG_getObjectResInfo(const char* i_arcName); +DUSK_NOINLINE dRes_info_c* dComIfG_getStageResInfo(const char* i_arcName); +DUSK_NOINLINE int dComIfG_syncAllObjectRes(); +DUSK_NOINLINE void* dComIfG_getObjectIDRes(const char* i_arcName, u16 i_resID); +DUSK_NOINLINE int dComIfG_getObjctResName2Index(const char* i_arcName, const char* i_resName); +DUSK_NOINLINE u8 dComIfG_getBrightness(); +DUSK_NOINLINE void dComIfG_setBrightness(u8 brightness); +DUSK_NOINLINE BOOL dComIfG_isDebugMode(); +DUSK_NOINLINE u32 dComIfG_getTrigB(u32 i_padNo); +#if DEBUG +DUSK_NOINLINE u32 dComIfG_getObjectAllSize(); +DUSK_NOINLINE u32 dComIfG_getStageAllSize(); +DUSK_NOINLINE u32 dComIfG_getObjectSize(const char* i_arcName); +DUSK_NOINLINE u32 dComIfG_getStageSize(const char* i_arcName); +DUSK_NOINLINE void dComIfG_initStopwatch(); +#endif + +DUSK_NOINLINE int dComIfGd_setRealShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3, + f32 param_4, f32 param_5, dKy_tevstr_c* param_6); +DUSK_NOINLINE int dComIfGd_setSimpleShadow( + cXyz* pos, f32 param_1, f32 param_2, cXyz* param_3, s16 angle, f32 param_5, TGXTexObj* tex); +DUSK_NOINLINE bool dComIfGd_addRealShadow(u32 key, J3DModel* model); +DUSK_NOINLINE void dComIfGd_drawListItem3d(); + +#if VERSION > VERSION_GCN_JPN +DUSK_NOINLINE void dComIfGd_drawListCursor(); +#endif + +DUSK_NOINLINE void dComIfGd_reset(); +DUSK_NOINLINE void dComIfGd_set2DOpa(dDlst_base_c* dlst); +DUSK_NOINLINE void dComIfGd_set2DXlu(dDlst_base_c* dlst); +DUSK_NOINLINE void dComIfGd_set2DOpaTop(dDlst_base_c* dlst); +DUSK_NOINLINE void dComIfGd_setCopy2D(dDlst_base_c* dlst); +DUSK_NOINLINE view_class* dComIfGd_getView(); +DUSK_NOINLINE Mtx44* dComIfGd_getProjViewMtx(); +DUSK_NOINLINE MtxP dComIfGd_getInvViewMtx(); +DUSK_NOINLINE view_port_class* dComIfGd_getViewport(); +DUSK_NOINLINE MtxP dComIfGd_getViewRotMtx(); +DUSK_NOINLINE MtxP dComIfGd_getViewMtx(); +DUSK_NOINLINE J3DDrawBuffer* dComIfGd_getListFilter(); +DUSK_NOINLINE J3DDrawBuffer* dComIfGd_getOpaListIndScreen(); +DUSK_NOINLINE J3DDrawBuffer* dComIfGd_getListPacket(); +DUSK_NOINLINE void dComIfGd_setListSky(); +DUSK_NOINLINE void dComIfGd_setListDark(); +DUSK_NOINLINE void dComIfGd_setListInvisisble(); +DUSK_NOINLINE void dComIfGd_setListDarkBG(); +DUSK_NOINLINE void dComIfGd_setXluListDarkBG(); +DUSK_NOINLINE void dComIfGd_setList(); +DUSK_NOINLINE void dComIfGd_setListItem3D(); +DUSK_NOINLINE void dComIfGd_setList3Dlast(); +DUSK_NOINLINE void dComIfGd_setXluList2DScreen(); +DUSK_NOINLINE void dComIfGd_setXluListBG(); +DUSK_NOINLINE void dComIfGd_setListBG(); +DUSK_NOINLINE void dComIfGd_setListIndScreen(); +DUSK_NOINLINE void dComIfGd_setListMiddle(); +DUSK_NOINLINE void dComIfGd_setListZxlu(); +DUSK_NOINLINE J3DDrawBuffer* dComIfGd_getOpaList(); +DUSK_NOINLINE J3DDrawBuffer* dComIfGd_getOpaListBG(); +DUSK_NOINLINE J3DDrawBuffer* dComIfGd_getOpaListDark(); +DUSK_NOINLINE J3DDrawBuffer* dComIfGd_getXluListBG(); +DUSK_NOINLINE void dComIfGd_setListFilter(); +DUSK_NOINLINE void dComIfGd_init(); +DUSK_NOINLINE void dComIfGd_peekZ(s16 param_0, s16 param_1, u32* param_2); +DUSK_NOINLINE void dComIfGd_peekZdata(); +DUSK_NOINLINE void dComIfGd_setView(view_class* view); +DUSK_NOINLINE void dComIfGd_setWindow(dDlst_window_c* window); +DUSK_NOINLINE void dComIfGd_setViewport(view_port_class* port); +DUSK_NOINLINE void dComIfGd_entryZSortListZxlu(J3DPacket* i_packet, cXyz& param_1); +DUSK_NOINLINE void dComIfGd_entryZSortXluList(J3DPacket* i_packet, cXyz& param_1); +DUSK_NOINLINE void dComIfGd_drawCopy2D(); +DUSK_NOINLINE void dComIfGd_drawOpaListSky(); +DUSK_NOINLINE void dComIfGd_drawXluListSky(); +DUSK_NOINLINE void dComIfGd_drawOpaListBG(); +DUSK_NOINLINE void dComIfGd_drawOpaListDarkBG(); +DUSK_NOINLINE void dComIfGd_drawOpaListMiddle(); +DUSK_NOINLINE void dComIfGd_drawOpaList(); +DUSK_NOINLINE void dComIfGd_drawOpaListDark(); +DUSK_NOINLINE void dComIfGd_drawOpaListPacket(); +DUSK_NOINLINE void dComIfGd_drawXluListBG(); +DUSK_NOINLINE void dComIfGd_drawXluListDarkBG(); +DUSK_NOINLINE void dComIfGd_drawXluList(); +DUSK_NOINLINE void dComIfGd_drawXluListDark(); +DUSK_NOINLINE void dComIfGd_drawXluListInvisible(); +DUSK_NOINLINE void dComIfGd_drawOpaListInvisible(); +DUSK_NOINLINE void dComIfGd_drawXluListZxlu(); +DUSK_NOINLINE void dComIfGd_drawXluList2DScreen(); +DUSK_NOINLINE void dComIfGd_drawOpaList3Dlast(); +DUSK_NOINLINE void dComIfGd_draw2DOpa(); +DUSK_NOINLINE void dComIfGd_draw2DOpaTop(); +DUSK_NOINLINE void dComIfGd_draw2DXlu(); +DUSK_NOINLINE void dComIfGd_drawOpaListFilter(); +DUSK_NOINLINE void dComIfGd_drawIndScreen(); +DUSK_NOINLINE void dComIfGd_drawListZxlu(); +DUSK_NOINLINE void dComIfGd_drawShadow(Mtx param_0); +DUSK_NOINLINE void dComIfGd_imageDrawShadow(Mtx param_0); +DUSK_NOINLINE void dComIfGd_set3DlineMat(mDoExt_3DlineMat_c* param_0); +DUSK_NOINLINE void dComIfGd_set3DlineMatDark(mDoExt_3DlineMat_c* param_0); + +#if PLATFORM_WII || VERSION == VERSION_SHIELD_DEBUG +DUSK_NOINLINE void dComIfGd_setListCursor(); +#endif + +#else inline dSv_info_c* dComIfGs_getSaveInfo() { return &g_dComIfG_gameInfo.info; } @@ -1440,11 +2367,7 @@ inline BOOL dComIfGs_isTransformLV(int i_no) { return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().isTransformLV(i_no); } -#if TARGET_PC -inline cXyz dComIfGs_getHorseRestartPos() { -#else inline cXyz& dComIfGs_getHorseRestartPos() { -#endif return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getPos(); } @@ -1465,11 +2388,7 @@ inline void dComIfGs_setHorseRestart(const char* i_stageName, cXyz& i_pos, s16 i g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().set(i_stageName, i_pos, i_angle, i_roomNo); } -#if TARGET_PC -inline cXyz dComIfGs_getPlayerFieldLastStayPos() { -#else inline cXyz& dComIfGs_getPlayerFieldLastStayPos() { -#endif return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getPos(); } @@ -1511,11 +2430,7 @@ inline void dComIfGs_setPlayerFieldLastStayInfo(const char* i_stage, cXyz& i_pos i_point, i_region); } -#if TARGET_PC -inline cXyz dComIfGs_getLastWarpMarkPlayerPos() { -#else inline cXyz& dComIfGs_getLastWarpMarkPlayerPos() { -#endif return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getPos(); } @@ -1853,12 +2768,6 @@ inline void dComIfGs_addDeathCount() { g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().addDeathCount(); } -#if TARGET_PC -inline u16 dComIfGs_getDeathCount() { - return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getDeathCount(); -} -#endif - inline TEXT_SPAN dComIfGs_getPlayerName() { return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getPlayerName(); } @@ -3125,133 +4034,114 @@ inline void dComIfGp_particle_calcMenu() { } inline void dComIfGp_particle_draw(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawNormal(i_drawInfo); } } inline void dComIfGp_particle_drawFog(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawNormalFog(i_drawInfo); } } inline void dComIfGp_particle_drawP1(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawNormalP1(i_drawInfo); } } inline void dComIfGp_particle_drawProjection(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawProjection(i_drawInfo); } } inline void dComIfGp_particle_drawNormalPri0_A(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawNormalPri0_A(i_drawInfo); } } inline void dComIfGp_particle_drawNormalPri0_B(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawNormalPri0_B(i_drawInfo); } } inline void dComIfGp_particle_drawFogPri0_A(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawFogPri0_A(i_drawInfo); } } inline void dComIfGp_particle_drawFogPri0_B(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawFogPri0_B(i_drawInfo); } } inline void dComIfGp_particle_drawFogPri1(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawFogPri1(i_drawInfo); } } inline void dComIfGp_particle_drawFogPri2(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawFogPri2(i_drawInfo); } } inline void dComIfGp_particle_drawFogPri3(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawFogPri3(i_drawInfo); } } inline void dComIfGp_particle_drawFogPri4(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawFogPri4(i_drawInfo); } } inline void dComIfGp_particle_drawDarkworld(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawDarkworld(i_drawInfo); } } inline void dComIfGp_particle_drawScreen(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->drawFogScreen(i_drawInfo); } } inline void dComIfGp_particle_draw2Dgame(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->draw2Dgame(i_drawInfo); } } inline void dComIfGp_particle_draw2Dfore(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->draw2Dfore(i_drawInfo); } } inline void dComIfGp_particle_draw2Dback(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->draw2Dback(i_drawInfo); } } inline void dComIfGp_particle_draw2DmenuFore(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->draw2DmenuFore(i_drawInfo); } } inline void dComIfGp_particle_draw2DmenuBack(JPADrawInfo* i_drawInfo) { - ZoneScoped; if (g_dComIfG_gameInfo.play.getParticle() != NULL) { g_dComIfG_gameInfo.play.getParticle()->draw2DmenuBack(i_drawInfo); } @@ -4771,150 +5661,114 @@ inline void dComIfGd_setViewport(view_port_class* port) { } inline void dComIfGd_entryZSortListZxlu(J3DPacket* i_packet, cXyz& param_1) { - ZoneScoped; g_dComIfG_gameInfo.drawlist.entryZSortListZxlu(i_packet, param_1); } inline void dComIfGd_entryZSortXluList(J3DPacket* i_packet, cXyz& param_1) { - ZoneScoped; g_dComIfG_gameInfo.drawlist.entryZSortXluList(i_packet, param_1); } inline void dComIfGd_drawCopy2D() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawCopy2D(); } inline void dComIfGd_drawOpaListSky() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListSky(); } inline void dComIfGd_drawXluListSky() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluListSky(); } inline void dComIfGd_drawOpaListBG() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListBG(); } inline void dComIfGd_drawOpaListDarkBG() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListDarkBG(); } inline void dComIfGd_drawOpaListMiddle() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListMiddle(); } inline void dComIfGd_drawOpaList() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaList(); } inline void dComIfGd_drawOpaListDark() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListDark(); } inline void dComIfGd_drawOpaListPacket() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListPacket(); } inline void dComIfGd_drawXluListBG() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluListBG(); } inline void dComIfGd_drawXluListDarkBG() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluListDarkBG(); } inline void dComIfGd_drawXluList() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluList(); } inline void dComIfGd_drawXluListDark() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluListDark(); } -#if TARGET_PC -void dComIfGd_drawXluListInvisible(); -#else inline void dComIfGd_drawXluListInvisible() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluListInvisible(); } -#endif -#if TARGET_PC -void dComIfGd_drawOpaListInvisible(); -#else inline void dComIfGd_drawOpaListInvisible() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListInvisible(); } -#endif inline void dComIfGd_drawXluListZxlu() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluListZxlu(); } inline void dComIfGd_drawXluList2DScreen() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluList2DScreen(); } inline void dComIfGd_drawOpaList3Dlast() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaList3Dlast(); } inline void dComIfGd_draw2DOpa() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.draw2DOpa(); } inline void dComIfGd_draw2DOpaTop() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.draw2DOpaTop(); } inline void dComIfGd_draw2DXlu() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.draw2DXlu(); } inline void dComIfGd_drawOpaListFilter() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListFilter(); } inline void dComIfGd_drawIndScreen() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawOpaListP0(); } inline void dComIfGd_drawListZxlu() { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawXluListZxlu(); } inline void dComIfGd_drawShadow(Mtx param_0) { - ZoneScoped; g_dComIfG_gameInfo.drawlist.drawShadow(param_0); } inline void dComIfGd_imageDrawShadow(Mtx param_0) { - ZoneScoped; g_dComIfG_gameInfo.drawlist.imageDrawShadow(param_0); } @@ -4933,4 +5787,6 @@ inline void dComIfGd_setListCursor() { } #endif +#endif + #endif /* D_COM_D_COM_INF_GAME_H */ diff --git a/include/global.h b/include/global.h index 725fd03874..c16020936e 100644 --- a/include/global.h +++ b/include/global.h @@ -123,6 +123,14 @@ inline int __builtin_clz(unsigned int v) { #endif #define DUSK_GAME_EXTERN extern DUSK_GAME_DATA +#if defined(_MSC_VER) +#define DUSK_NOINLINE __declspec(noinline) +#elif defined(__GNUC__) +#define DUSK_NOINLINE __attribute__((noinline)) +#else +#define DUSK_NOINLINE +#endif + #define FAST_DIV(x, n) (x >> (n / 2)) #define SQUARE(x) ((x) * (x)) diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index dea395644b..ecd0b796a0 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -3032,6 +3032,3602 @@ DUSK_GAME_DATA GXColor g_whiteColor = {255, 255, 255, 255}; DUSK_GAME_DATA GXColor g_saftyWhiteColor = {160, 160, 160, 255}; #if TARGET_PC +dSv_info_c* dComIfGs_getSaveInfo() { + return &g_dComIfG_gameInfo.info; +} + +dSv_save_c* dComIfGs_getSaveData() { + return &g_dComIfG_gameInfo.info.getSavedata(); +} + +u16 dComIfGs_getMaxLife() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getMaxLife(); +} + +void dComIfGs_setMaxLife(u8 i_maxLife) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setMaxLife(i_maxLife); +} + +u16 dComIfGs_getLife() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getLife(); +} + +void dComIfGs_setLife(u16 i_life) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setLife(i_life); +} + +u16 dComIfGs_getRupee() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getRupee(); +} + +void dComIfGs_setRupee(u16 i_rupees) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setRupee(i_rupees); +} + +u16 dComIfGs_getMaxOil() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getMaxOil(); +} + +void dComIfGs_setMaxOil(u16 i_maxOil) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setMaxOil(i_maxOil); +} + +u16 dComIfGs_getOil() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getOil(); +} + +void dComIfGs_setOil(u16 i_oil) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setOil(i_oil); +} + +u8 dComIfGs_getSelectEquipClothes() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getSelectEquip(COLLECT_CLOTHING); +} + +u8 dComIfGs_getSelectEquipSword() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getSelectEquip(COLLECT_SWORD); +} + +u8 dComIfGs_getSelectEquipShield() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getSelectEquip(COLLECT_SHIELD); +} + +u8 dComIfGs_getCollectSmell() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getSelectEquip(COLLECT_SMELL); +} + +void dComIfGs_setCollectSmell(u8 smell) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectEquip(COLLECT_SMELL, smell); +} + +u8 dComIfGs_getBButtonItemKey() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getSelectEquip(B_BUTTON_ITEM); +} + +void dComIfGs_setBButtonItemKey(u8 i_itemNo) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectEquip(B_BUTTON_ITEM, i_itemNo); +} + +u8 dComIfGs_getWalletSize() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getWalletSize(); +} + +void dComIfGs_setWalletSize(u8 i_size) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setWalletSize(i_size); +} + +u8 dComIfGs_getMaxMagic() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getMaxMagic(); +} + +void dComIfGs_setMaxMagic(u8 i_maxMagic) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setMaxMagic(i_maxMagic); +} + +u8 dComIfGs_getMagic() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getMagic(); +} + +void dComIfGs_setMagic(u8 i_magic) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setMagic(i_magic); +} + +u8 dComIfGs_getTransformStatus() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getTransformStatus(); +} + +void dComIfGs_setTransformStatus(u8 i_status) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setTransformStatus(i_status); +} + +u8 dComIfGs_getSelectItemIndex(int i_no) { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getSelectItemIndex(i_no); +} + +u16 dComIfGs_getRupeeMax() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getRupeeMax(); +} + +void dComIfGs_offGetMagicUseFlag() { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().offMagicFlag(0); +} + +s32 dComIfGs_isGetMagicUseFlag() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().isMagicFlag(0); +} + +f32 dComIfGs_getTime() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().getTime(); +} + +void dComIfGs_setTime(f32 i_time) { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().setTime(i_time); +} + +u16 dComIfGs_getDate() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().getDate(); +} + +void dComIfGs_setDate(u16 i_date) { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().setDate(i_date); +} + +void dComIfGs_onDarkClearLV(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().onDarkClearLV(i_no); +} + +void dComIfGs_offDarkClearLV(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().offDarkClearLV(i_no); +} + +BOOL dComIfGs_isDarkClearLV(int i_no) { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().isDarkClearLV(i_no); +} + +void dComIfGs_onTransformLV(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().onTransformLV(i_no); +} + +void dComIfGs_offTransformLV(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().offTransformLV(i_no); +} + +BOOL dComIfGs_isTransformLV(int i_no) { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().isTransformLV(i_no); +} + +cXyz dComIfGs_getHorseRestartPos() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getPos(); +} + +s16 dComIfGs_getHorseRestartAngleY() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getAngleY(); +} + +const char* dComIfGs_getHorseRestartStageName() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getStageName(); +} + +s8 dComIfGs_getHorseRestartRoomNo() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getRoomNo(); +} + +void dComIfGs_setHorseRestart(const char* i_stageName, cXyz& i_pos, s16 i_angle, s8 i_roomNo) { + g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().set(i_stageName, i_pos, i_angle, i_roomNo); +} + +cXyz dComIfGs_getPlayerFieldLastStayPos() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getPos(); +} + +s16 dComIfGs_getPlayerFieldLastStayAngleY() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getAngleY(); +} + +char* dComIfGs_getPlayerFieldLastStayName() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getName(); +} + +u8 dComIfGs_getPlayerFieldLastStayRegionNo() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getRegionNo(); +} + +bool dComIfGs_isPlayerFieldLastStayFieldDataExistFlag() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().isFieldDataExistFlag(); +} + +void dComIfGs_offPlayerFieldLastStayFieldDataExistFlag() { + g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().offFieldDataExistFlag(); +} + +void dComIfGs_onPlayerFieldLastStayFieldDataExistFlag() { + g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().onFieldDataExistFlag(); +} + +BOOL dComIfGs_isRegionBit(int i_region) { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().isRegionBit(i_region); +} + +void dComIfGs_onRegionBit(int i_region) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().onRegionBit(i_region); +} + +void dComIfGs_setPlayerFieldLastStayInfo( + const char* i_stage, cXyz& i_pos, s16 i_angle, s8 i_point, u8 i_region) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().set( + i_stage, i_pos, i_angle, i_point, i_region); +} + +cXyz dComIfGs_getLastWarpMarkPlayerPos() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getPos(); +} + +s16 dComIfGs_getLastWarpMarkPlayerAngleY() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getAngleY(); +} + +const char* dComIfGs_getLastWarpMarkStageName() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getName(); +} + +u8 dComIfGs_getLastWarpMarkRoomNo() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getRoomNo(); +} + +s8 dComIfGs_getLastWarpAcceptStage() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getWarpAcceptStage(); +} + +void dComIfGs_setLastWarpAcceptStage(s8 param_0) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().setWarpAcceptStage(param_0); +} + +void dComIfGs_resetLastWarpAcceptStage() { + g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().resetWarpAcceptStage(); +} + +void dComIfGs_setItem(int i_slotNo, u8 i_itemNo) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setItem(i_slotNo, i_itemNo); +} + +u8 dComIfGs_getItem(int i_slotNo, bool i_checkCombo) { + return g_dComIfG_gameInfo.info.getPlayer().getItem().getItem(i_slotNo, i_checkCombo); +} + +void dComIfGs_setLineUpItem() { + g_dComIfG_gameInfo.info.getPlayer().getItem().setLineUpItem(); +} + +u8 dComIfGs_getLineUpItem(int i_slotNo) { + return g_dComIfG_gameInfo.info.getPlayer().getItem().getLineUpItem(i_slotNo); +} + +void dComIfGs_setBottleItemIn(u8 curItem, u8 newItem) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setBottleItemIn(curItem, newItem); +} + +void dComIfGs_setEmptyBottleItemIn(u8 i_itemNo) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBottleItemIn(i_itemNo); +} + +void dComIfGs_setEmptyBottle() { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBottle(); +} + +void dComIfGs_setEmptyBottle(u8 i_itemNo) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBottle(i_itemNo); +} + +void dComIfGs_setEquipBottleItemIn(u8 i_curItem, u8 i_newItem) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEquipBottleItemIn(i_curItem, i_newItem); +} + +void dComIfGs_setEquipBottleItemEmpty(u8 i_curItem) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEquipBottleItemEmpty(i_curItem); +} + +u8 dComIfGs_checkBottle(u8 i_itemNo) { + return g_dComIfG_gameInfo.info.getPlayer().getItem().checkBottle(i_itemNo); +} + +u8 dComIfGs_checkInsectBottle() { + return g_dComIfG_gameInfo.info.getPlayer().getItem().checkInsectBottle(); +} + +u8 dComIfGs_checkEmptyBottle() { + return g_dComIfG_gameInfo.info.getPlayer().getItem().checkEmptyBottle(); +} + +void dComIfGs_setEmptyBombBagItemIn(u8 i_newBomb, bool i_setNum) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBombBagItemIn(i_newBomb, i_setNum); +} + +void dComIfGs_setEmptyBombBagItemIn(u8 i_newBomb, u8 i_bombNum, bool i_setNum) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBombBagItemIn( + i_newBomb, i_bombNum, i_setNum); +} + +void dComIfGs_setEmptyBombBag() { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBombBag(); +} + +void dComIfGs_setEmptyBombBag(u8 i_newBomb, u8 i_bombNum) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBombBag(i_newBomb, i_bombNum); +} + +u8 dComIfGs_checkBombBag(u8 i_itemNo) { + return g_dComIfG_gameInfo.info.getPlayer().getItem().checkBombBag(i_itemNo); +} + +void dComIfGs_setWarashibeItem(u8 i_itemNo) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setWarashibeItem(i_itemNo); +} + +void dComIfGs_setRodTypeLevelUp() { + g_dComIfG_gameInfo.info.getPlayer().getItem().setRodTypeLevelUp(); +} + +void dComIfGs_setBaitItem(u8 i_item) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setBaitItem(i_item); +} + +void dComIfGs_onItemFirstBit(u8 i_itemNo) { + g_dComIfG_gameInfo.info.getPlayer().getGetItem().onFirstBit(i_itemNo); +} + +void dComIfGs_offItemFirstBit(u8 i_itemNo) { + g_dComIfG_gameInfo.info.getPlayer().getGetItem().offFirstBit(i_itemNo); +} + +int dComIfGs_isItemFirstBit(u8 i_no) { + return g_dComIfG_gameInfo.info.getPlayer().getGetItem().isFirstBit(i_no); +} + +u8 dComIfGs_getArrowNum() { + return g_dComIfG_gameInfo.info.getPlayer().getItemRecord().getArrowNum(); +} + +void dComIfGs_setArrowNum(u8 i_arrowNum) { + g_dComIfG_gameInfo.info.getPlayer().getItemRecord().setArrowNum(i_arrowNum); +} + +u8 dComIfGs_getPachinkoNum() { + return g_dComIfG_gameInfo.info.getPlayer().getItemRecord().getPachinkoNum(); +} + +void dComIfGs_setPachinkoNum(u8 i_num) { + g_dComIfG_gameInfo.info.getPlayer().getItemRecord().setPachinkoNum(i_num); +} + +u8 dComIfGs_getPachinkoMax() { + return 50; +} + +void dComIfGs_setBombNum(u8 i_num) { + g_dComIfG_gameInfo.info.getPlayer().getItemRecord().setBombNum(0, i_num); +} + +void dComIfGs_setBombNum(u8 i_bagIdx, u8 i_bombNum) { + g_dComIfG_gameInfo.info.getPlayer().getItemRecord().setBombNum(i_bagIdx, i_bombNum); +} + +u8 dComIfGs_getBombNum(u8 i_bagIdx) { + return g_dComIfG_gameInfo.info.getPlayer().getItemRecord().getBombNum(i_bagIdx); +} + +void dComIfGs_setBottleNum(u8 i_bottleIdx, u8 i_bottleNum) { + g_dComIfG_gameInfo.info.getPlayer().getItemRecord().setBottleNum(i_bottleIdx, i_bottleNum); +} + +void dComIfGs_addBottleNum(u8 i_bottleIdx, s16 i_num) { + g_dComIfG_gameInfo.info.getPlayer().getItemRecord().addBottleNum(i_bottleIdx, i_num); +} + +u8 dComIfGs_getBottleNum(u8 i_bottleIdx) { + return g_dComIfG_gameInfo.info.getPlayer().getItemRecord().getBottleNum(i_bottleIdx); +} + +u8 dComIfGs_getArrowMax() { + return g_dComIfG_gameInfo.info.getPlayer().getItemMax().getArrowNum(); +} + +void dComIfGs_setArrowMax(u8 i_arrowMax) { + g_dComIfG_gameInfo.info.getPlayer().getItemMax().setArrowNum(i_arrowMax); +} + +void dComIfGs_setBombMax(u8 i_max) { + g_dComIfG_gameInfo.info.getPlayer().getItemMax().setBombNum(0, i_max); +} + +void dComIfGs_setBombMax(u8 i_type, u8 i_max) { + g_dComIfG_gameInfo.info.getPlayer().getItemMax().setBombNum(i_type, i_max); +} + +u8 dComIfGs_getBombMax() { + return g_dComIfG_gameInfo.info.getPlayer().getItemMax().getBombNum(0); +} + +u8 dComIfGs_getBombMax(u8 i_bombType) { + return g_dComIfG_gameInfo.info.getPlayer().getItemMax().getBombNum(i_bombType); +} + +void dComIfGs_setPohSpiritNum(u8 i_num) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().setPohNum(i_num); +} + +u8 dComIfGs_getPohSpiritNum() { + return g_dComIfG_gameInfo.info.getPlayer().getCollect().getPohNum(); +} + +void dComIfGs_addPohSpiritNum() { + g_dComIfG_gameInfo.info.getPlayer().getCollect().addPohNum(); +} + +BOOL dComIfGs_isCollectClothes(u8 i_clothesNo) { + return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollect( + COLLECT_CLOTHING, i_clothesNo); +} + +void dComIfGs_setCollectClothes(u8 i_clothesNo) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().setCollect(COLLECT_CLOTHING, i_clothesNo); +} + +void dComIfGs_setCollectSword(u8 i_swordNo) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().setCollect(COLLECT_SWORD, i_swordNo); +} + +void dComIfGs_setCollectShield(u8 i_shieldNo) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().setCollect(COLLECT_SHIELD, i_shieldNo); +} + +BOOL dComIfGs_isCollectClothing(u8 i_clothesNo) { + return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollect( + COLLECT_CLOTHING, i_clothesNo); +} + +void dComIfGs_offCollectClothes(u8 i_clothesNo) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().offCollect(COLLECT_CLOTHING, i_clothesNo); +} + +BOOL dComIfGs_isCollectSword(u8 i_swordNo) { + return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollect(COLLECT_SWORD, i_swordNo); +} + +void dComIfGs_offCollectSword(u8 i_swordNo) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().offCollect(COLLECT_SWORD, i_swordNo); +} + +BOOL dComIfGs_isCollectShield(u8 i_item) { + return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollect(COLLECT_SHIELD, i_item); +} + +void dComIfGs_offCollectShield(u8 i_shieldNo) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().offCollect(COLLECT_SHIELD, i_shieldNo); +} + +void dComIfGs_onCollectCrystal(u8 i_item) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().onCollectCrystal(i_item); +} + +void dComIfGs_offCollectCrystal(u8 i_item) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().offCollectCrystal(i_item); +} + +bool dComIfGs_isCollectCrystal(u8 i_item) { + return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollectCrystal(i_item); +} + +void dComIfGs_onCollectMirror(u8 i_item) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().onCollectMirror(i_item); +} + +void dComIfGs_offCollectMirror(u8 i_item) { + g_dComIfG_gameInfo.info.getPlayer().getCollect().offCollectMirror(i_item); +} + +bool dComIfGs_isCollectMirror(u8 i_item) { + return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollectMirror(i_item); +} + +void dComIfGs_setLightDropNum(u8 i_level, u8 i_num) { + g_dComIfG_gameInfo.info.getPlayer().getLightDrop().setLightDropNum(i_level, i_num); +} + +u8 dComIfGs_getLightDropNum(u8 i_nowLevel) { + return g_dComIfG_gameInfo.info.getPlayer().getLightDrop().getLightDropNum(i_nowLevel); +} + +void dComIfGs_onLightDropGetFlag(u8 i_nowLevel) { + g_dComIfG_gameInfo.info.getPlayer().getLightDrop().onLightDropGetFlag(i_nowLevel); +} + +void dComIfGs_offLightDropGetFlag(u8 i_level) { + g_dComIfG_gameInfo.info.getPlayer().getLightDrop().offLightDropGetFlag(i_level); +} + +BOOL dComIfGs_isLightDropGetFlag(u8 i_nowLevel) { + return g_dComIfG_gameInfo.info.getPlayer().getLightDrop().isLightDropGetFlag(i_nowLevel); +} + +void dComIfGs_onLetterGetFlag(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getLetterInfo().onLetterGetFlag(i_no); +} + +BOOL dComIfGs_isLetterGetFlag(int i_no) { + return g_dComIfG_gameInfo.info.getPlayer().getLetterInfo().isLetterGetFlag(i_no); +} + +void dComIfGs_onLetterReadFlag(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getLetterInfo().onLetterReadFlag(i_no); +} + +int dComIfGs_isLetterReadFlag(int i_no) { + return g_dComIfG_gameInfo.info.getPlayer().getLetterInfo().isLetterReadFlag(i_no); +} + +u8 dComIfGs_getGetNumber(int i_no) { + return g_dComIfG_gameInfo.info.getPlayer().getLetterInfo().getGetNumber(i_no); +} + +void dComIfGs_setGetNumber(int i_no, u8 i_value) { + g_dComIfG_gameInfo.info.getPlayer().getLetterInfo().setGetNumber(i_no, i_value); +} + +void dComIfGs_addFishNum(u8 param_0) { + g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().addFishCount(param_0); +} + +u16 dComIfGs_getFishNum(u8 param_0) { + return g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().getFishCount(param_0); +} + +u8 dComIfGs_getFishSize(u8 param_0) { + return g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().getMaxSize(param_0); +} + +void dComIfGs_setFishSize(u8 param_0, u8 param_1) { + g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().setMaxSize(param_0, param_1); +} + +OSTime dComIfGs_getTotalTime() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getTotalTime(); +} + +void dComIfGs_addDeathCount() { + g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().addDeathCount(); +} + +u16 dComIfGs_getDeathCount() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getDeathCount(); +} + +TEXT_SPAN dComIfGs_getPlayerName() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getPlayerName(); +} + +void dComIfGs_setPlayerName(const char* i_name) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().setPlayerName(i_name); +} + +TEXT_SPAN dComIfGs_getHorseName() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getHorseName(); +} + +void dComIfGs_setHorseName(const char* i_name) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().setHorseName(i_name); +} + +u8 dComIfGs_getClearCount() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getClearCount(); +} + +// Ruby inline names are from TWW debug. +u8 dComIfGs_getOptRuby() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getRuby(); +} + +void dComIfGs_setOptRuby(u8 i_ruby) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setRuby(i_ruby); +} + +u8 dComIfGs_getOptAttentionType() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getAttentionType(); +} + +void dComIfGs_setOptAttentionType(u8 i_attentionType) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setAttentionType(i_attentionType); +} + +void dComIfGs_setOptCalibrateDist(u16 i_calibrateDist) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setCalibrateDist(i_calibrateDist); +} + +void dComIfGs_setOptCalValue(s8 i_calValue) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setCalValue(i_calValue); +} + +u8 dComIfGs_getOptCameraControl() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getCameraControl(); +} + +void dComIfGs_setOptCameraControl(u8 i_cameraControl) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setCameraControl(i_cameraControl); +} + +u8 dComIfGs_getOptPointer() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getPointer(); +} + +void dComIfGs_setOptPointer(u8 i_pointer) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setPointer(i_pointer); +} + +u8 dComIfGs_checkOptVibration() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().checkVibration(); +} + +u8 dComIfGs_getOptSound() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getSound(); +} + +void dComIfGs_setOptSound(u8 i_mode) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setSound(i_mode); +} + +u8 dComIfGs_getOptVibration() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getVibration(); +} + +void dComIfGs_setOptVibration(u8 i_status) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setVibration(i_status); +} + +u8 dComIfGs_getPalLanguage() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getPalLanguage(); +} + +BOOL dComIfGs_isSaveTbox(int i_stageNo, int i_no) { + return g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().isTbox(i_no); +} + +void dComIfGs_onSaveSwitch(int i_stageNo, int i_no) { + g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().onSwitch(i_no); +} + +void dComIfGs_offSaveSwitch(int i_stageNo, int i_no) { + g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().offSwitch(i_no); +} + +BOOL dComIfGs_isSaveSwitch(int i_stageNo, int i_no) { + return g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().isSwitch(i_no); +} + +void dComIfGs_onSaveVisitedRoom(int param_0, int i_roomNo) { + return g_dComIfG_gameInfo.info.getSavedata().getSave2(param_0)->onVisitedRoom(i_roomNo); +} + +void dComIfGs_offSaveVisitedRoom(int param_0, int i_roomNo) { + return g_dComIfG_gameInfo.info.getSavedata().getSave2(param_0)->offVisitedRoom(i_roomNo); +} + +BOOL dComIfGs_isSaveVisitedRoom(int param_0, int i_roomNo) { + return g_dComIfG_gameInfo.info.getSavedata().getSave2(param_0)->isVisitedRoom(i_roomNo); +} + +void* dComIfGs_getPEventBit() { + return g_dComIfG_gameInfo.info.getEvent().getPEventBit(); +} + +void dComIfGs_onEventBit(const u16 i_flag) { + g_dComIfG_gameInfo.info.getEvent().onEventBit(i_flag); +} + +void dComIfGs_offEventBit(const u16 i_flag) { + g_dComIfG_gameInfo.info.getEvent().offEventBit(i_flag); +} + +BOOL dComIfGs_isEventBit(const u16 i_flag) { + return g_dComIfG_gameInfo.info.getEvent().isEventBit(i_flag); +} + +void dComIfGs_setEventReg(u16 reg, u8 value) { + g_dComIfG_gameInfo.info.getEvent().setEventReg(reg, value); +} + +u8 dComIfGs_getEventReg(u16 reg) { + return g_dComIfG_gameInfo.info.getEvent().getEventReg(reg); +} + +int dComIfGs_getHookGameTime() { + return g_dComIfG_gameInfo.info.getMiniGame().getHookGameTime(); +} + +void dComIfGs_setHookGameTime(u32 i_time) { + g_dComIfG_gameInfo.info.getMiniGame().setHookGameTime(i_time); +} + +u32 dComIfGs_getBalloonScore() { + return g_dComIfG_gameInfo.info.getMiniGame().getBalloonScore(); +} + +void dComIfGs_setBalloonScore(u32 i_score) { + g_dComIfG_gameInfo.info.getMiniGame().setBalloonScore(i_score); +} + +int dComIfGs_getRaceGameTime() { + return g_dComIfG_gameInfo.info.getMiniGame().getRaceGameTime(); +} + +void dComIfGs_setRaceGameTime(int i_time) { + g_dComIfG_gameInfo.info.getMiniGame().setRaceGameTime(i_time); +} + +u8 dComIfGs_getKeyNum() { + return g_dComIfG_gameInfo.info.getMemory().getBit().getKeyNum(); +} + +void dComIfGs_setKeyNum(u8 i_keyNum) { + g_dComIfG_gameInfo.info.getMemory().getBit().setKeyNum(i_keyNum); +} + +void dComIfGs_onDungeonItemMap() { + g_dComIfG_gameInfo.info.getMemory().getBit().onDungeonItemMap(); +} + +void dComIfGs_offDungeonItemMap() { + g_dComIfG_gameInfo.info.getMemory().getBit().offDungeonItemMap(); +} + +s32 dComIfGs_isDungeonItemMap() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemMap(); +} + +void dComIfGs_onDungeonItemCompass() { + g_dComIfG_gameInfo.info.getMemory().getBit().onDungeonItemCompass(); +} + +void dComIfGs_offDungeonItemCompass() { + g_dComIfG_gameInfo.info.getMemory().getBit().offDungeonItemCompass(); +} + +s32 dComIfGs_isDungeonItemCompass() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemCompass(); +} + +void dComIfGs_onDungeonItemBossKey() { + g_dComIfG_gameInfo.info.getMemory().getBit().onDungeonItemBossKey(); +} + +void dComIfGs_offDungeonItemBossKey() { + g_dComIfG_gameInfo.info.getMemory().getBit().offDungeonItemBossKey(); +} + +s32 dComIfGs_isDungeonItemBossKey() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemBossKey(); +} + +void dComIfGs_onStageBossEnemy() { + g_dComIfG_gameInfo.info.getMemory().getBit().onStageBossEnemy(); +} + +void dComIfGs_offStageBossEnemy() { + g_dComIfG_gameInfo.info.getMemory().getBit().offStageBossEnemy(); +} + +s32 dComIfGs_isStageBossEnemy() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isStageBossEnemy(); +} + +void dComIfGs_onStageLife() { + g_dComIfG_gameInfo.info.getMemory().getBit().onStageLife(); +} + +void dComIfGs_offStageLife() { + g_dComIfG_gameInfo.info.getMemory().getBit().offStageLife(); +} + +s32 dComIfGs_isStageLife() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isStageLife(); +} + +void dComIfGs_onStageBossDemo() { + g_dComIfG_gameInfo.info.getMemory().getBit().onStageBossDemo(); +} + +void dComIfGs_offStageBossDemo() { + g_dComIfG_gameInfo.info.getMemory().getBit().offStageBossDemo(); +} + +s32 dComIfGs_isStageBossDemo() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isStageBossDemo(); +} + +void dComIfGs_onDungeonItemWarp() { + g_dComIfG_gameInfo.info.getMemory().getBit().onDungeonItemWarp(); +} + +void dComIfGs_offDungeonItemWarp() { + g_dComIfG_gameInfo.info.getMemory().getBit().offDungeonItemWarp(); +} + +s32 dComIfGs_isDungeonItemWarp() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemWarp(); +} + +void dComIfGs_onStageMiddleBoss() { + g_dComIfG_gameInfo.info.getMemory().getBit().onStageBossEnemy2(); +} + +void dComIfGs_offStageMiddleBoss() { + g_dComIfG_gameInfo.info.getMemory().getBit().offStageBossEnemy2(); +} + +BOOL dComIfGs_isStageMiddleBoss() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isStageBossEnemy2(); +} + +void dComIfGs_onTbox(int i_no) { + g_dComIfG_gameInfo.info.getMemory().getBit().onTbox(i_no); +} + +void dComIfGs_offTbox(int i_no) { + g_dComIfG_gameInfo.info.getMemory().getBit().offTbox(i_no); +} + +BOOL dComIfGs_isTbox(int i_no) { + return g_dComIfG_gameInfo.info.getMemory().getBit().isTbox(i_no); +} + +void dComIfGs_onSaveSwitch(int i_no) { + g_dComIfG_gameInfo.info.getMemory().getBit().onSwitch(i_no); +} + +void dComIfGs_offSaveSwitch(int i_no) { + g_dComIfG_gameInfo.info.getMemory().getBit().offSwitch(i_no); +} + +BOOL dComIfGs_isSaveSwitch(int i_no) { + return g_dComIfG_gameInfo.info.getMemory().getBit().isSwitch(i_no); +} + +BOOL dComIfGs_isSaveItem(int i_no) { + return g_dComIfG_gameInfo.info.getMemory().getBit().isItem(i_no); +} + +void dComIfGs_onSaveDunSwitch(int i_swNo) { + g_dComIfG_gameInfo.info.getDan().onSwitch(i_swNo); +} + +void dComIfGs_offSaveDunSwitch(int i_swNo) { + g_dComIfG_gameInfo.info.getDan().offSwitch(i_swNo); +} + +BOOL dComIfGs_isSaveDunSwitch(int i_no) { + return g_dComIfG_gameInfo.info.getDan().isSwitch(i_no); +} + +BOOL dComIfGs_isSaveDunItem(int i_no) { + return g_dComIfG_gameInfo.info.getDan().isItem(i_no); +} + +void dComIfGs_resetDan() { + g_dComIfG_gameInfo.info.resetDan(); +} + +void dComIfGs_initDan(s8 i_stageNo) { + g_dComIfG_gameInfo.info.initDan(i_stageNo); +} + +void dComIfGs_clearRoomSwitch(int i_zoneNo) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().clearRoomSwitch(); +} + +void dComIfGs_clearRoomItem(int i_zoneNo) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().clearRoomItem(); +} + +void dComIfGs_onSvZoneSwitch(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().onSwitch(i_swBit); +} + +void dComIfGs_offSvZoneSwitch(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().offSwitch(i_swBit); +} + +BOOL dComIfGs_isSvZoneSwitch(int i_zoneNo, int i_swBit) { + return g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().isSwitch(i_swBit); +} + +void dComIfGs_onSvOneZoneSwitch(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().onOneSwitch(i_swBit); +} + +void dComIfGs_offSvOneZoneSwitch(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().offOneSwitch(i_swBit); +} + +BOOL dComIfGs_isSvOneZoneSwitch(int i_zoneNo, int i_swBit) { + return g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().isOneSwitch(i_swBit); +} + +void dComIfGs_onSvZoneItem(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().onItem(i_swBit); +} + +void dComIfGs_offSvZoneItem(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().offItem(i_swBit); +} + +BOOL dComIfGs_isSvZoneItem(int i_zoneNo, int i_swBit) { + return g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().isItem(i_swBit); +} + +void dComIfGs_onSvOneZoneItem(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().onOneItem(i_swBit); +} + +void dComIfGs_offSvOneZoneItem(int i_zoneNo, int i_swBit) { + g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().offOneItem(i_swBit); +} + +BOOL dComIfGs_isSvOneZoneItem(int i_zoneNo, int i_swBit) { + return g_dComIfG_gameInfo.info.getZone(i_zoneNo).getBit().isOneItem(i_swBit); +} + +void dComIfGs_removeZone(int i_zoneNo) { + g_dComIfG_gameInfo.info.removeZone(i_zoneNo); +} + +s8 dComIfGs_getRestartRoomNo() { + return g_dComIfG_gameInfo.info.getRestart().getRoomNo(); +} + +s16 dComIfGs_getStartPoint() { + return g_dComIfG_gameInfo.info.getRestart().getStartPoint(); +} + +void dComIfGs_setStartPoint(s16 i_point) { + g_dComIfG_gameInfo.info.getRestart().setStartPoint(i_point); +} + +s16 dComIfGs_getRestartRoomAngleY() { + return g_dComIfG_gameInfo.info.getRestart().getRoomAngleY(); +} + +const cXyz& dComIfGs_getRestartRoomPos() { + return g_dComIfG_gameInfo.info.getRestart().getRoomPos(); +} + +u32 dComIfGs_getRestartRoomParam() { + return g_dComIfG_gameInfo.info.getRestart().getRoomParam(); +} + +void dComIfGs_setRestartRoomParam(u32 i_param) { + g_dComIfG_gameInfo.info.getRestart().setRoomParam(i_param); +} + +f32 dComIfGs_getLastSceneSpeedF() { + return g_dComIfG_gameInfo.info.getRestart().getLastSpeedF(); +} + +u32 dComIfGs_getLastSceneMode() { + return g_dComIfG_gameInfo.info.getRestart().getLastMode(); +} + +s16 dComIfGs_getLastSceneAngleY() { + return g_dComIfG_gameInfo.info.getRestart().getLastAngleY(); +} + +void dComIfGs_setRestartRoom(const cXyz& i_position, s16 i_angle, s8 i_roomNo) { + g_dComIfG_gameInfo.info.getRestart().setRoom(i_position, i_angle, i_roomNo); +} + +void dComIfGs_onTmpBit(const u16 i_flag) { + g_dComIfG_gameInfo.info.getTmp().onEventBit(i_flag); +} + +void dComIfGs_offTmpBit(const u16 i_flag) { + g_dComIfG_gameInfo.info.getTmp().offEventBit(i_flag); +} + +BOOL dComIfGs_isTmpBit(const u16 i_flag) { + return g_dComIfG_gameInfo.info.getTmp().isEventBit(i_flag); +} + +void dComIfGs_setTmpReg(u16 i_reg, u8 i_no) { + g_dComIfG_gameInfo.info.getTmp().setEventReg(i_reg, i_no); +} + +u8 dComIfGs_getTmpReg(const u16 i_reg) { + return g_dComIfG_gameInfo.info.getTmp().getEventReg(i_reg); +} + +dSv_turnRestart_c& dComIfGs_getTurnRestart() { + return g_dComIfG_gameInfo.info.getTurnRestart(); +} + +const cXyz& dComIfGs_getTurnRestartPos() { + return g_dComIfG_gameInfo.info.getTurnRestart().getPos(); +} + +u32 dComIfGs_getTurnRestartParam() { + return g_dComIfG_gameInfo.info.getTurnRestart().getParam(); +} + +s16 dComIfGs_getTurnRestartAngleY() { + return g_dComIfG_gameInfo.info.getTurnRestart().getAngleY(); +} + +s8 dComIfGs_getTurnRestartRoomNo() { + return g_dComIfG_gameInfo.info.getTurnRestart().getRoomNo(); +} + +void dComIfGs_setTurnRestart(const cXyz& i_position, s16 i_angle, s8 param_2, u32 i_param) { + g_dComIfG_gameInfo.info.getTurnRestart().set(i_position, i_angle, param_2, i_param); +} + +u8 dComIfGs_getDataNum() { + return g_dComIfG_gameInfo.info.getDataNum(); +} + +void dComIfGs_setDataNum(u8 i_num) { + return g_dComIfG_gameInfo.info.setDataNum(i_num); +} + +u8 dComIfGs_getNewFile() { + return g_dComIfG_gameInfo.info.getNewFile(); +} + +void dComIfGs_setNewFile(u8 i_fileNo) { + return g_dComIfG_gameInfo.info.setNewFile(i_fileNo); +} + +u8 dComIfGs_getNoFile() { + return g_dComIfG_gameInfo.info.getNoFile(); +} + +void dComIfGs_setNoFile(u8 i_file) { + g_dComIfG_gameInfo.info.setNoFile(i_file); +} + +s64 dComIfGs_getSaveStartTime() { + return g_dComIfG_gameInfo.info.getStartTime(); +} + +void dComIfGs_setSaveStartTime(s64 i_time) { + g_dComIfG_gameInfo.info.setStartTime(i_time); +} + +s64 dComIfGs_getSaveTotalTime() { + return g_dComIfG_gameInfo.info.getSaveTotalTime(); +} + +void dComIfGs_setSaveTotalTime(s64 i_time) { + g_dComIfG_gameInfo.info.setSaveTotalTime(i_time); +} + +void dComIfGs_init() { + g_dComIfG_gameInfo.info.init(); +} + +void dComIfGs_getSave(int i_stageNo) { + g_dComIfG_gameInfo.info.getSave(i_stageNo); +} + +void dComIfGs_putSave(int i_stageNo) { + g_dComIfG_gameInfo.info.putSave(i_stageNo); +} + +void dComIfGs_initZone() { + g_dComIfG_gameInfo.info.initZone(); +} + +int dComIfGs_createZone(int roomNo) { + return g_dComIfG_gameInfo.info.createZone(roomNo); +} + +void dComIfGs_onSwitch(int i_no, int i_roomNo) { + g_dComIfG_gameInfo.info.onSwitch(i_no, i_roomNo); +} + +void dComIfGs_offSwitch(int i_no, int i_roomNo) { + g_dComIfG_gameInfo.info.offSwitch(i_no, i_roomNo); +} + +BOOL dComIfGs_isSwitch(int i_no, int i_roomNo) { + return g_dComIfG_gameInfo.info.isSwitch(i_no, i_roomNo); +} + +void dComIfGs_revSwitch(int i_no, int i_roomNo) { + g_dComIfG_gameInfo.info.revSwitch(i_no, i_roomNo); +} + +void dComIfGs_onItem(int i_bitNo, int i_roomNo) { + g_dComIfG_gameInfo.info.onItem(i_bitNo, i_roomNo); +} + +bool dComIfGs_isItem(int i_bitNo, int i_roomNo) { + return g_dComIfG_gameInfo.info.isItem(i_bitNo, i_roomNo); +} + +void dComIfGs_onActor(int i_bitNo, int i_roomNo) { + g_dComIfG_gameInfo.info.onActor(i_bitNo, i_roomNo); +} + +void dComIfGs_offActor(int i_no, int i_roomNo) { + g_dComIfG_gameInfo.info.offActor(i_no, i_roomNo); +} + +BOOL dComIfGs_isActor(int i_no, int i_roomNo) { + return g_dComIfG_gameInfo.info.isActor(i_no, i_roomNo); +} + +void dComIfGs_setMemoryToCard(u8* i_saveData, int i_dataNum) { + g_dComIfG_gameInfo.info.memory_to_card((char*)i_saveData, i_dataNum); +} + +void dComIfGs_setCardToMemory(u8* card_ptr, int dataNum) { + g_dComIfG_gameInfo.info.card_to_memory((char*)card_ptr, dataNum); +} + +void dComIfGs_setInitDataToCard(u8* i_saveData, int i_dataNum) { + g_dComIfG_gameInfo.info.initdata_to_card((char*)i_saveData, i_dataNum); +} + +u8 dComIfGs_getWolfAbility(int i_idx) { + return g_dComIfG_gameInfo.play.getWolfAbility(i_idx); +} + +s8 dComIfGs_Grass_hide_Check() { + return g_dComIfG_gameInfo.field_0x1ddfc; +} + +dStage_startStage_c* dComIfGp_getStartStage() { + return g_dComIfG_gameInfo.play.getStartStage(); +} + +void dComIfGp_setStartStage(dStage_startStage_c* p_startStage) { + g_dComIfG_gameInfo.play.setStartStage(p_startStage); +} + +const char* dComIfGp_getStartStageName() { + return g_dComIfG_gameInfo.play.getStartStageName(); +} + +s16 dComIfGp_getStartStagePoint() { + return g_dComIfG_gameInfo.play.getStartStagePoint(); +} + +s8 dComIfGp_getStartStageRoomNo() { + return g_dComIfG_gameInfo.play.getStartStageRoomNo(); +} + +s8 dComIfGp_getStartStageLayer() { + return g_dComIfG_gameInfo.play.getStartStageLayer(); +} + +void dComIfGp_setStartStageLayer(s8 layer) { + g_dComIfG_gameInfo.play.setStartStageLayer(layer); +} + +s8 dComIfGp_getStartStageDarkArea() { + return g_dComIfG_gameInfo.play.getStartStageDarkArea(); +} + +void dComIfGp_setStartStageDarkArea(s8 darkArea) { + g_dComIfG_gameInfo.play.setStartStageDarkArea(darkArea); +} + +dStage_startStage_c* dComIfGp_getNextStartStage() { + return g_dComIfG_gameInfo.play.getNextStartStage(); +} + +const char* dComIfGp_getNextStageName() { + return g_dComIfG_gameInfo.play.getNextStageName(); +} + +s16 dComIfGp_getNextStagePoint() { + return g_dComIfG_gameInfo.play.getNextStagePoint(); +} + +s16 dComIfGp_getNextStageRoomNo() { + return g_dComIfG_gameInfo.play.getNextStageRoomNo(); +} + +s16 dComIfGp_getNextStageLayer() { + return g_dComIfG_gameInfo.play.getNextStageLayer(); +} + +BOOL dComIfGp_isEnableNextStage() { + return g_dComIfG_gameInfo.play.isEnableNextStage(); +} + +void dComIfGp_offEnableNextStage() { + g_dComIfG_gameInfo.play.offEnableNextStage(); +} + +s8 dComIfGp_getNextStageWipe() { + return g_dComIfG_gameInfo.play.getNextStageWipe(); +} + +u8 dComIfGp_getNextStageWipeSpeed() { + return g_dComIfG_gameInfo.play.getNextStageWipeSpeed(); +} + +dStage_stageDt_c* dComIfGp_getStage() { + return &g_dComIfG_gameInfo.play.getStage(); +} + +roomRead_class* dComIfGp_getStageRoom() { + return g_dComIfG_gameInfo.play.getStage().getRoom(); +} + +stage_palette_info_class* dComIfGp_getStagePaletteInfo() { + return g_dComIfG_gameInfo.play.getStage().getPaletteInfo(); +} + +stage_pselect_info_class* dComIfGp_getStagePselectInfo() { + return g_dComIfG_gameInfo.play.getStage().getPselectInfo(); +} + +stage_envr_info_class* dComIfGp_getStageEnvrInfo() { + return g_dComIfG_gameInfo.play.getStage().getEnvrInfo(); +} + +stage_vrboxcol_info_class* dComIfGp_getStageVrboxcolInfo() { + return g_dComIfG_gameInfo.play.getStage().getVrboxcolInfo(); +} + +stage_plight_info_class* dComIfGp_getStagePlightInfo() { + return g_dComIfG_gameInfo.play.getStage().getPlightInfo(); +} + +int dComIfGp_getStagePaletteNumInfo() { + return g_dComIfG_gameInfo.play.getStage().getPaletteNumInfo(); +} + +int dComIfGp_getStagePselectNumInfo() { + return g_dComIfG_gameInfo.play.getStage().getPselectNumInfo(); +} + +int dComIfGp_getStageEnvrNumInfo() { + return g_dComIfG_gameInfo.play.getStage().getEnvrNumInfo(); +} + +int dComIfGp_getStageVrboxcolNumInfo() { + return g_dComIfG_gameInfo.play.getStage().getVrboxcolNumInfo(); +} + +int dComIfGp_getStagePlightNumInfo() { + return g_dComIfG_gameInfo.play.getStage().getPlightNumInfo(); +} + +stage_stag_info_class* dComIfGp_getStageStagInfo() { + return g_dComIfG_gameInfo.play.getStage().getStagInfo(); +} + +stage_scls_info_dummy_class* dComIfGp_getStageSclsInfo() { + return g_dComIfG_gameInfo.play.getStage().getSclsInfo(); +} + +dStage_Multi_c* dComIfGp_getMulti() { + return g_dComIfG_gameInfo.play.getStage().getMulti(); +} + +void dComIfGp_setOldMulti() { + g_dComIfG_gameInfo.play.getStage().setOldMulti(); +} + +void dComIfGp_resetOldMulti() { + g_dComIfG_gameInfo.play.getStage().resetOldMulti(); +} + +s16 dComIfGp_getStageWorldRollAngleX() { + return g_dComIfG_gameInfo.play.getStage().getWorldRollAngleX(); +} + +s16 dComIfGp_getStageWorldRollDirAngleY() { + return g_dComIfG_gameInfo.play.getStage().getWorldRollDirAngleY(); +} + +int dComIfGp_roomControl_getStayNo() { + return dStage_roomControl_c::getStayNo(); +} + +BOOL dComIfGp_roomControl_getTimePass() { + return g_dComIfG_gameInfo.play.getRoomControl()->GetTimePass(); +} + +void dComIfGp_roomControl_setTimePass(int isPassing) { + g_dComIfG_gameInfo.play.getRoomControl()->SetTimePass(isPassing); +} + +dKy_tevstr_c* dComIfGp_roomControl_getTevStr(int i_roomNo) { + return g_dComIfG_gameInfo.play.getRoomControl()->getTevStr(i_roomNo); +} + +void dComIfGp_roomControl_setStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->setStatusFlag(i_roomNo, flag); +} + +void dComIfGp_roomControl_onStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->onStatusFlag(i_roomNo, flag); +} + +void dComIfGp_roomControl_offStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->offStatusFlag(i_roomNo, flag); +} + +u8 dComIfGp_roomControl_checkStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->checkStatusFlag(i_roomNo, flag); +} + +s32 dComIfGp_roomControl_getZoneNo(int i_roomNo) { + return g_dComIfG_gameInfo.play.getRoomControl()->getZoneNo(i_roomNo); +} + +void dComIfGp_roomControl_setZoneNo(int roomNo, int zoneNo) { + g_dComIfG_gameInfo.play.getRoomControl()->setZoneNo(roomNo, zoneNo); +} + +void dComIfGp_roomControl_init() { + g_dComIfG_gameInfo.play.getRoomControl()->init(); +} + +void dComIfGp_roomControl_initZone() { + g_dComIfG_gameInfo.play.getRoomControl()->initZone(); +} + +dStage_roomDt_c* dComIfGp_roomControl_getStatusRoomDt(int room_no) { + return g_dComIfG_gameInfo.play.getRoomControl()->getStatusRoomDt(room_no); +} + +void dComIfGp_roomControl_setStayNo(int stayNo) { + g_dComIfG_gameInfo.play.mRoomControl.setStayNo(stayNo); +} + +BOOL dComIfGp_roomControl_checkRoomDisp(int i_roomNo) { + return g_dComIfG_gameInfo.play.getRoomControl()->checkRoomDisp(i_roomNo); +} + +int dComIfGp_roomControl_loadRoom(int param_0, u8* param_1, bool param_2) { + return g_dComIfG_gameInfo.play.getRoomControl()->loadRoom(param_0, param_1, param_2); +} + +void dComIfGp_roomControl_zoneCountCheck(int i_roomNo) { + g_dComIfG_gameInfo.play.getRoomControl()->zoneCountCheck(i_roomNo); +} + +dEvt_control_c* dComIfGp_getEvent() { + return g_dComIfG_gameInfo.play.getEvent(); +} + +u16 dComIfGp_event_chkEventFlag(u16 i_flag) { + return g_dComIfG_gameInfo.play.getEvent()->chkEventFlag(i_flag); +} + +void dComIfGp_event_onEventFlag(u16 i_flag) { + g_dComIfG_gameInfo.play.getEvent()->onEventFlag(i_flag); +} + +void dComIfGp_event_onHindFlag(u16 i_flag) { + g_dComIfG_gameInfo.play.getEvent()->onHindFlag(i_flag); +} + +void dComIfGp_event_offHindFlag(u16 i_flag) { + g_dComIfG_gameInfo.play.getEvent()->offHindFlag(i_flag); +} + +u8 dComIfGp_event_getMode() { + return g_dComIfG_gameInfo.play.getEvent()->getMode(); +} + +BOOL dComIfGp_event_runCheck() { + return g_dComIfG_gameInfo.play.getEvent()->runCheck(); +} + +u16 dComIfGp_event_checkHind(u16 i_hindFlag) { + if (!dComIfGp_event_runCheck()) { + return false; + } + return g_dComIfG_gameInfo.play.getEvent()->checkHind(i_hindFlag); +} + +BOOL dComIfGp_event_chkTalkXY() { + return g_dComIfG_gameInfo.play.getEvent()->chkTalkXY(); +} + +u8 dComIfGp_event_getPreItemNo() { + return g_dComIfG_gameInfo.play.getEvent()->getPreItemNo(); +} + +f32 dComIfGp_event_getCullRate() { + return g_dComIfG_gameInfo.play.getEvent()->getCullRate(); +} + +void dComIfGp_event_setCullRate(f32 i_rate) { + g_dComIfG_gameInfo.play.getEvent()->setCullRate(i_rate); +} + +int dComIfGp_event_order(u16 i_type, u16 i_prio, u16 i_flags, u16 i_hindFlags, void* i_requestActor, + void* i_targetActor, s16 i_eventID, u8 i_mapToolId) { + return g_dComIfG_gameInfo.play.getEvent()->order(i_type, i_prio, i_flags, i_hindFlags, + i_requestActor, i_targetActor, i_eventID, i_mapToolId); +} + +void dComIfGp_event_reset() { + g_dComIfG_gameInfo.play.getEvent()->reset(); +} + +int dComIfGp_event_moveApproval(void* i_actor) { + return g_dComIfG_gameInfo.play.getEvent()->moveApproval(i_actor); +} + +BOOL dComIfGp_event_compulsory(void* i_actor, const char* i_eventname, u16 i_hindFlag) { + return g_dComIfG_gameInfo.play.getEvent()->compulsory(i_actor, i_eventname, i_hindFlag); +} + +void dComIfGp_event_remove() { + g_dComIfG_gameInfo.play.getEvent()->remove(); +} + +fopAc_ac_c* dComIfGp_event_getPt1() { + return g_dComIfG_gameInfo.play.getEvent()->getPt1(); +} + +fopAc_ac_c* dComIfGp_event_getPt2() { + return g_dComIfG_gameInfo.play.getEvent()->getPt2(); +} + +fopAc_ac_c* dComIfGp_event_getTalkPartner() { + return g_dComIfG_gameInfo.play.getEvent()->getPtT(); +} + +void dComIfGp_event_setTalkPartner(void* i_actor) { + g_dComIfG_gameInfo.play.getEvent()->setPtT(i_actor); +} + +fopAc_ac_c* dComIfGp_event_getItemPartner() { + return g_dComIfG_gameInfo.play.getEvent()->getPtI(); +} + +void dComIfGp_event_setItemPartner(void* i_actor) { + g_dComIfG_gameInfo.play.getEvent()->setPtI(i_actor); +} + +void dComIfGp_event_setItemPartnerId(fpc_ProcID i_id) { + g_dComIfG_gameInfo.play.getEvent()->setPtI_Id(i_id); +} + +fopAc_ac_c* dComIfGp_event_getDoorPartner() { + return g_dComIfG_gameInfo.play.getEvent()->getPtD(); +} + +void dComIfGp_event_setDoorPartner(void* i_partner) { + g_dComIfG_gameInfo.play.getEvent()->setPtD(i_partner); +} + +u8 dComIfGp_event_getGtItm() { + return g_dComIfG_gameInfo.play.getEvent()->getGtItm(); +} + +void dComIfGp_event_setGtItm(u8 i_itemNo) { + g_dComIfG_gameInfo.play.getEvent()->setGtItm(i_itemNo); +} + +dEvent_manager_c& dComIfGp_getEventManager() { + return g_dComIfG_gameInfo.play.getEvtManager(); +} + +dEvent_manager_c* dComIfGp_getPEvtManager() { + return &g_dComIfG_gameInfo.play.getEvtManager(); +} + +int dComIfGp_evmng_cameraPlay() { + return dComIfGp_getPEvtManager()->cameraPlay(); +} + +int dComIfGp_evmng_startDemo(int i_mapToolId) { + return dComIfGp_getPEvtManager()->setStartDemo(i_mapToolId); +} + +void dComIfGp_evmng_create() { + g_dComIfG_gameInfo.play.getEvtManager().create(); +} + +void dComIfGp_evmng_remove() { + g_dComIfG_gameInfo.play.getEvtManager().remove(); +} + +bool dComIfGp_evmng_existence(s16 eventId) { + return g_dComIfG_gameInfo.play.getEvtManager().getEventData(eventId) != NULL; +} + +s16 dComIfGp_evmng_getEventIdx(const char* eventName, u8 mapToolID) { + return g_dComIfG_gameInfo.play.getEvtManager().getEventIdx(eventName, mapToolID, -1); +} + +bool dComIfGp_evmng_existence(const char* eventname) { + return g_dComIfG_gameInfo.play.getEvtManager().getEventData( + dComIfGp_evmng_getEventIdx(eventname, 0xFF)) != NULL; +} + +BOOL dComIfGp_evmng_isMapToolCamera(u8 mapToolID) { + return g_dComIfG_gameInfo.play.getEvtManager().isMapToolCamera(mapToolID, -1); +} + +BOOL dComIfGp_evmng_startCheck(s16 i_eventId) { + return g_dComIfG_gameInfo.play.getEvtManager().startCheck(i_eventId); +} + +BOOL dComIfGp_evmng_startCheck(char const* i_eventname) { + return g_dComIfG_gameInfo.play.getEvtManager().startCheckOld(i_eventname); +} + +BOOL dComIfGp_evmng_endCheck(s16 i_eventID) { + return g_dComIfG_gameInfo.play.getEvtManager().endCheck(i_eventID); +} + +BOOL dComIfGp_evmng_endCheck(const char* i_eventname) { + return g_dComIfG_gameInfo.play.getEvtManager().endCheckOld(i_eventname); +} + +int dComIfGp_evmng_getMyStaffId(const char* i_staffname, fopAc_ac_c* i_actor, int i_tagId) { + return dComIfGp_getPEvtManager()->getMyStaffId(i_staffname, i_actor, i_tagId); +} + +int dComIfGp_evmng_getIsAddvance(int i_staffId) { + return dComIfGp_getPEvtManager()->getIsAddvance(i_staffId); +} + +int dComIfGp_evmng_getMyActIdx(int i_staffId, DUSK_CONST char* DUSK_CONST* i_actions, + int i_actionNum, BOOL param_3, BOOL param_4) { + return dComIfGp_getPEvtManager()->getMyActIdx( + i_staffId, i_actions, i_actionNum, param_3, param_4); +} + +f32* dComIfGp_evmng_getMyFloatP(int i_staffId, DUSK_CONST char* i_dataname) { + return (f32*)dComIfGp_getPEvtManager()->getMySubstanceP( + i_staffId, i_dataname, dEvDtData_c::TYPE_FLOAT); +} + +cXyz* dComIfGp_evmng_getMyXyzP(int i_staffId, DUSK_CONST char* i_dataname) { + return (cXyz*)dComIfGp_getPEvtManager()->getMySubstanceP( + i_staffId, i_dataname, dEvDtData_c::TYPE_VEC); +} + +int* dComIfGp_evmng_getMyIntegerP(int i_staffId, DUSK_CONST char* i_dataname) { + return (int*)dComIfGp_getPEvtManager()->getMySubstanceP( + i_staffId, i_dataname, dEvDtData_c::TYPE_INT); +} + +char* dComIfGp_evmng_getMyStringP(int i_staffId, DUSK_CONST char* i_dataname) { + return (char*)dComIfGp_getPEvtManager()->getMySubstanceP( + i_staffId, i_dataname, dEvDtData_c::TYPE_STRING); +} + +int dComIfGp_evmng_getMySubstanceNum(int i_staffId, DUSK_CONST char* i_dataname) { + return dComIfGp_getPEvtManager()->getMySubstanceNum(i_staffId, i_dataname); +} + +void dComIfGp_evmng_cutEnd(int i_staffId) { + dComIfGp_getPEvtManager()->cutEnd(i_staffId); +} + +void dComIfGp_evmng_setGoal(cXyz* i_pos) { + dComIfGp_getPEvtManager()->setGoal(i_pos); +} + +cXyz* dComIfGp_evmng_getGoal() { + return dComIfGp_getPEvtManager()->getGoal(); +} + +BOOL dComIfGp_evmng_ChkPresentEnd() { + return dComIfGp_getPEvtManager()->ChkPresentEnd(); +} + +int dComIfGp_evmng_checkStartDemo() { + return dComIfGp_getPEvtManager()->checkStartDemo(); +} + +dAttention_c* dComIfGp_getAttention() { + return g_dComIfG_gameInfo.play.getAttention(); +} + +fopAc_ac_c* dComIfGp_att_getZHint() { + return dComIfGp_getAttention()->getZHintTarget(); +} + +int dComIfGp_att_ZHintRequest(fopAc_ac_c* param_1, int param_2) { + return dComIfGp_getAttention()->ZHintRequest(param_1, param_2); +} + +fopAc_ac_c* dComIfGp_att_getCatghTarget() { + return dComIfGp_getAttention()->getCatghTarget(); +} + +u8 dComIfGp_att_getCatchChgItem() { + return dComIfGp_getAttention()->getCatchChgItem(); +} + +int dComIfGp_att_CatchRequest(fopAc_ac_c* param_0, u8 param_1, f32 i_horizontalDist, f32 i_upDist, + f32 i_downDist, s16 i_angle, int param_5) { + return dComIfGp_getAttention()->CatchRequest( + param_0, param_1, i_horizontalDist, i_upDist, i_downDist, i_angle, param_5); +} + +fopAc_ac_c* dComIfGp_att_getLookTarget() { + return dComIfGp_getAttention()->getLookTarget(); +} + +void dComIfGp_att_LookRequest(fopAc_ac_c* param_0, f32 i_horizontalDist, f32 i_upDist, + f32 i_downDist, s16 i_angle, int param_5) { + dComIfGp_getAttention()->LookRequest( + param_0, i_horizontalDist, i_upDist, i_downDist, i_angle, param_5); +} + +dVibration_c& dComIfGp_getVibration() { + return g_dComIfG_gameInfo.play.getVibration(); +} + +JKRAramArchive* dComIfGp_getFieldMapArchive2() { + return g_dComIfG_gameInfo.play.getFieldMapArchive2(); +} + +void dComIfGp_setFieldMapArchive2(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setFieldMapArchive2(arc); +} + +JKRArchive* dComIfGp_getMsgArchive(int idx) { + return g_dComIfG_gameInfo.play.getMsgArchive(idx); +} + +void dComIfGp_setMsgArchive(int i, JKRArchive* arc) { + g_dComIfG_gameInfo.play.setMsgArchive(i, arc); +} + +JKRArchive* dComIfGp_getDemoMsgArchive() { + return g_dComIfG_gameInfo.play.getDemoMsgArchive(); +} + +void dComIfGp_setDemoMsgArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setDemoMsgArchive(arc); +} + +JKRArchive* dComIfGp_getMeterButtonArchive() { + return g_dComIfG_gameInfo.play.getMeterButtonArchive(); +} + +void dComIfGp_setMeterButtonArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setMeterButtonArchive(arc); +} + +JKRArchive* dComIfGp_getFontArchive() { + return g_dComIfG_gameInfo.play.getFontArchive(); +} + +void dComIfGp_setFontArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setFontArchive(arc); +} + +JKRArchive* dComIfGp_getRubyArchive() { + return g_dComIfG_gameInfo.play.getRubyArchive(); +} + +void dComIfGp_setRubyArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setRubyArchive(arc); +} + +JKRArchive* dComIfGp_getAnmArchive() { + return g_dComIfG_gameInfo.play.getAnmArchive(); +} + +void dComIfGp_setAnmArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setAnmArchive(arc); +} + +JKRArchive* dComIfGp_getCollectResArchive() { + return g_dComIfG_gameInfo.play.getCollectResArchive(); +} + +void dComIfGp_setCollectResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setCollectResArchive(arc); +} + +JKRArchive* dComIfGp_getFmapResArchive() { + return g_dComIfG_gameInfo.play.getFmapResArchive(); +} + +void dComIfGp_setFmapResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setFmapResArchive(arc); +} + +JKRArchive* dComIfGp_getDmapResArchive() { + return g_dComIfG_gameInfo.play.getDmapResArchive(); +} + +void dComIfGp_setDmapResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setDmapResArchive(arc); +} + +JKRArchive* dComIfGp_getOptionResArchive() { + return g_dComIfG_gameInfo.play.getOptionResArchive(); +} + +void dComIfGp_setOptionResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setOptionResArchive(arc); +} + +JKRArchive* dComIfGp_getItemIconArchive() { + return g_dComIfG_gameInfo.play.getItemIconArchive(); +} + +void dComIfGp_setItemIconArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setItemIconArchive(arc); +} + +JKRArchive* dComIfGp_getNameResArchive() { + return g_dComIfG_gameInfo.play.getNameResArchive(); +} + +void dComIfGp_setNameResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setNameResArchive(arc); +} + +void dComIfGp_setErrorResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setErrorResArchive(arc); +} + +JKRArchive* dComIfGp_getAllMapArchive() { + return g_dComIfG_gameInfo.play.getAllMapArchive(); +} + +void dComIfGp_setAllMapArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setAllMapArchive(arc); +} + +JKRArchive* dComIfGp_getMsgCommonArchive() { + return g_dComIfG_gameInfo.play.getMsgCommonArchive(); +} + +void dComIfGp_setMsgCommonArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setMsgCommonArchive(arc); +} + +JKRArchive* dComIfGp_getRingResArchive() { + return g_dComIfG_gameInfo.play.getRingResArchive(); +} + +void dComIfGp_setRingResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setRingResArchive(arc); +} + +JKRArchive* dComIfGp_getCardIconResArchive() { + return g_dComIfG_gameInfo.play.getCardIconResArchive(); +} + +void dComIfGp_setCardIconResArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setCardIconResArchive(arc); +} + +JKRArchive* dComIfGp_getMsgDtArchive() { + return g_dComIfG_gameInfo.play.getMsgDtArchive(); +} + +JKRArchive* dComIfGp_getMsgDtArchive(int idx) { + return g_dComIfG_gameInfo.play.getMsgDtArchive(idx); +} + +void dComIfGp_setMsgDtArchive(int i, JKRArchive* arc) { + g_dComIfG_gameInfo.play.setMsgDtArchive(i, arc); +} + +JKRArchive* dComIfGp_getMain2DArchive() { + return g_dComIfG_gameInfo.play.getMain2DArchive(); +} + +void dComIfGp_setMain2DArchive(JKRArchive* arc) { + g_dComIfG_gameInfo.play.setMain2DArchive(arc); +} + +JKRExpHeap* dComIfGp_particle_getResHeap() { + return g_dComIfG_gameInfo.play.getParticle()->getResHeap(); +} + +void dComIfGp_particle_levelExecute(u32 param_0) { + g_dComIfG_gameInfo.play.getParticle()->levelExecute(param_0); +} + +void dComIfGp_particle_createCommon(const void* data) { + g_dComIfG_gameInfo.play.getParticle()->createCommon(data); +} + +void dComIfGp_particle_readScene(u8 particle_no, mDoDvdThd_toMainRam_c** param_1) { + g_dComIfG_gameInfo.play.getParticle()->readScene(particle_no, param_1); +} + +void dComIfGp_particle_createScene(const void* param_0) { + g_dComIfG_gameInfo.play.getParticle()->createScene(param_0); +} + +void dComIfGp_particle_removeScene(bool param_0) { + g_dComIfG_gameInfo.play.getParticle()->removeScene(param_0); +} + +void dComIfGp_particle_cleanup() { + g_dComIfG_gameInfo.play.getParticle()->cleanup(); +} + +void dComIfGp_particle_calc3D() { + g_dComIfG_gameInfo.play.getParticle()->calc3D(); +} + +void dComIfGp_particle_calc2D() { + g_dComIfG_gameInfo.play.getParticle()->calc2D(); +} + +void dComIfGp_particle_calcMenu() { + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->calcMenu(); + } +} + +void dComIfGp_particle_draw(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawNormal(i_drawInfo); + } +} + +void dComIfGp_particle_drawFog(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawNormalFog(i_drawInfo); + } +} + +void dComIfGp_particle_drawP1(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawNormalP1(i_drawInfo); + } +} + +void dComIfGp_particle_drawProjection(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawProjection(i_drawInfo); + } +} + +void dComIfGp_particle_drawNormalPri0_A(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawNormalPri0_A(i_drawInfo); + } +} + +void dComIfGp_particle_drawNormalPri0_B(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawNormalPri0_B(i_drawInfo); + } +} + +void dComIfGp_particle_drawFogPri0_A(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawFogPri0_A(i_drawInfo); + } +} + +void dComIfGp_particle_drawFogPri0_B(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawFogPri0_B(i_drawInfo); + } +} + +void dComIfGp_particle_drawFogPri1(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawFogPri1(i_drawInfo); + } +} + +void dComIfGp_particle_drawFogPri2(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawFogPri2(i_drawInfo); + } +} + +void dComIfGp_particle_drawFogPri3(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawFogPri3(i_drawInfo); + } +} + +void dComIfGp_particle_drawFogPri4(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawFogPri4(i_drawInfo); + } +} + +void dComIfGp_particle_drawDarkworld(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawDarkworld(i_drawInfo); + } +} + +void dComIfGp_particle_drawScreen(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->drawFogScreen(i_drawInfo); + } +} + +void dComIfGp_particle_draw2Dgame(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->draw2Dgame(i_drawInfo); + } +} + +void dComIfGp_particle_draw2Dfore(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->draw2Dfore(i_drawInfo); + } +} + +void dComIfGp_particle_draw2Dback(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->draw2Dback(i_drawInfo); + } +} + +void dComIfGp_particle_draw2DmenuFore(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->draw2DmenuFore(i_drawInfo); + } +} + +void dComIfGp_particle_draw2DmenuBack(JPADrawInfo* i_drawInfo) { + ZoneScoped; + if (g_dComIfG_gameInfo.play.getParticle() != NULL) { + g_dComIfG_gameInfo.play.getParticle()->draw2DmenuBack(i_drawInfo); + } +} + +void dComIfGp_setHitMark(u16 i_hitmark, fopAc_ac_c* param_1, const cXyz* param_2, + const csXyz* param_3, const cXyz* param_4, u32 i_atType) { + g_dComIfG_gameInfo.play.getParticle()->setHitMark( + i_hitmark, param_1, param_2, param_3, param_4, i_atType); +} + +void dComIfGp_particle_setWaterRipple(u32* param_0, cBgS_PolyInfo& param_1, const cXyz* param_2, + f32 param_3, const dKy_tevstr_c* param_4, const cXyz* param_5, s8 param_6) { + g_dComIfG_gameInfo.play.getParticle()->setWaterRipple( + param_0, param_1, param_2, param_3, param_4, param_5, param_6); +} + +u32 dComIfGp_particle_setPolyColor(u32 param_0, u16 param_1, cBgS_PolyInfo& param_2, + const cXyz* param_3, const dKy_tevstr_c* param_4, const csXyz* param_5, const cXyz* param_6, + int param_7, dPa_levelEcallBack* param_8, s8 param_9, const cXyz* param_10) { + return g_dComIfG_gameInfo.play.getParticle()->setPoly(param_0, param_1, param_2, param_3, + param_4, param_5, param_6, param_7, param_8, param_9, param_10); +} + +JPABaseEmitter* dComIfGp_particle_setPolyColor(u16 param_1, cBgS_PolyInfo& param_2, + const cXyz* param_3, const dKy_tevstr_c* param_4, const csXyz* param_5, const cXyz* param_6, + int param_7, dPa_levelEcallBack* param_8, s8 param_9, const cXyz* param_10) { + return g_dComIfG_gameInfo.play.getParticle()->setPoly( + param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9, param_10); +} + +void dComIfGp_particle_setSimple(u16 param_0, cXyz* i_pos, u8 param_2, GXColor& param_3, + GXColor& param_4, int param_5, float param_6) { + g_dComIfG_gameInfo.play.getParticle()->setSimple( + param_0, i_pos, 0, param_2, param_3, param_4, param_5, param_6); +} + +u32 dComIfGp_particle_setStopContinue(u32 param_0) { + return g_dComIfG_gameInfo.play.getParticle()->setStopContinue(param_0); +} + +u32 dComIfGp_particle_setSimpleFoot(u32 param_0, u32* param_1, cBgS_PolyInfo& param_2, + cXyz const* param_3, dKy_tevstr_c const* param_4, int param_5, csXyz const* param_6, + cXyz const* param_7, dPa_levelEcallBack* param_8, s8 param_9, cXyz const* param_10) { + return g_dComIfG_gameInfo.play.getParticle()->setSimpleFoot(param_0, param_1, param_2, param_3, + param_4, param_5, param_6, param_7, param_8, param_9, param_10); +} + +u16 dComIfGp_particle_setCommonPoly(u32* param_0, cBgS_PolyInfo* param_1, const cXyz* param_2, + const cXyz* param_3, const dKy_tevstr_c* param_4, u32 param_5, u32 param_6, + const csXyz* param_7, const cXyz* param_8, s8 param_9) { + return g_dComIfG_gameInfo.play.getParticle()->setCommonPoly( + param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9); +} + +void dComIfGp_particle_levelEmitterOnEventMove(u32 param_0) { + g_dComIfG_gameInfo.play.getParticle()->forceOnEventMove(param_0); +} + +JPABaseEmitter* dComIfGp_particle_getEmitter(u32 param_0) { + return g_dComIfG_gameInfo.play.getParticle()->getEmitter(param_0); +} + +u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos, const dKy_tevstr_c* param_3, + const csXyz* i_rotation, const cXyz* i_scale, u8 i_alpha, dPa_levelEcallBack* param_7, + s8 param_8, const GXColor* param_9, const GXColor* param_10, const cXyz* param_11) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_0, param_1, i_pos, param_3, + i_rotation, i_scale, i_alpha, param_7, param_8, param_9, param_10, param_11, 1.0f); +} + +u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos, const csXyz* i_rotation, + const cXyz* i_scale, u8 param_5, dPa_levelEcallBack* param_6, s8 param_7, + const GXColor* param_8, const GXColor* param_9, const cXyz* param_10) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_0, param_1, i_pos, NULL, + i_rotation, i_scale, param_5, param_6, param_7, param_8, param_9, param_10, 1.0f); +} + +JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, const dKy_tevstr_c* param_3, + const csXyz* i_rotation, const cXyz* i_scale, u8 i_alpha, dPa_levelEcallBack* i_callback, + s8 param_8, const GXColor* i_prmColor, const GXColor* i_envColor, const cXyz* i_particleScale) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal(i_resID, i_pos, param_3, i_rotation, + i_scale, i_alpha, i_callback, param_8, i_prmColor, i_envColor, i_particleScale, 1.0f); +} + +JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, const csXyz* i_rotation, + const cXyz* i_scale, u8 i_alpha, dPa_levelEcallBack* i_callback, s8 param_7, + const GXColor* i_prmColor, const GXColor* i_envColor, const cXyz* i_particleScale) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal(i_resID, i_pos, NULL, i_rotation, + i_scale, i_alpha, i_callback, param_7, i_prmColor, i_envColor, i_particleScale, 1.0f); +} + +u32 dComIfGp_particle_set( + u32 param_0, u16 param_1, const cXyz* i_pos, const dKy_tevstr_c* param_3) { + return dComIfGp_particle_set( + param_0, param_1, i_pos, param_3, NULL, NULL, 0xFF, NULL, -1, NULL, NULL, NULL); +} + +JPABaseEmitter* dComIfGp_particle_set( + u16 i_resID, const cXyz* i_pos, const csXyz* i_rotation, const cXyz* i_scale) { + return dComIfGp_particle_set( + i_resID, i_pos, NULL, i_rotation, i_scale, 255, NULL, -1, NULL, NULL, NULL); +} + +JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, const dKy_tevstr_c* param_2, + const csXyz* i_rotation, const cXyz* i_scale) { + return dComIfGp_particle_set( + i_resID, i_pos, param_2, i_rotation, i_scale, 255, NULL, -1, NULL, NULL, NULL); +} + +u32 dComIfGp_particle_set( + u32 param_0, u16 param_1, const cXyz* i_pos, const csXyz* param_3, const cXyz* param_4) { + return dComIfGp_particle_set( + param_0, param_1, i_pos, param_3, param_4, 0xFF, NULL, -1, NULL, NULL, NULL); +} + +u32 dComIfGp_particle_setColor(u32 param_0, u16 param_1, const cXyz* i_pos, + const dKy_tevstr_c* param_3, const GXColor* param_4, const GXColor* param_5, f32 param_6, + u8 param_7, const csXyz* param_8, const cXyz* param_9, dPa_levelEcallBack* param_10, + s8 param_11, const cXyz* param_12) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_0, param_1, i_pos, param_3, + param_8, param_9, param_7, param_10, param_11, param_4, param_5, param_12, param_6); +} + +JPABaseEmitter* dComIfGp_particle_setColor(u16 param_0, const cXyz* i_pos, + const dKy_tevstr_c* param_2, const GXColor* param_3, const GXColor* param_4, f32 param_5, + u8 param_6, const csXyz* param_7, const cXyz* param_8, dPa_levelEcallBack* param_9, s8 param_10, + const cXyz* param_11) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_0, i_pos, param_2, param_7, + param_8, param_6, param_9, param_10, param_3, param_4, param_11, param_5); +} + +JPABaseEmitter* dComIfGp_particle_setColor(u16 param_0, const cXyz* i_pos, + const dKy_tevstr_c* param_2, const GXColor* param_3, const GXColor* param_4, f32 param_5, + u8 param_6) { + return dComIfGp_particle_setColor( + param_0, i_pos, param_2, param_3, param_4, param_5, param_6, NULL, NULL, NULL, -1, NULL); +} + +u32 dComIfGp_particle_getHeapSize() { + return g_dComIfG_gameInfo.play.getParticle()->getHeapSize(); +} + +u32 dComIfGp_particle_getSceneHeapSize() { + return g_dComIfG_gameInfo.play.getParticle()->getSceneHeapSize(); +} + +int dComIfGp_particle_getEmitterNum() { + return g_dComIfG_gameInfo.play.getParticle()->getEmitterNum(); +} + +int dComIfGp_particle_getParticleNum() { + return g_dComIfG_gameInfo.play.getParticle()->getParticleNum(); +} + +dSmplMdl_draw_c* dComIfGp_getSimpleModel() { + return g_dComIfG_gameInfo.play.getSimpleModel(); +} + +int dComIfGp_getWindowNum() { + return g_dComIfG_gameInfo.play.getWindowNum(); +} + +void dComIfGp_setWindowNum(int num) { + g_dComIfG_gameInfo.play.setWindowNum(num); +} + +s8 dComIfGp_getLayerOld() { + return g_dComIfG_gameInfo.play.getLayerOld(); +} + +s32 dComIfGp_checkStatus(u16 flags) { + return g_dComIfG_gameInfo.play.checkStatus(flags); +} + +void dComIfGp_setStatus(u16 status) { + g_dComIfG_gameInfo.play.setStatus(status); +} + +void dComIfGp_onStatus(u16 i_status) { + g_dComIfG_gameInfo.play.onStatus(i_status); +} + +dDlst_window_c* dComIfGp_getWindow(int i) { + return g_dComIfG_gameInfo.play.getWindow(i); +} + +void dComIfGp_setWindow(u8 i, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, + f32 param_6, int camID, int mode) { + g_dComIfG_gameInfo.play.setWindow( + i, param_1, param_2, param_3, param_4, param_5, param_6, camID, mode); +} + +camera_process_class* dComIfGp_getCamera(int idx) { + return (camera_process_class*)g_dComIfG_gameInfo.play.getCamera(idx); +} + +void dComIfGp_setCamera(int i, camera_class* cam) { + g_dComIfG_gameInfo.play.setCamera(i, cam); +} + +int dComIfGp_getCameraWinID(int idx) { + return g_dComIfG_gameInfo.play.getCameraWinID(idx); +} + +int dComIfGp_getCameraPlayer1ID(int idx) { + return g_dComIfG_gameInfo.play.getCameraPlayer1ID(idx); +} + +int dComIfGp_getCameraPlayer2ID(int idx) { + return g_dComIfG_gameInfo.play.getCameraPlayer2ID(idx); +} + +u32 dComIfGp_getCameraAttentionStatus(int i_no) { + return g_dComIfG_gameInfo.play.getCameraAttentionStatus(i_no); +} + +BOOL dComIfGp_checkCameraAttentionStatus(int i, u32 flag) { + return g_dComIfG_gameInfo.play.checkCameraAttentionStatus(i, flag); +} + +void dComIfGp_onCameraAttentionStatus(int i, u32 flag) { + g_dComIfG_gameInfo.play.onCameraAttentionStatus(i, flag); +} + +void dComIfGp_offCameraAttentionStatus(int i, u32 flag) { + g_dComIfG_gameInfo.play.offCameraAttentionStatus(i, flag); +} + +void dComIfGp_setCameraInfo( + int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4) { + g_dComIfG_gameInfo.play.setCameraInfo(camIdx, p_cam, param_2, param_3, param_4); +} + +f32 dComIfGp_getCameraZoomScale(int i_no) { + return g_dComIfG_gameInfo.play.getCameraZoomScale(i_no); +} + +void dComIfGp_setCameraZoomScale(int i_no, f32 i_scale) { + g_dComIfG_gameInfo.play.setCameraZoomScale(i_no, i_scale); +} + +f32 dComIfGp_getCameraZoomForcus(int i_no) { + return g_dComIfG_gameInfo.play.getCameraZoomForcus(i_no); +} + +void dComIfGp_setCameraZoomForcus(int i_no, f32 i_focus) { + g_dComIfG_gameInfo.play.setCameraZoomForcus(i_no, i_focus); +} + +const char* dComIfGp_getCameraParamFileName(int i) { + return g_dComIfG_gameInfo.play.getCameraParamFileName(i); +} + +void dComIfGp_setCameraParamFileName(int i, char* name) { + g_dComIfG_gameInfo.play.setCameraParamFileName(i, name); +} + +void dComIfGp_saveCameraPosition(int i, cXyz* i_pos, cXyz* i_target, f32 i_fovy, s16 i_bank) { + g_dComIfG_gameInfo.play.saveCameraPosition(i, i_pos, i_target, i_fovy, i_bank); +} + +void dComIfGp_loadCameraPosition(int i, cXyz* o_pos, cXyz* o_target, f32* o_fovy, s16* o_bank) { + g_dComIfG_gameInfo.play.loadCameraPosition(i, o_pos, o_target, o_fovy, o_bank); +} + +fopAc_ac_c* dComIfGp_getPlayer(int idx) { + return g_dComIfG_gameInfo.play.getPlayer(idx); +} + +void dComIfGp_setPlayer(int i, fopAc_ac_c* player) { + g_dComIfG_gameInfo.play.setPlayer(i, player); +} + +int dComIfGp_getPlayerCameraID(int idx) { + return g_dComIfG_gameInfo.play.getPlayerCameraID(idx); +} + +void dComIfGp_setPlayerInfo(int plyrIdx, fopAc_ac_c* ptr, int camIdx) { + g_dComIfG_gameInfo.play.setPlayerInfo(plyrIdx, ptr, camIdx); +} + +daPy_py_c* dComIfGp_getLinkPlayer() { + return (daPy_py_c*)g_dComIfG_gameInfo.play.getPlayerPtr(LINK_PTR); +} + +daHorse_c* dComIfGp_getHorseActor() { + return (daHorse_c*)g_dComIfG_gameInfo.play.getPlayerPtr(HORSE_PTR); +} + +void dComIfGp_setLinkPlayer(fopAc_ac_c* ptr) { + g_dComIfG_gameInfo.play.setPlayerPtr(0, ptr); +} + +void dComIfGp_setHorseActor(fopAc_ac_c* i_horse) { + g_dComIfG_gameInfo.play.setPlayerPtr(1, i_horse); +} + +void dComIfGp_setPlayerPtr(int i, fopAc_ac_c* ptr) { + g_dComIfG_gameInfo.play.setPlayerPtr(i, ptr); +} + +dMsgObject_c* dComIfGp_getMsgObjectClass() { + return g_dComIfG_gameInfo.play.getMsgObjectClass(); +} + +void dComIfGp_setMsgObjectClass(dMsgObject_c* obj) { + return g_dComIfG_gameInfo.play.setMsgObjectClass(obj); +} + +f32 dComIfGp_getItemLifeCount() { + return g_dComIfG_gameInfo.play.getItemLifeCount(); +} + +u8 dComIfGp_getItemLifeCountType() { + return g_dComIfG_gameInfo.play.getItemLifeCountType(); +} + +void dComIfGp_setItemLifeCount(f32 amount, u8 type) { + g_dComIfG_gameInfo.play.setItemLifeCount(amount, type); +} + +void dComIfGp_clearItemLifeCount() { + g_dComIfG_gameInfo.play.clearItemLifeCount(); +} + +s32 dComIfGp_getItemRupeeCount() { + return g_dComIfG_gameInfo.play.getItemRupeeCount(); +} + +void dComIfGp_setItemRupeeCount(s32 amount) { + g_dComIfG_gameInfo.play.setItemRupeeCount(amount); +} + +void dComIfGp_clearItemRupeeCount() { + g_dComIfG_gameInfo.play.clearItemRupeeCount(); +} + +s16 dComIfGp_getItemKeyNumCount() { + return g_dComIfG_gameInfo.play.getItemKeyNumCount(); +} + +void dComIfGp_setItemKeyNumCount(s16 count) { + g_dComIfG_gameInfo.play.setItemKeyNumCount(count); +} + +void dComIfGp_clearItemKeyNumCount() { + g_dComIfG_gameInfo.play.clearItemKeyNumCount(); +} + +s16 dComIfGp_getItemMaxLifeCount() { + return g_dComIfG_gameInfo.play.getItemMaxLifeCount(); +} + +void dComIfGp_setItemMaxLifeCount(s16 count) { + g_dComIfG_gameInfo.play.setItemMaxLifeCount(count); +} + +void dComIfGp_clearItemMaxLifeCount() { + g_dComIfG_gameInfo.play.clearItemMaxLifeCount(); +} + +void dComIfGp_setItemMagicCount(s16 count) { + g_dComIfG_gameInfo.play.setItemMagicCount(count); +} + +void dComIfGp_setItemNowMagic(s16 magic) { + g_dComIfG_gameInfo.play.setItemNowMagic(magic); +} + +void dComIfGp_setItemMaxMagicCount(s16 count) { + g_dComIfG_gameInfo.play.setItemMaxMagicCount(count); +} + +s32 dComIfGp_getItemOilCount() { + return g_dComIfG_gameInfo.play.getItemOilCount(); +} + +void dComIfGp_setItemOilCount(s32 oil) { + g_dComIfG_gameInfo.play.setItemOilCount(oil); +} + +void dComIfGp_setItemMaxOilCount(s32 oil) { + g_dComIfG_gameInfo.play.setItemMaxOilCount(oil); +} + +void dComIfGp_clearItemOilCount() { + g_dComIfG_gameInfo.play.clearItemOilCount(); +} + +s32 dComIfGp_getItemNowOil() { + return g_dComIfG_gameInfo.play.getItemNowOil(); +} + +void dComIfGp_setItemNowOil(s32 oil) { + g_dComIfG_gameInfo.play.setItemNowOil(oil); +} + +s32 dComIfGp_getItemMaxOilCount() { + return g_dComIfG_gameInfo.play.getItemMaxOilCount(); +} + +void dComIfGp_clearItemMaxOilCount() { + g_dComIfG_gameInfo.play.clearItemMaxOilCount(); +} + +int dComIfGp_getOxygen() { + return g_dComIfG_gameInfo.play.getOxygen(); +} + +void dComIfGp_setOxygen(s32 oxygen) { + g_dComIfG_gameInfo.play.setOxygen(oxygen); +} + +int dComIfGp_getNowOxygen() { + return g_dComIfG_gameInfo.play.getNowOxygen(); +} + +void dComIfGp_setNowOxygen(s32 oxygen) { + g_dComIfG_gameInfo.play.setNowOxygen(oxygen); +} + +s32 dComIfGp_getMaxOxygen() { + return g_dComIfG_gameInfo.play.getMaxOxygen(); +} + +void dComIfGp_setMaxOxygen(s32 i_oxygen) { + g_dComIfG_gameInfo.play.setMaxOxygen(i_oxygen); +} + +s32 dComIfGp_getOxygenCount() { + return g_dComIfG_gameInfo.play.getOxygenCount(); +} + +void dComIfGp_setOxygenCount(s32 oxygen) { + g_dComIfG_gameInfo.play.setOxygenCount(oxygen); +} + +void dComIfGp_clearOxygenCount() { + g_dComIfG_gameInfo.play.clearOxygenCount(); +} + +void dComIfGp_setMaxOxygenCount(s32 oxygen) { + g_dComIfG_gameInfo.play.setMaxOxygenCount(oxygen); +} + +s32 dComIfGp_getMaxOxygenCount() { + return g_dComIfG_gameInfo.play.getMaxOxygenCount(); +} + +void dComIfGp_clearMaxOxygenCount() { + g_dComIfG_gameInfo.play.clearMaxOxygenCount(); +} + +s16 dComIfGp_getItemArrowNumCount() { + return g_dComIfG_gameInfo.play.getItemArrowNumCount(); +} + +void dComIfGp_setItemArrowNumCount(s16 count) { + g_dComIfG_gameInfo.play.setItemArrowNumCount(count); +} + +void dComIfGp_clearItemArrowNumCount() { + g_dComIfG_gameInfo.play.clearItemArrowNumCount(); +} + +s16 dComIfGp_getItemPachinkoNumCount() { + return g_dComIfG_gameInfo.play.getItemPachinkoNumCount(); +} + +void dComIfGp_setItemPachinkoNumCount(s16 count) { + g_dComIfG_gameInfo.play.setItemPachinkoNumCount(count); +} + +void dComIfGp_clearItemPachinkoNumCount() { + g_dComIfG_gameInfo.play.clearItemPachinkoNumCount(); +} + +s16 dComIfGp_getItemMaxArrowNumCount() { + return g_dComIfG_gameInfo.play.getItemMaxArrowNumCount(); +} + +int dComIfGp_getMessageCountNumber() { + return g_dComIfG_gameInfo.play.getMessageCountNumber(); +} + +void dComIfGp_setMessageCountNumber(s32 number) { + g_dComIfG_gameInfo.play.setMessageCountNumber(number); +} + +u16 dComIfGp_getItemNowLife() { + return g_dComIfG_gameInfo.play.getItemNowLife(); +} + +void dComIfGp_setItemNowLife(u16 life) { + g_dComIfG_gameInfo.play.setItemNowLife(life); +} + +u8 dComIfGp_getMesgStatus() { + return g_dComIfG_gameInfo.play.getMesgStatus(); +} + +u8 dComIfGp_getRStatus() { + return g_dComIfG_gameInfo.play.getRStatus(); +} + +bool dComIfGp_isRSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isRSetFlag(flag); +} + +void dComIfGp_setRStatus(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setRStatus(status, flag); +} + +u8 dComIfGp_getRStatusForce() { + return g_dComIfG_gameInfo.play.getRStatusForce(); +} + +u8 dComIfGp_getRSetFlagForce() { + return g_dComIfG_gameInfo.play.getRSetFlagForce(); +} + +void dComIfGp_setRStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setRStatusForce(status, flag); +} + +u8 dComIfGp_getAStatus() { + return g_dComIfG_gameInfo.play.getAStatus(); +} + +bool dComIfGp_isASetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isASetFlag(flag); +} + +void dComIfGp_setAStatus(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setAStatus(status, flag); +} + +u8 dComIfGp_getAStatusForce() { + return g_dComIfG_gameInfo.play.getAStatusForce(); +} + +u8 dComIfGp_getASetFlagForce() { + return g_dComIfG_gameInfo.play.getASetFlagForce(); +} + +void dComIfGp_setAStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setAStatusForce(status, flag); +} + +u8 dComIfGp_getNunStatus() { + return g_dComIfG_gameInfo.play.getNunStatus(); +} + +bool dComIfGp_isNunSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isNunSetFlag(flag); +} + +void dComIfGp_setNunStatus(u8 status, u8 param_1, u8 flag) { + g_dComIfG_gameInfo.play.setNunStatus(status, param_1, flag); +} + +u8 dComIfGp_getBottleStatus() { + return g_dComIfG_gameInfo.play.getBottleStatus(); +} + +bool dComIfGp_isBottleSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isBottleSetFlag(flag); +} + +void dComIfGp_setBottleStatus(u8 param_0, u8 param_1) { + g_dComIfG_gameInfo.play.setBottleStatus(param_0, param_1); +} + +u8 dComIfGp_getBottleStatusForce() { + return g_dComIfG_gameInfo.play.getBottleStatusForce(); +} + +u8 dComIfGp_getBottleSetFlagForce() { + return g_dComIfG_gameInfo.play.getBottleSetFlagForce(); +} + +void dComIfGp_setBottleStatusForce(u8 param_0, u8 param_1) { + g_dComIfG_gameInfo.play.setBottleStatusForce(param_0, param_1); +} + +u8 dComIfGp_getRemoConStatus() { + return g_dComIfG_gameInfo.play.getRemoConStatus(); +} + +bool dComIfGp_isRemoConSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isRemoConSetFlag(flag); +} + +void dComIfGp_setRemoConStatus(u8 status, u8 param_1, u8 flag) { + g_dComIfG_gameInfo.play.setRemoConStatus(status, param_1, flag); +} + +u8 dComIfGp_getDoStatus() { + return g_dComIfG_gameInfo.play.getDoStatus(); +} + +bool dComIfGp_isDoSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isDoSetFlag(flag); +} + +void dComIfGp_setDoStatus(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setDoStatus(status, flag); +} + +u8 dComIfGp_getDoStatusForce() { + return g_dComIfG_gameInfo.play.getDoStatusForce(); +} + +u8 dComIfGp_getDoSetFlagForce() { + return g_dComIfG_gameInfo.play.getDoSetFlagForce(); +} + +void dComIfGp_setDoStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setDoStatusForce(status, flag); +} + +u8 dComIfGp_get3DStatus() { + return g_dComIfG_gameInfo.play.get3DStatus(); +} + +u8 dComIfGp_get3DDirection() { + return g_dComIfG_gameInfo.play.get3DDirection(); +} + +bool dComIfGp_is3DSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.is3DSetFlag(flag); +} + +void dComIfGp_set3DStatus(u8 status, u8 direction, u8 flag) { + g_dComIfG_gameInfo.play.set3DStatus(status, direction, flag); +} + +u8 dComIfGp_get3DStatusForce() { + return g_dComIfG_gameInfo.play.get3DStatusForce(); +} + +u8 dComIfGp_get3DDirectionForce() { + return g_dComIfG_gameInfo.play.get3DDirectionForce(); +} + +u8 dComIfGp_get3DSetFlagForce() { + return g_dComIfG_gameInfo.play.get3DSetFlagForce(); +} + +void dComIfGp_set3DStatusForce(u8 status, u8 direction, u8 flag) { + g_dComIfG_gameInfo.play.set3DStatusForce(status, direction, flag); +} + +u8 dComIfGp_getCStickStatus() { + return g_dComIfG_gameInfo.play.getCStickStatus(); +} + +u8 dComIfGp_getCStickDirection() { + return g_dComIfG_gameInfo.play.getCStickDirection(); +} + +bool dComIfGp_isCStickSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isCStickSetFlag(flag); +} + +void dComIfGp_setCStickStatus(u8 status, u8 param_1, u8 flag) { + g_dComIfG_gameInfo.play.setCStickStatus(status, param_1, flag); +} + +u8 dComIfGp_getCStickStatusForce() { + return g_dComIfG_gameInfo.play.getCStickStatusForce(); +} + +u8 dComIfGp_getCStickDirectionForce() { + return g_dComIfG_gameInfo.play.getCStickDirectionForce(); +} + +u8 dComIfGp_getCStickSetFlagForce() { + return g_dComIfG_gameInfo.play.getCStickSetFlagForce(); +} + +void dComIfGp_setCStickStatusForce(u8 status, u8 param_1, u8 flag) { + g_dComIfG_gameInfo.play.setCStickStatusForce(status, param_1, flag); +} + +u8 dComIfGp_getSButtonStatus() { + return g_dComIfG_gameInfo.play.getSButtonStatus(); +} + +bool dComIfGp_isSButtonSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isSButtonSetFlag(flag); +} + +void dComIfGp_setSButtonStatus(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setSButtonStatus(status, flag); +} + +u8 dComIfGp_getSButtonStatusForce() { + return g_dComIfG_gameInfo.play.getSButtonStatusForce(); +} + +u8 dComIfGp_getSButtonSetFlagForce() { + return g_dComIfG_gameInfo.play.getSButtonSetFlagForce(); +} + +void dComIfGp_setSButtonStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setSButtonStatusForce(status, flag); +} + +u8 dComIfGp_getZStatus() { + return g_dComIfG_gameInfo.play.getZStatus(); +} + +bool dComIfGp_isZSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isZSetFlag(flag); +} + +void dComIfGp_setZStatus(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setZStatus(status, flag); +} + +u8 dComIfGp_getZStatusForce() { + return g_dComIfG_gameInfo.play.getZStatusForce(); +} + +u8 dComIfGp_getZSetFlagForce() { + return g_dComIfG_gameInfo.play.getZSetFlagForce(); +} + +void dComIfGp_setZStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setZStatusForce(status, flag); +} + +u8 dComIfGp_getXStatus() { + return g_dComIfG_gameInfo.play.getXStatus(); +} + +bool dComIfGp_isXSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isXSetFlag(flag); +} + +void dComIfGp_setXStatus(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setXStatus(status, flag); +} + +u8 dComIfGp_getXStatusForce() { + return g_dComIfG_gameInfo.play.getXStatusForce(); +} + +u8 dComIfGp_getXSetFlagForce() { + return g_dComIfG_gameInfo.play.getXSetFlagForce(); +} + +void dComIfGp_setXStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setXStatusForce(status, flag); +} + +u8 dComIfGp_getYStatus() { + return g_dComIfG_gameInfo.play.getYStatus(); +} + +bool dComIfGp_isYSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isYSetFlag(flag); +} + +void dComIfGp_setYStatus(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setYStatus(status, flag); +} + +u8 dComIfGp_getYStatusForce() { + return g_dComIfG_gameInfo.play.getYStatusForce(); +} + +u8 dComIfGp_getYSetFlagForce() { + return g_dComIfG_gameInfo.play.getYSetFlagForce(); +} + +void dComIfGp_setYStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setYStatusForce(status, flag); +} + +u8 dComIfGp_getNunZStatus() { + return g_dComIfG_gameInfo.play.getNunZStatus(); +} + +bool dComIfGp_isNunZSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isNunZSetFlag(flag); +} + +void dComIfGp_setNunZStatus(u8 param_0, u8 param_1) { + g_dComIfG_gameInfo.play.setNunZStatus(param_0, param_1); +} + +u8 dComIfGp_getNunCStatus() { + return g_dComIfG_gameInfo.play.getNunCStatus(); +} + +bool dComIfGp_isNunCSetFlag(u8 flag) { + return g_dComIfG_gameInfo.play.isNunCSetFlag(flag); +} + +void dComIfGp_setNunCStatus(u8 param_0, u8 param_1) { + g_dComIfG_gameInfo.play.setNunCStatus(param_0, param_1); +} + +void dComIfGp_setSelectEquipClothes(u8 i_clothNo) { + g_dComIfG_gameInfo.play.setSelectEquip(COLLECT_CLOTHING, i_clothNo); +} + +void dComIfGp_setSelectEquipSword(u8 i_swordNo) { + g_dComIfG_gameInfo.play.setSelectEquip(COLLECT_SWORD, i_swordNo); +} + +void dComIfGp_setSelectEquipShield(u8 i_shieldNo) { + g_dComIfG_gameInfo.play.setSelectEquip(COLLECT_SHIELD, i_shieldNo); +} + +u8 dComIfGp_getMesgAnimeAttrInfo() { + return g_dComIfG_gameInfo.play.getBaseAnimeID(); +} + +void dComIfGp_setMesgAnimeAttrInfo(u8 param_1) { + g_dComIfG_gameInfo.play.setBaseAnimeID(param_1); +} + +void dComIfGp_clearMesgAnimeAttrInfo() { + g_dComIfG_gameInfo.play.clearBaseAnimeID(); +} + +u8 dComIfGp_getMesgFaceAnimeAttrInfo() { + return g_dComIfG_gameInfo.play.getFaceAnimeID(); +} + +void dComIfGp_setMesgFaceAnimeAttrInfo(u8 id) { + g_dComIfG_gameInfo.play.setFaceAnimeID(id); +} + +void dComIfGp_clearMesgFaceAnimeAttrInfo() { + g_dComIfG_gameInfo.play.clearFaceAnimeID(); +} + +void dComIfGp_clearMesgAnimeTagInfo() { + g_dComIfG_gameInfo.play.clearNowAnimeID(); +} + +void dComIfGp_setItem(u8 slot, u8 i_no) { + g_dComIfG_gameInfo.play.setItem(slot, i_no); +} + +u8 dComIfGp_getAdvanceDirection() { + return g_dComIfG_gameInfo.play.getDirection(); +} + +void dComIfGp_setAdvanceDirection(u8 i_dir) { + g_dComIfG_gameInfo.play.setDirection(i_dir); +} + +u8 dComIfGp_checkMesgCancelButton() { + return g_dComIfG_gameInfo.play.checkMesgCancelButton(); +} + +void dComIfGp_setMesgCancelButton(u8 button) { + g_dComIfG_gameInfo.play.setMesgCancelButton(button); +} + +u8 dComIfGp_getGameoverStatus() { + return g_dComIfG_gameInfo.play.getGameoverStatus(); +} + +void dComIfGp_setGameoverStatus(u8 i_status) { + return g_dComIfG_gameInfo.play.setGameoverStatus(i_status); +} + +u8 dComIfGp_isHeapLockFlag() { + return g_dComIfG_gameInfo.play.isHeapLockFlag(); +} + +u8 dComIfGp_getSubHeapLockFlag(int idx) { + return g_dComIfG_gameInfo.play.getSubHeapLockFlag(idx); +} + +void dComIfGp_setSubHeapLockFlag(int idx, u8 status) { + g_dComIfG_gameInfo.play.setSubHeapLockFlag(idx, status); +} + +u8 dComIfGp_getNeedLightDropNum() { + return g_dComIfG_gameInfo.play.getNeedLightDropNum(); +} + +void dComIfGp_setNeedLightDropNum(u8 i_num) { + g_dComIfG_gameInfo.play.setNeedLightDropNum(i_num); +} + +u8 dComIfGp_checkMesgBgm() { + return g_dComIfG_gameInfo.play.checkMesgBgm(); +} + +void dComIfGp_setMesgBgmOff() { + g_dComIfG_gameInfo.play.setMesgBgm(0); +} + +void dComIfGp_setMesgBgmOn() { + g_dComIfG_gameInfo.play.setMesgBgm(1); +} + +u8 dComIfGp_isPauseFlag() { + return g_dComIfG_gameInfo.play.isPauseFlag(); +} + +void dComIfGp_offPauseFlag() { + g_dComIfG_gameInfo.play.offPauseFlag(); +} + +void dComIfGp_onPauseFlag() { + g_dComIfG_gameInfo.play.onPauseFlag(); +} + +u8 dComIfGp_getOxygenShowFlag() { + return g_dComIfG_gameInfo.play.getOxygenShowFlag(); +} + +void dComIfGp_offOxygenShowFlag() { + g_dComIfG_gameInfo.play.setOxygenShowFlag(0); +} + +void dComIfGp_onOxygenShowFlag() { + g_dComIfG_gameInfo.play.setOxygenShowFlag(1); +} + +u8 dComIfGp_2dShowCheck() { + return g_dComIfG_gameInfo.play.show2dCheck(); +} + +void dComIfGp_2dShowOn() { + g_dComIfG_gameInfo.play.show2dOn(); +} + +void dComIfGp_2dShowOff() { + g_dComIfG_gameInfo.play.show2dOff(); +} + +JKRExpHeap* dComIfGp_getExpHeap2D() { + return g_dComIfG_gameInfo.play.getExpHeap2D(); +} + +void dComIfGp_setExpHeap2D(void* heap) { + g_dComIfG_gameInfo.play.setExpHeap2D(heap); +} + +JKRExpHeap* dComIfGp_getSubExpHeap2D(int idx) { + return g_dComIfG_gameInfo.play.getSubExpHeap2D(idx); +} + +void dComIfGp_setSubExpHeap2D(int idx, void* heap) { + g_dComIfG_gameInfo.play.setSubExpHeap2D(idx, heap); +} + +JKRExpHeap* dComIfGp_getMsgExpHeap() { + return g_dComIfG_gameInfo.play.getMsgExpHeap(); +} + +void dComIfGp_setMsgExpHeap(void* heap) { + g_dComIfG_gameInfo.play.setMsgExpHeap(heap); +} + +dComIfG_MesgCamInfo_c* dComIfGp_getMesgCameraInfo() { + return g_dComIfG_gameInfo.play.getMesgCamInfo(); +} + +void dComIfGp_setMesgCameraTagInfo(int id) { + g_dComIfG_gameInfo.play.setMesgCamInfoID(id); +} + +void dComIfGp_clearMesgCameraTagInfo() { + g_dComIfG_gameInfo.play.clearMesgCamInfoID(); +} + +void dComIfGp_setMesgCameraAttrInfo(int param_1) { + g_dComIfG_gameInfo.play.setMesgCamInfoBasicID(param_1); +} + +void dComIfGp_clearMesgCameraAttrInfo() { + g_dComIfG_gameInfo.play.clearMesgCamInfoBasicID(); +} + +void dComIfGp_setMesgCameraInfoActor(fopAc_ac_c* param_1, fopAc_ac_c* param_2, fopAc_ac_c* param_3, + fopAc_ac_c* param_4, fopAc_ac_c* param_5, fopAc_ac_c* param_6, fopAc_ac_c* param_7, + fopAc_ac_c* param_8, fopAc_ac_c* param_9, fopAc_ac_c* param_10) + +{ + g_dComIfG_gameInfo.play.setMesgCamInfoActor( + param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9, param_10); +} + +u32 dComIfGp_checkPlayerStatus0(int param_0, u32 flag) { + return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 0, flag); +} + +u32 dComIfGp_checkPlayerStatus1(int param_0, u32 flag) { + return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 1, flag); +} + +void dComIfGp_setPlayerStatus0(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 0, flag); +} + +void dComIfGp_setPlayerStatus1(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 1, flag); +} + +void dComIfGp_clearPlayerStatus0(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 0, flag); +} + +void dComIfGp_clearPlayerStatus1(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 1, flag); +} + +void dComIfGp_setCurrentWindow(dDlst_window_c* i_window) { + g_dComIfG_gameInfo.play.setCurrentWindow(i_window); +} + +void dComIfGp_setCurrentView(view_class* i_view) { + g_dComIfG_gameInfo.play.setCurrentView(i_view); +} + +void dComIfGp_setCurrentViewport(view_port_class* i_viewport) { + g_dComIfG_gameInfo.play.setCurrentViewport(i_viewport); +} + +J2DGrafContext* dComIfGp_getCurrentGrafPort() { + return g_dComIfG_gameInfo.play.getCurrentGrafPort(); +} + +void dComIfGp_setCurrentGrafPort(J2DOrthoGraph* i_graf) { + g_dComIfG_gameInfo.play.setCurrentGrafPort(i_graf); +} + +void* dComIfGp_getItemTable() { + return g_dComIfG_gameInfo.play.getItemTable(); +} + +void dComIfGp_setItemTable(void* data) { + g_dComIfG_gameInfo.play.setItemTable(data); +} + +char* dComIfGp_getLastPlayStageName() { + return g_dComIfG_gameInfo.play.getLastPlayStageName(); +} + +void dComIfGp_setLastPlayStageName(char* name) { + g_dComIfG_gameInfo.play.setLastPlayStageName(name); +} + +void dComIfGp_init() { + g_dComIfG_gameInfo.play.init(); +} + +void dComIfGp_itemDataInit() { + g_dComIfG_gameInfo.play.itemInit(); +} + +void dComIfGp_setItemBombNumCount(u8 i_item, s16 count) { + g_dComIfG_gameInfo.play.setItemBombNumCount(i_item, count); +} + +s16 dComIfGp_getItemBombNumCount(u8 i_no) { + return g_dComIfG_gameInfo.play.getItemBombNumCount(i_no); +} + +void dComIfGp_clearItemBombNumCount(u8 i_no) { + g_dComIfG_gameInfo.play.clearItemBombNumCount(i_no); +} + +s16 dComIfGp_getItemMaxBombNumCount() { + return g_dComIfG_gameInfo.play.getItemMaxBombNumCount(dItemNo_NORMAL_BOMB_e); +} + +void dComIfGp_setNowVibration(u8 status) { + g_dComIfG_gameInfo.play.setNowVibration(status); +} + +u32 dComIfGp_getNowVibration() { + return g_dComIfG_gameInfo.play.getNowVibration(); +} + +void dComIfGp_particle_create() { + g_dComIfG_gameInfo.play.createParticle(); +} + +void dComIfGp_createSimpleModel() { + g_dComIfG_gameInfo.play.createSimpleModel(); +} + +void dComIfGp_deleteSimpleModel() { + g_dComIfG_gameInfo.play.deleteSimpleModel(); +} + +void dComIfGp_drawSimpleModel() { + g_dComIfG_gameInfo.play.drawSimpleModel(); +} + +int dComIfGp_addSimpleModel(J3DModelData* i_modelData, int roomNo, u8 i_drawBG) { + return g_dComIfG_gameInfo.play.addSimpleModel(i_modelData, roomNo, i_drawBG); +} + +void dComIfGp_removeSimpleModel(J3DModelData* i_modelData, int roomNo) { + g_dComIfG_gameInfo.play.removeSimpleModel(i_modelData, roomNo); +} + +void dComIfGp_entrySimpleModel(J3DModel* model, int roomNo) { + g_dComIfG_gameInfo.play.entrySimpleModel(model, roomNo); +} + +void dComIfG_ct() { + g_dComIfG_gameInfo.ct(); +} + +dBgS& dComIfG_Bgsp() { + return g_dComIfG_gameInfo.play.mBgs; +} + +dCcS* dComIfG_Ccsp() { + return &g_dComIfG_gameInfo.play.mCcs; +} + +dCcS& dComIfG_Ccsp2() { + return g_dComIfG_gameInfo.play.mCcs; +} + +void dComIfG_setTimerNowTimeMs(int time) { + g_dComIfG_gameInfo.play.setTimerNowTimeMs(time); +} + +int dComIfG_getTimerNowTimeMs() { + return g_dComIfG_gameInfo.play.getTimerNowTimeMs(); +} + +void dComIfG_setTimerLimitTimeMs(int i_time) { + g_dComIfG_gameInfo.play.setTimerLimitTimeMs(i_time); +} + +int dComIfG_getTimerLimitTimeMs() { + return g_dComIfG_gameInfo.play.getTimerLimitTimeMs(); +} + +void dComIfG_setTimerMode(int mode) { + return g_dComIfG_gameInfo.play.setTimerMode(mode); +} + +int dComIfG_getTimerMode() { + return g_dComIfG_gameInfo.play.getTimerMode(); +} + +void dComIfG_setTimerType(u8 i_type) { + g_dComIfG_gameInfo.play.setTimerType(i_type); +} + +u8 dComIfG_getTimerType() { + return g_dComIfG_gameInfo.play.getTimerType(); +} + +void dComIfG_setTimerPtr(dTimer_c* i_ptr) { + g_dComIfG_gameInfo.play.setTimerPtr(i_ptr); +} + +dTimer_c* dComIfG_getTimerPtr() { + return g_dComIfG_gameInfo.play.getTimerPtr(); +} + +/** + * Attempts to add a new Object Resource Archive (*.arc) into the Resource Control. + * @param i_arcName Name of archive to be added + * @param i_mountDirection The direction to mount the archive. mDoDvd_MOUNT_DIRECTION_HEAD or + * mDoDvd_MOUNT_DIRECTION_TAIL + * @param i_heap Pointer to heap to load resources into + * @return TRUE if successful, FALSE otherwise + */ +int dComIfG_setObjectRes(const char* i_arcName, u8 i_mountDirection, JKRHeap* i_heap) { + return g_dComIfG_gameInfo.mResControl.setObjectRes(i_arcName, i_mountDirection, i_heap); +} + +int dComIfG_setObjectRes( + const char* i_arcName, void* i_archiveRes, u32 i_bufferSize, JKRHeap* i_heap) { + UNUSED(i_heap); + return g_dComIfG_gameInfo.mResControl.setObjectRes(i_arcName, i_archiveRes, i_bufferSize, NULL); +} + +/** + * Attempts to add a new Stage Resource Archive (*.arc) into the Resource Control. + * @param i_arcName Name of archive to be added + * @param i_heap Pointer to heap to load resources into + * @return TRUE if successful, FALSE otherwise + */ +int dComIfG_setStageRes(const char* i_arcName, JKRHeap* i_heap) { + return g_dComIfG_gameInfo.mResControl.setStageRes(i_arcName, i_heap); +} + +int dComIfG_syncObjectRes(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.syncObjectRes(i_arcName); +} + +int dComIfG_syncStageRes(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.syncStageRes(i_arcName); +} + +int dComIfG_deleteObjectResMain(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.deleteObjectRes(i_arcName); +} + +int dComIfG_deleteStageRes(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.deleteStageRes(i_arcName); +} + +void* dComIfG_getStageRes(const char* i_arcName, const char* i_resName) { + return g_dComIfG_gameInfo.mResControl.getStageRes(i_arcName, i_resName); +} + +void* dComIfG_getObjectRes(const char* i_arcName, const char* i_resName) { + return g_dComIfG_gameInfo.mResControl.getObjectRes(i_arcName, i_resName); +} + +void* dComIfG_getObjectRes(const char* i_arcName, int i_index) { + return g_dComIfG_gameInfo.mResControl.getObjectRes(i_arcName, i_index); +} + +void dComIfG_dumpResControl() { + g_dComIfG_gameInfo.mResControl.dump(); +} + +dRes_info_c* dComIfG_getObjectResInfo(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.getObjectResInfo(i_arcName); +} + +dRes_info_c* dComIfG_getStageResInfo(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.getStageResInfo(i_arcName); +} + +int dComIfG_syncAllObjectRes() { + return g_dComIfG_gameInfo.mResControl.syncAllObjectRes(); +} + +void* dComIfG_getObjectIDRes(const char* i_arcName, u16 i_resID) { + return g_dComIfG_gameInfo.mResControl.getObjectIDRes(i_arcName, i_resID); +} + +int dComIfG_getObjctResName2Index(const char* i_arcName, const char* i_resName) { + return g_dComIfG_gameInfo.mResControl.getObjectResName2Index(i_arcName, i_resName); +} + +u8 dComIfG_getBrightness() { + return g_dComIfG_gameInfo.mFadeBrightness; +} + +void dComIfG_setBrightness(u8 brightness) { + g_dComIfG_gameInfo.mFadeBrightness = brightness; +} + +BOOL dComIfG_isDebugMode() { + return g_dComIfG_gameInfo.mIsDebugMode; +} + +u32 dComIfG_getTrigB(u32 i_padNo) { + return mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_B; +} + +#if DEBUG +u32 dComIfG_getObjectAllSize() { + return g_dComIfG_gameInfo.mResControl.getObjectAllSize(); +} + +u32 dComIfG_getStageAllSize() { + return g_dComIfG_gameInfo.mResControl.getStageAllSize(); +} + +u32 dComIfG_getObjectSize(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.getObjectSize(i_arcName); +} + +u32 dComIfG_getStageSize(const char* i_arcName) { + return g_dComIfG_gameInfo.mResControl.getStageSize(i_arcName); +} + +void dComIfG_initStopwatch() { + OSInitStopwatch(&g_dComIfG_gameInfo.mStopwatch, "dComIfG"); +} +#endif + +int dComIfGd_setRealShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3, f32 param_4, + f32 param_5, dKy_tevstr_c* param_6) { + return g_dComIfG_gameInfo.drawlist.setRealShadow( + param_0, param_1, param_2, param_3, param_4, param_5, param_6); +} + +int dComIfGd_setSimpleShadow( + cXyz* pos, f32 param_1, f32 param_2, cXyz* param_3, s16 angle, f32 param_5, TGXTexObj* tex) { + return g_dComIfG_gameInfo.drawlist.setSimpleShadow( + pos, param_1, param_2, param_3, angle, param_5, tex); +} + +bool dComIfGd_addRealShadow(u32 key, J3DModel* model) { + return g_dComIfG_gameInfo.drawlist.addRealShadow(key, model); +} + +void dComIfGd_drawListItem3d() { + g_dComIfG_gameInfo.drawlist.drawOpaListItem3d(); + g_dComIfG_gameInfo.drawlist.drawXluListItem3d(); +} + +#if VERSION > VERSION_GCN_JPN +void dComIfGd_drawListCursor() { + g_dComIfG_gameInfo.drawlist.drawOpaListCursor(); + g_dComIfG_gameInfo.drawlist.drawXluListCursor(); +} +#endif + +void dComIfGd_reset() { + g_dComIfG_gameInfo.drawlist.reset(); +} + +void dComIfGd_set2DOpa(dDlst_base_c* dlst) { + g_dComIfG_gameInfo.drawlist.set2DOpa(dlst); +} + +void dComIfGd_set2DXlu(dDlst_base_c* dlst) { + g_dComIfG_gameInfo.drawlist.set2DXlu(dlst); +} + +void dComIfGd_set2DOpaTop(dDlst_base_c* dlst) { + g_dComIfG_gameInfo.drawlist.set2DOpaTop(dlst); +} + +void dComIfGd_setCopy2D(dDlst_base_c* dlst) { + g_dComIfG_gameInfo.drawlist.setCopy2D(dlst); +} + +view_class* dComIfGd_getView() { + return g_dComIfG_gameInfo.drawlist.getView(); +} + +Mtx44* dComIfGd_getProjViewMtx() { + return &(g_dComIfG_gameInfo.drawlist.getView()->projViewMtx); +} + +MtxP dComIfGd_getInvViewMtx() { + return g_dComIfG_gameInfo.drawlist.getView()->invViewMtx; +} + +view_port_class* dComIfGd_getViewport() { + return g_dComIfG_gameInfo.drawlist.getViewport(); +} + +MtxP dComIfGd_getViewRotMtx() { + return g_dComIfG_gameInfo.drawlist.getView()->viewMtxNoTrans; +} +MtxP dComIfGd_getViewMtx() { + return g_dComIfG_gameInfo.drawlist.getView()->viewMtx; +} + +J3DDrawBuffer* dComIfGd_getListFilter() { + return g_dComIfG_gameInfo.drawlist.getOpaListFilter(); +} + +J3DDrawBuffer* dComIfGd_getOpaListIndScreen() { + return g_dComIfG_gameInfo.drawlist.getOpaListP0(); +} + +J3DDrawBuffer* dComIfGd_getListPacket() { + return g_dComIfG_gameInfo.drawlist.getOpaListPacket(); +} + +void dComIfGd_setListSky() { + g_dComIfG_gameInfo.drawlist.setOpaListSky(); + g_dComIfG_gameInfo.drawlist.setXluListSky(); +} + +void dComIfGd_setListDark() { + g_dComIfG_gameInfo.drawlist.setOpaListDark(); + g_dComIfG_gameInfo.drawlist.setXluListDark(); +} + +void dComIfGd_setListInvisisble() { + g_dComIfG_gameInfo.drawlist.setOpaListInvisible(); + g_dComIfG_gameInfo.drawlist.setXluListInvisible(); +} + +void dComIfGd_setListDarkBG() { + g_dComIfG_gameInfo.drawlist.setOpaListDarkBG(); + g_dComIfG_gameInfo.drawlist.setXluListDarkBG(); +} + +void dComIfGd_setXluListDarkBG() { + g_dComIfG_gameInfo.drawlist.setXluListDarkBG(); +} + +void dComIfGd_setList() { + g_dComIfG_gameInfo.drawlist.setOpaList(); + g_dComIfG_gameInfo.drawlist.setXluList(); +} + +void dComIfGd_setListItem3D() { + g_dComIfG_gameInfo.drawlist.setOpaListItem3D(); + g_dComIfG_gameInfo.drawlist.setXluListItem3D(); +} + +void dComIfGd_setList3Dlast() { + g_dComIfG_gameInfo.drawlist.setOpaList3Dlast(); + g_dComIfG_gameInfo.drawlist.setXluList3Dlast(); +} + +void dComIfGd_setXluList2DScreen() { + g_dComIfG_gameInfo.drawlist.setXluList2DScreen(); +} + +void dComIfGd_setXluListBG() { + g_dComIfG_gameInfo.drawlist.setXluListBG(); +} + +void dComIfGd_setListBG() { + g_dComIfG_gameInfo.drawlist.setOpaListBG(); + g_dComIfG_gameInfo.drawlist.setXluListBG(); +} + +void dComIfGd_setListIndScreen() { + g_dComIfG_gameInfo.drawlist.setOpaListP0(); + g_dComIfG_gameInfo.drawlist.setXluListP0(); +} + +void dComIfGd_setListMiddle() { + g_dComIfG_gameInfo.drawlist.setOpaListMiddle(); + g_dComIfG_gameInfo.drawlist.setXluListMiddle(); +} + +void dComIfGd_setListZxlu() { + g_dComIfG_gameInfo.drawlist.setOpaListZxlu(); + g_dComIfG_gameInfo.drawlist.setXluListZxlu(); +} + +J3DDrawBuffer* dComIfGd_getOpaList() { + return g_dComIfG_gameInfo.drawlist.getOpaList(); +} + +J3DDrawBuffer* dComIfGd_getOpaListBG() { + return g_dComIfG_gameInfo.drawlist.getOpaListBG(); +} + +J3DDrawBuffer* dComIfGd_getOpaListDark() { + return g_dComIfG_gameInfo.drawlist.getOpaListDark(); +} + +J3DDrawBuffer* dComIfGd_getXluListBG() { + return g_dComIfG_gameInfo.drawlist.getXluListBG(); +} + +void dComIfGd_setListFilter() { + g_dComIfG_gameInfo.drawlist.setOpaListFilter(); + g_dComIfG_gameInfo.drawlist.setXluListFilter(); +} + +void dComIfGd_init() { + g_dComIfG_gameInfo.drawlist.init(); +} + +void dComIfGd_peekZ(s16 param_0, s16 param_1, u32* param_2) { + g_dComIfG_gameInfo.drawlist.newPeekZdata(param_0, param_1, param_2); +} + +void dComIfGd_peekZdata() { + g_dComIfG_gameInfo.drawlist.peekZdata(); +} + +void dComIfGd_setView(view_class* view) { + g_dComIfG_gameInfo.drawlist.setView(view); +} + +void dComIfGd_setWindow(dDlst_window_c* window) { + g_dComIfG_gameInfo.drawlist.setWindow(window); +} + +void dComIfGd_setViewport(view_port_class* port) { + g_dComIfG_gameInfo.drawlist.setViewport(port); +} + +void dComIfGd_entryZSortListZxlu(J3DPacket* i_packet, cXyz& param_1) { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.entryZSortListZxlu(i_packet, param_1); +} + +void dComIfGd_entryZSortXluList(J3DPacket* i_packet, cXyz& param_1) { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.entryZSortXluList(i_packet, param_1); +} + +void dComIfGd_drawCopy2D() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawCopy2D(); +} + +void dComIfGd_drawOpaListSky() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListSky(); +} + +void dComIfGd_drawXluListSky() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluListSky(); +} + +void dComIfGd_drawOpaListBG() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListBG(); +} + +void dComIfGd_drawOpaListDarkBG() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListDarkBG(); +} + +void dComIfGd_drawOpaListMiddle() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListMiddle(); +} + +void dComIfGd_drawOpaList() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaList(); +} + +void dComIfGd_drawOpaListDark() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListDark(); +} + +void dComIfGd_drawOpaListPacket() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListPacket(); +} + +void dComIfGd_drawXluListBG() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluListBG(); +} + +void dComIfGd_drawXluListDarkBG() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluListDarkBG(); +} + +void dComIfGd_drawXluList() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluList(); +} + +void dComIfGd_drawXluListDark() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluListDark(); +} + +void dComIfGd_drawXluListZxlu() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluListZxlu(); +} + +void dComIfGd_drawXluList2DScreen() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluList2DScreen(); +} + +void dComIfGd_drawOpaList3Dlast() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaList3Dlast(); +} + +void dComIfGd_draw2DOpa() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.draw2DOpa(); +} + +void dComIfGd_draw2DOpaTop() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.draw2DOpaTop(); +} + +void dComIfGd_draw2DXlu() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.draw2DXlu(); +} + +void dComIfGd_drawOpaListFilter() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListFilter(); +} + +void dComIfGd_drawIndScreen() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawOpaListP0(); +} + +void dComIfGd_drawListZxlu() { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawXluListZxlu(); +} + +void dComIfGd_drawShadow(Mtx param_0) { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.drawShadow(param_0); +} + +void dComIfGd_imageDrawShadow(Mtx param_0) { + ZoneScoped; + g_dComIfG_gameInfo.drawlist.imageDrawShadow(param_0); +} + +void dComIfGd_set3DlineMat(mDoExt_3DlineMat_c* param_0) { + g_dComIfG_gameInfo.drawlist.set3DlineMat(param_0); +} + +void dComIfGd_set3DlineMatDark(mDoExt_3DlineMat_c* param_0) { + g_dComIfG_gameInfo.drawlist.set3DlineMatDark(param_0); +} + +#if PLATFORM_WII || VERSION == VERSION_SHIELD_DEBUG +void dComIfGd_setListCursor() { + g_dComIfG_gameInfo.drawlist.setOpaListCursor(); + g_dComIfG_gameInfo.drawlist.setXluListCursor(); +} +#endif + void dComIfGd_drawXluListInvisible() { ZoneScoped; if (!dusk::getSettings().game.disableWaterRefraction) { From c4f4712d0ec83fc7308d7ccf79a3f0dd588d8492 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sun, 23 Aug 2026 20:24:08 -0600 Subject: [PATCH 07/11] Minor svc/flow.hpp updates --- sdk/include/mods/svc/flow.hpp | 45 +++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/sdk/include/mods/svc/flow.hpp b/sdk/include/mods/svc/flow.hpp index 9687a6eebb..c7671f69a6 100644 --- a/sdk/include/mods/svc/flow.hpp +++ b/sdk/include/mods/svc/flow.hpp @@ -100,6 +100,7 @@ public: NodeRef next(uint16_t target) const; /* Set a branch node's result targets */ NodeRef results(std::initializer_list targets) const; + NodeRef results(std::span targets) const; uint16_t id() const { return mId; } operator uint16_t() const { return mId; } @@ -153,6 +154,35 @@ public: } return *this; } + GraphBuilder& patch_branch(uint16_t nodeIndex, FlowQueryId query, uint16_t parameter, + std::span targets) { + if (mResult != MOD_OK || targets.empty() || targets.size() > 0xff) { + if (mResult == MOD_OK) { + mResult = MOD_INVALID_ARGUMENT; + } + return *this; + } + uint16_t first = 0; + mResult = svc_flow->add_edges( + mod_ctx, mHandle, targets.data(), static_cast(targets.size()), &first); + if (mResult == MOD_OK) { + patch_node(nodeIndex, + branch(static_cast(targets.size()), query, parameter, first)); + } + return *this; + } + GraphBuilder& patch_event(uint16_t nodeIndex, FlowEventId eventId, + std::array params, uint16_t target) { + if (mResult != MOD_OK) { + return *this; + } + uint16_t edge = 0; + mResult = svc_flow->add_edges(mod_ctx, mHandle, &target, 1, &edge); + if (mResult == MOD_OK) { + patch_node(nodeIndex, event(eventId, edge, params)); + } + return *this; + } Graph commit() { for (const auto& node : mNodes) { @@ -232,7 +262,7 @@ private: } } - void set_results(uint16_t id, std::initializer_list targets) { + void set_results(uint16_t id, std::span targets) { if (mResult != MOD_OK) { return; } @@ -246,7 +276,7 @@ private: node->wired = true; uint16_t first = 0; mResult = svc_flow->add_edges( - mod_ctx, mHandle, targets.begin(), static_cast(targets.size()), &first); + mod_ctx, mHandle, targets.data(), static_cast(targets.size()), &first); if (mResult == MOD_OK) { node->data.bytes[1] = static_cast(targets.size()); write_bits(node->data.bytes + 6, first); @@ -266,6 +296,10 @@ inline NodeRef NodeRef::next(uint16_t target) const { } inline NodeRef NodeRef::results(std::initializer_list targets) const { + return results(std::span{targets.begin(), targets.size()}); +} + +inline NodeRef NodeRef::results(std::span targets) const { if (mBuilder != nullptr) { mBuilder->set_results(mId, targets); } @@ -368,6 +402,10 @@ public: [[nodiscard]] constexpr MessageStyle face_anim(uint8_t value) const { return set_u8(17, value); } + /* INF1 bytes 18-19, normally 0x0400. */ + [[nodiscard]] constexpr MessageStyle trailing_data(uint16_t value) const { + return set_u16(18, value); + } [[nodiscard]] constexpr const MessageEntryData& data() const { return mData; } private: @@ -432,6 +470,9 @@ public: MessageBuilder& camera_attr(uint8_t value) { return style(&MessageStyle::camera_attr, value); } MessageBuilder& talk_anim(uint8_t value) { return style(&MessageStyle::talk_anim, value); } MessageBuilder& face_anim(uint8_t value) { return style(&MessageStyle::face_anim, value); } + MessageBuilder& trailing_data(uint16_t value) { + return style(&MessageStyle::trailing_data, value); + } /* Content builder functions */ MessageBuilder& text(std::string_view value) { From e30e0fe062411f8dcc8b037ffb0bbf5c5f42aec4 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 14:14:03 -0600 Subject: [PATCH 08/11] Update symgen to v1.3.3 --- cmake/SymbolManifest.cmake | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/SymbolManifest.cmake b/cmake/SymbolManifest.cmake index 7ef57f7ced..48935acdf6 100644 --- a/cmake/SymbolManifest.cmake +++ b/cmake/SymbolManifest.cmake @@ -2,7 +2,7 @@ include_guard(GLOBAL) get_filename_component(_SYMBOL_MANIFEST_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) -set(_SYMGEN_VERSION "1.3.2") +set(_SYMGEN_VERSION "1.3.3") set(_SYMGEN_RELEASE_BASE_URL "https://github.com/encounter/symgen/releases/download/v${_SYMGEN_VERSION}") set(SYMGEN_PATH "" CACHE FILEPATH "Path to a symgen executable; empty downloads the pinned release") mark_as_advanced(SYMGEN_PATH) @@ -15,32 +15,32 @@ function(symgen_host_asset out_name out_hash) if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") if (_host_processor MATCHES "^(arm64|aarch64)$") set(_asset "symgen-macos-arm64") - set(_asset_hash "SHA256=0344838d1674df09c17c3eeddcf26eb89c333fdb85dfd78f68adc436070eccbe") + set(_asset_hash "SHA256=e8420df1160242c83bd0e5197efeeb25ceb9fecc69dbc82bdc4927476381e948") elseif (_host_processor MATCHES "^(x86_64|amd64)$") set(_asset "symgen-macos-x86_64") - set(_asset_hash "SHA256=ae0674f4a1e9d0dedfa02d35939ac28cdd229276b331c1f507df5df809cbec7e") + set(_asset_hash "SHA256=e51d13bbf0e982d1519f56850ff3c7b5910ca5a7095dd5a82cd8e59750e2d013") endif () elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") if (_host_processor MATCHES "^(aarch64|arm64)$") set(_asset "symgen-linux-aarch64") - set(_asset_hash "SHA256=af766de2bfaeb0a06f6d7bc17bb2510b4a9c40f44a56e49bc4a4b798a6223042") + set(_asset_hash "SHA256=331190dd21ecee12a52e857b7f90a8b3e0a114608173813f7df74a31cf783f70") elseif (_host_processor MATCHES "^(x86_64|amd64)$") set(_asset "symgen-linux-x86_64") - set(_asset_hash "SHA256=ebd62fb9623acc942b6295609e2306f85a73043b0a8a117f2072b761dd08e68f") + set(_asset_hash "SHA256=d727e0ba43242f92a92865af1b69c47aa9d81a0242c4570ce53b90e1ecd15e84") elseif (_host_processor MATCHES "^(i[3-6]86|x86)$") set(_asset "symgen-linux-i686") - set(_asset_hash "SHA256=07780a4513fd29726578efc4ff2d88736b22f407ed821b32a68e35ff1e9af5f4") + set(_asset_hash "SHA256=0c9f94d36b7fa46d15a199c9d0f1a633b73eb7d9c02621a6a76a676b83a135c7") endif () elseif (CMAKE_HOST_WIN32) if (_host_processor MATCHES "^(arm64|aarch64)$") set(_asset "symgen-windows-arm64.exe") - set(_asset_hash "SHA256=5bb22b4a4a9b5ad45646af411bfb09b8321a732ff3a077eb4c9de1feaef27d2b") + set(_asset_hash "SHA256=c699192957e2086ed68912ed39fa77858e1ae894476ab8b557711804cf2aa7cb") elseif (_host_processor MATCHES "^(x86_64|amd64)$") set(_asset "symgen-windows-x86_64.exe") - set(_asset_hash "SHA256=1d1ac087f991a96932d108969e15998becfec643e88f3e7d182ca97ebfc6a46f") + set(_asset_hash "SHA256=6d56a45617c75065ab7a3192d09ca52ff735baf5637b0899f446138d46acc310") elseif (_host_processor MATCHES "^(i[3-6]86|x86)$") set(_asset "symgen-windows-x86.exe") - set(_asset_hash "SHA256=c113f4cd05f813efe2b1878dbfcf44d6302aee3974271736e0036430b0cced78") + set(_asset_hash "SHA256=6cccc3a8d29e7525a4d1ade1dc4d89327b7c3002a604ab1c7decb43eea6fd4ab") endif () endif () From 705e7f058b303d439b938c808f5efb277353fc20 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 14:14:12 -0600 Subject: [PATCH 09/11] Un-inline d_meter2_info functions --- include/d/d_meter2_info.h | 146 +++++++++++ src/d/d_meter2_info.cpp | 539 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 685 insertions(+) diff --git a/include/d/d_meter2_info.h b/include/d/d_meter2_info.h index 410cf642b1..377f51c34b 100644 --- a/include/d/d_meter2_info.h +++ b/include/d/d_meter2_info.h @@ -328,6 +328,150 @@ void dMeter2Info_onWide2D(); void dMeter2Info_offWide2D(); #endif +#if TARGET_PC +DUSK_NOINLINE void dMeter2Info_Initialize(); +DUSK_NOINLINE dMeterMap_c* dMeter2Info_getMeterMapClass(); +DUSK_NOINLINE dMw_c* dMeter2Info_getMenuWindowClass(); +DUSK_NOINLINE void dMeter2Info_setWindowStatus(u8 i_status); +DUSK_NOINLINE CPaneMgr* dMeter2Info_getMeterItemPanePtr(s32 i_idx); +DUSK_NOINLINE void dMeter2Info_getString( + u32 i_stringID, TEXT_SPAN o_string, JMSMesgEntry_c* i_msgEntry); +DUSK_NOINLINE void dMeter2Info_getStringKanji( + u32 i_stringID, TEXT_SPAN o_string, JMSMesgEntry_c* i_msgEntry); +DUSK_NOINLINE void dMeter2Info_getStringKana( + u32 i_stringID, TEXT_SPAN o_string, JMSMesgEntry_c* i_msgEntry); +DUSK_NOINLINE f32 dMeter2Info_getStringLength( + JUTFont* i_font, f32 param_2, f32 param_3, char* i_string); +DUSK_NOINLINE f32 dMeter2Info_getStringLength(J2DTextBox* i_textbox, char* i_string); +DUSK_NOINLINE void dMeter2Info_setHotSpringTimer(u8 i_slotNo); +DUSK_NOINLINE u16 dMeter2Info_getOilGaugeBackUp(); +DUSK_NOINLINE void dMeter2Info_setOilGaugeBackUp(u16 param_1); +DUSK_NOINLINE void dMeter2Info_setSaveStageName(const char* i_stageName); +DUSK_NOINLINE u8 dMeter2Info_getInsectSelectType(); +DUSK_NOINLINE void dMeter2Info_setInsectSelectType(u8 i_type); +DUSK_NOINLINE u8 dMeter2Info_getWarpStatus(); +DUSK_NOINLINE void dMeter2Info_setWarpStatus(u8 i_status); +DUSK_NOINLINE int dMeter2Info_readItemTexture(u8 i_itemNo, void* i_texBuf1, J2DPicture* i_pic1, + void* i_texBuf2, J2DPicture* i_pic2, void* i_texBuf3, J2DPicture* i_pic3, void* i_texBuf4, + J2DPicture* i_pic4, int param_9); +DUSK_NOINLINE void dMeter2Info_setItemColor( + u8 i_itemNo, J2DPicture* i_pic1, J2DPicture* i_pic2, J2DPicture* i_pic3, J2DPicture* i_pic4); +DUSK_NOINLINE u8 dMeter2Info_getWarpRoomNo(); +DUSK_NOINLINE u8 dMeter2Info_getWarpPlayerNo(); +DUSK_NOINLINE cXyz& dMeter2Info_getWarpPos(); +DUSK_NOINLINE const char* dMeter2Info_getWarpStageName(); +DUSK_NOINLINE void dMeter2Info_setNowCount(u8 i_count); +DUSK_NOINLINE void dMeter2Info_setMaxCount(u8 i_count); +DUSK_NOINLINE BOOL dMeter2Info_isDirectUseItem(int param_0); +DUSK_NOINLINE bool dMeter2Info_isUseButton(int i_buttonBit); +DUSK_NOINLINE void dMeter2Info_setMeterMapClass(dMeterMap_c* i_map); +DUSK_NOINLINE void dMeter2Info_decHotSpringTimer(); +DUSK_NOINLINE void dMeter2Info_allUseButton(); +DUSK_NOINLINE void dMeter2Info_offUseButton(int i_buttonBit); +DUSK_NOINLINE void dMeter2Info_resetGameStatus(); +DUSK_NOINLINE void dMeter2Info_onGameStatus(int i_status); +DUSK_NOINLINE void dMeter2Info_setMapStatus(u8 i_status); +DUSK_NOINLINE u8 dMeter2Info_getMapStatus(); +DUSK_NOINLINE void dMeter2Info_setPauseStatus(u8 i_status); +DUSK_NOINLINE void dMeter2Info_resetPauseStatus(); +DUSK_NOINLINE u8 dMeter2Info_getPauseStatus(); +DUSK_NOINLINE bool dMeter2Info_isGameStatus(int i_status); +DUSK_NOINLINE bool dMeter2Info_isTouchKeyCheck(int i_status); +DUSK_NOINLINE void dMeter2Info_setMapKeyDirection(u16 i_direction); +DUSK_NOINLINE bool dMeter2Info_isSub2DStatus(int i_flag); +DUSK_NOINLINE void dMeter2Info_offMenuInForce(int i_flag); +DUSK_NOINLINE bool dMeter2Info_isMenuInForce(int i_flag); +DUSK_NOINLINE void dMeter2Info_setMenuWindowClass(dMw_c* i_menu); +DUSK_NOINLINE void dMeter2Info_resetWarpStatus(); +DUSK_NOINLINE u16 dMeter2Info_getMapKeyDirection(); +DUSK_NOINLINE u8 dMeter2Info_getWindowStatus(); +DUSK_NOINLINE void dMeter2Info_setMsgResource(void* i_res); +DUSK_NOINLINE void dMeter2Info_setStageMsgResource(void* i_res); +DUSK_NOINLINE void dMeter2Info_setMsgUnitResource(void* i_res); +DUSK_NOINLINE void* dMeter2Info_getMsgResource(); +DUSK_NOINLINE void* dMeter2Info_getStageMsgResource(); +DUSK_NOINLINE void* dMeter2Info_getMsgUnitResource(); +DUSK_NOINLINE u8 dMeter2Info_getLightDropGetFlag(int i_no); +DUSK_NOINLINE s32 dMeter2Info_getMeterStringType(); +DUSK_NOINLINE void dMeter2Info_setMeterClass(dMeter2_c* i_meter); +DUSK_NOINLINE void dMeter2Info_onLifeGaugeSE(); +DUSK_NOINLINE void dMeter2Info_offLifeGaugeSE(); +DUSK_NOINLINE u8 dMeter2Info_getLifeGaugeSE(); +DUSK_NOINLINE const char* dMeter2Info_getSaveStageName(); +DUSK_NOINLINE void dMeter2Info_onShopTalkFlag(); +DUSK_NOINLINE void dMeter2Info_setLightDropGetFlag(int i_no, u8 i_flag); +DUSK_NOINLINE u8 dMeter2Info_getRentalBombBag(); +DUSK_NOINLINE u8 dMeter2Info_getMiniGameItemSetFlag(); +DUSK_NOINLINE void dMeter2Info_setMiniGameItem(u8 i_minigameFlag); +DUSK_NOINLINE void dMeter2Info_resetMiniGameItem(bool i_saveItem); +DUSK_NOINLINE void dMeter2Info_setTableMapRegionNo(u8 i_regionNo); +DUSK_NOINLINE void dMeter2Info_setGoldWolfMapType(u8 i_mapType); +DUSK_NOINLINE void dMeter2Info_changeWater(u8 i_slotNo); +DUSK_NOINLINE void dMeter2Info_warpInProc(); +DUSK_NOINLINE void dMeter2Info_warpOutProc(); +DUSK_NOINLINE dMeter2_c* dMeter2Info_getMeterClass(); +DUSK_NOINLINE s16 dMeter2Info_getMsgKeyWaitTimer(); +DUSK_NOINLINE void dMeter2Info_onDirectUseItem(int param_0); +DUSK_NOINLINE void dMeter2Info_setFloatingFlow(u16 i_flowID, s16 i_msgTimer, bool i_wakuVisible); +DUSK_NOINLINE u8 dMeter2Info_getGameOverType(); +DUSK_NOINLINE void dMeter2Info_setGameOverType(u8 i_gameoverType); +DUSK_NOINLINE void dMeter2Info_setMsgKeyWaitTimer(s16 i_waitTimer); +DUSK_NOINLINE s32 dMeter2Info_getMsgTimeMs(); +DUSK_NOINLINE s32 dMeter2Info_getTimeMs(); +DUSK_NOINLINE void dMeter2Info_setMsgTimeMs(s32 i_msgTime); +DUSK_NOINLINE void dMeter2Info_setTimeMs(s32 i_time); +DUSK_NOINLINE u8 dMeter2Info_getNowCount(); +DUSK_NOINLINE u8 dMeter2Info_getMaxCount(); +DUSK_NOINLINE void dMeter2Info_setScopeZoomPointer(u8 param_0); +DUSK_NOINLINE void dMeter2Info_decMsgKeyWaitTimer(); +DUSK_NOINLINE bool dMeter2Info_isFloatingMessageVisible(); +DUSK_NOINLINE u8 dMeter2Info_getItemExplainWindowStatus(); +DUSK_NOINLINE void dMeter2Info_setItemExplainWindowStatus(u8 i_value); +DUSK_NOINLINE void dMeter2Info_resetDirectUseItem(); +DUSK_NOINLINE u16 dMeter2Info_getFloatingFlowID(); +DUSK_NOINLINE u8 dMeter2Info_getCollectCursorPosX(); +DUSK_NOINLINE u8 dMeter2Info_getCollectCursorPosY(); +DUSK_NOINLINE void dMeter2Info_setCollectCursorPosXY(u8 x, u8 y); +DUSK_NOINLINE void dMeter2Info_onBlinkButton(int i_flag); +DUSK_NOINLINE bool dMeter2Info_isFloatingMessageWakuVisible(); +DUSK_NOINLINE bool dMeter2Info_isBlinkButton(int i_flag); +DUSK_NOINLINE void dMeter2Info_resetBlinkButton(); +DUSK_NOINLINE void dMeter2Info_resetFloatingMessage(); +DUSK_NOINLINE s16 dMeter2Info_decFloatingMessageTimer(); +DUSK_NOINLINE s16 dMeter2Info_getFloatingMessageTimer(); +DUSK_NOINLINE u16 dMeter2Info_getFloatingMessageID(); +DUSK_NOINLINE s16 dMeter2Info_getHorseLifeCount(); +DUSK_NOINLINE void dMeter2Info_setMeterString(s32 i_string); +DUSK_NOINLINE void dMeter2Info_resetMeterString(); +DUSK_NOINLINE void dMeter2Info_setMeterItemPanePtr(int i_no, CPaneMgr* i_pane); +DUSK_NOINLINE bool dMeter2Info_isShopTalkFlag(); +DUSK_NOINLINE void dMeter2Info_setMapDrugFlag(bool i_flag); +DUSK_NOINLINE bool dMeter2Info_isTempBit(int i_bit); +DUSK_NOINLINE void dMeter2Info_offSub2DStatus(int i_bit); +DUSK_NOINLINE void dMeter2Info_onSub2DStatus(int i_bit); +DUSK_NOINLINE void dMeter2Info_set2DWidth(f32 i_width); +DUSK_NOINLINE void dMeter2Info_set2DHeight(f32 i_height); +DUSK_NOINLINE void dMeter2Info_set2DPosH(f32 i_posH); +DUSK_NOINLINE void dMeter2Info_set2DPosV(f32 i_posV); +DUSK_NOINLINE void dMeter2Info_offShopTalkFlag(); +DUSK_NOINLINE void dMeter2Info_onUseButton(int i_button); +DUSK_NOINLINE f32 dMeter2Info_get2DWidth(); +DUSK_NOINLINE f32 dMeter2Info_get2DHeight(); +DUSK_NOINLINE void dMeter2Info_setWarpInfo(const char* i_stageName, const cXyz& i_position, + s16 i_angle, u8 i_roomNo, u8 param_4, u8 i_warpPlayerNo); +DUSK_NOINLINE u8 dMeter2Info_getTableMapRegionNo(); +DUSK_NOINLINE u8 dMeter2Info_getGoldWolfMapType(); +DUSK_NOINLINE bool dMeter2Info_isWindowAccept(int param_0); +DUSK_NOINLINE void dMeter2Info_setHorseLifeCount(s16 i_count); +DUSK_NOINLINE void dMeter2Info_offTempBit(int i_bit); +DUSK_NOINLINE void dMeter2Info_onTempBit(int i_bit); +DUSK_NOINLINE void dMeter2Info_setFloatingMessage(u16 i_msgID, s16 i_msgTimer, bool i_wakuVisible); +DUSK_NOINLINE void dMeter2Info_setMiniGameCount(s8 i_count); +DUSK_NOINLINE void dMeter2Info_onWindowAccept(int param_0); +DUSK_NOINLINE void dMeter2Info_offWindowAccept(int param_0); +DUSK_NOINLINE void dMeter2Info_onMenuInForce(int param_0); + +#else inline void dMeter2Info_Initialize() { g_meter2_info.init(); } @@ -865,4 +1009,6 @@ inline void dMeter2Info_onMenuInForce(int param_0) { g_meter2_info.onMenuInForce(param_0); } +#endif + #endif /* D_METER_D_METER2_INFO_H */ diff --git a/src/d/d_meter2_info.cpp b/src/d/d_meter2_info.cpp index 4e55a330f9..15569a72d8 100644 --- a/src/d/d_meter2_info.cpp +++ b/src/d/d_meter2_info.cpp @@ -1900,3 +1900,542 @@ void dMeter2Info_set2DVibrationT() {} void dMeter2Info_set2DVibration() {} void dMeter2Info_set2DVibrationM() {} + +#if TARGET_PC +void dMeter2Info_Initialize() { + g_meter2_info.init(); +} + +dMeterMap_c* dMeter2Info_getMeterMapClass() { + return g_meter2_info.getMeterMapClass(); +} + +dMw_c* dMeter2Info_getMenuWindowClass() { + return g_meter2_info.getMenuWindowClass(); +} + +void dMeter2Info_setWindowStatus(u8 i_status) { + g_meter2_info.setWindowStatus(i_status); +} + +CPaneMgr* dMeter2Info_getMeterItemPanePtr(s32 i_idx) { + return g_meter2_info.getMeterItemPanePtr(i_idx); +} + +void dMeter2Info_getString(u32 i_stringID, TEXT_SPAN o_string, JMSMesgEntry_c* i_msgEntry) { + g_meter2_info.getString(i_stringID, o_string, i_msgEntry); +} + +void dMeter2Info_getStringKanji(u32 i_stringID, TEXT_SPAN o_string, JMSMesgEntry_c* i_msgEntry) { + g_meter2_info.getStringKanji(i_stringID, o_string, i_msgEntry); +} + +void dMeter2Info_getStringKana(u32 i_stringID, TEXT_SPAN o_string, JMSMesgEntry_c* i_msgEntry) { + g_meter2_info.getStringKana(i_stringID, o_string, i_msgEntry); +} + +f32 dMeter2Info_getStringLength(JUTFont* i_font, f32 param_2, f32 param_3, char* i_string) { + return g_meter2_info.getStringLength(i_font, param_2, param_3, i_string); +} + +f32 dMeter2Info_getStringLength(J2DTextBox* i_textbox, char* i_string) { + return g_meter2_info.getStringLength(i_textbox, i_string); +} + +void dMeter2Info_setHotSpringTimer(u8 i_slotNo) { + g_meter2_info.setHotSpringTimer(i_slotNo); +} + +u16 dMeter2Info_getOilGaugeBackUp() { + return g_meter2_info.getOilGaugeBackUp(); +} + +void dMeter2Info_setOilGaugeBackUp(u16 param_1) { + g_meter2_info.setOilGaugeBackUp(param_1); +} + +void dMeter2Info_setSaveStageName(const char* i_stageName) { + g_meter2_info.setSaveStageName(i_stageName); +} + +u8 dMeter2Info_getInsectSelectType() { + return g_meter2_info.getInsectSelectType(); +} + +void dMeter2Info_setInsectSelectType(u8 i_type) { + g_meter2_info.setInsectSelectType(i_type); +} + +u8 dMeter2Info_getWarpStatus() { + return g_meter2_info.getWarpStatus(); +} + +void dMeter2Info_setWarpStatus(u8 i_status) { + return g_meter2_info.setWarpStatus(i_status); +} + +int dMeter2Info_readItemTexture(u8 i_itemNo, void* i_texBuf1, J2DPicture* i_pic1, void* i_texBuf2, + J2DPicture* i_pic2, void* i_texBuf3, J2DPicture* i_pic3, void* i_texBuf4, J2DPicture* i_pic4, + int param_9) { + return g_meter2_info.readItemTexture(i_itemNo, i_texBuf1, i_pic1, i_texBuf2, i_pic2, i_texBuf3, + i_pic3, i_texBuf4, i_pic4, param_9); +} + +void dMeter2Info_setItemColor( + u8 i_itemNo, J2DPicture* i_pic1, J2DPicture* i_pic2, J2DPicture* i_pic3, J2DPicture* i_pic4) { + g_meter2_info.setItemColor(i_itemNo, i_pic1, i_pic2, i_pic3, i_pic4); +} + +u8 dMeter2Info_getWarpRoomNo() { + return g_meter2_info.getWarpRoomNo(); +} + +u8 dMeter2Info_getWarpPlayerNo() { + return g_meter2_info.getWarpPlayerNo(); +} + +cXyz& dMeter2Info_getWarpPos() { + return g_meter2_info.getWarpPos(); +} + +const char* dMeter2Info_getWarpStageName() { + return g_meter2_info.getWarpStageName(); +} + +void dMeter2Info_setNowCount(u8 i_count) { + g_meter2_info.setNowCount(i_count); +} + +void dMeter2Info_setMaxCount(u8 i_count) { + g_meter2_info.setMaxCount(i_count); +} + +BOOL dMeter2Info_isDirectUseItem(int param_0) { + return g_meter2_info.isDirectUseItem(param_0); +} + +bool dMeter2Info_isUseButton(int i_buttonBit) { + return g_meter2_info.isUseButton(i_buttonBit); +} + +void dMeter2Info_setMeterMapClass(dMeterMap_c* i_map) { + g_meter2_info.setMeterMapClass(i_map); +} + +void dMeter2Info_decHotSpringTimer() { + g_meter2_info.decHotSpringTimer(); +} + +void dMeter2Info_allUseButton() { + g_meter2_info.allUseButton(); +} + +void dMeter2Info_offUseButton(int i_buttonBit) { + g_meter2_info.offUseButton(i_buttonBit); +} + +void dMeter2Info_resetGameStatus() { + g_meter2_info.resetGameStatus(); +} + +void dMeter2Info_onGameStatus(int i_status) { + g_meter2_info.onGameStatus(i_status); +} + +void dMeter2Info_setMapStatus(u8 i_status) { + g_meter2_info.setMapStatus(i_status); +} + +u8 dMeter2Info_getMapStatus() { + return g_meter2_info.getMapStatus(); +} + +void dMeter2Info_setPauseStatus(u8 i_status) { + g_meter2_info.setPauseStatus(i_status); +} + +void dMeter2Info_resetPauseStatus() { + g_meter2_info.resetPauseStatus(); +} + +u8 dMeter2Info_getPauseStatus() { + return g_meter2_info.getPauseStatus(); +} + +bool dMeter2Info_isGameStatus(int i_status) { + return g_meter2_info.isGameStatus(i_status); +} + +bool dMeter2Info_isTouchKeyCheck(int i_status) { + return g_meter2_info.isTouchKeyCheck(i_status); +} + +void dMeter2Info_setMapKeyDirection(u16 i_direction) { + g_meter2_info.setMapKeyDirection(i_direction); +} + +bool dMeter2Info_isSub2DStatus(int i_flag) { + return g_meter2_info.isSub2DStatus(i_flag); +} + +void dMeter2Info_offMenuInForce(int i_flag) { + g_meter2_info.offMenuInForce(i_flag); +} + +bool dMeter2Info_isMenuInForce(int i_flag) { + return g_meter2_info.isMenuInForce(i_flag); +} + +void dMeter2Info_setMenuWindowClass(dMw_c* i_menu) { + g_meter2_info.setMenuWindowClass(i_menu); +} + +void dMeter2Info_resetWarpStatus() { + g_meter2_info.resetWarpStatus(); +} + +u16 dMeter2Info_getMapKeyDirection() { + return g_meter2_info.getMapKeyDirection(); +} + +u8 dMeter2Info_getWindowStatus() { + return g_meter2_info.getWindowStatus(); +} + +void dMeter2Info_setMsgResource(void* i_res) { + g_meter2_info.setMsgResource(i_res); +} + +void dMeter2Info_setStageMsgResource(void* i_res) { + g_meter2_info.setStageMsgResource(i_res); +} + +void dMeter2Info_setMsgUnitResource(void* i_res) { + g_meter2_info.setMsgUnitResource(i_res); +} + +void* dMeter2Info_getMsgResource() { + return g_meter2_info.getMsgResource(); +} + +void* dMeter2Info_getStageMsgResource() { + return g_meter2_info.getStageMsgResource(); +} + +void* dMeter2Info_getMsgUnitResource() { + return g_meter2_info.getMsgUnitResource(); +} + +u8 dMeter2Info_getLightDropGetFlag(int i_no) { + return g_meter2_info.getLightDropGetFlag(i_no); +} + +s32 dMeter2Info_getMeterStringType() { + return g_meter2_info.getMeterStringType(); +} + +void dMeter2Info_setMeterClass(dMeter2_c* i_meter) { + g_meter2_info.setMeterClass(i_meter); +} + +void dMeter2Info_onLifeGaugeSE() { + g_meter2_info.onLifeGaugeSE(); +} + +void dMeter2Info_offLifeGaugeSE() { + g_meter2_info.offLifeGaugeSE(); +} + +u8 dMeter2Info_getLifeGaugeSE() { + return g_meter2_info.getLifeGaugeSE(); +} + +const char* dMeter2Info_getSaveStageName() { + return g_meter2_info.getSaveStageName(); +} + +void dMeter2Info_onShopTalkFlag() { + g_meter2_info.onShopTalkFlag(); +} + +void dMeter2Info_setLightDropGetFlag(int i_no, u8 i_flag) { + g_meter2_info.setLightDropGetFlag(i_no, i_flag); +} + +u8 dMeter2Info_getRentalBombBag() { + return g_meter2_info.getRentalBombBag(); +} + +u8 dMeter2Info_getMiniGameItemSetFlag() { + return g_meter2_info.getMiniGameItemSetFlag(); +} + +void dMeter2Info_setMiniGameItem(u8 i_minigameFlag) { + g_meter2_info.setMiniGameItem(i_minigameFlag); +} + +void dMeter2Info_resetMiniGameItem(bool i_saveItem) { + g_meter2_info.resetMiniGameItem(i_saveItem); +} + +void dMeter2Info_setTableMapRegionNo(u8 i_regionNo) { + g_meter2_info.setTableMapRegionNo(i_regionNo); +} + +void dMeter2Info_setGoldWolfMapType(u8 i_mapType) { + g_meter2_info.setGoldWolfMapType(i_mapType); +} + +void dMeter2Info_changeWater(u8 i_slotNo) { + g_meter2_info.changeWater(i_slotNo); +} + +void dMeter2Info_warpInProc() { + g_meter2_info.warpInProc(); +} + +void dMeter2Info_warpOutProc() { + g_meter2_info.warpOutProc(); +} + +dMeter2_c* dMeter2Info_getMeterClass() { + return g_meter2_info.getMeterClass(); +} + +s16 dMeter2Info_getMsgKeyWaitTimer() { + return g_meter2_info.getMsgKeyWaitTimer(); +} + +void dMeter2Info_onDirectUseItem(int param_0) { + g_meter2_info.onDirectUseItem(param_0); +} + +void dMeter2Info_setFloatingFlow(u16 i_flowID, s16 i_msgTimer, bool i_wakuVisible) { + g_meter2_info.setFloatingFlow(i_flowID, i_msgTimer, i_wakuVisible); +} + +u8 dMeter2Info_getGameOverType() { + return g_meter2_info.getGameOverType(); +} + +void dMeter2Info_setGameOverType(u8 i_gameoverType) { + g_meter2_info.setGameOverType(i_gameoverType); +} + +void dMeter2Info_setMsgKeyWaitTimer(s16 i_waitTimer) { + g_meter2_info.setMsgKeyWaitTimer(i_waitTimer); +} + +s32 dMeter2Info_getMsgTimeMs() { + return g_meter2_info.getMsgTimeMs(); +} + +s32 dMeter2Info_getTimeMs() { + return g_meter2_info.getTimeMs(); +} + +void dMeter2Info_setMsgTimeMs(s32 i_msgTime) { + g_meter2_info.setMsgTimeMs(i_msgTime); +} + +void dMeter2Info_setTimeMs(s32 i_time) { + g_meter2_info.setTimeMs(i_time); +} + +u8 dMeter2Info_getNowCount() { + return g_meter2_info.getNowCount(); +} + +u8 dMeter2Info_getMaxCount() { + return g_meter2_info.getMaxCount(); +} + +void dMeter2Info_setScopeZoomPointer(u8 param_0) { + g_meter2_info.setScopeZoomPointer(param_0); +} + +void dMeter2Info_decMsgKeyWaitTimer() { + g_meter2_info.decMsgKeyWaitTimer(); +} + +bool dMeter2Info_isFloatingMessageVisible() { + return g_meter2_info.isFloatingMessageVisible(); +} + +u8 dMeter2Info_getItemExplainWindowStatus() { + return g_meter2_info.getItemExplainWindowStatus(); +} + +void dMeter2Info_setItemExplainWindowStatus(u8 i_value) { + g_meter2_info.setItemExplainWindowStatus(i_value); +} + +void dMeter2Info_resetDirectUseItem() { + g_meter2_info.resetDirectUseItem(); +} + +u16 dMeter2Info_getFloatingFlowID() { + return g_meter2_info.getFloatingFlowID(); +} + +u8 dMeter2Info_getCollectCursorPosX() { + return g_meter2_info.getCollectCursorPosX(); +} + +u8 dMeter2Info_getCollectCursorPosY() { + return g_meter2_info.getCollectCursorPosY(); +} + +void dMeter2Info_setCollectCursorPosXY(u8 x, u8 y) { + g_meter2_info.setCollectCursorPosXY(x, y); +} + +void dMeter2Info_onBlinkButton(int i_flag) { + g_meter2_info.onBlinkButton(i_flag); +} + +bool dMeter2Info_isFloatingMessageWakuVisible() { + return g_meter2_info.isFloatingMessageWakuVisible(); +} + +bool dMeter2Info_isBlinkButton(int i_flag) { + return g_meter2_info.isBlinkButton(i_flag); +} + +void dMeter2Info_resetBlinkButton() { + g_meter2_info.resetBlinkButton(); +} + +void dMeter2Info_resetFloatingMessage() { + g_meter2_info.resetFloatingMessage(); +} + +s16 dMeter2Info_decFloatingMessageTimer() { + return g_meter2_info.decFloatingMessageTimer(); +} + +s16 dMeter2Info_getFloatingMessageTimer() { + return g_meter2_info.getFloatingMessageTimer(); +} + +u16 dMeter2Info_getFloatingMessageID() { + return g_meter2_info.getFloatingMessageID(); +} + +s16 dMeter2Info_getHorseLifeCount() { + return g_meter2_info.getHorseLifeCount(); +} + +void dMeter2Info_setMeterString(s32 i_string) { + g_meter2_info.setMeterString(i_string); +} + +void dMeter2Info_resetMeterString() { + g_meter2_info.resetMeterString(); +} + +void dMeter2Info_setMeterItemPanePtr(int i_no, CPaneMgr* i_pane) { + g_meter2_info.setMeterItemPanePtr(i_no, i_pane); +} + +bool dMeter2Info_isShopTalkFlag() { + return g_meter2_info.isShopTalkFlag(); +} + +void dMeter2Info_setMapDrugFlag(bool i_flag) { + g_meter2_info.setMapDrugFlag(i_flag); +} + +bool dMeter2Info_isTempBit(int i_bit) { + return g_meter2_info.isTempBit(i_bit); +} + +void dMeter2Info_offSub2DStatus(int i_bit) { + g_meter2_info.offSub2DStatus(i_bit); +} + +void dMeter2Info_onSub2DStatus(int i_bit) { + g_meter2_info.onSub2DStatus(i_bit); +} + +void dMeter2Info_set2DWidth(f32 i_width) { + g_meter2_info.set2DWidth(i_width); +} + +void dMeter2Info_set2DHeight(f32 i_height) { + g_meter2_info.set2DHeight(i_height); +} + +void dMeter2Info_set2DPosH(f32 i_posH) { + g_meter2_info.set2DPosH(i_posH); +} + +void dMeter2Info_set2DPosV(f32 i_posV) { + g_meter2_info.set2DPosV(i_posV); +} + +void dMeter2Info_offShopTalkFlag() { + g_meter2_info.offShopTalkFlag(); +} + +void dMeter2Info_onUseButton(int i_button) { + g_meter2_info.onUseButton(i_button); +} + +f32 dMeter2Info_get2DWidth() { + return g_meter2_info.get2DWidth(); +} + +f32 dMeter2Info_get2DHeight() { + return g_meter2_info.get2DHeight(); +} + +void dMeter2Info_setWarpInfo(const char* i_stageName, const cXyz& i_position, s16 i_angle, + u8 i_roomNo, u8 param_4, u8 i_warpPlayerNo) { + g_meter2_info.setWarpInfo(i_stageName, i_position, i_angle, i_roomNo, param_4, i_warpPlayerNo); +} + +u8 dMeter2Info_getTableMapRegionNo() { + return g_meter2_info.getTableMapRegionNo(); +} + +u8 dMeter2Info_getGoldWolfMapType() { + return g_meter2_info.getGoldWolfMapType(); +} + +bool dMeter2Info_isWindowAccept(int param_0) { + return g_meter2_info.isWindowAccept(param_0); +} + +void dMeter2Info_setHorseLifeCount(s16 i_count) { + g_meter2_info.setHorseLifeCount(i_count); +} + +void dMeter2Info_offTempBit(int i_bit) { + g_meter2_info.offTempBit(i_bit); +} + +void dMeter2Info_onTempBit(int i_bit) { + g_meter2_info.onTempBit(i_bit); +} + +void dMeter2Info_setFloatingMessage(u16 i_msgID, s16 i_msgTimer, bool i_wakuVisible) { + g_meter2_info.setFloatingMessage(i_msgID, i_msgTimer, i_wakuVisible); +} + +void dMeter2Info_setMiniGameCount(s8 i_count) { + g_meter2_info.setMiniGameCount(i_count); +} + +void dMeter2Info_onWindowAccept(int param_0) { + g_meter2_info.onWindowAccept(param_0); +} + +void dMeter2Info_offWindowAccept(int param_0) { + g_meter2_info.offWindowAccept(param_0); +} + +void dMeter2Info_onMenuInForce(int param_0) { + g_meter2_info.onMenuInForce(param_0); +} +#endif From 48b5c2e8c14d8d7fbd1dac0be0ef26e7f1e2fb5b Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sun, 23 Aug 2026 00:09:34 -0600 Subject: [PATCH 10/11] Restore focus to re-enabled elements --- src/dusk/ui/component.cpp | 11 +++++++++++ src/dusk/ui/component.hpp | 1 + 2 files changed, 12 insertions(+) diff --git a/src/dusk/ui/component.cpp b/src/dusk/ui/component.cpp index fc9e7f147a..ae49f7a8c3 100644 --- a/src/dusk/ui/component.cpp +++ b/src/dusk/ui/component.cpp @@ -49,13 +49,24 @@ void Component::set_disabled(bool value) { if (Component::disabled() == value) { return; } + auto* context = mRoot->GetContext(); if (value) { + if (context != nullptr && context->GetFocusElement() == mRoot) { + // RmlUi moves focus to the parent when a focused control is disabled. + mDisabledFocusFallback = mRoot->GetParentNode(); + } mRoot->SetAttribute("disabled", ""); mRoot->SetPseudoClass("disabled", true); mRoot->Blur(); } else { + const bool restoreFocus = mDisabledFocusFallback != nullptr && context != nullptr && + context->GetFocusElement() == mDisabledFocusFallback; mRoot->RemoveAttribute("disabled"); mRoot->SetPseudoClass("disabled", false); + mDisabledFocusFallback = nullptr; + if (restoreFocus) { + focus(); + } } } diff --git a/src/dusk/ui/component.hpp b/src/dusk/ui/component.hpp index 4af1212955..f45bbf6a56 100644 --- a/src/dusk/ui/component.hpp +++ b/src/dusk/ui/component.hpp @@ -54,6 +54,7 @@ protected: void clear_children(); Rml::Element* mRoot = nullptr; + Rml::Element* mDisabledFocusFallback = nullptr; std::vector> mChildren; std::vector> mListeners; }; From a775418c667f748724c24283b9bad62ebe2dc48b Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sun, 23 Aug 2026 21:51:49 -0600 Subject: [PATCH 11/11] ItemService v2.1: Support display_item (#2344) * ItemService: Support display_item * Add goron_springwater_rush constant * Commit f_op_actor_mng.h --- include/d/actor/d_a_itembase.h | 9 ++++ include/f_op/f_op_actor_mng.h | 6 ++- sdk/include/mods/items.h | 2 + sdk/include/mods/svc/item.h | 12 ++++-- src/d/actor/d_a_demo_item.cpp | 16 ++++++- src/d/actor/d_a_e_po.cpp | 17 +------- src/d/actor/d_a_itembase.cpp | 10 ++--- src/d/actor/d_a_npc_gra.cpp | 7 ++- src/d/actor/d_a_obj_item.cpp | 47 ++++++++++---------- src/d/actor/d_a_obj_life_container.cpp | 41 ++++++++++-------- src/d/actor/d_a_obj_smallkey.cpp | 60 +++++++++++++++++++++++--- src/d/actor/d_a_shop_item.cpp | 20 +++++---- src/d/d_a_itembase_static.cpp | 4 +- src/dusk/mods/item.hpp | 17 ++++++-- src/dusk/mods/item_checks.cpp | 28 +++++++++--- src/dusk/mods/item_gives.cpp | 37 +++++++++++----- src/f_op/f_op_actor_mng.cpp | 26 +++++++++-- 17 files changed, 246 insertions(+), 113 deletions(-) diff --git a/include/d/actor/d_a_itembase.h b/include/d/actor/d_a_itembase.h index da1f541cd7..374e4b7df2 100644 --- a/include/d/actor/d_a_itembase.h +++ b/include/d/actor/d_a_itembase.h @@ -32,6 +32,12 @@ struct daItemBase_data { class daItemBase_c : public fopAc_ac_c { public: u8 getItemNo(); +#if TARGET_PC + u8 getDisplayItemNo() const { + return mDisplayItemNo != 0xFF ? mDisplayItemNo : m_itemNo; + } + void setDisplayItemNo(u8 itemNo) { mDisplayItemNo = itemNo; } +#endif void hide(); void show(); void changeDraw(); @@ -79,6 +85,9 @@ public: /* 0x928 */ s16 m_get_timer; /* 0x92A */ u8 m_itemNo; /* 0x92B */ u8 field_0x92b; +#if TARGET_PC + u8 mDisplayItemNo = 0xFF; +#endif }; #endif /* D_A_D_A_ITEMBASE_H */ diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index b23fc40383..7aa3bf2156 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -532,10 +532,12 @@ s32 fopAcM_delete(fpc_ProcID i_actorID); fpc_ProcID fopAcM_create(s16 i_procName, u16 i_setId, u32 i_parameters, const cXyz* i_pos, int i_roomNo, const csXyz* i_angle, const cXyz* i_scale, s8 i_argument, - createFunc i_createFunc IF_DUSK_ARG(u32 i_itemGiveTag = 0)); + createFunc i_createFunc IF_DUSK_ARG(u32 i_itemGiveTag = 0) + IF_DUSK_ARG(u8 i_itemOriginalNo = 0xFF)); fpc_ProcID fopAcM_create(s16 i_procName, u32 i_parameters, const cXyz* i_pos, int i_roomNo, - const csXyz* i_angle, const cXyz* i_scale, s8 i_argument IF_DUSK_ARG(u32 i_itemGiveTag = 0)); + const csXyz* i_angle, const cXyz* i_scale, s8 i_argument IF_DUSK_ARG(u32 i_itemGiveTag = 0) + IF_DUSK_ARG(u8 i_itemOriginalNo = 0xFF)); inline fpc_ProcID fopAcM_Create(s16 i_procName, createFunc i_createFunc, void* params) { return fpcM_Create(i_procName, i_createFunc,params); diff --git a/sdk/include/mods/items.h b/sdk/include/mods/items.h index e0b1cae2d9..b79563026c 100644 --- a/sdk/include/mods/items.h +++ b/sdk/include/mods/items.h @@ -27,6 +27,7 @@ #define ITEM_CHECK_FISHING_HEART_PIECE "fishing_heart_piece" #define ITEM_CHECK_GOATS_REWARD "goats_reward" #define ITEM_CHECK_GORON_REWARD "goron_reward:F_SP113" +#define ITEM_CHECK_GORON_SPRINGWATER_RUSH "goron_springwater_rush" #define ITEM_CHECK_ILIA_CHARM "ilia_charm" #define ITEM_CHECK_ILIA_MEMORY "ilia_memory" #define ITEM_CHECK_IZA_REWARD_1 "iza_reward_1" @@ -42,6 +43,7 @@ #define ITEM_CHECK_PRAYER_REWARD "prayer_reward" #define ITEM_CHECK_RENADO_LETTER "renado_letter" #define ITEM_CHECK_SERA_REWARD "sera_reward" +#define ITEM_CHECK_SHAD_DOMINION_ROD "shad_dominion_rod" #define ITEM_CHECK_SKYBOOK "skybook" #define ITEM_CHECK_SNOWBOARD_REWARD "snowboard_race_reward" #define ITEM_CHECK_STAR_REWARD_1 "star_reward_1" diff --git a/sdk/include/mods/svc/item.h b/sdk/include/mods/svc/item.h index 1f2c3d3b43..94fec6fb6c 100644 --- a/sdk/include/mods/svc/item.h +++ b/sdk/include/mods/svc/item.h @@ -8,7 +8,7 @@ #define ITEM_SERVICE_ID "dev.twilitrealm.dusklight.item" #define ITEM_SERVICE_MAJOR 2u -#define ITEM_SERVICE_MINOR 0u +#define ITEM_SERVICE_MINOR 1u /* 0 is never a valid handle. */ typedef uint64_t ItemCheckHandle; @@ -31,11 +31,17 @@ typedef struct ItemCheckInfo { const void* giver_actor; /* fopAc_ac_c*, or NULL when unavailable */ uint8_t vanilla_item; uint8_t current_item; + uint8_t current_display_item; } ItemCheckInfo; -/* Return true and write out_item to replace current_item, or false to leave it unchanged. */ +typedef struct ItemCheckResolution { + uint8_t item; + uint8_t display_item; /* leave unset (0xFF/NONE) to use the item */ +} ItemCheckResolution; + +/* Return true and write out_result to replace the result, or false to leave it unchanged. */ typedef bool (*ItemCheckResolveFn)( - ModContext* ctx, const ItemCheckInfo* info, uint8_t* out_item, void* user_data); + ModContext* ctx, const ItemCheckInfo* info, ItemCheckResolution* out_result, void* user_data); typedef enum ItemGiveOrigin { ITEM_GIVE_ORIGIN_GAME = 0, diff --git a/src/d/actor/d_a_demo_item.cpp b/src/d/actor/d_a_demo_item.cpp index 5876c26718..465532a5f0 100644 --- a/src/d/actor/d_a_demo_item.cpp +++ b/src/d/actor/d_a_demo_item.cpp @@ -449,7 +449,7 @@ int daDitem_c::Delete() { endInsectEffect(); mSound.deleteObject(); - return DeleteBase(dItem_data::getArcName(m_itemNo)); + return DeleteBase(dItem_data::getArcName(DUSK_IF_ELSE(getDisplayItemNo(), m_itemNo))); } static int daDitem_Delete(daDitem_c* i_this) { @@ -461,8 +461,16 @@ int daDitem_c::create() { m_itemNo = daDitem_prm::getNo(this); +#if TARGET_PC + const auto [item, displayItem] = dusk::mods::item_check_resolve(mItemGiveTag, m_itemNo, this); + m_itemNo = item; + setDisplayItemNo(displayItem); + const char* arc_name = dItem_data::getArcName(displayItem); + s16 bmd_name = dItem_data::getBmdName(displayItem); +#else const char* arc_name = dItem_data::getArcName(m_itemNo); s16 bmd_name = dItem_data::getBmdName(m_itemNo); +#endif if (bmd_name < 0 || arc_name == NULL) { if (bmd_name == 0) { @@ -476,9 +484,13 @@ int daDitem_c::create() { } m_itemNo = dItemNo_GREEN_RUPEE_e; +#if TARGET_PC + setDisplayItemNo(dItemNo_NONE_e); +#endif } - int phase_state = dComIfG_resLoad(&mPhase, dItem_data::getArcName(m_itemNo)); + int phase_state = dComIfG_resLoad( + &mPhase, dItem_data::getArcName(DUSK_IF_ELSE(getDisplayItemNo(), m_itemNo))); if (phase_state == cPhs_COMPLEATE_e) { if (!fopAcM_entrySolidHeap(this, CheckItemCreateHeap, 0x80003390)) { return cPhs_ERROR_e; diff --git a/src/d/actor/d_a_e_po.cpp b/src/d/actor/d_a_e_po.cpp index a415cfaa65..a7a7be6dd1 100644 --- a/src/d/actor/d_a_e_po.cpp +++ b/src/d/actor/d_a_e_po.cpp @@ -7,9 +7,6 @@ #include "d/actor/d_a_e_po.h" #include "d/actor/d_a_obj_poFire.h" -#if TARGET_PC -#include "d/actor/d_a_alink.h" -#endif #include "d/d_cc_d.h" #include "d/d_cc_uty.h" #include "f_op/f_op_actor_enemy.h" @@ -1135,17 +1132,7 @@ static void e_po_dead(e_po_class* i_this) { camera_player->mCamera.Start(); camera_player->mCamera.SetTrimSize(0); dComIfGp_event_reset(); -#if TARGET_PC - const auto itemCheck = dusk::mods::item_check_commit( - dusk::mods::item_give_tag_poe(i_this->BitSW), dItemNo_POU_SPIRIT_e, a_this); - daPy_getPlayerActorClass()->cancelOriginalDemo(); - if (itemCheck.itemNo == dItemNo_NONE_e) { - dusk::mods::item_check_complete(itemCheck, a_this); - } else { - daAlink_getAlinkActorClass()->procWolfAtnActorMoveInit(); - dusk::mods::item_check_enqueue(itemCheck, dusk::mods::ItemGiveMode::ForcedDemo); - } -#else +#if !TARGET_PC dComIfGs_addPohSpiritNum(); #if !PLATFORM_SHIELD if (dComIfGs_getPohSpiritNum() == 0x14) { @@ -1153,8 +1140,8 @@ static void e_po_dead(e_po_class* i_this) { dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[457]); } #endif - daPy_getPlayerActorClass()->cancelOriginalDemo(); #endif + daPy_getPlayerActorClass()->cancelOriginalDemo(); } else if (mArg0Check(i_this, 0) != 0) { if (!fopAcM_isSwitch(a_this, 0x22)) { if (fopAcM_SearchByID(i_this->field_0x5B8, &local_1b0_actor) != 0 && diff --git a/src/d/actor/d_a_itembase.cpp b/src/d/actor/d_a_itembase.cpp index 084fb5221f..474b03c784 100644 --- a/src/d/actor/d_a_itembase.cpp +++ b/src/d/actor/d_a_itembase.cpp @@ -242,21 +242,21 @@ BOOL daItemBase_c::chkFlag(int i_flag) { } s8 daItemBase_c::getTevFrm() { - return dItem_data::getTevFrm(m_itemNo); + return dItem_data::getTevFrm(DUSK_IF_ELSE(getDisplayItemNo(), m_itemNo)); } s8 daItemBase_c::getBtpFrm() { - return dItem_data::getBtpFrm(m_itemNo); + return dItem_data::getBtpFrm(DUSK_IF_ELSE(getDisplayItemNo(), m_itemNo)); } u8 daItemBase_c::getShadowSize() { - return dItem_data::getShadowSize(m_itemNo); + return dItem_data::getShadowSize(DUSK_IF_ELSE(getDisplayItemNo(), m_itemNo)); } u8 daItemBase_c::getCollisionH() { - return dItem_data::getH(m_itemNo); + return dItem_data::getH(DUSK_IF_ELSE(getDisplayItemNo(), m_itemNo)); } u8 daItemBase_c::getCollisionR() { - return dItem_data::getR(m_itemNo); + return dItem_data::getR(DUSK_IF_ELSE(getDisplayItemNo(), m_itemNo)); } diff --git a/src/d/actor/d_a_npc_gra.cpp b/src/d/actor/d_a_npc_gra.cpp index 13f3215fae..e5e0d6eed0 100644 --- a/src/d/actor/d_a_npc_gra.cpp +++ b/src/d/actor/d_a_npc_gra.cpp @@ -12,6 +12,9 @@ #include "d/actor/d_a_npc_gra.h" #include "d/actor/d_a_tag_gra.h" #include "Z2AudioLib/Z2Instances.h" +#if TARGET_PC +#include "mods/items.h" +#endif #include DUSK_GAME_DATA const daNpc_grA_HIOParam daNpc_grA_Param_c::m = { @@ -1323,7 +1326,7 @@ BOOL daNpc_grA_c::isDelete() { return FALSE; } fopAcM_createItemForBoss(¤t.pos, 0x21, fopAcM_GetRoomNo(this), NULL, NULL, 0.0f, 0.0f, - 0x80); + 0x80 IF_DUSK_ARG(ITEM_CHECK_GORON_SPRINGWATER_RUSH)); return TRUE; } return TRUE; @@ -2812,7 +2815,7 @@ BOOL daNpc_grA_c::ECut_carrySpaWater(int i_staffID) { c.y += 200.0f; csXyz c2(0, fopAcM_searchPlayerAngleY(this), 0); fopAcM_createItemForBoss(&c, 0x21, fopAcM_GetRoomNo(this), &c2, NULL, 0.0f, 20.0f, - 0x80); + 0x80 IF_DUSK_ARG(ITEM_CHECK_GORON_SPRINGWATER_RUSH)); } break; } } diff --git a/src/d/actor/d_a_obj_item.cpp b/src/d/actor/d_a_obj_item.cpp index a67e780286..fba0ad7d91 100644 --- a/src/d/actor/d_a_obj_item.cpp +++ b/src/d/actor/d_a_obj_item.cpp @@ -158,8 +158,8 @@ void daItem_c::CreateInit() { mCcCyl.SetCoHitCallback(itemGetCoCallBack); mCcCyl.SetTgHitCallback(itemGetTgCallBack); - f32 cylHeight = dItem_data::getH(m_itemNo); - f32 cylRadius = dItem_data::getR(m_itemNo); + f32 cylHeight = DUSK_IF_ELSE(getCollisionH(), dItem_data::getH(m_itemNo)); + f32 cylRadius = DUSK_IF_ELSE(getCollisionR(), dItem_data::getR(m_itemNo)); if (scale.x > 1.0f) { cylHeight *= scale.x; @@ -267,12 +267,13 @@ int daItem_c::_daItem_create() { #if TARGET_PC const u32 params = fopAcM_GetParam(this); mOriginalItemNo = params & 0xFF; - const u8 resolvedItem = dusk::mods::item_check_freestanding( - daItem_prm::getItemBitNo(this), mOriginalItemNo, this); - mItemOverridden = resolvedItem != mOriginalItemNo; mItemGiveTag = dusk::mods::item_give_tag_freestanding(daItem_prm::getItemBitNo(this)); + const auto [item, displayItem] = + dusk::mods::item_check_resolve(mItemGiveTag, mOriginalItemNo, this); + mItemOverridden = item != mOriginalItemNo; + setDisplayItemNo(displayItem); if (mItemOverridden) { - fopAcM_SetParam(this, (params & 0xFFFFFF00) | resolvedItem); + fopAcM_SetParam(this, (params & 0xFFFFFF00) | item); } #endif field_0x95d = true; @@ -288,7 +289,7 @@ int daItem_c::_daItem_create() { #if DEBUG #if TARGET_PC - if (dItem_fieldModelArc(m_itemNo) == NULL) { + if (dItem_fieldModelArc(getDisplayItemNo()) == NULL) { #else if (dItem_data::getFieldArc(m_itemNo) == NULL) { #endif @@ -324,23 +325,21 @@ int daItem_c::_daItem_create() { CreateInit(); } else { #if TARGET_PC - // Resolved items may have no field model; display their get-demo model instead. - if (dItem_data::getFieldArc(m_itemNo) == NULL) { - phase_state = dComIfG_resLoad(&mPhase, dItem_data::getArcName(m_itemNo)); - if (phase_state == cPhs_COMPLEATE_e) { - if (!fopAcM_entrySolidHeap(this, CheckItemCreateHeap, 0x4000)) { - return cPhs_ERROR_e; - } - - CreateInit(); - } - return phase_state; - } -#endif + const u8 displayItemNo = getDisplayItemNo(); + phase_state = dComIfG_resLoad(&mPhase, dItem_fieldModelArc(displayItemNo)); +#else phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo)); +#endif if (phase_state == cPhs_COMPLEATE_e) { +#if TARGET_PC + const bool useModelFallback = dItem_data::getFieldArc(displayItemNo) == NULL; + if (!fopAcM_entrySolidHeap(this, + useModelFallback ? CheckItemCreateHeap : CheckFieldItemCreateHeap, + useModelFallback ? 0x4000 : dItem_data::getFieldHeapSize(displayItemNo))) +#else if (!fopAcM_entrySolidHeap(this, CheckFieldItemCreateHeap, dItem_data::getFieldHeapSize(m_itemNo))) +#endif { return cPhs_ERROR_e; } @@ -357,7 +356,7 @@ int daItem_c::_daItem_execute() { CountTimer(); eyePos = current.pos; - eyePos.y += (f32)dItem_data::getH(m_itemNo) / 2; + eyePos.y += (f32)DUSK_IF_ELSE(getCollisionH(), dItem_data::getH(m_itemNo)) / 2; attention_info.position = current.pos; @@ -431,7 +430,7 @@ int daItem_c::_daItem_delete() { } #if TARGET_PC - DeleteBase(dItem_fieldModelArc(m_itemNo)); + DeleteBase(dItem_fieldModelArc(getDisplayItemNo())); #else DeleteBase(dItem_data::getFieldArc(m_itemNo)); #endif @@ -604,8 +603,8 @@ void daItem_c::procInitBoomerangCarry() { scale = mItemScale; mBoomerangMove.initOffset(¤t.pos); - u8 height = dItem_data::getH(m_itemNo); - u8 radius = dItem_data::getR(m_itemNo); + u8 height = DUSK_IF_ELSE(getCollisionH(), dItem_data::getH(m_itemNo)); + u8 radius = DUSK_IF_ELSE(getCollisionR(), dItem_data::getR(m_itemNo)); mCcCyl.SetR((f32)radius * 2.0f); mCcCyl.SetH((f32)height * 2.0f); mCcCyl.OnCoSPrmBit(1); diff --git a/src/d/actor/d_a_obj_life_container.cpp b/src/d/actor/d_a_obj_life_container.cpp index 815d03f390..b2eb30167a 100644 --- a/src/d/actor/d_a_obj_life_container.cpp +++ b/src/d/actor/d_a_obj_life_container.cpp @@ -88,8 +88,8 @@ int daObjLife_c::Create() { mCcCyl.SetStts(&mCcStts); mCcCyl.SetCoHitCallback(lifeGetCoCallBack); mCcCyl.SetTgHitCallback(lifeGetTgCallBack); - mCcCyl.SetR(dItem_data::getR(m_itemNo)); - mCcCyl.SetH(dItem_data::getH(m_itemNo)); + mCcCyl.SetR(DUSK_IF_ELSE(getCollisionR(), dItem_data::getR(m_itemNo))); + mCcCyl.SetH(DUSK_IF_ELSE(getCollisionH(), dItem_data::getH(m_itemNo))); fopAcM_SetCullSize(this, fopAc_CULLSPHERE_0_e); fopAcM_SetGravity(this, -3.2f); @@ -152,25 +152,29 @@ int daObjLife_c::create() { const u8 parameterItemNo = params & 0xFF; if (mItemGiveOriginalNo == dItemNo_NONE_e) { mOriginalItemNo = parameterItemNo; - const u8 resolvedItem = - dusk::mods::item_check_freestanding(getSaveBitNo(), mOriginalItemNo, this); mItemGiveTag = dusk::mods::item_give_tag_freestanding(getSaveBitNo()); - mItemOverridden = resolvedItem != mOriginalItemNo; + const auto [item, displayItem] = + dusk::mods::item_check_resolve(mItemGiveTag, mOriginalItemNo, this); + setDisplayItemNo(displayItem); + mItemOverridden = item != mOriginalItemNo; if (mItemOverridden) { - fopAcM_SetParam(this, (params & 0xFFFFFF00) | resolvedItem); + fopAcM_SetParam(this, (params & 0xFFFFFF00) | item); } } else if (mGoldenWolfItem) { mOriginalItemNo = mItemGiveOriginalNo; - const u16 obtainedItemFlag = static_cast(field_0x938); - const u8 resolvedItem = - dusk::mods::item_check_golden_wolf(obtainedItemFlag, mOriginalItemNo, this); - mItemGiveTag = dusk::mods::item_give_tag_golden_wolf(obtainedItemFlag); - mItemOverridden = resolvedItem != mOriginalItemNo; - if (resolvedItem != parameterItemNo) { - fopAcM_SetParam(this, (params & 0xFFFFFF00) | resolvedItem); + mItemGiveTag = dusk::mods::item_give_tag_golden_wolf(static_cast(field_0x938)); + const auto [item, displayItem] = + dusk::mods::item_check_resolve(mItemGiveTag, mOriginalItemNo, this); + setDisplayItemNo(displayItem); + mItemOverridden = item != mOriginalItemNo; + if (item != parameterItemNo) { + fopAcM_SetParam(this, (params & 0xFFFFFF00) | item); } } else { mOriginalItemNo = mItemGiveOriginalNo; + setDisplayItemNo( + dusk::mods::item_check_resolve(mItemGiveTag, parameterItemNo, this) + .display_item); mItemOverridden = parameterItemNo != mOriginalItemNo; } mOverrideHover = @@ -197,8 +201,9 @@ int daObjLife_c::create() { #if TARGET_PC // Resolved items may have no field model; display their get-demo model instead. - const bool useGetModel = dItem_data::getFieldArc(m_itemNo) == NULL; - int phase_state = dComIfG_resLoad(&mPhase, dItem_fieldModelArc(m_itemNo)); + const u8 displayItemNo = getDisplayItemNo(); + const bool useGetModel = dItem_data::getFieldArc(displayItemNo) == NULL; + int phase_state = dComIfG_resLoad(&mPhase, dItem_fieldModelArc(displayItemNo)); if (phase_state == cPhs_COMPLEATE_e) { if (!fopAcM_entrySolidHeap( this, useGetModel ? CheckItemCreateHeap : CheckFieldItemCreateHeap, 0x4000)) @@ -421,8 +426,8 @@ int daObjLife_c::actionInitBoomerangCarry() { mCcCyl.OnTgSPrmBit(1); mCcCyl.OnCoSPrmBit(1); - f32 height = dItem_data::getH(m_itemNo) * 4.0f; - f32 radius = dItem_data::getR(m_itemNo) * 4.0f; + f32 height = DUSK_IF_ELSE(getCollisionH(), dItem_data::getH(m_itemNo)) * 4.0f; + f32 radius = DUSK_IF_ELSE(getCollisionR(), dItem_data::getR(m_itemNo)) * 4.0f; mCcCyl.SetR(radius); mCcCyl.SetH(height); @@ -544,7 +549,7 @@ int daObjLife_c::_delete() { endEffect02(); #if TARGET_PC - DeleteBase(dItem_fieldModelArc(m_itemNo)); + DeleteBase(dItem_fieldModelArc(getDisplayItemNo())); #else DeleteBase(dItem_data::getFieldArc(m_itemNo)); #endif diff --git a/src/d/actor/d_a_obj_smallkey.cpp b/src/d/actor/d_a_obj_smallkey.cpp index 9bf8face57..6914cee5f0 100644 --- a/src/d/actor/d_a_obj_smallkey.cpp +++ b/src/d/actor/d_a_obj_smallkey.cpp @@ -1,6 +1,6 @@ /** * @file d_a_obj_smallkey.cpp - * + * */ #include "d/dolzel_rel.h" // IWYU pragma: keep @@ -119,9 +119,9 @@ int daKey_c::Create() { mCcCyl.SetStts(&mCcStts); mCcCyl.SetCoHitCallback(keyGetCoCallBack); mCcCyl.SetTgHitCallback(keyGetTgCallBack); - mCcCyl.SetR(dItem_data::getR(m_itemNo)); - mCcCyl.SetH(dItem_data::getH(m_itemNo)); - + mCcCyl.SetR(DUSK_IF_ELSE(getCollisionR(), dItem_data::getR(m_itemNo))); + mCcCyl.SetH(DUSK_IF_ELSE(getCollisionH(), dItem_data::getH(m_itemNo))); + fopAcM_SetCullSize(this, fopAc_CULLSPHERE_0_e); if (getSwNo() == 0xFF) { @@ -155,7 +155,21 @@ int daKey_c::create() { mIsPrmInit = TRUE; } +#if TARGET_PC + mItemGiveTag = dusk::mods::item_give_tag_freestanding(getSaveBitNo()); + const auto [item, displayItem] = + dusk::mods::item_check_resolve(mItemGiveTag, dItemNo_SMALL_KEY_e, this); + m_itemNo = item; + if (m_itemNo == dItemNo_NONE_e) { + // Keep the pickup visible until the empty check is collected. + m_itemNo = dItemNo_SMALL_KEY_e; + setDisplayItemNo(dItemNo_NONE_e); + } else { + setDisplayItemNo(displayItem); + } +#else m_itemNo = dItemNo_SMALL_KEY_e; +#endif if (strcmp(dComIfGp_getStartStageName(), "F_SP118") == 0) { OS_REPORT(" SMKEY 0\n"); @@ -170,9 +184,21 @@ int daKey_c::create() { return cPhs_ERROR_e; } +#if TARGET_PC + const u8 displayItemNo = getDisplayItemNo(); + int phase_state = dComIfG_resLoad(&mPhase, dItem_fieldModelArc(displayItemNo)); +#else int phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo)); +#endif if (phase_state == cPhs_COMPLEATE_e) { +#if TARGET_PC + const bool useModelFallback = dItem_data::getFieldArc(displayItemNo) == NULL; + if (!fopAcM_entrySolidHeap( + this, useModelFallback ? CheckItemCreateHeap : CheckFieldItemCreateHeap, 0x4000)) + { +#else if (!fopAcM_entrySolidHeap(this, CheckFieldItemCreateHeap, 0x840)) { +#endif return cPhs_ERROR_e; } @@ -317,10 +343,26 @@ int daKey_c::initActionOrderGetDemo() { hide(); effectStop(); +#if TARGET_PC + const auto itemCheck = + dusk::mods::item_check_commit(mItemGiveTag, dItemNo_SMALL_KEY_e, this); + m_itemNo = itemCheck.itemNo; + if (m_itemNo == dItemNo_NONE_e) { + dusk::mods::item_check_complete(itemCheck, this); + dComIfGs_onTbox(getSaveBitNo()); + dTres_c::offStatus(getSaveBitNo(), 1); + dComIfGp_event_reset(); + fopAcM_delete(this); + return 1; + } +#endif + fopAcM_orderItemEvent(this, 0, 0); eventInfo.onCondition(8); - mItemId = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this), NULL, NULL); + mItemId = fopAcM_createItemForTrBoxDemo( + ¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this), NULL, + NULL IF_DUSK_ARG(itemCheck.tag)); JUT_ASSERT(699, mItemId != fpcM_ERROR_PROCESS_ID_e); setStatus(STATUS_ORDER_GET_DEMO_e); @@ -387,8 +429,8 @@ int daKey_c::actionInitBoomerangCarry() { mCcCyl.OnTgSPrmBit(1); mCcCyl.OnCoSPrmBit(1); - u8 height = dItem_data::getH(m_itemNo); - u8 radius = dItem_data::getR(m_itemNo); + u8 height = DUSK_IF_ELSE(getCollisionH(), dItem_data::getH(m_itemNo)); + u8 radius = DUSK_IF_ELSE(getCollisionR(), dItem_data::getR(m_itemNo)); mCcCyl.SetR(4.0f * radius); mCcCyl.SetH(4.0f * height); @@ -527,7 +569,11 @@ int daKey_c::draw() { int daKey_c::_delete() { effectStop(); +#if TARGET_PC + DeleteBase(dItem_fieldModelArc(getDisplayItemNo())); +#else DeleteBase(dItem_data::getFieldArc(m_itemNo)); +#endif return 1; } diff --git a/src/d/actor/d_a_shop_item.cpp b/src/d/actor/d_a_shop_item.cpp index 3e768a1684..a7a159ab1c 100644 --- a/src/d/actor/d_a_shop_item.cpp +++ b/src/d/actor/d_a_shop_item.cpp @@ -105,17 +105,19 @@ const char* daShopItem_c::getShopArcname() { #if TARGET_PC if (m_itemNo != dItemNo_NONE_e && mItemGiveOriginalNo == dItemNo_NONE_e) { mItemGiveOriginalNo = m_itemNo; - const u8 resolvedItem = dusk::mods::item_check_shop(mItemGiveOriginalNo, this); - mItemOverridden = resolvedItem != mItemGiveOriginalNo; + mItemGiveTag = dusk::mods::item_give_tag_shop(mItemGiveOriginalNo); + const auto [_, displayItem] = + dusk::mods::item_check_resolve(mItemGiveTag, mItemGiveOriginalNo, this); + mItemOverridden = displayItem != mItemGiveOriginalNo; if (mItemOverridden) { mOverrideData = mData[mShopItemID]; - mOverrideData.mArcName = dItem_data::getArcName(resolvedItem); - mOverrideData.mBmdName = dItem_data::getBmdName(resolvedItem); - mOverrideData.mBtkName = dItem_data::getBtkName(resolvedItem); - mOverrideData.mBckName = dItem_data::getBckName(resolvedItem); - mOverrideData.mBrkName = dItem_data::getBrkName(resolvedItem); - mOverrideData.mBtpName = dItem_data::getBtpName(resolvedItem); - mOverrideData.mTevFrm = dItem_data::getTevFrm(resolvedItem); + mOverrideData.mArcName = dItem_data::getArcName(displayItem); + mOverrideData.mBmdName = dItem_data::getBmdName(displayItem); + mOverrideData.mBtkName = dItem_data::getBtkName(displayItem); + mOverrideData.mBckName = dItem_data::getBckName(displayItem); + mOverrideData.mBrkName = dItem_data::getBrkName(displayItem); + mOverrideData.mBtpName = dItem_data::getBtpName(displayItem); + mOverrideData.mTevFrm = dItem_data::getTevFrm(displayItem); mOverrideData.mBtpFrm = -1; mOverrideData.mFlag = static_cast(-1); mOverrideData.mOffsetY = mShopItemID == SHOP_ITEMNO_ARMOR ? 60.0f : 15.0f; diff --git a/src/d/d_a_itembase_static.cpp b/src/d/d_a_itembase_static.cpp index 9bdd933f5f..ec3610a787 100644 --- a/src/d/d_a_itembase_static.cpp +++ b/src/d/d_a_itembase_static.cpp @@ -50,7 +50,7 @@ bool daItemBase_c::chkDead() { int CheckItemCreateHeap(fopAc_ac_c* i_this) { daItemBase_c* a_this = static_cast(i_this); - u8 item_no = a_this->getItemNo(); + u8 item_no = DUSK_IF_ELSE(a_this->getDisplayItemNo(), a_this->getItemNo()); return a_this->CreateItemHeap(dItem_data::getArcName(item_no), dItem_data::getBmdName(item_no), dItem_data::getBtkName(item_no), dItem_data::getBpkName(item_no), dItem_data::getBckName(item_no), dItem_data::getBxaName(item_no), @@ -67,7 +67,7 @@ const char* dItem_fieldModelArc(u8 itemNo) { int CheckFieldItemCreateHeap(fopAc_ac_c* i_this) { daItemBase_c* a_this = static_cast(i_this); - u8 item_no = a_this->getItemNo(); + u8 item_no = DUSK_IF_ELSE(a_this->getDisplayItemNo(), a_this->getItemNo()); return a_this->CreateItemHeap( dItem_data::getFieldArc(item_no), dItem_data::getItemBmdName(item_no), dItem_data::getItemBtkName(item_no), dItem_data::getItemBpkName(item_no), diff --git a/src/dusk/mods/item.hpp b/src/dusk/mods/item.hpp index f27079427e..bda0d4f7ee 100644 --- a/src/dusk/mods/item.hpp +++ b/src/dusk/mods/item.hpp @@ -1,7 +1,10 @@ #pragma once +#include "mods/svc/item.h" + #include #include +#include class fopAc_ac_c; @@ -16,8 +19,11 @@ enum class ItemGiveMode : uint8_t { struct ItemCheckResult { uint32_t tag = 0; uint8_t itemNo = 0; + uint8_t displayItemNo = 0; }; +ItemCheckResolution item_check_resolve(const char* name, uint8_t itemNo, fopAc_ac_c* giver); +ItemCheckResolution item_check_resolve(uint32_t giveTag, uint8_t itemNo, fopAc_ac_c* giver); uint8_t item_check(const char* name, uint8_t itemNo, fopAc_ac_c* giver); ItemCheckResult item_check_commit(const char* name, uint8_t itemNo, fopAc_ac_c* giver); ItemCheckResult item_check_commit(uint32_t giveTag, uint8_t itemNo, fopAc_ac_c* giver); @@ -54,7 +60,7 @@ uint32_t item_give_queue_take_tag(); namespace detail { struct CommittedCheck { uint8_t vanillaItem = 0; - uint8_t resolvedItem = 0; + ItemCheckResolution resolution{}; bool queued = false; }; @@ -77,10 +83,13 @@ public: return existing->second; } - const uint8_t resolvedItem = std::forward(resolve)(); + const ItemCheckResolution resolution = std::forward(resolve)(); return mChecks - .emplace( - giveTag, CommittedCheck{.vanillaItem = vanillaItem, .resolvedItem = resolvedItem}) + .emplace(giveTag, + CommittedCheck{ + .vanillaItem = vanillaItem, + .resolution = resolution, + }) .first->second; } diff --git a/src/dusk/mods/item_checks.cpp b/src/dusk/mods/item_checks.cpp index 6327a07e0a..fb145a48df 100644 --- a/src/dusk/mods/item_checks.cpp +++ b/src/dusk/mods/item_checks.cpp @@ -186,9 +186,9 @@ void invalidate_committed_check(const std::string& name) { } // namespace -uint8_t item_check(const char* name, uint8_t itemNo, fopAc_ac_c* giver) { +ItemCheckResolution item_check_resolve(const char* name, uint8_t itemNo, fopAc_ac_c* giver) { if (name == nullptr || *name == '\0' || s_modChecks.empty()) { - return itemNo; + return {.item = itemNo, .display_item = itemNo}; } // Callbacks may change registrations, so copy the applicable chain before invoking one. @@ -228,6 +228,7 @@ uint8_t item_check(const char* name, uint8_t itemNo, fopAc_ac_c* giver) { .giver_actor = giver, .vanilla_item = itemNo, .current_item = itemNo, + .current_display_item = itemNo, }; for (const auto& resolve : resolves) { if (!resolve.mod->active) { @@ -235,13 +236,21 @@ uint8_t item_check(const char* name, uint8_t itemNo, fopAc_ac_c* giver) { } if (resolve.fixedValue) { info.current_item = resolve.itemNo; + info.current_display_item = resolve.itemNo; continue; } - uint8_t resolvedItem = info.current_item; + ItemCheckResolution resolution{ + .item = info.current_item, + .display_item = dItemNo_NONE_e, + }; try { - if (resolve.fn(resolve.mod->context.get(), &info, &resolvedItem, resolve.userData)) { - info.current_item = resolvedItem; + if (resolve.fn(resolve.mod->context.get(), &info, &resolution, resolve.userData)) { + if (resolution.display_item == UINT8_MAX) { + resolution.display_item = resolution.item; + } + info.current_item = resolution.item; + info.current_display_item = resolution.display_item; } } catch (const std::exception& e) { fail_mod(*resolve.mod, MOD_ERROR, @@ -251,7 +260,14 @@ uint8_t item_check(const char* name, uint8_t itemNo, fopAc_ac_c* giver) { fmt::format("Unknown exception in item check resolver for '{}'", name)); } } - return info.current_item; + return { + .item = info.current_item, + .display_item = info.current_display_item, + }; +} + +uint8_t item_check(const char* name, uint8_t itemNo, fopAc_ac_c* giver) { + return item_check_resolve(name, itemNo, giver).item; } uint8_t item_check_chest(uint8_t boxNo, uint8_t itemNo, fopAc_ac_c* chest) { diff --git a/src/dusk/mods/item_gives.cpp b/src/dusk/mods/item_gives.cpp index 739a5ac5ee..5d75dcfc15 100644 --- a/src/dusk/mods/item_gives.cpp +++ b/src/dusk/mods/item_gives.cpp @@ -97,11 +97,11 @@ void notify_gives(const char* checkName, uint8_t itemNo, fopAc_ac_c* giver, Item void complete_check(uint8_t itemNo, uint32_t giveTag, fopAc_ac_c* giver, ItemGiveOrigin origin) { if (const auto* committed = s_committedChecks.find(giveTag); - committed != nullptr && committed->resolvedItem != itemNo) + committed != nullptr && committed->resolution.item != itemNo) { Log.error("committed check '{}' completed with item {:#x} instead of {:#x}", item_give_name(giveTag) != nullptr ? item_give_name(giveTag) : "", itemNo, - committed->resolvedItem); + committed->resolution.item); } s_committedChecks.erase(giveTag); notify_gives(item_give_name(giveTag), itemNo, giver, origin); @@ -241,10 +241,19 @@ uint32_t item_give_tag(const char* name) { return tag; } +ItemCheckResolution item_check_resolve(uint32_t giveTag, uint8_t itemNo, fopAc_ac_c* giver) { + if (const auto* committed = s_committedChecks.find(giveTag); committed != nullptr) { + return committed->resolution; + } + const char* name = item_give_name(giveTag); + return name != nullptr ? item_check_resolve(name, itemNo, giver) : + ItemCheckResolution{.item = itemNo, .display_item = itemNo}; +} + ItemCheckResult item_check_commit(uint32_t giveTag, uint8_t itemNo, fopAc_ac_c* giver) { const char* name = item_give_name(giveTag); if (name == nullptr) { - return {.tag = giveTag, .itemNo = itemNo}; + return {.tag = giveTag, .itemNo = itemNo, .displayItemNo = itemNo}; } if (const auto* committed = s_committedChecks.find(giveTag); committed != nullptr) { @@ -252,12 +261,20 @@ ItemCheckResult item_check_commit(uint32_t giveTag, uint8_t itemNo, fopAc_ac_c* Log.error("committed check '{}' changed vanilla item from {:#x} to {:#x}", name, committed->vanillaItem, itemNo); } - return {.tag = giveTag, .itemNo = committed->resolvedItem}; + return { + .tag = giveTag, + .itemNo = committed->resolution.item, + .displayItemNo = committed->resolution.display_item, + }; } - const auto& committed = - s_committedChecks.commit(giveTag, itemNo, [&] { return item_check(name, itemNo, giver); }); - return {.tag = giveTag, .itemNo = committed.resolvedItem}; + const auto& committed = s_committedChecks.commit( + giveTag, itemNo, [&] { return item_check_resolve(name, itemNo, giver); }); + return { + .tag = giveTag, + .itemNo = committed.resolution.item, + .displayItemNo = committed.resolution.display_item, + }; } ItemCheckResult item_check_commit(const char* name, uint8_t itemNo, fopAc_ac_c* giver) { @@ -279,10 +296,10 @@ bool item_check_enqueue(ItemCheckResult check, ItemGiveMode mode) { item_give_name(check.tag) != nullptr ? item_give_name(check.tag) : ""); return false; } - if (committed->resolvedItem != check.itemNo) { + if (committed->resolution.item != check.itemNo) { Log.error("committed check '{}' changed item from {:#x} to {:#x}", item_give_name(check.tag) != nullptr ? item_give_name(check.tag) : "", check.itemNo, - committed->resolvedItem); + committed->resolution.item); return false; } if (committed->queued) { @@ -292,7 +309,7 @@ bool item_check_enqueue(ItemCheckResult check, ItemGiveMode mode) { committed->queued = true; s_giveQueue.push_back({ .tag = check.tag, - .itemNo = committed->resolvedItem, + .itemNo = committed->resolution.item, .silent = mode == ItemGiveMode::Silent, .forced = mode == ItemGiveMode::ForcedDemo, }); diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 5ac24d534e..3097b9294f 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -257,9 +257,10 @@ s32 fopAcM_delete(fpc_ProcID i_actorID) { fpc_ProcID fopAcM_create(s16 i_procName, u16 i_setId, u32 i_parameters, const cXyz* i_pos, int i_roomNo, const csXyz* i_angle, const cXyz* i_scale, s8 i_argument, - createFunc i_createFunc IF_DUSK_ARG(u32 i_itemGiveTag)) { + createFunc i_createFunc IF_DUSK_ARG(u32 i_itemGiveTag) IF_DUSK_ARG(u8 i_itemOriginalNo)) { fopAcM_prm_class* append = createAppend(i_setId, i_parameters, i_pos, i_roomNo, i_angle, - i_scale, i_argument, fpcM_ERROR_PROCESS_ID_e IF_DUSK_ARG(i_itemGiveTag)); + i_scale, i_argument, fpcM_ERROR_PROCESS_ID_e IF_DUSK_ARG(i_itemGiveTag) + IF_DUSK_ARG(i_itemOriginalNo)); if (append == NULL) { return fpcM_ERROR_PROCESS_ID_e; } @@ -268,9 +269,10 @@ fpc_ProcID fopAcM_create(s16 i_procName, u16 i_setId, u32 i_parameters, const cX } fpc_ProcID fopAcM_create(s16 i_procName, u32 i_parameters, const cXyz* i_pos, int i_roomNo, - const csXyz* i_angle, const cXyz* i_scale, s8 i_argument IF_DUSK_ARG(u32 i_itemGiveTag)) { + const csXyz* i_angle, const cXyz* i_scale, s8 i_argument IF_DUSK_ARG(u32 i_itemGiveTag) + IF_DUSK_ARG(u8 i_itemOriginalNo)) { return fopAcM_create(i_procName, 0xFFFF, i_parameters, i_pos, i_roomNo, i_angle, i_scale, - i_argument, NULL IF_DUSK_ARG(i_itemGiveTag)); + i_argument, NULL IF_DUSK_ARG(i_itemGiveTag) IF_DUSK_ARG(i_itemOriginalNo)); } fopAc_ac_c* fopAcM_fastCreate(s16 i_procName, u32 i_parameters, const cXyz* i_pos, int i_roomNo, @@ -1606,6 +1608,22 @@ fpc_ProcID fopAcM_createItemForBoss(const cXyz* i_pos, int i_itemNo, int i_roomN i_itemNo = dusk::mods::item_check_boss(originalItemNo, NULL); giveTag = dusk::mods::item_give_tag_boss(); } + + if (i_itemNo == dItemNo_NONE_e) { + const auto itemCheck = dusk::mods::item_check_commit(giveTag, originalItemNo, NULL); + i_itemNo = itemCheck.itemNo; + if (i_itemNo == dItemNo_NONE_e) { + dusk::mods::item_check_complete(itemCheck, NULL); + dComIfGs_onItem(param_8, i_roomNo); + return fpcM_ERROR_PROCESS_ID_e; + } + } + + if (i_itemNo != originalItemNo) { + const u32 params = 0xFFFF0000 | param_8 << 8 | (i_itemNo & 0xFF); + return fopAcM_create(fpcNm_Obj_LifeContainer_e, params, i_pos, i_roomNo, i_angle, + i_scale, -1, giveTag, originalItemNo); + } #endif u32 params = 0xFFFF0000 | param_8 << 8 | (i_itemNo & 0xFF);