mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-02 00:14:10 -04:00
Decompile frIsAmmoWasted
This commit is contained in:
@@ -739,10 +739,10 @@ glabel func0f00cc8c
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f00ce3c
|
||||
/* f00ce3c: 3c03800a */ lui $v1,%hi(var8009cdc0)
|
||||
/* f00ce3c: 3c03800a */ lui $v1,%hi(g_ProxyMines)
|
||||
/* f00ce40: 3c02800a */ lui $v0,%hi(var8009ce38)
|
||||
/* f00ce44: 2442ce38 */ addiu $v0,$v0,%lo(var8009ce38)
|
||||
/* f00ce48: 2463cdc0 */ addiu $v1,$v1,%lo(var8009cdc0)
|
||||
/* f00ce48: 2463cdc0 */ addiu $v1,$v1,%lo(g_ProxyMines)
|
||||
.L0f00ce4c:
|
||||
/* f00ce4c: 24630004 */ addiu $v1,$v1,0x4
|
||||
/* f00ce50: 1462fffe */ bne $v1,$v0,.L0f00ce4c
|
||||
|
||||
+6
-6
@@ -40967,10 +40967,10 @@ struct weaponobj *weaponFindThrown(s32 weaponnum)
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08ab64
|
||||
/* f08ab64: 3c03800a */ lui $v1,%hi(var8009cdc0)
|
||||
/* f08ab64: 3c03800a */ lui $v1,%hi(g_ProxyMines)
|
||||
/* f08ab68: 3c02800a */ lui $v0,%hi(var8009ce38)
|
||||
/* f08ab6c: 2442ce38 */ addiu $v0,$v0,%lo(var8009ce38)
|
||||
/* f08ab70: 2463cdc0 */ addiu $v1,$v1,%lo(var8009cdc0)
|
||||
/* f08ab70: 2463cdc0 */ addiu $v1,$v1,%lo(g_ProxyMines)
|
||||
/* f08ab74: 8c6e0000 */ lw $t6,0x0($v1)
|
||||
.L0f08ab78:
|
||||
/* f08ab78: 55c00004 */ bnezl $t6,.L0f08ab8c
|
||||
@@ -40987,10 +40987,10 @@ glabel func0f08ab64
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08ab9c
|
||||
/* f08ab9c: 3c03800a */ lui $v1,%hi(var8009cdc0)
|
||||
/* f08ab9c: 3c03800a */ lui $v1,%hi(g_ProxyMines)
|
||||
/* f08aba0: 3c02800a */ lui $v0,%hi(var8009ce38)
|
||||
/* f08aba4: 2442ce38 */ addiu $v0,$v0,%lo(var8009ce38)
|
||||
/* f08aba8: 2463cdc0 */ addiu $v1,$v1,%lo(var8009cdc0)
|
||||
/* f08aba8: 2463cdc0 */ addiu $v1,$v1,%lo(g_ProxyMines)
|
||||
/* f08abac: 8c6e0000 */ lw $t6,0x0($v1)
|
||||
.L0f08abb0:
|
||||
/* f08abb0: 548e0004 */ bnel $a0,$t6,.L0f08abc4
|
||||
@@ -41013,7 +41013,7 @@ glabel var7f1aae88
|
||||
.text
|
||||
/* f08abd4: 27bdffe8 */ addiu $sp,$sp,-24
|
||||
/* f08abd8: f7b60010 */ sdc1 $f22,0x10($sp)
|
||||
/* f08abdc: 3c03800a */ lui $v1,%hi(var8009cdc0)
|
||||
/* f08abdc: 3c03800a */ lui $v1,%hi(g_ProxyMines)
|
||||
/* f08abe0: 3c017f1b */ lui $at,%hi(var7f1aae88)
|
||||
/* f08abe4: 3c0b800a */ lui $t3,%hi(var8009ce38)
|
||||
/* f08abe8: f7b40008 */ sdc1 $f20,0x8($sp)
|
||||
@@ -41021,7 +41021,7 @@ glabel var7f1aae88
|
||||
/* f08abf0: 00a03825 */ or $a3,$a1,$zero
|
||||
/* f08abf4: 256bce38 */ addiu $t3,$t3,%lo(var8009ce38)
|
||||
/* f08abf8: c436ae88 */ lwc1 $f22,%lo(var7f1aae88)($at)
|
||||
/* f08abfc: 2463cdc0 */ addiu $v1,$v1,%lo(var8009cdc0)
|
||||
/* f08abfc: 2463cdc0 */ addiu $v1,$v1,%lo(g_ProxyMines)
|
||||
/* f08ac00: 240a001e */ addiu $t2,$zero,0x1e
|
||||
/* f08ac04: 2409000f */ addiu $t1,$zero,0xf
|
||||
/* f08ac08: 24080001 */ addiu $t0,$zero,0x1
|
||||
|
||||
+143
-319
@@ -528,9 +528,9 @@ void frInitDefaults(void)
|
||||
g_FiringRangeData.scriptoffset = 0;
|
||||
g_FiringRangeData.scriptenabled = false;
|
||||
g_FiringRangeData.scriptsleep = 0;
|
||||
g_FiringRangeData.unk474 = 0;
|
||||
g_FiringRangeData.proxyendtimer = 0;
|
||||
g_FiringRangeData.unk465_04 = false;
|
||||
g_FiringRangeData.unk465_05 = true;
|
||||
g_FiringRangeData.ammohasgrace = true;
|
||||
g_FiringRangeData.unk476 = -1;
|
||||
}
|
||||
|
||||
@@ -2102,322 +2102,146 @@ glabel var7f1b94bc
|
||||
// return closesttarget;
|
||||
//}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f19f524
|
||||
/* f19f524: 27bdfd40 */ addiu $sp,$sp,-704
|
||||
/* f19f528: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f19f52c: 3c04800b */ lui $a0,%hi(g_FiringRangeData+0x456)
|
||||
/* f19f530: 0fc6749a */ jal frGetWeaponBySlot
|
||||
/* f19f534: 9484d176 */ lhu $a0,%lo(g_FiringRangeData+0x456)($a0)
|
||||
/* f19f538: afa202bc */ sw $v0,0x2bc($sp)
|
||||
/* f19f53c: 00402025 */ or $a0,$v0,$zero
|
||||
/* f19f540: 0fc2a685 */ jal weaponGetAmmoType
|
||||
/* f19f544: 00002825 */ or $a1,$zero,$zero
|
||||
/* f19f548: afa202b4 */ sw $v0,0x2b4($sp)
|
||||
/* f19f54c: 8fa402bc */ lw $a0,0x2bc($sp)
|
||||
/* f19f550: 0fc2a685 */ jal weaponGetAmmoType
|
||||
/* f19f554: 24050001 */ addiu $a1,$zero,0x1
|
||||
/* f19f558: 3c03800a */ lui $v1,%hi(g_Vars+0x284)
|
||||
/* f19f55c: 8c63a244 */ lw $v1,%lo(g_Vars+0x284)($v1)
|
||||
/* f19f560: 8fae02bc */ lw $t6,0x2bc($sp)
|
||||
/* f19f564: 2401001d */ addiu $at,$zero,0x1d
|
||||
/* f19f568: 00403825 */ or $a3,$v0,$zero
|
||||
/* f19f56c: 24650638 */ addiu $a1,$v1,0x638
|
||||
/* f19f570: 15c10003 */ bne $t6,$at,.L0f19f580
|
||||
/* f19f574: 24660ddc */ addiu $a2,$v1,0xddc
|
||||
/* f19f578: 10000102 */ b .L0f19f984
|
||||
/* f19f57c: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f580:
|
||||
/* f19f580: 8ccf0220 */ lw $t7,0x220($a2)
|
||||
/* f19f584: 8cb80220 */ lw $t8,0x220($a1)
|
||||
/* f19f588: 8fa402b4 */ lw $a0,0x2b4($sp)
|
||||
/* f19f58c: 01f8c821 */ addu $t9,$t7,$t8
|
||||
/* f19f590: afb902a0 */ sw $t9,0x2a0($sp)
|
||||
/* f19f594: 8caf0224 */ lw $t7,0x224($a1)
|
||||
/* f19f598: 8cce0224 */ lw $t6,0x224($a2)
|
||||
/* f19f59c: afa702b0 */ sw $a3,0x2b0($sp)
|
||||
/* f19f5a0: 01cfc021 */ addu $t8,$t6,$t7
|
||||
/* f19f5a4: 0fc2a5dc */ jal ammoGetQuantity
|
||||
/* f19f5a8: afb802a4 */ sw $t8,0x2a4($sp)
|
||||
/* f19f5ac: 8fb902a0 */ lw $t9,0x2a0($sp)
|
||||
/* f19f5b0: 8fa402b0 */ lw $a0,0x2b0($sp)
|
||||
/* f19f5b4: 03227021 */ addu $t6,$t9,$v0
|
||||
/* f19f5b8: 0fc2a5dc */ jal ammoGetQuantity
|
||||
/* f19f5bc: afae0298 */ sw $t6,0x298($sp)
|
||||
/* f19f5c0: 8fb80298 */ lw $t8,0x298($sp)
|
||||
/* f19f5c4: 8faf02a4 */ lw $t7,0x2a4($sp)
|
||||
/* f19f5c8: 1f0000ed */ bgtz $t8,.L0f19f980
|
||||
/* f19f5cc: 01e21821 */ addu $v1,$t7,$v0
|
||||
/* f19f5d0: 1c6000eb */ bgtz $v1,.L0f19f980
|
||||
/* f19f5d4: afa3029c */ sw $v1,0x29c($sp)
|
||||
/* f19f5d8: 3c06800b */ lui $a2,%hi(g_FiringRangeData)
|
||||
/* f19f5dc: 24c6cd20 */ addiu $a2,$a2,%lo(g_FiringRangeData)
|
||||
/* f19f5e0: 8cd90464 */ lw $t9,0x464($a2)
|
||||
/* f19f5e4: 00001025 */ or $v0,$zero,$zero
|
||||
/* f19f5e8: 3c03800a */ lui $v1,%hi(g_Explosions)
|
||||
/* f19f5ec: 00197b40 */ sll $t7,$t9,0xd
|
||||
/* f19f5f0: 05e10006 */ bgez $t7,.L0f19f60c
|
||||
/* f19f5f4: 24041ad0 */ addiu $a0,$zero,0x1ad0
|
||||
/* f19f5f8: 90d80465 */ lbu $t8,0x465($a2)
|
||||
/* f19f5fc: 00001025 */ or $v0,$zero,$zero
|
||||
/* f19f600: 3319fffb */ andi $t9,$t8,0xfffb
|
||||
/* f19f604: 100000df */ b .L0f19f984
|
||||
/* f19f608: a0d90465 */ sb $t9,0x465($a2)
|
||||
.L0f19f60c:
|
||||
/* f19f60c: 8c633430 */ lw $v1,%lo(g_Explosions)($v1)
|
||||
.L0f19f610:
|
||||
/* f19f610: 8c6e0000 */ lw $t6,0x0($v1)
|
||||
/* f19f614: 24420478 */ addiu $v0,$v0,0x478
|
||||
/* f19f618: 11c00003 */ beqz $t6,.L0f19f628
|
||||
/* f19f61c: 00000000 */ nop
|
||||
/* f19f620: 100000d8 */ b .L0f19f984
|
||||
/* f19f624: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f628:
|
||||
/* f19f628: 1444fff9 */ bne $v0,$a0,.L0f19f610
|
||||
/* f19f62c: 24630478 */ addiu $v1,$v1,1144
|
||||
/* f19f630: 8fa202bc */ lw $v0,0x2bc($sp)
|
||||
/* f19f634: 24010018 */ addiu $at,$zero,0x18
|
||||
/* f19f638: 3c0f800a */ lui $t7,%hi(g_Vars+0x284)
|
||||
/* f19f63c: 10410015 */ beq $v0,$at,.L0f19f694
|
||||
/* f19f640: 24010019 */ addiu $at,$zero,0x19
|
||||
/* f19f644: 10410013 */ beq $v0,$at,.L0f19f694
|
||||
/* f19f648: 24010017 */ addiu $at,$zero,0x17
|
||||
/* f19f64c: 10410011 */ beq $v0,$at,.L0f19f694
|
||||
/* f19f650: 24010012 */ addiu $at,$zero,0x12
|
||||
/* f19f654: 1041000f */ beq $v0,$at,.L0f19f694
|
||||
/* f19f658: 2401001a */ addiu $at,$zero,0x1a
|
||||
/* f19f65c: 1041000d */ beq $v0,$at,.L0f19f694
|
||||
/* f19f660: 2401001b */ addiu $at,$zero,0x1b
|
||||
/* f19f664: 1041000b */ beq $v0,$at,.L0f19f694
|
||||
/* f19f668: 2401001e */ addiu $at,$zero,0x1e
|
||||
/* f19f66c: 10410009 */ beq $v0,$at,.L0f19f694
|
||||
/* f19f670: 2401001f */ addiu $at,$zero,0x1f
|
||||
/* f19f674: 10410007 */ beq $v0,$at,.L0f19f694
|
||||
/* f19f678: 24010020 */ addiu $at,$zero,0x20
|
||||
/* f19f67c: 10410005 */ beq $v0,$at,.L0f19f694
|
||||
/* f19f680: 24010021 */ addiu $at,$zero,0x21
|
||||
/* f19f684: 10410003 */ beq $v0,$at,.L0f19f694
|
||||
/* f19f688: 24010022 */ addiu $at,$zero,0x22
|
||||
/* f19f68c: 144100ba */ bne $v0,$at,.L0f19f978
|
||||
/* f19f690: 00000000 */ nop
|
||||
.L0f19f694:
|
||||
/* f19f694: 8defa244 */ lw $t7,%lo(g_Vars+0x284)($t7)
|
||||
/* f19f698: 27a50064 */ addiu $a1,$sp,0x64
|
||||
/* f19f69c: 8de400bc */ lw $a0,0xbc($t7)
|
||||
/* f19f6a0: 0fc195e9 */ jal roomsCopy
|
||||
/* f19f6a4: 24840028 */ addiu $a0,$a0,0x0028
|
||||
/* f19f6a8: 3c18800a */ lui $t8,%hi(g_Vars+0x284)
|
||||
/* f19f6ac: 8f18a244 */ lw $t8,%lo(g_Vars+0x284)($t8)
|
||||
/* f19f6b0: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f19f6b4: 00001825 */ or $v1,$zero,$zero
|
||||
/* f19f6b8: 8f0200bc */ lw $v0,0xbc($t8)
|
||||
/* f19f6bc: 84590028 */ lh $t9,0x28($v0)
|
||||
/* f19f6c0: 53210015 */ beql $t9,$at,.L0f19f718
|
||||
/* f19f6c4: 27a40064 */ addiu $a0,$sp,0x64
|
||||
/* f19f6c8: 84440028 */ lh $a0,0x28($v0)
|
||||
/* f19f6cc: 27a5004c */ addiu $a1,$sp,0x4c
|
||||
.L0f19f6d0:
|
||||
/* f19f6d0: 2406000a */ addiu $a2,$zero,0xa
|
||||
/* f19f6d4: 0fc5916a */ jal func0f1645a8
|
||||
/* f19f6d8: afa30020 */ sw $v1,0x20($sp)
|
||||
/* f19f6dc: 27a4004c */ addiu $a0,$sp,0x4c
|
||||
/* f19f6e0: 27a50064 */ addiu $a1,$sp,0x64
|
||||
/* f19f6e4: 0fc195f6 */ jal func0f0657d8
|
||||
/* f19f6e8: 24060014 */ addiu $a2,$zero,0x14
|
||||
/* f19f6ec: 3c0e800a */ lui $t6,%hi(g_Vars+0x284)
|
||||
/* f19f6f0: 8dcea244 */ lw $t6,%lo(g_Vars+0x284)($t6)
|
||||
/* f19f6f4: 8fa30020 */ lw $v1,0x20($sp)
|
||||
/* f19f6f8: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f19f6fc: 8dcf00bc */ lw $t7,0xbc($t6)
|
||||
/* f19f700: 24630002 */ addiu $v1,$v1,0x2
|
||||
/* f19f704: 01e3c021 */ addu $t8,$t7,$v1
|
||||
/* f19f708: 87040028 */ lh $a0,0x28($t8)
|
||||
/* f19f70c: 5481fff0 */ bnel $a0,$at,.L0f19f6d0
|
||||
/* f19f710: 27a5004c */ addiu $a1,$sp,0x4c
|
||||
/* f19f714: 27a40064 */ addiu $a0,$sp,0x64
|
||||
.L0f19f718:
|
||||
/* f19f718: 27a50090 */ addiu $a1,$sp,0x90
|
||||
/* f19f71c: 0fc197e0 */ jal roomGetProps
|
||||
/* f19f720: 24060100 */ addiu $a2,$zero,0x100
|
||||
/* f19f724: 87ae0090 */ lh $t6,0x90($sp)
|
||||
/* f19f728: 27b90090 */ addiu $t9,$sp,0x90
|
||||
/* f19f72c: 03203025 */ or $a2,$t9,$zero
|
||||
/* f19f730: 05c00091 */ bltz $t6,.L0f19f978
|
||||
/* f19f734: 3c0f800a */ lui $t7,%hi(g_Vars+0x338)
|
||||
/* f19f738: 8defa2f8 */ lw $t7,%lo(g_Vars+0x338)($t7)
|
||||
/* f19f73c: 87230000 */ lh $v1,0x0($t9)
|
||||
/* f19f740: 241f0056 */ addiu $ra,$zero,0x56
|
||||
/* f19f744: 240d0054 */ addiu $t5,$zero,0x54
|
||||
/* f19f748: 240c0053 */ addiu $t4,$zero,0x53
|
||||
/* f19f74c: 240b0048 */ addiu $t3,$zero,0x48
|
||||
/* f19f750: 240a0021 */ addiu $t2,$zero,0x21
|
||||
/* f19f754: 24090020 */ addiu $t1,$zero,0x20
|
||||
/* f19f758: 24080022 */ addiu $t0,$zero,0x22
|
||||
/* f19f75c: 24070055 */ addiu $a3,$zero,0x55
|
||||
/* f19f760: 24050004 */ addiu $a1,$zero,0x4
|
||||
/* f19f764: afaf0020 */ sw $t7,0x20($sp)
|
||||
.L0f19f768:
|
||||
/* f19f768: 006b0019 */ multu $v1,$t3
|
||||
/* f19f76c: 8fae0020 */ lw $t6,0x20($sp)
|
||||
/* f19f770: 0000c012 */ mflo $t8
|
||||
/* f19f774: 030e2021 */ addu $a0,$t8,$t6
|
||||
/* f19f778: 8c82001c */ lw $v0,0x1c($a0)
|
||||
/* f19f77c: 10400008 */ beqz $v0,.L0f19f7a0
|
||||
/* f19f780: 00000000 */ nop
|
||||
/* f19f784: 90590000 */ lbu $t9,0x0($v0)
|
||||
/* f19f788: 14b90005 */ bne $a1,$t9,.L0f19f7a0
|
||||
/* f19f78c: 00000000 */ nop
|
||||
/* f19f790: 8c4f0004 */ lw $t7,0x4($v0)
|
||||
/* f19f794: 91f8005c */ lbu $t8,0x5c($t7)
|
||||
/* f19f798: 1138001c */ beq $t1,$t8,.L0f19f80c
|
||||
/* f19f79c: 00000000 */ nop
|
||||
.L0f19f7a0:
|
||||
/* f19f7a0: 10400008 */ beqz $v0,.L0f19f7c4
|
||||
/* f19f7a4: 00000000 */ nop
|
||||
/* f19f7a8: 904e0000 */ lbu $t6,0x0($v0)
|
||||
/* f19f7ac: 14ae0005 */ bne $a1,$t6,.L0f19f7c4
|
||||
/* f19f7b0: 00000000 */ nop
|
||||
/* f19f7b4: 8c590004 */ lw $t9,0x4($v0)
|
||||
/* f19f7b8: 932f005c */ lbu $t7,0x5c($t9)
|
||||
/* f19f7bc: 110f0013 */ beq $t0,$t7,.L0f19f80c
|
||||
/* f19f7c0: 00000000 */ nop
|
||||
.L0f19f7c4:
|
||||
/* f19f7c4: 10400008 */ beqz $v0,.L0f19f7e8
|
||||
/* f19f7c8: 00000000 */ nop
|
||||
/* f19f7cc: 90580000 */ lbu $t8,0x0($v0)
|
||||
/* f19f7d0: 14b80005 */ bne $a1,$t8,.L0f19f7e8
|
||||
/* f19f7d4: 00000000 */ nop
|
||||
/* f19f7d8: 8c4e0004 */ lw $t6,0x4($v0)
|
||||
/* f19f7dc: 91d9005c */ lbu $t9,0x5c($t6)
|
||||
/* f19f7e0: 1159000a */ beq $t2,$t9,.L0f19f80c
|
||||
/* f19f7e4: 00000000 */ nop
|
||||
.L0f19f7e8:
|
||||
/* f19f7e8: 5040000b */ beqzl $v0,.L0f19f818
|
||||
/* f19f7ec: 90990000 */ lbu $t9,0x0($a0)
|
||||
/* f19f7f0: 904f0000 */ lbu $t7,0x0($v0)
|
||||
/* f19f7f4: 54af0008 */ bnel $a1,$t7,.L0f19f818
|
||||
/* f19f7f8: 90990000 */ lbu $t9,0x0($a0)
|
||||
/* f19f7fc: 8c580004 */ lw $t8,0x4($v0)
|
||||
/* f19f800: 930e005c */ lbu $t6,0x5c($t8)
|
||||
/* f19f804: 54ee0004 */ bnel $a3,$t6,.L0f19f818
|
||||
/* f19f808: 90990000 */ lbu $t9,0x0($a0)
|
||||
.L0f19f80c:
|
||||
/* f19f80c: 1000005d */ b .L0f19f984
|
||||
/* f19f810: 00001025 */ or $v0,$zero,$zero
|
||||
/* f19f814: 90990000 */ lbu $t9,0x0($a0)
|
||||
.L0f19f818:
|
||||
/* f19f818: 2401001e */ addiu $at,$zero,0x1e
|
||||
/* f19f81c: 54b90053 */ bnel $a1,$t9,.L0f19f96c
|
||||
/* f19f820: 84c30002 */ lh $v1,0x2($a2)
|
||||
/* f19f824: 8c830004 */ lw $v1,0x4($a0)
|
||||
/* f19f828: 9062005c */ lbu $v0,0x5c($v1)
|
||||
/* f19f82c: 11820007 */ beq $t4,$v0,.L0f19f84c
|
||||
/* f19f830: 00000000 */ nop
|
||||
/* f19f834: 11a20005 */ beq $t5,$v0,.L0f19f84c
|
||||
/* f19f838: 00000000 */ nop
|
||||
/* f19f83c: 10410003 */ beq $v0,$at,.L0f19f84c
|
||||
/* f19f840: 00000000 */ nop
|
||||
/* f19f844: 14e20003 */ bne $a3,$v0,.L0f19f854
|
||||
/* f19f848: 2401001a */ addiu $at,$zero,0x1a
|
||||
.L0f19f84c:
|
||||
/* f19f84c: 1000004d */ b .L0f19f984
|
||||
/* f19f850: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f854:
|
||||
/* f19f854: 53e20004 */ beql $ra,$v0,.L0f19f868
|
||||
/* f19f858: 8c6f0040 */ lw $t7,0x40($v1)
|
||||
/* f19f85c: 14410007 */ bne $v0,$at,.L0f19f87c
|
||||
/* f19f860: 00000000 */ nop
|
||||
/* f19f864: 8c6f0040 */ lw $t7,0x40($v1)
|
||||
.L0f19f868:
|
||||
/* f19f868: 31f80080 */ andi $t8,$t7,0x80
|
||||
/* f19f86c: 5300003f */ beqzl $t8,.L0f19f96c
|
||||
/* f19f870: 84c30002 */ lh $v1,0x2($a2)
|
||||
/* f19f874: 10000043 */ b .L0f19f984
|
||||
/* f19f878: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f87c:
|
||||
/* f19f87c: 11220003 */ beq $t1,$v0,.L0f19f88c
|
||||
/* f19f880: 00000000 */ nop
|
||||
/* f19f884: 15020003 */ bne $t0,$v0,.L0f19f894
|
||||
/* f19f888: 00000000 */ nop
|
||||
.L0f19f88c:
|
||||
/* f19f88c: 1000003d */ b .L0f19f984
|
||||
/* f19f890: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f894:
|
||||
/* f19f894: 55420035 */ bnel $t2,$v0,.L0f19f96c
|
||||
/* f19f898: 84c30002 */ lh $v1,0x2($a2)
|
||||
/* f19f89c: 3c06800b */ lui $a2,%hi(g_FiringRangeData)
|
||||
/* f19f8a0: 24c6cd20 */ addiu $a2,$a2,%lo(g_FiringRangeData)
|
||||
/* f19f8a4: 84c20474 */ lh $v0,0x474($a2)
|
||||
/* f19f8a8: 2405ff01 */ addiu $a1,$zero,-255
|
||||
/* f19f8ac: 14a20003 */ bne $a1,$v0,.L0f19f8bc
|
||||
/* f19f8b0: 00000000 */ nop
|
||||
/* f19f8b4: 10000033 */ b .L0f19f984
|
||||
/* f19f8b8: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f8bc:
|
||||
/* f19f8bc: 14400014 */ bnez $v0,.L0f19f910
|
||||
/* f19f8c0: 3c0f800a */ lui $t7,%hi(g_Menus+0x2220)
|
||||
/* f19f8c4: 8fa402bc */ lw $a0,0x2bc($sp)
|
||||
/* f19f8c8: 0fc2a685 */ jal weaponGetAmmoType
|
||||
/* f19f8cc: 00002825 */ or $a1,$zero,$zero
|
||||
/* f19f8d0: 3c0e800a */ lui $t6,%hi(g_Vars+0x284)
|
||||
/* f19f8d4: 8dcea244 */ lw $t6,%lo(g_Vars+0x284)($t6)
|
||||
/* f19f8d8: 00402025 */ or $a0,$v0,$zero
|
||||
/* f19f8dc: 25d90638 */ addiu $t9,$t6,0x638
|
||||
/* f19f8e0: 0fc2a5dc */ jal ammoGetQuantity
|
||||
/* f19f8e4: afb90034 */ sw $t9,0x34($sp)
|
||||
/* f19f8e8: 8faf0034 */ lw $t7,0x34($sp)
|
||||
/* f19f8ec: 2419012c */ addiu $t9,$zero,0x12c
|
||||
/* f19f8f0: 3c01800b */ lui $at,%hi(g_FiringRangeData+0x474)
|
||||
/* f19f8f4: 8df80220 */ lw $t8,%lo(g_Menus+0x2220)($t7)
|
||||
/* f19f8f8: 03027021 */ addu $t6,$t8,$v0
|
||||
/* f19f8fc: 15c00002 */ bnez $t6,.L0f19f908
|
||||
/* f19f900: 00000000 */ nop
|
||||
/* f19f904: a439d194 */ sh $t9,%lo(g_FiringRangeData+0x474)($at)
|
||||
.L0f19f908:
|
||||
/* f19f908: 1000001e */ b .L0f19f984
|
||||
/* f19f90c: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f910:
|
||||
/* f19f910: 8def9ff8 */ lw $t7,-0x6008($t7)
|
||||
/* f19f914: 3c04800a */ lui $a0,%hi(var8009ce38)
|
||||
/* f19f918: 2484ce38 */ addiu $a0,$a0,%lo(var8009ce38)
|
||||
/* f19f91c: 004fc023 */ subu $t8,$v0,$t7
|
||||
/* f19f920: a4d80474 */ sh $t8,0x474($a2)
|
||||
/* f19f924: 84ce0474 */ lh $t6,0x474($a2)
|
||||
/* f19f928: 3c02800a */ lui $v0,%hi(var8009cdc0)
|
||||
/* f19f92c: 2442cdc0 */ addiu $v0,$v0,%lo(var8009cdc0)
|
||||
/* f19f930: 1dc0000b */ bgtz $t6,.L0f19f960
|
||||
/* f19f934: 00000000 */ nop
|
||||
/* f19f938: 8c430000 */ lw $v1,0x0($v0)
|
||||
.L0f19f93c:
|
||||
/* f19f93c: 24420004 */ addiu $v0,$v0,0x4
|
||||
/* f19f940: 10600002 */ beqz $v1,.L0f19f94c
|
||||
/* f19f944: 00000000 */ nop
|
||||
/* f19f948: a4600062 */ sh $zero,0x62($v1)
|
||||
.L0f19f94c:
|
||||
/* f19f94c: 5444fffb */ bnel $v0,$a0,.L0f19f93c
|
||||
/* f19f950: 8c430000 */ lw $v1,0x0($v0)
|
||||
/* f19f954: a4c50474 */ sh $a1,0x474($a2)
|
||||
/* f19f958: 1000000a */ b .L0f19f984
|
||||
/* f19f95c: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f19f960:
|
||||
/* f19f960: 10000008 */ b .L0f19f984
|
||||
/* f19f964: 00001025 */ or $v0,$zero,$zero
|
||||
/* f19f968: 84c30002 */ lh $v1,0x2($a2)
|
||||
.L0f19f96c:
|
||||
/* f19f96c: 24c60002 */ addiu $a2,$a2,0x2
|
||||
/* f19f970: 0461ff7d */ bgez $v1,.L0f19f768
|
||||
/* f19f974: 00000000 */ nop
|
||||
.L0f19f978:
|
||||
/* f19f978: 10000002 */ b .L0f19f984
|
||||
/* f19f97c: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f19f980:
|
||||
/* f19f980: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f19f984:
|
||||
/* f19f984: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f19f988: 27bd02c0 */ addiu $sp,$sp,0x2c0
|
||||
/* f19f98c: 03e00008 */ jr $ra
|
||||
/* f19f990: 00000000 */ nop
|
||||
);
|
||||
bool frIsAmmoWasted(void)
|
||||
{
|
||||
s32 weaponnum = frGetWeaponBySlot(g_FiringRangeData.slot);
|
||||
s32 i;
|
||||
s32 priammotype = weaponGetAmmoType(weaponnum, 0);
|
||||
s32 secammotype = weaponGetAmmoType(weaponnum, 1);
|
||||
struct hand *hand0 = &g_Vars.currentplayer->hands[0];
|
||||
struct hand *hand1 = &g_Vars.currentplayer->hands[1];
|
||||
s32 ammoloaded[2];
|
||||
s32 ammototal[2];
|
||||
s16 *propnumptr;
|
||||
s16 propnums[258];
|
||||
s16 rooms20[22];
|
||||
s16 rooms10[12];
|
||||
u32 stack[4];
|
||||
s32 ammotype;
|
||||
struct hand *hand;
|
||||
struct prop *prop;
|
||||
struct prop *child;
|
||||
|
||||
// Laser has unlimited ammo
|
||||
if (weaponnum == WEAPON_LASER) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if player has ammo
|
||||
ammoloaded[0] = hand0->loadedammo[0] + hand1->loadedammo[0];
|
||||
ammoloaded[1] = hand0->loadedammo[1] + hand1->loadedammo[1];
|
||||
ammototal[0] = ammoGetQuantity(priammotype) + ammoloaded[0];
|
||||
ammototal[1] = ammoGetQuantity(secammotype) + ammoloaded[1];
|
||||
|
||||
if (ammototal[0] <= 0 && ammototal[1] <= 0) {
|
||||
// Don't do any further checks if this is the first frame where we've
|
||||
// gotten this far. I'm guessing this fixes a frame perfect bug, however
|
||||
// testing with this check removed doesn't cause any unusual behaviour.
|
||||
if (g_FiringRangeData.ammohasgrace) {
|
||||
g_FiringRangeData.ammohasgrace = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if there are any explosions
|
||||
for (i = 0; i != 6; i++) {
|
||||
if (g_Explosions[i].unk00) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Check projectiles
|
||||
if (weaponnum == WEAPON_ROCKETLAUNCHER
|
||||
|| weaponnum == WEAPON_SLAYER
|
||||
|| weaponnum == WEAPON_DEVASTATOR
|
||||
|| weaponnum == WEAPON_SUPERDRAGON
|
||||
|| weaponnum == WEAPON_COMBATKNIFE
|
||||
|| weaponnum == WEAPON_CROSSBOW
|
||||
|| weaponnum == WEAPON_GRENADE
|
||||
|| weaponnum == WEAPON_NBOMB
|
||||
|| weaponnum == WEAPON_TIMEDMINE
|
||||
|| weaponnum == WEAPON_PROXIMITYMINE
|
||||
|| weaponnum == WEAPON_REMOTEMINE) {
|
||||
roomsCopy(g_Vars.currentplayer->prop->rooms, rooms20);
|
||||
|
||||
for (i = 0; g_Vars.currentplayer->prop->rooms[i] != -1; i++) {
|
||||
func0f1645a8(g_Vars.currentplayer->prop->rooms[i], rooms10, 10);
|
||||
func0f0657d8(rooms10, rooms20, 20);
|
||||
}
|
||||
|
||||
roomGetProps(rooms20, propnums, 256);
|
||||
propnumptr = propnums;
|
||||
|
||||
while (*propnumptr >= 0) {
|
||||
prop = &g_Vars.props[*propnumptr];
|
||||
child = prop->child;
|
||||
|
||||
if ((child && child->type == PROPTYPE_WEAPON && child->weapon->weaponnum == WEAPON_TIMEDMINE)
|
||||
|| (child && child->type == PROPTYPE_WEAPON && child->weapon->weaponnum == WEAPON_REMOTEMINE)
|
||||
|| (child && child->type == PROPTYPE_WEAPON && child->weapon->weaponnum == WEAPON_PROXIMITYMINE)
|
||||
|| (child && child->type == PROPTYPE_WEAPON && child->weapon->weaponnum == WEAPON_GRENADEROUND)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (prop->type == PROPTYPE_WEAPON) {
|
||||
if (prop->weapon->weaponnum == WEAPON_ROCKET
|
||||
|| prop->weapon->weaponnum == WEAPON_HOMINGROCKET
|
||||
|| prop->weapon->weaponnum == WEAPON_GRENADE
|
||||
|| prop->weapon->weaponnum == WEAPON_GRENADEROUND) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (prop->weapon->weaponnum == WEAPON_BOLT
|
||||
|| prop->weapon->weaponnum == WEAPON_COMBATKNIFE) {
|
||||
if (prop->obj->hidden & OBJHFLAG_00000080) {
|
||||
return false;
|
||||
}
|
||||
} else if (prop->weapon->weaponnum == WEAPON_TIMEDMINE
|
||||
|| prop->weapon->weaponnum == WEAPON_REMOTEMINE) {
|
||||
return false;
|
||||
} else if (prop->weapon->weaponnum == WEAPON_PROXIMITYMINE) {
|
||||
if (g_FiringRangeData.proxyendtimer == -255) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (g_FiringRangeData.proxyendtimer == 0) {
|
||||
// Initial state - set the timer to 5 seconds if player is now out of mines
|
||||
ammotype = weaponGetAmmoType(weaponnum, 0);
|
||||
hand = &g_Vars.currentplayer->hands[0];
|
||||
|
||||
if (ammoGetQuantity(ammotype) + hand->loadedammo[0] == 0) {
|
||||
g_FiringRangeData.proxyendtimer = 300;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
g_FiringRangeData.proxyendtimer -= g_Vars.lvupdate240_60;
|
||||
|
||||
if (g_FiringRangeData.proxyendtimer <= 0) {
|
||||
// Timer has just hit zero - deactivate (or explode?) all mines
|
||||
for (i = 0; i < ARRAYCOUNT(g_ProxyMines); i++) {
|
||||
if (g_ProxyMines[i]) {
|
||||
g_ProxyMines[i]->unk62 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
g_FiringRangeData.proxyendtimer = -255;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
propnumptr++;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel frTick
|
||||
@@ -3134,7 +2958,7 @@ glabel var7f1b94e4
|
||||
/* f1a036c: 10000161 */ b .L0f1a08f4
|
||||
/* f1a0370: 8fbf007c */ lw $ra,0x7c($sp)
|
||||
.L0f1a0374:
|
||||
/* f1a0374: 0fc67d49 */ jal func0f19f524
|
||||
/* f1a0374: 0fc67d49 */ jal frIsAmmoWasted
|
||||
/* f1a0378: 00000000 */ nop
|
||||
/* f1a037c: 50400006 */ beqzl $v0,.L0f1a0398
|
||||
/* f1a0380: 92a20005 */ lbu $v0,0x5($s5)
|
||||
|
||||
+1
-30
@@ -15283,36 +15283,7 @@ u32 var8009cdb0 = 0;
|
||||
u32 var8009cdb4 = 0;
|
||||
u32 var8009cdb8 = 0;
|
||||
u32 var8009cdbc = 0;
|
||||
u32 var8009cdc0 = 0;
|
||||
u32 var8009cdc4 = 0;
|
||||
u32 var8009cdc8 = 0;
|
||||
u32 var8009cdcc = 0;
|
||||
u32 var8009cdd0 = 0;
|
||||
u32 var8009cdd4 = 0;
|
||||
u32 var8009cdd8 = 0;
|
||||
u32 var8009cddc = 0;
|
||||
u32 var8009cde0 = 0;
|
||||
u32 var8009cde4 = 0;
|
||||
u32 var8009cde8 = 0;
|
||||
u32 var8009cdec = 0;
|
||||
u32 var8009cdf0 = 0;
|
||||
u32 var8009cdf4 = 0;
|
||||
u32 var8009cdf8 = 0;
|
||||
u32 var8009cdfc = 0;
|
||||
u32 var8009ce00 = 0;
|
||||
u32 var8009ce04 = 0;
|
||||
u32 var8009ce08 = 0;
|
||||
u32 var8009ce0c = 0;
|
||||
u32 var8009ce10 = 0;
|
||||
u32 var8009ce14 = 0;
|
||||
u32 var8009ce18 = 0;
|
||||
u32 var8009ce1c = 0;
|
||||
u32 var8009ce20 = 0;
|
||||
u32 var8009ce24 = 0;
|
||||
u32 var8009ce28 = 0;
|
||||
u32 var8009ce2c = 0;
|
||||
u32 var8009ce30 = 0;
|
||||
u32 var8009ce34 = 0;
|
||||
struct weaponobj *g_ProxyMines[30] = {NULL};
|
||||
u32 var8009ce38 = 0;
|
||||
u32 var8009ce3c = 0;
|
||||
u32 var8009ce40 = 0;
|
||||
|
||||
@@ -89,7 +89,7 @@ u32 func0f16397c(void);
|
||||
void func0f163e34(void);
|
||||
u32 func0f164150(void);
|
||||
u32 func0f164534(void);
|
||||
void func0f1645a8(s16 room, s16 *rooms, u32 arg2);
|
||||
u32 func0f1645a8(s16 room, s16 *rooms, u32 arg2);
|
||||
u32 func0f1646b8(void);
|
||||
u32 func0f164748(void);
|
||||
u32 func0f1648cc(void);
|
||||
|
||||
@@ -54,7 +54,7 @@ bool func0f19f220(struct prop *prop);
|
||||
f32 func0f19f294(struct coord *a, f32 angle, struct coord *b);
|
||||
bool func0f19f2ec(struct prop *prop, struct coord *pos);
|
||||
struct prop *frChooseAutogunTarget(struct coord *arg0);
|
||||
u32 func0f19f524(void);
|
||||
bool frIsAmmoWasted(void);
|
||||
void frTick(void);
|
||||
void func0f1a0924(struct prop *prop);
|
||||
bool frChooseFarsightTarget(void);
|
||||
|
||||
@@ -552,7 +552,7 @@ extern u32 var8009cda0;
|
||||
extern u32 var8009cda4;
|
||||
extern u32 var8009cdac;
|
||||
extern u32 var8009cdb0;
|
||||
extern u32 var8009cdc0;
|
||||
extern struct weaponobj *g_ProxyMines[30];
|
||||
extern u32 var8009ce38;
|
||||
extern u32 var8009ce40;
|
||||
extern u32 var8009ce44;
|
||||
|
||||
+3
-2
@@ -1214,6 +1214,7 @@ struct weaponobj { // objtype 0x08
|
||||
/**
|
||||
* Appears to have multiple uses:
|
||||
* Grenades = timer?
|
||||
* Proxy mines = timer? Or isarmed
|
||||
* CTC briefcase = team index
|
||||
*/
|
||||
/*0x62*/ s16 unk62;
|
||||
@@ -5345,7 +5346,7 @@ struct frdata {
|
||||
/*0x465*/ u8 unk465_00 : 3;
|
||||
/*0x465*/ u8 donelighting : 1;
|
||||
/*0x465*/ u8 unk465_04 : 1;
|
||||
/*0x465*/ u8 unk465_05 : 1;
|
||||
/*0x465*/ u8 ammohasgrace : 1;
|
||||
/*0x465*/ u8 unk465_06 : 2;
|
||||
/*0x466*/ u8 unk466;
|
||||
/*0x467*/ u8 scriptoffset;
|
||||
@@ -5354,7 +5355,7 @@ struct frdata {
|
||||
/*0x470*/ u8 unk470;
|
||||
/*0x471*/ u8 feedbackzone;
|
||||
/*0x472*/ s8 feedbackttl;
|
||||
/*0x474*/ u16 unk474;
|
||||
/*0x474*/ s16 proxyendtimer;
|
||||
/*0x476*/ s16 unk476;
|
||||
/*0x478*/ u32 unk478;
|
||||
/*0x47c*/ u32 unk47c;
|
||||
|
||||
Reference in New Issue
Block a user