mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Decompiled obj_init_butterfly
This commit is contained in:
@@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the
|
||||
Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time.
|
||||
|
||||
<!-- README_SCORE_SUMMARY_BEGIN -->
|
||||
As of November 2, 2023, this is our current score:
|
||||
As of November 4, 2023, this is our current score:
|
||||
|
||||
    Decomp progress: 64.04%
|
||||
    Decomp progress: 64.12%
|
||||
|
||||
    Documentation progress: 35.21%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
@@ -128,15 +128,15 @@ s32 is_drumstick_unlocked(void) {
|
||||
```
|
||||
|
||||
<!-- README_SCORE_BEGIN -->
|
||||
As of November 2, 2023, this is our current score:
|
||||
As of November 4, 2023, this is our current score:
|
||||
```
|
||||
====================================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
-------------- 64.04% Complete (66.95% NON_MATCHING) ---------------
|
||||
# Decompiled functions: 1664
|
||||
# GLOBAL_ASM remaining: 181
|
||||
-------------- 64.12% Complete (67.03% NON_MATCHING) ---------------
|
||||
# Decompiled functions: 1665
|
||||
# GLOBAL_ASM remaining: 180
|
||||
# NON_MATCHING functions: 16
|
||||
# NON_EQUIVALENT WIP functions: 50
|
||||
# NON_EQUIVALENT WIP functions: 49
|
||||
--------------------------- Game Status ----------------------------
|
||||
Balloons: 30/47, Keys: 3/4, Trophies: 3/5
|
||||
T.T. Amulets: 3/4, Wizpig Amulets: 3/4
|
||||
|
||||
+48
-55
@@ -4798,78 +4798,71 @@ void obj_init_wavegenerator(Object *obj, UNUSED LevelObjectEntry_WaveGenerator *
|
||||
func_800BF524(obj);
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
|
||||
void obj_init_butterfly(Object *obj, LevelObjectEntry_Butterfly *entry, s32 arg2) {
|
||||
Object_Butterfly *obj64;
|
||||
s32 i, j;
|
||||
s32 uMask, vMask;
|
||||
|
||||
obj64 = &obj->unk64->butterfly;
|
||||
void obj_init_butterfly(Object *butterflyObj, LevelObjectEntry_Butterfly *butterflyEntry, s32 arg2) {
|
||||
Object_Butterfly *butterfly;
|
||||
s32 uMask;
|
||||
s32 vMask;
|
||||
s32 i;
|
||||
|
||||
butterfly = &butterflyObj->unk64->butterfly;
|
||||
if (arg2 == 0) {
|
||||
obj->segment.y_velocity = 0.0f;
|
||||
obj64->unkFE = 0;
|
||||
obj64->unk100 = 0;
|
||||
obj64->unk104 = 0;
|
||||
obj64->unkFD = 0;
|
||||
obj64->unk106 = 384;
|
||||
obj64->unk108 = 0.0f;
|
||||
// This loop is okay
|
||||
butterflyObj->segment.y_velocity = 0.0f;
|
||||
butterfly->unkFE = 0;
|
||||
butterfly->unk100 = 0;
|
||||
butterfly->unk104 = 0;
|
||||
butterfly->unkFD = 0;
|
||||
butterfly->unk106 = 0x180;
|
||||
butterfly->unk108 = 0.0f;
|
||||
for(i = 0; i < 8; i++) {
|
||||
obj64->triangles[i].flags = D_800DCAA8[i].flags;
|
||||
obj64->triangles[i].vi0 = D_800DCAA8[i].vi0;
|
||||
obj64->triangles[i].vi1 = D_800DCAA8[i].vi1;
|
||||
obj64->triangles[i].vi2 = D_800DCAA8[i].vi2;
|
||||
butterfly->triangles[i].flags = D_800DCAA8[i].flags;
|
||||
butterfly->triangles[i].vi0 = D_800DCAA8[i].vi0;
|
||||
butterfly->triangles[i].vi1 = D_800DCAA8[i].vi1;
|
||||
butterfly->triangles[i].vi2 = D_800DCAA8[i].vi2;
|
||||
}
|
||||
// This loop is not.
|
||||
uMask = 0;
|
||||
for(i = 0; i < 6; i++) {
|
||||
//u32 j = i + 6;
|
||||
obj64->vertices[i].x = D_800DCB28[i].x;
|
||||
obj64->vertices[i].y = D_800DCB28[i+1].y;
|
||||
obj64->vertices[i].z = D_800DCB28[i+1].z;
|
||||
obj64->vertices[i].r = 255;
|
||||
obj64->vertices[i].g = 255;
|
||||
obj64->vertices[i].b = 255;
|
||||
obj64->vertices[i].a = 255;
|
||||
obj64->vertices[(u32)(i+6)].x = D_800DCB28[i+1].x;
|
||||
obj64->vertices[i+6].y = D_800DCB28[i].y;
|
||||
obj64->vertices[i+6].z = D_800DCB28[i].z;
|
||||
obj64->vertices[i+6].r = 255;
|
||||
obj64->vertices[i+6].g = 255;
|
||||
obj64->vertices[i+6].b = 255;
|
||||
obj64->vertices[i+6].a = 255;
|
||||
butterfly->vertices[uMask].x = D_800DCB28[uMask].x;
|
||||
butterfly->vertices[uMask].y = D_800DCB28[uMask].y;
|
||||
butterfly->vertices[uMask].z = D_800DCB28[uMask].z;
|
||||
butterfly->vertices[uMask].r = 255;
|
||||
butterfly->vertices[uMask].g = 255;
|
||||
butterfly->vertices[uMask].b = 255;
|
||||
butterfly->vertices[uMask].a = 255;
|
||||
butterfly->vertices[uMask+6].x = D_800DCB28[uMask].x;
|
||||
butterfly->vertices[uMask+6].y = D_800DCB28[uMask].y;
|
||||
butterfly->vertices[uMask+6].z = D_800DCB28[uMask].z;
|
||||
butterfly->vertices[uMask+6].r = 255;
|
||||
butterfly->vertices[uMask+6].g = 255;
|
||||
butterfly->vertices[uMask+6].b = 255;
|
||||
butterfly->vertices[uMask+6].a = 255;
|
||||
uMask++;
|
||||
}
|
||||
obj64->unkFC = 1;
|
||||
butterfly->unkFC = 1;
|
||||
}
|
||||
obj->segment.trans.scale = entry->unkB * 0.01f;
|
||||
if (entry->unkA < obj->segment.header->numberOfModelIds) {
|
||||
obj64->texture = (TextureHeader*)obj->unk68[entry->unkA];
|
||||
butterflyObj->segment.trans.scale = butterflyEntry->unkB * 0.01f;
|
||||
if (butterflyEntry->unkA < butterflyObj->segment.header->numberOfModelIds) {
|
||||
butterfly->texture = (TextureHeader* ) butterflyObj->unk68[butterflyEntry->unkA];
|
||||
} else {
|
||||
obj64->texture = (TextureHeader*)obj->unk68[0];
|
||||
butterfly->texture = (TextureHeader* ) butterflyObj->unk68[0];
|
||||
}
|
||||
|
||||
if (obj64->texture) {
|
||||
uMask = (obj64->texture->width - 1) << 5;
|
||||
vMask = (obj64->texture->height - 1) << 5;
|
||||
if (butterfly->texture != NULL) {
|
||||
uMask = (butterfly->texture->width - 1) << 5;
|
||||
vMask = (butterfly->texture->height - 1) << 5;
|
||||
} else {
|
||||
uMask = 0;
|
||||
vMask = 0;
|
||||
}
|
||||
for(i = 0; i < 8; i++) {
|
||||
obj64->triangles[i].uv0.u = D_800DCAA8[i].uv0.u & uMask;
|
||||
obj64->triangles[i].uv0.v = D_800DCAA8[i].uv0.v & vMask;
|
||||
obj64->triangles[i].uv1.u = D_800DCAA8[i].uv1.u & uMask;
|
||||
obj64->triangles[i].uv1.v = D_800DCAA8[i].uv1.v & vMask;
|
||||
obj64->triangles[i].uv2.u = D_800DCAA8[i].uv2.u & uMask;
|
||||
obj64->triangles[i].uv2.v = D_800DCAA8[i].uv2.v & vMask;
|
||||
butterfly->triangles[i].uv0.u = D_800DCAA8[i].uv0.u & uMask;
|
||||
butterfly->triangles[i].uv0.v = D_800DCAA8[i].uv0.v & vMask;
|
||||
butterfly->triangles[i].uv1.u = D_800DCAA8[i].uv1.u & uMask;
|
||||
butterfly->triangles[i].uv1.v = D_800DCAA8[i].uv1.v & vMask;
|
||||
butterfly->triangles[i].uv2.u = D_800DCAA8[i].uv2.u & uMask;
|
||||
butterfly->triangles[i].uv2.v = D_800DCAA8[i].uv2.v & vMask;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/object_functions/obj_init_butterfly.s")
|
||||
#endif
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/object_functions/obj_loop_butterfly.s")
|
||||
|
||||
//Scratch: https://decomp.me/scratch/h4CcJ
|
||||
|
||||
Reference in New Issue
Block a user