start m443Dll
This commit is contained in:
parent
daa833827f
commit
513f0af5e1
5 changed files with 219 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,6 +1,7 @@
|
|||
# IDE folders
|
||||
.idea/
|
||||
.vs/
|
||||
.vscode/
|
||||
|
||||
# Caches
|
||||
__pycache__
|
||||
|
|
|
|||
10
.vscode/settings.json
vendored
10
.vscode/settings.json
vendored
|
|
@ -13,8 +13,14 @@
|
|||
"files.insertFinalNewline": true,
|
||||
"files.trimFinalNewlines": true,
|
||||
"files.associations": {
|
||||
"*.csv": "plaintext",
|
||||
"*.s": "plaintext",
|
||||
"*.json": "jsonc",
|
||||
"*.c": "c",
|
||||
"*.inc": "c",
|
||||
".clangd": "yaml"
|
||||
".clangd": "yaml",
|
||||
"m443dll.h": "c",
|
||||
"object.h": "c"
|
||||
},
|
||||
"search.useIgnoreFiles": false,
|
||||
"search.exclude": {
|
||||
|
|
@ -27,7 +33,5 @@
|
|||
"report.json": true,
|
||||
"compile_commands.json": true,
|
||||
},
|
||||
// Disable C/C++ IntelliSense, use clangd instead
|
||||
"C_Cpp.intelliSenseEngine": "disabled",
|
||||
"cmake.ignoreCMakeListsMissing": true,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -292,7 +292,8 @@ lbl_1_data_208 = .data:0x00000208; // type:object size:0x4 data:byte
|
|||
lbl_1_data_20C = .data:0x0000020C; // type:object size:0x1A scope:local data:string
|
||||
lbl_1_data_226 = .data:0x00000226; // type:object size:0x19 scope:local data:string
|
||||
lbl_1_data_240 = .data:0x00000240; // type:object size:0x14
|
||||
lbl_1_data_264 = .data:0x00000258; // type:object size:0x20
|
||||
lbl_1_data_258 = .data:0x00000258; // type:object size:0xB scope:local data:string
|
||||
lbl_1_data_264 = .data:0x00000264; // type:object size:0x20
|
||||
lbl_1_data_284 = .data:0x00000284; // type:object size:0x40
|
||||
lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x10
|
||||
lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x50
|
||||
|
|
|
|||
|
|
@ -29,6 +29,54 @@ typedef struct M443DllCameraStruct {
|
|||
u32 unk_A0;
|
||||
} M443DllCameraStruct; /* size = 0xA4 */
|
||||
|
||||
typedef struct M443DllWorkStruct {
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
char unk10[0xC];
|
||||
s32 unk1C;
|
||||
s32 unk20;
|
||||
s32 unk24;
|
||||
char unk28[0xC];
|
||||
s16 unk34;
|
||||
char unk3A[0x12];
|
||||
f32 unk48;
|
||||
f32 unk4C;
|
||||
f32 unk50;
|
||||
f32 unk54;
|
||||
f32 unk58;
|
||||
f32 unk5C;
|
||||
s32 unk60;
|
||||
char unk64[0x4];
|
||||
s32 unk68;
|
||||
char unk6C[0x14];
|
||||
s32 unk80;
|
||||
char unk84[0x4];
|
||||
f32 unk88;
|
||||
char unk8C[0x4];
|
||||
f32 unk90;
|
||||
char unk94[0x4];
|
||||
f32 unk98;
|
||||
f32 unk9C;
|
||||
f32 unkA0;
|
||||
f32 unkA4;
|
||||
s32 unkA8;
|
||||
s32 unkAC;
|
||||
s32 unkB0;
|
||||
s32 unkB4;
|
||||
s32 unkB8;
|
||||
f32 unkBC;
|
||||
f32 unkC0;
|
||||
Vec unkC4;
|
||||
Vec unkD0;
|
||||
Vec unkDC;
|
||||
Vec unkE8;
|
||||
char unkF4[0xC];
|
||||
M443DllCameraStruct* unk100;
|
||||
M443DllCameraStruct* unk104;
|
||||
} M443DllWorkStruct; /* size = 0x134 */
|
||||
|
||||
void fn_1_3FE8(u32 arg0);
|
||||
u32 fn_1_3FFC(void);
|
||||
M443DllCameraStruct *fn_1_40AC(s32 arg0);
|
||||
|
|
|
|||
|
|
@ -14,3 +14,164 @@
|
|||
#endif
|
||||
|
||||
#include "REL/m443Dll.h"
|
||||
|
||||
s32 lbl_1_bss_78[6];
|
||||
omObjData* lbl_1_bss_90[4];
|
||||
|
||||
char* lbl_1_data_264[0x8] = {
|
||||
"itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r",
|
||||
"itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r"
|
||||
};
|
||||
|
||||
u32 lbl_1_data_284[8][2] = {
|
||||
{0x4A0005, 0x4A0006}, {0x4A0007, 0x4A0008},
|
||||
{0x4A0009, 0x4A000A}, {0x4A000B, 0x4A000C},
|
||||
{0x4A000D, 0x4A000E}, {0x4A000F, 0x4A0010},
|
||||
{0x4A0011, 0x4A0012}, {0x4A0013, 0x4A0014},
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2C4[4] = {
|
||||
0, 0x4A0020, 0x17, 0x72
|
||||
};
|
||||
|
||||
s32 lbl_1_data_324[4] = {
|
||||
0x727, 0x728, 0x729, 0x72A,
|
||||
};
|
||||
s32 lbl_1_data_334[4] = {
|
||||
0x72B, 0x72C, 0x72D, 0x72E,
|
||||
};
|
||||
|
||||
/////
|
||||
void fn_1_5680(omObjData* object);
|
||||
void fn_1_5BD4(omObjData*);
|
||||
void fn_1_8508(omObjData*);
|
||||
f32 fn_1_8C8C(s32, f32);
|
||||
/////
|
||||
|
||||
void fn_1_5444(Process* arg0) {
|
||||
u32 sp18[4];
|
||||
u32 sp8[4];
|
||||
omObjData* var_r28;
|
||||
u32 var_r29;
|
||||
s16 var_r30;
|
||||
s16 var_r31;
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||
sp18[var_r31] = GWPlayerCfg[var_r31].group;
|
||||
sp8[var_r31] = var_r31;
|
||||
}
|
||||
|
||||
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
||||
for (var_r30 = var_r31 + 1; var_r30 < 4; var_r30++) {
|
||||
if (sp18[var_r31] > sp18[var_r30]) {
|
||||
var_r29 = sp18[var_r31];
|
||||
sp18[var_r31] = sp18[var_r30];
|
||||
sp18[var_r30] = var_r29;
|
||||
var_r29 = sp8[var_r31];
|
||||
sp8[var_r31] = sp8[var_r30];
|
||||
sp8[var_r30] = var_r29;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||
lbl_1_bss_78[sp8[var_r31]] = (s16)var_r31;
|
||||
}
|
||||
omMakeGroupEx(arg0, 0, 4);
|
||||
omGetGroupMemberListEx(arg0, 0);
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||
var_r28 = lbl_1_bss_90[var_r31] = omAddObjEx(arg0, 0x28, 5, 4, 0, fn_1_5680);
|
||||
var_r28->work[0] = var_r31;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_565C(void) {
|
||||
CharModelKill(-1);
|
||||
}
|
||||
|
||||
void fn_1_5680(omObjData* object) {
|
||||
f32 spC[4] = {0.25f, 0.5f, 0.75f, 1.0f};
|
||||
s32 sp8;
|
||||
f32 temp_f0;
|
||||
s32 temp_r27;
|
||||
s32 temp_r3;
|
||||
s32 var_r29;
|
||||
u32 temp_r25;
|
||||
M443DllWorkStruct* temp_r31;
|
||||
HsfanimStruct01* var_r28;
|
||||
|
||||
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x134, MEMORY_DEFAULT_NUM);
|
||||
temp_r31 = object->data;
|
||||
memset(temp_r31, 0, 0x134);
|
||||
object->stat |= 0x100;
|
||||
temp_r25 = object->work[0];
|
||||
temp_r27 = GWPlayerCfg[temp_r25].character;
|
||||
temp_r31->unk0 = temp_r27;
|
||||
sp8 = temp_r31->unk4 = 0;
|
||||
temp_r31->unkC = lbl_1_bss_78[object->work[0]];
|
||||
temp_r31->unk5C = spC[GWPlayerCfg[temp_r25].diff & 3];
|
||||
temp_r31->unk24 = GWPlayerCfg[object->work[0]].iscom;
|
||||
object->model[0] = CharModelCreate(temp_r27, 8);
|
||||
Hu3DModelLayerSet(object->model[0], 4);
|
||||
object->model[1] = Hu3DModelCreateFile(lbl_1_data_284[temp_r27][0]);
|
||||
Hu3DModelLayerSet(object->model[1], 4);
|
||||
Hu3DMotionSpeedSet(object->model[1], 0.0f);
|
||||
object->model[2] = Hu3DModelCreateFile(lbl_1_data_284[temp_r27][1]);
|
||||
Hu3DModelLayerSet(object->model[2], 4);
|
||||
Hu3DMotionSpeedSet(object->model[2], 0.0f);
|
||||
Hu3DModelAttrSet(object->model[2], 1);
|
||||
|
||||
for (var_r29 = 0; var_r29 < 4; var_r29++) {
|
||||
if (lbl_1_data_2C4[var_r29] < 0x10000) {
|
||||
object->motion[var_r29] = CharModelMotionCreate(temp_r27, lbl_1_data_2C4[var_r29]);
|
||||
} else {
|
||||
object->motion[var_r29] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(temp_r27 + lbl_1_data_2C4[var_r29], 0x10000000, HEAP_DATA));
|
||||
}
|
||||
}
|
||||
CharModelMotionDataClose(temp_r27);
|
||||
temp_r3 = Hu3DParticleCreate(HuSprAnimReadFile(0x4A001D), 0xC8);
|
||||
object->model[3] = temp_r3;
|
||||
Hu3DModelLayerSet(temp_r3, 4);
|
||||
var_r28 = ((ParticleData*)Hu3DData[temp_r3].unk_120)->unk_48;
|
||||
|
||||
for (var_r29 = 0; var_r29 < 0xC8; var_r29++, var_r28++) {
|
||||
var_r28->unk2C = 0.0f;
|
||||
var_r28->unk40.a = 0;
|
||||
var_r28->unk00 = 0;
|
||||
}
|
||||
|
||||
|
||||
object->trans.x = temp_r31->unkC4.x = temp_r31->unkDC.x = (100.0f * (4.0f * object->work[0])) - 600.0f;
|
||||
object->trans.y = temp_r31->unkC4.y = temp_r31->unkDC.y = 0.0f;
|
||||
object->trans.z = temp_r31->unkC4.z = temp_r31->unkDC.z = 0.0f;
|
||||
|
||||
temp_r31->unkD0.x = temp_r31->unkD0.y = temp_r31->unkD0.z = 0.0f;
|
||||
temp_r31->unkE8.x = temp_r31->unkE8.y = temp_r31->unkE8.z = 0.0f;
|
||||
temp_r31->unk48 = temp_r31->unk4C = 0.0f;
|
||||
temp_r31->unk50 = 0.0f;
|
||||
temp_r31->unk54 = 0.02f;
|
||||
temp_r31->unk58 = 180.0f;
|
||||
temp_r31->unkC0 = 50.0f;
|
||||
temp_r31->unkBC = 350.0f;
|
||||
temp_r31->unk8 = -1;
|
||||
temp_r31->unk1C = 1;
|
||||
temp_r31->unk20 = 0;
|
||||
temp_r31->unk9C = 1.0f;
|
||||
temp_r31->unk98 = 0.0f;
|
||||
temp_r31->unkA0 = 0.0f;
|
||||
temp_r31->unkA4 = 0.0f;
|
||||
temp_r31->unk88 = 1000.0f;
|
||||
temp_r31->unk90 = fn_1_8C8C(temp_r31->unk80, temp_r31->unk88);
|
||||
temp_r31->unkA8 = temp_r31->unkAC = -1;
|
||||
temp_r31->unkB0 = temp_r31->unkB4 = temp_r31->unkB8 = -1;
|
||||
temp_r31->unkB4 = HuAudFXPlay(lbl_1_data_334[object->work[0]]);
|
||||
temp_r31->unk68 = -1;
|
||||
temp_r31->unk60 = 0;
|
||||
temp_r31->unk100 = fn_1_4148(object->work[0] + 1);
|
||||
temp_r31->unk104 = fn_1_41B0(object->work[0] + 1);
|
||||
temp_r31->unk100->unk_00 = 0;
|
||||
fn_1_8508(object);
|
||||
temp_r31->unk34 = 0;
|
||||
object->func = fn_1_5BD4;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue