mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-05-28 16:32:34 -04:00
5f88765dd4
* Matches for code_80281FA0.c
1811 lines
62 KiB
C
1811 lines
62 KiB
C
#include <ultra64.h>
|
|
#include <macros.h>
|
|
#include <types.h>
|
|
#include <common_structs.h>
|
|
#include "variables.h"
|
|
#include "math_util.h"
|
|
#include "code_80281FA0.h"
|
|
#include "objects.h"
|
|
#include "main.h"
|
|
|
|
extern f32 D_80150130[];
|
|
|
|
f32 D_802856B0 = 98.0f;
|
|
f32 D_802856B4 = 12.0f;
|
|
f32 D_802856B8 = 52.0f;
|
|
f32 D_802856BC = 52.0f;
|
|
f32 D_802856C0 = 0.0f;
|
|
s32 D_802856C4[4] = { 0 };
|
|
|
|
s16 sCutsceneShot;
|
|
s16 gCutsceneShotTimer;
|
|
s32 D_802876D4;
|
|
s32 D_802876D8;
|
|
s32 D_802876DC; // fake? Or D8 is array.
|
|
|
|
// static bss declared in function.
|
|
extern f32 D_80287B18;
|
|
extern s16 D_80287B1C;
|
|
extern s16 D_80287B1E;
|
|
extern s8 D_80287B20;
|
|
|
|
struct credits_data_1FA0 {
|
|
Vec3f unk0;
|
|
s8 pad[0x10];
|
|
s8 unk1C;
|
|
s8 unk1D;
|
|
s16 unk1E;
|
|
f32 unk20;
|
|
s8 pad2[0x24];
|
|
s16 unk48[3];
|
|
s16 unk4E[2];
|
|
s16 un52;
|
|
s16 unk54[2];
|
|
s16 unk58;
|
|
s16 unk5A[2];
|
|
s16 unk5E;
|
|
s16 unk60;
|
|
s16 unk62;
|
|
f32 unk64;
|
|
f32 unk68;
|
|
s16 unk6C;
|
|
s16 unk6E;
|
|
};
|
|
|
|
s8 D_802876E0[24]; // todo: Should be CinematicCamera * ?
|
|
|
|
f32 D_802876F8;
|
|
s8 D_802876FC;
|
|
|
|
f32 D_80287700[10];
|
|
Vec3s D_80287728[4];
|
|
|
|
struct struct_80283431 {
|
|
Vec3f unk0;
|
|
Vec3s unkC;
|
|
};
|
|
|
|
struct struct_80283430 {
|
|
s8 unk0;
|
|
s8 unk1;
|
|
s16 unk2;
|
|
s8 unk4;
|
|
s8 unk5;
|
|
Vec3s unk6;
|
|
};
|
|
|
|
extern struct struct_80283430 D_80287818[];
|
|
extern struct struct_80283430 D_80287998[];
|
|
|
|
extern struct struct_80283431 D_80287750[10];
|
|
|
|
void vec3f_set_dupe(Vec3f dest, f32 arg1, f32 arg2, f32 arg3) {
|
|
dest[0] = arg1;
|
|
dest[1] = arg2;
|
|
dest[2] = arg3;
|
|
}
|
|
|
|
void vec3s_set_dupe(Vec3s dest, s16 arg1, s16 arg2, s16 arg3) {
|
|
dest[0] = arg1;
|
|
dest[1] = arg2;
|
|
dest[2] = arg3;
|
|
}
|
|
|
|
void func_80281FDC(Vec3f arg0) {
|
|
arg0[2] = 0.0f;
|
|
arg0[1] = 0.0f;
|
|
arg0[0] = 0.0f;
|
|
}
|
|
|
|
void func_80281FF4(Vec3s arg0) {
|
|
arg0[2] = 0;
|
|
arg0[1] = arg0[2];
|
|
arg0[0] = arg0[2];
|
|
}
|
|
|
|
void vec3f_copy_dupe(Vec3f dest, Vec3f src) {
|
|
dest[0] = src[0];
|
|
dest[1] = src[1];
|
|
dest[2] = src[2];
|
|
}
|
|
|
|
void vec3s_copy_dupe(Vec3s dest, Vec3s src) {
|
|
dest[0] = src[0];
|
|
dest[1] = src[1];
|
|
dest[2] = src[2];
|
|
}
|
|
|
|
void func_80282040(void) {
|
|
|
|
}
|
|
|
|
void func_80282048(void) {
|
|
|
|
}
|
|
|
|
UNUSED void func_80282050(Vec3f dest, Vec3f src, s16 angle) {
|
|
Vec3f sp2C;
|
|
|
|
vec3f_copy_dupe(sp2C, src);
|
|
dest[0] = (sp2C[2] * sins(angle)) + (sp2C[0] * coss(angle));
|
|
dest[1] = sp2C[1];
|
|
dest[2] = (sp2C[2] * coss(angle)) - (sp2C[0] * sins(angle));
|
|
}
|
|
|
|
UNUSED void func_802820F8(f32 *dest, f32 *src, s16 angle) {
|
|
Vec3f sp2C;
|
|
|
|
vec3f_copy_dupe(sp2C, src);
|
|
dest[2] = (sp2C[2] * coss(angle)) - (sp2C[1] * sins(angle));
|
|
dest[1] = (sp2C[2] * sins(angle)) + (sp2C[1] * coss(angle));
|
|
dest[0] = sp2C[0];
|
|
}
|
|
|
|
// Called just before fish shoots trophy at awards cutscene.
|
|
s32 func_802821A0(Vec3f arg0, f32 arg1, f32 arg2) {
|
|
if (arg2 > 1.0f) {
|
|
arg2 = 1.0f;
|
|
}
|
|
|
|
arg0[0] = arg0[0] + ((arg1 - arg0[0]) * arg2);
|
|
|
|
if (arg1 == arg0[0]) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
UNUSED s32 func_80282200(Vec3s arg0, s16 arg1, s16 arg2) {
|
|
s16 temp_v0 = *arg0;
|
|
|
|
if (arg2 == 0) {
|
|
arg0[0] = arg1;
|
|
} else {
|
|
temp_v0 -= arg1;
|
|
temp_v0 -= (temp_v0 / arg2);
|
|
temp_v0 += arg1;
|
|
arg0[0] = temp_v0;
|
|
}
|
|
|
|
if (arg1 == arg0[0]) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
s32 func_802822AC(Vec3f arg0, f32 arg1, f32 arg2) {
|
|
f32 temp_f0 = arg1 - arg0[0];
|
|
|
|
if (arg2 < 0.0f) {
|
|
arg2 = -1.0f * arg2;
|
|
}
|
|
|
|
if (temp_f0 > 0.0f) {
|
|
temp_f0 -= arg2;
|
|
if (temp_f0 > 0.0f) {
|
|
arg0[0] = arg1 - temp_f0;
|
|
} else {
|
|
arg0[0] = arg1;
|
|
}
|
|
} else {
|
|
temp_f0 += arg2;
|
|
if (temp_f0 < 0.0f) {
|
|
arg0[0] = arg1 - temp_f0;
|
|
} else {
|
|
arg0[0] = arg1;
|
|
}
|
|
}
|
|
|
|
if (arg1 == arg0[0]) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
s32 func_80282364(Vec3s arg0, s16 arg1, s16 arg2) {
|
|
s16 temp_v0 = arg1 - arg0[0];
|
|
|
|
if (arg2 < 0) {
|
|
arg2 = arg2 * -1;
|
|
}
|
|
if ( temp_v0 > 0) {
|
|
temp_v0 -= arg2;
|
|
if (temp_v0 >= 0) {
|
|
arg0[0] = arg1 - temp_v0;
|
|
} else {
|
|
arg0[0] = arg1;
|
|
}
|
|
} else {
|
|
temp_v0 += arg2;
|
|
if (temp_v0 <= 0) {
|
|
arg0[0] = arg1 - temp_v0;
|
|
} else {
|
|
arg0[0] = arg1;
|
|
}
|
|
}
|
|
|
|
if (arg1 == arg0[0]) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void func_8028240C(void) {
|
|
D_80287B1C = 0;
|
|
D_80287B18 = 0.0f;
|
|
D_80287B1E = 0;
|
|
D_80287B20 = 0;
|
|
}
|
|
|
|
void func_80282434(Camera *arg0) {
|
|
func_8028240C();
|
|
}
|
|
|
|
void func_80282454(Vec3f arg0, Vec3f arg1, f32 *distance, s16 *arg3, s16 *arg4) {
|
|
f32 xdist;
|
|
f32 ydist;
|
|
f32 zdist;
|
|
|
|
xdist = arg1[0] - arg0[0];
|
|
ydist = arg1[1] - arg0[1];
|
|
zdist = arg1[2] - arg0[2];
|
|
*distance = sqrtf((xdist * xdist) + (ydist * ydist) + (zdist * zdist));
|
|
*arg3 = atan2s(ydist, sqrtf((xdist * xdist) + (zdist * zdist)));
|
|
*arg4 = atan2s(xdist, zdist);
|
|
}
|
|
|
|
void func_80282504(Vec3f arg0, Vec3f arg1, f32 arg2, s16 arg3, s16 arg4) {
|
|
arg1[0] = arg0[0] + (arg2 * coss(arg3) * sins(arg4));
|
|
arg1[1] = arg0[1] + (arg2 * sins(arg3));
|
|
arg1[2] = arg0[2] + (arg2 * coss(arg3) * coss(arg4));
|
|
}
|
|
|
|
UNUSED void func_802825C8(Vec3f arg0, Vec3f arg1, Vec3f arg2, Vec3s arg3) {
|
|
Vec3f sp3C;
|
|
Vec3f sp30;
|
|
|
|
// What's up with this? Why do we copy arg1 to an unused local variable?
|
|
vec3f_copy_dupe(sp3C, arg1);
|
|
sp30[2] = -((arg2[2] * coss(arg3[0])) - (arg2[1] * sins(arg3[0])));
|
|
sp30[1] = (arg2[2] * sins(arg3[0])) + (arg2[1] * coss(arg3[0]));
|
|
sp30[0] = arg2[0];
|
|
arg0[0] = arg1[0] + (sp30[2] * sins(arg3[1])) + (sp30[0] * coss(arg3[1]));
|
|
arg0[1] = arg1[1] + sp30[1];
|
|
arg0[2] = arg1[2] + (sp30[2] * coss(arg3[1])) - (sp30[0] * sins(arg3[1]));
|
|
}
|
|
|
|
// evaluate_cubic_spline
|
|
void func_80282700(f32 arg0, Vec3f arg1, Vec3f arg2, f32 arg3[], f32 arg4[], f32 arg5[], f32 arg6[])
|
|
{
|
|
f32 B[4];
|
|
f32 a = arg0;
|
|
if (arg0 > 1.0f)
|
|
{
|
|
arg0 = 1.0f;
|
|
}
|
|
B[0] = (((1.0f - arg0) * (1.0f - arg0)) * (1.0f - arg0)) / 6.0f;
|
|
B[1] = ((((arg0 * arg0) * arg0) / 2.0f) - (arg0 * arg0)) + 0.6666667f;
|
|
B[2] = ((((((-arg0) * arg0) * arg0) / 2.0f) + ((arg0 * arg0) / 2.0f)) + (arg0 / 2.0f)) + 0.16666667f;
|
|
B[3] = ((arg0 * arg0) * arg0) / 6.0f;
|
|
|
|
arg1[0] = B[0] * arg3[0] + B[1] * arg4[0] + B[2] * arg5[0] + B[3] * arg6[0];
|
|
arg1[1] = B[0] * arg3[1] + B[1] * arg4[1] + B[2] * arg5[1] + B[3] * arg6[1];
|
|
arg1[2] = B[0] * arg3[2] + B[1] * arg4[2] + B[2] * arg5[2] + B[3] * arg6[2];
|
|
arg2[0] = B[0] * arg3[3] + B[1] * arg4[3] + B[2] * arg5[3] + B[3] * arg6[3];
|
|
}
|
|
|
|
#ifdef MIPS_TO_C
|
|
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
|
|
void func_80282700(f32, f32, f32 *, f32 *, f32 *, f32 *, f32 *, f32 *); /* extern */
|
|
// move_point_along_spline
|
|
s32 func_802828C8(Vec3f *arg0, Vec3f *arg1, s32 arg2, s16 *arg3, f32 arg4) {
|
|
s32 sp94;
|
|
f32 sp90;
|
|
f32 sp8C;
|
|
f32 sp88;
|
|
f32 sp84;
|
|
f32 sp80;
|
|
f32 sp7C;
|
|
f32 sp78;
|
|
f32 sp74;
|
|
f32 sp70;
|
|
f32 sp6C;
|
|
f32 sp68;
|
|
f32 sp64;
|
|
f32 sp60;
|
|
f32 sp5C;
|
|
f32 sp58;
|
|
f32 sp54;
|
|
f32 sp44;
|
|
f32 sp40;
|
|
f32 temp_f0;
|
|
f32 var_f12;
|
|
f32 var_f14;
|
|
f32 var_f16;
|
|
s16 temp_v1;
|
|
s32 var_t1;
|
|
u16 temp_v1_2;
|
|
u16 temp_v1_3;
|
|
void *temp_v0;
|
|
void *temp_v0_2;
|
|
void *temp_v0_3;
|
|
|
|
temp_v1 = *arg3;
|
|
var_f12 = *arg4;
|
|
if (temp_v1 < 0) {
|
|
var_f12 = 0.0f;
|
|
}
|
|
temp_v0 = arg2 + (temp_v1 * 0xC);
|
|
if ((temp_v0->unk0 == -1) || (temp_v0->unkC == -1) || (temp_v0->unk18 == -1)) {
|
|
return 1;
|
|
}
|
|
temp_v0_2 = arg2 + (temp_v1 * 0xC);
|
|
sp54 = (f32) temp_v0_2->unk6;
|
|
sp58 = (f32) temp_v0_2->unk8;
|
|
sp5C = (f32) temp_v0_2->unkA;
|
|
sp60 = (f32) temp_v0_2->unk4 * 256.0f;
|
|
sp64 = (f32) temp_v0_2->unk12;
|
|
sp68 = (f32) temp_v0_2->unk14;
|
|
sp6C = (f32) temp_v0_2->unk16;
|
|
sp70 = (f32) temp_v0_2->unk10 * 256.0f;
|
|
sp74 = (f32) temp_v0_2->unk1E;
|
|
sp78 = (f32) temp_v0_2->unk20;
|
|
sp7C = (f32) temp_v0_2->unk22;
|
|
sp80 = (f32) temp_v0_2->unk1C * 256.0f;
|
|
sp84 = (f32) temp_v0_2->unk2A;
|
|
sp88 = (f32) temp_v0_2->unk2C;
|
|
sp8C = (f32) temp_v0_2->unk2E;
|
|
sp40 = 0.0f;
|
|
sp44 = 0.0f;
|
|
sp94 = 0;
|
|
sp90 = (f32) temp_v0_2->unk28 * 256.0f;
|
|
func_80282700(var_f12, 0.0f, arg0, arg1, &sp54, &sp64, &sp74, &sp84);
|
|
var_t1 = sp94;
|
|
var_f14 = sp44;
|
|
var_f16 = sp40;
|
|
temp_v0_3 = arg2 + (*arg3 * 0xC);
|
|
temp_v1_2 = temp_v0_3->unkE;
|
|
if (temp_v1_2 != 0) {
|
|
var_f14 = 1.0f / (f32) temp_v1_2;
|
|
}
|
|
temp_v1_3 = temp_v0_3->unk1A;
|
|
if (temp_v1_3 != 0) {
|
|
var_f16 = 1.0f / (f32) temp_v1_3;
|
|
}
|
|
temp_f0 = *arg4;
|
|
*arg4 = temp_f0 + ((temp_f0 * (var_f16 - var_f14)) + var_f14);
|
|
if (*arg4 >= 1.0f) {
|
|
*arg3 += 1;
|
|
if ((arg2 + (*arg3 * 0xC))->unk24 == -1) {
|
|
*arg3 = 0;
|
|
var_t1 = 1;
|
|
}
|
|
*arg4 -= 1.0f;
|
|
}
|
|
return var_t1;
|
|
}
|
|
#else
|
|
GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_802828C8.s")
|
|
#endif
|
|
|
|
struct struct_80282C40 {
|
|
s8 unk0;
|
|
s8 unk1;
|
|
s8 unk2;
|
|
u8 unk3;
|
|
s8 unk4;
|
|
s8 unk5;
|
|
Vec3s unk6;
|
|
};
|
|
|
|
void func_80282BE4(struct struct_80283430 *arg0, s8 arg1, u8 arg2, s8 arg3, Vec3s arg4, s32 arg5)
|
|
{
|
|
arg0->unk0 = arg1;
|
|
arg0->unk2 = arg2;
|
|
arg0->unk4 = arg3;
|
|
if (arg5) {
|
|
arg0->unk6[0] = -arg4[0];
|
|
} else {
|
|
arg0->unk6[0] = arg4[0];
|
|
}
|
|
arg0->unk6[1] = arg4[1];
|
|
arg0->unk6[2] = arg4[2];
|
|
}
|
|
|
|
void func_80282C40(struct struct_80283430 *arg0, struct struct_80282C40 *arg1, s32 arg2)
|
|
{
|
|
s32 i = 0;
|
|
s32 j = 0;
|
|
func_80282BE4(&arg0[j], arg1[j].unk0, arg1[j].unk3, arg1[j].unk4, arg1[j].unk6, arg2);
|
|
|
|
j++;
|
|
goto dummy_label_888430;
|
|
while(1) {
|
|
do {
|
|
|
|
dummy_label_888430: ;
|
|
func_80282BE4(&arg0[j], arg1[i].unk0, arg1[i].unk3, arg1[i].unk4, arg1[i].unk6, arg2);
|
|
j++;
|
|
i++;
|
|
|
|
} while (arg1[i].unk0 != -1);
|
|
if (j + 3 <= 30) {
|
|
func_80282BE4(&arg0[j], arg1->unk0, arg1[i].unk3, arg1[i].unk4, arg1[i].unk6, arg2);
|
|
func_80282BE4(&arg0[j + 1], arg1->unk0, 0, arg1[i].unk4, arg1[i].unk6, arg2);
|
|
func_80282BE4(&arg0[j + 2], arg1->unk0, 0, arg1[i].unk4, arg1[i].unk6, arg2);
|
|
func_80282BE4(&arg0[j + 3], -1, 0, arg1[i].unk4, arg1[i].unk6, arg2);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 func_80282D90(Camera *camera, struct struct_80282C40 *arg1, struct struct_80282C40 *arg2, s32 arg3) {
|
|
s32 res;
|
|
|
|
func_802832C4(&func_80282434, camera, 0, 0);
|
|
func_80282C40(&D_80287818, arg1, arg3);
|
|
func_80282C40(&D_80287998, arg2, arg3);
|
|
|
|
if (0) {}; // debug stub?
|
|
|
|
res = func_802828C8(camera->lookAt, camera->up, &D_80287818, &D_80287B1C, &D_80287B18) |
|
|
func_802828C8(camera->pos, camera->up, &D_80287998, &D_80287B1C, &D_80287B18);
|
|
return res;
|
|
}
|
|
|
|
void func_80282E58(Camera *camera, struct struct_80282C40 *arg1, s32 arg2) {
|
|
func_80282C40(&D_80287818, arg1, arg2);
|
|
func_802828C8(camera->lookAt, camera->up, &D_80287818, &D_80287B1C, &D_80287B18);
|
|
}
|
|
|
|
void func_80282EAC(s32 arg0, struct credits_data_1FA0 *arg1, s16 arg2, s16 arg3, s16 arg4)
|
|
{
|
|
if ((arg0 >= 0) && (arg0 < 3))
|
|
{
|
|
if (arg1->unk48[arg0] < arg2)
|
|
{
|
|
arg1->unk48[arg0] = arg2;
|
|
arg1->unk5A[arg0] = arg3;
|
|
arg1->unk54[arg0] = arg4;
|
|
}
|
|
}
|
|
}
|
|
|
|
void func_80282F00(s16 *arg0, s16 arg1) {
|
|
if (arg1 == -0x8000) {
|
|
*arg0 = (*arg0 & 0x8000) + 0xC000;
|
|
return;
|
|
}
|
|
*arg0 += arg1;
|
|
}
|
|
|
|
void func_80282F44(s32 arg0, struct credits_data_1FA0 *arg1, Camera *camera) {
|
|
f32 sp5C;
|
|
s32 pad[2];
|
|
s16 sp50[2];
|
|
Vec3f pos;
|
|
Vec3f rot;
|
|
|
|
vec3f_set_dupe(pos, camera->pos[0], camera->pos[1], camera->pos[2]);
|
|
vec3f_set_dupe(rot, camera->lookAt[0], camera->lookAt[1], camera->lookAt[2]);
|
|
if ((arg0 == 0) || (arg0 == 1)) {
|
|
if ((arg1->unk48[0] != 0) || (arg1->unk48[1] != 0)) {
|
|
func_80282454(pos, rot, &sp5C, &sp50[0], &sp50[1]);
|
|
sp50[arg0] += (((f32) arg1->unk48[arg0]) * sins(arg1->unk4E[arg0]));
|
|
if ((sp50[0] < 0x3800) && (sp50[0] >= -0x37FF)) {
|
|
func_80282504(pos, rot, sp5C, sp50[0], sp50[1]);
|
|
}
|
|
func_80282F00(&arg1->unk4E[arg0], arg1->unk54[arg0]);
|
|
if (func_80282364(&arg1->unk48[arg0], 0, arg1->unk5A[arg0]) == 0) {
|
|
arg1->unk4E[arg0] = 0;
|
|
}
|
|
}
|
|
camera->lookAt[0] = rot[0];
|
|
camera->lookAt[1] = rot[1];
|
|
camera->lookAt[2] = rot[2];
|
|
}
|
|
}
|
|
|
|
void func_802830B4(struct credits_data_1FA0 *arg0, s16 arg1, s16 arg2, s16 arg3) {
|
|
if (arg0->unk60 < arg1) {
|
|
arg0->unk60 = arg1;
|
|
arg0->unk6C = arg2;
|
|
arg0->unk68 = arg3;
|
|
}
|
|
}
|
|
|
|
void func_80283100(struct credits_data_1FA0 *arg0, f32 *arg1) {
|
|
if (arg0->unk60 != 0) {
|
|
arg0->unk6E = (coss((u16) arg0->unk64) * arg0->unk60) / 256;
|
|
arg0->unk64 += arg0->unk68;
|
|
func_80282364(&arg0->unk60, 0, arg0->unk6C);
|
|
} else {
|
|
arg0->unk64 = 0.0f;
|
|
}
|
|
*arg1 = arg0->unk20 + (f32) arg0->unk6E;
|
|
}
|
|
|
|
void func_80283240(s16 arg0) {
|
|
if (arg0 == 1) {
|
|
func_80282EAC(0, &D_802876E0, 0x100, 0x10, 0x4000);
|
|
func_80282EAC(1, &D_802876E0, 0x80, 0x20, 0x2000);
|
|
func_802830B4(&D_802876E0, 0x300, 0x20, 0x4000);
|
|
}
|
|
}
|
|
|
|
s32 func_802832C4(void (*func_ptr)(s32), Camera *camera, s16 time2, s16 time) {
|
|
if ((gCutsceneShotTimer >= time2) && ((time == -1) || (time >= gCutsceneShotTimer))) {
|
|
func_ptr(camera);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
s32 func_80283330(s32 arg0) {
|
|
if (arg0 != D_802876D8) {
|
|
D_802876D8 = arg0;
|
|
sCutsceneShot = 0;
|
|
gCutsceneShotTimer = 0;
|
|
D_802876D4 = 0;
|
|
}
|
|
return D_802876D8;
|
|
}
|
|
|
|
extern s8 D_802874F5;
|
|
extern s32 D_802876D8;
|
|
|
|
s32 func_8028336C(struct credits_data_1FA0 *arg0, Camera *camera) {
|
|
u8 sp20[] = { 2, 3, 4, 5, 5, 5, 5, 5 };
|
|
if (D_802876D8 != 0)
|
|
{
|
|
return D_802876D8;
|
|
}
|
|
switch (gGamestate)
|
|
{
|
|
case 5:
|
|
D_802876D8 = sp20[D_802874F5];
|
|
break;
|
|
|
|
case 9:
|
|
D_802876D8 = 6;
|
|
break;
|
|
|
|
}
|
|
|
|
if (gGamestate == 9)
|
|
{
|
|
func_80283330(6);
|
|
}
|
|
return D_802876D8;
|
|
}
|
|
|
|
s32 func_80283428(void) {
|
|
return 0;
|
|
}
|
|
|
|
|
|
struct unkStruct_80283430 {
|
|
s16 unk0;
|
|
f32 unk4;
|
|
};
|
|
|
|
struct unkStruct_80283430_2 {
|
|
f32 unk0;
|
|
s16 unk4;
|
|
s16 unk6;
|
|
};
|
|
|
|
// todo: D_802876E0???? CinematicCamera struct
|
|
void func_80283430(void)
|
|
{
|
|
static struct unkStruct_80283430 D_80287740;
|
|
static struct unkStruct_80283430_2 D_80287748;
|
|
static struct struct_80283431 D_80287750[10];
|
|
|
|
static struct struct_80283430 D_80287818[32];
|
|
static struct struct_80283430 D_80287998[32];
|
|
|
|
static f32 D_80287B18;
|
|
|
|
static s16 D_80287B1C;
|
|
static s16 D_80287B1E;
|
|
|
|
static s8 D_80287B20;
|
|
|
|
s32 i;
|
|
|
|
D_802876D8 = 0;
|
|
D_802876E0[28] = 0;
|
|
D_802856C4[0] = (s32) D_800DC5E4;
|
|
func_80281FDC(&D_802876E0[12]);
|
|
vec3f_set_dupe(&D_802876E0, 0.0f, 0.0f, 500.0f);
|
|
func_80281FDC(&D_80287700[4]);
|
|
vec3f_set_dupe(&D_80287700[1], 0.0f, 0.0f, 500.0f);
|
|
vec3f_set_dupe(&D_80287700[7], 0.0f, 1.0f, 0.0f);
|
|
D_802876F8 = 0.0f;
|
|
func_80281FF4(&D_80287728[0]);
|
|
func_80281FF4(&D_80287728[1]);
|
|
func_80281FF4(&D_80287728[2]);
|
|
func_80281FF4(&D_80287728[3]);
|
|
D_80287740.unk0 = 0;
|
|
D_80287740.unk4 = 0.0f;
|
|
D_80287748.unk0 = 0.0f;
|
|
D_80287748.unk4 = 0;
|
|
D_80287748.unk6 = 0;
|
|
D_80287700[0] = D_80150130[0];
|
|
sCutsceneShot = 0;
|
|
gCutsceneShotTimer = 0;
|
|
D_802876D4 = 0;
|
|
func_8028240C();
|
|
for (i = 0; i < 32; i++)
|
|
{
|
|
D_80287818[i].unk0 = -1;
|
|
D_80287998[i].unk0 = -1;
|
|
}
|
|
|
|
for (i = 0; i < 10; i++)
|
|
{
|
|
func_80281FDC(D_80287750[i].unk0);
|
|
func_80281FF4(D_80287750[i].unkC);
|
|
}
|
|
|
|
D_802856C0 = 0.0f;
|
|
if (gGamestate == 5)
|
|
{
|
|
D_802856B0 = 120.0f;
|
|
D_802856B4 = 12.0f;
|
|
D_802856B8 = 120.0f;
|
|
} else {
|
|
D_802856B0 = 98.0f;
|
|
D_802856B4 = 12.0f;
|
|
D_802856B8 = 52.0f;
|
|
}
|
|
}
|
|
|
|
#ifdef MIPS_TO_C
|
|
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
|
|
void func_80282F44(?, s32 *, Camera *); /* extern */
|
|
void func_80283100(s32 *, f32 *); /* extern */
|
|
s32 func_8028336C(s32 *, Camera *); /* extern */
|
|
void func_80284AE8(s32 *); /* extern */
|
|
//extern Vec3f D_802876EC;
|
|
extern f32 D_802876F8;
|
|
//extern f32 D_80287704;
|
|
//extern f32 D_80287710;
|
|
//extern f32 D_8028771C;
|
|
|
|
s32 func_80283648(Camera *camera) {
|
|
s16 sp6E;
|
|
s16 sp6C;
|
|
f32 sp64;
|
|
f32 sp58;
|
|
f32 sp4C;
|
|
f32 sp40;
|
|
f32 sp38;
|
|
f32 *sp34;
|
|
f32 *sp30;
|
|
s32 sp2C;
|
|
f32 *temp_a1;
|
|
f32 *temp_a1_2;
|
|
f32 var_f0;
|
|
f32 var_f2;
|
|
s16 var_a3;
|
|
s32 temp_t9;
|
|
s8 temp_v1;
|
|
|
|
func_80283428();
|
|
vec3f_copy_dupe(&sp58, camera->pos);
|
|
temp_a1 = camera->lookAt;
|
|
sp34 = temp_a1;
|
|
vec3f_copy_dupe(&sp4C, temp_a1);
|
|
temp_a1_2 = camera->up;
|
|
sp30 = temp_a1_2;
|
|
vec3f_copy_dupe(&sp40, temp_a1_2);
|
|
temp_v1 = func_8028336C(&D_802876E0, camera) & 0xFF;
|
|
D_802876FC = temp_v1;
|
|
if (temp_v1 != 0) {
|
|
vec3f_copy_dupe(&D_802876E0[12], camera->pos);
|
|
vec3f_copy_dupe((f32 *) &D_802876E0, sp34);
|
|
func_80284AE8(&D_802876E0);
|
|
func_80282454(&D_802876E0[12], (f32 *) &D_802876E0, &sp64, &sp6E, &sp6C);
|
|
var_a3 = sp6E;
|
|
if (var_a3 >= 0x3800) {
|
|
var_a3 = 0x3800;
|
|
}
|
|
if (var_a3 < -0x37FF) {
|
|
var_a3 = -0x3800;
|
|
}
|
|
if ((var_a3 == 0x3800) || (sp6E = var_a3, (var_a3 == -0x3800))) {
|
|
sp6E = var_a3;
|
|
func_80282504(&D_802876E0[12], (f32 *) &D_802876E0, sp64, var_a3, (s16) (s32) sp6C);
|
|
}
|
|
var_f2 = D_802876F8;
|
|
if (var_f2 > 65536.0f) {
|
|
var_f2 -= 65536.0f;
|
|
}
|
|
if (var_f2 < -65536.0f) {
|
|
var_f2 += 65536.0f;
|
|
}
|
|
D_802876F8 = var_f2;
|
|
var_f0 = var_f2;
|
|
if (var_f2 < 0.0f) {
|
|
var_f0 = 65536.0f + var_f2;
|
|
}
|
|
temp_t9 = (u32) var_f0 & 0xFFFF;
|
|
sp2C = temp_t9;
|
|
sp38 = sins((u16) temp_t9);
|
|
camera->up[0] = coss((u16) sp6C) * sp38;
|
|
camera->up[1] = coss(unksp2E);
|
|
sp38 = sins(unksp2E);
|
|
camera->up[2] = sins((u16) sp6C) * -sp38;
|
|
vec3f_copy_dupe(camera->pos, &D_802876E0[12]);
|
|
vec3f_copy_dupe(sp34, (f32 *) &D_802876E0);
|
|
if ((gGamestate == 9) && (gIsMirrorMode != 0)) {
|
|
camera->pos[0] = -camera->pos[0];
|
|
camera->lookAt[0] = -camera->lookAt[0];
|
|
}
|
|
}
|
|
func_80282F44(0, &D_802876E0, camera);
|
|
func_80282F44(1, &D_802876E0, camera);
|
|
func_80283100(&D_802876E0, D_80150130);
|
|
vec3f_copy_dupe(&D_80287700[4], camera->pos);
|
|
vec3f_copy_dupe(&D_80287700[1], sp34);
|
|
vec3f_copy_dupe(&D_80287700[7], sp30);
|
|
return D_802876D8;
|
|
}
|
|
#else
|
|
GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_80283648.s")
|
|
#endif
|
|
|
|
void func_80283968(s32 arg0) {
|
|
func_8028100C(-0xC6C, 0xD2, -0x1EF);
|
|
}
|
|
|
|
void func_80283994(s32 arg0) {
|
|
func_80280FFC();
|
|
}
|
|
|
|
void func_802839B4(s32 arg0) {
|
|
D_802856B8 = 52.0f;
|
|
}
|
|
|
|
void func_802839CC(s32 arg0) {
|
|
D_802856B8 = 0.0f;
|
|
}
|
|
|
|
void func_802839E0(s32 arg0) {
|
|
func_80092C80();
|
|
}
|
|
|
|
void func_80283A00(s32 arg0) {
|
|
if (D_800DC5E4 == 0) {
|
|
play_sound2(0x49009009);
|
|
}
|
|
}
|
|
|
|
void func_80283A34(s32 arg0) {
|
|
func_800CA0CC();
|
|
}
|
|
|
|
void func_80283A54(s32 arg0) {
|
|
play_sound2(0x49009014);
|
|
}
|
|
|
|
// Balloon pop
|
|
void func_80283A7C(s32 arg0) {
|
|
play_sound2(0x4900801E);
|
|
}
|
|
|
|
void func_80283AA4(s32 arg0) {
|
|
play_sound2(0x4900801F);
|
|
}
|
|
|
|
void func_80283ACC(s32 arg0) {
|
|
play_sound2(0x49008020);
|
|
}
|
|
|
|
void func_80283AF4(s32 arg0) {
|
|
play_sound2(0x49008021);
|
|
}
|
|
|
|
void func_80283B1C(s32 arg0) {
|
|
play_sound2(0x49008022);
|
|
}
|
|
|
|
void func_80283B44(s32 arg0) {
|
|
play_sound2(0x49008023);
|
|
}
|
|
|
|
void func_80283B6C(s32 arg0) {
|
|
func_800CA0B8();
|
|
func_800C9060(0, 0x19009005);
|
|
func_800CA0A0();
|
|
}
|
|
|
|
void func_80283BA4(s32 arg0) {
|
|
func_800CA0B8();
|
|
func_800C90F4(0, (gPlayerFour->characterId * 0x10) + 0x29008004);
|
|
func_800CA0A0();
|
|
}
|
|
|
|
void func_80283BF0(s32 arg0) {
|
|
func_800C8EF8(0x1A);
|
|
}
|
|
|
|
void func_80283C14(s32 arg0) {
|
|
func_800C8EF8(0x1B);
|
|
}
|
|
|
|
void func_80283C38(s32 arg0) {
|
|
func_800CB134();
|
|
}
|
|
|
|
void func_80283C58(CinematicCamera *arg0) {
|
|
func_800CB14C();
|
|
}
|
|
|
|
void func_80283C78(s32 arg0) {
|
|
if (D_800DC5E4 == 0) {
|
|
func_800C8EF8(0x1C);
|
|
}
|
|
}
|
|
|
|
void func_80283CA8(s32 arg0) {
|
|
func_800CA008(0, 3);
|
|
}
|
|
|
|
void func_80283CD0(s32 arg0) {
|
|
if (D_800DC5E4 == 0) {
|
|
func_800CA008(0, 2);
|
|
}
|
|
}
|
|
|
|
// End of credits farewell
|
|
// "Hey, you're very good, see you next time."
|
|
void func_80283D04(s32 arg0) {
|
|
play_sound2(0x49008026);
|
|
}
|
|
|
|
|
|
// Camera rail spline animation
|
|
struct struct_80282C40 D_802856DC[] = {
|
|
// go to
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF576, 0x014E, 0xFE70 } },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF576, 0x014E, 0xFE70 } },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF422, 0x0103, 0xFE3C } },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF3E8, 0x0016, 0xFE34 } },
|
|
{ -1, 0, 0, 0, 0, 0, { 0xF3E8, 0x0016, 0xFE34 } },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285718[] = {
|
|
{ 0, 0, 0, 61, 0, 0, { 0xF493, 0x0309, 0xFE4E } },
|
|
{ 0, 0, 0, 149, 0, 0, { 0xF494, 0x030A, 0xFE4E } },
|
|
{ 0, 0, 0, 94, 0, 0, { 0xF243, 0x0179, 0xFDF0 } },
|
|
{ 0, 0, 0, 60, 0, 0, { 0xF213, 0x00B1, 0xFDE9 } },
|
|
{ -1, 0, 0, 60, 0, 0, { 0xF213, 0x008D, 0xFDE9 } },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285754[] = {
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF4F4, 0xFFE2, 0xFF67} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF51A, 0x0002, 0xFF5D} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF57B, 0x004A, 0xFFB8} },
|
|
{ -1, 0, 0, 0, 0, 0, { 0xF608, 0x0065, 0xFFE4} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285784[] = {
|
|
{ 0, 0, 0, 186, 0, 0, { 0xF33E, 0x0009, 0x0053} },
|
|
{ 0, 0, 0, 89, 0, 0, { 0xF329, 0xFFA4, 0xFF8F} },
|
|
{ 0, 0, 0, 60, 0, 0, { 0xF39C, 0x004F, 0xFF2A} },
|
|
{ -1, 0, 0, 45, 0, 0, { 0xF44A, 0x00BE, 0xFF16} },
|
|
};
|
|
|
|
struct struct_80282C40 D_802857B4[] = {
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF22C, 0xFFF4, 0x0067} },
|
|
{ -1, 0, 0, 0, 0, 0, { 0xF22C, 0xFFF4, 0x0067} },
|
|
};
|
|
|
|
struct struct_80282C40 D_802857CC[] = {
|
|
{ 0, 0, 0, 90, 0, 0, { 0xF3F8, 0xFFDB, 0xFC39} },
|
|
{ 0, 0, 0, 90, 0, 0, { 0xF419, 0xFFF8, 0xFC3B} },
|
|
{ -1, 0, 0, 101, 0, 0, { 0xF454, 0x000E, 0xFBFF} },
|
|
};
|
|
|
|
struct struct_80282C40 D_802857F0[] = {
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF208, 0x004F, 0xFDC9} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF20F, 0x004E, 0xFDCB} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF23D, 0x0049, 0xFDDC} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF284, 0x0044, 0xFDEF} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF2BE, 0x0041, 0xFDFA} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF2E5, 0x003E, 0xFE04} },
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF303, 0x0039, 0xFE0A} },
|
|
{ -1, 0, 0, 0, 0, 0, { 0xF325, 0x0033, 0xFE11} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285850[] = {
|
|
{ 0, 0, 0, 30, 0, 0, { 0xF3D7, 0x0004, 0xFE77} },
|
|
{ 0, 0, 0, 30, 0, 0, { 0xF3E3, 0x000C, 0xFE6F} },
|
|
{ 0, 0, 0, 50, 0, 0, { 0xF421, 0x001E, 0xFE53} },
|
|
{ 0, 0, 0, 50, 0, 0, { 0xF468, 0x001C, 0xFE69} },
|
|
{ 0, 0, 0, 30, 0, 0, { 0xF4A4, 0x0016, 0xFE68} },
|
|
{ 0, 0, 0, 30, 0, 0, { 0xF4C9, 0xFFFE, 0xFE70} },
|
|
{ 0, 0, 0, 30, 0, 0, { 0xF4E3, 0xFFE1, 0xFE76} },
|
|
{ -1, 0, 0, 30, 0, 0, { 0xF505, 0xFFD1, 0xFE72} },
|
|
};
|
|
|
|
struct struct_80282C40 D_802858B0[] = {
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF42B, 0x002D, 0xFE46} },
|
|
{ -1, 0, 0, 0, 0, 0, { 0xF42B, 0x002D, 0xFE46} },
|
|
};
|
|
|
|
struct struct_80282C40 D_802858C8[] = {
|
|
{ 0, 0, 0, 30, 0, 0, { 0xF246, 0x0073, 0xFDE7} },
|
|
{ -1, 0, 0, 30, 0, 0, { 0xF246, 0x0073, 0xFDE7} },
|
|
};
|
|
|
|
struct struct_80282C40 D_802858E0[] = {
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF39F, 0x003C, 0xFE2F} },
|
|
{ -1, 0, 0, 0, 0, 0, { 0xF39F, 0x003C, 0xFE2F} },
|
|
};
|
|
|
|
struct struct_80282C40 D_802858F8[] = {
|
|
{ 0, 0, 0, 1, 0, 0, { 0xF245, 0x0187, 0xFDA1} },
|
|
{ -1, 0, 0, 1, 0, 0, { 0xF245, 0x0187, 0xFDA1} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285910[] = {
|
|
{ 0, 0, 0, 0, 0, 0, { 0xF4A0, 0x00B7, 0xFF6C} },
|
|
{ -1, 0, 0, 0, 0, 0, { 0xF4A0, 0x00B7, 0xFF6C} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285928[] = {
|
|
{ 0, 0, 0, 6, 0, 0, { 0xF340, 0x0025, 0xFE28} },
|
|
{ -1, 0, 0, 6, 0, 0, { 0xF340, 0x0025, 0xFE28} },
|
|
};
|
|
|
|
// Is some of this unused?
|
|
struct struct_80282C40 D_80285940[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A } },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A } },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C3, 0x006B, 0xFE1A} },
|
|
{ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, { 0xF203, 0xFF99, 0xFE62} },
|
|
{ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, { 0xF200, 0xFFA4, 0xFE6D} },
|
|
{ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, { 0xF1DA, 0x01AF, 0xFE7F} },
|
|
{ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, { 0xF1DA, 0x014B, 0xFE7F} },
|
|
{ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, { 0xF1DA, 0x00E7, 0xFE7F} },
|
|
{ 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, { 0xF1E1, 0x0015, 0xFE7D} },
|
|
{ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, { 0xF1E1, 0x000A, 0xFE71} },
|
|
{ 0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, { 0xF1E0, 0x000C, 0xFE71} },
|
|
};
|
|
// todo: label from sm64
|
|
struct _struct_D_80286B5C_0x8 {
|
|
/* 0x0 */ void (*shot)(Camera*);
|
|
/* 0x4 */ s16 unk4;
|
|
/* 0x6 */ s16 pad;
|
|
}; /* size = 0x8 */
|
|
extern struct _struct_D_80286B5C_0x8 D_80285D10[];
|
|
void func_80283D2C(Camera *camera) {
|
|
D_802856B8 = 120.0f;
|
|
func_802832C4(&func_80283CA8, camera, 0, 0);
|
|
func_802832C4(&func_80283A34, camera, 1, 1);
|
|
func_802832C4(&func_80283BF0, camera, 0, 0);
|
|
func_802832C4(&func_80283A7C, camera, 45, 45);
|
|
func_802832C4(&func_80283A7C, camera, 65, 65);
|
|
func_802832C4(&func_80283A7C, camera, 70, 70);
|
|
func_802832C4(&func_80283A7C, camera, 94, 94);
|
|
func_802832C4(&func_80283A7C, camera, 110, 110);
|
|
func_802832C4(&func_80283A7C, camera, 130, 130);
|
|
func_802832C4(&func_80283A7C, camera, 152, 152);
|
|
func_802832C4(&func_80283A7C, camera, 160, 160);
|
|
// 330 // 330 - 60 todo: import var
|
|
func_802832C4(&func_80283994, camera, D_80285D10[0].unk4 - 60, D_80285D10[0].unk4 - 60);
|
|
func_80282D90(camera, &D_802856DC, &D_80285718, 0);
|
|
}
|
|
|
|
void func_80283EA0(Camera *camera) {
|
|
func_80282D90(camera, &D_80285754, &D_80285784, 0);
|
|
}
|
|
|
|
void func_80283ED0(Camera *camera) {
|
|
vec3f_copy_dupe(camera->pos, gPlayerTwo->pos);
|
|
}
|
|
|
|
void func_80283EF8(Camera *camera) {
|
|
func_802821A0(&camera->pos[0], gPlayerTwo->pos[0], 0.12f);
|
|
func_802821A0(&camera->pos[1], gPlayerTwo->pos[1], 0.12f);
|
|
func_802821A0(&camera->pos[2], gPlayerTwo->pos[2], 0.12f);
|
|
}
|
|
|
|
void func_80283F6C(Camera *camera) {
|
|
func_802832C4(&func_80283ED0, camera, 0, 0);
|
|
func_802832C4(&func_80283EF8, camera, 0, -1);
|
|
func_80282E58(camera, &D_802857B4, 0);
|
|
}
|
|
|
|
void func_80283FCC(Camera *camera) {
|
|
vec3f_copy_dupe(camera->pos, gPlayerThree->pos);
|
|
}
|
|
|
|
void func_80283FF4(Camera *camera) {
|
|
func_802821A0(&camera->pos[0], gPlayerThree->pos[0], 0.12f);
|
|
func_802821A0(&camera->pos[1], gPlayerThree->pos[1], 0.12f);
|
|
func_802821A0(&camera->pos[2], gPlayerThree->pos[2], 0.12f);
|
|
}
|
|
|
|
void func_80284068(Camera *camera) {
|
|
func_802832C4(&func_80283FCC, camera, 0, 0);
|
|
func_802832C4(&func_80283FF4, camera, 0, -1);
|
|
func_80282E58(camera, &D_802857CC, 0);
|
|
}
|
|
|
|
void func_802840C8(Camera *camera) {
|
|
func_802832C4(&func_80283C14, camera, 5, 5);
|
|
|
|
switch(D_802876D8) {
|
|
case 2:
|
|
func_80283EA0(camera);
|
|
break;
|
|
case 3:
|
|
func_80283F6C(camera);
|
|
break;
|
|
case 4:
|
|
func_80284068(camera);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void func_80284154(Camera *camera) {
|
|
func_80282D90(camera, &D_80285910, &D_80285928, 0);
|
|
}
|
|
|
|
extern struct_80165C18_entry D_80165C20[];
|
|
extern s32 D_80183EAC;
|
|
|
|
void func_80284184(Camera *camera)
|
|
{
|
|
f32 new_var2;
|
|
new_var2 = ((D_80165C20[D_80183EAC].unk_000 - camera->lookAt[1]) * 0.899999976f) + camera->lookAt[1];
|
|
func_802821A0(&camera->pos[1], new_var2, 0.5);
|
|
}
|
|
|
|
void func_802841E8(Camera *camera) {
|
|
func_80282E58(camera, &D_80285940, 0);
|
|
vec3f_set_dupe(camera->pos, -3202.0f, 90.0f, -478.0f);
|
|
}
|
|
|
|
void func_8028422C(Camera *camera) {
|
|
func_802832C4(&func_80283AF4, camera, 6, 6);
|
|
func_802832C4(&func_80283B44, camera, 30, 30);
|
|
func_802832C4(&func_802841E8, camera, 0, 0);
|
|
func_802832C4(&func_80284184, camera, 6, -1);
|
|
}
|
|
|
|
void func_802842A8(s32 arg0) {
|
|
func_80282D90(arg0, &D_802858B0, &D_802858C8, 0);
|
|
}
|
|
|
|
void func_802842D8(s32 arg0) {
|
|
func_80282D90(arg0, &D_802857F0, &D_80285850, 0);
|
|
}
|
|
|
|
void func_80284308(Camera *camera) {
|
|
Player **sp30[4] = {
|
|
&gPlayerOne,
|
|
&gPlayerTwo,
|
|
&gPlayerThree,
|
|
&gPlayerFour
|
|
};
|
|
Player *ply;
|
|
f32 x;
|
|
f32 y;
|
|
f32 z;
|
|
|
|
func_802832C4(func_80283A54, camera, 140, 140);
|
|
func_80282D90(camera, D_802858E0, D_802858F8, 0);
|
|
|
|
ply = *(sp30[0] + D_802874F5);
|
|
|
|
x = ply->pos[0] - gPlayerOne->pos[0];
|
|
y = ply->pos[1] - gPlayerOne->pos[1];
|
|
z = ply->pos[2] - gPlayerOne->pos[2];
|
|
|
|
camera->lookAt[0] += x;
|
|
camera->lookAt[2] += z;
|
|
camera->pos[0] += x;
|
|
camera->pos[2] += z;
|
|
camera->lookAt[1] += y;
|
|
camera->pos[1] += y;
|
|
}
|
|
|
|
struct struct_80282C40 D_80285A10[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF33D, 0x002F, 0xFE5A} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF36B, 0x0028, 0xFE76} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3A6, 0x0027, 0xFE6F} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3C8, 0x002A, 0xFE4D} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3CF, 0x002F, 0xFE33} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285A4C[] = {
|
|
{ 0x00, 0x00, 0x00, 45, 0x00, 0x00, { 0xF4AC, 0xFFC1, 0xFD1A} },
|
|
{ 0x00, 0x00, 0x00, 45, 0x00, 0x00, { 0xF3D1, 0xFFF2, 0xFC8F} },
|
|
{ 0x00, 0x00, 0x00, 45, 0x00, 0x00, { 0xF2BA, 0xFFF2, 0xFCBA} },
|
|
{ 0x00, 0x00, 0x00, 45, 0x00, 0x00, { 0xF219, 0xFFF7, 0xFD56} },
|
|
{ 0xFF, 0x00, 0x00, 45, 0x00, 0x00, { 0xF1E8, 0xFFED, 0xFDD9} },
|
|
};
|
|
|
|
|
|
struct struct_80282C40 D_80285A88[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3D8, 0x0012, 0xFE0E} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3D8, 0x0012, 0xFE0E} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3D6, 0x001A, 0xFE0F} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3D7, 0x001D, 0xFE0F} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285AB8[] = {
|
|
{ 0x00, 0x00, 0x00, 75, 0x00, 0x00, { 0xF1FB, 0x006C, 0xFE85} },
|
|
{ 0x00, 0x00, 0x00, 45, 0x00, 0x00, { 0xF1FB, 0x006C, 0xFE85} },
|
|
{ 0x00, 0x00, 0x00, 45, 0x00, 0x00, { 0xF225, 0x00FB, 0xFE7A} },
|
|
{ 0xFF, 0x00, 0x00, 45, 0x00, 0x00, { 0xF21C, 0x00EB, 0xFE7C} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285AE8[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3A3, 0x004C, 0xFE22} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF3A3, 0x004C, 0xFE22} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285B00[] = {
|
|
{ 0x00, 0x00, 0x00, 30, 0x00, 0x00, { 0xF1BA, 0x0092, 0xFE22} },
|
|
{ 0xFF, 0x00, 0x00, 30, 0x00, 0x00, { 0xF1BA, 0x0092, 0xFE22} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285B18[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF496, 0x0029, 0xFF27} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF496, 0x0029, 0xFF27} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF4D5, 0xFFE3, 0xFF70} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF54D, 0xFFE8, 0xFF9B} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF54D, 0xFFE8, 0xFF9B} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285B54[] = {
|
|
{ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, { 0xF307, 0x012F, 0xFE96} },
|
|
{ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, { 0xF307, 0x012F, 0xFE96} },
|
|
{ 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, { 0xF326, 0x00CE, 0xFF12} },
|
|
{ 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, { 0xF35A, 0x0000, 0xFF9E} },
|
|
{ 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, { 0xF35A, 0x0000, 0xFF9E} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285B90[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF5BB, 0x0008, 0xFE7E} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF5BB, 0x0008, 0xFE7E} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285BA8[] = {
|
|
{ 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, { 0xF7A6, 0x0044, 0xFECC} },
|
|
{ 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, { 0xF7A6, 0x0044, 0xFECC} },
|
|
|
|
// Unused? What's going on here? D_80285BC0 (no label existed)
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF690, 0x0018, 0xFE9E} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF690, 0x0018, 0xFE9E} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF690, 0x0018, 0xFE9E} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF6B9, 0x0021, 0xFEA5} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF6CD, 0x001B, 0xFEA9} },
|
|
|
|
{ 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, { 0xF4A5, 0xFFF0, 0xFE49} },
|
|
{ 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, { 0xF4A5, 0xFFF0, 0xFE49} },
|
|
{ 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, { 0xF4A5, 0xFFF0, 0xFE49} },
|
|
{ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, { 0xF4CE, 0x0046, 0xFE4D} },
|
|
{ 0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, { 0xF4EB, 0x0084, 0xFE5C} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285C38[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF4ED, 0xFFEB, 0xFF66} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF4ED, 0xFFEB, 0xFF66} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF408, 0x0028, 0xFE82} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF32B, 0x0062, 0xFDD6} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF2A4, 0x006A, 0xFDA5} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285C74[] = {
|
|
{ 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, { 0xF616, 0xFFD8, 0x00F7} },
|
|
{ 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, { 0xF616, 0xFFD8, 0x00F7} },
|
|
{ 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, { 0xF558, 0xFFBB, 0xFFE4} },
|
|
{ 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, { 0xF481, 0xFFF0, 0xFF30} },
|
|
{ 0xFF, 0x00, 0x00, 0x28, 0x00, 0x00, { 0xF414, 0xFFED, 0xFEE1} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285CB0[] = {
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF551, 0xFFE7, 0xFFA5} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF551, 0xFFE7, 0xFFA5} },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF54E, 0xFFE7, 0xFF82} },
|
|
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, { 0xF544, 0xFFFA, 0xFF74} },
|
|
};
|
|
|
|
struct struct_80282C40 D_80285CE0[] = {
|
|
{ 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, { 0xF362, 0xFFF3, 0xFF62} },
|
|
{ 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, { 0xF362, 0xFFF3, 0xFF62} },
|
|
{ 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, { 0xF392, 0xFFF3, 0x0068} },
|
|
{ 0xFF, 0x00, 0x00, 0x19, 0x00, 0x00, { 0xF3E1, 0xFF47, 0x00A2} },
|
|
};
|
|
|
|
void func_80284308(Camera *);
|
|
|
|
struct _struct_D_80286B5C_0x8 D_80285D10[] = {
|
|
{ func_80283D2C, 330 },
|
|
{ func_802840C8, 270 },
|
|
{ func_802842D8, 247 },
|
|
{ func_80284418, 200 },
|
|
{ func_80284494, 170 },
|
|
{ func_802844FC, 108 },
|
|
{ func_8028422C, 140 },
|
|
{ func_802842A8, 270 },
|
|
{ func_80284308, 0x7FFF },
|
|
};
|
|
|
|
void func_80284418(s32 arg0) {
|
|
func_802832C4(&func_80283B1C, arg0, 0x52, 0x52);
|
|
func_802832C4(&func_80283B1C, arg0, 0x48, 0x48);
|
|
func_802832C4(&func_80283B1C, arg0, 0x3D, 0x3D);
|
|
func_80282D90(arg0, &D_80285A10, &D_80285A4C, 0);
|
|
}
|
|
|
|
void func_80284494(s32 arg0) {
|
|
func_802832C4(&func_80283ACC, arg0, 0x1E, 0x1E);
|
|
func_802832C4(&func_80283968, arg0, 0, 0);
|
|
func_80282D90(arg0, &D_80285A88, &D_80285AB8, 0);
|
|
}
|
|
|
|
void func_802844FC(s32 arg0) {
|
|
func_802832C4(&func_80283AA4, arg0, 0x3B, 0x3B);
|
|
func_80282D90(arg0, &D_80285AE8, &D_80285B00, 0);
|
|
}
|
|
|
|
void func_8028454C(s32 arg0) {
|
|
func_802832C4(&func_80283CA8, arg0, 0, 0);
|
|
func_802832C4(&func_80283A34, arg0, 1, 1);
|
|
func_802832C4(&func_80283C38, arg0, 0, 0);
|
|
func_802832C4(&func_80283994, arg0, 0x3C, 0x3C);
|
|
func_80282D90(arg0, &D_80285B18, &D_80285B54, 0);
|
|
}
|
|
|
|
void func_802845EC(s32 arg0) {
|
|
func_80282D90(arg0, &D_80285B90, &D_80285BA8, 0);
|
|
}
|
|
|
|
void func_8028461C(s32 arg0) {
|
|
func_80283240(1);
|
|
func_80283B6C(arg0);
|
|
}
|
|
|
|
void func_80284648(s32 arg0) {
|
|
func_802832C4(&func_802845EC, arg0, 0, 0);
|
|
func_802832C4(&func_8028461C, arg0, 0x110, 0x110);
|
|
func_802832C4(&func_80283BA4, arg0, 0x115, 0x115);
|
|
}
|
|
|
|
UNUSED void func_802846AC(void) {
|
|
|
|
}
|
|
|
|
void func_802846B4(s32 arg0) {
|
|
func_80282D90(arg0, &D_80285C38, &D_80285C74, 0);
|
|
}
|
|
|
|
// todo: What does this even do?
|
|
void func_802846E4(Camera *camera) {
|
|
|
|
func_80282D90(camera, &D_80285CB0, &D_80285CE0, 0);
|
|
camera->lookAt[0] += (gPlayerFour->pos[0] - -2796.0f); // <-- rodata
|
|
camera->lookAt[1] += (gPlayerFour->pos[1] - -29.0f);
|
|
camera->lookAt[2] += (gPlayerFour->pos[2] - -97.0f);
|
|
camera->pos[0] += (gPlayerFour->pos[0] - -2796.0f);
|
|
camera->pos[1] += (gPlayerFour->pos[1] - -29.0f);
|
|
camera->pos[2] += (gPlayerFour->pos[2] - -97.0f);
|
|
}
|
|
|
|
struct _struct_D_80286B5C_0x8 D_80285D58[] = {
|
|
{ func_8028454C, 300 },
|
|
{ func_80284154, 175 },
|
|
{ func_802846B4, 200 },
|
|
{ func_802846E4, 184 },
|
|
{ func_80284648, 0x7FFF },
|
|
};
|
|
|
|
#ifdef MIPS_TO_C
|
|
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9
|
|
void func_80280268(u8); /* extern */
|
|
static ? D_80286A04; /* unable to generate initializer */
|
|
static ? D_80286A10; /* unable to generate initializer */
|
|
static u16 D_80286B34[0x14] = {
|
|
0x0096,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F3,
|
|
0x00F2,
|
|
0x00F2,
|
|
0x00F2,
|
|
0x00F9,
|
|
0x00F0,
|
|
0,
|
|
};
|
|
f32 D_802856B4 = 12.0f;
|
|
|
|
void func_802847CC(s32 arg0) {
|
|
u16 sp2E;
|
|
u16 sp2C;
|
|
s32 sp24;
|
|
f32 temp_f4;
|
|
s16 temp_a2;
|
|
s16 temp_a2_2;
|
|
s32 var_t9;
|
|
u16 temp_v0;
|
|
u16 temp_v0_5;
|
|
u8 temp_v0_2;
|
|
void *temp_v0_3;
|
|
void *temp_v0_4;
|
|
|
|
temp_f4 = D_802856B4;
|
|
temp_v0 = *(&D_80286A10 + (D_800DC5E4 * 0x10));
|
|
if ((M2C_ERROR(cfc1) & 0x78) != 0) {
|
|
if ((M2C_ERROR(cfc1) & 0x78) == 0) {
|
|
var_t9 = (s32) (temp_f4 - 2.1474836e9f) | 0x80000000;
|
|
} else {
|
|
goto block_3;
|
|
}
|
|
} else {
|
|
var_t9 = (s32) temp_f4;
|
|
if (var_t9 < 0) {
|
|
block_3:
|
|
var_t9 = -1;
|
|
}
|
|
}
|
|
sp2E = (temp_v0 - var_t9) - 0xA;
|
|
sp2C = temp_v0;
|
|
func_802832C4(func_80283CD0, arg0, 0, 0);
|
|
func_802832C4(func_80283A00, arg0, 8, 8);
|
|
func_802832C4(func_80283C78, arg0, 0x0095, 0x0095);
|
|
func_802832C4(func_80282434, arg0, 0, 0);
|
|
temp_v0_2 = *(&D_80286A04 + (D_800DC5E4 * 0x10));
|
|
switch (temp_v0_2) { /* irregular */
|
|
case 1:
|
|
func_802832C4(func_802839CC, arg0, 0, -1);
|
|
temp_a2 = sp2E - 0x14;
|
|
func_802832C4(func_802839E0, arg0, temp_a2, temp_a2);
|
|
break;
|
|
case 2:
|
|
func_802832C4(func_802839B4, arg0, 0, 0);
|
|
func_802832C4(func_80283D04, arg0, 0x00F7, 0x00F7);
|
|
temp_v0_3 = (D_800DC5E4 * 0x10) + &D_80286A04;
|
|
func_80282D90(arg0, temp_v0_3->unk4, temp_v0_3->unk8, 0);
|
|
break;
|
|
default:
|
|
func_802832C4(func_802839B4, arg0, 0, 0);
|
|
sp24 = (s32) sp2E;
|
|
func_802832C4(func_802839CC, arg0, (s16) sp2E, (s16) sp2E);
|
|
temp_a2_2 = sp2E - 0x14;
|
|
func_802832C4(func_802839E0, arg0, temp_a2_2, temp_a2_2);
|
|
temp_v0_4 = (D_800DC5E4 * 0x10) + &D_80286A04;
|
|
func_80282D90(arg0, temp_v0_4->unk4, temp_v0_4->unk8, 0);
|
|
break;
|
|
}
|
|
if (gCCSelection == CC_EXTRA) {
|
|
sp2C = D_80286B34[D_800DC5E4];
|
|
}
|
|
if (sp2C == gCutsceneShotTimer) {
|
|
temp_v0_5 = D_800DC5E4;
|
|
if (*((temp_v0_5 * 0x10) + &D_80286A04) != 2) {
|
|
func_80280268(((temp_v0_5 * 0x10) + &D_80286A04)->unk11);
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_802847CC.s")
|
|
#endif
|
|
|
|
unsigned char D_80285D80[] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC6, 0x00, 0x00, 0xFC, 0x02,
|
|
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xFF, 0xB9, 0x00, 0x05, 0xFF, 0x53,
|
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xFE, 0xC3, 0x00, 0x36, 0x00, 0x9E,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1A, 0xFF, 0xDD, 0x02, 0x98,
|
|
0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFE, 0xB1, 0xFF, 0x45, 0xFD, 0x76,
|
|
0x00, 0x00, 0x00, 0x3C, 0x04, 0x00, 0xFE, 0xA7, 0xFF, 0x73, 0x00, 0xDA,
|
|
0x00, 0x00, 0x00, 0x3C, 0x0A, 0x00, 0xFD, 0x94, 0xFF, 0x9B, 0x02, 0x0B,
|
|
0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFA, 0x7B, 0x00, 0x3C, 0x03, 0x9C,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA7, 0x00, 0x4F, 0x06, 0x0B,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA7, 0x00, 0x4F, 0x06, 0x0B,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8A, 0x00, 0x68, 0x05, 0x9A,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x70, 0x04, 0xB7,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x69, 0x00, 0x42, 0x04, 0x10,
|
|
0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x05, 0x1C, 0x00, 0xB9, 0x07, 0xE5,
|
|
0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x05, 0x1C, 0x00, 0xB9, 0x07, 0xE5,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x04, 0xF6, 0x00, 0x32, 0x07, 0x7F,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x04, 0x0D, 0x00, 0x23, 0x06, 0x64,
|
|
0xFF, 0x00, 0x00, 0x32, 0x00, 0x00, 0x04, 0x4D, 0x00, 0x0C, 0x05, 0xA8,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x70, 0xF5, 0xAB,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x70, 0xF5, 0xAB,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x43, 0xF6, 0x24,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xBB, 0x00, 0x1B, 0xF6, 0xA9,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x01, 0xBE, 0xFF, 0x8B, 0xF7, 0x23,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xBE, 0xFF, 0x8B, 0xF7, 0x21,
|
|
0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x02, 0x3D, 0xFF, 0x7A, 0xF7, 0xA5,
|
|
0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x02, 0xBB, 0x00, 0x47, 0xF8, 0x54,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1A, 0x00, 0x1F, 0x0A, 0xAA,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1A, 0x00, 0x16, 0x08, 0x90,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1B, 0x00, 0x17, 0x05, 0xEE,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x24, 0x00, 0x13, 0x03, 0x25,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xAB, 0x00, 0x10, 0x01, 0xAF,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x52, 0x00, 0x13, 0x00, 0x94,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x51, 0x00, 0x1A, 0x00, 0x55,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF5, 0x00, 0x1B, 0x00, 0x53,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0xFD, 0x1F, 0xFE, 0xB7, 0x09, 0x4F,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0xFD, 0x21, 0xFF, 0xDF, 0x06, 0x9F,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0xFD, 0x35, 0x00, 0x12, 0x03, 0xFA,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFD, 0x32, 0xFF, 0xE5, 0x01, 0x33,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFB, 0x92, 0x00, 0x0E, 0x00, 0x11,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF9, 0x93, 0x00, 0x1C, 0xFF, 0xB7,
|
|
0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0xF8, 0x66, 0x00, 0x09, 0xFF, 0xFB,
|
|
0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF7, 0x12, 0xFF, 0xE7, 0x00, 0xC8,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9C, 0x00, 0xDE, 0xF9, 0x9E,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9C, 0x00, 0xDE, 0xF9, 0x9E,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7F, 0x00, 0x99, 0xF9, 0xA6,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x84, 0x00, 0x5B, 0xF9, 0xA2,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x84, 0x00, 0x5B, 0xF9, 0xA2,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x84, 0x00, 0x5B, 0xF9, 0xA2,
|
|
0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x08, 0x86, 0xFF, 0xAA, 0xF8, 0x63,
|
|
0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x08, 0x87, 0xFF, 0xAA, 0xF8, 0x64,
|
|
0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x60, 0x00, 0x10, 0xF9, 0xAD,
|
|
0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x09, 0x2B, 0x00, 0x9E, 0xFA, 0xA4,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x30, 0x00, 0xA9, 0xFA, 0x98,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x32, 0x00, 0xA9, 0xFA, 0x95,
|
|
0xFF, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x2F, 0x00, 0xA1, 0xFA, 0x9C,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x37, 0x00, 0x2D, 0xF9, 0xAB,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x35, 0xFA, 0xEF,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA6, 0x00, 0x2D, 0xFC, 0x8E,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x00, 0x35, 0xFD, 0xAD,
|
|
0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFD, 0xC7, 0xFF, 0xE6, 0xFA, 0xF6,
|
|
0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFE, 0xD8, 0xFF, 0xEE, 0xFB, 0xF4,
|
|
0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFF, 0xDC, 0xFF, 0xE6, 0xFD, 0x46,
|
|
0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x4B, 0xFF, 0xE7, 0xFE, 0x2D,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x11, 0xFF, 0xCD, 0x00, 0x96,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x11, 0xFF, 0xCD, 0x00, 0x96,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x16, 0x00, 0x96, 0x00, 0x7C,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1E, 0x01, 0xE9, 0x00, 0x49,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2C, 0x04, 0x19, 0xFF, 0xF4,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x4E, 0x06, 0x15, 0xFF, 0xC1,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x31, 0x07, 0x7F, 0xFF, 0xF1,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x31, 0x07, 0x7F, 0xFF, 0xF1,
|
|
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0xFC, 0x60, 0xFF, 0x8E, 0xFE, 0xAD,
|
|
0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0xFC, 0x61, 0xFF, 0x85, 0xFE, 0xAE,
|
|
0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0xFC, 0x64, 0x00, 0x15, 0xFE, 0x9F,
|
|
0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0xFC, 0x66, 0x01, 0x04, 0xFE, 0x93,
|
|
0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0xFC, 0xF6, 0x02, 0xC5, 0xFE, 0xC2,
|
|
0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0xFC, 0xD2, 0x04, 0x46, 0xFF, 0x38,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFC, 0x82, 0x05, 0xB0, 0xFF, 0x46,
|
|
0xFF, 0x00, 0x00, 0x25, 0x00, 0x00, 0xFC, 0x7D, 0x05, 0xAC, 0xFF, 0x4D,
|
|
0x00, 0x00, 0x00, 0x00, 0xEB, 0x00, 0xFF, 0xFB, 0x00, 0x47, 0xFE, 0x2B,
|
|
0x00, 0x00, 0x00, 0x00, 0xE1, 0x00, 0xFF, 0xF5, 0x00, 0x15, 0xFB, 0x8A,
|
|
0x00, 0x00, 0x00, 0x00, 0xF5, 0x00, 0x01, 0x43, 0x00, 0x1F, 0xFA, 0xB2,
|
|
0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x02, 0x30, 0x00, 0x1D, 0xFA, 0xEE,
|
|
0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x02, 0x94, 0x00, 0x12, 0xFB, 0x89,
|
|
0x00, 0x00, 0x00, 0x00, 0xE4, 0x00, 0x04, 0xB4, 0x00, 0x1C, 0xFB, 0x7B,
|
|
0x00, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x05, 0x45, 0x00, 0x11, 0xFC, 0x7C,
|
|
0x00, 0x00, 0x00, 0x00, 0xF4, 0x00, 0x04, 0xAA, 0x00, 0x1B, 0xFD, 0x89,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xF5, 0x00, 0x0C, 0xFD, 0xE2,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xD6, 0xFD, 0xE5,
|
|
0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0xFE, 0xFA, 0xFF, 0xDD, 0xFD, 0xCF,
|
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xFD, 0xD8, 0xFF, 0xF9, 0xFE, 0x2B,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x15, 0x00, 0x06, 0xFF, 0x68,
|
|
0x00, 0x00, 0x00, 0x1E, 0xEB, 0x00, 0x00, 0x02, 0xFF, 0xCD, 0xFC, 0x47,
|
|
0x00, 0x00, 0x00, 0x1E, 0xE1, 0x00, 0x00, 0xF6, 0xFF, 0xC1, 0xF9, 0xE6,
|
|
0x00, 0x00, 0x00, 0x1E, 0xF5, 0x00, 0x03, 0x2D, 0xFF, 0xBE, 0xFA, 0xAD,
|
|
0x00, 0x00, 0x00, 0x14, 0x27, 0x00, 0x02, 0xC7, 0xFF, 0xFF, 0xFC, 0xCA,
|
|
0x00, 0x00, 0x00, 0x1E, 0x19, 0x00, 0x04, 0x7B, 0xFF, 0xB4, 0xFB, 0x52,
|
|
0x00, 0x00, 0x00, 0x14, 0xE4, 0x00, 0x05, 0xEB, 0xFF, 0xED, 0xFC, 0xFF,
|
|
0x00, 0x00, 0x00, 0x1E, 0xE2, 0x00, 0x05, 0x3D, 0xFF, 0xBC, 0xFE, 0x69,
|
|
0x00, 0x00, 0x00, 0x1E, 0xF4, 0x00, 0x02, 0xC8, 0xFF, 0xB7, 0xFD, 0xE1,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0x04, 0xFF, 0xD6, 0xFE, 0x02,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x8C, 0xFD, 0xEF,
|
|
0x00, 0x00, 0x00, 0x1E, 0x0D, 0x00, 0xFD, 0x19, 0xFF, 0x9E, 0xFE, 0x46,
|
|
0x00, 0x00, 0x00, 0x1E, 0x10, 0x00, 0xFC, 0xC0, 0xFF, 0xCD, 0xFF, 0xC7,
|
|
0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFC, 0x30, 0x00, 0x60, 0x01, 0x1A,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xCF, 0x02, 0x17, 0x07, 0xF0,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x75, 0x01, 0x8B, 0x06, 0x22,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xE3, 0x01, 0x23, 0x04, 0xEE,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xA2, 0x01, 0xA8, 0x02, 0xDC,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x8B, 0x02, 0x62, 0x00, 0x50,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xB5, 0x01, 0x89, 0xFC, 0xDB,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xA8, 0x01, 0x2D, 0xF7, 0xE1,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF5, 0x58, 0x00, 0xF2, 0x06, 0x73,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF5, 0xFE, 0x00, 0x65, 0x04, 0xA5,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF6, 0x65, 0xFF, 0xE3, 0x03, 0x85,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF7, 0x71, 0x01, 0x1D, 0x01, 0x2A,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF7, 0xF7, 0x01, 0x86, 0xFF, 0x48,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x73, 0x01, 0x16, 0xFE, 0x9C,
|
|
0xFF, 0x00, 0x00, 0x2A, 0x00, 0x00, 0xF8, 0x6D, 0x00, 0xE0, 0xF9, 0xCC,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xD4, 0x00, 0xA6, 0xFA, 0xE3,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xD4, 0x00, 0xA6, 0xFA, 0xE3,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFE, 0x00, 0x66, 0xF9, 0xCF,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xF6, 0x00, 0x46, 0xF9, 0x66,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7C, 0x00, 0x53, 0xFA, 0x6C,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC9, 0x00, 0x3A, 0xFC, 0x36,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x6F, 0xFF, 0xDE, 0xFD, 0xC0,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x17, 0xFF, 0xBE, 0xFE, 0xC7,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x6A, 0x00, 0xAB, 0x01, 0x1B,
|
|
0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x06, 0xDB, 0xFF, 0xD3, 0xFC, 0xA8,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, 0xDC, 0xFF, 0xDC, 0xFC, 0xAC,
|
|
0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x07, 0x7F, 0xFF, 0xBE, 0xFB, 0x94,
|
|
0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x06, 0xB5, 0xFF, 0xBD, 0xFA, 0x16,
|
|
0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x03, 0x59, 0xFF, 0xD6, 0xFA, 0x1E,
|
|
0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xB1, 0xFB, 0x2F,
|
|
0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0xFD, 0xEE, 0xFF, 0x57, 0xFC, 0x9C,
|
|
0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0xFC, 0x95, 0xFF, 0x34, 0xFD, 0xA4,
|
|
0xFF, 0x00, 0x00, 0x19, 0x00, 0x00, 0xFA, 0x96, 0xFF, 0xF6, 0xFF, 0xB7,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xEF, 0xFF, 0x6E, 0xFD, 0xAA,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xEF, 0xFF, 0x6E, 0xFD, 0xAA,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x54, 0xFF, 0x68, 0xFD, 0xBF,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xB5, 0xFF, 0x64, 0xFD, 0xE0,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0D, 0xFF, 0x64, 0xFD, 0xFA,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x9F, 0xFF, 0x64, 0xFE, 0x2B,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x80, 0xFF, 0x61, 0xFE, 0x99,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xCA, 0xFF, 0x66, 0xFE, 0xAB,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0xFF, 0x6D, 0xFE, 0xBF,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF9, 0x11, 0xFF, 0x0F, 0xFE, 0x1A,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF9, 0x11, 0xFF, 0x0F, 0xFE, 0x1A,
|
|
0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0xF9, 0xDD, 0xFE, 0x99, 0xFE, 0xC0,
|
|
0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0xFB, 0x37, 0xFE, 0x86, 0xFF, 0x8E,
|
|
0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0xFC, 0xC7, 0xFE, 0x7A, 0xFF, 0x8B,
|
|
0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0xFE, 0x21, 0xFF, 0x1D, 0xFF, 0x62,
|
|
0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0xFF, 0x5C, 0xFF, 0x8E, 0xFF, 0x2E,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFF, 0xA1, 0xFF, 0x56, 0xFF, 0x54,
|
|
0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFF, 0xDF, 0xFF, 0x4E, 0xFF, 0x5D,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x00, 0x16, 0xFB, 0xE5,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x00, 0x16, 0xFB, 0xE5,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x79, 0x00, 0x1C, 0xFB, 0xDC,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x14, 0xFC, 0x78,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x15, 0xFD, 0xCF,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xA5, 0x00, 0x6F, 0xFE, 0xAD,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xB3, 0x00, 0x8E, 0xFF, 0x63,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0x81, 0xFF, 0xA1, 0xFD, 0xC3,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0x81, 0xFF, 0xA1, 0xFD, 0xC3,
|
|
0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x02, 0x37, 0xFF, 0x21, 0xFD, 0x88,
|
|
0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x5D, 0xFF, 0x63, 0xFE, 0x39,
|
|
0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0xFE, 0xF8, 0x00, 0x7D, 0xFF, 0x60,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xC8, 0xFF, 0xB7,
|
|
0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFD, 0xC3, 0x00, 0xD1, 0xFF, 0x6A,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF9, 0x00, 0x4D, 0xFD, 0x4B,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x2A, 0x00, 0x9E, 0xFC, 0xF8,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1B, 0x01, 0x74, 0xFD, 0x03,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2C, 0x01, 0x63, 0xFB, 0xEA,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xC2, 0x00, 0x3C, 0xFA, 0xA3,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xF4, 0x00, 0x12, 0xF8, 0x7D,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xF4, 0x00, 0x12, 0xF8, 0x7D,
|
|
0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0xFE, 0xDB, 0xFF, 0x54, 0xFC, 0x06,
|
|
0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0xFE, 0xB0, 0xFF, 0x91, 0xFB, 0x66,
|
|
0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0xFE, 0x79, 0x00, 0x70, 0xFB, 0x62,
|
|
0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0xFD, 0xE5, 0x00, 0xAC, 0xFB, 0x55,
|
|
0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0xFD, 0x9B, 0x00, 0x79, 0xFB, 0x3C,
|
|
0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0xFD, 0x0D, 0x00, 0x37, 0xFA, 0x1A,
|
|
0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFD, 0x20, 0x00, 0x1D, 0xFA, 0x0D,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x17, 0xFB, 0x25,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x11, 0xF7, 0xF3,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x0A, 0xF6, 0xB4,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x34, 0x00, 0x08, 0xF5, 0x4E,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x63, 0x00, 0x09, 0xF4, 0x94,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xD3, 0x00, 0x05, 0xF4, 0x36,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC0, 0x00, 0x05, 0xF3, 0xEC,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xA1, 0x00, 0x04, 0xF3, 0xE5,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x43, 0x00, 0x02, 0xF3, 0xD4,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x6D, 0x00, 0x03, 0xF3, 0xF1,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x32, 0xFF, 0x86, 0xF9, 0x47,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x42, 0xFF, 0x4F, 0xF6, 0x27,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0x81, 0xFF, 0x13, 0xF6, 0x12,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xEB, 0xFF, 0x7E, 0xF6, 0x0E,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x2B, 0xFF, 0xC5, 0xF5, 0x54,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFF, 0x90, 0xFF, 0xB2, 0xF5, 0x08,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFE, 0xB4, 0x00, 0x11, 0xF3, 0xE0,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFD, 0x8C, 0x00, 0x1A, 0xF3, 0x86,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFC, 0x2B, 0x00, 0x67, 0xF3, 0xAE,
|
|
0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFB, 0x56, 0x00, 0x51, 0xF3, 0xAC,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x9D, 0x00, 0x1E, 0x00, 0x3A,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xC9, 0x00, 0x3C, 0x00, 0x39,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xF7, 0x00, 0x5A, 0x00, 0x38,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xF7, 0x00, 0x5A, 0x00, 0x38,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x35, 0x00, 0x57, 0x00, 0x36,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xAE, 0x00, 0x36, 0x00, 0x1D,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xCE, 0x00, 0x31, 0x00, 0x1C,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xCE, 0x00, 0x31, 0x00, 0x1C,
|
|
0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0xF6, 0x69, 0xFF, 0x5A, 0x00, 0x4D,
|
|
0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0xF6, 0x9D, 0xFF, 0x8D, 0x00, 0x4B,
|
|
0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0xF6, 0xD6, 0xFF, 0xC8, 0x00, 0x3B,
|
|
0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0xF6, 0xD9, 0xFF, 0xD3, 0x00, 0x40,
|
|
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xF7, 0x17, 0xFF, 0xD0, 0x00, 0x45,
|
|
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x94, 0xFF, 0xC5, 0x00, 0x0F,
|
|
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0xB8, 0xFF, 0xCC, 0x00, 0x1A,
|
|
0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0xB8, 0xFF, 0xCC, 0x00, 0x14,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x61, 0x03, 0xCE, 0xF2, 0xBF,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x33, 0x03, 0x8D, 0xF4, 0x0F,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x59, 0x03, 0x66, 0xF4, 0xDF,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xE7, 0x03, 0x21, 0xF5, 0xD5,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x9A, 0x02, 0xA9, 0xF7, 0x04,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x58, 0x02, 0x20, 0xF8, 0xB1,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xBF, 0x01, 0xF3, 0xFA, 0x36,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xF2, 0x01, 0xEF, 0xFB, 0x8D,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x43, 0x01, 0xFE, 0xFD, 0x31,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x50, 0x02, 0x00, 0xFE, 0xA3,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xCD, 0x02, 0x14, 0xFF, 0x83,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xCE, 0x02, 0x2D, 0x00, 0x0D,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xD8, 0x02, 0x31, 0x00, 0x0D,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFE, 0xA7, 0x03, 0x3C, 0xF4, 0x78,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFC, 0xB7, 0x03, 0x06, 0xF5, 0xE1,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFB, 0xF7, 0x02, 0xD4, 0xF6, 0xB4,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFB, 0x96, 0x02, 0x78, 0xF7, 0xA5,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFB, 0x66, 0x02, 0x17, 0xF8, 0xE0,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFB, 0x26, 0x01, 0xC5, 0xFA, 0x9B,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFA, 0xDD, 0x01, 0xEB, 0xFC, 0x29,
|
|
0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xFA, 0x89, 0x02, 0x08, 0xFD, 0x69,
|
|
0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0xFA, 0xF3, 0x02, 0x0A, 0xFE, 0x2D,
|
|
0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xFB, 0x2B, 0x02, 0x26, 0xFE, 0x09,
|
|
0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xFB, 0x39, 0x02, 0x16, 0xFE, 0x2C,
|
|
0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xFB, 0x08, 0x02, 0x02, 0xFE, 0x1F,
|
|
0xFF, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xFB, 0x31, 0x02, 0x3F, 0xFE, 0x38,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5D, 0x01, 0xF9, 0xF6, 0x7A,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x7A, 0x01, 0x36, 0xF7, 0xAB,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x8B, 0x00, 0x66, 0xFA, 0x4F,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xC4, 0x00, 0x32, 0xFC, 0x9F,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xB6, 0x00, 0x22, 0xFD, 0xDA,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x71, 0x00, 0x54, 0xFD, 0xEC,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xDF, 0x00, 0xA6, 0xFE, 0xD5,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFD, 0x5A, 0x01, 0x07, 0xF7, 0xDB,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFC, 0x6F, 0x00, 0x63, 0xF9, 0x18,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xFA, 0x65, 0x00, 0x2E, 0xFB, 0xE0,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x43, 0x00, 0x10, 0xFD, 0xDC,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF5, 0xD2, 0x00, 0x0C, 0xFE, 0x55,
|
|
0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF5, 0x7E, 0x00, 0x6C, 0xFD, 0xE9,
|
|
0xFF, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xF5, 0xF2, 0x00, 0xA8, 0xFE, 0x82,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xE5, 0x01, 0x81, 0x05, 0x4B,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xE4, 0x00, 0xB9, 0x05, 0x56,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xCC, 0x00, 0x10, 0x05, 0x56,
|
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x42, 0x00, 0x47, 0x05, 0x6D,
|
|
0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0xF8, 0x8A, 0x00, 0xE8, 0x03, 0x78,
|
|
0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0xFC, 0x3E, 0x00, 0x1D, 0x04, 0x10,
|
|
0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0xFE, 0xA3, 0x00, 0x41, 0x05, 0xF7,
|
|
0xFF, 0x00, 0x00, 0x46, 0x00, 0x00, 0xFE, 0xDA, 0x01, 0x09, 0x06, 0x42
|
|
};
|
|
|
|
|
|
s32 D_80286A04[] = {0x01000000, 0x80286518, 0x80286518};
|
|
|
|
u8 D_80286A10[] = {
|
|
0x00, 0x96, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x28, 0x5D, 0x80,
|
|
0x80, 0x28, 0x5D, 0xB0, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00,
|
|
0x80, 0x28, 0x5D, 0xE0, 0x80, 0x28, 0x5E, 0x1C, 0x00, 0xF1, 0x00, 0x00,
|
|
0x00, 0x0B, 0x00, 0x00, 0x80, 0x28, 0x5E, 0xB8, 0x80, 0x28, 0x5F, 0x18,
|
|
0x00, 0xF1, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x80, 0x28, 0x5E, 0x58,
|
|
0x80, 0x28, 0x5E, 0x88, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
|
|
0x80, 0x28, 0x5F, 0x78, 0x80, 0x28, 0x5F, 0xC0, 0x00, 0xF1, 0x00, 0x00,
|
|
0x00, 0x0E, 0x00, 0x00, 0x80, 0x28, 0x69, 0xA4, 0x80, 0x28, 0x69, 0xD4,
|
|
0x00, 0xF1, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x80, 0x28, 0x60, 0x14,
|
|
0x80, 0x28, 0x60, 0x44, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
|
|
0x80, 0x28, 0x60, 0x74, 0x80, 0x28, 0x60, 0xD4, 0x00, 0xF1, 0x00, 0x00,
|
|
0x00, 0x01, 0x00, 0x00, 0x80, 0x28, 0x61, 0x34, 0x80, 0x28, 0x61, 0xD0,
|
|
0x00, 0xF1, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x28, 0x62, 0x6C,
|
|
0x80, 0x28, 0x62, 0xC0, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00,
|
|
0x80, 0x28, 0x63, 0x14, 0x80, 0x28, 0x63, 0x80, 0x00, 0xF0, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x80, 0x28, 0x64, 0xC4, 0x80, 0x28, 0x65, 0x18,
|
|
0x00, 0xF0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x28, 0x65, 0x6C,
|
|
0x80, 0x28, 0x65, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00,
|
|
0x80, 0x28, 0x66, 0x14, 0x80, 0x28, 0x66, 0x8C, 0x00, 0xF0, 0x00, 0x00,
|
|
0x00, 0x03, 0x00, 0x00, 0x80, 0x28, 0x67, 0x04, 0x80, 0x28, 0x67, 0x64,
|
|
0x00, 0xF0, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x80, 0x28, 0x67, 0xC4,
|
|
0x80, 0x28, 0x68, 0x60, 0x00, 0xF0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
|
0x80, 0x28, 0x65, 0x18, 0x80, 0x28, 0x65, 0x18, 0x00, 0xF2, 0x00, 0x00,
|
|
0x02, 0x07, 0x00, 0x00, 0x80, 0x28, 0x68, 0xFC, 0x80, 0x28, 0x69, 0x50,
|
|
0x00, 0xF0, 0x00, 0x00
|
|
};
|
|
|
|
s32 D_80286B34[] = {
|
|
0x009600F3, 0x00F300F3,
|
|
0x00F300F3, 0x00F300F3,
|
|
0x00F300F3, 0x00F300F3,
|
|
0x00F300F3, 0x00F200F2,
|
|
0x00F200F9, 0x00F00000,
|
|
};
|
|
void func_802847CC(s32);
|
|
|
|
struct _struct_D_80286B5C_0x8 D_80286B5C[] = {
|
|
{ func_802847CC, 0x7FFF },
|
|
};
|
|
|
|
//#ifdef MIPS_TO_C
|
|
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
|
|
|
|
struct struct_80284AE8 {
|
|
u8 unk0[0x1C];
|
|
u8 unk1C;
|
|
};
|
|
|
|
void func_80284AE8(CinematicCamera *c) {
|
|
s32 pad[3];
|
|
s16 cutsceneDuration;
|
|
|
|
#define CUTSCENE(id, cutscene) \
|
|
case id: \
|
|
cutsceneDuration = cutscene[sCutsceneShot].unk4; \
|
|
cutscene[sCutsceneShot].shot(c); \
|
|
|
|
if (!c->cutscene) { return; }
|
|
switch (c->cutscene) {
|
|
CUTSCENE(2, D_80285D10)
|
|
break;
|
|
CUTSCENE(3, D_80285D10)
|
|
break;
|
|
CUTSCENE(4, D_80285D10)
|
|
break;
|
|
CUTSCENE(5, D_80285D58)
|
|
func_80283C58(c);
|
|
break;
|
|
CUTSCENE(6, D_80286B5C)
|
|
break;
|
|
}
|
|
|
|
#undef CUTSCENE
|
|
|
|
if ((cutsceneDuration != 0) && ((gCutsceneShotTimer & 0xC000) == 0)) {
|
|
|
|
if (gCutsceneShotTimer < 16383) {
|
|
gCutsceneShotTimer++;
|
|
}
|
|
if (gCutsceneShotTimer == cutsceneDuration) {
|
|
sCutsceneShot++;
|
|
gCutsceneShotTimer = 0;
|
|
func_8028240C();
|
|
}
|
|
} else {
|
|
if (gCutsceneShotTimer & 0x4000) {
|
|
gCutsceneShotTimer = 0;
|
|
func_8028240C();
|
|
} else {
|
|
D_802876D8 = 0;
|
|
sCutsceneShot = 0;
|
|
gCutsceneShotTimer = 0;
|
|
func_8028240C();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void func_80284CC0(void) {
|
|
f32 temp_f0;
|
|
f32 temp_f14;
|
|
|
|
temp_f14 = D_802856B0 - D_802856C0;
|
|
if (temp_f14 < 0.0f) {
|
|
temp_f14 = 0.0f;
|
|
}
|
|
temp_f0 = D_802856B0 + D_802856C0;
|
|
// Note that this MUST be on one line. All hail significant whitespace in C!
|
|
do {if (temp_f0 > 240.0f) { temp_f0 = 239.0f; } } while (0);
|
|
|
|
gDPPipeSync(gDisplayListHead++);
|
|
gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
|
|
gDPSetCycleType(gDisplayListHead++, G_CYC_FILL);
|
|
gDPSetFillColor(gDisplayListHead++, (GPACK_RGBA5551(0, 0, 0, 1) << 16 | GPACK_RGBA5551(0, 0, 0, 1)));
|
|
gDPFillRectangle(gDisplayListHead++, 0, 0, 319, (s32)temp_f14);
|
|
gDPFillRectangle(gDisplayListHead++, 0, (s32)temp_f0, 319, 239);
|
|
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
|
|
func_802822AC(&D_802856C0, D_802856B8, D_802856BC / D_802856B4);
|
|
}
|
|
|