d_stage linked and one function in m_do_ext matched (#2272)

This commit is contained in:
Trueffel 2024-12-29 16:56:25 +01:00 committed by GitHub
parent 0e281cb975
commit 78d206c1a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 56 additions and 35 deletions

View File

@ -442,7 +442,7 @@ config.libs = [
"progress_category": "game",
"host": True,
"objects": [
Object(NonMatching, "d/d_stage.cpp"),
Object(Matching, "d/d_stage.cpp"),
Object(Matching, "d/d_map.cpp"),
Object(Matching, "d/d_com_inf_game.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(Matching, "d/d_com_static.cpp"),

View File

@ -99,6 +99,10 @@ volatile PPCWGPipe GXWGFifo AT_ADDRESS(GXFIFO_ADDR);
GX_XF_LOAD_REG_HDR(cmd); \
}
static inline void GXNormal1x16(const u16 x) {
GXWGFifo.u16 = x;
}
static inline void GXPosition3f32(const f32 x, const f32 y, const f32 z) {
GXWGFifo.f32 = x;
GXWGFifo.f32 = y;
@ -145,6 +149,10 @@ static inline void GXTexCoord1x8(const u8 s) {
GXWGFifo.u8 = s;
}
static inline void GXTexCoord1x16(const u16 s) {
GXWGFifo.u16 = s;
}
static inline void GXPosition2u16(const u16 x, const u16 y) {
GXWGFifo.u16 = x;
GXWGFifo.u16 = y;

View File

@ -526,18 +526,18 @@ public:
/* 800134F8 */ void setMaterial();
/* 800135D0 */ void draw();
cXyz* getPos(int i_idx) { return field_0x38[i_idx].field_0x0; }
f32* getSize(int i_idx) { return field_0x38[i_idx].field_0x4; }
cXyz* getPos(int i_idx) { return mpLines[i_idx].field_0x0; }
f32* getSize(int i_idx) { return mpLines[i_idx].field_0x4; }
private:
/* 0x08 */ GXTexObj field_0x8;
/* 0x28 */ GXColor field_0x28;
/* 0x2C */ dKy_tevstr_c* field_0x2c;
/* 0x30 */ u16 field_0x30;
/* 0x08 */ GXTexObj mTextureObject;
/* 0x28 */ GXColor mColor;
/* 0x2C */ dKy_tevstr_c* mpTevStr;
/* 0x30 */ u16 mNumLines;
/* 0x32 */ u16 field_0x32;
/* 0x34 */ u16 field_0x34;
/* 0x36 */ u8 field_0x36;
/* 0x38 */ mDoExt_3Dline_c* field_0x38;
/* 0x36 */ u8 mIsDrawn;
/* 0x38 */ mDoExt_3Dline_c* mpLines;
};
class mDoExt_3DlineMat0_c : public mDoExt_3DlineMat_c {

View File

@ -2729,7 +2729,6 @@ stage_scls_info_dummy_class* dStage_stageDt_c::getSclsInfo() const {
}
/* 800272F0-800274B0 021C30 01C0+00 0/0 1/1 0/0 .text dStage_changeScene4Event__FiScibfUlsi */
// NONMATCHING regalloc
int dStage_changeScene4Event(int i_exitId, s8 room_no, int i_wipe, bool param_3, f32 speed,
u32 mode, s16 angle, int param_7) {
stage_scls_info_dummy_class* scls;
@ -2748,19 +2747,8 @@ int dStage_changeScene4Event(int i_exitId, s8 room_no, int i_wipe, bool param_3,
stage_scls_info_class* scls_info = &scls->mEntries[i_exitId];
s32 wipe;
s32 wipe_time;
if (i_wipe == -1) {
wipe = dStage_sclsInfo_getWipe(scls_info);
} else {
wipe = i_wipe;
}
if (i_wipe == -1) {
wipe_time = dStage_sclsInfo_getWipeTime(scls_info);
} else {
wipe_time = 0;
}
s32 wipe = i_wipe == -1 ? dStage_sclsInfo_getWipe(scls_info) : i_wipe;
s32 wipe_time = i_wipe == -1 ? dStage_sclsInfo_getWipeTime(scls_info) : 0;
s32 layer = dStage_sclsInfo_getSceneLayer(scls_info);
int timeH = dStage_sclsInfo_getTimeH(scls_info);
@ -3495,12 +3483,3 @@ int dStage_stageDt_c::getMapPath(void) {
void dStage_stageDt_c::setElst(dStage_Elst_c* i_Elst) {
mElst = i_Elst;
}
/* ############################################################################################## */
/* 80450D7C-80450D80 -00001 0004+00 0/0 0/0 0/0 .sbss None */
#pragma push
#pragma force_active on
static u8 pad_80450D7C[4];
#pragma pop
/* 80378A50-80378A50 0050B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */

View File

@ -4,6 +4,7 @@
*/
#include "m_Do/m_Do_ext.h"
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRAssertHeap.h"
@ -2340,8 +2341,37 @@ void mDoExt_3DlineMat1_c::setMaterial() {
}
/* 800135D0-8001373C 00DF10 016C+00 1/0 0/0 0/0 .text draw__19mDoExt_3DlineMat1_cFv */
// NONMATCHING- some smaller issues
void mDoExt_3DlineMat1_c::draw() {
// NONMATCHING
GXLoadTexObj(&mTextureObject, GX_TEXMAP0);
GXSetTexCoordScaleManually(GX_TEXCOORD0, 1, GXGetTexObjWidth(&mTextureObject), GXGetTexObjHeight(&mTextureObject));
GXSetTevColor(GX_TEVREG2, mColor);
if (mpTevStr != NULL) {
dKy_Global_amb_set(mpTevStr);
}
mDoExt_3Dline_c* lines = mpLines;
s32 vert_num = (field_0x34 & 0x7fff) << 1;
for (s32 i = 0; i < mNumLines; i++) {
GXSetArray(GX_VA_POS, lines[mIsDrawn].field_0x8, 0xC);
GXSetArray(GX_VA_NRM, lines[mIsDrawn].field_0x10, 0x3);
GXSetArray(GX_VA_TEX0, lines[mIsDrawn].field_0x18, 0x8);
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, vert_num);
s16 tempJ;
for (u32 j = 0; j < (u32)field_0x34; j += 1) {
GXPosition1x16(j);
GXNormal1x16(j);
GXTexCoord1x16(j);
tempJ = j + 1;
GXPosition1x16(tempJ);
GXNormal1x16(tempJ);
GXTexCoord1x16(tempJ);
}
GXEnd();
lines++;
}
GXSetTexCoordScaleManually(GX_TEXCOORD0, 0, 0, 0);
mIsDrawn ^= 1;
}
/* 8001373C-80013FB0 00E07C 0874+00 0/0 0/0 6/6 .text
@ -2359,8 +2389,12 @@ void mDoExt_3DlineMat1_c::update(int param_0, _GXColor& param_1, dKy_tevstr_c* p
/* 80014738-8001479C 00F078 0064+00 0/0 0/0 29/29 .text
* setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c */
void mDoExt_3DlineMatSortPacket::setMat(mDoExt_3DlineMat_c* param_0) {
// NONMATCHING
void mDoExt_3DlineMatSortPacket::setMat(mDoExt_3DlineMat_c* i_3DlineMat) {
if (mp3DlineMat == NULL) {
dComIfGd_getListPacket()->entryImm(this, 0);
}
i_3DlineMat->field_0x4 = mp3DlineMat;
mp3DlineMat = i_3DlineMat;
}
/* 8001479C-80014804 00F0DC 0068+00 1/0 0/0 0/0 .text draw__26mDoExt_3DlineMatSortPacketFv */