mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-06-21 15:46:42 -04:00
Attempt to decompile wallhitsTick
This commit is contained in:
@@ -121,7 +121,7 @@ Gfx *gfxGetMasterDisplayList(void)
|
||||
return (Gfx *)g_GfxBuffers[g_GfxActiveBufferIndex];
|
||||
}
|
||||
|
||||
struct gfxvtx *gfxAllocateVertices(s32 count)
|
||||
struct gfxvtx *gfxAllocateVertices(u32 count)
|
||||
{
|
||||
void *ptr = g_GfxMemPos;
|
||||
g_GfxMemPos += count * sizeof(struct gfxvtx);
|
||||
|
||||
+1
-1
@@ -448,7 +448,7 @@ Gfx *sparksRender(Gfx *gdl)
|
||||
struct gfxvtx *vertices = gfxAllocateVertices(3);
|
||||
f32 f2;
|
||||
|
||||
for (k = 0; k < 3U; k++) {
|
||||
for (k = 0; k < 3; k++) {
|
||||
vertices[k].s = 0;
|
||||
vertices[k].t = 0;
|
||||
}
|
||||
|
||||
+1
-3
@@ -26,9 +26,7 @@ u32 var800ac0f8[4];
|
||||
f32 var800845d0 = 999999;
|
||||
f32 var800845d4 = 0.00001f;
|
||||
s32 var800845d8 = 1;
|
||||
u32 var800845dc = 0x00000000;
|
||||
u32 var800845e0 = 0x00000000;
|
||||
u32 var800845e4 = 0x00000000;
|
||||
struct coord var800845dc = {0, 0, 0};
|
||||
u32 var800845e8 = 0x00000000;
|
||||
u32 var800845ec = 0x3f800000;
|
||||
u32 var800845f0 = 0x00000000;
|
||||
|
||||
+243
-44
@@ -19,56 +19,16 @@
|
||||
#include "types.h"
|
||||
|
||||
const char var7f1b5a10[] = "WallHit_MakeSpaceRoom : ERROR - Couldn't find any space in room %d\n";
|
||||
const char var7f1b5a54[] = "wallhit";
|
||||
const char var7f1b5a5c[] = "g_MaxRound = %s%s%f";
|
||||
const char var7f1b5a70[] = "";
|
||||
const char var7f1b5a74[] = "";
|
||||
const char var7f1b5a78[] = "g_MinRound = %s%s%f";
|
||||
const char var7f1b5a8c[] = "";
|
||||
const char var7f1b5a90[] = "";
|
||||
const char var7f1b5a94[] = "Done %d Z buffer calcs";
|
||||
const char var7f1b5aac[] = "ZOOM : g_ZoomFactor=%s%s%f";
|
||||
const char var7f1b5ac8[] = "";
|
||||
const char var7f1b5acc[] = "";
|
||||
const char var7f1b5ad0[] = "ZOOM : g_ZoomScalar=%s%s%f";
|
||||
const char var7f1b5aec[] = "";
|
||||
const char var7f1b5af0[] = "";
|
||||
const char var7f1b5af4[] = "ZOOM : scale=%s%s%f";
|
||||
const char var7f1b5b08[] = "";
|
||||
const char var7f1b5b0c[] = "";
|
||||
const char var7f1b5b10[] = "WallHit_Tick : Status - RED";
|
||||
const char var7f1b5b2c[] = "WallHit_Tick : Status - YELLOW (%u)";
|
||||
const char var7f1b5b50[] = "WallHit_Tick : Status - GREEN";
|
||||
const char var7f1b5b70[] = "WallHit_Tick : %d Used";
|
||||
const char var7f1b5b88[] = "WallHit_Tick : %d Free";
|
||||
const char var7f1b5ba0[] = "WallHit_Tick : %d Pending";
|
||||
const char var7f1b5bbc[] = "WallHit_Tick : %d Blood";
|
||||
const char var7f1b5bd4[] = "WallHit_Tick : %d Other";
|
||||
const char var7f1b5bec[] = "WallHit_Tick : %d Ratio";
|
||||
const char var7f1b5c04[] = "WallHit_Tick : %d(%d) Prop Hits";
|
||||
const char var7f1b5c24[] = "tLifeTime=%s%s%f, tScalarGbl=%f";
|
||||
const char var7f1b5c44[] = "";
|
||||
const char var7f1b5c48[] = "";
|
||||
const char var7f1b5c4c[] = "wallhit.c";
|
||||
const char var7f1b5c58[] = "wallhit.c";
|
||||
const char var7f1b5c64[] = "wallhit.c";
|
||||
const char var7f1b5c70[] = "AFT : tVecU (along) = (%s%s%f,%f,%f)\n";
|
||||
const char var7f1b5c98[] = "";
|
||||
const char var7f1b5c9c[] = "";
|
||||
const char var7f1b5ca0[] = "AFT : tVecV (up) = (%s%s%f,%f,%f)\n";
|
||||
const char var7f1b5cc8[] = "";
|
||||
const char var7f1b5ccc[] = "";
|
||||
const char var7f1b5cd0[] = "Wallhit colour %d not implemented, substituting black\n";
|
||||
|
||||
struct wallhit *g_Wallhits;
|
||||
struct wallhit *var800a41b4;
|
||||
struct wallhit *var800a41b8;
|
||||
|
||||
u32 var8007f740 = 0x00000000;
|
||||
s32 var8007f740 = 0;
|
||||
u8 var8007f744[4] = {0x40, 0x0a, 0x0a, 0x00};
|
||||
u32 var8007f748 = 0x3f800000;
|
||||
f32 var8007f748 = 1;
|
||||
f32 var8007f74c = 1;
|
||||
u32 var8007f750 = 0x00000000;
|
||||
u32 var8007f750 = 0;
|
||||
f32 var8007f754 = 0;
|
||||
f32 var8007f758 = 0;
|
||||
|
||||
@@ -1382,6 +1342,245 @@ glabel var7f1b5d18
|
||||
/* f13f3f0: 27bd0130 */ addiu $sp,$sp,0x130
|
||||
);
|
||||
|
||||
const char var7f1b5a54[] = "wallhit";
|
||||
|
||||
s32 var8007f834 = 0;
|
||||
|
||||
// Mismatch: float regalloc for midx, midy and midz
|
||||
//void wallhitsTick(void)
|
||||
//{
|
||||
// f32 sp12c;
|
||||
// f32 fov;
|
||||
// s32 numallocated;
|
||||
// s32 i;
|
||||
// s32 j;
|
||||
// u32 stack[3];
|
||||
// f32 midx;
|
||||
// f32 midy;
|
||||
// f32 midz;
|
||||
// f32 f22;
|
||||
// f32 f24;
|
||||
// struct wallhit *wallhit;
|
||||
// struct coord spc8[4];
|
||||
// u32 stack2[4];
|
||||
//
|
||||
// static s32 var8007f834 = 0;
|
||||
//
|
||||
// sp12c = (g_Vars.lvupdate240 + 2.0f) * 0.25f;
|
||||
// fov = currentPlayerGetGunZoomFov();
|
||||
//
|
||||
// mainOverrideVariable("wallhit", &var8007f750);
|
||||
//
|
||||
// var8007f740 = 0;
|
||||
//
|
||||
// if (fov == 0.0f || fov == 60.0f) {
|
||||
// var8007f748 = 1;
|
||||
// } else {
|
||||
// f32 tmp = fov / g_Vars.currentplayer->zoominfovy;
|
||||
// var8007f748 = 60.0f / fov - 1.00f / tmp + 1;
|
||||
// }
|
||||
//
|
||||
// var8007f74c = 1.0f / var8007f748;
|
||||
//
|
||||
// numallocated = g_WallhitsNumFree + g_WallhitsNumUsed;
|
||||
//
|
||||
// if (numallocated < var8009cc70) {
|
||||
// func0f13e994();
|
||||
// } else if (numallocated < var8009cc74) {
|
||||
// var8007f834++;
|
||||
//
|
||||
// if (var8007f834 == 8) {
|
||||
// var8007f834 = 0;
|
||||
// func0f13e994();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// wallhit = g_Wallhits;
|
||||
//
|
||||
// for (i = 0; i < g_WallhitsMax; i++) {
|
||||
// f32 f0 = sp12c;
|
||||
//
|
||||
// if (wallhit->inuse) {
|
||||
// if (wallhit->unk70_28 != 8) {
|
||||
// f0 *= 0.6f * ((wallhit->unk70_28 - 8.0f) * 0.125f);
|
||||
// }
|
||||
//
|
||||
// if (wallhit->unk6d) {
|
||||
// u32 amount = (u32)(f0 + 0.5f);
|
||||
//
|
||||
// if (wallhit->unk6f_03) {
|
||||
// if (wallhit->unk6e > wallhit->unk6d) {
|
||||
// wallhit->unk6d = 0;
|
||||
// wallhit->unk6e = 0;
|
||||
// wallhit->inuse = true;
|
||||
// }
|
||||
//
|
||||
// wallhit->unk6e += amount;
|
||||
// } else {
|
||||
// if (amount < wallhit->unk6e) {
|
||||
// wallhit->unk6e -= amount;
|
||||
// } else {
|
||||
// wallhitFree(wallhit);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (wallhit->unk6d) {
|
||||
// f24 = (f32) wallhit->unk6e / wallhit->unk6d;
|
||||
//
|
||||
// if (f24 > 1.0f) {
|
||||
// f24 = 1.0f;
|
||||
// }
|
||||
//
|
||||
// f22 = f24;
|
||||
//
|
||||
// if (wallhit->unk6f_03) {
|
||||
// f32 frac = 0.2f;
|
||||
// f32 sizefrac;
|
||||
// f32 f30;
|
||||
// s32 minindex;
|
||||
// f32 tmp;
|
||||
// s32 j;
|
||||
//
|
||||
// tmp = 1.5707964f * f24;
|
||||
// f30 = (1.0f - frac) * sinf(tmp);
|
||||
// f22 = 1.0f - tmp + 0.6f;
|
||||
//
|
||||
// wallhit->verticesptr = gfxAllocateVertices(4);
|
||||
//
|
||||
// midx = var800845dc.x; \
|
||||
// midy = var800845dc.y; \
|
||||
// midz = var800845dc.z;
|
||||
//
|
||||
// // Copy the vertices into a float array
|
||||
// for (j = 0; j < 4; j++) {
|
||||
// spc8[j].x = wallhit->vertices[j].x;
|
||||
// spc8[j].y = wallhit->vertices[j].y;
|
||||
// spc8[j].z = wallhit->vertices[j].z;
|
||||
// }
|
||||
//
|
||||
// // Sum the vertices and divide them by 4 to get the centre
|
||||
// minindex = 0;
|
||||
//
|
||||
// for (j = 0; j < 4; j++) {
|
||||
// midx = midx + spc8[j].x;
|
||||
// midy = midy + spc8[j].y;
|
||||
// midz = midz + spc8[j].z;
|
||||
//
|
||||
// // This should be j != 0, but minindex is unused
|
||||
// // so it doesn't affect anything
|
||||
// if (minindex != 0 && spc8[j].y < spc8[minindex].y) {
|
||||
// minindex = j;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// midx = 0.25f * midx;
|
||||
// midy = 0.25f * midy;
|
||||
// midz = 0.25f * midz;
|
||||
//
|
||||
// sizefrac = frac + f30;
|
||||
//
|
||||
// // Calculate and apply the new size
|
||||
// for (j = 0; j < 4; j++) {
|
||||
// f32 xradius = spc8[j].x - midx;
|
||||
// f32 yradius = spc8[j].y - midy;
|
||||
// f32 zradius = spc8[j].z - midz;
|
||||
//
|
||||
// wallhit->verticesptr[j].x = midx + xradius * sizefrac;
|
||||
// wallhit->verticesptr[j].y = midy + yradius * sizefrac;
|
||||
// wallhit->verticesptr[j].z = midz + zradius * sizefrac;
|
||||
// wallhit->verticesptr[j].s = wallhit->vertices[j].s;
|
||||
// wallhit->verticesptr[j].t = wallhit->vertices[j].t;
|
||||
// wallhit->verticesptr[j].colour = wallhit->vertices[j].colour;
|
||||
// }
|
||||
//
|
||||
// if (1);
|
||||
//
|
||||
// f24 *= 2.0f;
|
||||
//
|
||||
// if (f24 > 1.0f) {
|
||||
// f24 = 1.0f;
|
||||
// }
|
||||
//
|
||||
// if (1);
|
||||
// }
|
||||
//
|
||||
// for (j = 0; j < 4; j++) {
|
||||
// u32 alpha;
|
||||
//
|
||||
// if (f22 > 1.0f) {
|
||||
// f22 = 1.0f;
|
||||
// }
|
||||
//
|
||||
// alpha = wallhit->unk30[j].a * f24;
|
||||
//
|
||||
// if (alpha > 255) {
|
||||
// alpha = 255;
|
||||
// }
|
||||
//
|
||||
// wallhit->colours[j].a = alpha;
|
||||
// }
|
||||
// } else {
|
||||
// if (wallhit->inuse) {
|
||||
// wallhit->verticesptr = NULL;
|
||||
//
|
||||
// for (j = 0; j < 4; j++) {
|
||||
// wallhit->colours[j].a = wallhit->unk30[j].a;
|
||||
// }
|
||||
// } else {
|
||||
// wallhit->verticesptr = NULL;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// wallhit->unk6f_05 = true;
|
||||
// }
|
||||
//
|
||||
// wallhit++;
|
||||
//
|
||||
// if (1);
|
||||
// }
|
||||
//}
|
||||
|
||||
const char var7f1b5a5c[] = "g_MaxRound = %s%s%f";
|
||||
const char var7f1b5a70[] = "";
|
||||
const char var7f1b5a74[] = "";
|
||||
const char var7f1b5a78[] = "g_MinRound = %s%s%f";
|
||||
const char var7f1b5a8c[] = "";
|
||||
const char var7f1b5a90[] = "";
|
||||
const char var7f1b5a94[] = "Done %d Z buffer calcs";
|
||||
const char var7f1b5aac[] = "ZOOM : g_ZoomFactor=%s%s%f";
|
||||
const char var7f1b5ac8[] = "";
|
||||
const char var7f1b5acc[] = "";
|
||||
const char var7f1b5ad0[] = "ZOOM : g_ZoomScalar=%s%s%f";
|
||||
const char var7f1b5aec[] = "";
|
||||
const char var7f1b5af0[] = "";
|
||||
const char var7f1b5af4[] = "ZOOM : scale=%s%s%f";
|
||||
const char var7f1b5b08[] = "";
|
||||
const char var7f1b5b0c[] = "";
|
||||
const char var7f1b5b10[] = "WallHit_Tick : Status - RED";
|
||||
const char var7f1b5b2c[] = "WallHit_Tick : Status - YELLOW (%u)";
|
||||
const char var7f1b5b50[] = "WallHit_Tick : Status - GREEN";
|
||||
const char var7f1b5b70[] = "WallHit_Tick : %d Used";
|
||||
const char var7f1b5b88[] = "WallHit_Tick : %d Free";
|
||||
const char var7f1b5ba0[] = "WallHit_Tick : %d Pending";
|
||||
const char var7f1b5bbc[] = "WallHit_Tick : %d Blood";
|
||||
const char var7f1b5bd4[] = "WallHit_Tick : %d Other";
|
||||
const char var7f1b5bec[] = "WallHit_Tick : %d Ratio";
|
||||
const char var7f1b5c04[] = "WallHit_Tick : %d(%d) Prop Hits";
|
||||
const char var7f1b5c24[] = "tLifeTime=%s%s%f, tScalarGbl=%f";
|
||||
const char var7f1b5c44[] = "";
|
||||
const char var7f1b5c48[] = "";
|
||||
const char var7f1b5c4c[] = "wallhit.c";
|
||||
const char var7f1b5c58[] = "wallhit.c";
|
||||
const char var7f1b5c64[] = "wallhit.c";
|
||||
const char var7f1b5c70[] = "AFT : tVecU (along) = (%s%s%f,%f,%f)\n";
|
||||
const char var7f1b5c98[] = "";
|
||||
const char var7f1b5c9c[] = "";
|
||||
const char var7f1b5ca0[] = "AFT : tVecV (up) = (%s%s%f,%f,%f)\n";
|
||||
const char var7f1b5cc8[] = "";
|
||||
const char var7f1b5ccc[] = "";
|
||||
const char var7f1b5cd0[] = "Wallhit colour %d not implemented, substituting black\n";
|
||||
|
||||
void wallhitCreate(struct coord *arg0, struct coord *arg1, struct coord *arg2, u32 arg3, u32 arg4, s16 arg5, s16 room, struct prop *arg7, s8 arg8, s8 arg9, struct chrdata *chr, bool arg11)
|
||||
{
|
||||
f32 f0 = RANDOMFRAC() * 0.1f + 0.6f;
|
||||
@@ -5835,7 +6034,7 @@ void func0f14159c(struct prop *prop)
|
||||
&& hit->prop == prop
|
||||
&& var8007f75c[hit->texturenum].unk08 == 3) {
|
||||
if ((hit->texturenum >= 12 && hit->texturenum <= 12) || (random() % 100) < 35) {
|
||||
func0f13e640(hit, (PAL ? 100 : 120));
|
||||
func0f13e640(hit, TICKS(120));
|
||||
} else {
|
||||
hit->unk70_00 = g_Vars.lvframenum;
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@ u32 var8009cc60;
|
||||
s32 var8009cc64;
|
||||
u32 var8009cc68;
|
||||
u32 var8009cc6c;
|
||||
u32 var8009cc70;
|
||||
u32 var8009cc74;
|
||||
s32 var8009cc70;
|
||||
s32 var8009cc74;
|
||||
f32 var8009cc78;
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -79,8 +79,8 @@ extern u32 var8009cc5c;
|
||||
extern u32 var8009cc60;
|
||||
extern s32 var8009cc64;
|
||||
extern u32 var8009cc68;
|
||||
extern u32 var8009cc70;
|
||||
extern u32 var8009cc74;
|
||||
extern s32 var8009cc70;
|
||||
extern s32 var8009cc74;
|
||||
extern f32 var8009cc78;
|
||||
extern Mtx *var8009cc80;
|
||||
extern Mtx *var8009cc84;
|
||||
|
||||
+1
-1
@@ -463,7 +463,7 @@ extern s32 g_LanguageId;
|
||||
extern struct surfacetype *g_SurfaceTypes[15];
|
||||
extern u16 *var800844f0;
|
||||
extern f32 var800845d4;
|
||||
extern u32 var800845dc;
|
||||
extern struct coord var800845dc;
|
||||
extern struct menudialogdef g_2PMissionInventoryHMenuDialog;
|
||||
extern struct menudialogdef g_2PMissionInventoryVMenuDialog;
|
||||
extern struct menudialogdef g_MpEndscreenChallengeCheatedMenuDialog;
|
||||
|
||||
@@ -8,7 +8,7 @@ extern u8 *g_GfxBuffers[3];
|
||||
|
||||
void gfxReset(void);
|
||||
Gfx *gfxGetMasterDisplayList(void);
|
||||
struct gfxvtx *gfxAllocateVertices(s32 count);
|
||||
struct gfxvtx *gfxAllocateVertices(u32 count);
|
||||
void *gfxAllocateMatrix(void);
|
||||
void *gfxAllocateLookAt(s32 count);
|
||||
void *gfxAllocateColours(s32 count);
|
||||
|
||||
@@ -13,7 +13,7 @@ bool chrIsUsingPaintball(struct chrdata *chr);
|
||||
void func0f13e5c8(struct prop *prop);
|
||||
void func0f13e640(struct wallhit *wallhit, u32 arg1);
|
||||
u32 func0f13e744(void);
|
||||
u32 func0f13e994(void);
|
||||
void func0f13e994(void);
|
||||
void wallhitsTick(void);
|
||||
|
||||
void wallhitCreate(struct coord *arg0, struct coord *arg1, struct coord *arg2, u32 arg3,
|
||||
|
||||
Reference in New Issue
Block a user