core2/code_7A760.c done

This commit is contained in:
Banjo Kazooie
2022-08-11 18:39:17 -05:00
parent bd0dfb3ea5
commit a5acb3dd82
16 changed files with 540 additions and 81 deletions

View File

@@ -1614,6 +1614,8 @@ enum actor_e
ACTOR_1CC_GRILL_CHOMPA = 0x1CC,
ACTOR_1DB_GAME_OVER = 0x1DB,
ACTOR_1E4_TOOTS = 0x1E4,
ACTOR_1EA_POLAR_BEAR_CUB_BLUE = 0x1EA,
@@ -2896,7 +2898,7 @@ enum asset_e
// 549 GL Gold Feather Refill Pillow
// 54a Gruntling (Red Cloak)
// 54b (Big Fireball?)
// 54c Game Over Sign
ASSET_54C_MODEL_GAME_OVER = 0x54C,
// 54d Banjo-Kazooie Sign
// 54e Copyright Info (Title Screen)
// 54f Cheato
@@ -3633,6 +3635,8 @@ enum marker_e{
MARKER_168_ICE_KEY,
MARKER_169_SNS_EGG,
MARKER_174_GAME_OVER = 0x174,
MARKER_182_RBB_EGG_TOLL = 0x182,
MARKER_1AE_ZUBBA = 0x1AE,

View File

@@ -210,7 +210,7 @@ void func_80300C70(enum item_e, struct8s *);
struct7s *func_8030179C(s32);
void func_80301DE4(enum item_e, struct7s *);
void func_803017D0(s32, struct8s *, Gfx**, Mtx**, s32);
void func_803017D0(enum item_e, struct8s *, Gfx**, Mtx**, Vtx **);
void func_80301754(s32, struct8s *);

View File

@@ -108,7 +108,8 @@ typedef struct {
s16 unkC[3];
u8 unk12[3];
u8 unk15;
u8 pad16[2];
s8 unk16;
u8 pad17[1];
}BKModelUnk14_0;
typedef struct {
@@ -117,7 +118,8 @@ typedef struct {
s16 unk4[3];
u8 unkA[3];
u8 unkD;
u8 padE[2];
s8 unkE;
u8 padF[1];
}BKModelUnk14_1;
typedef struct {
@@ -130,7 +132,7 @@ typedef struct {
typedef struct {
s16 cnt0; //number of BKModelUnk14_0 structs
s16 cnt2; //number of BKModelUnk14_1 structs
s16 unk4;
s16 unk4; //number of BKModelUnk14_2 structs
s16 unk6;
//BKModelUnk14_0[]
//BKModelUnk14_1[]

View File

@@ -324,11 +324,11 @@ typedef struct {
s16 x;
s16 y;
s16 z;
u16 unk6_15: 9; //selector_value
u16 unk6_15: 9; //selector_value //volume??? diameter
u16 unk6_6: 6; //category
u16 unk6_0: 1;
u16 unk8;
u8 unkA;
u8 unkA; //marker_id
u8 padB[1];
u32 unkC_31:9;
u32 unkC_22:23;
@@ -347,7 +347,7 @@ typedef struct cude_s{
s32 z:5;
u32 prop1Cnt:6;
u32 prop2Cnt:6;
u32 unk0_4:5;
u32 unk0_4:5; //node_prop_count
NodeProp *prop1Ptr;
Prop *prop2Ptr;
}Cube;

View File

@@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h44v20H0z"/>
<path fill="#60e000" d="M44 0h67v20H44z"/>
<path fill="#5ee000" d="M44 0h67v20H44z"/>
<path fill="url(#b)" d="M0 0h111v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
@@ -17,7 +17,7 @@
<text x="22.0" y="14">core2</text>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">78.6359%</text>
<text x="77.5" y="14">78.6359%</text>
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">78.9639%</text>
<text x="77.5" y="14">78.9639%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -17,7 +17,7 @@
<text x="75.0" y="14">Banjo-Kazooie (us.v10)</text>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">82.7246%</text>
<text x="183.5" y="14">82.7246%</text>
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">82.9127%</text>
<text x="183.5" y="14">82.9127%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -49,16 +49,16 @@ int func_80388B30(Actor *this, float arg1){
return 0;
}
void func_80388BEC(s16 *arg0, ActorMarker *arg1){
void func_80388BEC(NodeProp *arg0, ActorMarker *arg1){
f32 sp34;
Actor *sp30;
Actor *temp_v0;
f32 sp20[3];
sp20[0] = (f32)arg0[0];
sp20[1] = (f32)arg0[1];
sp20[2] = (f32)arg0[2];
sp20[0] = (f32)arg0->x;
sp20[1] = (f32)arg0->y;
sp20[2] = (f32)arg0->z;
sp30 = func_80326D68(sp20, 0x11, -1, &sp34);
if( sp30 != NULL
&& !( sp34 > 500.0f )

View File

@@ -180,7 +180,7 @@ Struct_core2_13FC0 D_803648F0[14] = {
// s32 exit_id;
// }D_8037D1E0;
s32 D_8037D1E0[2];
extern u8 D_8037D1E8;
u8 D_8037D1E8;
/* .code */
f32 func_8029B3B0(f32 arg0) {
@@ -695,9 +695,6 @@ void func_8029C5E8(void){
func_8029AE1C();
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_14420/func_8029C608.s")
#else
void func_8029C608(void) {
enum level_e level_id;
enum map_e sp18;
@@ -714,7 +711,6 @@ void func_8029C608(void) {
D_8037D1E0[1] = phi_v0;
D_8037D1E0[0] = sp18;
}
#endif
void func_8029C674(void) {
f32 sp1C[3];

View File

@@ -11,7 +11,7 @@ void func_802DC45C(Actor *this);
/* .data */
f32 D_80368040[3] = {0.0f, 0.0f, 0.0f};
ActorInfo D_8036804C = {
0x174, 0x1DB, 0x54C,
MARKER_174_GAME_OVER, ACTOR_1DB_GAME_OVER, ASSET_54C_MODEL_GAME_OVER,
0x1, NULL,
func_802DC45C, func_80326224, func_802DC320,
0, 0, 0.0f, 0
@@ -74,7 +74,7 @@ void func_802DC45C(Actor *this){
void func_802DC4C4(void) {
Actor *actor;
if (D_8037DE40 == 0) {
actor = func_8032813C(0x1DB, D_80368040, 0);
actor = func_8032813C(ACTOR_1DB_GAME_OVER, D_80368040, 0);
D_8037DE40 = actor->marker;
func_8025A58C(0, 5000);
func_8025AB00();
@@ -82,7 +82,7 @@ void func_802DC4C4(void) {
}
}
void func_802DC528(s32 arg0, s32 arg1){
void func_802DC528(NodeProp *arg0, ActorMarker *arg1){
if(D_8037DE40 == NULL){
func_802C3BF8(func_802DC4C4);
}
@@ -91,7 +91,7 @@ void func_802DC528(s32 arg0, s32 arg1){
void func_802DC560(s32 arg0, s32 arg1){
if(D_8037DE40 != NULL){
comusic_8025AB44(COMUSIC_31_GAME_OVER, 0, 200);
func_8025AABC(0x31);
func_8025AABC(COMUSIC_31_GAME_OVER);
func_80326310(marker_getActor(D_8037DE40));
}
}

View File

@@ -4,6 +4,7 @@
extern void func_80252C08(f32[3], f32[3], f32, f32[3]);
extern void func_80252CC4(f32[3], f32[3], f32, s32);
extern void func_802524F0(f32[3], f32, f32, f32);
/* .bss */
Mtx D_80380880;
@@ -122,15 +123,194 @@ s32 func_802EAB34(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32
}
#endif
s32 func_802EAD5C(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 scale, s32 arg4, f32 arg5[3], f32 arg6) {
BKModelUnk14_0 *t0_ptr;
BKModelUnk14_1 *t1_ptr;
f32 sp5C[3];
f32 temp_f20;
f32 sp4C[3];
BKModelUnk14_2 *end_ptr;
BKModelUnk14_2 *var_s0;
f32 pad40;
f32 sp34[3];
s32 func_802EAD5C(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 scale, s32 arg4, f32 arg6[3], f32 arg7);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_637D0/func_802EAD5C.s")
mlMtxIdent();
func_80252CC4(position, rotation, scale, arg4);
func_8025235C(sp5C, arg5);
t0_ptr = (BKModelUnk14_0 *)(arg0 + 1);
t1_ptr = (BKModelUnk14_1 *)(t0_ptr + arg0->cnt0);
var_s0 = (BKModelUnk14_2 *)(t1_ptr + arg0->cnt2);
end_ptr = var_s0 + arg0->unk4;
for(var_s0 = var_s0; var_s0 < end_ptr; var_s0++) {
sp4C[0] = (f32) var_s0->unk2[0];
sp4C[1] = (f32) var_s0->unk2[1];
sp4C[2] = (f32) var_s0->unk2[2];
temp_f20 = (f32)var_s0->unk0;
sp34[0] = sp4C[0] - sp5C[0];
sp34[1] = sp4C[1] - sp5C[1];
sp34[2] = sp4C[2] - sp5C[2];
if (!( gu_sqrtf(sp34[0]*sp34[0] + sp34[1]*sp34[1] + sp34[2]*sp34[2]) >= ((arg6 / scale) + temp_f20))) {
return var_s0->unk8;
}
}
return 0;
}
#ifndef NONMATCHING
s32 func_802EAED4(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 scale, s32 arg4, s32 arg5, f32 arg6[3], f32 arg7);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_637D0/func_802EAED4.s")
#else
s32 func_802EAED4(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 scale, s32 arg4, struct58s *arg5, f32 arg6[3], f32 arg7) {
f32 spF4[3];
f32 spE8[3];
f32 spDC[3];
f32 spD0[3];
BKModelUnk14_0 *end_ptr;
BKModelUnk14_0 *var_s0;
f32 spBC[3];
f32 spB0[3];
f32 spA4[3];
f32 sp98[3];
f32 sp8C[3];
f32 sp80[3];
f32 sp74[3];
f32 sp68[3];
f32 sp5C[3];
var_s0 = (BKModelUnk14_0 *)(arg0 + 1);
end_ptr = var_s0 + arg0->cnt0;
for(var_s0 = var_s0; var_s0 < end_ptr; var_s0++){
spF4[0] = (f32) var_s0->unkC[0];
spF4[1] = (f32) var_s0->unkC[1];
spF4[2] = (f32) var_s0->unkC[2];
spE8[0] = (f32) var_s0->unk0[0];
spE8[1] = (f32) var_s0->unk0[1];
spE8[2] = (f32) var_s0->unk0[2];
spDC[0] = (f32) var_s0->unk6[0];
spDC[1] = (f32) var_s0->unk6[1];
spDC[2] = (f32) var_s0->unk6[2];
spD0[0] = (f32)var_s0->unk12[0];
spD0[1] = (f32)var_s0->unk12[1];
spD0[2] = (f32)var_s0->unk12[2];
spD0[0] *= 2;
spD0[1] *= 2;
spD0[2] *= 2;
func_802519C8(&D_80380880, func_802EA110(arg5, var_s0->unk16));
func_80252E4C(spF4, spD0);
func_802524F0(spB0, spE8[0], spE8[1], spE8[2]);
func_802524F0(sp98, spE8[0], spE8[1], spDC[2]);
spBC[0] = spB0[0] - sp98[0];
spBC[1] = spB0[1] - sp98[1];
spBC[2] = spB0[2] - sp98[2];
ml_vec3f_normalize(spBC);
spA4[0] = arg6[0] - spB0[0];
spA4[1] = arg6[1] - spB0[1];
spA4[2] = arg6[2] - spB0[2];
if ((arg7 <= ((spA4[0]*spBC[0]) + (spA4[1]*spBC[1]) + (spA4[2]*spBC[2])))) {
sp8C[0] = arg6[0] - sp98[0];
sp8C[1] = arg6[1] - sp98[1];
sp8C[2] = arg6[2] - sp98[2];
if (!(arg7 <= -((sp8C[0]*spBC[0]) + (sp8C[1]*spBC[1]) + (sp8C[2]*spBC[2])))) {
func_802524F0(sp80, spDC[0], spE8[1], spE8[2]);
spBC[0] = spB0[0] - sp80[0];
spBC[1] = spB0[1] - sp80[1];
spBC[2] = spB0[2] - sp80[2];
ml_vec3f_normalize(spBC);
if (!(arg7 <= ((spA4[0]*spBC[0]) + (spA4[1]*spBC[1]) + (spA4[2]*spBC[2])))) {
sp74[0] = arg6[0] - sp80[0];
sp74[1] = arg6[1] - sp80[1];
sp74[2] = arg6[2] - sp80[2];
if (!(arg7 <= -((sp74[0]*spBC[0]) + (sp74[1]*spBC[1]) + (sp74[2]*spBC[2])))) {
func_802524F0(sp68, spE8[0], spDC[1], spE8[2]);
spBC[0] = spB0[0] - sp68[0];
spBC[1] = spB0[1] - sp68[1];
spBC[2] = spB0[2] - sp68[2];
ml_vec3f_normalize(spBC);
if (!(arg7 <= ((spA4[0]*spBC[0]) + (spA4[1]*spBC[1]) + (spA4[2]*spBC[2])))) {
sp5C[0] = arg6[0] - sp68[0];
sp5C[1] = arg6[1] - sp68[1];
sp5C[2] = arg6[2] - sp68[2];
if (!(arg7 <= -((sp5C[0]*spBC[0]) + (sp5C[1]*spBC[1]) + (sp5C[2]*spBC[2])))) {
return 1;
}
}
}
}
}
}
mlMtxPop();
}
return 0;
}
#endif
#ifndef NONMATCHING
s32 func_802EB458(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 scale, s32 arg4, s32 arg5, f32 arg6[3], f32 arg7);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_637D0/func_802EB458.s")
#else
s32 func_802EB458(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 scale, s32 arg4, s32 arg5, f32 arg6[3], f32 arg7) {
BKModelUnk14_0 *ptr_t0;
f32 spB8[3];
f32 spAC[3];
f32 sp98[3];
f32 sp8C[3];
f32 sp80[3];
f32 sp74[3];
f32 sp68[3];
f32 temp_f0;
f32 temp_f20;
BKModelUnk14_1 *temp_s2;
BKModelUnk14_1 *var_s0;
ptr_t0 = (BKModelUnk14_0 *)(arg0 + 1);
var_s0 = (BKModelUnk14_1 *)(ptr_t0 + arg0->cnt0);
temp_s2 = var_s0 + arg0->cnt2;
for(var_s0 = var_s0; var_s0 < temp_s2; var_s0++){
spB8[0] = (f32) var_s0->unk4[0];
spB8[1] = (f32) var_s0->unk4[1];
spB8[2] = (f32) var_s0->unk4[2];
spAC[0] = (f32) (var_s0->unkA[0] * 2);
spAC[1] = (f32) (var_s0->unkA[1] * 2);
spAC[2] = (f32) (var_s0->unkA[2] * 2);
func_802519C8(&D_80380880, func_802EA110(arg5, var_s0->unkE));
func_80252D8C(spB8, spAC);
func_802524F0(sp98, 0.0f, 0.0f, (f32) (-var_s0->unk2 / 2));
func_802524F0(sp8C, 0.0f, 0.0f, (f32) (var_s0->unk2 / 2));
func_802524F0(sp68, (f32) var_s0->unk0, 0.0f, (f32) (-var_s0->unk2 / 2));
sp68[0] -= sp98[0];
sp68[1] -= sp98[1];
sp68[2] -= sp98[2];
sp80[0] = sp98[0] - sp8C[0];
sp80[1] = sp98[1] - sp8C[1];
sp80[2] = sp98[2] - sp8C[2];
ml_vec3f_normalize(sp80);
sp74[0] = arg6[0] - sp98[0];
sp74[1] = arg6[1] - sp98[1];
sp74[2] = arg6[2] - sp98[2];
temp_f0 = sp80[0]*sp74[0] + sp80[1]*sp74[1] + sp80[2]*sp74[2];
if (!(arg7 < temp_f0)) {
sp74[0] = arg6[0] - sp8C[0];
sp74[1] = arg6[1] - sp8C[1];
sp74[2] = arg6[2] - sp8C[2];
if (!(arg7 < -(sp80[0]*sp74[0] + sp80[1]*sp74[1] + sp80[2]*sp74[2]))) {
sp74[0] = arg6[0] - (sp98[0] + (sp80[0]*temp_f0));
sp74[1] = arg6[1] - (sp98[1] + (sp80[1]*temp_f0));
sp74[2] = arg6[2] - (sp98[2] + (sp80[2]*temp_f0));
temp_f20 = gu_sqrtf(sp74[0]*sp74[0] + sp74[1]*sp74[1] + sp74[2]*sp74[2]);
if (!((temp_f20 - arg7) > gu_sqrtf(sp68[0]*sp68[0] + sp68[1]*sp68[1] + sp68[2]*sp68[2]))) {
return var_s0->unkD;
}
}
}
mlMtxPop();
}
return 0;
}
#endif
s32 func_802EB8A0(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 scale, s32 arg4, s32 arg5, f32 arg6[3], f32 arg7);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_637D0/func_802EB8A0.s")

View File

@@ -2,6 +2,8 @@
#include "functions.h"
#include "variables.h"
extern f32 func_802FB0E4(struct8s *);
/* .data */
BKSprite *D_8036A960 = NULL;
Gfx D_8036A968[] ={
@@ -15,9 +17,6 @@ Gfx D_8036A968[] ={
gsSPEndDisplayList(),
};
/* .rodata */
extern f64 D_803774A0;
/* .bss */
s32 D_80381F50;
f32 D_80381F54;
@@ -28,24 +27,104 @@ f32 D_80381F68[6];
struct7s D_80381F80;
/* .code */
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_803016F0.s")
void func_803016F0(void) {
s32 i;
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_80301754.s")
D_80381F58 = -272.0f;
D_80381F54 = 1.0f;
D_80381F50 = 0;
for(i = 0; i < 6; i++){
D_80381F68[i] = -64.0f;
}
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_8030179C.s")
void func_80301754(s32 arg0, struct8s *arg1) {
if (D_8036A960 != NULL) {
func_8033BD4C(D_8036A960);
D_8036A960 = NULL;
}
func_803016F0();
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_803017D0.s")
struct7s *func_8030179C(s32 arg0) {
func_803016F0();
D_80381F5C = 0.68f;
return &D_80381F80;
}
bool func_80301CE0(f32, s32, s32);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_80301CE0.s")
void func_803017D0(enum item_e item_id, struct8s *arg1, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
f32 temp_f16;
f32 var_f14;
s32 spD4;
s32 spD0;
s32 var_s4;
s32 var_s6;
s32 var_s7;
s32 var_v0;
s32 var_v1;
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_80301D24.s")
if (D_8036A960 != 0) {
gSPDisplayList((*gfx)++, D_8036A968);
func_80347FC0(gfx, D_8036A960, 0, 0, 0, 0, 0, 2, 2, &spD4, &spD0);
func_8024C7B8(gfx, mtx);
for(var_s4 = 0; var_s4 < 6; var_s4++){
var_s7 = var_s4 & 1;
if ((var_s4 != 0) && (var_s4 != 5)) {
var_s6 = (var_s7) ? var_s4 + 1 : var_s4 - 1;
} else {
var_s6 = var_s4;
}
gDPPipeSync((*gfx)++);
if ((f32) (5 - var_s4) < D_80381F60) {
gDPSetPrimColor((*gfx)++, 0, 0, 0x00, 0x00, 0x00, 0xFF);
} else {
gDPSetPrimColor((*gfx)++, 0, 0, 0x00, 0x00, 0x00, 0x78);
}
temp_f16 = func_802FB0E4(arg1);
temp_f16 = (-40.0f + temp_f16);
var_f14 = (temp_f16 + D_80381F68[var_s6]) - ((f32) D_80276588 / 2);
temp_f16 = (((var_s4 * 15.5) + 78.0) - ((f32) D_8027658C / 2));
var_f14 = (var_s7) ? var_f14 + 5.0f : var_f14 - 5.0f;
gSPVertex((*gfx)++, *vtx, 4, 0);
for(var_v1 = 0; var_v1 < 2; var_v1++){
for(var_v0 = 0; var_v0 < 2; var_v0++){
(*vtx)->v.ob[0] = ((((spD4 * D_80381F5C) * (f32) var_v0) - ((spD4 * D_80381F5C) / 2)) + var_f14) * 4.0f;
(*vtx)->v.ob[1] = ((((spD0 * D_80381F5C) / 2) - ((spD0 * D_80381F5C) * ((f32)var_v1))) + temp_f16) * 4.0f;
(*vtx)->v.ob[2] = -0x14;
(*vtx)->v.tc[0] = ((spD4 - 1) * var_v0) << 6;
(*vtx)->v.tc[1] = ((spD0 - 1) * var_v1) << 6;
(*vtx)++;
}
}
gSP1Quadrangle((*gfx)++, 0, 1, 3, 2, 0);
}
gDPPipeSync((*gfx)++);
gDPSetTextureLUT((*gfx)++, G_TT_NONE);
gDPPipelineMode((*gfx)++, G_PM_NPRIMITIVE);
func_8024C904(gfx, mtx);
}
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_80301DBC.s")
bool func_80301CE0(f32 arg0, s32 arg1, s32 arg2){
if(arg1 == 5)
return TRUE;
return arg0 < D_80381F68[arg1 + 1];
}
s32 func_80301D24(s32 time) {
s32 minutes;
s32 var_v0;
var_v0 = (time != 0) ? 1 : 0;
minutes = (((s32) (6*time) / 60) / 60) + var_v0;
return MIN(6, minutes);
}
s32 func_80301DBC(s32 minutes) {
return (s32) (minutes * 60 * 60) / 6;
}
#ifndef NONMATCHING //probably just need .rodata defined
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7A760/func_80301DE4.s")
#else
void func_80301DE4(enum item_e arg0, struct7s *arg1) {
s32 temp_s0;
s32 var_s0;
@@ -69,9 +148,8 @@ void func_80301DE4(enum item_e arg0, struct7s *arg1) {
if (temp_s0 != 0) {
for(var_s0 = 5; var_s0 >= 0; var_s0--){
if (func_80301CE0(-15.0f, var_s0, 6)) {
D_80381F68[var_s0] *= D_803774A0;
D_80381F68[var_s0] *= 0.6;
}
}
}
}
#endif

View File

@@ -91,7 +91,7 @@ struct {
} D_80381FA0;
u8 D_80381FE8[0x50];
s32 D_80382038[0x20];
Cube *D_80382038[0x20];
s32 D_803820B8[0x20]; //ActorProp *, (maybe Prop *)
s32 pad_80382138;
s32 D_8038213C;
@@ -1493,9 +1493,44 @@ bool func_80307390(s32 arg0, s32 arg1) {
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803077FC.s")
Cube *func_80307948(s32 arg0[3]);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80307948.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80307CA0.s")
// void func_80307CA0(ActorMarker *marker) {
// s32 sp58[3];
// s32 sp40[3];
// Cube **var_s2;
// Cube *var_a0;
// NodeProp *temp_v0_2;
// s32 temp_v0_3;
// u32 var_s0;
// u8 temp_s4;
// s32 i;
// temp_s4 = D_8036A9E4[marker->unk14_20];
// if ((temp_s4 != 0xFF) && (func_802CAF70(D_8036A9E0, temp_s4) == 1)) {
// func_8032E010(marker->propPtr, sp58);
// var_s2 = func_80307948(sp58);
// var_a0 = *var_s2;
// for(i = 0; var_s2[i] != NULL; i++) {
// for(var_s0 = 0; var_s0 < var_s2[i]->unk0_4; var_s0++){
// temp_v0_2 = func_8032E02C(var_a0, var_s0);
// if (func_80330F74(temp_v0_2) == temp_s4) {
// temp_v0_3 = func_80330F94(temp_v0_2, sp40);
// if( ((sp40[0] - temp_v0_3) < sp58[0]) && (sp58[0] < (sp40[0] + temp_v0_3))
// && ((sp40[1] - temp_v0_3) < sp58[1]) && (sp58[1] < (sp40[1] + temp_v0_3))
// && ((sp40[2] - temp_v0_3) < sp58[2]) && (sp58[2] < (sp40[2] + temp_v0_3))
// ) {
// func_80334448(temp_v0_2, marker);
// }
// }
// }
// }
// }
// }
u32 func_80307E1C(void) {
Cube *phi_v0;
@@ -1540,6 +1575,7 @@ void func_80308230(s32 arg0) {
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803083B0.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803084F0.s")
void func_80308658(Struct_core2_7AF80_1 *arg0, s32 arg1) {

View File

@@ -458,9 +458,19 @@ ActorMarker *func_8032DCAC(void){
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032DFF4.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032E010.s")
void func_8032E010(ActorProp *prop, s32 dst[3]){
dst[0] = prop->x;
dst[1] = prop->y;
dst[2] = prop->z;
}
NodeProp *func_8032E02C(Cube *cube, s32 prop_index) {
if ((prop_index < 0) || (prop_index >= cube->prop1Cnt)) {
return NULL;
}
return &cube->prop1Ptr[prop_index];
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032E02C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032E070.s")
@@ -1137,13 +1147,24 @@ BKSprite *func_80330F50(ActorMarker * marker){
return sp1C;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_80330F74.s")
s32 func_80330F74(NodeProp *arg0){
return arg0->unkA; //marker_id
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_80330F7C.s")
s32 func_80330F7C(NodeProp *arg0){
return arg0->unk6_6;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_80330F8C.s")
s32 func_80330F8C(NodeProp *arg0){
return arg0->unk8;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_80330F94.s")
s32 func_80330F94(NodeProp *arg0, s32 arg1[3]){
arg1[0] = arg0->x;
arg1[1] = arg0->y;
arg1[2] = arg0->z;
return arg0->unk6_15;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_80330FBC.s")

View File

@@ -551,10 +551,10 @@ void func_80334430(s32 arg0, s32 arg1){}
void func_8033443C(s32 arg0, s32 arg1){}
void func_80334448(s32 arg0, s32 arg1) {
void func_80334448(NodeProp *arg0, ActorMarker *arg1) {
s32 sp24;
switch(func_80330F7C()) {
switch(func_80330F7C(arg0)) {
case 3: //L80334480
sp24 = func_8023DB5C();
if ((func_80330FC4(arg0) + 1) != sp24) {

View File

@@ -2,13 +2,17 @@
#include "functions.h"
#include "variables.h"
extern int func_80258424(f32 vec[3], f32 minX, f32 minY, f32 minZ, f32 maxX, f32 maxY, f32 maxZ);
extern f32 func_8031C5D4(struct0*);
extern void func_8031C5AC(struct0 *, f32 *);
extern f32 func_8031C5E4(struct0*);
extern void func_8031C5FC(struct0 *, f32);
extern f32 func_80255D70(f32 arg0);
extern s32 func_8029463C(void);
extern int func_80258424(f32 vec[3], f32 minX, f32 minY, f32 minZ, f32 maxX, f32 maxY, f32 maxZ);
extern f32 func_8031C5D4(struct0*);
extern void func_8031C5AC(struct0 *, f32 *);
extern f32 func_8031C5E4(struct0*);
extern void func_8031C5FC(struct0 *, f32);
extern void func_80244FC0(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3, s32 arg4, u32 arg5);
extern s32 func_80244E54(f32[3], f32[3], f32 [3], u32, f32, f32);
extern Struct66s *func_802457C4(f32[3], f32[3], f32, f32, f32[3], s32, u32);
extern f32 func_80255D70(f32 arg0);
extern s32 func_8029463C(void);
extern Struct66s *func_80320C94(f32[3], f32[3], f32, f32[3], s32, u32);
void func_80294378(s32 arg0);
void func_80294384(s32 arg0);
@@ -17,12 +21,24 @@ void func_80294390(void);
typedef struct {
f32 unk0[3];
f32 unkC[3];
u8 pad18[0x78];
Struct66s *unk18;
f32 unk1C[3];
f32 unk28[3];
f32 unk34[3];
s32 unk40;
f32 unk44[3];
u8 pad50[0x18];
f32 unk68[3];
u8 pad74[0x18];
s32 unk8C;
}Struct_core2_C4B0_0;
/* .rodata */
extern f64 D_80374760;
extern f64 D_80374768;
extern f64 D_80374770;
extern f64 D_80374778;
extern f64 D_80374780;
/* .bss */
f32 D_8037C1F0[2];
@@ -84,13 +100,13 @@ void func_8029350C(f32 *arg0) {
func_8031C5AC(D_8037C200, sp3C);
temp_v0 = D_8037C279;
D_8037C279 = FALSE;
if (!(sp3C[1] < D_80374760)) {
if (!(sp3C[1] < 0.432)) {
if (arg0[1] <= sp38) {
arg0[1] = sp38;
D_8037C279 = TRUE;
}
else if ((temp_v0 != 0) && (D_8037C238[1] < 0.0f)) {
if (sp3C[1] < D_80374768) {
if (sp3C[1] < 0.9) {
if (arg0[1] < (sp38 + 30.0f)) {
arg0[1] = sp38;
D_8037C279 = TRUE;
@@ -103,8 +119,142 @@ void func_8029350C(f32 *arg0) {
}
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_C4B0/func_80293668.s")
#else
void func_80293668(void) {
f32 sp3AC[3];
f32 sp3A0[3];
f32 temp_f0;
f32 sp390[3];
f32 sp38C;
f32 sp380[3];
f32 sp374[3];
s32 i;
f32 sp364[3];
Struct_core2_C4B0_0 *var_s1;
Struct_core2_C4B0_0 sp90[5];
u32 temp_s7;
s32 temp_v0;
temp_v0 = func_8028D694();
func_80244FC0(D_8037C228, sp390, D_8037C1F8[1], D_8037C1F8[0], 1, temp_v0 | 0x1E0000);
temp_s7 = temp_v0 | 0x1E0000;
for(i = 0; i < 5; i++){
var_s1 = (i != 0) ? &sp90[i - 1] : NULL;
if (i != 0) {
ml_vec3f_copy(sp90[i].unk0, var_s1->unk0);
ml_vec3f_copy(sp90[i].unkC, var_s1->unkC);
} else {
ml_vec3f_copy(sp90[i].unk0, D_8037C218);
ml_vec3f_copy(sp90[i].unkC, D_8037C228);
}
ml_vec3f_copy(sp364, sp90[i].unk0);
ml_vec3f_diff_copy(sp380, sp90[i].unk0, sp90[i].unkC);
temp_f0 = ((D_8037C1F8[1] * 2) - 4.0f);
if ((sp380[0]*sp380[0] + sp380[1]*sp380[1] + sp380[2]*sp380[2]) > (temp_f0 * temp_f0)) {
sp38C = sp90[i].unk0[1];
sp90[i].unk40 = func_80244E54(sp90[i].unkC, sp90[i].unk0, sp90[i].unk44, temp_s7, D_8037C1F8[1] - 1.0f, D_8037C1F8[0]);
if (sp90[i].unk40 != 0) {
ml_vec3f_normalize(sp380);
if ((sp380[0]*sp90[i].unk44[0] + sp380[1]*sp90[i].unk44[1] + sp380[2]*sp90[i].unk44[2]) > 0.0f) {
sp90[i].unk40 = 0;
ml_vec3f_copy(sp90[i].unk0, sp364);
}
}
if (sp90[i].unk40 != 0) {
if ((sp90[i].unk44[1] >= 0.0) && (sp90[i].unk44[1] < D_80374770)) {
sp90[i].unk0[1] = sp38C;
}
}
} else {
sp90[i].unk40 = 0;
}
func_8029350C(sp90[i].unk0);
sp90[i].unk8C = D_8037C279;
sp90[i].unk34[0] = sp90[i].unkC[0];
sp90[i].unk34[1] = sp90[i].unkC[1];
sp90[i].unk34[2] = sp90[i].unkC[2];
sp90[i].unk34[1] +=D_8037C1F8[0];
sp90[i].unk28[0] = sp90[i].unk0[0];
sp90[i].unk28[1] = sp90[i].unk0[1];
sp90[i].unk28[2] = sp90[i].unk0[2];
sp90[i].unk28[1] +=D_8037C1F8[0];
sp90[i].unk18 = func_80320C94(sp90[i].unk34, sp90[i].unk28, D_8037C1F8[1], sp90[i].unk1C, 3, temp_s7);
if (sp90[i].unk18 != NULL) {
D_8037C27D++;
D_8037C204 = sp90[i].unk18;
ml_vec3f_copy(D_8037C258, sp90[i].unk1C);
if (i == 2) {
if ((sp90[i].unk18 == sp90[0].unk18) && (var_s1->unk18 != sp90[0].unk18)) {
ml_vec3f_add(sp380, sp90[i].unk1C, var_s1->unk1C);
ml_vec3f_normalize(sp380);
ml_vec3f_copy(sp90[i].unk1C, sp380);
}
}
if (i == 2) {
if (sp90[i].unk18 == sp90[0].unk18) {
if ((var_s1->unk18 == sp90[i].unk18) && func_802946FC(sp90[i].unk68, sp90[i].unk18)) {
func_802578A4(sp380, sp90[i].unk0, sp90[i].unk68);
ml_vec3f_diff_copy(sp3A0, sp90[i].unk0, sp380);
ml_vec3f_set_length_copy(sp3A0, sp3A0, D_8037C1F8[1] + 1.0f);
sp380[0] += sp3A0[0];
sp380[1] += sp3A0[1];
sp380[2] += sp3A0[2];
if (!(sp90[i].unk18->unk8 & 0x00010000)) {
sp90[i].unk18 = func_802457C4(sp380, sp90[i].unk0, D_8037C1F8[0], D_8037C1F8[1], sp90[i].unk1C, 3, temp_s7);
} else {
ml_vec3f_copy(sp90[i].unk0, sp380);
}
}
}
}
if ((sp90[i].unk8C == 0) && (sp90[i].unk18 != NULL) && (D_8037C238[1] < 0.0f)) {
if( (mlAbsF(sp90[i].unk1C[1]) < D_80374778) && func_802946FC(sp90[i].unk68, sp90[i].unk18)) {
func_802578A4(sp380, sp90[i].unk0, sp90[i].unk68);
ml_vec3f_scale_copy(sp3A0, sp90[i].unk1C, D_8037C1F8[1] + 1.0f);
ml_vec3f_add(sp374, sp380, sp3A0);
sp90[i].unk18 = func_802457C4(sp374, sp380, D_8037C1F8[0], D_8037C1F8[1], sp90[i].unk1C, 3, temp_s7);
sp90[i].unk0[0] = sp380[0];
sp90[i].unk0[2] = sp380[2];
}
}
if ((D_80374780 < sp90[i].unk1C[1]) && func_802946FC(sp90[i].unk68, sp90[i].unk18)) {
func_8025778C(sp3AC, sp90[i].unk0, sp90[i].unk68);
sp380[0] = sp90[i].unk0[0] - sp3AC[0];
sp380[1] = 0.0f;
sp380[2] = sp90[i].unk0[2] - sp3AC[2];
ml_vec3f_set_length_copy(sp380, sp380, D_8037C1F8[1] + 1.0f);
sp380[0] = sp380[0] + sp3AC[0];
sp380[1] = sp380[1] + sp3AC[1];
sp380[2] = sp380[2] + sp3AC[2];
sp90[i].unk0[0] = sp380[0];
sp90[i].unk0[2] = sp380[2];
} else if (func_80258368(sp90[i].unk1C)) {
func_802450DC(sp90[i].unkC, sp90[i].unk0, sp90[i].unk34, sp90[i].unk28, sp90[i].unk1C);
}
}
else{
break;
}
}
if ((i == 5) && (D_8037C279 == 0) && (D_8037C204 != 0) && (D_8037C218[1] < D_8037C228[1])) {
D_8037C27C = 1;
}
if (i == 5) {
ml_vec3f_copy(D_8037C218, sp390);
}
else{
ml_vec3f_copy(D_8037C218, sp90[i].unk0);
}
}
#endif
void func_80293D2C(f32 *arg0, f32 * arg1){
*arg0 = D_8037C1F8[0];
@@ -120,21 +270,13 @@ void func_80293D48(f32 arg0, f32 arg1){
void func_80293D74(void){ func_80293D48(80.0f, 35.0f);}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_C4B0/func_80293DA4.s")
#else
void func_80293DA4(void){
D_8037C278 = 0;
D_8037C279 = 0;
D_8037C27B = 0;
D_8037C27C = 0;
D_8037C27E = 0;
D_8037C280 = 0;
D_8037C278 = D_8037C279 = D_8037C27B = D_8037C27E = D_8037C27C = D_8037C280 = 0;
D_8037C200 = func_8031B9D8();
ml_vec3f_clear(&D_8037C268);
ml_vec3f_clear(&D_8037C218);
ml_vec3f_clear(&D_8037C228);
ml_vec3f_clear(&D_8037C258);
ml_vec3f_clear(D_8037C268);
ml_vec3f_clear(D_8037C218);
ml_vec3f_clear(D_8037C228);
ml_vec3f_clear(D_8037C258);
D_8037C204 = 0;
D_8037C27F = 0;
func_80293D74();
@@ -145,7 +287,6 @@ void func_80293DA4(void){
D_8037C274 = 0;
func_80294378(1);
}
#endif
void func_80293E88(void){
func_8031BA9C(D_8037C200);
@@ -198,7 +339,7 @@ void func_80293F0C(void){
player_setYVelocity(1.0f);
}
func_80293668();
player_setPosition(&D_8037C218);
player_setPosition(D_8037C218);
break;
case 5:

View File

@@ -283,7 +283,7 @@ segments:
- [0x78E50, c, code_78E50]
- [0x79830, c, fxcommon3score] #DONE
- [0x79C80, c, code_79C80]
- [0x7A760, c, code_7A760]
- [0x7A760, c, code_7A760] #DONE
- [0x7AF80, c, code_7AF80]
- [0x82000, c, code_82000]
- [0x83340, c, code_83340]
@@ -596,7 +596,8 @@ segments:
- [0xED770, .rodata, code_B850]
- [0xED790, .rodata, code_BD20]
- [0xED7B0, .rodata, code_C0E0]
- [0xED7D0, bin, data_ED7D0]
- [0xED7D0, .rodata, code_C4B0]
- [0xED7E0, bin, data_ED7E0] #.rodata, code_C4B0]
- [0xED7F0, bin, data_ED7F0] #.rodata, code_C4B0]
- [0xED810, .rodata, code_D9B0]
- [0xED820, .rodata, code_E680]
@@ -749,7 +750,7 @@ segments:
- [0xF04A0, .rodata, code_78100]
- [0xF04D0, .rodata, fxcommon3score]
- [0xF04F0, .rodata, code_79C80]
- [0xF0500, bin, data_F0500]
- [0xF0500, .rodata, code_7A760]
- [0xF0520, .rodata, code_7AF80]
- [0xF0540, bin, data_F0540]
- [0xF14C0, .rodata, gc/transition]