match func_8000CC7C (#658)

* there we go :)

* Update objects.c
This commit is contained in:
Fazana
2025-07-03 09:04:33 +01:00
committed by GitHub
parent cce72c9f62
commit b710316068
14 changed files with 314 additions and 291 deletions
+13 -13
View File
@@ -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:
&emsp;&emsp;&emsp;&emsp;Decomp progress: 95.62%
&emsp;&emsp;&emsp;&emsp;Decomp progress: 96.21%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 61.34%
&emsp;&emsp;&emsp;&emsp;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 -->
+1 -1
View File
@@ -192,7 +192,7 @@ typedef struct ObjPropertyRacer {
typedef struct ObjPropertySetupPoint {
s32 racerIndex;
s32 entranceID;
u32 entranceID;
} ObjPropertySetupPoint;
typedef struct ObjPropertyWeapon {
+1 -1
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+15 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+4 -4
View File
@@ -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;
+4 -4
View File
@@ -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;
+4 -4
View File
@@ -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;
+4 -4
View File
@@ -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;
+4 -4
View File
@@ -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;