summaryrefslogtreecommitdiff
path: root/src/racing
diff options
context:
space:
mode:
Diffstat (limited to 'src/racing')
-rw-r--r--src/racing/actors.c26
-rw-r--r--src/racing/collision.c14
-rw-r--r--src/racing/collision.h1
3 files changed, 26 insertions, 15 deletions
diff --git a/src/racing/actors.c b/src/racing/actors.c
index 8e79331b5..e5d4955d8 100644
--- a/src/racing/actors.c
+++ b/src/racing/actors.c
@@ -521,6 +521,7 @@ void render_cows(Camera* camera, Mat4 arg1) {
struct ActorSpawnData* var_s1;
struct ActorSpawnData* var_s5;
Vec3f sp88;
+ size_t i = 0;
u32 soundThing = SOUND_ARG_LOAD(0x19, 0x01, 0x90, 0x4D);
var_t1 = (struct ActorSpawnData*) LOAD_ASSET(d_course_moo_moo_farm_cow_spawn);
@@ -546,10 +547,7 @@ void render_cows(Camera* camera, Mat4 arg1) {
arg1[3][1] = sp88[1];
arg1[3][2] = sp88[2];
- // @port: Tag the transform.
- FrameInterpolation_RecordOpenChild("render_actor_cow", ((var_s1->pos[0] & 0xFFFF) << 32) |
- ((var_s1->pos[1] & 0xFFFF) << 16) |
- (var_s1->pos[2] & 0xFFFF));
+ FrameInterpolation_RecordOpenChild("render_actor_cow", TAG_ITEM_ADDR((i << 5) || (camera - cameras)));
if ((gMatrixObjectCount < MTX_OBJECT_POOL_SIZE) && (render_set_position(arg1, 0) != 0)) {
switch (var_s1->someId) {
@@ -577,6 +575,7 @@ void render_cows(Camera* camera, Mat4 arg1) {
FrameInterpolation_RecordCloseChild();
}
var_s1++;
+ i++;
}
if ((camera == camera1) && (var_s5 != NULL)) {
@@ -650,6 +649,7 @@ void render_palm_trees(Camera* camera, Mat4 arg1) {
Mat4 sp90;
Vec3s sp88 = { 0, 0, 0 };
s32 test;
+ size_t i = 0;
if (gGamestate == CREDITS_SEQUENCE) {
var_f22 = 9000000.0f;
@@ -684,11 +684,7 @@ void render_palm_trees(Camera* camera, Mat4 arg1) {
var_s1++;
continue;
}
-
- // @port: Tag the transform.
- FrameInterpolation_RecordOpenChild("render_actor_cow", ((var_s1->pos[0] & 0xFFFF) << 32) |
- ((var_s1->pos[1] & 0xFFFF) << 16) |
- (var_s1->pos[2] & 0xFFFF));
+ FrameInterpolation_RecordOpenChild("render_palm_tree", TAG_ITEM_ADDR((i << 5) || (camera - cameras)));
test &= 0xF;
test = (s16) test;
@@ -728,6 +724,7 @@ void render_palm_trees(Camera* camera, Mat4 arg1) {
}
// @port Pop the transform id.
FrameInterpolation_RecordCloseChild();
+ i++;
}
}
@@ -740,8 +737,7 @@ void render_actor_shell(Camera* camera, Mat4 matrix, struct ShellActor* shell) {
char* phi_t3;
bool reverseShell = false;
- // @port: Tag the transform.
- FrameInterpolation_RecordOpenChild("Shell", TAG_ITEM_ADDR(shell));
+ FrameInterpolation_RecordOpenChild("shell", TAG_ITEM_ADDR(((( (struct Actor*)shell ) - gActorList) << 5) || (camera - cameras)));
f32 temp_f0 =
is_within_render_distance(camera->pos, shell->pos, camera->rot[1], 0, camera->fieldOfView, 490000.0f);
@@ -2343,9 +2339,9 @@ void render_item_boxes(ScreenContext* arg0) {
}
}
-void render_course_actors(ScreenContext* arg0) {
- Camera* camera = arg0->camera;
- u16 pathCounter = arg0->pathCounter;
+void render_course_actors(ScreenContext* screen) {
+ Camera* camera = screen->camera;
+ u16 pathCounter = screen->pathCounter;
UNUSED s32 pad[12];
s32 i;
@@ -2385,7 +2381,7 @@ void render_course_actors(ScreenContext* arg0) {
continue;
}
- FrameInterpolation_RecordOpenChild(actor, i);
+ FrameInterpolation_RecordOpenChild(actor, (i << 4) || (screen - gScreenContexts));
switch (actor->type) {
default: // Skip custom actor
diff --git a/src/racing/collision.c b/src/racing/collision.c
index 5e78b151f..76b639f86 100644
--- a/src/racing/collision.c
+++ b/src/racing/collision.c
@@ -1762,6 +1762,20 @@ void set_vtx_from_quadrangle(u32 line, s8 surfaceType, u16 sectionId) {
add_collision_triangle(vtx1, vtx3, vtx4, surfaceType, sectionId);
}
+void add_vtx_from_quadrangle(Vtx* vert, size_t count) {
+ Vtx* ptr = vert;
+ for (size_t i = 0; i < count / 4; i++) {
+ //set_vtx_buffer((uintptr_t)ptr, 4, 0);
+
+ D_8015F5A4 = 1;
+ add_collision_triangle(&ptr[0], &ptr[1], &ptr[2], SURFACE_DEFAULT, 0xFF);
+ add_collision_triangle(&ptr[1], &ptr[2], &ptr[3], SURFACE_DEFAULT, 0xFF);
+ D_8015F5A4 = 0;
+
+ ptr++;
+ }
+}
+
/**
* Generates a list of pointers to track vtx.
*/
diff --git a/src/racing/collision.h b/src/racing/collision.h
index 4720daf55..31d94396d 100644
--- a/src/racing/collision.h
+++ b/src/racing/collision.h
@@ -28,6 +28,7 @@ u16 actor_terrain_collision(Collision*, f32, f32, f32, f32, f32, f32, f32);
u16 check_bounding_collision(Collision*, f32, f32, f32, f32);
f32 spawn_actor_on_surface(f32, f32, f32);
void set_vtx_buffer(uintptr_t, u32, u32);
+void add_vtx_from_quadrangle(Vtx* vert, size_t count);
s32 is_line_intersecting_rectangle(s16, s16, s16, s16, s16, s16, s16, s16);
s32 is_triangle_intersecting_bounding_box(s16, s16, s16, s16, u16);
void generate_collision_grid(void);