Decompile gsetPopulateFromCurrentPlayer

This commit is contained in:
Ryan Dwyer 2022-06-15 17:35:45 +10:00
parent 3ccb0ae1ee
commit 6aed910749
1 changed files with 14 additions and 101 deletions

View File

@ -395,108 +395,21 @@ u16 weaponGetModelNum2(s32 weaponnum)
return weaponGetModelNum(weaponnum);
}
GLOBAL_ASM(
glabel gsetPopulateFromCurrentPlayer
/* f0b1af0: 3c06800a */ lui $a2,%hi(g_Vars)
/* f0b1af4: 24c69fc0 */ addiu $a2,$a2,%lo(g_Vars)
/* f0b1af8: 8cce0284 */ lw $t6,0x284($a2)
/* f0b1afc: 00041100 */ sll $v0,$a0,0x4
/* f0b1b00: 00441023 */ subu $v0,$v0,$a0
/* f0b1b04: 81cf1580 */ lb $t7,0x1580($t6)
/* f0b1b08: 00021080 */ sll $v0,$v0,0x2
/* f0b1b0c: 00441021 */ addu $v0,$v0,$a0
/* f0b1b10: a0af0000 */ sb $t7,0x0($a1)
/* f0b1b14: 8cd80284 */ lw $t8,0x284($a2)
/* f0b1b18: 000210c0 */ sll $v0,$v0,0x3
/* f0b1b1c: 00441021 */ addu $v0,$v0,$a0
/* f0b1b20: 00021080 */ sll $v0,$v0,0x2
/* f0b1b24: 0302c821 */ addu $t9,$t8,$v0
/* f0b1b28: 9328063b */ lbu $t0,0x63b($t9)
/* f0b1b2c: 24010006 */ addiu $at,$zero,0x6
/* f0b1b30: 31e300ff */ andi $v1,$t7,0xff
/* f0b1b34: a0a80003 */ sb $t0,0x3($a1)
/* f0b1b38: 8cc90284 */ lw $t1,0x284($a2)
/* f0b1b3c: 01225021 */ addu $t2,$t1,$v0
/* f0b1b40: 914b063a */ lbu $t3,0x63a($t2)
/* f0b1b44: a0ab0002 */ sb $t3,0x2($a1)
/* f0b1b48: 8ccc0284 */ lw $t4,0x284($a2)
/* f0b1b4c: 01826821 */ addu $t5,$t4,$v0
/* f0b1b50: 91ae0639 */ lbu $t6,0x639($t5)
/* f0b1b54: 1461002a */ bne $v1,$at,.L0f0b1c00
/* f0b1b58: a0ae0001 */ sb $t6,0x1($a1)
/* f0b1b5c: 8ccf0284 */ lw $t7,0x284($a2)
/* f0b1b60: 3c014120 */ lui $at,0x4120
/* f0b1b64: 44813000 */ mtc1 $at,$f6
/* f0b1b68: 01e2c021 */ addu $t8,$t7,$v0
/* f0b1b6c: c7040874 */ lwc1 $f4,0x874($t8)
/* f0b1b70: 24080001 */ addiu $t0,$zero,0x1
/* f0b1b74: 3c014f00 */ lui $at,0x4f00
/* f0b1b78: 46062202 */ mul.s $f8,$f4,$f6
/* f0b1b7c: 4459f800 */ cfc1 $t9,$31
/* f0b1b80: 44c8f800 */ ctc1 $t0,$31
/* f0b1b84: 00000000 */ nop
/* f0b1b88: 460042a4 */ cvt.w.s $f10,$f8
/* f0b1b8c: 4448f800 */ cfc1 $t0,$31
/* f0b1b90: 00000000 */ nop
/* f0b1b94: 31080078 */ andi $t0,$t0,0x78
/* f0b1b98: 51000013 */ beqzl $t0,.L0f0b1be8
/* f0b1b9c: 44085000 */ mfc1 $t0,$f10
/* f0b1ba0: 44815000 */ mtc1 $at,$f10
/* f0b1ba4: 24080001 */ addiu $t0,$zero,0x1
/* f0b1ba8: 460a4281 */ sub.s $f10,$f8,$f10
/* f0b1bac: 44c8f800 */ ctc1 $t0,$31
/* f0b1bb0: 00000000 */ nop
/* f0b1bb4: 460052a4 */ cvt.w.s $f10,$f10
/* f0b1bb8: 4448f800 */ cfc1 $t0,$31
/* f0b1bbc: 00000000 */ nop
/* f0b1bc0: 31080078 */ andi $t0,$t0,0x78
/* f0b1bc4: 15000005 */ bnez $t0,.L0f0b1bdc
/* f0b1bc8: 00000000 */ nop
/* f0b1bcc: 44085000 */ mfc1 $t0,$f10
/* f0b1bd0: 3c018000 */ lui $at,0x8000
/* f0b1bd4: 10000007 */ b .L0f0b1bf4
/* f0b1bd8: 01014025 */ or $t0,$t0,$at
.L0f0b1bdc:
/* f0b1bdc: 10000005 */ b .L0f0b1bf4
/* f0b1be0: 2408ffff */ addiu $t0,$zero,-1
/* f0b1be4: 44085000 */ mfc1 $t0,$f10
.L0f0b1be8:
/* f0b1be8: 00000000 */ nop
/* f0b1bec: 0500fffb */ bltz $t0,.L0f0b1bdc
/* f0b1bf0: 00000000 */ nop
.L0f0b1bf4:
/* f0b1bf4: 44d9f800 */ ctc1 $t9,$31
/* f0b1bf8: a0a80002 */ sb $t0,0x2($a1)
/* f0b1bfc: 90a30000 */ lbu $v1,0x0($a1)
.L0f0b1c00:
/* f0b1c00: 2401001d */ addiu $at,$zero,0x1d
/* f0b1c04: 14610005 */ bne $v1,$at,.L0f0b1c1c
/* f0b1c08: 00000000 */ nop
/* f0b1c0c: 8cc90284 */ lw $t1,0x284($a2)
/* f0b1c10: 01225021 */ addu $t2,$t1,$v0
/* f0b1c14: 8d4c0b90 */ lw $t4,0xb90($t2)
/* f0b1c18: a0ac0002 */ sb $t4,0x2($a1)
.L0f0b1c1c:
/* f0b1c1c: 03e00008 */ jr $ra
/* f0b1c20: 00000000 */ nop
);
void gsetPopulateFromCurrentPlayer(s32 handnum, struct gset *gset)
{
gset->weaponnum = g_Vars.currentplayer->gunctrl.weaponnum;
gset->weaponfunc = g_Vars.currentplayer->hands[handnum].gset.weaponfunc;
gset->unk063a = g_Vars.currentplayer->hands[handnum].gset.unk063a;
gset->unk0639 = g_Vars.currentplayer->hands[handnum].gset.unk0639;
// Mismatch: regalloc
//void gsetPopulateFromCurrentPlayer(s32 handnum, struct gset *gset)
//{
// gset->weaponnum = g_Vars.currentplayer->weaponnum;
// gset->weaponfunc = g_Vars.currentplayer->hands[handnum].weaponfunc;
// gset->unk063a = g_Vars.currentplayer->hands[handnum].unk063a;
// gset->unk0639 = g_Vars.currentplayer->hands[handnum].unk0639;
//
// if (gset->weaponnum == WEAPON_MAULER) {
// gset->unk063a = g_Vars.currentplayer->hands[handnum].matmot1 * 10.0f;
// }
//
// if (gset->weaponnum == WEAPON_LASER) {
// gset->unk063a = g_Vars.currentplayer->hands[handnum].burstbullets;
// }
//}
if (gset->weaponnum == WEAPON_MAULER) {
gset->unk063a = g_Vars.currentplayer->hands[handnum].matmot1 * 10.0f;
}
if (gset->weaponnum == WEAPON_LASER) {
gset->unk063a = g_Vars.currentplayer->hands[handnum].burstbullets & 0xff;
}
}
struct inventory_ammo *gsetGetAmmoDefinition(struct gset *gset)
{