commit
58ce71547a
7 changed files with 1043 additions and 14 deletions
|
|
@ -298,7 +298,8 @@ lbl_1_data_10F = .data:0x0000010F; // type:object size:0x24 scope:local data:str
|
||||||
lbl_1_data_138 = .data:0x00000138; // type:object size:0x4
|
lbl_1_data_138 = .data:0x00000138; // type:object size:0x4
|
||||||
lbl_1_data_13C = .data:0x0000013C; // type:object size:0x1C
|
lbl_1_data_13C = .data:0x0000013C; // type:object size:0x1C
|
||||||
lbl_1_data_158 = .data:0x00000158; // type:object size:0x20
|
lbl_1_data_158 = .data:0x00000158; // type:object size:0x20
|
||||||
lbl_1_data_178 = .data:0x00000178; // type:object size:0x40
|
lbl_1_data_178 = .data:0x00000178; // type:object size:0x20
|
||||||
|
lbl_1_data_198 = .data:0x00000198; // type:object size:0x20
|
||||||
lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x14
|
lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x14
|
||||||
jumptable_1_data_1CC = .data:0x000001CC; // type:object size:0x20 scope:local
|
jumptable_1_data_1CC = .data:0x000001CC; // type:object size:0x20 scope:local
|
||||||
lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x4 data:4byte
|
lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x4 data:4byte
|
||||||
|
|
|
||||||
|
|
@ -773,7 +773,7 @@ config.libs = [
|
||||||
"host": False,
|
"host": False,
|
||||||
"objects": [
|
"objects": [
|
||||||
Object(NonMatching, "msm/msmsys.c"),
|
Object(NonMatching, "msm/msmsys.c"),
|
||||||
Object(NonMatching, "msm/msmmem.c"),
|
Object(Matching, "msm/msmmem.c"),
|
||||||
Object(Matching, "msm/msmfio.c"),
|
Object(Matching, "msm/msmfio.c"),
|
||||||
Object(NonMatching, "msm/msmmus.c"),
|
Object(NonMatching, "msm/msmmus.c"),
|
||||||
Object(NonMatching, "msm/msmse.c"),
|
Object(NonMatching, "msm/msmse.c"),
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ extern s32 rand8(void);
|
||||||
|
|
||||||
// types
|
// types
|
||||||
typedef void (*m409Func6)(ModelData*, struct _unkStruct6*, Mtx);
|
typedef void (*m409Func6)(ModelData*, struct _unkStruct6*, Mtx);
|
||||||
|
typedef void (*m409PlayerFunc8)(struct _unkStruct8*);
|
||||||
|
|
||||||
typedef struct _unkStruct {
|
typedef struct _unkStruct {
|
||||||
f32 zoom;
|
f32 zoom;
|
||||||
|
|
@ -69,7 +70,7 @@ typedef struct _unkStruct5 {
|
||||||
Vec unk40;
|
Vec unk40;
|
||||||
s16 unk4C;
|
s16 unk4C;
|
||||||
s8 unk4E;
|
s8 unk4E;
|
||||||
} unkStruct5;
|
} unkStruct5; // sizeof 0x50
|
||||||
|
|
||||||
typedef struct _unkStruct6 {
|
typedef struct _unkStruct6 {
|
||||||
s16 unk0;
|
s16 unk0;
|
||||||
|
|
@ -91,9 +92,116 @@ typedef struct _unkStruct6 {
|
||||||
HsfVector2f* unk5C;
|
HsfVector2f* unk5C;
|
||||||
f32 unk60;
|
f32 unk60;
|
||||||
f32 unk64;
|
f32 unk64;
|
||||||
} unkStruct6;
|
} unkStruct6; // sizeof 0x68
|
||||||
|
|
||||||
|
typedef struct _unkStruct7 {
|
||||||
|
u8 unk0;
|
||||||
|
u8 unk1;
|
||||||
|
u8 unk2;
|
||||||
|
u8 unk3;
|
||||||
|
u8 unk4;
|
||||||
|
u8 unk5;
|
||||||
|
u8 unk6;
|
||||||
|
char unk7[0x3];
|
||||||
|
s16 unkA;
|
||||||
|
s16 unkC;
|
||||||
|
s16 unkE;
|
||||||
|
s16 unk10;
|
||||||
|
char unk12[0x1];
|
||||||
|
s8 unk13;
|
||||||
|
s8 unk14;
|
||||||
|
char unk15[0x3];
|
||||||
|
s32 unk18;
|
||||||
|
s16 unk1C;
|
||||||
|
char unk1E[0x6];
|
||||||
|
Vec unk24;
|
||||||
|
Vec unk30;
|
||||||
|
Vec unk3C;
|
||||||
|
Vec unk48;
|
||||||
|
u8 unk54;
|
||||||
|
u8 unk55;
|
||||||
|
u8 unk56;
|
||||||
|
u8 unk57;
|
||||||
|
u8 unk58;
|
||||||
|
u8 unk59;
|
||||||
|
u8 unk5A[3][2];
|
||||||
|
u8 unk60;
|
||||||
|
u8 unk61;
|
||||||
|
u8 unk62;
|
||||||
|
u8 unk63;
|
||||||
|
u8 unk64;
|
||||||
|
char unk65[0x3];
|
||||||
|
Vec unk68;
|
||||||
|
} unkStruct7; // sizeof 0x74
|
||||||
|
|
||||||
|
typedef struct _unkStruct8Sub {
|
||||||
|
Vec unk0;
|
||||||
|
char unkC[0xC];
|
||||||
|
f32 unk18;
|
||||||
|
f32 unk1C;
|
||||||
|
f32 unk20;
|
||||||
|
char unk24[0x10];
|
||||||
|
u32 unk34;
|
||||||
|
char unk38[0x20];
|
||||||
|
Vec unk58;
|
||||||
|
Vec unk64;
|
||||||
|
s16 unk70;
|
||||||
|
s16 unk72;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
s16 unk74;
|
||||||
|
s16 unk76;
|
||||||
|
};
|
||||||
|
f32 unk74f;
|
||||||
|
};
|
||||||
|
f32 unk78;
|
||||||
|
f32 unk7C;
|
||||||
|
char unk80[0x10];
|
||||||
|
} unkStruct8Sub; // sizeof 0x90
|
||||||
|
|
||||||
|
typedef struct _unkStruct8 {
|
||||||
|
char unk0[0x30];
|
||||||
|
m409PlayerFunc8 unk30;
|
||||||
|
char unk34[0x8];
|
||||||
|
unkStruct8Sub* unk3C;
|
||||||
|
char unk40[0x60];
|
||||||
|
} unkStruct8; // sizeof 0xA0
|
||||||
|
|
||||||
|
typedef struct _unkStruct9 {
|
||||||
|
char unk0[0x6];
|
||||||
|
s16 unk6;
|
||||||
|
s16 unk8;
|
||||||
|
s16 unkA;
|
||||||
|
char unkC[0x4];
|
||||||
|
unkStruct8* unk10;
|
||||||
|
} unkStruct9;
|
||||||
|
|
||||||
|
typedef struct _unkStruct10 {
|
||||||
|
u8 unk0;
|
||||||
|
u8 unk1;
|
||||||
|
u8 unk2;
|
||||||
|
u8 unk3;
|
||||||
|
char unk4[0x8];
|
||||||
|
Vec unkC;
|
||||||
|
Vec unk18;
|
||||||
|
Vec unk24;
|
||||||
|
Vec unk30;
|
||||||
|
Vec unk3C;
|
||||||
|
s8 unk48;
|
||||||
|
char unk49[0x7];
|
||||||
|
} unkStruct10; // sizeof 0x50
|
||||||
|
|
||||||
// bss
|
// bss
|
||||||
|
// player.c
|
||||||
|
extern omObjData* lbl_1_bss_3A0[4];
|
||||||
|
extern omObjData* lbl_1_bss_39C;
|
||||||
|
extern s32 lbl_1_bss_38C[4];
|
||||||
|
extern unkStruct10 lbl_1_bss_10C[8];
|
||||||
|
extern s16 lbl_1_bss_108;
|
||||||
|
extern s16 lbl_1_bss_106;
|
||||||
|
extern s16 lbl_1_bss_104;
|
||||||
|
extern unkStruct9 lbl_1_bss_F0;
|
||||||
|
// main.c
|
||||||
extern Process* lbl_1_bss_E8;
|
extern Process* lbl_1_bss_E8;
|
||||||
extern s16 lbl_1_bss_E4;
|
extern s16 lbl_1_bss_E4;
|
||||||
extern omObjData* lbl_1_bss_E0;
|
extern omObjData* lbl_1_bss_E0;
|
||||||
|
|
@ -118,6 +226,7 @@ extern s16 lbl_1_bss_2;
|
||||||
extern s8 lbl_1_bss_0;
|
extern s8 lbl_1_bss_0;
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
// main.c
|
||||||
extern Vec lbl_1_data_0;
|
extern Vec lbl_1_data_0;
|
||||||
extern Vec lbl_1_data_C;
|
extern Vec lbl_1_data_C;
|
||||||
extern unkStruct2 lbl_1_data_18;
|
extern unkStruct2 lbl_1_data_18;
|
||||||
|
|
@ -127,6 +236,9 @@ extern Vec lbl_1_data_40;
|
||||||
extern unkStruct lbl_1_data_4C[4];
|
extern unkStruct lbl_1_data_4C[4];
|
||||||
extern u32 lbl_1_data_BC;
|
extern u32 lbl_1_data_BC;
|
||||||
extern s32 lbl_1_data_C0;
|
extern s32 lbl_1_data_C0;
|
||||||
|
// player.c
|
||||||
|
extern u32 lbl_1_data_138; // unk
|
||||||
|
extern s32 lbl_1_data_13C[7];
|
||||||
|
|
||||||
// prototypes
|
// prototypes
|
||||||
extern void ModuleProlog(void);
|
extern void ModuleProlog(void);
|
||||||
|
|
@ -151,9 +263,9 @@ extern f32 fn_1_4120(f32, f32, f32, f32);
|
||||||
extern void fn_1_417C(void);
|
extern void fn_1_417C(void);
|
||||||
extern void fn_1_44F0(s16, f32, f32, f32, s8, s16);
|
extern void fn_1_44F0(s16, f32, f32, f32, s8, s16);
|
||||||
extern void fn_1_4FFC(s16, f32, f32, f32, s16);
|
extern void fn_1_4FFC(s16, f32, f32, f32, s16);
|
||||||
extern void fn_1_5408(ModelData*, struct _unkStruct6*, Mtx);
|
extern void fn_1_5408(ModelData*, unkStruct6*, Mtx);
|
||||||
extern void fn_1_55E0(ModelData*, struct _unkStruct6*, Mtx);
|
extern void fn_1_55E0(ModelData*, unkStruct6*, Mtx);
|
||||||
extern void fn_1_57DC(ModelData*, struct _unkStruct6*, Mtx);
|
extern void fn_1_57DC(ModelData*, unkStruct6*, Mtx);
|
||||||
extern unkStruct5* fn_1_58E0(s16, Vec*, Vec*, f32, GXColor*);
|
extern unkStruct5* fn_1_58E0(s16, Vec*, Vec*, f32, GXColor*);
|
||||||
extern s16 fn_1_5A18(AnimData*, s16, f32, s16, s16);
|
extern s16 fn_1_5A18(AnimData*, s16, f32, s16, s16);
|
||||||
extern void fn_1_5F5C(s16);
|
extern void fn_1_5F5C(s16);
|
||||||
|
|
@ -165,4 +277,41 @@ extern void fn_1_66D4(HsfVector2f*, HsfVector2f*, s16, f32, f32);
|
||||||
extern void fn_1_6778(Vec*, Vec*, Vec*, s16);
|
extern void fn_1_6778(Vec*, Vec*, Vec*, s16);
|
||||||
// player.c
|
// player.c
|
||||||
extern void fn_1_67E0(Process*);
|
extern void fn_1_67E0(Process*);
|
||||||
extern void fn_1_6900(void);
|
extern void fn_1_6900(void);
|
||||||
|
extern void fn_1_6928(omObjData*);
|
||||||
|
extern void fn_1_7344(omObjData*);
|
||||||
|
extern void fn_1_7FE8(omObjData*);
|
||||||
|
extern void fn_1_8838(unkStruct8*);
|
||||||
|
extern s8 fn_1_8D08(u8);
|
||||||
|
extern void fn_1_8D6C(unkStruct8*);
|
||||||
|
extern void fn_1_91C0(omObjData*);
|
||||||
|
extern void fn_1_962C(omObjData*);
|
||||||
|
// ...
|
||||||
|
extern s8 fn_1_A9C0(Vec*, f32*);
|
||||||
|
extern s32 fn_1_ABB4(void);
|
||||||
|
extern f32 fn_1_AD40(f32, f32, f32);
|
||||||
|
extern void fn_1_B378(Vec*);
|
||||||
|
extern f32 fn_1_B6A4(Vec*, unkStruct8Sub*, Vec*);
|
||||||
|
extern f32 fn_1_B9E0(Vec*, unkStruct8Sub*, Vec*, Vec*, Vec*);
|
||||||
|
extern f32 fn_1_BF38(s16);
|
||||||
|
extern void fn_1_BF88(s32, s32);
|
||||||
|
extern void fn_1_C0C0(void);
|
||||||
|
extern unkStruct8Sub* fn_1_CCCC(s16, s16);
|
||||||
|
extern s16 fn_1_DA48(s32, s32);
|
||||||
|
extern void fn_1_DEF4(s16, s32, s32);
|
||||||
|
extern void fn_1_DF20(s32, s32, s32);
|
||||||
|
extern void fn_1_E2A8(s16, s32, s32, s32, s32);
|
||||||
|
extern void fn_1_E7C8(s16, s32, s32);
|
||||||
|
extern void fn_1_E99C(s16, s16, f32, f32, f32);
|
||||||
|
extern void fn_1_E85C(s16, s32, f32, f32, f32);
|
||||||
|
extern void fn_1_EC1C(s16, s16, f32, f32, f32);
|
||||||
|
extern void fn_1_ED00(u8, s32);
|
||||||
|
extern void fn_1_ED44(s16, s16, s32);
|
||||||
|
extern void fn_1_EE24(u8, s32);
|
||||||
|
extern void fn_1_EE68(s16, s16, s32);
|
||||||
|
extern void fn_1_F024(s16, s32, u8, u8, u8, s32);
|
||||||
|
extern void fn_1_F098(s16, u8, u8, u8, u8);
|
||||||
|
extern void fn_1_F17C(s16, s16, u8, s32);
|
||||||
|
extern void fn_1_F2F8(s16, s16, u8, f32);
|
||||||
|
extern void fn_1_F408(s16, s32, s32);
|
||||||
|
extern void fn_1_F478(s16, s16, u8, s32);
|
||||||
5
include/msm/msmmem.h
Normal file
5
include/msm/msmmem.h
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
|
void msmMemFree(void*);
|
||||||
|
void* msmMemAlloc(s32);
|
||||||
|
void msmMemInit(void*, u32);
|
||||||
|
|
@ -1149,33 +1149,33 @@ s16 fn_1_5A18(AnimData* arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) {
|
||||||
|
|
||||||
var_r21 = Hu3DHookFuncCreate(fn_1_602C);
|
var_r21 = Hu3DHookFuncCreate(fn_1_602C);
|
||||||
temp_r28 = &Hu3DData[var_r21];
|
temp_r28 = &Hu3DData[var_r21];
|
||||||
var_r31 = HuMemDirectMallocNum(HEAP_DATA, 0x68, temp_r28->unk_48);
|
var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(unkStruct6), temp_r28->unk_48);
|
||||||
temp_r28->unk_120 = var_r31;
|
temp_r28->unk_120 = var_r31;
|
||||||
arg0->useNum++;
|
arg0->useNum++;
|
||||||
var_r31->unk10 = arg0;
|
var_r31->unk10 = arg0;
|
||||||
var_r31->unk0 = arg1;
|
var_r31->unk0 = arg1;
|
||||||
var_r31->unk8 = 0;
|
var_r31->unk8 = 0;
|
||||||
var_r31->unkC = NULL;
|
var_r31->unkC = NULL;
|
||||||
var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0x50, temp_r28->unk_48);
|
var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(unkStruct5), temp_r28->unk_48);
|
||||||
var_r31->unk18 = var_r24;
|
var_r31->unk18 = var_r24;
|
||||||
|
|
||||||
for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r24++) {
|
for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r24++) {
|
||||||
var_r24->unk4C = -1;
|
var_r24->unk4C = -1;
|
||||||
var_r24->unk4E = 0;
|
var_r24->unk4E = 0;
|
||||||
}
|
}
|
||||||
var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0xC * 4, temp_r28->unk_48);
|
var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, temp_r28->unk_48);
|
||||||
var_r31->unk1C = var_r25;
|
var_r31->unk1C = var_r25;
|
||||||
|
|
||||||
for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) {
|
for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) {
|
||||||
var_r25->x = var_r25->y = var_r25->z = 0.0f;
|
var_r25->x = var_r25->y = var_r25->z = 0.0f;
|
||||||
}
|
}
|
||||||
var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 4, temp_r28->unk_48);
|
var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(GXColor), temp_r28->unk_48);
|
||||||
var_r31->unk24 = var_r27;
|
var_r31->unk24 = var_r27;
|
||||||
|
|
||||||
for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) {
|
for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) {
|
||||||
var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF;
|
var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF;
|
||||||
}
|
}
|
||||||
var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 8 * 4, temp_r28->unk_48);
|
var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(HsfVector2f) * 4, temp_r28->unk_48);
|
||||||
var_r31->unk20 = var_r29;
|
var_r31->unk20 = var_r29;
|
||||||
|
|
||||||
for (var_r30 = 0; var_r30 < arg1; var_r30++) {
|
for (var_r30 = 0; var_r30 < arg1; var_r30++) {
|
||||||
|
|
@ -1204,7 +1204,7 @@ s16 fn_1_5A18(AnimData* arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) {
|
||||||
var_r31->unk60 = 1.0f;
|
var_r31->unk60 = 1.0f;
|
||||||
var_r31->unk64 = 1.0f;
|
var_r31->unk64 = 1.0f;
|
||||||
}
|
}
|
||||||
var_r31->unk5C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * 8, temp_r28->unk_48);
|
var_r31->unk5C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(HsfVector2f), temp_r28->unk_48);
|
||||||
fn_1_6608(var_r31->unk5C, var_r31->unk14, var_r22, var_r31->unk60, var_r31->unk64);
|
fn_1_6608(var_r31->unk5C, var_r31->unk14, var_r22, var_r31->unk60, var_r31->unk64);
|
||||||
var_r31->unk2C.x = var_r31->unk50.x = var_r31->unk44.y = var_r31->unk50.y = -arg8;
|
var_r31->unk2C.x = var_r31->unk50.x = var_r31->unk44.y = var_r31->unk50.y = -arg8;
|
||||||
var_r31->unk38.x = var_r31->unk44.x = var_r31->unk2C.y = var_r31->unk38.y = arg8;
|
var_r31->unk38.x = var_r31->unk44.x = var_r31->unk2C.y = var_r31->unk38.y = arg8;
|
||||||
|
|
|
||||||
738
src/REL/m409Dll/player.c
Normal file
738
src/REL/m409Dll/player.c
Normal file
|
|
@ -0,0 +1,738 @@
|
||||||
|
#include "REL/m409Dll.h"
|
||||||
|
|
||||||
|
#include "math.h"
|
||||||
|
#include "ext_math.h"
|
||||||
|
#include "game/audio.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/pad.h"
|
||||||
|
#include "game/hsfmotion.h"
|
||||||
|
|
||||||
|
// bss
|
||||||
|
omObjData* lbl_1_bss_3A0[4];
|
||||||
|
omObjData* lbl_1_bss_39C;
|
||||||
|
s32 lbl_1_bss_38C[4];
|
||||||
|
unkStruct10 lbl_1_bss_10C[8];
|
||||||
|
s16 lbl_1_bss_108;
|
||||||
|
s16 lbl_1_bss_106;
|
||||||
|
s16 lbl_1_bss_104;
|
||||||
|
unkStruct9 lbl_1_bss_F0;
|
||||||
|
|
||||||
|
// data
|
||||||
|
u32 lbl_1_data_138 = 0xFFFF0000;
|
||||||
|
s32 lbl_1_data_13C[7] = { 0x30, 0x2D, 0x3A, 0x2E, 0x280032, 0x17, 0x18 };
|
||||||
|
GXColor lbl_1_data_158[8] = {
|
||||||
|
{ 0xFF, 0x00, 0x00, 0xFF },
|
||||||
|
{ 0x00, 0x00, 0xFF, 0xFF },
|
||||||
|
{ 0xFF, 0x80, 0x80, 0xFF },
|
||||||
|
{ 0x00, 0xFF, 0x00, 0xFF },
|
||||||
|
{ 0x80, 0x00, 0xC0, 0xFF },
|
||||||
|
{ 0x90, 0x30, 0x00, 0xFF },
|
||||||
|
{ 0xFF, 0xFF, 0x00, 0xFF },
|
||||||
|
{ 0x00, 0x00, 0x00, 0xFF }
|
||||||
|
};
|
||||||
|
HsfVector2f lbl_1_data_178[4] = {
|
||||||
|
{ 72.0f, 80.0f }, { 504.0f, 80.0f },
|
||||||
|
{ 72.0f, 400.0f }, { 504.0f, 400.0f },
|
||||||
|
};
|
||||||
|
GXColor lbl_1_data_198[8] = {
|
||||||
|
{ 0xD0, 0x00, 0x00, 0xFF },
|
||||||
|
{ 0x00, 0x00, 0xFF, 0xFF },
|
||||||
|
{ 0x00, 0xA0, 0x00, 0xFF },
|
||||||
|
{ 0xFF, 0xFF, 0x00, 0xFF },
|
||||||
|
{ 0xA0, 0x00, 0xFF, 0xFF },
|
||||||
|
{ 0xFF, 0x80, 0x40, 0xFF },
|
||||||
|
{ 0xFF, 0xA0, 0xF0, 0xFF },
|
||||||
|
{ 0x00, 0xFF, 0x40, 0xFF }
|
||||||
|
};
|
||||||
|
|
||||||
|
void fn_1_67E0(Process* arg0) {
|
||||||
|
s32 var_r31;
|
||||||
|
s32 temp_r28;
|
||||||
|
omObjData* var_r30;
|
||||||
|
|
||||||
|
omMakeGroupEx(arg0, 0U, 4U);
|
||||||
|
omGetGroupMemberListEx(arg0, 0);
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||||
|
lbl_1_bss_3A0[var_r31] = var_r30 = omAddObjEx(arg0, 0x30, 3U, 7U, 0, fn_1_6928);
|
||||||
|
var_r30->work[0] = var_r31;
|
||||||
|
}
|
||||||
|
lbl_1_bss_39C = var_r30 = omAddObjEx(arg0, 0x40, 8U, 0xAU, 4, fn_1_91C0);
|
||||||
|
fn_1_BF88(0x40, 0x40);
|
||||||
|
fn_1_DF20(0x28002C, 0x40, 0x40);
|
||||||
|
temp_r28 = (u8)frand();
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < (temp_r28 + 1); var_r31++) {
|
||||||
|
fn_1_ABB4();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_6900(void) {
|
||||||
|
CharModelKill(-1);
|
||||||
|
fn_1_C0C0();
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_6928(omObjData* arg0) {
|
||||||
|
Vec sp8[4] = {
|
||||||
|
{ -185.0f, 35.0f, 100.0f },
|
||||||
|
{ -62.5f, 35.0f, 100.0f },
|
||||||
|
{ 62.5f, 35.0f, 100.0f },
|
||||||
|
{ 185.0f, 35.0f, 100.0f }
|
||||||
|
};
|
||||||
|
s8 sp38[8][32] = {
|
||||||
|
"test11_tex_we-itemhook-r",
|
||||||
|
"test11_tex_we-itemhook-r",
|
||||||
|
"test11_tex_we-itemhook-r",
|
||||||
|
"test11_tex_we-itemhook-r",
|
||||||
|
"test11_tex_we-itemhook-r",
|
||||||
|
"test11_tex_we-itemhook-r",
|
||||||
|
"test11_tex_we-itemhook-r",
|
||||||
|
"test11_tex_we-itemhook-r"
|
||||||
|
};
|
||||||
|
unkStruct7* var_r31;
|
||||||
|
s32 var_r30;
|
||||||
|
s32 var_r28;
|
||||||
|
|
||||||
|
var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct7), 0x10000000);
|
||||||
|
arg0->data = var_r31;
|
||||||
|
var_r31->unk0 = arg0->work[0];
|
||||||
|
var_r31->unk1 = GWPlayerCfg[var_r31->unk0].character;
|
||||||
|
var_r31->unk2 = (var_r31->unk0 >> 1);
|
||||||
|
var_r31->unk3 = (var_r31->unk0 & 1);
|
||||||
|
var_r31->unk4 = GWPlayerCfg[var_r31->unk0].pad_idx;
|
||||||
|
var_r31->unk5 = GWPlayerCfg[var_r31->unk0].iscom;
|
||||||
|
var_r31->unk6 = GWPlayerCfg[var_r31->unk0].diff;
|
||||||
|
var_r31->unk1C = 0;
|
||||||
|
var_r31->unk13 = 1;
|
||||||
|
var_r31->unk14 = 0;
|
||||||
|
var_r31->unk61 = fn_1_ABB4() & 0x1;
|
||||||
|
var_r31->unk64 = var_r31->unk63 = 0;
|
||||||
|
var_r31->unk18 = -1;
|
||||||
|
var_r31->unk24.x = sp8[var_r31->unk0].x;
|
||||||
|
var_r31->unk24.y = sp8[var_r31->unk0].y;
|
||||||
|
var_r31->unk24.z = sp8[var_r31->unk0].z;
|
||||||
|
var_r31->unk30.x = var_r31->unk30.y = var_r31->unk30.z = 0.0f;
|
||||||
|
var_r31->unk3C.y = 180.0f;
|
||||||
|
var_r31->unk3C.x = var_r31->unk3C.z = 0.0f;
|
||||||
|
var_r30 = CharModelCreate(var_r31->unk1, 4);
|
||||||
|
arg0->model[0] = var_r30;
|
||||||
|
Hu3DModelAttrSet(var_r30, 0x40000001);
|
||||||
|
|
||||||
|
for (var_r28 = 0; var_r28 < 7; var_r28++) {
|
||||||
|
if ((lbl_1_data_13C[var_r28] & 0xFFFF0000) != 0) {
|
||||||
|
arg0->motion[var_r28] = CharModelMotionCreate(var_r31->unk1, var_r31->unk1 + lbl_1_data_13C[var_r28]);
|
||||||
|
} else {
|
||||||
|
arg0->motion[var_r28] = CharModelMotionCreate(var_r31->unk1, lbl_1_data_13C[var_r28]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CharModelMotionDataClose(var_r31->unk1);
|
||||||
|
CharModelMotionSet(var_r31->unk1, arg0->motion[var_r31->unk1C]);
|
||||||
|
omSetTra(arg0, var_r31->unk24.x, var_r31->unk24.y, var_r31->unk24.z);
|
||||||
|
Hu3DModelPosSet(var_r30, var_r31->unk24.x, var_r31->unk24.y, var_r31->unk24.z);
|
||||||
|
Hu3DModelRotSet(var_r30, 0.0f, 30.0f, 0.0f);
|
||||||
|
CharModelStepTypeSet(var_r31->unk1, 0);
|
||||||
|
arg0->model[1] = var_r30 = Hu3DModelCreate(HuDataSelHeapReadNum(0x280012, 0x10000000, HEAP_DATA));
|
||||||
|
Hu3DModelHookSet(arg0->model[0], (char*)sp38[var_r31->unk1], arg0->model[1]);
|
||||||
|
var_r30 = fn_1_DA48(2, 1);
|
||||||
|
var_r31->unk57 = var_r30;
|
||||||
|
lbl_1_bss_F0.unk10[var_r30].unk30 = fn_1_8838;
|
||||||
|
fn_1_E2A8(var_r30, 0, 0x28002B, 0x40, 0x40);
|
||||||
|
fn_1_F098(var_r30, lbl_1_data_158[var_r31->unk1].r, lbl_1_data_158[var_r31->unk1].g, lbl_1_data_158[var_r31->unk1].b, lbl_1_data_158[var_r31->unk1].a);
|
||||||
|
fn_1_F024(var_r30, 1, lbl_1_data_158[var_r31->unk1].r, lbl_1_data_158[var_r31->unk1].g, lbl_1_data_158[var_r31->unk1].b, 0x98);
|
||||||
|
fn_1_E85C(var_r30, 0, var_r31->unk24.x, 100.0f + var_r31->unk24.y, -1200.0f);
|
||||||
|
fn_1_ED44(var_r30, 0, 0x10);
|
||||||
|
fn_1_EC1C(var_r30, 0, 2.0f, 2.0f, 1.0f);
|
||||||
|
fn_1_EC1C(var_r30, 1, 2.5f, 2.5f, 1.0f);
|
||||||
|
fn_1_ED44(var_r30, 1, 0x14);
|
||||||
|
fn_1_F408(var_r30, 1, 1);
|
||||||
|
var_r30 = fn_1_DA48(1, 1);
|
||||||
|
fn_1_DEF4(var_r30, 0, 0);
|
||||||
|
fn_1_E7C8(lbl_1_bss_F0.unk6, 0, 0x28002D);
|
||||||
|
var_r31->unk58 = var_r30;
|
||||||
|
lbl_1_bss_F0.unk10[var_r30].unk30 = &fn_1_8D6C;
|
||||||
|
fn_1_ED44(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 4);
|
||||||
|
lbl_1_bss_F0.unk10[lbl_1_bss_F0.unk6].unk3C[lbl_1_bss_F0.unk8].unk70 = var_r31->unk0;
|
||||||
|
lbl_1_bss_F0.unk10[lbl_1_bss_F0.unk6].unk3C[lbl_1_bss_F0.unk8].unk72 = -1;
|
||||||
|
fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0.5f, 0.5f, 1.0f);
|
||||||
|
var_r31->unk59 = 0;
|
||||||
|
var_r31->unk60 = 0;
|
||||||
|
var_r30 = espEntry(0x280031, 1, 0);
|
||||||
|
var_r31->unk55 = var_r30;
|
||||||
|
espColorSet(var_r30, 0, 0, 0);
|
||||||
|
espTPLvlSet(var_r30, 0.5);
|
||||||
|
espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x, lbl_1_data_178[var_r31->unk0].y);
|
||||||
|
espAttrSet(var_r30, 4);
|
||||||
|
var_r30 = espEntry(0x280030, 1, 0);
|
||||||
|
var_r31->unk54 = var_r30;
|
||||||
|
espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x, lbl_1_data_178[var_r31->unk0].y);
|
||||||
|
espAttrSet(var_r30, 4);
|
||||||
|
var_r30 = espEntry(var_r31->unk1 + 0x610000, 1, 0);
|
||||||
|
var_r31->unk56 = var_r30;
|
||||||
|
espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x - 27.0f, lbl_1_data_178[var_r31->unk0].y - 20.0f);
|
||||||
|
espAttrSet(var_r30, 4);
|
||||||
|
|
||||||
|
for (var_r28 = 0; var_r28 < 3; var_r28++) {
|
||||||
|
var_r30 = espEntry(0x61000A, 0, 0);
|
||||||
|
var_r31->unk5A[var_r28][0] = var_r30;
|
||||||
|
espAttrSet(var_r30, 4);
|
||||||
|
espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x - 32.0f + (var_r28 * 0x1E), 16.0f + lbl_1_data_178[var_r31->unk0].y);
|
||||||
|
var_r30 = espEntry(0x61000B, 0, 0);
|
||||||
|
var_r31->unk5A[var_r28][1] = var_r30;
|
||||||
|
espAttrSet(var_r30, 4);
|
||||||
|
espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x - 32.0f + (var_r28 * 0x1E), 16.0f + lbl_1_data_178[var_r31->unk0].y);
|
||||||
|
}
|
||||||
|
arg0->func = fn_1_7344;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_7344(omObjData* arg0) {
|
||||||
|
s16 sp8;
|
||||||
|
f32 temp_f28;
|
||||||
|
f32 temp_f29;
|
||||||
|
f32 temp_f30;
|
||||||
|
f32 var_f25;
|
||||||
|
f32 var_f26;
|
||||||
|
f32 var_f27;
|
||||||
|
f32 var_f31;
|
||||||
|
s16 temp_r0;
|
||||||
|
s32 temp_r19;
|
||||||
|
s16 temp_r22;
|
||||||
|
s16 temp_r26;
|
||||||
|
s16 temp_r25;
|
||||||
|
s16 var_r20;
|
||||||
|
s16 var_r21;
|
||||||
|
s16 var_r27;
|
||||||
|
s16 var_r28;
|
||||||
|
s32 var_r24;
|
||||||
|
s32 temp_r23;
|
||||||
|
unkStruct8Sub* temp_r30;
|
||||||
|
unkStruct7* temp_r31;
|
||||||
|
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
temp_r31 = (unkStruct7*)arg0->data;
|
||||||
|
temp_r19 = arg0->model[0];
|
||||||
|
temp_r31->unk48 = temp_r31->unk24;
|
||||||
|
var_r28 = temp_r31->unk1C;
|
||||||
|
if (temp_r31->unk5 != 0) {
|
||||||
|
fn_1_7FE8(arg0);
|
||||||
|
} else {
|
||||||
|
temp_r31->unkA = HuPadStkX[temp_r31->unk4];
|
||||||
|
temp_r31->unkC = HuPadStkY[temp_r31->unk4];
|
||||||
|
temp_r31->unkE = HuPadBtnDown[temp_r31->unk4];
|
||||||
|
temp_r31->unk10 = HuPadBtn[temp_r31->unk4];
|
||||||
|
}
|
||||||
|
temp_r26 = temp_r31->unkA;
|
||||||
|
temp_r25 = temp_r31->unkC;
|
||||||
|
temp_r22 = temp_r31->unkE;
|
||||||
|
sp8 = temp_r31->unk10;
|
||||||
|
fn_1_DEF4(temp_r31->unk57, 0, 0);
|
||||||
|
fn_1_F478(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, lbl_1_bss_F0.unkA, 2);
|
||||||
|
temp_r30 = fn_1_CCCC(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8);
|
||||||
|
if (fn_1_2454(7) != 3) {
|
||||||
|
fn_1_ED00(temp_r31->unk57, 4);
|
||||||
|
} else {
|
||||||
|
espAttrReset(temp_r31->unk54, 4);
|
||||||
|
espAttrReset(temp_r31->unk55, 4);
|
||||||
|
|
||||||
|
for (var_r24 = 0; var_r24 < 3; var_r24++) {
|
||||||
|
espAttrReset(temp_r31->unk5A[var_r24][0], 4);
|
||||||
|
}
|
||||||
|
espAttrReset(temp_r31->unk56, 4);
|
||||||
|
fn_1_EE24(temp_r31->unk57, 4);
|
||||||
|
temp_f28 = (ABS(temp_r26) + ABS(temp_r25));
|
||||||
|
temp_f30 = 0.008f * (temp_f28 * temp_r26);
|
||||||
|
temp_f29 = 0.008f * (temp_f28 * temp_r25);
|
||||||
|
fn_1_E99C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, temp_f30, temp_f29, 0.0f);
|
||||||
|
}
|
||||||
|
switch (lbl_1_bss_108) {
|
||||||
|
case 4:
|
||||||
|
if (temp_r31->unk1C == 2) {
|
||||||
|
fn_1_F478(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, lbl_1_bss_F0.unkA, 0);
|
||||||
|
if ((temp_r22 & 0x100) != 0) {
|
||||||
|
temp_r23 = fn_1_8D08(temp_r31->unk0);
|
||||||
|
fn_1_DEF4(temp_r31->unk58, 0, 0);
|
||||||
|
fn_1_EE68(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 4);
|
||||||
|
lbl_1_bss_F0.unk10[lbl_1_bss_F0.unk6].unk3C[lbl_1_bss_F0.unk8].unk72 = temp_r23;
|
||||||
|
lbl_1_bss_F0.unk10[lbl_1_bss_F0.unk6].unk3C[lbl_1_bss_F0.unk8].unk74 = 0;
|
||||||
|
lbl_1_bss_F0.unk10[lbl_1_bss_F0.unk6].unk3C[lbl_1_bss_F0.unk8].unk76 = 0;
|
||||||
|
fn_1_E85C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, temp_r31->unk24.x, 100.0f + temp_r31->unk24.y, temp_r31->unk24.z);
|
||||||
|
if (temp_r23 == -1) {
|
||||||
|
lbl_1_bss_F0.unk10[temp_r31->unk58].unk3C[0].unk58.x = temp_r30->unk0.x;
|
||||||
|
lbl_1_bss_F0.unk10[temp_r31->unk58].unk3C[0].unk58.y = temp_r30->unk0.y;
|
||||||
|
lbl_1_bss_F0.unk10[temp_r31->unk58].unk3C[0].unk58.z = temp_r30->unk0.z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
case 5:
|
||||||
|
if (temp_r31->unk59 >= 3) {
|
||||||
|
lbl_1_bss_104 = temp_r31->unk0 + 1;
|
||||||
|
}
|
||||||
|
if (temp_r31->unk60 == 0) {
|
||||||
|
temp_f29 = (180.0 * (atan2((temp_r30->unk0.x - temp_r31->unk24.x), (temp_r30->unk0.z - temp_r31->unk24.z)) / M_PI));
|
||||||
|
temp_f30 = (180.0 * (atan2((temp_r31->unk24.y - temp_r30->unk0.y), (temp_r31->unk24.z - temp_r30->unk0.z)) / M_PI));
|
||||||
|
temp_f30 *= (1.0f - (0.015f * ABS(temp_f30)));
|
||||||
|
temp_r31->unk3C.x = fn_1_AD40(temp_r31->unk3C.x, temp_f30, 0.5f);
|
||||||
|
temp_r31->unk3C.y = fn_1_AD40(temp_r31->unk3C.y, temp_f29, 0.5f);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
fn_1_ED44(temp_r31->unk57, 0, 4);
|
||||||
|
Hu3DModelHookReset(temp_r19);
|
||||||
|
Hu3DModelAttrSet(arg0->model[1], 1);
|
||||||
|
temp_r23 = fn_1_DA48(1, 1);
|
||||||
|
fn_1_DEF4(temp_r23, 0, 0);
|
||||||
|
fn_1_E7C8(lbl_1_bss_F0.unk6, 0, 0x28002C);
|
||||||
|
fn_1_E85C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 20.0f + temp_r31->unk24.x, 100.0f + temp_r31->unk24.y, temp_r31->unk24.z - 25.0f);
|
||||||
|
fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 2.0f, 2.0f, 1.0f);
|
||||||
|
fn_1_ED44(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0x80000000);
|
||||||
|
fn_1_F024(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0xFF, 0xFF, 0xFF, 0xFF);
|
||||||
|
fn_1_F17C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, lbl_1_bss_F0.unkA, 0x11);
|
||||||
|
fn_1_F2F8(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, lbl_1_bss_F0.unkA, 0.5f);
|
||||||
|
case 7:
|
||||||
|
temp_r31->unk3C.y = fn_1_AD40(temp_r31->unk3C.y, 0.0f, 0.8f);
|
||||||
|
temp_r31->unk3C.x = 0.0f;
|
||||||
|
if (fn_1_2454(0x80) == 0x80) {
|
||||||
|
if (temp_r31->unk59 >= 3) {
|
||||||
|
var_r28 = 5;
|
||||||
|
} else {
|
||||||
|
var_r28 = 6;
|
||||||
|
}
|
||||||
|
var_r27 = 0;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (temp_r31->unk1C) {
|
||||||
|
case 0:
|
||||||
|
if ((lbl_1_bss_108 != 0) && (lbl_1_bss_108 < 6)) {
|
||||||
|
var_r28 = 1;
|
||||||
|
var_r27 = 0;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
temp_r31->unk62 = (s8)(8.0f * (fn_1_ABB4() / 65536.0f));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (lbl_1_bss_108 == 0) {
|
||||||
|
var_r28 = 1;
|
||||||
|
var_r27 = 4;
|
||||||
|
var_f31 = fn_1_BF38(arg0->motion[1]);
|
||||||
|
lbl_1_bss_38C[arg0->work[0]] = 1;
|
||||||
|
}
|
||||||
|
if ((lbl_1_bss_108 == 4) && ((temp_r22 & 0x100) != 0)) {
|
||||||
|
HuAudFXPlay(0x556);
|
||||||
|
var_r28 = 3;
|
||||||
|
var_r27 = 0;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (CharModelMotionEndCheck(temp_r31->unk1) != 0) {
|
||||||
|
if (CharModelMotionTimeGet(temp_r31->unk1) <= 0.0f) {
|
||||||
|
var_r28 = 0;
|
||||||
|
} else {
|
||||||
|
var_r28 = 2;
|
||||||
|
}
|
||||||
|
var_r27 = 1;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (temp_r31->unk60 != 0) {
|
||||||
|
temp_r31->unk3C.x = fn_1_AD40(temp_r31->unk3C.x, 0.0f, 0.8f);
|
||||||
|
temp_r31->unk3C.y = fn_1_AD40(temp_r31->unk3C.y, 0.0f, 0.8f);
|
||||||
|
if (ABS(temp_r31->unk3C.y) < 10.0f) {
|
||||||
|
temp_r31->unk3C.y = 0.0f;
|
||||||
|
var_r28 = 4;
|
||||||
|
var_r27 = 0;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
}
|
||||||
|
} else if (CharModelMotionEndCheck(temp_r31->unk1) != 0) {
|
||||||
|
var_r28 = 2;
|
||||||
|
var_r27 = 1;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if (temp_r31->unk18 < 0) {
|
||||||
|
temp_r31->unk18 = HuAudCharVoicePlay(temp_r31->unk1, 0x125);
|
||||||
|
}
|
||||||
|
if (CharModelMotionEndCheck(temp_r31->unk1) != 0) {
|
||||||
|
temp_r31->unk3C.y = fn_1_AD40(temp_r31->unk3C.y, 180.0f, 0.8f);
|
||||||
|
if (ABS(temp_r31->unk3C.y) > 170.0f) {
|
||||||
|
var_r28 = 2;
|
||||||
|
var_r27 = 1;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
temp_r31->unk60 = 0;
|
||||||
|
temp_r31->unk18 = -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
temp_r31->unk3C.y = 0.0f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
case 6:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (var_r28 != temp_r31->unk1C) {
|
||||||
|
temp_r31->unk1C = var_r28;
|
||||||
|
CharModelMotionShiftSet(temp_r31->unk1, arg0->motion[temp_r31->unk1C], var_f31, 8.0f, (u32) var_r27);
|
||||||
|
}
|
||||||
|
omSetTra(arg0, temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z);
|
||||||
|
omSetRot(arg0, temp_r31->unk3C.x, temp_r31->unk3C.y, temp_r31->unk3C.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_7FE8(omObjData* arg0) {
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
s32 sp10;
|
||||||
|
f32 spC;
|
||||||
|
s16 sp8;
|
||||||
|
unkStruct10* var_r30;
|
||||||
|
unkStruct8Sub* temp_r29;
|
||||||
|
f32 temp_f0;
|
||||||
|
f32 temp_f0_2;
|
||||||
|
f32 temp_f1;
|
||||||
|
f32 temp_f29;
|
||||||
|
f32 temp_f30;
|
||||||
|
f32 var_f28;
|
||||||
|
s32 var_r28;
|
||||||
|
unkStruct7* temp_r31;
|
||||||
|
|
||||||
|
temp_r31 = (unkStruct7*)arg0->data;
|
||||||
|
sp10 = arg0->model[0];
|
||||||
|
sp8 = temp_r31->unk1C;
|
||||||
|
temp_r31->unkE = temp_r31->unk10 = 0;
|
||||||
|
temp_r29 = fn_1_CCCC(temp_r31->unk57, 0);
|
||||||
|
sp20.x = sp20.y = sp20.z = 0.0f;
|
||||||
|
switch (lbl_1_bss_108) { /* irregular */
|
||||||
|
case 2:
|
||||||
|
if (temp_r31->unk61 == 0) {
|
||||||
|
var_r30 = &lbl_1_bss_10C[0];
|
||||||
|
|
||||||
|
for (var_r28 = 0; var_r28 < 8; var_r28++, var_r30++) {
|
||||||
|
if (var_r30->unk2 == 0) break;
|
||||||
|
sp20.x += var_r30->unkC.x;
|
||||||
|
sp20.y += var_r30->unkC.y;
|
||||||
|
sp20.z += var_r30->unkC.z;
|
||||||
|
}
|
||||||
|
sp20.x /= var_r28;
|
||||||
|
sp20.y /= var_r28;
|
||||||
|
sp20.z /= var_r28;
|
||||||
|
} else {
|
||||||
|
var_r30 = &lbl_1_bss_10C[temp_r31->unk62];
|
||||||
|
if (var_r30->unk2 != 0) {
|
||||||
|
sp20.x = var_r30->unkC.x;
|
||||||
|
sp20.y = var_r30->unkC.y;
|
||||||
|
sp20.z = var_r30->unkC.z;
|
||||||
|
} else {
|
||||||
|
sp20.x = 0.0f;
|
||||||
|
sp20.y = 800.0f;
|
||||||
|
sp20.z = -1200.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
temp_r31->unk62 = 0xFFU;
|
||||||
|
temp_r31->unk64 = (0x28 - (temp_r31->unk6 * 10));
|
||||||
|
case 4:
|
||||||
|
sp20.x = temp_r29->unk0.x;
|
||||||
|
sp20.y = temp_r29->unk0.y;
|
||||||
|
sp20.z = temp_r29->unk0.z;
|
||||||
|
if (temp_r31->unk64 != 0) {
|
||||||
|
temp_r31->unk64--;
|
||||||
|
}
|
||||||
|
if ((temp_r31->unk64 == 0)) {
|
||||||
|
if (((s32)((0x30 - (temp_r31->unk6 * 8)) * (fn_1_ABB4() / 65536.0f)) == 0)) {
|
||||||
|
temp_r31->unk62 = lbl_1_bss_106;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (temp_r31->unk62 != 0xFF) {
|
||||||
|
var_r30 = &lbl_1_bss_10C[temp_r31->unk62];
|
||||||
|
sp20.x = var_r30->unkC.x;
|
||||||
|
sp20.y = var_r30->unkC.y;
|
||||||
|
sp20.z = var_r30->unkC.z;
|
||||||
|
temp_f29 = 100.0f * (0.5f * (4 - temp_r31->unk6));
|
||||||
|
temp_f29 = 20.0f + (temp_f29 * (fn_1_ABB4() / 65536.0f));
|
||||||
|
temp_f30 = ((var_r30->unkC.z - temp_r29->unk0.z) * (var_r30->unkC.z - temp_r29->unk0.z)) + (((var_r30->unkC.x - temp_r29->unk0.x) * (var_r30->unkC.x - temp_r29->unk0.x)) + ((var_r30->unkC.y - temp_r29->unk0.y) * (var_r30->unkC.y - temp_r29->unk0.y)));
|
||||||
|
if ((sqrtf(temp_f30) < temp_f29) && ((s32)((0x20 - (temp_r31->unk6 * 8)) * (fn_1_ABB4() / 65536.0f)) == 0)) {
|
||||||
|
temp_r31->unkE = (temp_r31->unkE | 0x100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sp20.x = 0.0f;
|
||||||
|
sp20.y = 800.0f;
|
||||||
|
sp20.z = -1200.0f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (temp_r31->unk63 == 0) {
|
||||||
|
temp_f29 = 100.0f * (0.5f * (4 - temp_r31->unk6));
|
||||||
|
sp20.x += (temp_f29 * ((fn_1_ABB4() - 0x8000) / 32768.0f));
|
||||||
|
sp20.y += (temp_f29 * ((fn_1_ABB4() - 0x8000) / 32768.0f));
|
||||||
|
temp_r31->unk68.x = sp20.x;
|
||||||
|
temp_r31->unk68.y = sp20.y;
|
||||||
|
temp_r31->unk68.z = sp20.z;
|
||||||
|
sp14.x = temp_r31->unk68.x - temp_r29->unk0.x;
|
||||||
|
sp14.y = temp_r31->unk68.y - temp_r29->unk0.y;
|
||||||
|
sp14.z = temp_r31->unk68.z - temp_r29->unk0.z;
|
||||||
|
fn_1_B378(&sp14);
|
||||||
|
temp_r31->unkA = (sp14.x * ((temp_r31->unk6 * 6) + 0x18));
|
||||||
|
temp_r31->unkC = (sp14.y * ((temp_r31->unk6 * 6) + 0x18));
|
||||||
|
temp_r31->unk63 = ((s32)(((4 - temp_r31->unk6) * 8) * (fn_1_ABB4() / 65536.0f)) + 8);
|
||||||
|
}
|
||||||
|
temp_r31->unk63--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_8838(unkStruct8* arg0) {
|
||||||
|
Vec sp18;
|
||||||
|
Vec spC;
|
||||||
|
f32 sp8;
|
||||||
|
f32 temp_f30;
|
||||||
|
f32 temp_f31;
|
||||||
|
unkStruct8Sub* temp_r30;
|
||||||
|
Vec* var_r26;
|
||||||
|
s32 var_r28;
|
||||||
|
unkStruct10* temp_r29;
|
||||||
|
unkStruct8Sub* temp_r31;
|
||||||
|
|
||||||
|
temp_r30 = &arg0->unk3C[0];
|
||||||
|
if (temp_r30->unk0.x < -600.0f) {
|
||||||
|
temp_r30->unk0.x = -600.0f;
|
||||||
|
}
|
||||||
|
if (temp_r30->unk0.x > 600.0f) {
|
||||||
|
temp_r30->unk0.x = 600.0f;
|
||||||
|
}
|
||||||
|
if (temp_r30->unk0.y < 350.0f) {
|
||||||
|
temp_r30->unk0.y = 350.0f;
|
||||||
|
}
|
||||||
|
if (temp_r30->unk0.y > 1200.0f) {
|
||||||
|
temp_r30->unk0.y = 1200.0f;
|
||||||
|
}
|
||||||
|
sp8 = 75.0f;
|
||||||
|
spC = temp_r30->unk0;
|
||||||
|
var_r26 = &spC;
|
||||||
|
var_r28 = fn_1_A9C0(var_r26, &sp8);
|
||||||
|
temp_r31 = &arg0->unk3C[1];
|
||||||
|
if (var_r28 == -1) {
|
||||||
|
if (temp_r31->unk70 != -1) {
|
||||||
|
temp_r31->unk70 = -1;
|
||||||
|
temp_r31->unk74f = 0.0f;
|
||||||
|
temp_r31->unk58.x = temp_r31->unk0.x;
|
||||||
|
temp_r31->unk58.y = temp_r31->unk0.y;
|
||||||
|
temp_r31->unk58.z = temp_r31->unk0.z;
|
||||||
|
temp_r31->unk78 = temp_r31->unk18;
|
||||||
|
}
|
||||||
|
if (temp_r31->unk74f < 90.0f) {
|
||||||
|
temp_r31->unk74f += 9.0f;
|
||||||
|
if (temp_r31->unk74f > 90.0f) {
|
||||||
|
temp_r31->unk74f = 90.0f;
|
||||||
|
}
|
||||||
|
temp_f31 = sin((M_PI * temp_r31->unk74f) / 180.0);
|
||||||
|
temp_f30 = cos((M_PI * temp_r31->unk74f) / 180.0);
|
||||||
|
sp18.x = temp_r30->unk0.x - temp_r31->unk58.x;
|
||||||
|
sp18.y = temp_r30->unk0.y - temp_r31->unk58.y;
|
||||||
|
sp18.z = temp_r30->unk0.z - temp_r31->unk58.z;
|
||||||
|
temp_r31->unk0.x = (temp_r31->unk58.x + (sp18.x * temp_f31));
|
||||||
|
temp_r31->unk0.y = (temp_r31->unk58.y + (sp18.y * temp_f31));
|
||||||
|
temp_r31->unk0.z = (temp_r31->unk58.z + (sp18.z * temp_f31));
|
||||||
|
temp_r31->unk18 = (0.001f + (temp_r31->unk78 * temp_f30));
|
||||||
|
temp_r31->unk1C = (0.001f + (temp_r31->unk78 * temp_f30));
|
||||||
|
temp_r31->unk20 = 1.0f;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
temp_r31->unk34 |= 4;
|
||||||
|
temp_r31->unk0.x = temp_r30->unk0.x;
|
||||||
|
temp_r31->unk0.y = temp_r30->unk0.y;
|
||||||
|
temp_r31->unk0.z = temp_r30->unk0.z;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
temp_r29 = &lbl_1_bss_10C[var_r28];
|
||||||
|
if (temp_r31->unk70 != var_r28) {
|
||||||
|
temp_r31->unk70 = var_r28;
|
||||||
|
temp_r31->unk74f = 0.0f;
|
||||||
|
temp_r31->unk58.x = temp_r31->unk0.x;
|
||||||
|
temp_r31->unk58.y = temp_r31->unk0.y;
|
||||||
|
temp_r31->unk58.z = temp_r31->unk0.z;
|
||||||
|
temp_r31->unk78 = temp_r31->unk18;
|
||||||
|
temp_r31->unk7C = (2.5f - temp_r31->unk18);
|
||||||
|
}
|
||||||
|
if (temp_r31->unk74f < 90.0f) {
|
||||||
|
temp_r31->unk74f += 9.0f;
|
||||||
|
if (temp_r31->unk74f > 90.0f) {
|
||||||
|
temp_r31->unk74f = 90.0f;
|
||||||
|
}
|
||||||
|
temp_f31 = sin((M_PI * temp_r31->unk74f) / 180.0);
|
||||||
|
sp18.x = temp_r29->unkC.x - temp_r31->unk58.x;
|
||||||
|
sp18.y = temp_r29->unkC.y - temp_r31->unk58.y;
|
||||||
|
sp18.z = temp_r29->unkC.z - temp_r31->unk58.z;
|
||||||
|
temp_r31->unk0.x = (temp_r31->unk58.x + (sp18.x * temp_f31));
|
||||||
|
temp_r31->unk0.y = (temp_r31->unk58.y + (sp18.y * temp_f31));
|
||||||
|
temp_r31->unk0.z = (temp_r31->unk58.z + (sp18.z * temp_f31));
|
||||||
|
temp_r31->unk18 = (temp_r31->unk78 + (temp_r31->unk7C * temp_f31));
|
||||||
|
temp_r31->unk1C = (temp_r31->unk78 + (temp_r31->unk7C * temp_f31));
|
||||||
|
temp_r31->unk20 = 1.0f;
|
||||||
|
} else {
|
||||||
|
temp_r31->unk0.x = temp_r29->unkC.x;
|
||||||
|
temp_r31->unk0.y = temp_r29->unkC.y;
|
||||||
|
temp_r31->unk0.z = temp_r29->unkC.z;
|
||||||
|
}
|
||||||
|
temp_r31->unk34 &= ~4;
|
||||||
|
}
|
||||||
|
|
||||||
|
s8 fn_1_8D08(u8 arg0) {
|
||||||
|
unkStruct7* data;
|
||||||
|
unkStruct8Sub* var_r30;
|
||||||
|
|
||||||
|
data = (unkStruct7*)lbl_1_bss_3A0[arg0]->data;
|
||||||
|
var_r30 = fn_1_CCCC(data->unk57, 1);
|
||||||
|
return var_r30->unk70;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_8D6C(unkStruct8* arg0) {
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
s32 temp_r28;
|
||||||
|
s32 var_r27;
|
||||||
|
f32 var_f31;
|
||||||
|
unkStruct10* var_r29;
|
||||||
|
unkStruct7* temp_r30;
|
||||||
|
unkStruct8Sub* temp_r31;
|
||||||
|
|
||||||
|
temp_r31 = &arg0->unk3C[0];
|
||||||
|
if ((temp_r31->unk34 & 4) == 0) {
|
||||||
|
temp_r28 = temp_r31->unk72;
|
||||||
|
if (temp_r31->unk74 == 0) {
|
||||||
|
if (temp_r28 == -1) {
|
||||||
|
sp8.x = temp_r31->unk58.x - temp_r31->unk0.x;
|
||||||
|
sp8.y = temp_r31->unk58.y - temp_r31->unk0.y;
|
||||||
|
sp8.z = temp_r31->unk58.z - temp_r31->unk0.z;
|
||||||
|
fn_1_B378(&sp8);
|
||||||
|
temp_r31->unk64.x = sp8.x;
|
||||||
|
temp_r31->unk64.y = sp8.y;
|
||||||
|
temp_r31->unk64.z = sp8.z;
|
||||||
|
}
|
||||||
|
temp_r31->unk74 = 0x10;
|
||||||
|
}
|
||||||
|
if (temp_r31->unk76 == 0) {
|
||||||
|
if (temp_r28 != -1) {
|
||||||
|
var_r29 = &lbl_1_bss_10C[temp_r28];
|
||||||
|
if ((var_r29->unk2 != 0) && (var_r29->unk2 <= 4U)) {
|
||||||
|
sp8.x = var_r29->unkC.x - temp_r31->unk0.x;
|
||||||
|
sp8.y = var_r29->unkC.y - temp_r31->unk0.y;
|
||||||
|
sp8.z = var_r29->unkC.z - temp_r31->unk0.z;
|
||||||
|
fn_1_B378(&sp8);
|
||||||
|
temp_r31->unk64.x = sp8.x;
|
||||||
|
temp_r31->unk64.y = sp8.y;
|
||||||
|
temp_r31->unk64.z = sp8.z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sp8.x = 100.0f * (2.0f * temp_r31->unk64.x);
|
||||||
|
sp8.y = 100.0f * (2.0f * temp_r31->unk64.y);
|
||||||
|
sp8.z = 100.0f * (2.0f * temp_r31->unk64.z);
|
||||||
|
for (var_r29 = &lbl_1_bss_10C[0], var_r27 = 0; var_r27 < 8; var_r27++, var_r29++) {
|
||||||
|
if ((Hu3DModelAttrGet(var_r29->unk0) & 1) == 0) {
|
||||||
|
var_f31 = fn_1_B6A4(&var_r29->unkC, temp_r31, &sp8);
|
||||||
|
if (!(var_f31 >= 2250.0f) && (var_r29->unk2 == 3)) {
|
||||||
|
var_r29->unk2 = 4;
|
||||||
|
temp_r31->unk34 |= 4;
|
||||||
|
temp_r30 = (unkStruct7*)lbl_1_bss_3A0[temp_r31->unk70]->data;
|
||||||
|
if (var_r29->unk48 == lbl_1_bss_106) {
|
||||||
|
espAttrSet(temp_r30->unk5A[temp_r30->unk59][0], 4);
|
||||||
|
espAttrReset(temp_r30->unk5A[temp_r30->unk59][1], 4);
|
||||||
|
HuAudFXPlay(9);
|
||||||
|
temp_r30->unk59++;
|
||||||
|
omVibrate(temp_r30->unk0, 0xC, 6, 6);
|
||||||
|
if (temp_r30->unk59 < 3U) {
|
||||||
|
temp_r30->unk60++;
|
||||||
|
}
|
||||||
|
} else if (temp_r30->unk59 != 0) {
|
||||||
|
espAttrReset(temp_r30->unk5A[temp_r30->unk59][0], 4);
|
||||||
|
espAttrSet(temp_r30->unk5A[temp_r30->unk59][1], 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sp20.x = -290.0f;
|
||||||
|
sp20.y = 350.0f;
|
||||||
|
sp20.z = -1200.0f;
|
||||||
|
var_f31 = fn_1_B9E0(&sp20, temp_r31, &sp8, &sp14, &sp8);
|
||||||
|
if (var_f31 <= 100.0f) {
|
||||||
|
temp_r31->unk0.x = sp14.x;
|
||||||
|
temp_r31->unk0.y = sp14.y;
|
||||||
|
temp_r31->unk0.z = sp14.z;
|
||||||
|
temp_r31->unk64.x = sp8.x;
|
||||||
|
temp_r31->unk64.y = sp8.y;
|
||||||
|
temp_r31->unk64.z = sp8.z;
|
||||||
|
temp_r31->unk76 = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp_r31->unk0.x = (temp_r31->unk0.x + (200.0f * temp_r31->unk64.x));
|
||||||
|
temp_r31->unk0.y = (temp_r31->unk0.y + (200.0f * temp_r31->unk64.y));
|
||||||
|
temp_r31->unk0.z = (temp_r31->unk0.z + (200.0f * temp_r31->unk64.z));
|
||||||
|
if (--temp_r31->unk74 == 0) {
|
||||||
|
temp_r31->unk34 |= 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_91C0(omObjData* arg0) {
|
||||||
|
s32 var_r28;
|
||||||
|
s32 var_r30;
|
||||||
|
unkStruct10* var_r31;
|
||||||
|
|
||||||
|
lbl_1_bss_108 = 0;
|
||||||
|
var_r28 = Hu3DModelCreateFile(0x20000);
|
||||||
|
arg0->model[0] = var_r28;
|
||||||
|
Hu3DModelAttrSet(var_r28, 0x40000001);
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 3; var_r30++) {
|
||||||
|
arg0->motion[var_r30] = Hu3DJointMotion(var_r28, HuDataSelHeapReadNum(var_r30 + 0x28000F, 0x10000000, HEAP_DATA));
|
||||||
|
}
|
||||||
|
Hu3DMotionSet(var_r28, arg0->motion[0]);
|
||||||
|
omSetTra(arg0, 419.99997f, 250.0f, -180.0f);
|
||||||
|
omSetRot(arg0, 0.0f, -30.0f, 0.0f);
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 4; var_r30++) {
|
||||||
|
arg0->work[var_r30] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 8; var_r30++) {
|
||||||
|
var_r28 = Hu3DModelCreateFile(var_r30 + 0x28001B);
|
||||||
|
arg0->model[var_r30 + 1] = var_r28;
|
||||||
|
Hu3DModelAttrSet(var_r28, 1);
|
||||||
|
}
|
||||||
|
lbl_1_bss_104 = 0;
|
||||||
|
|
||||||
|
|
||||||
|
for (var_r31 = lbl_1_bss_10C, var_r30 = 0; var_r30 < 8; var_r30++, var_r31++) {
|
||||||
|
var_r28 = Hu3DModelCreateFile(var_r30 + 0x280013);
|
||||||
|
var_r31->unk0 = var_r28;
|
||||||
|
Hu3DModelLayerSet(var_r28, 3);
|
||||||
|
var_r31->unkC.x = -400.0f + (100.0f * var_r30);
|
||||||
|
var_r31->unkC.y = 300.0f + (100.0f * var_r30);
|
||||||
|
var_r31->unkC.z = -1200.0f;
|
||||||
|
Hu3DModelPosSet(var_r28, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z);
|
||||||
|
var_r31->unk2 = var_r31->unk3 = 0;
|
||||||
|
var_r31->unk18.x = var_r31->unk18.y = var_r31->unk18.z = 0.0f;
|
||||||
|
var_r31->unk24.x = var_r31->unk24.y = var_r31->unk24.z = 1.0f;
|
||||||
|
var_r31->unk3C.x = var_r31->unk3C.y = var_r31->unk3C.z = 0.0f;
|
||||||
|
var_r31->unk30.x = var_r31->unkC.x;
|
||||||
|
var_r31->unk30.y = var_r31->unkC.y;
|
||||||
|
var_r31->unk30.z = var_r31->unkC.z;
|
||||||
|
var_r31->unk48 = var_r30;
|
||||||
|
fn_1_DEF4((var_r31->unk1 = fn_1_DA48(1, 1)), 0, 0);
|
||||||
|
fn_1_E2A8(lbl_1_bss_F0.unk6, 0, var_r30 + 0x280023, 0x40, 0x40);
|
||||||
|
fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 2.0f, 2.0f, 1.0f);
|
||||||
|
fn_1_F024(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0xFF, 0xFF, 0xFF, 0xA0);
|
||||||
|
fn_1_ED44(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0x40000004);
|
||||||
|
fn_1_F17C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, lbl_1_bss_F0.unkA, 0x11);
|
||||||
|
fn_1_F2F8(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, lbl_1_bss_F0.unkA, 1.0f);
|
||||||
|
}
|
||||||
|
arg0->func = fn_1_962C;
|
||||||
|
}
|
||||||
136
src/msm/msmmem.c
Normal file
136
src/msm/msmmem.c
Normal file
|
|
@ -0,0 +1,136 @@
|
||||||
|
#include "msm/msmmem.h"
|
||||||
|
|
||||||
|
typedef struct _unkStruct {
|
||||||
|
struct _unkStruct* prev;
|
||||||
|
struct _unkStruct* next;
|
||||||
|
u32 unk8;
|
||||||
|
u32 unkC;
|
||||||
|
void* unk10;
|
||||||
|
void* unk14;
|
||||||
|
char unk18[0x8];
|
||||||
|
} unkStruct;
|
||||||
|
|
||||||
|
typedef struct _unkMemStruct {
|
||||||
|
unkStruct* unk0;
|
||||||
|
u32 unk4;
|
||||||
|
unkStruct* unk8;
|
||||||
|
unkStruct unkC;
|
||||||
|
} unkMemStruct;
|
||||||
|
|
||||||
|
static unkMemStruct mem;
|
||||||
|
|
||||||
|
void msmMemFree(void* arg0) {
|
||||||
|
unkStruct* temp_r6;
|
||||||
|
unkStruct* temp_r7;
|
||||||
|
unkStruct* temp_r8;
|
||||||
|
unkStruct* temp_r5;
|
||||||
|
unkStruct* temp;
|
||||||
|
|
||||||
|
temp = arg0;
|
||||||
|
|
||||||
|
temp_r6 = &temp[-1];
|
||||||
|
temp_r7 = temp_r6->prev;
|
||||||
|
temp_r8 = temp_r6->next;
|
||||||
|
if (mem.unk0 > temp_r6 || ((u32)mem.unk0 + (u32)mem.unk4) <= (u32)temp_r6) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((temp_r7->next != temp_r6) || (temp_r6->unk10 != arg0) || (temp_r8 && (temp_r8->prev != temp_r6))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp_r7->unkC += temp_r6->unk8 + temp_r6->unkC;
|
||||||
|
temp_r7->next = temp_r8;
|
||||||
|
temp_r5 = mem.unk8;
|
||||||
|
if ((temp_r5 == temp_r6) || (temp_r5->unkC < temp_r7->unkC)) {
|
||||||
|
mem.unk8 = temp_r7;
|
||||||
|
}
|
||||||
|
if (temp_r8) {
|
||||||
|
temp_r8->prev = temp_r7;
|
||||||
|
if (mem.unk8->unkC < temp_r8->unkC) {
|
||||||
|
mem.unk8 = temp_r8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void* msmMemAlloc(s32 arg0) {
|
||||||
|
unkMemStruct* memC;
|
||||||
|
s32 temp_r0;
|
||||||
|
u32 var_r5;
|
||||||
|
u32 var_r7;
|
||||||
|
unkStruct* temp_r5;
|
||||||
|
unkStruct* var_r8;
|
||||||
|
unkStruct* temp_r9;
|
||||||
|
unkStruct* temp_r6;
|
||||||
|
unkStruct* temp_r4;
|
||||||
|
|
||||||
|
var_r7 = arg0 + 0x20;
|
||||||
|
temp_r0 = var_r7 & 0x1F;
|
||||||
|
if (temp_r0 != 0) {
|
||||||
|
var_r7 += 0x20 - temp_r0;
|
||||||
|
}
|
||||||
|
if (mem.unk8->unkC >= var_r7) {
|
||||||
|
var_r8 = mem.unk8;
|
||||||
|
} else {
|
||||||
|
var_r8 = &mem.unkC;
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (var_r8->unkC >= var_r7) break;
|
||||||
|
var_r8 = var_r8->next;
|
||||||
|
} while (var_r8);
|
||||||
|
if (!var_r8) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r5 = var_r8->unk8;
|
||||||
|
if (var_r5 != 0) {
|
||||||
|
var_r5 -= 0x20;
|
||||||
|
}
|
||||||
|
temp_r5 = (void*)((u32)var_r8->unk10 + var_r5);
|
||||||
|
temp_r9 = var_r8->next;
|
||||||
|
if ((mem.unk0 > temp_r5) || ((void*)((u32)mem.unk0 + (u32)mem.unk4) <= temp_r5)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
temp_r5->unk8 = var_r7;
|
||||||
|
temp_r5->unkC = var_r8->unkC - var_r7;
|
||||||
|
temp_r5->unk10 = (temp_r5 + 1);
|
||||||
|
temp_r5->prev = var_r8;
|
||||||
|
temp_r5->next = temp_r9;
|
||||||
|
mem.unk8 = temp_r5;
|
||||||
|
var_r8->unkC = 0;
|
||||||
|
var_r8->next = temp_r5;
|
||||||
|
if (temp_r9) {
|
||||||
|
temp_r9->prev = temp_r5;
|
||||||
|
if (mem.unk8->unkC < temp_r9->unkC) {
|
||||||
|
mem.unk8 = temp_r9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return temp_r5->unk10;
|
||||||
|
}
|
||||||
|
|
||||||
|
void msmMemInit(void* arg0, u32 arg1) {
|
||||||
|
unkStruct* temp_r7;
|
||||||
|
s32 temp;
|
||||||
|
|
||||||
|
temp = (s32)arg0 & 0x1F;
|
||||||
|
switch (temp) {
|
||||||
|
default:
|
||||||
|
temp = 0x20 - temp;
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
temp = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
mem.unk0 = (void*)((s32)arg0 + temp);
|
||||||
|
temp = (s32)arg0 + arg1;
|
||||||
|
mem.unk4 = ((temp - (s32)mem.unk0) & ~0x1F);
|
||||||
|
temp_r7 = &mem.unkC;
|
||||||
|
temp_r7->unk8 = 0;
|
||||||
|
temp_r7->unkC = mem.unk4;
|
||||||
|
temp_r7->unk10 = mem.unk0;
|
||||||
|
temp_r7->prev = NULL;
|
||||||
|
temp_r7->next = NULL;
|
||||||
|
mem.unk8 = &mem.unkC;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue