diff --git a/src/game/botinv.c b/src/game/botinv.c index 7875f07a3..bdeb0f18b 100644 --- a/src/game/botinv.c +++ b/src/game/botinv.c @@ -129,7 +129,7 @@ struct aibotweaponpreference g_AibotWeaponPreferences[] = { /*0x56*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_BOLT /*0x57*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_BRIEFCASE2 /*0x58*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_SKROCKET - /*0x59*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_59 + /*0x59*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_CHOPPERGUN /*0x5a*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_WATCHLASER /*0x5b*/ { 220, 220, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_MPSHIELD /*0x5c*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_DISABLED diff --git a/src/game/invitems.c b/src/game/invitems.c index b11a97f4f..bc957f02a 100644 --- a/src/game/invitems.c +++ b/src/game/invitems.c @@ -4654,7 +4654,7 @@ struct weapon invitem_briefcase2 = { WEAPONFLAG_ONEHANDED | WEAPONFLAG_00000800 | WEAPONFLAG_HIDEMENUMODEL | WEAPONFLAG_DONTCOUNTSHOTS | WEAPONFLAG_DETERMINER_S_THE | WEAPONFLAG_DETERMINER_F_THE, }; -struct weaponfunc_shootauto invfunc_59_rapidfire = { +struct weaponfunc_shootauto invfunc_choppergun_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0x00, // unk06 @@ -4681,7 +4681,7 @@ struct weaponfunc_shootauto invfunc_59_rapidfire = { 0, 0, }; -struct inventory_ammo invammo_59 = { +struct inventory_ammo invammo_choppergun = { AMMOTYPE_SMG, CASING_RIFLE, 27, // clip size @@ -4689,15 +4689,15 @@ struct inventory_ammo invammo_59 = { 0, // flags }; -struct weapon invitem_59 = { +struct weapon invitem_choppergun = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation - { &invfunc_59_rapidfire, NULL }, // functions - &invammo_59, // pri ammo + { &invfunc_choppergun_rapidfire, NULL }, // functions + &invammo_choppergun, // pri ammo NULL, // sec ammo &invclass_default, 1, // sway @@ -4714,7 +4714,7 @@ struct weapon invitem_59 = { WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_DUALWIELD, }; -struct weaponfunc_shootauto invfunc_5a_rapidfire = { +struct weaponfunc_shootauto invfunc_watchlaser_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0x00, // unk06 @@ -4741,7 +4741,7 @@ struct weaponfunc_shootauto invfunc_5a_rapidfire = { 0, 0, }; -struct inventory_ammo invammo_5a = { +struct inventory_ammo invammo_watchlaser = { AMMOTYPE_SMG, CASING_RIFLE, 27, // clip size @@ -4749,15 +4749,15 @@ struct inventory_ammo invammo_5a = { 0, // flags }; -struct weapon invitem_5a = { +struct weapon invitem_watchlaser = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation - { &invfunc_5a_rapidfire, NULL }, // functions - &invammo_5a, // pri ammo + { &invfunc_watchlaser_rapidfire, NULL }, // functions + &invammo_watchlaser, // pri ammo NULL, // sec ammo &invclass_default, 1, // sway @@ -6216,8 +6216,8 @@ struct weapon *g_Weapons[] = { &invitem_bolt, &invitem_briefcase2, &invitem_rocket, - &invitem_59, - &invitem_5a, + &invitem_choppergun, + &invitem_watchlaser, &invitem_hammer, &invitem_hammer, &invitem_suicidepill, diff --git a/src/game/propobj.c b/src/game/propobj.c index 6bb671a5e..c3f3897ce 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -48016,1852 +48016,161 @@ void chopperFireRocket(struct chopperobj *chopper, bool side) } } -#if VERSION >= VERSION_JPN_FINAL -GLOBAL_ASM( -glabel func0f07b3f0 -.late_rodata -glabel var7f1aa5d4 -.word 0x3dcccccd -glabel var7f1aa5d8 -.word 0x40c907a9 -glabel var7f1aa5dc -.word 0x40c907a9 -glabel var7f1aa5e0 -.word 0x40490fdb -glabel var7f1aa5e4 -.word 0xc0490fdb -glabel var7f1aa5e8 -.word 0x40c907a9 -glabel var7f1aa5ec -.word 0x40c907a9 -glabel var7f1aa5f0 -.word 0x40490fdb -glabel var7f1aa5f4 -.word 0x3eb2b8c2 -glabel var7f1aa5f8 -.word 0x3c8efa35 -glabel var7f1aa5fc -.word 0x3c8efa35 -glabel var7f1aa600 -.word 0x3b187c24 -glabel var7f1aa604 -.word 0x3b987c24 -glabel var7f1aa608 -.word 0x3e0ef461 -glabel var7f1aa60c -.word 0xbb987c24 -glabel var7f1aa610 -.word 0xbb987c24 -.text -/* f07c4a8: 27bdfee0 */ addiu $sp,$sp,-288 -/* f07c4ac: afbf0024 */ sw $ra,0x24($sp) -/* f07c4b0: afb00020 */ sw $s0,0x20($sp) -/* f07c4b4: afa40120 */ sw $a0,0x120($sp) -/* f07c4b8: afa50124 */ sw $a1,0x124($sp) -/* f07c4bc: 8c820004 */ lw $v0,0x4($a0) -/* f07c4c0: 3c013f80 */ lui $at,0x3f80 -/* f07c4c4: 44812000 */ mtc1 $at,$f4 -/* f07c4c8: afa2011c */ sw $v0,0x11c($sp) -/* f07c4cc: 8c4f0018 */ lw $t7,0x18($v0) -/* f07c4d0: e7a40108 */ swc1 $f4,0x108($sp) -/* f07c4d4: 44808000 */ mtc1 $zero,$f16 -/* f07c4d8: afaf0114 */ sw $t7,0x114($sp) -/* f07c4dc: c44600d0 */ lwc1 $f6,0xd0($v0) -/* f07c4e0: 00408025 */ or $s0,$v0,$zero -/* f07c4e4: 00402025 */ or $a0,$v0,$zero -/* f07c4e8: e7a600ec */ swc1 $f6,0xec($sp) -/* f07c4ec: c44800d4 */ lwc1 $f8,0xd4($v0) -/* f07c4f0: e7a800e8 */ swc1 $f8,0xe8($sp) -/* f07c4f4: c44a00c8 */ lwc1 $f10,0xc8($v0) -/* f07c4f8: e7aa00e4 */ swc1 $f10,0xe4($sp) -/* f07c4fc: c44400cc */ lwc1 $f4,0xcc($v0) -/* f07c500: e7b00110 */ swc1 $f16,0x110($sp) -/* f07c504: e7b0010c */ swc1 $f16,0x10c($sp) -/* f07c508: 0fc1ef9c */ jal chopperGetTargetProp -/* f07c50c: e7a400e0 */ swc1 $f4,0xe0($sp) -/* f07c510: afa200dc */ sw $v0,0xdc($sp) -/* f07c514: afa000d4 */ sw $zero,0xd4($sp) -/* f07c518: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07c51c: 24010003 */ addiu $at,$zero,0x3 -/* f07c520: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07c524: 90640000 */ lbu $a0,0x0($v1) -/* f07c528: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07c52c: 24050001 */ addiu $a1,$zero,0x1 -/* f07c530: 0081001a */ div $zero,$a0,$at -/* f07c534: 0000c010 */ mfhi $t8 -/* f07c538: 2f190001 */ sltiu $t9,$t8,0x1 -/* f07c53c: a0790001 */ sb $t9,0x1($v1) -/* f07c540: 8fa80124 */ lw $t0,0x124($sp) -/* f07c544: 8fa90114 */ lw $t1,0x114($sp) -/* f07c548: 510000b2 */ beqzl $t0,.JF0f07c814 -/* f07c54c: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07c550: 0c006a57 */ jal modelGetPartRodata -/* f07c554: 8d240008 */ lw $a0,0x8($t1) -/* f07c558: 8faa00dc */ lw $t2,0xdc($sp) -/* f07c55c: afa200d0 */ sw $v0,0xd0($sp) -/* f07c560: 3c0141a0 */ lui $at,0x41a0 -/* f07c564: 44814000 */ mtc1 $at,$f8 -/* f07c568: c546000c */ lwc1 $f6,0xc($t2) -/* f07c56c: 46083281 */ sub.s $f10,$f6,$f8 -/* f07c570: 0c004b60 */ jal random -/* f07c574: e7aa004c */ swc1 $f10,0x4c($sp) -/* f07c578: 0c004b60 */ jal random -/* f07c57c: afa2003c */ sw $v0,0x3c($sp) -/* f07c580: 44802000 */ mtc1 $zero,$f4 -/* f07c584: 04010005 */ bgez $zero,.JF0f07c59c -/* f07c588: 468021a0 */ cvt.s.w $f6,$f4 -/* f07c58c: 3c014f80 */ lui $at,0x4f80 -/* f07c590: 44814000 */ mtc1 $at,$f8 -/* f07c594: 00000000 */ sll $zero,$zero,0x0 -/* f07c598: 46083180 */ add.s $f6,$f6,$f8 -.JF0f07c59c: -/* f07c59c: 3c0141f0 */ lui $at,0x41f0 -/* f07c5a0: 44815000 */ mtc1 $at,$f10 -/* f07c5a4: 8fab00d0 */ lw $t3,0xd0($sp) -/* f07c5a8: 460a3102 */ mul.s $f4,$f6,$f10 -/* f07c5ac: c5680000 */ lwc1 $f8,0x0($t3) -/* f07c5b0: 46082180 */ add.s $f6,$f4,$f8 -/* f07c5b4: 0c004b60 */ jal random -/* f07c5b8: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07c5bc: 44805000 */ mtc1 $zero,$f10 -/* f07c5c0: 8fa3011c */ lw $v1,0x11c($sp) -/* f07c5c4: 04010005 */ bgez $zero,.JF0f07c5dc -/* f07c5c8: 46805120 */ cvt.s.w $f4,$f10 -/* f07c5cc: 3c014f80 */ lui $at,0x4f80 -/* f07c5d0: 44814000 */ mtc1 $at,$f8 -/* f07c5d4: 00000000 */ sll $zero,$zero,0x0 -/* f07c5d8: 46082100 */ add.s $f4,$f4,$f8 -.JF0f07c5dc: -/* f07c5dc: 3c0141f0 */ lui $at,0x41f0 -/* f07c5e0: 44813000 */ mtc1 $at,$f6 -/* f07c5e4: 8fac00d0 */ lw $t4,0xd0($sp) -/* f07c5e8: 3c014248 */ lui $at,0x4248 -/* f07c5ec: 46062282 */ mul.s $f10,$f4,$f6 -/* f07c5f0: 44812000 */ mtc1 $at,$f4 -/* f07c5f4: c5880004 */ lwc1 $f8,0x4($t4) -/* f07c5f8: 3c01437a */ lui $at,0x437a -/* f07c5fc: 2464001c */ addiu $a0,$v1,0x1c -/* f07c600: 46044181 */ sub.s $f6,$f8,$f4 -/* f07c604: 46065200 */ add.s $f8,$f10,$f6 -/* f07c608: 44815000 */ mtc1 $at,$f10 -/* f07c60c: 24010128 */ addiu $at,$zero,0x128 -/* f07c610: e7a800f4 */ swc1 $f8,0xf4($sp) -/* f07c614: c5840008 */ lwc1 $f4,0x8($t4) -/* f07c618: 460a2180 */ add.s $f6,$f4,$f10 -/* f07c61c: e7a600f8 */ swc1 $f6,0xf8($sp) -/* f07c620: 846d0004 */ lh $t5,0x4($v1) -/* f07c624: 15a1000e */ bne $t5,$at,.JF0f07c660 -/* f07c628: 00000000 */ sll $zero,$zero,0x0 -/* f07c62c: 8c6e0018 */ lw $t6,0x18($v1) -/* f07c630: 3c017f1b */ lui $at,0x7f1b -/* f07c634: c424b310 */ lwc1 $f4,-0x4cf0($at) -/* f07c638: c5ca0014 */ lwc1 $f10,0x14($t6) -/* f07c63c: 460a2003 */ div.s $f0,$f4,$f10 -/* f07c640: c7a400f0 */ lwc1 $f4,0xf0($sp) -/* f07c644: 46002282 */ mul.s $f10,$f4,$f0 -/* f07c648: e7aa00f0 */ swc1 $f10,0xf0($sp) -/* f07c64c: 46004102 */ mul.s $f4,$f8,$f0 -/* f07c650: 00000000 */ sll $zero,$zero,0x0 -/* f07c654: 46003282 */ mul.s $f10,$f6,$f0 -/* f07c658: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07c65c: e7aa00f8 */ swc1 $f10,0xf8($sp) -.JF0f07c660: -/* f07c660: 0c00573d */ jal mtx3ToMtx4 -/* f07c664: 27a50050 */ addiu $a1,$sp,0x50 -/* f07c668: 27a400f0 */ addiu $a0,$sp,0xf0 -/* f07c66c: 0c00599f */ jal mtx4LoadTranslation -/* f07c670: 27a50090 */ addiu $a1,$sp,0x90 -/* f07c674: 27a40050 */ addiu $a0,$sp,0x50 -/* f07c678: 0c005667 */ jal mtx4MultMtx4InPlace -/* f07c67c: 27a50090 */ addiu $a1,$sp,0x90 -/* f07c680: 8fa30120 */ lw $v1,0x120($sp) -/* f07c684: c7a400c0 */ lwc1 $f4,0xc0($sp) -/* f07c688: 8fa200dc */ lw $v0,0xdc($sp) -/* f07c68c: c4680008 */ lwc1 $f8,0x8($v1) -/* f07c690: 46044180 */ add.s $f6,$f8,$f4 -/* f07c694: c7a800c4 */ lwc1 $f8,0xc4($sp) -/* f07c698: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07c69c: c46a000c */ lwc1 $f10,0xc($v1) -/* f07c6a0: 46085100 */ add.s $f4,$f10,$f8 -/* f07c6a4: c7aa00c8 */ lwc1 $f10,0xc8($sp) -/* f07c6a8: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07c6ac: c4660010 */ lwc1 $f6,0x10($v1) -/* f07c6b0: 460a3200 */ add.s $f8,$f6,$f10 -/* f07c6b4: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07c6b8: e7a800f8 */ swc1 $f8,0xf8($sp) -/* f07c6bc: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07c6c0: c44a0010 */ lwc1 $f10,0x10($v0) -/* f07c6c4: c4440008 */ lwc1 $f4,0x8($v0) -/* f07c6c8: 46085381 */ sub.s $f14,$f10,$f8 -/* f07c6cc: 0fc25d3c */ jal atan2f -/* f07c6d0: 46062301 */ sub.s $f12,$f4,$f6 -/* f07c6d4: 44802000 */ mtc1 $zero,$f4 -/* f07c6d8: 46000406 */ mov.s $f16,$f0 -/* f07c6dc: 3c017f1b */ lui $at,0x7f1b -/* f07c6e0: 4604003e */ c.le.s $f0,$f4 -/* f07c6e4: 8faf00dc */ lw $t7,0xdc($sp) -/* f07c6e8: 45000003 */ bc1f .JF0f07c6f8 -/* f07c6ec: 00000000 */ sll $zero,$zero,0x0 -/* f07c6f0: c432b314 */ lwc1 $f18,-0x4cec($at) -/* f07c6f4: 46120400 */ add.s $f16,$f0,$f18 -.JF0f07c6f8: -/* f07c6f8: 3c017f1b */ lui $at,0x7f1b -/* f07c6fc: c432b318 */ lwc1 $f18,-0x4ce8($at) -/* f07c700: 4610903c */ c.lt.s $f18,$f16 -/* f07c704: 00000000 */ sll $zero,$zero,0x0 -/* f07c708: 45020003 */ bc1fl .JF0f07c718 -/* f07c70c: c606007c */ lwc1 $f6,0x7c($s0) -/* f07c710: 46128401 */ sub.s $f16,$f16,$f18 -/* f07c714: c606007c */ lwc1 $f6,0x7c($s0) -.JF0f07c718: -/* f07c718: 3c017f1b */ lui $at,0x7f1b -/* f07c71c: c42ab31c */ lwc1 $f10,-0x4ce4($at) -/* f07c720: 46068401 */ sub.s $f16,$f16,$f6 -/* f07c724: 3c017f1b */ lui $at,0x7f1b -/* f07c728: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07c72c: 4610503c */ c.lt.s $f10,$f16 -/* f07c730: 00000000 */ sll $zero,$zero,0x0 -/* f07c734: 45000002 */ bc1f .JF0f07c740 -/* f07c738: 00000000 */ sll $zero,$zero,0x0 -/* f07c73c: 46128401 */ sub.s $f16,$f16,$f18 -.JF0f07c740: -/* f07c740: c428b320 */ lwc1 $f8,-0x4ce0($at) -/* f07c744: 4608803c */ c.lt.s $f16,$f8 -/* f07c748: 00000000 */ sll $zero,$zero,0x0 -/* f07c74c: 45020003 */ bc1fl .JF0f07c75c -/* f07c750: c5e40008 */ lwc1 $f4,0x8($t7) -/* f07c754: 46128400 */ add.s $f16,$f16,$f18 -/* f07c758: c5e40008 */ lwc1 $f4,0x8($t7) -.JF0f07c75c: -/* f07c75c: c5ea0010 */ lwc1 $f10,0x10($t7) -/* f07c760: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07c764: 46062001 */ sub.s $f0,$f4,$f6 -/* f07c768: e7b00110 */ swc1 $f16,0x110($sp) -/* f07c76c: 46085081 */ sub.s $f2,$f10,$f8 -/* f07c770: 46000102 */ mul.s $f4,$f0,$f0 -/* f07c774: 00000000 */ sll $zero,$zero,0x0 -/* f07c778: 46021182 */ mul.s $f6,$f2,$f2 -/* f07c77c: 0c012838 */ jal sqrtf -/* f07c780: 46062300 */ add.s $f12,$f4,$f6 -/* f07c784: c7aa004c */ lwc1 $f10,0x4c($sp) -/* f07c788: c7a800f4 */ lwc1 $f8,0xf4($sp) -/* f07c78c: 46000386 */ mov.s $f14,$f0 -/* f07c790: 0fc25d3c */ jal atan2f -/* f07c794: 46085301 */ sub.s $f12,$f10,$f8 -/* f07c798: c6040080 */ lwc1 $f4,0x80($s0) -/* f07c79c: 3c017f1b */ lui $at,0x7f1b -/* f07c7a0: c432b328 */ lwc1 $f18,-0x4cd8($at) -/* f07c7a4: 46040181 */ sub.s $f6,$f0,$f4 -/* f07c7a8: 3c017f1b */ lui $at,0x7f1b -/* f07c7ac: c42ab32c */ lwc1 $f10,-0x4cd4($at) -/* f07c7b0: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07c7b4: 46123080 */ add.s $f2,$f6,$f18 -/* f07c7b8: 3c017f1b */ lui $at,0x7f1b -/* f07c7bc: 4602503c */ c.lt.s $f10,$f2 -/* f07c7c0: 00000000 */ sll $zero,$zero,0x0 -/* f07c7c4: 45000002 */ bc1f .JF0f07c7d0 -/* f07c7c8: 00000000 */ sll $zero,$zero,0x0 -/* f07c7cc: 46121081 */ sub.s $f2,$f2,$f18 -.JF0f07c7d0: -/* f07c7d0: c42cb330 */ lwc1 $f12,-0x4cd0($at) -/* f07c7d4: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07c7d8: 3c017f1b */ lui $at,0x7f1b -/* f07c7dc: 460c003c */ c.lt.s $f0,$f12 -/* f07c7e0: 00000000 */ sll $zero,$zero,0x0 -/* f07c7e4: 45000008 */ bc1f .JF0f07c808 -/* f07c7e8: 00000000 */ sll $zero,$zero,0x0 -/* f07c7ec: c428b334 */ lwc1 $f8,-0x4ccc($at) -/* f07c7f0: 3c01800a */ lui $at,0x800a -/* f07c7f4: c424a67c */ lwc1 $f4,-0x5984($at) -/* f07c7f8: 46044182 */ mul.s $f6,$f8,$f4 -/* f07c7fc: 46060280 */ add.s $f10,$f0,$f6 -/* f07c800: 10000014 */ beqz $zero,.JF0f07c854 -/* f07c804: e60a00d8 */ swc1 $f10,0xd8($s0) -.JF0f07c808: -/* f07c808: 10000012 */ beqz $zero,.JF0f07c854 -/* f07c80c: e60c00d8 */ swc1 $f12,0xd8($s0) -/* f07c810: c60000d8 */ lwc1 $f0,0xd8($s0) -.JF0f07c814: -/* f07c814: 44804000 */ mtc1 $zero,$f8 -/* f07c818: 3c013e00 */ lui $at,0x3e00 -/* f07c81c: 44819000 */ mtc1 $at,$f18 -/* f07c820: 4600403c */ c.lt.s $f8,$f0 -/* f07c824: 3c017f1b */ lui $at,0x7f1b -/* f07c828: 45020007 */ bc1fl .JF0f07c848 -/* f07c82c: 44805000 */ mtc1 $zero,$f10 -/* f07c830: c424b338 */ lwc1 $f4,-0x4cc8($at) -/* f07c834: 46040181 */ sub.s $f6,$f0,$f4 -/* f07c838: e60600d8 */ swc1 $f6,0xd8($s0) -/* f07c83c: 10000005 */ beqz $zero,.JF0f07c854 -/* f07c840: e7b20108 */ swc1 $f18,0x108($sp) -/* f07c844: 44805000 */ mtc1 $zero,$f10 -.JF0f07c848: -/* f07c848: 00000000 */ sll $zero,$zero,0x0 -/* f07c84c: e60a00d8 */ swc1 $f10,0xd8($s0) -/* f07c850: e7b20108 */ swc1 $f18,0x108($sp) -.JF0f07c854: -/* f07c854: 3c01800a */ lui $at,0x800a -/* f07c858: c424a67c */ lwc1 $f4,-0x5984($at) -/* f07c85c: c60800d8 */ lwc1 $f8,0xd8($s0) -/* f07c860: c60a00dc */ lwc1 $f10,0xdc($s0) -/* f07c864: c7b20108 */ lwc1 $f18,0x108($sp) -/* f07c868: 46044182 */ mul.s $f6,$f8,$f4 -/* f07c86c: 3c017f1b */ lui $at,0x7f1b -/* f07c870: 44058000 */ mfc1 $a1,$f16 -/* f07c874: 27a400ec */ addiu $a0,$sp,0xec -/* f07c878: 27a600e4 */ addiu $a2,$sp,0xe4 -/* f07c87c: 46065200 */ add.s $f8,$f10,$f6 -/* f07c880: e60800dc */ swc1 $f8,0xdc($s0) -/* f07c884: c424b33c */ lwc1 $f4,-0x4cc4($at) -/* f07c888: 3c017f1b */ lui $at,0x7f1b -/* f07c88c: c42ab340 */ lwc1 $f10,-0x4cc0($at) -/* f07c890: 46122302 */ mul.s $f12,$f4,$f18 -/* f07c894: 3c017f1b */ lui $at,0x7f1b -/* f07c898: c426b344 */ lwc1 $f6,-0x4cbc($at) -/* f07c89c: 46125002 */ mul.s $f0,$f10,$f18 -/* f07c8a0: e7b00110 */ swc1 $f16,0x110($sp) -/* f07c8a4: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07c8a8: 46123382 */ mul.s $f14,$f6,$f18 -/* f07c8ac: 44076000 */ mfc1 $a3,$f12 -/* f07c8b0: e7ac0034 */ swc1 $f12,0x34($sp) -/* f07c8b4: e7a00010 */ swc1 $f0,0x10($sp) -/* f07c8b8: e7a00030 */ swc1 $f0,0x30($sp) -/* f07c8bc: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07c8c0: 0fc1ba89 */ jal applySpeed -/* f07c8c4: e7ae002c */ swc1 $f14,0x2c($sp) -/* f07c8c8: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07c8cc: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07c8d0: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07c8d4: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07c8d8: 46104032 */ c.eq.s $f8,$f16 -/* f07c8dc: 44051000 */ mfc1 $a1,$f2 -/* f07c8e0: c7ac0034 */ lwc1 $f12,0x34($sp) -/* f07c8e4: c7ae002c */ lwc1 $f14,0x2c($sp) -/* f07c8e8: 45000011 */ bc1f .JF0f07c930 -/* f07c8ec: 27a400e8 */ addiu $a0,$sp,0xe8 -/* f07c8f0: c7b000e4 */ lwc1 $f16,0xe4($sp) -/* f07c8f4: 3c017f1b */ lui $at,0x7f1b -/* f07c8f8: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07c8fc: 4600803e */ c.le.s $f16,$f0 -/* f07c900: 00000000 */ sll $zero,$zero,0x0 -/* f07c904: 4502000b */ bc1fl .JF0f07c934 -/* f07c908: 44076000 */ mfc1 $a3,$f12 -/* f07c90c: c424b348 */ lwc1 $f4,-0x4cb8($at) -/* f07c910: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07c914: 4610303e */ c.le.s $f6,$f16 -/* f07c918: 00000000 */ sll $zero,$zero,0x0 -/* f07c91c: 45020005 */ bc1fl .JF0f07c934 -/* f07c920: 44076000 */ mfc1 $a3,$f12 -/* f07c924: 44808000 */ mtc1 $zero,$f16 -/* f07c928: 00000000 */ sll $zero,$zero,0x0 -/* f07c92c: e7b000e4 */ swc1 $f16,0xe4($sp) -.JF0f07c930: -/* f07c930: 44076000 */ mfc1 $a3,$f12 -.JF0f07c934: -/* f07c934: 27a600e0 */ addiu $a2,$sp,0xe0 -/* f07c938: e7a00010 */ swc1 $f0,0x10($sp) -/* f07c93c: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07c940: e7a00030 */ swc1 $f0,0x30($sp) -/* f07c944: 0fc1ba89 */ jal applySpeed -/* f07c948: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07c94c: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07c950: c7a800e8 */ lwc1 $f8,0xe8($sp) -/* f07c954: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07c958: 46024032 */ c.eq.s $f8,$f2 -/* f07c95c: c7a200e0 */ lwc1 $f2,0xe0($sp) -/* f07c960: 45020010 */ bc1fl .JF0f07c9a4 -/* f07c964: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07c968: 4600103e */ c.le.s $f2,$f0 -/* f07c96c: 3c017f1b */ lui $at,0x7f1b -/* f07c970: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07c974: 4502000b */ bc1fl .JF0f07c9a4 -/* f07c978: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07c97c: c424b34c */ lwc1 $f4,-0x4cb4($at) -/* f07c980: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07c984: 4602303e */ c.le.s $f6,$f2 -/* f07c988: 00000000 */ sll $zero,$zero,0x0 -/* f07c98c: 45020005 */ bc1fl .JF0f07c9a4 -/* f07c990: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07c994: 44801000 */ mtc1 $zero,$f2 -/* f07c998: 00000000 */ sll $zero,$zero,0x0 -/* f07c99c: e7a200e0 */ swc1 $f2,0xe0($sp) -/* f07c9a0: c7a800ec */ lwc1 $f8,0xec($sp) -.JF0f07c9a4: -/* f07c9a4: 8e1800e0 */ lw $t8,0xe0($s0) -/* f07c9a8: e60800d0 */ swc1 $f8,0xd0($s0) -/* f07c9ac: c7a400e8 */ lwc1 $f4,0xe8($sp) -/* f07c9b0: e60400d4 */ swc1 $f4,0xd4($s0) -/* f07c9b4: c7aa00e4 */ lwc1 $f10,0xe4($sp) -/* f07c9b8: e60a00c8 */ swc1 $f10,0xc8($s0) -/* f07c9bc: c7a600e0 */ lwc1 $f6,0xe0($sp) -/* f07c9c0: e60600cc */ swc1 $f6,0xcc($s0) -/* f07c9c4: 93190000 */ lbu $t9,0x0($t8) -/* f07c9c8: 07210004 */ bgez $t9,.JF0f07c9dc -/* f07c9cc: 33280001 */ andi $t0,$t9,0x1 -/* f07c9d0: 11000002 */ beqz $t0,.JF0f07c9dc -/* f07c9d4: 00000000 */ sll $zero,$zero,0x0 -/* f07c9d8: 2508fffe */ addiu $t0,$t0,-2 -.JF0f07c9dc: -/* f07c9dc: 55000003 */ bnezl $t0,.JF0f07c9ec -/* f07c9e0: 8fa90114 */ lw $t1,0x114($sp) -/* f07c9e4: afa00124 */ sw $zero,0x124($sp) -/* f07c9e8: 8fa90114 */ lw $t1,0x114($sp) -.JF0f07c9ec: -/* f07c9ec: 24050003 */ addiu $a1,$zero,0x3 -/* f07c9f0: 0c006a2f */ jal modelGetPart -/* f07c9f4: 8d240008 */ lw $a0,0x8($t1) -/* f07c9f8: 10400004 */ beqz $v0,.JF0f07ca0c -/* f07c9fc: 00402825 */ or $a1,$v0,$zero -/* f07ca00: 0c006a6f */ jal modelGetNodeRwData -/* f07ca04: 8fa40114 */ lw $a0,0x114($sp) -/* f07ca08: afa200d4 */ sw $v0,0xd4($sp) -.JF0f07ca0c: -/* f07ca0c: 8faa0124 */ lw $t2,0x124($sp) -/* f07ca10: 8faf00d4 */ lw $t7,0xd4($sp) -/* f07ca14: 1140002a */ beqz $t2,.JF0f07cac0 -/* f07ca18: 00000000 */ sll $zero,$zero,0x0 -/* f07ca1c: c60800d4 */ lwc1 $f8,0xd4($s0) -/* f07ca20: c6040080 */ lwc1 $f4,0x80($s0) -/* f07ca24: 46044280 */ add.s $f10,$f8,$f4 -/* f07ca28: e7aa0044 */ swc1 $f10,0x44($sp) -/* f07ca2c: c608007c */ lwc1 $f8,0x7c($s0) -/* f07ca30: c60600d0 */ lwc1 $f6,0xd0($s0) -/* f07ca34: 46083300 */ add.s $f12,$f6,$f8 -/* f07ca38: 0c0068df */ jal sinf -/* f07ca3c: e7ac0040 */ swc1 $f12,0x40($sp) -/* f07ca40: e7a00038 */ swc1 $f0,0x38($sp) -/* f07ca44: 0c0068dc */ jal cosf -/* f07ca48: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07ca4c: c7a40038 */ lwc1 $f4,0x38($sp) -/* f07ca50: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07ca54: 46040282 */ mul.s $f10,$f0,$f4 -/* f07ca58: 0c0068df */ jal sinf -/* f07ca5c: e7aa00fc */ swc1 $f10,0xfc($sp) -/* f07ca60: e7a00100 */ swc1 $f0,0x100($sp) -/* f07ca64: 0c0068dc */ jal cosf -/* f07ca68: c7ac0040 */ lwc1 $f12,0x40($sp) -/* f07ca6c: e7a00038 */ swc1 $f0,0x38($sp) -/* f07ca70: 0c0068dc */ jal cosf -/* f07ca74: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07ca78: c7a60038 */ lwc1 $f6,0x38($sp) -/* f07ca7c: 8fac00dc */ lw $t4,0xdc($sp) -/* f07ca80: 240b0059 */ addiu $t3,$zero,0x59 -/* f07ca84: 46060202 */ mul.s $f8,$f0,$f6 -/* f07ca88: 8fa40120 */ lw $a0,0x120($sp) -/* f07ca8c: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f07ca90: 27a700fc */ addiu $a3,$sp,0xfc -/* f07ca94: e7a80104 */ swc1 $f8,0x104($sp) -/* f07ca98: 8e0500e0 */ lw $a1,0xe0($s0) -/* f07ca9c: afab0010 */ sw $t3,0x10($sp) -/* f07caa0: 0fc24818 */ jal projectileCreate -/* f07caa4: afac0014 */ sw $t4,0x14($sp) -/* f07caa8: 8fad00d4 */ lw $t5,0xd4($sp) -/* f07caac: 240e0001 */ addiu $t6,$zero,0x1 -/* f07cab0: 51a00007 */ beqzl $t5,.JF0f07cad0 -/* f07cab4: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07cab8: 10000004 */ beqz $zero,.JF0f07cacc -/* f07cabc: a5ae0000 */ sh $t6,0x0($t5) -.JF0f07cac0: -/* f07cac0: 51e00003 */ beqzl $t7,.JF0f07cad0 -/* f07cac4: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07cac8: a5e00000 */ sh $zero,0x0($t7) -.JF0f07cacc: -/* f07cacc: 8e0300e0 */ lw $v1,0xe0($s0) -.JF0f07cad0: -/* f07cad0: 90780000 */ lbu $t8,0x0($v1) -/* f07cad4: 27190001 */ addiu $t9,$t8,0x1 -/* f07cad8: a0790000 */ sb $t9,0x0($v1) -/* f07cadc: 8fbf0024 */ lw $ra,0x24($sp) -/* f07cae0: 8fb00020 */ lw $s0,0x20($sp) -/* f07cae4: 27bd0120 */ addiu $sp,$sp,0x120 -/* f07cae8: 03e00008 */ jr $ra -/* f07caec: 00000000 */ sll $zero,$zero,0x0 -); -#elif PAL -GLOBAL_ASM( -glabel func0f07b3f0 -.late_rodata -glabel var7f1aa5d4 -.word 0x3dcccccd -glabel var7f1aa5d8 -.word 0x40c907a9 -glabel var7f1aa5dc -.word 0x40c907a9 -glabel var7f1aa5e0 -.word 0x40490fdb -glabel var7f1aa5e4 -.word 0xc0490fdb -glabel var7f1aa5e8 -.word 0x40c907a9 -glabel var7f1aa5ec -.word 0x40c907a9 -glabel var7f1aa5f0 -.word 0x40490fdb -glabel var7f1aa5f4 -.word 0x3eb2b8c2 -glabel var7f1aa5f8 -.word 0x3c8efa35 -glabel var7f1aa5fc -.word 0x3c8efa35 -glabel var7f1aa600 -.word 0x3b36fb5e -glabel var7f1aa604 -.word 0x3bb6fb5e -glabel var7f1aa608 -.word 0x3e2b8ba9 -glabel var7f1aa60c -.word 0xbbb6fb5e -glabel var7f1aa610 -.word 0xbbb6fb5e -.text -/* f07b3f0: 27bdfee0 */ addiu $sp,$sp,-288 -/* f07b3f4: afbf0024 */ sw $ra,0x24($sp) -/* f07b3f8: afb00020 */ sw $s0,0x20($sp) -/* f07b3fc: afa40120 */ sw $a0,0x120($sp) -/* f07b400: afa50124 */ sw $a1,0x124($sp) -/* f07b404: 8c820004 */ lw $v0,0x4($a0) -/* f07b408: 3c013f80 */ lui $at,0x3f80 -/* f07b40c: 44812000 */ mtc1 $at,$f4 -/* f07b410: afa2011c */ sw $v0,0x11c($sp) -/* f07b414: 8c4f0018 */ lw $t7,0x18($v0) -/* f07b418: e7a40108 */ swc1 $f4,0x108($sp) -/* f07b41c: 44808000 */ mtc1 $zero,$f16 -/* f07b420: afaf0114 */ sw $t7,0x114($sp) -/* f07b424: c44600d0 */ lwc1 $f6,0xd0($v0) -/* f07b428: 00408025 */ or $s0,$v0,$zero -/* f07b42c: 00402025 */ or $a0,$v0,$zero -/* f07b430: e7a600ec */ swc1 $f6,0xec($sp) -/* f07b434: c44800d4 */ lwc1 $f8,0xd4($v0) -/* f07b438: e7a800e8 */ swc1 $f8,0xe8($sp) -/* f07b43c: c44a00c8 */ lwc1 $f10,0xc8($v0) -/* f07b440: e7aa00e4 */ swc1 $f10,0xe4($sp) -/* f07b444: c44400cc */ lwc1 $f4,0xcc($v0) -/* f07b448: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b44c: e7b0010c */ swc1 $f16,0x10c($sp) -/* f07b450: 0fc1eb6e */ jal chopperGetTargetProp -/* f07b454: e7a400e0 */ swc1 $f4,0xe0($sp) -/* f07b458: afa200dc */ sw $v0,0xdc($sp) -/* f07b45c: afa000d4 */ sw $zero,0xd4($sp) -/* f07b460: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07b464: 24010003 */ addiu $at,$zero,0x3 -/* f07b468: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b46c: 90640000 */ lbu $a0,0x0($v1) -/* f07b470: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b474: 24050001 */ addiu $a1,$zero,0x1 -/* f07b478: 0081001a */ div $zero,$a0,$at -/* f07b47c: 0000c010 */ mfhi $t8 -/* f07b480: 2f190001 */ sltiu $t9,$t8,0x1 -/* f07b484: a0790001 */ sb $t9,0x1($v1) -/* f07b488: 8fa80124 */ lw $t0,0x124($sp) -/* f07b48c: 8fa90114 */ lw $t1,0x114($sp) -/* f07b490: 510000b2 */ beqzl $t0,.L0f07b75c -/* f07b494: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07b498: 0c006a6f */ jal modelGetPartRodata -/* f07b49c: 8d240008 */ lw $a0,0x8($t1) -/* f07b4a0: 8faa00dc */ lw $t2,0xdc($sp) -/* f07b4a4: afa200d0 */ sw $v0,0xd0($sp) -/* f07b4a8: 3c0141a0 */ lui $at,0x41a0 -/* f07b4ac: 44814000 */ mtc1 $at,$f8 -/* f07b4b0: c546000c */ lwc1 $f6,0xc($t2) -/* f07b4b4: 46083281 */ sub.s $f10,$f6,$f8 -/* f07b4b8: 0c004b70 */ jal random -/* f07b4bc: e7aa004c */ swc1 $f10,0x4c($sp) -/* f07b4c0: 0c004b70 */ jal random -/* f07b4c4: afa2003c */ sw $v0,0x3c($sp) -/* f07b4c8: 44802000 */ mtc1 $zero,$f4 -/* f07b4cc: 04010005 */ bgez $zero,.L0f07b4e4 -/* f07b4d0: 468021a0 */ cvt.s.w $f6,$f4 -/* f07b4d4: 3c014f80 */ lui $at,0x4f80 -/* f07b4d8: 44814000 */ mtc1 $at,$f8 -/* f07b4dc: 00000000 */ nop -/* f07b4e0: 46083180 */ add.s $f6,$f6,$f8 -.L0f07b4e4: -/* f07b4e4: 3c0141f0 */ lui $at,0x41f0 -/* f07b4e8: 44815000 */ mtc1 $at,$f10 -/* f07b4ec: 8fab00d0 */ lw $t3,0xd0($sp) -/* f07b4f0: 460a3102 */ mul.s $f4,$f6,$f10 -/* f07b4f4: c5680000 */ lwc1 $f8,0x0($t3) -/* f07b4f8: 46082180 */ add.s $f6,$f4,$f8 -/* f07b4fc: 0c004b70 */ jal random -/* f07b500: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07b504: 44805000 */ mtc1 $zero,$f10 -/* f07b508: 8fa3011c */ lw $v1,0x11c($sp) -/* f07b50c: 04010005 */ bgez $zero,.L0f07b524 -/* f07b510: 46805120 */ cvt.s.w $f4,$f10 -/* f07b514: 3c014f80 */ lui $at,0x4f80 -/* f07b518: 44814000 */ mtc1 $at,$f8 -/* f07b51c: 00000000 */ nop -/* f07b520: 46082100 */ add.s $f4,$f4,$f8 -.L0f07b524: -/* f07b524: 3c0141f0 */ lui $at,0x41f0 -/* f07b528: 44813000 */ mtc1 $at,$f6 -/* f07b52c: 8fac00d0 */ lw $t4,0xd0($sp) -/* f07b530: 3c014248 */ lui $at,0x4248 -/* f07b534: 46062282 */ mul.s $f10,$f4,$f6 -/* f07b538: 44812000 */ mtc1 $at,$f4 -/* f07b53c: c5880004 */ lwc1 $f8,0x4($t4) -/* f07b540: 3c01437a */ lui $at,0x437a -/* f07b544: 2464001c */ addiu $a0,$v1,0x1c -/* f07b548: 46044181 */ sub.s $f6,$f8,$f4 -/* f07b54c: 46065200 */ add.s $f8,$f10,$f6 -/* f07b550: 44815000 */ mtc1 $at,$f10 -/* f07b554: 24010128 */ addiu $at,$zero,0x128 -/* f07b558: e7a800f4 */ swc1 $f8,0xf4($sp) -/* f07b55c: c5840008 */ lwc1 $f4,0x8($t4) -/* f07b560: 460a2180 */ add.s $f6,$f4,$f10 -/* f07b564: e7a600f8 */ swc1 $f6,0xf8($sp) -/* f07b568: 846d0004 */ lh $t5,0x4($v1) -/* f07b56c: 15a1000e */ bne $t5,$at,.L0f07b5a8 -/* f07b570: 00000000 */ nop -/* f07b574: 8c6e0018 */ lw $t6,0x18($v1) -/* f07b578: 3c017f1b */ lui $at,%hi(var7f1aa5d4) -/* f07b57c: c424a5d4 */ lwc1 $f4,%lo(var7f1aa5d4)($at) -/* f07b580: c5ca0014 */ lwc1 $f10,0x14($t6) -/* f07b584: 460a2003 */ div.s $f0,$f4,$f10 -/* f07b588: c7a400f0 */ lwc1 $f4,0xf0($sp) -/* f07b58c: 46002282 */ mul.s $f10,$f4,$f0 -/* f07b590: e7aa00f0 */ swc1 $f10,0xf0($sp) -/* f07b594: 46004102 */ mul.s $f4,$f8,$f0 -/* f07b598: 00000000 */ nop -/* f07b59c: 46003282 */ mul.s $f10,$f6,$f0 -/* f07b5a0: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07b5a4: e7aa00f8 */ swc1 $f10,0xf8($sp) -.L0f07b5a8: -/* f07b5a8: 0c005755 */ jal mtx3ToMtx4 -/* f07b5ac: 27a50050 */ addiu $a1,$sp,0x50 -/* f07b5b0: 27a400f0 */ addiu $a0,$sp,0xf0 -/* f07b5b4: 0c0059b7 */ jal mtx4LoadTranslation -/* f07b5b8: 27a50090 */ addiu $a1,$sp,0x90 -/* f07b5bc: 27a40050 */ addiu $a0,$sp,0x50 -/* f07b5c0: 0c00567f */ jal mtx4MultMtx4InPlace -/* f07b5c4: 27a50090 */ addiu $a1,$sp,0x90 -/* f07b5c8: 8fa30120 */ lw $v1,0x120($sp) -/* f07b5cc: c7a400c0 */ lwc1 $f4,0xc0($sp) -/* f07b5d0: 8fa200dc */ lw $v0,0xdc($sp) -/* f07b5d4: c4680008 */ lwc1 $f8,0x8($v1) -/* f07b5d8: 46044180 */ add.s $f6,$f8,$f4 -/* f07b5dc: c7a800c4 */ lwc1 $f8,0xc4($sp) -/* f07b5e0: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07b5e4: c46a000c */ lwc1 $f10,0xc($v1) -/* f07b5e8: 46085100 */ add.s $f4,$f10,$f8 -/* f07b5ec: c7aa00c8 */ lwc1 $f10,0xc8($sp) -/* f07b5f0: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07b5f4: c4660010 */ lwc1 $f6,0x10($v1) -/* f07b5f8: 460a3200 */ add.s $f8,$f6,$f10 -/* f07b5fc: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07b600: e7a800f8 */ swc1 $f8,0xf8($sp) -/* f07b604: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07b608: c44a0010 */ lwc1 $f10,0x10($v0) -/* f07b60c: c4440008 */ lwc1 $f4,0x8($v0) -/* f07b610: 46085381 */ sub.s $f14,$f10,$f8 -/* f07b614: 0fc259d4 */ jal atan2f -/* f07b618: 46062301 */ sub.s $f12,$f4,$f6 -/* f07b61c: 44802000 */ mtc1 $zero,$f4 -/* f07b620: 46000406 */ mov.s $f16,$f0 -/* f07b624: 3c017f1b */ lui $at,%hi(var7f1aa5d8) -/* f07b628: 4604003e */ c.le.s $f0,$f4 -/* f07b62c: 8faf00dc */ lw $t7,0xdc($sp) -/* f07b630: 45000003 */ bc1f .L0f07b640 -/* f07b634: 00000000 */ nop -/* f07b638: c432a5d8 */ lwc1 $f18,%lo(var7f1aa5d8)($at) -/* f07b63c: 46120400 */ add.s $f16,$f0,$f18 -.L0f07b640: -/* f07b640: 3c017f1b */ lui $at,%hi(var7f1aa5dc) -/* f07b644: c432a5dc */ lwc1 $f18,%lo(var7f1aa5dc)($at) -/* f07b648: 4610903c */ c.lt.s $f18,$f16 -/* f07b64c: 00000000 */ nop -/* f07b650: 45020003 */ bc1fl .L0f07b660 -/* f07b654: c606007c */ lwc1 $f6,0x7c($s0) -/* f07b658: 46128401 */ sub.s $f16,$f16,$f18 -/* f07b65c: c606007c */ lwc1 $f6,0x7c($s0) -.L0f07b660: -/* f07b660: 3c017f1b */ lui $at,%hi(var7f1aa5e0) -/* f07b664: c42aa5e0 */ lwc1 $f10,%lo(var7f1aa5e0)($at) -/* f07b668: 46068401 */ sub.s $f16,$f16,$f6 -/* f07b66c: 3c017f1b */ lui $at,%hi(var7f1aa5e4) -/* f07b670: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07b674: 4610503c */ c.lt.s $f10,$f16 -/* f07b678: 00000000 */ nop -/* f07b67c: 45000002 */ bc1f .L0f07b688 -/* f07b680: 00000000 */ nop -/* f07b684: 46128401 */ sub.s $f16,$f16,$f18 -.L0f07b688: -/* f07b688: c428a5e4 */ lwc1 $f8,%lo(var7f1aa5e4)($at) -/* f07b68c: 4608803c */ c.lt.s $f16,$f8 -/* f07b690: 00000000 */ nop -/* f07b694: 45020003 */ bc1fl .L0f07b6a4 -/* f07b698: c5e40008 */ lwc1 $f4,0x8($t7) -/* f07b69c: 46128400 */ add.s $f16,$f16,$f18 -/* f07b6a0: c5e40008 */ lwc1 $f4,0x8($t7) -.L0f07b6a4: -/* f07b6a4: c5ea0010 */ lwc1 $f10,0x10($t7) -/* f07b6a8: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07b6ac: 46062001 */ sub.s $f0,$f4,$f6 -/* f07b6b0: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b6b4: 46085081 */ sub.s $f2,$f10,$f8 -/* f07b6b8: 46000102 */ mul.s $f4,$f0,$f0 -/* f07b6bc: 00000000 */ nop -/* f07b6c0: 46021182 */ mul.s $f6,$f2,$f2 -/* f07b6c4: 0c012974 */ jal sqrtf -/* f07b6c8: 46062300 */ add.s $f12,$f4,$f6 -/* f07b6cc: c7aa004c */ lwc1 $f10,0x4c($sp) -/* f07b6d0: c7a800f4 */ lwc1 $f8,0xf4($sp) -/* f07b6d4: 46000386 */ mov.s $f14,$f0 -/* f07b6d8: 0fc259d4 */ jal atan2f -/* f07b6dc: 46085301 */ sub.s $f12,$f10,$f8 -/* f07b6e0: c6040080 */ lwc1 $f4,0x80($s0) -/* f07b6e4: 3c017f1b */ lui $at,%hi(var7f1aa5ec) -/* f07b6e8: c432a5ec */ lwc1 $f18,%lo(var7f1aa5ec)($at) -/* f07b6ec: 46040181 */ sub.s $f6,$f0,$f4 -/* f07b6f0: 3c017f1b */ lui $at,%hi(var7f1aa5f0) -/* f07b6f4: c42aa5f0 */ lwc1 $f10,%lo(var7f1aa5f0)($at) -/* f07b6f8: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b6fc: 46123080 */ add.s $f2,$f6,$f18 -/* f07b700: 3c017f1b */ lui $at,%hi(var7f1aa5f4) -/* f07b704: 4602503c */ c.lt.s $f10,$f2 -/* f07b708: 00000000 */ nop -/* f07b70c: 45000002 */ bc1f .L0f07b718 -/* f07b710: 00000000 */ nop -/* f07b714: 46121081 */ sub.s $f2,$f2,$f18 -.L0f07b718: -/* f07b718: c42ca5f4 */ lwc1 $f12,%lo(var7f1aa5f4)($at) -/* f07b71c: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07b720: 3c017f1b */ lui $at,%hi(var7f1aa5f8) -/* f07b724: 460c003c */ c.lt.s $f0,$f12 -/* f07b728: 00000000 */ nop -/* f07b72c: 45000008 */ bc1f .L0f07b750 -/* f07b730: 00000000 */ nop -/* f07b734: c428a5f8 */ lwc1 $f8,%lo(var7f1aa5f8)($at) -/* f07b738: 3c01800a */ lui $at,%hi(g_Vars+0x4c) -/* f07b73c: c424a004 */ lwc1 $f4,%lo(g_Vars+0x4c)($at) -/* f07b740: 46044182 */ mul.s $f6,$f8,$f4 -/* f07b744: 46060280 */ add.s $f10,$f0,$f6 -/* f07b748: 10000014 */ b .L0f07b79c -/* f07b74c: e60a00d8 */ swc1 $f10,0xd8($s0) -.L0f07b750: -/* f07b750: 10000012 */ b .L0f07b79c -/* f07b754: e60c00d8 */ swc1 $f12,0xd8($s0) -/* f07b758: c60000d8 */ lwc1 $f0,0xd8($s0) -.L0f07b75c: -/* f07b75c: 44804000 */ mtc1 $zero,$f8 -/* f07b760: 3c013e00 */ lui $at,0x3e00 -/* f07b764: 44819000 */ mtc1 $at,$f18 -/* f07b768: 4600403c */ c.lt.s $f8,$f0 -/* f07b76c: 3c017f1b */ lui $at,%hi(var7f1aa5fc) -/* f07b770: 45020007 */ bc1fl .L0f07b790 -/* f07b774: 44805000 */ mtc1 $zero,$f10 -/* f07b778: c424a5fc */ lwc1 $f4,%lo(var7f1aa5fc)($at) -/* f07b77c: 46040181 */ sub.s $f6,$f0,$f4 -/* f07b780: e60600d8 */ swc1 $f6,0xd8($s0) -/* f07b784: 10000005 */ b .L0f07b79c -/* f07b788: e7b20108 */ swc1 $f18,0x108($sp) -/* f07b78c: 44805000 */ mtc1 $zero,$f10 -.L0f07b790: -/* f07b790: 00000000 */ nop -/* f07b794: e60a00d8 */ swc1 $f10,0xd8($s0) -/* f07b798: e7b20108 */ swc1 $f18,0x108($sp) -.L0f07b79c: -/* f07b79c: 3c01800a */ lui $at,%hi(g_Vars+0x4c) -/* f07b7a0: c424a004 */ lwc1 $f4,%lo(g_Vars+0x4c)($at) -/* f07b7a4: c60800d8 */ lwc1 $f8,0xd8($s0) -/* f07b7a8: c60a00dc */ lwc1 $f10,0xdc($s0) -/* f07b7ac: c7b20108 */ lwc1 $f18,0x108($sp) -/* f07b7b0: 46044182 */ mul.s $f6,$f8,$f4 -/* f07b7b4: 3c017f1b */ lui $at,%hi(var7f1aa600) -/* f07b7b8: 44058000 */ mfc1 $a1,$f16 -/* f07b7bc: 27a400ec */ addiu $a0,$sp,0xec -/* f07b7c0: 27a600e4 */ addiu $a2,$sp,0xe4 -/* f07b7c4: 46065200 */ add.s $f8,$f10,$f6 -/* f07b7c8: e60800dc */ swc1 $f8,0xdc($s0) -/* f07b7cc: c424a600 */ lwc1 $f4,%lo(var7f1aa600)($at) -/* f07b7d0: 3c017f1b */ lui $at,%hi(var7f1aa604) -/* f07b7d4: c42aa604 */ lwc1 $f10,%lo(var7f1aa604)($at) -/* f07b7d8: 46122302 */ mul.s $f12,$f4,$f18 -/* f07b7dc: 3c017f1b */ lui $at,%hi(var7f1aa608) -/* f07b7e0: c426a608 */ lwc1 $f6,%lo(var7f1aa608)($at) -/* f07b7e4: 46125002 */ mul.s $f0,$f10,$f18 -/* f07b7e8: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b7ec: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07b7f0: 46123382 */ mul.s $f14,$f6,$f18 -/* f07b7f4: 44076000 */ mfc1 $a3,$f12 -/* f07b7f8: e7ac0034 */ swc1 $f12,0x34($sp) -/* f07b7fc: e7a00010 */ swc1 $f0,0x10($sp) -/* f07b800: e7a00030 */ swc1 $f0,0x30($sp) -/* f07b804: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07b808: 0fc1b643 */ jal applySpeed -/* f07b80c: e7ae002c */ swc1 $f14,0x2c($sp) -/* f07b810: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b814: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b818: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b81c: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07b820: 46104032 */ c.eq.s $f8,$f16 -/* f07b824: 44051000 */ mfc1 $a1,$f2 -/* f07b828: c7ac0034 */ lwc1 $f12,0x34($sp) -/* f07b82c: c7ae002c */ lwc1 $f14,0x2c($sp) -/* f07b830: 45000011 */ bc1f .L0f07b878 -/* f07b834: 27a400e8 */ addiu $a0,$sp,0xe8 -/* f07b838: c7b000e4 */ lwc1 $f16,0xe4($sp) -/* f07b83c: 3c017f1b */ lui $at,%hi(var7f1aa60c) -/* f07b840: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07b844: 4600803e */ c.le.s $f16,$f0 -/* f07b848: 00000000 */ nop -/* f07b84c: 4502000b */ bc1fl .L0f07b87c -/* f07b850: 44076000 */ mfc1 $a3,$f12 -/* f07b854: c424a60c */ lwc1 $f4,%lo(var7f1aa60c)($at) -/* f07b858: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07b85c: 4610303e */ c.le.s $f6,$f16 -/* f07b860: 00000000 */ nop -/* f07b864: 45020005 */ bc1fl .L0f07b87c -/* f07b868: 44076000 */ mfc1 $a3,$f12 -/* f07b86c: 44808000 */ mtc1 $zero,$f16 -/* f07b870: 00000000 */ nop -/* f07b874: e7b000e4 */ swc1 $f16,0xe4($sp) -.L0f07b878: -/* f07b878: 44076000 */ mfc1 $a3,$f12 -.L0f07b87c: -/* f07b87c: 27a600e0 */ addiu $a2,$sp,0xe0 -/* f07b880: e7a00010 */ swc1 $f0,0x10($sp) -/* f07b884: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07b888: e7a00030 */ swc1 $f0,0x30($sp) -/* f07b88c: 0fc1b643 */ jal applySpeed -/* f07b890: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07b894: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b898: c7a800e8 */ lwc1 $f8,0xe8($sp) -/* f07b89c: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07b8a0: 46024032 */ c.eq.s $f8,$f2 -/* f07b8a4: c7a200e0 */ lwc1 $f2,0xe0($sp) -/* f07b8a8: 45020010 */ bc1fl .L0f07b8ec -/* f07b8ac: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8b0: 4600103e */ c.le.s $f2,$f0 -/* f07b8b4: 3c017f1b */ lui $at,%hi(var7f1aa610) -/* f07b8b8: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07b8bc: 4502000b */ bc1fl .L0f07b8ec -/* f07b8c0: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8c4: c424a610 */ lwc1 $f4,%lo(var7f1aa610)($at) -/* f07b8c8: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07b8cc: 4602303e */ c.le.s $f6,$f2 -/* f07b8d0: 00000000 */ nop -/* f07b8d4: 45020005 */ bc1fl .L0f07b8ec -/* f07b8d8: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8dc: 44801000 */ mtc1 $zero,$f2 -/* f07b8e0: 00000000 */ nop -/* f07b8e4: e7a200e0 */ swc1 $f2,0xe0($sp) -/* f07b8e8: c7a800ec */ lwc1 $f8,0xec($sp) -.L0f07b8ec: -/* f07b8ec: 8e1800e0 */ lw $t8,0xe0($s0) -/* f07b8f0: e60800d0 */ swc1 $f8,0xd0($s0) -/* f07b8f4: c7a400e8 */ lwc1 $f4,0xe8($sp) -/* f07b8f8: e60400d4 */ swc1 $f4,0xd4($s0) -/* f07b8fc: c7aa00e4 */ lwc1 $f10,0xe4($sp) -/* f07b900: e60a00c8 */ swc1 $f10,0xc8($s0) -/* f07b904: c7a600e0 */ lwc1 $f6,0xe0($sp) -/* f07b908: e60600cc */ swc1 $f6,0xcc($s0) -/* f07b90c: 93190000 */ lbu $t9,0x0($t8) -/* f07b910: 07210004 */ bgez $t9,.L0f07b924 -/* f07b914: 33280001 */ andi $t0,$t9,0x1 -/* f07b918: 11000002 */ beqz $t0,.L0f07b924 -/* f07b91c: 00000000 */ nop -/* f07b920: 2508fffe */ addiu $t0,$t0,-2 -.L0f07b924: -/* f07b924: 55000003 */ bnezl $t0,.L0f07b934 -/* f07b928: 8fa90114 */ lw $t1,0x114($sp) -/* f07b92c: afa00124 */ sw $zero,0x124($sp) -/* f07b930: 8fa90114 */ lw $t1,0x114($sp) -.L0f07b934: -/* f07b934: 24050003 */ addiu $a1,$zero,0x3 -/* f07b938: 0c006a47 */ jal modelGetPart -/* f07b93c: 8d240008 */ lw $a0,0x8($t1) -/* f07b940: 10400004 */ beqz $v0,.L0f07b954 -/* f07b944: 00402825 */ or $a1,$v0,$zero -/* f07b948: 0c006a87 */ jal modelGetNodeRwData -/* f07b94c: 8fa40114 */ lw $a0,0x114($sp) -/* f07b950: afa200d4 */ sw $v0,0xd4($sp) -.L0f07b954: -/* f07b954: 8faa0124 */ lw $t2,0x124($sp) -/* f07b958: 8faf00d4 */ lw $t7,0xd4($sp) -/* f07b95c: 1140002a */ beqz $t2,.L0f07ba08 -/* f07b960: 00000000 */ nop -/* f07b964: c60800d4 */ lwc1 $f8,0xd4($s0) -/* f07b968: c6040080 */ lwc1 $f4,0x80($s0) -/* f07b96c: 46044280 */ add.s $f10,$f8,$f4 -/* f07b970: e7aa0044 */ swc1 $f10,0x44($sp) -/* f07b974: c608007c */ lwc1 $f8,0x7c($s0) -/* f07b978: c60600d0 */ lwc1 $f6,0xd0($s0) -/* f07b97c: 46083300 */ add.s $f12,$f6,$f8 -/* f07b980: 0c0068f7 */ jal sinf -/* f07b984: e7ac0040 */ swc1 $f12,0x40($sp) -/* f07b988: e7a00038 */ swc1 $f0,0x38($sp) -/* f07b98c: 0c0068f4 */ jal cosf -/* f07b990: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b994: c7a40038 */ lwc1 $f4,0x38($sp) -/* f07b998: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b99c: 46040282 */ mul.s $f10,$f0,$f4 -/* f07b9a0: 0c0068f7 */ jal sinf -/* f07b9a4: e7aa00fc */ swc1 $f10,0xfc($sp) -/* f07b9a8: e7a00100 */ swc1 $f0,0x100($sp) -/* f07b9ac: 0c0068f4 */ jal cosf -/* f07b9b0: c7ac0040 */ lwc1 $f12,0x40($sp) -/* f07b9b4: e7a00038 */ swc1 $f0,0x38($sp) -/* f07b9b8: 0c0068f4 */ jal cosf -/* f07b9bc: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b9c0: c7a60038 */ lwc1 $f6,0x38($sp) -/* f07b9c4: 8fac00dc */ lw $t4,0xdc($sp) -/* f07b9c8: 240b0059 */ addiu $t3,$zero,0x59 -/* f07b9cc: 46060202 */ mul.s $f8,$f0,$f6 -/* f07b9d0: 8fa40120 */ lw $a0,0x120($sp) -/* f07b9d4: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f07b9d8: 27a700fc */ addiu $a3,$sp,0xfc -/* f07b9dc: e7a80104 */ swc1 $f8,0x104($sp) -/* f07b9e0: 8e0500e0 */ lw $a1,0xe0($s0) -/* f07b9e4: afab0010 */ sw $t3,0x10($sp) -/* f07b9e8: 0fc244b7 */ jal projectileCreate -/* f07b9ec: afac0014 */ sw $t4,0x14($sp) -/* f07b9f0: 8fad00d4 */ lw $t5,0xd4($sp) -/* f07b9f4: 240e0001 */ addiu $t6,$zero,0x1 -/* f07b9f8: 51a00007 */ beqzl $t5,.L0f07ba18 -/* f07b9fc: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07ba00: 10000004 */ b .L0f07ba14 -/* f07ba04: a5ae0000 */ sh $t6,0x0($t5) -.L0f07ba08: -/* f07ba08: 51e00003 */ beqzl $t7,.L0f07ba18 -/* f07ba0c: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07ba10: a5e00000 */ sh $zero,0x0($t7) -.L0f07ba14: -/* f07ba14: 8e0300e0 */ lw $v1,0xe0($s0) -.L0f07ba18: -/* f07ba18: 90780000 */ lbu $t8,0x0($v1) -/* f07ba1c: 27190001 */ addiu $t9,$t8,0x1 -/* f07ba20: a0790000 */ sb $t9,0x0($v1) -/* f07ba24: 8fbf0024 */ lw $ra,0x24($sp) -/* f07ba28: 8fb00020 */ lw $s0,0x20($sp) -/* f07ba2c: 27bd0120 */ addiu $sp,$sp,0x120 -/* f07ba30: 03e00008 */ jr $ra -/* f07ba34: 00000000 */ nop -); -#elif VERSION >= VERSION_NTSC_1_0 -GLOBAL_ASM( -glabel func0f07b3f0 -.late_rodata -glabel var7f1aa5d4 -.word 0x3dcccccd -glabel var7f1aa5d8 -.word 0x40c907a9 -glabel var7f1aa5dc -.word 0x40c907a9 -glabel var7f1aa5e0 -.word 0x40490fdb -glabel var7f1aa5e4 -.word 0xc0490fdb -glabel var7f1aa5e8 -.word 0x40c907a9 -glabel var7f1aa5ec -.word 0x40c907a9 -glabel var7f1aa5f0 -.word 0x40490fdb -glabel var7f1aa5f4 -.word 0x3eb2b8c2 -glabel var7f1aa5f8 -.word 0x3c8efa35 -glabel var7f1aa5fc -.word 0x3c8efa35 -glabel var7f1aa600 -.word 0x3b187c24 -glabel var7f1aa604 -.word 0x3b987c24 -glabel var7f1aa608 -.word 0x3e0ef461 -glabel var7f1aa60c -.word 0xbb987c24 -glabel var7f1aa610 -.word 0xbb987c24 -.text -/* f07b3f0: 27bdfee0 */ addiu $sp,$sp,-288 -/* f07b3f4: afbf0024 */ sw $ra,0x24($sp) -/* f07b3f8: afb00020 */ sw $s0,0x20($sp) -/* f07b3fc: afa40120 */ sw $a0,0x120($sp) -/* f07b400: afa50124 */ sw $a1,0x124($sp) -/* f07b404: 8c820004 */ lw $v0,0x4($a0) -/* f07b408: 3c013f80 */ lui $at,0x3f80 -/* f07b40c: 44812000 */ mtc1 $at,$f4 -/* f07b410: afa2011c */ sw $v0,0x11c($sp) -/* f07b414: 8c4f0018 */ lw $t7,0x18($v0) -/* f07b418: e7a40108 */ swc1 $f4,0x108($sp) -/* f07b41c: 44808000 */ mtc1 $zero,$f16 -/* f07b420: afaf0114 */ sw $t7,0x114($sp) -/* f07b424: c44600d0 */ lwc1 $f6,0xd0($v0) -/* f07b428: 00408025 */ or $s0,$v0,$zero -/* f07b42c: 00402025 */ or $a0,$v0,$zero -/* f07b430: e7a600ec */ swc1 $f6,0xec($sp) -/* f07b434: c44800d4 */ lwc1 $f8,0xd4($v0) -/* f07b438: e7a800e8 */ swc1 $f8,0xe8($sp) -/* f07b43c: c44a00c8 */ lwc1 $f10,0xc8($v0) -/* f07b440: e7aa00e4 */ swc1 $f10,0xe4($sp) -/* f07b444: c44400cc */ lwc1 $f4,0xcc($v0) -/* f07b448: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b44c: e7b0010c */ swc1 $f16,0x10c($sp) -/* f07b450: 0fc1eb6e */ jal chopperGetTargetProp -/* f07b454: e7a400e0 */ swc1 $f4,0xe0($sp) -/* f07b458: afa200dc */ sw $v0,0xdc($sp) -/* f07b45c: afa000d4 */ sw $zero,0xd4($sp) -/* f07b460: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07b464: 24010003 */ addiu $at,$zero,0x3 -/* f07b468: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b46c: 90640000 */ lbu $a0,0x0($v1) -/* f07b470: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b474: 24050001 */ addiu $a1,$zero,0x1 -/* f07b478: 0081001a */ div $zero,$a0,$at -/* f07b47c: 0000c010 */ mfhi $t8 -/* f07b480: 2f190001 */ sltiu $t9,$t8,0x1 -/* f07b484: a0790001 */ sb $t9,0x1($v1) -/* f07b488: 8fa80124 */ lw $t0,0x124($sp) -/* f07b48c: 8fa90114 */ lw $t1,0x114($sp) -/* f07b490: 510000b2 */ beqzl $t0,.L0f07b75c -/* f07b494: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07b498: 0c006a6f */ jal modelGetPartRodata -/* f07b49c: 8d240008 */ lw $a0,0x8($t1) -/* f07b4a0: 8faa00dc */ lw $t2,0xdc($sp) -/* f07b4a4: afa200d0 */ sw $v0,0xd0($sp) -/* f07b4a8: 3c0141a0 */ lui $at,0x41a0 -/* f07b4ac: 44814000 */ mtc1 $at,$f8 -/* f07b4b0: c546000c */ lwc1 $f6,0xc($t2) -/* f07b4b4: 46083281 */ sub.s $f10,$f6,$f8 -/* f07b4b8: 0c004b70 */ jal random -/* f07b4bc: e7aa004c */ swc1 $f10,0x4c($sp) -/* f07b4c0: 0c004b70 */ jal random -/* f07b4c4: afa2003c */ sw $v0,0x3c($sp) -/* f07b4c8: 44802000 */ mtc1 $zero,$f4 -/* f07b4cc: 04010005 */ bgez $zero,.L0f07b4e4 -/* f07b4d0: 468021a0 */ cvt.s.w $f6,$f4 -/* f07b4d4: 3c014f80 */ lui $at,0x4f80 -/* f07b4d8: 44814000 */ mtc1 $at,$f8 -/* f07b4dc: 00000000 */ nop -/* f07b4e0: 46083180 */ add.s $f6,$f6,$f8 -.L0f07b4e4: -/* f07b4e4: 3c0141f0 */ lui $at,0x41f0 -/* f07b4e8: 44815000 */ mtc1 $at,$f10 -/* f07b4ec: 8fab00d0 */ lw $t3,0xd0($sp) -/* f07b4f0: 460a3102 */ mul.s $f4,$f6,$f10 -/* f07b4f4: c5680000 */ lwc1 $f8,0x0($t3) -/* f07b4f8: 46082180 */ add.s $f6,$f4,$f8 -/* f07b4fc: 0c004b70 */ jal random -/* f07b500: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07b504: 44805000 */ mtc1 $zero,$f10 -/* f07b508: 8fa3011c */ lw $v1,0x11c($sp) -/* f07b50c: 04010005 */ bgez $zero,.L0f07b524 -/* f07b510: 46805120 */ cvt.s.w $f4,$f10 -/* f07b514: 3c014f80 */ lui $at,0x4f80 -/* f07b518: 44814000 */ mtc1 $at,$f8 -/* f07b51c: 00000000 */ nop -/* f07b520: 46082100 */ add.s $f4,$f4,$f8 -.L0f07b524: -/* f07b524: 3c0141f0 */ lui $at,0x41f0 -/* f07b528: 44813000 */ mtc1 $at,$f6 -/* f07b52c: 8fac00d0 */ lw $t4,0xd0($sp) -/* f07b530: 3c014248 */ lui $at,0x4248 -/* f07b534: 46062282 */ mul.s $f10,$f4,$f6 -/* f07b538: 44812000 */ mtc1 $at,$f4 -/* f07b53c: c5880004 */ lwc1 $f8,0x4($t4) -/* f07b540: 3c01437a */ lui $at,0x437a -/* f07b544: 2464001c */ addiu $a0,$v1,0x1c -/* f07b548: 46044181 */ sub.s $f6,$f8,$f4 -/* f07b54c: 46065200 */ add.s $f8,$f10,$f6 -/* f07b550: 44815000 */ mtc1 $at,$f10 -/* f07b554: 24010128 */ addiu $at,$zero,0x128 -/* f07b558: e7a800f4 */ swc1 $f8,0xf4($sp) -/* f07b55c: c5840008 */ lwc1 $f4,0x8($t4) -/* f07b560: 460a2180 */ add.s $f6,$f4,$f10 -/* f07b564: e7a600f8 */ swc1 $f6,0xf8($sp) -/* f07b568: 846d0004 */ lh $t5,0x4($v1) -/* f07b56c: 15a1000e */ bne $t5,$at,.L0f07b5a8 -/* f07b570: 00000000 */ nop -/* f07b574: 8c6e0018 */ lw $t6,0x18($v1) -/* f07b578: 3c017f1b */ lui $at,%hi(var7f1aa5d4) -/* f07b57c: c424a5d4 */ lwc1 $f4,%lo(var7f1aa5d4)($at) -/* f07b580: c5ca0014 */ lwc1 $f10,0x14($t6) -/* f07b584: 460a2003 */ div.s $f0,$f4,$f10 -/* f07b588: c7a400f0 */ lwc1 $f4,0xf0($sp) -/* f07b58c: 46002282 */ mul.s $f10,$f4,$f0 -/* f07b590: e7aa00f0 */ swc1 $f10,0xf0($sp) -/* f07b594: 46004102 */ mul.s $f4,$f8,$f0 -/* f07b598: 00000000 */ nop -/* f07b59c: 46003282 */ mul.s $f10,$f6,$f0 -/* f07b5a0: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07b5a4: e7aa00f8 */ swc1 $f10,0xf8($sp) -.L0f07b5a8: -/* f07b5a8: 0c005755 */ jal mtx3ToMtx4 -/* f07b5ac: 27a50050 */ addiu $a1,$sp,0x50 -/* f07b5b0: 27a400f0 */ addiu $a0,$sp,0xf0 -/* f07b5b4: 0c0059b7 */ jal mtx4LoadTranslation -/* f07b5b8: 27a50090 */ addiu $a1,$sp,0x90 -/* f07b5bc: 27a40050 */ addiu $a0,$sp,0x50 -/* f07b5c0: 0c00567f */ jal mtx4MultMtx4InPlace -/* f07b5c4: 27a50090 */ addiu $a1,$sp,0x90 -/* f07b5c8: 8fa30120 */ lw $v1,0x120($sp) -/* f07b5cc: c7a400c0 */ lwc1 $f4,0xc0($sp) -/* f07b5d0: 8fa200dc */ lw $v0,0xdc($sp) -/* f07b5d4: c4680008 */ lwc1 $f8,0x8($v1) -/* f07b5d8: 46044180 */ add.s $f6,$f8,$f4 -/* f07b5dc: c7a800c4 */ lwc1 $f8,0xc4($sp) -/* f07b5e0: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07b5e4: c46a000c */ lwc1 $f10,0xc($v1) -/* f07b5e8: 46085100 */ add.s $f4,$f10,$f8 -/* f07b5ec: c7aa00c8 */ lwc1 $f10,0xc8($sp) -/* f07b5f0: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07b5f4: c4660010 */ lwc1 $f6,0x10($v1) -/* f07b5f8: 460a3200 */ add.s $f8,$f6,$f10 -/* f07b5fc: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07b600: e7a800f8 */ swc1 $f8,0xf8($sp) -/* f07b604: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07b608: c44a0010 */ lwc1 $f10,0x10($v0) -/* f07b60c: c4440008 */ lwc1 $f4,0x8($v0) -/* f07b610: 46085381 */ sub.s $f14,$f10,$f8 -/* f07b614: 0fc259d4 */ jal atan2f -/* f07b618: 46062301 */ sub.s $f12,$f4,$f6 -/* f07b61c: 44802000 */ mtc1 $zero,$f4 -/* f07b620: 46000406 */ mov.s $f16,$f0 -/* f07b624: 3c017f1b */ lui $at,%hi(var7f1aa5d8) -/* f07b628: 4604003e */ c.le.s $f0,$f4 -/* f07b62c: 8faf00dc */ lw $t7,0xdc($sp) -/* f07b630: 45000003 */ bc1f .L0f07b640 -/* f07b634: 00000000 */ nop -/* f07b638: c432a5d8 */ lwc1 $f18,%lo(var7f1aa5d8)($at) -/* f07b63c: 46120400 */ add.s $f16,$f0,$f18 -.L0f07b640: -/* f07b640: 3c017f1b */ lui $at,%hi(var7f1aa5dc) -/* f07b644: c432a5dc */ lwc1 $f18,%lo(var7f1aa5dc)($at) -/* f07b648: 4610903c */ c.lt.s $f18,$f16 -/* f07b64c: 00000000 */ nop -/* f07b650: 45020003 */ bc1fl .L0f07b660 -/* f07b654: c606007c */ lwc1 $f6,0x7c($s0) -/* f07b658: 46128401 */ sub.s $f16,$f16,$f18 -/* f07b65c: c606007c */ lwc1 $f6,0x7c($s0) -.L0f07b660: -/* f07b660: 3c017f1b */ lui $at,%hi(var7f1aa5e0) -/* f07b664: c42aa5e0 */ lwc1 $f10,%lo(var7f1aa5e0)($at) -/* f07b668: 46068401 */ sub.s $f16,$f16,$f6 -/* f07b66c: 3c017f1b */ lui $at,%hi(var7f1aa5e4) -/* f07b670: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07b674: 4610503c */ c.lt.s $f10,$f16 -/* f07b678: 00000000 */ nop -/* f07b67c: 45000002 */ bc1f .L0f07b688 -/* f07b680: 00000000 */ nop -/* f07b684: 46128401 */ sub.s $f16,$f16,$f18 -.L0f07b688: -/* f07b688: c428a5e4 */ lwc1 $f8,%lo(var7f1aa5e4)($at) -/* f07b68c: 4608803c */ c.lt.s $f16,$f8 -/* f07b690: 00000000 */ nop -/* f07b694: 45020003 */ bc1fl .L0f07b6a4 -/* f07b698: c5e40008 */ lwc1 $f4,0x8($t7) -/* f07b69c: 46128400 */ add.s $f16,$f16,$f18 -/* f07b6a0: c5e40008 */ lwc1 $f4,0x8($t7) -.L0f07b6a4: -/* f07b6a4: c5ea0010 */ lwc1 $f10,0x10($t7) -/* f07b6a8: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07b6ac: 46062001 */ sub.s $f0,$f4,$f6 -/* f07b6b0: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b6b4: 46085081 */ sub.s $f2,$f10,$f8 -/* f07b6b8: 46000102 */ mul.s $f4,$f0,$f0 -/* f07b6bc: 00000000 */ nop -/* f07b6c0: 46021182 */ mul.s $f6,$f2,$f2 -/* f07b6c4: 0c012974 */ jal sqrtf -/* f07b6c8: 46062300 */ add.s $f12,$f4,$f6 -/* f07b6cc: c7aa004c */ lwc1 $f10,0x4c($sp) -/* f07b6d0: c7a800f4 */ lwc1 $f8,0xf4($sp) -/* f07b6d4: 46000386 */ mov.s $f14,$f0 -/* f07b6d8: 0fc259d4 */ jal atan2f -/* f07b6dc: 46085301 */ sub.s $f12,$f10,$f8 -/* f07b6e0: c6040080 */ lwc1 $f4,0x80($s0) -/* f07b6e4: 3c017f1b */ lui $at,%hi(var7f1aa5ec) -/* f07b6e8: c432a5ec */ lwc1 $f18,%lo(var7f1aa5ec)($at) -/* f07b6ec: 46040181 */ sub.s $f6,$f0,$f4 -/* f07b6f0: 3c017f1b */ lui $at,%hi(var7f1aa5f0) -/* f07b6f4: c42aa5f0 */ lwc1 $f10,%lo(var7f1aa5f0)($at) -/* f07b6f8: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b6fc: 46123080 */ add.s $f2,$f6,$f18 -/* f07b700: 3c017f1b */ lui $at,%hi(var7f1aa5f4) -/* f07b704: 4602503c */ c.lt.s $f10,$f2 -/* f07b708: 00000000 */ nop -/* f07b70c: 45000002 */ bc1f .L0f07b718 -/* f07b710: 00000000 */ nop -/* f07b714: 46121081 */ sub.s $f2,$f2,$f18 -.L0f07b718: -/* f07b718: c42ca5f4 */ lwc1 $f12,%lo(var7f1aa5f4)($at) -/* f07b71c: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07b720: 3c017f1b */ lui $at,%hi(var7f1aa5f8) -/* f07b724: 460c003c */ c.lt.s $f0,$f12 -/* f07b728: 00000000 */ nop -/* f07b72c: 45000008 */ bc1f .L0f07b750 -/* f07b730: 00000000 */ nop -/* f07b734: c428a5f8 */ lwc1 $f8,%lo(var7f1aa5f8)($at) -/* f07b738: 3c01800a */ lui $at,%hi(g_Vars+0x44) -/* f07b73c: c424a004 */ lwc1 $f4,%lo(g_Vars+0x44)($at) -/* f07b740: 46044182 */ mul.s $f6,$f8,$f4 -/* f07b744: 46060280 */ add.s $f10,$f0,$f6 -/* f07b748: 10000014 */ b .L0f07b79c -/* f07b74c: e60a00d8 */ swc1 $f10,0xd8($s0) -.L0f07b750: -/* f07b750: 10000012 */ b .L0f07b79c -/* f07b754: e60c00d8 */ swc1 $f12,0xd8($s0) -/* f07b758: c60000d8 */ lwc1 $f0,0xd8($s0) -.L0f07b75c: -/* f07b75c: 44804000 */ mtc1 $zero,$f8 -/* f07b760: 3c013e00 */ lui $at,0x3e00 -/* f07b764: 44819000 */ mtc1 $at,$f18 -/* f07b768: 4600403c */ c.lt.s $f8,$f0 -/* f07b76c: 3c017f1b */ lui $at,%hi(var7f1aa5fc) -/* f07b770: 45020007 */ bc1fl .L0f07b790 -/* f07b774: 44805000 */ mtc1 $zero,$f10 -/* f07b778: c424a5fc */ lwc1 $f4,%lo(var7f1aa5fc)($at) -/* f07b77c: 46040181 */ sub.s $f6,$f0,$f4 -/* f07b780: e60600d8 */ swc1 $f6,0xd8($s0) -/* f07b784: 10000005 */ b .L0f07b79c -/* f07b788: e7b20108 */ swc1 $f18,0x108($sp) -/* f07b78c: 44805000 */ mtc1 $zero,$f10 -.L0f07b790: -/* f07b790: 00000000 */ nop -/* f07b794: e60a00d8 */ swc1 $f10,0xd8($s0) -/* f07b798: e7b20108 */ swc1 $f18,0x108($sp) -.L0f07b79c: -/* f07b79c: 3c01800a */ lui $at,%hi(g_Vars+0x44) -/* f07b7a0: c424a004 */ lwc1 $f4,%lo(g_Vars+0x44)($at) -/* f07b7a4: c60800d8 */ lwc1 $f8,0xd8($s0) -/* f07b7a8: c60a00dc */ lwc1 $f10,0xdc($s0) -/* f07b7ac: c7b20108 */ lwc1 $f18,0x108($sp) -/* f07b7b0: 46044182 */ mul.s $f6,$f8,$f4 -/* f07b7b4: 3c017f1b */ lui $at,%hi(var7f1aa600) -/* f07b7b8: 44058000 */ mfc1 $a1,$f16 -/* f07b7bc: 27a400ec */ addiu $a0,$sp,0xec -/* f07b7c0: 27a600e4 */ addiu $a2,$sp,0xe4 -/* f07b7c4: 46065200 */ add.s $f8,$f10,$f6 -/* f07b7c8: e60800dc */ swc1 $f8,0xdc($s0) -/* f07b7cc: c424a600 */ lwc1 $f4,%lo(var7f1aa600)($at) -/* f07b7d0: 3c017f1b */ lui $at,%hi(var7f1aa604) -/* f07b7d4: c42aa604 */ lwc1 $f10,%lo(var7f1aa604)($at) -/* f07b7d8: 46122302 */ mul.s $f12,$f4,$f18 -/* f07b7dc: 3c017f1b */ lui $at,%hi(var7f1aa608) -/* f07b7e0: c426a608 */ lwc1 $f6,%lo(var7f1aa608)($at) -/* f07b7e4: 46125002 */ mul.s $f0,$f10,$f18 -/* f07b7e8: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b7ec: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07b7f0: 46123382 */ mul.s $f14,$f6,$f18 -/* f07b7f4: 44076000 */ mfc1 $a3,$f12 -/* f07b7f8: e7ac0034 */ swc1 $f12,0x34($sp) -/* f07b7fc: e7a00010 */ swc1 $f0,0x10($sp) -/* f07b800: e7a00030 */ swc1 $f0,0x30($sp) -/* f07b804: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07b808: 0fc1b643 */ jal applySpeed -/* f07b80c: e7ae002c */ swc1 $f14,0x2c($sp) -/* f07b810: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b814: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b818: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b81c: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07b820: 46104032 */ c.eq.s $f8,$f16 -/* f07b824: 44051000 */ mfc1 $a1,$f2 -/* f07b828: c7ac0034 */ lwc1 $f12,0x34($sp) -/* f07b82c: c7ae002c */ lwc1 $f14,0x2c($sp) -/* f07b830: 45000011 */ bc1f .L0f07b878 -/* f07b834: 27a400e8 */ addiu $a0,$sp,0xe8 -/* f07b838: c7b000e4 */ lwc1 $f16,0xe4($sp) -/* f07b83c: 3c017f1b */ lui $at,%hi(var7f1aa60c) -/* f07b840: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07b844: 4600803e */ c.le.s $f16,$f0 -/* f07b848: 00000000 */ nop -/* f07b84c: 4502000b */ bc1fl .L0f07b87c -/* f07b850: 44076000 */ mfc1 $a3,$f12 -/* f07b854: c424a60c */ lwc1 $f4,%lo(var7f1aa60c)($at) -/* f07b858: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07b85c: 4610303e */ c.le.s $f6,$f16 -/* f07b860: 00000000 */ nop -/* f07b864: 45020005 */ bc1fl .L0f07b87c -/* f07b868: 44076000 */ mfc1 $a3,$f12 -/* f07b86c: 44808000 */ mtc1 $zero,$f16 -/* f07b870: 00000000 */ nop -/* f07b874: e7b000e4 */ swc1 $f16,0xe4($sp) -.L0f07b878: -/* f07b878: 44076000 */ mfc1 $a3,$f12 -.L0f07b87c: -/* f07b87c: 27a600e0 */ addiu $a2,$sp,0xe0 -/* f07b880: e7a00010 */ swc1 $f0,0x10($sp) -/* f07b884: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07b888: e7a00030 */ swc1 $f0,0x30($sp) -/* f07b88c: 0fc1b643 */ jal applySpeed -/* f07b890: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07b894: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b898: c7a800e8 */ lwc1 $f8,0xe8($sp) -/* f07b89c: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07b8a0: 46024032 */ c.eq.s $f8,$f2 -/* f07b8a4: c7a200e0 */ lwc1 $f2,0xe0($sp) -/* f07b8a8: 45020010 */ bc1fl .L0f07b8ec -/* f07b8ac: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8b0: 4600103e */ c.le.s $f2,$f0 -/* f07b8b4: 3c017f1b */ lui $at,%hi(var7f1aa610) -/* f07b8b8: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07b8bc: 4502000b */ bc1fl .L0f07b8ec -/* f07b8c0: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8c4: c424a610 */ lwc1 $f4,%lo(var7f1aa610)($at) -/* f07b8c8: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07b8cc: 4602303e */ c.le.s $f6,$f2 -/* f07b8d0: 00000000 */ nop -/* f07b8d4: 45020005 */ bc1fl .L0f07b8ec -/* f07b8d8: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8dc: 44801000 */ mtc1 $zero,$f2 -/* f07b8e0: 00000000 */ nop -/* f07b8e4: e7a200e0 */ swc1 $f2,0xe0($sp) -/* f07b8e8: c7a800ec */ lwc1 $f8,0xec($sp) -.L0f07b8ec: -/* f07b8ec: 8e1800e0 */ lw $t8,0xe0($s0) -/* f07b8f0: e60800d0 */ swc1 $f8,0xd0($s0) -/* f07b8f4: c7a400e8 */ lwc1 $f4,0xe8($sp) -/* f07b8f8: e60400d4 */ swc1 $f4,0xd4($s0) -/* f07b8fc: c7aa00e4 */ lwc1 $f10,0xe4($sp) -/* f07b900: e60a00c8 */ swc1 $f10,0xc8($s0) -/* f07b904: c7a600e0 */ lwc1 $f6,0xe0($sp) -/* f07b908: e60600cc */ swc1 $f6,0xcc($s0) -/* f07b90c: 93190000 */ lbu $t9,0x0($t8) -/* f07b910: 07210004 */ bgez $t9,.L0f07b924 -/* f07b914: 33280001 */ andi $t0,$t9,0x1 -/* f07b918: 11000002 */ beqz $t0,.L0f07b924 -/* f07b91c: 00000000 */ nop -/* f07b920: 2508fffe */ addiu $t0,$t0,-2 -.L0f07b924: -/* f07b924: 55000003 */ bnezl $t0,.L0f07b934 -/* f07b928: 8fa90114 */ lw $t1,0x114($sp) -/* f07b92c: afa00124 */ sw $zero,0x124($sp) -/* f07b930: 8fa90114 */ lw $t1,0x114($sp) -.L0f07b934: -/* f07b934: 24050003 */ addiu $a1,$zero,0x3 -/* f07b938: 0c006a47 */ jal modelGetPart -/* f07b93c: 8d240008 */ lw $a0,0x8($t1) -/* f07b940: 10400004 */ beqz $v0,.L0f07b954 -/* f07b944: 00402825 */ or $a1,$v0,$zero -/* f07b948: 0c006a87 */ jal modelGetNodeRwData -/* f07b94c: 8fa40114 */ lw $a0,0x114($sp) -/* f07b950: afa200d4 */ sw $v0,0xd4($sp) -.L0f07b954: -/* f07b954: 8faa0124 */ lw $t2,0x124($sp) -/* f07b958: 8faf00d4 */ lw $t7,0xd4($sp) -/* f07b95c: 1140002a */ beqz $t2,.L0f07ba08 -/* f07b960: 00000000 */ nop -/* f07b964: c60800d4 */ lwc1 $f8,0xd4($s0) -/* f07b968: c6040080 */ lwc1 $f4,0x80($s0) -/* f07b96c: 46044280 */ add.s $f10,$f8,$f4 -/* f07b970: e7aa0044 */ swc1 $f10,0x44($sp) -/* f07b974: c608007c */ lwc1 $f8,0x7c($s0) -/* f07b978: c60600d0 */ lwc1 $f6,0xd0($s0) -/* f07b97c: 46083300 */ add.s $f12,$f6,$f8 -/* f07b980: 0c0068f7 */ jal sinf -/* f07b984: e7ac0040 */ swc1 $f12,0x40($sp) -/* f07b988: e7a00038 */ swc1 $f0,0x38($sp) -/* f07b98c: 0c0068f4 */ jal cosf -/* f07b990: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b994: c7a40038 */ lwc1 $f4,0x38($sp) -/* f07b998: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b99c: 46040282 */ mul.s $f10,$f0,$f4 -/* f07b9a0: 0c0068f7 */ jal sinf -/* f07b9a4: e7aa00fc */ swc1 $f10,0xfc($sp) -/* f07b9a8: e7a00100 */ swc1 $f0,0x100($sp) -/* f07b9ac: 0c0068f4 */ jal cosf -/* f07b9b0: c7ac0040 */ lwc1 $f12,0x40($sp) -/* f07b9b4: e7a00038 */ swc1 $f0,0x38($sp) -/* f07b9b8: 0c0068f4 */ jal cosf -/* f07b9bc: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b9c0: c7a60038 */ lwc1 $f6,0x38($sp) -/* f07b9c4: 8fac00dc */ lw $t4,0xdc($sp) -/* f07b9c8: 240b0059 */ addiu $t3,$zero,0x59 -/* f07b9cc: 46060202 */ mul.s $f8,$f0,$f6 -/* f07b9d0: 8fa40120 */ lw $a0,0x120($sp) -/* f07b9d4: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f07b9d8: 27a700fc */ addiu $a3,$sp,0xfc -/* f07b9dc: e7a80104 */ swc1 $f8,0x104($sp) -/* f07b9e0: 8e0500e0 */ lw $a1,0xe0($s0) -/* f07b9e4: afab0010 */ sw $t3,0x10($sp) -/* f07b9e8: 0fc244b7 */ jal projectileCreate -/* f07b9ec: afac0014 */ sw $t4,0x14($sp) -/* f07b9f0: 8fad00d4 */ lw $t5,0xd4($sp) -/* f07b9f4: 240e0001 */ addiu $t6,$zero,0x1 -/* f07b9f8: 51a00007 */ beqzl $t5,.L0f07ba18 -/* f07b9fc: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07ba00: 10000004 */ b .L0f07ba14 -/* f07ba04: a5ae0000 */ sh $t6,0x0($t5) -.L0f07ba08: -/* f07ba08: 51e00003 */ beqzl $t7,.L0f07ba18 -/* f07ba0c: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07ba10: a5e00000 */ sh $zero,0x0($t7) -.L0f07ba14: -/* f07ba14: 8e0300e0 */ lw $v1,0xe0($s0) -.L0f07ba18: -/* f07ba18: 90780000 */ lbu $t8,0x0($v1) -/* f07ba1c: 27190001 */ addiu $t9,$t8,0x1 -/* f07ba20: a0790000 */ sb $t9,0x0($v1) -/* f07ba24: 8fbf0024 */ lw $ra,0x24($sp) -/* f07ba28: 8fb00020 */ lw $s0,0x20($sp) -/* f07ba2c: 27bd0120 */ addiu $sp,$sp,0x120 -/* f07ba30: 03e00008 */ jr $ra -/* f07ba34: 00000000 */ nop -); +void chopperIncrementBarrel(struct prop *chopperprop, bool firing) +{ + struct defaultobj *obj = chopperprop->obj; + struct chopperobj *chopper = (struct chopperobj *)chopperprop->obj; + struct model *model = obj->model; + f32 angleh = 0.0f; + f32 anglev = 0.0f; + f32 speedmult = 1.0f; + struct coord rot; + struct coord gunpos; + f32 gunroty = chopper->gunroty; + f32 gunrotx = chopper->gunrotx; + f32 gunturnyspeed60 = chopper->gunturnyspeed60; + f32 gunturnxspeed60 = chopper->gunturnxspeed60; + struct prop *targetprop = chopperGetTargetProp(chopper); + struct modelnode *node; + struct modelrwdata_gunfire *rwdata = NULL; + struct modelrodata_position *rodata; + Mtxf sp90; + Mtxf sp50; + f32 gunaimy; + + if (chopper->fireslotthing->unk00); + + chopper->fireslotthing->unk01 = (chopper->fireslotthing->unk00 % 3) == 0; + + if (firing) { + rodata = modelGetPartRodata(model->filedata, MODELPART_CHOPPER_0001); + gunaimy = targetprop->pos.y - 20.0f; + + gunpos.x = random() * random() * 0 * 30.0f + rodata->pos.x; + gunpos.y = random() * 0 * 30.0f + (rodata->pos.y - 50.0f); + gunpos.z = rodata->pos.z + 250.0f; + + if (obj->modelnum == MODEL_A51INTERCEPTOR) { + f32 scale = 0.1f / obj->model->scale; + gunpos.x *= scale; + gunpos.y *= scale; + gunpos.z *= scale; + } + + mtx3ToMtx4(obj->realrot, &sp50); + mtx4LoadTranslation(&gunpos, &sp90); + mtx4MultMtx4InPlace(&sp50, &sp90); + + gunpos.x = sp90.m[3][0] + chopperprop->pos.f[0]; + gunpos.y = sp90.m[3][1] + chopperprop->pos.f[1]; + gunpos.z = sp90.m[3][2] + chopperprop->pos.f[2]; + + angleh = atan2f(targetprop->pos.x - gunpos.x, targetprop->pos.z - gunpos.z); + + if (angleh <= 0.0f) { + angleh += M_BADTAU; + } + + if (angleh > M_BADTAU) { + angleh -= M_BADTAU; + } + + angleh -= chopper->roty; + + if (angleh > M_PI) { + angleh -= M_BADTAU; + } + + if (angleh < -M_PI) { + angleh += M_BADTAU; + } + + anglev = atan2f(gunaimy - gunpos.y, sqrtf((targetprop->pos.x - gunpos.x) * (targetprop->pos.x - gunpos.x) + (targetprop->pos.z - gunpos.z) * (targetprop->pos.z - gunpos.z))) - chopper->rotx + M_BADTAU; + + if (anglev > M_PI) { + anglev -= M_BADTAU; + } + + if (chopper->barrelrotspeed < 0.34906584f) { + chopper->barrelrotspeed += 0.017453292f * LVUPDATE240FREAL(); + } else { + chopper->barrelrotspeed = 0.34906584f; + } + } else { + speedmult = 0.125f; + + if (chopper->barrelrotspeed > 0.0f) { + chopper->barrelrotspeed -= 0.017453292f; + } else { + chopper->barrelrotspeed = 0.0f; + } + } + + chopper->barrelrot += chopper->barrelrotspeed * LVUPDATE240FREAL(); + +#if PAL + applySpeed(&gunroty, angleh, &gunturnyspeed60, 0.0027920822612941f * speedmult, 0.0055841645225883f * speedmult, 0.16752494871616f * speedmult); + + if (gunroty == angleh && gunturnyspeed60 <= 0.0055841645225883f * speedmult && -0.0055841645225883f * speedmult <= gunturnyspeed60) { + gunturnyspeed60 = 0.0f; + } + + applySpeed(&gunrotx, anglev, &gunturnxspeed60, 0.0027920822612941f * speedmult, 0.0055841645225883f * speedmult, 0.16752494871616f * speedmult); + + if (gunrotx == anglev && gunturnxspeed60 <= 0.0055841645225883f * speedmult && -0.0055841645225883f * speedmult <= gunturnxspeed60) { + gunturnxspeed60 = 0.0f; + } #else -GLOBAL_ASM( -glabel func0f07b3f0 -.late_rodata -glabel var7f1aa5d4 -.word 0x3dcccccd -glabel var7f1aa5d8 -.word 0x40c907a9 -glabel var7f1aa5dc -.word 0x40c907a9 -glabel var7f1aa5e0 -.word 0x40490fdb -glabel var7f1aa5e4 -.word 0xc0490fdb -glabel var7f1aa5e8 -.word 0x40c907a9 -glabel var7f1aa5ec -.word 0x40c907a9 -glabel var7f1aa5f0 -.word 0x40490fdb -glabel var7f1aa5f4 -.word 0x3eb2b8c2 -glabel var7f1aa5f8 -.word 0x3c8efa35 -glabel var7f1aa5fc -.word 0x3c8efa35 -glabel var7f1aa600 -.word 0x3b187c24 -glabel var7f1aa604 -.word 0x3b987c24 -glabel var7f1aa608 -.word 0x3e0ef461 -glabel var7f1aa60c -.word 0xbb987c24 -glabel var7f1aa610 -.word 0xbb987c24 -.text -/* f07b3f0: 27bdfee0 */ addiu $sp,$sp,-288 -/* f07b3f4: afbf0024 */ sw $ra,0x24($sp) -/* f07b3f8: afb00020 */ sw $s0,0x20($sp) -/* f07b3fc: afa40120 */ sw $a0,0x120($sp) -/* f07b400: afa50124 */ sw $a1,0x124($sp) -/* f07b404: 8c820004 */ lw $v0,0x4($a0) -/* f07b408: 3c013f80 */ lui $at,0x3f80 -/* f07b40c: 44812000 */ mtc1 $at,$f4 -/* f07b410: afa2011c */ sw $v0,0x11c($sp) -/* f07b414: 8c4f0018 */ lw $t7,0x18($v0) -/* f07b418: e7a40108 */ swc1 $f4,0x108($sp) -/* f07b41c: 44808000 */ mtc1 $zero,$f16 -/* f07b420: afaf0114 */ sw $t7,0x114($sp) -/* f07b424: c44600d0 */ lwc1 $f6,0xd0($v0) -/* f07b428: 00408025 */ or $s0,$v0,$zero -/* f07b42c: 00402025 */ or $a0,$v0,$zero -/* f07b430: e7a600ec */ swc1 $f6,0xec($sp) -/* f07b434: c44800d4 */ lwc1 $f8,0xd4($v0) -/* f07b438: e7a800e8 */ swc1 $f8,0xe8($sp) -/* f07b43c: c44a00c8 */ lwc1 $f10,0xc8($v0) -/* f07b440: e7aa00e4 */ swc1 $f10,0xe4($sp) -/* f07b444: c44400cc */ lwc1 $f4,0xcc($v0) -/* f07b448: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b44c: e7b0010c */ swc1 $f16,0x10c($sp) -/* f07b450: 0fc1eb6e */ jal chopperGetTargetProp -/* f07b454: e7a400e0 */ swc1 $f4,0xe0($sp) -/* f07b458: afa200dc */ sw $v0,0xdc($sp) -/* f07b45c: afa000d4 */ sw $zero,0xd4($sp) -/* f07b460: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07b464: 24010003 */ addiu $at,$zero,0x3 -/* f07b468: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b46c: 90640000 */ lbu $a0,0x0($v1) -/* f07b470: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b474: 24050001 */ addiu $a1,$zero,0x1 -/* f07b478: 0081001a */ div $zero,$a0,$at -/* f07b47c: 0000c010 */ mfhi $t8 -/* f07b480: 2f190001 */ sltiu $t9,$t8,0x1 -/* f07b484: a0790001 */ sb $t9,0x1($v1) -/* f07b488: 8fa80124 */ lw $t0,0x124($sp) -/* f07b48c: 8fa90114 */ lw $t1,0x114($sp) -/* f07b490: 510000b2 */ beqzl $t0,.L0f07b75c -/* f07b494: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07b498: 0c006a6f */ jal modelGetPartRodata -/* f07b49c: 8d240008 */ lw $a0,0x8($t1) -/* f07b4a0: 8faa00dc */ lw $t2,0xdc($sp) -/* f07b4a4: afa200d0 */ sw $v0,0xd0($sp) -/* f07b4a8: 3c0141a0 */ lui $at,0x41a0 -/* f07b4ac: 44814000 */ mtc1 $at,$f8 -/* f07b4b0: c546000c */ lwc1 $f6,0xc($t2) -/* f07b4b4: 46083281 */ sub.s $f10,$f6,$f8 -/* f07b4b8: 0c004b70 */ jal random -/* f07b4bc: e7aa004c */ swc1 $f10,0x4c($sp) -/* f07b4c0: 0c004b70 */ jal random -/* f07b4c4: afa2003c */ sw $v0,0x3c($sp) -/* f07b4c8: 44802000 */ mtc1 $zero,$f4 -/* f07b4cc: 04010005 */ bgez $zero,.L0f07b4e4 -/* f07b4d0: 468021a0 */ cvt.s.w $f6,$f4 -/* f07b4d4: 3c014f80 */ lui $at,0x4f80 -/* f07b4d8: 44814000 */ mtc1 $at,$f8 -/* f07b4dc: 00000000 */ nop -/* f07b4e0: 46083180 */ add.s $f6,$f6,$f8 -.L0f07b4e4: -/* f07b4e4: 3c0141f0 */ lui $at,0x41f0 -/* f07b4e8: 44815000 */ mtc1 $at,$f10 -/* f07b4ec: 8fab00d0 */ lw $t3,0xd0($sp) -/* f07b4f0: 460a3102 */ mul.s $f4,$f6,$f10 -/* f07b4f4: c5680000 */ lwc1 $f8,0x0($t3) -/* f07b4f8: 46082180 */ add.s $f6,$f4,$f8 -/* f07b4fc: 0c004b70 */ jal random -/* f07b500: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07b504: 44805000 */ mtc1 $zero,$f10 -/* f07b508: 8fa3011c */ lw $v1,0x11c($sp) -/* f07b50c: 04010005 */ bgez $zero,.L0f07b524 -/* f07b510: 46805120 */ cvt.s.w $f4,$f10 -/* f07b514: 3c014f80 */ lui $at,0x4f80 -/* f07b518: 44814000 */ mtc1 $at,$f8 -/* f07b51c: 00000000 */ nop -/* f07b520: 46082100 */ add.s $f4,$f4,$f8 -.L0f07b524: -/* f07b524: 3c0141f0 */ lui $at,0x41f0 -/* f07b528: 44813000 */ mtc1 $at,$f6 -/* f07b52c: 8fac00d0 */ lw $t4,0xd0($sp) -/* f07b530: 3c014248 */ lui $at,0x4248 -/* f07b534: 46062282 */ mul.s $f10,$f4,$f6 -/* f07b538: 44812000 */ mtc1 $at,$f4 -/* f07b53c: c5880004 */ lwc1 $f8,0x4($t4) -/* f07b540: 3c01437a */ lui $at,0x437a -/* f07b544: 2464001c */ addiu $a0,$v1,0x1c -/* f07b548: 46044181 */ sub.s $f6,$f8,$f4 -/* f07b54c: 46065200 */ add.s $f8,$f10,$f6 -/* f07b550: 44815000 */ mtc1 $at,$f10 -/* f07b554: 24010128 */ addiu $at,$zero,0x128 -/* f07b558: e7a800f4 */ swc1 $f8,0xf4($sp) -/* f07b55c: c5840008 */ lwc1 $f4,0x8($t4) -/* f07b560: 460a2180 */ add.s $f6,$f4,$f10 -/* f07b564: e7a600f8 */ swc1 $f6,0xf8($sp) -/* f07b568: 846d0004 */ lh $t5,0x4($v1) -/* f07b56c: 15a1000e */ bne $t5,$at,.L0f07b5a8 -/* f07b570: 00000000 */ nop -/* f07b574: 8c6e0018 */ lw $t6,0x18($v1) -/* f07b578: 3c017f1b */ lui $at,%hi(var7f1aa5d4) -/* f07b57c: c424a5d4 */ lwc1 $f4,%lo(var7f1aa5d4)($at) -/* f07b580: c5ca0014 */ lwc1 $f10,0x14($t6) -/* f07b584: 460a2003 */ div.s $f0,$f4,$f10 -/* f07b588: c7a400f0 */ lwc1 $f4,0xf0($sp) -/* f07b58c: 46002282 */ mul.s $f10,$f4,$f0 -/* f07b590: e7aa00f0 */ swc1 $f10,0xf0($sp) -/* f07b594: 46004102 */ mul.s $f4,$f8,$f0 -/* f07b598: 00000000 */ nop -/* f07b59c: 46003282 */ mul.s $f10,$f6,$f0 -/* f07b5a0: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07b5a4: e7aa00f8 */ swc1 $f10,0xf8($sp) -.L0f07b5a8: -/* f07b5a8: 0c005755 */ jal mtx3ToMtx4 -/* f07b5ac: 27a50050 */ addiu $a1,$sp,0x50 -/* f07b5b0: 27a400f0 */ addiu $a0,$sp,0xf0 -/* f07b5b4: 0c0059b7 */ jal mtx4LoadTranslation -/* f07b5b8: 27a50090 */ addiu $a1,$sp,0x90 -/* f07b5bc: 27a40050 */ addiu $a0,$sp,0x50 -/* f07b5c0: 0c00567f */ jal mtx4MultMtx4InPlace -/* f07b5c4: 27a50090 */ addiu $a1,$sp,0x90 -/* f07b5c8: 8fa30120 */ lw $v1,0x120($sp) -/* f07b5cc: c7a400c0 */ lwc1 $f4,0xc0($sp) -/* f07b5d0: 8fa200dc */ lw $v0,0xdc($sp) -/* f07b5d4: c4680008 */ lwc1 $f8,0x8($v1) -/* f07b5d8: 46044180 */ add.s $f6,$f8,$f4 -/* f07b5dc: c7a800c4 */ lwc1 $f8,0xc4($sp) -/* f07b5e0: e7a600f0 */ swc1 $f6,0xf0($sp) -/* f07b5e4: c46a000c */ lwc1 $f10,0xc($v1) -/* f07b5e8: 46085100 */ add.s $f4,$f10,$f8 -/* f07b5ec: c7aa00c8 */ lwc1 $f10,0xc8($sp) -/* f07b5f0: e7a400f4 */ swc1 $f4,0xf4($sp) -/* f07b5f4: c4660010 */ lwc1 $f6,0x10($v1) -/* f07b5f8: 460a3200 */ add.s $f8,$f6,$f10 -/* f07b5fc: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07b600: e7a800f8 */ swc1 $f8,0xf8($sp) -/* f07b604: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07b608: c44a0010 */ lwc1 $f10,0x10($v0) -/* f07b60c: c4440008 */ lwc1 $f4,0x8($v0) -/* f07b610: 46085381 */ sub.s $f14,$f10,$f8 -/* f07b614: 0fc259d4 */ jal atan2f -/* f07b618: 46062301 */ sub.s $f12,$f4,$f6 -/* f07b61c: 44802000 */ mtc1 $zero,$f4 -/* f07b620: 46000406 */ mov.s $f16,$f0 -/* f07b624: 3c017f1b */ lui $at,%hi(var7f1aa5d8) -/* f07b628: 4604003e */ c.le.s $f0,$f4 -/* f07b62c: 8faf00dc */ lw $t7,0xdc($sp) -/* f07b630: 45000003 */ bc1f .L0f07b640 -/* f07b634: 00000000 */ nop -/* f07b638: c432a5d8 */ lwc1 $f18,%lo(var7f1aa5d8)($at) -/* f07b63c: 46120400 */ add.s $f16,$f0,$f18 -.L0f07b640: -/* f07b640: 3c017f1b */ lui $at,%hi(var7f1aa5dc) -/* f07b644: c432a5dc */ lwc1 $f18,%lo(var7f1aa5dc)($at) -/* f07b648: 4610903c */ c.lt.s $f18,$f16 -/* f07b64c: 00000000 */ nop -/* f07b650: 45020003 */ bc1fl .L0f07b660 -/* f07b654: c606007c */ lwc1 $f6,0x7c($s0) -/* f07b658: 46128401 */ sub.s $f16,$f16,$f18 -/* f07b65c: c606007c */ lwc1 $f6,0x7c($s0) -.L0f07b660: -/* f07b660: 3c017f1b */ lui $at,%hi(var7f1aa5e0) -/* f07b664: c42aa5e0 */ lwc1 $f10,%lo(var7f1aa5e0)($at) -/* f07b668: 46068401 */ sub.s $f16,$f16,$f6 -/* f07b66c: 3c017f1b */ lui $at,%hi(var7f1aa5e4) -/* f07b670: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f07b674: 4610503c */ c.lt.s $f10,$f16 -/* f07b678: 00000000 */ nop -/* f07b67c: 45000002 */ bc1f .L0f07b688 -/* f07b680: 00000000 */ nop -/* f07b684: 46128401 */ sub.s $f16,$f16,$f18 -.L0f07b688: -/* f07b688: c428a5e4 */ lwc1 $f8,%lo(var7f1aa5e4)($at) -/* f07b68c: 4608803c */ c.lt.s $f16,$f8 -/* f07b690: 00000000 */ nop -/* f07b694: 45020003 */ bc1fl .L0f07b6a4 -/* f07b698: c5e40008 */ lwc1 $f4,0x8($t7) -/* f07b69c: 46128400 */ add.s $f16,$f16,$f18 -/* f07b6a0: c5e40008 */ lwc1 $f4,0x8($t7) -.L0f07b6a4: -/* f07b6a4: c5ea0010 */ lwc1 $f10,0x10($t7) -/* f07b6a8: c7a800f8 */ lwc1 $f8,0xf8($sp) -/* f07b6ac: 46062001 */ sub.s $f0,$f4,$f6 -/* f07b6b0: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b6b4: 46085081 */ sub.s $f2,$f10,$f8 -/* f07b6b8: 46000102 */ mul.s $f4,$f0,$f0 -/* f07b6bc: 00000000 */ nop -/* f07b6c0: 46021182 */ mul.s $f6,$f2,$f2 -/* f07b6c4: 0c012974 */ jal sqrtf -/* f07b6c8: 46062300 */ add.s $f12,$f4,$f6 -/* f07b6cc: c7aa004c */ lwc1 $f10,0x4c($sp) -/* f07b6d0: c7a800f4 */ lwc1 $f8,0xf4($sp) -/* f07b6d4: 46000386 */ mov.s $f14,$f0 -/* f07b6d8: 0fc259d4 */ jal atan2f -/* f07b6dc: 46085301 */ sub.s $f12,$f10,$f8 -/* f07b6e0: c6040080 */ lwc1 $f4,0x80($s0) -/* f07b6e4: 3c017f1b */ lui $at,%hi(var7f1aa5ec) -/* f07b6e8: c432a5ec */ lwc1 $f18,%lo(var7f1aa5ec)($at) -/* f07b6ec: 46040181 */ sub.s $f6,$f0,$f4 -/* f07b6f0: 3c017f1b */ lui $at,%hi(var7f1aa5f0) -/* f07b6f4: c42aa5f0 */ lwc1 $f10,%lo(var7f1aa5f0)($at) -/* f07b6f8: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b6fc: 46123080 */ add.s $f2,$f6,$f18 -/* f07b700: 3c017f1b */ lui $at,%hi(var7f1aa5f4) -/* f07b704: 4602503c */ c.lt.s $f10,$f2 -/* f07b708: 00000000 */ nop -/* f07b70c: 45000002 */ bc1f .L0f07b718 -/* f07b710: 00000000 */ nop -/* f07b714: 46121081 */ sub.s $f2,$f2,$f18 -.L0f07b718: -/* f07b718: c42ca5f4 */ lwc1 $f12,%lo(var7f1aa5f4)($at) -/* f07b71c: c60000d8 */ lwc1 $f0,0xd8($s0) -/* f07b720: 3c017f1b */ lui $at,%hi(var7f1aa5f8) -/* f07b724: 460c003c */ c.lt.s $f0,$f12 -/* f07b728: 00000000 */ nop -/* f07b72c: 45000008 */ bc1f .L0f07b750 -/* f07b730: 00000000 */ nop -/* f07b734: c428a5f8 */ lwc1 $f8,%lo(var7f1aa5f8)($at) -/* f07b738: 3c01800a */ lui $at,%hi(g_Vars+0x44) -/* f07b73c: c424a004 */ lwc1 $f4,%lo(g_Vars+0x44)($at) -/* f07b740: 46044182 */ mul.s $f6,$f8,$f4 -/* f07b744: 46060280 */ add.s $f10,$f0,$f6 -/* f07b748: 10000014 */ b .L0f07b79c -/* f07b74c: e60a00d8 */ swc1 $f10,0xd8($s0) -.L0f07b750: -/* f07b750: 10000012 */ b .L0f07b79c -/* f07b754: e60c00d8 */ swc1 $f12,0xd8($s0) -/* f07b758: c60000d8 */ lwc1 $f0,0xd8($s0) -.L0f07b75c: -/* f07b75c: 44804000 */ mtc1 $zero,$f8 -/* f07b760: 3c013e00 */ lui $at,0x3e00 -/* f07b764: 44819000 */ mtc1 $at,$f18 -/* f07b768: 4600403c */ c.lt.s $f8,$f0 -/* f07b76c: 3c017f1b */ lui $at,%hi(var7f1aa5fc) -/* f07b770: 45020007 */ bc1fl .L0f07b790 -/* f07b774: 44805000 */ mtc1 $zero,$f10 -/* f07b778: c424a5fc */ lwc1 $f4,%lo(var7f1aa5fc)($at) -/* f07b77c: 46040181 */ sub.s $f6,$f0,$f4 -/* f07b780: e60600d8 */ swc1 $f6,0xd8($s0) -/* f07b784: 10000005 */ b .L0f07b79c -/* f07b788: e7b20108 */ swc1 $f18,0x108($sp) -/* f07b78c: 44805000 */ mtc1 $zero,$f10 -.L0f07b790: -/* f07b790: 00000000 */ nop -/* f07b794: e60a00d8 */ swc1 $f10,0xd8($s0) -/* f07b798: e7b20108 */ swc1 $f18,0x108($sp) -.L0f07b79c: -/* f07b79c: 3c01800a */ lui $at,%hi(g_Vars+0x44) -/* f07b7a0: c424a004 */ lwc1 $f4,%lo(g_Vars+0x44)($at) -/* f07b7a4: c60800d8 */ lwc1 $f8,0xd8($s0) -/* f07b7a8: c60a00dc */ lwc1 $f10,0xdc($s0) -/* f07b7ac: c7b20108 */ lwc1 $f18,0x108($sp) -/* f07b7b0: 46044182 */ mul.s $f6,$f8,$f4 -/* f07b7b4: 3c017f1b */ lui $at,%hi(var7f1aa600) -/* f07b7b8: 44058000 */ mfc1 $a1,$f16 -/* f07b7bc: 27a400ec */ addiu $a0,$sp,0xec -/* f07b7c0: 27a600e4 */ addiu $a2,$sp,0xe4 -/* f07b7c4: 46065200 */ add.s $f8,$f10,$f6 -/* f07b7c8: e60800dc */ swc1 $f8,0xdc($s0) -/* f07b7cc: c424a600 */ lwc1 $f4,%lo(var7f1aa600)($at) -/* f07b7d0: 3c017f1b */ lui $at,%hi(var7f1aa604) -/* f07b7d4: c42aa604 */ lwc1 $f10,%lo(var7f1aa604)($at) -/* f07b7d8: 46122302 */ mul.s $f12,$f4,$f18 -/* f07b7dc: 3c017f1b */ lui $at,%hi(var7f1aa608) -/* f07b7e0: c426a608 */ lwc1 $f6,%lo(var7f1aa608)($at) -/* f07b7e4: 46125002 */ mul.s $f0,$f10,$f18 -/* f07b7e8: e7b00110 */ swc1 $f16,0x110($sp) -/* f07b7ec: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07b7f0: 46123382 */ mul.s $f14,$f6,$f18 -/* f07b7f4: 44076000 */ mfc1 $a3,$f12 -/* f07b7f8: e7ac0034 */ swc1 $f12,0x34($sp) -/* f07b7fc: e7a00010 */ swc1 $f0,0x10($sp) -/* f07b800: e7a00030 */ swc1 $f0,0x30($sp) -/* f07b804: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07b808: 0fc1b643 */ jal applySpeed -/* f07b80c: e7ae002c */ swc1 $f14,0x2c($sp) -/* f07b810: c7b00110 */ lwc1 $f16,0x110($sp) -/* f07b814: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b818: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b81c: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07b820: 46104032 */ c.eq.s $f8,$f16 -/* f07b824: 44051000 */ mfc1 $a1,$f2 -/* f07b828: c7ac0034 */ lwc1 $f12,0x34($sp) -/* f07b82c: c7ae002c */ lwc1 $f14,0x2c($sp) -/* f07b830: 45000011 */ bc1f .L0f07b878 -/* f07b834: 27a400e8 */ addiu $a0,$sp,0xe8 -/* f07b838: c7b000e4 */ lwc1 $f16,0xe4($sp) -/* f07b83c: 3c017f1b */ lui $at,%hi(var7f1aa60c) -/* f07b840: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07b844: 4600803e */ c.le.s $f16,$f0 -/* f07b848: 00000000 */ nop -/* f07b84c: 4502000b */ bc1fl .L0f07b87c -/* f07b850: 44076000 */ mfc1 $a3,$f12 -/* f07b854: c424a60c */ lwc1 $f4,%lo(var7f1aa60c)($at) -/* f07b858: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07b85c: 4610303e */ c.le.s $f6,$f16 -/* f07b860: 00000000 */ nop -/* f07b864: 45020005 */ bc1fl .L0f07b87c -/* f07b868: 44076000 */ mfc1 $a3,$f12 -/* f07b86c: 44808000 */ mtc1 $zero,$f16 -/* f07b870: 00000000 */ nop -/* f07b874: e7b000e4 */ swc1 $f16,0xe4($sp) -.L0f07b878: -/* f07b878: 44076000 */ mfc1 $a3,$f12 -.L0f07b87c: -/* f07b87c: 27a600e0 */ addiu $a2,$sp,0xe0 -/* f07b880: e7a00010 */ swc1 $f0,0x10($sp) -/* f07b884: e7ae0014 */ swc1 $f14,0x14($sp) -/* f07b888: e7a00030 */ swc1 $f0,0x30($sp) -/* f07b88c: 0fc1b643 */ jal applySpeed -/* f07b890: e7a2010c */ swc1 $f2,0x10c($sp) -/* f07b894: c7a2010c */ lwc1 $f2,0x10c($sp) -/* f07b898: c7a800e8 */ lwc1 $f8,0xe8($sp) -/* f07b89c: c7a00030 */ lwc1 $f0,0x30($sp) -/* f07b8a0: 46024032 */ c.eq.s $f8,$f2 -/* f07b8a4: c7a200e0 */ lwc1 $f2,0xe0($sp) -/* f07b8a8: 45020010 */ bc1fl .L0f07b8ec -/* f07b8ac: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8b0: 4600103e */ c.le.s $f2,$f0 -/* f07b8b4: 3c017f1b */ lui $at,%hi(var7f1aa610) -/* f07b8b8: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f07b8bc: 4502000b */ bc1fl .L0f07b8ec -/* f07b8c0: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8c4: c424a610 */ lwc1 $f4,%lo(var7f1aa610)($at) -/* f07b8c8: 460a2182 */ mul.s $f6,$f4,$f10 -/* f07b8cc: 4602303e */ c.le.s $f6,$f2 -/* f07b8d0: 00000000 */ nop -/* f07b8d4: 45020005 */ bc1fl .L0f07b8ec -/* f07b8d8: c7a800ec */ lwc1 $f8,0xec($sp) -/* f07b8dc: 44801000 */ mtc1 $zero,$f2 -/* f07b8e0: 00000000 */ nop -/* f07b8e4: e7a200e0 */ swc1 $f2,0xe0($sp) -/* f07b8e8: c7a800ec */ lwc1 $f8,0xec($sp) -.L0f07b8ec: -/* f07b8ec: 8e1800e0 */ lw $t8,0xe0($s0) -/* f07b8f0: e60800d0 */ swc1 $f8,0xd0($s0) -/* f07b8f4: c7a400e8 */ lwc1 $f4,0xe8($sp) -/* f07b8f8: e60400d4 */ swc1 $f4,0xd4($s0) -/* f07b8fc: c7aa00e4 */ lwc1 $f10,0xe4($sp) -/* f07b900: e60a00c8 */ swc1 $f10,0xc8($s0) -/* f07b904: c7a600e0 */ lwc1 $f6,0xe0($sp) -/* f07b908: e60600cc */ swc1 $f6,0xcc($s0) -/* f07b90c: 93190000 */ lbu $t9,0x0($t8) -/* f07b910: 07210004 */ bgez $t9,.L0f07b924 -/* f07b914: 33280001 */ andi $t0,$t9,0x1 -/* f07b918: 11000002 */ beqz $t0,.L0f07b924 -/* f07b91c: 00000000 */ nop -/* f07b920: 2508fffe */ addiu $t0,$t0,-2 -.L0f07b924: -/* f07b924: 55000003 */ bnezl $t0,.L0f07b934 -/* f07b928: 8fa90114 */ lw $t1,0x114($sp) -/* f07b92c: afa00124 */ sw $zero,0x124($sp) -/* f07b930: 8fa90114 */ lw $t1,0x114($sp) -.L0f07b934: -/* f07b934: 24050003 */ addiu $a1,$zero,0x3 -/* f07b938: 0c006a47 */ jal modelGetPart -/* f07b93c: 8d240008 */ lw $a0,0x8($t1) -/* f07b940: 10400004 */ beqz $v0,.L0f07b954 -/* f07b944: 00402825 */ or $a1,$v0,$zero -/* f07b948: 0c006a87 */ jal modelGetNodeRwData -/* f07b94c: 8fa40114 */ lw $a0,0x114($sp) -/* f07b950: afa200d4 */ sw $v0,0xd4($sp) -.L0f07b954: -/* f07b954: 8faa0124 */ lw $t2,0x124($sp) -/* f07b958: 8faf00d4 */ lw $t7,0xd4($sp) -/* f07b95c: 1140002a */ beqz $t2,.L0f07ba08 -/* f07b960: 00000000 */ nop -/* f07b964: c60800d4 */ lwc1 $f8,0xd4($s0) -/* f07b968: c6040080 */ lwc1 $f4,0x80($s0) -/* f07b96c: 46044280 */ add.s $f10,$f8,$f4 -/* f07b970: e7aa0044 */ swc1 $f10,0x44($sp) -/* f07b974: c608007c */ lwc1 $f8,0x7c($s0) -/* f07b978: c60600d0 */ lwc1 $f6,0xd0($s0) -/* f07b97c: 46083300 */ add.s $f12,$f6,$f8 -/* f07b980: 0c0068f7 */ jal sinf -/* f07b984: e7ac0040 */ swc1 $f12,0x40($sp) -/* f07b988: e7a00038 */ swc1 $f0,0x38($sp) -/* f07b98c: 0c0068f4 */ jal cosf -/* f07b990: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b994: c7a40038 */ lwc1 $f4,0x38($sp) -/* f07b998: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b99c: 46040282 */ mul.s $f10,$f0,$f4 -/* f07b9a0: 0c0068f7 */ jal sinf -/* f07b9a4: e7aa00fc */ swc1 $f10,0xfc($sp) -/* f07b9a8: e7a00100 */ swc1 $f0,0x100($sp) -/* f07b9ac: 0c0068f4 */ jal cosf -/* f07b9b0: c7ac0040 */ lwc1 $f12,0x40($sp) -/* f07b9b4: e7a00038 */ swc1 $f0,0x38($sp) -/* f07b9b8: 0c0068f4 */ jal cosf -/* f07b9bc: c7ac0044 */ lwc1 $f12,0x44($sp) -/* f07b9c0: c7a60038 */ lwc1 $f6,0x38($sp) -/* f07b9c4: 8fac00dc */ lw $t4,0xdc($sp) -/* f07b9c8: 240b0059 */ addiu $t3,$zero,0x58 -/* f07b9cc: 46060202 */ mul.s $f8,$f0,$f6 -/* f07b9d0: 8fa40120 */ lw $a0,0x120($sp) -/* f07b9d4: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f07b9d8: 27a700fc */ addiu $a3,$sp,0xfc -/* f07b9dc: e7a80104 */ swc1 $f8,0x104($sp) -/* f07b9e0: 8e0500e0 */ lw $a1,0xe0($s0) -/* f07b9e4: afab0010 */ sw $t3,0x10($sp) -/* f07b9e8: 0fc244b7 */ jal projectileCreate -/* f07b9ec: afac0014 */ sw $t4,0x14($sp) -/* f07b9f0: 8fad00d4 */ lw $t5,0xd4($sp) -/* f07b9f4: 240e0001 */ addiu $t6,$zero,0x1 -/* f07b9f8: 51a00007 */ beqzl $t5,.L0f07ba18 -/* f07b9fc: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07ba00: 10000004 */ b .L0f07ba14 -/* f07ba04: a5ae0000 */ sh $t6,0x0($t5) -.L0f07ba08: -/* f07ba08: 51e00003 */ beqzl $t7,.L0f07ba18 -/* f07ba0c: 8e0300e0 */ lw $v1,0xe0($s0) -/* f07ba10: a5e00000 */ sh $zero,0x0($t7) -.L0f07ba14: -/* f07ba14: 8e0300e0 */ lw $v1,0xe0($s0) -.L0f07ba18: -/* f07ba18: 90780000 */ lbu $t8,0x0($v1) -/* f07ba1c: 27190001 */ addiu $t9,$t8,0x1 -/* f07ba20: a0790000 */ sb $t9,0x0($v1) -/* f07ba24: 8fbf0024 */ lw $ra,0x24($sp) -/* f07ba28: 8fb00020 */ lw $s0,0x20($sp) -/* f07ba2c: 27bd0120 */ addiu $sp,$sp,0x120 -/* f07ba30: 03e00008 */ jr $ra -/* f07ba34: 00000000 */ nop -); + applySpeed(&gunroty, angleh, &gunturnyspeed60, 0.0023267353f * speedmult, 0.0046534706f * speedmult, 0.1396041f * speedmult); + + if (gunroty == angleh && gunturnyspeed60 <= 0.0046534706f * speedmult && -0.0046534706f * speedmult <= gunturnyspeed60) { + gunturnyspeed60 = 0.0f; + } + + applySpeed(&gunrotx, anglev, &gunturnxspeed60, 0.0023267353f * speedmult, 0.0046534706f * speedmult, 0.1396041f * speedmult); + + if (gunrotx == anglev && gunturnxspeed60 <= 0.0046534706f * speedmult && -0.0046534706f * speedmult <= gunturnxspeed60) { + gunturnxspeed60 = 0.0f; + } #endif + chopper->gunroty = gunroty; + chopper->gunrotx = gunrotx; + chopper->gunturnyspeed60 = gunturnyspeed60; + chopper->gunturnxspeed60 = gunturnxspeed60; + + if (!(chopper->fireslotthing->unk00 % 2)) { + firing = false; + } + + node = modelGetPart(model->filedata, MODELPART_CHOPPER_GUNFLASH); + + if (node) { + rwdata = modelGetNodeRwData(model, node); + } + + if (firing) { + f32 totalrotx = chopper->gunrotx + chopper->rotx; + f32 totalroty = chopper->gunroty + chopper->roty; + + rot.x = sinf(totalroty) * cosf(totalrotx); + rot.y = sinf(totalrotx); + rot.z = cosf(totalroty) * cosf(totalrotx); + + projectileCreate(chopperprop, chopper->fireslotthing, &gunpos, &rot, WEAPON_CHOPPERGUN, targetprop); + + if (rwdata != NULL) { + rwdata->visible = true; + } + } else { + if (rwdata != NULL) { + rwdata->visible = false; + } + } + + chopper->fireslotthing->unk00++; +} + void chopperIncrementMovement(struct prop *prop, f32 goalroty, f32 goalrotx, struct coord *dir, bool firing) { struct defaultobj *obj = prop->obj; @@ -50031,7 +48340,7 @@ void chopperIncrementMovement(struct prop *prop, f32 goalroty, f32 goalrotx, str propDeregisterRooms(prop); roomsCopy(newrooms, prop->rooms); func0f069c70(&chopper->base, false, true); - func0f07b3f0(prop, firing); + chopperIncrementBarrel(prop, firing); if ((chopper->base.flags2 & OBJFLAG2_INVISIBLE) == 0 && objIsHealthy(&chopper->base)) { soundnum = g_Vars.stagenum == STAGE_EXTRACTION ? SFX_SHIP_HUM : SFX_810F; diff --git a/src/include/constants.h b/src/include/constants.h index ce07e841a..0ff652429 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -2138,7 +2138,7 @@ #define MODELPART_CHOPPER_0000 0x0000 // position #define MODELPART_CHOPPER_0001 0x0001 // position #define MODELPART_CHOPPER_0002 0x0002 // position -#define MODELPART_CHOPPER_0003 0x0003 // gunfire +#define MODELPART_CHOPPER_GUNFLASH 0x0003 // gunfire #define MODELPART_CHOPPER_0005 0x0005 // toggle #define MODELPART_CHRGUN_GUNFIRE 0x0000 // gunfire #define MODELPART_CHRGUN_0001 0x0001 // positionheld @@ -4233,7 +4233,7 @@ enum weaponnum { /*0x56*/ WEAPON_BOLT, /*0x57*/ WEAPON_BRIEFCASE2, /*0x58*/ WEAPON_SKROCKET, - /*0x59*/ WEAPON_59, + /*0x59*/ WEAPON_CHOPPERGUN, /*0x5a*/ WEAPON_WATCHLASER, /*0x5b*/ WEAPON_MPSHIELD, /*0x5c*/ WEAPON_DISABLED, diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index f20a9a28f..f28e7b439 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -185,7 +185,7 @@ f32 chopperGetTimer(struct chopperobj *heli); void chopperSetMaxDamage(struct chopperobj *obj, u16 health); f32 func0f07b164(struct coord *pos1, struct coord *pos2, struct coord *pos3, struct coord *pos4); void chopperFireRocket(struct chopperobj *chopper, bool side); -void func0f07b3f0(struct prop *prop, bool firing); +void chopperIncrementBarrel(struct prop *prop, bool firing); void chopperIncrementMovement(struct prop *prop, f32 goalroty, f32 goalrotx, struct coord *dir, bool firing); void chopperTickFall(struct prop *chopper); void chopperTickIdle(struct prop *chopper); diff --git a/src/include/types.h b/src/include/types.h index 1bda67aec..042969590 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2052,8 +2052,8 @@ struct chopperobj { // objtype 0x39 /*0xbc*/ bool targetvisible; /*0xc0*/ s32 timer60; /*0xc4*/ s32 patroltimer60; - /*0xc8*/ u32 gunturnyspeed60; - /*0xcc*/ u32 gunturnxspeed60; + /*0xc8*/ f32 gunturnyspeed60; + /*0xcc*/ f32 gunturnxspeed60; /*0xd0*/ f32 gunroty; /*0xd4*/ f32 gunrotx; /*0xd8*/ f32 barrelrotspeed;