Mario Kart 64
Loading...
Searching...
No Matches
render.inc.c
Go to the documentation of this file.
1#include <actors.h>
2#include <main.h>
3#include <macros.h>
4
11void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
12 UNUSED s32 pad[2];
13 Vec3f someVec1;
14 Vec3f someVec2;
15 Vec3s someRot;
16 f32 thing;
17 UNUSED s32 pad2;
18 Mat4 someMatrix1;
19 Mat4 someMatrix2;
20 UNUSED s32 pad3[4];
21 f32 temp_f0;
22 f32 temp_f0_2;
23 f32 temp_f0_3;
24 f32 temp_f12;
25 f32 temp_f2;
26 f32 temp_f2_2;
27 f32 someMultiplier;
28
29 temp_f0 = is_within_render_distance(camera->pos, item_box->pos, camera->rot[1], 0.0f, gCameraZoom[camera - camera1],
30 4000000.0f);
31 if (!(temp_f0 < 0.0f) && !(600000.0f < temp_f0)) {
32 if ((item_box->state == 2) && (temp_f0 < 100000.0f)) {
33 someRot[0] = 0;
34 someRot[1] = item_box->rot[1];
35 someRot[2] = 0;
36 someVec2[0] = item_box->pos[0];
37 someVec2[1] = item_box->resetDistance + 2.0f;
38 someVec2[2] = item_box->pos[2];
39 mtxf_pos_rotation_xyz(someMatrix1, someVec2, someRot);
40
41 if (!render_set_position(someMatrix1, 0)) {
42 return;
43 }
44
45 gSPDisplayList(gDisplayListHead++, D_0D002EE8);
46 someRot[1] = item_box->rot[1] * 2;
47 someVec2[1] = item_box->pos[1];
48 mtxf_pos_rotation_xyz(someMatrix1, someVec2, someRot);
49
50 if (!render_set_position(someMatrix1, 0)) {
51 return;
52 }
53
55 }
56 if (item_box->state == 5) {
57 mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
58
59 if (!render_set_position(someMatrix1, 0)) {
60 return;
61 }
62
64 }
65 if (item_box->state != 3) {
66 mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
67
68 if (!render_set_position(someMatrix1, 0)) {
69 return;
70 }
71
72 gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
74 if ((item_box->rot[1] < 0xAA1) && (item_box->rot[1] > 0)) {
76 } else if ((item_box->rot[1] >= 0x6AA5) && (item_box->rot[1] < 0x754E)) {
78 } else if ((item_box->rot[1] >= 0x38E1) && (item_box->rot[1] < 0x438A)) {
80 } else if ((item_box->rot[1] >= 0xC711) && (item_box->rot[1] < 0xD1BA)) {
82 } else {
83 gDPSetBlendMask(gDisplayListHead++, 0xFF);
85 }
86 gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
87 gSPDisplayList(gDisplayListHead++, D_0D003090);
88 } else {
89 gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
90 gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
91 gDPSetBlendMask(gDisplayListHead++, 0xFF);
92 thing = item_box->someTimer;
93 mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
94 if (thing < 10.0f) {
95 someMultiplier = 1.0f;
96 } else {
97 someMultiplier = 1.0f - ((thing - 10.0f) * 0.1f);
98 }
99 mtxf_scale(someMatrix1, someMultiplier);
100 if (item_box->someTimer & 1) {
102 } else {
104 }
105 temp_f2 = 2.0f * thing;
106 someVec1[0] = 0.0f;
107 someVec1[1] = temp_f2;
108 someVec1[2] = thing;
109 add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
110
111 if (!render_set_position(someMatrix2, 0)) {
112 return;
113 }
114
115 gSPDisplayList(gDisplayListHead++, D_0D003158);
116 temp_f2_2 = 0.8f * thing;
117 temp_f12 = 0.5f * thing;
118 someVec1[0] = temp_f2_2;
119 someVec1[1] = 2.3f * thing;
120 someVec1[2] = temp_f12;
121 add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
122
123 if (!render_set_position(someMatrix2, 0)) {
124 return;
125 }
126
127 gSPDisplayList(gDisplayListHead++, D_0D0031B8);
128 temp_f0_2 = -0.5f * thing;
129 someVec1[0] = temp_f2_2;
130 someVec1[1] = 1.2f * thing;
131 someVec1[2] = temp_f0_2;
132 add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
133
134 if (!render_set_position(someMatrix2, 0)) {
135 return;
136 }
137
138 gSPDisplayList(gDisplayListHead++, D_0D003128);
139 if (!(item_box->someTimer & 1)) {
141 } else {
143 }
144 someVec1[0] = 0.0f;
145 someVec1[1] = 1.8f * thing;
146 someVec1[2] = -1.0f * thing;
147 add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
148
149 if (!render_set_position(someMatrix2, 0)) {
150 return;
151 }
152
153 gSPDisplayList(gDisplayListHead++, D_0D0031E8);
154 temp_f0_3 = -0.8f * thing;
155 someVec1[0] = temp_f0_3;
156 someVec1[1] = 0.6f * thing;
157 someVec1[2] = temp_f0_2;
158 add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
159
160 if (!render_set_position(someMatrix2, 0)) {
161 return;
162 }
163
164 gSPDisplayList(gDisplayListHead++, D_0D003188);
165 someVec1[0] = temp_f0_3;
166 someVec1[1] = temp_f2;
167 someVec1[2] = temp_f12;
168 add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
169
170 if (!render_set_position(someMatrix2, 0)) {
171 return;
172 }
173
174 gSPDisplayList(gDisplayListHead++, D_0D0030F8);
175 gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
176 }
177 gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
178 }
179}
Camera * camera1
Definition camera.c:23
Gfx D_0D003090[]
Gfx itemBoxQuestionMarkModel[]
Gfx D_0D003188[]
Gfx D_0D0031E8[]
Gfx D_0D002EE8[]
Gfx D_0D003128[]
Gfx D_0D003158[]
Gfx D_0D0031B8[]
Gfx D_0D0030F8[]
f32 Vec3f[3]
Definition common_structs.h:6
s16 Vec3s[3]
Definition common_structs.h:11
f32 Mat4[4][4]
Definition common_structs.h:16
#define G_CULL_BACK
Definition gbi.h:351
#define G_RM_NOOP2
Definition gbi.h:968
#define G_RM_ZB_CLD_SURF2
Definition gbi.h:949
#define G_RM_ZB_CLD_SURF
Definition gbi.h:948
#define G_SHADING_SMOOTH
Definition gbi.h:349
#define G_RM_AA_ZB_OPA_SURF
Definition gbi.h:878
#define G_RM_AA_ZB_OPA_SURF2
Definition gbi.h:879
#define G_RM_AA_ZB_XLU_INTER
Definition gbi.h:888
#define G_LIGHTING
Definition gbi.h:355
#define G_CC_MODULATEIA
Definition gbi.h:488
void render_actor_item_box(Camera *camera, struct ItemBox *item_box)
Renders the item box actor.
Definition render.inc.c:11
#define UNUSED
Definition macros.h:23
Gfx * gDisplayListHead
Definition main.c:132
f32 gCameraZoom[4]
Definition main.c:122
f32 is_within_render_distance(Vec3f cameraPos, Vec3f objectPos, u16 orientationY, f32 minDistance, f32 fov, f32 maxDistance)
Definition math_util.c:1114
void mtxf_pos_rotation_xyz(Mat4 out, Vec3f pos, Vec3s orientation)
Definition math_util.c:468
s32 render_set_position(Mat4 arg0, s32 arg1)
Definition math_util.c:47
void add_translate_mat4_vec3f(Mat4 mat, Mat4 dest, Vec3f pos)
Definition math_util.c:181
void mtxf_scale(Mat4 mat, f32 coef)
Definition math_util.c:455
#define G_ON
Definition mbi.h:51
Definition camera.h:26
Vec3s rot
Definition camera.h:33
Vec3f pos
Definition camera.h:27
Definition actor_types.h:331
s16 someTimer
Definition actor_types.h:334
Vec3f pos
Definition actor_types.h:342
s16 state
Definition actor_types.h:335
f32 resetDistance
Definition actor_types.h:336
Vec3s rot
Definition actor_types.h:340
signed int s32
Definition ultratypes.h:15
float f32
Definition ultratypes.h:34