From 65e979d1478c6ec0a20b00900b7c3bd4fe347761 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 12 Mar 2020 20:22:11 +1000 Subject: [PATCH] Decompile propPlayPickupSound --- src/game/game_190260.c | 8 +-- src/game/game_197600.c | 4 +- src/game/game_1999b0.c | 16 ++--- src/game/propobj.c | 103 +++++++++------------------------ src/include/game/game_197600.h | 2 +- src/include/game/game_1999b0.h | 2 +- src/include/game/propobj.h | 2 +- 7 files changed, 45 insertions(+), 92 deletions(-) diff --git a/src/game/game_190260.c b/src/game/game_190260.c index 19e67a180..1e724c489 100644 --- a/src/game/game_190260.c +++ b/src/game/game_190260.c @@ -580,7 +580,7 @@ u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr) result = 2; } } else { - chrGiveWeapon(chr, prop); + aibotGiveProp(chr, prop); result = 1; } @@ -851,7 +851,7 @@ glabel var7f1b8ea8 .L0f190ed8: /* f190ed8: 24500001 */ addiu $s0,$v0,0x1 /* f190edc: 02002025 */ or $a0,$s0,$zero -/* f190ee0: 0fc668c7 */ jal func0f19a31c +/* f190ee0: 0fc668c7 */ jal ammotypeGetWeapon /* f190ee4: afa30028 */ sw $v1,0x28($sp) /* f190ee8: 8fa30028 */ lw $v1,0x28($sp) /* f190eec: afa20068 */ sw $v0,0x68($sp) @@ -884,7 +884,7 @@ glabel var7f1b8ea8 /* f190f58: 0fc47bba */ jal dprint /* f190f5c: 00000000 */ sll $zero,$zero,0x0 /* f190f60: 8fa4008c */ lw $a0,0x8c($sp) -/* f190f64: 0fc65fdb */ jal chrGiveWeapon +/* f190f64: 0fc65fdb */ jal aibotGiveProp /* f190f68: 8fa50088 */ lw $a1,0x88($sp) /* f190f6c: 10000006 */ beqz $zero,.L0f190f88 /* f190f70: 8faa0064 */ lw $t2,0x64($sp) @@ -3862,7 +3862,7 @@ glabel var7f1b8f50 /* f193a90: 966d005e */ lhu $t5,0x5e($s3) /* f193a94: 59a0003f */ blezl $t5,.L0f193b94 /* f193a98: 26940001 */ addiu $s4,$s4,0x1 -/* f193a9c: 0fc668c7 */ jal func0f19a31c +/* f193a9c: 0fc668c7 */ jal ammotypeGetWeapon /* f193aa0: 02802025 */ or $a0,$s4,$zero /* f193aa4: 18400022 */ blez $v0,.L0f193b30 /* f193aa8: 00008025 */ or $s0,$zero,$zero diff --git a/src/game/game_197600.c b/src/game/game_197600.c index 68f3d9ae3..90a82951d 100644 --- a/src/game/game_197600.c +++ b/src/game/game_197600.c @@ -671,7 +671,7 @@ s16 aibotGetWeaponPad(struct chrdata *chr, u32 weaponnum) } GLOBAL_ASM( -glabel chrGiveWeapon +glabel aibotGiveProp /* f197f6c: 27bdffd0 */ addiu $sp,$sp,-48 /* f197f70: afb30020 */ sw $s3,0x20($sp) /* f197f74: 00809825 */ or $s3,$a0,$zero @@ -720,7 +720,7 @@ glabel chrGiveWeapon /* f198010: 9629005e */ lhu $t1,0x5e($s1) /* f198014: 59200008 */ blezl $t1,.L0f198038 /* f198018: 26100001 */ addiu $s0,$s0,0x1 -/* f19801c: 0fc668c7 */ jal func0f19a31c +/* f19801c: 0fc668c7 */ jal ammotypeGetWeapon /* f198020: 26040001 */ addiu $a0,$s0,0x1 /* f198024: 18400003 */ blez $v0,.L0f198034 /* f198028: 00402825 */ or $a1,$v0,$zero diff --git a/src/game/game_1999b0.c b/src/game/game_1999b0.c index 983b5192c..8536e30c4 100644 --- a/src/game/game_1999b0.c +++ b/src/game/game_1999b0.c @@ -732,15 +732,15 @@ u32 func0f19a2dc(u32 value) } } -u32 func0f19a31c(u32 value) +u32 ammotypeGetWeapon(u32 ammotype) { - switch (value) { - case 18: return 31; - case 7: return 30; - case 9: return 26; - case 12: return 34; - case 13: return 33; - case 14: return 32; + switch (ammotype) { + case AMMOTYPE_NBOMB: return WEAPON_NBOMB; + case AMMOTYPE_GRENADE: return WEAPON_GRENADE; + case AMMOTYPE_KNIFE: return WEAPON_COMBATKNIFE; + case AMMOTYPE_REMOTE_MINE: return WEAPON_REMOTEMINE; + case AMMOTYPE_PROXY_MINE: return WEAPON_PROXIMITYMINE; + case AMMOTYPE_TIMED_MINE: return WEAPON_TIMEDMINE; } return 0; diff --git a/src/game/propobj.c b/src/game/propobj.c index ead8704e5..5a0a7d466 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -38886,81 +38886,34 @@ void func0f087b0c(u32 arg0) } } -GLOBAL_ASM( -glabel propPlayPickupSound -/* f087c0c: 27bdffb8 */ addiu $sp,$sp,-72 -/* f087c10: 2402001a */ addiu $v0,$zero,0x1a -/* f087c14: afbf0044 */ sw $ra,0x44($sp) -/* f087c18: 10a20003 */ beq $a1,$v0,.L0f087c28 -/* f087c1c: afa40048 */ sw $a0,0x48($sp) -/* f087c20: 14a20003 */ bne $a1,$v0,.L0f087c30 -/* f087c24: 24010022 */ addiu $at,$zero,0x22 -.L0f087c28: -/* f087c28: 10000021 */ beqz $zero,.L0f087cb0 -/* f087c2c: 240600e9 */ addiu $a2,$zero,0xe9 -.L0f087c30: -/* f087c30: 10a1000d */ beq $a1,$at,.L0f087c68 -/* f087c34: 24010021 */ addiu $at,$zero,0x21 -/* f087c38: 10a1000b */ beq $a1,$at,.L0f087c68 -/* f087c3c: 24010020 */ addiu $at,$zero,0x20 -/* f087c40: 10a10009 */ beq $a1,$at,.L0f087c68 -/* f087c44: 2401003d */ addiu $at,$zero,0x3d -/* f087c48: 10a10007 */ beq $a1,$at,.L0f087c68 -/* f087c4c: 2401003e */ addiu $at,$zero,0x3e -/* f087c50: 10a10005 */ beq $a1,$at,.L0f087c68 -/* f087c54: 2401003f */ addiu $at,$zero,0x3f -/* f087c58: 10a10003 */ beq $a1,$at,.L0f087c68 -/* f087c5c: 24010035 */ addiu $at,$zero,0x35 -/* f087c60: 54a10004 */ bnel $a1,$at,.L0f087c74 -/* f087c64: 2401001e */ addiu $at,$zero,0x1e -.L0f087c68: -/* f087c68: 10000011 */ beqz $zero,.L0f087cb0 -/* f087c6c: 240600eb */ addiu $a2,$zero,0xeb -/* f087c70: 2401001e */ addiu $at,$zero,0x1e -.L0f087c74: -/* f087c74: 10a10007 */ beq $a1,$at,.L0f087c94 -/* f087c78: 24010055 */ addiu $at,$zero,0x55 -/* f087c7c: 10a10005 */ beq $a1,$at,.L0f087c94 -/* f087c80: 24010053 */ addiu $at,$zero,0x53 -/* f087c84: 10a10003 */ beq $a1,$at,.L0f087c94 -/* f087c88: 24010054 */ addiu $at,$zero,0x54 -/* f087c8c: 54a10004 */ bnel $a1,$at,.L0f087ca0 -/* f087c90: 2401001d */ addiu $at,$zero,0x1d -.L0f087c94: -/* f087c94: 10000006 */ beqz $zero,.L0f087cb0 -/* f087c98: 240600ea */ addiu $a2,$zero,0xea -/* f087c9c: 2401001d */ addiu $at,$zero,0x1d -.L0f087ca0: -/* f087ca0: 14a10003 */ bne $a1,$at,.L0f087cb0 -/* f087ca4: 240600e8 */ addiu $a2,$zero,0xe8 -/* f087ca8: 10000001 */ beqz $zero,.L0f087cb0 -/* f087cac: 240600f2 */ addiu $a2,$zero,0xf2 -.L0f087cb0: -/* f087cb0: 3c01bf80 */ lui $at,0xbf80 -/* f087cb4: 44810000 */ mtc1 $at,$f0 -/* f087cb8: 240effff */ addiu $t6,$zero,-1 -/* f087cbc: 240f0400 */ addiu $t7,$zero,0x400 -/* f087cc0: 2418ffff */ addiu $t8,$zero,-1 -/* f087cc4: afb8002c */ sw $t8,0x2c($sp) -/* f087cc8: afaf0014 */ sw $t7,0x14($sp) -/* f087ccc: afae0010 */ sw $t6,0x10($sp) -/* f087cd0: 00002025 */ or $a0,$zero,$zero -/* f087cd4: 8fa50048 */ lw $a1,0x48($sp) -/* f087cd8: 2407ffff */ addiu $a3,$zero,-1 -/* f087cdc: afa00018 */ sw $zero,0x18($sp) -/* f087ce0: afa0001c */ sw $zero,0x1c($sp) -/* f087ce4: afa00020 */ sw $zero,0x20($sp) -/* f087ce8: afa00028 */ sw $zero,0x28($sp) -/* f087cec: e7a00024 */ swc1 $f0,0x24($sp) -/* f087cf0: e7a00030 */ swc1 $f0,0x30($sp) -/* f087cf4: e7a00034 */ swc1 $f0,0x34($sp) -/* f087cf8: 0fc24e7e */ jal func0f0939f8 -/* f087cfc: e7a00038 */ swc1 $f0,0x38($sp) -/* f087d00: 8fbf0044 */ lw $ra,0x44($sp) -/* f087d04: 27bd0048 */ addiu $sp,$sp,0x48 -/* f087d08: 03e00008 */ jr $ra -/* f087d0c: 00000000 */ sll $zero,$zero,0x0 -); +u32 propPlayPickupSound(struct prop *prop, s32 weapon) +{ + s16 sound; + + if (weapon == WEAPON_COMBATKNIFE || weapon == WEAPON_COMBATKNIFE) { + sound = 0xe9; + } else if (weapon == WEAPON_REMOTEMINE + || weapon == WEAPON_PROXIMITYMINE + || weapon == WEAPON_TIMEDMINE + || weapon == WEAPON_COMMSRIDER + || weapon == WEAPON_TRACERBUG + || weapon == WEAPON_TARGETAMPLIFIER + || weapon == WEAPON_ECMMINE) { + sound = 0xeb; + } else if (weapon == WEAPON_GRENADE + || weapon == WEAPON_GRENADEROUND + || weapon == WEAPON_ROCKET + || weapon == WEAPON_HOMINGROCKET) { + sound = 0xea; + } else if (weapon == WEAPON_LASER) { + sound = 0xf2; + } else { + sound = 0xe8; + } + + return func0f0939f8(NULL, prop, sound, -1, + -1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1); +} GLOBAL_ASM( glabel func0f087d10 diff --git a/src/include/game/game_197600.h b/src/include/game/game_197600.h index 1eccd67fc..e85c352d3 100644 --- a/src/include/game/game_197600.h +++ b/src/include/game/game_197600.h @@ -13,7 +13,7 @@ u32 aibotGetInvItemType(struct chrdata *chr, u32 weaponnum); u32 func0f197e8c(void); void aibotGiveDualWeapon(struct chrdata *chr, u32 weaponnum); s16 aibotGetWeaponPad(struct chrdata *chr, u32 weaponnum); -void chrGiveWeapon(struct chrdata *chr, struct prop *prop); +void aibotGiveProp(struct chrdata *chr, struct prop *prop); u32 func0f198068(void); u32 func0f198278(void); u32 func0f1982d4(void); diff --git a/src/include/game/game_1999b0.h b/src/include/game/game_1999b0.h index 7be209945..86b2eb401 100644 --- a/src/include/game/game_1999b0.h +++ b/src/include/game/game_1999b0.h @@ -14,7 +14,7 @@ void aibotGiveAmmo(struct aibot *aibot, u32 ammotype, s32 quantity); u32 func0f199f84(void); bool func0f19a29c(u32 value, bool fallback); u32 func0f19a2dc(u32 value); -u32 func0f19a31c(u32 value); +u32 ammotypeGetWeapon(u32 ammotype); u32 func0f19a37c(void); u32 func0f19a60c(void); u32 func0f19a6d0(void); diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index 619c8a85d..3ce130aea 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -237,7 +237,7 @@ u32 func0f087638(void); u32 func0f087668(void); u32 func0f08791c(void); void func0f087b0c(u32 arg0); -u32 propPlayPickupSound(struct prop *prop, s32 weaponnum); +u32 propPlayPickupSound(struct prop *prop, s32 weapon); u32 func0f087d10(void); u32 func0f087e40(void); u32 func0f087fb0(void);