mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
camera segments
This commit is contained in:
+6
-6
@@ -136,7 +136,7 @@ unk8012117C *D_8012117C;
|
||||
|
||||
s32 D_80121180[16];
|
||||
|
||||
u32 *D_801211C0[2];
|
||||
TempStruct5 *D_801211C0;
|
||||
s16 D_801211C8[20];
|
||||
Gfx *gDisplayLists[2];
|
||||
Gfx *gCurrDisplayList;
|
||||
@@ -736,17 +736,17 @@ void func_8006BFC8(s8 *arg0) {
|
||||
}
|
||||
temp2 = gTempAssetTable[phi_s0];
|
||||
temp = gTempAssetTable[phi_s0 + 1] - temp2;
|
||||
D_801211C0[0] = allocate_from_main_pool_safe(temp, COLOUR_TAG_YELLOW);
|
||||
load_asset_to_address(ASSET_UNKNOWN_0, D_801211C0[0], temp2, temp);
|
||||
D_801211C0 = allocate_from_main_pool_safe(temp, COLOUR_TAG_YELLOW);
|
||||
load_asset_to_address(ASSET_UNKNOWN_0, D_801211C0, temp2, temp);
|
||||
free_from_memory_pool(gTempAssetTable);
|
||||
}
|
||||
|
||||
void func_8006C164(void) {
|
||||
free_from_memory_pool(D_801211C0[0]);
|
||||
free_from_memory_pool(D_801211C0);
|
||||
}
|
||||
|
||||
u32 *func_8006C18C(void) {
|
||||
return D_801211C0[0];
|
||||
TempStruct5 *func_8006C18C(void) {
|
||||
return D_801211C0;
|
||||
}
|
||||
|
||||
s8 func_8006C19C(void) {
|
||||
|
||||
+2
-1
@@ -5,6 +5,7 @@
|
||||
#include "structs.h"
|
||||
#include "fade_transition.h"
|
||||
#include "libc/math.h"
|
||||
#include "racer.h"
|
||||
|
||||
enum RenderContext {
|
||||
DRAW_INTRO = -1,
|
||||
@@ -104,7 +105,7 @@ u8 *get_level_name(s32 levelId);
|
||||
void func_8006BEFC(void);
|
||||
void func_8006BFC8(s8 *arg0);
|
||||
void func_8006C164(void);
|
||||
u32 *func_8006C18C(void);
|
||||
TempStruct5 *func_8006C18C(void);
|
||||
s8 func_8006C19C(void);
|
||||
void func_8006C1AC(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
||||
void func_8006C22C(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3);
|
||||
|
||||
+26
-26
@@ -199,7 +199,7 @@ s16 D_8011D5B8;
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/racer/func_80042D20.s")
|
||||
|
||||
void func_80043ECC(s32 arg0, Object_64_Unknown5 *arg1, s32 updateRate) {
|
||||
void func_80043ECC(s32 arg0, Object_Racer *racer, s32 updateRate) {
|
||||
TempStruct5 *temp_v0;
|
||||
s8 *test;
|
||||
s8 phi_a0;
|
||||
@@ -214,8 +214,8 @@ void func_80043ECC(s32 arg0, Object_64_Unknown5 *arg1, s32 updateRate) {
|
||||
D_8011D5BC = 0;
|
||||
return;
|
||||
}
|
||||
temp_v0 = (TempStruct5 *)func_8006C18C();
|
||||
if (arg1->unk1D3) {
|
||||
temp_v0 = func_8006C18C();
|
||||
if (racer->boostTimer) {
|
||||
if (!D_8011D5BB) {
|
||||
temp_v0->unk8[3][0] += temp_v0->unk8[3][2];
|
||||
temp_v0->unk8[3][1] += temp_v0->unk8[3][3];
|
||||
@@ -232,21 +232,21 @@ void func_80043ECC(s32 arg0, Object_64_Unknown5 *arg1, s32 updateRate) {
|
||||
}
|
||||
D_8011D5BA = 0;
|
||||
}
|
||||
if (arg1->unk173) {
|
||||
if (D_8011D5BC < arg1->unk174) {
|
||||
if (racer->balloon_quantity) {
|
||||
if (D_8011D5BC < racer->balloon_level) {
|
||||
temp_v0->unk8[1][0] += temp_v0->unk8[1][2];
|
||||
temp_v0->unk8[1][1] += temp_v0->unk8[1][3];
|
||||
}
|
||||
D_8011D5BC = arg1->unk174;
|
||||
D_8011D5BC = racer->balloon_level;
|
||||
} else {
|
||||
D_8011D5BC = 0;
|
||||
}
|
||||
test = get_misc_asset(12);
|
||||
if ((D_8011D530 & 0x2000) && arg1->unk173) {
|
||||
if (arg1->unk174 < 3) {
|
||||
phi_a0 = test[arg1->unk172 * 3 + arg1->unk174];
|
||||
if ((D_8011D530 & 0x2000) && racer->balloon_quantity) {
|
||||
if (racer->balloon_level < 3) {
|
||||
phi_a0 = test[racer->balloon_type * 3 + racer->balloon_level];
|
||||
} else {
|
||||
phi_a0 = arg1->unk172;
|
||||
phi_a0 = racer->balloon_type;
|
||||
}
|
||||
if (D_800DCD90[phi_a0] == 1) {
|
||||
temp_v0->unk8[2][0] += temp_v0->unk8[2][2];
|
||||
@@ -500,8 +500,8 @@ void update_camera_hovercraft(f32 updateRate, Object *obj, Object_Racer *racer)
|
||||
gCameraObject->trans.z_position = obj->segment.trans.z_position + zVel;
|
||||
gCameraObject->trans.y_rotation = racer->unk196;
|
||||
segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position);
|
||||
if (segmentIndex != -1) {
|
||||
gCameraObject->unk34 = segmentIndex;
|
||||
if (segmentIndex != SEGMENT_NONE) {
|
||||
gCameraObject->segmentIndex = segmentIndex;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -789,7 +789,7 @@ void update_camera_plane(f32 updateRate, Object* obj, Object_Racer* racer) {
|
||||
tempVel = gCameraObject->trans.x_position;
|
||||
segmentIndex = get_level_segment_index_from_position(tempVel, gCameraObject->trans.y_position, gCameraObject->trans.z_position);
|
||||
if (segmentIndex != -1) {
|
||||
gCameraObject->unk34 = segmentIndex;
|
||||
gCameraObject->segmentIndex = segmentIndex;
|
||||
}
|
||||
racer->unk196 = gCameraObject->trans.y_rotation;
|
||||
}
|
||||
@@ -819,8 +819,8 @@ void update_camera_loop(f32 updateRate, Object* obj, Object_Racer* racer) {
|
||||
|
||||
delta = (s32) updateRate;
|
||||
zoom = 120.0f;
|
||||
if (gRaceStartTimer >= 0x3D) {
|
||||
zoom += ((f32) (gRaceStartTimer - 0x3C) * 4.0f);
|
||||
if (gRaceStartTimer > 60) {
|
||||
zoom += ((f32) (gRaceStartTimer - 60) * 4.0f);
|
||||
}
|
||||
racer->unk196 = 0x8000 - racer->unk1A0;
|
||||
if (get_viewport_count() == 1) {
|
||||
@@ -860,8 +860,8 @@ void update_camera_loop(f32 updateRate, Object* obj, Object_Racer* racer) {
|
||||
gCameraObject->trans.x_rotation += ((angle * delta) >> 4);
|
||||
gCameraObject->trans.y_rotation = racer->unk196;
|
||||
segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position);
|
||||
if (segmentIndex != -1) {
|
||||
gCameraObject->unk34 = segmentIndex;
|
||||
if (segmentIndex != SEGMENT_NONE) {
|
||||
gCameraObject->segmentIndex = segmentIndex;
|
||||
}
|
||||
racer->unk196 = gCameraObject->trans.y_rotation;
|
||||
gCameraObject->trans.x_position += gCameraObject->x_velocity;
|
||||
@@ -1949,7 +1949,7 @@ void func_800580B4(Object *obj, Object_Racer *racer, s32 mode, f32 arg3) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
#ifdef NON_MATCHING
|
||||
void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) {
|
||||
s64 pad;
|
||||
s32 segmentIndex;
|
||||
@@ -2067,7 +2067,7 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) {
|
||||
baseDistance += baseSpeed * 30.0f;
|
||||
}
|
||||
if (gRaceStartTimer == 0) {
|
||||
if (normalise_time(0x24) < racer->boostTimer) {
|
||||
if (normalise_time(36) < racer->boostTimer) {
|
||||
baseDistance = -30.0f;
|
||||
} else if (racer->boostTimer > 0) {
|
||||
baseDistance = 180.0f;
|
||||
@@ -2144,7 +2144,7 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) {
|
||||
lateralOffset = (yOffset = gCameraObject->trans.x_position);
|
||||
segmentIndex = get_level_segment_index_from_position(lateralOffset, gCameraObject->trans.y_position, gCameraObject->trans.z_position);
|
||||
if (segmentIndex != -1) {
|
||||
gCameraObject->unk34 = segmentIndex;
|
||||
gCameraObject->segmentIndex = segmentIndex;
|
||||
}
|
||||
racer->unk196 = gCameraObject->trans.y_rotation;
|
||||
}
|
||||
@@ -2158,7 +2158,7 @@ GLOBAL_ASM("asm/non_matchings/racer/update_camera_car.s")
|
||||
* Otherwise, it will follow a set path while rotating.
|
||||
*/
|
||||
void update_camera_finish_challenge(UNUSED f32 updateRate, Object *obj, Object_Racer *racer) {
|
||||
s32 levelSeg;
|
||||
s32 segmentIndex;
|
||||
f32 temp_f12;
|
||||
f32 zOffset;
|
||||
f32 xOffset;
|
||||
@@ -2179,9 +2179,9 @@ void update_camera_finish_challenge(UNUSED f32 updateRate, Object *obj, Object_R
|
||||
gCameraObject->trans.y_position = obj->segment.trans.y_position + 45.0f;
|
||||
}
|
||||
gCameraObject->trans.z_position = obj->segment.trans.z_position + zOffset;
|
||||
levelSeg = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position);
|
||||
if (levelSeg != -1) {
|
||||
gCameraObject->unk34 = levelSeg;
|
||||
segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position);
|
||||
if (segmentIndex != SEGMENT_NONE) {
|
||||
gCameraObject->segmentIndex = segmentIndex;
|
||||
}
|
||||
racer->unk196 = gCameraObject->trans.y_rotation;
|
||||
}
|
||||
@@ -2215,7 +2215,7 @@ void update_camera_finish_race(UNUSED f32 updateRate, Object *obj, Object_Racer
|
||||
gCameraObject->trans.y_rotation = (s16) (0x8000 - func_8007066C((s32) xDiff, (s32) zDiff));
|
||||
gCameraObject->trans.x_rotation = func_8007066C((s32) yDiff, (s32) distance);
|
||||
gCameraObject->trans.z_rotation = 0;
|
||||
gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->trans.x_position, racer->oy1, gCameraObject->trans.z_position);
|
||||
gCameraObject->segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position, racer->oy1, gCameraObject->trans.z_position);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2232,7 +2232,7 @@ void update_camera_fixed(f32 updateRate, struct Object *obj, struct Object_Racer
|
||||
gCameraObject->trans.y_rotation += ((((-func_8007066C((s32) xDiff, (s32) zDiff)) -
|
||||
gCameraObject->trans.y_rotation) + 0x8000) * delta) >> 4;
|
||||
gCameraObject->trans.z_rotation -= (((s32) (gCameraObject->trans.z_rotation * delta)) >> 4);
|
||||
gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->trans.x_position,
|
||||
gCameraObject->segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position,
|
||||
racer->oy1, gCameraObject->trans.z_position);
|
||||
}
|
||||
|
||||
|
||||
+4
-23
@@ -5,6 +5,8 @@
|
||||
#include "structs.h"
|
||||
#include "level_object_entries.h"
|
||||
|
||||
#define SEGMENT_NONE -1 // If the level in question does not use segmentation.
|
||||
|
||||
typedef enum ActivePlayers {
|
||||
PLAYER_COMPUTER = -1,
|
||||
PLAYER_ONE,
|
||||
@@ -59,7 +61,7 @@ typedef struct ObjectCamera {
|
||||
/* 0x0028 */ f32 y_velocity;
|
||||
/* 0x002C */ f32 z_velocity;
|
||||
/* 0x0030 */ f32 unk30;
|
||||
/* 0x0034 */ s16 unk34;
|
||||
/* 0x0034 */ s16 segmentIndex;
|
||||
/* 0x0036 */ s16 mode;
|
||||
/* 0x0038 */ s16 unk38;
|
||||
/* 0x003A */ s8 unk3A;
|
||||
@@ -81,32 +83,11 @@ typedef struct unk8005234C {
|
||||
s16 unk16C;
|
||||
} unk8005234C;
|
||||
|
||||
// Also fairly certain this is NOT Object_Racer.
|
||||
typedef struct Object_64_Unknown5 {
|
||||
u8 pad0[0x88];
|
||||
u8 unk89;
|
||||
u8 pad90[0xE9];
|
||||
s8 unk172;
|
||||
s8 unk173;
|
||||
s8 unk174;
|
||||
u8 pad175[0x5E];
|
||||
s8 unk1D3;
|
||||
} Object_64_Unknown5;
|
||||
|
||||
typedef struct TempStruct5 {
|
||||
s8 pad0[8];
|
||||
s8 unk8[4][4];
|
||||
} TempStruct5;
|
||||
|
||||
typedef struct Object_64_80053478 {
|
||||
u8 unk0[0x2C];
|
||||
f32 unk2C; // Forward Velocity?
|
||||
u8 unk30[0x1B1];
|
||||
s8 unk1E1; // Steering Value?
|
||||
u8 unk1E2[4];
|
||||
s8 unk1E6;
|
||||
} Object_64_80053478;
|
||||
|
||||
/* Unknown Size */
|
||||
typedef struct unk800535C4 {
|
||||
s16 unk0;
|
||||
@@ -239,7 +220,7 @@ void func_800521C4(Object *obj, Object_Racer *racer, s32 arg2);
|
||||
void func_80050754(Object *obj, Object_Racer *racer, f32 divisor);
|
||||
void obj_init_racer(Object *obj, LevelObjectEntry_CharacterFlag *racer);
|
||||
void func_80044170(Object *obj, Object_Racer *racer, s32 updateRate);
|
||||
void func_80043ECC(s32 arg0, Object_64_Unknown5 *arg1, s32 updateRate);
|
||||
void func_80043ECC(s32 arg0, Object_Racer *racer, s32 updateRate);
|
||||
void func_80055A84(Object *obj, Object_Racer *racer, s32 updateRate);
|
||||
void func_80057A40(Object *obj, Object_Racer *racer, f32 updateRate);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user