tp/rel/d/a/d_a_bg/d_a_bg.cpp

1109 lines
37 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: d_a_bg
//
#include "rel/d/a/d_a_bg/d_a_bg.h"
#include "d/bg/d_bg_w.h"
#include "d/bg/d_bg_w_kcol.h"
#include "d/com/d_com_inf_game.h"
#include "d/com/d_com_static.h"
#include "dol2asm.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_lib.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
//
// Types:
//
struct daGrass_c {
/* 800319C8 */ static void deleteRoomGrass(int);
/* 80031A20 */ static void deleteRoomFlower(int);
};
class daBg_btkAnm_c {
public:
/* 80457F34 */ int create(J3DModelData*, J3DAnmTextureSRTKey*, int);
/* 80458088 */ void entry(J3DModelData*);
/* 804580CC */ void play();
void entryFrame() { mpBtk->entryFrame(); }
void playspeed(f32 speed) { mpBtk->setPlaySpeed(speed); }
/* 0x0 */ mDoExt_btkAnm* mpBtk;
/* 0x4 */ u8 field_0x4;
};
class daBg_brkAnm_c {
public:
/* 804580F0 */ int create(J3DModelData*, J3DAnmTevRegKey*, int);
/* 80458230 */ void entry(J3DModelData*);
/* 80458274 */ void play();
void entryFrame() { mpBrk->entryFrame(); }
void entryFrame(f32 frame) { mpBrk->entryFrame(frame); }
f32 getEndFrame() { return mpBrk->getEndFrame(); }
/* 0x0 */ mDoExt_brkAnm* mpBrk;
/* 0x4 */ u8 field_0x4;
};
struct daBg_unkData {
/* 0x00 */ J3DModel* mpBgModel;
/* 0x04 */ daBg_btkAnm_c* mpBgBtk;
/* 0x08 */ daBg_brkAnm_c* mpBgBrk;
/* 0x0C */ dKy_tevstr_c* mpTevStr;
/* 0x10 */ f32 mBtkAnmSpeed;
}; // Size: 0x14
class daBg_c : public fopAc_ac_c {
public:
/* 80457BF8 */ const char* setArcName();
/* 804582B8 */ int createHeap();
/* 80458788 */ ~daBg_c();
/* 804588C4 */ int draw();
/* 8045906C */ int create();
inline int execute();
private:
/* 0x568 */ u8 field_0x568[0x570 - 0x568];
/* 0x570 */ daBg_unkData mBgData[6];
/* 0x5E8 */ dBgW* mpBgW;
/* 0x5EC */ dBgWKCol* mpKCol;
/* 0x5F0 */ u8 field_0x5f0;
/* 0x5F0 */ u8 field_0x5f1;
}; // Size: 0x5F4
//
// Forward References:
//
extern "C" void setArcName__6daBg_cFv();
extern "C" static void createMatAnm__FP12J3DModelDataUs();
extern "C" void __dt__15J3DTevKColorAnmFv();
extern "C" void __ct__15J3DTevKColorAnmFv();
extern "C" void __dt__14J3DTevColorAnmFv();
extern "C" void __ct__14J3DTevColorAnmFv();
extern "C" void __dt__11J3DTexNoAnmFv();
extern "C" void __ct__11J3DTexNoAnmFv();
extern "C" void __dt__12J3DTexMtxAnmFv();
extern "C" void __ct__12J3DTexMtxAnmFv();
extern "C" void __dt__14J3DMatColorAnmFv();
extern "C" void __ct__14J3DMatColorAnmFv();
extern "C" void create__13daBg_btkAnm_cFP12J3DModelDataP19J3DAnmTextureSRTKeyi();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" void entry__13daBg_btkAnm_cFP12J3DModelData();
extern "C" void play__13daBg_btkAnm_cFv();
extern "C" void create__13daBg_brkAnm_cFP12J3DModelDataP15J3DAnmTevRegKeyi();
extern "C" void entry__13daBg_brkAnm_cFP12J3DModelData();
extern "C" void play__13daBg_brkAnm_cFv();
extern "C" static void checkCreateHeap__FP10fopAc_ac_c();
extern "C" void createHeap__6daBg_cFv();
extern "C" void __ct__11J3DLightObjFv();
extern "C" void __dt__6daBg_cFv();
extern "C" static void daBg_Draw__FP6daBg_c();
extern "C" void draw__6daBg_cFv();
extern "C" static void daBg_Execute__FP6daBg_c();
extern "C" static bool daBg_IsDelete__FP6daBg_c();
extern "C" static void daBg_Delete__FP6daBg_c();
extern "C" static void daBg_Create__FP10fopAc_ac_c();
extern "C" void create__6daBg_cFv();
extern "C" void calc__11J3DTexNoAnmCFPUs();
extern "C" extern char const* const d_a_bg__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
extern "C" void mDoExt_modelEntryDL__FP8J3DModel();
extern "C" void mDoExt_setupStageTexture__FP12J3DModelData();
extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopMsgM_messageSetDemo__FUl();
extern "C" void getMemoryBlock__20dStage_roomControl_cFi();
extern "C" void dComIfGp_getMapTrans__FiPfPfPs();
extern "C" void dComIfGs_BossLife_public_Get__Fv();
extern "C" void dComIfG_getRoomArcName__Fi();
extern "C" void reset__Q27daSus_c6room_cFv();
extern "C" void deleteRoomGrass__9daGrass_cFi();
extern "C" void deleteRoomFlower__9daGrass_cFi();
extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
extern "C" void Release__4cBgSFP9dBgW_Base();
extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
extern "C" void __ct__4dBgWFv();
extern "C" void __ct__8dBgWKColFv();
extern "C" void create__8dBgWKColFPvPv();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void dKy_tevstr_init__FP12dKy_tevstr_cScUc();
extern "C" void dKy_bg_MAxx_proc__FPv();
extern "C" void calcViewFrustum__11J3DUClipperFv();
extern "C" void clip__11J3DUClipperCFPA4_CfP3VecP3Vec();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void create__12JKRSolidHeapFUlP7JKRHeapb();
extern "C" void adjustSize__12JKRSolidHeapFv();
extern "C" void getName__10JUTNameTabCFUs();
extern "C" void __as__12J3DLightInfoFRC12J3DLightInfo();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs();
extern "C" void initialize__14J3DMaterialAnmFv();
extern "C" void __construct_array();
extern "C" void _savegpr_15();
extern "C" void _savegpr_20();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_15();
extern "C" void _restgpr_20();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__14J3DMaterialAnm[4];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mClipper__14mDoLib_clipper[92];
extern "C" u8 mStatus__20dStage_roomControl_c[65792];
extern "C" u8 mRoom__7daSus_c[256];
extern "C" u8 m_frame__7dDemo_c[4];
//
// Declarations:
//
/* 80457BF8-80457C38 000078 0040+00 1/1 0/0 0/0 .text setArcName__6daBg_cFv */
const char* daBg_c::setArcName() {
static char arcName[32];
strncpy(arcName, dComIfG_getRoomArcName(fopAcM_GetParam(this)), sizeof(arcName));
return arcName;
}
/* 80457C38-80457D78 0000B8 0140+00 2/2 0/0 0/0 .text createMatAnm__FP12J3DModelDataUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int createMatAnm(J3DModelData* param_0, u16 param_1) {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/createMatAnm__FP12J3DModelDataUs.s"
}
#pragma pop
/* 80457D78-80457DB4 0001F8 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTevKColorAnm::~J3DTevKColorAnm() {
extern "C" asm void __dt__15J3DTevKColorAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__15J3DTevKColorAnmFv.s"
}
#pragma pop
/* 80457DB4-80457DCC 000234 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTevKColorAnm::J3DTevKColorAnm() {
extern "C" asm void __ct__15J3DTevKColorAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__ct__15J3DTevKColorAnmFv.s"
}
#pragma pop
/* 80457DCC-80457E08 00024C 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTevColorAnm::~J3DTevColorAnm() {
extern "C" asm void __dt__14J3DTevColorAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__14J3DTevColorAnmFv.s"
}
#pragma pop
/* 80457E08-80457E20 000288 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTevColorAnm::J3DTevColorAnm() {
extern "C" asm void __ct__14J3DTevColorAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__ct__14J3DTevColorAnmFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80459424-80459468 000000 0042+02 1/1 0/0 0/0 .data
* l_modelName$localstatic3$createHeap__6daBg_cFv */
SECTION_DATA static char l_modelName[6][11] = {
"model.bmd", "model1.bmd", "model2.bmd", "model3.bmd", "model4.bmd", "model5.bmd",
};
/* 80459468-804594AC 000044 0042+02 1/1 0/0 0/0 .data
* l_modelName2$localstatic4$createHeap__6daBg_cFv */
SECTION_DATA static char l_modelName2[6][11] = {
"model.bdl", "model1.bdl", "model2.bdl", "model3.bdl", "model4.bdl", "model5.bdl",
};
/* 804594AC-804594F0 000088 0042+02 1/1 0/0 0/0 .data l_btkName$localstatic5$createHeap__6daBg_cFv
*/
SECTION_DATA static char l_btkName[6][11] = {
"model.btk", "model1.btk", "model2.btk", "model3.btk", "model4.btk", "model5.btk",
};
/* 804594F0-80459534 0000CC 0042+02 1/1 0/0 0/0 .data l_brkName$localstatic6$createHeap__6daBg_cFv
*/
SECTION_DATA static char l_brkName[6][11] = {
"model.brk", "model1.brk", "model2.brk", "model3.brk", "model4.brk", "model5.brk",
};
/* 80459534-8045954C 000110 0018+00 1/1 0/0 0/0 .data l_tevStrType$localstatic3$draw__6daBg_cFv */
SECTION_DATA static int l_tevStrType[6] = {
32, 33, 34, 35, 35, 32,
};
/* 8045954C-8045956C -00001 0020+00 1/0 0/0 0/0 .data l_daBg_Method */
SECTION_DATA static void* l_daBg_Method[8] = {
(void*)daBg_Create__FP10fopAc_ac_c,
(void*)daBg_Delete__FP6daBg_c,
(void*)daBg_Execute__FP6daBg_c,
(void*)daBg_IsDelete__FP6daBg_c,
(void*)daBg_Draw__FP6daBg_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 8045956C-804595A0 -00001 0034+00 0/0 0/0 1/0 .data g_profile_BG */
SECTION_DATA extern void* g_profile_BG[13] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD, (void*)0x02DC0000, (void*)&g_fpcLf_Method,
(void*)0x000005F4, (void*)NULL, (void*)NULL, (void*)&g_fopAc_Method,
(void*)0x02F10000, (void*)&l_daBg_Method, (void*)0x00060000, (void*)NULL,
(void*)NULL,
};
/* 804595A0-804595AC 00017C 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */
SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DFrameCtrlFv,
};
/* 804595AC-804595B8 000188 000C+00 2/2 0/0 0/0 .data __vt__11J3DTexNoAnm */
SECTION_DATA extern void* __vt__11J3DTexNoAnm[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)calc__11J3DTexNoAnmCFPUs,
};
/* 80457E20-80457E68 0002A0 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTexNoAnm::~J3DTexNoAnm() {
extern "C" asm void __dt__11J3DTexNoAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__11J3DTexNoAnmFv.s"
}
#pragma pop
/* 80457E68-80457E8C 0002E8 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTexNoAnm::J3DTexNoAnm() {
extern "C" asm void __ct__11J3DTexNoAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__ct__11J3DTexNoAnmFv.s"
}
#pragma pop
/* 80457E8C-80457EC8 00030C 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTexMtxAnm::~J3DTexMtxAnm() {
extern "C" asm void __dt__12J3DTexMtxAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__12J3DTexMtxAnmFv.s"
}
#pragma pop
/* 80457EC8-80457EE0 000348 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DTexMtxAnm::J3DTexMtxAnm() {
extern "C" asm void __ct__12J3DTexMtxAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__ct__12J3DTexMtxAnmFv.s"
}
#pragma pop
/* 80457EE0-80457F1C 000360 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DMatColorAnm::~J3DMatColorAnm() {
extern "C" asm void __dt__14J3DMatColorAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__14J3DMatColorAnmFv.s"
}
#pragma pop
/* 80457F1C-80457F34 00039C 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DMatColorAnm::J3DMatColorAnm() {
extern "C" asm void __ct__14J3DMatColorAnmFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__ct__14J3DMatColorAnmFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80459374-80459380 000000 000C+00 1/1 0/0 0/0 .rodata @3756 */
SECTION_RODATA static u8 const lit_3756[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80459374, &lit_3756);
/* 80459380-80459384 00000C 0004+00 2/3 0/0 0/0 .rodata @3900 */
SECTION_RODATA static f32 const lit_3900 = 1.0f;
COMPILER_STRIP_GATE(0x80459380, &lit_3900);
/* 80457F34-80458040 0003B4 010C+00 1/1 0/0 0/0 .text
* create__13daBg_btkAnm_cFP12J3DModelDataP19J3DAnmTextureSRTKeyi */
// matches with literals
#ifdef NONMATCHING
int daBg_btkAnm_c::create(J3DModelData* i_modelData, J3DAnmTextureSRTKey* i_btk, int i_anmPlay) {
mpBtk = new mDoExt_btkAnm();
if (mpBtk == NULL) {
return 0;
}
if (!mpBtk->init(i_modelData, i_btk, i_anmPlay, -1, 1.0f, 0, -1)) {
return 0;
}
J3DAnmTextureSRTKey* btk = mpBtk->getBtkAnm();
for (u16 i = 0; i < btk->getUpdateMaterialNum(); i++) {
u16 matID = btk->getUpdateMaterialID(i);
if (!createMatAnm(i_modelData, matID)) {
return 0;
}
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daBg_btkAnm_c::create(J3DModelData* param_0, J3DAnmTextureSRTKey* param_1, int param_2) {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/create__13daBg_btkAnm_cFP12J3DModelDataP19J3DAnmTextureSRTKeyi.s"
}
#pragma pop
#endif
/* 80458040-80458088 0004C0 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DFrameCtrl::~J3DFrameCtrl() {
extern "C" asm void __dt__12J3DFrameCtrlFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__12J3DFrameCtrlFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80459384-80459388 000010 0004+00 4/4 0/0 0/0 .rodata @3914 */
SECTION_RODATA static u8 const lit_3914[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80459384, &lit_3914);
/* 80458088-804580CC 000508 0044+00 1/1 0/0 0/0 .text entry__13daBg_btkAnm_cFP12J3DModelData */
// matches with literals
#ifdef NONMATCHING
void daBg_btkAnm_c::entry(J3DModelData* i_modelData) {
mpBtk->entry(i_modelData, 0.0f);
field_0x4 = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBg_btkAnm_c::entry(J3DModelData* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/entry__13daBg_btkAnm_cFP12J3DModelData.s"
}
#pragma pop
#endif
/* 804580CC-804580F0 00054C 0024+00 1/1 0/0 0/0 .text play__13daBg_btkAnm_cFv */
void daBg_btkAnm_c::play() {
mpBtk->play();
}
/* 804580F0-80458230 000570 0140+00 1/1 0/0 0/0 .text
* create__13daBg_brkAnm_cFP12J3DModelDataP15J3DAnmTevRegKeyi */
// matches with literals
#ifdef NONMATCHING
int daBg_brkAnm_c::create(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int i_anmPlay) {
mpBrk = new mDoExt_brkAnm();
if (mpBrk == NULL) {
return 0;
}
if (!mpBrk->init(i_modelData, i_brk, i_anmPlay, -1, 1.0f, 0, -1)) {
return 0;
}
J3DAnmTevRegKey* brk = mpBrk->getBrkAnm();
for (u16 i = 0; i < brk->getCRegUpdateMaterialNum(); i++) {
u16 matID = brk->getCRegUpdateMaterialID(i);
if (!createMatAnm(i_modelData, matID)) {
return 0;
}
}
for (u16 i = 0; i < brk->getKRegUpdateMaterialNum(); i++) {
u16 matID = brk->getKRegUpdateMaterialID(i);
if (!createMatAnm(i_modelData, matID)) {
return 0;
}
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daBg_brkAnm_c::create(J3DModelData* param_0, J3DAnmTevRegKey* param_1, int param_2) {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/create__13daBg_brkAnm_cFP12J3DModelDataP15J3DAnmTevRegKeyi.s"
}
#pragma pop
#endif
/* 80458230-80458274 0006B0 0044+00 1/1 0/0 0/0 .text entry__13daBg_brkAnm_cFP12J3DModelData */
// matches with literals
#ifdef NONMATCHING
void daBg_brkAnm_c::entry(J3DModelData* i_modelData) {
mpBrk->entry(i_modelData, 0.0f);
field_0x4 = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBg_brkAnm_c::entry(J3DModelData* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/entry__13daBg_brkAnm_cFP12J3DModelData.s"
}
#pragma pop
#endif
/* 80458274-80458298 0006F4 0024+00 1/1 0/0 0/0 .text play__13daBg_brkAnm_cFv */
void daBg_brkAnm_c::play() {
mpBrk->play();
}
/* 80458298-804582B8 000718 0020+00 1/1 0/0 0/0 .text checkCreateHeap__FP10fopAc_ac_c */
static int checkCreateHeap(fopAc_ac_c* i_this) {
return static_cast<daBg_c*>(i_this)->createHeap();
}
/* ############################################################################################## */
/* 80459388-8045938C 000014 0004+00 1/1 0/0 0/0 .rodata @4125 */
SECTION_RODATA static f32 const lit_4125 = -1.0f;
COMPILER_STRIP_GATE(0x80459388, &lit_4125);
/* 804593A8-804593A8 000034 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_804593A8 = "00";
SECTION_DEAD static char const* const stringBase_804593AB = "01";
SECTION_DEAD static char const* const stringBase_804593AE = "12";
SECTION_DEAD static char const* const stringBase_804593B1 = "18";
SECTION_DEAD static char const* const stringBase_804593B4 = "room.dzb";
SECTION_DEAD static char const* const stringBase_804593BD = "room.kcl";
SECTION_DEAD static char const* const stringBase_804593C6 = "room.plc";
#pragma pop
/* 804582B8-80458750 000738 0498+00 2/2 0/0 1/1 .text createHeap__6daBg_cFv */
// regalloc, but equivalent
#ifdef NONMATCHING
int daBg_c::createHeap() {
const char* arcName = setArcName();
s32 prm = fopAcM_GetParam(this);
daBg_unkData* bgData = mBgData;
for (int i = 0; i < 6; bgData++, i++) {
J3DModelData* modelData = (J3DModelData*)dComIfG_getStageRes(arcName, l_modelName[i]);
if (modelData == NULL) {
modelData = (J3DModelData*)dComIfG_getStageRes(arcName, l_modelName2[i]);
}
if (modelData != NULL) {
mDoExt_setupStageTexture(modelData);
u32 modelFlags = 0x11000084;
for (u16 j = 0; j < modelData->getMaterialNum(); j++) {
modelData->getMaterialNodePointer(j)->setMaterialAnm(NULL);
}
J3DAnmTextureSRTKey* btk =
(J3DAnmTextureSRTKey*)dComIfG_getStageRes(arcName, l_btkName[i]);
if (btk != NULL) {
bgData->mpBgBtk = new daBg_btkAnm_c();
if (bgData->mpBgBtk == NULL) {
return 0;
}
if (!bgData->mpBgBtk->create(modelData, btk, TRUE)) {
return 0;
}
modelFlags |= 0x1200;
} else {
bgData->mpBgBtk = NULL;
}
bgData->mBtkAnmSpeed = -1.0f;
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getStageRes(arcName, l_brkName[i]);
if (brk != NULL) {
bgData->mpBgBrk = new daBg_brkAnm_c();
if (bgData->mpBgBrk == NULL) {
return 0;
}
if (!bgData->mpBgBrk->create(modelData, brk, TRUE)) {
return 0;
}
} else {
bgData->mpBgBrk = NULL;
}
for (u16 j = 0; j < modelData->getMaterialNum(); j++) {
const char* name = modelData->getMaterialName()->getName(j);
if (name[3] == 'M' && name[4] == 'A') {
if (!memcmp(&name[5], "00", 2)) {
modelFlags |= 0x1200;
} else if (!memcmp(&name[5], "01", 2)) {
modelFlags |= 0x20000000;
} else if (!memcmp(&name[5], "12", 2) || !memcmp(&name[5], "18", 2)) {
field_0x5f0 = 1;
}
}
}
bgData->mpBgModel = mDoExt_J3DModel__create(modelData, 0, modelFlags);
if (bgData->mpBgModel == NULL) {
return 0;
}
bgData->mpTevStr = new dKy_tevstr_c();
if (bgData->mpTevStr == NULL) {
return 0;
}
dKy_tevstr_init(bgData->mpTevStr, prm, 0xFF);
}
}
cBgD_t* dzb = (cBgD_t*)dComIfG_getStageRes(arcName, "room.dzb");
if (dzb != NULL) {
mpKCol = NULL;
mpBgW = new dBgW();
if (mpBgW == NULL) {
return 0;
}
if (mpBgW->Set(dzb, cBgW::GLOBAL_e, NULL)) {
return 0;
}
dStage_roomControl_c::setBgW(prm, (dBgW_base*)mpBgW);
mpBgW->SetPriority(dBgW_Base::PRIORITY_0);
} else {
void* kcl = dComIfG_getStageRes(arcName, "room.kcl");
void* plc = dComIfG_getStageRes(arcName, "room.plc");
if (kcl != NULL && plc != NULL) {
mpBgW = NULL;
mpKCol = new dBgWKCol();
if (mpKCol == NULL) {
return 0;
}
mpKCol->create(kcl, plc);
mpKCol->SetPriority(dBgW_Base::PRIORITY_0);
} else {
mpBgW = NULL;
mpKCol = NULL;
}
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daBg_c::createHeap() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/createHeap__6daBg_cFv.s"
}
#pragma pop
#endif
/* 80458750-80458788 000BD0 0038+00 1/1 0/0 0/0 .text __ct__11J3DLightObjFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm J3DLightObj::J3DLightObj() {
extern "C" asm void __ct__11J3DLightObjFv() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/__ct__11J3DLightObjFv.s"
}
#pragma pop
/* 80458788-804588A4 000C08 011C+00 1/1 0/0 0/0 .text __dt__6daBg_cFv */
daBg_c::~daBg_c() {
int roomNo = fopAcM_GetParam(this);
if (mHeap != NULL && mpBgW != NULL) {
dComIfG_Bgsp().Release(mpBgW);
dStage_roomControl_c::setBgW(roomNo, NULL);
}
if (mHeap != NULL && mpKCol != NULL) {
dComIfG_Bgsp().Release(mpKCol);
dStage_roomControl_c::setBgW(roomNo, NULL);
}
daGrass_c::deleteRoomGrass(roomNo);
daGrass_c::deleteRoomFlower(roomNo);
daSus_c::reset(roomNo);
dComIfGp_roomControl_offStatusFlag(roomNo, 0x10);
}
/* 804588A4-804588C4 000D24 0020+00 1/0 0/0 0/0 .text daBg_Draw__FP6daBg_c */
static int daBg_Draw(daBg_c* i_this) {
return i_this->draw();
}
/* ############################################################################################## */
/* 8045938C-80459390 000018 0004+00 0/1 0/0 0/0 .rodata @4479 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4479 = 1000000.0f;
COMPILER_STRIP_GATE(0x8045938C, &lit_4479);
#pragma pop
/* 80459390-80459394 00001C 0004+00 0/1 0/0 0/0 .rodata @4480 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4480 = 9.0f / 10.0f;
COMPILER_STRIP_GATE(0x80459390, &lit_4480);
#pragma pop
/* 80459394-8045939C 000020 0004+04 0/1 0/0 0/0 .rodata @4481 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4481[1 + 1 /* padding */] = {
10.0f,
/* padding */
0.0f,
};
COMPILER_STRIP_GATE(0x80459394, &lit_4481);
#pragma pop
/* 8045939C-804593A4 000028 0008+00 1/2 0/0 0/0 .rodata @4483 */
SECTION_RODATA static u8 const lit_4483[8] = {
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x8045939C, &lit_4483);
/* 804593A8-804593A8 000034 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_804593CF = "MA12";
SECTION_DEAD static char const* const stringBase_804593D4 = "MA18";
SECTION_DEAD static char const* const stringBase_804593D9 = "MA15";
SECTION_DEAD static char const* const stringBase_804593DE = "MA09";
SECTION_DEAD static char const* const stringBase_804593E3 = "MA05";
SECTION_DEAD static char const* const stringBase_804593E8 = "F_SP127";
SECTION_DEAD static char const* const stringBase_804593F0 = "R_SP127";
SECTION_DEAD static char const* const stringBase_804593F8 = "MA00_Enkei_Tree_Color";
SECTION_DEAD static char const* const stringBase_8045940E = "MA00_Gake";
SECTION_DEAD static char const* const stringBase_80459418 = "MA00_Kusa";
#pragma pop
/* 804588C4-80458F38 000D44 0674+00 1/1 0/0 0/0 .text draw__6daBg_cFv */
// just regalloc + some reorder issues
#ifdef NONMATCHING
int daBg_c::draw() {
int roomNo = fopAcM_GetParam(this);
daBg_unkData* bgData = mBgData;
dComIfGd_setListBG();
mDoLib_clipper::changeFar(1000000.0f);
for (int i = 0; i < 6; bgData++, i++) {
J3DModel* bg_model = bgData->mpBgModel;
if (bg_model != NULL) {
J3DModelData* modelData = bg_model->getModelData();
if (bgData->mpBgBtk != NULL) {
bgData->mpBgBtk->entryFrame();
}
if (bgData->mpBgBrk != NULL) {
if (field_0x5f0 == 9) {
bgData->mpBgBrk->entryFrame(bgData->mpBgBrk->getEndFrame());
} else {
bgData->mpBgBrk->entryFrame();
}
}
bg_model->calc();
for (u16 j = 0; j < modelData->getShapeNum(); j++) {
J3DShape* shape = modelData->getShapeNodePointer(j);
if (mDoLib_clipper::clip(j3dSys.getViewMtx(), shape->getMin(), shape->getMax())) {
shape->hide();
} else {
shape->show();
}
}
g_env_light.settingTevStruct(l_tevStrType[i], NULL, bgData->mpTevStr);
g_env_light.setLightTevColorType_MAJI(bg_model, bgData->mpTevStr);
dKy_bg_MAxx_proc(bg_model);
if (bg_model != NULL) {
modelData = bg_model->getModelData();
for (u16 j = 0; j < modelData->getMaterialNum(); j++) {
J3DMaterial* mat = modelData->getMaterialNodePointer(j);
const char* name = modelData->getMaterialName()->getName(j);
if (!memcmp(&name[3], "MA12", 4)) {
if (g_env_light.mColPatCurr == 6) {
field_0x5f0 = 0;
}
} else if (!memcmp(&name[3], "MA18", 4)) {
if (dDemo_c::getFrame() >= 1118) {
field_0x5f0 = 0;
}
if (i_dComIfGs_isEventBit(dSv_event_flag_c::M_077)) {
field_0x5f0 = 9;
}
} else if (!memcmp(&name[3], "MA15", 4)) {
if (dComIfGs_BossLife_public_Get() != -1) {
field_0x5f1 = dComIfGs_BossLife_public_Get() + 1;
} else {
field_0x5f1 = 0;
}
} else if (!memcmp(&name[3], "MA09", 4)) {
bgData->mBtkAnmSpeed = 1.0f - (1.0f - g_env_light.mWaterSurfaceShineRate) * 0.9f;
} else if (!memcmp(&name[3], "MA05", 4)) {
bgData->mpTevStr->field_0x378 |= (u8)j;
}
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP127")) {
if (!memcmp(&name[3], "MA00_Enkei_Tree_Color", 21) ||
!memcmp(&name[3], "MA00_Gake", 9) ||
!memcmp(&name[3], "MA00_Kusa", 9)) {
J3DGXColorS10 colorS10;
J3DGXColor color;
s16 var_r0;
s16 var_r3;
s16 var_r5;
switch (g_env_light.mPondSeason) {
case 2:
var_r5 = -3;
var_r0 = 0;
var_r3 = -4;
break;
case 3:
var_r5 = 0;
var_r0 = -10;
var_r3 = -13;
break;
case 4:
var_r5 = 18;
var_r0 = 17;
var_r3 = 25;
break;
default:
var_r5 = 0;
var_r0 = 0;
var_r3 = 0;
break;
}
f32 temp_f2 = bgData->mpTevStr->mColorC0.r / 10.0f;
f32 var_f2 = temp_f2 * temp_f2;
if (var_f2 > 1.0f) {
var_f2 = 1.0f;
}
colorS10.r = var_r5 * var_f2;
f32 temp_f2_2 = bgData->mpTevStr->mColorC0.g / 10.0f;
f32 var_f2_2 = temp_f2_2 * temp_f2_2;
if (var_f2_2 > 1.0f) {
var_f2_2 = 1.0f;
}
colorS10.g = var_r0 * var_f2_2;
f32 temp_f2_3 = bgData->mpTevStr->mColorC0.b / 10.0f;
f32 var_f2_3 = temp_f2_3 * temp_f2_3;
if (var_f2_3 > 1.0f) {
var_f2_3 = 1.0f;
}
colorS10.b = var_r3 * var_f2_3;
colorS10.a = 255;
mat->setTevColor(0, &colorS10);
color.r = 0;
color.g = 0;
color.b = 0;
color.a = 255;
mat->setTevKColor(0, &color);
}
}
}
mDoExt_modelEntryDL(bg_model);
dComIfGd_setListBG();
}
}
}
dComIfGd_setList();
dKy_tevstr_c* tevstr = dComIfGp_roomControl_getTevStr(roomNo);
g_env_light.settingTevStruct(0x10, NULL, tevstr);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daBg_c::draw() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/draw__6daBg_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804593A4-804593A8 000030 0004+00 1/1 0/0 0/0 .rodata @4524 */
SECTION_RODATA static f32 const lit_4524 = 100.0f;
COMPILER_STRIP_GATE(0x804593A4, &lit_4524);
int daBg_c::execute() {
daBg_unkData* bgData = mBgData;
for (int i = 0; i < 6; i++) {
if (bgData->mpBgBtk != NULL) {
if (field_0x5f1 != 0) {
bgData->mpBgBtk->playspeed((field_0x5f1 - 1) / 100.0f);
}
if (bgData->mBtkAnmSpeed >= 0.0f) {
bgData->mpBgBtk->playspeed(bgData->mBtkAnmSpeed);
}
bgData->mpBgBtk->play();
}
if (bgData->mpBgBrk != NULL && field_0x5f0 == 0) {
bgData->mpBgBrk->play();
}
bgData++;
}
return 1;
}
/* 80458F38-8045901C 0013B8 00E4+00 1/0 0/0 0/0 .text daBg_Execute__FP6daBg_c */
// matches with literals
#ifdef NONMATCHING
static int daBg_Execute(daBg_c* i_this) {
return i_this->execute();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int daBg_Execute(daBg_c* i_this) {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/daBg_Execute__FP6daBg_c.s"
}
#pragma pop
#endif
/* 8045901C-80459024 00149C 0008+00 1/0 0/0 0/0 .text daBg_IsDelete__FP6daBg_c */
static int daBg_IsDelete(daBg_c* i_this) {
return 1;
}
/* 80459024-8045904C 0014A4 0028+00 1/0 0/0 0/0 .text daBg_Delete__FP6daBg_c */
static int daBg_Delete(daBg_c* i_this) {
i_this->~daBg_c();
return 1;
}
/* 8045904C-8045906C 0014CC 0020+00 1/0 0/0 0/0 .text daBg_Create__FP10fopAc_ac_c */
static int daBg_Create(fopAc_ac_c* i_this) {
return static_cast<daBg_c*>(i_this)->create();
}
/* 8045906C-8045933C 0014EC 02D0+00 1/1 0/0 0/0 .text create__6daBg_cFv */
// regalloc
#ifdef NONMATCHING
int daBg_c::create() {
int roomNo = fopAcM_GetParam(this);
field_0x5f0 = 0;
field_0x5f1 = 0;
if (mHeap == NULL) {
fopAcM_SetupActor(this, daBg_c);
orig.roomNo = roomNo;
current.roomNo = roomNo;
JKRExpHeap* heap = dStage_roomControl_c::getMemoryBlock(roomNo);
if (heap != NULL) {
mHeap = JKRSolidHeap::create(-1, heap, false);
JKRHeap* old = mDoExt_setCurrentHeap(mHeap);
createHeap();
mDoExt_setCurrentHeap(old);
mHeap->adjustSize();
} else if (!fopAcM_entrySolidHeap(this, checkCreateHeap, 0x80020040)) {
return cPhs_ERROR_e;
}
daBg_unkData* bgData = mBgData;
for (int i = 0; i < 6; i++) {
if (bgData->mpBgModel != NULL) {
J3DModelData* modelData = bgData->mpBgModel->getModelData();
if (bgData->mpBgBtk != NULL) {
bgData->mpBgBtk->entry(modelData);
}
if (bgData->mpBgBrk != NULL) {
bgData->mpBgBrk->entry(modelData);
}
}
bgData++;
}
f32 transX;
f32 transY;
s16 angle;
if (dComIfGp_getMapTrans(roomNo, &transX, &transY, &angle)) {
daBg_unkData* bgData_ = mBgData;
for (int i = 0; i < 6; i++) {
J3DModel* model = bgData_->mpBgModel;
if (model != NULL) {
mDoMtx_stack_c::transS(transX, 0.0f, transY);
mDoMtx_stack_c::YrotM(angle);
model->i_setBaseTRMtx(mDoMtx_stack_c::get());
J3DModelData* modelData = model->getModelData();
for (u16 j = 0; j < modelData->getMaterialNum(); j++) {
const char* name = modelData->getMaterialName()->getName(j);
if (name[3] == 'M' && name[4] == 'A' && name[5] == '0' && name[6] == '8') {
modelData->getMaterialNodePointer(j)->getShape()->setTexMtxLoadType(
0x2000);
}
}
}
bgData_++;
}
}
if (mpBgW != NULL) {
if (dComIfG_Bgsp().Regist(mpBgW, this)) {
return cPhs_ERROR_e;
}
}
if (mpKCol != NULL) {
if (dComIfG_Bgsp().Regist(mpKCol, this)) {
return cPhs_ERROR_e;
}
}
dKy_tevstr_init(dComIfGp_roomControl_getTevStr(roomNo), roomNo, 0xFF);
}
dComIfGp_roomControl_onStatusFlag(roomNo, 0x10);
return cPhs_COMPLEATE_e;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daBg_c::create() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/create__6daBg_cFv.s"
}
#pragma pop
#endif
/* 8045933C-8045936C 0017BC 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm void J3DTexNoAnm::calc(u16* param_0) const {
extern "C" asm void calc__11J3DTexNoAnmCFPUs() {
nofralloc
#include "asm/rel/d/a/d_a_bg/d_a_bg/calc__11J3DTexNoAnmCFPUs.s"
}
#pragma pop
/* 804593A8-804593A8 000034 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */