The first commit

This commit is contained in:
Banjo Kazooie
2022-07-15 17:09:41 -05:00
commit dd13d34074
1087 changed files with 391897 additions and 0 deletions

327
src/core2/code_C89C0.c Normal file
View File

@@ -0,0 +1,327 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern void func_8032F64C(f32[3], s32);
extern void func_80323240(struct56s *, f32, f32[3]);
extern f32 func_80323F74(struct56s *, f32, f32);
extern f32 func_80256AB4(f32, f32, f32, f32);
typedef struct {
s32 unk0;
s32 unk4; //bool
s32 unk8;
f32 unkC[3];
f32 unk18;
s32 unk1C;
f32 unk20;
f32 unk24;
f32 unk28;
f32 unk2C;
}Struct_core2_C89C0_1;
typedef struct {
ActorMarker *unk0;
Struct_core2_C89C0_1 *unk4;
f32 unk8[3];
f32 unk14;
f32 unk18;
f32 unk1C;
f32 unk20;
f32 unk24[3];
f32 unk30;
f32 unk34;
f32 unk38;
}Struct_core2_C89C0_0;
/* .rodata */
extern f32 D_80379300;
extern f32 D_80379304;
extern f32 D_80379308;
extern f64 D_80379310;
extern f32 D_80379318;
extern f64 D_80379320;
extern f32 D_80379328;
extern f32 D_8037932C;
extern f32 D_80379330;
/* .bss */
extern struct {
void *unk0; //2D_fish_bin
void *unk4; //green_ball_bin
Struct_core2_C89C0_1 *unk8;
Struct_core2_C89C0_1 *unkC;
Struct_core2_C89C0_1 *unk10;
Struct_core2_C89C0_0 *unk14;
Struct_core2_C89C0_0 *unk18;
Struct_core2_C89C0_0 *unk1C;
}D_80386150;
/* .code */
void func_8034F950(Struct_core2_C89C0_0 *arg0) {
f32 sp7C[3];
f32 sp70[3];
f32 temp_f0;
s32 i;
sp7C[0] = arg0->unk4->unkC[0] + arg0->unk24[0];
sp7C[1] = arg0->unk4->unkC[1] + arg0->unk24[1];
sp7C[2] = arg0->unk4->unkC[2] + arg0->unk24[2];
sp7C[0] -= arg0->unk8[0];
sp7C[1] -= arg0->unk8[1];
sp7C[2] -= arg0->unk8[2];
for(i = 0; i < 3; i++){
sp7C[i] += randf2(-40.0f, 40.0f);
if (i != 1) {
arg0->unk24[i] += randf2(-40.0f, 40.0f);
arg0->unk24[i] = (arg0->unk24[i] > 100.0f) ? 100.0f : arg0->unk24[i];
arg0->unk24[i] = (arg0->unk24[i] < -100.0f) ? -100.0f : arg0->unk24[i];
}
}
temp_f0 = gu_sqrtf(sp7C[0]*sp7C[0] + sp7C[1]*sp7C[1] + sp7C[2]*sp7C[2]);
arg0->unk34 = (temp_f0 > 200.0f) ? 1.0f : (f32)(temp_f0 / 200.0);
sp70[0] = -1.0f;
sp70[1] = 0.0f;
sp70[2] = 0.0f;
ml_vec3f_yaw_rotate_copy(sp70, sp70, arg0->unk14);
ml_vec3f_normalize(sp7C);
if ((sp70[0]*sp7C[0] + sp70[1]*sp7C[1] + sp70[2]*sp7C[2]) < 0.0f) {
arg0->unk34 = randf2(D_80379300, D_80379304);
arg0->unk30 = randf2(0.5f, 1.0f);
} else {
arg0->unk30 = (randf2(D_80379308, 1.0f) * func_80256AB4(sp70[0], sp70[2], sp7C[0], sp7C[2]));
}
arg0->unk30 = (arg0->unk30 > 1.0f) ? 1.0f : arg0->unk30;
arg0->unk30 = (arg0->unk30 < -1.0f) ? -1.0f : arg0->unk30;
if (sp7C[1] > 0.0f) {
arg0->unk38 = (f32) (sp7C[1] / 10.0f);
if (arg0->unk38 > 1.0f) {
arg0->unk38 = 1.0f;
}
} else if (sp7C[1] < 0.0f) {
arg0->unk38 = (f32) (sp7C[1] / 10.0f);
if (arg0->unk38 < -1.0f) {
arg0->unk38 = -1.0f;
}
}
}
Actor* func_8034FCDC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
f32 sp2C[3];
Struct_core2_C89C0_0 *sp28;
sp28 = D_80386150.unk14 + marker->actrArrayIdx;
if (sp28->unk4->unk4 == 0) {
return NULL;
}
sp2C[0] = 0.0f;
sp2C[1] = sp28->unk14;
sp2C[2] = 0.0f;
set_model_render_mode(2);
func_803391A4(gfx, mtx, sp28->unk8, sp2C, sp28->unk18 * D_80379310, NULL, D_80386150.unk0);
return NULL;
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_C89C0/func_8034FDA0.s")
#else
void func_8034FDA0(s32 arg0) {
s32 sp34;
s32 sp24;
if (D_80386150.unkC == D_80386150.unk10) {
sp34 = D_80386150.unkC - D_80386150.unk8;
sp24 = sp34 * 2;
D_80386150.unk8 = (Struct_core2_C89C0_1*) realloc(D_80386150.unk8, sp24 * sizeof(Struct_core2_C89C0_1));
D_80386150.unkC = D_80386150.unk8 + sp34;
D_80386150.unk10 = D_80386150.unk8 + sp24;
}
D_80386150.unkC->unk0 = 1;
D_80386150.unkC->unk4 = 0;
D_80386150.unkC->unk8 = 0x14;
D_80386150.unkC->unk18 = 1000.0f;
D_80386150.unkC->unk1C = arg0;
D_80386150.unkC->unk20 = 10.0f;
D_80386150.unkC->unk24 = 20.0f;
D_80386150.unkC->unk28 = D_80379318;
D_80386150.unkC->unk2C = 0.0f;
func_80323240(func_80342038(D_80386150.unkC->unk1C), D_80386150.unkC->unk2C, D_80386150.unkC->unkC);
D_80386150.unkC++;
}
#endif
void func_8034FEE0(Struct_core2_C89C0_1 *arg0) {
s32 sp2C;
s32 sp20;
if (D_80386150.unk18 == D_80386150.unk1C) {
sp2C = D_80386150.unk18 - D_80386150.unk14;
sp20 = sp2C * 2;
D_80386150.unk14 = (Struct_core2_C89C0_0 *) realloc(D_80386150.unk14, sp20 * sizeof(Struct_core2_C89C0_0));
D_80386150.unk18 = D_80386150.unk14 + sp2C;
D_80386150.unk1C = D_80386150.unk14 + sp20;
}
D_80386150.unk18->unk4 = arg0;
D_80386150.unk18->unk8[0] = arg0->unkC[0];
D_80386150.unk18->unk8[1] = arg0->unkC[1];
D_80386150.unk18->unk8[2] = arg0->unkC[2];
D_80386150.unk18->unk14 = 0.0f;
D_80386150.unk18->unk18 = randf2(1.0f, 2.0f);
D_80386150.unk18->unk1C = 0.0f;
D_80386150.unk18->unk20 = 0.0f;
D_80386150.unk18->unk24[0] = randf2(-100.0f, 100.0f);
D_80386150.unk18->unk24[1] = randf2(-100.0f, 100.0f);
D_80386150.unk18->unk24[2] = randf2(-100.0f, 100.0f);
D_80386150.unk18->unk0 = func_8032FBE4(D_80386150.unk18->unk8, &func_8034FCDC, 1, 0x46);
D_80386150.unk18->unk0->collidable = FALSE;
D_80386150.unk18->unk0->actrArrayIdx = D_80386150.unk18 - D_80386150.unk14;
D_80386150.unk18++;
}
void func_803500D8(Gfx **gfx, Mtx **mtx, Vtx **vtx){}
void func_803500E8(void) {
s32 i;
Struct_core2_C89C0_0 *var_s0;
if (D_80386150.unk0 != NULL) {
for(var_s0 = D_80386150.unk14; var_s0 < D_80386150.unk18; var_s0++) {
marker_free(var_s0->unk0);
}
assetcache_release(D_80386150.unk0);
assetcache_release(D_80386150.unk4);
free(D_80386150.unk8);
free(D_80386150.unk14);
}
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_C89C0/func_80350174.s")
#else
void func_80350174(void) {
s32 temp_t6;
s32 temp_t7;
s32 temp_v0_3;
s32 var_s0;
s32 var_s0_2;
void *temp_v0;
void *temp_v0_2;
s32 i;
for(i = 0x31; i != 0x36; i++){
if (func_80341F64(i))
break;
}
if(i >= 0x36){
D_80386150.unk0 = NULL;
return;
}
D_80386150.unk0 = assetcache_get(0x87C); //ASSET_87C_2D_FISH
D_80386150.unk4 = assetcache_get(0x7BC); //ASSET_7BC_GREEN_BALL
D_80386150.unk8 = malloc(0x60);
D_80386150.unkC = D_80386150.unk8;
D_80386150.unk10 = (s32)D_80386150.unk8 + 0x60;
D_80386150.unk14 = malloc(2*sizeof(Struct_core2_C89C0_0));
D_80386150.unk18 = D_80386150.unk14;
D_80386150.unk1C = (s32)D_80386150.unk14 + 2*sizeof(Struct_core2_C89C0_0);
for(i = 0x31; i < 0x36; i++){
temp_v0_3 = func_80341F2C(i);
if (temp_v0_3 >= 0)
func_8034FDA0(temp_v0_3);
}
}
#endif
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_C89C0/func_80350250.s")
#else
void func_80350250(void) {
f32 sp7C[3];
f32 sp70[3];
f32 temp_f22;
Struct_core2_C89C0_1 *var_s0;
Struct_core2_C89C0_0 *var_s0_2;
temp_f22 = time_getDelta();
if ((D_80386150.unk0 != 0) && (func_80334904() == 2)) {
player_getPosition(sp7C);
for(var_s0 = D_80386150.unk8; var_s0 < D_80386150.unkC; var_s0++) {
var_s0->unk4 = (ml_vec3f_distance(var_s0->unkC, sp7C) < 2000.0f);
if (var_s0->unk4) {
if (var_s0->unk8 > 0) {
var_s0->unk28 -= temp_f22;
if (var_s0->unk28 <= 0.0f) {
var_s0->unk28 = randf2(0.01f, 0.2f);
func_8034FEE0((void *) var_s0);
var_s0->unk8--;
}
}
var_s0->unk18 = randf2(0.0f, 10000.0f);
var_s0->unk24 -= temp_f22;
if (var_s0->unk24 <= 0.0f) {
var_s0->unk24 = randf2(10.0f, 20.0f);
if (0.05 < var_s0->unk2C) {
var_s0->unk2C -= 0.05;
}
}
var_s0->unk20 = (f32) (var_s0->unk20 - temp_f22);
if (var_s0->unk20 <= 0.0f) {
if (var_s0->unk0 == 0) {
var_s0->unk0 = (randf() >= 0.5) ? 1 : -1;
var_s0->unk20 = randf2(20.0f, 40.0f);
} else {
var_s0->unk0 = 0;
var_s0->unk20 = randf2(5.0f, 10.0f);
}
}
var_s0->unk2C = func_80323F74(func_80342038(var_s0->unk1C), var_s0->unk2C, (f32) var_s0->unk0 * var_s0->unk18 * temp_f22);
var_s0->unk2C = (var_s0->unk2C < 0.0f) ? 1.0f - var_s0->unk2C : var_s0->unk2C;
var_s0->unk2C = (var_s0->unk2C >= 1.0f) ? var_s0->unk2C - 1.0f : var_s0->unk2C;
func_80323240(func_80342038(var_s0->unk1C), var_s0->unk2C, var_s0->unkC);
}
}
for(var_s0_2 = D_80386150.unk14; var_s0_2 < D_80386150.unk18; var_s0_2++) {
if (var_s0_2->unk4->unk4 != 0) {
func_8034F950(var_s0_2);
var_s0_2->unk1C += var_s0_2->unk34 * (3.0f - var_s0_2->unk18) * 100.0f * temp_f22;
var_s0_2->unk20 += var_s0_2->unk38 * (3.0f - var_s0_2->unk18) * 20.0f * temp_f22;
var_s0_2->unk14 += var_s0_2->unk30 * (3.0f - var_s0_2->unk18) * 180.0f * temp_f22;
if (var_s0_2->unk1C > 0.0f) {
var_s0_2->unk1C -= var_s0_2->unk1C * temp_f22;
if (var_s0_2->unk1C < 0.0f) {
var_s0_2->unk1C = 0.0f;
}
}
var_s0_2->unk20 = var_s0_2->unk20 - var_s0_2->unk20 * temp_f22;
sp70[0] = -var_s0_2->unk1C * temp_f22;
sp70[1] = sp70[2] = 0.0f;
ml_vec3f_yaw_rotate_copy(&sp70, &sp70, var_s0_2->unk14);
var_s0_2->unk8[0] = var_s0_2->unk8[0] + sp70[0];
var_s0_2->unk8[1] = var_s0_2->unk8[1] + sp70[1];
var_s0_2->unk8[2] = var_s0_2->unk8[2] + sp70[2];
var_s0_2->unk8[1] = var_s0_2->unk20 * temp_f22;
func_8032F64C(var_s0_2->unk8, var_s0_2->unk0);
}
}
}
}
#endif
void func_803506DC(void){
s32 sp1C = D_80386150.unk8;
s32 sp18 = D_80386150.unk14;
D_80386150.unk8 = (Struct_core2_C89C0_1 *)defrag(sp1C);
D_80386150.unkC = ((s32)D_80386150.unkC - (s32)sp1C) + (s32)D_80386150.unk8;
D_80386150.unk10 = ((s32)D_80386150.unk10 - (s32)sp1C) + (s32)D_80386150.unk8;
D_80386150.unk14 = (Struct_core2_C89C0_0 *)defrag(D_80386150.unk14);
D_80386150.unk18 = ((s32)D_80386150.unk18 - (s32)sp18) + (s32)D_80386150.unk14;
D_80386150.unk1C = ((s32)D_80386150.unk1C - (s32)sp18) + (s32)D_80386150.unk14;
}