mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
match: func_8002EEEC (#540)
* match: func_8002EEEC * style: run format.sh
This commit is contained in:
@@ -7,7 +7,7 @@ All versions are supported, and the US 1.0 version (SHA1 = 0cb115d8716dbbc2922fd
|
||||
<!-- README_SCORE_SUMMARY_BEGIN -->
|
||||
As of May 1, 2025, this is our current score:
|
||||
|
||||
    Decomp progress: 81.98%
|
||||
    Decomp progress: 82.09%
|
||||
|
||||
    Documentation progress: 53.79%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
@@ -121,9 +121,9 @@ As of May 1, 2025, this is our current score:
|
||||
```
|
||||
=====================================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
--------------- 81.98% Complete (84.79% NON_MATCHING) ---------------
|
||||
# Decompiled functions: 1867
|
||||
# GLOBAL_ASM remaining: 84
|
||||
--------------- 82.09% Complete (84.90% NON_MATCHING) ---------------
|
||||
# Decompiled functions: 1868
|
||||
# GLOBAL_ASM remaining: 83
|
||||
# NON_MATCHING functions: 13
|
||||
# NON_EQUIVALENT WIP functions: 27
|
||||
---------------------------- Game Status ----------------------------
|
||||
|
||||
+91
-4
@@ -106,10 +106,10 @@ unk8011B330 D_8011B330[120]; // Struct sizeof(0x20) / sizeof(32)
|
||||
s32 D_8011C230;
|
||||
s32 D_8011C234;
|
||||
unk8011C238 D_8011C238[32]; // Struct sizeof(0xC) / sizeof(12)
|
||||
s32 D_8011C3B8[320];
|
||||
s32 D_8011C8B8[512];
|
||||
unk8011C3B8 D_8011C3B8[64];
|
||||
unk8011C8B8 D_8011C8B8[128];
|
||||
s32 D_8011D0B8;
|
||||
Vec4f *D_8011D0BC;
|
||||
unk8011C8B8 *D_8011D0BC;
|
||||
TextureHeader *gNewShadowTexture;
|
||||
Object *gNewShadowObj;
|
||||
f32 D_8011D0C8;
|
||||
@@ -3547,7 +3547,94 @@ void shadow_generate(Object *obj, s32 isWater) {
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/tracks/func_8002E904.s")
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/tracks/func_8002EEEC.s")
|
||||
|
||||
void func_8002EEEC(s32 arg0) {
|
||||
unk8011C8B8 spA8[8];
|
||||
f32 sp88[8];
|
||||
s32 var_v0;
|
||||
s32 var_a0;
|
||||
s32 var_a1;
|
||||
s32 temp_v0;
|
||||
s32 temp_v0_3;
|
||||
s32 var_s4;
|
||||
s32 var_t1;
|
||||
s32 var_v1;
|
||||
s32 tempIdx;
|
||||
|
||||
sp88[0] = gNewShadowObj->segment.trans.x_position + gNewShadowWidth;
|
||||
sp88[1] = gNewShadowObj->segment.trans.z_position + gNewShadowLength;
|
||||
sp88[2] = gNewShadowObj->segment.trans.x_position - gNewShadowWidth;
|
||||
sp88[3] = gNewShadowObj->segment.trans.z_position + gNewShadowLength;
|
||||
sp88[4] = gNewShadowObj->segment.trans.x_position - gNewShadowWidth;
|
||||
sp88[5] = gNewShadowObj->segment.trans.z_position - gNewShadowLength;
|
||||
sp88[6] = gNewShadowObj->segment.trans.x_position + gNewShadowWidth;
|
||||
sp88[7] = gNewShadowObj->segment.trans.z_position - gNewShadowLength;
|
||||
temp_v0 = func_800BDC80(arg0, D_8011C3B8, &D_8011C8B8[D_8011D0B8], sp88[4], sp88[5], sp88[0], sp88[1]);
|
||||
|
||||
for (var_s4 = 0; var_s4 < temp_v0; var_s4++) {
|
||||
var_a0 = D_8011C3B8[var_s4].unk2;
|
||||
var_a1 = D_8011C3B8[var_s4].unk2;
|
||||
if (D_8011C3B8[var_s4].unk8 < var_a1) {
|
||||
var_a0 = D_8011C3B8[var_s4].unk8;
|
||||
} else if (var_a1 < D_8011C3B8[var_s4].unk8) {
|
||||
var_a1 = D_8011C3B8[var_s4].unk8;
|
||||
}
|
||||
if (D_8011C3B8[var_s4].unkE < var_a0) {
|
||||
var_a0 = D_8011C3B8[var_s4].unkE;
|
||||
} else if (var_a1 < D_8011C3B8[var_s4].unkE) {
|
||||
var_a1 = D_8011C3B8[var_s4].unkE;
|
||||
}
|
||||
if (gNewShadowY2 >= var_a0) {
|
||||
if (var_a1 >= gNewShadowY1) {
|
||||
spA8[0].unk0 = D_8011C3B8[var_s4].unk0;
|
||||
spA8[0].unk8 = D_8011C3B8[var_s4].unk4;
|
||||
spA8[1].unk0 = D_8011C3B8[var_s4].unk6;
|
||||
spA8[1].unk8 = D_8011C3B8[var_s4].unkA;
|
||||
spA8[2].unk0 = D_8011C3B8[var_s4].unkC;
|
||||
spA8[2].unk8 = D_8011C3B8[var_s4].unk10;
|
||||
|
||||
for (var_v0 = 0; var_v0 != 3; var_v0++) {
|
||||
spA8[var_v0].unkE = -1;
|
||||
}
|
||||
|
||||
D_8011D0BC = &D_8011C8B8[D_8011D0B8 + var_s4];
|
||||
temp_v0_3 = func_8002FF6C(3, spA8, 4, sp88);
|
||||
if (temp_v0_3 >= 3) {
|
||||
tempIdx = D_8011C230;
|
||||
D_8011C238[tempIdx].unk1 = 0;
|
||||
for (var_t1 = 0; var_t1 < temp_v0_3; var_t1++) {
|
||||
if (spA8[var_t1].unkE < 0) {
|
||||
var_a1 = -1;
|
||||
var_v1 = 0;
|
||||
while (var_v1 < D_8011B118 && var_a1 == -1) {
|
||||
if ((D_8011B120[var_v1].x == spA8[var_t1].unk0) &&
|
||||
(D_8011B120[var_v1].z == spA8[var_t1].unk8)) {
|
||||
var_a1 = var_v1;
|
||||
}
|
||||
var_v1++;
|
||||
}
|
||||
if (var_a1 == -1) {
|
||||
D_8011B120[D_8011B118].x = spA8[var_t1].unk0;
|
||||
D_8011B120[D_8011B118].unkC = (unk8011B120_unkC *) D_8011D0BC;
|
||||
D_8011B120[D_8011B118].z = spA8[var_t1].unk8;
|
||||
D_8011C238[tempIdx].unk2[var_t1] = D_8011B118++;
|
||||
} else {
|
||||
D_8011C238[tempIdx].unk2[var_t1] = var_a1;
|
||||
}
|
||||
} else {
|
||||
D_8011C238[tempIdx].unk2[var_t1] = spA8[var_t1].unkE;
|
||||
D_8011C238[tempIdx].unk1 |= 1 << var_t1;
|
||||
}
|
||||
}
|
||||
D_8011C230 = tempIdx + 1;
|
||||
D_8011C238[tempIdx].unk0 = temp_v0_3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
D_8011D0B8 += temp_v0;
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
void func_8002F2AC(void) {
|
||||
|
||||
@@ -103,6 +103,30 @@ typedef struct unk8011D478 {
|
||||
s8 unk7;
|
||||
} unk8011D478;
|
||||
|
||||
|
||||
/* Size: 0x10 bytes */
|
||||
typedef struct unk8011C8B8 {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
} unk8011C8B8;
|
||||
|
||||
/* Size: 0x14 bytes */
|
||||
typedef struct unk8011C3B8 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s16 unk8;
|
||||
s16 unkA;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
s16 unk10;
|
||||
s16 unk12;
|
||||
} unk8011C3B8;
|
||||
|
||||
// In this struct, data is rightshifted 16 bytes, so make the smooth transition more precise.
|
||||
typedef struct EnvironmentFog {
|
||||
s32 r;
|
||||
@@ -212,5 +236,7 @@ void func_80025510(s32);
|
||||
void func_8002C0C4(s32 modelId);
|
||||
void func_800304C8(Vec4f *arg0);
|
||||
s32 func_80027184(f32 *arg0, f32 *arg1, f32 arg2, f32 arg3);
|
||||
s32 func_8002FF6C(s32, unk8011C8B8 *, s32, f32 *);
|
||||
s32 func_800BDC80(s32, unk8011C3B8 *, unk8011C8B8 *, f32, f32, f32, f32);
|
||||
|
||||
#endif
|
||||
|
||||
+3
-27
@@ -1776,31 +1776,7 @@ void func_800BCC70(LevelModel *arg0) {
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
typedef struct unkArg1 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s16 unk8;
|
||||
s16 unkA;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
s16 unk10;
|
||||
s16 unk12;
|
||||
} unkArg1;
|
||||
|
||||
typedef struct unkArg2 {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
} unkArg2;
|
||||
|
||||
// arg0
|
||||
// arg1 is s32 D_8011C3B8[320]; according to func_8002EEEC
|
||||
// arg2 might be s32 D_8011C8B8[512]
|
||||
|
||||
s32 func_800BDC80(s32 arg0, unkArg1 *arg1, unkArg2 *arg2, f32 shadowXNegPosition, f32 shadowZNegPosition,
|
||||
s32 func_800BDC80(s32 arg0, unk8011C3B8 *arg1, unk8011C8B8 *arg2, f32 shadowXNegPosition, f32 shadowZNegPosition,
|
||||
f32 shadowXPosition, f32 shadowZPosition) {
|
||||
s32 sp36C;
|
||||
s32 sp368;
|
||||
@@ -1840,9 +1816,9 @@ s32 func_800BDC80(s32 arg0, unkArg1 *arg1, unkArg2 *arg2, f32 shadowXNegPosition
|
||||
f32 spC8;
|
||||
s32 var_v0;
|
||||
s32 spA4;
|
||||
unkArg2 *var_v0_4;
|
||||
unk8011C8B8 *var_v0_4;
|
||||
s32 sp98;
|
||||
unkArg1 *var_s0_2;
|
||||
unk8011C3B8 *var_s0_2;
|
||||
s32 sp90;
|
||||
s32 temp3_2;
|
||||
s32 temp4_2;
|
||||
|
||||
Reference in New Issue
Block a user