mirror of https://github.com/zeldaret/tp.git
2626 lines
89 KiB
C++
2626 lines
89 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/com/d_com_inf_game
|
|
//
|
|
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/d_item.h"
|
|
#include "d/d_procname.h"
|
|
#include "d/d_timer.h"
|
|
#include "d/kankyo/d_kankyo.h"
|
|
#include "d/meter/d_meter2_info.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/types.h"
|
|
#include "m_Do/m_Do_audio.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" void ct__14dComIfG_play_cFv();
|
|
extern "C" void init__14dComIfG_play_cFv();
|
|
extern "C" void dComIfGp_checkItemGet__FUci();
|
|
extern "C" void itemInit__14dComIfG_play_cFv();
|
|
extern "C" void setItemBombNumCount__14dComIfG_play_cFUcs();
|
|
extern "C" void getItemBombNumCount__14dComIfG_play_cFUc();
|
|
extern "C" void clearItemBombNumCount__14dComIfG_play_cFUc();
|
|
extern "C" void setNowVibration__14dComIfG_play_cFUc();
|
|
extern "C" void getNowVibration__14dComIfG_play_cFv();
|
|
extern "C" void setStartStage__14dComIfG_play_cFP19dStage_startStage_c();
|
|
extern "C" void dComIfG_get_timelayer__FPi();
|
|
extern "C" void getLayerNo_common_common__14dComIfG_play_cFPCcii();
|
|
extern "C" void getLayerNo_common__14dComIfG_play_cFPCcii();
|
|
extern "C" void getLayerNo__14dComIfG_play_cFi();
|
|
extern "C" void createParticle__14dComIfG_play_cFv();
|
|
extern "C" void createSimpleModel__14dComIfG_play_cFv();
|
|
extern "C" void deleteSimpleModel__14dComIfG_play_cFv();
|
|
extern "C" void drawSimpleModel__14dComIfG_play_cFv();
|
|
extern "C" void addSimpleModel__14dComIfG_play_cFP12J3DModelDataiUc();
|
|
extern "C" void removeSimpleModel__14dComIfG_play_cFP12J3DModelDatai();
|
|
extern "C" void entrySimpleModel__14dComIfG_play_cFP8J3DModeli();
|
|
extern "C" void setTimerNowTimeMs__14dComIfG_play_cFi();
|
|
extern "C" void getTimerNowTimeMs__14dComIfG_play_cFv();
|
|
extern "C" void setTimerLimitTimeMs__14dComIfG_play_cFi();
|
|
extern "C" void getTimerLimitTimeMs__14dComIfG_play_cFv();
|
|
extern "C" void setTimerMode__14dComIfG_play_cFi();
|
|
extern "C" void getTimerMode__14dComIfG_play_cFv();
|
|
extern "C" void setTimerType__14dComIfG_play_cFUc();
|
|
extern "C" void getTimerType__14dComIfG_play_cFv();
|
|
extern "C" void setTimerPtr__14dComIfG_play_cFP8dTimer_c();
|
|
extern "C" void getTimerPtr__14dComIfG_play_cFv();
|
|
extern "C" void ct__13dComIfG_inf_cFv();
|
|
extern "C" void dComIfG_changeOpeningScene__FP11scene_classs();
|
|
extern "C" void dComIfG_resetToOpening__FP11scene_class();
|
|
extern "C" static void phase_1__FPc();
|
|
extern "C" static void phase_2__FPc();
|
|
extern "C" static s32 phase_3__FPc();
|
|
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
|
extern "C" static void phase_01__FP12phaseParam_c();
|
|
extern "C" static void phase_02__FP12phaseParam_c();
|
|
extern "C" static bool phase_03__FP12phaseParam_c();
|
|
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCcP7JKRHeap();
|
|
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
|
|
extern "C" void dComIfGp_getReverb__Fi();
|
|
extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj();
|
|
extern "C" void dComIfGp_getMapTrans__FiPfPfPs();
|
|
extern "C" void dComIfGp_getRoomCamera__Fi();
|
|
extern "C" void dComIfGp_getRoomArrow__Fi();
|
|
extern "C" void dComIfGp_setNextStage__FPCcsScScfUliScsii();
|
|
extern "C" void dComIfGp_setNextStage__FPCcsScSc();
|
|
extern "C" void dComIfGs_isStageTbox__Fii();
|
|
extern "C" void dComIfGs_onStageSwitch__Fii();
|
|
extern "C" void dComIfGs_offStageSwitch__Fii();
|
|
extern "C" void dComIfGs_isStageSwitch__Fii();
|
|
extern "C" void dComIfGs_onStageBossEnemy__Fi();
|
|
extern "C" void dComIfGs_isDungeonItemWarp__Fi();
|
|
extern "C" void dComIfGs_BossLife_public_Set__FSc();
|
|
extern "C" void dComIfGs_BossLife_public_Get__Fv();
|
|
extern "C" void dComIfGs_sense_type_change_Set__FSc();
|
|
extern "C" void dComIfGs_sense_type_change_Get__Fv();
|
|
extern "C" void dComIfGs_onZoneSwitch__Fii();
|
|
extern "C" void getZoneNo__20dStage_roomControl_cFi();
|
|
extern "C" void dComIfGs_offZoneSwitch__Fii();
|
|
extern "C" void dComIfGs_isZoneSwitch__Fii();
|
|
extern "C" void dComIfGs_onOneZoneSwitch__Fii();
|
|
extern "C" void dComIfGs_offOneZoneSwitch__Fii();
|
|
extern "C" void dComIfGs_isOneZoneSwitch__Fii();
|
|
extern "C" void dComIfGs_isZoneItem__Fii();
|
|
extern "C" void dComIfGs_isOneZoneItem__Fii();
|
|
extern "C" void dComIfGs_getMaxLifeGauge__Fv();
|
|
extern "C" void dComIfGs_setSelectItemIndex__FiUc();
|
|
extern "C" void dComIfGs_setMixItemIndex__FiUc();
|
|
extern "C" void dComIfGs_getSelectMixItemNoArrowIndex__Fi();
|
|
extern "C" void dComIfGs_getMixItemIndex__Fi();
|
|
extern "C" void dComIfGp_setSelectItem__Fi(int);
|
|
extern "C" void dComIfGp_getSelectItem__Fi();
|
|
extern "C" void dComIfGp_mapShow__Fv();
|
|
extern "C" void dComIfGp_mapHide__Fv();
|
|
extern "C" void dComIfGp_checkMapShow__Fv();
|
|
extern "C" void dComIfGp_setHeapLockFlag__FUc();
|
|
extern "C" s32 dComIfGp_offHeapLockFlag__Fi(int);
|
|
extern "C" static void dComIfGp_createSubExpHeap2D__Fv();
|
|
extern "C" static void dComIfGp_destroySubExpHeap2D__Fv();
|
|
extern "C" static int dComIfGp_checkEmptySubHeap2D__Fv();
|
|
extern "C" static int dComIfGp_searchUseSubHeap2D__Fi(int);
|
|
extern "C" void dComIfGp_getSubHeap2D__Fi();
|
|
extern "C" void dComIfGs_checkGetInsectNum__Fv();
|
|
extern "C" static u8 dComIfGs_checkGetItem__FUc(u8);
|
|
extern "C" s32 dComIfGs_getBottleMax__Fv();
|
|
extern "C" void dComIfGp_getSelectItemNum__Fi();
|
|
extern "C" void dComIfGp_getSelectItemMaxNum__Fi();
|
|
extern "C" void dComIfGp_setSelectItemNum__Fis();
|
|
extern "C" void dComIfGp_addSelectItemNum__Fis();
|
|
extern "C" void
|
|
dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
|
|
extern "C" void dComIfGs_gameStart__Fv();
|
|
extern "C" void dComIfG_getTrigA__FUl();
|
|
extern "C" void dComIfGp_calcNowRegion__Fv();
|
|
extern "C" static void dComIfG_getNowCalcRegion__Fv();
|
|
extern "C" void dComIfGp_isLightDropMapVisible__Fv();
|
|
extern "C" void dComIfGp_getNowLevel__Fv();
|
|
extern "C" void dComIfGs_setSelectEquipClothes__FUc();
|
|
extern "C" void dComIfGs_setSelectEquipSword__FUc();
|
|
extern "C" void dComIfGs_setSelectEquipShield__FUc();
|
|
extern "C" void dComIfGs_setKeyNum__FiUc();
|
|
extern "C" static void dComIfGs_setWarpItemData__FiPCc4cXyzsScUcUc();
|
|
extern "C" void setWarpItemData__14dComIfG_play_cFPCc4cXyzsScUcUc();
|
|
extern "C" void dComIfGs_setWarpItemData__FPCc4cXyzsScUcUc();
|
|
extern "C" static void dComIfGs_setLastWarpMarkItemData__FPCc4cXyzsScUcUc(const char*, cXyz, s16,
|
|
s8, u8, u8);
|
|
extern "C" void dComIfGs_getWarpStageName__Fv();
|
|
extern "C" void dComIfGs_getWarpPlayerPos__Fv();
|
|
extern "C" void dComIfGs_getWarpPlayerAngleY__Fv();
|
|
extern "C" void dComIfGs_getWarpRoomNo__Fv();
|
|
extern "C" void dComIfGs_getWarpMarkFlag__Fv();
|
|
extern "C" void dComIfGs_setWarpMarkFlag__FUc();
|
|
extern "C" void __ct__19dComIfG_resLoader_cFv();
|
|
extern "C" void __dt__19dComIfG_resLoader_cFv();
|
|
extern "C" void load__19dComIfG_resLoader_cFPPCcP7JKRHeap();
|
|
extern "C" void dComIfG_getStageRes__FPCc();
|
|
extern "C" void dComIfG_getOldStageRes__FPCc();
|
|
extern "C" void dComIfG_getRoomArcName__Fi();
|
|
extern "C" void dComIfGp_ret_wp_set__FSc();
|
|
extern "C" void dComIfGp_world_dark_set__FUc();
|
|
extern "C" void dComIfGp_world_dark_get__Fv();
|
|
extern "C" void dComIfG_TimerStart__Fis();
|
|
extern "C" void dComIfG_TimerStop__Fi();
|
|
extern "C" void dComIfG_TimerReStart__Fi();
|
|
extern "C" void dComIfG_TimerEnd__Fii();
|
|
extern "C" void dComIfG_TimerDeleteCheck__Fi();
|
|
extern "C" void dComIfG_TimerDeleteRequest__Fi();
|
|
extern "C" void dComIfGs_Wolf_Change_Check__Fv();
|
|
extern "C" void dComIfGs_PolyDamageOff_Set__FSc();
|
|
extern "C" void dComIfGs_PolyDamageOff_Check__Fv();
|
|
extern "C" void dComIfGs_shake_kandelaar__Fv();
|
|
extern "C" void dComIfGs_shake_kandelaar_check__Fv();
|
|
extern "C" void dComIfGs_wolfeye_effect_check__Fv();
|
|
extern "C" void dComIfGs_Grass_hide_Set__FSc();
|
|
extern "C" void dComIfGp_TargetWarpPt_set__FUc();
|
|
extern "C" void dComIfGp_SelectWarpPt_set__FUc();
|
|
extern "C" void dComIfGp_TargetWarpPt_get__Fv();
|
|
extern "C" void dComIfGp_SelectWarpPt_get__Fv();
|
|
extern "C" void dComIfGp_TransportWarp_check__Fv();
|
|
extern "C" void dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv();
|
|
extern "C" void dComIfGs_onVisitedRoom__Fi();
|
|
extern "C" void dComIfGs_offVisitedRoom__Fi();
|
|
extern "C" void dComIfGs_isVisitedRoom__Fi();
|
|
extern "C" void dComIfGs_staffroll_next_go__Fv();
|
|
extern "C" void dComIfGs_staffroll_next_go_check__Fv();
|
|
extern "C" void __sinit_d_com_inf_game_cpp();
|
|
extern "C" void __dt__13dComIfG_inf_cFv();
|
|
extern "C" void __dt__14dComIfG_play_cFv();
|
|
extern "C" void __dt__11cBgS_ChkElmFv();
|
|
extern "C" void __dt__4dCcSFv();
|
|
extern "C" void __dt__12dCcMassS_ObjFv();
|
|
extern "C" void __dt__12dEvt_order_cFv();
|
|
extern "C" void __dt__11dEvDtBase_cFv();
|
|
extern "C" void __dt__14dDlst_window_cFv();
|
|
extern "C" void __dt__25dComIfG_camera_info_classFv();
|
|
extern "C" void __ct__13dComIfG_inf_cFv();
|
|
extern "C" void __ct__25dComIfG_camera_info_classFv();
|
|
extern "C" void __ct__14dDlst_window_cFv();
|
|
extern "C" void __dt__10dAttList_cFv();
|
|
extern "C" void __ct__10dAttList_cFv();
|
|
extern "C" void __dt__7cSAngleFv();
|
|
extern "C" void __dt__10dAttDraw_cFv();
|
|
extern "C" void __dt__13mDoExt_bckAnmFv();
|
|
extern "C" void __dt__13mDoExt_bpkAnmFv();
|
|
extern "C" void __dt__13mDoExt_brkAnmFv();
|
|
extern "C" void __dt__13mDoExt_btkAnmFv();
|
|
extern "C" void __ct__10dAttDraw_cFv();
|
|
extern "C" void __ct__13mDoExt_btkAnmFv();
|
|
extern "C" void __ct__13mDoExt_brkAnmFv();
|
|
extern "C" void __ct__13mDoExt_bpkAnmFv();
|
|
extern "C" void __ct__13mDoExt_bckAnmFv();
|
|
extern "C" void __dt__12dCcMassS_MngFv();
|
|
extern "C" void __dt__4cCcSFv();
|
|
extern "C" void __dt__4dBgSFv();
|
|
extern "C" void __dt__4cBgSFv();
|
|
extern "C" void __ct__11cBgS_ChkElmFv();
|
|
extern "C" void __ct__10dSv_zone_cFv();
|
|
extern "C" void __ct__13dSv_memory2_cFv();
|
|
extern "C" void __ct__12dSv_memory_cFv();
|
|
extern "C" void __dt__15cCcD_DivideAreaFv();
|
|
extern "C" void __dt__8cM3dGCylFv();
|
|
extern "C" void __dt__8cM3dGAabFv();
|
|
extern "C" void __dt__15cCcD_DivideInfoFv();
|
|
extern "C" extern char const* const d_com_d_com_inf_game__stringBase0;
|
|
extern "C" extern GXColor g_saftyWhiteColor;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void mDoAud_setSceneName__FPCcll();
|
|
extern "C" void mDoAud_resetProcess__Fv();
|
|
extern "C" void mDoExt_destroyExpHeap__FP10JKRExpHeap();
|
|
extern "C" void fopScnM_ChangeReq__FP11scene_classssUs();
|
|
extern "C" void fopScnM_ReRequest__FsUl();
|
|
extern "C" void set__18dStage_nextStage_cFPCcScsScScUc();
|
|
extern "C" void initZone__20dStage_roomControl_cFv();
|
|
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
|
|
extern "C" u8 dStage_roomRead_dt_c_GetReverbStage__FR14roomRead_classi(roomRead_class&, int);
|
|
extern "C" void setSelectItemIndex__21dSv_player_status_a_cFiUc();
|
|
extern "C" void getSelectItemIndex__21dSv_player_status_a_cCFi();
|
|
extern "C" void setMixItemIndex__21dSv_player_status_a_cFiUc();
|
|
extern "C" void getMixItemIndex__21dSv_player_status_a_cCFi();
|
|
extern "C" void isDarkClearLV__21dSv_player_status_b_cCFi();
|
|
extern "C" void isTransformLV__21dSv_player_status_b_cCFi();
|
|
extern "C" void set__33dSv_player_field_last_stay_info_cFPCcRC4cXyzsScUc();
|
|
extern "C" void onRegionBit__33dSv_player_field_last_stay_info_cFi();
|
|
extern "C" void isRegionBit__33dSv_player_field_last_stay_info_cCFi();
|
|
extern "C" void setWarpItemData__27dSv_player_last_mark_info_cFPCcRC4cXyzsScUcUc();
|
|
extern "C" void getItem__17dSv_player_item_cCFib();
|
|
extern "C" void isFirstBit__21dSv_player_get_item_cCFUc();
|
|
extern "C" void setBombNum__24dSv_player_item_record_cFUcUc();
|
|
extern "C" void getBombNum__24dSv_player_item_record_cCFUc();
|
|
extern "C" void setBottleNum__24dSv_player_item_record_cFUcUc();
|
|
extern "C" void addBottleNum__24dSv_player_item_record_cFUcs();
|
|
extern "C" void getBottleNum__24dSv_player_item_record_cCFUc();
|
|
extern "C" void getBombNum__21dSv_player_item_max_cCFUc();
|
|
extern "C" void setCollect__20dSv_player_collect_cFiUc();
|
|
extern "C" void getLightDropNum__16dSv_light_drop_cCFUc();
|
|
extern "C" void isLightDropGetFlag__16dSv_light_drop_cCFUc();
|
|
extern "C" void getVibration__19dSv_player_config_cFv();
|
|
extern "C" void isTbox__12dSv_memBit_cCFi();
|
|
extern "C" void onSwitch__12dSv_memBit_cFi();
|
|
extern "C" void offSwitch__12dSv_memBit_cFi();
|
|
extern "C" void isSwitch__12dSv_memBit_cCFi();
|
|
extern "C" void onDungeonItem__12dSv_memBit_cFi();
|
|
extern "C" void isDungeonItem__12dSv_memBit_cCFi();
|
|
extern "C" void onEventBit__11dSv_event_cFUs();
|
|
extern "C" void offEventBit__11dSv_event_cFUs();
|
|
extern "C" void isEventBit__11dSv_event_cCFUs();
|
|
extern "C" void init__12dSv_memory_cFv();
|
|
extern "C" void init__13dSv_memory2_cFv();
|
|
extern "C" void onVisitedRoom__13dSv_memory2_cFi();
|
|
extern "C" void offVisitedRoom__13dSv_memory2_cFi();
|
|
extern "C" void isVisitedRoom__13dSv_memory2_cFi();
|
|
extern "C" void onSwitch__13dSv_zoneBit_cFi();
|
|
extern "C" void offSwitch__13dSv_zoneBit_cFi();
|
|
extern "C" void isSwitch__13dSv_zoneBit_cCFi();
|
|
extern "C" void onOneSwitch__13dSv_zoneBit_cFi();
|
|
extern "C" void offOneSwitch__13dSv_zoneBit_cFi();
|
|
extern "C" void isOneSwitch__13dSv_zoneBit_cCFi();
|
|
extern "C" void isItem__13dSv_zoneBit_cCFi();
|
|
extern "C" void isOneItem__13dSv_zoneBit_cCFi();
|
|
extern "C" void getSave2__10dSv_save_cFi();
|
|
extern "C" void onSwitch__10dSv_info_cFii();
|
|
extern "C" void offSwitch__10dSv_info_cFii();
|
|
extern "C" void isSwitch__10dSv_info_cCFii();
|
|
extern "C" void __ct__11dRes_info_cFv();
|
|
extern "C" void __dt__11dRes_info_cFv();
|
|
extern "C" void __dt__14dRes_control_cFv();
|
|
extern "C" void setRes__14dRes_control_cFPCcP11dRes_info_ciPCcUcP7JKRHeap();
|
|
extern "C" void syncRes__14dRes_control_cFPCcP11dRes_info_ci();
|
|
extern "C" void deleteRes__14dRes_control_cFPCcP11dRes_info_ci();
|
|
extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
|
|
extern "C" void getMapPlayerPos__10dMapInfo_nFv();
|
|
extern "C" void __ct__14dEvt_control_cFv();
|
|
extern "C" void __ct__16dEvent_manager_cFv();
|
|
extern "C" void __ct__15dSmplMdl_draw_cFv();
|
|
extern "C" void draw__15dSmplMdl_draw_cFv();
|
|
extern "C" void entry__15dSmplMdl_draw_cFP8J3DModeli();
|
|
extern "C" void addModel__15dSmplMdl_draw_cFP12J3DModelDataiUc();
|
|
extern "C" void removeModel__15dSmplMdl_draw_cFP12J3DModelDatai();
|
|
extern "C" void __ct__13dPa_control_cFv();
|
|
extern "C" void setReal__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c();
|
|
extern "C" void setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj();
|
|
extern "C" void __ct__12dDlst_list_cFv();
|
|
extern "C" void __dt__12dDlst_list_cFv();
|
|
extern "C" void __dt__12dAttention_cFv();
|
|
extern "C" void Init__11cBgS_ChkElmFv();
|
|
extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
|
|
extern "C" void __ct__12dCcMassS_MngFv();
|
|
extern "C" int checkItemGet__FUci(u8, int);
|
|
extern "C" void setLastSceneMode__9daAlink_cFPUl();
|
|
extern "C" int dKy_daynight_check__Fv();
|
|
extern "C" void dKy_darkworld_stage_check__FPCci();
|
|
extern "C" void dMenuFmap_getStartStageName__FPv();
|
|
extern "C" void init__13dMeter2Info_cFv();
|
|
extern "C" void setSaveStageName__13dMeter2Info_cFPCc();
|
|
extern "C" void deleteCheck__8dTimer_cFv();
|
|
extern "C" void start__8dTimer_cFi();
|
|
extern "C" void start__8dTimer_cFis();
|
|
extern "C" void stop__8dTimer_cFUc();
|
|
extern "C" void restart__8dTimer_cFUc();
|
|
extern "C" void end__8dTimer_cFi();
|
|
extern "C" void deleteRequest__8dTimer_cFv();
|
|
extern "C" void __ct__4cCcSFv();
|
|
extern "C" void cPhs_Handler__FP30request_of_phase_process_classPPFPv_iPv();
|
|
extern "C" void ChkSetInfo__13cBgS_PolyInfoCFv();
|
|
extern "C" void __dt__8cM3dGCpsFv();
|
|
extern "C" void bgmStop__8Z2SeqMgrFUll();
|
|
extern "C" void getTotalFreeSize__7JKRHeapFv();
|
|
extern "C" void* __nw__FUl();
|
|
extern "C" void __dl__FPv();
|
|
extern "C" void create__10JKRExpHeapFUlP7JKRHeapb();
|
|
extern "C" void init__12J3DFrameCtrlFs();
|
|
extern "C" void __register_global_object();
|
|
extern "C" void __destroy_arr();
|
|
extern "C" void __construct_array();
|
|
extern "C" void __cvt_fp2unsigned();
|
|
extern "C" void _savegpr_21();
|
|
extern "C" void _savegpr_25();
|
|
extern "C" void _savegpr_26();
|
|
extern "C" void _savegpr_27();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_21();
|
|
extern "C" void _restgpr_25();
|
|
extern "C" void _restgpr_26();
|
|
extern "C" void _restgpr_27();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" extern void* __vt__12J3DFrameCtrl[3];
|
|
extern "C" extern void* __vt__8cM3dGPla[3];
|
|
extern "C" extern void* __vt__16dStage_stageDt_c[93];
|
|
extern "C" extern void* __vt__11dStage_dt_c[93];
|
|
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
|
|
extern "C" extern void* __vt__19dAttDraw_CallBack_c[3];
|
|
extern "C" extern void* __vt__11dAttParam_c[3 + 1 /* padding */];
|
|
extern "C" extern void* __vt__4dBgS[5];
|
|
extern "C" extern void* __vt__4cBgS[5];
|
|
extern "C" extern void* __vt__11cBgS_ChkElm[4];
|
|
extern "C" extern void* __vt__4dCcS[13];
|
|
extern "C" extern void* __vt__12cCcD_CylAttr[25];
|
|
extern "C" extern void* __vt__12cCcD_CpsAttr[25];
|
|
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
|
|
extern "C" extern void* __vt__4cCcS[12];
|
|
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
|
|
extern "C" u8 mStatus__20dStage_roomControl_c[65792];
|
|
extern "C" extern dScnKy_env_light_c g_env_light;
|
|
extern "C" u8 mFader__13mDoGph_gInf_c[4];
|
|
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
|
|
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
inline s32 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0) {
|
|
return param_0->field_0x09 >> 1 & 0x1f;
|
|
}
|
|
|
|
inline BOOL dComIfGs_isEventBit(u16 id) {
|
|
return g_dComIfG_gameInfo.info.getEvent().isEventBit(id);
|
|
}
|
|
|
|
inline int dComIfGs_isItemFirstBit(u8 i_no) {
|
|
return g_dComIfG_gameInfo.info.getPlayer().getGetItem().isFirstBit(i_no);
|
|
}
|
|
|
|
void dComIfG_play_c::ct() {
|
|
mWindowNum = 0;
|
|
mParticle = NULL;
|
|
mLayerOld = 0;
|
|
|
|
memset(mLastPlayStageName, 0, 8);
|
|
init();
|
|
}
|
|
|
|
static __d_timer_info_c dComIfG_mTimerInfo;
|
|
|
|
dComIfG_inf_c g_dComIfG_gameInfo;
|
|
|
|
void dComIfG_play_c::init() {
|
|
for (int i = 0; i < 1; i++) {
|
|
mPlayer[i] = NULL;
|
|
mPlayerCameraID[i] = -1;
|
|
}
|
|
mCameraInfo[0].mCamera = NULL;
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
mPlayerPtr[i] = NULL;
|
|
}
|
|
|
|
if (mGameoverStatus == 2) {
|
|
dComIfGp_roomControl_initZone();
|
|
}
|
|
mGameoverStatus = 0;
|
|
}
|
|
|
|
void dComIfGp_checkItemGet(u8 i_itemNo, int param_1) {
|
|
checkItemGet(i_itemNo, param_1);
|
|
}
|
|
|
|
void dComIfG_play_c::itemInit() {
|
|
dMeter2Info_Initialize();
|
|
|
|
JKRExpHeap* heap = mExpHeap2D;
|
|
memset(&mMsgObjectClass, 0, 300);
|
|
mExpHeap2D = heap;
|
|
mOxygen = 600;
|
|
mNowOxygen = 600;
|
|
mMaxOxygen = 600;
|
|
|
|
if (dComIfGs_checkGetItem(HAWK_EYE)) {
|
|
field_0x4f4b = 0;
|
|
} else {
|
|
field_0x4f4b = 21;
|
|
}
|
|
field_0x4f4c = 7;
|
|
|
|
mNowVibration = dComIfGs_getOptVibration();
|
|
}
|
|
|
|
void dComIfG_play_c::setItemBombNumCount(u8 i_item, s16 count) {
|
|
mItemBombNumCount[i_item] += count;
|
|
}
|
|
|
|
s16 dComIfG_play_c::getItemBombNumCount(u8 i_item) {
|
|
return mItemBombNumCount[i_item];
|
|
}
|
|
|
|
void dComIfG_play_c::clearItemBombNumCount(u8 i_item) {
|
|
mItemBombNumCount[i_item] = 0;
|
|
}
|
|
|
|
void dComIfG_play_c::setNowVibration(u8 vib_status) {
|
|
mNowVibration = vib_status;
|
|
}
|
|
|
|
u32 dComIfG_play_c::getNowVibration() {
|
|
return mNowVibration;
|
|
}
|
|
|
|
void dComIfG_play_c::setStartStage(dStage_startStage_c* p_startStage) {
|
|
mLayerOld = mStartStage.getLayer();
|
|
mStartStage = *p_startStage;
|
|
}
|
|
|
|
/* 8002B3F4-8002B434 025D34 0040+00 1/1 0/0 0/0 .text dComIfG_get_timelayer__FPi */
|
|
void dComIfG_get_timelayer(int* layer) {
|
|
if (dKy_daynight_check()) {
|
|
*layer += 1;
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80378F38-80378F38 005598 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_80378F38 = "D_MN11";
|
|
SECTION_DEAD static char const* const stringBase_80378F3F = "F_SP114";
|
|
SECTION_DEAD static char const* const stringBase_80378F47 = "F_SP108";
|
|
SECTION_DEAD static char const* const stringBase_80378F4F = "R_SP108";
|
|
SECTION_DEAD static char const* const stringBase_80378F57 = "F_SP109";
|
|
SECTION_DEAD static char const* const stringBase_80378F5F = "F_SP111";
|
|
SECTION_DEAD static char const* const stringBase_80378F67 = "R_SP109";
|
|
SECTION_DEAD static char const* const stringBase_80378F6F = "R_SP209";
|
|
SECTION_DEAD static char const* const stringBase_80378F77 = "F_SP110";
|
|
SECTION_DEAD static char const* const stringBase_80378F7F = "R_SP110";
|
|
SECTION_DEAD static char const* const stringBase_80378F87 = "F_SP115";
|
|
SECTION_DEAD static char const* const stringBase_80378F8F = "F_SP116";
|
|
SECTION_DEAD static char const* const stringBase_80378F97 = "R_SP116";
|
|
SECTION_DEAD static char const* const stringBase_80378F9F = "R_SP115";
|
|
SECTION_DEAD static char const* const stringBase_80378FA7 = "F_SP113";
|
|
SECTION_DEAD static char const* const stringBase_80378FAF = "F_SP126";
|
|
SECTION_DEAD static char const* const stringBase_80378FB7 = "F_SP124";
|
|
SECTION_DEAD static char const* const stringBase_80378FBF = "F_SP112";
|
|
SECTION_DEAD static char const* const stringBase_80378FC7 = "F_SP103";
|
|
SECTION_DEAD static char const* const stringBase_80378FCF = "R_SP01";
|
|
SECTION_DEAD static char const* const stringBase_80378FD6 = "F_SP104";
|
|
SECTION_DEAD static char const* const stringBase_80378FDE = "F_SP00";
|
|
SECTION_DEAD static char const* const stringBase_80378FE5 = "F_SP121";
|
|
SECTION_DEAD static char const* const stringBase_80378FED = "F_SP122";
|
|
SECTION_DEAD static char const* const stringBase_80378FF5 = "F_SP128";
|
|
SECTION_DEAD static char const* const stringBase_80378FFD = "R_SP160";
|
|
SECTION_DEAD static char const* const stringBase_80379005 = "F_SP117";
|
|
SECTION_DEAD static char const* const stringBase_8037900D = "F_SP118";
|
|
SECTION_DEAD static char const* const stringBase_80379015 = "D_SB10";
|
|
SECTION_DEAD static char const* const stringBase_8037901C = "R_SP107";
|
|
SECTION_DEAD static char const* const stringBase_80379024 = "D_MN09";
|
|
SECTION_DEAD static char const* const stringBase_8037902B = "F_SP127";
|
|
SECTION_DEAD static char const* const stringBase_80379033 = "R_SP127";
|
|
SECTION_DEAD static char const* const stringBase_8037903B = "D_MN08A";
|
|
#pragma pop
|
|
|
|
/* 8002B434-8002C950 025D74 151C+00 1/1 1/1 0/0 .text
|
|
* getLayerNo_common_common__14dComIfG_play_cFPCcii */
|
|
// only issue should be regalloc
|
|
#ifdef NONMATCHING
|
|
int dComIfG_play_c::getLayerNo_common_common(const char* stageName, int roomId, int layer) {
|
|
if (layer < 0) {
|
|
layer = -1;
|
|
|
|
// Stage is in a Twilight state
|
|
if (dKy_darkworld_stage_check(stageName, roomId) == 1) {
|
|
layer = 14;
|
|
}
|
|
|
|
if (layer < 13) {
|
|
// Stage is Snowpeak Ruins or Snowpeak
|
|
if (!strcmp(stageName, "D_MN11") || !strcmp(stageName, "F_SP114")) {
|
|
// Cleared Snowpeak Ruins
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[266])) {
|
|
layer = 3;
|
|
}
|
|
|
|
// Talked with Yeta after giving Cheese
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[163])) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Talked with Yeta after giving Pumpkin
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[162])) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Faron Woods
|
|
else if (!strcmp(stageName, "F_SP108")) {
|
|
// Cleared Snowpeak Ruins
|
|
if (dComIfGs_isEventBit(0x2008)) {
|
|
layer = 5;
|
|
}
|
|
|
|
// Completed Midna's Desperate Hour
|
|
else if (dComIfGs_isEventBit(0x1E08)) {
|
|
layer = 3;
|
|
}
|
|
|
|
// Cleared Forest Temple
|
|
else if (dComIfGs_isEventBit(0x0602)) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Haven't finished Ordon Day 2
|
|
else if (!dComIfGs_isEventBit(0x4510)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Faron Woods Interiors
|
|
else if (!strcmp(stageName, "R_SP108")) {
|
|
// Cleared Forest Temple
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[55])) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Haven't finished Ordon Day 2
|
|
else if (!dComIfGs_isEventBit(0x4510)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Kakariko Village or Kakariko Graveyard
|
|
else if (!strcmp(stageName, "F_SP109") || !strcmp(stageName, "F_SP111")) {
|
|
// Obtained Zora's Armor
|
|
if (dComIfGs_isEventBit(0x0804)) {
|
|
layer = 2;
|
|
dComIfG_get_timelayer(&layer);
|
|
}
|
|
|
|
// Finished Telma Wagon Escort
|
|
else if (dComIfGs_isEventBit(0x0810)) {
|
|
layer = 4;
|
|
}
|
|
|
|
// Watched cutscene after leaving Goron Mines
|
|
else if (dComIfGs_isEventBit(0x1320)) {
|
|
layer = 2;
|
|
dComIfG_get_timelayer(&layer);
|
|
}
|
|
|
|
// Cleared Goron Mines
|
|
else if (dComIfGs_isEventBit(0x0701)) {
|
|
layer = 12;
|
|
}
|
|
|
|
// Defeated King Bulblin 1
|
|
else if (dComIfGs_isEventBit(0x0A08)) {
|
|
layer = 2;
|
|
dComIfG_get_timelayer(&layer);
|
|
}
|
|
|
|
// King Bulblin 1 trigger activated
|
|
else if (dComIfGs_isEventBit(0x0608)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Kakariko Village Interiors or Graveyard Interiors
|
|
else if (!strcmp(stageName, "R_SP109") || !strcmp(stageName, "R_SP209")) {
|
|
// Stage is Kakariko Interiors and room is Barnes shop and Cleared Lakebed Temple
|
|
if (!strcmp(stageName, "R_SP109") && roomId == 1 && dComIfGs_isEventBit(0x0904)) {
|
|
layer = 4;
|
|
dComIfG_get_timelayer(&layer);
|
|
|
|
} else {
|
|
// Defeated King Bulblin 1
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[85])) {
|
|
layer = 2;
|
|
dComIfG_get_timelayer(&layer);
|
|
}
|
|
|
|
// King Bulblin 1 trigger activated
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stage is Death Mountain
|
|
else if (!strcmp(stageName, "F_SP110")) {
|
|
// Cleared Goron Mines
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) {
|
|
layer = 2;
|
|
}
|
|
}
|
|
|
|
// Stage is Death Mountain Interiors
|
|
else if (!strcmp(stageName, "R_SP110")) {
|
|
// Returned Wood Statue to Ilia
|
|
if (dComIfGs_isEventBit(0x2320)) {
|
|
layer = 3;
|
|
}
|
|
|
|
// Cleared Temple of Time
|
|
else if (dComIfGs_isEventBit(0x2004)) {
|
|
layer = 4;
|
|
}
|
|
|
|
// Obtained Master Sword
|
|
else if (dComIfGs_isEventBit(0x2020)) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Cleared Goron Mines
|
|
else if (dComIfGs_isEventBit(0x0701)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Lake Hylia, Castle Town, Telma's Bar, or R_SP115 (removed)
|
|
else if (!strcmp(stageName, "F_SP115") || !strcmp(stageName, "F_SP116") ||
|
|
(!strcmp(stageName, "R_SP116") && roomId == 5) ||
|
|
!strcmp(stageName, "R_SP115")) {
|
|
// Stage is Lake Hylia and room is Lake
|
|
if (!strcmp(stageName, "F_SP115") && roomId == 0) {
|
|
// Repaired Sky Cannon
|
|
if (dComIfGs_isEventBit(0x3B08)) {
|
|
layer = 3;
|
|
}
|
|
|
|
// Warped Sky Cannon to Lake Hylia
|
|
else if (dComIfGs_isEventBit(0x3120)) {
|
|
layer = 1;
|
|
}
|
|
|
|
// Cleared Lakebed Temple
|
|
else if (dComIfGs_isEventBit(0x0904)) {
|
|
layer = 2;
|
|
}
|
|
}
|
|
|
|
// Stage is Telma's Bar and room is Bar and Obtained Master Sword
|
|
else if (!strcmp(stageName, "R_SP116") && roomId == 5 &&
|
|
dComIfGs_isEventBit(0x2020)) {
|
|
layer = 4;
|
|
}
|
|
|
|
// Completed Midna's Desperate Hour and Stage is Castle Town
|
|
else if (dComIfGs_isEventBit(0x1E08) && !strcmp(stageName, "F_SP116")) {
|
|
// Room is not East, South, or North Castle Town
|
|
if (roomId != 4 && roomId != 3 && roomId != 1) {
|
|
layer = 0;
|
|
} else {
|
|
layer = 1;
|
|
}
|
|
} else {
|
|
// Cleared Lakebed Temple
|
|
if (dComIfGs_isEventBit(0x0904)) {
|
|
// Stage is Lake Hylia and room is Fountain and haven't started Midna's
|
|
// Desperate Hour
|
|
if ((!strcmp(stageName, "F_SP115") && roomId == 1) &&
|
|
!dComIfGs_isEventBit(0x0C01)) {
|
|
layer = 9;
|
|
} else {
|
|
layer = 2;
|
|
}
|
|
} else {
|
|
// Stage is Castle Town and room is South Castle Town and Finished Telma
|
|
// Wagon Escort
|
|
if ((!strcmp(stageName, "F_SP116") && roomId == 3) &&
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[68])) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stage is Zora's Domain
|
|
else if (!strcmp(stageName, "F_SP113")) {
|
|
// Cleared Snowpeak Ruins
|
|
if (dComIfGs_isEventBit(0x2008)) {
|
|
layer = 2;
|
|
}
|
|
}
|
|
|
|
// Stage is Upper Zora's River
|
|
else if (!strcmp(stageName, "F_SP126")) {
|
|
// Unlocked Iza's River Ride (1)
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[95])) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Gerudo Desert and room is Desert
|
|
else if (!strcmp(stageName, "F_SP124") && roomId == 0) {
|
|
layer = 8;
|
|
|
|
// Used Sky Cannon to go to Desert
|
|
if (dComIfGs_isEventBit(0x4008)) {
|
|
layer = 0;
|
|
}
|
|
}
|
|
|
|
// Stage is Zora's River
|
|
else if (!strcmp(stageName, "F_SP112")) {
|
|
// Unlocked Iza's River Ride (1)
|
|
if (dComIfGs_isEventBit(0x0B01)) {
|
|
layer = 1;
|
|
}
|
|
|
|
// Started Iza's River Ride (1)
|
|
else if (dComIfGs_isEventBit(0x0902)) {
|
|
layer = 2;
|
|
}
|
|
}
|
|
|
|
// Stage is Ordon Village
|
|
else if (!strcmp(stageName, "F_SP103")) {
|
|
// Room is Main Village
|
|
if (roomId == 0) {
|
|
// Tamed Epona
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[56])) {
|
|
layer = 4;
|
|
dComIfG_get_timelayer(&layer);
|
|
}
|
|
|
|
// Cleared Faron Twilight
|
|
else if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
dComIfG_get_timelayer(&layer);
|
|
}
|
|
|
|
// Escaped Hyrule Castle Sewers (1st Time)
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) {
|
|
layer = 1;
|
|
}
|
|
|
|
// Finished Ordon Day 2
|
|
else if (dComIfGs_isEventBit(0x4510)) {
|
|
layer = 7;
|
|
}
|
|
|
|
// Finished Ordon Day 1
|
|
else if (dComIfGs_isEventBit(0x4A40)) {
|
|
layer = 0;
|
|
} else {
|
|
layer = 6;
|
|
}
|
|
}
|
|
|
|
// Room is Outside Link's House
|
|
else if (roomId == 1) {
|
|
// Cleared Faron Twilight
|
|
if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Escaped Hyrule Castle Sewers (1st Time)
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) {
|
|
layer = 1;
|
|
}
|
|
|
|
// Finished Ordon Day 2
|
|
else if (dComIfGs_isEventBit(0x4510)) {
|
|
layer = 0;
|
|
}
|
|
|
|
// Finished Ordon Day 1
|
|
else if (dComIfGs_isEventBit(0x4A40)) {
|
|
layer = 4;
|
|
} else {
|
|
layer = 3;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stage is Ordon Village Interiors
|
|
else if (!strcmp(stageName, "R_SP01")) {
|
|
// Room is Sera's Shop
|
|
if (roomId == 1) {
|
|
// Cleared Faron Twilight
|
|
if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
}
|
|
}
|
|
|
|
// Room is Shield house
|
|
else if (roomId == 2) {
|
|
// Watched cutscene after defeating King Bulblin 1
|
|
if (dComIfGs_isEventBit(0x0780)) {
|
|
layer = 3;
|
|
}
|
|
|
|
// Cleared Faron Twilight
|
|
else if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Escaped Hyrule Castle Sewers (1st Time)
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Room is Rusl and Uli's house
|
|
else if (roomId == 5) {
|
|
// Tamed Epona
|
|
if (dComIfGs_isEventBit(0x0601)) {
|
|
layer = 4;
|
|
}
|
|
|
|
// Cleared Faron Twilight
|
|
else if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stage is Ordon Spring
|
|
else if (!strcmp(stageName, "F_SP104")) {
|
|
// Room is Ordon Spring
|
|
if (roomId == 1) {
|
|
// Cleared Faron Twilight
|
|
if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Escaped Hyrule Castle Sewers (1st Time)
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) {
|
|
layer = 4;
|
|
}
|
|
|
|
// Finished Ordon Day 2
|
|
else if (dComIfGs_isEventBit(0x4510)) {
|
|
layer = 0;
|
|
}
|
|
|
|
// Finished Ordon Day 1
|
|
else if (dComIfGs_isEventBit(0x4A20)) {
|
|
layer = 3;
|
|
} else {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Cleared Faron Twilight
|
|
else if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Escaped Hyrule Castle Sewers (1st Time)
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) {
|
|
layer = 4;
|
|
}
|
|
}
|
|
|
|
// Stage is Ordon Ranch
|
|
else if (!strcmp(stageName, "F_SP00")) {
|
|
// Cleared Faron Twilight
|
|
if (dComIfGs_isDarkClearLV(0)) {
|
|
layer = 2;
|
|
dComIfG_get_timelayer(&layer);
|
|
}
|
|
|
|
// Escaped Hyrule Castle Sewers (1st Time)
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) {
|
|
layer = 1;
|
|
}
|
|
|
|
// Watched cutscene after herding goats on Ordon Day 3
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[169])) {
|
|
layer = 10;
|
|
}
|
|
|
|
// Finished Ordon Day 2
|
|
else if (dComIfGs_isEventBit(0x4510)) {
|
|
layer = 9;
|
|
}
|
|
|
|
// Finished Ordon Day 1
|
|
else if (dComIfGs_isEventBit(0x4A40)) {
|
|
layer = 11;
|
|
} else {
|
|
layer = 12;
|
|
}
|
|
}
|
|
|
|
// Stage is Hyrule Field
|
|
else if (!strcmp(stageName, "F_SP121")) {
|
|
// Completed Midna's Desperate Hour
|
|
if (dComIfGs_isEventBit(0x1E08)) {
|
|
layer = 6;
|
|
}
|
|
|
|
// Started Midna's Desperate Hour
|
|
else if (dComIfGs_isEventBit(0x0C01)) {
|
|
layer = 4;
|
|
}
|
|
|
|
// Finished Telma Wagon Escort
|
|
else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[68])) {
|
|
layer = 0;
|
|
}
|
|
|
|
else if (dComIfGs_isTmpBit(0x0601)) {
|
|
if (dComIfGs_isTmpBit(0x0602)) {
|
|
layer = 2;
|
|
} else {
|
|
layer = 3;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stage is Outside Castle Town
|
|
else if (!strcmp(stageName, "F_SP122")) {
|
|
// Room is Outside Castle Town - West
|
|
if (roomId == 8) {
|
|
// Completed Midna's Desperate Hour
|
|
if (dComIfGs_isEventBit(0x1E08)) {
|
|
layer = 6;
|
|
}
|
|
|
|
// Started Midna's Desperate Hour
|
|
else if (dComIfGs_isEventBit(0x0C01)) {
|
|
layer = 4;
|
|
}
|
|
}
|
|
|
|
// Room is Outside Castle Town - South
|
|
else if (roomId == 16) {
|
|
// Obtained Wood Statue
|
|
if (dComIfGs_isEventBit(0x2204)) {
|
|
layer = 6;
|
|
}
|
|
|
|
// Talked to Louise after getting Medicine Scent
|
|
else if (dComIfGs_isEventBit(0x2102)) {
|
|
layer = 1;
|
|
}
|
|
|
|
// Completed Midna's Desperate Hour
|
|
else if (dComIfGs_isEventBit(0x1E08)) {
|
|
layer = 6;
|
|
}
|
|
|
|
// Started Midna's Desperate Hour
|
|
else if (dComIfGs_isEventBit(0x0C01)) {
|
|
layer = 4;
|
|
}
|
|
}
|
|
|
|
// Room is Outside Castle Town - East
|
|
else if (roomId == 17) {
|
|
// Completed Midna's Desperate Hour
|
|
if (dComIfGs_isEventBit(0x1E08)) {
|
|
layer = 0;
|
|
}
|
|
|
|
// Started Midna's Desperate Hour
|
|
else if (dComIfGs_isEventBit(0x0C01)) {
|
|
layer = 4;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stage is Hidden Village
|
|
else if (!strcmp(stageName, "F_SP128")) {
|
|
if (dComIfGs_isEventBit(0x2320)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Castle Town Interiors
|
|
else if (!strcmp(stageName, "R_SP160")) {
|
|
// Room is Jovani's house
|
|
if (roomId == 5) {
|
|
// Completed Midna's Desperate Hour
|
|
if (dComIfGs_isEventBit(0x1E08)) {
|
|
layer = 0;
|
|
} else {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Fundraised Malo Mart Castle Town branch
|
|
else if (dComIfGs_isEventBit(0x2210)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Sacred Grove
|
|
else if (!strcmp(stageName, "F_SP117")) {
|
|
// Cleared Snowpeak Ruins
|
|
if (dComIfGs_isEventBit(0x2008)) {
|
|
layer = 2;
|
|
}
|
|
}
|
|
|
|
// Stage is Bulblin Camp
|
|
else if (!strcmp(stageName, "F_SP118")) {
|
|
// Fixed the Mirror of Twilight
|
|
if (dComIfGs_isEventBit(0x2B08)) {
|
|
layer = 3;
|
|
}
|
|
|
|
// Cleared Arbiter's Grounds
|
|
else if (dComIfGs_isEventBit(0x2010)) {
|
|
layer = 2;
|
|
}
|
|
|
|
// Escaped the burning tent
|
|
else if (dComIfGs_isEventBit(0x0B40)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Faron Woods Cave
|
|
else if (!strcmp(stageName, "D_SB10")) {
|
|
// Finished Ordon Day 2
|
|
if (dComIfGs_isEventBit(0x4510)) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Hyrule Castle Sewers
|
|
else if (!strcmp(stageName, "R_SP107")) {
|
|
if (dComIfGs_isTransformLV(3)) {
|
|
layer = 13;
|
|
}
|
|
}
|
|
|
|
// Stage is Hyrule Castle
|
|
else if (!strcmp(stageName, "D_MN09")) {
|
|
// Room is not Entrance, Outside Left Wing, or Outside Right Wing
|
|
if (roomId != 11 && roomId != 13 && roomId != 14) {
|
|
layer = 1;
|
|
}
|
|
}
|
|
|
|
// Stage is Fishing Pond or Hena's Hut
|
|
else if (!strcmp(stageName, "F_SP127") || !strcmp(stageName, "R_SP127")) {
|
|
switch (g_env_light[0x12fe]) {
|
|
case 1:
|
|
layer = 0;
|
|
break;
|
|
case 2:
|
|
layer = 1;
|
|
break;
|
|
case 3:
|
|
layer = 2;
|
|
break;
|
|
case 4:
|
|
layer = 3;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (layer == 14) {
|
|
int tmp = layer;
|
|
// Warped meteor to Zora's Domain
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[65])) {
|
|
// Stage is Zora's River, Zora's Domain, Lake Hylia, Castle Town, Telma's Bar, R_SP115,
|
|
// Hyrule Field, Upper Zora's River, or Outside Castle Town
|
|
if (!strcmp(stageName, "F_SP112") || !strcmp(stageName, "F_SP113") ||
|
|
!strcmp(stageName, "F_SP115") || !strcmp(stageName, "F_SP116") ||
|
|
(!strcmp(stageName, "R_SP116") && roomId == 5) || !strcmp(stageName, "R_SP115") ||
|
|
!strcmp(stageName, "F_SP121") || !strcmp(stageName, "F_SP126") ||
|
|
!strcmp(stageName, "F_SP122")) {
|
|
// Stage is Hyrule Field
|
|
if (!strcmp(stageName, "F_SP121")) {
|
|
if (tmp >= 9 && tmp <= 14) {
|
|
layer = 13;
|
|
}
|
|
} else {
|
|
layer = 13;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stage is Hyrule Castle Sewers and room is Prison Cell
|
|
if (!strcmp(stageName, "R_SP107") && roomId == 0) {
|
|
// Haven't been to Hyrule Castle Sewers
|
|
if (!dComIfGs_isEventBit(0x4D08)) {
|
|
layer = 11;
|
|
}
|
|
}
|
|
// Stage and room is Zant Throne Room
|
|
else if (!strcmp(stageName, "D_MN08A") && roomId == 10) {
|
|
// Defeated Zant
|
|
if (dComIfGs_isEventBit(0x5410)) {
|
|
layer = 1;
|
|
} else {
|
|
layer = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
return layer;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm int dComIfG_play_c::getLayerNo_common_common(char const* i_stageName, int i_roomID,
|
|
int i_layerOverride) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/getLayerNo_common_common__14dComIfG_play_cFPCcii.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8002C950-8002C97C 027290 002C+00 1/1 3/3 0/0 .text getLayerNo_common__14dComIfG_play_cFPCcii */
|
|
int dComIfG_play_c::getLayerNo_common(char const* i_stageName, int i_roomID, int i_layerOverride) {
|
|
int layer = getLayerNo_common_common(i_stageName, i_roomID, i_layerOverride);
|
|
|
|
if (layer < 0) {
|
|
layer = 0;
|
|
}
|
|
|
|
return layer;
|
|
}
|
|
|
|
/* 8002C97C-8002C9D8 0272BC 005C+00 1/1 22/22 68/68 .text getLayerNo__14dComIfG_play_cFi
|
|
*/
|
|
int dComIfG_play_c::getLayerNo(int) {
|
|
s32 roomNo = dComIfGp_roomControl_getStayNo();
|
|
|
|
if ((s8)roomNo <= -1) {
|
|
roomNo = dComIfGp_getStartStageRoomNo();
|
|
}
|
|
|
|
return getLayerNo_common(dComIfGp_getStartStageName(), roomNo, dComIfGp_getStartStageLayer());
|
|
}
|
|
|
|
/* 8002C9D8-8002CA1C 027318 0044+00 0/0 1/1 0/0 .text createParticle__14dComIfG_play_cFv
|
|
*/
|
|
void dComIfG_play_c::createParticle() {
|
|
mParticle = new dPa_control_c();
|
|
}
|
|
|
|
/* 8002CA1C-8002CA70 02735C 0054+00 0/0 1/1 0/0 .text createSimpleModel__14dComIfG_play_cFv */
|
|
dSmplMdl_draw_c* dComIfG_play_c::createSimpleModel() {
|
|
if (mSimpleModel == NULL) {
|
|
mSimpleModel = new dSmplMdl_draw_c();
|
|
}
|
|
return mSimpleModel;
|
|
}
|
|
|
|
/* 8002CA70-8002CAC4 0273B0 0054+00 0/0 1/1 0/0 .text deleteSimpleModel__14dComIfG_play_cFv */
|
|
void dComIfG_play_c::deleteSimpleModel() {
|
|
if (mSimpleModel != NULL) {
|
|
delete mSimpleModel;
|
|
mSimpleModel = NULL;
|
|
}
|
|
}
|
|
|
|
/* 8002CAC4-8002CAF0 027404 002C+00 0/0 1/1 0/0 .text drawSimpleModel__14dComIfG_play_cFv
|
|
*/
|
|
void dComIfG_play_c::drawSimpleModel() {
|
|
if (mSimpleModel != NULL) {
|
|
mSimpleModel->draw();
|
|
}
|
|
}
|
|
|
|
/* 8002CAF0-8002CB30 027430 0040+00 0/0 0/0 16/16 .text
|
|
* addSimpleModel__14dComIfG_play_cFP12J3DModelDataiUc */
|
|
int dComIfG_play_c::addSimpleModel(J3DModelData* i_modelData, int roomNo, u8 drawBG) {
|
|
if (mSimpleModel != NULL && mSimpleModel->addModel(i_modelData, roomNo, drawBG)) {
|
|
return 1;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
/* 8002CB30-8002CB68 027470 0038+00 0/0 0/0 16/16 .text
|
|
* removeSimpleModel__14dComIfG_play_cFP12J3DModelDatai */
|
|
int dComIfG_play_c::removeSimpleModel(J3DModelData* i_modelData, int roomNo) {
|
|
if (mSimpleModel != NULL) {
|
|
mSimpleModel->removeModel(i_modelData, roomNo);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 8002CB68-8002CB94 0274A8 002C+00 0/0 0/0 16/16 .text
|
|
* entrySimpleModel__14dComIfG_play_cFP8J3DModeli */
|
|
void dComIfG_play_c::entrySimpleModel(J3DModel* i_model, int roomNo) {
|
|
if (mSimpleModel != NULL) {
|
|
mSimpleModel->entry(i_model, roomNo);
|
|
}
|
|
}
|
|
|
|
void dComIfG_play_c::setTimerNowTimeMs(int time) {
|
|
mTimerInfo.mTimerNowTimeMs = time;
|
|
}
|
|
|
|
int dComIfG_play_c::getTimerNowTimeMs() {
|
|
return mTimerInfo.mTimerNowTimeMs;
|
|
}
|
|
|
|
void dComIfG_play_c::setTimerLimitTimeMs(int time) {
|
|
mTimerInfo.mTimerLimitTimeMs = time;
|
|
}
|
|
|
|
int dComIfG_play_c::getTimerLimitTimeMs() {
|
|
return mTimerInfo.mTimerLimitTimeMs;
|
|
}
|
|
|
|
void dComIfG_play_c::setTimerMode(int mode) {
|
|
mTimerInfo.mTimerMode = mode;
|
|
}
|
|
|
|
int dComIfG_play_c::getTimerMode() {
|
|
return mTimerInfo.mTimerMode;
|
|
}
|
|
|
|
void dComIfG_play_c::setTimerType(u8 type) {
|
|
mTimerInfo.mTimerType = type;
|
|
}
|
|
|
|
u8 dComIfG_play_c::getTimerType() {
|
|
return mTimerInfo.mTimerType;
|
|
}
|
|
|
|
/* 8002CBD4-8002CBDC -00001 0008+00 0/0 0/0 0/0 .text setTimerPtr__14dComIfG_play_cFP8dTimer_c */
|
|
void dComIfG_play_c::setTimerPtr(dTimer_c* ptr) {
|
|
mTimerInfo.mTimerPtr = ptr;
|
|
}
|
|
|
|
/* 8002CBDC-8002CBE4 02751C 0008+00 6/6 7/7 15/15 .text getTimerPtr__14dComIfG_play_cFv
|
|
*/
|
|
dTimer_c* dComIfG_play_c::getTimerPtr() {
|
|
return mTimerInfo.mTimerPtr;
|
|
}
|
|
|
|
void dComIfG_inf_c::ct() {
|
|
mFadeBrightness = 255;
|
|
play.ct();
|
|
mWorldDark = 0;
|
|
field_0x1ddfa = -1;
|
|
field_0x1ddfb = 0;
|
|
field_0x1de00 = 0;
|
|
field_0x1de04 = 0;
|
|
field_0x1de08 = 0;
|
|
field_0x1ddfc = 0;
|
|
field_0x1de09 = 0xFF;
|
|
field_0x1de0a = 0xFF;
|
|
}
|
|
|
|
/* 80450600-80450604 000080 0004+00 0/0 18/18 2/2 .sdata g_clearColor */
|
|
SECTION_SDATA extern GXColor g_clearColor = {0, 0, 0, 0};
|
|
|
|
/* 80450604-80450608 000084 0004+00 1/1 10/10 15/15 .sdata g_blackColor */
|
|
SECTION_SDATA extern GXColor g_blackColor = {0, 0, 0, 255};
|
|
|
|
/* 8002CC54-8002CD44 027594 00F0+00 1/1 1/1 0/0 .text dComIfG_changeOpeningScene__FP11scene_classs
|
|
*/
|
|
int dComIfG_changeOpeningScene(scene_class* scene, s16 procName) {
|
|
dComIfGp_offEnableNextStage();
|
|
dComIfGp_setNextStage("F_SP102", 100, 0, 10);
|
|
mDoAud_setSceneName(dComIfGp_getNextStageName(), dComIfGp_getNextStageRoomNo(),
|
|
dComIfGp_getNextStageLayer());
|
|
dComIfGs_setRestartRoomParam(0);
|
|
|
|
if (mDoGph_gInf_c::getFader()->getStatus() == 1) {
|
|
mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_blackColor);
|
|
}
|
|
|
|
fopScnM_ChangeReq(scene, procName, 0, 30);
|
|
fopScnM_ReRequest(procName, 0);
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8002CD44-8002CDB8 027684 0074+00 0/0 2/2 0/0 .text dComIfG_resetToOpening__FP11scene_class */
|
|
BOOL dComIfG_resetToOpening(scene_class* scene) {
|
|
if (mDoRst::isReturnToMenu() || !mDoRst::isReset() ||
|
|
mDoGph_gInf_c::getFader()->getStatus() == 2) {
|
|
return 0;
|
|
}
|
|
|
|
dComIfG_changeOpeningScene(scene, PROC_OPENING_SCENE);
|
|
mDoAud_bgmStop(30);
|
|
mDoAud_resetProcess();
|
|
return 1;
|
|
}
|
|
|
|
static int phase_1(char* arc_name) {
|
|
if (!dComIfG_setObjectRes(arc_name, 0, NULL)) {
|
|
OSReport_Error("%s.arc Read Error !!\n", arc_name);
|
|
return 5;
|
|
}
|
|
|
|
return 2;
|
|
}
|
|
|
|
/* 8002CE38-8002CEB4 027778 007C+00 1/0 0/0 0/0 .text phase_2__FPc */
|
|
static int phase_2(char* arc_name) {
|
|
int syncStatus = dComIfG_syncObjectRes(arc_name);
|
|
|
|
if (syncStatus < 0) {
|
|
OSReport_Error("%s.arc Sync Read Error !!\n", arc_name);
|
|
return 5;
|
|
} else {
|
|
return syncStatus > 0 ? 0 : 2;
|
|
}
|
|
}
|
|
|
|
/* 8002CEB4-8002CEBC 0277F4 0008+00 1/0 0/0 0/0 .text phase_3__FPc */
|
|
static int phase_3(char*) {
|
|
return 4;
|
|
}
|
|
|
|
/* 8002CEBC-8002CEFC 0277FC 0040+00 0/0 7/7 550/550 .text
|
|
* dComIfG_resLoad__FP30request_of_phase_process_classPCc */
|
|
int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* arc_name) {
|
|
static int (*l_method[3])(void*) = {(int (*)(void*))phase_1, (int (*)(void*))phase_2,
|
|
(int (*)(void*))phase_3};
|
|
|
|
if (i_phase->mPhaseStep == 2) {
|
|
return 4;
|
|
}
|
|
|
|
return dComLbG_PhaseHandler(i_phase, l_method, (void*)arc_name);
|
|
}
|
|
|
|
/* 8002CEFC-8002CF5C 02783C 0060+00 1/0 0/0 0/0 .text phase_01__FP12phaseParam_c */
|
|
static int phase_01(phaseParam_c* phase) {
|
|
if (dComIfG_setObjectRes(phase->mResName, 0, phase->mpHeap) == 0) {
|
|
return 5;
|
|
}
|
|
|
|
return 2;
|
|
}
|
|
|
|
/* 8002CF5C-8002CFB8 02789C 005C+00 1/0 0/0 0/0 .text phase_02__FP12phaseParam_c */
|
|
static int phase_02(phaseParam_c* phase) {
|
|
int syncStatus = dComIfG_syncObjectRes(phase->mResName);
|
|
if (syncStatus < 0) {
|
|
return 5;
|
|
} else {
|
|
return syncStatus > 0 ? 0 : 2;
|
|
}
|
|
}
|
|
|
|
/* 8002CFB8-8002CFC0 0278F8 0008+00 1/0 0/0 0/0 .text phase_03__FP12phaseParam_c */
|
|
static int phase_03(phaseParam_c*) {
|
|
return false;
|
|
}
|
|
|
|
/* 8002CFC0-8002D008 027900 0048+00 1/1 3/3 0/0 .text
|
|
* dComIfG_resLoad__FP30request_of_phase_process_classPCcP7JKRHeap */
|
|
int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* resName, JKRHeap* heap) {
|
|
static int (*l_method[3])(void*) = {(int (*)(void*))phase_01, (int (*)(void*))phase_02,
|
|
(int (*)(void*))phase_03};
|
|
|
|
if (i_phase->mPhaseStep == 2) {
|
|
return 4;
|
|
}
|
|
|
|
phaseParam_c param(resName, heap);
|
|
return dComLbG_PhaseHandler(i_phase, l_method, ¶m);
|
|
}
|
|
|
|
/* 8002D008-8002D06C 027948 0064+00 1/1 10/10 540/540 .text
|
|
* dComIfG_resDelete__FP30request_of_phase_process_classPCc */
|
|
int dComIfG_resDelete(request_of_phase_process_class* i_phase, char const* resName) {
|
|
if (i_phase->mPhaseStep != 2) {
|
|
return 0;
|
|
}
|
|
|
|
dComIfG_deleteObjectResMain(resName);
|
|
i_phase->mPhaseStep = 0;
|
|
return 1;
|
|
}
|
|
|
|
s8 dComIfGp_getReverb(int roomNo) {
|
|
return dStage_roomRead_dt_c_GetReverbStage(*dComIfGp_getStageRoom(), roomNo);
|
|
}
|
|
|
|
inline int dComIfGd_setSimpleShadow(cXyz* pos, f32 param_1, f32 param_2, cXyz* param_3, s16 angle,
|
|
f32 param_5, _GXTexObj* tex) {
|
|
return g_dComIfG_gameInfo.drawlist.setSimpleShadow(pos, param_1, param_2, param_3, angle,
|
|
param_5, tex);
|
|
}
|
|
|
|
/* 8002D0B4-8002D1AC 0279F4 00F8+00 0/0 3/3 34/34 .text
|
|
* dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj */
|
|
int dComIfGd_setSimpleShadow(cXyz* pos, f32 param_1, f32 param_2, cBgS_PolyInfo& param_3, s16 angle,
|
|
f32 param_5, _GXTexObj* tex) {
|
|
if (param_3.ChkSetInfo() && -1000000000.0f != param_1) {
|
|
cM3dGPla plane;
|
|
dComIfG_Bgsp().GetTriPla(param_3, &plane);
|
|
|
|
return dComIfGd_setSimpleShadow(pos, param_1, param_2, &plane.mNormal, angle, param_5, tex);
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/* 8002D1AC-8002D25C 027AEC 00B0+00 0/0 0/0 1/1 .text dComIfGp_getMapTrans__FiPfPfPs */
|
|
int dComIfGp_getMapTrans(int roomNo, f32* transX, f32* transY, s16* angle) {
|
|
dStage_Multi_c* multi = dComIfGp_getMulti();
|
|
if (multi == NULL) {
|
|
return 0;
|
|
}
|
|
|
|
dStage_Mult_info* info = multi->mInfo;
|
|
for (int i = 0; i < multi->field_0x0; i++) {
|
|
if (roomNo == info->mRoomNo) {
|
|
*transX = info->mTransX;
|
|
*transY = info->mTransY;
|
|
*angle = info->mAngle;
|
|
return 1;
|
|
}
|
|
info++;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 8002D25C-8002D2AC 027B9C 0050+00 0/0 3/3 3/3 .text dComIfGp_getRoomCamera__Fi */
|
|
stage_camera_class* dComIfGp_getRoomCamera(int roomNo) {
|
|
dStage_roomStatus_c* status = dComIfGp_roomControl_getStatusRoomDt(roomNo);
|
|
|
|
if (status == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
return status->mRoomDt.getCamera();
|
|
}
|
|
|
|
/* 8002D2AC-8002D2FC 027BEC 0050+00 0/0 3/3 3/3 .text dComIfGp_getRoomArrow__Fi */
|
|
stage_arrow_class* dComIfGp_getRoomArrow(int roomNo) {
|
|
dStage_roomStatus_c* status = dComIfGp_roomControl_getStatusRoomDt(roomNo);
|
|
|
|
if (status == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
return status->mRoomDt.getArrow();
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80378F38-80378F38 005598 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_80379089 = "";
|
|
#pragma pop
|
|
|
|
/* 8002D2FC-8002D554 027C3C 0258+00 2/2 7/7 4/4 .text dComIfGp_setNextStage__FPCcsScScfUliScsii */
|
|
// 1 out of order instruction, small regalloc
|
|
#ifdef NONMATCHING
|
|
void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f32 lastSpeed,
|
|
u32 lastMode, int param_6, s8 wipe, s16 lastAngle, int param_9,
|
|
int param_10) {
|
|
u32 mode = lastMode;
|
|
|
|
if (layer >= 15) {
|
|
layer = -1;
|
|
}
|
|
|
|
if (dComIfGs_isPlayerFieldLastStayFieldDataExistFlag() &&
|
|
daPy_getLinkPlayerActorClass() != NULL) {
|
|
s8 curPoint = (s8)daPy_getLinkPlayerActorClass()->mCurrent.mRoomNo;
|
|
cXyz pos = dMapInfo_n::getMapPlayerPos();
|
|
s16 angle = daPy_getLinkPlayerActorClass()->mCollisionRot.y;
|
|
u8 level = dComIfGp_getNowLevel();
|
|
dComIfGs_setPlayerFieldLastStayInfo(dComIfGp_getStartStageName(), pos, angle, curPoint,
|
|
level);
|
|
}
|
|
|
|
if (!strcmp(stage, "F_SP121") && roomNo == 13 && (point == 99 || point == 98) && layer == 2) {
|
|
dComIfGs_setKeyNum(6, 2);
|
|
} else {
|
|
dComIfGs_setKeyNum(6, 0);
|
|
}
|
|
|
|
if (daAlink_getAlinkActorClass() != NULL) {
|
|
daAlink_getAlinkActorClass()->setLastSceneMode(&mode);
|
|
}
|
|
|
|
if (strcmp(dMeter2Info_getSaveStageName(), "") &&
|
|
strcmp(stage, dMeter2Info_getSaveStageName())) {
|
|
dMeter2Info_setSaveStageName("");
|
|
}
|
|
|
|
u8 wipe_speed;
|
|
switch (param_10) {
|
|
case 0:
|
|
wipe_speed = 26;
|
|
break;
|
|
case 1:
|
|
wipe_speed = 13;
|
|
break;
|
|
case 2:
|
|
wipe_speed = 6;
|
|
break;
|
|
case 3:
|
|
wipe_speed = 1;
|
|
break;
|
|
default:
|
|
wipe_speed = 26;
|
|
break;
|
|
}
|
|
|
|
g_dComIfG_gameInfo.play.setNextStage(stage, roomNo, point, layer, wipe, wipe_speed);
|
|
g_dComIfG_gameInfo.info.getRestart().setLastSceneInfo(lastSpeed, mode, lastAngle);
|
|
if (param_6 != 0) {
|
|
dComIfGs_setStartPoint(point);
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f32 lastSpeed,
|
|
u32 lastMode, int param_6, s8 wipe, s16 lastAngle, int param_9,
|
|
int param_10) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGp_setNextStage__FPCcsScScfUliScsii.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer) {
|
|
dComIfGp_setNextStage(stage, point, roomNo, layer, 0.0f, 0, 1, 0, 0, 1, 0);
|
|
}
|
|
|
|
BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
|
|
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
|
|
return dComIfGs_isTbox(i_no);
|
|
} else {
|
|
return dComIfGs_isSaveTbox(i_stageNo, i_no);
|
|
}
|
|
}
|
|
|
|
void dComIfGs_onStageSwitch(int i_stageNo, int i_no) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
|
|
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
|
|
dComIfGs_onSwitch(i_no, -1);
|
|
}
|
|
|
|
dComIfGs_onSaveSwitch(i_stageNo, i_no);
|
|
}
|
|
|
|
void dComIfGs_offStageSwitch(int i_stageNo, int i_no) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
|
|
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
|
|
dComIfGs_offSwitch(i_no, -1);
|
|
}
|
|
|
|
dComIfGs_offSaveSwitch(i_stageNo, i_no);
|
|
}
|
|
|
|
BOOL dComIfGs_isStageSwitch(int i_stageNo, int i_no) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
|
|
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
|
|
return dComIfGs_isSwitch(i_no, -1);
|
|
} else {
|
|
return dComIfGs_isSaveSwitch(i_stageNo, i_no);
|
|
}
|
|
}
|
|
|
|
void dComIfGs_onStageBossEnemy(int i_stageNo) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
|
|
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
|
|
dComIfGs_onStageBossEnemy();
|
|
}
|
|
|
|
g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().onStageBossEnemy();
|
|
}
|
|
|
|
s32 dComIfGs_isDungeonItemWarp(int i_stageNo) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
|
|
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
|
|
return dComIfGs_isDungeonItemWarp();
|
|
} else {
|
|
return g_dComIfG_gameInfo.info.getSavedata()
|
|
.getSave(i_stageNo)
|
|
.getBit()
|
|
.isDungeonItemWarp();
|
|
}
|
|
}
|
|
|
|
void dComIfGs_BossLife_public_Set(s8 param_0) {
|
|
g_dComIfG_gameInfo.field_0x1ddfa = param_0;
|
|
}
|
|
|
|
s8 dComIfGs_BossLife_public_Get() {
|
|
return g_dComIfG_gameInfo.field_0x1ddfa;
|
|
}
|
|
|
|
void dComIfGs_sense_type_change_Set(s8 param_0) {
|
|
g_dComIfG_gameInfo.field_0x1ddfa = param_0;
|
|
}
|
|
|
|
s8 dComIfGs_sense_type_change_Get() {
|
|
return g_dComIfG_gameInfo.field_0x1ddfa;
|
|
}
|
|
|
|
inline void dComIfGs_onSvZoneSwitch(int zoneNo, int swBit) {
|
|
g_dComIfG_gameInfo.info.getZone(zoneNo).getZoneBit().onSwitch(swBit);
|
|
}
|
|
|
|
/* 8002D94C-8002D9B0 02828C 0064+00 0/0 1/1 17/17 .text dComIfGs_onZoneSwitch__Fii */
|
|
#ifdef NONMATCHING
|
|
void dComIfGs_onZoneSwitch(int swBit, int roomNo) {
|
|
if (roomNo < 0) {
|
|
return;
|
|
}
|
|
|
|
if (dComIfGp_roomControl_getStayNo() >= 0) {
|
|
int zoneNo = dStage_roomControl_c::getZoneNo(roomNo);
|
|
dComIfGs_onSvZoneSwitch(zoneNo, swBit);
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_onZoneSwitch(int swBit, int roomNo) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_onZoneSwitch__Fii.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
int dStage_roomControl_c::getZoneNo(int i_roomNo) {
|
|
return mStatus[i_roomNo].getZoneNo();
|
|
}
|
|
|
|
/* 8002D9CC-8002DA30 02830C 0064+00 0/0 1/1 1/1 .text dComIfGs_offZoneSwitch__Fii */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_offZoneSwitch(int param_0, int param_1) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_offZoneSwitch__Fii.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002DA30-8002DA9C 028370 006C+00 0/0 1/1 10/10 .text dComIfGs_isZoneSwitch__Fii */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_isZoneSwitch(int param_0, int param_1) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_isZoneSwitch__Fii.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002DA9C-8002DB00 0283DC 0064+00 0/0 1/1 51/51 .text dComIfGs_onOneZoneSwitch__Fii */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_onOneZoneSwitch(int param_0, int param_1) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_onOneZoneSwitch__Fii.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002DB00-8002DB64 028440 0064+00 0/0 1/1 17/17 .text dComIfGs_offOneZoneSwitch__Fii */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_offOneZoneSwitch(int param_0, int param_1) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_offOneZoneSwitch__Fii.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002DB64-8002DBD0 0284A4 006C+00 0/0 5/5 13/13 .text dComIfGs_isOneZoneSwitch__Fii */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm BOOL dComIfGs_isOneZoneSwitch(int param_0, int param_1) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_isOneZoneSwitch__Fii.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002DBD0-8002DC3C 028510 006C+00 0/0 1/1 0/0 .text dComIfGs_isZoneItem__Fii */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_isZoneItem(int param_0, int param_1) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_isZoneItem__Fii.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002DC3C-8002DCA8 02857C 006C+00 0/0 1/1 0/0 .text dComIfGs_isOneZoneItem__Fii */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_isOneZoneItem(int param_0, int param_1) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_isOneZoneItem__Fii.s"
|
|
}
|
|
#pragma pop
|
|
|
|
u16 dComIfGs_getMaxLifeGauge() {
|
|
return (dComIfGs_getMaxLife() / 5) * 4;
|
|
}
|
|
|
|
void dComIfGs_setSelectItemIndex(int i_no, u8 item_index) {
|
|
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectItemIndex(i_no, item_index);
|
|
dComIfGp_setSelectItem(i_no);
|
|
}
|
|
|
|
void dComIfGs_setMixItemIndex(int i_no, u8 item_index) {
|
|
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setMixItemIndex(i_no, item_index);
|
|
}
|
|
|
|
/* 8002DD3C-8002DDC8 02867C 008C+00 3/3 1/1 0/0 .text dComIfGs_getSelectMixItemNoArrowIndex__Fi */
|
|
u8 dComIfGs_getSelectMixItemNoArrowIndex(int index) {
|
|
u8 item_index = dComIfGs_getSelectItemIndex(index);
|
|
u8 mix_index = dComIfGs_getMixItemIndex(index);
|
|
|
|
if (item_index >= SLOT_15 && item_index < SLOT_18) {
|
|
return item_index;
|
|
}
|
|
|
|
if (mix_index != NO_ITEM && mix_index >= SLOT_15 && mix_index < SLOT_18) {
|
|
return mix_index;
|
|
}
|
|
|
|
return NO_ITEM;
|
|
}
|
|
|
|
u8 dComIfGs_getMixItemIndex(int i_no) {
|
|
return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getMixItemIndex(i_no);
|
|
}
|
|
|
|
/* 8002DDF4-8002DF1C 028734 0128+00 1/1 13/13 0/0 .text dComIfGp_setSelectItem__Fi */
|
|
void dComIfGp_setSelectItem(int index) {
|
|
if (index == SELECT_ITEM_DOWN) {
|
|
if (dComIfGs_getSelectItemIndex(index) != NO_ITEM) {
|
|
u8 selectItemIdx = dComIfGs_getSelectItemIndex(index);
|
|
g_dComIfG_gameInfo.play.setSelectItem(index, selectItemIdx);
|
|
|
|
if (selectItemIdx == NO_ITEM) {
|
|
dComIfGs_setSelectItemIndex(index, NO_ITEM);
|
|
}
|
|
} else {
|
|
g_dComIfG_gameInfo.play.setSelectItem(index, NO_ITEM);
|
|
}
|
|
} else if (dComIfGs_getSelectItemIndex(index) != NO_ITEM) {
|
|
u8 item = dComIfGs_getItem(dComIfGs_getSelectItemIndex(index), false);
|
|
g_dComIfG_gameInfo.play.setSelectItem(index, item);
|
|
|
|
if (item == NO_ITEM) {
|
|
dComIfGs_setSelectItemIndex(index, NO_ITEM);
|
|
}
|
|
} else {
|
|
g_dComIfG_gameInfo.play.setSelectItem(index, NO_ITEM);
|
|
}
|
|
}
|
|
|
|
/* 8002DF1C-8002E048 02885C 012C+00 4/4 19/19 0/0 .text dComIfGp_getSelectItem__Fi */
|
|
u8 dComIfGp_getSelectItem(int index) {
|
|
u8 playItem = g_dComIfG_gameInfo.play.getSelectItem(index);
|
|
|
|
if ((index == SELECT_ITEM_X || index == SELECT_ITEM_Y) &&
|
|
dComIfGs_getMixItemIndex(index) != NO_ITEM) {
|
|
u8 saveItem = dComIfGs_getItem(dComIfGs_getMixItemIndex(index), false);
|
|
|
|
if (saveItem == BOW) {
|
|
saveItem = playItem;
|
|
playItem = BOW;
|
|
} else if (saveItem == FISHING_ROD_1) {
|
|
saveItem = playItem;
|
|
playItem = FISHING_ROD_1;
|
|
}
|
|
|
|
if (playItem == BOW) {
|
|
switch (saveItem) {
|
|
case NORMAL_BOMB:
|
|
case WATER_BOMB:
|
|
case POKE_BOMB:
|
|
playItem = BOMB_ARROW;
|
|
break;
|
|
case HAWK_EYE:
|
|
playItem = HAWK_ARROW;
|
|
break;
|
|
}
|
|
} else if (playItem == FISHING_ROD_1) {
|
|
switch (saveItem) {
|
|
case BEE_CHILD:
|
|
playItem = BEE_ROD;
|
|
break;
|
|
case WORM:
|
|
playItem = WORM_ROD;
|
|
break;
|
|
case ZORAS_JEWEL:
|
|
playItem = JEWEL_ROD;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return playItem;
|
|
}
|
|
|
|
void dComIfGp_mapShow() {
|
|
dComIfGs_offEventBit(0x1D01);
|
|
}
|
|
|
|
void dComIfGp_mapHide() {
|
|
dComIfGs_onEventBit(0x1D01);
|
|
}
|
|
|
|
bool dComIfGp_checkMapShow() {
|
|
return !dComIfGs_isEventBit(0x1D01);
|
|
}
|
|
|
|
/* 8002E0E0-8002E188 028A20 00A8+00 0/0 9/9 0/0 .text dComIfGp_setHeapLockFlag__FUc */
|
|
s32 dComIfGp_setHeapLockFlag(u8 flag) {
|
|
if (flag == 7 || flag == 8) {
|
|
if (!dComIfGp_isHeapLockFlag()) {
|
|
dComIfGp_createSubExpHeap2D();
|
|
}
|
|
g_dComIfG_gameInfo.play.setHeapLockFlag(5);
|
|
|
|
int heapIndex = dComIfGp_checkEmptySubHeap2D();
|
|
if (heapIndex >= 0) {
|
|
dComIfGp_setSubHeapLockFlag(heapIndex, flag);
|
|
}
|
|
} else if (flag == 0) {
|
|
dComIfGp_offHeapLockFlag(0);
|
|
} else {
|
|
g_dComIfG_gameInfo.play.setHeapLockFlag(flag);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
s32 dComIfGp_offHeapLockFlag(int flag) {
|
|
if (dComIfGp_isHeapLockFlag() == 5) {
|
|
if (flag == 7 || flag == 8) {
|
|
int heapIndex = dComIfGp_searchUseSubHeap2D(flag);
|
|
if (heapIndex >= 0) {
|
|
dComIfGp_setSubHeapLockFlag(heapIndex, 0);
|
|
}
|
|
|
|
if (!dComIfGp_getSubHeapLockFlag(0) && !dComIfGp_getSubHeapLockFlag(1)) {
|
|
dComIfGp_destroySubExpHeap2D();
|
|
g_dComIfG_gameInfo.play.offHeapLockFlag();
|
|
}
|
|
}
|
|
} else {
|
|
g_dComIfG_gameInfo.play.offHeapLockFlag();
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
void dComIfGp_createSubExpHeap2D() {
|
|
u32 size = dComIfGp_getExpHeap2D()->getTotalFreeSize() * (2.0f / 5.0f);
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
if (dComIfGp_getSubExpHeap2D(i) == NULL) {
|
|
JKRExpHeap* i_heap = JKRExpHeap::create(size, dComIfGp_getExpHeap2D(), false);
|
|
dComIfGp_setSubExpHeap2D(i, i_heap);
|
|
}
|
|
}
|
|
}
|
|
|
|
void dComIfGp_destroySubExpHeap2D() {
|
|
for (int i = 0; i < 2; i++) {
|
|
JKRExpHeap* heap = dComIfGp_getSubExpHeap2D(i);
|
|
if (heap != NULL) {
|
|
mDoExt_destroyExpHeap(heap);
|
|
dComIfGp_setSubExpHeap2D(i, NULL);
|
|
}
|
|
}
|
|
}
|
|
|
|
int dComIfGp_checkEmptySubHeap2D() {
|
|
if (dComIfGp_isHeapLockFlag() == 5) {
|
|
for (int i = 0; i < 2; i++) {
|
|
if (dComIfGp_getSubHeapLockFlag(i) == 0) {
|
|
return i;
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int dComIfGp_searchUseSubHeap2D(int flag) {
|
|
if (dComIfGp_isHeapLockFlag() == 5) {
|
|
for (int i = 0; i < 2; i++) {
|
|
if (flag == dComIfGp_getSubHeapLockFlag(i)) {
|
|
return i;
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
JKRExpHeap* dComIfGp_getSubHeap2D(int flag) {
|
|
if (dComIfGp_isHeapLockFlag() == 5) {
|
|
for (int i = 0; i < 2; i++) {
|
|
if (flag == dComIfGp_getSubHeapLockFlag(i)) {
|
|
return dComIfGp_getSubExpHeap2D(i);
|
|
}
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
int dComIfGs_checkGetInsectNum() {
|
|
static u8 l_itemno[24] = {
|
|
M_BEETLE, F_BEETLE, M_BUTTERFLY, F_BUTTERFLY, M_STAG_BEETLE, F_STAG_BEETLE,
|
|
M_GRASSHOPPER, F_GRASSHOPPER, M_NANAFUSHI, F_NANAFUSHI, M_DANGOMUSHI, F_DANGOMUSHI,
|
|
M_MANTIS, F_MANTIS, M_LADYBUG, F_LADYBUG, M_SNAIL, F_SNAIL,
|
|
M_DRAGONFLY, F_DRAGONFLY, M_ANT, F_ANT, M_MAYFLY, F_MAYFLY,
|
|
};
|
|
|
|
int insectCount = 0;
|
|
u8* insectList = l_itemno;
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(l_itemno); i++) {
|
|
u8 insectId = *insectList;
|
|
insectList++;
|
|
if (dComIfGs_isItemFirstBit(insectId) &&
|
|
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[0x191 + i])) {
|
|
insectCount++;
|
|
}
|
|
}
|
|
return insectCount;
|
|
}
|
|
|
|
u8 dComIfGs_checkGetItem(u8 i_itemNo) {
|
|
u8 count = 0;
|
|
|
|
for (int i = 0; i < 60; i++) {
|
|
if (i_itemNo == dComIfGs_getItem(i, true)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
if (dComIfGs_getSelectEquipClothes() == i_itemNo) {
|
|
count++;
|
|
}
|
|
|
|
if (dComIfGs_getSelectEquipSword() == i_itemNo) {
|
|
count++;
|
|
}
|
|
|
|
if (dComIfGs_getSelectEquipShield() == i_itemNo) {
|
|
count++;
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
u8 dComIfGs_getBottleMax() {
|
|
return 10;
|
|
}
|
|
|
|
/* 8002E5C0-8002E688 028F00 00C8+00 0/0 11/11 0/0 .text dComIfGp_getSelectItemNum__Fi */
|
|
int dComIfGp_getSelectItemNum(int index) {
|
|
u8 selectItem = dComIfGp_getSelectItem(index);
|
|
int itemNum = 0;
|
|
|
|
if (selectItem == NORMAL_BOMB || selectItem == WATER_BOMB || selectItem == POKE_BOMB ||
|
|
selectItem == BOMB_ARROW) {
|
|
selectItem = dComIfGs_getSelectMixItemNoArrowIndex(index) - SLOT_15;
|
|
itemNum = dComIfGs_getBombNum(selectItem);
|
|
} else if (selectItem == PACHINKO) {
|
|
itemNum = dComIfGs_getPachinkoNum();
|
|
} else if (selectItem == BEE_CHILD) {
|
|
selectItem = dComIfGs_getSelectItemIndex(index);
|
|
itemNum = dComIfGs_getBottleNum(selectItem - SLOT_11);
|
|
}
|
|
|
|
return itemNum;
|
|
}
|
|
|
|
/* 8002E688-8002E714 028FC8 008C+00 0/0 5/5 0/0 .text dComIfGp_getSelectItemMaxNum__Fi */
|
|
int dComIfGp_getSelectItemMaxNum(int index) {
|
|
u8 selectItem = dComIfGp_getSelectItem(index);
|
|
int itemNum = 0;
|
|
|
|
if (selectItem == BOMB_BAG_LV1) {
|
|
itemNum = 1;
|
|
} else if (selectItem == NORMAL_BOMB || selectItem == WATER_BOMB || selectItem == POKE_BOMB ||
|
|
selectItem == BOMB_ARROW) {
|
|
itemNum = dComIfGs_getBombMax(selectItem);
|
|
} else if (selectItem == PACHINKO) {
|
|
itemNum = dComIfGs_getPachinkoMax();
|
|
} else if (selectItem == BEE_CHILD) {
|
|
itemNum = dComIfGs_getBottleMax();
|
|
}
|
|
|
|
return itemNum;
|
|
}
|
|
|
|
/* 8002E714-8002E83C 029054 0128+00 0/0 2/2 0/0 .text dComIfGp_setSelectItemNum__Fis */
|
|
void dComIfGp_setSelectItemNum(int index, s16 num) {
|
|
u8 selectItem = dComIfGp_getSelectItem(index);
|
|
|
|
if (selectItem == NORMAL_BOMB || selectItem == WATER_BOMB || selectItem == POKE_BOMB ||
|
|
selectItem == BOMB_ARROW) {
|
|
u8 mix_index = dComIfGs_getSelectMixItemNoArrowIndex(index) - SLOT_15;
|
|
|
|
if (num > dComIfGs_getBombMax(selectItem)) {
|
|
num = dComIfGs_getBombMax(selectItem);
|
|
}
|
|
dComIfGs_setBombNum(mix_index, num);
|
|
} else if (selectItem == PACHINKO) {
|
|
dComIfGs_setPachinkoNum(num);
|
|
} else if (selectItem == BEE_CHILD) {
|
|
u8 bottle_idx = dComIfGs_getSelectItemIndex(index) - SLOT_11;
|
|
|
|
if (num > dComIfGs_getBottleMax()) {
|
|
num = dComIfGs_getBottleMax();
|
|
}
|
|
dComIfGs_setBottleNum(bottle_idx, num);
|
|
}
|
|
}
|
|
|
|
/* 8002E83C-8002E910 02917C 00D4+00 0/0 5/5 0/0 .text dComIfGp_addSelectItemNum__Fis */
|
|
void dComIfGp_addSelectItemNum(int index, s16 num) {
|
|
u8 selectItem = dComIfGp_getSelectItem(index);
|
|
|
|
if (selectItem == NORMAL_BOMB || selectItem == WATER_BOMB || selectItem == POKE_BOMB ||
|
|
selectItem == BOMB_ARROW) {
|
|
u8 mix_index = dComIfGs_getSelectMixItemNoArrowIndex(index) - SLOT_15;
|
|
dComIfGp_setItemBombNumCount(mix_index, num);
|
|
} else if (selectItem == PACHINKO) {
|
|
dComIfGp_setItemPachinkoNumCount(num);
|
|
} else if (selectItem == BEE_CHILD) {
|
|
selectItem = dComIfGs_getSelectItemIndex(index);
|
|
dComIfGs_addBottleNum(selectItem - SLOT_11, num);
|
|
}
|
|
}
|
|
|
|
inline 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);
|
|
}
|
|
|
|
/* 8002E910-8002E974 029250 0064+00 0/0 5/5 137/137 .text
|
|
* dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj */
|
|
int dComIfGd_setShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3, f32 param_4,
|
|
f32 param_5, f32 param_6, f32 param_7, cBgS_PolyInfo& param_8,
|
|
dKy_tevstr_c* param_9, s16 param_10, f32 param_11, _GXTexObj* param_12) {
|
|
if (param_7 <= -1000000000.0f) {
|
|
return 0;
|
|
} else {
|
|
return dComIfGd_setRealShadow(param_0, param_1, param_2, param_3, param_4,
|
|
param_6 - param_7, param_9);
|
|
}
|
|
}
|
|
|
|
/* 8002E974-8002E9D4 0292B4 0060+00 0/0 1/1 0/0 .text dComIfGs_gameStart__Fv */
|
|
void dComIfGs_gameStart() {
|
|
dComIfGp_offEnableNextStage();
|
|
|
|
s8 roomNo = g_dComIfG_gameInfo.info.getPlayer().getPlayerReturnPlace().getRoomNo();
|
|
s16 point = g_dComIfG_gameInfo.info.getPlayer().getPlayerReturnPlace().getPlayerStatus();
|
|
char* name = g_dComIfG_gameInfo.info.getPlayer().getPlayerReturnPlace().getName();
|
|
dComIfGp_setNextStage(name, point, roomNo, -1, 0.0f, 0, 1, 0, 0, 0, 0);
|
|
}
|
|
|
|
u32 dComIfG_getTrigA(u32 pad) {
|
|
return mDoCPd_c::getTrigA(pad);
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80378F38-80378F38 005598 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_8037908A = "dat/field.dat";
|
|
#pragma pop
|
|
|
|
/* 80451D18-80451D1C 000318 0004+00 1/1 0/0 0/0 .sdata2 @6980 */
|
|
SECTION_SDATA2 static f32 lit_6980 = -90300.0f;
|
|
|
|
/* 80451D1C-80451D20 00031C 0004+00 1/1 0/0 0/0 .sdata2 @6981 */
|
|
SECTION_SDATA2 static f32 lit_6981 = 51800.0f;
|
|
|
|
/* 8002E9F0-8002EC54 029330 0264+00 0/0 1/1 0/0 .text dComIfGp_calcNowRegion__Fv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGp_calcNowRegion() {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGp_calcNowRegion__Fv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002EC54-8002EDE0 029594 018C+00 1/1 0/0 0/0 .text dComIfG_getNowCalcRegion__Fv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void dComIfG_getNowCalcRegion() {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfG_getNowCalcRegion__Fv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
BOOL dComIfGp_isLightDropMapVisible() {
|
|
for (int i = 0; i < 3; i++) {
|
|
if (dComIfGs_isLightDropGetFlag(i) != FALSE && dComIfGs_getLightDropNum(i) < 16) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/* 8002EE60-8002EEB0 0297A0 0050+00 1/1 11/11 0/0 .text dComIfGp_getNowLevel__Fv */
|
|
u8 dComIfGp_getNowLevel() {
|
|
int roomNo = -1;
|
|
if (daPy_getLinkPlayerActorClass() != NULL) {
|
|
roomNo = fopAcM_GetRoomNo(daPy_getLinkPlayerActorClass());
|
|
}
|
|
|
|
if (roomNo < 0) {
|
|
roomNo = dComIfGp_getStartStageRoomNo();
|
|
}
|
|
|
|
return dStage_roomControl_c::getRegionNo(roomNo);
|
|
}
|
|
|
|
void dComIfGs_setSelectEquipClothes(u8 i_itemNo) {
|
|
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectEquip(COLLECT_CLOTHING,
|
|
i_itemNo);
|
|
}
|
|
|
|
/* 8002EEC0-8002EF94 029800 00D4+00 0/0 4/4 1/1 .text dComIfGs_setSelectEquipSword__FUc
|
|
*/
|
|
void dComIfGs_setSelectEquipSword(u8 i_itemNo) {
|
|
switch (i_itemNo) {
|
|
case SWORD:
|
|
dComIfGs_setCollectSword(COLLECT_ORDON_SWORD);
|
|
break;
|
|
case MASTER_SWORD:
|
|
dComIfGs_setCollectSword(COLLECT_MASTER_SWORD);
|
|
break;
|
|
case WOOD_STICK:
|
|
dComIfGs_setCollectSword(COLLECT_WOODEN_SWORD);
|
|
break;
|
|
case LIGHT_SWORD:
|
|
dComIfGs_setCollectSword(COLLECT_LIGHT_SWORD);
|
|
break;
|
|
}
|
|
|
|
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectEquip(COLLECT_SWORD, i_itemNo);
|
|
}
|
|
|
|
/* 8002EF94-8002F040 0298D4 00AC+00 0/0 2/2 0/0 .text dComIfGs_setSelectEquipShield__FUc
|
|
*/
|
|
void dComIfGs_setSelectEquipShield(u8 i_itemNo) {
|
|
switch (i_itemNo) {
|
|
case WOOD_SHIELD:
|
|
dComIfGs_setCollectShield(COLLECT_WOODEN_SHIELD);
|
|
break;
|
|
case SHIELD:
|
|
dComIfGs_setCollectShield(COLLECT_ORDON_SHIELD);
|
|
break;
|
|
case HYLIA_SHIELD:
|
|
dComIfGs_setCollectShield(COLLECT_HYLIAN_SHIELD);
|
|
break;
|
|
}
|
|
|
|
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectEquip(COLLECT_SHIELD, i_itemNo);
|
|
}
|
|
|
|
void dComIfGs_setKeyNum(int i_stageNo, u8 keyNum) {
|
|
if (dComIfGp_getStageStagInfo()) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
|
|
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
|
|
dComIfGs_setKeyNum(keyNum);
|
|
}
|
|
}
|
|
|
|
g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().setKeyNum(keyNum);
|
|
}
|
|
|
|
/* 8002F0E0-8002F128 029A20 0048+00 1/1 0/0 0/0 .text dComIfGs_setWarpItemData__FiPCc4cXyzsScUcUc
|
|
*/
|
|
static void dComIfGs_setWarpItemData(int param_0, char const* stage, cXyz pos, s16 angle, s8 roomNo,
|
|
u8 param_5, u8 param_6) {
|
|
g_dComIfG_gameInfo.play.setWarpItemData(stage, pos, angle, roomNo, param_5, param_6);
|
|
}
|
|
|
|
void dComIfG_play_c::setWarpItemData(char const* stage, cXyz pos, s16 angle, s8 roomNo, u8 param_4,
|
|
u8 param_5) {
|
|
strcpy(mWarpItemStage, stage);
|
|
mWarpItemPos.set(pos);
|
|
mWarpItemAngle = angle;
|
|
mWarpItemRoom = roomNo;
|
|
field_0x4fac = param_5;
|
|
field_0x4fab = param_4;
|
|
}
|
|
|
|
void dComIfGs_setWarpItemData(char const* stage, cXyz pos, s16 angle, s8 roomNo, u8 param_4,
|
|
u8 param_5) {
|
|
dComIfGs_setWarpItemData(0, stage, pos, angle, roomNo, param_4, param_5);
|
|
dComIfGs_setLastWarpMarkItemData(stage, pos, angle, roomNo, param_4, param_5);
|
|
}
|
|
|
|
void dComIfGs_setLastWarpMarkItemData(const char* stage, cXyz pos, s16 angle, s8 roomNo, u8 unk1,
|
|
u8 unk2) {
|
|
g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().setWarpItemData(stage, pos, angle,
|
|
roomNo, unk1, unk2);
|
|
}
|
|
|
|
const char* dComIfGs_getWarpStageName() {
|
|
return dComIfGs_getLastWarpMarkStageName();
|
|
}
|
|
|
|
/* 8002F2BC-8002F2CC 029BFC 0010+00 0/0 1/1 0/0 .text dComIfGs_getWarpPlayerPos__Fv */
|
|
cXyz& dComIfGs_getWarpPlayerPos() {
|
|
return dComIfGs_getLastWarpMarkPlayerPos();
|
|
}
|
|
|
|
s16 dComIfGs_getWarpPlayerAngleY() {
|
|
return dComIfGs_getLastWarpMarkPlayerAngleY();
|
|
}
|
|
|
|
s8 dComIfGs_getWarpRoomNo() {
|
|
return dComIfGs_getLastWarpMarkRoomNo();
|
|
}
|
|
|
|
BOOL dComIfGs_getWarpMarkFlag() {
|
|
return dComIfGs_getLastWarpAcceptStage() >= 0;
|
|
}
|
|
|
|
void dComIfGs_setWarpMarkFlag(u8) {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 8002F314-8002F328 029C54 0014+00 0/0 0/0 1/1 .text __ct__19dComIfG_resLoader_cFv */
|
|
dComIfG_resLoader_c::dComIfG_resLoader_c() {
|
|
field_0x0 = NULL;
|
|
field_0x4.mPhaseStep = 0;
|
|
field_0xc = 0;
|
|
}
|
|
|
|
/* 8002F328-8002F3B4 029C68 008C+00 0/0 0/0 1/1 .text __dt__19dComIfG_resLoader_cFv */
|
|
dComIfG_resLoader_c::~dComIfG_resLoader_c() {
|
|
if (field_0x0 != NULL) {
|
|
for (int i = field_0xc; i >= 0; i--) {
|
|
dComIfG_resDelete(&field_0x4, field_0x0[i]);
|
|
field_0x4.mPhaseStep = 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8002F3B4-8002F434 029CF4 0080+00 0/0 0/0 1/1 .text load__19dComIfG_resLoader_cFPPCcP7JKRHeap */
|
|
int dComIfG_resLoader_c::load(char const** param_0, JKRHeap* heap) {
|
|
field_0x0 = param_0;
|
|
|
|
int ret = dComIfG_resLoad(&field_0x4, field_0x0[field_0xc], heap);
|
|
if (ret == 4) {
|
|
if (field_0x0[field_0xc + 1][0] != 0) {
|
|
field_0xc++;
|
|
field_0x4.mPhaseStep = 0;
|
|
ret = 0;
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/* 8002F434-8002F478 029D74 0044+00 0/0 12/12 12/12 .text dComIfG_getStageRes__FPCc */
|
|
void* dComIfG_getStageRes(char const* resName) {
|
|
return dComIfG_getStageRes("Stg_00", resName);
|
|
}
|
|
|
|
/* 8002F478-8002F4BC 029DB8 0044+00 0/0 1/1 0/0 .text dComIfG_getOldStageRes__FPCc */
|
|
void* dComIfG_getOldStageRes(char const* resName) {
|
|
return dComIfG_getStageRes("Xtg_00", resName);
|
|
}
|
|
|
|
char* dComIfG_getRoomArcName(int roomNo) {
|
|
static char buf[32];
|
|
sprintf(buf, "R%02d_00", roomNo);
|
|
return buf;
|
|
}
|
|
|
|
/* 8002F500-8002F504 029E40 0004+00 0/0 1/1 0/0 .text dComIfGp_ret_wp_set__FSc */
|
|
void dComIfGp_ret_wp_set(s8) {
|
|
/* empty function */
|
|
}
|
|
|
|
void dComIfGp_world_dark_set(u8 param_0) {
|
|
g_dComIfG_gameInfo.mWorldDark = param_0;
|
|
}
|
|
|
|
u8 dComIfGp_world_dark_get() {
|
|
return g_dComIfG_gameInfo.mWorldDark;
|
|
}
|
|
|
|
int dComIfG_TimerStart(int mode, s16 time) {
|
|
if (mode == dComIfG_getTimerMode()) {
|
|
dTimer_c* timer = dComIfG_getTimerPtr();
|
|
if (timer != NULL) {
|
|
if (time == 0) {
|
|
timer->start(mode);
|
|
} else {
|
|
timer->start(mode, time);
|
|
}
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int dComIfG_TimerStop(int mode) {
|
|
if (mode == dComIfG_getTimerMode()) {
|
|
dTimer_c* timer = dComIfG_getTimerPtr();
|
|
if (timer != NULL) {
|
|
timer->stop(4);
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int dComIfG_TimerReStart(int mode) {
|
|
if (mode == dComIfG_getTimerMode()) {
|
|
dTimer_c* timer = dComIfG_getTimerPtr();
|
|
if (timer != NULL) {
|
|
timer->restart(4);
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int dComIfG_TimerEnd(int mode, int param_1) {
|
|
if (mode == dComIfG_getTimerMode()) {
|
|
dTimer_c* timer = dComIfG_getTimerPtr();
|
|
if (timer != NULL) {
|
|
timer->end(param_1);
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 8002F72C-8002F79C 02A06C 0070+00 0/0 0/0 2/2 .text dComIfG_TimerDeleteCheck__Fi */
|
|
int dComIfG_TimerDeleteCheck(int mode) {
|
|
if (mode == dComIfG_getTimerMode()) {
|
|
dTimer_c* timer = dComIfG_getTimerPtr();
|
|
if (timer != NULL) {
|
|
return timer->deleteCheck();
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int dComIfG_TimerDeleteRequest(int mode) {
|
|
if (mode == dComIfG_getTimerMode()) {
|
|
dTimer_c* timer = dComIfG_getTimerPtr();
|
|
if (timer != NULL) {
|
|
timer->deleteRequest();
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 8002F810-8002F9F0 02A150 01E0+00 0/0 1/1 0/0 .text dComIfGs_Wolf_Change_Check__Fv */
|
|
u8 dComIfGs_Wolf_Change_Check() {
|
|
u8 is_wolf = false;
|
|
|
|
// Transforming Unlocked
|
|
if (dComIfGs_isEventBit(0x0D04)) {
|
|
is_wolf = dComIfGs_getTransformStatus();
|
|
} else if (dComIfGs_isTransformLV(0) && !dComIfGs_isDarkClearLV(0)) {
|
|
is_wolf = true;
|
|
} else if (dComIfGs_isTransformLV(1) && !dComIfGs_isDarkClearLV(1)) {
|
|
is_wolf = true;
|
|
} else if (dComIfGs_isTransformLV(2) && !dComIfGs_isDarkClearLV(2)) {
|
|
is_wolf = true;
|
|
} else if (dComIfGs_isTransformLV(3) && !dComIfGs_isDarkClearLV(3)) {
|
|
is_wolf = true;
|
|
}
|
|
|
|
// Stage is Hyrule Field and Room is Eldin Gorge Entrance
|
|
if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") && dComIfGp_getStartStageRoomNo() == 2 &&
|
|
dComIfGp_getStartStagePoint() == 10 && !dComIfGs_isSaveSwitch(12)) {
|
|
is_wolf = false;
|
|
}
|
|
// Stage is Hyrule Field and Room is North Lanayru - Eldin Entrance
|
|
else if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") &&
|
|
dComIfGp_getStartStageRoomNo() == 9 && dComIfGp_getStartStagePoint() == 10 &&
|
|
!dComIfGs_isSaveSwitch(13)) {
|
|
is_wolf = false;
|
|
}
|
|
|
|
return is_wolf;
|
|
}
|
|
|
|
void dComIfGs_PolyDamageOff_Set(s8 param_0) {
|
|
g_dComIfG_gameInfo.field_0x1ddfb = param_0;
|
|
}
|
|
|
|
u8 dComIfGs_PolyDamageOff_Check() {
|
|
return g_dComIfG_gameInfo.field_0x1ddfb;
|
|
}
|
|
|
|
void dComIfGs_shake_kandelaar() {
|
|
g_dComIfG_gameInfo.field_0x1ddfa = 1;
|
|
}
|
|
|
|
bool dComIfGs_shake_kandelaar_check() {
|
|
bool check = false;
|
|
if (g_dComIfG_gameInfo.field_0x1ddfa == 2) {
|
|
check = true;
|
|
}
|
|
return check;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80451D20-80451D28 000320 0008+00 1/1 0/0 0/0 .sdata2 @7580 */
|
|
SECTION_SDATA2 static f64 lit_7580 = 0.6;
|
|
|
|
/* 8002FA54-8002FA84 02A394 0030+00 0/0 4/4 96/96 .text dComIfGs_wolfeye_effect_check__Fv
|
|
*/
|
|
#ifdef NONMATCHING
|
|
int dComIfGs_wolfeye_effect_check() {
|
|
BOOL ret = 0;
|
|
if (g_env_light.field_0xf3d == 1 && g_env_light.field_0xf40 > 0.6) {
|
|
ret = 1;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_wolfeye_effect_check() {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_wolfeye_effect_check__Fv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
void dComIfGs_Grass_hide_Set(s8 param_0) {
|
|
g_dComIfG_gameInfo.field_0x1ddfc = param_0;
|
|
}
|
|
|
|
void dComIfGp_TargetWarpPt_set(u8 param_0) {
|
|
g_dComIfG_gameInfo.field_0x1de09 = param_0;
|
|
}
|
|
|
|
void dComIfGp_SelectWarpPt_set(u8 param_0) {
|
|
g_dComIfG_gameInfo.field_0x1de0a = param_0;
|
|
}
|
|
|
|
u8 dComIfGp_TargetWarpPt_get() {
|
|
return g_dComIfG_gameInfo.field_0x1de09;
|
|
}
|
|
|
|
u8 dComIfGp_SelectWarpPt_get() {
|
|
return g_dComIfG_gameInfo.field_0x1de0a;
|
|
}
|
|
|
|
BOOL dComIfGp_TransportWarp_check() {
|
|
BOOL check = false;
|
|
if (g_dComIfG_gameInfo.field_0x1de09 != 0xFF && g_dComIfG_gameInfo.field_0x1de0a != 0xFF &&
|
|
g_dComIfG_gameInfo.field_0x1de09 == g_dComIfG_gameInfo.field_0x1de0a) {
|
|
check = true;
|
|
}
|
|
return check;
|
|
}
|
|
|
|
/* 8002FB20-8002FB80 02A460 0060+00 2/2 6/6 0/0 .text
|
|
* dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv */
|
|
#ifdef NONMATCHING
|
|
int dComLbG_PhaseHandler(request_of_phase_process_class* param_0, int (**param_1)(void*),
|
|
void* param_2) {
|
|
int ret = cPhs_Handler(param_0, param_1, param_2);
|
|
if (ret != 2 && ret < 2) {
|
|
return ret;
|
|
}
|
|
return dComLbG_PhaseHandler(param_0, param_1, param_2);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm int dComLbG_PhaseHandler(request_of_phase_process_class* param_0, int (**param_1)(void*),
|
|
void* param_2) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8002FB80-8002FC3C 02A4C0 00BC+00 0/0 1/1 1/1 .text dComIfGs_onVisitedRoom__Fi */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_onVisitedRoom(int param_0) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_onVisitedRoom__Fi.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8002FC3C-8002FC98 02A57C 005C+00 0/0 0/0 1/1 .text dComIfGs_offVisitedRoom__Fi */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dComIfGs_offVisitedRoom(int param_0) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_offVisitedRoom__Fi.s"
|
|
}
|
|
#pragma pop
|
|
|
|
inline BOOL dComIfGs_isSaveVisitedRoom(int param_0, int param_1) {
|
|
return g_dComIfG_gameInfo.info.getSavedata().getSave2(param_0)->isVisitedRoom(param_1);
|
|
}
|
|
|
|
/* 8002FC98-8002FCF4 02A5D8 005C+00 0/0 1/1 0/0 .text dComIfGs_isVisitedRoom__Fi */
|
|
// instructions swapped
|
|
#ifdef NONMATCHING
|
|
BOOL dComIfGs_isVisitedRoom(int param_0) {
|
|
int stayNo = dComIfGp_roomControl_getStayNo();
|
|
dStage_FileList2_dt_c* fileList = dStage_roomControl_c::getFileList2(stayNo);
|
|
return dComIfGs_isSaveVisitedRoom(fileList->field_0x13, param_0);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm BOOL dComIfGs_isVisitedRoom(int param_0) {
|
|
nofralloc
|
|
#include "asm/d/com/d_com_inf_game/dComIfGs_isVisitedRoom__Fi.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8002FCF4-8002FD08 02A634 0014+00 0/0 1/1 0/0 .text dComIfGs_staffroll_next_go__Fv */
|
|
void dComIfGs_staffroll_next_go() {
|
|
g_env_light.field_0x130c = true;
|
|
}
|
|
|
|
/* 8002FD08-8002FD18 02A648 0010+00 0/0 1/1 0/0 .text dComIfGs_staffroll_next_go_check__Fv */
|
|
u8 dComIfGs_staffroll_next_go_check() {
|
|
return g_env_light.field_0x130c;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80450608-8045060C 000088 0004+00 0/0 6/6 11/11 .sdata g_whiteColor */
|
|
SECTION_SDATA extern GXColor g_whiteColor = {255, 255, 255, 255};
|
|
|
|
/* 8045060C-80450610 00008C 0004+00 0/0 3/3 3/3 .sdata g_saftyWhiteColor */
|
|
SECTION_SDATA extern GXColor g_saftyWhiteColor = {160, 160, 160, 255};
|
|
|
|
/* 80378F38-80378F38 005598 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|