Reorganizaton of main (#199)

* reorganize main

* more names

* libc
This commit is contained in:
petrie911
2024-04-03 09:30:50 -05:00
committed by GitHub
parent 5f2b690a2b
commit ac41c180a9
73 changed files with 653 additions and 641 deletions
+2298
View File
File diff suppressed because it is too large Load Diff
+38
View File
@@ -0,0 +1,38 @@
#include "global.h"
void func_800846F0(FrameBuffer* arg0) {
s32 i;
s32 j;
u16* var_v0;
s32 sp60[5];
s32 sp4C[5];
s32 sp38[5];
for (i = 0; i < gSysFrameCount % SCREEN_HEIGHT; i++) {
var_v0 = SCREEN_WIDTH * i + arg0->data;
for (j = 0; j < gSysFrameCount % SCREEN_WIDTH; j++, var_v0++) {
sp60[1] = RGBA16_RED(var_v0[0]);
sp4C[1] = RGBA16_GRN(var_v0[0]);
sp38[1] = RGBA16_BLU(var_v0[0]);
sp60[2] = RGBA16_RED(var_v0[1]);
sp4C[2] = RGBA16_GRN(var_v0[1]);
sp38[2] = RGBA16_BLU(var_v0[1]);
sp60[3] = RGBA16_RED(var_v0[SCREEN_WIDTH]);
sp4C[3] = RGBA16_GRN(var_v0[SCREEN_WIDTH]);
sp38[3] = RGBA16_BLU(var_v0[SCREEN_WIDTH]);
sp60[4] = RGBA16_RED(var_v0[SCREEN_WIDTH + 1]);
sp4C[4] = RGBA16_GRN(var_v0[SCREEN_WIDTH + 1]);
sp38[4] = RGBA16_BLU(var_v0[SCREEN_WIDTH + 1]);
sp60[0] = (sp60[1] + sp60[2] + sp60[3] + sp60[4]) / 4;
sp4C[0] = (sp4C[1] + sp4C[2] + sp4C[3] + sp4C[4]) / 4;
sp38[0] = (sp38[1] + sp38[2] + sp38[3] + sp38[4]) / 4;
var_v0[0] = (sp60[0] << 0xB) | (sp4C[0] << 0x6) | (sp38[0] << 0x1);
}
}
osWritebackDCacheAll();
}
+631
View File
@@ -0,0 +1,631 @@
#include "global.h"
f32 __dx1;
f32 __dx2;
f32 __dy1;
f32 __dy2;
f32 __dz1;
f32 __dz2;
f32 __vtx0_x;
f32 __vtx0_y;
f32 __vtx0_z;
f32 __vtx1_x;
f32 __vtx1_y;
f32 __vtx1_z;
f32 __vtx2_x;
f32 __vtx2_y;
f32 __vtx2_z;
f32 __vtx3_x;
f32 __vtx3_y;
f32 __vtx3_z;
f32 __pos_x;
f32 __pos_z;
#define TRINORM_X(A, B, C) ((B##_y - A##_y) * (C##_z - B##_z) - (B##_z - A##_z) * (C##_y - B##_y))
#define TRINORM_Y(A, B, C) ((B##_z - A##_z) * (C##_x - B##_x) - (B##_x - A##_x) * (C##_z - B##_z))
#define TRINORM_Z(A, B, C) ((B##_x - A##_x) * (C##_y - B##_y) - (B##_y - A##_y) * (C##_x - B##_x))
// Calculate the directed plane that contains the ordered triangle tri, given as an array of Vec3s
void func_col1_80097380(PlaneF* plane, Vec3s** tri) {
Vec3s a;
Vec3s b;
Vec3s c;
s32 new_var;
Vec3s* tri2 = *tri;
a.x = (*tri)->x;
a.y = tri2->y; // fake
a.z = (*tri)->z;
tri++;
b.x = (*tri)->x;
b.y = (*tri)->y;
b.z = (*tri)->z;
tri++;
c.x = (*tri)->x;
c.y = (*tri)->y;
c.z = (*tri)->z;
tri++;
__dx1 = b.x - a.x;
__dx2 = c.x - b.x;
__dy1 = b.y - a.y;
do {
__dy2 = c.y - b.y;
__dz1 = b.z - a.z;
__dz2 = c.z - b.z;
} while (0); // wut
plane->normal.x = (__dy1 * __dz2) - (__dz1 * __dy2);
plane->normal.y = (__dz1 * __dx2) - (__dx1 * __dz2);
plane->normal.z = (__dx1 * __dy2) - (__dy1 * __dx2);
plane->dist =
-a.x * b.y * c.z - b.x * c.y * a.z - c.x * a.y * b.z + a.x * c.y * b.z + b.x * a.y * c.z + c.x * b.y * a.z;
}
// Calculate the directed plane that contains the ordered triangle tri, given as an array of Vec3s. Duplicate of
// previous
void func_col1_80097558(PlaneF* plane, Vec3s** tri) {
Vec3s a;
Vec3s b;
Vec3s c;
s32 new_var;
Vec3s* tri2 = *tri;
a.x = (*tri)->x;
a.y = tri2->y; // fake
a.z = (*tri)->z;
tri++;
b.x = (*tri)->x;
b.y = (*tri)->y;
b.z = (*tri)->z;
tri++;
c.x = (*tri)->x;
c.y = (*tri)->y;
c.z = (*tri)->z;
tri++;
__dx1 = b.x - a.x;
__dx2 = c.x - b.x;
__dy1 = b.y - a.y;
do {
__dy2 = c.y - b.y;
__dz1 = b.z - a.z;
__dz2 = c.z - b.z;
} while (0); // wut
plane->normal.x = (__dy1 * __dz2) - (__dz1 * __dy2);
plane->normal.y = (__dz1 * __dx2) - (__dx1 * __dz2);
plane->normal.z = (__dx1 * __dy2) - (__dy1 * __dx2);
plane->dist =
-a.x * b.y * c.z - b.x * c.y * a.z - c.x * a.y * b.z + a.x * c.y * b.z + b.x * a.y * c.z + c.x * b.y * a.z;
}
// Calculate the normal vector of an ordered triangle, given as a Vec3f array
void func_col1_80097730(Vec3f* norm, Vec3f* tri) {
__vtx0_x = tri->x;
__vtx0_y = tri->y;
__vtx0_z = tri->z;
tri++;
__vtx1_x = tri->x;
__vtx1_y = tri->y;
__vtx1_z = tri->z;
tri++;
__vtx2_x = tri->x;
__vtx2_y = tri->y;
__vtx2_z = tri->z;
__dx1 = __vtx1_x - __vtx0_x;
__dx2 = __vtx2_x - __vtx1_x;
__dy1 = __vtx1_y - __vtx0_y;
__dy2 = __vtx2_y - __vtx1_y;
__dz1 = __vtx1_z - __vtx0_z;
__dz2 = __vtx2_z - __vtx1_z;
norm->x = (__dy1 * __dz2) - (__dz1 * __dy2);
norm->y = (__dz1 * __dx2) - (__dx1 * __dz2);
norm->z = (__dx1 * __dy2) - (__dy1 * __dx2);
}
// Calculate the normal vector of an ordered triangle, given as integer coordinates
void func_col1_800978C4(Vec3f* norm, s32 ax, s32 ay, s32 az, s32 bx, s32 by, s32 bz, s32 cx, s32 cy, s32 cz) {
__dx1 = bx - ax;
__dx2 = cx - bx;
__dy1 = by - ay;
__dy2 = cy - by;
__dz1 = bz - az;
__dz2 = cz - bz;
norm->x = (__dy1 * __dz2) - (__dz1 * __dy2);
norm->y = (__dz1 * __dx2) - (__dx1 * __dz2);
norm->z = (__dx1 * __dy2) - (__dy1 * __dx2);
}
// Calculate the normal vector of an ordered triangle, given as vertices
void func_col1_800979E8(Vtx_tn* tri) {
s32 i;
Vec3f temp;
f32 temp_fv0;
tri++;
tri--; // fake and weird
__vtx0_x = tri[0].ob[0];
__vtx0_y = tri[0].ob[1];
__vtx0_z = tri[0].ob[2];
__vtx1_x = tri[1].ob[0];
__vtx1_y = tri[1].ob[1];
__vtx1_z = tri[1].ob[2];
__vtx2_x = tri[2].ob[0];
__vtx2_y = tri[2].ob[1];
__vtx2_z = tri[2].ob[2];
__dx1 = __vtx1_x - __vtx0_x;
__dx2 = __vtx2_x - __vtx1_x;
__dy1 = __vtx1_y - __vtx0_y;
__dy2 = __vtx2_y - __vtx1_y;
__dz1 = __vtx1_z - __vtx0_z;
__dz2 = __vtx2_z - __vtx1_z;
temp.x = (__dy1 * __dz2) - (__dz1 * __dy2);
temp.y = (__dz1 * __dx2) - (__dx1 * __dz2);
temp.z = (__dx1 * __dy2) - (__dy1 * __dx2);
temp_fv0 = VEC3F_MAG(&temp);
if (temp_fv0 != 0.0f) {
temp.x = temp.x * 127.0f / temp_fv0;
temp.y = temp.y * 127.0f / temp_fv0;
temp.z = temp.z * 127.0f / temp_fv0;
for (i = 0; i < 3; i++) {
tri->n[0] = temp.x;
tri->n[1] = temp.y;
tri->n[2] = temp.z;
tri++;
}
}
}
// calculate the normal vectors of the two ordered triangles in a quad
void func_col1_80097C88(Vec3f* norms, Vtx_tn* quad) {
f32 temp_fv0;
__vtx0_x = quad[3].ob[0];
__vtx0_y = quad[3].ob[1];
__vtx0_z = quad[3].ob[2];
__vtx1_x = quad->ob[0];
__vtx1_y = quad->ob[1];
__vtx1_z = quad->ob[2];
quad++;
__vtx2_x = quad->ob[0];
__vtx2_y = quad->ob[1];
__vtx2_z = quad->ob[2];
__dx1 = __vtx1_x - __vtx0_x;
__dx2 = __vtx2_x - __vtx1_x;
__dy1 = __vtx1_y - __vtx0_y;
__dy2 = __vtx2_y - __vtx1_y;
__dz1 = __vtx1_z - __vtx0_z;
__dz2 = __vtx2_z - __vtx1_z;
norms->x = (__dy1 * __dz2) - (__dz1 * __dy2);
norms->y = (__dz1 * __dx2) - (__dx1 * __dz2);
norms->z = (__dx1 * __dy2) - (__dy1 * __dx2);
temp_fv0 = VEC3F_MAG(norms);
if (temp_fv0 != 0.0f) {
norms->x = (norms->x / temp_fv0) * 127.0f;
norms->y = (norms->y / temp_fv0) * 127.0f;
norms->z = (norms->z / temp_fv0) * 127.0f;
}
norms++;
quad++;
__vtx1_x = __vtx2_x;
__vtx1_y = __vtx2_y;
__vtx1_z = __vtx2_z;
__vtx2_x = quad->ob[0];
__vtx2_y = quad->ob[1];
__vtx2_z = quad->ob[2];
__dx1 = __vtx1_x - __vtx0_x;
__dx2 = __vtx2_x - __vtx1_x;
__dy1 = __vtx1_y - __vtx0_y;
__dy2 = __vtx2_y - __vtx1_y;
__dz1 = __vtx1_z - __vtx0_z;
__dz2 = __vtx2_z - __vtx1_z;
norms->x = (__dy1 * __dz2) - (__dz1 * __dy2);
norms->y = (__dz1 * __dx2) - (__dx1 * __dz2);
norms->z = (__dx1 * __dy2) - (__dy1 * __dx2);
temp_fv0 = VEC3F_MAG(norms);
if (temp_fv0 != 0.0f) {
norms->x = (norms->x / temp_fv0) * 127.0f;
norms->y = (norms->y / temp_fv0) * 127.0f;
norms->z = (norms->z / temp_fv0) * 127.0f;
}
}
// check if the projection of pos onto either ordered triangle of quad lies within that triangle
// If it does and lies on the positive side, return which triangle it's within and that triangle's normal
s32 func_col1_8009808C(Vec3f* pos, Vtx_tn* quad, Vec3f* normOut) {
f32 temp_fv0;
s32 var_v1 = 0;
f32 test1;
f32 test2;
__vtx0_x = quad[0].ob[0];
__vtx0_y = quad[0].ob[1];
__vtx0_z = quad[0].ob[2];
__vtx1_x = quad[1].ob[0];
__vtx1_y = quad[1].ob[1];
__vtx1_z = quad[1].ob[2];
__vtx2_x = quad[2].ob[0];
__vtx2_y = quad[2].ob[1];
__vtx2_z = quad[2].ob[2];
__vtx3_x = quad[3].ob[0];
__vtx3_y = quad[3].ob[1];
__vtx3_z = quad[3].ob[2];
__pos_x = pos->x;
__pos_z = pos->z;
test1 = TRINORM_Y(__vtx0, __vtx1, __pos);
if (test1 >= 0.0f) {
test1 = TRINORM_Y(__vtx1, __vtx2, __pos);
if (test1 >= 0.0f) {
test1 = TRINORM_Y(__vtx2, __vtx0, __pos);
if (test1 >= 0.0f) {
normOut->x = TRINORM_X(__vtx0, __vtx1, __vtx2);
normOut->y = TRINORM_Y(__vtx0, __vtx1, __vtx2);
normOut->z = TRINORM_Z(__vtx0, __vtx1, __vtx2);
if ((normOut->x != 0.0f) || (normOut->y != 0.0f) || (normOut->z != 0.0f)) {
var_v1 = 1;
}
}
}
}
if (var_v1 == 0) {
test1 = TRINORM_Y(__vtx0, __vtx2, __pos);
if ((test1 >= 0.0f)) {
test1 = TRINORM_Y(__vtx2, __vtx3, __pos);
if (test1 >= 0.0f) {
test1 = TRINORM_Y(__vtx3, __vtx0, __pos);
if (test1 >= 0.0f) {
normOut->x = TRINORM_X(__vtx0, __vtx2, __vtx3);
normOut->y = TRINORM_Y(__vtx0, __vtx2, __vtx3);
normOut->z = TRINORM_Z(__vtx0, __vtx2, __vtx3);
if ((normOut->x != 0.0f) || (normOut->y != 0.0f) || (normOut->z != 0.0f)) {
var_v1 = 2;
}
}
}
}
}
if (var_v1 != 0) {
temp_fv0 = VEC3F_MAG(normOut);
if (temp_fv0 == 0) {
return 0;
}
normOut->x = (normOut->x / temp_fv0) * 127.0f;
normOut->y = (normOut->y / temp_fv0) * 127.0f;
normOut->z = (normOut->z / temp_fv0) * 127.0f;
}
return var_v1;
}
// check if vec lies within tri when projected to the xz-plane
bool func_col1_800985CC(Vec3f* vec, Vtx_tn* tri) {
f32 sp24;
f32 sp20;
__pos_x = __vtx0_x = tri->ob[0];
__pos_z = __vtx0_z = tri->ob[2];
tri++;
__vtx1_x = tri->ob[0];
__vtx1_z = tri->ob[2];
__vtx2_x = vec->x;
__vtx2_z = vec->z;
tri++;
sp24 = TRINORM_Y(__vtx0, __vtx1, __vtx2);
__vtx0_x = tri->ob[0];
__vtx0_z = tri->ob[2];
sp20 = TRINORM_Y(__vtx1, __vtx0, __vtx2);
if (SIGN_OF(sp24) != SIGN_OF(sp20)) {
return false;
}
sp24 = TRINORM_Y(__vtx0, __pos, __vtx2);
if (SIGN_OF(sp24) != SIGN_OF(sp20)) {
return false;
}
return true;
}
// PlaneF from normal and point
void func_col1_80098860(PlaneF* plane, Vec3f* point, Vec3f* normal) {
plane->normal.x = normal->x;
plane->normal.y = normal->y;
plane->normal.z = normal->z;
plane->dist = -normal->x * point->x - normal->y * point->y - normal->z * point->z;
}
// y dist to closest point on plane
s32 func_col1_800988B4(Vec3f* vec, PlaneF* plane) {
return (-plane->normal.x * vec->x - plane->normal.z * vec->z - plane->dist) / plane->normal.y;
}
// z dist to closest point on plane
s32 func_col1_800988F8(Vec3f* vec, PlaneF* plane) {
return (-plane->normal.x * vec->x - plane->normal.y * vec->y - plane->dist) / plane->normal.z;
}
// x dist to closest point on plane
s32 func_col1_8009893C(Vec3f* vec, PlaneF* plane) {
return (-plane->normal.y * vec->y - plane->normal.z * vec->z - plane->dist) / plane->normal.x;
}
#define INTSIGN_OF(x) ((((x) >= 1.0f) || ((x) <= -1.0f)) ? (f32) SIGN_OF(x) : 0.0f)
// checks if the projection of pos onto the plane of tri lies within tri and it is on the same side as the normal.
bool func_col1_80098980(Vec3f* pos, Vec3s** tri, Vec3f* normal) {
s32 normSignY;
s32 normSignZ;
s32 signCross;
s32 normSignX;
f32 cross;
s32 var_v1;
Vec3s* pad;
f32 t0x;
f32 t0y;
f32 t0z;
f32 t1x;
f32 t1y;
f32 t1z;
f32 t2x;
f32 t2y;
f32 t2z;
f32 xPos;
f32 yPos;
f32 zPos;
f32 d01x;
f32 d12x;
f32 d20x;
f32 d01y;
f32 d12y;
f32 d20y;
f32 d01z;
f32 d12z;
f32 d20z;
var_v1 = false;
pad = *tri++;
if (1) { // some sort of macro?
t0x = pad->x;
t0y = pad->y;
t0z = pad->z;
pad = *tri++;
t1x = pad->x;
t1y = pad->y;
t1z = pad->z;
pad = *tri++;
t2x = pad->x;
t2y = pad->y;
t2z = pad->z;
xPos = pos->x;
yPos = pos->y;
zPos = pos->z;
d01x = t1x - t0x;
d12x = t2x - t1x;
d20x = t0x - t2x;
d01y = t1y - t0y;
d12y = t2y - t1y;
d20y = t0y - t2y;
d01z = t1z - t0z;
d12z = t2z - t1z;
d20z = t0z - t2z;
normSignX = SIGN_OF(normal->x);
normSignY = SIGN_OF(normal->y);
normSignZ = SIGN_OF(normal->z);
}
cross = ((zPos - t1z) * d01y) - (d01z * (yPos - t1y));
signCross = INTSIGN_OF(cross);
if ((normSignX == 0) || (signCross == normSignX) || (signCross == 0)) {
cross = ((zPos - t2z) * d12y) - (d12z * (yPos - t2y));
signCross = INTSIGN_OF(cross);
if ((normSignX == 0) || (signCross == normSignX) || (signCross == 0)) {
cross = ((zPos - t0z) * d20y) - (d20z * (yPos - t0y));
signCross = INTSIGN_OF(cross);
if ((normSignX == 0) || (signCross == normSignX) || (signCross == 0)) {
cross = ((xPos - t1x) * d01z) - (d01x * (zPos - t1z));
signCross = INTSIGN_OF(cross);
if ((normSignY == 0) || (signCross == normSignY) || (signCross == 0)) {
cross = ((xPos - t2x) * d12z) - (d12x * (zPos - t2z));
signCross = INTSIGN_OF(cross);
if ((normSignY == 0) || (signCross == normSignY) || (signCross == 0)) {
cross = ((xPos - t0x) * d20z) - (d20x * (zPos - t0z));
signCross = INTSIGN_OF(cross);
if ((normSignY == 0) || (signCross == normSignY) || (signCross == 0)) {
cross = ((yPos - t1y) * d01x) - (d01y * (xPos - t1x));
signCross = INTSIGN_OF(cross);
if ((normSignZ == 0) || (signCross == normSignZ) || (signCross == 0)) {
cross = ((yPos - t2y) * d12x) - (d12y * (xPos - t2x));
signCross = INTSIGN_OF(cross);
if ((normSignZ == 0) || (signCross == normSignZ) || (signCross == 0)) {
cross = ((yPos - t0y) * d20x) - (d20y * (xPos - t0x));
signCross = INTSIGN_OF(cross);
if ((normSignZ == 0) || (signCross == 0) || (signCross == normSignZ)) {
var_v1 = true;
}
}
}
}
}
}
}
}
}
return var_v1;
}
bool func_80099254(Vec3f* objPos, Vec3f* colliderPos, Vec3f* objVel, CollisionHeader* colHeader, Vec3f* hitPosOut,
f32* hitAnglesOut) {
Vec3s* polyVtxPos[3];
Vec3f objRel;
s32 pad11C;
s32 pad118;
PlaneF polyPlane;
f32 tempf;
s32 didHit = false;
s32 swapBuff;
CollisionPoly* colPoly;
Vec3s* mesh;
s32 polyCount;
f32 speed;
s32 i;
Vec3f hitPosRel;
s32 padD8;
s32 polyMinX;
s32 polyMaxX;
s32 polyMinY;
s32 polyMaxY;
s32 polyMinZ;
s32 polyMaxZ;
s32 objMinX;
s32 objMaxX;
s32 objMinY;
s32 objMaxY;
s32 objMinZ;
s32 objMaxZ;
Vec3f min;
Vec3f max;
hitPosOut->x = hitPosOut->y = hitPosOut->z = hitAnglesOut[0] = hitAnglesOut[1] = 0.0f;
objRel.x = objPos->x - colliderPos->x;
objRel.y = objPos->y - colliderPos->y;
objRel.z = objPos->z - colliderPos->z;
min.x = colHeader->min.x;
min.y = colHeader->min.y;
min.z = colHeader->min.z;
max.x = colHeader->max.x;
max.y = colHeader->max.y;
max.z = colHeader->max.z;
// check if object is outside the collision's bounding box
if ((objRel.x < min.x) || (objRel.y < min.y) || (objRel.z < min.z) || (max.x < objRel.x) || (max.y < objRel.y) ||
((max.z < objRel.z))) {
return false;
}
if ((objVel->x == 0.0f) && (objVel->y == 0.0f) && (objVel->z == 0.0f)) {
objVel->y = -5.0f;
}
// find the bounding box of the object's movement from the last frame to this one.
objMinX = objRel.x;
objMinY = objRel.y;
objMinZ = objRel.z;
objMaxX = objRel.x - objVel->x;
objMaxY = objRel.y - objVel->y;
objMaxZ = objRel.z - objVel->z;
if (objMaxX < objMinX) {
swapBuff = objMaxX;
objMaxX = objMinX;
objMinX = swapBuff;
}
if (objMaxY < objMinY) {
swapBuff = objMaxY;
objMaxY = objMinY;
objMinY = swapBuff;
}
if (objMaxZ < objMinZ) {
swapBuff = objMaxZ;
objMaxZ = objMinZ;
objMinZ = swapBuff;
}
colPoly = SEGMENTED_TO_VIRTUAL(colHeader->polys);
mesh = SEGMENTED_TO_VIRTUAL(colHeader->mesh);
polyCount = colHeader->polyCount;
speed = VEC3F_MAG(objVel);
for (i = 0; i < polyCount; i++, colPoly++) {
polyVtxPos[0] = &mesh[colPoly->tri.vtx[0]];
polyVtxPos[1] = &mesh[colPoly->tri.vtx[1]];
polyVtxPos[2] = &mesh[colPoly->tri.vtx[2]];
Math_MinMax(&polyMinX, &polyMaxX, polyVtxPos[0]->x, polyVtxPos[1]->x, polyVtxPos[2]->x);
Math_MinMax(&polyMinY, &polyMaxY, polyVtxPos[0]->y, polyVtxPos[1]->y, polyVtxPos[2]->y);
Math_MinMax(&polyMinZ, &polyMaxZ, polyVtxPos[0]->z, polyVtxPos[1]->z, polyVtxPos[2]->z);
// check if bounding boxes of the object's movement and the collision polygon overlap
if ((objMinX < polyMaxX) && (objMaxX > polyMinX) && (objMinY < polyMaxY) && (objMaxY > polyMinY) &&
(objMinZ < polyMaxZ) && (objMaxZ > polyMinZ)) {
polyPlane.normal.x = colPoly->plane.normal.x;
polyPlane.normal.y = colPoly->plane.normal.y;
polyPlane.normal.z = colPoly->plane.normal.z;
polyPlane.dist = colPoly->plane.dist;
// check if object is on the "back" side of the polygon
if ((DOT_XYZ(&polyPlane.normal, &objRel) + polyPlane.dist) <= 0.0f) {
// calculate the normal component of velocity
tempf = DOT_XYZ(&polyPlane.normal, objVel);
// check if the angle between the normal and velocity is > 90. That is, the object was moving toward the
// front of the polygon
if (Math_FAcosF(tempf / (VEC3F_MAG(&polyPlane.normal) * speed)) > DEG_TO_RAD(90.0f)) {
// Calculate the time since the plane was crossed. Reusing the temp is required to match
tempf = (DOT_XYZ(&polyPlane.normal, &objRel) + polyPlane.dist) / tempf;
// find the point where the object crossed the plane of the polygon
hitPosRel.x = objRel.x - (objVel->x * tempf);
hitPosRel.y = objRel.y - (objVel->y * tempf);
hitPosRel.z = objRel.z - (objVel->z * tempf);
// check if that point is within the polygon
if (func_col1_80098980(&hitPosRel, polyVtxPos, &polyPlane.normal) == true) {
hitPosOut->x = colliderPos->x + hitPosRel.x;
hitPosOut->y = colliderPos->y + hitPosRel.y;
hitPosOut->z = colliderPos->z + hitPosRel.z;
if (polyPlane.normal.x != 0.0) {
polyPlane.normal.x = -polyPlane.dist / polyPlane.normal.x;
}
if (polyPlane.normal.y != 0.0f) {
polyPlane.normal.y = -polyPlane.dist / polyPlane.normal.y;
}
if (polyPlane.normal.z != 0.0f) {
polyPlane.normal.z = -polyPlane.dist / polyPlane.normal.z;
}
hitAnglesOut[0] = Math_Atan2F_XY(polyPlane.normal.y, polyPlane.normal.z);
if (polyPlane.normal.z != 0.0f) {
hitAnglesOut[1] = -Math_Atan2F_XY(
__sinf(Math_Atan2F_XY(polyPlane.normal.y, polyPlane.normal.z)) * polyPlane.normal.z,
polyPlane.normal.x);
} else if (hitAnglesOut[0] >= M_PI) {
hitAnglesOut[1] = Math_Atan2F_XY(polyPlane.normal.y, polyPlane.normal.x);
} else {
hitAnglesOut[1] = -Math_Atan2F_XY(polyPlane.normal.y, polyPlane.normal.x);
}
didHit = true;
break;
}
}
}
}
}
return didHit;
}
bool func_col1_800998FC(Vec3f* objPos, Vec3f* colliderPos, Vec3f* objVel, s32 colId, Vec3f* hitPosOut,
f32* hitAnglesOut) {
return func_80099254(objPos, colliderPos, objVel, SEGMENTED_TO_VIRTUAL(&D_800D2B38[colId]), hitPosOut,
hitAnglesOut);
}
+129
View File
@@ -0,0 +1,129 @@
#include "global.h"
#include "fox_A4290_colheaders.c"
bool func_col2_800A36FC(Vec3f* objPos, Vec3f* colliderPos, CollisionHeader2* colHeader, Vec3f* hitDataOut);
bool func_col2_800A3A74(Vec3f* point, Vec3f** tri, Vec3f* normOut);
bool func_col2_800A3690(Vec3f* objPos, Vec3f* colliderPos, s32 colId, Vec3f* hitDataOut) {
return func_col2_800A36FC(objPos, colliderPos, SEGMENTED_TO_VIRTUAL(&D_800D2CA0[colId]), hitDataOut);
}
bool func_col2_800A36FC(Vec3f* objPos, Vec3f* colliderPos, CollisionHeader2* colHeader, Vec3f* hitDataOut) {
Vec3f objRelPos;
PlaneF triPlane;
bool above;
s32 i;
s32 j;
Vec3f* tri[3];
Vec3f norm;
Vec3f vtx;
s32 sp38 = false;
s32 count;
Triangle* polys;
Vec3f* mesh;
objRelPos.x = objPos->x - colliderPos->x;
objRelPos.y = objPos->y - colliderPos->y;
objRelPos.z = objPos->z - colliderPos->z;
if ((objRelPos.x < colHeader->min.x) || (objRelPos.y < colHeader->min.y) || (objRelPos.z < colHeader->min.z) ||
(colHeader->max.x < objRelPos.x) || (colHeader->max.y < objRelPos.y) || (colHeader->max.z < objRelPos.z)) {
return false;
}
above = false;
count = colHeader->polyCount;
polys = SEGMENTED_TO_VIRTUAL(colHeader->polys);
mesh = SEGMENTED_TO_VIRTUAL(colHeader->mesh);
for (i = 0; i < count; i++, polys++) {
for (j = 0; j < 3; j++) {
tri[j] = &mesh[polys->vtx[j]];
}
above = func_col2_800A3A74(&objRelPos, tri, &norm);
if (above) {
break;
}
}
if (above) {
vtx.x = tri[0]->x;
vtx.y = tri[0]->y;
vtx.z = tri[0]->z;
func_col1_80098860(&triPlane, &vtx, &norm);
hitDataOut->y = func_col1_800988B4(&objRelPos, &triPlane);
if (triPlane.normal.x != 0.0f) {
norm.x = -triPlane.dist / triPlane.normal.x;
} else {
norm.x = 0.0f;
}
if (triPlane.normal.y != 0.0f) {
norm.y = -triPlane.dist / triPlane.normal.y;
} else {
norm.y = 0.0f;
}
if (triPlane.normal.z != 0.0f) {
norm.z = -triPlane.dist / triPlane.normal.z;
} else {
norm.z = 0.0f;
}
hitDataOut->x = Math_Atan2F_XY(norm.y, norm.z);
if (norm.z != 0.0f) {
hitDataOut->z = -Math_Atan2F_XY(__sinf(Math_Atan2F_XY(norm.y, norm.z)) * norm.z, norm.x);
} else if (hitDataOut->x >= M_PI) {
hitDataOut->z = Math_Atan2F_XY(norm.y, norm.x);
} else {
hitDataOut->z = -Math_Atan2F_XY(norm.y, norm.x);
}
if ((objPos->y - hitDataOut->y <= 0.0f) || (gCurrentLevel == LEVEL_MACBETH)) {
sp38 = true;
}
}
return sp38;
}
// Checks if point is above the triangle tri. If so, puts the triangle normal in normOut
bool func_col2_800A3A74(Vec3f* point, Vec3f** tri, Vec3f* normOut) {
s32 pad;
f32 temp1;
bool ret = false;
f32 temp_fv0;
Vec3f vtx1;
Vec3f vtx2;
Vec3f vtx3;
f32 ptx;
f32 ptz;
vtx1.x = (*tri)->x;
vtx1.y = (*tri)->y;
vtx1.z = (*tri)->z;
tri++;
vtx2.x = (*tri)->x;
vtx2.y = (*tri)->y;
vtx2.z = (*tri)->z;
tri++;
vtx3.x = (*tri)->x;
vtx3.y = (*tri)->y;
vtx3.z = (*tri)->z;
tri++;
ptx = point->x;
ptz = point->z;
temp1 = ((vtx2.z - vtx1.z) * (ptx - vtx2.x)) - ((vtx2.x - vtx1.x) * (ptz - vtx2.z));
if (temp1 >= 0.0f) {
if (((vtx3.x - vtx2.x) * (ptz - vtx3.z)) <= ((vtx3.z - vtx2.z) * (ptx - vtx3.x))) {
if (((vtx1.x - vtx3.x) * (ptz - vtx1.z)) <= ((vtx1.z - vtx3.z) * (ptx - vtx1.x))) {
ret = true;
normOut->x = ((vtx2.y - vtx1.y) * (vtx3.z - vtx2.z)) - ((vtx2.z - vtx1.z) * (vtx3.y - vtx2.y));
normOut->y = ((vtx2.z - vtx1.z) * (vtx3.x - vtx2.x)) - ((vtx2.x - vtx1.x) * (vtx3.z - vtx2.z));
normOut->z = ((vtx2.x - vtx1.x) * (vtx3.y - vtx2.y)) - ((vtx2.y - vtx1.y) * (vtx3.x - vtx2.x));
if ((normOut->x != 0.0f) || (normOut->y != 0.0f) || (normOut->z != 0.0f)) {
temp_fv0 = VEC3F_MAG(normOut);
if (temp_fv0 != 0) {
normOut->x = (normOut->x / temp_fv0) * 127.0f;
normOut->y = (normOut->y / temp_fv0) * 127.0f;
normOut->z = (normOut->z / temp_fv0) * 127.0f;
}
}
}
}
}
return ret;
}
+245
View File
@@ -0,0 +1,245 @@
#include "structs.h"
#include "macros.h"
#include "variables.h"
#include "assets/ast_aquas.h"
#include "assets/ast_bolse.h"
#include "assets/ast_meteo.h"
#include "assets/ast_corneria.h"
#include "assets/ast_macbeth.h"
#include "assets/ast_venom_2.h"
#include "assets/ast_fortuna.h"
#include "assets/ast_sector_y.h"
#include "assets/ast_sector_z.h"
#include "assets/ast_versus.h"
#include "assets/ast_zoness.h"
static Vec3f D_800D2920[16] = {
{ 1075.0f, 0.0f, 0.0f }, { 746.0f, 0.0f, -746.0f }, { 202.0f, 361.0f, -202.0f }, { 0.0f, 0.0f, -1075.0f },
{ 291.0f, 558.0f, 0.0f }, { 0.0f, 354.0f, -291.0f }, { 202.0f, 594.0f, 202.0f }, { 772.0f, 0.0f, 622.0f },
{ 0.0f, 473.0f, 291.0f }, { 144.0f, 0.0f, 1075.0f }, { -202.0f, 461.0f, 202.0f }, { -515.0f, 0.0f, 746.0f },
{ -291.0f, 453.0f, 0.0f }, { -372.0f, 390.0f, -281.0f }, { -951.0f, 0.0f, 0.0f }, { -746.0f, 0.0f, -746.0f },
};
static Triangle D_800D29E0[22] = {
{ 0, 1, 2 }, { 2, 1, 3 }, { 4, 2, 5 }, { 3, 5, 2 }, { 2, 4, 0 }, { 4, 6, 7 },
{ 7, 0, 4 }, { 6, 4, 5 }, { 7, 6, 8 }, { 8, 9, 7 }, { 8, 10, 11 }, { 10, 8, 6 },
{ 11, 9, 8 }, { 12, 10, 6 }, { 6, 13, 12 }, { 14, 12, 13 }, { 10, 12, 14 }, { 14, 11, 10 },
{ 5, 13, 6 }, { 5, 3, 15 }, { 15, 13, 5 }, { 13, 15, 14 },
};
static Triangle D_800D2A64[13] = {
{ 0, 1, 2 }, { 2, 3, 4 }, { 2, 5, 0 }, { 4, 5, 2 }, { 4, 3, 6 }, { 4, 7, 5 }, { 8, 7, 4 },
{ 4, 6, 8 }, { 7, 8, 9 }, { 0, 7, 9 }, { 5, 7, 0 }, { 9, 10, 0 }, { 10, 1, 0 },
};
static Vec3f D_800D2AB4[11] = {
{ -218.0f, 131.0f, 0.0f }, { -435.0f, 0.0f, 0.0f }, { -336.0f, 0.0f, 218.0f }, { 0.0f, 0.0f, 435.0f },
{ 0.0f, 160.0f, 218.0f }, { -168.0f, 131.0f, 109.0f }, { 336.0f, 0.0f, 218.0f }, { 0.0f, 174.0f, 0.0f },
{ 435.0f, 0.0f, -204.0f }, { 0.0f, 0.0f, -435.0f }, { -318.0f, 0.0f, -218.0f },
};
CollisionHeader D_800D2B38[10] = {
{
{ -1128.0f, -1835.0f, -1202.0f },
{ 997.0f, 139.0f, 1360.0f },
79,
D_ME_602FA9C,
D_ME_60300C8,
},
{
{ -3006.0f, -2274.0f, -4530.0f },
{ 3015.0f, 3348.0f, 5246.0f },
236,
D_ME_60305DC,
D_ME_603184C,
},
{
{ -152.0f, -200.0f, -152.0f },
{ 165.0f, 204.0f, 181.0f },
42,
D_ME_6030208,
D_ME_6030550,
},
{
{ -1704.0f, -1006.0f, -4751.0f },
{ 1704.0f, 1030.0f, 4842.0f },
174,
D_SY_6033070,
D_SY_6033E08,
},
{
{ -1308.0f, 0.0f, -1460.0f },
{ 1310.0f, 666.0f, 807.0f },
93,
D_FO_600F60C,
D_FO_600FD50,
},
{
{ -951.0f, 0.0f, -1075.0f },
{ 1075.0f, 1014.0f, 1075.0f },
22,
D_FO_600F3F4,
D_FO_600F5AC,
},
{
{ -951.0f, 0.0f, -1075.0f },
{ 1075.0f, 384.0f, 1075.0f },
22,
D_FO_600F1DC,
D_FO_600F394,
},
{
{ -1554.0f, -2.0f, -1401.0f },
{ 1554.0f, 590.0f, 1401.0f },
262,
D_BO_6010294,
D_BO_601170C,
},
{
{ -1386.0f, -696.0f, -2274.0f },
{ 1386.0f, 1033.0f, 1833.0f },
316,
D_SZ_6007558,
D_SZ_6008E08,
},
{
{ -671.0f, 0.0f, -671.0f },
{ 671.0f, 648.0f, 671.0f },
250,
D_VE2_6014FEC,
D_VE2_6016374,
},
};
CollisionHeader2 D_800D2CA0[19] = {
{
{ -951.0f, 0.0f, -1075.0f },
{ 1075.0f, 594.0f, 1075.0f },
ARRAY_COUNT(D_800D29E0),
D_800D29E0,
D_800D2920,
},
{
{ -1220.0f, 0.0f, -1315.0f },
{ 1403.0f, 174.0f, 1308.0f },
13,
D_CO_603F338,
D_CO_603F388,
},
{
{ -1311.0f, 0.0f, -1120.0f },
{ 1266.0f, 1465.0f, 1266.0f },
36,
D_CO_603F40C,
D_CO_603F4E4,
},
{
{ -435.0f, -10.0f, -435.0f },
{ 435.0f, 174.0f, 435.0f },
ARRAY_COUNT(D_800D2A64),
D_800D2A64,
D_800D2AB4,
},
{
{ -498.0f, -10.0f, -498.0f },
{ 498.0f, 705.0f, 498.0f },
4,
D_versus_302EEE8,
D_versus_302EF00,
},
{
{ -1494.0f, -30.0f, -1494.0f },
{ 1494.0f, 2115.0f, 1494.0f },
4,
D_versus_302EF6C,
D_versus_302EF84,
},
{
{ -623.0f, -10.0f, -623.0f },
{ 623.0f, 200.0f, 623.0f },
4,
D_versus_302EFF0,
D_versus_302F008,
},
{
{ -488.0f, 0.0f, -568.0f },
{ 488.0f, 148.0f, 567.0f },
30,
D_ZO_602CACC,
D_ZO_602CB80,
},
{
{ -900.0f, -110.0f, -1900.0f },
{ 900.0f, 190.0f, 100.0f },
2,
D_MA_6030E74,
D_MA_6030E80,
},
{
{ -900.0f, -100.0f, -1000.0f },
{ 900.0f, 250.0f, 100.0f },
2,
D_MA_6030EB0,
D_MA_6030EBC,
},
{
{ -900.0f, -190.0f, -1900.0f },
{ 900.0f, 100.0f, 100.0f },
2,
D_MA_6030EEC,
D_MA_6030EF8,
},
{
{ -500.0f, -250.0f, -1010.0f },
{ 500.0f, 100.0f, 100.0f },
2,
D_MA_6030F28,
D_MA_6030F34,
},
{
{ -1200.0f, 0.0f, -1800.0f },
{ 0.0f, 900.0f, 1500.0f },
4,
D_MA_6030F64,
D_MA_6030F7C,
},
{
{ -400.0f, 0.0f, -900.0f },
{ 400.0f, 0.0f, 0.0f },
2,
D_MA_6030FC4,
D_MA_6030FD0,
},
{
{ -74.0f, 0.0f, -84.0f },
{ 74.0f, 125.0f, 84.0f },
30,
D_AQ_60320B8,
D_AQ_603216C,
},
{
{ -1200.0f, 0.0f, -1315.0f },
{ 1403.0f, 200.0f, 1308.0f },
8,
D_AQ_6031FB0,
D_AQ_6031FE0,
},
{
{ -600.0f, 0.0f, -657.0f },
{ 701.0f, 100.0f, 654.0f },
8,
D_AQ_6031FB0,
D_AQ_603204C,
},
{
{ -2965.0f, -16.0f, -2965.0f },
{ 2965.0f, 544.0f, 2965.0f },
14,
D_versus_302F044,
D_versus_302F098,
},
{
{ -814.0f, 0.0f, -691.0f },
{ 814.0f, 752.0f, 691.0f },
28,
D_AQ_6032388,
D_AQ_6032430,
},
};
+46
View File
@@ -0,0 +1,46 @@
#include "global.h"
void func_800A3CA0(void) {
Matrix_Push(&gGfxMatrix);
Matrix_LookAt(gGfxMatrix, gCsCamEyeX, gCsCamEyeY, gCsCamEyeZ, gCsCamAtX, gCsCamAtY, gCsCamAtZ, 0.0f, 1.0f, 0.0f, 1);
Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -200.0f, 1);
Matrix_RotateY(gGfxMatrix, gControllerPress[gPlayerNum].stick_x * M_DTOR, 1);
Matrix_RotateX(gGfxMatrix, gControllerPress[gPlayerNum].stick_y * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
RCP_SetupDL_23();
Matrix_Pop(&gGfxMatrix);
}
void func_800A3E00(void) {
switch (D_ctx_80177868) {
case 0:
if (D_Timer_8017783C == 0) {
D_ctx_80177868 = 1;
}
break;
case 1:
D_ctx_80177868 = 2;
gDrawMode = DRAWMODE_7;
gCsCamAtY = 0.0f;
gCsCamAtX = gCsCamAtY;
gCsCamEyeZ = gCsCamAtX;
gCsCamEyeY = gCsCamEyeZ;
gCsCamEyeX = gCsCamEyeY;
gCsCamAtZ = -10.0f;
break;
case 2:
if ((gControllerPress[0].button & START_BUTTON) || (gControllerPress[1].button & START_BUTTON)) {
func_8001D638(0);
D_ctx_80177868 = 3;
gDrawMode = DRAWMODE_0;
func_play_800A5844();
D_Timer_8017783C = 0;
}
break;
case 3:
if (D_Timer_8017783C == 0) {
D_ctx_80177854 = 2;
}
break;
}
}
File diff suppressed because it is too large Load Diff
+1145
View File
File diff suppressed because it is too large Load Diff
+117
View File
@@ -0,0 +1,117 @@
#include "global.h"
s32 gBossFrameCount;
s32 D_boss_800C9E90[28] = {
0x8012, 0x8013, 0x8015, 0x8017, 0x8017, 0x8019, 0x8018, 0x801B, 0x8016, 0x8018, 0x8012, 0x8020, 0x8014, 0x801E,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
const f32 D_boss_800D55D0[] = { 6000.0f, 18000.0f, -6000.0f, -18000.0f };
void func_boss_80042EC0(Boss* boss) {
s32 bonus;
f32 yOffset;
if (gBossFrameCount < 3840) {
bonus = 10;
} else if (gBossFrameCount < 5760) {
bonus = 5;
} else if (gBossFrameCount < 7680) {
bonus = 2;
} else if (gBossFrameCount < 9600) {
bonus = 1;
} else {
bonus = 0;
}
if (bonus != 0) {
yOffset = 0.0f;
if (boss->obj.id == OBJ_BOSS_292) {
yOffset = 300.0f;
} else if (boss->obj.id == OBJ_BOSS_306) {
yOffset = 200.0f;
}
BonusText_Display(boss->obj.pos.x, boss->obj.pos.y + yOffset, boss->obj.pos.z, bonus);
}
gHitCount += bonus + 1;
D_ctx_80177850 = 15;
}
void func_boss_80042FAC(Boss* boss) {
}
void func_boss_80042FB8(Boss* boss) {
}
void func_boss_80042FC4(Boss* boss) {
}
void func_boss_80042FD0(Boss* boss) {
}
void func_boss_80042FDC(Boss* boss) {
}
void func_boss_80042FE8(Boss* boss) {
}
void func_boss_80042FF4(Actor* actor, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8,
f32 arg9, f32 argA, s32 argB, s32 argC) {
Actor_Initialize(actor);
actor->obj.status = OBJ_INIT;
actor->obj.id = OBJ_ACTOR_189;
actor->state = argB;
actor->obj.pos.x = arg1;
actor->obj.pos.y = arg2;
actor->obj.pos.z = arg3;
actor->obj.rot.x = arg4;
actor->obj.rot.y = arg5;
actor->obj.rot.z = arg6;
actor->vel.x = arg7;
actor->vel.y = arg8;
actor->vel.z = arg9;
actor->scale = argA;
actor->timer_0BC = argC;
actor->timer_0BE = 20;
Object_SetInfo(&actor->info, actor->obj.id);
if (gLevelType == LEVELTYPE_PLANET) {
actor->gravity = 0.5f;
}
}
void func_boss_800430DC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8,
f32 arg9, s32 argA, s32 argB) {
s32 i;
for (i = 59; i >= 0; i--) {
if (gActors[i].obj.status == OBJ_FREE) {
func_boss_80042FF4(&gActors[i], arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, argA, argB);
return;
}
}
}
void func_boss_80043188(Boss* boss) {
boss->info.unk_10 = 30000.0f;
}
void func_boss_8004319C(Player* player, f32 arg1, f32 arg2, f32 arg3) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 80);
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 80);
gCsFrameCount = 0;
D_ctx_80178448 = arg3 + D_ctx_80177D20;
D_ctx_80178440 = arg1;
D_ctx_80178444 = arg2;
player->state_1C8 = PLAYERSTATE_1C8_7;
player->unk_1D0 = 10;
player->timer_1F8 = 50;
player->timer_1FC = 50;
player->unk_000 = 0.0f;
player->unk_004 = 1.0f;
if (player->pos.x < player->unk_0AC) {
player->unk_004 = -1.0f;
}
gPlayer[0].vel.x = 0.0f;
}
+368
View File
@@ -0,0 +1,368 @@
#include "prevent_context_reordering.h"
#include "sys.h"
#include "sf64level.h"
#include "sf64object.h"
#include "sf64player.h"
s32 gOverlaySetup;
s32 gOverlayStage;
s32 D_ctx_80177824; // some sort of flag
s32 D_ctx_8017782C; // some sort of flag. all range related?
GameState gGameState;
s32 D_Timer_8017783C; // next game state timer?
s32 D_ctx_80177844; // timer for vs item spawn
OptionState gOptionMenuStatus;
s32 D_ctx_80177854; // pause-related state
s32 D_ctx_80177868; // some sort of state. pause-related?
LevelMode gLevelMode;
DrawMode gDrawMode;
s32 gPlayerNum;
s32 gCamCount;
s32 gTeamShields[6];
s32 gSavedTeamShields[6];
UNK_TYPE D_ctx_801778F0[6];
s32 gTeamDamage[6];
u8 D_ctx_80177930; // next planet path
f32 gGroundLevel;
f32 D_ctx_80177950;
f32 D_ctx_80177968;
f32 D_ctx_80177970;
f32 gCsCamEyeX;
f32 gCsCamEyeY;
f32 gCsCamEyeZ;
f32 gCsCamAtX;
f32 gCsCamAtY;
f32 gCsCamAtZ;
Vec3f D_ctx_801779D8;
Vec3f D_ctx_801779E8;
bool gExpertMode;
s32 D_ctx_80177A10[10];
f32 D_ctx_80177A48[10];
s32 gCsFrameCount;
u8 D_ctx_80177A98;
u8 D_ctx_80177AB0;
u8 D_ctx_80177AC8;
s32 D_ctx_80177AE0;
s32 gMainController;
s32 D_ctx_80177B40;
s32 gCurrentPlanet; // D_ctx_80177B48 // Arrow pointer?
s32 D_ctx_80177B50[7];
s32 D_ctx_80177B70[7];
PlanetId D_ctx_80177B90[7];
s32 D_ctx_80177BB0[7];
s32 D_ctx_80177BD8[22]; // overruns D_ctx_80177C30?
s32 D_ctx_80177C38[6];
s32 D_ctx_80177C58[6];
u8 gSoundMode;
s32 gVolumeSettings[3];
u16 D_ctx_80177C90;
u8 gLevelType;
s32 D_ctx_80177CA0;
UNK_TYPE F_80177CA8;
f32 D_ctx_80177CB0;
UNK_TYPE F_80177CB8;
f32 D_ctx_80177CC0;
f32 D_ctx_80177CC8;
f32 D_ctx_80177CE8;
f32 D_ctx_80177D08;
f32 D_ctx_80177D20;
f32 D_ctx_80177D38;
f32 D_ctx_80177D50;
f32 D_ctx_80177D68;
UNK_TYPE F_80177D80;
UNK_TYPE F_80177DE8;
s32 gGameFrameCount;
s32 D_ctx_80177DC8;
s32 D_ctx_80177E70;
s32 D_ctx_80177E78;
s32 D_ctx_80177E80;
Vec3f D_ctx_80177E88;
Vec3f D_ctx_80177F10;
UNK_TYPE F_80178020;
s32 D_ctx_8017812C;
LevelId gCurrentLevel;
s32 D_ctx_8017827C;
s32 gBossActive;
s32 D_ctx_8017828C;
s32 D_ctx_80178294;
s32 gRadioState;
s32 D_ctx_801782A4;
s32 D_Timer_801782AC;
s32 D_Timer_801782B4;
u8 D_play_800D3180[30] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
s32 D_ctx_801782C0;
s32 D_ctx_801782C8;
s32 D_ctx_801782D0;
s32 D_ctx_801782D8;
UNK_TYPE F_801782E0;
s32 D_ctx_801782E8;
UNK_TYPE F_801782F0;
s32 D_ctx_801782F8;
s32 D_ctx_80178300;
u16* D_ctx_80178308;
ObjectInit* D_ctx_80178310;
UNK_TYPE F_80178318;
s32 gFogRed;
s32 gFogGreen;
s32 gFogBlue;
s32 gFogAlpha;
s32 D_ctx_80178340; // alpha something
s32 D_ctx_80178348; // red something
s32 D_ctx_80178350; // green something
s32 D_ctx_80178354; // blue something
s32 D_ctx_80178358; // alpha target
s32 D_ctx_8017835C; // alpha step
s32 D_ctx_80178360; // 2 lights second color
s32 D_ctx_80178364;
s32 D_ctx_80178368;
f32 D_ctx_8017836C; // 2 lights second color brightness
f32 D_ctx_80178370; // Vec3f?
f32 D_ctx_80178374;
f32 D_ctx_80178378;
s32 D_ctx_8017837C;
u32 D_ctx_80178380[4]; // player alphas
s32 D_ctx_80178390[4]; // player reds
s32 D_ctx_801783A0[4]; // player greens
s32 D_ctx_801783B0[4]; // player alphas
UNK_TYPE D_ctx_801783C0[4];
f32 D_ctx_801783D0; // something x translate
f32 D_ctx_801783D4; // something y translate
s32 gFogNear; // near
s32 gFogFar; // far
UNK_TYPE F_801783E0;
UNK_TYPE F_801783E4;
UNK_TYPE F_801783E8;
UNK_TYPE F_801783EC;
UNK_TYPE F_801783F0;
UNK_TYPE F_801783F4;
UNK_TYPE F_801783F8;
UNK_TYPE F_801783FC;
UNK_TYPE F_80178400;
UNK_TYPE F_80178404;
UNK_TYPE F_80178408;
UNK_TYPE F_8017840C;
s32 D_ctx_80178410;
f32 D_ctx_80178414;
f32 D_ctx_80178418;
UNK_TYPE F_8017841C;
f32 D_ctx_80178420;
f32 D_ctx_80178424;
f32 D_ctx_80178428;
f32 D_ctx_8017842C;
f32 D_ctx_80178430;
UNK_TYPE F_80178434;
UNK_TYPE F_80178438;
UNK_TYPE F_8017843C;
f32 D_ctx_80178440;
f32 D_ctx_80178444;
f32 D_ctx_80178448;
f32 D_ctx_80178450[3];
f32 D_ctx_80178460[3];
f32 D_ctx_80178470[3];
f32 D_ctx_8017847C;
s32 D_ctx_80178480;
s32 D_ctx_80178484;
bool D_ctx_80178488;
UNK_TYPE F_8017848C;
UNK_TYPE F_80178490;
s32 D_ctx_80178494;
f32 D_ctx_80178498;
f32 D_ctx_8017849C;
f32 D_ctx_801784A0;
s32 D_ctx_801784A4;
UNK_TYPE F_801784A8;
s32 D_ctx_801784AC;
UNK_TYPE F_801784B0;
UNK_TYPE F_801784B4;
f32 D_ctx_801784B8; // effective Vec3f
f32 D_ctx_801784BC;
f32 D_ctx_801784C0;
f32 D_ctx_801784C4; // effective Vec3f
f32 D_ctx_801784C8;
f32 D_ctx_801784CC;
f32 D_ctx_801784D0; // effective Vec3f
f32 D_ctx_801784D4;
f32 D_ctx_801784D8;
s32 gLight1x; // Vec3i light direction
s32 gLight1y;
s32 gLight1z;
f32 D_ctx_801784E8;
f32 D_ctx_801784EC; // effective Vec3f?
f32 D_ctx_801784F0;
f32 D_ctx_801784F4;
f32 D_ctx_801784F8; // effective Vec3f
f32 D_ctx_801784FC;
f32 D_ctx_80178500;
s32 gLight2x; // Vec3i light direction alternate
s32 gLight2y;
s32 gLight2z;
f32 D_ctx_80178510;
UNK_TYPE F_801784514;
UNK_TYPE F_801784518;
UNK_TYPE F_80178451C;
f32 D_ctx_80178520; // effective Vec3f
f32 D_ctx_80178524;
f32 D_ctx_80178528;
UNK_TYPE F_80178452C;
UNK_TYPE F_801784530;
UNK_TYPE F_801784534;
f32 D_ctx_80178538;
f32 D_ctx_8017853C;
s32 D_ctx_80178540;
s32 D_ctx_80178544;
s32 gLight1R; // Color32 light color 1
s32 gLight1G;
s32 gLight1B;
s32 gAmbientR; // Color32 ambient color
s32 gAmbientG;
s32 gAmbientB;
UNK_TYPE F_80178560;
s32 gLight2R; // Color32 light color 2
s32 gLight2G;
s32 gLight2B;
UNK_TYPE P_800D31A0 = 0;
s32 D_ctx_80178570; // Color32 light color 2 modifier?
s32 D_ctx_80178574;
s32 D_ctx_80178578;
s32 D_80161A70; // Color32? start of bss
s32 D_80161A74;
s32 D_80161A78;
s32 D_80161A7C;
s32 D_80161A80;
s32 D_80161A84;
s32 D_80161A88;
s32 D_80161A8C;
u8 gGoldRingCount[4];
u8 D_80161A94[4];
s32 gHitCount;
s32 gSavedHitCount;
s16 gLifeCount[4];
LaserStrength gLaserStrength[4];
s32 D_80161AB8;
UNK_TYPE F_80161AC0[4];
UNK_TYPE F_80161AD0[4];
UNK_TYPE F_80161AE0[4];
UNK_TYPE F_80161AF0[4];
UNK_TYPE P_800D31A4 = 0;
Object_80 gObjects80[50];
Object_4C gObjects4C[40];
Actor gActors[60];
Boss gBosses[4];
Effect gEffects[100];
Item gItems[20];
PlayerShot gPlayerShots[16];
TexturedLine gTexturedLines[100];
RadarMark gRadarMarks[65];
BonusText gBonusText[10];
s32 D_ctx_80176550[2];
f32 D_ctx_80176558[2][100];
f32 D_ctx_80176878[2][100];
f32 D_ctx_80176B98[2][100];
f32 D_ctx_80176EB8[2][100];
f32 D_ctx_801771D8[2][100];
f32 D_ctx_80177500[2][100];
UNK_TYPE P_800D31A8 = 0;
u16 D_ctx_80177828; // enemy shot speed?
u8 D_ctx_80177830; // show level complete status overlay
s32 D_ctx_80177838; // level clear related
s32 D_ctx_80177840; // timer for mission accomplished scrren
s32 gBossHealthBar;
s32 D_ctx_80177850; // bonus text related. set to 15 but never read
s32 D_ctx_80177858[4];
s32 D_ctx_80177870[4];
s32 gHandicap[4];
VsStage gVersusStage;
s32 D_ctx_801778A4;
s32 D_ctx_801778AC;
s32 D_ctx_801778C8;
bool gVersusMode;
u16 gBoostButton[4];
u16 gBrakeButton[4];
u16 gShootButton[4];
u16 gBombButton[4];
f32 D_ctx_80177958[4];
s32 D_ctx_8017796C;
OSContPad* gInputHold;
OSContPad* gInputPress;
u8* D_ctx_80177984;
s32 D_ctx_80177990[4];
f32 D_ctx_801779A8[4];
u8 D_ctx_801779BC;
s32 gChargeTimers[4];
f32 D_ctx_801779E4;
f32 D_ctx_801779F4;
s32 D_Timer_80177A00[4];
s32 D_Timer_80177A38[4];
s32 D_Timer_80177A70[4];
s32 D_Timer_80177A88[4];
f32 D_ctx_80177AA0[4];
f32 D_ctx_80177AB8[4];
s32 D_ctx_80177AD0[4];
s32 D_ctx_80177AE8[4];
s32 D_ctx_80177B00[4][4];
u8 D_Timer_80177B44;
u8 D_ctx_80177B4C;
u8 D_ctx_80177B6C;
u8 gGreatFoxIntact;
u8 D_ctx_80177BAC;
u16 D_Timer_80177BD0[4];
u16 D_ctx_80177C30[4];
s32 D_ctx_80177C50;
s32 D_ctx_80177C70;
s32 D_ctx_80177C78;
s32 D_ctx_80177C8C;
s32 D_ctx_80177C94;
s32 D_ctx_80177C9C;
s32 D_ctx_80177CA4;
s32 D_ctx_80177CAC;
s32 D_ctx_80177CB4;
s32 D_ctx_80177CBC;
s32 D_ctx_80177CC4;
s32 D_ctx_80177CD0[6];
s32 D_ctx_80177CF0[6];
s32 gRightWingHealth[4];
s32 gLeftWingHealth[4];
s32 D_ctx_80177D40[4];
s32 D_ctx_80177D58[4];
s32 D_ctx_80177D70[4];
s32 D_ctx_80177D88[4];
s32 gBombCount[4];
s32 D_ctx_80177DB8[4];
s32 D_ctx_80177DD0[4][10];
s32 D_ctx_80177E74;
s32 D_ctx_80177E7C;
s32 D_ctx_80177E84;
Vec3f D_ctx_80177E98[10];
f32 D_ctx_80177F20[65];
f32 D_ctx_80178028[65];
f32 D_ctx_80178130[65];
u8 D_ctx_80178238[65];
Player* gPlayer;
f32* D_ctx_80178288;
f32* D_ctx_80178290;
u32* D_ctx_80178298;
UNK_TYPE F_801782A0;
Object_58* gObjects58;
UNK_TYPE F_801782B0;
s32 D_ctx_801782B8;
s32 D_ctx_801782BC;
PosRot* D_ctx_801782C4;
f32* D_ctx_801782CC;
f32* D_ctx_801782D4;
f32* D_ctx_801782DC;
f32* D_ctx_801782E4;
f32* D_ctx_801782EC;
UNK_TYPE F_801782F4;
s32 D_ctx_801782FC;
UNK_TYPE F_80178304;
UNK_TYPE F_8017830C;
UNK_TYPE F_80178314;
UNK_TYPE F_8017831C;
UNK_TYPE F_80178324;
UNK_TYPE F_8017832C;
UNK_TYPE F_80178334;
UNK_TYPE F_8017833C;
UNK_TYPE F_80178344;
UNK_TYPE F_8017834C;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+24
View File
@@ -0,0 +1,24 @@
#include "global.h"
#include "fox_edata_info.c"
f32* D_edata_800CF964[] = { NULL };
void func_edata_800594F0(Object_80* obj80) {
RCP_SetupDL_57(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar);
Matrix_RotateY(gGfxMatrix, M_PI, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_VE1_6007D90);
RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar);
}
void func_edata_800595D0(Object_80* obj80) {
RCP_SetupDL_57(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar);
Matrix_RotateY(gGfxMatrix, M_PI, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_VE1_6007CF0);
RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar);
}
void func_edata_800596B0(Actor* actor) {
}
+496
View File
@@ -0,0 +1,496 @@
#include "global.h"
#include "assets/ast_versus.h"
#include "assets/ast_arwing.h"
#include "assets/ast_corneria.h"
#include "assets/ast_meteo.h"
#include "assets/ast_bolse.h"
#include "assets/ast_training.h"
#include "assets/ast_sector_x.h"
#include "assets/ast_sector_y.h"
#include "assets/ast_sector_z.h"
#include "assets/ast_aquas.h"
#include "assets/ast_macbeth.h"
#include "assets/ast_venom_1.h"
#include "assets/ast_venom_2.h"
#include "assets/ast_titania.h"
#include "assets/ast_katina.h"
#include "assets/ast_fortuna.h"
#include "assets/ast_7_ti_1.h"
#include "assets/ast_andross.h"
#include "assets/ast_ve1_boss.h"
#include "assets/ast_area_6.h"
#include "assets/ast_zoness.h"
f32 D_edata_800CBE70[] = {
1.0f, 0.0f, 50.0f, 0.0f, 25.0f, 0.0f, 25.0f,
};
f32 D_edata_800CBE8C[] = {
1.0f, 0.0f, 50.0f, 0.0f, 50.0f, 0.0f, 50.0f,
};
f32 D_edata_800CBEA8[] = {
1.0f, 0.0f, 75.0f, 0.0f, 75.0f, 0.0f, 75.0f,
};
f32 D_edata_800CBEC4[] = {
1.0f, 0.0f, 100.0f, 0.0f, 100.0f, 0.0f, 100.0f,
};
f32 D_edata_800CBEE0[] = {
1.0f, 0.0f, 150.0f, 0.0f, 150.0f, 0.0f, 150.0f,
};
f32 D_edata_800CBEFC[] = {
1.0f, 0.0f, 200.0f, 0.0f, 200.0f, 0.0f, 200.0f,
};
f32 D_edata_800CBF18[] = {
1.0f, -113.0f, 61.0f, 98.0f, 100.0f, 0.0f, 219.0f,
};
f32 D_edata_800CBF34[] = {
0.0f,
};
f32 D_edata_800CBF38[] = {
1.0f, -40.0f, 40.0f, 0.0f, 180.0f, 0.0f, 180.0f,
};
f32 D_edata_800CBF54[] = {
1.0f, 0.0f, 120.0f, 0.0f, 120.0f, 0.0f, 120.0f,
};
f32 D_edata_800CBF70[] = {
1.0f, -40.0f, 100.0f, 0.0f, 100.0f, 0.0f, 100.0f,
};
f32 D_edata_800CBF8C[] = {
1.0f, 0.0f, 100.0f, 0.0f, 1200.0f, 0.0f, 1200.0f,
};
f32 D_edata_800CBFA8[] = {
1.0f, 0.0f, 120.0f, 0.0f, 120.0f, 0.0f, 120.0f, 0.0f,
};
f32 D_edata_800CBFC8[] = {
1.0f, 0.0f, 120.0f, 0.0f, 120.0f, 0.0f, 120.0f,
};
f32 D_edata_800CBFE4[] = {
1.0f, 0.0f, 40.0f, 0.0f, 40.0f, 0.0f, 40.0f,
};
f32 D_edata_800CC000[] = {
1.0f, 0.0f, 50.0f, 0.0f, 50.0f, 0.0f, 50.0f,
};
f32 D_edata_800CC01C[] = {
1.0f, 0.0f, 40.0f, 0.0f, 40.0f, 0.0f, 40.0f,
};
f32 D_edata_800CC038[] = {
1.0f, 0.0f, 40.0f, 0.0f, 40.0f, 0.0f, 40.0f,
};
f32 D_edata_800CC054[] = {
1.0f, 0.0f, 140.0f, 0.0f, 170.0f, 0.0f, 140.0f,
};
f32 D_edata_800CC070[] = {
4.0f, 0.0f, 140.0f, -675.0f, 140.0f, 0.0f, 810.0f, 0.0f, 140.0f, 675.0f, 140.0f, 0.0f, 810.0f,
0.0f, 140.0f, 0.0f, 810.0f, 675.0f, 140.0f, 0.0f, 140.0f, 0.0f, 810.0f, -675.0f, 140.0f,
};
f32 D_edata_800CC0D4[] = {
1.0f, 0.0f, 140.0f, 0.0f, 140.0f, 0.0f, 1800.0f,
};
f32 D_edata_800CC0F0[] = {
2.0f, 0.0f, 140.0f, 0.0f, 140.0f, 0.0f, 1800.0f, 1.0f, 141.0f, 1.0f, 1800.0f, 1.0f, 140.0f,
};
// clang-format off
ObjectInfo D_edata_800CC124[0x190] = {
/* OBJ_80_0, */ {(void*) D_CO_6015F00, 0, (ObjectFunc) NULL, D_CO_603E3E0, 800.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_1, */ {(void*) D_CO_602E9E0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_2, */ {(void*) D_CO_601BEC0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 3000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_3, */ {(void*) D_CO_602E7A0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 3000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_4, */ {(void*) D_CO_60244A0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 3000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_5, */ {(void*) D_CO_602E570, 0, (ObjectFunc) NULL, D_edata_800CBF34, 3000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_6, */ {(void*) D_CO_60132B0, 0, (ObjectFunc) NULL, D_CO_603DCA4, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_7, */ {(void*) D_CO_602E080, 0, (ObjectFunc) NULL, D_CO_603DD40, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_8, */ {(void*) D_CO_60164F0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_9, */ {(void*) D_CO_6014500, 0, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_10, */ {(void*) D_CO_602D5F0, 0, (ObjectFunc) NULL, D_CO_603DDF0, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_11, */ {(void*) D_CO_601A7D0, 0, (ObjectFunc) NULL, D_CO_603DE8C, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_12, */ {(void*) D_CO_6014B50, 0, (ObjectFunc) NULL, D_CO_603DEF4, 500.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_13, */ {(void*) D_CO_6016580, 0, (ObjectFunc) NULL, D_CO_603DF8C, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_14, */ {(void*) D_CO_601B560, 0, (ObjectFunc) func_enmy_80066EA8, D_CO_603DFDC, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_15, */ {(void*) D_CO_60361F0, 0, (ObjectFunc) func_enmy_80066EA8, D_CO_603E014, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_16, */ {(void*) D_CO_6018E80, 0, (ObjectFunc) func_enmy_80066EA8, D_CO_603E030, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_17, */ {(void*) D_CO_6035F10, 0, (ObjectFunc) func_enmy_80066EA8, D_CO_603E09C, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_18, */ {(void*) Corneria_8018753C, 1, (ObjectFunc) Corneria_80187530, D_CO_603E98C, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_19, */ {(void*) D_CO_60153B0, 0, (ObjectFunc) NULL, D_CO_603E118, 100.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_20, */ {(void*) D_CO_601F5A0, 0, (ObjectFunc) NULL, D_CO_603E14C, 500.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_21, */ {(void*) D_CO_60137B0, 0, (ObjectFunc) NULL, D_CO_603E1B4, 400.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_22, */ {(void*) D_CO_6006A80, 0, (ObjectFunc) NULL, D_CO_603E21C, 400.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_23, */ {(void*) D_CO_6016270, 0, (ObjectFunc) NULL, D_CO_603E4A0, 200.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_24, */ {(void*) D_CO_6010E00, 0, (ObjectFunc) NULL, D_CO_603E9EC, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_25, */ {(void*) D_CO_6014670, 0, (ObjectFunc) NULL, D_CO_603EA08, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_26, */ {(void*) D_CO_6010A50, 0, (ObjectFunc) NULL, D_CO_603EA74, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_27, */ {(void*) D_CO_60143E0, 0, (ObjectFunc) NULL, D_CO_603EAE0, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_28, */ {(void*) D_CO_6014A20, 0, (ObjectFunc) NULL, D_CO_603EB0C, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_29, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_60064FC, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_30, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_6006518, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_31, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_6006564, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_32, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_60065B0, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_33, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_60065FC, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_34, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_6006648, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_35, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_6006694, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_36, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_60066E0, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_37, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_600672C, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_38, */ {(void*) func_edisplay_80059B20, 1, (ObjectFunc) func_enmy_800652CC, D_TI_6006778, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_39, */ {(void*) func_edisplay_80059AEC, 1, (ObjectFunc) func_enmy2_8006D350, D_edata_800CBF34, 6000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_40, */ {(void*) func_edisplay_80059F68, 1, (ObjectFunc) func_enmy_80066D5C, D_CO_603E4A4, 1000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_41, */ {(void*) func_edisplay_80059FDC, 1, (ObjectFunc) func_enmy_80066EA8, D_CO_603E4DC, 300.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_42, */ {(void*) func_edisplay_80059BBC, 1, (ObjectFunc) func_enmy2_8006B95C, D_CO_603E514, 1000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_43, */ {(void*) D_ZO_6024AC0, 0, (ObjectFunc) NULL, D_ZO_602B9EC, 200.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_44, */ {(void*) D_ZO_600F560, 0, (ObjectFunc) NULL, D_ZO_602BA20, 1500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_45, */ {(void*) D_ZO_600EC90, 0, (ObjectFunc) NULL, D_ZO_602BAE4, 1500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_46, */ {(void*) D_ZO_600E820, 0, (ObjectFunc) NULL, D_ZO_602BBD8, 1500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_47, */ {(void*) D_ZO_601FCB0, 0, (ObjectFunc) NULL, D_ZO_602BC54, 500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_48, */ {(void*) func_edata_800594F0, 1, (ObjectFunc) NULL, D_VE1_601B4E0, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_49, */ {(void*) func_edata_800595D0, 1, (ObjectFunc) NULL, D_VE1_601B4FC, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_50, */ {(void*) D_VE1_6007410, 0, (ObjectFunc) NULL, D_VE1_601B518, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_51, */ {(void*) D_VE1_6006F50, 0, (ObjectFunc) NULL, D_VE1_601B584, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_52, */ {(void*) D_VE1_6005780, 0, (ObjectFunc) Venom1_80193540, D_VE1_601B5F4, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_53, */ {(void*) D_AQ_6003610, 0, (ObjectFunc) NULL, D_VE1_601B644, 2500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_54, */ {(void*) D_CO_6000E00, 0, (ObjectFunc) func_enmy2_8006AA98, D_CO_603E0EC, 1000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_55, */ {(void*) D_CO_6013B50, 0, (ObjectFunc) NULL, D_CO_603E88C, 1000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_56, */ {(void*) Corneria_8018F31C, 2, (ObjectFunc) Corneria_8018F044, D_CO_603E8A8, 1000.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_57, */ {(void*) Titania_8018F8B8, 1, (ObjectFunc) Titania_8018F4D8, D_TI_6006BF0, 800.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_58, */ {(void*) D_TI1_700BE00, 0, (ObjectFunc) NULL, D_TI_6006C44, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_59, */ {(void*) D_MA_6024010, 0, (ObjectFunc) NULL, D_MA_603626C, 300.0f, 0, 0, 5, 0, 0.0f, 0 },
/* OBJ_80_60, */ {(void*) D_MA_6027180, 0, (ObjectFunc) NULL, D_MA_6036288, 400.0f, 0, 0, 5, 0, 0.0f, 0 },
/* OBJ_80_61, */ {(void*) Macbeth_801A2A78, 1, (ObjectFunc) NULL, D_MA_60362A4, 200.0f, 0, 0, 5, 0, 0.0f, 0 },
/* OBJ_80_62, */ {(void*) D_MA_60270E0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 1500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_63, */ {(void*) D_MA_6013960, 0, (ObjectFunc) NULL, D_MA_6036894, 500.0f, 0, 0, 5, 0, 0.0f, 0 },
/* OBJ_80_64, */ {(void*) D_MA_600AF40, 0, (ObjectFunc) NULL, D_MA_60368E0, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_65, */ {(void*) Macbeth_801A6608, 1, (ObjectFunc) NULL, D_MA_6036724, 400.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_66, */ {(void*) D_MA_601F1D0, 0, (ObjectFunc) NULL, D_MA_60362D8, 2500.0f, 0, 0, 5, 0, 0.0f, 0 },
/* OBJ_80_67, */ {(void*) D_MA_60238F0, 0, (ObjectFunc) NULL, D_MA_6036328, 2000.0f, 0, 0, 5, 0, 0.0f, 0 },
/* OBJ_80_68, */ {(void*) D_MA_601B7C0, 0, (ObjectFunc) NULL, D_MA_60362F4, 2500.0f, 0, 0, 5, 0, 0.0f, 0 },
/* OBJ_80_69, */ {(void*) D_MA_6030500, 0, (ObjectFunc) NULL, D_MA_6036370, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_70, */ {(void*) D_MA_602DAE0, 0, (ObjectFunc) NULL, D_MA_603638C, 1900.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_71, */ {(void*) D_MA_6027900, 0, (ObjectFunc) NULL, D_MA_60363B8, 1900.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_72, */ {(void*) D_MA_602DB80, 0, (ObjectFunc) NULL, D_MA_60363E4, 1100.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_73, */ {(void*) D_MA_6030630, 0, (ObjectFunc) NULL, D_MA_6036410, 1100.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_74, */ {(void*) D_MA_602DC20, 0, (ObjectFunc) NULL, D_MA_603643C, 1000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_75, */ {(void*) D_MA_601B0D0, 0, (ObjectFunc) NULL, D_MA_6036760, 3000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_76, */ {(void*) D_MA_60075D0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 1000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_77, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_MA_6036344, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_78, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_79, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_80, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_81, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_82, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_83, */ {(void*) Macbeth_801A3240, 1, (ObjectFunc) Macbeth_801A2DD8, D_edata_800CBF34, 15000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_84, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_85, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_86, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_87, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_88, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_89, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_90, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_91, */ {(void*) Macbeth_801A2B24, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_92, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_93, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_94, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 15000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_95, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 15000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_96, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_97, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 15000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_98, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 15000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_99, */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_100 */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_101 */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_102 */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_103 */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_104 */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) Macbeth_801A0BD8, D_MA_6036594, 2500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_105 */ {(void*) Macbeth_801A23AC, 1, (ObjectFunc) NULL, D_MA_6036204, 1300.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_106 */ {(void*) D_SY_60097E0, 0, (ObjectFunc) NULL, D_SY_6034478, 4000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_107 */ {(void*) D_SY_601D730, 0, (ObjectFunc) NULL, D_SY_603450C, 4000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_108 */ {(void*) D_SY_60102C0, 0, (ObjectFunc) NULL, D_SY_6034588, 4000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_109 */ {(void*) D_SY_60036A0, 0, (ObjectFunc) SectorY_801A4E44, D_SY_6034664, 4000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_110 */ {(void*) D_SY_6005360, 0, (ObjectFunc) NULL, D_SY_6034770, 4000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_111 */ {(void*) func_enmy2_80074F90, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_112 */ {(void*) D_SY_600F6C0, 0, (ObjectFunc) SectorY_801A52B8, D_SY_60347F0, 4000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_113 */ {(void*) D_SY_601B610, 0, (ObjectFunc) NULL, D_edata_800CBF34, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_114 */ {(void*) D_SY_601C6A0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_115 */ {(void*) D_SY_60188D0, 0, (ObjectFunc) NULL, D_SY_603486C, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_116 */ {(void*) D_SY_60034D0, 0, (ObjectFunc) NULL, D_SY_60347D4, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_117 */ {(void*) D_AQ_60231C0, 0, (ObjectFunc) NULL, D_AQ_6030C60, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_118 */ {(void*) D_AQ_6011EE0, 0, (ObjectFunc) NULL, D_AQ_6030C7C, 2000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_119 */ {(void*) D_AQ_6015730, 0, (ObjectFunc) NULL, D_AQ_6030D74, 2000.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_80_120 */ {(void*) D_AQ_601DE60, 0, (ObjectFunc) NULL, D_AQ_6030DF8, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_121 */ {(void*) D_AQ_602B4C0, 0, (ObjectFunc) NULL, D_AQ_6030E14, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_122 */ {(void*) D_AQ_600EE10, 0, (ObjectFunc) NULL, D_AQ_6030E30_Hitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_123 */ {(void*) D_AQ_60120F0, 0, (ObjectFunc) NULL, D_AQ_6030E4C, 2000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_124 */ {(void*) D_AQ_600EEF0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 2000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_125 */ {(void*) D_AQ_600BF80, 0, (ObjectFunc) NULL, D_AQ_6030E68, 2000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_126 */ {(void*) Aquas_801BE1FC, 1, (ObjectFunc) NULL, D_edata_800CBF34, 2000.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_127 */ {(void*) D_VE1_9005C80, 0, (ObjectFunc) Venom1_801924A8, D_VE1_601B678, 1000.0f, 0, 0, 42, 0, 0.0f, 0 },
/* OBJ_80_128 */ {(void*) D_VE1_9003F50, 0, (ObjectFunc) NULL, D_VE1_601B6C4, 3200.0f, 0, 0, 42, 0, 0.0f, 0 },
/* OBJ_80_129 */ {(void*) D_VE1_900F060, 0, (ObjectFunc) NULL, D_VE1_601B710, 3200.0f, 0, 0, 42, 0, 0.0f, 0 },
/* OBJ_80_130 */ {(void*) D_VE1_900F1D0, 0, (ObjectFunc) NULL, D_VE1_601B75C, 3200.0f, 0, 0, 42, 0, 0.0f, 0 },
/* OBJ_80_131 */ {(void*) Andross_801935D4, 1, (ObjectFunc) Andross_8019356C, D_ANDROSS_C038BD8, 500.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_132 */ {(void*) Andross_8019350C, 1, (ObjectFunc) Andross_80193380, D_ANDROSS_C038A48, 500.0f, 0, 0, 41, 0, 0.0f, 0 },
/* OBJ_80_133 */ {(void*) D_TR_60030F0, 0, (ObjectFunc) NULL, D_TR_6009CC4, 1000.0f, 0, 0, 20, 0, 0.0f, 0 },
/* OBJ_80_134 */ {(void*) D_VE2_6003000, 0, (ObjectFunc) NULL, D_ANDROSS_C038BA4, 0.0f, 0, 0, 41, 1, 0.0f, 0 },
/* OBJ_80_135 */ {(void*) D_TI_6006890, 0, (ObjectFunc) NULL, D_ANDROSS_C038B40, 0.0f, 0, 0, 41, 1, 0.0f, 0 },
/* OBJ_80_136 */ {(void*) D_VE2_6002990, 0, (ObjectFunc) NULL, D_ANDROSS_C038B40, 0.0f, 0, 0, 41, 1, 0.0f, 0 },
/* OBJ_80_137 */ {(void*) D_VE2_6004170, 0, (ObjectFunc) NULL, D_edata_800CBF34, 0.0f, 0, 0, 0, 1, 0.0f, 0 },
/* OBJ_80_138 */ {(void*) D_versus_3017600, 0, (ObjectFunc) NULL, D_versus_302EE64, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_139 */ {(void*) D_versus_3017600, 0, (ObjectFunc) NULL, D_versus_302EE80, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_140 */ {(void*) D_versus_30173C0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_141 */ {(void*) D_versus_30174E0, 0, (ObjectFunc) NULL, D_edata_800CBF34, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_142 */ {(void*) D_versus_301B080, 0, (ObjectFunc) NULL, D_versus_302EE9C, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_143 */ {(void*) D_versus_3016B00, 0, (ObjectFunc) NULL, D_versus_302EE00, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_144 */ {(void*) D_versus_3013780, 0, (ObjectFunc) NULL, D_versus_302ED4C, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_145 */ {(void*) D_versus_3013580, 0, (ObjectFunc) NULL, D_versus_302ED98, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_146 */ {(void*) D_versus_3012ED0, 0, (ObjectFunc) NULL, D_versus_302EDB4, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_147 */ {(void*) NULL, 0, (ObjectFunc) NULL, D_edata_800CBF34, 0.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_80_148 */ {(void*) D_FO_60079B0, 0, (ObjectFunc) NULL, D_FO_600FF80, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_149 */ {(void*) D_FO_6007D80, 0, (ObjectFunc) NULL, D_FO_600FFA0, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_150 */ {(void*) D_FO_6006310, 0, (ObjectFunc) NULL, D_FO_600FFC0, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_151 */ {(void*) D_TI_60066E0, 0, (ObjectFunc) NULL, D_FO_600FEB8, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_152 */ {(void*) D_BO_600F4C0, 0, (ObjectFunc) NULL, D_BO_6011C10, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_153 */ {(void*) D_BO_600B8B0, 0, (ObjectFunc) NULL, D_BO_6011C48, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_154 */ {(void*) D_KA_600BAF0, 0, (ObjectFunc) NULL, D_KA_601115C, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_155 */ {(void*) NULL, 0, (ObjectFunc) NULL, D_edata_800CBF34, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_156 */ {(void*) SectorY_80197CB8, 1, (ObjectFunc) NULL, D_SY_6034368, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_157 */ {(void*) D_SZ_6001DA0, 0, (ObjectFunc) NULL, D_SZ_600924C, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_158 */ {(void*) D_SZ_6001360, 0, (ObjectFunc) NULL, D_SZ_60092E8, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_159 */ {(void*) D_VE2_6008370, 0, (ObjectFunc) NULL, D_VE2_601668C, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_80_160 */ {(void*) D_VE2_6010960, 0, (ObjectFunc) NULL, D_VE2_6016714, 0.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_161 */ {(void*) D_CO_602F7C0, 0, (ObjectFunc) func_enmy_80068FE0, D_CO_603E468, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_162 */ {(void*) D_CO_601C9B0, 0, (ObjectFunc) func_enmy_80068FE0, D_CO_603E484, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_163 */ {(void*) D_FO_600A420, 0, (ObjectFunc) func_enmy_80068FE0, D_FO_600FE9C, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_164 */ {(void*) func_edisplay_80059C40, 1, (ObjectFunc) NULL, D_edata_800CBF34, 1800.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_165 */ {(void*) D_CO_602DCA0, 0, (ObjectFunc) NULL, D_edata_800CBF34, -100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_166 */ {(void*) D_CO_601F500, 0, (ObjectFunc) NULL, D_edata_800CBF34, -100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_167 */ {(void*) func_edisplay_80059C34, 1, (ObjectFunc) func_enmy_80066E8C, D_edata_800CBF34, 500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_168 */ {(void*) func_edisplay_80059850, 1, (ObjectFunc) NULL, D_edata_800CBF34, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_4C_169 */ {(void*) D_TI_60023B0, 0, (ObjectFunc) Titania_8018F038, D_TI_60068BC, 100.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_4C_170 */ {(void*) NULL, 1, (ObjectFunc) Corneria_801875A4, D_edata_800CBF34, 0.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_4C_171 */ {(void*) NULL, 1, (ObjectFunc) Venom1_801922DC, D_edata_800CBF34, 0.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_4C_172 */ {(void*) NULL, 1, (ObjectFunc) Venom1_80192358, D_edata_800CBF34, 0.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_4C_173 */ {(void*) NULL, 1, (ObjectFunc) Venom1_801923C0, D_edata_800CBF34, 0.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_4C_174 */ {(void*) NULL, 1, (ObjectFunc) Venom1_8019243C, D_edata_800CBF34, 0.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_4C_175 */ {(void*) NULL, 1, (ObjectFunc) NULL, D_edata_800CBF34, 1000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ACTOR_176 */ {(void*) Corneria_8018BAAC, 2, (ObjectFunc) Corneria_8018AED0, D_CO_603E5D0, 500.0f, 0, 0, 39, 1, 200.0f, 1 },
/* OBJ_ACTOR_177 */ {(void*) Corneria_8018BBA4, 2, (ObjectFunc) Corneria_8018B15C, D_CO_603E5D0, 500.0f, 0, 0, 39, 1, 200.0f, 1 },
/* OBJ_ACTOR_178 */ {(void*) Corneria_8018BBF8, 2, (ObjectFunc) Corneria_8018B418, D_CO_603E5D0, 500.0f, 0, 0, 39, 1, 200.0f, 1 },
/* OBJ_ACTOR_179 */ {(void*) Corneria_8018BD7C, 2, (ObjectFunc) Corneria_8018B58C, D_CO_603E604, 500.0f, 0, 0, 39, 1, 0.0f, 1 },
/* OBJ_ACTOR_180 */ {(void*) func_edisplay_8005B6A4, 1, (ObjectFunc) func_enmy_80066A80, D_edata_800CBF34, 1000.0f, 0, 0, 39, 0, 0.0f, 1 },
/* OBJ_ACTOR_181 */ {(void*) D_ME_6018C00, 0, (ObjectFunc) Meteo_8018756C, D_ME_602F6EC, 200.0f, 0, 0, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_182 */ {(void*) func_edisplay_8005B71C, 1, (ObjectFunc) Meteo_80187650, D_ME_602F708, 100.0f, 0, 1, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_183 */ {(void*) Meteo_8018DA6C, 1, (ObjectFunc) Meteo_8018D9EC, D_edata_800CBF34, 100.0f, 0, 1, 39, 0, 0.0f, 1 },
/* OBJ_ACTOR_184 */ {(void*) Meteo_8018DAEC, 1, (ObjectFunc) Meteo_8018D9EC, D_edata_800CBF34, 100.0f, 0, 1, 39, 0, 0.0f, 1 },
/* OBJ_ACTOR_185 */ {(void*) Meteo_8018DB6C, 1, (ObjectFunc) Meteo_8018D9EC, D_edata_800CBF34, 100.0f, 0, 1, 39, 0, 0.0f, 1 },
/* OBJ_ACTOR_186 */ {(void*) func_edisplay_8005B7CC, 1, (ObjectFunc) Meteo_8018795C, D_ME_602F724, 200.0f, 0, 1, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_187 */ {(void*) D_ME_6018450, 0, (ObjectFunc) Meteo_801877C4, D_ME_602F740, 200.0f, 0, 1, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_188 */ {(void*) Aquas_801BEC74, 1, (ObjectFunc) Aquas_801BEC68, D_AQ_6030BE0, 200.0f, 0, 1, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_189 */ {(void*) func_edisplay_8005A094, 1, (ObjectFunc) func_enmy2_8006C008, D_edata_800CBF34, 0.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_ACTOR_190 */ {(void*) func_edisplay_8005B848, 1, (ObjectFunc) func_enmy_800656D4, D_edata_800CBFE4, 100.0f, 0, 1, 39, 0, 1.0f, 0 },
/* OBJ_ACTOR_191 */ {(void*) func_edisplay_8005B848, 1, (ObjectFunc) func_enmy_800656D4, D_edata_800CBFE4, 100.0f, 0, 1, 39, 0, 1.0f, 0 },
/* OBJ_ACTOR_192 */ {(void*) func_edisplay_8005B9A4, 1, (ObjectFunc) func_enmy_8006654C, D_CO_603E54C, 200.0f, 0, 1, 39, 0, 50.0f, 1 },
/* OBJ_ACTOR_193 */ {(void*) func_edisplay_8005BA30, 1, (ObjectFunc) func_enmy_800669A0, D_CO_603E598, 100.0f, 0, 1, 39, 0, 0.0f, 0 },
/* OBJ_ACTOR_194 */ {(void*) func_enmy2_8006B74C, 1, (ObjectFunc) func_enmy2_8006B094, D_edata_800CC000, 200.0f, 0, 1, 39, 0, 0.0f, 1 },
/* OBJ_ACTOR_195 */ {(void*) func_demo_8004FEC0, 1, (ObjectFunc) func_demo_8004F8AC, D_edata_800CBF34, 20000.0f, 0, 1, 39, 0, 0.0f, 0 },
/* OBJ_ACTOR_196 */ {(void*) func_edisplay_80059BF0, 1, (ObjectFunc) func_enmy2_8006BB78, D_CO_603E5B4, 200.0f, 0, 1, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_197 */ {(void*) func_360_80035448, 1, (ObjectFunc) func_360_800319AC, D_edata_800CC038, 20000.0f, 0, 1, 39, 1, 1.0f, 1 },
/* OBJ_ACTOR_198 */ {(void*) func_360_80035448, 1, (ObjectFunc) func_hud_80092EC0, D_edata_800CC01C, 20000.0f, 0, 0, 39, 1, 0.0f, 0 },
/* OBJ_ACTOR_199 */ {(void*) Andross_80188448, 1, (ObjectFunc) Andross_801880E4, D_edata_800CBF34, 20000.0f, 0, 0, 39, 1, 0.0f, 0 },
/* OBJ_ACTOR_200 */ {(void*) func_enmy2_80074FF0, 1, (ObjectFunc) func_enmy2_80072594, D_edata_800CBF34, 2000.0f, 0, 1, 39, 0, 0.0f, 1 },
/* OBJ_ACTOR_201 */ {(void*) func_edisplay_800598E8, 1, (ObjectFunc) func_enmy2_8006AC08, D_ME_602F684, 100.0f, 0, 1, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_202 */ {(void*) func_edisplay_80059A24, 1, (ObjectFunc) func_enmy2_8006AD18, D_ME_602F6A0, 100.0f, 0, 1, 39, 0, 180.0f, 1 },
/* OBJ_ACTOR_203 */ {(void*) SectorX_8018F884, 1, (ObjectFunc) SectorX_8018F330, D_edata_800CBF34, 1000.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_ACTOR_204 */ {(void*) SectorY_801A4CB0, 1, (ObjectFunc) SectorY_801A3BD4, D_SY_603405C, 1000.0f, 0, 0, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_205 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_8019C778, D_MA_60359C8, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_206 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_801AC438, D_MA_6035A48, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_207 */ {(void*) Macbeth_801AC294, 2, (ObjectFunc) Macbeth_801A7E7C, D_MA_603677C, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_208 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_8019EA60, D_MA_6035A14, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_209 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_8019D700, D_MA_6035AE0, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_210 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_8019CE88, D_MA_6035D9C, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_211 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_8019E410, D_MA_6035E04, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_212 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_8019FF9C, D_MA_60360C0, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_213 */ {(void*) Macbeth_801A12C4, 1, (ObjectFunc) Macbeth_8019EE68, D_MA_6036154, 20000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_214 */ {(void*) Macbeth_801A43BC, 1, (ObjectFunc) Macbeth_801A3E98, D_MA_6036458, 300.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_215 */ {(void*) Macbeth_801A4A64, 1, (ObjectFunc) Macbeth_801A46A0, D_MA_60364C0, 300.0f, 0, 1, 40, 1, 0.0f, 1 },
/* OBJ_ACTOR_216 */ {(void*) Macbeth_801A5F90, 1, (ObjectFunc) Macbeth_801A5E54, D_MA_60366EC, 200.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_217 */ {(void*) Macbeth_801A6100, 1, (ObjectFunc) Macbeth_801A5FD0, D_MA_6036708, 200.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_218 */ {(void*) Macbeth_801A6540, 1, (ObjectFunc) Macbeth_801A6144, D_MA_6036728, 200.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_219 */ {(void*) Macbeth_801A68EC, 1, (ObjectFunc) Macbeth_801A67C8, D_MA_6036744, 300.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_220 */ {(void*) Macbeth_801ADAC8, 1, (ObjectFunc) Macbeth_801AD6F0, D_MA_6036930, 200.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_221 */ {(void*) Macbeth_801AE2C0, 1, (ObjectFunc) Macbeth_801ADD68, D_MA_603694C, 300.0f, 0, 0, 40, 1, 1.0f, 0 },
/* OBJ_ACTOR_222 */ {(void*) Macbeth_801AEEFC, 1, (ObjectFunc) Macbeth_801AEC04, D_MA_6036968, 300.0f, 0, 0, 40, 1, 1.0f, 0 },
/* OBJ_ACTOR_223 */ {(void*) Macbeth_801A54E8, 1, (ObjectFunc) Macbeth_801A4B24, D_MA_60364DC, 300.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_224 */ {(void*) NULL, 1, (ObjectFunc) Titania_80189194, D_edata_800CBF34, 200.0f, 0, 0, 39, 0, 0.0f, 0 },
/* OBJ_ACTOR_225 */ {(void*) D_TI1_700AB70, 0, (ObjectFunc) Titania_8018AB44, D_TI_60064AC, 50.0f, 0, 0, 39, 1, 1.0f, 0 },
/* OBJ_ACTOR_226 */ {(void*) Titania_80189AFC, 1, (ObjectFunc) Titania_801895B8, D_TI_60064C8, 300.0f, 0, 0, 39, 1, 70.0f, 1 },
/* OBJ_ACTOR_227 */ {(void*) Titania_8018E5B4, 1, (ObjectFunc) Titania_8018E54C, D_TI_60067C4, 0.0f, 0, 0, 39, 1, 0.0f, 0 },
/* OBJ_ACTOR_228 */ {(void*) Titania_8018EF14, 1, (ObjectFunc) Titania_8018E5F8, D_TI_6006808, 0.0f, 0, 0, 39, 1, 1.0f, 1 },
/* OBJ_ACTOR_229 */ {(void*) Titania_8018E2D8, 1, (ObjectFunc) Titania_8018C8A8, D_TI_6006A3C, 1000.0f, 0, 0, 20, 1, 0.0f, 1 },
/* OBJ_ACTOR_230 */ {(void*) Titania_8018AABC, 1, (ObjectFunc) Titania_8018A544, D_TI_600683C, 0.0f, 0, 1, 39, 1, 0.0f, 1 },
/* OBJ_ACTOR_231 */ {(void*) Titania_8018BE84, 1, (ObjectFunc) Titania_8018B9D0, D_TI_6006858, 0.0f, 0, 0, 39, 1, 0.0f, 1 },
/* OBJ_ACTOR_232 */ {(void*) Titania_8018B6AC, 1, (ObjectFunc) Titania_8018B268, D_TI_6006890, 0.0f, 0, 0, 39, 1, 20.0f, 1 },
/* OBJ_ACTOR_233 */ {(void*) Titania_8018A1C0, 1, (ObjectFunc) Titania_80189CC8, D_TI_60068F0, 200.0f, 0, 0, 39, 1, 1.0f, 1 },
/* OBJ_ACTOR_234 */ {(void*) func_enmy2_80077218, 1, (ObjectFunc) func_enmy2_800771CC, D_edata_800CBF34, 2000.0f, 0, 0, 39, 0, 0.0f, 5 },
/* OBJ_ACTOR_235 */ {(void*) Zoness_80190430, 2, (ObjectFunc) Zoness_801904CC, D_ZO_602C294, 1000.0f, 0, 1, 40, 0, 1.0f, 1 },
/* OBJ_ACTOR_236 */ {(void*) Zoness_80190F08, 1, (ObjectFunc) Zoness_80190A00, D_ZO_602BC58, 5000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_237 */ {(void*) func_enmy2_8006A978, 1, (ObjectFunc) func_enmy2_8006A96C, D_edata_800CBF34, 200.0f, 0, 0, 40, 0, 0.0f, 2 },
/* OBJ_ACTOR_238 */ {(void*) Zoness_801914C4, 2, (ObjectFunc) Zoness_80191010, D_edata_800CBE8C, 200.0f, 0, 1, 40, 0, 1.0f, 1 },
/* OBJ_ACTOR_239 */ {(void*) NULL, 1, (ObjectFunc) NULL, D_edata_800CBF34, 1000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ACTOR_240 */ {(void*) Zoness_80191B4C, 1, (ObjectFunc) Zoness_80191680, D_edata_800CBE8C, 1500.0f, 0, 1, 40, 0, 20.0f, 0 },
/* OBJ_ACTOR_241 */ {(void*) Zoness_80191DB0, 1, (ObjectFunc) Zoness_80191BC4, D_edata_800CBE70, 1500.0f, 0, 1, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_242 */ {(void*) Zoness_80191FFC, 2, (ObjectFunc) Zoness_80192094, D_ZO_602BE3C, 500.0f, 0, 0, 40, 0, 1.0f, 0 },
/* OBJ_ACTOR_243 */ {(void*) Zoness_80192C18, 2, (ObjectFunc) Zoness_80192834, D_edata_800CBE8C, 0.0f, 0, 1, 40, 0, 1.0f, 1 },
/* OBJ_ACTOR_244 */ {(void*) Zoness_80193240, 2, (ObjectFunc) Zoness_80192E64, D_ZO_602BE58, 2000.0f, 0, 0, 40, 0, 50.0f, 0 },
/* OBJ_ACTOR_245 */ {(void*) Zoness_8019983C, 1, (ObjectFunc) Zoness_8019969C, D_edata_800CBE8C, 200.0f, 0, 0, 40, 0, 1.0f, 0 },
/* OBJ_ACTOR_246 */ {(void*) Zoness_80199E24, 1, (ObjectFunc) Zoness_80199A28, D_edata_800CBE8C, 2000.0f, 0, 0, 40, 0, 1.0f, 0 },
/* OBJ_ACTOR_247 */ {(void*) Zoness_8019D3C4, 1, (ObjectFunc) Zoness_8019D15C, D_ZO_602BFC4, 500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_248 */ {(void*) Zoness_8019A1FC, 1, (ObjectFunc) Zoness_80199F10, D_edata_800CBEA8, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_249 */ {(void*) Zoness_8019ACCC, 1, (ObjectFunc) Zoness_8019A5D4, D_edata_800CBEC4, 5000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_250 */ {(void*) Zoness_8019B7DC, 1, (ObjectFunc) Zoness_8019B548, D_ZO_602C1D4, 10000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_251 */ {(void*) Zoness_8019BDE0, 2, (ObjectFunc) Zoness_8019B854, D_ZO_602C218, 1000.0f, 0, 0, 40, 0, 1.0f, 1 },
/* OBJ_ACTOR_252 */ {(void*) Zoness_8019C1CC, 1, (ObjectFunc) Zoness_8019BE48, D_ZO_602C234, 200.0f, 0, 0, 40, 0, 80.0f, 1 },
/* OBJ_ACTOR_253 */ {(void*) Zoness_8019C83C, 1, (ObjectFunc) Zoness_8019C454, D_ZO_602C250, 300.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_254 */ {(void*) Zoness_8019CE58, 1, (ObjectFunc) Zoness_8019CBEC, D_ZO_602C2B0, 300.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ACTOR_255 */ {(void*) Aquas_801AE168, 1, (ObjectFunc) Aquas_801AD6C0, D_AQ_6030BFC, 500.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_256 */ {(void*) Aquas_801AEB44, 1, (ObjectFunc) Aquas_801AE3D8, D_AQ_6030C18, 10000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_257 */ {(void*) Aquas_801B099C, 1, (ObjectFunc) Aquas_801AFA5C, D_AQ_6030C44, 10000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_258 */ {(void*) Aquas_801B0EC0, 1, (ObjectFunc) Aquas_801B0B60, D_edata_800CBE8C, 200.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_259 */ {(void*) Aquas_801B619C, 2, (ObjectFunc) Aquas_801B638C, D_AQ_6031398, 10000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_260 */ {(void*) Aquas_801B90DC, 2, (ObjectFunc) Aquas_801B7C78, D_AQ_60313CC, 300.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_261 */ {(void*) Aquas_801B504C, 2, (ObjectFunc) Aquas_801B50E8, D_AQ_6031400, 300.0f, 0, 0, 40, 0, 0.0f, 1 },
/* OBJ_ACTOR_262 */ {(void*) Aquas_801B7A24, 2, (ObjectFunc) Aquas_801B6FF8, D_AQ_603144C, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_263 */ {(void*) Aquas_801BA108, 2, (ObjectFunc) Aquas_801B91A4, D_AQ_6031480, 200.0f, 0, 0, 40, 0, 0.0f, 1 },
/* OBJ_ACTOR_264 */ {(void*) Aquas_801BA4E4, 1, (ObjectFunc) Aquas_801BA26C, D_edata_800CBE8C, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ACTOR_265 */ {(void*) Aquas_801BAD7C, 1, (ObjectFunc) Aquas_801BA6A4, D_AQ_6031500, 200.0f, 0, 0, 40, 0, 0.0f, 1 },
/* OBJ_ACTOR_266 */ {(void*) Aquas_801BB204, 2, (ObjectFunc) Aquas_801BADF8, D_AQ_6031538, 200.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ACTOR_267 */ {(void*) Aquas_801BC930, 2, (ObjectFunc) Aquas_801BB79C, D_AQ_6031554, 800.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_268 */ {(void*) Aquas_801BDE6C, 1, (ObjectFunc) Aquas_801BD54C, D_AQ_6031570, 10000.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ACTOR_269 */ {(void*) Aquas_801BD264, 1, (ObjectFunc) Aquas_801BC9A0, D_AQ_6030D20, 2000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_270 */ {(void*) Aquas_801BEB1C, 1, (ObjectFunc) Aquas_801BE3F8, D_AQ_60314C8, 1000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_271 */ {(void*) func_360_8002E694, 2, (ObjectFunc) func_360_8002E670, D_BO_6011B24, 0.0f, 0, 0, 39, 0, 730.0f, 1 },
/* OBJ_ACTOR_272 */ {(void*) func_360_8002E6DC, 1, (ObjectFunc) func_360_8002E6B8, D_BO_6011BF4, 0.0f, 0, 0, 39, 0, 150.0f, 1 },
/* OBJ_ACTOR_273 */ {(void*) Fortuna_80188FE4, 2, (ObjectFunc) Fortuna_80188AD0, D_FO_600FF30, 0.0f, 0, 0, 39, 0, 220.0f, 1 },
/* OBJ_ACTOR_274 */ {(void*) SectorZ_8019E3A8, 1, (ObjectFunc) SectorZ_8019E234, D_edata_800CBEC4, 0.0f, 0, 0, 39, 0, 1.0f, 0 },
/* OBJ_ACTOR_275 */ {(void*) Solar_8019F7AC, 1, (ObjectFunc) Solar_8019F20C, D_edata_800CBE8C, 200.0f, 0, 0, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_276 */ {(void*) Solar_8019F7AC, 1, (ObjectFunc) Solar_8019F20C, D_edata_800CBE8C, 200.0f, 0, 0, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_277 */ {(void*) Solar_8019F7AC, 1, (ObjectFunc) Solar_8019F20C, D_edata_800CBEC4, 200.0f, 0, 0, 39, 0, 1.0f, 1 },
/* OBJ_ACTOR_278 */ {(void*) NULL, 1, (ObjectFunc) Solar_8019EA7C, D_edata_800CBF34, 200.0f, 0, 0, 0, 0, 0.0f, 1 },
/* OBJ_ACTOR_279 */ {(void*) NULL, 1, (ObjectFunc) Solar_801A003C, D_edata_800CBF34, 1000.0f, 0, 0, 0, 0, 0.0f, 1 },
/* OBJ_ACTOR_280 */ {(void*) D_VE1_900DD20, 0, (ObjectFunc) Venom1_80192518, D_VE1_601B7F8, 1000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_281 */ {(void*) Venom1_80192E2C, 1, (ObjectFunc) Venom1_80192CD4, D_VE1_601B830, 1000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_282 */ {(void*) D_VE1_901DA50, 0, (ObjectFunc) Venom1_80192CD4, D_VE1_601B868, 1000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_283 */ {(void*) D_VE1_9023AD0, 0, (ObjectFunc) Venom1_80192EB0, D_VE1_601B8A0, 1000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_284 */ {(void*) Venom1_801934D0, 1, (ObjectFunc) Venom1_801933DC, D_VE1_601B8D8, 1000.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_ACTOR_285 */ {(void*) Andross_80193244, 1, (ObjectFunc) Andross_80192E94, D_edata_800CBE8C, 1000.0f, 0, 0, 20, 0, 1.0f, 1 },
/* OBJ_ACTOR_286 */ {(void*) Andross_80188660, 1, (ObjectFunc) Andross_80188528, D_edata_800CBE8C, 1000.0f, 0, 0, 20, 0, 0.0f, 0 },
/* OBJ_ACTOR_287 */ {(void*) NULL, 1, (ObjectFunc) Andross_80189724, D_edata_800CBF34, 1000.0f, 0, 0, 40, 1, 0.0f, 0 },
/* OBJ_ACTOR_288 */ {(void*) NULL, 1, (ObjectFunc) Andross_801893B8, D_edata_800CBF34, 1000.0f, 0, 0, 20, 1, 0.0f, 0 },
/* OBJ_ACTOR_289 */ {(void*) func_edata_800596B0, 1, (ObjectFunc) Andross_80189470, D_edata_800CBF34, 1000.0f, 0, 0, 20, 1, 0.0f, 0 },
/* OBJ_ACTOR_290 */ {(void*) NULL, 1, (ObjectFunc) Andross_8018933C, D_edata_800CBF34, 1000.0f, 0, 0, 20, 0, 0.0f, 0 },
/* OBJ_ACTOR_291 */ {(void*) func_enmy_80067874, 1, (ObjectFunc) func_enmy_8006753C, D_edata_800CBEA8, 1000.0f, 0, 0, 0, 0, 1.0f, 0 },
/* OBJ_BOSS_292 */ {(void*) Corneria_8018AA74, 2, (ObjectFunc) Corneria_80189058, D_CO_603E620, 20000.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_293 */ {(void*) Corneria_8018ECAC, 1, (ObjectFunc) Corneria_8018C19C, D_CO_603E840, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_294 */ {(void*) Corneria_8018ED78, 1, (ObjectFunc) Corneria_8018DDAC, D_CO_603E714, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_295 */ {(void*) Corneria_8018EE84, 1, (ObjectFunc) Corneria_8018E290, D_CO_603E748, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_296 */ {(void*) Corneria_8018EF90, 1, (ObjectFunc) Corneria_8018E76C, D_CO_603E7C4, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_297 */ {(void*) Meteo_8018BACC, 1, (ObjectFunc) Meteo_8018978C, D_ME_602F75C, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_298 */ {(void*) Meteo_801887D0, 1, (ObjectFunc) Meteo_80188344, D_ME_602FA50, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_299 */ {(void*) func_boss_80042FC4, 2, (ObjectFunc) func_boss_80042FB8, D_edata_800CBF34, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_300 */ {(void*) func_boss_80042FE8, 1, (ObjectFunc) func_boss_80042FDC, D_edata_800CBF34, 20000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_301 */ {(void*) Aquas_801BEC5C, 1, (ObjectFunc) Aquas_801BEC50, D_AQ_6030B10, 0.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_A6 */ {(void*) Area6_8018C54C, 1, (ObjectFunc) Area6_80187944, D_A6_6028454, 2000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_303 */ {(void*) SectorX_80193434, 2, (ObjectFunc) SectorX_80190078, D_SX_6032550, 20000.0f, 0, 0, 20, 0, 0.0f, 10 },
/* OBJ_BOSS_304 */ {(void*) SectorX_8018FF84, 2, (ObjectFunc) SectorX_8018FE38, D_SX_6032488, 1000.0f, 0, 0, 20, 0, 0.0f, 10 },
/* OBJ_BOSS_305 */ {(void*) SectorX_80190020, 2, (ObjectFunc) SectorX_8018FF20, D_SX_60324EC, 1000.0f, 0, 0, 20, 0, 0.0f, 10 },
/* OBJ_BOSS_306 */ {(void*) Titania_801982A8, 1, (ObjectFunc) Titania_80197A94,D_TI_801B83A8, 1000.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_ZO */ {(void*) Zoness_801949DC, 2, (ObjectFunc) Zoness_80194A84, D_ZO_602C044, 1000.0f, 0, 0, 40, 0, 1.0f, 10 },
/* OBJ_BOSS_308 */ {(void*) func_hud_8008FE78, 1, (ObjectFunc) func_hud_800907C4, D_FO_600FFE0, 0.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_309 */ {(void*) func_360_8002E604, 1, (ObjectFunc) func_360_8002E5E0, D_edata_800CBF34, 0.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_310 */ {(void*) func_360_8002E64C, 1, (ObjectFunc) func_360_8002E628, D_edata_800CBF34, 0.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_311 */ {(void*) Bolse_80191AFC, 2, (ObjectFunc) Bolse_801912FC, D_BO_6011C80, 0.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_312 */ {(void*) Venom2_80196288, 2, (ObjectFunc) Venom2_80196210, D_VE2_60166F4, 0.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_313 */ {(void*) SectorZ_8019E98C, 1, (ObjectFunc) SectorZ_8019E454, D_SZ_6009388, 0.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_314 */ {(void*) SectorY_8019E2C4, 2, (ObjectFunc) SectorY_8019C888, D_edata_800CBF34, 0.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_SO */ {(void*) Solar_801A71B8, 2, (ObjectFunc) Solar_801A5B3C, D_edata_800CBF34, 0.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_316 */ {(void*) Katina_801968F4, 1, (ObjectFunc) Katina_801946C4, D_KA_6011058, 0.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_317 */ {(void*) Katina_80193B1C, 1, (ObjectFunc) Katina_80193718, D_KA_601115C, 0.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_AQ */ {(void*) Aquas_801B4D84, 2, (ObjectFunc) Aquas_801B134C, D_AQ_6030F74, 10000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_319 */ {(void*) Venom1_801985E4, 1, (ObjectFunc) Venom1_80194398,D_VE1_8019A9B8, 3000.0f, 0, 0, 40, 1, 0.0f, 10 },
/* OBJ_BOSS_320 */ {(void*) Andross_801928C8, 2, (ObjectFunc) Andross_8018DBF0, D_ANDROSS_C038DC0, 10000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_BOSS_321 */ {(void*) Andross_8018B8C0, 1, (ObjectFunc) Andross_80189B70, D_ANDROSS_C038F24, 10000.0f, 0, 0, 40, 0, 0.0f, 10 },
/* OBJ_ITEM_LASERS */ {(void*) func_edisplay_8005CC9C, 1, (ObjectFunc) func_enmy_80067F6C, D_edata_800CBFA8, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_CHECKPOINT */ {(void*) func_edisplay_8005C5F0, 1, (ObjectFunc) func_enmy_80068914, D_edata_800CBF38, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_SILVER_RING */ {(void*) func_edisplay_8005C900, 1, (ObjectFunc) func_enmy_80068020, D_edata_800CBF54, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_SILVER_STAR */ {(void*) func_edisplay_8005C9C0, 1, (ObjectFunc) func_enmy_800685D8, D_edata_800CBF54, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_METEO_WARP */ {(void*) func_edisplay_8005CDA8, 1, (ObjectFunc) func_enmy_80068688, D_edata_800CBF70, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_BOMB */ {(void*) func_edisplay_8005CB44, 1, (ObjectFunc) func_enmy_80067BEC, D_edata_800CBFC8, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_328 */ {(void*) NULL, 1, (ObjectFunc) func_enmy_80068C88, D_edata_800CBF8C, 1500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_329 */ {(void*) NULL, 1, (ObjectFunc) func_enmy_80068C88, D_edata_800CBF8C, 1500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_330 */ {(void*) NULL, 1, (ObjectFunc) func_enmy_80068C88, D_edata_800CBF8C, 1500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_331 */ {(void*) NULL, 1, (ObjectFunc) func_enmy_80068C88, D_edata_800CBF8C, 1500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_332 */ {(void*) NULL, 1, (ObjectFunc) func_enmy_80068C88, D_edata_800CBF8C, 1500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_333 */ {(void*) NULL, 1, (ObjectFunc) func_enmy_80068C88, D_edata_800CBF8C, 1500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_334 */ {(void*) NULL, 1, (ObjectFunc) func_enmy_80068C48, D_edata_800CBF18, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_1UP */ {(void*) D_1022120, 0, (ObjectFunc) func_enmy_80067B1C, D_edata_800CBE8C, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_GOLD_RING */ {(void*) func_edisplay_8005CA80, 1, (ObjectFunc) func_enmy_800685F8, D_edata_800CBF54, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_WING_REPAIR */ {(void*) D_arwing_3007650, 0, (ObjectFunc) func_enmy_80068618, D_edata_800CBFA8, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_ITEM_TRAINING_RING */ {(void*) gItemTrainingRingDL, 0, (ObjectFunc) Training_80198968, D_TR_6009CFC, 700.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_339 */ {(void*) func_effect_8007D55C, 1, (ObjectFunc) func_effect_8007D2F4, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_340 */ {(void*) func_effect_8007D55C, 1, (ObjectFunc) func_effect_8007D748, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_341 */ {(void*) func_effect_8007D55C, 1, (ObjectFunc) func_effect_8007D8A8, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_342 */ {(void*) func_effect_8007E330, 1, (ObjectFunc) func_effect_8007E298, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_343 */ {(void*) func_effect_8007CAF0, 1, (ObjectFunc) func_effect_8007C9E0, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_344 */ {(void*) func_effect_8007868C, 1, (ObjectFunc) func_effect_8007E014, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_345 */ {(void*) func_effect_8007879C, 1, (ObjectFunc) func_effect_8007E258, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_346 */ {(void*) func_effect_800788B0, 1, (ObjectFunc) func_effect_8007F438, NULL, -200.0f, 1, 0, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_347 */ {(void*) func_effect_800783C0, 1, (ObjectFunc) func_effect_8007B758, NULL, 100.0f, 1, 0, 40, 0, 0.0f, 0 },
/* OBJ_EFFECT_348 */ {(void*) func_effect_80078A64, 1, (ObjectFunc) func_effect_8007F6B0, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_349 */ {(void*) NULL, 1, (ObjectFunc) func_effect_8007F958, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_350 */ {(void*) NULL, 1, (ObjectFunc) func_effect_8007FBE0, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_351 */ {(void*) func_effect_80078438, 1, (ObjectFunc) func_effect_8007E3E4, NULL, -200.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_352 */ {(void*) func_effect_800784B4, 1, (ObjectFunc) func_effect_8007B62C, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_353 */ {(void*) func_effect_80078B8C, 1, (ObjectFunc) func_effect_8007FE88, NULL, 100.0f, 0, 0, 20, 0, 0.0f, 0 },
/* OBJ_EFFECT_354 */ {(void*) SectorY_80197C64, 1, (ObjectFunc) func_effect_8007FE88, NULL, 100.0f, 0, 0, 20, 0, 0.0f, 0 },
/* OBJ_EFFECT_355 */ {(void*) func_effect_80078AEC, 1, (ObjectFunc) func_effect_800802B8, NULL, 100.0f, 1, 0, 20, 1, 0.0f, 0 },
/* OBJ_EFFECT_356 */ {(void*) func_effect_80078C84, 1, (ObjectFunc) func_effect_800802F8, NULL, 100.0f, 1, 0, 20, 0, 0.0f, 0 },
/* OBJ_EFFECT_357 */ {(void*) func_effect_800798F0, 1, (ObjectFunc) func_effect_8007968C, NULL, 100.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_358 */ {(void*) Katina_80192A68, 1, (ObjectFunc) Katina_80192984, NULL, 100.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_359 */ {(void*) func_effect_8007AA60, 1, (ObjectFunc) func_effect_8007A994, NULL, -100.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_360 */ {(void*) func_effect_8007BEE8, 1, (ObjectFunc) func_effect_8007BE54, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_361 */ {(void*) func_effect_8007BEE8, 1, (ObjectFunc) func_effect_8007BDE0, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_362 */ {(void*) func_effect_8007BEE8, 1, (ObjectFunc) func_effect_8007BCE8, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_363 */ {(void*) func_hud_80094BBC, 1, (ObjectFunc) func_hud_80094954, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_364 */ {(void*) func_effect_8007B9DC, 1, (ObjectFunc) func_effect_8007B960, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_365 */ {(void*) func_effect_8007E5CC, 1, (ObjectFunc) func_effect_8007E45C, NULL, -200.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_366 */ {(void*) func_effect_80078550, 1, (ObjectFunc) Aquas_801AC918, NULL, 100.0f, 1, 2, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_367 */ {(void*) func_effect_80078604, 1, (ObjectFunc) func_effect_8007E648, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_368 */ {(void*) Titania_80188FA8, 1, (ObjectFunc) Titania_80188F60, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_369 */ {(void*) Meteo_8018DCE4, 1, (ObjectFunc) Meteo_80188CAC, NULL, 100.0f, 0, 1, 40, 0, 0.0f, 0 },
/* OBJ_EFFECT_370 */ {(void*) Meteo_8018DBEC, 1, (ObjectFunc) Meteo_80188FAC, NULL, 100.0f, 0, 1, 40, 0, 0.0f, 0 },
/* OBJ_EFFECT_371 */ {(void*) Meteo_8018DE14, 1, (ObjectFunc) Meteo_80189114, NULL, 100.0f, 0, 1, 40, 0, 0.0f, 0 },
/* OBJ_EFFECT_372 */ {(void*) func_effect_80077A00, 1, (ObjectFunc) func_effect_8007AB50, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_373 */ {(void*) NULL, 1, (ObjectFunc) func_effect_8007A748, NULL, 500.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_374 */ {(void*) func_effect_8007DED4, 1, (ObjectFunc) func_effect_8007DB70, NULL, 100.0f, 0, 1, 40, 0, 0.0f, 0 },
/* OBJ_EFFECT_375 */ {(void*) func_effect_8007DAE4, 1, (ObjectFunc) func_effect_8007DA58, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_376 */ {(void*) func_effect_80078CE8, 1, (ObjectFunc) func_effect_80080360, NULL, -200.0f, 1, 0, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_377 */ {(void*) func_effect_80078BE0, 1, (ObjectFunc) func_effect_800802D8, NULL, 100.0f, 1, 0, 20, 0, 0.0f, 0 },
/* OBJ_EFFECT_378 */ {(void*) Macbeth_801A5AF0, 1, (ObjectFunc) Macbeth_801A57D0, NULL, 100.0f, 0, 0, 20, 0, 0.0f, 0 },
/* OBJ_EFFECT_379 */ {(void*) Macbeth_801AEAA0, 1, (ObjectFunc) Macbeth_801AE87C, NULL, 100.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_380 */ {(void*) Macbeth_801A5D68, 1, (ObjectFunc) Macbeth_801A5B4C, NULL, 100.0f, 0, 0, 20, 0, 0.0f, 0 },
/* OBJ_EFFECT_381 */ {(void*) func_effect_80077A7C, 1, (ObjectFunc) func_effect_8007B0F4, NULL, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_382 */ {(void*) NULL, 1, (ObjectFunc) func_effect_8007B040, NULL, 200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_383 */ {(void*) func_effect_8007A3C0, 1, (ObjectFunc) func_effect_8007A28C, NULL, 10000.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_384 */ {(void*) func_effect_80077B84, 1, (ObjectFunc) func_effect_8007B3B8, NULL, -200.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_385 */ {(void*) func_effect_80078038, 1, (ObjectFunc) func_effect_8007B5C0, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_386 */ {(void*) NULL, 1, (ObjectFunc) func_effect_8007C250, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_387 */ {(void*) NULL, 1, (ObjectFunc) func_effect_8007C8C4, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_388 */ {(void*) func_effect_80077B78, 1, (ObjectFunc) func_effect_8007B670, NULL, -200.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_389 */ {(void*) func_effect_800780F8, 1, (ObjectFunc) func_effect_8007B67C, NULL, -200.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_390 */ {(void*) NULL, 1, (ObjectFunc) func_effect_8007C50C, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_391 */ {(void*) func_effect_80083B8C, 1, (ObjectFunc) func_effect_800837EC, NULL, 500.0f, 0, 0, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_392 */ {(void*) Solar_801A0AF0, 1, (ObjectFunc) Solar_801A0120, NULL, 300.0f, 1, 2, 10, 0, 0.0f, 0 },
/* OBJ_EFFECT_393 */ {(void*) func_effect_80078F78, 1, (ObjectFunc) func_effect_80078EBC, NULL, 300.0f, 1, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_394 */ {(void*) func_effect_80080D04, 1, (ObjectFunc) func_effect_80080ACC, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 },
/* OBJ_EFFECT_395 */ {(void*) func_effect_80082F78, 1, (ObjectFunc) func_effect_80081C5C, NULL, 300.0f, 0, 1, 40, 0, 0.0f, 0 },
/* OBJ_EFFECT_396 */ {(void*) Andross_8018CF98, 1, (ObjectFunc) Andross_8018CAD4, NULL, 2000.0f, 0, 1, 40, 2, 0.0f, 0 },
/* OBJ_EFFECT_397 */ {(void*) Bolse_80191180, 1, (ObjectFunc) Bolse_80191054, NULL, 2000.0f, 0, 1, 20, 0, 0.0f, 0 },
/* OBJ_EFFECT_398 */ {(void*) func_effect_8008092C, 1, (ObjectFunc) func_effect_8008040C, NULL, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
/* OBJ_EFFECT_399 */ {(void*) func_effect_80084194, 1, (ObjectFunc) func_effect_80083FA8, NULL, 100.0f, 0, 0, 40, 0, 0.0f, 0 },
};
// clang-format on
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+48
View File
@@ -0,0 +1,48 @@
#include "global.h"
void func_fade_80084370(s32 arg0) {
Graphics_FillRectangle(&gMasterDisp, 0, 0, arg0, SCREEN_HEIGHT, 0, 0, 0, 255);
Graphics_FillRectangle(&gMasterDisp, SCREEN_WIDTH - arg0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, 0, 255);
}
void func_fade_800843FC(s32 arg0) {
Graphics_FillRectangle(&gMasterDisp, 0, 0, SCREEN_WIDTH, arg0, 0, 0, 0, 255);
Graphics_FillRectangle(&gMasterDisp, 0, SCREEN_HEIGHT - arg0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, 0, 255);
}
void func_fade_80084488(s32 arg0) {
s32 var_s1;
RCP_SetupDL_12();
Matrix_Push(&gGfxMatrix);
Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -150.0f, 0);
for (var_s1 = 0; var_s1 < MIN(360, arg0 * 15); var_s1 += 15) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, MIN((arg0 - (var_s1 / 15)) * 15, 255));
Matrix_Push(&gGfxMatrix);
Matrix_RotateZ(gGfxMatrix, var_s1 * M_DTOR, 1);
Matrix_Scale(gGfxMatrix, 0.53f, 1.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_Gfx_800D9688);
Matrix_Pop(&gGfxMatrix);
}
Matrix_Pop(&gGfxMatrix);
}
void func_fade_80084688(s32 arg0, s32 arg1) {
if (arg1 != 0) {
switch (arg0) {
case 0:
func_fade_80084488(arg1);
break;
case 1:
func_fade_80084370(arg1);
break;
case 2:
func_fade_800843FC(arg1);
break;
default:
(void) "そのような フェード は ない (%d)\n"; // There is no such fade
break;
}
}
}
+564
View File
@@ -0,0 +1,564 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "sf64dma.h"
#include "assets/ast_logo.h"
f32 D_game_80161A10;
f32 D_game_80161A14;
s32 gPlayerInactive[4];
s32 D_game_80161A28;
u8 D_game_80161A2C;
u16 D_game_80161A2E;
u16 gNextLevel;
u16 gNextGameState;
u16 D_game_80161A34;
u16 gBgColor;
u8 gBlurAlpha;
u8 D_game_80161A39;
f32 D_game_80161A3C;
f32 D_game_80161A40;
f32 D_game_80161A44;
s32 D_game_800D2860[4] = { true, true, true, true };
s32 D_game_800D2870 = 0;
static s32 D_game_800D2874[] = { 0, 160, 0, 160 };
static s32 D_game_800D2884[] = { 159, 319, 159, 319 };
static s32 D_game_800D2894[] = { 0, 0, 120, 120 };
static s32 D_game_800D28A4[] = { 119, 119, 239, 239 };
static s32 sOverlaySetups[] = {
/* LEVEL_CORNERIA */ OVL_SETUP_CORNERIA,
/* LEVEL_METEO */ OVL_SETUP_METEO,
/* LEVEL_SECTOR_X */ OVL_SETUP_SECTOR_X,
/* LEVEL_AREA_6 */ OVL_SETUP_AREA_6,
/* LEVEL_UNK_4 */ OVL_SETUP_UNK_4,
/* LEVEL_SECTOR_Y */ OVL_SETUP_SECTOR_Y,
/* LEVEL_VENOM_1 */ OVL_SETUP_VENOM_1,
/* LEVEL_SOLAR */ OVL_SETUP_SOLAR,
/* LEVEL_ZONESS */ OVL_SETUP_ZONESS,
/* LEVEL_VENOM_ANDROSS */ OVL_SETUP_VENOM_ANDROSS,
/* LEVEL_TRAINING */ OVL_SETUP_TRAINING,
/* LEVEL_MACBETH */ OVL_SETUP_MACBETH,
/* LEVEL_TITANIA */ OVL_SETUP_TITANIA,
/* LEVEL_AQUAS */ OVL_SETUP_AQUAS,
/* LEVEL_FORTUNA */ OVL_SETUP_FORTUNA,
/* LEVEL_UNK_15 */ OVL_SETUP_TITLE,
/* LEVEL_KATINA */ OVL_SETUP_KATINA,
/* LEVEL_BOLSE */ OVL_SETUP_BOLSE,
/* LEVEL_SECTOR_Z */ OVL_SETUP_SECTOR_Z,
/* LEVEL_VENOM_2 */ OVL_SETUP_VENOM_2,
/* LEVEL_VERSUS */ OVL_SETUP_VERSUS,
};
void Game_Initialize(void) {
Memory_FreeAll();
Rand_Init();
Rand_SetSeed(1, 29000, 9876);
gGameState = GSTATE_BOOT;
D_Timer_8017783C = 0;
gBgColor = 0;
gBlurAlpha = 0xFF;
D_game_80161A3C = 45.0f;
D_game_80161A40 = 10.0f;
D_game_80161A44 = 12800.0f;
D_game_80161A10 = D_game_80161A14 = 0.0f;
gOverlaySetup = OVL_SETUP_LOGO;
gOverlayStage = 0;
Overlay_InitDma();
D_game_80161A39 = true;
}
void Game_SetGameState(void) {
D_game_80161A14 = D_game_80161A10;
if (gNextGameState == GSTATE_NONE) {
return;
}
switch (gNextGameState) {
case GSTATE_PLAY:
gCurrentLevel = gNextLevel;
func_play_800A5844();
D_ctx_80177854 = 0;
D_ctx_8017827C = D_game_80161A2E;
D_game_80161A2E = 0;
if ((D_ctx_8017827C != 0) && (gCurrentLevel != LEVEL_VENOM_ANDROSS)) {
D_ctx_8017782C = 0;
}
break;
case GSTATE_MAP:
D_ctx_80177B40 = 0;
break;
case GSTATE_GAME_OVER:
D_ctx_80177868 = 0;
break;
}
Memory_FreeAll();
func_play_800A6148();
gGameState = gNextGameState;
D_Timer_8017783C = 3;
D_360_8015F924 = 0;
gNextGameState = GSTATE_NONE;
gOverlayStage = 0;
gFillScreenColor = gBgColor = 0;
D_ctx_80177D20 = 0.0f;
if ((gCurrentLevel == LEVEL_VENOM_2) && (D_ctx_8017827C == 2)) {
gFillScreenColor = gBgColor = 0xFFFF; // 248, 248, 248
D_ctx_80178348 = D_ctx_80178350 = D_ctx_80178354 = 255;
} else {
D_ctx_80178348 = D_ctx_80178350 = D_ctx_80178354 = 0;
Audio_FadeOutAll(1);
}
D_ctx_80178340 = 255;
D_ctx_80178380[0] = 0;
gRadioState = 0;
D_ctx_80178428 = 0.0f;
gBlurAlpha = 255;
gDrawMode = DRAWMODE_0;
Audio_ClearVoice();
Audio_SetBaseSfxReverb(0);
}
bool func_game_800A1B6C(void) {
static u8 sHoldTimer = 0;
static u8 sOverlaySelect = 99;
static u8 sCurrentOverlay = 99;
static u8 sCurrentStage = 99;
if (gOverlaySetup != sCurrentOverlay) {
sHoldTimer = 2;
sCurrentOverlay = gOverlaySetup;
}
if (sHoldTimer == 0) {
sOverlaySelect = sCurrentOverlay;
sCurrentStage = gOverlayStage;
}
Overlay_Load(sOverlaySelect, sCurrentStage);
if (sHoldTimer) {
sHoldTimer--;
return true;
}
return false;
}
void func_game_800A1C14(Gfx** arg0) {
gSPDisplayList((*arg0)++, gRcpInitDL);
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 8, SCREEN_WIDTH - 8, SCREEN_HEIGHT - 8);
gDPSetDepthImage((*arg0)++, &gZBuffer);
gDPSetColorImage((*arg0)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, &gZBuffer);
gDPSetFillColor((*arg0)++, FILL_COLOR(GPACK_ZDZ(G_MAXFBZ, 0)));
gDPFillRectangle((*arg0)++, 8, 8, SCREEN_WIDTH - 8 - 1, SCREEN_HEIGHT - 8 - 1);
gDPSetColorImage((*arg0)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, gFrameBuffer);
if (gBlurAlpha < 0xFF) {
gDPPipeSync((*arg0)++);
gDPSetCycleType((*arg0)++, G_CYC_1CYCLE);
gDPSetCombineMode((*arg0)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
gDPSetRenderMode((*arg0)++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetPrimColor((*arg0)++, 0x00, 0x00, RGBA16_RED(gBgColor) * 8, RGBA16_GRN(gBgColor) * 8,
RGBA16_BLU(gBgColor) * 8, gBlurAlpha);
} else {
gDPSetFillColor((*arg0)++, FILL_COLOR(gBgColor | 1));
}
gDPFillRectangle((*arg0)++, 8, 8, SCREEN_WIDTH - 8 - 1, SCREEN_HEIGHT - 8);
gDPPipeSync((*arg0)++);
gDPSetColorDither((*arg0)++, G_CD_MAGICSQ);
}
void func_game_800A1E68(Gfx** arg0) {
gSPDisplayList((*arg0)++, gRcpInitDL);
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT * 3);
gDPSetFillColor((*arg0)++, FILL_COLOR(0x0001));
gDPSetColorImage((*arg0)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, gFrameBuffers[0].data);
gDPFillRectangle((*arg0)++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT * 3 - 1);
gDPPipeSync((*arg0)++);
gDPSetColorDither((*arg0)++, G_CD_MAGICSQ);
}
void func_game_800A1F44(void) {
gViewport->vp.vscale[0] = gViewport->vp.vtrans[0] = SCREEN_WIDTH * 2;
gViewport->vp.vscale[1] = gViewport->vp.vtrans[1] = SCREEN_HEIGHT * 2;
gViewport->vp.vscale[2] = gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = gViewport->vp.vtrans[3] = 0;
}
void func_game_800A1FB0(Gfx** arg0, u8 arg1, u8 arg2) {
if ((arg1 != 1) && (arg1 == 4)) {
switch (arg2) {
case 0:
gViewport->vp.vscale[0] = SCREEN_WIDTH * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = SCREEN_HEIGHT * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = SCREEN_WIDTH * (2.0f - D_game_80161A14) * 2;
gViewport->vp.vtrans[1] = SCREEN_HEIGHT * (2.0f - D_game_80161A14) * 2;
gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 8, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
break;
case 1:
gViewport->vp.vscale[0] = SCREEN_WIDTH * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = SCREEN_HEIGHT * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = SCREEN_WIDTH * D_game_80161A14 * 2;
gViewport->vp.vtrans[1] = SCREEN_HEIGHT * (2.0f - D_game_80161A14) * 2;
gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, SCREEN_WIDTH / 2, 8, SCREEN_WIDTH - 8, SCREEN_HEIGHT / 2);
break;
case 2:
gViewport->vp.vscale[0] = SCREEN_WIDTH * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = SCREEN_HEIGHT * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = SCREEN_WIDTH * (2.0f - D_game_80161A14) * 2;
gViewport->vp.vtrans[1] = SCREEN_HEIGHT * D_game_80161A14 * 2;
gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, SCREEN_HEIGHT / 2, SCREEN_WIDTH / 2, SCREEN_HEIGHT - 8);
break;
case 3:
gViewport->vp.vscale[0] = SCREEN_WIDTH * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = SCREEN_HEIGHT * (D_game_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = SCREEN_WIDTH * D_game_80161A14 * 2;
gViewport->vp.vtrans[1] = SCREEN_HEIGHT * D_game_80161A14 * 2;
gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, SCREEN_WIDTH - 8,
SCREEN_HEIGHT - 8);
break;
default:
func_game_800A1F44();
break;
}
} else {
func_game_800A1F44();
if (1) {}
}
gSPViewport((*arg0)++, gViewport++);
}
void func_game_800A24DC(s32 arg0) {
switch (gDrawMode) {
case DRAWMODE_0:
break;
case DRAWMODE_1:
func_bg_8003DAF0();
OvlMenu_CallFunction(104, NULL);
break;
case DRAWMODE_2:
func_bg_8003DAF0();
OvlMenu_CallFunction(108, NULL);
break;
case DRAW_MAP:
func_bg_8003DAF0();
OvlMenu_CallFunction(106, NULL);
break;
case DRAWMODE_4:
gPlayerNum = arg0;
func_display_80057D00();
break;
case DRAWMODE_5:
func_bg_8003DAF0();
OvlMenu_CallFunction(110, NULL);
break;
case DRAWMODE_6:
func_versus_800C2190();
break;
case DRAWMODE_7:
gPlayerNum = arg0;
func_800A3CA0();
break;
case DRAWMODE_8:
func_bg_8003DAF0();
gPlayerNum = arg0;
Ending_8018AAC4();
break;
}
}
void func_game_800A25DC(void) {
switch (gGameState) {
case GSTATE_INIT:
gOverlaySetup = OVL_SETUP_TITLE;
gOverlayStage = 0;
break;
case GSTATE_TITLE:
gOverlaySetup = OVL_SETUP_TITLE;
gOverlayStage = 0;
break;
case GSTATE_MENU:
gOverlaySetup = OVL_SETUP_MENU;
gOverlayStage = 0;
break;
case GSTATE_MAP:
gOverlaySetup = OVL_SETUP_MAP;
gOverlayStage = 0;
return;
case GSTATE_VS_INIT:
gOverlaySetup = OVL_SETUP_VERSUS;
break;
case GSTATE_PLAY:
gOverlaySetup = sOverlaySetups[gCurrentLevel];
break;
case GSTATE_GAME_OVER:
gOverlaySetup = OVL_SETUP_GAME_OVER;
gOverlayStage = 0;
break;
case GSTATE_CREDITS:
gOverlaySetup = OVL_SETUP_CREDITS;
break;
}
}
void Game_Update(void) {
s32 i;
u8 spBB;
u8 var_v0_3;
Game_SetGameState();
if (D_game_80161A39) {
func_game_800A1E68(&gUnkDisp1);
D_game_80161A39 = false;
return;
}
func_game_800A1C14(&gUnkDisp1);
func_game_800A25DC();
if (func_game_800A1B6C() != true) {
Lib_Perspective(&gUnkDisp1);
func_game_800A1FB0(&gUnkDisp1, gCamCount, 0);
if (D_Timer_8017783C != 0) {
D_Timer_8017783C--;
}
switch (gGameState) {
case GSTATE_BOOT:
D_Timer_8017783C = 2;
gGameState++;
break;
case GSTATE_BOOT_WAIT:
if (D_Timer_8017783C == 0) {
gGameState++;
}
break;
case GSTATE_SHOW_LOGO:
RCP_SetupDL(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 0], 128, 16, 100.0f, 86.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 1], 128, 16, 100.0f, 102.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 2], 128, 16, 100.0f, 118.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 3], 128, 16, 100.0f, 134.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 4], 128, 10, 100.0f, 150.0f, 1.0f, 1.0f);
gGameState++;
break;
case GSTATE_CHECK_SAVE:
if (Save_Read() != 0) {
gSaveFile = *((SaveFile*) &gDefaultSave);
Save_Write();
}
gGameState++;
Timer_CreateTask(MSEC_TO_CYCLES(1000), Timer_Increment, (s32*) &gGameState, 1);
/* fallthrough */
case GSTATE_LOGO_WAIT:
RCP_SetupDL(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 0], 128, 16, 100.0f, 86.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 1], 128, 16, 100.0f, 102.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 2], 128, 16, 100.0f, 118.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 3], 128, 16, 100.0f, 134.0f, 1.0f, 1.0f);
TextureRect_8bIA(&gMasterDisp, &gNintendoLogo[128 * 16 * 4], 128, 10, 100.0f, 150.0f, 1.0f, 1.0f);
break;
case GSTATE_START:
gGameState = GSTATE_INIT;
gOverlaySetup = OVL_SETUP_TITLE;
gOverlayStage = 0;
break;
case GSTATE_INIT:
gGameState = GSTATE_TITLE;
D_ctx_80177AE0 = 1;
D_ctx_80177824 = 1;
Memory_FreeAll();
func_play_800A6148();
gCamCount = 1;
gLifeCount[0] = 2;
D_ctx_80177D20 = 0.0f;
D_hud_8016170C = gCsFrameCount = D_ctx_80177830 = D_ctx_80177838 = D_ctx_80177840 = D_versus_80178754 =
gVersusMode = D_ctx_80177AE0 = D_ctx_80178410 = D_ctx_80177B40 = D_ctx_80177854 =
gOptionMenuStatus = gDrawMode = gShowBossHealth = D_game_80161A2C = gBgColor = D_ctx_80178340 =
0;
gNextGameState = D_ctx_80177C94 = D_ctx_80177CAC = D_ctx_80177CB4 = D_ctx_80177CBC = D_ctx_80177CC4 =
D_ctx_80177C9C = D_ctx_80177CA4 = D_play_80161A5C = D_game_80161A34 = 0;
for (i = 0; i < 4; i++) {
gBoostButton[i] = L_CBUTTONS;
gBrakeButton[i] = D_CBUTTONS;
gShootButton[i] = A_BUTTON;
gBombButton[i] = B_BUTTON;
D_ctx_80177958[i] = 1.0f;
D_ctx_80177858[i] = 3;
D_ctx_80177870[i] = 0;
D_game_800D2860[i] = true;
D_ctx_80178380[i] = 0;
}
gVersusStage = 0;
D_ctx_801778A4 = 3;
gBlurAlpha = 255;
for (i = 0; i < 30; i++) {
D_play_800D3180[i] = 0;
}
gExpertMode = false;
gSoundMode = gSaveFile.save.data.soundMode;
switch (gSoundMode) {
case OPTIONSOUND_STEREO:
var_v0_3 = SOUNDMODE_STEREO;
break;
case OPTIONSOUND_MONO:
var_v0_3 = SOUNDMODE_MONO;
break;
case OPTIONSOUND_HEADSET:
var_v0_3 = SOUNDMODE_HEADSET;
break;
default:
gSoundMode = OPTIONSOUND_STEREO;
var_v0_3 = SOUNDMODE_STEREO;
break;
}
SEQCMD_SET_SOUND_MODE(var_v0_3);
gVolumeSettings[0] = gSaveFile.save.data.musicVolume;
gVolumeSettings[1] = gSaveFile.save.data.voiceVolume;
gVolumeSettings[2] = gSaveFile.save.data.sfxVolume;
if (gVolumeSettings[0] > 99) {
gVolumeSettings[0] = 99;
}
if (gVolumeSettings[1] > 99) {
gVolumeSettings[1] = 99;
}
if (gVolumeSettings[2] > 99) {
gVolumeSettings[2] = 99;
}
func_8001D8A8(0, gVolumeSettings[0]);
func_8001D8A8(1, gVolumeSettings[1]);
func_8001D8A8(2, gVolumeSettings[2]);
break;
case GSTATE_TITLE:
OvlMenu_CallFunction(103, NULL);
break;
case GSTATE_MENU:
OvlMenu_CallFunction(107, NULL);
break;
case GSTATE_MAP:
Map_8019E8D0();
break;
case GSTATE_VS_INIT:
func_versus_800C20B0();
break;
case GSTATE_PLAY:
func_play_800B86CC();
break;
case GSTATE_GAME_OVER:
OvlMenu_CallFunction(109, NULL);
break;
case GSTATE_CREDITS:
gDrawMode = DRAWMODE_8;
Ending_8018A96C();
break;
default:
break;
}
func_game_800A24DC(0);
if (gCamCount == 2) {
func_game_800A1FB0(&gMasterDisp, gCamCount, 1);
func_game_800A24DC(1);
gDPPipeSync(gMasterDisp++);
gDPSetScissor(gMasterDisp++, G_SC_NON_INTERLACE, 8, 8, SCREEN_WIDTH - 8, SCREEN_HEIGHT - 8);
} else if ((gCamCount == 4) && (gDrawMode != DRAWMODE_0)) {
func_game_800A1FB0(&gMasterDisp, gCamCount, 3);
func_game_800A24DC(3);
func_game_800A1FB0(&gMasterDisp, gCamCount, 2);
func_game_800A24DC(2);
func_game_800A1FB0(&gMasterDisp, gCamCount, 1);
func_game_800A24DC(1);
gDPPipeSync(gMasterDisp++);
gDPSetScissor(gMasterDisp++, G_SC_NON_INTERLACE, 8, 8, SCREEN_WIDTH - 8, SCREEN_HEIGHT - 8);
gDPSetColorDither(gMasterDisp++, G_CD_NOISE);
gDPSetAlphaDither(gMasterDisp++, G_AD_NOISE);
gDPSetCycleType(gMasterDisp++, G_CYC_1CYCLE);
gDPSetCombineMode(gMasterDisp++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
gDPSetRenderMode(gMasterDisp++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x0, 0, 0, 0, 0);
gDPFillRectangle(gMasterDisp++, SCREEN_WIDTH / 2 - 3, 8, SCREEN_WIDTH / 2 + 2, SCREEN_HEIGHT - 8);
gDPFillRectangle(gMasterDisp++, 8, SCREEN_HEIGHT / 2 - 3, SCREEN_WIDTH - 8, SCREEN_HEIGHT / 2 + 2);
if (gLevelType == LEVELTYPE_PLANET) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x0, 0, 0, 0, 255);
} else {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x0, 100, 100, 255, 255);
}
gDPFillRectangle(gMasterDisp++, SCREEN_WIDTH / 2 - 2, 8, SCREEN_WIDTH / 2 + 1, SCREEN_HEIGHT - 8);
gDPFillRectangle(gMasterDisp++, 8, SCREEN_HEIGHT / 2 - 2, SCREEN_WIDTH - 8, SCREEN_HEIGHT / 2 + 1);
func_hud_8008CB8C();
}
spBB = 0;
if (gCamCount == 1) {
Graphics_FillRectangle(&gMasterDisp, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, D_ctx_80178390[0],
D_ctx_801783A0[0], D_ctx_801783B0[0], D_ctx_80178380[0]);
if ((gDrawMode == DRAWMODE_4) || (gDrawMode == DRAWMODE_8)) {
func_radio_800BB5D0();
if (D_game_80161A2C != 0) {
func_hud_8008FA84();
func_hud_8008CA44();
}
func_hud_8008DE68();
}
} else {
for (i = 0; i < gCamCount; i++) {
if (gPlayer[i].timer_224 != 0) {
Graphics_FillRectangle(&gMasterDisp, D_game_800D2874[i], D_game_800D2894[i], D_game_800D2884[i],
D_game_800D28A4[i], D_ctx_80178348, D_ctx_80178350, D_ctx_80178354,
D_ctx_80178340);
spBB = 1;
} else {
Graphics_FillRectangle(&gMasterDisp, D_game_800D2874[i], D_game_800D2894[i], D_game_800D2884[i],
D_game_800D28A4[i], D_ctx_80178390[i], D_ctx_801783A0[i], D_ctx_801783B0[i],
D_ctx_80178380[i]);
}
}
}
func_bg_80040CDC();
func_hud_8008865C();
func_360_8002E548();
if ((gGameState == GSTATE_PLAY) && gVersusMode) {
func_versus_800C1ED4();
}
func_fade_80084688(0, D_ctx_80177C50);
if (spBB == 0) {
Graphics_FillRectangle(&gMasterDisp, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, D_ctx_80178348,
D_ctx_80178350, D_ctx_80178354, D_ctx_80178340);
}
func_80016A50();
}
}
Actor* func_game_800A3608(ObjectId objId) {
Actor* actor = gActors;
s32 i;
for (i = 0; i < ARRAY_COUNT(gActors); i++, actor++) {
if (actor->obj.status == OBJ_FREE) {
Actor_Initialize(actor);
actor->obj.status = OBJ_INIT;
actor->obj.id = objId;
Object_SetInfo(&actor->info, actor->obj.id);
break;
}
}
if (i == ARRAY_COUNT(gActors)) {
actor = NULL;
}
return actor;
}
+6155
View File
File diff suppressed because it is too large Load Diff
+201
View File
@@ -0,0 +1,201 @@
#include "global.h"
#include "sf64dma.h"
#define SEGMENT_SIZE(segment) ((ptrdiff_t) ((uintptr_t) (segment).end - (uintptr_t) (segment).start))
u8 sFillTimer = 3;
#include "fox_load_inits.c"
OverlayInit sCurrentOverlay = {
NO_OVERLAY,
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ NO_SEGMENT,
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT },
};
void Overlay_LoadSegment(void* vRomAddress, void* dest, ptrdiff_t size) {
s32 i;
for (i = 0; gDmaTable[i].pRom.end != NULL; i++) {
if (gDmaTable[i].vRomAddress == vRomAddress) {
if (gDmaTable[i].compFlag == 0) {
Lib_DmaRead(gDmaTable[i].pRom.start, dest, size);
} else {
Lib_FillScreen(true);
sFillTimer = 3;
D_game_80161A39 = true;
Lib_DmaRead(gDmaTable[i].pRom.start, gFrameBuffers, SEGMENT_SIZE(gDmaTable[i].pRom));
Mio0_Decompress(gFrameBuffers, dest);
}
break;
}
}
}
u8 Overlay_Init(OverlayInit* ovlInit) {
u8* ramPtr = SEGMENT_VRAM_START(ovl_i1);
u8 segment;
u8 changeOvl = false;
if (ovlInit->ovl.rom.start == (0, sCurrentOverlay.ovl.rom.start)) { // fake because D_800CBDD4 is probably 2D array
ramPtr = ramPtr + SEGMENT_SIZE(ovlInit->ovl.rom);
ramPtr = ramPtr + SEGMENT_SIZE(ovlInit->ovl.bss);
} else {
sCurrentOverlay.ovl.rom.start = ovlInit->ovl.rom.start;
sCurrentOverlay.ovl.rom.end = ramPtr;
if (ovlInit->ovl.rom.start != 0) {
changeOvl = true;
Overlay_LoadSegment(ovlInit->ovl.rom.start, ramPtr, SEGMENT_SIZE(ovlInit->ovl.rom));
ramPtr = ramPtr + SEGMENT_SIZE(ovlInit->ovl.rom);
bzero(ovlInit->ovl.bss.start, SEGMENT_SIZE(ovlInit->ovl.bss));
ramPtr = ramPtr + SEGMENT_SIZE(ovlInit->ovl.bss);
}
}
segment = 0;
while ((segment < 15) && (ovlInit->assets[segment].start == sCurrentOverlay.assets[segment].start) &&
changeOvl == 0) {
if (ovlInit->assets[segment].start != 0) {
gSegments[segment + 1] = K0_TO_PHYS(ramPtr);
gSPSegment(gUnkDisp1++, segment + 1, K0_TO_PHYS(ramPtr));
ramPtr = ramPtr + SEGMENT_SIZE(ovlInit->assets[segment]);
}
segment += 1;
}
for (segment; segment < 15; segment += 1) {
sCurrentOverlay.assets[segment].start = ovlInit->assets[segment].start;
sCurrentOverlay.assets[segment].end = ramPtr;
if (ovlInit->assets[segment].start != 0) {
gSegments[segment + 1] = K0_TO_PHYS(ramPtr);
gSPSegment(gUnkDisp1++, segment + 1, K0_TO_PHYS(ramPtr));
Overlay_LoadSegment(ovlInit->assets[segment].start, ramPtr, SEGMENT_SIZE(ovlInit->assets[segment]));
ramPtr = ramPtr + SEGMENT_SIZE(ovlInit->assets[segment]);
}
}
if (sFillTimer != 0) {
sFillTimer--;
} else if (gStartNMI == 0) {
Lib_FillScreen(false);
}
return changeOvl;
}
u8 Overlay_Load(u8 ovlSetup, u8 ovlStage) {
u8 changeOvl;
switch (ovlSetup) {
case OVL_SETUP_TITLE:
changeOvl = Overlay_Init(&sOvlmenu_Title[ovlStage]);
if (changeOvl == true) {
Audio_SetAudioSpec(0, 0x16);
}
break;
case OVL_SETUP_MENU:
changeOvl = Overlay_Init(&sOvlmenu_Option[ovlStage]);
break;
case OVL_SETUP_MAP:
changeOvl = Overlay_Init(&sOvlmenu_Map[ovlStage]);
break;
case OVL_SETUP_GAME_OVER:
changeOvl = Overlay_Init(&sOvlmenu_GameOver[ovlStage]);
break;
case OVL_SETUP_CORNERIA:
changeOvl = Overlay_Init(&sOvli1_Corneria[ovlStage]);
break;
case OVL_SETUP_METEO:
changeOvl = Overlay_Init(&sOvli2_Meteo[ovlStage]);
break;
case OVL_SETUP_TITANIA:
changeOvl = Overlay_Init(&sOvli5_Titania[ovlStage]);
break;
case OVL_SETUP_SECTOR_X:
changeOvl = Overlay_Init(&sOvli2_SectorX[ovlStage]);
break;
case OVL_SETUP_SECTOR_Z:
changeOvl = Overlay_Init(&sOvli4_SectorZ[ovlStage]);
break;
case OVL_SETUP_AQUAS:
changeOvl = Overlay_Init(&sOvli3_Aquas[ovlStage]);
break;
case OVL_SETUP_AREA_6:
changeOvl = Overlay_Init(&sOvli3_Area6[ovlStage]);
break;
case OVL_SETUP_FORTUNA:
changeOvl = Overlay_Init(&sOvli4_Fortuna[ovlStage]);
break;
case OVL_SETUP_UNK_4:
changeOvl = Overlay_Init(&sOvli3_Unk4[ovlStage]);
break;
case OVL_SETUP_SECTOR_Y:
changeOvl = Overlay_Init(&sOvli6_SectorY[ovlStage]);
break;
case OVL_SETUP_SOLAR:
changeOvl = Overlay_Init(&sOvli3_Solar[ovlStage]);
break;
case OVL_SETUP_ZONESS:
changeOvl = Overlay_Init(&sOvli3_Zoness[ovlStage]);
break;
case OVL_SETUP_VENOM_ANDROSS:
changeOvl = Overlay_Init(&sOvli6_Andross[ovlStage]);
break;
case OVL_SETUP_TRAINING:
changeOvl = Overlay_Init(&sOvli1_Training[ovlStage]);
break;
case OVL_SETUP_VENOM_1:
changeOvl = Overlay_Init(&sOvli1_Venom1[ovlStage]);
break;
case OVL_SETUP_VENOM_2:
changeOvl = Overlay_Init(&sOvli6_Venom2[ovlStage]);
break;
case OVL_SETUP_20:
changeOvl = Overlay_Init(&sOvli2_Setup20[ovlStage]);
break;
case OVL_SETUP_BOLSE:
changeOvl = Overlay_Init(&sOvli4_Bolse[ovlStage]);
break;
case OVL_SETUP_KATINA:
changeOvl = Overlay_Init(&sOvli4_Katina[ovlStage]);
break;
case OVL_SETUP_MACBETH:
changeOvl = Overlay_Init(&sOvli5_Macbeth[ovlStage]);
break;
case OVL_SETUP_VERSUS:
changeOvl = Overlay_Init(&sOvli2_Versus[ovlStage]);
if (changeOvl == true) {
Audio_SetAudioSpec(3, 0x310);
}
break;
case OVL_SETUP_LOGO:
changeOvl = Overlay_Init(&sNoOvl_Logo[ovlStage]); // Logo does not load an overlay file
if (changeOvl == true) {
Audio_SetAudioSpec(0, 0xE);
}
break;
case OVL_SETUP_CREDITS:
changeOvl = Overlay_Init(&sOvlending_Ending[ovlStage]);
break;
default:
(void) "DMA MODE ERROR %d\n";
changeOvl = false;
break;
}
return changeOvl;
}
void Overlay_InitDma(void) {
Lib_DmaRead(SEGMENT_ROM_START(dma_table), SEGMENT_VRAM_START(dma_table), SEGMENT_ROM_SIZE(dma_table));
Overlay_LoadSegment(SEGMENT_ROM_START(ast_radio), SEGMENT_VRAM_START(ast_radio), SEGMENT_ROM_SIZE(ast_radio));
}
+810
View File
@@ -0,0 +1,810 @@
#include "sf64dma.h"
#define NO_SEGMENT \
{ NULL, NULL }
#define OVERLAY_OFFSETS(file) \
{ \
{ SEGMENT_ROM_START(file), SEGMENT_ROM_END(file) }, { SEGMENT_BSS_START(file), SEGMENT_BSS_END(file) }, \
{ SEGMENT_TEXT_START(file), SEGMENT_TEXT_END(file) }, { \
SEGMENT_DATA_START(file), SEGMENT_RODATA_END(file) \
} \
}
#define NO_OVERLAY \
{ \
{ NULL, NULL }, { NULL, NULL }, { NULL, NULL }, { \
NULL, NULL \
} \
}
#define ROM_SEGMENT(file) \
{ SEGMENT_ROM_START(file), SEGMENT_ROM_END(file) }
OverlayInit sNoOvl_Logo[1] = {
{ NO_OVERLAY,
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ NO_SEGMENT,
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ ROM_SEGMENT(ast_logo) } },
};
OverlayInit sOvlending_Ending[6] = {
{ OVERLAY_OFFSETS(ovl_ending),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ ROM_SEGMENT(ast_ending),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_ending),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_title),
/* 0x7 */ ROM_SEGMENT(ast_ending),
/* 0x8 */ ROM_SEGMENT(ast_ending_award_front),
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_ending),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_title),
/* 0x7 */ ROM_SEGMENT(ast_ending),
/* 0x8 */ ROM_SEGMENT(ast_ending_award_back),
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_ending),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_title),
/* 0x7 */ ROM_SEGMENT(ast_ending),
/* 0x8 */ ROM_SEGMENT(ast_ending_expert),
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_ending),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_title),
/* 0x7 */ ROM_SEGMENT(ast_ending),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_ending),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ ROM_SEGMENT(ast_ending),
/* 0x8 */ ROM_SEGMENT(ast_ending_expert),
/* 0x9 */ ROM_SEGMENT(ast_font_3d),
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvlmenu_Title[1] = {
{ OVERLAY_OFFSETS(ovl_menu),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_title),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvlmenu_Option[1] = {
{ OVERLAY_OFFSETS(ovl_menu),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_map),
/* 0x7 */ ROM_SEGMENT(ast_vs_menu),
/* 0x8 */ ROM_SEGMENT(ast_option),
/* 0x9 */ ROM_SEGMENT(ast_font_3d),
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvlmenu_Map[1] = {
{ OVERLAY_OFFSETS(ovl_menu),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_map),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ ROM_SEGMENT(ast_font_3d),
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvlmenu_GameOver[1] = {
{ OVERLAY_OFFSETS(ovl_menu),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ ROM_SEGMENT(ast_andross),
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli1_Corneria[1] = {
{ OVERLAY_OFFSETS(ovl_i1),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_corneria),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli2_Meteo[2] = {
{ OVERLAY_OFFSETS(ovl_i2),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_meteo),
/* 0x7 */ ROM_SEGMENT(ast_warp_zone),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i2),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_meteo),
/* 0x7 */ ROM_SEGMENT(ast_warp_zone),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli5_Titania[6] = {
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_titania),
/* 0x7 */ ROM_SEGMENT(ast_7_ti_1),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_titania),
/* 0x7 */ ROM_SEGMENT(ast_7_ti_2),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_titania),
/* 0x7 */ ROM_SEGMENT(ast_7_ti_2),
/* 0x8 */ ROM_SEGMENT(ast_8_ti),
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_titania),
/* 0x7 */ ROM_SEGMENT(ast_7_ti_2),
/* 0x8 */ ROM_SEGMENT(ast_8_ti),
/* 0x9 */ ROM_SEGMENT(ast_9_ti),
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_titania),
/* 0x7 */ ROM_SEGMENT(ast_7_ti_2),
/* 0x8 */ ROM_SEGMENT(ast_8_ti),
/* 0x9 */ ROM_SEGMENT(ast_9_ti),
/* 0xA */ ROM_SEGMENT(ast_A_ti),
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_titania),
/* 0x7 */ ROM_SEGMENT(ast_7_ti_2),
/* 0x8 */ ROM_SEGMENT(ast_8_ti),
/* 0x9 */ ROM_SEGMENT(ast_9_ti),
/* 0xA */ ROM_SEGMENT(ast_A_ti),
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli2_SectorX[2] = {
{ OVERLAY_OFFSETS(ovl_i2),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_sector_x),
/* 0x7 */ ROM_SEGMENT(ast_warp_zone),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i2),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_sector_x),
/* 0x7 */ ROM_SEGMENT(ast_warp_zone),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli4_SectorZ[1] = {
{ OVERLAY_OFFSETS(ovl_i4),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_sector_z),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli3_Aquas[1] = {
{ OVERLAY_OFFSETS(ovl_i3),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_blue_marine),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_aquas),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli3_Area6[1] = {
{ OVERLAY_OFFSETS(ovl_i3),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_area_6),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli4_Fortuna[2] = {
{ OVERLAY_OFFSETS(ovl_i4),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_fortuna),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ ROM_SEGMENT(ast_star_wolf) } },
{ OVERLAY_OFFSETS(ovl_i4),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_fortuna),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli3_Unk4[1] = {
{ OVERLAY_OFFSETS(ovl_i3),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_area_6),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli6_SectorY[1] = {
{ OVERLAY_OFFSETS(ovl_i6),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_sector_y),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli3_Solar[1] = {
{ OVERLAY_OFFSETS(ovl_i3),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_solar),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli3_Zoness[1] = {
{ OVERLAY_OFFSETS(ovl_i3),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_zoness),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli1_Venom1[1] = {
{ OVERLAY_OFFSETS(ovl_i1),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_venom_1),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ ROM_SEGMENT(ast_ve1_boss),
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli6_Andross[1] = {
{ OVERLAY_OFFSETS(ovl_i6),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_venom_2),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ ROM_SEGMENT(ast_andross),
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli6_Venom2[2] = {
{ OVERLAY_OFFSETS(ovl_i6),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_venom_2),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ ROM_SEGMENT(ast_star_wolf) } },
{ OVERLAY_OFFSETS(ovl_i6),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_venom_2),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli2_Setup20[1] = {
{ OVERLAY_OFFSETS(ovl_i2),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_ve1_boss),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli4_Bolse[1] = {
{ OVERLAY_OFFSETS(ovl_i4),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_bolse),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ ROM_SEGMENT(ast_star_wolf) } },
};
OverlayInit sOvli4_Katina[1] = {
{ OVERLAY_OFFSETS(ovl_i4),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_katina),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ NO_SEGMENT,
/* 0xF */ ROM_SEGMENT(ast_star_wolf) } },
};
OverlayInit sOvli5_Macbeth[2] = {
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_macbeth),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ ROM_SEGMENT(ast_allies),
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i5),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_landmaster),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_macbeth),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ ROM_SEGMENT(ast_great_fox),
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sOvli1_Training[1] = {
{ OVERLAY_OFFSETS(ovl_i1),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_arwing),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ ROM_SEGMENT(ast_training),
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ ROM_SEGMENT(ast_star_wolf) } },
};
OverlayInit sOvli2_Versus[2] = {
{ OVERLAY_OFFSETS(ovl_i2),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_planet),
/* 0x3 */ ROM_SEGMENT(ast_versus),
/* 0x4 */ ROM_SEGMENT(ast_enmy_planet),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ ROM_SEGMENT(ast_vs_menu),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
{ OVERLAY_OFFSETS(ovl_i2),
{ /* 0x1 */ ROM_SEGMENT(ast_common),
/* 0x2 */ ROM_SEGMENT(ast_bg_space),
/* 0x3 */ ROM_SEGMENT(ast_versus),
/* 0x4 */ ROM_SEGMENT(ast_enmy_space),
/* 0x5 */ ROM_SEGMENT(ast_font),
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ ROM_SEGMENT(ast_vs_menu),
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
OverlayInit sUnused_Overlay[1] = {
{ OVERLAY_OFFSETS(ovl_unused),
{ /* 0x1 */ NO_SEGMENT,
/* 0x2 */ NO_SEGMENT,
/* 0x3 */ NO_SEGMENT,
/* 0x4 */ NO_SEGMENT,
/* 0x5 */ NO_SEGMENT,
/* 0x6 */ NO_SEGMENT,
/* 0x7 */ NO_SEGMENT,
/* 0x8 */ NO_SEGMENT,
/* 0x9 */ NO_SEGMENT,
/* 0xA */ NO_SEGMENT,
/* 0xB */ NO_SEGMENT,
/* 0xC */ NO_SEGMENT,
/* 0xD */ NO_SEGMENT,
/* 0xE */ NO_SEGMENT,
/* 0xF */ NO_SEGMENT } },
};
+189
View File
@@ -0,0 +1,189 @@
#include "global.h"
u16* Message_PtrFromId(u16 msgId) {
s32 i;
MsgLookup* lookup = gMsgLookup;
while (lookup->msgId != -1) {
if (lookup->msgId == msgId) {
return lookup->msgPtr;
}
lookup++;
}
return NULL;
}
u16 Message_IdFromPtr(u16* msgPtr) {
s32 i;
MsgLookup* lookup = gMsgLookup;
while (lookup->msgPtr != NULL) {
if (lookup->msgPtr == msgPtr) {
return lookup->msgId;
}
lookup++;
}
return -1;
}
s32 Message_GetWidth(u16* msgPtr) {
s32 width = 0;
u16* msgChar = msgPtr;
while (*msgChar != MSGCHAR_END) {
if (*msgChar > 15 || *msgChar == 12) {
width++;
}
msgChar++;
}
return width;
}
s32 Message_GetCharCount(u16* msgPtr) {
s32 count = 0;
u16* msgChar = msgPtr;
while (*msgChar != 0) {
count++;
msgChar++;
}
return count;
}
void Message_DisplayChar(Gfx** gfxPtr, u16 msgChar, s32 xpos, s32 ypos) {
gDPLoadTextureBlock_4b((*gfxPtr)++, gTextCharTextures[msgChar >> 2], G_IM_FMT_CI, 16, 13, msgChar & 3,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPTextureRectangle((*gfxPtr)++, xpos << 2, ypos << 2, (xpos + 13) << 2, (ypos + 13) << 2, G_TX_RENDERTILE, 0x40, 0,
0x400, 0x400);
}
bool Message_DisplayText(Gfx** gfxPtr, u16* msgPtr, s32 xPos, s32 yPos, s32 len) {
s32 xChar = xPos;
s32 yChar = yPos;
s32 i;
s32 print;
gDPSetPrimColor((*gfxPtr)++, 0x00, 0x00, 255, 255, 255, 255);
gDPSetTextureLUT((*gfxPtr)++, G_TT_RGBA16);
gDPLoadTLUT((*gfxPtr)++, 64, 0x100, gTextCharPalettes);
// bug: if the for loop is skipped, print is never initialized
for (i = 0; msgPtr[i] != MSGCHAR_END && i < len; i++) {
print = false;
switch (msgPtr[i]) {
case MSGCHAR_NWL:
xChar = xPos;
yChar += 13;
break;
case MSGCHAR_CLF:
case MSGCHAR_CUP:
case MSGCHAR_CRT:
case MSGCHAR_CDN:
gDPSetPrimColor((*gfxPtr)++, 0x00, 0x00, 255, 255, 0, 255);
Message_DisplayChar(gfxPtr, msgPtr[i], xChar, yChar);
xChar += 14;
print = true;
gDPSetPrimColor((*gfxPtr)++, 0x00, 0x00, 255, 255, 255, 255);
break;
case MSGCHAR_SPC:
default:
Message_DisplayChar(gfxPtr, msgPtr[i], xChar, yChar);
xChar += 7;
print = true;
break;
case MSGCHAR_NP2:
case MSGCHAR_NP3:
case MSGCHAR_NP4:
case MSGCHAR_NP5:
case MSGCHAR_NP6:
case MSGCHAR_NP7:
case MSGCHAR_PRI0:
case MSGCHAR_PRI1:
case MSGCHAR_PRI2:
case MSGCHAR_PRI3:
case MSGCHAR_QSP:
case MSGCHAR_HSP:
case MSGCHAR_NPF:
break;
}
}
return print;
}
void Message_DisplayScrollingText(Gfx** gfxPtr, u16* msgPtr, s32 xPos, s32 yPos, s32 yRangeHi, s32 yRangeLo, s32 len) {
s32 var_s2 = xPos;
s32 var_s4 = yPos;
s32 i;
gDPSetTextureLUT((*gfxPtr)++, G_TT_RGBA16);
gDPLoadTLUT((*gfxPtr)++, 64, 0x100, gTextCharPalettes);
for (i = 0; msgPtr[i] != 0 && i < len; i++) {
switch (msgPtr[i]) {
case MSGCHAR_NWL:
var_s2 = xPos;
var_s4 += 15;
break;
case MSGCHAR_QSP:
var_s2 += 2;
break;
case MSGCHAR_HSP:
var_s2 += 3;
break;
case MSGCHAR_SPC:
var_s2 += 7;
break;
default:
if ((yRangeLo < var_s4) && (var_s4 < yRangeHi)) {
Message_DisplayChar(gfxPtr, msgPtr[i], var_s2, var_s4);
}
var_s2 += 7;
break;
case MSGCHAR_NP2:
case MSGCHAR_NP3:
case MSGCHAR_NP4:
case MSGCHAR_NP5:
case MSGCHAR_NP6:
case MSGCHAR_NP7:
case MSGCHAR_PRI0:
case MSGCHAR_PRI1:
case MSGCHAR_PRI2:
case MSGCHAR_PRI3:
case MSGCHAR_NPF:
break;
}
}
}
bool Message_IsPrintingChar(u16* msgPtr, s32 charPos) {
s32 i;
s32 print;
// bug: if the for loop is skipped, print is never initialized
for (i = 0; msgPtr[i] != 0 && i < charPos; i++) {
print = false;
switch (msgPtr[i]) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
break;
default:
print = true;
break;
}
}
return print;
}
+32
View File
@@ -0,0 +1,32 @@
#include "gfx.h"
// clang-format off
u16 gTextCharPalettes[4][16] = {
{
0x0000, 0xFFFF, 0x0000, 0xFFFF,
0x0000, 0xFFFF, 0x0000, 0xFFFF,
0x0000, 0xFFFF, 0x0000, 0xFFFF,
0x0000, 0xFFFF, 0x0000, 0xFFFF,
},
{
0x0000, 0x0000, 0xFFFF, 0xFFFF,
0x0000, 0x0000, 0xFFFF, 0xFFFF,
0x0000, 0x0000, 0xFFFF, 0xFFFF,
0x0000, 0x0000, 0xFFFF, 0xFFFF,
},
{
0x0000, 0x0000, 0x0000, 0x0000,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x0000, 0x0000, 0x0000, 0x0000,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
},
{
0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
}
};
// clang-format on
File diff suppressed because it is too large Load Diff
+891
View File
@@ -0,0 +1,891 @@
/*
* File: fox_title.c
* System: Radio
* Description: Starfox Radio Handler
*/
#include "global.h"
#include "assets/ast_allies.h"
#include "assets/ast_corneria.h"
#include "assets/ast_meteo.h"
#include "assets/ast_training.h"
#include "assets/ast_sector_x.h"
#include "assets/ast_sector_y.h"
#include "assets/ast_macbeth.h"
#include "assets/ast_star_wolf.h"
#include "assets/ast_great_fox.h"
#include "assets/ast_area_6.h"
#include "assets/ast_title.h"
#include "assets/ast_zoness.h"
u16** D_radio_80178720;
s32 D_radio_80178724;
s32 D_radio_80178728;
s32 D_radio_8017872C;
f32 D_radio_80178730;
f32 D_radio_80178734;
f32 D_radio_80178738;
f32 D_radio_8017873C;
f32 D_radio_80178740;
s32 gCurrentMsgPri = 0;
void func_radio_800BA760(void) {
RCP_SetupDL_36();
if (D_ctx_80177D50 == 1.3f) {
D_ctx_801782F8 = Message_IsPrintingChar(D_ctx_80178308, D_ctx_801782D8);
}
}
s32 func_radio_800BA7BC(u16* msg, s32 priority) {
if (priority == gCurrentMsgPri) {
return 0;
}
if (priority < gCurrentMsgPri) {
return 1;
}
if (gCurrentMsgPri < priority) {
gCurrentMsgPri = priority;
return 2;
}
}
void Radio_PlayMessage(u16* msg, RadioCharacterId character) {
s32 var_v1;
s32 temp_v0;
s32 priority;
switch (msg[0]) {
default:
case MSGCHAR_PRI0:
priority = 0;
break;
case MSGCHAR_PRI1:
priority = 1;
break;
case MSGCHAR_PRI2:
priority = 2;
break;
case MSGCHAR_PRI3:
priority = 3;
break;
}
if (gGameState == GSTATE_PLAY) {
if ((character == RCID_FALCO) || (character == RCID_SLIPPY) || (character == RCID_PEPPY)) {
if (character == RCID_FALCO) {
var_v1 = 1;
}
if (character == RCID_SLIPPY) {
var_v1 = 2;
}
if (character == RCID_PEPPY) {
var_v1 = 3;
}
if ((gTeamShields[var_v1] <= 0) && (gTeamShields[var_v1] != -2)) {
return;
}
}
}
if ((gRadioState != 0) && (func_radio_800BA7BC(msg, priority) == 1)) {
return;
}
gCurrentMsgPri = priority;
D_ctx_80177D68 = character;
if (gExpertMode && ((character == RCID_FOX) || (character == RCID_FOX_RED))) {
D_ctx_80177D68 = RCID_FOX_EXPERT;
}
if (gCurrentLevel == LEVEL_VENOM_2) {
switch (character) {
case RCID_WOLF:
D_ctx_80177D68 = RCID_WOLF_2;
break;
case RCID_PIGMA:
D_ctx_80177D68 = RCID_PIGMA_2;
break;
case RCID_LEON:
D_ctx_80177D68 = RCID_LEON_2;
break;
case RCID_ANDREW:
D_ctx_80177D68 = RCID_ANDREW_2;
break;
}
}
D_ctx_80178308 = msg;
gRadioState = 100;
switch (gGameState) {
case GSTATE_TITLE:
case GSTATE_CREDITS:
D_radio_8017872C = 176;
D_radio_80178728 = 85;
D_radio_80178730 = 80.0f;
D_radio_80178734 = 174.0f;
D_radio_80178738 = 4.63f;
D_radio_8017873C = 32.0f;
D_radio_80178740 = 174.0f;
break;
case GSTATE_PLAY:
D_radio_8017872C = 180;
D_radio_80178728 = 79;
D_radio_80178730 = 74.0f;
D_radio_80178734 = 178.0f;
D_radio_80178738 = 4.53f;
D_radio_8017873C = 26.0f;
D_radio_80178740 = 178.0f;
break;
}
D_ctx_801782E8 = Message_IdFromPtr(msg);
Audio_PlayVoice(D_ctx_801782E8);
}
s32 D_radio_80178744;
void func_radio_800BAAE8(void) {
static f32 D_800D4A74 = -1.0f;
u16* sp44;
s32 mirror;
s32 i;
f32 sp38;
f32 temp_fa0;
s32 j;
D_radio_80178744 = 0;
mirror = false;
switch (D_ctx_801782A4) {
case RCID_FOX_RED:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_FOX:
sp44 = D_10050E0;
break;
case RCID_FOX_RED_OPEN:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_FOX_OPEN:
sp44 = D_1006000;
break;
case RCID_FOX_EXPERT:
sp44 = D_1006F20;
break;
case RCID_FOX_EXPERT_OPEN:
sp44 = D_1007E40;
break;
case RCID_FALCO_RED:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_FALCO:
sp44 = D_10032A0;
break;
case RCID_FALCO_RED_OPEN:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_FALCO_OPEN:
sp44 = D_10041C0;
break;
case RCID_SLIPPY_RED:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_SLIPPY:
sp44 = D_100D900;
break;
case RCID_SLIPPY_RED_OPEN:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_SLIPPY_OPEN:
sp44 = D_100E820;
break;
case RCID_PEPPY_RED:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_PEPPY:
sp44 = D_100BAC0;
break;
case RCID_PEPPY_RED_OPEN:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_PEPPY_OPEN:
sp44 = D_100C9E0;
break;
case RCID_WOLF:
sp44 = D_STAR_WOLF_F00B580;
break;
case RCID_WOLF_OPEN:
sp44 = D_STAR_WOLF_F00C4A0;
break;
case RCID_PIGMA:
sp44 = D_STAR_WOLF_F003C80;
break;
case RCID_PIGMA_OPEN:
sp44 = D_STAR_WOLF_F004BA0;
break;
case RCID_LEON:
sp44 = D_STAR_WOLF_F007900;
break;
case RCID_LEON_OPEN:
sp44 = D_STAR_WOLF_F008820;
break;
case RCID_ANDREW:
sp44 = D_STAR_WOLF_F000000;
break;
case RCID_ANDREW_OPEN:
sp44 = D_STAR_WOLF_F000F20;
break;
case RCID_WOLF_2:
sp44 = D_STAR_WOLF_F00D3C0;
break;
case RCID_WOLF_2_OPEN:
sp44 = D_STAR_WOLF_F00E2E0;
break;
case RCID_PIGMA_2:
sp44 = D_STAR_WOLF_F005AC0;
break;
case RCID_PIGMA_2_OPEN:
sp44 = D_STAR_WOLF_F0069E0;
break;
case RCID_LEON_2:
sp44 = D_STAR_WOLF_F009740;
break;
case RCID_LEON_2_OPEN:
sp44 = D_STAR_WOLF_F00A660;
break;
case RCID_ANDREW_2:
sp44 = D_STAR_WOLF_F001E40;
break;
case RCID_ANDREW_2_OPEN:
sp44 = D_STAR_WOLF_F002D60;
break;
case RCID_BOSS_CORNERIA:
sp44 = D_CO_6026420;
break;
case RCID_BOSS_CORNERIA_OPEN:
sp44 = D_CO_6027340;
break;
case RCID_BOSS_CORNERIA2:
sp44 = D_CO_60245E0;
break;
case RCID_BOSS_CORNERIA2_OPEN:
sp44 = D_CO_6025500;
break;
case RCID_BOSS_METEO:
sp44 = D_ME_601C8E0;
break;
case RCID_BOSS_METEO_OPEN:
sp44 = D_ME_601D800;
break;
case RCID_BOSS_AREA6:
sp44 = D_A6_60047E0;
break;
case RCID_BOSS_AREA6_OPEN:
sp44 = D_A6_6005700;
break;
case RCID_CAIMAN_AREA6:
sp44 = D_A6_60029A0;
break;
case RCID_CAIMAN_AREA6_OPEN:
sp44 = D_A6_60038C0;
break;
case RCID_BOSS_ZONESS:
sp44 = D_ZO_6014510;
break;
case RCID_BOSS_ZONESS_OPEN:
sp44 = D_ZO_6015430;
break;
case RCID_BOSS_SECTORX:
sp44 = D_SX_6020FB0;
break;
case RCID_BOSS_SECTORX_OPEN:
sp44 = D_SX_6021ED0;
break;
case RCID_BOSS_SECTORY:
sp44 = D_SY_6018F30;
break;
case RCID_BOSS_SECTORY_OPEN:
sp44 = D_SY_6019E50;
break;
case RCID_BOSS_MACBETH:
sp44 = D_MA_6010C20;
break;
case RCID_BOSS_MACBETH_OPEN:
sp44 = D_MA_6011B40;
break;
case RCID_ROB64_RED:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_ROB64:
case RCID_ROB64_2:
sp44 = D_1009C80;
break;
case RCID_ROB64_RED_OPEN:
D_radio_80178744 = 1;
/* fallthrough */
case RCID_ROB64_OPEN:
case RCID_ROB64_2_OPEN:
sp44 = D_100ABA0;
break;
case RCID_KATT:
sp44 = D_D003DF0;
break;
case RCID_KATT_OPEN:
sp44 = D_D004D10;
break;
case RCID_ANDROSS_RED:
case RCID_ANDROSS:
sp44 = D_D000170;
if ((gGameState == GSTATE_PLAY) && (gCurrentLevel == LEVEL_AREA_6)) {
sp44 = D_A6_6000B60;
}
D_radio_80178744 = 1;
break;
case RCID_ANDROSS_RED_OPEN:
case RCID_ANDROSS_OPEN:
sp44 = D_D001090;
if ((gGameState == GSTATE_PLAY) && (gCurrentLevel == LEVEL_AREA_6)) {
sp44 = D_A6_6001A80;
}
D_radio_80178744 = 1;
break;
case RCID_JAMES:
sp44 = D_D005C30;
break;
case RCID_JAMES_OPEN:
sp44 = D_D006B50;
break;
case RCID_BILL:
sp44 = D_D001FB0;
break;
case RCID_BILL_OPEN:
sp44 = D_D002ED0;
break;
case RCID_GEN_PEPPER:
sp44 = D_D007A70;
break;
case RCID_GEN_PEPPER_OPEN:
sp44 = D_D008990;
break;
case RCID_ROB64_TITLE:
sp44 = D_GREAT_FOX_E00E100;
break;
case RCID_ROB64_TITLE_OPEN:
sp44 = D_GREAT_FOX_E00F020;
break;
case RCID_GEN_PEPPER_TITLE:
sp44 = D_GREAT_FOX_E00FF40;
break;
case RCID_GEN_PEPPER_TITLE_OPEN:
sp44 = D_GREAT_FOX_E010E60;
break;
case RCID_TR:
sp44 = D_TR_6000900;
break;
case RCID_TR_OPEN:
sp44 = D_TR_6001820;
break;
case RCID_STATIC_FLIP:
mirror = true;
/* fallthrough */
case RCID_STATIC:
switch (gGameState) {
default:
sp44 = NULL;
break;
case GSTATE_PLAY:
sp44 = D_1008D60;
break;
case GSTATE_TITLE:
case GSTATE_CREDITS:
sp44 = gTitleRadioStatic;
break;
}
if (((s32) D_ctx_80177D68 == RCID_ANDROSS) || ((s32) D_ctx_80177D68 == RCID_ANDROSS_RED)) {
D_radio_80178744 = 1;
}
break;
}
if ((sp44 != NULL) && (D_ctx_80177D38 != 0.0f)) {
temp_fa0 = (2.0f * D_ctx_80177D38) + D_radio_80178740;
if ((D_radio_80178740 + 20.0f) <= temp_fa0) {
D_800D4A74 = 1.0f;
}
if (temp_fa0 <= D_radio_80178740) {
D_800D4A74 = -1.0f;
}
sp38 = D_ctx_80177D38 * 20.0f * D_800D4A74;
RCP_SetupDL_76();
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
if (mirror) {
for (i = 0, j = 0; i < 2; i++, j += 880) {
TextureRect_16bRGBA_MirX(&gMasterDisp, &sp44[j], 44, 20, D_radio_8017873C,
D_radio_80178740 + 20.0f + sp38 + (i * 20.0f * D_ctx_80177D38), 1.0f,
D_ctx_80177D38);
}
TextureRect_16bRGBA_MirX(&gMasterDisp, &sp44[2 * 880], 44, 4, D_radio_8017873C,
D_radio_80178740 + 20.0f + sp38 + (40.0f * D_ctx_80177D38), 1.0f, D_ctx_80177D38);
} else {
for (i = 0, j = 0; i < 2; i++, j += 880) {
TextureRect_16bRGBA(&gMasterDisp, &sp44[j], 44, 20, D_radio_8017873C,
D_radio_80178740 + 20.0f + sp38 + (i * 20.0f * D_ctx_80177D38), 1.0f,
D_ctx_80177D38);
}
TextureRect_16bRGBA(&gMasterDisp, &sp44[2 * 880], 44, 4, D_radio_8017873C,
D_radio_80178740 + 20.0f + sp38 + (40.0f * D_ctx_80177D38), 1.0f, D_ctx_80177D38);
}
}
}
void func_radio_800BB388(void) {
static f32 D_800D4A78 = -1.0f;
f32 temp_fa0;
u8* sp38;
u16* sp34;
f32 sp30;
if ((gGameState != GSTATE_MAP) && (D_ctx_80177D50 != 0.0f)) {
temp_fa0 = (D_ctx_80177D50 / 0.26f) * 3.0f;
if ((D_radio_80178734 + 16.0f) <= temp_fa0 + D_radio_80178734) {
D_800D4A78 = 1.0f;
}
if (temp_fa0 + D_radio_80178734 <= D_radio_80178734) {
D_800D4A78 = -1.0f;
}
sp30 = temp_fa0 * D_800D4A78;
RCP_SetupDL(&gMasterDisp, 0x55);
switch (gGameState) {
case GSTATE_TITLE:
case GSTATE_CREDITS:
sp38 = D_TITLE_601D750;
sp34 = D_TITLE_601DB50;
break;
case GSTATE_PLAY:
sp38 = D_1013170;
sp34 = D_1013570;
break;
}
if (D_radio_80178744 == 1) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 25, 25, 170);
} else {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 60, 60, 255, 170);
}
TextureRect_8bCI(&gMasterDisp, sp38, sp34, 32, 32, D_radio_80178730, D_radio_80178734 + 16.0f + sp30,
D_radio_80178738, D_ctx_80177D50);
}
if (D_ctx_80177D50 == 1.3f) {
RCP_SetupDL(&gMasterDisp, 0x55);
D_ctx_801782F8 =
Message_DisplayText(&gMasterDisp, D_ctx_80178308, D_radio_80178728, D_radio_8017872C, D_ctx_801782D8);
}
}
s32 D_radio_80178748;
s32 D_radio_8017874C;
void func_radio_800BB5D0(void) {
s32 var_v1;
s32 temp_ft0;
u32 temp_v0;
s32 fakeTemp;
if ((D_ctx_80177854 == 100) && (gGameState != GSTATE_CREDITS)) {
return;
}
if (D_Timer_801782AC > 0) {
D_Timer_801782AC--;
}
if (D_Timer_801782B4 > 0) {
D_Timer_801782B4--;
}
switch (gRadioState) {
case 100:
D_radio_80178748 = 1;
D_ctx_801782A4 = 1000;
gRadioState = 1;
D_ctx_801782D8 = 0;
D_ctx_80177D38 = 0.0f;
D_ctx_80177D50 = 0.0f;
D_radio_8017874C = 0;
if (gCamCount != 1) {
gRadioState = 0;
}
break;
case 1:
D_ctx_80177D38 += 0.25f;
if (D_ctx_80177D38 == 1.0f) {
gRadioState++;
D_Timer_801782AC = 10;
}
D_ctx_801782A4 = 2;
if (gGameFrameCount & 1) {
D_ctx_801782A4 = 3;
}
break;
case 2:
if (D_Timer_801782AC == 0) {
gRadioState++;
D_Timer_801782AC = 10;
}
D_ctx_801782A4 = 2;
if (gGameFrameCount & 1) {
D_ctx_801782A4 = 3;
}
break;
case 3:
if (D_Timer_801782AC == 0) {
gRadioState++;
temp_v0 = Message_GetWidth(D_ctx_80178308);
if (D_80137E78 == 3) {
D_Timer_801782AC = temp_v0 + 16;
} else {
D_Timer_801782AC = (2 * temp_v0) + 16;
}
if ((gGameState == GSTATE_TITLE) || (gGameState == GSTATE_CREDITS)) {
D_Timer_801782AC = temp_v0 * 2;
}
}
D_ctx_801782A4 = (s32) D_ctx_80177D68;
D_ctx_80177D50 += 0.26f;
if (D_ctx_80177D50 > 1.3f) {
D_ctx_80177D50 = 1.3f;
}
break;
case 31:
gRadioState++;
D_Timer_801782AC = 80 - D_Timer_801782AC;
break;
case 32:
if (Audio_GetCurrentVoice() == 0) {
D_radio_80178724++;
D_ctx_80178308 = D_radio_80178720[D_radio_80178724];
Audio_PlayVoice(Message_IdFromPtr(D_ctx_80178308));
D_ctx_801782D8 = 0;
D_radio_8017874C = 0;
D_Timer_801782AC = 80;
D_Timer_801782AC = Message_GetWidth(D_ctx_80178308) * 2;
gRadioState = 4;
}
break;
case 4:
if ((Audio_GetCurrentVoice() == 0) && (D_Timer_801782AC == 0)) {
D_Timer_801782AC = 10;
D_ctx_801782A4 = (s32) D_ctx_80177D68;
gRadioState = 6;
}
D_ctx_801782A4 = (s32) D_ctx_80177D68;
if (D_Timer_801782B4 > 0) {
D_ctx_801782A4 = (s32) D_ctx_80177D68 + 1;
}
if (!D_80137E78) {}
if (1) {
fakeTemp = 0;
}
if (!(fakeTemp)) {
temp_v0 = Audio_GetCurrentVoiceStatus();
if (D_ctx_801782D8 < 60) {
if (D_ctx_80178308[D_ctx_801782D8 + 1] == MSGCHAR_NPF) {
if (temp_v0 == 0) {
gRadioState = 31;
}
} else {
D_ctx_801782D8++;
}
}
if (D_radio_8017874C != 0) {
if ((D_ctx_801782E8 >= 23000) && (D_ctx_801782E8 < 23033)) {
if (D_ctx_801782F8 != 0) {
D_Timer_801782B4 = 2;
AUDIO_PLAY_SFX(0x49000017, gDefaultSfxSource, 4);
}
} else if (temp_v0 == 1) {
D_Timer_801782B4 = 2;
} else {
D_Timer_801782B4 = 0;
}
}
}
D_radio_8017874C ^= 1;
break;
case 5:
if (D_Timer_801782AC == 0) {
gRadioState++;
D_Timer_801782AC = 10;
}
D_ctx_801782A4 = (s32) D_ctx_80177D68;
break;
case 6:
if (D_Timer_801782AC == 0) {
if (gGameState == GSTATE_CREDITS) {
Audio_ClearVoice();
} else {
Audio_PlayVoice(0);
}
gRadioState++;
}
D_ctx_801782A4 = 2;
if (gGameFrameCount & 1) {
D_ctx_801782A4 = 3;
}
D_ctx_80177D50 -= 0.26f;
if (D_ctx_80177D50 < 0.0f) {
D_ctx_80177D50 = 0.0f;
}
break;
case 7:
D_ctx_80177D38 -= 0.25f;
if (D_ctx_80177D38 == 0) {
D_ctx_80178300 = 0;
gCurrentMsgPri = 0;
gRadioState = 0;
}
D_ctx_801782A4 = 2;
if (gGameFrameCount & 1) {
D_ctx_801782A4 = 3;
}
break;
case 8:
D_ctx_801782A4 = (s32) D_ctx_80177D68;
D_ctx_80177D50 = 1.3f;
D_ctx_80177D38 = 1.0f;
break;
case 0:
break;
}
if (((gRadioState > 0) && (gRadioState != 100)) && (D_ctx_80178300 == 0)) {
func_radio_800BAAE8();
func_radio_800BB388();
temp_ft0 = (s32) D_ctx_80177D68;
if (((temp_ft0 == RCID_FALCO) || (temp_ft0 == RCID_SLIPPY)) || (temp_ft0 == RCID_PEPPY)) {
if (temp_ft0 == RCID_FALCO) {
var_v1 = 1;
}
if (temp_ft0 == RCID_SLIPPY) {
var_v1 = 2;
}
if (temp_ft0 == RCID_PEPPY) {
var_v1 = 3;
}
if ((gTeamShields[var_v1] <= 0) && (gGameFrameCount & 4) && (gTeamShields[var_v1] != -2) &&
(D_ctx_801782A4 != 2) && (D_ctx_801782A4 != 3) && (D_ctx_801782A4 != 1000)) {
RCP_SetupDL(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
Graphics_DisplaySmallText(31, 167, 1.0f, 1.0f, "DOWN");
func_hud_80084B94(1);
}
if (((D_ctx_801782A4 != 2) && (D_ctx_801782A4 != 3)) && (D_ctx_801782A4 != 1000)) {
func_hud_80086110(22.0f, 165.0f, gTeamShields[var_v1]);
}
}
temp_ft0 = (s32) D_ctx_80177D68;
if ((temp_ft0 == RCID_WOLF) || (temp_ft0 == RCID_PIGMA) || (temp_ft0 == RCID_LEON) ||
(temp_ft0 == RCID_ANDREW) || (temp_ft0 == RCID_WOLF_2) || (temp_ft0 == RCID_PIGMA_2) ||
(temp_ft0 == RCID_LEON_2) || (temp_ft0 == RCID_ANDREW_2)) {
switch (temp_ft0) {
case RCID_WOLF:
case RCID_WOLF_2:
var_v1 = 4;
break;
case RCID_LEON:
case RCID_LEON_2:
var_v1 = 5;
break;
case RCID_PIGMA:
case RCID_PIGMA_2:
var_v1 = 6;
break;
case RCID_ANDREW:
case RCID_ANDREW_2:
var_v1 = 7;
break;
default:
var_v1 = 0;
break;
}
if ((gActors[var_v1].obj.status != OBJ_ACTIVE) && (gGameFrameCount & 4) &&
(gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3) && (D_ctx_801782A4 != 2) && (D_ctx_801782A4 != 3) &&
(D_ctx_801782A4 != 1000)) {
RCP_SetupDL(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
Graphics_DisplaySmallText(31, 167, 1.0f, 1.0f, "DOWN");
}
if (((D_ctx_801782A4 != 2) && (D_ctx_801782A4 != 3)) && (D_ctx_801782A4 != 1000)) {
func_hud_80086110(22.0f, 165.0f, gActors[var_v1].health * 2.55f);
}
}
if (((D_ctx_801782A4 != 2) && (D_ctx_801782A4 != 3)) && (D_ctx_801782A4 != 1000)) {
func_hud_8008AD94();
}
}
if (D_ctx_80178300 == 1) {
func_radio_800BA760();
}
}
void func_radio_800BC040(void) {
if (D_ctx_80177854 != 100) {
if (D_Timer_801782AC > 0) {
D_Timer_801782AC--;
}
if (D_Timer_801782B4 > 0) {
D_Timer_801782B4--;
}
switch (gRadioState) {
case 100:
D_ctx_801782A4 = 1000;
gRadioState = 1;
D_ctx_80177D38 = 0.0f;
D_ctx_80177D50 = 0.0f;
D_ctx_801782D8 = Message_GetWidth(D_ctx_80178308);
if (gCamCount != 1) {
gRadioState = 0;
}
break;
case 1:
D_ctx_80177D38 += 0.02f;
if (D_ctx_80177D38 == 0.04f) {
gRadioState++;
D_Timer_801782AC = 5;
}
break;
case 2:
if (D_Timer_801782AC == 0) {
gRadioState++;
D_Timer_801782AC = 5;
}
D_ctx_801782A4 = 2;
if (gGameFrameCount & 1) {
D_ctx_801782A4 = 3;
}
break;
case 3:
if (D_Timer_801782AC == 0) {
gRadioState++;
D_Timer_801782AC = 5;
if (gGameState == GSTATE_TITLE) {
D_Timer_801782AC = 30;
}
}
D_ctx_801782A4 = (s32) D_ctx_80177D68;
D_ctx_80177D50 += 0.015f;
if (D_ctx_80177D50 > 0.07f) {
D_ctx_80177D50 = 0.07f;
}
break;
case 4:
if (D_Timer_801782AC == 0) {
gRadioState++;
D_Timer_801782AC = 10;
}
break;
case 5:
if (D_Timer_801782AC == 0) {
gRadioState++;
D_Timer_801782AC = 5;
}
D_ctx_801782A4 = (s32) D_ctx_80177D68;
break;
case 6:
if (D_Timer_801782AC == 0) {
Audio_PlayVoice(0);
gRadioState++;
}
D_ctx_801782A4 = 2;
if (gGameFrameCount & 1) {
D_ctx_801782A4 = 3;
}
D_ctx_80177D50 -= 0.015f;
if (D_ctx_80177D50 < 0.0f) {
D_ctx_80177D50 = 0.0f;
}
break;
case 7:
D_ctx_80177D38 -= 0.02f;
if (D_ctx_80177D38 == 0) {
gRadioState = 0;
D_Timer_801782AC = 5;
}
D_ctx_801782A4 = 2;
if (gGameFrameCount & 1) {
D_ctx_801782A4 = 3;
}
break;
case 0:
break;
}
if ((gRadioState > 0) && (gRadioState != 100)) {
func_radio_800BAAE8();
func_radio_800BB388();
if (((s32) D_ctx_80177D68 == RCID_FALCO) || ((s32) D_ctx_80177D68 == RCID_SLIPPY) ||
((s32) D_ctx_80177D68 == RCID_PEPPY)) {
Matrix_Push(&gGfxMatrix);
RCP_SetupDL_36();
Matrix_Translate(gGfxMatrix, -150.0f, -115.0f, -443.0f, 1);
Matrix_Scale(gGfxMatrix, 0.068f, 0.068f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gPlayerNum = 0;
Matrix_Pop(&gGfxMatrix);
}
}
}
}
+261
View File
@@ -0,0 +1,261 @@
#include "global.h"
#include "fox_rcp_setup.c"
u8 D_80178580[0x190];
void* D_80178710;
void RCP_SetupDL(Gfx** gfxP, s16 i) {
gSPDisplayList((*gfxP)++, &((Gfx*) gRcpSetupDLs)[i * 9]);
}
void RCP_SetFog(Gfx** gfxP, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gDPSetFogColor((*gfxP)++, r, g, b, a);
gSPFogPosition((*gfxP)++, near, far);
}
void dummy_800B8F08(void) {
}
void dummy_800B8F10(void) {
}
void RCP_SetupDL_0(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_0]);
}
void RCP_SetupDL_1(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_1]);
}
void RCP_SetupDL_11(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_11]);
}
void RCP_SetupDL_12(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_12]);
}
void RCP_SetupDL_2(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_2]);
}
void RCP_SetupDL_3(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_3]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_4(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_4]);
}
void RCP_SetupDL_7(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_7]);
}
void RCP_SetupDL_9(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_9]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_8(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_8]);
}
void RCP_SetupDL_13(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_13]);
}
void RCP_SetupDL_14(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_14]);
}
void RCP_SetupDL_17(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_17]);
}
void RCP_SetupDL_36(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_36]);
}
void RCP_SetupDL_52(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_52]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_62(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_62]);
}
void RCP_SetupDL_37(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_37]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_18(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_18]);
}
void RCP_SetupDL_20(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_20]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_19(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_19]);
}
void RCP_SetupDL_21(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_21]);
}
void RCP_SetupDL_33(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_33]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_34(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_34]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_40(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_40]);
}
void RCP_SetupDL_42(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_42]);
}
void RCP_SetupDL_43(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_43]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_60(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_60]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_47(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_47]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_66(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_66]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_55(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_55]);
}
void RCP_SetupDL_57(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_57]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_45(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_45]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_46(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_46]);
}
void RCP_SetupDL_41(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_41]);
}
void RCP_SetupDL_64(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_64]);
}
void RCP_SetupDL_64_2(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_64]);
}
void RCP_SetupDL_23(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_23]);
}
void RCP_SetupDL_29(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_29]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_30(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_30]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
void RCP_SetupDL_27(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_27]);
}
void RCP_SetupDL_32(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_32]);
}
void RCP_SetupDL_73(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_73]);
}
void RCP_SetupDL_76(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_76]);
}
void RCP_SetupDL_74(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_74]);
}
void RCP_SetupDL_78(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_78]);
}
void RCP_SetupDL_81(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_81]);
}
void RCP_SetupDL_48(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_48]);
}
void RCP_SetupDL_68(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_68]);
}
void RCP_SetupDL_49(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_49]);
}
void RCP_SetupDL_44(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_44]);
}
void RCP_SetupDL_50(void) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_50]);
}
void RCP_SetupDL_61(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far) {
gSPDisplayList(gMasterDisp++, gRcpSetupDLs[SETUPDL_61]);
gDPSetFogColor(gMasterDisp++, r, g, b, a);
gSPFogPosition(gMasterDisp++, near, far);
}
+16
View File
@@ -0,0 +1,16 @@
#include "gfx.h"
Gfx gRcpInitDL[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH),
gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 3, G_AC_NONE | G_ZS_PIXEL),
gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2),
gsSPSetOtherModeHi(G_AD_NOISE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
G_TD_CLAMP | G_TP_PERSP | G_CYC_FILL | G_PM_NPRIMITIVE),
gsSPClipRatio(FRUSTRATIO_1),
gsSPEndDisplayList(),
};
File diff suppressed because it is too large Load Diff
+37
View File
@@ -0,0 +1,37 @@
#include "global.h"
void Graphics_NMIWipe(void) {
static s16 D_800D4A80 = 0;
s32 i;
gViewport->vp.vscale[0] = SCREEN_WIDTH * 2;
gViewport->vp.vscale[1] = SCREEN_HEIGHT * 2;
gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = SCREEN_WIDTH * 2;
gViewport->vp.vtrans[1] = SCREEN_HEIGHT * 2;
gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0;
gSPViewport(gMasterDisp++, gViewport);
gDPPipeSync(gMasterDisp++);
gDPSetScissor(gMasterDisp++, G_SC_NON_INTERLACE, 8, 8, SCREEN_WIDTH - 8, SCREEN_HEIGHT - 8);
Graphics_FillRectangle(&gMasterDisp, 8, 8, MIN(304, D_800D4A80) + 8, 64, 0, 0, 0, 255);
Graphics_FillRectangle(&gMasterDisp, SCREEN_WIDTH - 8 - MIN(304, D_800D4A80), 64, SCREEN_WIDTH - 8, 120, 0, 0, 0,
255);
Graphics_FillRectangle(&gMasterDisp, 8, 120, MIN(304, D_800D4A80) + 8, 176, 0, 0, 0, 255);
Graphics_FillRectangle(&gMasterDisp, SCREEN_WIDTH - 8 - MIN(304, D_800D4A80), 176, SCREEN_WIDTH - 8, 232, 0, 0, 0,
255);
if (D_800D4A80 == 0) {
AudioThread_PreNMIReset();
}
D_800D4A80 += 45;
if (D_800D4A80 >= 485) {
osViBlack(1);
gStopTasks = 1;
}
for (i = 0; i < MAXCONTROLLERS; i++) {
gControllerRumble[i] = 0;
D_80137E84[i] = 0;
}
}
+82
View File
@@ -0,0 +1,82 @@
#include "global.h"
SaveFile gSaveFile;
Save gDefaultSave = {
{
// Replace with SaveData once that struct is complete
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x02, 0x03, 0x04, 0x00, 0x63, 0x63, 0x63, 0x46, 0x4F, 0x58, 0x50, 0x45, 0x50, 0x53, 0x4C, 0x50, 0x46,
0x41, 0x4C, 0x57, 0x4C, 0x46, 0x4C, 0x4F, 0x4E, 0x50, 0x49, 0x47, 0x41, 0x4E, 0x52, 0x42, 0x49, 0x4C,
0x4B, 0x41, 0x54, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x90, 0x09, 0x57, 0x09, 0xB7, 0x09, 0x87,
0x09, 0x37, 0x09, 0x17, 0x09, 0xF7, 0x5A, 0x90, 0x09, 0x54, 0x09, 0x64, 0x09, 0xD4, 0x09, 0x74, 0x09,
0x14, 0x09, 0xF4, 0x50, 0x90, 0x09, 0x02, 0x09, 0xC2, 0x09, 0x42, 0x09, 0xA2, 0x09, 0x22, 0x09, 0xE2,
0x46, 0x90, 0x09, 0x01, 0x09, 0xC1, 0x09, 0x41, 0x09, 0xA1, 0x09, 0x21, 0x09, 0xE1, 0x3C, 0x90, 0x09,
0x05, 0x09, 0xC5, 0x09, 0x45, 0x09, 0xA5, 0x09, 0x25, 0x09, 0xE5, 0x32, 0x90, 0x04, 0x03, 0x09, 0xC3,
0x09, 0x43, 0x09, 0xA3, 0x09, 0x23, 0x09, 0xE3, 0x28, 0x90, 0x01, 0x06, 0x02, 0xC6, 0x09, 0x46, 0x09,
0xA6, 0x09, 0x26, 0x09, 0xE6, 0x1E, 0x90, 0x01, 0x02, 0x01, 0xC4, 0x01, 0x47, 0x08, 0xA5, 0x09, 0x23,
0x09, 0xE6, 0x14, 0x90, 0x01, 0x03, 0x01, 0xC5, 0x01, 0x47, 0x01, 0xA4, 0x06, 0x22, 0x09, 0xE1, 0x0A,
0x90, 0x01, 0x07, 0x01, 0xC4, 0x01, 0x44, 0x01, 0xA2, 0x01, 0x21, 0x04, 0xE5, 0xFF, 0x09, 0x01, 0x02,
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
},
0,
};
u16 Save_Checksum(Save* arg0) {
u16 var_v1;
s32 i;
for (i = 0, var_v1 = 0; i < sizeof(SaveData); i++) {
var_v1 ^= arg0->raw[i];
var_v1 <<= 1;
var_v1 = (var_v1 & 0xFE) | ((var_v1 >> 8) & 1);
}
var_v1 = (var_v1 & 0xFF) | 0x9500;
return var_v1;
}
s32 Save_Write(void) {
void* sp1C;
gSaveFile.save.checksum = Save_Checksum(&gSaveFile.save);
gSaveFile.backup = gSaveFile.save;
gSaveIOBuffer = gSaveFile;
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_WRITE_SAVE, OS_MESG_PRI_NORMAL);
osRecvMesg(&gSaveMsgQueue, &sp1C, OS_MESG_BLOCK);
if (sp1C != (OSMesg) SI_SAVE_SUCCESS) {
return -1;
}
return 0;
}
s32 Save_Read(void) {
void* sp24;
s32 i;
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_SAVE, OS_MESG_PRI_NORMAL);
osRecvMesg(&gSaveMsgQueue, &sp24, OS_MESG_BLOCK);
if ((s32) sp24 != SI_SAVE_SUCCESS) {
return -1;
}
gSaveFile = gSaveIOBuffer;
if (gSaveFile.save.checksum == Save_Checksum(&gSaveFile.save)) {
(void) "EEPROM ROM[0] 正常\n";
return 0;
}
for (i = 0; i <= sizeof(SaveData); i++) { // should be <, but gets overwritten immediately.
gSaveFile.save.raw[i] = gSaveFile.backup.raw[i];
}
gSaveFile.save.checksum = gSaveFile.backup.checksum;
if (gSaveFile.save.checksum == Save_Checksum(&gSaveFile.save)) {
(void) "EEPROM ROM[1 正常\n";
return 0;
}
(void) "EEPROM ROM[0] & ROM[1] 異常\n";
return -1;
}
+364
View File
@@ -0,0 +1,364 @@
#include "gfx.h"
u16 D_Tex_800D99F8[];
Vtx D_Vtx_800D94A0[] = {
VTX(10, 5, 0, 0, 0, 255, 255, 255, 255),
VTX(0, 0, 0, 0, 0, 255, 255, 255, 255),
VTX(10, -5, 0, 0, 0, 255, 255, 255, 255),
};
Gfx D_Gfx_800D94D0[] = {
// used in fox_ti for the triangular light rays before firing his lazor
gsSPVertex(D_Vtx_800D94A0, 3, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSPEndDisplayList(),
};
Vtx D_Vtx_800D94E8[] = {
VTX(-1, 1, -1, 0, 0, 0, 0, 127, 255), VTX(-1, -1, -1, 0, 991, 0, 0, 127, 255),
VTX(1, -1, -1, 991, 991, 0, 0, 127, 255), VTX(1, 1, -1, 991, 0, 0, 0, 127, 255),
VTX(1, 1, 1, 0, 0, 0, 0, 127, 255), VTX(1, -1, 1, 0, 991, 0, 0, 127, 255),
VTX(-1, -1, 1, 991, 991, 0, 0, 127, 255), VTX(-1, 1, 1, 991, 0, 0, 0, 127, 255),
VTX(-1, -1, 1, 0, 0, 0, 0, 127, 255), VTX(-1, -1, -1, 0, 991, 0, 0, 127, 255),
VTX(1, -1, -1, 991, 991, 0, 0, 127, 255), VTX(1, -1, 1, 991, 0, 0, 0, 127, 255),
VTX(1, 1, 1, 0, 0, 0, 0, 127, 255), VTX(1, 1, -1, 0, 991, 0, 0, 127, 255),
VTX(-1, 1, -1, 991, 991, 0, 0, 127, 255), VTX(-1, 1, 1, 991, 0, 0, 0, 127, 255),
};
Gfx D_Gfx_800D95E8[] = {
// unused
gsSPVertex(D_Vtx_800D94E8, 16, 0), gsSP1Triangle(2, 1, 0, 0), gsSP1Triangle(3, 2, 0, 0),
gsSP1Triangle(6, 5, 4, 0), gsSP1Triangle(7, 6, 4, 0), gsSP1Triangle(5, 2, 3, 0),
gsSP1Triangle(4, 5, 3, 0), gsSP1Triangle(1, 6, 7, 0), gsSP1Triangle(0, 1, 7, 0),
gsSP1Triangle(8, 9, 10, 0), gsSP1Triangle(8, 10, 11, 0), gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0), gsSPEndDisplayList(),
};
Vtx D_Vtx_800D9658[] = {
VTX(0, 0, 0, 0, 0, 255, 255, 255, 255),
VTX(0, 100, 0, 0, 0, 255, 255, 255, 255),
VTX(-50, 100, 0, 0, 0, 255, 255, 255, 255),
};
Gfx D_Gfx_800D9688[] = {
// used fox_fade for unused spinning fade
gsSPVertex(D_Vtx_800D9658, 3, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSPEndDisplayList(),
};
Vtx D_Vtx_800D96A0[] = {
VTX(-100, 200, 0, 0, 0, 255, 255, 255, 255),
VTX(0, 0, 0, 0, 0, 0, 255, 255, 255),
VTX(100, 200, 0, 0, 0, 0, 0, 0, 255),
};
Gfx D_Gfx_800D96D0[] = {
// unused
gsSPVertex(D_Vtx_800D96A0, 3, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSPEndDisplayList(),
};
Vec3s D_Unk_800D96E8[] = {
// unused
{ -100, 100, -100 }, { -100, 100, 100 }, { 100, 100, 100 }, { 100, 100, -100 },
{ -100, -100, -100 }, { -100, -100, 100 }, { 100, -100, 100 }, { 100, -100, -100 },
};
Triangle D_Unk_800D9718[] = {
// unused
{ 0, 1, 2 }, { 0, 2, 3 }, { 5, 4, 7 }, { 5, 7, 6 }, { 1, 5, 6 }, { 1, 6, 2 },
{ 3, 7, 4 }, { 3, 4, 0 }, { 2, 6, 7 }, { 2, 7, 3 }, { 0, 4, 5 }, { 0, 5, 1 },
};
Vtx D_Vtx_800D9760[] = {
VTX(-1, 1, -1, 0, 0, 0, 0, 127, 255), VTX(-1, -1, -1, 0, 991, 0, 0, 127, 255),
VTX(1, -1, -1, 991, 991, 0, 0, 127, 255), VTX(1, 1, -1, 991, 0, 0, 0, 127, 255),
VTX(1, 1, 1, 0, 0, 0, 0, 127, 255), VTX(1, -1, 1, 0, 991, 0, 0, 127, 255),
VTX(-1, -1, 1, 991, 991, 0, 0, 127, 255), VTX(-1, 1, 1, 991, 0, 0, 0, 127, 255),
VTX(-1, -1, 1, 0, 0, 0, 0, 127, 255), VTX(-1, -1, -1, 0, 991, 0, 0, 127, 255),
VTX(1, -1, -1, 991, 991, 0, 0, 127, 255), VTX(1, -1, 1, 991, 0, 0, 0, 127, 255),
VTX(1, 1, 1, 0, 0, 0, 0, 127, 255), VTX(1, 1, -1, 0, 991, 0, 0, 127, 255),
VTX(-1, 1, -1, 991, 991, 0, 0, 127, 255), VTX(-1, 1, 1, 991, 0, 0, 0, 127, 255),
};
Gfx D_Gfx_800D9860[] = {
// unused
gsDPSetupTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 5, 5,
G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTileTexture(D_Tex_800D99F8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32),
gsSPVertex(D_Vtx_800D9760, 16, 0),
gsSP1Triangle(2, 1, 0, 0),
gsSP1Triangle(3, 2, 0, 0),
gsSP1Triangle(6, 5, 4, 0),
gsSP1Triangle(7, 6, 4, 0),
gsSP1Triangle(5, 2, 3, 0),
gsSP1Triangle(4, 5, 3, 0),
gsSP1Triangle(1, 6, 7, 0),
gsSP1Triangle(0, 1, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPEndDisplayList(),
};
Vtx D_Vtx_800D9910[] = {
VTX(-11, -11, 0, 0, 255, 0, 127, 0, 0),
VTX(11, -11, 0, 255, 255, 0, 127, 0, 0),
VTX(11, 11, 0, 255, 0, 0, 127, 0, 0),
VTX(-11, 11, 0, 0, 0, 0, 127, 0, 0),
};
Vtx D_Vtx_800D9950[] = {
VTX(80, 0, -120, 256, 0, 0, 127, 9, 255),
VTX(-79, 0, -120, 0, 0, 0, 127, 255, 0),
VTX(-79, 0, 119, 0, 256, 0, 127, 255, 0),
VTX(80, 0, 119, 256, 256, 0, 127, 255, 0),
};
Gfx D_Gfx_800D9990[] = {
// unused
gsDPSetPrimColor(0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
gsDPSetupTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 3, 3,
G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTileTexture(D_Tex_800D99F8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8),
gsSPVertex(D_Vtx_800D9950, 4, 0),
gsSP1Triangle(1, 2, 3, 0),
gsSP1Triangle(1, 3, 0, 0),
gsSPEndDisplayList(),
};
u16 D_Tex_800D99F8[1024] = {
// used in fox_hud
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF,
};
u16 D_Tex_800DA1F8[1024] = {
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001,
};
Gfx D_Gfx_800DA9F8[] = {
// unused
gsDPSetupTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 3, 3,
G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTileTexture(D_Tex_800D99F8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8),
gsSPVertex(D_Vtx_800D9910, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSPEndDisplayList(),
};
Vtx D_Vtx_800DAA58[] = {
VTX(-100, 0, -100, 0, 255, 0, 120, 0, 0),
VTX(-100, 0, 100, 255, 255, 0, 120, 0, 0),
VTX(100, 0, 100, 255, 0, 0, 120, 0, 0),
VTX(100, 0, -100, 0, 0, 0, 120, 0, 0),
};
Gfx D_Gfx_800DAA98[] = {
// unused
gsDPSetupTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 3, 3,
G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTileTexture(D_Tex_800D99F8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8),
gsSPVertex(D_Vtx_800DAA58, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSPEndDisplayList(),
};
Vtx D_Vtx_800DAAF8[] = {
VTX(-500, -90, 0, 0, 255, 255, 255, 255, 255),
VTX(500, -90, 0, 255, 255, 255, 255, 255, 255),
VTX(0, 1000, 0, 255, 0, 255, 255, 255, 255),
};
Gfx D_Gfx_800DAB28[] = {
// unused
gsSPVertex(D_Vtx_800DAAF8, 3, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSPEndDisplayList(),
};
Vtx D_Vtx_800DAB40[] = {
VTX(-20, 1000, 0, 0, 255, 0, 0, 127, 0),
VTX(50, 0, 0, 255, 255, 0, 0, 127, 0),
VTX(-50, 0, 0, 255, 0, 0, 0, 127, 0),
VTX(20, 1000, 0, 0, 255, 0, 0, 127, 0),
};
Gfx D_Gfx_800DAB80[] = {
// unused
gsDPSetupTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 3, 3,
G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTileTexture(D_Tex_800D99F8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8),
gsSPVertex(D_Vtx_800DAB40, 4, 0),
gsSP1Triangle(0, 2, 1, 0),
gsSP1Triangle(0, 1, 3, 0),
gsSPEndDisplayList(),
};
Vtx D_Vtx_800DABE0[] = {
VTX(-170, 0, -170, 0, 255, 0, 127, 0, 0),
VTX(170, 0, -170, 255, 255, 0, 127, 0, 0),
VTX(170, 0, 170, 255, 0, 0, 127, 0, 0),
VTX(-179, 0, 170, 0, 0, 0, 127, 0, 0),
};
Gfx D_Gfx_800DAC20[] = {
// used in fox_edisplay
gsDPSetupTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 3, 3,
G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTileTexture(D_Tex_800DA1F8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8),
gsSPVertex(D_Vtx_800DABE0, 4, 0),
gsSP1Triangle(0, 2, 1, 0),
gsSP1Triangle(0, 3, 2, 0),
gsSPEndDisplayList(),
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+166
View File
@@ -0,0 +1,166 @@
#include "gfx.h"
Vtx D_Vtx_800DAC80[] = {
VTX(0, 0, 0, 0, 0, 0, 0, 0, 255),
VTX(0, 0, -1, 0, 1984, 0, 0, 0, 255),
};
Gfx D_Gfx_800DACA0[] = {
// unused
gsSPVertex(D_Vtx_800DAC80, 2, 0),
gsSPLine3D(0, 1, 0),
gsSPEndDisplayList(),
};
u16 D_Tex_800DACB8[] = {
// used in fox_tank for landmaster wheels
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x294B, 0x294B, 0x4A51, 0x4A51, 0x4A51, 0x4A51,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x294B, 0x294B, 0x7BDD, 0x7BDD,
0xD671, 0xD671, 0x4A51, 0x4A51, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x294B, 0x7BDD,
0x7BDD, 0x7BDD, 0x0001, 0x0001, 0x0843, 0x0843, 0xD671, 0xD671, 0xD671, 0x4A51, 0x4A51, 0x4A51, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B,
0x294B, 0x7BDD, 0x7BDD, 0x0001, 0x0001, 0x0001, 0x18C7, 0x0001, 0x0001, 0x318D, 0x0843, 0x0843, 0x0843, 0xD671,
0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x0001, 0x0843, 0x0843, 0x18C7, 0x0001, 0x0001, 0x0001, 0x0001,
0x318D, 0x1085, 0x1085, 0x0843, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x18C7, 0x0843, 0x0843, 0x18C7,
0x0001, 0x0001, 0x0001, 0x0001, 0x318D, 0x1085, 0x1085, 0x318D, 0x318D, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x0001,
0x0001, 0x18C7, 0x0843, 0x0843, 0x18C7, 0x0001, 0x0001, 0x318D, 0x1085, 0x1085, 0x318D, 0x0001, 0x0001, 0x318D,
0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x7BDD,
0x0001, 0x18C7, 0x0001, 0x0001, 0x0001, 0x0001, 0x18C7, 0x0843, 0x0843, 0x294B, 0x4A51, 0x1085, 0x1085, 0x318D,
0x0001, 0x0001, 0x0001, 0x0001, 0x318D, 0x0843, 0xD671, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x0001, 0x0001, 0x0001, 0x0001, 0x18C7, 0x0843, 0x0843, 0x39CF,
0x6B17, 0x1085, 0x1085, 0x318D, 0x0001, 0x0001, 0x0001, 0x0001, 0x318D, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x7BDD, 0x0001, 0x0843, 0x0843, 0x18C7, 0x0001, 0x0001, 0x2909,
0x1085, 0x0843, 0x420F, 0x420F, 0x739B, 0x739B, 0x1085, 0x2107, 0x420F, 0x0001, 0x0001, 0x318D, 0x1085, 0x1085,
0x0843, 0xD671, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x0843, 0x0843,
0x0843, 0x18C7, 0x18C7, 0x1085, 0x2109, 0x420F, 0x0001, 0x0001, 0x0001, 0x0001, 0x739B, 0x41CF, 0x2107, 0x318D,
0x318D, 0x1085, 0x1085, 0x1085, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B,
0x7BDD, 0x0001, 0x18C7, 0x18C7, 0x0843, 0x0843, 0x0843, 0x0843, 0x420F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x739B, 0x1085, 0x1085, 0x1085, 0x1085, 0x318D, 0x318D, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001,
0x0001, 0x0001, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x0001, 0x0001, 0x18C7, 0x0843, 0x0843, 0x420F, 0x0001, 0x0001,
0x0001, 0x6B5B, 0x6B5B, 0x0001, 0x0001, 0x0001, 0x739B, 0x1085, 0x1085, 0x318D, 0x0001, 0x0001, 0x318D, 0x0843,
0xD671, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x7BDD, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B,
0x39CF, 0x420F, 0x0001, 0x0001, 0x6B5B, 0xFFFF, 0xFFFF, 0x6B5B, 0x0001, 0x0001, 0x739B, 0x6B17, 0x4A51, 0x0001,
0x0001, 0x0001, 0x0001, 0x0843, 0xD671, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x7BDD, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x294B, 0x39CF, 0x420F, 0x0001, 0x0001, 0x6B5B, 0xFFFF, 0xFFFF, 0x6B5B, 0x0001, 0x0001,
0x739B, 0x6B17, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0843, 0xD671, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001,
0x294B, 0x7BDD, 0x0001, 0x18C7, 0x0001, 0x0001, 0x18C7, 0x0843, 0x0843, 0x420F, 0x0001, 0x0001, 0x0001, 0x6B5B,
0x6B5B, 0x0001, 0x0001, 0x0001, 0x739B, 0x1085, 0x1085, 0x318D, 0x0001, 0x0001, 0x318D, 0x0843, 0xD671, 0x4A51,
0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x18C7, 0x0843, 0x0843, 0x0843, 0x0843,
0x420F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x739B, 0x1085, 0x1085, 0x1085, 0x1085, 0x318D, 0x318D,
0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x0843, 0x0843,
0x0843, 0x18C7, 0x18C7, 0x1085, 0x2109, 0x420F, 0x0001, 0x0001, 0x0001, 0x0001, 0x739B, 0x41CF, 0x2107, 0x318D,
0x318D, 0x1085, 0x1085, 0x1085, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B,
0x7BDD, 0x0001, 0x0843, 0x0843, 0x18C7, 0x0001, 0x0001, 0x2909, 0x1085, 0x0843, 0x420F, 0x420F, 0x739B, 0x739B,
0x1085, 0x2107, 0x420F, 0x0001, 0x0001, 0x318D, 0x1085, 0x1085, 0x0843, 0xD671, 0x4A51, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x0001, 0x0001, 0x0001, 0x0001, 0x18C7, 0x0843,
0x0843, 0x39CF, 0x6B17, 0x1085, 0x1085, 0x318D, 0x0001, 0x0001, 0x0001, 0x0001, 0x318D, 0x0843, 0xD671, 0x4A51,
0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x0001, 0x0001,
0x0001, 0x0001, 0x18C7, 0x0843, 0x0843, 0x294B, 0x4A51, 0x1085, 0x1085, 0x318D, 0x0001, 0x0001, 0x0001, 0x0001,
0x318D, 0x0843, 0xD671, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B,
0x7BDD, 0x0001, 0x18C7, 0x0001, 0x0001, 0x18C7, 0x0843, 0x0843, 0x18C7, 0x0001, 0x0001, 0x318D, 0x1085, 0x1085,
0x318D, 0x0001, 0x0001, 0x318D, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x18C7, 0x18C7, 0x0843, 0x0843, 0x18C7, 0x0001, 0x0001,
0x0001, 0x0001, 0x318D, 0x1085, 0x1085, 0x318D, 0x318D, 0x0843, 0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x7BDD, 0x0001, 0x0001, 0x0843,
0x0843, 0x18C7, 0x0001, 0x0001, 0x0001, 0x0001, 0x318D, 0x1085, 0x1085, 0x0843, 0x0843, 0xD671, 0x4A51, 0x4A51,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B,
0x294B, 0x7BDD, 0x7BDD, 0x0001, 0x0001, 0x0001, 0x18C7, 0x0001, 0x0001, 0x318D, 0x0843, 0x0843, 0x0843, 0xD671,
0xD671, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x294B, 0x7BDD, 0x7BDD, 0x7BDD, 0x0001, 0x0001, 0x0843, 0x0843,
0xD671, 0xD671, 0xD671, 0x4A51, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294B, 0x294B, 0x294B, 0x294B,
0x7BDD, 0x7BDD, 0xD671, 0xD671, 0x4A51, 0x4A51, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x294B, 0x294B, 0x294B, 0x294B, 0x4A51, 0x4A51, 0x4A51, 0x4A51, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001,
};
u8 D_Tex_800DB4B8[] = {
// used in fox_ma for train wheels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x09, 0x0A, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0B, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x0F, 0x14, 0x15, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x16, 0x17, 0x0E, 0x0F,
0x0F, 0x10, 0x12, 0x18, 0x18, 0x19, 0x0F, 0x1A, 0x1B, 0x1C, 0x0C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x0B, 0x0C, 0x0D, 0x1D, 0x1E, 0x0F, 0x0F, 0x1F, 0x20, 0x20, 0x20, 0x20,
0x1F, 0x21, 0x22, 0x0D, 0x23, 0x23, 0x24, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x25, 0x09, 0x26, 0x27, 0x14, 0x1A, 0x28, 0x0F, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x0F, 0x29, 0x2A, 0x2B, 0x15,
0x17, 0x2C, 0x2D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x01, 0x09, 0x2F, 0x30, 0x03, 0x31, 0x32,
0x21, 0x0F, 0x33, 0x1F, 0x20, 0x20, 0x1F, 0x33, 0x28, 0x34, 0x30, 0x35, 0x36, 0x37, 0x34, 0x38, 0x39, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x15, 0x3A, 0x3B, 0x3C, 0x3C, 0x05, 0x34, 0x28, 0x0F, 0x0F, 0x33, 0x1F, 0x1F,
0x33, 0x3C, 0x3D, 0x3E, 0x10, 0x3F, 0x04, 0x40, 0x3C, 0x41, 0x14, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x16,
0x42, 0x34, 0x43, 0x1F, 0x1F, 0x3C, 0x3C, 0x44, 0x45, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x3C, 0x3C, 0x40, 0x3D, 0x45,
0x1F, 0x1F, 0x45, 0x3D, 0x3B, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x25, 0x36, 0x40, 0x46, 0x12, 0x45, 0x1F,
0x3C, 0x3C, 0x47, 0x45, 0x45, 0x45, 0x45, 0x3C, 0x45, 0x45, 0x28, 0x45, 0x46, 0x12, 0x45, 0x1F, 0x45, 0x48, 0x26,
0x0B, 0x00, 0x00, 0x00, 0x0B, 0x0A, 0x26, 0x49, 0x3D, 0x46, 0x4A, 0x12, 0x1F, 0x3C, 0x4B, 0x45, 0x4C, 0x4D, 0x4D,
0x4D, 0x4D, 0x4C, 0x45, 0x45, 0x45, 0x4E, 0x4F, 0x12, 0x1F, 0x44, 0x49, 0x16, 0x0A, 0x0B, 0x00, 0x00, 0x0C, 0x16,
0x15, 0x42, 0x34, 0x3C, 0x50, 0x4E, 0x3C, 0x3C, 0x3C, 0x51, 0x20, 0x20, 0x52, 0x53, 0x52, 0x20, 0x20, 0x54, 0x45,
0x45, 0x4E, 0x4E, 0x45, 0x55, 0x2F, 0x56, 0x26, 0x1C, 0x0C, 0x16, 0x57, 0x58, 0x49, 0x59, 0x10, 0x40, 0x3D, 0x3C,
0x3C, 0x3C, 0x18, 0x52, 0x53, 0x46, 0x5A, 0x5A, 0x46, 0x53, 0x52, 0x20, 0x5B, 0x45, 0x45, 0x45, 0x45, 0x3D, 0x5C,
0x35, 0x5D, 0x58, 0x01, 0x27, 0x5E, 0x5F, 0x3D, 0x60, 0x05, 0x47, 0x3D, 0x61, 0x62, 0x18, 0x4D, 0x4E, 0x63, 0x64,
0x65, 0x65, 0x66, 0x67, 0x4E, 0x4D, 0x20, 0x54, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x68, 0x69, 0x6A, 0x3F,
0x6B, 0x11, 0x1F, 0x6C, 0x3D, 0x3D, 0x0F, 0x6D, 0x20, 0x5A, 0x4A, 0x65, 0x12, 0x6E, 0x6E, 0x12, 0x6F, 0x70, 0x5A,
0x20, 0x71, 0x45, 0x45, 0x45, 0x72, 0x1F, 0x11, 0x48, 0x45, 0x31, 0x73, 0x72, 0x11, 0x20, 0x20, 0x1F, 0x03, 0x3D,
0x62, 0x20, 0x4D, 0x63, 0x74, 0x75, 0x3E, 0x4B, 0x4B, 0x76, 0x77, 0x78, 0x67, 0x4D, 0x20, 0x79, 0x45, 0x72, 0x1F,
0x20, 0x20, 0x11, 0x48, 0x60, 0x7A, 0x11, 0x18, 0x20, 0x20, 0x20, 0x74, 0x3D, 0x19, 0x20, 0x4E, 0x4A, 0x7B, 0x76,
0x45, 0x45, 0x45, 0x45, 0x76, 0x7C, 0x70, 0x7D, 0x20, 0x19, 0x45, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x12, 0x7E, 0x07,
0x11, 0x20, 0x20, 0x20, 0x20, 0x5D, 0x3D, 0x7F, 0x20, 0x4E, 0x80, 0x81, 0x3E, 0x45, 0x45, 0x45, 0x45, 0x3E, 0x7B,
0x80, 0x7D, 0x20, 0x19, 0x45, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x7F, 0x04, 0x82, 0x83, 0x12, 0x20, 0x20, 0x1F, 0x6C,
0x3D, 0x7F, 0x20, 0x4D, 0x84, 0x85, 0x6E, 0x3F, 0x3C, 0x3C, 0x3F, 0x6E, 0x86, 0x4A, 0x4D, 0x18, 0x62, 0x45, 0x72,
0x1F, 0x20, 0x20, 0x1F, 0x72, 0x60, 0x59, 0x87, 0x6E, 0x12, 0x11, 0x6C, 0x3D, 0x47, 0x88, 0x6D, 0x20, 0x5A, 0x89,
0x8A, 0x75, 0x72, 0x72, 0x7F, 0x8B, 0x80, 0x5A, 0x20, 0x6D, 0x8C, 0x45, 0x45, 0x72, 0x1F, 0x1F, 0x72, 0x45, 0x32,
0x2F, 0x87, 0x87, 0x3D, 0x4B, 0x47, 0x44, 0x45, 0x8D, 0x19, 0x18, 0x52, 0x5A, 0x70, 0x8E, 0x8B, 0x8B, 0x6F, 0x8F,
0x5A, 0x52, 0x18, 0x7F, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x04, 0x30, 0x90, 0x15, 0x2A, 0x91, 0x92, 0x28, 0x44,
0x45, 0x45, 0x45, 0x45, 0x19, 0x18, 0x52, 0x50, 0x93, 0x94, 0x94, 0x93, 0x50, 0x52, 0x18, 0x7F, 0x45, 0x45, 0x45,
0x45, 0x3D, 0x55, 0x33, 0x42, 0x58, 0x17, 0x95, 0x23, 0x17, 0x96, 0x60, 0x43, 0x3C, 0x1F, 0x11, 0x3C, 0x45, 0x7F,
0x20, 0x20, 0x52, 0x53, 0x53, 0x52, 0x20, 0x97, 0x98, 0x45, 0x45, 0x11, 0x11, 0x45, 0x34, 0x36, 0x14, 0x15, 0x16,
0x23, 0x00, 0x0C, 0x26, 0x22, 0x04, 0x45, 0x5A, 0x12, 0x45, 0x11, 0x45, 0x45, 0x98, 0x6D, 0x20, 0x20, 0x20, 0x20,
0x99, 0x4B, 0x45, 0x45, 0x67, 0x12, 0x45, 0x1F, 0x3D, 0x29, 0x2A, 0x1C, 0x0A, 0x0B, 0x00, 0x0B, 0x9A, 0x14, 0x9B,
0x45, 0x46, 0x4A, 0x12, 0x1F, 0x45, 0x45, 0x45, 0x45, 0x5B, 0x98, 0x19, 0x19, 0x45, 0x45, 0x45, 0x45, 0x46, 0x4A,
0x12, 0x1F, 0x45, 0x60, 0x90, 0x23, 0x0B, 0x00, 0x00, 0x0B, 0x0C, 0x9C, 0x37, 0x45, 0x3C, 0x50, 0x50, 0x3C, 0x45,
0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3C, 0x5F, 0x5F, 0x45, 0x50, 0x50, 0x45, 0x45, 0x9D, 0x9E, 0x9F,
0x00, 0x00, 0x00, 0x0B, 0x0C, 0x23, 0x1B, 0x10, 0x45, 0x45, 0x45, 0x43, 0x04, 0x43, 0x45, 0x45, 0x72, 0x1F, 0x1F,
0x72, 0x45, 0x43, 0x60, 0x82, 0x05, 0x45, 0x45, 0x3C, 0x04, 0x6B, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x0C,
0x09, 0xA0, 0x60, 0x3F, 0x60, 0x10, 0x98, 0x5F, 0x45, 0x72, 0x1F, 0x20, 0x20, 0x1F, 0x45, 0x44, 0x05, 0x33, 0x30,
0x73, 0x03, 0x83, 0x0E, 0xA1, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xA2, 0x1C, 0x17, 0x14, 0x90, 0x49,
0xA3, 0xA4, 0x45, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x45, 0x40, 0x3B, 0x6A, 0x27, 0x27, 0x58, 0x0D, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xA5, 0x0A, 0x1C, 0x9C, 0xA6, 0xA7, 0x76, 0x45, 0x1F, 0x20, 0x20,
0x20, 0x20, 0x1F, 0x45, 0x05, 0xA8, 0x15, 0x23, 0x23, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0C, 0x16, 0x26, 0x27, 0xA8, 0x45, 0x72, 0x1F, 0x20, 0x20, 0x1F, 0x72, 0x44, 0x10, 0x5E,
0x1C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B,
0x0A, 0x09, 0x90, 0x68, 0x45, 0x72, 0x98, 0x98, 0x72, 0x45, 0x10, 0x1B, 0xA9, 0x23, 0xAA, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x3A, 0x49, 0x05,
0x76, 0x3E, 0x10, 0x30, 0x27, 0x15, 0x0B, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
u16 D_TLUT_800DB4B8[] = {
// 176 color palette for above. Duplicate of D_MA_6023788
0x08D1, 0x3219, 0x7425, 0xADB1, 0xDF3B, 0xD6F9, 0xD739, 0xC675, 0x8CEB, 0x4ADF, 0x2197, 0x1113, 0x1955, 0x429F,
0x9531, 0xE77F, 0xBE35, 0x8429, 0x94AB, 0xCE79, 0x7429, 0x5321, 0x321B, 0x5B65, 0x0843, 0xAD73, 0xB637, 0x84AD,
0x3A5D, 0x6C29, 0xADF7, 0x7BE5, 0x0001, 0xCEFB, 0x8CEF, 0x29D9, 0x2195, 0x3A5B, 0x429D, 0x5B63, 0xDF3D, 0xA5B3,
0x6BE7, 0x52E1, 0x5363, 0x42DF, 0x0911, 0x7427, 0x9D2F, 0x8CED, 0x9D71, 0xADB3, 0xC677, 0x94ED, 0x952F, 0xB635,
0x846B, 0x325B, 0x7C29, 0xADF3, 0xF7BF, 0xEF7D, 0xD6B9, 0xDEFB, 0xE77D, 0xE73D, 0x84AB, 0xEFBD, 0xF7FF, 0xFFFF,
0x0849, 0xEFBF, 0xC635, 0x8CAB, 0x3195, 0xEF7F, 0x739F, 0x0005, 0x084B, 0x39D5, 0x0009, 0x1087, 0x0003, 0x0007,
0xB5B5, 0xCEB7, 0x4A9D, 0x4AE1, 0x63A5, 0x952D, 0x108B, 0xD6BB, 0xBE33, 0x8469, 0x94EF, 0xE73B, 0xCEB9, 0xE7BF,
0xC639, 0x2111, 0x529B, 0x6321, 0x4A5B, 0x210F, 0xB639, 0x63A3, 0x7C69, 0xADB5, 0xB5B1, 0x4A55, 0xAD71, 0x5ADD,
0x3193, 0x4A57, 0xBDF3, 0xA5B1, 0x73A5, 0xA52D, 0xCE77, 0xA52F, 0x6B63, 0xD6BD, 0xB633, 0x94AD, 0x8C6B, 0x0847,
0xCEF9, 0x9CEF, 0x39D7, 0x9CED, 0xB5F3, 0xB5F5, 0x2951, 0x8427, 0x7BE7, 0xCF3F, 0xBE39, 0x4217, 0x73A3, 0x6B61,
0xDF3F, 0xDF7F, 0x5ADF, 0x2953, 0x7C6B, 0x9D73, 0xC6BB, 0x108D, 0x18CF, 0x29D7, 0xA5B5, 0x18C7, 0xBDF5, 0x5299,
0x21D9, 0xD6FB, 0x5323, 0xC6B9, 0x742B, 0x1155, 0x6BE9, 0x5BA5, 0x21D7, 0x9D2D, 0xDEF9, 0x1997, 0x5B21, 0x6BE5,
0xA571, 0x63A7, 0x0913, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,
};