core2/code_851D0.c done

This commit is contained in:
Banjo Kazooie 2022-11-02 14:31:03 -05:00
parent fefa2b7093
commit ceb24cd225
8 changed files with 232 additions and 386 deletions

View File

@ -1,4 +1,4 @@
# banjo (92.5147%)
# banjo (92.6466%)
<img src="./progress/progress_total.svg">

View File

@ -187,7 +187,7 @@ void fxcommon2score_free(enum item_e, struct8s *);
struct7s *func_802FDE2C(s32);
void func_802FE844(s32, struct8s *);
void func_802FDEE0(s32, struct8s *, Gfx**, Mtx**, s32*);
void func_802FDEE0(s32, struct8s *, Gfx**, Mtx**, Vtx **);
void func_802FDDC4(s32, struct8s *);
struct7s *func_802FF090(enum item_e);

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h44v20H0z"/>
<path fill="#2ae000" d="M44 0h67v20H44z"/>
<path fill="#29e000" 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">90.7278%</text>
<text x="77.5" y="14">90.7278%</text>
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">90.9578%</text>
<text x="77.5" y="14">90.9578%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h150v20H0z"/>
<path fill="#22e000" d="M150 0h67v20H150z"/>
<path fill="#21e000" d="M150 0h67v20H150z"/>
<path fill="url(#b)" d="M0 0h217v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
@ -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">92.5147%</text>
<text x="183.5" y="14">92.5147%</text>
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">92.6466%</text>
<text x="183.5" y="14">92.6466%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -18,7 +18,7 @@ f32 func_802FB0E4(s32);
extern void *D_8036A010;
extern void *D_8036A014;
extern f32 D_8036A018[];
extern s32 D_8036A018[];
extern Gfx D_8036A030[];
@ -93,96 +93,88 @@ f32 func_802FDE60(f32 arg0) {
return arg0;
}
#if 1
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_76D90/func_802FDEE0.s")
#else
void func_802FDEE0(s32 arg0, struct8s *arg1, Gfx **arg2, Mtx **arg3, s32 *arg4){
void func_802FDEE0(s32 arg0, struct8s *arg1, Gfx **arg2, Mtx **arg3, Vtx **arg4){
s32 var_v0;
s32 var_v1;
s32 sp13C;
s32 sp138;
s32 sp134;
f32 sp130;
f32 sp12C;
f32 sp128;
f32 sp124;
s32 phi_a1;
s32 phi_s4;
s32 phi_v0;
s32 phi_v1;
f64 phi_f24;
f32 temp_f30;
s32 i;
f64 var_f24;
u32 sp118;
f32 sp110;
if(!D_8036A010)
return;
phi_a1 = (D_803815C0 == 2) ? ((D_8036A014) ? D_8036A014: D_8036A010) : D_8036A010;
//func_80347FC0(arg2, phi_a1, 0, 0, 0, 0, 0, 2, 2, &sp13C, &sp138);
func_8024C7B8(arg2, arg3);
gSPDisplayList((*arg2)++, D_8036A030);
phi_s4 = 2;
for(sp134 = 0; sp134 < phi_a1; sp134++){
sp118 = D_803815C0 == 2;
if (D_8036A010 != 0) {
func_80347FC0(arg2, (sp118 ) ? (D_8036A014 != 0) ? D_8036A014 : D_8036A010 : D_8036A010, 0, 0, 0, 0, 0, 2, 2, &sp13C, &sp138);
func_8024C7B8(arg2, arg3);
gSPDisplayList((*arg2)++, D_8036A030);
for(sp134 = 0; sp134 < (sp118) ? (D_8036A014 != 0) ? 2 : 1 : 6; sp134++){
sp110 = D_8036A018[sp134] * -0x3C;
gDPPipeSync((*arg2)++);
if (sp118) {
if (sp134 != 0) {
func_80347FC0(arg2, D_8036A010, 0, 0, 0, 0, 0, 2, 2, &sp13C, &sp138);
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, (0xFF - D_803815E4));
} else {
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, D_803815E4);
}
} else {
if (D_803815D4 <= D_8036A018[sp134]) {
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, 0x50);
}
else{
if ((D_803815EC != 0) && ((D_803815D4 - 1.0f) == D_8036A018[sp134])) {
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, D_803815E8);
} else {
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, 0xFF);
}
}
}
sp128 = (244.0f - ((f32) D_80276588 / 2));
sp124 = func_802FB0E4(arg1) + ((f32) D_8027658C / 2) - 246.0f;
guTranslate(*arg3, sp128 * 4.0f, sp124 * 4.0f, 0.0f);
gSPMatrix((*arg2)++, OS_K0_TO_PHYSICAL((*arg3)++), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
guRotate(*arg3, func_802FDE60(D_803815D8 + D_803815DC), 0.0f, 0.0f, 1.0f);
gSPMatrix((*arg2)++, OS_K0_TO_PHYSICAL((*arg3)++), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
guScale(*arg3, D_803815E0, D_803815E0, D_803815E0);
gSPMatrix((*arg2)++, OS_K0_TO_PHYSICAL((*arg3)++), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
guTranslate(*arg3, -sp128 * 4.0f, -sp124 * 4.0f, 0.0f);
gSPMatrix((*arg2)++, OS_K0_TO_PHYSICAL((*arg3)++), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
var_f24 = MIN(1.0, MAX(0.0, D_803815C8));
sp130 = cosf(((D_803815CC + sp110) * 0.017453292519943295)) * (var_f24 * 24.5) * D_803815D0;
var_f24 = MIN(1.0, MAX(0.0, D_803815C8));
sp12C = sinf(((D_803815CC + sp110) * 0.017453292519943295))* (var_f24 * 24.5) * D_803815D0;
gSPVertex((*arg2)++, *arg4, 4, 0);
for(var_v1 = 0; var_v1 < 2; var_v1++){
for(var_v0 = 0; var_v0 < 2; var_v0++, (*arg4)++){
(*arg4)->v.ob[0] = ((((sp13C * D_803815D0) * var_v0) - ((sp13C * D_803815D0) / 2)) + (s32) (sp130 + sp128)) * 4.0f;
(*arg4)->v.ob[1] = ((((sp138 * D_803815D0) / 2) - ((sp138 * D_803815D0) * var_v1)) + (s32) (sp12C + sp124)) * 4.0f;
(*arg4)->v.ob[2] = -0x14;
(*arg4)->v.tc[0] = (s16) ((sp13C - 1) * var_v0 << 9);
(*arg4)->v.tc[1] = (s16) ((sp138 - 1) * var_v1 << 9);
}
}
gSP1Quadrangle((*arg2)++, 0, 1, 3, 2, 0);
}
gDPPipeSync((*arg2)++);
if(D_803815C0 == 2){
if(sp134 != 0){
//func_80347FC0(arg2, D_8036A010, 0, 0, 0, 0, 0, phi_s4, phi_s4, &sp13C, &sp138);
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, (0xFF - D_803815E4)& 0xFF);
}
else{
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, D_803815E4 & 0xFF);
}
}
else{
if(D_803815D4 < D_8036A018[sp134]){
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, 0x50);
}else if(D_803815EC && (D_803815D4 - 1.0f) == D_8036A018[sp134]){
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, D_803815E8 & 0xFF);
}else{
gDPSetPrimColor((*arg2)++, 0, 0, 0x00, 0x00, 0x00, 0xFF);
}
}
//if statements here
temp_f30 = 244.0f - ((f32) D_80276588 / 2.0f);
sp124 = (func_802FB0E4(arg1) + ((f32) D_8027658C / 2.0f)) - 246.0f;
guTranslate(*arg3, temp_f30 * 4.0f, sp124, 0);
gSPMatrix((*arg2)++, 0x80000000 + (*arg3)++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
guRotate(*arg3, func_802FDE60(D_803815D8 + D_803815DC), 0, 0, 1.0f);
gSPMatrix((*arg2)++, 0x80000000 + (*arg3)++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
guScale(*arg3, D_803815E0, D_803815E0, D_803815E0);
gSPMatrix((*arg2)++, 0x80000000 + (*arg3)++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
guTranslate(*arg3, -temp_f30 * 4.0f, -sp124 * 4.0f, 0);
gSPMatrix((*arg2)++, 0x80000000 + (*arg3)++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
phi_f24 = _76D90_MIN(_76D90_MAX(D_803815C8, 0.0),1.0);
sp134 = temp_f18 = ((f64) cosf((f32) ((f64) (*(void *)0x803815CC + sp110) * D_803773B0)) * (phi_f24 * D_803773B8) * D_803815D0);
gSPVertex((*arg2)++, *arg4, 4, 0);
do{
for(phi_v0 = 0; phi_v0 < phi_s4; phi_v0++){
// temp_f24 = (f32) sp13C * D_803815D0;
//(*arg4)->v.ob[0] = ((((temp_f24 * (f32) phi_v0) - (temp_f24 / 2.0f)) + temp_f14) * 4.0f);
// temp_f30_2 = (f32) sp138 * D_803815D0;
//(*arg4)->v.ob[1] = ((((temp_f30_2 * (f32) phi_v0) - (temp_f30_2 / 2.0f)) + temp_f14) * 4.0f);
// (*arg4)->unk4 = (u16)-0x14;
// (*arg4)->unk8 = (s16) (((sp13C - 1) * phi_v0) << 9);
// (*arg4)->unkA = (s16) (((sp138 - 1) * phi_v1) << 9);
// *arg4 = (void *) (*arg4 + 0x10);
//(*arg4)++
}// loop43
phi_v1++;
}while(phi_v1 != phi_s4); // loop42
phi_a1 = (D_803815C0 == 2) ? ((D_8036A014) ? ++phi_s4: 1) : 6;
gDPSetTextureLUT((*arg2)++, G_TT_NONE);
gDPPipelineMode((*arg2)++, G_PM_NPRIMITIVE);
func_8024C904(arg2, arg3);
}
//L802FE7A0
//gSP1Quadrangle((*arg2)++, 0, 1, 3, 2, 0);
gDPPipeSync((*arg2)++);
gDPSetTextureLUT((*arg2)++, G_TT_NONE);
gDPPipelineMode((*arg2)++, G_PM_NPRIMITIVE);
func_8024C904(arg2, arg3, arg4);
//L802FE7FC
}
#endif

View File

@ -37,6 +37,7 @@ typedef struct {
NodeProp *func_803049CC(enum actor_e actor_id, s32 arg1[3]);
s32 func_80304FC4(enum actor_e *actor_id_list, NodeProp **node_list, s32 arg2);
void cube_positionToIndices(s32 arg0[3], f32 arg1[3]);
NodeProp *func_803080C8(s32 arg0);
void func_80308984(void);
void func_80308D2C(Gfx **gfx, Mtx **mtx, Vtx **vtx);
void func_80308F0C(Cube *cube);
@ -92,9 +93,9 @@ struct {
u8 D_80381FE8[0x50];
Cube *D_80382038[0x1C];
s32 D_803820A8[3];
s32 D_803820B4;
Cube *D_80382038[0x1C]; //static?
s32 D_803820A8[3]; //local static
s32 D_803820B4; //local static
s32 D_803820B8[0x20]; //ActorProp *, (maybe Prop *)
s32 pad_80382138;
s32 D_8038213C;
@ -1827,90 +1828,56 @@ s32 func_803073CC(f32 arg0[3], s32 arg1, s32 arg2) {
return -1;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80307504.s")
// s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
// s32 sp4C[3];
// s32 sp40;
// s32 temp_a0;
// s32 temp_t3;
// s32 temp_v0;
// s32 temp_v0_2;
// s32 temp_v0_4;
// s32 temp_v0_5;
// s32 temp_v1;
// s32 var_a3;
// u32 temp_t1;
// u32 temp_t1_2;
// u32 temp_v0_3;
// u32 var_s0;
// u32 var_s0_2;
// Struct_core2_7AF80_2 *temp_s0;
// void *temp_s1;
s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
Struct_core2_7AF80_2 *var_s0;
Struct_core2_7AF80_1 *temp_s1;
s32 min;
s32 max;
s32 sp4C[3];
// ml_vec3f_to_vec3w(sp4C, arg0);
// // temp_s1 = D_8036A9C8[arg1].unk4;
// if (D_80381FE8[D_8036A9C8[arg1].unk4] == 0) {
// return -1;
// }
ml_vec3f_to_vec3w(sp4C, arg0);
temp_s1 = &D_8036A9C8[arg1];
if (D_80381FE8[temp_s1->unk4] == 0) {
return -1;
}
// sp40 = arg4 & 1;
// temp_s0 = &D_8036A9C8[arg1].unk8[arg2];
// temp_t3 = arg3 / 2;
// temp_v1 = sp4C[1] + temp_t3;
// temp_a0 = sp4C[1] - temp_t3;
// if (sp40) {
// if (temp_s0->unk10_3 & arg4) {
// if ((temp_v1 >= temp_s0->unk0[1]) && (temp_a0 < temp_s0->unk0[1])) {
// if (func_80259328(&sp4C, temp_s0, temp_s0->unkC, sp40)) {
// return arg2;
// }
// }
// }
// goto block_14;
// }
// else{
// if ((temp_s0->unk10_3 & arg4) && ((temp_s0->unk10_3 & 2) || ((temp_v0_2 = temp_s0->unk0[1], ((temp_v1 < temp_v0_2) == 0)) && (temp_a0 < temp_v0_2)))) {
// if (func_80259328(&sp4C, temp_s0, temp_s0->unkC, sp40) != 0) {
// return arg2;
// }
// }
// }
// block_14:
// temp_v0_3 = temp_s1->unk8;
// if (var_a3 != 0) {
// var_s0_2 = temp_v0_3;
// if (temp_v0_3 < (u32) (temp_v0_3 + (temp_s1->unk0 * 0x14))) {
// loop_16:
// if (((u32) (var_s0_2->unk10 << 0x1C) >> 0x1D) & arg4) {
// temp_v0_4 = var_s0_2->unk4;
// if ((temp_v1 >= temp_v0_4) && (temp_a0 < temp_v0_4) && (func_80259328(&sp4C, (void *) var_s0_2, var_s0_2->unkC) != 0)) {
// return (s32) (var_s0_2 - temp_s1->unk8) / 20;
// }
// }
// var_s0_2 += 0x14;
// if (var_s0_2 >= (u32) (temp_s1->unk8 + (temp_s1->unk0 * 0x14))) {
// goto block_31;
// }
// goto loop_16;
// }
// goto block_31;
// }
// var_s0 = temp_v0_3;
// if (temp_v0_3 < (u32) (temp_v0_3 + (temp_s1->unk0 * 0x14))) {
// loop_24:
// temp_t1_2 = (u32) (var_s0->unk10 << 0x1C) >> 0x1D;
// if ((temp_t1_2 & arg4) && ((temp_t1_2 & 2) || ((temp_v0_5 = var_s0->unk4, ((temp_v1 < temp_v0_5) == 0)) && (temp_a0 < temp_v0_5))) && (func_80259328(&sp4C, (void *) var_s0, var_s0->unkC) != 0)) {
// return (s32) (var_s0 - temp_s1->unk8) / 20;
// }
// var_s0 += 0x14;
// if (var_s0 >= (u32) (temp_s1->unk8 + (temp_s1->unk0 * 0x14))) {
// goto block_31;
// }
// goto loop_24;
// }
// block_31:
// return -1;
// }
var_s0 = &temp_s1->unk8[arg2];
max = sp4C[1] + arg3 / 2;
min = sp4C[1] - arg3 / 2;
if (arg4 & 1) {
if (var_s0->unk10_3 & arg4) {
if (!(max < var_s0->unk0[1]) && (min < var_s0->unk0[1])) {
if (func_80259328(sp4C, var_s0->unk0, var_s0->unkC)) {
return arg2;
}
}
}
}
else{
if( (var_s0->unk10_3 & arg4))
if( ((var_s0->unk10_3 & 2) || (!(max < var_s0->unk0[1]) && (min < var_s0->unk0[1]))))
if( func_80259328(&sp4C, var_s0->unk0, var_s0->unkC))
return arg2;
}
if (arg4 & 1) {
for(var_s0 = temp_s1->unk8; var_s0 < temp_s1->unk8 + temp_s1->unk0; var_s0++){
if (var_s0->unk10_3 & arg4)
if (!(max < var_s0->unk0[1]) && (min < var_s0->unk0[1]))
if(func_80259328(&sp4C, var_s0, var_s0->unkC))
return (var_s0 - temp_s1->unk8);
}
}
else{
for(var_s0 = temp_s1->unk8; var_s0 < temp_s1->unk8 + temp_s1->unk0; var_s0++){
if ((var_s0->unk10_3 & arg4))
if(((var_s0->unk10_3 & 2) || (!(max < var_s0->unk0[1]) && (min < var_s0->unk0[1]))))
if(func_80259328(&sp4C, var_s0, var_s0->unkC))
return var_s0 - temp_s1->unk8;
}
}
return -1;
}
bool func_803077FC(f32 arg0[3], s32 *arg1, s32 *arg2, s32 arg3, u32 arg4) {
s32 sp3C[3];
@ -2091,6 +2058,9 @@ u32 func_80307EA8(s32 arg0, s32 arg1[3], s32 *arg2, s32 *arg3) {
u32 var_s4;
NodeProp *temp_a0;
Cube *temp_v0;
static s32 D_803820A8[3];
static s32 D_803820B4;
var_s4 = 0;
if (arg0 == 0) {
@ -2101,23 +2071,22 @@ u32 func_80307EA8(s32 arg0, s32 arg1[3], s32 *arg2, s32 *arg3) {
return 0;
}
while(var_s4 == 0){
var_s2 = D_803820B4;
if (D_80381FA0.max[0] < D_803820A8[0]) {
return -1U;
}
temp_v0 = cube_atIndices(D_803820A8);
if ((temp_v0 != NULL) && (temp_v0->prop1Cnt != 0)) {
*arg2 = temp_v0->prop1Ptr[var_s2].unk10_19;
var_s4 = temp_v0->prop1Ptr[var_s2].unk10_31;
*arg3 = temp_v0->prop1Ptr[var_s2].unk6.bit0;
arg1[0] = temp_v0->prop1Ptr[var_s2].x;
arg1[1] = temp_v0->prop1Ptr[var_s2].y;
arg1[2] = temp_v0->prop1Ptr[var_s2].z;
var_s2++;
var_s4 = temp_v0->prop1Ptr[D_803820B4].unk10_31;
*arg2 = temp_v0->prop1Ptr[D_803820B4].unk10_19;
*arg3 = temp_v0->prop1Ptr[D_803820B4].unk6.bit0;
arg1[0] = temp_v0->prop1Ptr[D_803820B4].x;
arg1[1] = temp_v0->prop1Ptr[D_803820B4].y;
arg1[2] = temp_v0->prop1Ptr[D_803820B4].z;
D_803820B4++;
}
if ((temp_v0 == NULL) || (var_s2 >= temp_v0->prop1Cnt)) {
var_s2 = 0;
if ((temp_v0 == NULL) || (D_803820B4 >= temp_v0->prop1Cnt)) {
D_803820B4 = 0;
D_803820A8[2]++;
if (D_80381FA0.max[2] < D_803820A8[2]) {
D_803820A8[2] = D_80381FA0.min[2];
@ -2132,14 +2101,38 @@ u32 func_80307EA8(s32 arg0, s32 arg1[3], s32 *arg2, s32 *arg3) {
}
}
}
D_803820B4 = var_s2;
}
return var_s4;
}
#endif
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803080C8.s")
NodeProp *func_803080C8(s32 arg0) {
s32 sp3C[3];
u32 var_v1;
Cube *temp_v0;
for(sp3C[1] = D_80381FA0.min[1]; sp3C[1] <= D_80381FA0.max[1]; sp3C[1]++){
if(func_80305C30(sp3C[1] - D_80381FA0.min[1])){
for(sp3C[0] = D_80381FA0.min[0]; sp3C[0] <= D_80381FA0.max[0]; sp3C[0]++){
for(sp3C[2] = D_80381FA0.min[2]; sp3C[2] <= D_80381FA0.max[2]; sp3C[2]++){
temp_v0 = cube_atIndices(&sp3C);
if (temp_v0 != NULL) {
for(var_v1 = 0; var_v1 < temp_v0->prop1Cnt; var_v1++){
if (arg0 == temp_v0->prop1Ptr[var_v1].unk10_31) {
D_8036A9DC = temp_v0;
return &temp_v0->prop1Ptr[var_v1];
}
}
}
}
}
}
}
D_8036A9DC = NULL;
return NULL;
}
UNK_TYPE(s32) func_80308224(void){
return D_8036A9DC;
@ -2178,44 +2171,50 @@ bool func_803082D8(Cube *arg0, s32 *arg1, bool arg2, bool arg3) {
return var_a0;
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803083B0.s")
// s32 func_803083B0(s32 arg0) {
// s32 temp_v0;
// s32 var_v0;
// Cube *var_s0;
#else
s32 func_803083B0(s32 arg0) {
s32 temp_v0;
s32 var_v0;
bool var_a2;
Cube *var_s0;
static s32 D_80382140;
static Cube *D_80382144;
// if (arg0 == -1) {
// var_s0 = D_80381FA0.cube_list;
// D_80382140 = 0;
// var_v0 = 0;
// goto block_12;
// }
// var_s0 = (u32) D_80382144;
// if (D_80382140 < var_s0->prop2Cnt) {
// temp_v0 = func_803082D8(var_s0, &D_80382140, NOT(arg0 < 0), arg0 & 1);
// if (D_80382140 != 0) {
// return temp_v0;
// }
// }
// D_80382140 = 0;
// loop_6:
// loop_7:
// var_s0 += 0xC;
// if (var_s0 >= &D_80381FA0.cube_list[D_80381FA0.cubeCnt]) {
// D_80382144 = (s32 *) var_s0;
// return -1;
// }
// if (var_s0->prop2Cnt != 0) {
// var_v0 = func_803082D8(var_s0, &D_80382140, NOT(arg0 < 0), arg0 & 1);
// if (D_80382140 != 0) {
// block_12:
// D_80382144 = var_s0;
// return var_v0;
// }
// goto loop_6;
// }
// goto loop_7;
// }
if (arg0 == -1) {
D_80382144 = D_80381FA0.cube_list;
D_80382140 = 0;
return 0;
}
var_s0 = D_80382144;
if (D_80382140 < D_80382144->prop2Cnt) {
temp_v0 = func_803082D8(var_s0, &D_80382140, (arg0 < 0) ^ 1, arg0 & 1);
if (D_80382140 != 0) {
return temp_v0;
}
}
D_80382140 = 0;
loop_6:
loop_7:
var_s0++;
if (var_s0 >= D_80381FA0.cube_list + D_80381FA0.cubeCnt) {
D_80382144 = var_s0;
return -1;
}
if (0 < var_s0->prop2Cnt) {
var_v0 = func_803082D8(var_s0, &D_80382140, (arg0 < 0) ^ 1, arg0 & 1);
if (D_80382140 != 0) {
D_80382144 = var_s0;
return var_v0;
}
goto loop_6;
}
goto loop_7;
return -1;
}
#endif
enum actor_e func_803084F0(s32 arg0){
s32 var_v1;

View File

@ -83,173 +83,28 @@ void func_8030C2D4(Gfx **gdl, Mtx **mptr, Vtx **vptr){
func_80253640(gdl, D_803A5D00[func_8024BDA0()]);
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_851D0/func_8030C33C.s")
#else
void func_8030C33C(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
s32 sp80;
s32 sp74;
s32 sp70;
s32 sp64;
s32 sp60;
s32 sp54;
s32 sp50;
s32 sp48;
s32 sp40;
s16 temp_s4;
s16 temp_t4;
s32 temp_a0;
s32 temp_a1;
s32 temp_a3;
s32 temp_t6;
s32 temp_t8;
void *temp_a1_2;
void *temp_a2;
void *temp_s0;
void *temp_s0_2;
void *temp_s0_3;
void *temp_s0_4;
void *temp_s0_5;
void *temp_s0_6;
void *temp_s0_7;
void *temp_s0_8;
void *temp_s0_9;
void *temp_s2;
s32 phi_ra;
s32 phi_t5;
s32 phi_t4;
s32 phi_t3;
s32 phi_t2;
s32 phi_t1;
s32 phi_s3;
s32 phi_s5;
s16 phi_s6;
s32 phi_v0;
s16 phi_v1;
s16 phi_s4;
s16 phi_t4_2;
s16 phi_v0_2;
s16 phi_v1_2;
s32 phi_v0_3;
s32 phi_a0;
s32 phi_s7;
s32 x, y;
gSPDisplayList((*gfx)++, D_8036C450);
sp64 = 0x1F;
sp54 = 0x130;
sp74 = 0;
phi_t4_2 = 0xB0;
do {
phi_ra = sp74 << 5;
phi_t5 = (0x40 + 7);
phi_t4 = (s32) phi_t4_2;
phi_t3 = (s32) sp56;
phi_t2 = (sp64 << 2) & 0xFFF;
phi_t1 = (sp74 << 2) & 0xFFF;
phi_s3 = 0;
phi_s5 = 0x1F;
phi_s6 = 0x188;
phi_s4 = 0x108;
phi_s7 = 0;
loop_2:
sp40 = phi_ra;
sp80 = phi_t5;
sp48 = phi_t4;
sp50 = phi_t3;
sp60 = phi_t2;
sp70 = phi_t1;
// gDPLoadTextureTile((*gfx)++, &D_80382450, G_IM_FMT_IA, G_IM_SIZ_16b, 160, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, maskt, shifts, shiftt)
gDPSetTextureImage((*gfx)++, G_IM_FMT_IA, G_IM_SIZ_16b, 160, D_80382450);
// temp_a1 = (((0x40 + 7 >> 3) & 0x1FF) << 9) | 0xF5700000;
// temp_s0_2->unk0 = temp_a1;
// temp_s0_2->unk4 = 0x07080200;
gDPSetTile((*gfx)++, G_IM_FMT_IA, G_IM_SIZ_32b, 427, 0x0101, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 1, 12, G_TX_NOMIRROR | G_TX_WRAP, 8, 7);
gDPLoadSync((*gfx)++);
// temp_a3 = ((phi_s3 * 4) & 0xFFF) << 0xC;
// temp_a0 = ((phi_s5 * 4) & 0xFFF) << 0xC;
// temp_s0_4->unk0 = (s32) (temp_a3 | 0xF4000000 | phi_t1);
// temp_s0_4->unk4 = (s32) (temp_a0 | 0x07000000 | phi_t2);
gDPLoadTile((*gfx)++, G_TX_LOADTILE, 0, 0, 0, 0);
gDPPipeSync((*gfx)++);
// temp_s0_6->unk0 = temp_a1;
// temp_s0_6->unk4 = 0x00080200;
gDPSetTile((*gfx)++, G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0x0100, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD);
// temp_s0_7->unk4 = (s32) (temp_a0 | phi_t2);
// temp_s0_7->unk0 = (s32) (temp_a3 | 0xF2000000 | phi_t1);
gDPSetTileSize((*gfx)++, G_TX_RENDERTILE, 0, 0, 0, 0);
temp_a1_2 = *gfx;
*gfx = temp_a1_2 + 8;
if ((s32) phi_s6 > 0) {
phi_v1 = (s16) (phi_s7 + 0x188);
} else {
phi_v1 = 0;
for (y = 0; y < 4; y++) {
for(x = 0; x < 5; x++){
gDPLoadTextureTile((*gfx)++, osVirtualToPhysical(D_80382450), G_IM_FMT_IA, G_IM_SIZ_16b, 160, 128,
0x20*x, 0x20*y, 0x20*(x + 1) - 1, 0x20*(y + 1) - 1,
0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPScisTextureRectangle((*gfx)++,
(0x20*x + 0x42)*4, (0x20*y + 0x2C)*4,
(0x20*(x + 1) + 0x42)*4, (0x20*(y + 1) + 0x2C)*4,
0,
0x20*x << 5, 0x20*y << 5,
1 << 10, 1 << 10);
}
if (phi_t3 > 0) {
phi_v0 = phi_t3;
} else {
phi_v0 = 0;
}
temp_a1_2->unk0 = (s32) ((phi_v0 & 0xFFF) | 0xE4000000 | ((phi_v1 & 0xFFF) << 0xC));
if ((s32) phi_s4 > 0) {
phi_v1_2 = phi_s4;
} else {
phi_v1_2 = 0;
}
if ((s32) phi_t4_2 > 0) {
phi_v0_2 = phi_t4_2;
} else {
phi_v0_2 = 0;
}
temp_a1_2->unk4 = (s32) ((phi_v0_2 & 0xFFF) | ((phi_v1_2 & 0xFFF) << 0xC));
temp_a2 = *gfx;
*gfx = temp_a2 + 8;
temp_a2->unk0 = 0xB4000000;
phi_s5 += 0x20;
if ((s32) phi_s4 < 0) {
temp_t6 = (s32) (phi_s4 << 0xA) >> 7;
if (temp_t6 < 0) {
phi_a0 = temp_t6;
} else {
phi_a0 = 0;
}
} else {
phi_a0 = 0;
}
if (phi_t4 < 0) {
temp_t8 = (s32) (phi_t4_2 << 0xA) >> 7;
if (temp_t8 < 0) {
phi_v0_3 = temp_t8;
} else {
phi_v0_3 = 0;
}
} else {
phi_v0_3 = 0;
}
temp_a2->unk4 = (s32) (((phi_ra - phi_v0_3) & 0xFFFF) | (((phi_s3 << 5) - phi_a0) << 0x10));
temp_s0_8 = *gfx;
temp_s4 = phi_s4 + 0x80;
*gfx = temp_s0_8 + 8;
temp_s0_8->unk0 = 0xB3000000;
temp_s0_8->unk4 = 0x04000400;
phi_s3 += 0x20;
phi_s6 += 0x80;
phi_s4 = temp_s4;
phi_s7 += 0x80;
if (temp_s4 != 0x388) {
goto loop_2;
}
temp_t4 = phi_t4 + 0x80;
sp74 += 0x20;
sp54 += 0x80;
sp64 += 0x20;
phi_t4_2 = temp_t4;
} while (temp_t4 != 0x2B0);
}
gSPDisplayList((*gfx)++, D_8036C4A8);
}
#endif
s32 func_8030C704(void){

View File

@ -291,7 +291,7 @@ segments:
- [0x83D70, c, gc/section] #DONE
- [0x840D0, c, gc/sky] #DONE
- [0x84470, c, gc/transition] #DONE
- [0x851D0, c, code_851D0]
- [0x851D0, c, code_851D0] #DONE
- [0x857B0, c, code_857B0] #DONE
- [0x85800, c, code_85800] #DONE
- [0x87E30, c, code_87E30]