Got 99% on mpexDll/mpex.c

This commit is contained in:
dbalatoni13 2024-10-29 21:16:32 +01:00
parent 0433458464
commit 85f1363bcc
8 changed files with 3588 additions and 71 deletions

View file

@ -3,6 +3,7 @@
#include "game/audio.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
@ -11,6 +12,13 @@
#include "REL/mpexDll.h"
#ifndef __MWERKS__
float fn_1_1B52C(float arg8, float arg9, float argA, float argB);
float fn_1_1B554(float, float, float);
float fn_1_1B574(float arg0, float arg1, float arg2, float arg3);
float fn_1_1B64C(float arg0, float arg1, float arg2, float arg3);
#endif
void fn_1_230();
void fn_1_A70(MpexDllUnkStruct *arg0);
@ -338,34 +346,34 @@ void fn_1_2228(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float
arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA);
}
void fn_1_25C4(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
void fn_1_25C4(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
{
switch (arg4) {
case 0:
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0);
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0);
break;
case 1:
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000001);
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001);
break;
case 2:
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000002);
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002);
break;
}
}
void fn_1_273C(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
void fn_1_273C(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
{
if (arg0->unk_58 != arg0->unk_48[arg2]) {
arg0->unk_58 = arg0->unk_48[arg2];
if (arg0->work[3] != arg0->motion[arg2]) {
arg0->work[3] = arg0->motion[arg2];
switch (arg4) {
case 0:
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0);
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0);
break;
case 1:
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000001);
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001);
break;
case 2:
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000002);
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002);
break;
}
}
@ -373,7 +381,7 @@ void fn_1_273C(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
void fn_1_28DC(void) { }
void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4)
void fn_1_28E0(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4)
{
Vec sp4C;
Vec sp40;
@ -386,17 +394,17 @@ void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float a
s32 var_r28 = 0;
s32 var_r26;
sp40.x = Hu3DData[arg0->unk_40[arg1]].pos.x;
sp40.y = Hu3DData[arg0->unk_40[arg1]].pos.y;
sp40.z = Hu3DData[arg0->unk_40[arg1]].pos.z;
sp40.x = Hu3DData[arg0->model[arg1]].pos.x;
sp40.y = Hu3DData[arg0->model[arg1]].pos.y;
sp40.z = Hu3DData[arg0->model[arg1]].pos.z;
sp34.x = arg2->x;
sp34.y = arg2->y;
sp34.z = arg2->z;
sp34.x = arg2.x;
sp34.y = arg2.y;
sp34.z = arg2.z;
sp1C.x = Hu3DData[arg0->unk_40[arg1]].rot.x;
sp1C.y = Hu3DData[arg0->unk_40[arg1]].rot.y;
sp1C.z = Hu3DData[arg0->unk_40[arg1]].rot.z;
sp1C.x = Hu3DData[arg0->model[arg1]].rot.x;
sp1C.y = Hu3DData[arg0->model[arg1]].rot.y;
sp1C.z = Hu3DData[arg0->model[arg1]].rot.z;
sp10.x = 0.0f;
sp10.y = arg8;
@ -466,15 +474,15 @@ void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float a
if (arg4 != 0) {
sp1C.y = fn_1_1B554(sp1C.y, sp28.y, argA);
}
Hu3DModelPosSet(arg0->unk_40[arg1], sp4C.x, sp40.y, sp4C.z);
Hu3DModelRotSet(arg0->unk_40[arg1], sp1C.x, sp1C.y, sp1C.z);
Hu3DModelPosSet(arg0->model[arg1], sp4C.x, sp40.y, sp4C.z);
Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp1C.y, sp1C.z);
if (var_r29 == 2 && var_r28 == 2) {
break;
}
};
sp1C.y = Hu3DData[arg0->unk_40[arg1]].rot.y;
sp1C.y = Hu3DData[arg0->model[arg1]].rot.y;
if (arg4 != 0) {
for (var_r26 = 0; var_r26 <= argA; var_r26++) {
fn_1_1B7D0(1);
@ -495,7 +503,7 @@ void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float a
}
}
sp10.z = fn_1_1B52C(sp1C.y, sp10.y, var_r26, argA);
Hu3DModelRotSet(arg0->unk_40[arg1], sp1C.x, sp10.z, sp1C.z);
Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp10.z, sp1C.z);
}
}
}

3500
src/REL/mpexDll/mpex.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -38,7 +38,7 @@ s32 omcurdll;
s32 omovlhisidx;
s32 omovlevtno;
s32 omnextovlevtno;
s32 omovlstat;
u32 omovlstat;
static s32 omnextovlstat;
char omUPauseFlag;
s16 omSysExitReq;
@ -568,4 +568,4 @@ char omPauseChk(void)
OverlayID omCurrentOvlGet(void)
{
return omcurovl;
}
}

View file

@ -1166,7 +1166,7 @@ s16 mgTypeCurr;
s16 mgBattleStar[4];
s16 mgBattleStarMax;
u8 lbl_801D3E94;
s32 mgRecordExtra;
u32 mgRecordExtra;
s32 mgQuitExtraF;
s32 mgPracticeEnableF;
s32 mgInstExitEnableF;