The first commit
This commit is contained in:
101
src/core2/code_63410.c
Normal file
101
src/core2/code_63410.c
Normal file
@@ -0,0 +1,101 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
typedef struct{
|
||||
s16 unk0[3];
|
||||
} Struct_core2_63410_2;
|
||||
|
||||
typedef struct {
|
||||
Struct_core2_63410_2 *unk0;
|
||||
f32 unk4[3];
|
||||
f32 unk10[3];
|
||||
} Struct_core2_63410_1;
|
||||
|
||||
typedef struct {
|
||||
Struct_core2_63410_1 *unk0;
|
||||
Struct_core2_63410_1 *unk4;
|
||||
Struct_core2_63410_1 *unk8;
|
||||
} Struct_core2_63410_0;
|
||||
|
||||
/* .code */
|
||||
void func_802EA3A0(Struct_core2_63410_0 *arg0){
|
||||
//clears vec
|
||||
arg0->unk4 = arg0->unk0;
|
||||
}
|
||||
|
||||
s32 func_802EA3AC(Struct_core2_63410_0 *arg0, s32 indx, f32 arg2[3], f32 arg3[3]){
|
||||
//get elem at indx
|
||||
Struct_core2_63410_1 *phi_v1;
|
||||
|
||||
phi_v1 = &arg0->unk0[indx];
|
||||
|
||||
arg2[0] = phi_v1->unk4[0];
|
||||
arg2[1] = phi_v1->unk4[1];
|
||||
arg2[2] = phi_v1->unk4[2];
|
||||
|
||||
arg3[0] = phi_v1->unk10[0];
|
||||
arg3[1] = phi_v1->unk10[1];
|
||||
arg3[2] = phi_v1->unk10[2];
|
||||
return phi_v1->unk0;
|
||||
}
|
||||
|
||||
s32 func_802EA3F8(Struct_core2_63410_0 *arg0){
|
||||
//return size of vector
|
||||
return arg0->unk4 - arg0->unk0;
|
||||
}
|
||||
|
||||
void func_802EA418(Struct_core2_63410_0 **arg0, Struct_core2_63410_2 *arg1, f32 arg2[3], f32 arg3[3]) {
|
||||
/* adds elem (arg1) to vec (arg0), resize if end_ptr == capacity_ptr */
|
||||
Struct_core2_63410_1 *phi_v1;
|
||||
Struct_core2_63410_0 *phi_s1;
|
||||
s32 sp34;
|
||||
s32 sp20;
|
||||
|
||||
//check is elem already exists in vec
|
||||
phi_s1 = *arg0;
|
||||
for(phi_v1 = phi_s1->unk0; phi_v1 < phi_s1->unk4; phi_v1++){
|
||||
if ( (phi_v1->unk0->unk0[0] == arg1->unk0[0])
|
||||
&& (phi_v1->unk0->unk0[1] == arg1->unk0[1])
|
||||
&& (phi_v1->unk0->unk0[2] == arg1->unk0[2])
|
||||
){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//check if vector capacity needs to increas
|
||||
if (phi_s1->unk4 == phi_s1->unk8) {
|
||||
sp34 = (phi_s1->unk8 - phi_s1->unk0);
|
||||
sp20 = sp34 * 2;
|
||||
phi_s1 = (Struct_core2_63410_0 *)realloc(phi_s1, sizeof(Struct_core2_63410_0) + (sizeof(Struct_core2_63410_1)*sp20));
|
||||
phi_s1->unk0 = (Struct_core2_63410_1 *)(phi_s1 + 1);
|
||||
phi_s1->unk4 = phi_s1->unk0 + sp34;
|
||||
phi_s1->unk8 = phi_s1->unk0 + sp20;
|
||||
(*arg0) = phi_s1;
|
||||
}
|
||||
|
||||
//copy arg1, arg2, arg3 over;
|
||||
phi_s1->unk4->unk0 = arg1;
|
||||
phi_s1->unk4->unk4[0] = arg2[0];
|
||||
phi_s1->unk4->unk4[1] = arg2[1];
|
||||
phi_s1->unk4->unk4[2] = arg2[2];
|
||||
phi_s1->unk4->unk10[0] = arg3[0];
|
||||
phi_s1->unk4->unk10[1] = arg3[1];
|
||||
phi_s1->unk4->unk10[2] = arg3[2];
|
||||
phi_s1->unk4++;
|
||||
}
|
||||
|
||||
void func_802EA5C4(Struct_core2_63410_0 *arg0){
|
||||
//free vec
|
||||
free(arg0);
|
||||
}
|
||||
|
||||
Struct_core2_63410_0 *func_802EA5E4(void){
|
||||
//new
|
||||
Struct_core2_63410_0 *phi_v0;
|
||||
|
||||
phi_v0 = (Struct_core2_63410_0 *)malloc(sizeof(Struct_core2_63410_0) + 2 * sizeof(Struct_core2_63410_1));
|
||||
phi_v0->unk0 = (Struct_core2_63410_1 *)(phi_v0 + 1);
|
||||
phi_v0->unk4 = phi_v0->unk0;
|
||||
phi_v0->unk8 = phi_v0->unk0 + 2;
|
||||
return phi_v0;
|
||||
}
|
Reference in New Issue
Block a user