mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-03 18:36:06 -04:00
1295 lines
36 KiB
C++
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;
|
|
}
|