mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
@@ -7,7 +7,7 @@ All versions are supported, and the US 1.0 version (SHA1 = 0cb115d8716dbbc2922fd
|
||||
<!-- README_SCORE_SUMMARY_BEGIN -->
|
||||
As of May 12, 2025, this is our current score:
|
||||
|
||||
    Decomp progress: 86.85%
|
||||
    Decomp progress: 86.98%
|
||||
|
||||
    Documentation progress: 56.95%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
@@ -121,16 +121,16 @@ As of May 12, 2025, this is our current score:
|
||||
```
|
||||
=====================================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
--------------- 86.85% Complete (88.01% NON_MATCHING) ---------------
|
||||
# Decompiled functions: 1887
|
||||
# GLOBAL_ASM remaining: 64
|
||||
--------------- 86.98% Complete (88.14% NON_MATCHING) ---------------
|
||||
# Decompiled functions: 1888
|
||||
# GLOBAL_ASM remaining: 63
|
||||
# NON_MATCHING functions: 7
|
||||
# NON_EQUIVALENT WIP functions: 22
|
||||
# NON_EQUIVALENT WIP functions: 21
|
||||
---------------------------- Game Status ----------------------------
|
||||
Balloons: 40/47, Keys: 4/4, Trophies: 4/5
|
||||
T.T. Amulets: 4/4, Wizpig Amulets: 4/4
|
||||
---------------------------------------------------------------------
|
||||
We are racing in Darkmoon Caverns. (Lap 1/3)
|
||||
We are racing in Darkmoon Caverns. (Lap 2/3)
|
||||
=====================================================================
|
||||
ADVENTURE TWO (Cleanup & Documentation)
|
||||
-------------------------- 56.95% Complete --------------------------
|
||||
|
||||
+29
-37
@@ -416,26 +416,21 @@ UNUSED s32 sprite_table_size(void) {
|
||||
return gSpriteTableSize;
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
// Minor matching issues with loops, but should be functionally the same.
|
||||
// Official Name: texLoadTexture
|
||||
// Official Name: texLoadTexture
|
||||
TextureHeader *load_texture(s32 arg0) {
|
||||
s32 assetSection;
|
||||
TextureHeader *tex;
|
||||
TextureHeader *texTemp;
|
||||
u32 temp_a1;
|
||||
s32 assetIndex;
|
||||
s32 assetOffset;
|
||||
s32 assetSize;
|
||||
s32 assetTable;
|
||||
s32 texIndex;
|
||||
s32 temp_a1;
|
||||
s32 paletteOffset;
|
||||
s32 assetSection;
|
||||
s32 texIndex;
|
||||
s32 assetTable;
|
||||
s32 i;
|
||||
u8 *alignedAddress;
|
||||
TextureHeader *tex;
|
||||
TextureHeader *texTemp;
|
||||
s32 numberOfTextures;
|
||||
u16 numberOfTextures;
|
||||
s32 sp3C;
|
||||
s32 temp_a0;
|
||||
s32 temp_v0_5;
|
||||
|
||||
arg0 &= 0xFFFF;
|
||||
assetIndex = arg0;
|
||||
@@ -450,8 +445,8 @@ TextureHeader *load_texture(s32 arg0) {
|
||||
arg0 = 0;
|
||||
}
|
||||
for (i = 0; i < gNumberOfLoadedTextures; i++) {
|
||||
if (arg0 == gTextureCache[(i << 1)]) {
|
||||
tex = (TextureHeader *) gTextureCache[(i << 1) + 1];
|
||||
if (arg0 == gTextureCache[ASSETCACHE_ID(i)]) {
|
||||
tex = (TextureHeader *) gTextureCache[ASSETCACHE_PTR(i)];
|
||||
tex->numberOfInstances++;
|
||||
return tex;
|
||||
}
|
||||
@@ -459,39 +454,38 @@ TextureHeader *load_texture(s32 arg0) {
|
||||
assetOffset = gTextureAssetTable[assetTable][assetIndex];
|
||||
assetSize = gTextureAssetTable[assetTable][assetIndex + 1] - assetOffset;
|
||||
load_asset_to_address(assetSection, (u32) gTempTextureHeader, assetOffset, 0x28);
|
||||
numberOfTextures = (gTempTextureHeader->header.numOfTextures >> 8) & 0xFFFF;
|
||||
numberOfTextures = gTempTextureHeader->header.numOfTextures >> 8;
|
||||
|
||||
if (!gTempTextureHeader->header.isCompressed) {
|
||||
tex = (TextureHeader *) mempool_alloc((numberOfTextures * 0x60) + assetSize, gTexColourTag);
|
||||
tex = (TextureHeader *) mempool_alloc(numberOfTextures * 0x60 + assetSize, gTexColourTag);
|
||||
if (tex == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
load_asset_to_address(assetSection, (u32) tex, assetOffset, assetSize);
|
||||
} else {
|
||||
temp_v0_5 = byteswap32((u8 *) &gTempTextureHeader->uncompressedSize);
|
||||
temp_a0 = (numberOfTextures * 0x60) + temp_v0_5;
|
||||
sp3C = temp_v0_5 + 0x20;
|
||||
tex = (TextureHeader *) mempool_alloc(temp_a0 + 0x20, gTexColourTag);
|
||||
sp3C = byteswap32((u8 *) &gTempTextureHeader->uncompressedSize) + sizeof(TextureHeader);
|
||||
tex = (TextureHeader *) mempool_alloc(numberOfTextures * 0x60 + sp3C, gTexColourTag);
|
||||
if (tex == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
temp_a1 = ((s32) tex + sp3C) - assetSize;
|
||||
temp_a1 -= temp_a1 % 0x10;
|
||||
temp_a1 = (((s32) tex + sp3C) - assetSize);
|
||||
temp_a1 = (s32) temp_a1 - (s32) temp_a1 % 16;
|
||||
load_asset_to_address(assetSection, temp_a1, assetOffset, assetSize);
|
||||
gzip_inflate((u8 *) (temp_a1 + 0x20), (u8 *) tex);
|
||||
assetSize = sp3C - 0x20;
|
||||
gzip_inflate((u8 *) (temp_a1 + sizeof(TextureHeader)), (u8 *) tex);
|
||||
assetSize = sp3C - sizeof(TextureHeader);
|
||||
}
|
||||
texIndex = -1;
|
||||
for (i = 0; i < gNumberOfLoadedTextures; i++) {
|
||||
if (gTextureCache[(i << 1)] == -1) {
|
||||
if (gTextureCache[ASSETCACHE_ID(i)] == -1) {
|
||||
texIndex = i;
|
||||
}
|
||||
}
|
||||
if (texIndex == -1) {
|
||||
texIndex = gNumberOfLoadedTextures++;
|
||||
texIndex = gNumberOfLoadedTextures;
|
||||
gNumberOfLoadedTextures++;
|
||||
}
|
||||
gTextureCache[(texIndex << 1)] = arg0;
|
||||
gTextureCache[(texIndex << 1) + 1] = (s32) tex;
|
||||
gTextureCache[ASSETCACHE_ID(texIndex)] = arg0;
|
||||
gTextureCache[ASSETCACHE_PTR(texIndex)] = (s32) tex;
|
||||
paletteOffset = -1;
|
||||
if ((tex->format & 0xF) == TEX_FORMAT_CI4) {
|
||||
if (D_80126344 == 0) {
|
||||
@@ -510,28 +504,26 @@ TextureHeader *load_texture(s32 arg0) {
|
||||
paletteOffset = gCiPalettesSize - 128;
|
||||
}
|
||||
D_80126344 = 0;
|
||||
|
||||
assetOffset = (s32)align16((u8 *) ((s32) tex + assetSize));
|
||||
texTemp = tex;
|
||||
alignedAddress = align16((u8 *) ((s32) texTemp + assetSize));
|
||||
for (i = 0; i < numberOfTextures; i++) {
|
||||
material_init(texTemp, (Gfx *) alignedAddress);
|
||||
material_init(texTemp, (Gfx *) assetOffset);
|
||||
if (paletteOffset >= 0) {
|
||||
texTemp->ciPaletteOffset = paletteOffset;
|
||||
alignedAddress += 0x30; // I'm guessing it takes 6 f3d commands to load the palette
|
||||
assetOffset += 0x30; // I'm guessing it takes 6 f3d commands to load the palette
|
||||
}
|
||||
alignedAddress += 0x60; // I'm guessing it takes 12 f3d commands to load the texture
|
||||
assetOffset += 0x60; // I'm guessing it takes 12 f3d commands to load the texture
|
||||
texTemp = (TextureHeader *) ((s32) texTemp + texTemp->textureSize);
|
||||
}
|
||||
if (gCiPalettesSize >= 0x280) {
|
||||
return NULL;
|
||||
}
|
||||
if (gNumberOfLoadedTextures >= 701) {
|
||||
if (gNumberOfLoadedTextures > 700) {
|
||||
return NULL;
|
||||
}
|
||||
return tex;
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/textures_sprites/load_texture.s")
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This function attempts to free the texture from memory.
|
||||
|
||||
Reference in New Issue
Block a user