mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
match: func_800BC6C8
This commit is contained in:
@@ -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 16, 2025, this is our current score:
|
||||
As of April 18, 2025, this is our current score:
|
||||
|
||||
    Decomp progress: 79.61%
|
||||
    Decomp progress: 79.77%
|
||||
|
||||
    Documentation progress: 50.27%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
@@ -117,20 +117,20 @@ s32 is_drumstick_unlocked(void) {
|
||||
```
|
||||
|
||||
<!-- README_SCORE_BEGIN -->
|
||||
As of April 16, 2025, this is our current score:
|
||||
As of April 18, 2025, this is our current score:
|
||||
```
|
||||
===================================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
-------------- 79.61% Complete (82.18% NON_MATCHING) --------------
|
||||
# Decompiled functions: 1854
|
||||
# GLOBAL_ASM remaining: 96
|
||||
-------------- 79.77% Complete (82.34% NON_MATCHING) --------------
|
||||
# Decompiled functions: 1855
|
||||
# GLOBAL_ASM remaining: 95
|
||||
# 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. (4/8 silver coins)
|
||||
We are collecting silver coins in Haunted Woods. (5/8 silver coins)
|
||||
===================================================================
|
||||
ADVENTURE TWO (Cleanup & Documentation)
|
||||
------------------------- 50.27% Complete -------------------------
|
||||
|
||||
+93
-7
@@ -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++) {
|
||||
@@ -945,7 +945,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;
|
||||
}
|
||||
|
||||
@@ -1164,7 +1164,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
|
||||
|
||||
Reference in New Issue
Block a user