mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
@@ -5,11 +5,11 @@ 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 July 1, 2025, this is our current score:
|
||||
As of July 3, 2025, this is our current score:
|
||||
|
||||
    Decomp progress: 95.62%
|
||||
    Decomp progress: 96.21%
|
||||
|
||||
    Documentation progress: 61.34%
|
||||
    Documentation progress: 62.00%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
|
||||
---
|
||||
@@ -117,30 +117,30 @@ s32 is_drumstick_unlocked(void) {
|
||||
```
|
||||
|
||||
<!-- README_SCORE_BEGIN -->
|
||||
As of July 1, 2025, this is our current score:
|
||||
As of July 3, 2025, this is our current score:
|
||||
```
|
||||
===============================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
------------ 95.62% Complete (96.32% NON_MATCHING) ------------
|
||||
# Decompiled functions: 1937
|
||||
# GLOBAL_ASM remaining: 15
|
||||
------------ 96.21% Complete (96.91% NON_MATCHING) ------------
|
||||
# Decompiled functions: 1938
|
||||
# GLOBAL_ASM remaining: 14
|
||||
# NON_MATCHING functions: 4
|
||||
# NON_EQUIVALENT WIP functions: 11
|
||||
# NON_EQUIVALENT WIP functions: 10
|
||||
------------------------- Game Status -------------------------
|
||||
Balloons: 46/47, Keys: 4/4, Trophies: 4/5
|
||||
T.T. Amulets: 4/4, Wizpig Amulets: 4/4
|
||||
---------------------------------------------------------------
|
||||
We are collecting silver coins in Star City. (0/8 silver coins)
|
||||
We are collecting silver coins in Star City. (4/8 silver coins)
|
||||
===============================================================
|
||||
ADVENTURE TWO (Cleanup & Documentation)
|
||||
----------------------- 61.34% Complete -----------------------
|
||||
# Documented functions: 1219
|
||||
# Undocumented remaining: 433
|
||||
----------------------- 62.00% Complete -----------------------
|
||||
# Documented functions: 1221
|
||||
# Undocumented remaining: 431
|
||||
------------------------- Game Status -------------------------
|
||||
Balloons: 30/47, Keys: 3/4, Trophies: 2/5
|
||||
T.T. Amulets: 3/4, Wizpig Amulets: 2/4
|
||||
---------------------------------------------------------------
|
||||
We are racing in the rematch against Bubbler. (Lap 2/3)
|
||||
We are racing in the rematch against Bubbler. (Lap 3/3)
|
||||
===============================================================
|
||||
```
|
||||
<!-- README_SCORE_END -->
|
||||
|
||||
@@ -192,7 +192,7 @@ typedef struct ObjPropertyRacer {
|
||||
|
||||
typedef struct ObjPropertySetupPoint {
|
||||
s32 racerIndex;
|
||||
s32 entranceID;
|
||||
u32 entranceID;
|
||||
} ObjPropertySetupPoint;
|
||||
|
||||
typedef struct ObjPropertyWeapon {
|
||||
|
||||
+1
-1
@@ -1285,7 +1285,7 @@ typedef struct Object_Racer {
|
||||
/* 0x1C8 */ u8 unk1C8;
|
||||
/* 0x1C9 */ u8 unk1C9;
|
||||
/* 0x1CA */ s8 unk1CA;
|
||||
/* 0x1CB */ u8 unk1CB;
|
||||
/* 0x1CB */ s8 unk1CB;
|
||||
/* 0x1CC */ s8 aiSkill;
|
||||
/* 0x1CD */ u8 unk1CD;
|
||||
/* 0x1CE */ u8 unk1CE;
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@
|
||||
enum CollisionModes { COLLISION_MODE_DEFAULT, COLLISION_MODE_1, COLLISION_MODE_NO_WALLS };
|
||||
|
||||
void generate_collision_candidates(s32, f32 *, f32 *, s32);
|
||||
s32 compute_grid_overlap_mask(LevelModelSegmentBoundingBox *segment, s32 x1, s32 z1, s32 x2, s32 z2);
|
||||
s32 resolve_collisions(Vec3f *pos, Vec3f *pos2, f32 *radius, s8 *surface, s32 numEntries, s32 *numCollisions);
|
||||
s32 compute_grid_overlap_mask(LevelModelSegmentBoundingBox *bbox, s32 x1, s32 z1, s32 x2, s32 z2);
|
||||
s32 resolve_collisions(Vec3f *origin, Vec3f *target, f32 *radius, s8 *surface, s32 numEntries, s32 *numCollisions);
|
||||
|
||||
#endif
|
||||
|
||||
+258
-246
File diff suppressed because it is too large
Load Diff
+15
-4
@@ -181,6 +181,17 @@ enum ObjectSpawnFlags {
|
||||
OBJECT_SPAWN_UNK10 = (1 << 4)
|
||||
};
|
||||
|
||||
enum ObjectHeaderFlags {
|
||||
OBJECT_HEADER_NONE,
|
||||
OBJECT_HEADER_UNK01 = (1 << 0),
|
||||
OBJECT_HEADER_UNK02 = (1 << 1),
|
||||
OBJECT_HEADER_UNK04 = (1 << 2),
|
||||
OBJECT_HEADER_UNK08 = (1 << 3),
|
||||
OBJECT_HEADER_UNK10 = (1 << 4),
|
||||
OBJECT_HEADER_NO_TIME_TRIAL = (1 << 5), // Disable object in time trial mode.
|
||||
OBJECT_HEADER_NO_MULTIPLATER = (1 << 6) // Disable object in multiplayer.
|
||||
};
|
||||
|
||||
enum ObjectBehaviourFlags {
|
||||
OBJECT_BEHAVIOUR_NONE,
|
||||
OBJECT_BEHAVIOUR_SHADED = (1 << 0),
|
||||
@@ -293,7 +304,7 @@ s32 func_8000CC20(Object *obj);
|
||||
s32 get_contpak_error(void);
|
||||
void instShowBearBar(void);
|
||||
s8 func_8000E138(void);
|
||||
s8 func_8000E148(void);
|
||||
s8 racetype_demo(void);
|
||||
s8 func_8000E158(void);
|
||||
s8 func_8000E184(void);
|
||||
void func_8000E194(void);
|
||||
@@ -425,7 +436,7 @@ s32 obj_init_property_flags(s32 behaviorId);
|
||||
void tt_ghost_beaten(s32 arg0, s16 *playerId);
|
||||
void obj_init_animobject(Object *, Object *);
|
||||
Object *obj_butterfly_node(f32 x, f32 y, f32 z, f32 maxDistCheck, s32 dontCheckYAxis);
|
||||
void func_8002125C(Object *obj, LevelObjectEntry_Animation *entry, Object_AnimatedObject *charSelect, UNUSED s32 index);
|
||||
void func_8002125C(Object *obj, LevelObjectEntry_Animation *entry, Object_AnimatedObject *animObj, UNUSED s32 index);
|
||||
void func_80021104(Object *obj, Object_AnimatedObject *animObj, LevelObjectEntry_Animation *entry);
|
||||
s32 func_8001955C(Object *obj, s32 checkpoint, u8 arg2, s32 arg3, s32 arg4, f32 checkpointDist, f32 *outX, f32 *outY,
|
||||
f32 *outZ);
|
||||
@@ -477,14 +488,14 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32);
|
||||
s32 func_8001F460(Object *, s32, Object *);
|
||||
void func_8000B750(Object *racerObj, s32 racerIndex, s32 vehicleIDPrev, s32 boostType, s32 arg4);
|
||||
void func_80018CE0(Object *racerObj, f32 xPos, f32 yPos, f32 zPos, s32 updateRate);
|
||||
s32 func_800185E4(s32 checkpointIndex, Object *obj, f32 objX, f32 objY, f32 objZ, f32 *checkpointDistance, u8 *arg6);
|
||||
s32 func_800185E4(s32 checkpointIndex, Object *obj, f32 objX, f32 objY, f32 objZ, f32 *arg5, u8 *arg6);
|
||||
void obj_tex_animate(Object *, s32);
|
||||
Object *find_furthest_telepoint(f32 x, f32 z);
|
||||
void func_8006017C(ObjectModel *);
|
||||
void set_temp_model_transforms(Object *);
|
||||
void func_800101AC(Object *, s32);
|
||||
void func_800135B8(Object *);
|
||||
void func_8000CC7C(Vehicle, u32, s32);
|
||||
void track_setup_racers(Vehicle, u32, s32);
|
||||
void func_80017E98(void);
|
||||
void spectate_update(void);
|
||||
void func_8001E93C(void);
|
||||
|
||||
+1
-1
@@ -4458,7 +4458,7 @@ void update_player_racer(Object *obj, s32 updateRate) {
|
||||
playerIDF = -(f32) playerID;
|
||||
CLAMP(tempRacer->velocity, playerIDF, playerID);
|
||||
}
|
||||
if (context != GAMEMODE_MENU || func_8000E148()) {
|
||||
if (context != GAMEMODE_MENU || racetype_demo()) {
|
||||
racer_sound_update(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate);
|
||||
}
|
||||
lastCheckpointDist = tempRacer->checkpoint_distance;
|
||||
|
||||
+1
-1
@@ -239,7 +239,7 @@ void init_track(u32 geometry, u32 skybox, s32 numberOfPlayers, Vehicle vehicle,
|
||||
func_8000C8F8(arg6, 0);
|
||||
func_8000C8F8(collectables, 1);
|
||||
gScenePlayerViewports = numberOfPlayers;
|
||||
func_8000CC7C(vehicle, entranceId, numberOfPlayers);
|
||||
track_setup_racers(vehicle, entranceId, numberOfPlayers);
|
||||
racerfx_alloc(72, 64);
|
||||
|
||||
if (geometry == 0 && entranceId == 0) {
|
||||
|
||||
+2
-2
@@ -125,8 +125,8 @@ s32 get_inside_segment_count_xz(s32 x, s32 z, s32 *arg2);
|
||||
s32 get_inside_segment_count_xyz(s32 *arg0, s16 xPos1, s16 yPos1, s16 zPos1, s16 xPos2, s16 yPos2, s16 zPos2);
|
||||
LevelModelSegment *get_segment(s32 segmentID);
|
||||
LevelModelSegmentBoundingBox *get_segment_bounding_box(s32 segmentID);
|
||||
void set_collision_mode(s32 arg0);
|
||||
s32 get_collision_normal(f32 *arg0, f32 *arg1, f32 *arg2);
|
||||
void set_collision_mode(s32 mode);
|
||||
s32 get_collision_normal(f32 *outX, f32 *outY, f32 *outZ);
|
||||
s32 func_8002B9BC(Object *obj, f32 *arg1, Vec3f *arg2, s32 arg3);
|
||||
void func_8002C71C(LevelModelSegment *segment);
|
||||
LevelModel *get_current_level_model(void);
|
||||
|
||||
@@ -191,11 +191,11 @@ func_8000C8F8 = 0x8000C8F8;
|
||||
func_8000CBC0 = 0x8000CBC0;
|
||||
func_8000CBF0 = 0x8000CBF0;
|
||||
func_8000CC20 = 0x8000CC20;
|
||||
func_8000CC7C = 0x8000CC7C;
|
||||
track_setup_racers = 0x8000CC7C;
|
||||
get_contpak_error = 0x8000E0B0;
|
||||
instShowBearBar = 0x8000E128;
|
||||
func_8000E138 = 0x8000E138;
|
||||
func_8000E148 = 0x8000E148;
|
||||
racetype_demo = 0x8000E148;
|
||||
func_8000E158 = 0x8000E158;
|
||||
func_8000E184 = 0x8000E184;
|
||||
func_8000E194 = 0x8000E194;
|
||||
@@ -2209,7 +2209,7 @@ D_800DC70C = 0x800DE09C;
|
||||
D_800DC710 = 0x800DE0A0;
|
||||
D_800DC714 = 0x800DE0A4;
|
||||
gGhostObjStaff = 0x800DE0A8;
|
||||
D_800DC71C = 0x800DE0AC;
|
||||
gRollingDemo = 0x800DE0AC;
|
||||
gObjectTexAnim = 0x800DE0B0;
|
||||
gTimeTrialTime = 0x800DE0B4;
|
||||
gTimeTrialVehicle = 0x800DE0B8;
|
||||
@@ -2228,7 +2228,7 @@ gBoostObjOverrideID = 0x800DE0F0;
|
||||
gMagnetEffectObject = 0x800DE0F4;
|
||||
D_800DC768 = 0x800DE0F8;
|
||||
D_800DC76C = 0x800DE0FC;
|
||||
D_800DC7A8 = 0x800DE138;
|
||||
gRacerObjectTable = 0x800DE138;
|
||||
D_800DC7B8 = 0x800DE148; // type:s16 size:0x66
|
||||
gBossVehicles = 0x800DE1B0; // size:0x14
|
||||
D_800DC834 = 0x800DE1C4;
|
||||
|
||||
@@ -191,11 +191,11 @@ func_8000C8F8 = 0x8000C8F8;
|
||||
func_8000CBC0 = 0x8000CBC0;
|
||||
func_8000CBF0 = 0x8000CBF0;
|
||||
func_8000CC20 = 0x8000CC20;
|
||||
func_8000CC7C = 0x8000CC7C;
|
||||
track_setup_racers = 0x8000CC7C;
|
||||
get_contpak_error = 0x8000E0B0;
|
||||
instShowBearBar = 0x8000E128;
|
||||
func_8000E138 = 0x8000E138;
|
||||
func_8000E148 = 0x8000E148;
|
||||
racetype_demo = 0x8000E148;
|
||||
func_8000E158 = 0x8000E158;
|
||||
func_8000E184 = 0x8000E184;
|
||||
func_8000E194 = 0x8000E194;
|
||||
@@ -2109,7 +2109,7 @@ D_800DC70C = 0x800DC79C;
|
||||
D_800DC710 = 0x800DC7A0;
|
||||
D_800DC714 = 0x800DC7A4;
|
||||
gGhostObjStaff = 0x800DC7A8;
|
||||
D_800DC71C = 0x800DC7AC;
|
||||
gRollingDemo = 0x800DC7AC;
|
||||
gObjectTexAnim = 0x800DC7B0;
|
||||
gTimeTrialTime = 0x800DC7B4;
|
||||
gTimeTrialVehicle = 0x800DC7B8;
|
||||
@@ -2128,7 +2128,7 @@ gBoostObjOverrideID = 0x800DC7F0;
|
||||
gMagnetEffectObject = 0x800DC7F4;
|
||||
D_800DC768 = 0x800DC7F8;
|
||||
D_800DC76C = 0x800DC7FC;
|
||||
D_800DC7A8 = 0x800DC838;
|
||||
gRacerObjectTable = 0x800DC838;
|
||||
D_800DC7B8 = 0x800DC848; // type:s16 size:0x66
|
||||
gBossVehicles = 0x800DC8B0; // size:0x14
|
||||
D_800DC834 = 0x800DC8C4;
|
||||
|
||||
@@ -191,11 +191,11 @@ func_8000C8F8 = 0x8000C8F8;
|
||||
func_8000CBC0 = 0x8000CBC0;
|
||||
func_8000CBF0 = 0x8000CBF0;
|
||||
func_8000CC20 = 0x8000CC20;
|
||||
func_8000CC7C = 0x8000CC7C;
|
||||
track_setup_racers = 0x8000CC7C;
|
||||
get_contpak_error = 0x8000E0B0;
|
||||
instShowBearBar = 0x8000E128;
|
||||
func_8000E138 = 0x8000E138;
|
||||
func_8000E148 = 0x8000E148;
|
||||
racetype_demo = 0x8000E148;
|
||||
func_8000E158 = 0x8000E158;
|
||||
func_8000E184 = 0x8000E184;
|
||||
func_8000E194 = 0x8000E194;
|
||||
@@ -2036,7 +2036,7 @@ D_800DC70C = 0x800DCD0C;
|
||||
D_800DC710 = 0x800DCD10;
|
||||
D_800DC714 = 0x800DCD14;
|
||||
gGhostObjStaff = 0x800DCD18;
|
||||
D_800DC71C = 0x800DCD1C;
|
||||
gRollingDemo = 0x800DCD1C;
|
||||
gObjectTexAnim = 0x800DCD20;
|
||||
gTimeTrialTime = 0x800DCD24;
|
||||
gTimeTrialVehicle = 0x800DCD28;
|
||||
@@ -2055,7 +2055,7 @@ gBoostObjOverrideID = 0x800DCD60;
|
||||
gMagnetEffectObject = 0x800DCD64;
|
||||
D_800DC768 = 0x800DCD68;
|
||||
D_800DC76C = 0x800DCD6C;
|
||||
D_800DC7A8 = 0x800DCDA8;
|
||||
gRacerObjectTable = 0x800DCDA8;
|
||||
D_800DC7B8 = 0x800DCDB8; // type:s16 size:0x66
|
||||
gBossVehicles = 0x800DCE20; // size:0x14
|
||||
D_800DC834 = 0x800DCE34;
|
||||
|
||||
@@ -191,11 +191,11 @@ func_8000C8F8 = 0x8000C8F8;
|
||||
func_8000CBC0 = 0x8000CBC0;
|
||||
func_8000CBF0 = 0x8000CBF0;
|
||||
func_8000CC20 = 0x8000CC20;
|
||||
func_8000CC7C = 0x8000CC7C;
|
||||
track_setup_racers = 0x8000CC7C;
|
||||
get_contpak_error = 0x8000E0B0;
|
||||
instShowBearBar = 0x8000E128;
|
||||
func_8000E138 = 0x8000E138;
|
||||
func_8000E148 = 0x8000E148;
|
||||
racetype_demo = 0x8000E148;
|
||||
func_8000E158 = 0x8000E158;
|
||||
func_8000E184 = 0x8000E184;
|
||||
func_8000E194 = 0x8000E194;
|
||||
@@ -2204,7 +2204,7 @@ D_800DC70C = 0x800DC70C;
|
||||
D_800DC710 = 0x800DC710;
|
||||
D_800DC714 = 0x800DC714;
|
||||
gGhostObjStaff = 0x800DC718;
|
||||
D_800DC71C = 0x800DC71C;
|
||||
gRollingDemo = 0x800DC71C;
|
||||
gObjectTexAnim = 0x800DC720;
|
||||
gTimeTrialTime = 0x800DC724;
|
||||
gTimeTrialVehicle = 0x800DC728;
|
||||
@@ -2223,7 +2223,7 @@ gBoostObjOverrideID = 0x800DC760;
|
||||
gMagnetEffectObject = 0x800DC764;
|
||||
D_800DC768 = 0x800DC768;
|
||||
D_800DC76C = 0x800DC76C;
|
||||
D_800DC7A8 = 0x800DC7A8;
|
||||
gRacerObjectTable = 0x800DC7A8;
|
||||
D_800DC7B8 = 0x800DC7B8; // type:s16 size:0x66
|
||||
gBossVehicles = 0x800DC820; // size:0x14
|
||||
D_800DC834 = 0x800DC834;
|
||||
|
||||
@@ -191,11 +191,11 @@ func_8000C8F8 = 0x8000C8F8;
|
||||
func_8000CBC0 = 0x8000CBC0;
|
||||
func_8000CBF0 = 0x8000CBF0;
|
||||
func_8000CC20 = 0x8000CC20;
|
||||
func_8000CC7C = 0x8000CC7C;
|
||||
track_setup_racers = 0x8000CC7C;
|
||||
get_contpak_error = 0x8000E0B0;
|
||||
instShowBearBar = 0x8000E128;
|
||||
func_8000E138 = 0x8000E138;
|
||||
func_8000E148 = 0x8000E148;
|
||||
racetype_demo = 0x8000E148;
|
||||
func_8000E158 = 0x8000E158;
|
||||
func_8000E184 = 0x8000E184;
|
||||
func_8000E194 = 0x8000E194;
|
||||
@@ -2033,7 +2033,7 @@ D_800DC70C = 0x800DCC7C;
|
||||
D_800DC710 = 0x800DCC80;
|
||||
D_800DC714 = 0x800DCC84;
|
||||
gGhostObjStaff = 0x800DCC88;
|
||||
D_800DC71C = 0x800DCC8C;
|
||||
gRollingDemo = 0x800DCC8C;
|
||||
gObjectTexAnim = 0x800DCC90;
|
||||
gTimeTrialTime = 0x800DCC94;
|
||||
gTimeTrialVehicle = 0x800DCC98;
|
||||
@@ -2052,7 +2052,7 @@ gBoostObjOverrideID = 0x800DCCD0;
|
||||
gMagnetEffectObject = 0x800DCCD4;
|
||||
D_800DC768 = 0x800DCCD8;
|
||||
D_800DC76C = 0x800DCCDC;
|
||||
D_800DC7A8 = 0x800DCD18;
|
||||
gRacerObjectTable = 0x800DCD18;
|
||||
D_800DC7B8 = 0x800DCD28; // type:s16 size:0x66
|
||||
gBossVehicles = 0x800DCD90; // size:0x14
|
||||
D_800DC834 = 0x800DCDA4;
|
||||
|
||||
Reference in New Issue
Block a user