Rename many hand struct properties

This commit is contained in:
Ryan Dwyer
2021-03-02 17:20:04 +10:00
parent 1175fdae70
commit 3dcb784dd0
24 changed files with 413 additions and 486 deletions
+1 -1
View File
@@ -1392,7 +1392,7 @@ void bbikeTick(void)
}
func0f09d8dc(breathing, 0, sp70, 0.0f, g_Vars.currentplayer->speedsideways);
func0f0a2290(g_Vars.currentplayer->vv_verta360 * 0.017450513318181f);
handSetAdjustPos(g_Vars.currentplayer->vv_verta360 * 0.017450513318181f);
currentPlayerUpdatePerimInfo();
bmove0f0cb8c4(g_Vars.currentplayer);
objectiveCheckRoomEntered(g_Vars.currentplayer->prop->rooms[0]);
+1 -1
View File
@@ -24,7 +24,7 @@ void bcutsceneInit(void)
hand->audiohandle = NULL;
}
hand->unk063c = 0;
hand->firing = false;
}
}
}
+1 -1
View File
@@ -2078,7 +2078,7 @@ glabel var7f1ada2c
/* f0cee9c: c424da2c */ lwc1 $f4,%lo(var7f1ada2c)($at)
/* f0ceea0: c7280158 */ lwc1 $f8,0x158($t9)
/* f0ceea4: 46044302 */ mul.s $f12,$f8,$f4
/* f0ceea8: 0fc288a4 */ jal func0f0a2290
/* f0ceea8: 0fc288a4 */ jal handSetAdjustPos
/* f0ceeac: 00000000 */ nop
/* f0ceeb0: 8fbf0024 */ lw $ra,0x24($sp)
.L0f0ceeb4:
+15 -17
View File
@@ -2909,22 +2909,22 @@ glabel var7f1ad8e4
/* f0ca944: 8e580324 */ lw $t8,0x324($s2)
/* f0ca948: 5300002b */ beqzl $t8,.L0f0ca9f8
/* f0ca94c: 24040002 */ addiu $a0,$zero,0x2
/* f0ca950: 0fc2883f */ jal handIsAttackingOnThisTick
/* f0ca950: 0fc2883f */ jal handIsFiring
/* f0ca954: 00002025 */ or $a0,$zero,$zero
/* f0ca958: 54400006 */ bnezl $v0,.L0f0ca974
/* f0ca95c: 44805000 */ mtc1 $zero,$f10
/* f0ca960: 0fc2883f */ jal handIsAttackingOnThisTick
/* f0ca960: 0fc2883f */ jal handIsFiring
/* f0ca964: 24040001 */ addiu $a0,$zero,0x1
/* f0ca968: 50400023 */ beqzl $v0,.L0f0ca9f8
/* f0ca96c: 24040002 */ addiu $a0,$zero,0x2
/* f0ca970: 44805000 */ mtc1 $zero,$f10
.L0f0ca974:
/* f0ca974: 00002025 */ or $a0,$zero,$zero
/* f0ca978: 0fc2883f */ jal handIsAttackingOnThisTick
/* f0ca978: 0fc2883f */ jal handIsFiring
/* f0ca97c: e7aa00b4 */ swc1 $f10,0xb4($sp)
/* f0ca980: 1040000c */ beqz $v0,.L0f0ca9b4
/* f0ca984: 00000000 */ nop
/* f0ca988: 0fc273d6 */ jal func0f09cf58
/* f0ca988: 0fc273d6 */ jal handGetNoiseRadius
/* f0ca98c: 00002025 */ or $a0,$zero,$zero
/* f0ca990: 44803000 */ mtc1 $zero,$f6
/* f0ca994: 00000000 */ nop
@@ -2932,22 +2932,22 @@ glabel var7f1ad8e4
/* f0ca99c: 00000000 */ nop
/* f0ca9a0: 45000004 */ bc1f .L0f0ca9b4
/* f0ca9a4: 00000000 */ nop
/* f0ca9a8: 0fc273d6 */ jal func0f09cf58
/* f0ca9a8: 0fc273d6 */ jal handGetNoiseRadius
/* f0ca9ac: 00002025 */ or $a0,$zero,$zero
/* f0ca9b0: e7a000b4 */ swc1 $f0,0xb4($sp)
.L0f0ca9b4:
/* f0ca9b4: 0fc2883f */ jal handIsAttackingOnThisTick
/* f0ca9b4: 0fc2883f */ jal handIsFiring
/* f0ca9b8: 24040001 */ addiu $a0,$zero,0x1
/* f0ca9bc: 1040000b */ beqz $v0,.L0f0ca9ec
/* f0ca9c0: 00000000 */ nop
/* f0ca9c4: 0fc273d6 */ jal func0f09cf58
/* f0ca9c4: 0fc273d6 */ jal handGetNoiseRadius
/* f0ca9c8: 24040001 */ addiu $a0,$zero,0x1
/* f0ca9cc: c7a800b4 */ lwc1 $f8,0xb4($sp)
/* f0ca9d0: 4600403c */ c.lt.s $f8,$f0
/* f0ca9d4: 00000000 */ nop
/* f0ca9d8: 45000004 */ bc1f .L0f0ca9ec
/* f0ca9dc: 00000000 */ nop
/* f0ca9e0: 0fc273d6 */ jal func0f09cf58
/* f0ca9e0: 0fc273d6 */ jal handGetNoiseRadius
/* f0ca9e4: 24040001 */ addiu $a0,$zero,0x1
/* f0ca9e8: e7a000b4 */ swc1 $f0,0xb4($sp)
.L0f0ca9ec:
@@ -4861,17 +4861,15 @@ glabel var7f1ad8e4
// currentPlayerTickInventory(movedata.triggeron);
//
// // a944
// // I think this is checking which gun is making the loudest noise and is
// // alerting nearby chrs to it.
// if (g_Vars.bondvisible && (handIsAttackingOnThisTick(0) || handIsAttackingOnThisTick(1))) {
// if (g_Vars.bondvisible && (handIsFiring(0) || handIsFiring(1))) {
// spb4 = 0;
//
// if (handIsAttackingOnThisTick(0) && func0f09cf58(0) > spb4) {
// spb4 = func0f09cf58(0);
// if (handIsFiring(0) && handGetNoiseRadius(0) > spb4) {
// spb4 = handGetNoiseRadius(0);
// }
//
// if (handIsAttackingOnThisTick(1) && func0f09cf58(1) > spb4) {
// spb4 = func0f09cf58(1);
// if (handIsFiring(1) && handGetNoiseRadius(1) > spb4) {
// spb4 = handGetNoiseRadius(1);
// }
//
// func0f028590(spb4);
@@ -5126,8 +5124,8 @@ glabel var7f1ad8e4
// bmoveUpdateSpeedTheta();
//
// if (movedata.detonating) {
// g_Vars.currentplayer->hands[HAND_RIGHT].unk0658 = 0;
// g_Vars.currentplayer->hands[HAND_RIGHT].unk065c = 0;
// g_Vars.currentplayer->hands[HAND_RIGHT].mode = 0;
// g_Vars.currentplayer->hands[HAND_RIGHT].modenext = 0;
// playerActivateRemoteMineDetonator(g_Vars.currentplayernum);
// }
//
+1 -1
View File
@@ -2709,7 +2709,7 @@ glabel var7f1ad854
/* f0c7834: c42ad854 */ lwc1 $f10,%lo(var7f1ad854)($at)
/* f0c7838: c5a40158 */ lwc1 $f4,0x158($t5)
/* f0c783c: 460a2302 */ mul.s $f12,$f4,$f10
/* f0c7840: 0fc288a4 */ jal func0f0a2290
/* f0c7840: 0fc288a4 */ jal handSetAdjustPos
/* f0c7844: 00000000 */ nop
/* f0c7848: 8fbf0024 */ lw $ra,0x24($sp)
/* f0c784c: d7b40018 */ ldc1 $f20,0x18($sp)
+2 -2
View File
@@ -4259,11 +4259,11 @@ bool propchrDoFireslotThing(struct prop *prop)
struct chrdata *chr = prop->chr;
if (chr->fireslot[0] >= 0) {
bullettailTick(&g_Fireslots[chr->fireslot[0]].bullettail);
beamTick(&g_Fireslots[chr->fireslot[0]].beam);
}
if (chr->fireslot[1] >= 0) {
bullettailTick(&g_Fireslots[chr->fireslot[1]].bullettail);
beamTick(&g_Fireslots[chr->fireslot[1]].beam);
}
if (chr->aibot && chr->aibot->unk058 > 0) {
+4 -4
View File
@@ -18781,10 +18781,10 @@ glabel func0f041a74
/* f041b78: a058003f */ sb $t8,0x3f($v0)
.L0f041b7c:
/* f041b7c: 8e190348 */ lw $t9,0x348($s0)
/* f041b80: 0fc2b6ef */ jal bullettailTick
/* f041b80: 0fc2b6ef */ jal beamTick
/* f041b84: 8f240004 */ lw $a0,0x4($t9)
/* f041b88: 8e08034c */ lw $t0,0x34c($s0)
/* f041b8c: 0fc2b6ef */ jal bullettailTick
/* f041b8c: 0fc2b6ef */ jal beamTick
/* f041b90: 8d040004 */ lw $a0,0x4($t0)
/* f041b94: 10000027 */ b .L0f041c34
/* f041b98: 8fbf0024 */ lw $ra,0x24($sp)
@@ -19562,7 +19562,7 @@ void robotAttack(struct chrdata *chr)
if (chr->unk348 && chr->unk34c) {
chr->actiontype = ACT_ROBOTATTACK;
chr->unk348->bullettail->age = -1;
chr->unk348->beam->age = -1;
chr->unk348->unk00 = random() % 3;
chr->unk348->unk01 = 0;
chr->unk348->unk08 = -1;
@@ -19585,7 +19585,7 @@ void robotAttack(struct chrdata *chr)
chr->act_robotattack.unk05c = 90;
chr->act_robotattack.unk06c = 0;
chr->unk34c->bullettail->age = -1;
chr->unk34c->beam->age = -1;
chr->unk34c->unk00 = random() % 3;
chr->unk34c->unk01 = 0;
chr->unk34c->unk08 = -1;
+1 -1
View File
@@ -1208,7 +1208,7 @@ Gfx *coreRender(Gfx *gdl)
func0f0641f4();
gdl = bgRender(gdl);
func0f028498(var80075d68 == 15 || var8005f020);
gdl = propsRenderBulletTails(gdl);
gdl = propsRenderBeams(gdl);
gdl = shardsRender(gdl);
gdl = sparksRender(gdl);
gdl = weatherRender(gdl);
+1 -1
View File
@@ -3160,7 +3160,7 @@ void func0f004314(void)
func0f005bb0();
if (hand1->torchon || hand2->torchon) {
if (hand1->flashon || hand2->flashon) {
roomAdjustLighting(g_Vars.currentplayer->prop->rooms[0], 64, 80);
}
}
+4 -4
View File
@@ -1127,8 +1127,8 @@ void setupAutogun(struct autogunobj *autogun, s32 cmdindex)
autogun->unk84 = *(s32 *)&autogun->unk84 * 100.0f / 65536.0f;
autogun->unk64 = *(s32 *)&autogun->unk64 * M_BADTAU / 65536.0f;
autogun->unk68 = *(s32 *)&autogun->unk68 * M_BADTAU / 65536.0f;
autogun->bullettail = malloc(ALIGN16(sizeof(struct bullettail)), MEMPOOL_STAGE);
autogun->bullettail->age = -1;
autogun->beam = malloc(ALIGN16(sizeof(struct beam)), MEMPOOL_STAGE);
autogun->beam->age = -1;
autogun->unk5e = 0;
autogun->ammoquantity = 255;
autogun->unka0 = 0;
@@ -2607,8 +2607,8 @@ void setupParseObjects(s32 stagenum)
chopper->cw = 0;
chopper->weaponsarmed = true;
chopper->fireslotthing = malloc(sizeof(struct fireslotthing), MEMPOOL_STAGE);
chopper->fireslotthing->bullettail = malloc(ALIGN16(sizeof(struct bullettail)), MEMPOOL_STAGE);
chopper->fireslotthing->bullettail->age = -1;
chopper->fireslotthing->beam = malloc(ALIGN16(sizeof(struct beam)), MEMPOOL_STAGE);
chopper->fireslotthing->beam->age = -1;
chopper->fireslotthing->unk08 = -1;
chopper->fireslotthing->unk00 = 0;
chopper->fireslotthing->unk01 = 0;
+122 -122
View File
@@ -15,130 +15,130 @@ void func0f010bb0(void)
s32 i;
struct hand hand = {
0, // weaponnum
0, // unk0639
0, // unk063a
0, // weaponfunc
0, // unk063c
0, // torchon
1, // unk063e
0, // unk063f
0, // unk0640
0, // firing
0, // prevfiring
0, // unk064c
0, // unk0650
0, // unk0654
0, // unk0658
0, // unk065c
0, // unk0660
0, // unk0664
0, // unk0668
0, // unk066c
0, // unk0670
0, // unk0674
0, // unk0678
0, // unk067c
0, // unk0680
0, // unk0684
0, // unk0688
0, // unk068c
0, // unk0690
0, // unk0694
0, // unk0698
0, // unk069c
0, // unk06a0
0, // unk06a4
0, // unk06a8
1, // unk06ac
0, // unk06b0
0, // unk06b4
0, // unk06b8
0, // unk06bc
1, // unk06c0
0, // unk06c4
0, // unk06c8
0, // unk06cc
0, // unk06d0
1, // unk06d4
0, // unk06d8
0, // unk06dc
0, // unk06e0
0, // unk06e4
1, // unk06e8
0, // unk06ec
0, // unk06f0
0, // unk06f4
0, // unk06f8
0, // unk06fc
0, // unk0700
-1, // unk0704
0, // unk0708
1, // unk070c
0, // unk0710
0, // unk0714
0, // unk0718
0, // unk071c
0, // unk0720
0, // unk0724
0,
0,
0,
0,
0,
0,
1, // gunon
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,
1, // unk06ac
0,
0,
0,
0,
1, // unk06c0
0,
0,
0,
0,
1, // unk06d4
0,
0,
0,
0,
1, // unk06e8
0,
0,
0,
0,
0,
0,
-1, // unk0704
0,
1, // unk070c
0,
0,
0,
0,
0,
0,
-19.999996185303f, // unk0728
0, // unk072c
0,
19.999996185303f, // unk0730
0, // unk0734
0, // unk0738
0, // unk073c
0, // unk0740
0, // unk0744
0, // unk0748
0, // unk074c
0, // unk0750
0, // unk0754
0, // unk0758
0, // unk075c
0, // unk0760
0, // unk0764
0, // unk0768
0, // unk076c
-1, // unk0770
0, // unk0774
0, // unk0778
-1, // unk077c
0, // unk0780
0, // unk0784
-1, // unk0788
0, // unk078c
0, // unk0790
-1, // unk0794
0, // unk0798
1, // unk079c
0, // unk07a0
0, // unk07a4
1, // unk07a8
0, // unk07ac
0, // unk07b0
1, // unk07b4
0, // unk07b8
0, // unk07bc
1, // unk07c0
0, // unk07c4
0, // unk07c8
0, // unk07cc
1, // unk07d0
1, // unk07d4
0, // unk07d8
0, // unk07dc
0, // unk07e0
0, // unk07e4
0, // unk07e8
0, // unk07ec
0, // unk07f0
0, // xoffset
{0, 0, 1000}, // unk07f8
0, // audiohandle2
0, // unk0808
0, // unk080c
0, // unk0810
{-1}, // bullettail
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
-1, // unk0770
0,
0,
-1, // unk077c
0,
0,
-1, // unk0788
0,
0,
-1, // unk0794
0,
1, // unk079c
0,
0,
1, // unk07a8
0,
0,
1, // unk07b4
0,
0,
1, // unk07c0
0,
0,
0,
1, // unk07d0
1, // unk07d4
0,
0,
0,
0,
0,
0,
0,
0,
{0, 0, 1000}, // unk07f8
0,
0,
0,
0,
{-1}, // beam
};
if (IS4MB() && PLAYERCOUNT() == 2) {
+58 -59
View File
@@ -1240,7 +1240,7 @@ bool func0f098884(struct remoteminething *arg0, struct shorthand *hand)
return true;
}
if (arg0->unk01 == 1 && g_Vars.currentplayer->hands[HAND_LEFT].unk0640 == 1) {
if (arg0->unk01 == 1 && g_Vars.currentplayer->hands[HAND_LEFT].inuse == true) {
result = true;
}
@@ -6790,9 +6790,9 @@ glabel func0f09ceac
/* f09cf54: 27bd0038 */ addiu $sp,$sp,0x38
);
f32 func0f09cf58(u32 hand)
f32 handGetNoiseRadius(s32 handnum)
{
return g_Vars.currentplayer->hands[hand].unk0840;
return g_Vars.currentplayer->hands[handnum].noiseradius;
}
GLOBAL_ASM(
@@ -6814,7 +6814,7 @@ glabel func0f09cf88
/* f09cfc0: 27a40050 */ addiu $a0,$sp,0x50
/* f09cfc4: 0fc2c807 */ jal func0f0b201c
/* f09cfc8: 27a50028 */ addiu $a1,$sp,0x28
/* f09cfcc: 0fc2883f */ jal handIsAttackingOnThisTick
/* f09cfcc: 0fc2883f */ jal handIsFiring
/* f09cfd0: 00002025 */ or $a0,$zero,$zero
/* f09cfd4: 1040000c */ beqz $v0,.L0f09d008
/* f09cfd8: 3c014270 */ lui $at,0x4270
@@ -6862,7 +6862,7 @@ glabel func0f09cf88
/* f09d074: 00000000 */ nop
/* f09d078: e6060840 */ swc1 $f6,0x840($s0)
.L0f09d07c:
/* f09d07c: 0fc2883f */ jal handIsAttackingOnThisTick
/* f09d07c: 0fc2883f */ jal handIsFiring
/* f09d080: 24040001 */ addiu $a0,$zero,0x1
/* f09d084: 3c014270 */ lui $at,0x4270
/* f09d088: 44818000 */ mtc1 $at,$f16
@@ -7340,7 +7340,7 @@ glabel var7f1ac628
/* f09d73c: e7aa005c */ swc1 $f10,0x5c($sp)
/* f09d740: c61001a8 */ lwc1 $f16,0x1a8($s0)
/* f09d744: 46104100 */ add.s $f4,$f8,$f16
/* f09d748: 0fc2c4bb */ jal handGetXOffset
/* f09d748: 0fc2c4bb */ jal handGetXShift
/* f09d74c: e7a40060 */ swc1 $f4,0x60($sp)
/* f09d750: c7b2005c */ lwc1 $f18,0x5c($sp)
/* f09d754: 8e2f0034 */ lw $t7,0x34($s1)
@@ -11133,7 +11133,7 @@ glabel var7f1ac764
/* f0a0ad8: 3c06447a */ lui $a2,0x447a
/* f0a0adc: 0fc2d30f */ jal func0f0b4c3c
/* f0a0ae0: e6aa1678 */ swc1 $f10,0x1678($s5)
/* f0a0ae4: 0fc2a4f8 */ jal func0f0a93e0
/* f0a0ae4: 0fc2a4f8 */ jal handSetAimPos
/* f0a0ae8: 02002025 */ or $a0,$s0,$zero
/* f0a0aec: 8fbf0064 */ lw $ra,0x64($sp)
/* f0a0af0: d7b40010 */ ldc1 $f20,0x10($sp)
@@ -11805,7 +11805,7 @@ void func0f0a1528(void)
if (ctrl->switchtoweaponnum >= 0) {
if (func0f09bec8(HAND_RIGHT) && func0f09bec8(HAND_LEFT)) {
s32 weaponnum = player->gunctrl.weaponnum;
s32 prev640 = player->hands[HAND_LEFT].unk0640;
s32 previnuse = player->hands[HAND_LEFT].inuse;
struct hand *lefthand;
struct hand *righthand;
@@ -11828,13 +11828,13 @@ void func0f0a1528(void)
}
if (weaponnum == WEAPON_RCP120) {
s32 amount = player->hands[HAND_RIGHT].unk0874;
s32 amount = player->hands[HAND_RIGHT].matmot1;
if (amount > player->ammoheldarr[ctrl->totalammo[0]]) {
amount = player->ammoheldarr[ctrl->totalammo[0]];
if (amount > player->ammoheldarr[ctrl->ammotypes[0]]) {
amount = player->ammoheldarr[ctrl->ammotypes[0]];
}
player->ammoheldarr[ctrl->totalammo[0]] -= amount;
player->ammoheldarr[ctrl->ammotypes[0]] -= amount;
}
if (weaponnum == WEAPON_HORIZONSCANNER) {
@@ -11848,14 +11848,14 @@ void func0f0a1528(void)
righthand = &player->hands[HAND_RIGHT];
if (ctrl->switchtoweaponnum == WEAPON_NONE) {
lefthand->unk0640 = 0;
righthand->unk0640 = 0;
lefthand->inuse = false;
righthand->inuse = false;
ctrl->weaponnum = WEAPON_NONE;
} else {
func0f09df64(ctrl->switchtoweaponnum);
ctrl->weaponnum = ctrl->switchtoweaponnum;
lefthand->unk0640 = 1;
righthand->unk0640 = 1;
lefthand->inuse = true;
righthand->inuse = true;
}
if (ctrl->weaponnum == WEAPON_REMOTEMINE) {
@@ -11863,14 +11863,14 @@ void func0f0a1528(void)
}
if (!ctrl->unk1583_00) {
lefthand->unk0640 = 0;
lefthand->inuse = false;
}
if (weaponnum <= WEAPON_PSYCHOSISGUN && weaponnum >= WEAPON_UNARMED) {
player->gunctrl.prevweaponnum = weaponnum;
}
if (prev640) {
if (previnuse) {
player->gunctrl.unk1583_01 = true;
} else {
player->gunctrl.unk1583_01 = false;
@@ -11880,21 +11880,20 @@ void func0f0a1528(void)
g_Vars.currentplayer->usedowntime = -1;
for (i = 0; i < 2; i++) {
player->hands[i].unk0874 = 0.0f;
player->hands[i].unk0d0e_00 = 0;
player->hands[i].unk0d0e_04 = 0;
player->hands[i].unk0d0f_02 = false;
player->hands[i].unk0d0f_03 = false;
player->hands[i].unk0878 = 0.0f;
player->hands[i].unk087c = 0.0f;
player->hands[i].unk0868 = 0.0f;
player->hands[i].matmot1 = 0.0f;
player->hands[i].matmot2 = 0.0f;
player->hands[i].matmot3 = 0.0f;
player->hands[i].angledamper = 0.0f;
player->hands[i].unk0db8 = 0.0f;
player->hands[i].unk0b90 = 0;
player->hands[i].unk0888 = 0.0f;
player->hands[i].unk080c = 0;
player->hands[i].unk0810 = 0;
player->hands[i].allowshootframe = 0;
player->hands[i].lastshootframe60 = 0;
player->hands[i].base.weaponfunc = FUNC_PRIMARY;
player->hands[i].base.weaponnum = ctrl->weaponnum;
@@ -11938,11 +11937,11 @@ void func0f0a1528(void)
ctrl->unk1583_04 = false;
}
} else {
if (((player->hands[HAND_LEFT].unk0640 && !player->gunctrl.unk1583_00)
|| (!player->hands[HAND_LEFT].unk0640 && player->gunctrl.unk1583_00))
if (((player->hands[HAND_LEFT].inuse && !player->gunctrl.unk1583_00)
|| (!player->hands[HAND_LEFT].inuse && player->gunctrl.unk1583_00))
&& func0f09bec8(HAND_LEFT)) {
func0f0a134c(HAND_LEFT);
player->hands[HAND_LEFT].unk0640 = player->gunctrl.unk1583_00;
player->hands[HAND_LEFT].inuse = player->gunctrl.unk1583_00;
}
}
}
@@ -11961,7 +11960,7 @@ void currentPlayerEquipWeapon(s32 weaponnum)
s32 handGetWeaponNum(s32 handnum)
{
if (!g_Vars.currentplayer->hands[handnum].unk0640) {
if (!g_Vars.currentplayer->hands[handnum].inuse) {
return WEAPON_NONE;
}
@@ -12426,9 +12425,9 @@ void currentPlayerEquipWeaponWrapper(bool arg0, s32 weaponnum)
}
}
s32 handIsAttackingOnThisTick(s32 handnum)
s32 handIsFiring(s32 handnum)
{
return g_Vars.currentplayer->hands[handnum].unk063c;
return g_Vars.currentplayer->hands[handnum].firing;
}
s32 handGetAttackType(s32 handnum)
@@ -12479,17 +12478,17 @@ void currentPlayerReloadHandIfPossible(s32 handnum)
struct player *player = g_Vars.currentplayer;
if (weaponGetAmmoType(handGetWeaponNum(handnum), 0)
&& player->hands[handnum].unk065c == 0) {
player->hands[handnum].unk065c = 9;
&& player->hands[handnum].modenext == 0) {
player->hands[handnum].modenext = 9;
}
}
void func0f0a2290(f32 angle)
void handSetAdjustPos(f32 angle)
{
struct player *player = g_Vars.currentplayer;
player->hands[0].unk07f0 = (1 - cosf(angle)) * 5;
player->hands[1].unk07f0 = (1 - cosf(angle)) * 5;
player->hands[0].adjustpos.z = (1 - cosf(angle)) * 5;
player->hands[1].adjustpos.z = (1 - cosf(angle)) * 5;
}
void func0f0a2308(s32 handnum)
@@ -19897,15 +19896,15 @@ glabel var7f1acaa0
/* f0a890c: 00000000 */ nop
);
void handSetFiring(s32 handnum, bool firing)
void handSetTriggerOn(s32 handnum, bool on)
{
struct hand *hand = &g_Vars.currentplayer->hands[handnum];
hand->prevfiring = hand->firing;
hand->firing = firing;
hand->triggerprev = hand->triggeron;
hand->triggeron = on;
if (!firing) {
hand->unk064c = true;
if (!on) {
hand->triggerreleased = true;
}
}
@@ -20415,8 +20414,8 @@ void currentPlayerTickInventory(bool triggeron)
if (g_Vars.tickmode == TICKMODE_CUTSCENE) {
triggeron = false;
g_Vars.currentplayer->hands[HAND_LEFT].unk063c = 0;
g_Vars.currentplayer->hands[HAND_RIGHT].unk063c = 0;
g_Vars.currentplayer->hands[HAND_LEFT].firing = false;
g_Vars.currentplayer->hands[HAND_RIGHT].firing = false;
}
player->playertriggerprev = player->playertriggeron;
@@ -20432,14 +20431,14 @@ void currentPlayerTickInventory(bool triggeron)
if (player->playertriggeron) {
player->playertrigtime240 += g_Vars.lvupdate240;
if (player->hands[HAND_LEFT].unk0640
&& player->hands[HAND_RIGHT].unk0640
if (player->hands[HAND_LEFT].inuse
&& player->hands[HAND_RIGHT].inuse
&& player->gunctrl.weaponnum != WEAPON_REMOTEMINE) {
if (player->playertrigtime240 > 80) {
gunsfiring[player->curguntofire] = 1;
if (func0f099008(1 - player->curguntofire)
|| player->hands[1 - player->curguntofire].firing) {
|| player->hands[1 - player->curguntofire].triggeron) {
gunsfiring[1 - player->curguntofire] = 1;
}
} else {
@@ -20452,8 +20451,8 @@ void currentPlayerTickInventory(bool triggeron)
gunsfiring[1 - player->curguntofire] = 0;
}
} else {
if (player->hands[player->curguntofire].unk0640 == 0
&& player->hands[1 - player->curguntofire].unk0640) {
if (!player->hands[player->curguntofire].inuse
&& player->hands[1 - player->curguntofire].inuse) {
player->curguntofire = 1 - player->curguntofire;
}
@@ -20468,8 +20467,8 @@ void currentPlayerTickInventory(bool triggeron)
player->playertrigtime240 = 0;
}
handSetFiring(0, gunsfiring[0]);
handSetFiring(1, gunsfiring[1]);
handSetTriggerOn(0, gunsfiring[0]);
handSetTriggerOn(1, gunsfiring[1]);
if (g_Vars.tickmode == TICKMODE_NORMAL && g_Vars.lvupdate240 > 0) {
func0f09cdc4(0);
@@ -20526,17 +20525,17 @@ void currentPlayerSetAimType(u32 aimtype)
g_Vars.currentplayer->aimtype = aimtype;
}
void func0f0a93e0(struct coord *coord)
void handSetAimPos(struct coord *coord)
{
struct player *player = g_Vars.currentplayer;
player->hands[HAND_RIGHT].unk07f8.x = handGetXOffset(HAND_RIGHT) + coord->x;
player->hands[HAND_RIGHT].unk07f8.y = coord->y;
player->hands[HAND_RIGHT].unk07f8.z = coord->z;
player->hands[HAND_RIGHT].aimpos.x = handGetXShift(HAND_RIGHT) + coord->x;
player->hands[HAND_RIGHT].aimpos.y = coord->y;
player->hands[HAND_RIGHT].aimpos.z = coord->z;
player->hands[HAND_LEFT].unk07f8.x = handGetXOffset(HAND_LEFT) + coord->x;
player->hands[HAND_LEFT].unk07f8.y = coord->y;
player->hands[HAND_LEFT].unk07f8.z = coord->z;
player->hands[HAND_LEFT].aimpos.x = handGetXShift(HAND_LEFT) + coord->x;
player->hands[HAND_LEFT].aimpos.y = coord->y;
player->hands[HAND_LEFT].aimpos.z = coord->z;
}
void func0f0a9464(struct coord *coord)
@@ -20804,9 +20803,9 @@ s32 currentPlayerGetAmmoCount(s32 ammotype)
struct player *player = g_Vars.currentplayer;
for (i = 0; i < 2; i++) {
if (player->hands[i].unk0640) {
if (player->hands[i].inuse) {
for (j = 0; j < 2; j++) {
if (player->gunctrl.totalammo[j] == ammotype) {
if (player->gunctrl.ammotypes[j] == ammotype) {
total = player->hands[i].loadedammo[j] + total;
}
}
+10 -10
View File
@@ -2122,26 +2122,26 @@ glabel var7f1accf4
/* f0adbb8: 27bd0190 */ addiu $sp,$sp,0x190
);
void bullettailTick(struct bullettail *tail)
void beamTick(struct beam *beam)
{
if (tail->age >= 0) {
if (tail->unk01 == -2) {
tail->age++;
if (beam->age >= 0) {
if (beam->unk01 == -2) {
beam->age++;
if (tail->age > 1) {
tail->age = -1;
if (beam->age > 1) {
beam->age = -1;
}
} else {
if (g_Vars.lvupdate240 <= 8) {
// Not lagging
tail->dist += tail->speed * g_Vars.lvupdate240f;
beam->dist += beam->speed * g_Vars.lvupdate240f;
} else {
// Lagging
tail->dist += tail->speed * (2 + random() * (1.0f / U32_MAX) * 0.5f);
beam->dist += beam->speed * (2 + random() * (1.0f / U32_MAX) * 0.5f);
}
if (tail->dist >= tail->maxdist) {
tail->age = -1;
if (beam->dist >= beam->maxdist) {
beam->age = -1;
}
}
}
+4 -4
View File
@@ -147,9 +147,9 @@ void currentPlayerSetWeaponSway(struct coord *sway)
}
}
f32 handGetXOffset(u32 hand)
f32 handGetXShift(s32 handnum)
{
return g_Vars.currentplayer->hands[hand].xoffset;
return g_Vars.currentplayer->hands[handnum].xshift;
}
f32 func0f0b131c(u32 hand)
@@ -496,7 +496,7 @@ glabel handPopulateFromCurrentPlayer
// hand->unk0639 = g_Vars.currentplayer->hands[handnum].unk0639;
//
// if (hand->weaponnum == WEAPON_MAULER) {
// hand->unk063a = g_Vars.currentplayer->hands[handnum].unk0874 * 10.0f;
// hand->unk063a = g_Vars.currentplayer->hands[handnum].matmot1 * 10.0f;
// }
//
// if (hand->weaponnum == WEAPON_LASER) {
@@ -583,7 +583,7 @@ f32 handGetDamage(struct shorthand *hand)
damage = (hand->unk063a / 3.0f + 1.0f) * damage;
}
if (handIsAttackingOnThisTick(HAND_LEFT) && handIsAttackingOnThisTick(HAND_RIGHT)) {
if (handIsFiring(HAND_LEFT) && handIsFiring(HAND_RIGHT)) {
damage += damage;
}
+4 -4
View File
@@ -10095,18 +10095,18 @@ s32 getMissionTime(void)
s32 func0f0c228c(struct prop *prop)
{
bullettailTick(&g_Vars.players[propGetPlayerNum(prop)]->hands[0].bullettail);
bullettailTick(&g_Vars.players[propGetPlayerNum(prop)]->hands[1].bullettail);
beamTick(&g_Vars.players[propGetPlayerNum(prop)]->hands[0].beam);
beamTick(&g_Vars.players[propGetPlayerNum(prop)]->hands[1].beam);
if (prop->chr && g_Vars.mplayerisrunning) {
struct chrdata *chr = prop->chr;
if (chr->fireslot[0] >= 0) {
bullettailTick(&g_Fireslots[chr->fireslot[0]].bullettail);
beamTick(&g_Fireslots[chr->fireslot[0]].beam);
}
if (chr->fireslot[1] >= 0) {
bullettailTick(&g_Fireslots[chr->fireslot[1]].bullettail);
beamTick(&g_Fireslots[chr->fireslot[1]].beam);
}
}
+100 -100
View File
@@ -91,126 +91,126 @@ void playerAllocate(s32 index)
{
struct hand hand = {
{0},
0, // unk063c
0, // unk063d
1, // unk063e
0, // unk063f
0, // unk0640
0, // firing
0, // prevfiring
0, // unk064c
0, // unk0650
0, // unk0654
0, // unk0658
0, // unk065c
0, // unk0660
0, // unk0664
0, // unk0668
0, // unk066c
0, // unk0670
0, // unk0674
0, // unk0678
0, // unk067c
0, // unk0680
0, // unk0684
0, // unk0688
0, // unk068c
0, // unk0690
0, // unk0694
0, // unk0698
0, // unk069c
0, // unk06a0
0, // unk06a4
0, // unk06a8
0,
0,
1, // gunon
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,
1, // unk06ac
0, // unk06b0
0, // unk06b4
0, // unk06b8
0, // unk06bc
0,
0,
0,
0,
1, // unk06c0
0, // unk06c4
0, // unk06c8
0, // unk06cc
0, // unk06d0
0,
0,
0,
0,
1, // unk06d4
0, // unk06d8
0, // unk06dc
0, // unk06e0
0, // unk06e4
0,
0,
0,
0,
1, // unk06e8
0, // unk06ec
0, // unk06f0
0, // unk06f4
0, // unk06f8
0, // unk06fc
0, // unk0700
0,
0,
0,
0,
0,
0,
-1, // unk0704
0, // unk0708
0,
1, // unk070c
0, // unk0710
0, // unk0714
0, // unk0718
0, // unk071c
0, // unk0720
0, // unk0724
0,
0,
0,
0,
0,
0,
-19.999996185303f, // unk0728
0, // unk072c
0,
19.999996185303f, // unk0730
0, // unk0734
0, // unk0738
0, // unk073c
0, // unk0740
0, // unk0744
0, // unk0748
0, // unk074c
0, // unk0750
0, // unk0754
0, // unk0758
0, // unk075c
0, // unk0760
0, // unk0764
0, // unk0768
0, // unk076c
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
-1, // unk0770
0, // unk0774
0, // unk0778
0,
0,
-1, // unk077c
0, // unk0780
0, // unk0784
0,
0,
-1, // unk0788
0, // unk078c
0, // unk0790
0,
0,
-1, // unk0794
0, // unk0798
0,
1, // unk079c
0, // unk07a0
0, // unk07a4
0,
0,
1, // unk07a8
0, // unk07ac
0, // unk07b0
0,
0,
1, // unk07b4
0, // unk07b8
0, // unk07bc
0,
0,
1, // unk07c0
0, // unk07c4
0, // unk07c8
0, // unk07cc
0,
0,
0,
1, // unk07d0
1, // unk07d4
0, // unk07d8
0, // unk07dc
0, // unk07e0
0, // unk07e4
0, // unk07e8
0, // unk07ec
0, // unk07f0
0, // xoffset
0,
0,
0,
0,
0,
0,
0,
0,
{0, 0, 1000}, // unk07f8
NULL, // audiohandle2
0, // unk0808
0, // unk080c
0, // unk0810
{-1}, // bullettail.age
0,
0,
0,
{-1}, // beam.age
};
s32 i;
+2 -2
View File
@@ -2398,7 +2398,7 @@ void handTickAttack(s32 handnum)
g_Vars.currentplayer->hands[handnum].unk0d0f_02 = false;
}
if (handIsAttackingOnThisTick(handnum)) {
if (handIsFiring(handnum)) {
s32 type = handGetAttackType(handnum);
s32 weaponnum = handGetWeaponNum(handnum);
u8 stack1;
@@ -2416,7 +2416,7 @@ void handTickAttack(s32 handnum)
case HANDATTACKTYPE_SHOOT:
// Always execute if right hand, but if left hand then execute if
// right hand is not (ie. prevent firing both guns on the same tick)
if (handnum == HAND_RIGHT || !handIsAttackingOnThisTick(HAND_RIGHT)) {
if (handnum == HAND_RIGHT || !handIsFiring(HAND_RIGHT)) {
chrUncloakTemporarily(g_Vars.currentplayer->prop->chr);
mpstatsIncrementPlayerShotCount2((struct shorthand *)&tmpweaponnum, 0);
+12 -12
View File
@@ -26920,12 +26920,12 @@ u32 func0f07e474(struct prop *prop)
if (obj->type == OBJTYPE_AUTOGUN) {
struct autogunobj *autogun = (struct autogunobj *)prop->obj;
if (autogun->bullettail) {
bullettailTick(autogun->bullettail);
if (autogun->beam) {
beamTick(autogun->beam);
}
} else if (obj->type == OBJTYPE_CHOPPER) {
struct chopperobj *chopper = (struct chopperobj *)prop->obj;
bullettailTick(chopper->fireslotthing->bullettail);
beamTick(chopper->fireslotthing->beam);
} else if (obj->type == OBJTYPE_LIFT) {
liftTick(prop);
} else if (obj->type == OBJTYPE_ESCASTEP) {
@@ -27327,7 +27327,7 @@ s32 objTick(struct prop *prop)
return result;
}
Gfx *propsRenderBulletTails(Gfx *gdl)
Gfx *propsRenderBeams(Gfx *gdl)
{
struct prop *prop = g_Vars.list1head;
@@ -27336,15 +27336,15 @@ Gfx *propsRenderBulletTails(Gfx *gdl)
struct chrdata *chr = prop->chr;
if (CHRRACE(chr) == RACE_ROBOT) {
gdl = func0f0acb90(gdl, chr->unk348->bullettail, true, true);
gdl = func0f0acb90(gdl, chr->unk34c->bullettail, true, true);
gdl = func0f0acb90(gdl, chr->unk348->beam, true, true);
gdl = func0f0acb90(gdl, chr->unk34c->beam, true, true);
} else {
if (chr->fireslot[0] >= 0) {
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[0]].bullettail, true, false);
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[0]].beam, true, false);
}
if (chr->fireslot[1] >= 0) {
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[1]].bullettail, true, false);
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[1]].beam, true, false);
}
}
} else if (prop->type == PROPTYPE_OBJ) {
@@ -27352,21 +27352,21 @@ Gfx *propsRenderBulletTails(Gfx *gdl)
if (obj->type == OBJTYPE_AUTOGUN) {
struct autogunobj *autogun = (struct autogunobj *)prop->obj;
gdl = func0f0acb90(gdl, autogun->bullettail, true, false);
gdl = func0f0acb90(gdl, autogun->beam, true, false);
} else if (obj->type == OBJTYPE_CHOPPER) {
struct chopperobj *chopper = (struct chopperobj *)prop->obj;
gdl = func0f0acb90(gdl, chopper->fireslotthing->bullettail, true, true);
gdl = func0f0acb90(gdl, chopper->fireslotthing->beam, true, true);
}
} else if (prop->type == PROPTYPE_PLAYER) {
if (prop->chr && propGetPlayerNum(prop) != g_Vars.currentplayernum) {
struct chrdata *chr = prop->chr;
if (chr->fireslot[0] >= 0) {
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[0]].bullettail, true, false);
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[0]].beam, true, false);
}
if (chr->fireslot[1] >= 0) {
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[1]].bullettail, true, false);
gdl = func0f0acb90(gdl, &g_Fireslots[chr->fireslot[1]].beam, true, false);
}
}
}
+1 -1
View File
@@ -1818,7 +1818,7 @@ void frBeginSession(s32 weapon)
frCloseAndLockDoor();
for (i = 0; i < 2; i++) {
if (g_Vars.currentplayer->gunctrl.totalammo[i] >= 0) {
if (g_Vars.currentplayer->gunctrl.ammotypes[i] >= 0) {
g_Vars.currentplayer->hands[0].loadedammo[i] = 0;
g_Vars.currentplayer->hands[1].loadedammo[i] = 0;
}
+5 -5
View File
@@ -51,7 +51,7 @@ u32 func0f09cd18(void);
void func0f09cdc4(s32 hand);
void func0f09ce8c(void);
void func0f09ceac(void);
f32 func0f09cf58(u32 arg0);
f32 handGetNoiseRadius(s32 handnum);
void func0f09cf88(void);
void func0f09d140(s32 hand);
u32 func0f09d550(void);
@@ -99,13 +99,13 @@ void func0f0a1c2c(void);
bool func0f0a1d14(u32 weaponnum);
void func0f0a1df4(void);
void currentPlayerEquipWeaponWrapper(bool arg0, s32 weaponnum);
s32 handIsAttackingOnThisTick(s32 handnum);
s32 handIsFiring(s32 handnum);
s32 handGetAttackType(s32 handnum);
char *weaponGetName(s32 weaponnum);
u16 weaponGetNameId(s32 weaponnum);
char *weaponGetShortName(s32 arg0);
void currentPlayerReloadHandIfPossible(s32 handnum);
void func0f0a2290(f32 angle);
void handSetAdjustPos(f32 angle);
void func0f0a2308(s32 handnum);
u32 func0f0a233c(void);
u32 func0f0a2498(void);
@@ -140,14 +140,14 @@ u32 func0f0a7d5c(void);
void func0f0a7d98(struct shorthand *hand, struct prop *prop, s32 arg2);
void func0f0a8404(struct coord *pos, s16 *rooms, s32 arg2);
u32 func0f0a84c8(void);
void handSetFiring(s32 hand, bool firing);
void handSetTriggerOn(s32 handnum, bool on);
s32 currentPlayerConsiderToggleGunFunction(s32 usedowntime, bool firing, s32 arg2);
void func0f0a8c50(void);
bool currentPlayerIsUsingSecondaryFunction(void);
void currentPlayerTickInventory(bool triggeron);
void playersSetPassiveMode(bool enable);
void currentPlayerSetAimType(u32 aimtype);
void func0f0a93e0(struct coord *coord);
void handSetAimPos(struct coord *coord);
void func0f0a9464(struct coord *coord);
void func0f0a9494(u32 operation);
void func0f0a94d0(u32 operation, struct coord *a, struct coord *b);
+2 -2
View File
@@ -7,8 +7,8 @@
u32 func0f0abe70(void);
u32 func0f0ac138(void);
Gfx *func0f0ac4b8(Gfx *gdl, struct textureconfig *arg1, f32 arg2, struct coord *arg3, u32 colour1, f32 arg5, struct coord *arg6, u32 colour2);
Gfx *func0f0acb90(Gfx *gdl, struct bullettail *bullettail, bool arg2, u32 arg3);
void bullettailTick(struct bullettail *bullettail);
Gfx *func0f0acb90(Gfx *gdl, struct beam *beam, bool arg2, u32 arg3);
void beamTick(struct beam *beam);
u32 func0f0adcc8(void);
u32 func0f0ade00(void);
u32 func0f0ae964(void);
+1 -1
View File
@@ -12,7 +12,7 @@ struct weaponfunc *weaponGetFunction(u8 *arg0, s32 which);
struct weaponfunc *currentPlayerGetWeaponFunction(u32 hand);
struct inventory_typee *func0f0b11bc(struct shorthand *hand);
struct inventory_ammo *weaponGetAmmoByFunction(u32 weaponnum, u32 funcnum);
f32 handGetXOffset(u32 arg0);
f32 handGetXShift(s32 handnum);
f32 func0f0b131c(u32 hand);
f32 currentPlayerGetGunZoomFov(void);
void currentPlayerZoomOut(f32 fovpersec);
+1 -1
View File
@@ -203,7 +203,7 @@ void func0f07e2cc(struct prop *prop);
bool propCanRegen(struct prop *prop);
u32 func0f07e474(struct prop *prop);
s32 objTick(struct prop *prop);
Gfx *propsRenderBulletTails(Gfx *gdl);
Gfx *propsRenderBeams(Gfx *gdl);
u32 func0f07f918(void);
void imageSlotSetImage(struct monitorscreen *screen, u32 arg1);
u32 func0f07fbf0(void);
+60 -130
View File
@@ -1350,7 +1350,7 @@ struct autogunobj { // objtype 0x0d
/*0x90*/ s32 unk90;
/*0x94*/ s32 unk94;
/*0x98*/ s32 unk98;
/*0x9c*/ struct bullettail *bullettail;
/*0x9c*/ struct beam *beam;
/*0xa0*/ f32 unka0;
/*0xa4*/ u32 unka4;
/*0xa8*/ u8 autogun_type;
@@ -1704,7 +1704,7 @@ struct threat {
s16 unk0a;
};
struct bullettail {
struct beam {
/*0x00*/ s8 age;
/*0x01*/ s8 unk01;
/*0x04*/ u32 unk04;
@@ -1730,127 +1730,57 @@ struct shorthand {
// Weapon data per hand
struct hand {
struct shorthand base;
/*0x063c*/ s8 unk063c;
/*0x063d*/ s8 torchon;
/*0x063e*/ u8 unk063e;
/*0x063f*/ u8 unk063f;
/*0x0640*/ s8 unk0640;
/*0x0644*/ bool firing;
/*0x0648*/ bool prevfiring;
/*0x064c*/ bool unk064c; // Set to true when firing stops. If set to false, pistols cannot rapid fire by tapping Z
/*0x0650*/ u32 unk0650;
/*0x0654*/ u32 unk0654;
/*0x0658*/ u32 unk0658;
/*0x065c*/ u32 unk065c; // hand state? 0 = idle, 9 = reloading
/*0x0660*/ u32 unk0660;
/*0x0664*/ u32 unk0664;
/*0x0668*/ u32 unk0668;
/*0x066c*/ u32 unk066c;
/*0x0670*/ u32 unk0670;
/*0x0674*/ u32 unk0674;
/*0x0678*/ u32 unk0678;
/*0x067c*/ u32 unk067c;
/*0x0680*/ u32 unk0680;
/*0x0684*/ u32 unk0684;
/*0x0688*/ u32 unk0688;
/*0x068c*/ u32 unk068c;
/*0x0690*/ u32 unk0690;
/*0x0694*/ u32 unk0694;
/*0x0698*/ u32 unk0698;
/*0x069c*/ u32 unk069c;
/*0x06a0*/ u32 unk06a0;
/*0x06a4*/ u32 unk06a4;
/*0x06a8*/ u32 unk06a8;
/*0x06ac*/ f32 unk06ac;
/*0x06b0*/ u32 unk06b0;
/*0x06b4*/ u32 unk06b4;
/*0x06b8*/ u32 unk06b8;
/*0x06bc*/ u32 unk06bc;
/*0x06c0*/ f32 unk06c0;
/*0x06c4*/ u32 unk06c4;
/*0x06c8*/ u32 unk06c8;
/*0x06cc*/ u32 unk06cc;
/*0x06d0*/ u32 unk06d0;
/*0x06d4*/ f32 unk06d4;
/*0x06d8*/ u32 unk06d8;
/*0x06dc*/ u32 unk06dc;
/*0x06e0*/ u32 unk06e0;
/*0x06e4*/ u32 unk06e4;
/*0x06e8*/ f32 unk06e8;
/*0x06ec*/ u32 unk06ec;
/*0x06f0*/ u32 unk06f0;
/*0x06f4*/ u32 unk06f4;
/*0x06f8*/ u32 unk06f8;
/*0x06fc*/ u32 unk06fc;
/*0x0700*/ u32 unk0700;
/*0x0704*/ f32 unk0704;
/*0x0708*/ u32 unk0708;
/*0x070c*/ f32 unk070c;
/*0x0710*/ u32 unk0710;
/*0x0714*/ u32 unk0714;
/*0x0718*/ u32 unk0718;
/*0x071c*/ u32 unk071c;
/*0x0720*/ u32 unk0720;
/*0x0724*/ u32 unk0724;
/*0x0728*/ f32 unk0728;
/*0x072c*/ u32 unk072c;
/*0x0730*/ f32 unk0730;
/*0x0734*/ u32 unk0734;
/*0x0738*/ u32 unk0738;
/*0x073c*/ u32 unk073c;
/*0x0740*/ u32 unk0740;
/*0x0744*/ u32 unk0744;
/*0x0748*/ u32 unk0748;
/*0x074c*/ u32 unk074c;
/*0x0750*/ u32 unk0750;
/*0x0754*/ u32 unk0754;
/*0x0758*/ u32 unk0758;
/*0x075c*/ u32 unk075c;
/*0x0760*/ u32 unk0760;
/*0x0764*/ u32 unk0764;
/*0x0768*/ u32 unk0768;
/*0x076c*/ u32 unk076c;
/*0x0770*/ f32 unk0770;
/*0x0774*/ u32 unk0774;
/*0x0778*/ u32 unk0778;
/*0x077c*/ f32 unk077c;
/*0x0780*/ u32 unk0780;
/*0x0784*/ u32 unk0784;
/*0x0788*/ f32 unk0788;
/*0x078c*/ u32 unk078c;
/*0x0790*/ u32 unk0790;
/*0x0794*/ f32 unk0794;
/*0x0798*/ u32 unk0798;
/*0x079c*/ f32 unk079c;
/*0x07a0*/ u32 unk07a0;
/*0x07a4*/ u32 unk07a4;
/*0x07a8*/ f32 unk07a8;
/*0x07ac*/ u32 unk07ac;
/*0x07b0*/ u32 unk07b0;
/*0x07b4*/ f32 unk07b4;
/*0x07b8*/ u32 unk07b8;
/*0x07bc*/ u32 unk07bc;
/*0x07c0*/ f32 unk07c0;
/*0x07c4*/ u32 unk07c4;
/*0x07c8*/ u32 unk07c8;
/*0x07cc*/ u32 unk07cc;
/*0x07d0*/ f32 unk07d0;
/*0x07d4*/ f32 unk07d4;
/*0x07d8*/ u32 unk07d8;
/*0x07dc*/ u32 unk07dc;
/*0x07e0*/ u32 unk07e0;
/*0x07e4*/ u32 unk07e4;
/*0x07e8*/ u32 unk07e8;
/*0x07ec*/ u32 unk07ec;
/*0x07f0*/ f32 unk07f0;
/*0x07f4*/ f32 xoffset;
/*0x07f8*/ struct coord unk07f8;
/*0x063c*/ s8 firing;
/*0x063d*/ s8 flashon;
/*0x063e*/ u8 gunon;
/*0x063f*/ u8 visible;
/*0x0640*/ s8 inuse; // true if hand is holding a gun, false if not
/*0x0644*/ bool triggeron;
/*0x0648*/ bool triggerprev;
/*0x064c*/ bool triggerreleased;
/*0x0650*/ u32 count;
/*0x0654*/ u32 count60;
/*0x0658*/ u32 mode;
/*0x065c*/ u32 modenext; // 0 = idle, 9 = reloading
/*0x0660*/ u32 numfires;
/*0x0664*/ u32 numshotguncarts;
/*0x0668*/ u32 refiretime;
/*0x066c*/ u32 typechange;
/*0x0670*/ u32 pausetime60;
/*0x0674*/ u32 pausechange;
/*0x0678*/ u32 nextprevchange; // "
/*0x067c*/ struct coord posstart;
/*0x0688*/ u32 rotxstart;
/*0x068c*/ struct coord posend;
/*0x0698*/ u32 rotxend;
/*0x069c*/ struct coord posoffset;
/*0x06a8*/ u32 rotxoffset;
/*0x06ac*/ Mtxf posrotmtx;
/*0x06ec*/ u32 useposrot;
/*0x06f0*/ struct coord damppos;
/*0x06fc*/ struct coord damplook;
/*0x0708*/ struct coord dampup;
/*0x0714*/ struct coord damppossum;
/*0x0720*/ struct coord damplooksum;
/*0x072c*/ struct coord dampupsum;
/*0x0738*/ f32 blendpos[12];
/*0x0768*/ f32 blendlook[12];
/*0x0798*/ f32 blendup[12];
/*0x07c8*/ u32 curblendpos;
/*0x07cc*/ u32 dampt;
/*0x07d0*/ f32 blendescale;
/*0x07d4*/ f32 blendescale1;
/*0x07d8*/ u32 sideflag;
/*0x07dc*/ struct coord adjustdamp;
/*0x07e8*/ struct coord adjustpos;
/*0x07f4*/ f32 xshift;
/*0x07f8*/ struct coord aimpos;
/*0x0804*/ struct audiohandle *audiohandle2;
/*0x0808*/ u32 unk0808;
/*0x080c*/ u32 unk080c;
/*0x0810*/ u32 unk0810;
/*0x0814*/ struct bullettail bullettail;
/*0x0840*/ f32 unk0840;
/*0x080c*/ u32 allowshootframe;
/*0x0810*/ u32 lastshootframe60;
/*0x0814*/ struct beam beam;
/*0x0840*/ f32 noiseradius;
/*0x0844*/ u32 unk0844;
/*0x0848*/ u32 unk0848;
/*0x084c*/ u32 unk084c;
@@ -1858,12 +1788,12 @@ struct hand {
/*0x0854*/ u32 unk0854;
/*0x0858*/ s32 loadedammo[2];
/*0x0860*/ s32 clipsizes[2];
/*0x0868*/ f32 unk0868;
/*0x086c*/ u32 unk086c;
/*0x0870*/ u32 unk0870;
/*0x0874*/ f32 unk0874; // Mauler charge amount? Or a timer
/*0x0878*/ f32 unk0878;
/*0x087c*/ f32 unk087c;
/*0x0868*/ f32 angledamper;
/*0x086c*/ u32 lastrotangx;
/*0x0870*/ u32 lastrotangy;
/*0x0874*/ f32 matmot1;
/*0x0878*/ f32 matmot2;
/*0x087c*/ f32 matmot3;
/*0x0880*/ u32 unk0880;
/*0x0884*/ u32 unk0884;
/*0x0888*/ f32 unk0888;
@@ -2226,7 +2156,7 @@ struct gunctrl {
/*0x15d8*/ u32 unk15d8;
/*0x15dc*/ u32 unk15dc;
/*0x15e0*/ u32 unk15e0;
/*0x15e4*/ s8 totalammo[2];
/*0x15e4*/ s8 ammotypes[2];
/*0x15e6*/ u8 unk15e6;
/*0x15e7*/ u8 unk15e7;
/*0x15e8*/ u8 unk15e8;
@@ -3563,7 +3493,7 @@ struct room {
struct fireslotthing {
/*0x00*/ u8 unk00;
/*0x01*/ u8 unk01;
/*0x04*/ struct bullettail *bullettail;
/*0x04*/ struct beam *beam;
/*0x08*/ s32 unk08;
/*0x0c*/ f32 unk0c;
/*0x10*/ f32 unk10;
@@ -3574,7 +3504,7 @@ struct fireslotthing {
struct fireslot {
/*0x00*/ s32 unk00;
/*0x04*/ struct bullettail bullettail;
/*0x04*/ struct beam beam;
};
struct menulayer {