Files
tww/src/d/d_com_inf_game.cpp
T
2023-10-23 20:16:32 -04:00

1295 lines
36 KiB
C++

//
// Generated by dtk
// Translation Unit: d_com_inf_game.cpp
//
#include "d/d_com_inf_game.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "MSL_C/string.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/actor/d_a_player_main.h"
#include "d/d_com_lib_game.h"
#include "d/d_demo.h"
#include "d/d_flower.h"
#include "d/d_grass.h"
#include "d/d_item_data.h"
#include "d/d_magma.h"
#include "d/d_particle.h"
#include "d/d_tree.h"
#include "f_op/f_op_scene_mng.h"
#include "m_Do/m_Do_Reset.h"
#include "m_Do/m_Do_audio.h"
class J3DModel;
class daArrow_c {
public:
static void setKeepType(u8);
};
class daShip_c : public fopAc_ac_c {
public:
};
dComIfG_inf_c g_dComIfG_gameInfo;
/* 80052134-800521A4 .text ct__14dComIfG_play_cFv */
void dComIfG_play_c::ct() {
field_0x4841 = 0;
mParticle = NULL;
mDemo = NULL;
mpMagmaPacket = NULL;
mpGrassPacket = NULL;
mpTreePacket = NULL;
mpWoodPacket = NULL;
mpFlowerPacket = NULL;
mShipId = 0xFF;
mShipRoomId = 0xFF;
mIkadaShipBeforeRoomId = 0xFF;
mIkadaShipId = 0xFF;
mIkadaLinkPos.set(0.0f, 0.0f, 0.0f);
mLkDArcIdx = -1;
init();
}
/* 800521A4-800521D4 .text init__14dComIfG_play_cFv */
void dComIfG_play_c::init() {
for (int i = 0; i < 1; i++) {
mpPlayer[i] = NULL;
mCurCamera[i] = -1;
}
for (int i = 0; i < 3; i++) {
mpPlayerPtr[i] = NULL;
}
}
/* 800521D4-80052400 .text itemInit__14dComIfG_play_cFv */
void dComIfG_play_c::itemInit() {
field_0x48b8 = 0.0f;
mItemLifeCount = 0.0f;
mItemRupeeCount = 0;
mAirMeter = 0;
field_0x48c8 = 0;
mNpcNameMessageID = 0;
mItemNameMessageID = 0;
mItemKeyNumCount = 0;
mItemMaxLifeCount = 0;
mItemMagicCount = 0;
field_0x48da = 0;
mItemMaxMagicCount = 0;
field_0x48de = 0;
mItemArrowNumCount = 0;
field_0x48e2 = 0;
mItemBombNumCount = 0;
field_0x48e6 = 0;
for (int i = 0; i < 4; i++) {
}
mMsgCountNumber = 0;
field_0x491a = 0;
field_0x491c = 0;
field_0x491e = 0;
field_0x4920 = 0;
field_0x4922 = 0;
mCurrHP = 0;
mRupyCountDisplay = 0;
field_0x4928 = 0;
field_0x4929 = 0;
field_0x492a = 0;
mbCamOverrideFarPlane = 0;
field_0x492c = 0;
field_0x492d = 0;
mCurrButtonBAction = 0;
mCurrButtonAAction = 0;
field_0x4930 = 0;
field_0x4931 = 0;
field_0x4932 = 0;
for (int i = 0; i < 4; i++) {
mEquippedItems[i] = 0;
field_0x4937[i] = 0;
}
mMesgAnime = 0;
mMesgAnimeTagInfo = 0;
field_0x493d = 0;
field_0x493e = 0;
field_0x493f = 0;
field_0x4940 = 0;
field_0x4941 = 0;
field_0x4942 = 0;
if (dComIfGs_checkGetItem(TELESCOPE)) {
field_0x4943 = 0;
} else {
field_0x4943 = 0x15;
}
field_0x4944 = 7;
field_0x4945 = 0;
field_0x4946 = 0;
field_0x4947 = 0;
field_0x4948 = 0;
field_0x4949 = 0;
for (int i = 0; i < 6; i++) {
field_0x494a[i] = 0;
}
mTactMode = 0;
field_0x4951 = 0;
field_0x4952 = 0;
field_0x4953 = 0;
field_0x4954 = 0;
field_0x4955 = 0;
field_0x4956 = 0;
mPlacenameIndex = 0;
mPlacenameState = 0;
field_0x4959 = 0;
field_0x495a = 0;
field_0x495b = 0;
field_0x495c = 0;
field_0x495d = 0;
field_0x495e = 0;
field_0x495f = 0;
field_0x4960 = 0;
field_0x4961 = 0;
mHeapLockFlag = 0;
field_0x4965 = 0;
strcpy(field_0x4966, "\0");
field_0x4977 = 0;
field_0x4978 = 0;
field_0x4979 = 0;
field_0x497a = 0;
field_0x4963 = dComIfGs_getOptVibration();
daArrow_c::setKeepType(0);
mMesgCameraTagInfo = 0;
field_0x4984 = 0;
for (int i = 0; i < 10; i++) {
field_0x4988[i] = 0;
}
return;
}
/* 80052400-8005286C .text getLayerNo__14dComIfG_play_cFi */
int dComIfG_play_c::getLayerNo(int i_roomNo) {
int stageLayer = dComIfGp_getStartStageLayer();
if (stageLayer < 0) {
int layer = dKy_getdaytime_hour();
if (dKy_checkEventNightStop()) {
layer = 1;
} else {
layer = (layer >= 6 && layer < 18) ? 0 : 1;
}
if (strcmp(dComIfGp_getStartStageName(), "sea") == 0) {
if (i_roomNo == 44) {
if (dComIfGs_isEventBit(0x520)) {
return layer | 4;
} else if (dComIfGs_isEventBit(0xE20)) {
return layer | 2;
} else if (dComIfGs_isEventBit(0x101)) {
return 9;
}
} else if (i_roomNo == 11) {
if (dComIfGs_isEventBit(0x2D01)) {
return layer | 4;
} else if (dKy_checkEventNightStop()) {
return layer | 2;
}
} else if (i_roomNo == 1) {
return dComIfGs_isEventBit(0x1820) ? 3 : 1;
}
} else if (strcmp(dComIfGp_getStartStageName(), "A_mori") == 0) {
if (dComIfGs_isEventBit(0xF80)) {
return layer | 2;
}
} else if (strcmp(dComIfGp_getStartStageName(), "Asoko") == 0) {
if (dComIfGs_isEventBit(0x520)) {
return layer | 2;
}
} else if (strcmp(dComIfGp_getStartStageName(), "Hyrule") == 0) {
if (dComIfGs_getTriforceNum() == 8) {
return layer | 4;
} else if (dComIfGs_isEventBit(0x3280)) {
return layer | 2;
}
} else if (strcmp(dComIfGp_getStartStageName(), "Hyroom") == 0) {
if (dComIfGs_getTriforceNum() == 8 && !dComIfGs_isEventBit(0x2C01)) {
return layer | 4;
} else if (dComIfGs_isEventBit(0x3280)) {
return layer | 2;
} else if (dComIfGs_isEventBit(0x3B40)) {
return layer | 6;
}
} else if (strcmp(dComIfGp_getStartStageName(), "kenroom") == 0) {
if (dComIfGs_isEventBit(0x2C01) ||
(dComIfGs_isEventBit(0x3802) && !dComIfGs_isEventBit(0x3280)))
{
return layer | 6;
} else if (dComIfGs_getTriforceNum() == 8) {
return layer | 4;
} else if (dComIfGs_isEventBit(0x3802)) {
return layer | 2;
}
} else if (strcmp(dComIfGp_getStartStageName(), "M2tower") == 0) {
if (dComIfGs_isEventBit(0x2D01)) {
return layer | 2;
}
} else if (strcmp(dComIfGp_getStartStageName(), "GanonK") == 0) {
if (!dComIfGs_isEventBit(0x3B02)) {
return 8;
}
} else if (strcmp(dComIfGp_getStartStageName(), "GTower") == 0) {
if (!dComIfGs_isEventBit(0x4002)) {
return 8;
}
}
return layer;
}
return stageLayer;
}
/* 8005286C-800528F4 .text createParticle__14dComIfG_play_cFv */
void dComIfG_play_c::createParticle() {
mParticle = new dPa_control_c();
JUT_ASSERT(360, mParticle != 0);
}
/* 800528F4-8005297C .text createDemo__14dComIfG_play_cFv */
void dComIfG_play_c::createDemo() {
mDemo = new dDemo_manager_c();
JUT_ASSERT(390, mDemo != 0);
}
/* 8005297C-800529B8 .text removeDemo__14dComIfG_play_cFv */
void dComIfG_play_c::removeDemo() {
delete mDemo;
mDemo = NULL;
}
/* 800529B8-800529DC .text executeEvtManager__14dComIfG_play_cFv */
void dComIfG_play_c::executeEvtManager() {
mEvtManager.runProc();
}
/* 800529DC-80052A30 .text createMagma__14dComIfG_play_cFv */
dMagma_packet_c* dComIfG_play_c::createMagma() {
if (mpMagmaPacket == NULL) {
mpMagmaPacket = new dMagma_packet_c();
}
return mpMagmaPacket;
}
/* 80052A30-80052A84 .text removeMagma__14dComIfG_play_cFv */
void dComIfG_play_c::removeMagma() {
if (mpMagmaPacket != NULL) {
delete mpMagmaPacket;
mpMagmaPacket = NULL;
}
}
/* 80052A84-80052AB0 .text executeMagma__14dComIfG_play_cFv */
void dComIfG_play_c::executeMagma() {
if (mpMagmaPacket != NULL) {
mpMagmaPacket->calc();
}
}
/* 80052AB0-80052ADC .text drawMagma__14dComIfG_play_cFv */
void dComIfG_play_c::drawMagma() {
if (mpMagmaPacket != NULL) {
mpMagmaPacket->update();
}
}
/* 80052ADC-80052B34 .text createGrass__14dComIfG_play_cFv */
dGrass_packet_c* dComIfG_play_c::createGrass() {
if (mpGrassPacket == NULL) {
mpGrassPacket = new dGrass_packet_c();
}
return mpGrassPacket;
}
/* 80052B34-80052B88 .text removeGrass__14dComIfG_play_cFv */
void dComIfG_play_c::removeGrass() {
if (mpGrassPacket != NULL) {
delete mpGrassPacket;
mpGrassPacket = NULL;
}
}
/* 80052B88-80052C0C .text __dt__15dGrass_packet_cFv */
dGrass_packet_c::~dGrass_packet_c() {}
/* 80052C0C-80052C48 .text __dt__13dGrass_data_cFv */
dGrass_data_c::~dGrass_data_c() {}
/* 80052C48-80052C74 .text executeGrass__14dComIfG_play_cFv */
void dComIfG_play_c::executeGrass() {
if (mpGrassPacket != NULL) {
mpGrassPacket->calc();
}
}
/* 80052C74-80052CA0 .text drawGrass__14dComIfG_play_cFv */
void dComIfG_play_c::drawGrass() {
if (mpGrassPacket != NULL) {
mpGrassPacket->update();
}
}
/* 80052CA0-80052CF4 .text createFlower__14dComIfG_play_cFv */
dFlower_packet_c* dComIfG_play_c::createFlower() {
if (mpFlowerPacket == NULL) {
mpFlowerPacket = new dFlower_packet_c();
}
return mpFlowerPacket;
}
/* 80052CF4-80052D48 .text removeFlower__14dComIfG_play_cFv */
void dComIfG_play_c::removeFlower() {
if (mpFlowerPacket != NULL) {
delete mpFlowerPacket;
mpFlowerPacket = NULL;
}
}
/* 80052D48-80052DCC .text __dt__16dFlower_packet_cFv */
dFlower_packet_c::~dFlower_packet_c() {}
/* 80052DCC-80052E08 .text __dt__14dFlower_data_cFv */
dFlower_data_c::~dFlower_data_c() {}
/* 80052E08-80052E34 .text executeFlower__14dComIfG_play_cFv */
void dComIfG_play_c::executeFlower() {
if (mpFlowerPacket != NULL) {
mpFlowerPacket->calc();
}
}
/* 80052E34-80052E60 .text drawFlower__14dComIfG_play_cFv */
void dComIfG_play_c::drawFlower() {
if (mpFlowerPacket != NULL) {
mpFlowerPacket->update();
}
}
/* 80052E60-80052EB4 .text createTree__14dComIfG_play_cFv */
dTree_packet_c* dComIfG_play_c::createTree() {
if (mpTreePacket == NULL) {
mpTreePacket = new dTree_packet_c();
}
return mpTreePacket;
}
/* 80052EB4-80052F08 .text removeTree__14dComIfG_play_cFv */
void dComIfG_play_c::removeTree() {
if (mpTreePacket != NULL) {
delete mpTreePacket;
mpTreePacket = NULL;
}
}
/* 80052F08-80052FA4 .text __dt__14dTree_packet_cFv */
dTree_packet_c::~dTree_packet_c() {}
/* 80052FA4-80052FE0 .text __dt__12dTree_data_cFv */
dTree_data_c::~dTree_data_c() {}
/* 80052FE0-8005301C .text __dt__11dTree_anm_cFv */
dTree_anm_c::~dTree_anm_c() {}
/* 8005301C-80053048 .text executeTree__14dComIfG_play_cFv */
void dComIfG_play_c::executeTree() {
if (mpTreePacket != NULL) {
mpTreePacket->calc();
}
}
/* 80053048-80053074 .text drawTree__14dComIfG_play_cFv */
void dComIfG_play_c::drawTree() {
if (mpTreePacket != NULL) {
mpTreePacket->update();
}
}
/* 80053074-800530CC .text createWood__14dComIfG_play_cFv */
dWood::Packet_c* dComIfG_play_c::createWood() {
if (mpWoodPacket == NULL) {
mpWoodPacket = new dWood::Packet_c();
}
return mpWoodPacket;
}
/* 800530CC-80053120 .text removeWood__14dComIfG_play_cFv */
void dComIfG_play_c::removeWood() {
if (mpWoodPacket != NULL) {
delete mpWoodPacket;
mpWoodPacket = NULL;
}
}
/* 80053120-8005314C .text executeWood__14dComIfG_play_cFv */
void dComIfG_play_c::executeWood() {
if (mpWoodPacket != NULL) {
mpWoodPacket->calc();
}
}
/* 8005314C-80053178 .text drawWood__14dComIfG_play_cFv */
void dComIfG_play_c::drawWood() {
if (mpWoodPacket != NULL) {
mpWoodPacket->update();
}
}
/* 80053178-800531A8 .text ct__13dComIfG_inf_cFv */
void dComIfG_inf_c::ct() {
field_0x1d1c1 = 0xFF;
play.ct();
}
/* 800531A8-8005326C .text dComIfG_changeOpeningScene__FP11scene_classs */
// matches with stringbase offset
int dComIfG_changeOpeningScene(scene_class* i_scene, s16 i_procName) {
dComIfGp_offEnableNextStage();
dComIfGp_setNextStage("sea_T", 0, 44, 0, 0.0f, 0, 1, 0);
mDoAud_setSceneName(dComIfGp_getNextStageName(), dComIfGp_getNextStageRoomNo(),
dComIfGp_getNextStageLayer());
dComIfGs_setRestartRoomParam(0);
fopScnM_ChangeReq(i_scene, i_procName, 0, 30);
fopScnM_ReRequest(i_procName, 0);
return 1;
}
/* 8005326C-800532D8 .text dComIfG_resetToOpening__FP11scene_class */
int dComIfG_resetToOpening(scene_class* i_scene) {
if (!mDoRst::isReset()) {
return 0;
}
dComIfG_changeOpeningScene(i_scene, 8);
mDoAud_bgmStop(30);
mDoAud_resetProcess();
return 1;
}
/* 800532D8-80053330 .text phase_1__FPc */
// matches with stringbase
static int phase_1(char* i_arcName) {
return !dComIfG_setObjectRes(i_arcName, (u8)0, NULL) ? cPhs_ERROR_e : cPhs_NEXT_e;
}
/* 80053330-80053388 .text phase_2__FPc */
static int phase_2(char* i_arcName) {
int syncStatus = dComIfG_syncObjectRes(i_arcName);
if (syncStatus < 0) {
return cPhs_ERROR_e;
} else {
return syncStatus > 0 ? 0 : 2;
}
}
/* 80053388-80053390 .text phase_3__FPc */
static int phase_3(char* i_arcName) {
return cPhs_COMPLEATE_e;
}
/* 80053390-800533D0 .text dComIfG_resLoad__FP30request_of_phase_process_classPCc */
int dComIfG_resLoad(request_of_phase_process_class* i_phase, const char* i_arcName) {
static int (*l_method[3])(void*) = {(int (*)(void*))phase_1, (int (*)(void*))phase_2,
(int (*)(void*))phase_3};
if (i_phase->id == cPhs_NEXT_e) {
return cPhs_COMPLEATE_e;
}
return dComLbG_PhaseHandler(i_phase, l_method, (void*)i_arcName);
}
/* 800533D0-8005347C .text dComIfG_resDelete__FP30request_of_phase_process_classPCc */
// matches with stringbase
int dComIfG_resDelete(request_of_phase_process_class* i_phase, const char* i_resName) {
JUT_ASSERT(1048, i_phase->id != 1);
if (i_phase->id == cPhs_NEXT_e) {
dComIfG_deleteObjectRes(i_resName);
i_phase->id = cPhs_INIT_e;
}
return 0;
}
/* 8005347C-800534C4 .text dComIfGp_getReverb__Fi */
s8 dComIfGp_getReverb(int param_0) {
return dStage_roomRead_dt_c_GetReverbStage(*dComIfGp_getStageRoom(), param_0);
}
/* 800534C4-800535B8 .text dComIfGd_setSimpleShadow2__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj
*/
int dComIfGd_setSimpleShadow2(cXyz* i_pos, f32 param_1, f32 param_2, cBgS_PolyInfo& i_floorPoly,
s16 i_angle, f32 param_5, GXTexObj* i_tex) {
if (i_floorPoly.ChkSetInfo() && -1000000000.0f != param_1) {
cM3dGPla* plane_p =
dComIfG_Bgsp()->GetTriPla(i_floorPoly.GetBgIndex(), i_floorPoly.GetPolyIndex());
return dComIfGd_setSimpleShadow(i_pos, param_1, param_2, &plane_p->mNormal, i_angle,
param_5, i_tex);
} else {
return 0;
}
}
/* 800535B8-80053678 .text dComIfGp_getShip__Fii */
dStage_Ship_data* dComIfGp_getShip(int i_roomNo, int param_1) {
dStage_roomStatus_c* roomSt_p = dComIfGp_roomControl_getStatusRoomDt(i_roomNo);
if (roomSt_p == NULL) {
return NULL;
}
dStage_Ship_c* ship_p = roomSt_p->getShip();
if (ship_p == NULL || ship_p->num <= 0 || param_1 == 0xFF) {
return NULL;
}
dStage_Ship_data* data_p = ship_p->m_entries;
if (data_p == NULL) {
return NULL;
}
for (int i = 0; i < ship_p->num; i++) {
if (param_1 == data_p->field_0xe) {
return data_p;
}
data_p++;
}
return NULL;
}
/* 80053678-80053728 .text dComIfGp_getMapTrans__FiPfPfPs */
bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angle) {
dStage_Multi_c* multi_p = dComIfGp_getMulti();
if (multi_p == NULL) {
return false;
}
dStage_Mult_info* data_p = multi_p->m_entries;
for (int i = 0; i < multi_p->num; i++) {
if (i_roomNo == data_p->mRoomNo) {
*o_transX = data_p->mTransX;
*o_transY = data_p->mTransY;
*o_angle = data_p->mAngle;
return true;
}
data_p++;
}
return false;
}
/* 80053728-80053778 .text dComIfGp_getRoomCamera__Fi */
stage_camera_class* dComIfGp_getRoomCamera(int i_roomNo) {
dStage_roomStatus_c* status = dComIfGp_roomControl_getStatusRoomDt(i_roomNo);
if (status == NULL) {
return NULL;
}
return status->getCamera();
}
/* 80053778-800537C8 .text dComIfGp_getRoomArrow__Fi */
stage_arrow_class* dComIfGp_getRoomArrow(int i_roomNo) {
dStage_roomStatus_c* status = dComIfGp_roomControl_getStatusRoomDt(i_roomNo);
if (status == NULL) {
return NULL;
}
return status->getArrow();
}
/* 800537C8-8005388C .text dComIfGp_setNextStage__FPCcsScScfUliSc */
void dComIfGp_setNextStage(const char* i_stageName, s16 i_point, s8 i_roomNo, s8 i_layer,
f32 i_lastSpeed, u32 i_lastMode, int i_setPoint, s8 i_wipe) {
g_dComIfG_gameInfo.play.setNextStage(i_stageName, i_roomNo, i_point, i_layer, i_wipe);
if (daPy_getPlayerLinkActorClass() != NULL) {
daPy_lk_c* link = daPy_getPlayerLinkActorClass();
if (link->checkEquipDragonShield()) {
i_lastMode |= 0x8000;
}
i_lastMode |= link->checkTinkleShield() << 0x10;
if (link->checkNoResetFlg1(daPy_lk_c::daPyFlg1_UNK8000)) {
i_lastMode |= 0x4000;
}
}
g_dComIfG_gameInfo.save.getRestart().setLastSceneInfo(i_lastSpeed, i_lastMode);
if (i_setPoint) {
dComIfGs_setStartPoint(i_point);
}
}
/* 8005388C-80053918 .text dComIfGs_onStageTbox__Fii */
void dComIfGs_onStageTbox(int i_stageNo, int i_no) {
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
dComIfGs_onTbox(i_no);
}
dComIfGs_onSaveTbox(i_stageNo, i_no);
}
/* 80053918-800539A8 .text dComIfGs_isStageTbox__Fii */
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);
}
}
/* 800539A8-80053A2C .text dComIfGs_isStageBossEnemy__Fi */
BOOL dComIfGs_isStageBossEnemy(int i_stageNo) {
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
return dComIfGs_isStageBossEnemy();
} else {
return g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().isStageBossEnemy();
}
}
/* 80053A2C-80053AAC .text dComIfGs_onStageLife__Fi */
void dComIfGs_onStageLife(int i_stageNo) {
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
dComIfGs_onStageLife();
}
g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().onStageLife();
}
/* 80053AAC-80053B30 .text dComIfGs_isStageLife__Fi */
BOOL dComIfGs_isStageLife(int i_stageNo) {
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) {
return dComIfGs_isStageLife();
} else {
return g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().isStageLife();
}
}
/* 80053B30-80053F70 .text dComIfGs_checkGetItem__FUc */
u8 dComIfGs_checkGetItem(u8 i_itemNo) {
u8 get_item = 0;
switch (i_itemNo) {
case TACT_SONG1:
if (dComIfGs_isTact(0)) {
get_item = 1;
}
break;
case TACT_SONG2:
if (dComIfGs_isTact(1)) {
get_item = 1;
}
break;
case TACT_SONG3:
if (dComIfGs_isTact(2)) {
get_item = 1;
}
break;
case TACT_SONG4:
if (dComIfGs_isTact(3)) {
get_item = 1;
}
break;
case TACT_SONG5:
if (dComIfGs_isTact(4)) {
get_item = 1;
}
break;
case TACT_SONG6:
if (dComIfGs_isTact(5)) {
get_item = 1;
}
break;
case TRIFORCE1:
if (dComIfGs_isTriforce(0)) {
get_item = 1;
}
break;
case TRIFORCE2:
if (dComIfGs_isTriforce(1)) {
get_item = 1;
}
break;
case TRIFORCE3:
if (dComIfGs_isTriforce(2)) {
get_item = 1;
}
break;
case TRIFORCE4:
if (dComIfGs_isTriforce(3)) {
get_item = 1;
}
break;
case TRIFORCE5:
if (dComIfGs_isTriforce(4)) {
get_item = 1;
}
break;
case TRIFORCE6:
if (dComIfGs_isTriforce(5)) {
get_item = 1;
}
break;
case TRIFORCE7:
if (dComIfGs_isTriforce(6)) {
get_item = 1;
}
break;
case TRIFORCE8:
if (dComIfGs_isTriforce(7)) {
get_item = 1;
}
break;
case PEARL1:
if (dComIfGs_isSymbol(0)) {
get_item = 1;
}
break;
case PEARL2:
if (dComIfGs_isSymbol(1)) {
get_item = 1;
}
break;
case PEARL3:
if (dComIfGs_isSymbol(2)) {
get_item = 1;
}
break;
case PIRATES_OMAMORI:
if (dComIfGs_isCollect(3, 0)) {
get_item = 1;
}
break;
case HEROS_OMAMORI:
if (dComIfGs_isCollect(4, 0)) {
get_item = 1;
}
break;
default:
for (int i = 0; i < 60; i++) {
if (i_itemNo == dComIfGs_getItem(i)) {
get_item++;
}
}
for (int i = 0; i < 3; i++) {
if (i_itemNo == dComIfGs_getSelectEquip(i)) {
get_item++;
}
}
if (i_itemNo >= 0xBF && i_itemNo <= NO_ITEM - 1 &&
dComIfGs_isGetCollectMap(NO_ITEM - i_itemNo))
{
get_item++;
}
break;
}
return get_item;
}
/* 80053F70-80054578 .text dComIfGs_checkGetItemNum__FUc */
u8 dComIfGs_checkGetItemNum(u8 i_itemNo) {
u8 get_item = 0;
switch (i_itemNo) {
case TACT_SONG1:
if (dComIfGs_isTact(0)) {
get_item = 1;
}
break;
case TACT_SONG2:
if (dComIfGs_isTact(1)) {
get_item = 1;
}
break;
case TACT_SONG3:
if (dComIfGs_isTact(2)) {
get_item = 1;
}
break;
case TACT_SONG4:
if (dComIfGs_isTact(3)) {
get_item = 1;
}
break;
case TACT_SONG5:
if (dComIfGs_isTact(4)) {
get_item = 1;
}
break;
case TACT_SONG6:
if (dComIfGs_isTact(5)) {
get_item = 1;
}
break;
case TRIFORCE1:
if (dComIfGs_isTriforce(0)) {
get_item = 1;
}
break;
case TRIFORCE2:
if (dComIfGs_isTriforce(1)) {
get_item = 1;
}
break;
case TRIFORCE3:
if (dComIfGs_isTriforce(2)) {
get_item = 1;
}
break;
case TRIFORCE4:
if (dComIfGs_isTriforce(3)) {
get_item = 1;
}
break;
case TRIFORCE5:
if (dComIfGs_isTriforce(4)) {
get_item = 1;
}
break;
case TRIFORCE6:
if (dComIfGs_isTriforce(5)) {
get_item = 1;
}
break;
case TRIFORCE7:
if (dComIfGs_isTriforce(6)) {
get_item = 1;
}
break;
case TRIFORCE8:
if (dComIfGs_isTriforce(7)) {
get_item = 1;
}
break;
case PEARL1:
if (dComIfGs_isSymbol(0)) {
get_item = 1;
}
break;
case PEARL2:
if (dComIfGs_isSymbol(1)) {
get_item = 1;
}
break;
case PEARL3:
if (dComIfGs_isSymbol(2)) {
get_item = 1;
}
break;
case PIRATES_OMAMORI:
if (dComIfGs_isCollect(3, 0)) {
get_item = 1;
}
break;
case HEROS_OMAMORI:
if (dComIfGs_isCollect(4, 0)) {
get_item = 1;
}
break;
case BOW:
if (dComIfGs_getItem(12)) {
get_item = dComIfGs_getArrowNum();
}
break;
case BOMB_BAG:
if (dComIfGs_getItem(13)) {
get_item = dComIfGs_getBombNum();
}
break;
case SKULL_NECKLACE:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == SKULL_NECKLACE) {
get_item = dComIfGs_getBeastNum(0);
}
}
break;
case BOKOBABA_SEED:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == BOKOBABA_SEED) {
get_item = dComIfGs_getBeastNum(1);
}
}
break;
case GOLDEN_FEATHER:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == GOLDEN_FEATHER) {
get_item = dComIfGs_getBeastNum(2);
}
}
break;
case BOKO_BELT:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == BOKO_BELT) {
get_item = dComIfGs_getBeastNum(3);
}
}
break;
case RED_JELLY:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == RED_JELLY) {
get_item = dComIfGs_getBeastNum(4);
}
}
break;
case GREEN_JELLY:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == GREEN_JELLY) {
get_item = dComIfGs_getBeastNum(5);
}
}
break;
case BLUE_JELLY:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == BLUE_JELLY) {
get_item = dComIfGs_getBeastNum(6);
}
}
break;
case PENDANT:
for (int i = 0; i < 8; i++) {
if (dComIfGs_getBeast(i) == PENDANT) {
get_item = dComIfGs_getBeastNum(7);
}
}
break;
default:
for (int i = 0; i < 60; i++) {
if (i_itemNo == dComIfGs_getItem(i)) {
get_item = 1;
}
}
for (int i = 0; i < 3; i++) {
if (i_itemNo == dComIfGs_getSelectEquip(i)) {
get_item = 1;
}
}
if (i_itemNo >= 0xBF && i_itemNo <= NO_ITEM - 1 &&
dComIfGs_isGetCollectMap(NO_ITEM - i_itemNo))
{
get_item = 1;
}
break;
}
return get_item;
}
/* 80054578-8005468C .text
* dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj */
int dComIfGd_setShadow(u32 id, s8 param_2, J3DModel* pModel, cXyz* pPos, f32 param_5, f32 param_6,
f32 y, f32 param_8, cBgS_PolyInfo& pFloorPoly, dKy_tevstr_c* param_10,
s16 rotY, f32 param_12, GXTexObj* pTexObj) {
if (param_8 <= -1000000000.0f) {
return 0;
}
int sid = dComIfGd_setRealShadow2(id, param_2, pModel, pPos, param_5, y - param_8, param_10);
if (sid == 0) {
cXyz i_pos(pPos->x, y, pPos->z);
dComIfGd_setSimpleShadow2(&i_pos, param_8, param_6, pFloorPoly, rotY, param_12, pTexObj);
}
return sid;
}
static void dummy() {
OSReport("0 <= cam_id && cam_id < mapc->num");
OSReport("0 <= arrow_id && arrow_id < mapa->num");
OSReport("0 <= room_cam_id && room_cam_id < pcam->num");
OSReport("0 <= arrow_id && arrow_id < parr->num");
}
/* 8005468C-800547BC .text getSceneList__Fi */
stage_scls_info_class* getSceneList(int i_no) {
stage_scls_info_dummy_class* sclsInfo = dComIfGp_getStage().getSclsInfo();
JUT_ASSERT(2132, sclsInfo != 0);
JUT_ASSERT(2134, 0 <= i_no && i_no < sclsInfo->num);
stage_scls_info_class* sclsData = sclsInfo->m_entries;
JUT_ASSERT(2136, sclsData != 0);
return &sclsData[i_no];
}
/* 800547BC-80054870 .text dComIfGd_getMeshSceneList__FR3Vec */
stage_scls_info_class* dComIfGd_getMeshSceneList(Vec& vec) {
s32 x = (s32)((vec.x + 350000.0f) * 2e-05f);
s32 z = (s32)((vec.z + 350000.0f) * 2e-05f);
if (x < 0) {
x = 0;
} else if (13 < x) {
x = 13;
}
if (z < 0) {
z = 0;
} else if (13 < z) {
z = 13;
}
return getSceneList((x & 1) + ((x >> 1) + (z >> 1) * 7) * 4 + (z & 1) * 2);
}
/* 80054870-800548FC .text dComIfGs_checkSeaLandingEvent__FSc */
BOOL dComIfGs_checkSeaLandingEvent(s8 i_roomNo) {
struct landing_event {
/* 0x0 */ s8 roomNo;
/* 0x2 */ u16 event;
};
static landing_event l_landingEvent[] = {
{1, 0x3040}, {4, 0x2E02}, {13, 0x902}, {23, 0xA02}, {41, 0xA20}, {45, 0x2E04},
};
landing_event* event_check = l_landingEvent;
for (u32 i = 0; i < 6; i++) {
if (i_roomNo == event_check->roomNo && !dComIfGs_isEventBit(event_check->event)) {
return FALSE;
}
event_check++;
}
return TRUE;
}
/* 800548FC-80054C70 .text dComIfGs_setGameStartStage__Fv */
// NONMATCHING - one tiny reg swap
void dComIfGs_setGameStartStage() {
struct check_data {
/* 0x0 */ u8 mbHasEvent;
/* 0x2 */ u16 mEvent;
/* 0x4 */ char mStage[8];
/* 0xC */ s8 mRoomNo;
/* 0xD */ u8 mStartCode;
};
static check_data l_checkData[] = {
{true, 0x2A08, "", 0, 0}, {true, 0xF80, "sea", 11, 128},
{true, 0x801, "MajyuE", 0, 0}, {true, 0x808, "MajyuE", 0, 18},
{true, 0x2401, "A_umikz", 0, 204}, {false, 0, "sea", 44, 128},
};
check_data* data_p = l_checkData;
for (u32 i = 0; i < 5; i++) {
if (data_p->mbHasEvent == true && dComIfGs_isEventBit(data_p->mEvent)) {
break;
}
data_p++;
}
char stage_name[8];
s8 room_no;
u8 point;
if (strcmp(data_p->mStage, "") != 0) {
strcpy(stage_name, data_p->mStage);
room_no = data_p->mRoomNo;
point = data_p->mStartCode;
} else {
u32 stage_type = dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo());
int save_tbl = dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo());
BOOL isNot_PShip = strcmp(dComIfGp_getStartStageName(), "PShip");
if (!isNot_PShip) {
strcpy(stage_name, "sea");
room_no = dComIfGs_getEventReg(0xC3FF);
point = dComIfGs_getEventReg(0x85FF);
dKy_set_nexttime(120.0f);
} else if (stage_type == 7) {
daPy_lk_c* player_p = daPy_getPlayerLinkActorClass();
point = player_p->m3594;
s8 temp_r3 = player_p->current.roomNo;
room_no = temp_r3;
stage_scls_info_class* scls_p;
if (temp_r3 >= 0 && point != 0xFF && dComIfGs_checkSeaLandingEvent(room_no)) {
strcpy(stage_name, dComIfGp_getStartStageName());
} else {
if (dComIfGp_getShipActor() != NULL) {
scls_p = dComIfGd_getMeshSceneList(dComIfGp_getShipActor()->current.pos);
} else {
scls_p = dComIfGd_getMeshSceneList(player_p->current.pos);
}
strcpy(stage_name, scls_p->mStage);
room_no = scls_p->mRoom;
point = scls_p->mStart;
}
} else if (stage_type == 1 || stage_type == 6 || stage_type == 3 || stage_type == 8 || save_tbl == 9) {
stage_scls_info_class* scls_p = getSceneList(0);
strcpy(stage_name, scls_p->mStage);
room_no = scls_p->mRoom;
point = scls_p->mStart;
} else if (save_tbl == 10) {
cXyz ikada_pos;
dComIfGp_getIkadaShipBeforePos(&ikada_pos);
stage_scls_info_class* scls_p = dComIfGd_getMeshSceneList(ikada_pos);
strcpy(stage_name, scls_p->mStage);
room_no = scls_p->mRoom;
point = scls_p->mStart;
} else if (save_tbl == 11 || save_tbl == 12 || save_tbl == 13) {
strcpy(stage_name, "sea");
stage_map_info_class* mapInfo = dComIfGp_getStage().getMapInfo();
JUT_ASSERT(2362, mapInfo != 0);
room_no = 4 + dStage_mapInfo_GetOceanX(mapInfo) + ((dStage_mapInfo_GetOceanZ(mapInfo) + 3) * 7);
point = 0;
} else {
strcpy(stage_name, "sea");
room_no = 11;
point = 0;
}
}
g_dComIfG_gameInfo.save.getPlayer().getPlayerReturnPlace().set(stage_name, room_no, point);
}
/* 80054C70-80054CC0 .text dComIfGs_gameStart__Fv */
void dComIfGs_gameStart() {
dComIfGp_offEnableNextStage();
s8 roomNo = g_dComIfG_gameInfo.save.getPlayer().getPlayerReturnPlace().getRoomNo();
s16 point = g_dComIfG_gameInfo.save.getPlayer().getPlayerReturnPlace().getPlayerStatus();
char* name = g_dComIfG_gameInfo.save.getPlayer().getPlayerReturnPlace().getName();
dComIfGp_setNextStage(name, point, roomNo, -1, 0.0f, 0, 1, 0);
}
/* 80054CC0-80054E9C .text dComIfGs_copyPlayerRecollectionData__Fv */
void dComIfGs_copyPlayerRecollectionData() {
/* Nonmatching */
s32 tbl;
u8 buf[0x70];
if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == 3) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 3)
tbl = 0;
else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 4)
tbl = 1;
else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 6)
tbl = 2;
else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 7)
tbl = 3;
else
return;
} else {
return;
}
memcpy(&buf[0x00], &g_dComIfG_gameInfo.save.getPlayer().getPlayerStatusA(), 0x18);
memcpy(&buf[0x18], &g_dComIfG_gameInfo.save.getPlayer().getItem(), 0x15);
memcpy(&buf[0x2D], &g_dComIfG_gameInfo.save.getPlayer().getItemRecord().field_0x2, 0x03);
memcpy(&buf[0x30], &g_dComIfG_gameInfo.save.getPlayer().getItemMax().field_0x0, 0x03);
memcpy(&buf[0x33], &g_dComIfG_gameInfo.save.getPlayer().getBagItem(), 0x18);
memcpy(&buf[0x4B], &g_dComIfG_gameInfo.save.getPlayer().getBagItemRecord(), 0x18);
memcpy(&buf[0x63], &g_dComIfG_gameInfo.save.getPlayer().getCollect(), 0x0D);
memcpy(g_dComIfG_gameInfo.save.getPlayer().getpPlayerStatusC(tbl), buf, sizeof(buf));
}
/* 80054E9C-80055318 .text dComIfGs_setPlayerRecollectionData__Fv */
void dComIfGs_setPlayerRecollectionData() {
/* Nonmatching */
}
/* 80055318-80055580 .text dComIfGs_revPlayerRecollectionData__Fv */
void dComIfGs_revPlayerRecollectionData() {
/* Nonmatching */
}
/* 80055580-8005586C .text dComIfGs_exchangePlayerRecollectionData__Fv */
void dComIfGs_exchangePlayerRecollectionData() {
/* Nonmatching */
}
/* 8005586C-800559E8 .text dComIfGs_setSelectEquip__FiUc */
void dComIfGs_setSelectEquip(int i_type, u8 i_itemNo) {
switch (i_type) {
case 0:
switch (i_itemNo) {
case SWORD:
dComIfGs_onCollect(i_type, 0);
break;
case MASTER_SWORD:
dComIfGs_onCollect(i_type, 1);
break;
case LV3_SWORD:
dComIfGs_onCollect(i_type, 2);
break;
case MASTER_SWORD_EX:
dComIfGs_onCollect(i_type, 3);
break;
}
break;
case 1:
switch (i_itemNo) {
case SHIELD:
dComIfGs_onCollect(i_type, 0);
break;
case MIRROR_SHIELD:
dComIfGs_onCollect(i_type, 1);
break;
}
break;
case 2:
if (i_itemNo == PWR_GROOVE) {
dComIfGs_onCollect(i_type, 0);
}
break;
}
g_dComIfG_gameInfo.save.getPlayer().getPlayerStatusA().mSelectEquip[i_type] = i_itemNo;
}