mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Match func_800BA8E4 (#528)
* First pass at func_800BA8E4 * Merge D_800E3078 into D_800E3070 and do func_800BA8E4 a better deal * Update D_800E3070 to be like D_800E3080 * Match func_800BA4B8 * Update score * Minor documenting changes * func_8002CC30 minimum compilable code. * func_800BA8E4 NON_MATCHING * Match func_800BA8E4 * Update score * Format
This commit is contained in:
@@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the
|
||||
All versions are supported, and the US 1.0 version (SHA1 = 0cb115d8716dbbc2922fda38e533b9fe63bb9670) of the game is the default if not specified.
|
||||
|
||||
<!-- README_SCORE_SUMMARY_BEGIN -->
|
||||
As of April 21, 2025, this is our current score:
|
||||
As of April 23, 2025, this is our current score:
|
||||
|
||||
    Decomp progress: 80.10%
|
||||
    Decomp progress: 80.40%
|
||||
|
||||
    Documentation progress: 53.78%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
@@ -117,30 +117,30 @@ s32 is_drumstick_unlocked(void) {
|
||||
```
|
||||
|
||||
<!-- README_SCORE_BEGIN -->
|
||||
As of April 21, 2025, this is our current score:
|
||||
As of April 23, 2025, this is our current score:
|
||||
```
|
||||
===================================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
-------------- 80.10% Complete (82.67% NON_MATCHING) --------------
|
||||
# Decompiled functions: 1857
|
||||
# GLOBAL_ASM remaining: 93
|
||||
# NON_MATCHING functions: 12
|
||||
# NON_EQUIVALENT WIP functions: 30
|
||||
--------------------------- Game Status ---------------------------
|
||||
Balloons: 38/47, Keys: 4/4, Trophies: 3/5
|
||||
T.T. Amulets: 4/4, Wizpig Amulets: 3/4
|
||||
-------------------------------------------------------------------
|
||||
We are collecting silver coins in Haunted Woods. (7/8 silver coins)
|
||||
===================================================================
|
||||
ADVENTURE TWO (Cleanup & Documentation)
|
||||
------------------------- 53.78% Complete -------------------------
|
||||
# Documented functions: 1136
|
||||
# Undocumented remaining: 517
|
||||
--------------------------- Game Status ---------------------------
|
||||
Balloons: 26/47, Keys: 3/4, Trophies: 2/5
|
||||
T.T. Amulets: 2/4, Wizpig Amulets: 2/4
|
||||
-------------------------------------------------------------------
|
||||
We are battling in Darkwater Beach. (2 opponents remain)
|
||||
===================================================================
|
||||
========================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
-------- 80.40% Complete (82.97% NON_MATCHING) ---------
|
||||
# Decompiled functions: 1858
|
||||
# GLOBAL_ASM remaining: 92
|
||||
# NON_MATCHING functions: 12
|
||||
# NON_EQUIVALENT WIP functions: 31
|
||||
--------------------- Game Status ----------------------
|
||||
Balloons: 39/47, Keys: 4/4, Trophies: 3/5
|
||||
T.T. Amulets: 4/4, Wizpig Amulets: 3/4
|
||||
--------------------------------------------------------
|
||||
We are racing in the rematch against Smokey. (Lap 1/3)
|
||||
========================================================
|
||||
ADVENTURE TWO (Cleanup & Documentation)
|
||||
------------------- 53.78% Complete --------------------
|
||||
# Documented functions: 1136
|
||||
# Undocumented remaining: 517
|
||||
--------------------- Game Status ----------------------
|
||||
Balloons: 26/47, Keys: 3/4, Trophies: 2/5
|
||||
T.T. Amulets: 2/4, Wizpig Amulets: 2/4
|
||||
--------------------------------------------------------
|
||||
We are battling in Darkwater Beach. (2 opponents remain)
|
||||
========================================================
|
||||
```
|
||||
<!-- README_SCORE_END -->
|
||||
|
||||
+4
-1
@@ -21,6 +21,9 @@
|
||||
#define DKR_CC_UNK11 ENVIRONMENT, TEXEL0, ENV_ALPHA, TEXEL0, TEXEL0, 0, PRIMITIVE, 0
|
||||
#define DKR_CC_UNK12 0, 0, 0, ENVIRONMENT, 0, 0, 0, TEXEL0
|
||||
#define DKR_CC_UNK13 ENVIRONMENT, TEXEL0, ENV_ALPHA, TEXEL0, TEXEL1, 0, PRIMITIVE, 0
|
||||
#define DKR_CC_UNK14 TEXEL1, TEXEL0, SHADE, TEXEL0, 1, TEXEL0, PRIMITIVE, TEXEL0
|
||||
#define DKR_CC_UNK15 ENVIRONMENT, COMBINED, ENV_ALPHA, COMBINED, COMBINED, 0, SHADE, 0
|
||||
#define DKR_CC_UNK16 ENVIRONMENT, TEXEL0, ENV_ALPHA, TEXEL0, 0, 0, 0, PRIMITIVE
|
||||
|
||||
#define DKR_CC_ENVIRONMENT 0, 0, 0, ENVIRONMENT, 0, 0, 0, ENVIRONMENT
|
||||
#define DKR_CC_DECALFADEPRIM 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0
|
||||
@@ -90,7 +93,7 @@
|
||||
gMoveWd(pkt, G_MW_BILLBOARD, 0, 0)
|
||||
|
||||
#define gSPVertexDKR(pkt, v, n, v0) \
|
||||
gDma1p(pkt, G_VTX, v, (((n) * 8 + (n)) << 1) + 8,((n)-1)<<3|(((u32)(v) & 6))|(v0))
|
||||
gDma1p(pkt, G_VTX, v, (((n) * 8 + (n)) << 1) + 8, ((n)-1)<<3|(((u32)(v) & 6))|(v0))
|
||||
|
||||
#define TRIN_DISABLE_TEXTURE 0
|
||||
#define TRIN_ENABLE_TEXTURE 1
|
||||
|
||||
+1
-1
@@ -1333,7 +1333,7 @@ void apply_object_shear_matrix(Gfx **dList, MatrixS **mtx, Object *arg2, Object
|
||||
/**
|
||||
* Official Name: camPushModelMtx
|
||||
*/
|
||||
void camera_push_model_mtx(Gfx **dList, MatrixS **mtx, ObjectTransform *trans, f32 scale, f32 scaleY) {
|
||||
s32 camera_push_model_mtx(Gfx **dList, MatrixS **mtx, ObjectTransform *trans, f32 scale, f32 scaleY) {
|
||||
f32 tempX;
|
||||
f32 tempY;
|
||||
f32 tempZ;
|
||||
|
||||
+1
-1
@@ -123,7 +123,7 @@ void set_camera_shake(f32 magnitude);
|
||||
void func_80067D3C(Gfx **dList, MatrixS **mats);
|
||||
void render_ortho_triangle_image(Gfx **dList, MatrixS **mtx, Vertex **vtx, ObjectSegment *segment, Sprite *sprite, s32 flags);
|
||||
s32 render_sprite_billboard(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *obj, unk80068514_arg4 *arg4, s32 flags);
|
||||
void camera_push_model_mtx(Gfx **dList, MatrixS **mtx, ObjectTransform *trans, f32 scale, f32 scaleY);
|
||||
s32 camera_push_model_mtx(Gfx **dList, MatrixS **mtx, ObjectTransform *trans, f32 scale, f32 scaleY);
|
||||
void viewport_scissor(Gfx **dList);
|
||||
void apply_matrix_from_stack(Gfx **dList);
|
||||
void copy_viewports_to_stack(void);
|
||||
|
||||
+233
@@ -2674,7 +2674,240 @@ void func_8002C954(LevelModelSegment *segment, LevelModelSegmentBoundingBox *bbo
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
s32 func_8002CC30(LevelModelSegment *segment) {
|
||||
s32 spF4;
|
||||
s32 spEC;
|
||||
s32 spD0;
|
||||
f32 tri1z;
|
||||
f32 spA0;
|
||||
f32 sp9C;
|
||||
f32 sp98;
|
||||
s32 sp78;
|
||||
s32 i;
|
||||
Triangle *temp_v1_4;
|
||||
Vertex *temp_a0;
|
||||
Vertex *temp_a0_2;
|
||||
f32 tri3z;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f0_3;
|
||||
f32 temp_f0_4;
|
||||
f32 tri2y;
|
||||
f32 temp_f12_2;
|
||||
f32 tri2z;
|
||||
f32 temp_f14_2;
|
||||
f32 tri3x;
|
||||
f32 temp_f16_2;
|
||||
f32 tri3y;
|
||||
f32 temp_f18_2;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
f32 temp_f24;
|
||||
f32 temp_f24_2;
|
||||
f32 tri1x;
|
||||
f32 temp_f28_2;
|
||||
f32 tri2x;
|
||||
f32 temp_f2_2;
|
||||
f32 tri1y;
|
||||
f32 temp_f30_2;
|
||||
f32 temp_f4;
|
||||
f32 var_f20;
|
||||
f32 var_f22;
|
||||
f32 var_f26;
|
||||
s16 vertsOffset;
|
||||
s16 temp_fp_2;
|
||||
s16 temp_t7_2;
|
||||
s16 endTri;
|
||||
s16 startTri;
|
||||
s16 var_a1;
|
||||
s16 var_s7;
|
||||
s16 var_v1;
|
||||
s32 temp_s6;
|
||||
s32 temp_t2;
|
||||
s32 temp_t4;
|
||||
s32 temp_t7;
|
||||
s32 temp_t9;
|
||||
s32 var_a0;
|
||||
s32 var_a1_2;
|
||||
s32 var_at;
|
||||
s32 var_s0;
|
||||
s32 var_s4;
|
||||
s32 var_s5;
|
||||
s32 var_t1;
|
||||
s32 var_v0;
|
||||
s32 var_v0_2;
|
||||
u16 temp_s0;
|
||||
u16 temp_s1;
|
||||
u16 temp_t3;
|
||||
u8 *temp_v1_2;
|
||||
Vertex *temp_v0_2;
|
||||
Vertex *temp_v0_3;
|
||||
Vertex *temp_v0_4;
|
||||
TriangleBatchInfo *temp_v0_5;
|
||||
Vertex *temp_v0_6;
|
||||
Vertex *temp_v0_7;
|
||||
f32 *temp_v1_3;
|
||||
f32 *temp_v1_5;
|
||||
CollisionNode *temp_v1_6;
|
||||
|
||||
spEC = 0;
|
||||
var_s4 = 0;
|
||||
for (i = 0; i < segment->numberOfBatches; i++) {
|
||||
startTri = segment->batches[i].facesOffset;
|
||||
endTri = segment->batches[i + 1].facesOffset;
|
||||
vertsOffset = segment->batches[i].verticesOffset;
|
||||
if (startTri < endTri) {
|
||||
var_a1_2 = startTri * sizeof(Triangle);
|
||||
do {
|
||||
temp_v1_2 = &segment->triangles->verticesArray[var_a1_2];
|
||||
if (!(temp_v1_2[0] & 0x80)) {
|
||||
temp_a0 = segment->vertices;
|
||||
temp_v0_2 = &temp_a0[temp_v1_2[1] + vertsOffset]; //((temp_v1_2[1] + temp_fp) * 0xA) + temp_a0;
|
||||
tri1x = temp_v0_2->x;
|
||||
tri1y = temp_v0_2->y;
|
||||
tri1z = temp_v0_2->z;
|
||||
temp_v0_3 =
|
||||
&temp_a0[temp_v1_2[2] + vertsOffset]; //((temp_v1_2[2] + curVertOffset) * 0xA) + temp_a0;
|
||||
tri2x = temp_v0_3->x;
|
||||
tri2y = temp_v0_3->y;
|
||||
tri2z = temp_v0_3->z;
|
||||
temp_v0_4 =
|
||||
&temp_a0[temp_v1_2[3] + vertsOffset]; //((temp_v1_2[3] + curVertOffset) * 0xA) + temp_a0;
|
||||
tri3x = temp_v0_4->x;
|
||||
tri3y = temp_v0_4->y;
|
||||
tri3z = temp_v0_4->z;
|
||||
temp_f20 = ((tri2z - tri3z) * tri1y) + (tri2y * (tri3z - tri1z)) + (tri3y * (tri1z - tri2z));
|
||||
temp_f22 = ((tri2x - tri3x) * tri1z) + (tri2z * (tri3x - tri1x)) + (tri3z * (tri1x - tri2x));
|
||||
temp_f24 = ((tri2y - tri3y) * tri1x) + (tri2x * (tri3y - tri1y)) + (tri3x * (tri1y - tri2y));
|
||||
temp_f0_2 = sqrtf((temp_f20 * temp_f20) + (temp_f22 * temp_f22) + (temp_f24 * temp_f24));
|
||||
if (temp_f0_2 > 0.0) {
|
||||
temp_f20 /= temp_f0_2;
|
||||
temp_f22 /= temp_f0_2;
|
||||
temp_f24 /= temp_f0_2;
|
||||
}
|
||||
segment->unk18[var_s4 + 0] = temp_f20;
|
||||
segment->unk18[var_s4 + 1] = temp_f22;
|
||||
segment->unk18[var_s4 + 2] = temp_f24;
|
||||
segment->unk18[var_s4 + 3] = -((tri1x * temp_f20) + (tri1y * temp_f22) + (tri1z * temp_f24));
|
||||
var_s4++;
|
||||
}
|
||||
var_a1_2 += sizeof(Triangle);
|
||||
} while (var_a1_2 < (endTri * 0x10));
|
||||
}
|
||||
}
|
||||
var_t1 = var_s4;
|
||||
if (D_8011B0F8 == 0) {
|
||||
spEC = 0;
|
||||
if (var_a1 > 0) {
|
||||
i = 0;
|
||||
do {
|
||||
temp_v0_5 = segment->batches + i;
|
||||
temp_t7_2 = temp_v0_5[1].verticesOffset;
|
||||
var_v1 = temp_v0_5->facesOffset;
|
||||
temp_fp_2 = temp_v0_5->verticesOffset;
|
||||
spF4 = (s32) temp_t7_2;
|
||||
var_at = var_v1 < spF4;
|
||||
if (temp_v0_5->flags & 0x200) {
|
||||
var_v1 = temp_t7_2;
|
||||
var_at = var_v1 < spF4;
|
||||
}
|
||||
var_s7 = var_v1;
|
||||
if (var_at != 0) {
|
||||
var_a0 = var_v1 * 0x10;
|
||||
do {
|
||||
if (!(segment->triangles->verticesArray[var_a0] & 0x80)) {
|
||||
temp_s1 = segment->unk14[var_s7].triangleIndex;
|
||||
temp_v1_3 = segment->unk18 + (temp_s1 * 0x10);
|
||||
var_v0 = 0;
|
||||
spA0 = temp_v1_3[0];
|
||||
var_s5 = 0;
|
||||
sp9C = temp_v1_3[1];
|
||||
sp78 = var_a0;
|
||||
temp_f24 = temp_v1_3[2];
|
||||
do {
|
||||
temp_s6 = var_v0 + 1;
|
||||
temp_v1_4 = &segment->triangles[var_s7];
|
||||
var_s0 = temp_s6;
|
||||
if (temp_s6 >= 3) {
|
||||
var_s0 = 0;
|
||||
}
|
||||
temp_s0 = (&segment->unk14[var_s7] + var_s5)->closestTri01;
|
||||
if ((s32) temp_s0 < var_t1) {
|
||||
temp_v1_5 = segment->unk18 + (temp_s0 * 0x10);
|
||||
temp_a0_2 = segment->vertices;
|
||||
temp_v0_6 = temp_a0_2 +
|
||||
((temp_v1_4->verticesArray[var_v0 + 1] + temp_fp_2) *
|
||||
0xA); //((temp_v1_4->verticesArray[var_v0].unk1 + temp_fp_2) * 0xA);
|
||||
temp_f4 = (f32) temp_v0_6->z;
|
||||
tri1z = temp_f4;
|
||||
temp_v0_7 = temp_a0_2 + ((temp_v1_4->verticesArray[var_s0 + 1] + temp_fp_2) * 0xA);
|
||||
temp_f28_2 = (f32) temp_v0_6->x;
|
||||
spD0 = var_t1;
|
||||
temp_f30_2 = (f32) temp_v0_6->y;
|
||||
temp_f2_2 = (f32) temp_v0_7->x;
|
||||
temp_f16_2 = ((temp_v1_5[0] + spA0) * 10.0f) + temp_f28_2;
|
||||
temp_f12_2 = (f32) temp_v0_7->y;
|
||||
temp_f14_2 = (f32) temp_v0_7->z;
|
||||
temp_f18_2 = ((temp_v1_5[1] + sp9C) * 10.0f) + temp_f30_2;
|
||||
temp_f0_3 = ((temp_v1_5[2] + temp_f24) * 10.0f) + temp_f4;
|
||||
var_f20 = ((temp_f14_2 - temp_f0_3) * temp_f30_2) +
|
||||
(temp_f12_2 * (temp_f0_3 - temp_f4)) +
|
||||
(temp_f18_2 * (temp_f4 - temp_f14_2));
|
||||
var_f22 = ((temp_f2_2 - temp_f16_2) * temp_f4) +
|
||||
(temp_f14_2 * (temp_f16_2 - temp_f28_2)) +
|
||||
(temp_f0_3 * (temp_f28_2 - temp_f2_2));
|
||||
temp_f24_2 = ((temp_f12_2 - temp_f18_2) * temp_f28_2) +
|
||||
(temp_f2_2 * (temp_f18_2 - temp_f30_2)) +
|
||||
(temp_f16_2 * (temp_f30_2 - temp_f12_2));
|
||||
var_f26 = temp_f24_2;
|
||||
temp_f0_4 =
|
||||
sqrtf((var_f20 * var_f20) + (var_f22 * var_f22) + (temp_f24_2 * temp_f24_2));
|
||||
if ((f64) temp_f0_4 > 0.0) {
|
||||
var_f20 /= temp_f0_4;
|
||||
var_f22 /= temp_f0_4;
|
||||
var_f26 = temp_f24_2 / temp_f0_4;
|
||||
}
|
||||
if (temp_s0 != temp_s1) {
|
||||
var_v0_2 = 0;
|
||||
do {
|
||||
temp_v1_6 = &segment->unk14[temp_s0] + var_v0_2;
|
||||
temp_t3 = temp_v1_6->closestTri01;
|
||||
var_v0_2 += 2;
|
||||
if (temp_s1 == temp_t3) {
|
||||
temp_v1_6->closestTri01 = (s16) (var_s4 | 0x8000);
|
||||
}
|
||||
} while (var_v0_2 != 6);
|
||||
}
|
||||
(&segment->unk14[var_s7] + var_s5)->closestTri01 = (s16) var_s4;
|
||||
temp_t2 = var_s4 * 0x10;
|
||||
(segment->unk18[temp_t2]) = var_f20;
|
||||
(segment->unk18[temp_t2 + 1]) = var_f22;
|
||||
(segment->unk18[temp_t2 + 2]) = var_f26;
|
||||
var_s4 += 1;
|
||||
segment->unk18[temp_t2 + 3] =
|
||||
(f32) - ((temp_f28_2 * var_f20) + (temp_f30_2 * var_f22) + (tri1z * var_f26));
|
||||
}
|
||||
var_v0 = temp_s6;
|
||||
var_s5 += 2;
|
||||
} while (temp_s6 != 3);
|
||||
var_a0 = sp78;
|
||||
}
|
||||
var_s7 += 1;
|
||||
var_a0 += 0x10;
|
||||
} while (var_s7 != spF4);
|
||||
var_a1 = segment->numberOfBatches;
|
||||
}
|
||||
temp_t4 = spEC + 1;
|
||||
i += 0xC;
|
||||
spEC = temp_t4;
|
||||
} while (temp_t4 < var_a1);
|
||||
}
|
||||
}
|
||||
return var_s4 * 0x10;
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/tracks/func_8002CC30.s")
|
||||
#endif
|
||||
|
||||
typedef struct unk8002D30C_a0 {
|
||||
u8 pad00[0x04];
|
||||
|
||||
+194
-64
@@ -16,13 +16,13 @@ Vec2s *D_800E3044 = NULL; // holds some sort of index?
|
||||
TexCoords *D_800E3048 = NULL;
|
||||
f32 *D_800E304C[9] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
|
||||
|
||||
Vertex *gWaveVertices[4] = { NULL, NULL };
|
||||
Vertex *gWaveVertices[4][1] = { NULL, NULL };
|
||||
Triangle *gWaveTriangles[4][1] = { NULL, NULL, NULL, NULL };
|
||||
Triangle D_800E3090[4] = {
|
||||
{ { BACKFACE_DRAW, 0x00, 0x02, 0x01 }, 0, 0, 0, 0, 0, 0 },
|
||||
{ { BACKFACE_DRAW, 0x01, 0x02, 0x03 }, 0, 0, 0, 0, 0, 0 },
|
||||
{ { BACKFACE_DRAW, 0x00, 0x02, 0x01 }, 0, 0, 0, 0, 0, 0 },
|
||||
{ { BACKFACE_DRAW, 0x01, 0x02, 0x03 }, 0, 0, 0, 0, 0, 0 },
|
||||
{ { BACKFACE_DRAW, 0, 2, 1 }, 0, 0, 0, 0, 0, 0 },
|
||||
{ { BACKFACE_DRAW, 1, 2, 3 }, 0, 0, 0, 0, 0, 0 },
|
||||
{ { BACKFACE_DRAW, 0, 2, 1 }, 0, 0, 0, 0, 0, 0 },
|
||||
{ { BACKFACE_DRAW, 1, 2, 3 }, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
|
||||
TextureHeader *gWaveTextureHeader = NULL;
|
||||
@@ -143,7 +143,7 @@ void free_waves(void) {
|
||||
FREE_MEM(D_800E3044);
|
||||
FREE_MEM(D_800E3048);
|
||||
FREE_MEM(D_800E304C[0]);
|
||||
FREE_MEM(gWaveVertices[0]);
|
||||
FREE_MEM(gWaveVertices[0][0]);
|
||||
FREE_MEM(gWaveTriangles[0][0]);
|
||||
FREE_TEX(gWaveTextureHeader);
|
||||
FREE_MEM(D_800E30D4);
|
||||
@@ -173,13 +173,13 @@ void wave_init(void) {
|
||||
temp = (D_80129FC8.unk0 + 1);
|
||||
allocSize = (temp * 250 * (D_80129FC8.unk0 + 1));
|
||||
if (D_8012A078 != 2) {
|
||||
gWaveVertices[0] = (Vertex *) mempool_alloc_safe(allocSize << 1, COLOUR_TAG_CYAN);
|
||||
gWaveVertices[1] = (Vertex *) (((u32) gWaveVertices[0]) + allocSize);
|
||||
gWaveVertices[0][0] = (Vertex *) mempool_alloc_safe(allocSize << 1, COLOUR_TAG_CYAN);
|
||||
gWaveVertices[1][0] = (Vertex *) (((u32) gWaveVertices[0][0]) + allocSize);
|
||||
} else {
|
||||
gWaveVertices[0] = (Vertex *) mempool_alloc_safe(allocSize << 2, COLOUR_TAG_CYAN);
|
||||
gWaveVertices[1] = (Vertex *) (((u32) gWaveVertices[0]) + allocSize);
|
||||
gWaveVertices[2] = (Vertex *) (((u32) gWaveVertices[1]) + allocSize);
|
||||
gWaveVertices[3] = (Vertex *) (((u32) gWaveVertices[2]) + allocSize);
|
||||
gWaveVertices[0][0] = (Vertex *) mempool_alloc_safe(allocSize << 2, COLOUR_TAG_CYAN);
|
||||
gWaveVertices[1][0] = (Vertex *) (((u32) gWaveVertices[0][0]) + allocSize);
|
||||
gWaveVertices[2][0] = (Vertex *) (((u32) gWaveVertices[1][0]) + allocSize);
|
||||
gWaveVertices[3][0] = (Vertex *) (((u32) gWaveVertices[2][0]) + allocSize);
|
||||
}
|
||||
allocSize = (D_80129FC8.unk0 * 32) * D_80129FC8.unk0;
|
||||
if (D_8012A078 != 2) {
|
||||
@@ -302,19 +302,19 @@ void func_800B82B4(LevelModel *model, LevelHeader *header, s32 arg2) {
|
||||
do {
|
||||
for (j_2 = 0; D_80129FC8.unk0 >= j_2; j_2++) {
|
||||
for (k = 0; k < arg2; k++) {
|
||||
gWaveVertices[k][var_s5].x = (j_2 * D_8012A0B8) + 0.5;
|
||||
gWaveVertices[k][var_s5].z = (i_2 * D_8012A0BC) + 0.5;
|
||||
gWaveVertices[0][k][var_s5].x = (j_2 * D_8012A0B8) + 0.5;
|
||||
gWaveVertices[0][k][var_s5].z = (i_2 * D_8012A0BC) + 0.5;
|
||||
// this is only 0 for hot top volcano
|
||||
if (D_80129FC8.darkVertexColours == 0) {
|
||||
gWaveVertices[k][var_s5].r = 255;
|
||||
gWaveVertices[k][var_s5].g = 255;
|
||||
gWaveVertices[k][var_s5].b = 255;
|
||||
gWaveVertices[0][k][var_s5].r = 255;
|
||||
gWaveVertices[0][k][var_s5].g = 255;
|
||||
gWaveVertices[0][k][var_s5].b = 255;
|
||||
} else {
|
||||
gWaveVertices[k][var_s5].r = 0;
|
||||
gWaveVertices[k][var_s5].g = 0;
|
||||
gWaveVertices[k][var_s5].b = 0;
|
||||
gWaveVertices[0][k][var_s5].r = 0;
|
||||
gWaveVertices[0][k][var_s5].g = 0;
|
||||
gWaveVertices[0][k][var_s5].b = 0;
|
||||
}
|
||||
gWaveVertices[k][var_s5].a = 255;
|
||||
gWaveVertices[0][k][var_s5].a = 255;
|
||||
}
|
||||
var_s5++;
|
||||
}
|
||||
@@ -346,37 +346,37 @@ void func_800B82B4(LevelModel *model, LevelHeader *header, s32 arg2) {
|
||||
|
||||
var_s5 = (D_80129FC8.unk0 + 1) * D_80129FC8.unk0;
|
||||
for (i = 0; i < ARRAY_COUNT(D_8012A028); i++) {
|
||||
D_8012A028[i][0].x = gWaveVertices[i][0].x;
|
||||
D_8012A028[i][0].x = gWaveVertices[i][0][0].x;
|
||||
D_8012A028[i][0].y = 0;
|
||||
D_8012A028[i][0].z = gWaveVertices[i][0].z;
|
||||
D_8012A028[i][0].r = gWaveVertices[i][0].r;
|
||||
D_8012A028[i][0].g = gWaveVertices[i][0].g;
|
||||
D_8012A028[i][0].b = gWaveVertices[i][0].b;
|
||||
D_8012A028[i][0].a = gWaveVertices[i][0].a;
|
||||
D_8012A028[i][0].z = gWaveVertices[i][0][0].z;
|
||||
D_8012A028[i][0].r = gWaveVertices[i][0][0].r;
|
||||
D_8012A028[i][0].g = gWaveVertices[i][0][0].g;
|
||||
D_8012A028[i][0].b = gWaveVertices[i][0][0].b;
|
||||
D_8012A028[i][0].a = gWaveVertices[i][0][0].a;
|
||||
|
||||
D_8012A028[i][1].x = gWaveVertices[i][D_80129FC8.unk0].x;
|
||||
D_8012A028[i][1].x = gWaveVertices[i][0][D_80129FC8.unk0].x;
|
||||
D_8012A028[i][1].y = 0;
|
||||
D_8012A028[i][1].z = gWaveVertices[i][D_80129FC8.unk0].z;
|
||||
D_8012A028[i][1].r = gWaveVertices[i][D_80129FC8.unk0].r;
|
||||
D_8012A028[i][1].g = gWaveVertices[i][D_80129FC8.unk0].g;
|
||||
D_8012A028[i][1].b = gWaveVertices[i][D_80129FC8.unk0].b;
|
||||
D_8012A028[i][1].a = gWaveVertices[i][D_80129FC8.unk0].a;
|
||||
D_8012A028[i][1].z = gWaveVertices[i][0][D_80129FC8.unk0].z;
|
||||
D_8012A028[i][1].r = gWaveVertices[i][0][D_80129FC8.unk0].r;
|
||||
D_8012A028[i][1].g = gWaveVertices[i][0][D_80129FC8.unk0].g;
|
||||
D_8012A028[i][1].b = gWaveVertices[i][0][D_80129FC8.unk0].b;
|
||||
D_8012A028[i][1].a = gWaveVertices[i][0][D_80129FC8.unk0].a;
|
||||
|
||||
D_8012A028[i][2].x = gWaveVertices[i][var_s5].x;
|
||||
D_8012A028[i][2].x = gWaveVertices[i][0][var_s5].x;
|
||||
D_8012A028[i][2].y = 0;
|
||||
D_8012A028[i][2].z = gWaveVertices[i][var_s5].z;
|
||||
D_8012A028[i][2].r = gWaveVertices[i][var_s5].r;
|
||||
D_8012A028[i][2].g = gWaveVertices[i][var_s5].g;
|
||||
D_8012A028[i][2].b = gWaveVertices[i][var_s5].b;
|
||||
D_8012A028[i][2].a = gWaveVertices[i][var_s5].a;
|
||||
D_8012A028[i][2].z = gWaveVertices[i][0][var_s5].z;
|
||||
D_8012A028[i][2].r = gWaveVertices[i][0][var_s5].r;
|
||||
D_8012A028[i][2].g = gWaveVertices[i][0][var_s5].g;
|
||||
D_8012A028[i][2].b = gWaveVertices[i][0][var_s5].b;
|
||||
D_8012A028[i][2].a = gWaveVertices[i][0][var_s5].a;
|
||||
|
||||
D_8012A028[i][3].x = gWaveVertices[i][var_s5 + D_80129FC8.unk0].x;
|
||||
D_8012A028[i][3].x = gWaveVertices[i][0][var_s5 + D_80129FC8.unk0].x;
|
||||
D_8012A028[i][3].y = 0;
|
||||
D_8012A028[i][3].z = gWaveVertices[i][var_s5 + D_80129FC8.unk0].z;
|
||||
D_8012A028[i][3].r = gWaveVertices[i][var_s5 + D_80129FC8.unk0].r;
|
||||
D_8012A028[i][3].g = gWaveVertices[i][var_s5 + D_80129FC8.unk0].g;
|
||||
D_8012A028[i][3].b = gWaveVertices[i][var_s5 + D_80129FC8.unk0].b;
|
||||
D_8012A028[i][3].a = gWaveVertices[i][var_s5 + D_80129FC8.unk0].a;
|
||||
D_8012A028[i][3].z = gWaveVertices[i][0][var_s5 + D_80129FC8.unk0].z;
|
||||
D_8012A028[i][3].r = gWaveVertices[i][0][var_s5 + D_80129FC8.unk0].r;
|
||||
D_8012A028[i][3].g = gWaveVertices[i][0][var_s5 + D_80129FC8.unk0].g;
|
||||
D_8012A028[i][3].b = gWaveVertices[i][0][var_s5 + D_80129FC8.unk0].b;
|
||||
D_8012A028[i][3].a = gWaveVertices[i][0][var_s5 + D_80129FC8.unk0].a;
|
||||
}
|
||||
|
||||
func_800BCC70(model);
|
||||
@@ -600,7 +600,7 @@ void func_800B92F4(s32 arg0, s32 arg1) {
|
||||
}
|
||||
|
||||
sp84 = D_8012A5E8[k].unk6;
|
||||
vertices = &gWaveVertices[D_8012A018 + arg1][sp90 * sp98];
|
||||
vertices = &gWaveVertices[D_8012A018 + arg1][0][sp90 * sp98];
|
||||
sp98 = D_800E30E4[sp98];
|
||||
vertexIdx = 0;
|
||||
for (i = 0; i <= D_80129FC8.unk0; i++) {
|
||||
@@ -699,7 +699,7 @@ void func_800B97A8(s32 arg0, s32 arg1) {
|
||||
}
|
||||
|
||||
var_a0 = D_8012A5E8[k].unk6;
|
||||
vertices = &gWaveVertices[D_8012A018 + arg1][spA0 * spA8];
|
||||
vertices = &gWaveVertices[D_8012A018 + arg1][0][spA0 * spA8];
|
||||
spA8 = D_800E30E4[spA8];
|
||||
for (i = 0, vertexIdx = 0; i <= D_80129FC8.unk0; i++) {
|
||||
var_s1 = D_8012A5E8[k].unk4;
|
||||
@@ -901,43 +901,173 @@ void func_800BA288(s32 arg0, s32 arg1) {
|
||||
}
|
||||
|
||||
void func_800BA4B8(TextureHeader *tex, s32 rtile) {
|
||||
s32 mask;
|
||||
s32 txmask;
|
||||
s32 tmem;
|
||||
u32 texWidth;
|
||||
|
||||
texWidth = tex->width;
|
||||
tmem = 0;
|
||||
if (texWidth == 16) {
|
||||
if (rtile != 0) {
|
||||
tmem = 384; // 0x180
|
||||
txmask = 4;
|
||||
if (rtile != G_TX_RENDERTILE) {
|
||||
tmem = 384;
|
||||
}
|
||||
mask = 4;
|
||||
} else if (texWidth == 32) {
|
||||
mask = 5;
|
||||
if (rtile != 0) {
|
||||
tmem = 256; // 0x100
|
||||
txmask = 5;
|
||||
if (rtile != G_TX_RENDERTILE) {
|
||||
tmem = 256;
|
||||
}
|
||||
} else {
|
||||
//!@bug: txmask is not set, so it's value will be UB. I wonder if they accidentally set the width to 3 instead
|
||||
//! of the mask?
|
||||
texWidth = 3;
|
||||
if (rtile != 0) {
|
||||
tmem = 384; // 0x180
|
||||
if (rtile != G_TX_RENDERTILE) {
|
||||
tmem = 384;
|
||||
}
|
||||
}
|
||||
|
||||
// difference is G_IM_SIZ_32b vs G_IM_SIZ_16b
|
||||
if ((tex->format & 0xF) == TEX_FORMAT_RGBA32) {
|
||||
gDPLoadMultiBlock(gWaveDL++, OS_PHYSICAL_TO_K0(tex + 1), tmem, rtile, G_IM_FMT_RGBA, G_IM_SIZ_32b, texWidth,
|
||||
texWidth, 0, 0, 0, mask, mask, 0, 0);
|
||||
|
||||
return;
|
||||
texWidth, 0, 0, 0, txmask, txmask, 0, 0);
|
||||
} else {
|
||||
gDPLoadMultiBlock(gWaveDL++, OS_PHYSICAL_TO_K0(tex + 1), tmem, rtile, G_IM_FMT_RGBA, G_IM_SIZ_16b, texWidth,
|
||||
texWidth, 0, 0, 0, txmask, txmask, 0, 0);
|
||||
}
|
||||
|
||||
gDPLoadMultiBlock(gWaveDL++, OS_PHYSICAL_TO_K0(tex + 1), tmem, rtile, G_IM_FMT_RGBA, G_IM_SIZ_16b, texWidth,
|
||||
texWidth, 0, 0, 0, mask, mask, 0, 0);
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/9b2EF
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/waves/func_800BA8E4.s")
|
||||
void func_800BA8E4(Gfx **dList, MatrixS **mtx, s32 arg2) {
|
||||
s32 sp11C;
|
||||
Vertex *vtx;
|
||||
Triangle *tri;
|
||||
s32 numTris;
|
||||
s32 numVerts;
|
||||
s32 j;
|
||||
s32 sp104;
|
||||
s32 var_fp;
|
||||
s32 var_t0;
|
||||
ObjectTransform spE4;
|
||||
LevelModel_Alternate *spE0;
|
||||
s32 i; // spDC
|
||||
TextureHeader *tex1;
|
||||
TextureHeader *tex2;
|
||||
|
||||
if ((arg2 != 1) || (D_8012A078 != 2)) {
|
||||
arg2 = 0;
|
||||
} else {
|
||||
arg2 = 2;
|
||||
}
|
||||
|
||||
if (D_800E30DC > 0) {
|
||||
gWaveDL = *dList;
|
||||
D_80129FC4 = *mtx;
|
||||
i = 0;
|
||||
rendermode_reset(&gWaveDL);
|
||||
gSPSetGeometryMode(gWaveDL++, G_ZBUFFER);
|
||||
if (D_80129FC8.darkVertexColours) {
|
||||
gSPClearGeometryMode(gWaveDL++, G_FOG);
|
||||
tex1 = set_animated_texture_header(gWaveTextureHeader, D_8012A09C << 8);
|
||||
tex2 = set_animated_texture_header(gWaveTexture, gWaveBatch->unk7 << 14);
|
||||
func_800BA4B8(tex1, 1);
|
||||
func_800BA4B8(tex2, 0);
|
||||
gDPSetCombineMode(gWaveDL++, DKR_CC_UNK14, DKR_CC_UNK15);
|
||||
if ((tex1->format & 0xF) == TEX_FORMAT_RGBA32 && get_viewport_count() <= 0) {
|
||||
gDPSetOtherMode(gWaveDL++, DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_INTER2);
|
||||
} else {
|
||||
gDPSetOtherMode(gWaveDL++, DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_SURF2);
|
||||
}
|
||||
gDPSetPrimColor(gWaveDL++, 0, 0, 255, 255, 255, 0);
|
||||
if (D_800E3180 != NULL) {
|
||||
gDPSetEnvColor(gWaveDL++, D_800E3180->red, D_800E3180->green, D_800E3180->blue, D_800E3180->alpha);
|
||||
} else {
|
||||
gDPSetEnvColor(gWaveDL++, 255, 255, 255, 0);
|
||||
}
|
||||
} else {
|
||||
gSPSetGeometryMode(gWaveDL++, G_FOG);
|
||||
tex1 = set_animated_texture_header(gWaveTexture, gWaveBatch->unk7 << 14);
|
||||
gDkrDmaDisplayList(gWaveDL++, OS_K0_TO_PHYSICAL(tex1->cmd), tex1->numberOfCommands);
|
||||
gDPSetCombineMode(gWaveDL++, DKR_CC_UNK16, DKR_CC_UNK8);
|
||||
gDPSetOtherMode(gWaveDL++, DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2);
|
||||
gDPSetPrimColor(gWaveDL++, 0, 0, 255, 255, 255, 255);
|
||||
if (D_800E3180 != NULL) {
|
||||
gDPSetEnvColor(gWaveDL++, D_800E3180->red, D_800E3180->green, D_800E3180->blue, D_800E3180->alpha);
|
||||
} else {
|
||||
gDPSetEnvColor(gWaveDL++, 255, 255, 255, 0);
|
||||
}
|
||||
}
|
||||
if (D_80129FC8.unk28) {
|
||||
spE4.scale = 0.5f;
|
||||
} else {
|
||||
spE4.scale = 1.0f;
|
||||
}
|
||||
|
||||
spE4.rotation.x = spE4.rotation.y = spE4.rotation.z = 0;
|
||||
for (; i < D_800E30DC; i++) {
|
||||
if (D_80129FC8.darkVertexColours) {
|
||||
func_800B92F4(D_8012A1E8[i], arg2);
|
||||
} else {
|
||||
func_800B97A8(D_8012A1E8[i], arg2);
|
||||
}
|
||||
spE0 = &D_800E30D8[D_8012A1E8[i]];
|
||||
spE4.x_position = spE0->unk4;
|
||||
spE4.y_position = spE0->unk6;
|
||||
spE4.z_position = spE0->unk8;
|
||||
sp104 = D_800E30D4[spE0->unkC];
|
||||
if (D_80129FC8.unk28) {
|
||||
for (sp11C = 0; sp11C < 2; sp11C++) {
|
||||
spE4.x_position = spE0->unk4;
|
||||
for (var_fp = 0; var_fp < 2; var_fp++) {
|
||||
camera_push_model_mtx(&gWaveDL, &D_80129FC4, &spE4, 1.0f, 0.0f);
|
||||
if (sp104 & 0xFF) {
|
||||
numTris = D_80129FC8.unk0 << 1;
|
||||
numVerts = D_80129FC8.unk0 + 1;
|
||||
var_t0 = ((sp104 & 0xFF) - 1) * numVerts * numVerts;
|
||||
for (j = 0; j < D_80129FC8.unk0; j++) {
|
||||
vtx = &gWaveVertices[D_8012A018 + arg2][0][var_t0];
|
||||
tri = &gWaveTriangles[D_8012A018 + arg2][0][j * (D_80129FC8.unk0 << 1)];
|
||||
|
||||
gSPVertexDKR(gWaveDL++, OS_K0_TO_PHYSICAL(vtx), numVerts << 1, 0);
|
||||
gSPPolygon(gWaveDL++, OS_K0_TO_PHYSICAL(tri), numTris, TRIN_ENABLE_TEXTURE);
|
||||
|
||||
var_t0 += D_80129FC8.unk0 + 1;
|
||||
}
|
||||
} else {
|
||||
gSPVertexDKR(gWaveDL++, OS_K0_TO_PHYSICAL(&D_8012A028[D_8012A018]), 4, 0);
|
||||
gSPPolygon(gWaveDL++, OS_K0_TO_PHYSICAL(&D_800E3090[D_8012A018 << 1]), 2,
|
||||
TRIN_ENABLE_TEXTURE);
|
||||
}
|
||||
apply_matrix_from_stack(&gWaveDL);
|
||||
sp104 >>= 8;
|
||||
spE4.x_position += D_8012A0A0 * 0.5f;
|
||||
}
|
||||
spE4.z_position += D_8012A0A4 * 0.5f;
|
||||
}
|
||||
} else {
|
||||
camera_push_model_mtx(&gWaveDL, &D_80129FC4, &spE4, 1.0f, 0.0f);
|
||||
numTris = D_80129FC8.unk0 << 1;
|
||||
numVerts = D_80129FC8.unk0 + 1;
|
||||
var_t0 = ((sp104 & 0xFF) - 1) * numVerts * numVerts;
|
||||
for (j = 0; j < D_80129FC8.unk0; j++) {
|
||||
vtx = &gWaveVertices[D_8012A018 + arg2][0][var_t0];
|
||||
tri = &gWaveTriangles[D_8012A018 + arg2][0][j * (D_80129FC8.unk0 << 1)];
|
||||
|
||||
gSPVertexDKR(gWaveDL++, OS_K0_TO_PHYSICAL(vtx), numVerts << 1, 0);
|
||||
gSPPolygon(gWaveDL++, OS_K0_TO_PHYSICAL(tri), numTris, TRIN_ENABLE_TEXTURE);
|
||||
|
||||
var_t0 += D_80129FC8.unk0 + 1;
|
||||
}
|
||||
apply_matrix_from_stack(&gWaveDL);
|
||||
}
|
||||
}
|
||||
if (D_80129FC8.darkVertexColours) {
|
||||
gSPSetGeometryMode(gWaveDL++, G_FOG);
|
||||
gDPSetPrimColor(gWaveDL++, 0, 0, 255, 255, 255, 255);
|
||||
}
|
||||
*dList = gWaveDL;
|
||||
*mtx = D_80129FC4;
|
||||
}
|
||||
D_800E30DC = 0;
|
||||
}
|
||||
|
||||
f32 func_800BB2F4(s32 arg0, f32 arg1, f32 arg2, Vec3f *arg3) {
|
||||
f32 spA4;
|
||||
|
||||
+3
-2
@@ -126,7 +126,7 @@ s32 func_800B9228(LevelModelSegment *arg0);
|
||||
void func_800BBDDC(LevelModel *level, LevelHeader *header);
|
||||
void func_800BFE98(s32 arg0);
|
||||
void func_800B8134(LevelHeader *header);
|
||||
void func_800BBE08(LevelModel *level, LevelHeader *arg1);
|
||||
void func_800BBE08(LevelModel *level, LevelHeader *header);
|
||||
void obj_loop_wavepower(Object *obj);
|
||||
void func_800BFC54(unk800BFC54_arg0 *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4);
|
||||
void func_800BF3E4(Object *obj);
|
||||
@@ -135,9 +135,10 @@ void func_800BA288(s32 arg0, s32 arg1);
|
||||
void func_800BF9F8(unk800BF9F8 *arg0, f32 arg1, f32 arg2);
|
||||
unk800E3190 *func_800BF634(Object *obj, f32 xPos, f32 zPos, f32 arg3, s32 arg4, f32 arg5, f32 arg6, f32 arg7, s32 arg8);
|
||||
void wave_init(void);
|
||||
void func_800BA4B8(TextureHeader *tex, s32 rtile);
|
||||
|
||||
Object_64 *func_800BE654(s16, f32, f32); // Non Matching
|
||||
void func_800BBF78(LevelModel *arg0); // Non Matching
|
||||
void func_800BBF78(LevelModel *model); // Non Matching
|
||||
f32 func_800BB2F4(s32, f32, f32, Vec3f *);
|
||||
void func_800B8C04(s32, s32, s32, s32, s32);
|
||||
void func_800BF524(Object *);
|
||||
|
||||
@@ -8,7 +8,8 @@ compiler_type = "ido"
|
||||
"gDkr.*" = "void"
|
||||
"numberOfGfxCommands" = "unsigned int"
|
||||
"fast3d_cmd" = "void"
|
||||
"OS_PHYSICAL_TO_K0" = "void *"
|
||||
"OS_PHYSICAL_TO_K0" = "unsigned int"
|
||||
"OS_K0_TO_PHYSICAL" = "unsigned int"
|
||||
"_SHIFTL" = "unsigned int"
|
||||
"G_IM.*" = "unsigned int"
|
||||
"KEEPLINEBREAK" = "void"
|
||||
@@ -25,6 +26,10 @@ compiler_type = "ido"
|
||||
"SCREEN_.*" = "unsigned int"
|
||||
"TV_TYPE_.*" = "unsigned int"
|
||||
"COLOUR_TAG_.*" = "unsigned int"
|
||||
"DKR_.*" = "unsigned int"
|
||||
"G_RM.*" = "unsigned int"
|
||||
"G_FOG" = "unsigned int"
|
||||
"G_ZBUFFER" = "unsigned int"
|
||||
|
||||
[decompme.compilers]
|
||||
"tools/ido-recomp/linux/cc" = "ido5.3"
|
||||
|
||||
@@ -2869,7 +2869,6 @@ D_800E3044 = 0x800E4B34;
|
||||
D_800E3048 = 0x800E4B38;
|
||||
D_800E304C = 0x800E4B3C;
|
||||
gWaveVertices = 0x800E4B60;
|
||||
D_800E3078 = 0x800E4B68;
|
||||
gWaveTriangles = 0x800E4B70;
|
||||
D_800E3090 = 0x800E4B80;
|
||||
gWaveTextureHeader = 0x800E4BC0;
|
||||
|
||||
@@ -2703,7 +2703,6 @@ D_800E3044 = 0x800E30D4;
|
||||
D_800E3048 = 0x800E30D8;
|
||||
D_800E304C = 0x800E30DC;
|
||||
gWaveVertices = 0x800E3100;
|
||||
D_800E3078 = 0x800E3108;
|
||||
gWaveTriangles = 0x800E3110;
|
||||
D_800E3090 = 0x800E3120;
|
||||
gWaveTextureHeader = 0x800E3160;
|
||||
|
||||
@@ -2632,7 +2632,6 @@ D_800E3044 = 0x800E3664;
|
||||
D_800E3048 = 0x800E3668;
|
||||
D_800E304C = 0x800E366C;
|
||||
gWaveVertices = 0x800E3690;
|
||||
D_800E3078 = 0x800E3698;
|
||||
gWaveTriangles = 0x800E36A0;
|
||||
D_800E3090 = 0x800E36B0;
|
||||
gWaveTextureHeader = 0x800E36F0;
|
||||
|
||||
@@ -2860,7 +2860,6 @@ D_800E3044 = 0x800E3044;
|
||||
D_800E3048 = 0x800E3048;
|
||||
D_800E304C = 0x800E304C;
|
||||
gWaveVertices = 0x800E3070;
|
||||
D_800E3078 = 0x800E3078;
|
||||
gWaveTriangles = 0x800E3080;
|
||||
D_800E3090 = 0x800E3090;
|
||||
gWaveTextureHeader = 0x800E30D0;
|
||||
|
||||
@@ -2629,7 +2629,6 @@ D_800E3044 = 0x800E35D4;
|
||||
D_800E3048 = 0x800E35D8;
|
||||
D_800E304C = 0x800E35DC;
|
||||
gWaveVertices = 0x800E3600;
|
||||
D_800E3078 = 0x800E3608;
|
||||
gWaveTriangles = 0x800E3610;
|
||||
D_800E3090 = 0x800E3620;
|
||||
gWaveTextureHeader = 0x800E3660;
|
||||
|
||||
Reference in New Issue
Block a user