diff --git a/src/game/bondbike.c b/src/game/bondbike.c index c8a63e2ee..090e65f64 100644 --- a/src/game/bondbike.c +++ b/src/game/bondbike.c @@ -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]); diff --git a/src/game/bondcutscene.c b/src/game/bondcutscene.c index 71c3dc675..1a6ad23f0 100644 --- a/src/game/bondcutscene.c +++ b/src/game/bondcutscene.c @@ -24,7 +24,7 @@ void bcutsceneInit(void) hand->audiohandle = NULL; } - hand->unk063c = 0; + hand->firing = false; } } } diff --git a/src/game/bondgrab.c b/src/game/bondgrab.c index cd21056f7..6c7a2d005 100644 --- a/src/game/bondgrab.c +++ b/src/game/bondgrab.c @@ -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: diff --git a/src/game/bondmove.c b/src/game/bondmove.c index 4667accd3..afbd6b137 100644 --- a/src/game/bondmove.c +++ b/src/game/bondmove.c @@ -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); // } // diff --git a/src/game/bondwalk.c b/src/game/bondwalk.c index 4c5a9c31c..653132ced 100644 --- a/src/game/bondwalk.c +++ b/src/game/bondwalk.c @@ -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) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 35d9f1335..dd7527559 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -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) { diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index 04b8efc99..e737ad62c 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -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; diff --git a/src/game/core.c b/src/game/core.c index 9e10806e7..7fd9ec421 100644 --- a/src/game/core.c +++ b/src/game/core.c @@ -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); diff --git a/src/game/dlights.c b/src/game/dlights.c index 1141aaab2..4fb5473e4 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -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); } } diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index 0999067e5..c3770d183 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -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; diff --git a/src/game/game_010b20.c b/src/game/game_010b20.c index 40924d21f..989b53a33 100644 --- a/src/game/game_010b20.c +++ b/src/game/game_010b20.c @@ -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) { diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index 892590cb8..3fe5d3137 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -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; } } diff --git a/src/game/game_0abe70.c b/src/game/game_0abe70.c index c84cb1601..7f7f12016 100644 --- a/src/game/game_0abe70.c +++ b/src/game/game_0abe70.c @@ -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; } } } diff --git a/src/game/game_0b0fd0.c b/src/game/game_0b0fd0.c index e8469edb7..bb46652d5 100644 --- a/src/game/game_0b0fd0.c +++ b/src/game/game_0b0fd0.c @@ -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; } diff --git a/src/game/game_0b69d0.c b/src/game/game_0b69d0.c index 5b4aacb35..79110db4f 100644 --- a/src/game/game_0b69d0.c +++ b/src/game/game_0b69d0.c @@ -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); } } diff --git a/src/game/game_127910.c b/src/game/game_127910.c index ffd0eae49..150e3f014 100644 --- a/src/game/game_127910.c +++ b/src/game/game_127910.c @@ -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; diff --git a/src/game/prop.c b/src/game/prop.c index ca883b55a..05c84e4a1 100644 --- a/src/game/prop.c +++ b/src/game/prop.c @@ -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); diff --git a/src/game/propobj.c b/src/game/propobj.c index 308c14e24..8456f166e 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -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); } } } diff --git a/src/game/training/training.c b/src/game/training/training.c index 2a4cd30db..331c9f328 100644 --- a/src/game/training/training.c +++ b/src/game/training/training.c @@ -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; } diff --git a/src/include/game/game_097ba0.h b/src/include/game/game_097ba0.h index a5a56b6e8..9d51983de 100644 --- a/src/include/game/game_097ba0.h +++ b/src/include/game/game_097ba0.h @@ -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); diff --git a/src/include/game/game_0abe70.h b/src/include/game/game_0abe70.h index f04b5e954..1a06c9ff7 100644 --- a/src/include/game/game_0abe70.h +++ b/src/include/game/game_0abe70.h @@ -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); diff --git a/src/include/game/game_0b0fd0.h b/src/include/game/game_0b0fd0.h index 4d4631dff..0dabfd6b6 100644 --- a/src/include/game/game_0b0fd0.h +++ b/src/include/game/game_0b0fd0.h @@ -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); diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index 18031a850..3444e884f 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -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); diff --git a/src/include/types.h b/src/include/types.h index f2a724344..ef7ac8f28 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -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 {