mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-09-01 09:22:53 -04:00
Attempt to decompile beamRender
This commit is contained in:
+4
-4
@@ -18492,7 +18492,7 @@ glabel var7f1aca90
|
||||
/* f0a7434: 00003025 */ or $a2,$zero,$zero
|
||||
/* f0a7438: 26180384 */ addiu $t8,$s0,0x384
|
||||
/* f0a743c: afb8003c */ sw $t8,0x3c($sp)
|
||||
/* f0a7440: 0fc2b2e4 */ jal func0f0acb90
|
||||
/* f0a7440: 0fc2b2e4 */ jal beamRender
|
||||
/* f0a7444: 00003825 */ or $a3,$zero,$zero
|
||||
/* f0a7448: afa2014c */ sw $v0,0x14c($sp)
|
||||
/* f0a744c: 92040000 */ lbu $a0,0x0($s0)
|
||||
@@ -19333,7 +19333,7 @@ glabel var7f1aca90
|
||||
/* f0a7434: 00003025 */ or $a2,$zero,$zero
|
||||
/* f0a7438: 26180384 */ addiu $t8,$s0,0x384
|
||||
/* f0a743c: afb8003c */ sw $t8,0x3c($sp)
|
||||
/* f0a7440: 0fc2b2e4 */ jal func0f0acb90
|
||||
/* f0a7440: 0fc2b2e4 */ jal beamRender
|
||||
/* f0a7444: 00003825 */ or $a3,$zero,$zero
|
||||
/* f0a7448: afa2014c */ sw $v0,0x14c($sp)
|
||||
/* f0a744c: 92040000 */ lbu $a0,0x0($s0)
|
||||
@@ -20174,7 +20174,7 @@ glabel var7f1aca90
|
||||
/* f0a5180: 00003025 */ or $a2,$zero,$zero
|
||||
/* f0a5184: 26180384 */ addiu $t8,$s0,0x384
|
||||
/* f0a5188: afb80038 */ sw $t8,0x38($sp)
|
||||
/* f0a518c: 0fc2aa3c */ jal func0f0acb90
|
||||
/* f0a518c: 0fc2aa3c */ jal beamRender
|
||||
/* f0a5190: 00003825 */ or $a3,$zero,$zero
|
||||
/* f0a5194: afa20144 */ sw $v0,0x144($sp)
|
||||
/* f0a5198: 92040000 */ lbu $a0,0x0($s0)
|
||||
@@ -20850,7 +20850,7 @@ glabel var7f1aca90
|
||||
// weaponnum = bgunGetWeaponNum2(i);
|
||||
//
|
||||
// if (hand->visible) {
|
||||
// gdl = func0f0acb90(gdl, &hand->beam, 0, 0);
|
||||
// gdl = beamRender(gdl, &hand->beam, 0, 0);
|
||||
//
|
||||
// if (weaponHasFlag(hand->gset.weaponnum, WEAPONFLAG_00008000)) {
|
||||
// gSPNumLights(gdl++, 1);
|
||||
|
||||
+3
-3
@@ -163,10 +163,10 @@ void cam0f0b4dec(struct coord *in, f32 out[2])
|
||||
out[0] = (player->c_screenleft + player->c_halfwidth) - in->x * value * player->c_recipscalex;
|
||||
}
|
||||
|
||||
void cam0f0b4e68(struct coord *in, f32 divisor, struct coord *out)
|
||||
void cam0f0b4e68(f32 in[2], f32 divisor, f32 out[2])
|
||||
{
|
||||
out->y = in->y * (1.0f / divisor) * g_Vars.currentplayer->c_recipscaley;
|
||||
out->x = in->x * (1.0f / divisor) * g_Vars.currentplayer->c_recipscalex;
|
||||
out[1] = in[1] * (1.0f / divisor) * g_Vars.currentplayer->c_recipscaley;
|
||||
out[0] = in[0] * (1.0f / divisor) * g_Vars.currentplayer->c_recipscalex;
|
||||
}
|
||||
|
||||
void cam0f0b4eb8(struct coord *arg0, f32 arg1[2], f32 zoom, f32 aspect)
|
||||
|
||||
+343
-53
@@ -306,62 +306,36 @@ u32 var80070514 = 0x00000000;
|
||||
u32 var80070518 = 0x00000000;
|
||||
u32 var8007051c = 0x00000000;
|
||||
u32 var80070520 = 0x00000000;
|
||||
bool g_CasingsActive = false;
|
||||
u32 var80070528 = 0x00000000;
|
||||
u32 var8007052c = 0x00000000;
|
||||
u32 var80070530 = 0x00000000;
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f0acb90
|
||||
glabel beamRender
|
||||
.late_rodata
|
||||
glabel var7f1acc6c
|
||||
.word 0x3fb50481
|
||||
glabel var7f1acc70
|
||||
.word func0f0acb90+0x130 # f0accc0
|
||||
glabel var7f1acc74
|
||||
.word func0f0acb90+0x130 # f0accc0
|
||||
glabel var7f1acc78
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acc7c
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acc80
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acc84
|
||||
.word func0f0acb90+0x110 # f0acca0
|
||||
glabel var7f1acc88
|
||||
.word func0f0acb90+0x130 # f0accc0
|
||||
glabel var7f1acc8c
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acc90
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acc94
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acc98
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acc9c
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acca0
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acca4
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1acca8
|
||||
.word func0f0acb90+0x130 # f0accc0
|
||||
glabel var7f1accac
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1accb0
|
||||
.word func0f0acb90+0x130 # f0accc0
|
||||
glabel var7f1accb4
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1accb8
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1accbc
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1accc0
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1accc4
|
||||
.word func0f0acb90+0x13c # f0acccc
|
||||
glabel var7f1accc8
|
||||
.word func0f0acb90+0x120 # f0accb0
|
||||
glabel jtbl_var7f1acc70
|
||||
.word .L0f0accc0
|
||||
.word .L0f0accc0
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acca0
|
||||
.word .L0f0accc0
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0accc0
|
||||
.word .L0f0acccc
|
||||
.word .L0f0accc0
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0acccc
|
||||
.word .L0f0accb0
|
||||
glabel var7f1acccc
|
||||
.word 0x3dcccccd
|
||||
glabel var7f1accd0
|
||||
@@ -448,19 +422,22 @@ glabel var7f1accf4
|
||||
/* f0acc80: 10200012 */ beqz $at,.L0f0acccc
|
||||
/* f0acc84: c7a20124 */ lwc1 $f2,0x124($sp)
|
||||
/* f0acc88: 000a5080 */ sll $t2,$t2,0x2
|
||||
/* f0acc8c: 3c017f1b */ lui $at,%hi(var7f1acc70)
|
||||
/* f0acc8c: 3c017f1b */ lui $at,%hi(jtbl_var7f1acc70)
|
||||
/* f0acc90: 002a0821 */ addu $at,$at,$t2
|
||||
/* f0acc94: 8c2acc70 */ lw $t2,%lo(var7f1acc70)($at)
|
||||
/* f0acc94: 8c2acc70 */ lw $t2,%lo(jtbl_var7f1acc70)($at)
|
||||
/* f0acc98: 01400008 */ jr $t2
|
||||
/* f0acc9c: 00000000 */ nop
|
||||
.L0f0acca0:
|
||||
/* f0acca0: 8e180000 */ lw $t8,0x0($s0)
|
||||
/* f0acca4: 2709000c */ addiu $t1,$t8,0xc
|
||||
/* f0acca8: 10000008 */ b .L0f0acccc
|
||||
/* f0accac: afa900ec */ sw $t1,0xec($sp)
|
||||
.L0f0accb0:
|
||||
/* f0accb0: 8e190000 */ lw $t9,0x0($s0)
|
||||
/* f0accb4: 272c0024 */ addiu $t4,$t9,0x24
|
||||
/* f0accb8: 10000004 */ b .L0f0acccc
|
||||
/* f0accbc: afac00ec */ sw $t4,0xec($sp)
|
||||
.L0f0accc0:
|
||||
/* f0accc0: 8e0b0000 */ lw $t3,0x0($s0)
|
||||
/* f0accc4: 256e0030 */ addiu $t6,$t3,0x30
|
||||
/* f0accc8: afae00ec */ sw $t6,0xec($sp)
|
||||
@@ -1457,6 +1434,313 @@ glabel var7f1accf4
|
||||
/* f0adbb8: 27bd0190 */ addiu $sp,$sp,0x190
|
||||
);
|
||||
|
||||
// Mismatch: Regalloc and some swapped loads and stores
|
||||
// - After gfxAllocateMatrix, goal skips f0 and uses f12
|
||||
// - Goal reuses f2 in neg.s instruction for cam0f0b4e68's a1
|
||||
// - Calculation of spcc near sp100 is reordered
|
||||
//Gfx *beamRender(Gfx *gdl, struct beam *beam, bool arg2, u8 arg3)
|
||||
//{
|
||||
// u32 stack;
|
||||
// Mtxf *sp188;
|
||||
// Mtxf sp148;
|
||||
//
|
||||
// if (arg3 < 5 && beam->age >= 0) {
|
||||
// struct colour *colours = gfxAllocateColours(1); // 144
|
||||
// struct coord sp138;
|
||||
// struct coord *campos = &g_Vars.currentplayer->cam_pos; // 134
|
||||
// f32 sp130;
|
||||
// f32 sp12c = beam->mindist;
|
||||
// struct gfxvtx *vertices;
|
||||
// f32 sp124 = beam->dist;
|
||||
// struct coord sp118;
|
||||
// struct coord sp10c;
|
||||
// struct coord sp100 = {0, 0, 0};
|
||||
// struct coord spf4 = {0, 0, 0};
|
||||
// f32 spf0 = 1.4142f;
|
||||
// struct textureconfig *texconfig = &g_TexBeamConfigs[arg3]; // ec
|
||||
// s32 i;
|
||||
// Mtxf *worldtoscreenmtx = camGetWorldToScreenMtxf(); // e4
|
||||
// s32 j;
|
||||
// u32 stack1;
|
||||
// s32 spd8;
|
||||
// struct coord spcc;
|
||||
// u32 stack2;
|
||||
// f32 spc0[2];
|
||||
// f32 spb8[2];
|
||||
// f32 f14;
|
||||
// f32 f16;
|
||||
// f32 f18;
|
||||
// f32 spa8;
|
||||
// f32 spa4;
|
||||
//
|
||||
// switch (beam->weaponnum) {
|
||||
// case WEAPON_CYCLONE:
|
||||
// texconfig = &g_TexBeamConfigs[1];
|
||||
// break;
|
||||
// case WEAPON_TRANQUILIZER:
|
||||
// texconfig = &g_TexBeamConfigs[3];
|
||||
// break;
|
||||
// case WEAPON_MAULER:
|
||||
// case WEAPON_PHOENIX:
|
||||
// case WEAPON_CALLISTO:
|
||||
// case WEAPON_REAPER:
|
||||
// case WEAPON_FARSIGHT:
|
||||
// texconfig = &g_TexBeamConfigs[4];
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// if (beam->weaponnum == -1 || beam->weaponnum == WEAPON_CYCLONE) {
|
||||
// colours[0].word = 0xffffff7f;
|
||||
// } else {
|
||||
// colours[0].word = 0xffffffff;
|
||||
// }
|
||||
//
|
||||
// if (beam->weaponnum == WEAPON_LASER) {
|
||||
// // Laser primary
|
||||
// sp130 = 50.0f;
|
||||
// texconfig = &g_TexLaserConfigs[0];
|
||||
// } else if (beam->weaponnum == -2) {
|
||||
// // Laser secondary
|
||||
// sp130 = 10.0f;
|
||||
// texconfig = &g_TexLaserConfigs[0];
|
||||
//
|
||||
// colours[0].a = 150 + (random() % 50);
|
||||
//
|
||||
// if ((random() % 5) == 0) {
|
||||
// colours[0].r = colours[0].g = 255 - (random() % 100);
|
||||
// }
|
||||
// } else {
|
||||
// sp130 = 30.0f;
|
||||
// }
|
||||
//
|
||||
// if (beam->weaponnum <= -3) {
|
||||
// // Mauler
|
||||
// sp130 = sp130 * ((beam->weaponnum + 3) * 2.0f + 1.0f);
|
||||
// texconfig = &g_TexBeamConfigs[4];
|
||||
// }
|
||||
//
|
||||
// sp138.f[0] = beam->from.f[0];
|
||||
// sp138.f[1] = beam->from.f[1];
|
||||
// sp138.f[2] = beam->from.f[2];
|
||||
//
|
||||
// if (sp124 > 0.0f) {
|
||||
// sp138.f[0] += sp124 * beam->dir.f[0];
|
||||
// sp138.f[1] += sp124 * beam->dir.f[1];
|
||||
// sp138.f[2] += sp124 * beam->dir.f[2];
|
||||
// } else {
|
||||
// sp12c += sp124;
|
||||
// sp124 = 0.0f;
|
||||
// }
|
||||
//
|
||||
// if (sp124 + sp12c > beam->maxdist) {
|
||||
// sp12c = beam->maxdist - sp124;
|
||||
// }
|
||||
//
|
||||
// sp10c.f[0] = (beam->dir.f[1] * (campos->f[2] - (sp138.f[2] + sp12c * beam->dir.f[2]))) - (beam->dir.f[2] * (campos->f[1] - (sp138.f[1] + sp12c * beam->dir.f[1])));
|
||||
// sp10c.f[1] = (beam->dir.f[2] * (campos->f[0] - (sp138.f[0] + sp12c * beam->dir.f[0]))) - (beam->dir.f[0] * (campos->f[2] - (sp138.f[2] + sp12c * beam->dir.f[2])));
|
||||
// sp10c.f[2] = (beam->dir.f[0] * (campos->f[1] - (sp138.f[1] + sp12c * beam->dir.f[1]))) - (beam->dir.f[1] * (campos->f[0] - (sp138.f[0] + sp12c * beam->dir.f[0])));
|
||||
//
|
||||
// if (sp10c.f[0] != 0.0f || sp10c.f[1] != 0.0f || sp10c.f[2] != 0.0f) {
|
||||
// guNormalize(&sp10c.f[0], &sp10c.f[1], &sp10c.f[2]);
|
||||
//
|
||||
// sp10c.f[0] *= sp130;
|
||||
// sp10c.f[1] *= sp130;
|
||||
// sp10c.f[2] *= sp130;
|
||||
// } else {
|
||||
// sp10c.f[0] = 0.0f;
|
||||
// sp10c.f[1] = sp130;
|
||||
// sp10c.f[2] = 0.0f;
|
||||
// }
|
||||
//
|
||||
// sp118.f[0] = beam->dir.f[1] * sp10c.f[2] - beam->dir.f[2] * sp10c.f[1];
|
||||
// sp118.f[1] = beam->dir.f[2] * sp10c.f[0] - beam->dir.f[0] * sp10c.f[2];
|
||||
// sp118.f[2] = beam->dir.f[0] * sp10c.f[1] - beam->dir.f[1] * sp10c.f[0];
|
||||
//
|
||||
// guNormalize(&sp118.f[0], &sp118.f[1], &sp118.f[2]);
|
||||
//
|
||||
// sp118.f[0] *= sp130;
|
||||
// sp118.f[1] *= sp130;
|
||||
// sp118.f[2] *= sp130;
|
||||
//
|
||||
// if (beam->weaponnum == WEAPON_LASER) {
|
||||
// vertices = gfxAllocateVertices(8);
|
||||
// } else {
|
||||
// vertices = gfxAllocateVertices(4);
|
||||
// }
|
||||
//
|
||||
// sp188 = gfxAllocateMatrix();
|
||||
//
|
||||
// if (sp12c > 0.0f
|
||||
// && sp138.f[0] > -32000.0f && sp138.f[0] < 32000.0f
|
||||
// && sp138.f[1] > -32000.0f && sp138.f[1] < 32000.0f
|
||||
// && sp138.f[2] > -32000.0f && sp138.f[2] < 32000.0f) {
|
||||
// spd8 = true;
|
||||
// mtx4LoadTranslation(&sp138, &sp148);
|
||||
// mtx00015f04(0.1f, &sp148);
|
||||
// mtx00015be0(worldtoscreenmtx, &sp148);
|
||||
//
|
||||
// for (i = 0; i < 4; i++) {
|
||||
// for (j = 0; j < 4; j++) {
|
||||
// if (sp148.m[i][j] < -32000.0f || sp148.m[i][j] > 32000.0f) {
|
||||
// spd8 = false;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (spd8) {
|
||||
// mtx00016054(&sp148, sp188);
|
||||
//
|
||||
// if (beam->weaponnum);
|
||||
//
|
||||
// if (beam->weaponnum == -2 && PLAYERCOUNT() == 1) {
|
||||
// spcc.f[0] = sp138.f[0] + beam->dir.f[0] * sp12c;
|
||||
// spcc.f[1] = sp138.f[1] + beam->dir.f[1] * sp12c;
|
||||
// spcc.f[2] = sp138.f[2] + beam->dir.f[2] * sp12c;
|
||||
//
|
||||
// mtx4TransformVecInPlace(worldtoscreenmtx, &spcc);
|
||||
//
|
||||
// spb8[0] = spb8[1] = sp130 / 10.0f;
|
||||
//
|
||||
// cam0f0b4e68(spb8, -spcc.f[2], spc0);
|
||||
//
|
||||
// if (spc0[0] < 2.0f) {
|
||||
// spcc.f[0] *= spc0[0] * 0.5f;
|
||||
// spcc.f[1] *= spc0[0] * 0.5f;
|
||||
// spcc.f[2] *= spc0[0] * 0.5f;
|
||||
// }
|
||||
//
|
||||
// mtx4TransformVecInPlace(camGetProjectionMtxF(), &spcc);
|
||||
//
|
||||
// spcc.f[0] -= sp138.f[0];
|
||||
// spcc.f[1] -= sp138.f[1];
|
||||
// spcc.f[2] -= sp138.f[2];
|
||||
//
|
||||
// if (1);
|
||||
//
|
||||
// sp100.f[0] = spcc.f[0] * 10.0f;
|
||||
// sp100.f[1] = spcc.f[1] * 10.0f;
|
||||
// sp100.f[2] = spcc.f[2] * 10.0f;
|
||||
// } else {
|
||||
// sp100.f[0] = beam->dir.f[0] * (sp12c * 10.0f);
|
||||
// sp100.f[1] = beam->dir.f[1] * (sp12c * 10.0f);
|
||||
// sp100.f[2] = beam->dir.f[2] * (sp12c * 10.0f);
|
||||
// }
|
||||
//
|
||||
// if (sp100.f[0] > -30000.0f && sp100.f[0] < 30000.0f
|
||||
// && sp100.f[1] > -30000.0f && sp100.f[1] < 30000.0f
|
||||
// && sp100.f[2] > -30000.0f && sp100.f[2] < 30000.0f) {
|
||||
// vertices[0].x = sp10c.f[0];
|
||||
// vertices[0].y = sp10c.f[1];
|
||||
// vertices[0].z = sp10c.f[2];
|
||||
// vertices[0].s = texconfig->width * 32;
|
||||
// vertices[0].t = 0;
|
||||
// vertices[0].colour = 0;
|
||||
//
|
||||
// vertices[1].x = -sp10c.f[0];
|
||||
// vertices[1].y = -sp10c.f[1];
|
||||
// vertices[1].z = -sp10c.f[2];
|
||||
// vertices[1].s = 0;
|
||||
// vertices[1].t = 0;
|
||||
// vertices[1].colour = 0;
|
||||
//
|
||||
// vertices[2].x = sp100.f[0] + sp10c.f[0] * 0.9f;
|
||||
// vertices[2].y = sp100.f[1] + sp10c.f[1] * 0.9f;
|
||||
// vertices[2].z = sp100.f[2] + sp10c.f[2] * 0.9f;
|
||||
// vertices[2].s = texconfig->width * 32;
|
||||
// vertices[2].t = texconfig->height * 32;
|
||||
// vertices[2].colour = 0;
|
||||
//
|
||||
// vertices[3].x = sp100.f[0] - sp10c.f[0] * 0.9f;
|
||||
// vertices[3].y = sp100.f[1] - sp10c.f[1] * 0.9f;
|
||||
// vertices[3].z = sp100.f[2] - sp10c.f[2] * 0.9f;
|
||||
// vertices[3].s = 0;
|
||||
// vertices[3].t = texconfig->height * 32;
|
||||
// vertices[3].colour = 0;
|
||||
//
|
||||
// if (beam->weaponnum == WEAPON_LASER) {
|
||||
// f14 = campos->f[0] - sp138.f[0];
|
||||
// f16 = campos->f[1] - sp138.f[1];
|
||||
// f18 = campos->f[2] - sp138.f[2];
|
||||
//
|
||||
// spa8 = f14 * f14 + f16 * f16 + f18 * f18;
|
||||
//
|
||||
// f14 = campos->f[0] - (sp138.f[0] + beam->dir.f[0] * sp12c);
|
||||
// f16 = campos->f[1] - (sp138.f[1] + beam->dir.f[1] * sp12c);
|
||||
// f18 = campos->f[2] - (sp138.f[2] + beam->dir.f[2] * sp12c);
|
||||
//
|
||||
// spa4 = f14 * f14 + f16 * f16 + f18 * f18;
|
||||
//
|
||||
// if (spa4 < spa8) {
|
||||
// spf4.f[0] = sp100.f[0];
|
||||
// spf4.f[1] = sp100.f[1];
|
||||
// spf4.f[2] = sp100.f[2];
|
||||
// spf0 *= 0.9f;
|
||||
// }
|
||||
//
|
||||
// vertices[4].x = spf4.f[0] + sp118.f[0] * spf0;
|
||||
// vertices[4].y = spf4.f[1] + sp118.f[1] * spf0;
|
||||
// vertices[4].z = spf4.f[2] + sp118.f[2] * spf0;
|
||||
// vertices[4].s = g_TexGroup03Configs[0].width * 32;
|
||||
// vertices[4].t = g_TexGroup03Configs[0].height * 32;
|
||||
// vertices[4].colour = 0;
|
||||
//
|
||||
// vertices[5].x = spf4.f[0] - sp118.f[0] * spf0;
|
||||
// vertices[5].y = spf4.f[1] - sp118.f[1] * spf0;
|
||||
// vertices[5].z = spf4.f[2] - sp118.f[2] * spf0;
|
||||
// vertices[5].s = 0;
|
||||
// vertices[5].t = 0;
|
||||
// vertices[5].colour = 0;
|
||||
//
|
||||
// vertices[6].x = spf4.f[0] + sp10c.f[0] * spf0;
|
||||
// vertices[6].y = spf4.f[1] + sp10c.f[1] * spf0;
|
||||
// vertices[6].z = spf4.f[2] + sp10c.f[2] * spf0;
|
||||
// vertices[6].s = 0;
|
||||
// vertices[6].t = g_TexGroup03Configs[0].height * 32;
|
||||
// vertices[6].colour = 0;
|
||||
//
|
||||
// vertices[7].x = spf4.f[0] - sp10c.f[0] * spf0;
|
||||
// vertices[7].y = spf4.f[1] - sp10c.f[1] * spf0;
|
||||
// vertices[7].z = spf4.f[2] - sp10c.f[2] * spf0;
|
||||
// vertices[7].s = g_TexGroup03Configs[0].width * 32;
|
||||
// vertices[7].t = 0;
|
||||
// vertices[7].colour = 0;
|
||||
// }
|
||||
//
|
||||
// gSPClearGeometryMode(gdl++, G_CULL_BACK);
|
||||
// gSPMatrix(gdl++, osVirtualToPhysical(sp188), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
// gDPSetCycleType(gdl++, G_CYC_1CYCLE);
|
||||
// gDPSetColorDither(gdl++, G_CD_DISABLE);
|
||||
// gDPSetRenderMode(gdl++, G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2);
|
||||
// gDPSetAlphaCompare(gdl++, G_AC_NONE);
|
||||
// gDPSetTextureLOD(gdl++, G_TL_TILE);
|
||||
// gDPSetTextureConvert(gdl++, G_TC_FILT);
|
||||
// gDPSetCombineMode(gdl++, G_CC_BLENDIA, G_CC_BLENDIA);
|
||||
// gDPSetColorArray(gdl++, osVirtualToPhysical(colours), 1);
|
||||
//
|
||||
// if (beam->weaponnum == WEAPON_LASER) {
|
||||
// texSelect(&gdl, &g_TexGroup03Configs[0], 4, arg2, 2, true, NULL);
|
||||
//
|
||||
// gDPSetVerticeArray(gdl++, osVirtualToPhysical(vertices), 8);
|
||||
// gDPTri2(gdl++, 4, 5, 6, 4, 5, 7);
|
||||
//
|
||||
// texSelect(&gdl, texconfig, 4, arg2, 2, true, NULL);
|
||||
//
|
||||
// gDPTri2(gdl++, 0, 2, 3, 0, 3, 1);
|
||||
// } else {
|
||||
// texSelect(&gdl, texconfig, 4, arg2, 2, true, NULL);
|
||||
//
|
||||
// gDPSetVerticeArray(gdl++, osVirtualToPhysical(vertices), 4);
|
||||
// gDPTri2(gdl++, 0, 2, 3, 0, 3, 1);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return gdl;
|
||||
//}
|
||||
|
||||
void beamTick(struct beam *beam)
|
||||
{
|
||||
if (beam->age >= 0) {
|
||||
@@ -1482,6 +1766,8 @@ void beamTick(struct beam *beam)
|
||||
}
|
||||
}
|
||||
|
||||
bool g_CasingsActive = false;
|
||||
|
||||
struct casing *casingCreate(struct modelfiledata *modeldef, Mtxf *mtx)
|
||||
{
|
||||
s32 i;
|
||||
@@ -1517,6 +1803,10 @@ struct casing *casingCreate(struct modelfiledata *modeldef, Mtxf *mtx)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
u32 var80070528 = 0x00000000;
|
||||
u32 var8007052c = 0x00000000;
|
||||
u32 var80070530 = 0x00000000;
|
||||
|
||||
#if PAL
|
||||
GLOBAL_ASM(
|
||||
glabel casingCreateForHand
|
||||
|
||||
+8
-8
@@ -50314,15 +50314,15 @@ Gfx *propsRenderBeams(Gfx *gdl)
|
||||
struct chrdata *chr = prop->chr;
|
||||
|
||||
if (CHRRACE(chr) == RACE_ROBOT) {
|
||||
gdl = func0f0acb90(gdl, chr->unk348[0]->beam, true, true);
|
||||
gdl = func0f0acb90(gdl, chr->unk348[1]->beam, true, true);
|
||||
gdl = beamRender(gdl, chr->unk348[0]->beam, true, true);
|
||||
gdl = beamRender(gdl, chr->unk348[1]->beam, true, true);
|
||||
} else {
|
||||
if (chr->fireslots[0] >= 0) {
|
||||
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslots[0]].beam, true, false);
|
||||
gdl = beamRender(gdl, &g_Fireslots[chr->fireslots[0]].beam, true, false);
|
||||
}
|
||||
|
||||
if (chr->fireslots[1] >= 0) {
|
||||
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslots[1]].beam, true, false);
|
||||
gdl = beamRender(gdl, &g_Fireslots[chr->fireslots[1]].beam, true, false);
|
||||
}
|
||||
}
|
||||
} else if (prop->type == PROPTYPE_OBJ) {
|
||||
@@ -50330,21 +50330,21 @@ Gfx *propsRenderBeams(Gfx *gdl)
|
||||
|
||||
if (obj->type == OBJTYPE_AUTOGUN) {
|
||||
struct autogunobj *autogun = (struct autogunobj *)prop->obj;
|
||||
gdl = func0f0acb90(gdl, autogun->beam, true, false);
|
||||
gdl = beamRender(gdl, autogun->beam, true, false);
|
||||
} else if (obj->type == OBJTYPE_CHOPPER) {
|
||||
struct chopperobj *chopper = (struct chopperobj *)prop->obj;
|
||||
gdl = func0f0acb90(gdl, chopper->fireslotthing->beam, true, true);
|
||||
gdl = beamRender(gdl, chopper->fireslotthing->beam, true, true);
|
||||
}
|
||||
} else if (prop->type == PROPTYPE_PLAYER) {
|
||||
if (prop->chr && playermgrGetPlayerNumByProp(prop) != g_Vars.currentplayernum) {
|
||||
struct chrdata *chr = prop->chr;
|
||||
|
||||
if (chr->fireslots[0] >= 0) {
|
||||
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslots[0]].beam, true, false);
|
||||
gdl = beamRender(gdl, &g_Fireslots[chr->fireslots[0]].beam, true, false);
|
||||
}
|
||||
|
||||
if (chr->fireslots[1] >= 0) {
|
||||
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslots[1]].beam, true, false);
|
||||
gdl = beamRender(gdl, &g_Fireslots[chr->fireslots[1]].beam, true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ void cam0f0b4c3c(f32 *crosspos, struct coord *dst, f32 arg2);
|
||||
void cam0f0b4d04(struct coord *in, f32 *out);
|
||||
void cam0f0b4d68(struct coord *in, f32 out[2]);
|
||||
void cam0f0b4dec(struct coord *in, f32 out[2]);
|
||||
void cam0f0b4e68(struct coord *in, f32 divisor, struct coord *out);
|
||||
void cam0f0b4e68(f32 in[2], f32 divisor, f32 out[2]);
|
||||
void cam0f0b4eb8(struct coord *arg0, f32 arg1[2], f32 zoom, f32 aspect);
|
||||
void camSetMtxL1738(Mtx *mtx);
|
||||
void camSetMtxL173c(Mtx *mtx);
|
||||
|
||||
@@ -10,7 +10,7 @@ void lasersightsReset(void);
|
||||
void beamCreate(struct beam *beam, s32 weaponnum, struct coord *from, struct coord *to);
|
||||
void beamCreateForHand(s32 handnum);
|
||||
Gfx *beamRenderGeneric(Gfx *gdl, struct textureconfig *arg1, f32 arg2, struct coord *arg3, u32 colour1, f32 arg5, struct coord *arg6, u32 colour2);
|
||||
Gfx *func0f0acb90(Gfx *gdl, struct beam *beam, bool arg2, u32 arg3);
|
||||
Gfx *beamRender(Gfx *gdl, struct beam *beam, bool arg2, u8 arg3);
|
||||
void beamTick(struct beam *beam);
|
||||
|
||||
struct casing *casingCreate(struct modelfiledata *modeldef, Mtxf *mtx);
|
||||
|
||||
Reference in New Issue
Block a user