d_a_bg mostly matching. update version symbols / add platform macros (#2410)

* d_a_bg mostly matching

* update version symbols from new dtk

* add version platform macros

* small fix
This commit is contained in:
TakaRikka
2025-04-25 10:53:30 -07:00
committed by GitHub
parent 0be38784ce
commit 657ea58023
1940 changed files with 16776 additions and 14571 deletions
+195 -461
View File
@@ -7,121 +7,12 @@
#include "d/d_com_inf_game.h"
#include "d/d_com_static.h"
#include "d/actor/d_a_grass.h"
#include "dol2asm.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "string.h"
#include "d/d_bg_w.h"
#include "m_Do/m_Do_lib.h"
#include "d/d_demo.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
//
// 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:
//
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
/* 80457BF8-80457C38 000078 0040+00 1/1 0/0 0/0 .text setArcName__6daBg_cFv */
const char* daBg_c::setArcName() {
@@ -132,150 +23,32 @@ const char* daBg_c::setArcName() {
}
/* 80457C38-80457D78 0000B8 0140+00 2/2 0/0 0/0 .text createMatAnm__FP12J3DModelDataUs */
static int createMatAnm(J3DModelData* param_0, u16 param_1) {
// NONMATCHING
static int createMatAnm(J3DModelData* i_modelData, u16 i_materialID) {
if (i_materialID != 0xFFFF) {
J3DMaterial* material = i_modelData->getMaterialNodePointer(i_materialID);
if (material->getMaterialAnm() == NULL) {
J3DMaterialAnm* anm = new J3DMaterialAnm();
if (anm == NULL) {
return 0;
}
material->setMaterialAnm(anm);
}
}
return 1;
}
/* 80457D78-80457DB4 0001F8 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */
// J3DTevKColorAnm::~J3DTevKColorAnm() {
extern "C" void __dt__15J3DTevKColorAnmFv() {
// NONMATCHING
}
/* 80457DB4-80457DCC 000234 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */
// J3DTevKColorAnm::J3DTevKColorAnm() {
extern "C" void __ct__15J3DTevKColorAnmFv() {
// NONMATCHING
}
/* 80457DCC-80457E08 00024C 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */
// J3DTevColorAnm::~J3DTevColorAnm() {
extern "C" void __dt__14J3DTevColorAnmFv() {
// NONMATCHING
}
/* 80457E08-80457E20 000288 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */
// J3DTevColorAnm::J3DTevColorAnm() {
extern "C" void __ct__14J3DTevColorAnmFv() {
// NONMATCHING
}
/* ############################################################################################## */
/* 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 */
// J3DTexNoAnm::~J3DTexNoAnm() {
extern "C" void __dt__11J3DTexNoAnmFv() {
// NONMATCHING
}
/* 80457E68-80457E8C 0002E8 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */
// J3DTexNoAnm::J3DTexNoAnm() {
extern "C" void __ct__11J3DTexNoAnmFv() {
// NONMATCHING
}
/* 80457E8C-80457EC8 00030C 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */
// J3DTexMtxAnm::~J3DTexMtxAnm() {
extern "C" void __dt__12J3DTexMtxAnmFv() {
// NONMATCHING
}
/* 80457EC8-80457EE0 000348 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */
// J3DTexMtxAnm::J3DTexMtxAnm() {
extern "C" void __ct__12J3DTexMtxAnmFv() {
// NONMATCHING
}
/* 80457EE0-80457F1C 000360 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */
// J3DMatColorAnm::~J3DMatColorAnm() {
extern "C" void __dt__14J3DMatColorAnmFv() {
// NONMATCHING
}
/* 80457F1C-80457F34 00039C 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */
// J3DMatColorAnm::J3DMatColorAnm() {
extern "C" void __ct__14J3DMatColorAnmFv() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80459374-80459380 000000 000C+00 1/1 0/0 0/0 .rodata @3756 */
SECTION_RODATA static u8 const lit_3756[12] = {
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 */
int daBg_btkAnm_c::create(J3DModelData* i_modelData, J3DAnmTextureSRTKey* i_btk, int i_anmPlay) {
mpBtk = new mDoExt_btkAnm();
if (mpBtk == NULL) {
return 0;
}
@@ -286,9 +59,8 @@ int daBg_btkAnm_c::create(J3DModelData* i_modelData, J3DAnmTextureSRTKey* i_btk,
J3DAnmTextureSRTKey* btk = mpBtk->getBtkAnm();
for (u16 i = 0; i < btk->getUpdateMaterialNum(); i++) {
u16 matID = btk->getUpdateMaterialID(i);
if (!createMatAnm(i_modelData, matID)) {
u16 id = btk->getUpdateMaterialID(i);
if (!createMatAnm(i_modelData, id)) {
return 0;
}
}
@@ -296,30 +68,12 @@ int daBg_btkAnm_c::create(J3DModelData* i_modelData, J3DAnmTextureSRTKey* i_btk,
return 1;
}
/* 80458040-80458088 0004C0 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
// J3DFrameCtrl::~J3DFrameCtrl() {
extern "C" void __dt__12J3DFrameCtrlFv() {
// NONMATCHING
}
/* ############################################################################################## */
/* 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 */
void daBg_btkAnm_c::entry(J3DModelData* i_modelData) {
mpBtk->entry(i_modelData, 0.0f);
field_0x4 = 0;
}
/* 804580CC-804580F0 00054C 0024+00 1/1 0/0 0/0 .text play__13daBg_btkAnm_cFv */
void daBg_btkAnm_c::play() {
mpBtk->play();
@@ -340,17 +94,15 @@ int daBg_brkAnm_c::create(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int
J3DAnmTevRegKey* brk = mpBrk->getBrkAnm();
for (u16 i = 0; i < brk->getCRegUpdateMaterialNum(); i++) {
u16 matID = brk->getCRegUpdateMaterialID(i);
if (!createMatAnm(i_modelData, matID)) {
u16 id = brk->getCRegUpdateMaterialID(i);
if (!createMatAnm(i_modelData, id)) {
return 0;
}
}
for (u16 i = 0; i < brk->getKRegUpdateMaterialNum(); i++) {
u16 matID = brk->getKRegUpdateMaterialID(i);
if (!createMatAnm(i_modelData, matID)) {
u16 id = brk->getKRegUpdateMaterialID(i);
if (!createMatAnm(i_modelData, id)) {
return 0;
}
}
@@ -358,14 +110,12 @@ int daBg_brkAnm_c::create(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int
return 1;
}
/* 80458230-80458274 0006B0 0044+00 1/1 0/0 0/0 .text entry__13daBg_brkAnm_cFP12J3DModelData */
void daBg_brkAnm_c::entry(J3DModelData* i_modelData) {
mpBrk->entry(i_modelData, 0.0f);
field_0x4 = 0;
}
/* 80458274-80458298 0006F4 0024+00 1/1 0/0 0/0 .text play__13daBg_brkAnm_cFv */
void daBg_brkAnm_c::play() {
mpBrk->play();
@@ -373,34 +123,22 @@ void daBg_brkAnm_c::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();
daBg_c* a_this = (daBg_c*)i_this;
return a_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 */
// NONMATCHING - regalloc, but equivalent
int daBg_c::createHeap() {
const char* arcName = setArcName();
s32 prm = fopAcM_GetParam(this);
daBg_unkData* bgData = mBgData;
static char l_modelName[6][11] = {"model.bmd", "model1.bmd", "model2.bmd", "model3.bmd", "model4.bmd", "model5.bmd"};
static char l_modelName2[6][11] = {"model.bdl", "model1.bdl", "model2.bdl", "model3.bdl", "model4.bdl", "model5.bdl"};
static char l_btkName[6][11] = {"model.btk", "model1.btk", "model2.btk", "model3.btk", "model4.btk", "model5.btk"};
static char l_brkName[6][11] = {"model.brk", "model1.brk", "model2.brk", "model3.brk", "model4.brk", "model5.brk"};
for (int i = 0; i < 6; bgData++, i++) {
const char* arcName = setArcName();
int roomNo = fopAcM_GetParam(this);
daBg_Part* bgPart = mBgParts;
for (int i = 0; i < 6; bgPart++, i++) {
J3DModelData* modelData = (J3DModelData*)dComIfG_getStageRes(arcName, l_modelName[i]);
if (modelData == NULL) {
modelData = (J3DModelData*)dComIfG_getStageRes(arcName, l_modelName2[i]);
@@ -411,43 +149,47 @@ int daBg_c::createHeap() {
u32 modelFlags = 0x11000084;
for (u16 j = 0; j < modelData->getMaterialNum(); j++) {
modelData->getMaterialNodePointer(j)->setMaterialAnm(NULL);
J3DMaterial* material = modelData->getMaterialNodePointer(j);
material->setMaterialAnm(NULL);
}
J3DAnmTextureSRTKey* btk =
(J3DAnmTextureSRTKey*)dComIfG_getStageRes(arcName, l_btkName[i]);
if (btk != NULL) {
bgData->mpBgBtk = new daBg_btkAnm_c();
if (bgData->mpBgBtk == NULL) {
bgPart->btk = new daBg_btkAnm_c();
if (bgPart->btk == NULL) {
return 0;
}
if (!bgData->mpBgBtk->create(modelData, btk, TRUE)) {
if (!bgPart->btk->create(modelData, btk, TRUE)) {
return 0;
}
modelFlags |= 0x1200;
} else {
bgData->mpBgBtk = NULL;
bgPart->btk = NULL;
}
bgData->mBtkAnmSpeed = -1.0f;
bgPart->btk_speed = -1.0f;
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getStageRes(arcName, l_brkName[i]);
if (brk != NULL) {
bgData->mpBgBrk = new daBg_brkAnm_c();
if (bgData->mpBgBrk == NULL) {
bgPart->brk = new daBg_brkAnm_c();
if (bgPart->brk == NULL) {
return 0;
}
if (!bgData->mpBgBrk->create(modelData, brk, TRUE)) {
if (!bgPart->brk->create(modelData, brk, TRUE)) {
return 0;
}
} else {
bgData->mpBgBrk = NULL;
bgPart->brk = NULL;
}
for (u16 j = 0; j < modelData->getMaterialNum(); j++) {
const char* name = modelData->getMaterialName()->getName(j);
JUTNameTab* nametab = modelData->getMaterialName();
J3DMaterial* material = modelData->getMaterialNodePointer(j);
const char* name = nametab->getName(j);
if (name[3] == 'M' && name[4] == 'A') {
if (!memcmp(&name[5], "00", 2)) {
@@ -460,17 +202,17 @@ int daBg_c::createHeap() {
}
}
bgData->mpBgModel = mDoExt_J3DModel__create(modelData, 0, modelFlags);
if (bgData->mpBgModel == NULL) {
bgPart->model = mDoExt_J3DModel__create(modelData, 0, modelFlags);
if (bgPart->model == NULL) {
return 0;
}
bgData->mpTevStr = new dKy_tevstr_c();
if (bgData->mpTevStr == NULL) {
bgPart->tevstr = new dKy_tevstr_c();
if (bgPart->tevstr == NULL) {
return 0;
}
dKy_tevstr_init(bgData->mpTevStr, prm, 0xFF);
dKy_tevstr_init(bgPart->tevstr, roomNo, 0xFF);
}
}
@@ -486,7 +228,7 @@ int daBg_c::createHeap() {
return 0;
}
dStage_roomControl_c::setBgW(prm, (dBgW_base*)mpBgW);
dStage_roomControl_c::setBgW(roomNo, (dBgW_base*)mpBgW);
mpBgW->SetPriority(dBgW_Base::PRIORITY_0);
} else {
void* kcl = dComIfG_getStageRes(arcName, "room.kcl");
@@ -510,12 +252,6 @@ int daBg_c::createHeap() {
return 1;
}
/* 80458750-80458788 000BD0 0038+00 1/1 0/0 0/0 .text __ct__11J3DLightObjFv */
// J3DLightObj::J3DLightObj() {
extern "C" void __ct__11J3DLightObjFv() {
// NONMATCHING
}
/* 80458788-804588A4 000C08 011C+00 1/1 0/0 0/0 .text __dt__6daBg_cFv */
daBg_c::~daBg_c() {
int roomNo = fopAcM_GetParam(this);
@@ -541,77 +277,46 @@ 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 */
// NONMATCHING - just regalloc + some reorder issues
int daBg_c::draw() {
dScnKy_env_light_c* kankyo = dKy_getEnvlight();
int roomNo = fopAcM_GetParam(this);
daBg_unkData* bgData = mBgData;
daBg_Part* bgPart = mBgParts;
J3DModel* bg_model;
u8 spA;
u8 sp9;
u8 sp8 = 0;
int sp38 = 0;
dDlst_window_c* sp34 = dComIfGp_getWindow(0);
camera_class* sp30 = dComIfGp_getCamera(sp34->getCameraID());
dComIfGd_setListBG();
mDoLib_clipper::changeFar(1000000.0f);
for (int i = 0; i < 6; bgData++, i++) {
J3DModel* bg_model = bgData->mpBgModel;
J3DModelData* modelData;
for (int i = 0; i < 6; bgPart++, i++) {
sp8 = 0;
spA = 0;
sp9 = 0;
bg_model = bgPart->model;
if (bg_model != NULL) {
J3DModelData* modelData = bg_model->getModelData();
modelData = bg_model->getModelData();
if (bgData->mpBgBtk != NULL) {
bgData->mpBgBtk->entryFrame();
if (bgPart->btk != NULL) {
bgPart->btk->entryFrame();
}
if (bgData->mpBgBrk != NULL) {
if (bgPart->brk != NULL) {
if (field_0x5f0 == 9) {
bgData->mpBgBrk->entryFrame(bgData->mpBgBrk->getEndFrame());
bgPart->brk->entryFrame(bgPart->brk->getEndFrame());
} else {
bgData->mpBgBrk->entryFrame();
bgPart->brk->entryFrame();
}
}
@@ -627,16 +332,22 @@ int daBg_c::draw() {
}
}
g_env_light.settingTevStruct(l_tevStrType[i], NULL, bgData->mpTevStr);
g_env_light.setLightTevColorType_MAJI(bg_model, bgData->mpTevStr);
static int l_tevStrType[6] = {32, 33, 34, 35, 35, 32};
g_env_light.settingTevStruct(l_tevStrType[i], NULL, bgPart->tevstr);
g_env_light.setLightTevColorType_MAJI(bg_model, bgPart->tevstr);
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);
const char* name;
J3DMaterial* mat;
JUTNameTab* nametab;
mat = modelData->getMaterialNodePointer(j);
nametab = modelData->getMaterialName();
name = nametab->getName(j);
if (!memcmp(&name[3], "MA12", 4)) {
if (g_env_light.wether_pat1 == 6) {
@@ -657,9 +368,9 @@ int daBg_c::draw() {
field_0x5f1 = 0;
}
} else if (!memcmp(&name[3], "MA09", 4)) {
bgData->mBtkAnmSpeed = 1.0f - (1.0f - g_env_light.mWaterSurfaceShineRate) * 0.9f;
bgPart->btk_speed = 1.0f - (1.0f - g_env_light.mWaterSurfaceShineRate) * 0.9f;
} else if (!memcmp(&name[3], "MA05", 4)) {
bgData->mpTevStr->Material_id |= (u8)j;
bgPart->tevstr->Material_id |= (u8)j;
}
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") ||
@@ -670,52 +381,50 @@ int daBg_c::draw() {
J3DGXColorS10 colorS10;
J3DGXColor color;
s16 var_r0;
s16 var_r3;
s16 var_r5;
GXColorS10 sp50;
switch (g_env_light.fishing_hole_season) {
case 2:
var_r5 = -3;
var_r0 = 0;
var_r3 = -4;
sp50.r = -3;
sp50.g = 0;
sp50.b = -4;
break;
case 3:
var_r5 = 0;
var_r0 = -10;
var_r3 = -13;
sp50.r = 0;
sp50.g = -10;
sp50.b = -13;
break;
case 4:
var_r5 = 18;
var_r0 = 17;
var_r3 = 25;
sp50.r = 18;
sp50.g = 17;
sp50.b = 25;
break;
default:
var_r5 = 0;
var_r0 = 0;
var_r3 = 0;
sp50.r = 0;
sp50.g = 0;
sp50.b = 0;
break;
}
f32 temp_f2 = bgData->mpTevStr->AmbCol.r / 10.0f;
f32 var_f2 = temp_f2 * temp_f2;
if (var_f2 > 1.0f) {
var_f2 = 1.0f;
f32 var_f31 = bgPart->tevstr->AmbCol.r / 10.0f;
var_f31 *= var_f31;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
}
colorS10.r = var_r5 * var_f2;
colorS10.r = sp50.r * var_f31;
f32 temp_f2_2 = bgData->mpTevStr->AmbCol.g / 10.0f;
f32 var_f2_2 = temp_f2_2 * temp_f2_2;
if (var_f2_2 > 1.0f) {
var_f2_2 = 1.0f;
var_f31 = bgPart->tevstr->AmbCol.g / 10.0f;
var_f31 *= var_f31;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
}
colorS10.g = var_r0 * var_f2_2;
colorS10.g = sp50.g * var_f31;
f32 temp_f2_3 = bgData->mpTevStr->AmbCol.b / 10.0f;
f32 var_f2_3 = temp_f2_3 * temp_f2_3;
if (var_f2_3 > 1.0f) {
var_f2_3 = 1.0f;
var_f31 = bgPart->tevstr->AmbCol.b / 10.0f;
var_f31 *= var_f31;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
}
colorS10.b = var_r3 * var_f2_3;
colorS10.b = sp50.b * var_f31;
colorS10.a = 255;
mat->setTevColor(0, &colorS10);
@@ -727,45 +436,39 @@ int daBg_c::draw() {
}
}
}
mDoExt_modelEntryDL(bg_model);
dComIfGd_setListBG();
}
mDoExt_modelEntryDL(bg_model);
dComIfGd_setListBG();
}
}
dComIfGd_setList();
dKy_tevstr_c* tevstr = dComIfGp_roomControl_getTevStr(roomNo);
g_env_light.settingTevStruct(0x10, NULL, tevstr);
g_env_light.settingTevStruct(0x10, NULL, dComIfGp_roomControl_getTevStr(roomNo));
return 1;
}
/* ############################################################################################## */
/* 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;
daBg_Part* bgPart = mBgParts;
for (int i = 0; i < 6; i++) {
if (bgData->mpBgBtk != NULL) {
if (bgPart->btk != NULL) {
if (field_0x5f1 != 0) {
bgData->mpBgBtk->playspeed((field_0x5f1 - 1) / 100.0f);
bgPart->btk->playspeed((field_0x5f1 - 1) / 100.0f);
}
if (bgData->mBtkAnmSpeed >= 0.0f) {
bgData->mpBgBtk->playspeed(bgData->mBtkAnmSpeed);
if (bgPart->btk_speed >= 0.0f) {
bgPart->btk->playspeed(bgPart->btk_speed);
}
bgData->mpBgBtk->play();
bgPart->btk->play();
}
if (bgData->mpBgBrk != NULL && field_0x5f0 == 0) {
bgData->mpBgBrk->play();
if (bgPart->brk != NULL && field_0x5f0 == 0) {
bgPart->brk->play();
}
bgData++;
bgPart++;
}
return 1;
@@ -776,7 +479,6 @@ static int daBg_Execute(daBg_c* i_this) {
return i_this->execute();
}
/* 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;
@@ -790,11 +492,12 @@ static int daBg_Delete(daBg_c* i_this) {
/* 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();
daBg_c* a_this = (daBg_c*)i_this;
int rt = a_this->create();
return rt;
}
/* 8045906C-8045933C 0014EC 02D0+00 1/1 0/0 0/0 .text create__6daBg_cFv */
// NONMATCHING - regalloc
int daBg_c::create() {
int roomNo = fopAcM_GetParam(this);
field_0x5f0 = 0;
@@ -806,59 +509,68 @@ int daBg_c::create() {
home.roomNo = roomNo;
current.roomNo = roomNo;
JKRExpHeap* heap = dStage_roomControl_c::getMemoryBlock(roomNo);
if (heap != NULL) {
this->heap = JKRSolidHeap::create(-1, heap, false);
JKRExpHeap* room_heap = dStage_roomControl_c::getMemoryBlock(roomNo);
if (room_heap != NULL) {
this->heap = JKRCreateSolidHeap(-1, room_heap, false);
JUT_ASSERT(471, heap != 0);
JKRHeap* old = mDoExt_setCurrentHeap(this->heap);
createHeap();
int rt = createHeap();
JUT_ASSERT(476, rt == 1);
mDoExt_setCurrentHeap(old);
this->heap->adjustSize();
} else if (!fopAcM_entrySolidHeap(this, checkCreateHeap, 0x80020040)) {
return cPhs_ERROR_e;
} else {
u32 size = 0x20040;
size |= 0x80000000;
if (!fopAcM_entrySolidHeap(this, checkCreateHeap, size)) {
return cPhs_ERROR_e;
}
}
daBg_unkData* bgData = mBgData;
daBg_Part* bgPart = mBgParts;
J3DModelData* modelData;
for (int i = 0; i < 6; i++) {
if (bgData->mpBgModel != NULL) {
J3DModelData* modelData = bgData->mpBgModel->getModelData();
if (bgPart->model != NULL) {
J3DModelData* modelData = bgPart->model->getModelData();
if (bgData->mpBgBtk != NULL) {
bgData->mpBgBtk->entry(modelData);
if (bgPart->btk != NULL) {
bgPart->btk->entry(modelData);
}
if (bgData->mpBgBrk != NULL) {
bgData->mpBgBrk->entry(modelData);
if (bgPart->brk != NULL) {
bgPart->brk->entry(modelData);
}
}
bgData++;
bgPart++;
}
f32 transX;
f32 transY;
s16 angle;
if (dComIfGp_getMapTrans(roomNo, &transX, &transY, &angle)) {
daBg_unkData* bgData_ = mBgData;
daBg_Part* bgPart = mBgParts;
for (int i = 0; i < 6; i++) {
J3DModel* model = bgData_->mpBgModel;
J3DModel* model = bgPart->model;
if (model != NULL) {
mDoMtx_stack_c::transS(transX, 0.0f, transY);
mDoMtx_stack_c::YrotM(angle);
model->setBaseTRMtx(mDoMtx_stack_c::get());
J3DModelData* modelData = model->getModelData();
modelData = model->getModelData();
for (u16 j = 0; j < modelData->getMaterialNum(); j++) {
const char* name = modelData->getMaterialName()->getName(j);
JUTNameTab* nametab = modelData->getMaterialName();
const char* name = nametab->getName(j);
if (name[3] == 'M' && name[4] == 'A' && name[5] == '0' && name[6] == '8') {
modelData->getMaterialNodePointer(j)->getShape()->setTexMtxLoadType(
0x2000);
J3DMaterial* material = modelData->getMaterialNodePointer(j);
J3DShape* shape = material->getShape();
shape->setTexMtxLoadType(0x2000);
}
}
}
bgData_++;
bgPart++;
}
}
@@ -874,17 +586,39 @@ int daBg_c::create() {
}
}
dKy_tevstr_init(dComIfGp_roomControl_getTevStr(roomNo), roomNo, 0xFF);
dKy_tevstr_c* tevstr = dComIfGp_roomControl_getTevStr(roomNo);
dKy_tevstr_init(tevstr, roomNo, 0xFF);
}
dComIfGp_roomControl_onStatusFlag(roomNo, 0x10);
OS_REPORT("<BG> room%d\n", roomNo);
return cPhs_COMPLEATE_e;
}
/* 8045933C-8045936C 0017BC 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */
// void J3DTexNoAnm::calc(u16* param_0) const {
extern "C" void calc__11J3DTexNoAnmCFPUs() {
// NONMATCHING
}
/* 8045954C-8045956C -00001 0020+00 1/0 0/0 0/0 .data l_daBg_Method */
static actor_method_class l_daBg_Method = {
(process_method_func)daBg_Create,
(process_method_func)daBg_Delete,
(process_method_func)daBg_Execute,
(process_method_func)daBg_IsDelete,
(process_method_func)daBg_Draw,
};
/* 804593A8-804593A8 000034 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 8045956C-804595A0 -00001 0034+00 0/0 0/0 1/0 .data g_profile_BG */
extern actor_process_profile_definition2 g_profile_BG = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_BG, // mProcName
&g_fpcLf_Method.base, // sub_method
sizeof(daBg_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
753, // mPriority
&l_daBg_Method, // sub_method
0x00060000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_0_e, // cullType
0,
};