Merge pull request #521 from Bl00D4NGEL/match/func_800BC6C8

match: func_800BC6C8
This commit is contained in:
Dominik Peters
2025-04-19 02:31:54 +02:00
committed by GitHub
7 changed files with 105 additions and 19 deletions
+7 -7
View File
@@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the
All versions are supported, and the US 1.0 version (SHA1 = 0cb115d8716dbbc2922fda38e533b9fe63bb9670) of the game is the default if not specified.
<!-- README_SCORE_SUMMARY_BEGIN -->
As of April 18, 2025, this is our current score:
As of April 19, 2025, this is our current score:
&emsp;&emsp;&emsp;&emsp;Decomp progress: 79.73%
&emsp;&emsp;&emsp;&emsp;Decomp progress: 79.89%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 50.27%
<!-- README_SCORE_SUMMARY_END -->
@@ -117,20 +117,20 @@ s32 is_drumstick_unlocked(void) {
```
<!-- README_SCORE_BEGIN -->
As of April 18, 2025, this is our current score:
As of April 19, 2025, this is our current score:
```
===================================================================
ADVENTURE ONE (ASM -> C Decompilation)
-------------- 79.73% Complete (82.30% NON_MATCHING) --------------
# Decompiled functions: 1855
# GLOBAL_ASM remaining: 95
-------------- 79.89% Complete (82.46% NON_MATCHING) --------------
# Decompiled functions: 1856
# GLOBAL_ASM remaining: 94
# NON_MATCHING functions: 12
# NON_EQUIVALENT WIP functions: 28
--------------------------- Game Status ---------------------------
Balloons: 38/47, Keys: 4/4, Trophies: 3/5
T.T. Amulets: 4/4, Wizpig Amulets: 3/4
-------------------------------------------------------------------
We are collecting silver coins in Haunted Woods. (5/8 silver coins)
We are collecting silver coins in Haunted Woods. (6/8 silver coins)
===================================================================
ADVENTURE TWO (Cleanup & Documentation)
------------------------- 50.27% Complete -------------------------
+93 -7
View File
@@ -99,7 +99,7 @@ s32 D_8012A0D0;
s32 D_8012A0D4;
s32 D_8012A0D8;
s32 D_8012A0DC;
s32 D_8012A0E0;
s32 gNumberOfLevelSegments;
s32 D_8012A0E8[64];
s16 D_8012A1E8[512];
@@ -476,7 +476,7 @@ void func_800B8C04(s32 xPosition, s32 yPosition, s32 zPosition, s32 currentViewp
// clang-format on
var_t4 = var_t5 + var_s4;
D_800E30D4[var_t2] |= D_800E30E0[i * D_80129FC8.unk24 + j] << var_t4;
for (k = 0; k < D_8012A0E0; k++) {
for (k = 0; k < gNumberOfLevelSegments; k++) {
if (var_t2 == (&D_800E30D8[k])->unkC) {
temp = &D_8012A5E8[k];
temp->unk0 = k;
@@ -534,7 +534,7 @@ void func_800B8C04(s32 xPosition, s32 yPosition, s32 zPosition, s32 currentViewp
) {
// clang-format on
D_800E30D4[var_t2] = D_800E30E0[i * D_80129FC8.unk24 + j];
for (k = 0; k < D_8012A0E0; k++) {
for (k = 0; k < gNumberOfLevelSegments; k++) {
if (var_t2 == (&D_800E30D8[k])->unkC) {
temp = &D_8012A5E8[k];
temp->unk0 = k;
@@ -559,7 +559,7 @@ void func_800B8C04(s32 xPosition, s32 yPosition, s32 zPosition, s32 currentViewp
s32 func_800B9228(LevelModelSegment *arg0) {
s32 v0 = 0;
s32 result = FALSE;
while (v0 < D_8012A0E0 && arg0 != D_800E30D8[v0].unk00) {
while (v0 < gNumberOfLevelSegments && arg0 != D_800E30D8[v0].unk00) {
v0++;
};
if (D_800E30D4[D_800E30D8[v0].unkC]) {
@@ -880,7 +880,7 @@ void func_800BA288(s32 arg0, s32 arg1) {
s32 j;
arg1 <<= 3;
for (i = 0; i < D_8012A0E0; i++) {
for (i = 0; i < gNumberOfLevelSegments; i++) {
if (D_8012A0E8[D_800E30D8[i].unkB] & (1 << D_800E30D8[i].unkA)) {
if (D_80129FC8.unk28 != 0) {
for (j = 0; j < 4; j++) {
@@ -979,7 +979,7 @@ f32 func_800BB2F4(s32 arg0, f32 arg1, f32 arg2, Vec3f *arg3) {
s32 sp58;
s32 pad;
if (arg0 < 0 || arg0 >= D_8012A0E0) {
if (arg0 < 0 || arg0 >= gNumberOfLevelSegments) {
arg0 = 0;
}
@@ -1198,7 +1198,93 @@ void func_800BBE08(LevelModel *level, unk800BBE08_arg1 *arg1) {
}
#pragma GLOBAL_ASM("asm/nonmatchings/waves/func_800BBF78.s")
#pragma GLOBAL_ASM("asm/nonmatchings/waves/func_800BC6C8.s")
void func_800BC6C8(void) {
s32 i;
s32 j;
s32 k;
s32 var_s0;
s32 var_v0;
f32 sp34[0x80];
var_v0 = 0x4000 / D_80129FC8.unk0;
var_s0 = 0;
for (i = 0; i < D_80129FC8.unk0;) {
sp34[i++] = sins_f(var_s0);
var_s0 += var_v0;
}
sp34[0] = 0.0f;
sp34[D_80129FC8.unk0] = 1.0f;
k = 0;
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = 0; j <= D_80129FC8.unk0; j++) {
D_800E304C[4][k] = 1.0f;
k++;
}
}
k = 0;
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = 0; j <= D_80129FC8.unk0; j++) {
D_800E304C[1][k] = sp34[i];
k++;
}
}
k = 0;
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = 0; j <= D_80129FC8.unk0;) {
D_800E304C[3][k++] = sp34[j++];
}
}
k = 0;
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = 0; j <= D_80129FC8.unk0;) {
D_800E304C[5][k++] = sp34[D_80129FC8.unk0 - j++];
}
}
k = 0;
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = 0; j <= D_80129FC8.unk0; j++) {
D_800E304C[7][k] = sp34[D_80129FC8.unk0 - i];
k++;
}
}
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = i; j <= D_80129FC8.unk0; j++) {
D_800E304C[0][i * (D_80129FC8.unk0 + 1) + j] = sp34[i];
D_800E304C[0][j * (D_80129FC8.unk0 + 1) + i] = sp34[i];
}
}
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = i; j <= D_80129FC8.unk0; j++) {
D_800E304C[2][(i * (D_80129FC8.unk0 + 1)) + D_80129FC8.unk0 - j] = sp34[i];
D_800E304C[2][(j * (D_80129FC8.unk0 + 1)) + D_80129FC8.unk0 - i] = sp34[i];
}
}
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = i; j <= D_80129FC8.unk0; j++) {
D_800E304C[6][(D_80129FC8.unk0 * (D_80129FC8.unk0 + 1)) - (i * (D_80129FC8.unk0 + 1)) + j] = sp34[i];
D_800E304C[6][(D_80129FC8.unk0 * (D_80129FC8.unk0 + 1)) - (j * (D_80129FC8.unk0 + 1)) + i] = sp34[i];
}
}
for (i = 0; i <= D_80129FC8.unk0; i++) {
for (j = i; j <= D_80129FC8.unk0; j++) {
// clang-format off
D_800E304C[8][(D_80129FC8.unk0 * (D_80129FC8.unk0 + 1)) - (i * (D_80129FC8.unk0 + 1)) + D_80129FC8.unk0 - j] = sp34[i];
D_800E304C[8][(D_80129FC8.unk0 * (D_80129FC8.unk0 + 1)) - (j * (D_80129FC8.unk0 + 1)) + D_80129FC8.unk0 - i] = sp34[i];
// clang-format on
}
}
}
#pragma GLOBAL_ASM("asm/nonmatchings/waves/func_800BCC70.s")
#pragma GLOBAL_ASM("asm/nonmatchings/waves/func_800BDC80.s")
// https://decomp.me/scratch/2RF3k
+1 -1
View File
@@ -4515,7 +4515,7 @@ D_8012A0D0 = 0x8012BB80;
D_8012A0D4 = 0x8012BB84;
D_8012A0D8 = 0x8012BB88;
D_8012A0DC = 0x8012BB8C;
D_8012A0E0 = 0x8012BB90;
gNumberOfLevelSegments = 0x8012BB90;
D_8012A0E8 = 0x8012BB98;
D_8012A1E8 = 0x8012BC98;
D_8012A5E8 = 0x8012C098;
+1 -1
View File
@@ -4199,7 +4199,7 @@ D_8012A0D0 = 0x8012A160;
D_8012A0D4 = 0x8012A164;
D_8012A0D8 = 0x8012A168;
D_8012A0DC = 0x8012A16C;
D_8012A0E0 = 0x8012A170;
gNumberOfLevelSegments = 0x8012A170;
D_8012A0E8 = 0x8012A178;
D_8012A1E8 = 0x8012A278;
D_8012A5E8 = 0x8012A678;
+1 -1
View File
@@ -4134,7 +4134,7 @@ D_8012A0D0 = 0x8012A720;
D_8012A0D4 = 0x8012A724;
D_8012A0D8 = 0x8012A728;
D_8012A0DC = 0x8012A72C;
D_8012A0E0 = 0x8012A730;
gNumberOfLevelSegments = 0x8012A730;
D_8012A0E8 = 0x8012A738;
D_8012A1E8 = 0x8012A838;
D_8012A5E8 = 0x8012AC38;
+1 -1
View File
@@ -4644,7 +4644,7 @@ D_8012A0D0 = 0x8012A0D0;
D_8012A0D4 = 0x8012A0D4;
D_8012A0D8 = 0x8012A0D8;
D_8012A0DC = 0x8012A0DC;
D_8012A0E0 = 0x8012A0E0;
gNumberOfLevelSegments = 0x8012A0E0;
D_8012A0E8 = 0x8012A0E8;
D_8012A1E8 = 0x8012A1E8;
D_8012A5E8 = 0x8012A5E8;
+1 -1
View File
@@ -4129,7 +4129,7 @@ D_8012A0D0 = 0x8012A690;
D_8012A0D4 = 0x8012A694;
D_8012A0D8 = 0x8012A698;
D_8012A0DC = 0x8012A69C;
D_8012A0E0 = 0x8012A6A0;
gNumberOfLevelSegments = 0x8012A6A0;
D_8012A0E8 = 0x8012A6A8;
D_8012A1E8 = 0x8012A7A8;
D_8012A5E8 = 0x8012ABA8;