match and link m407/effect.c
This commit is contained in:
parent
dd746343cb
commit
fd0dbb1e57
4 changed files with 220 additions and 7 deletions
|
|
@ -839,7 +839,7 @@ config.libs = [
|
|||
Object(Matching, "REL/m407dll/camera.c"),
|
||||
Object(NonMatching, "REL/m407dll/whomp.c"),
|
||||
Object(Matching, "REL/m407dll/whomp_score.c"),
|
||||
Object(NonMatching, "REL/m407dll/effect.c"),
|
||||
Object(Matching, "REL/m407dll/effect.c"),
|
||||
Object(NonMatching, "REL/m407dll/main.c"),
|
||||
Object(NonMatching, "REL/m407dll/score.c"),
|
||||
}
|
||||
|
|
|
|||
209
src/REL/m407dll/effect.c
Normal file
209
src/REL/m407dll/effect.c
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
#include "src/REL/m407dll/m407dll.h"
|
||||
#include "game/process.h"
|
||||
#include "game/object.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/hsfdraw.h"
|
||||
//bss
|
||||
s32 bssPad3;
|
||||
Process* lbl_1_bss_3970;
|
||||
omObjData* lbl_1_bss_37E0[100];
|
||||
|
||||
//data
|
||||
s32 lbl_1_data_288[] = {
|
||||
0x00260015,
|
||||
0x00260016,
|
||||
0x00260017,
|
||||
0x00260018,
|
||||
0x00260019
|
||||
};
|
||||
|
||||
//function signatures
|
||||
void fn_1_4858(omObjData* arg0);
|
||||
void fn_1_485C(omObjData* arg0);
|
||||
void fn_1_46EC(omObjData* arg0);
|
||||
void fn_1_465C(omObjData* arg0, s32 arg1);
|
||||
void fn_1_4808(omObjData* arg0);
|
||||
|
||||
ObjFuncs lbl_1_data_29C[] = {
|
||||
fn_1_4858,
|
||||
fn_1_485C,
|
||||
};
|
||||
|
||||
void fn_1_41CC(Process* arg0) {
|
||||
Process* sp8;
|
||||
u32 i;
|
||||
u32 temp_r30;
|
||||
|
||||
|
||||
lbl_1_bss_3970 = arg0;
|
||||
|
||||
temp_r30 = 0;
|
||||
|
||||
for (i = 0; i < 40; i++) {
|
||||
lbl_1_bss_37E0[i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[i]->work[0] = i;
|
||||
lbl_1_bss_37E0[i]->work[1] = 0;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 1;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 30; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 2;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 3;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 22; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 4;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_44F4(void) {
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37E0); i++) {
|
||||
fn_1_4808(lbl_1_bss_37E0[i]);
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct unkDominationData4 {
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
s32 unk_08;
|
||||
s32 unk_0C;
|
||||
f32 unk_10;
|
||||
f32 unk_14;
|
||||
f32 unk_18;
|
||||
s32 unk_1C;
|
||||
} unkDominationData4;
|
||||
|
||||
void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
f32 sp14;
|
||||
f32 sp10;
|
||||
s32 spC;
|
||||
s32 sp8;
|
||||
omObjData* temp_r29;
|
||||
u32 var_r30;
|
||||
unkDominationData4* temp_r31;
|
||||
u32 i;
|
||||
|
||||
if ((arg4 < (Center.z - 2000.0f)) || (arg4 > (2000.0f + Center.z))) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37E0); i++) {
|
||||
temp_r29 = lbl_1_bss_37E0[i];
|
||||
temp_r31 = temp_r29->data;
|
||||
if ((temp_r31->unk_08 == arg0) && (temp_r31->unk_0C == 0)) {
|
||||
temp_r31->unk_04 = arg1;
|
||||
temp_r31->unk_10 = arg2;
|
||||
temp_r31->unk_14 = arg3;
|
||||
temp_r31->unk_18 = arg4;
|
||||
fn_1_465C(temp_r29, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_465C(omObjData* arg0, s32 arg1) {
|
||||
unkDominationData4* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
temp_r31->unk_0C = arg1;
|
||||
temp_r31->unk_1C = 0;
|
||||
}
|
||||
|
||||
void fn_1_4680(omObjData* arg0) {
|
||||
unkDominationData4* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
lbl_1_data_29C[temp_r31->unk_0C](arg0);
|
||||
omSetTra(arg0, temp_r31->unk_10, temp_r31->unk_14, temp_r31->unk_18);
|
||||
}
|
||||
|
||||
void fn_1_46EC(omObjData* arg0) {
|
||||
unkDominationData4* temp_r29;
|
||||
unkDominationData4* temp_r30;
|
||||
|
||||
arg0->func = fn_1_4680;
|
||||
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20, 0x10000000);
|
||||
temp_r30 = arg0->data;
|
||||
temp_r30->unk_00 = arg0->work[0];
|
||||
temp_r30->unk_08 = arg0->work[1];
|
||||
temp_r30->unk_1C = 0;
|
||||
*arg0->model = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_288[temp_r30->unk_08], 0x10000000, HEAP_DATA));
|
||||
Hu3DModelAttrSet(*arg0->model, 0x4000U);
|
||||
Hu3DModelAttrSet(*arg0->model, 0x40000002U);
|
||||
Hu3DModelAttrSet(*arg0->model, 1U);
|
||||
temp_r30->unk_10 = (f32) 0.0f;
|
||||
temp_r30->unk_14 = (f32) 0.0f;
|
||||
temp_r30->unk_18 = (f32) 0.0f;
|
||||
temp_r29 = arg0->data;
|
||||
temp_r29->unk_0C = 0;
|
||||
temp_r29->unk_1C = 0;
|
||||
}
|
||||
|
||||
void fn_1_4808(omObjData* arg0) {
|
||||
unkDominationData4* sp8;
|
||||
sp8 = arg0->data;
|
||||
|
||||
Hu3DModelKill(arg0->model[0]);
|
||||
|
||||
if (arg0->data) {
|
||||
HuMemDirectFree(arg0->data);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_4858(omObjData* arg0) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_485C(omObjData* arg0) {
|
||||
unkDominationData4* temp_r29;
|
||||
unkDominationData4* temp_r30;
|
||||
|
||||
temp_r30 = arg0->data;
|
||||
if (temp_r30->unk_04 != 0) {
|
||||
temp_r30->unk_04--;
|
||||
}
|
||||
|
||||
if (temp_r30->unk_1C == 0) {
|
||||
Hu3DMotionTimeSet(*arg0->model, 0.0f);
|
||||
Hu3DModelAttrReset(*arg0->model, 1);
|
||||
Hu3DModelAttrReset(*arg0->model, 0x40000002);
|
||||
Hu3DModelAttrSet(*arg0->model, 0x40000001);
|
||||
temp_r30->unk_1C++;
|
||||
} else if (temp_r30->unk_1C == 1) {
|
||||
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
|
||||
temp_r30->unk_1C++;
|
||||
}
|
||||
|
||||
if (Hu3DMotionEndCheck(*arg0->model) != 0) {
|
||||
Hu3DModelAttrSet(*arg0->model, 1U);
|
||||
temp_r29 = arg0->data;
|
||||
temp_r29->unk_0C = 0;
|
||||
temp_r29->unk_1C = 0;
|
||||
}
|
||||
}
|
||||
|
||||
f32 pad3[1] = {0.0f};
|
||||
5
src/REL/m407dll/m407dll.h
Normal file
5
src/REL/m407dll/m407dll.h
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#include "game/object.h"
|
||||
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
typedef void (*ObjFuncs)(omObjData*);
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
#include "src/REL/m407dll/m407dll.h"
|
||||
#include "game/process.h"
|
||||
#include "game/object.h"
|
||||
#include "game/gamework_data.h"
|
||||
|
|
@ -15,8 +16,6 @@ s32 bssPad;
|
|||
Process* lbl_1_bss_37D8;
|
||||
omObjData* lbl_1_bss_37C8[4];
|
||||
|
||||
typedef void (*ObjFuncs)(omObjData*);
|
||||
|
||||
ObjFuncs lbl_1_data_278[] = {
|
||||
fn_1_3FF0,
|
||||
fn_1_3FF4,
|
||||
|
|
@ -37,7 +36,7 @@ void fn_1_3AC8(Process* arg0) {
|
|||
|
||||
lbl_1_bss_37D8 = arg0;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
|
||||
lbl_1_bss_37C8[i] = omAddObjEx(lbl_1_bss_37D8, 0x500, 0U, 0U, 4, fn_1_3E34);
|
||||
lbl_1_bss_37C8[i]->work[0] = i;
|
||||
}
|
||||
|
|
@ -47,7 +46,7 @@ void fn_1_3B68(void) {
|
|||
s32 temp_r4;
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
|
||||
fn_1_3F7C(lbl_1_bss_37C8[i]);
|
||||
}
|
||||
}
|
||||
|
|
@ -59,7 +58,7 @@ void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) {
|
|||
u32 i;
|
||||
s16 temp;;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
|
||||
obj = lbl_1_bss_37C8[i];
|
||||
temp_r31 = OM_GET_DATA_PTR(obj, unkDominationData3);
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
|
|
@ -132,7 +131,7 @@ void fn_1_3F7C(omObjData* arg0) {
|
|||
|
||||
temp_r29 = arg0->data;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(temp_r29->unk_18); i++) {
|
||||
espKill(temp_r29->unk_18[i]);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue