From 88d80e2a569774c49ddb1b3139448e34d3b64385 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 11 May 2020 22:56:05 +1000 Subject: [PATCH] Decompile chrGiveWeapon --- src/game/chr/chraction.c | 4 ++-- src/game/chr/chraicommands.c | 16 ++++++++-------- src/game/game_0b63b0.c | 20 ++++++++++---------- src/game/game_190260.c | 4 ++-- src/game/game_197600.c | 2 +- src/game/propobj.c | 16 ++++++---------- src/include/game/propobj.h | 4 ++-- 7 files changed, 31 insertions(+), 35 deletions(-) diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index 49cb64780..31b7d9f4c 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -15016,9 +15016,9 @@ s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 entitytype, u32 entityid) } if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR) { - prop = func0f08bad0(chr, 0x112, WEAPON_NBOMB, flags); + prop = chrGiveWeapon(chr, 0x112, WEAPON_NBOMB, flags); } else { - prop = func0f08bad0(chr, 0x112, WEAPON_GRENADE, flags); + prop = chrGiveWeapon(chr, 0x112, WEAPON_GRENADE, flags); } if (prop) { diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 94031b6bc..5cfe1027f 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -4425,7 +4425,7 @@ bool aiTryEquipWeapon(void) flags &= ~0x10000000; flags |= 0x20000000; - prop = func0f08bad0(g_Vars.chrdata, model, cmd[4], flags); + prop = chrGiveWeapon(g_Vars.chrdata, model, cmd[4], flags); } else if (cheatIsActive(CHEAT_ENEMYROCKETS)) { switch (cmd[4]) { case WEAPON_FALCON2: @@ -4459,21 +4459,21 @@ bool aiTryEquipWeapon(void) case WEAPON_TIMEDMINE: case WEAPON_PROXIMITYMINE: case WEAPON_REMOTEMINE: - prop = func0f08bad0(g_Vars.chrdata, MODEL_CHRDYROCKET, WEAPON_ROCKETLAUNCHER, flags); + prop = chrGiveWeapon(g_Vars.chrdata, MODEL_CHRDYROCKET, WEAPON_ROCKETLAUNCHER, flags); break; case WEAPON_K7AVENGER: if (g_Vars.stagenum == STAGE_INVESTIGATION && getDifficulty() == DIFF_PA) { - prop = func0f08bad0(g_Vars.chrdata, model, cmd[4], flags); + prop = chrGiveWeapon(g_Vars.chrdata, model, cmd[4], flags); } else { - prop = func0f08bad0(g_Vars.chrdata, MODEL_CHRDYROCKET, WEAPON_ROCKETLAUNCHER, flags); + prop = chrGiveWeapon(g_Vars.chrdata, MODEL_CHRDYROCKET, WEAPON_ROCKETLAUNCHER, flags); } break; default: - prop = func0f08bad0(g_Vars.chrdata, model, cmd[4], flags); + prop = chrGiveWeapon(g_Vars.chrdata, model, cmd[4], flags); break; } } else { - prop = func0f08bad0(g_Vars.chrdata, model, cmd[4], flags); + prop = chrGiveWeapon(g_Vars.chrdata, model, cmd[4], flags); } } @@ -4543,7 +4543,7 @@ bool aiDuplicateChr(void) if (srcweapon0prop) { srcweapon0 = srcweapon0prop->weapon; - cloneweapon0prop = func0f08bad0(clone, srcweapon0->base.obj, srcweapon0->weapon_id, 0); + cloneweapon0prop = chrGiveWeapon(clone, srcweapon0->base.obj, srcweapon0->weapon_id, 0); if (cloneweapon0prop) { cloneweapon0 = cloneweapon0prop->weapon; @@ -4554,7 +4554,7 @@ bool aiDuplicateChr(void) if (srcweapon1prop) { srcweapon1 = srcweapon1prop->weapon; - cloneweapon1prop = func0f08bad0(clone, srcweapon1->base.obj, srcweapon1->weapon_id, 0x10000000); + cloneweapon1prop = chrGiveWeapon(clone, srcweapon1->base.obj, srcweapon1->weapon_id, 0x10000000); if (cloneweapon1prop) { cloneweapon1 = cloneweapon1prop->weapon; diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index fd4b498d6..9bfb8abf5 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -9687,7 +9687,7 @@ glabel var7f1ad6ac /* f0bee84: 02002025 */ or $a0,$s0,$zero /* f0bee88: 240500f5 */ addiu $a1,$zero,0xf5 /* f0bee8c: 24060002 */ addiu $a2,$zero,0x2 -/* f0bee90: 0fc22eb4 */ jal func0f08bad0 +/* f0bee90: 0fc22eb4 */ jal chrGiveWeapon /* f0bee94: 00003825 */ or $a3,$zero,$zero .L0f0bee98: /* f0bee98: 0fc41b99 */ jal cheatIsActive @@ -9885,7 +9885,7 @@ glabel var7f1ad6ac /* f0bf174: 02002025 */ or $a0,$s0,$zero /* f0bf178: 24050101 */ addiu $a1,$zero,0x101 /* f0bf17c: 24060010 */ addiu $a2,$zero,0x10 -/* f0bf180: 0fc22eb4 */ jal func0f08bad0 +/* f0bf180: 0fc22eb4 */ jal chrGiveWeapon /* f0bf184: 00003825 */ or $a3,$zero,$zero .L0f0bf188: /* f0bf188: 0fc41b99 */ jal cheatIsActive @@ -9986,12 +9986,12 @@ glabel var7f1ad6ac /* f0bf2f4: 02002025 */ or $a0,$s0,$zero /* f0bf2f8: 240500f9 */ addiu $a1,$zero,0xf9 /* f0bf2fc: 24060009 */ addiu $a2,$zero,0x9 -/* f0bf300: 0fc22eb4 */ jal func0f08bad0 +/* f0bf300: 0fc22eb4 */ jal chrGiveWeapon /* f0bf304: 00003825 */ or $a3,$zero,$zero /* f0bf308: 02002025 */ or $a0,$s0,$zero /* f0bf30c: 240500f8 */ addiu $a1,$zero,0xf8 /* f0bf310: 24060008 */ addiu $a2,$zero,0x8 -/* f0bf314: 0fc22eb4 */ jal func0f08bad0 +/* f0bf314: 0fc22eb4 */ jal chrGiveWeapon /* f0bf318: 3c071000 */ lui $a3,0x1000 .L0f0bf31c: /* f0bf31c: 0fc41b99 */ jal cheatIsActive @@ -10091,7 +10091,7 @@ glabel var7f1ad6ac /* f0bf484: 02002025 */ or $a0,$s0,$zero /* f0bf488: 24050104 */ addiu $a1,$zero,0x104 /* f0bf48c: 2406000d */ addiu $a2,$zero,0xd -/* f0bf490: 0fc22eb4 */ jal func0f08bad0 +/* f0bf490: 0fc22eb4 */ jal chrGiveWeapon /* f0bf494: 00003825 */ or $a3,$zero,$zero .L0f0bf498: /* f0bf498: 8fae0058 */ lw $t6,0x58($sp) @@ -11173,7 +11173,7 @@ glabel var7f1ad6ac // chr->hidden |= CHRHFLAG_CLOAKED; // chr->cloakfade_00 = 0; // -// func0f08bad0(chr, MODEL_CHRFALCON2, WEAPON_FALCON2, 0); +// chrGiveWeapon(chr, MODEL_CHRFALCON2, WEAPON_FALCON2, 0); // } // } // @@ -11267,7 +11267,7 @@ glabel var7f1ad6ac // chr->hidden |= CHRHFLAG_CLOAKED; // chr->cloakfade_00 = 0; // -// func0f08bad0(chr, MODEL_CHRAVENGER, WEAPON_K7AVENGER, 0); +// chrGiveWeapon(chr, MODEL_CHRAVENGER, WEAPON_K7AVENGER, 0); // } // } // @@ -11315,8 +11315,8 @@ glabel var7f1ad6ac // chr->hidden |= CHRHFLAG_CLOAKED; // chr->cloakfade_00 = 0; // -// func0f08bad0(chr, MODEL_CHRDY357TRENT, WEAPON_DY357LX, 0); -// func0f08bad0(chr, MODEL_CHRDY357, WEAPON_DY357MAGNUM, 0x10000000); +// chrGiveWeapon(chr, MODEL_CHRDY357TRENT, WEAPON_DY357LX, 0); +// chrGiveWeapon(chr, MODEL_CHRDY357, WEAPON_DY357MAGNUM, 0x10000000); // } // } // @@ -11364,7 +11364,7 @@ glabel var7f1ad6ac // chr->hidden |= CHRHFLAG_CLOAKED; // chr->cloakfade_00 = 0; // -// func0f08bad0(chr, MODEL_CHRRCP120, WEAPON_RCP120, 0); +// chrGiveWeapon(chr, MODEL_CHRRCP120, WEAPON_RCP120, 0); // } // } // diff --git a/src/game/game_190260.c b/src/game/game_190260.c index bd19e1407..19d1f10fc 100644 --- a/src/game/game_190260.c +++ b/src/game/game_190260.c @@ -5110,7 +5110,7 @@ glabel var7f1b8fc8 /* f194d48: 02802025 */ or $a0,$s4,$zero /* f194d4c: 00402825 */ or $a1,$v0,$zero /* f194d50: 8e460020 */ lw $a2,0x20($s2) -/* f194d54: 0fc22eb4 */ jal func0f08bad0 +/* f194d54: 0fc22eb4 */ jal chrGiveWeapon /* f194d58: 00003825 */ or $a3,$zero,$zero /* f194d5c: 02802025 */ or $a0,$s4,$zero /* f194d60: 00002825 */ or $a1,$zero,$zero @@ -5122,7 +5122,7 @@ glabel var7f1b8fc8 /* f194d78: 15210008 */ bne $t1,$at,.L0f194d9c /* f194d7c: 02202825 */ or $a1,$s1,$zero /* f194d80: 8e460020 */ lw $a2,0x20($s2) -/* f194d84: 0fc22eb4 */ jal func0f08bad0 +/* f194d84: 0fc22eb4 */ jal chrGiveWeapon /* f194d88: 3c071000 */ lui $a3,0x1000 /* f194d8c: 02802025 */ or $a0,$s4,$zero /* f194d90: 24050001 */ addiu $a1,$zero,0x1 diff --git a/src/game/game_197600.c b/src/game/game_197600.c index 2725ba035..3c860db99 100644 --- a/src/game/game_197600.c +++ b/src/game/game_197600.c @@ -2410,7 +2410,7 @@ glabel func0f1994b0 /* f1996d4: 8fa60064 */ lw $a2,0x64($sp) /* f1996d8: 55e00008 */ bnezl $t7,.L0f1996fc /* f1996dc: 8fa40064 */ lw $a0,0x64($sp) -/* f1996e0: 0fc22eb4 */ jal func0f08bad0 +/* f1996e0: 0fc22eb4 */ jal chrGiveWeapon /* f1996e4: 3c071000 */ lui $a3,0x1000 /* f1996e8: 02402025 */ or $a0,$s2,$zero /* f1996ec: 24050001 */ addiu $a1,$zero,0x1 diff --git a/src/game/propobj.c b/src/game/propobj.c index 06e07e612..6a93e11e0 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -42839,17 +42839,13 @@ glabel func0f08b8e8 /* f08bacc: 27bd00a0 */ addiu $sp,$sp,0xa0 ); +struct prop *chrGiveWeapon(struct chrdata *chr, s32 model, s32 weapon_id, u32 flags) +{ + return func0f08b8e8(chr, model, weapon_id, flags, 0, 0); +} + GLOBAL_ASM( -glabel func0f08bad0 -/* f08bad0: 27bdffe0 */ addiu $sp,$sp,-32 -/* f08bad4: afbf001c */ sw $ra,0x1c($sp) -/* f08bad8: afa00010 */ sw $zero,0x10($sp) -/* f08badc: 0fc22e3a */ jal func0f08b8e8 -/* f08bae0: afa00014 */ sw $zero,0x14($sp) -/* f08bae4: 8fbf001c */ lw $ra,0x1c($sp) -/* f08bae8: 27bd0020 */ addiu $sp,$sp,0x20 -/* f08baec: 03e00008 */ jr $ra -/* f08baf0: 00000000 */ sll $zero,$zero,0x0 +glabel func0f08baf4 /* f08baf4: 27bdffe0 */ addiu $sp,$sp,-32 /* f08baf8: afbf001c */ sw $ra,0x1c($sp) /* f08bafc: afa40020 */ sw $a0,0x20($sp) diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index e47e78907..d9f4b2f5a 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -276,8 +276,8 @@ u32 func0f08b27c(void); u32 func0f08b658(void); u32 func0f08b880(void); void chrSetWeaponFlag4(struct chrdata *chr, s32 slot); -void func0f08b8e8(struct chrdata *chr, s32 weapon_id, s32 arg2, u32 flags, s32 arg4, s32 arg5); -struct prop *func0f08bad0(struct chrdata *chr, s32 model, s32 weapon_id, u32 flags); +struct prop *func0f08b8e8(struct chrdata *chr, s32 weapon_id, s32 arg2, u32 flags, s32 arg4, s32 arg5); +struct prop *chrGiveWeapon(struct chrdata *chr, s32 model, s32 weapon_id, u32 flags); u32 func0f08bb3c(void); void func0f08bb5c(struct prop *prop, bool firing, s32 room); s32 func0f08bc5c(struct prop *prop);