mirror of
https://github.com/zeldaret/tp
synced 2026-08-18 13:43:24 -04:00
d_a_no_chg_room / d_a_e_st_line done (#2056)
* no_chg_room done * d_a_e_st_line done * remove asm * d_a_e_bi_leaf done * d_a_e_hb_leaf done
This commit is contained in:
+156
-171
@@ -1,203 +1,188 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d/a/d_a_no_chg_room
|
||||
//
|
||||
/**
|
||||
* d_a_no_chg_room.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_no_chg_room.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct process_node_class {};
|
||||
|
||||
struct mDoMtx_stack_c {
|
||||
static u8 now[48];
|
||||
};
|
||||
|
||||
struct fopAc_ac_c {
|
||||
/* 80018B64 */ fopAc_ac_c();
|
||||
};
|
||||
|
||||
struct cXyz {};
|
||||
|
||||
struct fopAcM_gc_c {
|
||||
/* 8001DCBC */ void gndCheck(cXyz const*);
|
||||
|
||||
static u8 mGndCheck[84];
|
||||
};
|
||||
|
||||
struct daNocrm_c {
|
||||
/* 801452DC */ void execute();
|
||||
/* 80145508 */ void getRoomNo(int);
|
||||
};
|
||||
|
||||
struct dStage_roomControl_c {
|
||||
static u8 mStatus[65792];
|
||||
};
|
||||
|
||||
struct cBgS_PolyInfo {};
|
||||
|
||||
struct dBgS {
|
||||
/* 80075100 */ void GetRoomId(cBgS_PolyInfo const&);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" static void isLoadRoom__Fi();
|
||||
extern "C" void execute__9daNocrm_cFv();
|
||||
extern "C" void getRoomNo__9daNocrm_cFi();
|
||||
extern "C" static void daNocrm_create__FP9daNocrm_c();
|
||||
extern "C" static bool daNocrm_Delete__FP9daNocrm_c();
|
||||
extern "C" static void daNocrm_execute__FP9daNocrm_c();
|
||||
extern "C" static bool daNocrm_draw__FP9daNocrm_c();
|
||||
extern "C" extern char const* const d_a_d_a_no_chg_room__stringBase0;
|
||||
extern "C" extern void* g_profile_NO_CHG_ROOM[12];
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void OSReport_Warning();
|
||||
extern "C" void mDoMtx_YrotM__FPA4_fs();
|
||||
extern "C" void __ct__10fopAc_ac_cFv();
|
||||
extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
|
||||
extern "C" void fopScnM_SearchByID__FUi();
|
||||
extern "C" void fpcNd_IsDeleteTiming__FP18process_node_class();
|
||||
extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo();
|
||||
extern "C" void PSMTXCopy();
|
||||
extern "C" void PSMTXInverse();
|
||||
extern "C" void PSMTXTrans();
|
||||
extern "C" void PSMTXMultVec();
|
||||
extern "C" void PSVECScale();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" extern void* g_fopAc_Method[8];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" u8 mGndCheck__11fopAcM_gc_c[84];
|
||||
extern "C" u8 mStatus__20dStage_roomControl_c[65792];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 data_804505F0[8];
|
||||
extern "C" extern u8 mNoChangeRoom__20dStage_roomControl_c[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/s/d_s_room.h"
|
||||
#include "rel/d/a/d_a_horse/d_a_horse.h"
|
||||
|
||||
/* 801451EC-801452DC 13FB2C 00F0+00 1/1 0/0 0/0 .text isLoadRoom__Fi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void isLoadRoom(int param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_no_chg_room/isLoadRoom__Fi.s"
|
||||
}
|
||||
#pragma pop
|
||||
static bool isLoadRoom(int i_roomNo) {
|
||||
roomRead_class* room = dComIfGp_getStageRoom();
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804533C8-804533CC 0019C8 0004+00 2/2 0/0 0/0 .sdata2 @3762 */
|
||||
SECTION_SDATA2 static u8 lit_3762[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
if (room != NULL && room->field_0x0 > i_roomNo) {
|
||||
int load_room_index;
|
||||
int num;
|
||||
u8* data;
|
||||
|
||||
num = room->field_0x4[i_roomNo]->field_0x0;
|
||||
data = room->field_0x4[i_roomNo]->field_0x4;
|
||||
|
||||
for (int i = 0; i < num; i++) {
|
||||
load_room_index = dStage_roomRead_dt_c_GetLoadRoomIndex(data[i]);
|
||||
if (dComIfGp_roomControl_checkStatusFlag(load_room_index, 2)) {
|
||||
// "Room <%d> loading!\n"
|
||||
OS_REPORT("部屋<%d>読み込み中!\n", load_room_index);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (dComIfGp_roomControl_checkStatusFlag(load_room_index, 9) == (u32)TRUE) {
|
||||
room_of_scene_class* roomScene = (room_of_scene_class*)fopScnM_SearchByID(
|
||||
dStage_roomControl_c::getStatusProcID(load_room_index));
|
||||
JUT_ASSERT(roomScene != 0);
|
||||
|
||||
if (roomScene->field_0x1d4 >= 0 || !fpcNd_IsDeleteTiming(&roomScene->mBase)) {
|
||||
// "Room <%d> objects loading!\n"
|
||||
OS_REPORT("部屋<%d>オブジェクト読み込み中!\n", load_room_index);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 801452DC-80145508 13FC1C 022C+00 1/1 0/0 0/0 .text execute__9daNocrm_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daNocrm_c::execute() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_no_chg_room/execute__9daNocrm_cFv.s"
|
||||
int daNocrm_c::execute() {
|
||||
daPy_py_c* player_p = daPy_getPlayerActorClass();
|
||||
cXyz cur_player_pos(player_p->current.pos);
|
||||
|
||||
if (player_p->checkHorseRide()) {
|
||||
cur_player_pos.y = i_dComIfGp_getHorseActor()->current.pos.y;
|
||||
} else if (player_p->checkSpinnerRide()) {
|
||||
fopAc_ac_c* spinner_actor = player_p->getSpinnerActor();
|
||||
|
||||
if (spinner_actor != NULL) {
|
||||
cur_player_pos.y = spinner_actor->current.pos.y;
|
||||
}
|
||||
}
|
||||
|
||||
cXyz sp14;
|
||||
mDoMtx_multVec(mInvMtx, &cur_player_pos, &sp14);
|
||||
|
||||
if (sp14.y < 0.0f || sp14.y > mScale.y || fabsf(sp14.x) > mScale.x || fabsf(sp14.z) > mScale.z)
|
||||
{
|
||||
if (mSubtype == 0 || !mRoomLoading ||
|
||||
dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (isLoadRoom(getRoomNo(sp14.z < 0.0f ? 0 : 1))) {
|
||||
mRoomLoading = false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
sp14.z = sp14.z < 0.0f ? -mScale.z : mScale.z;
|
||||
|
||||
cXyz new_player_pos;
|
||||
mDoMtx_multVec(mMtx, &sp14, &new_player_pos);
|
||||
|
||||
daPy_getLinkPlayerActorClass()->setPlayerPosAndAngle(&new_player_pos,
|
||||
player_p->shape_angle.y, 1);
|
||||
}
|
||||
|
||||
if (mSubtype == 0) {
|
||||
dStage_roomControl_c::setRoomReadId(getReadRoomId());
|
||||
} else {
|
||||
dStage_roomControl_c::onNoChangeRoom();
|
||||
mRoomLoading = true;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
inline int fopAcM_gc_c::getRoomId() {
|
||||
return dComIfG_Bgsp().GetRoomId(*(dBgS_GndChk*)mGndCheck);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80145508-801455A8 13FE48 00A0+00 1/1 0/0 0/0 .text getRoomNo__9daNocrm_cFi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daNocrm_c::getRoomNo(int param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_no_chg_room/getRoomNo__9daNocrm_cFi.s"
|
||||
int daNocrm_c::getRoomNo(int param_0) {
|
||||
if (mRoomNo[param_0] < 0) {
|
||||
f32 z_offset = param_0 ? -mScale.z : mScale.z;
|
||||
|
||||
cXyz offset(0.0f, mScale.y, z_offset);
|
||||
cXyz check_pos;
|
||||
mDoMtx_multVec(mMtx, &offset, &check_pos);
|
||||
|
||||
bool groundHit = fopAcM_gc_c::gndCheck(&check_pos);
|
||||
JUT_ASSERT(groundHit);
|
||||
|
||||
int roomNo = fopAcM_gc_c::getRoomId();
|
||||
JUT_ASSERT(0 <= roomNo && roomNo < 64);
|
||||
|
||||
mRoomNo[param_0] = roomNo;
|
||||
}
|
||||
|
||||
return mRoomNo[param_0];
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80392640-80392640 01ECA0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80392640 =
|
||||
"部屋読み込み矩形:読み込みIDが−1ですので、自滅します!\n";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_8039267C = "\0\0\0";
|
||||
#pragma pop
|
||||
int daNocrm_c::create() {
|
||||
if (mSubtype == 0 && getReadRoomId() < 0) {
|
||||
// "Room Load Rectangle: Load ID is -1, so destroy self!\n"
|
||||
OSReport_Warning("部屋読み込み矩形:読み込みIDが−1ですので、自滅します!\n");
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
/* 804533CC-804533D0 0019CC 0004+00 1/1 0/0 0/0 .sdata2 @3832 */
|
||||
SECTION_SDATA2 static f32 lit_3832 = 1000.0f;
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
cMtx_copy(mDoMtx_stack_c::get(), mMtx);
|
||||
cMtx_inverse(mDoMtx_stack_c::get(), mInvMtx);
|
||||
|
||||
/* 804533D0-804533D8 0019D0 0004+04 1/1 0/0 0/0 .sdata2 @3833 */
|
||||
SECTION_SDATA2 static f32 lit_3833[1 + 1 /* padding */] = {
|
||||
100.0f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
mScale *= getScaleType() ? 1000.0f : 100.0f;
|
||||
mRoomNo[0] = -1;
|
||||
mRoomNo[1] = -1;
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 801455A8-801456A4 13FEE8 00FC+00 1/0 0/0 0/0 .text daNocrm_create__FP9daNocrm_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daNocrm_create(daNocrm_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_no_chg_room/daNocrm_create__FP9daNocrm_c.s"
|
||||
static int daNocrm_create(daNocrm_c* i_this) {
|
||||
fopAcM_SetupActor(i_this, daNocrm_c);
|
||||
return i_this->create();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 801456A4-801456AC 13FFE4 0008+00 1/0 0/0 0/0 .text daNocrm_Delete__FP9daNocrm_c */
|
||||
static bool daNocrm_Delete(daNocrm_c* param_0) {
|
||||
return true;
|
||||
static int daNocrm_Delete(daNocrm_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 801456AC-801456CC 13FFEC 0020+00 1/0 0/0 0/0 .text daNocrm_execute__FP9daNocrm_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daNocrm_execute(daNocrm_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_no_chg_room/daNocrm_execute__FP9daNocrm_c.s"
|
||||
static int daNocrm_execute(daNocrm_c* i_this) {
|
||||
return i_this->execute();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 801456CC-801456D4 14000C 0008+00 1/0 0/0 0/0 .text daNocrm_draw__FP9daNocrm_c */
|
||||
static bool daNocrm_draw(daNocrm_c* param_0) {
|
||||
return true;
|
||||
static int daNocrm_draw(daNocrm_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803B3658-803B3678 -00001 0020+00 1/0 0/0 0/0 .data daNocrm_METHODS */
|
||||
SECTION_DATA static void* daNocrm_METHODS[8] = {
|
||||
(void*)daNocrm_create__FP9daNocrm_c,
|
||||
(void*)daNocrm_Delete__FP9daNocrm_c,
|
||||
(void*)daNocrm_execute__FP9daNocrm_c,
|
||||
(void*)NULL,
|
||||
(void*)daNocrm_draw__FP9daNocrm_c,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
static actor_method_class daNocrm_METHODS = {
|
||||
(process_method_func)daNocrm_create, (process_method_func)daNocrm_Delete,
|
||||
(process_method_func)daNocrm_execute, (process_method_func)NULL,
|
||||
(process_method_func)daNocrm_draw,
|
||||
};
|
||||
|
||||
/* 803B3678-803B36A8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NO_CHG_ROOM */
|
||||
SECTION_DATA extern void* g_profile_NO_CHG_ROOM[12] = {
|
||||
(void*)0xFFFFFFFD, (void*)0x0002FFFD,
|
||||
(void*)0x001A0000, (void*)&g_fpcLf_Method,
|
||||
(void*)0x000005CC, (void*)NULL,
|
||||
(void*)NULL, (void*)&g_fopAc_Method,
|
||||
(void*)0x02FA0000, (void*)&daNocrm_METHODS,
|
||||
(void*)0x00060000, (void*)0x05000000,
|
||||
extern actor_process_profile_definition g_profile_NO_CHG_ROOM = {
|
||||
fpcLy_CURRENT_e,
|
||||
2,
|
||||
fpcPi_CURRENT_e,
|
||||
PROC_NO_CHG_ROOM,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(daNocrm_c),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
762,
|
||||
&daNocrm_METHODS,
|
||||
0x60000,
|
||||
fopAc_UNK_GROUP_5_e,
|
||||
fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
||||
/* 80392640-80392640 01ECA0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
||||
@@ -317,7 +317,7 @@ extern "C" void getCellWidth__7JUTFontCFv();
|
||||
extern "C" void getCellHeight__7JUTFontCFv();
|
||||
extern "C" void __dt__26mDoExt_3DlineMatSortPacketFv();
|
||||
extern "C" bool getMaterialID__19mDoExt_3DlineMat1_cFv();
|
||||
extern "C" bool getMaterialID__19mDoExt_3DlineMat0_cFv();
|
||||
extern "C" int getMaterialID__19mDoExt_3DlineMat0_cFv();
|
||||
extern "C" void setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform();
|
||||
extern "C" void setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform();
|
||||
extern "C" bool getAnmTransform__10J3DMtxCalcFUc();
|
||||
@@ -3607,7 +3607,7 @@ extern "C" void __ct__4cXyzFv() {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoExt_3DlineMat0_c::init(u16 param_0, u16 param_1, int param_2) {
|
||||
asm int mDoExt_3DlineMat0_c::init(u16 param_0, u16 param_1, int param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_ext/init__19mDoExt_3DlineMat0_cFUsUsi.s"
|
||||
}
|
||||
@@ -4212,7 +4212,8 @@ int mDoExt_3DlineMat1_c::getMaterialID() {
|
||||
}
|
||||
|
||||
/* 80014E84-80014E8C 00F7C4 0008+00 1/0 0/0 0/0 .text getMaterialID__19mDoExt_3DlineMat0_cFv */
|
||||
int mDoExt_3DlineMat0_c::getMaterialID() {
|
||||
// int mDoExt_3DlineMat0_c::getMaterialID() {
|
||||
extern "C" int getMaterialID__19mDoExt_3DlineMat0_cFv() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user