matched modeltest00.c

This commit is contained in:
zestydevy 2024-02-10 11:26:23 -06:00
parent 415e97a1b5
commit 3cb84d1f21
5 changed files with 285 additions and 30 deletions

View file

@ -73,36 +73,36 @@ lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float
lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float
lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0xC data:4byte lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0xC data:4byte
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0xC data:4byte lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0xC data:4byte
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0xC data:4byte lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0xC scope:local data:float
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0xC data:4byte lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0xC data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float
lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float
@ -166,7 +166,7 @@ lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x2C scope:local data:str
lbl_1_data_318 = .data:0x00000318; // type:object size:0xA scope:local data:string lbl_1_data_318 = .data:0x00000318; // type:object size:0xA scope:local data:string
lbl_1_data_322 = .data:0x00000322; // type:object size:0x36 lbl_1_data_322 = .data:0x00000322; // type:object size:0x36
lbl_1_data_358 = .data:0x00000358; // type:object size:0x8 lbl_1_data_358 = .data:0x00000358; // type:object size:0x8
lbl_1_data_360 = .data:0x00000360; // type:object size:0x28 data:string lbl_1_data_360 = .data:0x00000360; // type:object size:0x28 scope:local data:string
lbl_1_data_388 = .data:0x00000388; // type:object size:0x28 data:string lbl_1_data_388 = .data:0x00000388; // type:object size:0x28 data:string
lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x58 lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x58
lbl_1_data_408 = .data:0x00000408; // type:object size:0x58 lbl_1_data_408 = .data:0x00000408; // type:object size:0x58

View file

@ -865,7 +865,7 @@ config.libs = [
objects = { objects = {
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
Object(Matching, "REL/modeltestDll/main.c"), Object(Matching, "REL/modeltestDll/main.c"),
Object(NonMatching, "REL/modeltestDll/modeltest00.c"), Object(Matching, "REL/modeltestDll/modeltest00.c"),
Object(NonMatching, "REL/modeltestDll/modeltest01.c"), Object(NonMatching, "REL/modeltestDll/modeltest01.c"),
} }
), ),

View file

@ -3,6 +3,7 @@
#include "game/hsfdraw.h" #include "game/hsfdraw.h"
#include "game/objsub.h" #include "game/objsub.h"
#include "game/object.h"
// -------------------------------------------------------------------------- // // -------------------------------------------------------------------------- //
@ -35,6 +36,9 @@ extern f32 CZoom;
void fn_1_29C(); void fn_1_29C();
void fn_1_28F8(Point3d * arg0, Point3d * arg1); void fn_1_28F8(Point3d * arg0, Point3d * arg1);
extern void omOutView(); extern void omOutView();
void fn_1_37DC(omObjData*);
void fn_1_439C(omObjData*);
void fn_1_46F0();
s16 MGSeqCreate(s16, ...); s16 MGSeqCreate(s16, ...);
void MGSeqParamSet(s16, s16, s16); void MGSeqParamSet(s16, s16, s16);

View file

@ -20,6 +20,7 @@ void CharModelMotionTimeSet(s16 character, float time);
void CharModelMotionSpeedSet(s16 character, float speed); void CharModelMotionSpeedSet(s16 character, float speed);
void CharMotionKill(s16 character, s32 motion); void CharMotionKill(s16 character, s32 motion);
void CharModelVoiceEnableSet(s16 character, s16 motion, s32 flag); void CharModelVoiceEnableSet(s16 character, s16 motion, s32 flag);
void CharModelCreateCoinParticle(s16, Vec *);
s32 CharModelMotionEndCheck(s16 character); s32 CharModelMotionEndCheck(s16 character);

View file

@ -0,0 +1,250 @@
#include "math.h"
#include "unsplit.h"
#include "game/wipe.h"
#include "game/pad.h"
#include "REL/modeltestDll.h"
// -------------------------------------------------------------------------- //
omObjData * unk_bss_9FC;
omObjData * lbl_1_bss_9F8;
omObjData * lbl_1_bss_9F4;
s16 lbl_1_bss_9EC[4];
s16 lbl_1_bss_9AC[4][8];
Process * lbl_1_bss_9A8;
u16 lbl_1_data_358[4] = {1, 2, 4, 8};
// -------------------------------------------------------------------------- //
void fn_1_34B0()
{
Process * temp_r30;
s16 var_r31;
s32 var_r29;
s32 var_r28;
OSReport("******* MODELTESTObjectSetup *********\n");
temp_r30 = omInitObjMan(0x32, 0x2000);
CRot.x = -22.0f;
CRot.y = 0.0f;
CRot.z = 0.0f;
Center.x = 0.0f;
Center.y = 60.0f;
Center.z = 0.0f;
CZoom = 400.0f;
for (var_r31 = 0; var_r31 < 4; ++var_r31)
{
Hu3DCameraCreate(lbl_1_data_358[var_r31]);
Hu3DCameraPerspectiveSet(lbl_1_data_358[var_r31], 45.0f, 20.0f, 20000.0f, 1.2f);
if ((var_r31 & 2) != 0) {
var_r29 = 0xF0;
} else {
var_r29 = 0;
}
Hu3DCameraViewportSet(lbl_1_data_358[var_r31], (var_r31 & 1) * 320, var_r29, 320.0f, 240.0f, 0.0f, 1.0f);
if ((var_r31 & 2) != 0) {
var_r28 = 0xF0;
} else {
var_r28 = 0;
}
Hu3DCameraScissorSet(lbl_1_data_358[var_r31], (var_r31 & 1) * 320, var_r28, 320, 240);
}
lbl_1_bss_9F4 = omAddObjEx(temp_r30, 0, 0x20U, 0x20U, -1, fn_1_37DC);
lbl_1_bss_9F8 = omAddObjEx(temp_r30, 0x7FDA, 0U, 0U, -1, fn_1_439C);
lbl_1_bss_9A8 = HuPrcCreate(fn_1_46F0, 0x64U, 0x2000U, 0);
Hu3DBGColorSet(0x20U, 0x80U, 0x80U);
WipeCreate(1, 0, 0x1E);
}
// -------------------------------------------------------------------------- //
static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) {
s8 temp_r28;
temp_r28 = HuPadSubStkX[0] & 0xF8;
if (temp_r28 != 0) {
Center.x += 0.05f * (sp30->x * temp_r28);
Center.y += 0.05f * (sp30->y * temp_r28);
Center.z += 0.05f * (sp30->z * temp_r28);
}
PSVECNormalize(sp18, sp30);
temp_r28 = -(HuPadSubStkY[0] & 0xF8);
if (temp_r28 != 0) {
Center.x += 0.05f * (sp30->x * temp_r28);
Center.y += 0.05f * (sp30->y * temp_r28);
Center.z += 0.05f * (sp30->z * temp_r28);
}
}
// -------------------------------------------------------------------------- //
void fn_1_37DC(omObjData *)
{
Point3d sp3C;
Point3d sp30;
Point3d sp24;
Point3d sp18;
float temp_f31;
if ((HuPadBtnDown[0] & PAD_BUTTON_START) != 0) {
if (lbl_1_bss_9A8) {
HuPrcKill(lbl_1_bss_9A8);
}
omOvlReturnEx(1, 1);
return;
}
if ((HuPadBtn[0] & PAD_BUTTON_UP) != 0) {
CRot.x += 2.0f;
}
if ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0) {
CRot.x -= 2.0f;
}
if ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0) {
CRot.y += 2.0f;
}
if ((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) {
CRot.y -= 2.0f;
}
CZoom += HuPadTrigL[0] / 2;
CZoom -= HuPadTrigR[0] / 2;
sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
sp30.x = Center.x - sp3C.x;
sp30.y = Center.y - sp3C.y;
sp30.z = Center.z - sp3C.z;
sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
sp24.y = cos((M_PI * CRot.x) / 180.0);
sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
temp_f31 = CRot.z;
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0))
+ sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0))
+ sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0));
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0))
+ sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0))
+ sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0));
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0))
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0))
+ sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0)));
PSVECCrossProduct(&sp24, &sp30, &sp30);
PSVECNormalize(&sp30, &sp30);
HuControlCamCenter(&sp18, &sp30);
}
// -------------------------------------------------------------------------- //
void fn_1_439C(omObjData * )
{
s16 var_r31;
f32 temp_f30;
f32 temp_f31;
f32 sp10;
Point3d sp2C;
Point3d sp20;
Point3d sp14;
for (var_r31 = 0; var_r31 < 4; ++var_r31)
{
temp_f31 = CRot.x;
temp_f30 = CRot.y + (var_r31 * 90);
sp10 = CRot.z;
sp2C.x = Center.x + (CZoom * (sin((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
sp2C.y = Center.y + (CZoom * -sin((M_PI * temp_f31) / 180.0));
sp2C.z = Center.z + (CZoom * (cos((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
sp20.x = Center.x;
sp20.y = Center.y;
sp20.z = Center.z;
sp14.x = sin((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
sp14.y = cos((M_PI * temp_f31) / 180.0);
sp14.z = cos((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
Hu3DCameraPosSet(lbl_1_data_358[var_r31], sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z);
}
}
// -------------------------------------------------------------------------- //
const Point3d lbl_1_rodata_18C = {0.0f, 0.0f, 0.0f};
const Point3d lbl_1_rodata_198 = {0.0f, 1.0f, 0.0f};
// -------------------------------------------------------------------------- //
void fn_1_46F0(void)
{
Point3d sp20;
Point3d sp14;
Point3d sp8;
s16 var_r31;
s16 var_r30;
sp14 = lbl_1_rodata_18C;
sp8 = lbl_1_rodata_198;
Hu3DGLightCreate(0.0f, 500.0f, 1000.0f, 0.0f, -0.5f, -1.0f, 0xFFU, 0xFFU, 0xFFU);
Hu3DShadowCreate(45.0f, 500.0f, 8000.0f);
Hu3DShadowTPLvlSet(0.5f);
Hu3DShadowSizeSet(0xC0U);
sp20.x = -500.0f;
sp20.y = 1000.0f;
sp20.z = 1000.0f;
Hu3DShadowPosSet(&sp20, &sp8, &sp14);
for (var_r31 = 0; var_r31 < 4; ++var_r31)
{
var_r30 = var_r31;
lbl_1_bss_9EC[var_r31] = CharModelCreate(var_r30, 8);
Hu3DModelShadowSet(lbl_1_bss_9EC[var_r31]);
lbl_1_bss_9AC[var_r31][0] = CharMotionCreate(var_r30, 0x5F0002);
CharModelMotionSet(var_r30, lbl_1_bss_9AC[var_r31][0]);
Hu3DModelAttrSet(lbl_1_bss_9EC[var_r31], 0x40000001U);
Hu3DModelCameraSet(lbl_1_bss_9EC[var_r31], lbl_1_data_358[var_r31]);
Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], ((( var_r31 / 4) * 200) - 100), 0.0f, (-( var_r31 % 4) * 150));
Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], 0.0f, 0.0f, 0.0f);
CharMotionDataClose(var_r30);
}
var_r31 = Hu3DModelCreateFile(0x700024);
Hu3DModelScaleSet(var_r31, 5.0f, 5.0f, 5.0f);
Hu3DModelShadowMapSet(var_r31);
while (TRUE)
{
if ((HuPadBtnDown[0] & PAD_BUTTON_Y) != 0) {
Hu3DCameraKill(2);
Hu3DCameraKill(4);
Hu3DCameraKill(8);
sp20.x =
sp20.z =
sp20.y = 0.0f;
sp20.y += 200.0f;
CharModelCreateCoinParticle(4, &sp20);
}
HuPrcVSleep();
}
}
// -------------------------------------------------------------------------- //
const Point3d lbl_1_rodata_1C8 = {0.0f, 0.0f, 0.0f};
const Point3d lbl_1_rodata_1D4 = {0.0f, 0.0f, -1.0f};
// -------------------------------------------------------------------------- //