Decompile mpSetWeaponSlot

This commit is contained in:
Ryan Dwyer 2020-08-29 23:54:57 +10:00
parent e9acfd17d9
commit 408b7d719d
8 changed files with 52 additions and 75 deletions

View File

@ -2073,7 +2073,7 @@ s32 var80087260 = 0x00000000;
u32 var80087264 = 0x00000000;
// 2d288
struct mpweapon mpweaponstable[] = {
struct mpweapon g_MpWeapons[] = {
/*0x00*/ { WEAPON_NONE, 0x00, 0x00, 0x00, 0x0080, MODEL_CHRTT33, 0x01, 0x00 },
/*0x01*/ { WEAPON_FALCON2, 0x01, 0x50, 0x00, 0x0080, MODEL_CHRFALCON2, 0x01, 0x00 },
/*0x02*/ { WEAPON_FALCON2_SILENCER, 0x01, 0x50, 0x00, 0x0085, MODEL_CHRFALCON2SIL, 0x01, 0x00 },

View File

@ -812,12 +812,12 @@ glabel func0f0fe848
/* f0fe86c: 25e420d0 */ addiu $a0,$t7,%lo(g_ActiveMenuThings)
/* f0fe870: 3c12800b */ lui $s2,%hi(g_MpSetup+0x6)
/* f0fe874: 3c13800a */ lui $s3,%hi(var800a21b0)
/* f0fe878: 3c0c8008 */ lui $t4,%hi(mpweaponstable)
/* f0fe878: 3c0c8008 */ lui $t4,%hi(g_MpWeapons)
/* f0fe87c: 3c0a7f1b */ lui $t2,%hi(var7f1b2b20)
/* f0fe880: a1c00250 */ sb $zero,0x250($t6)
/* f0fe884: 8d060318 */ lw $a2,0x318($t0)
/* f0fe888: 254a2b20 */ addiu $t2,$t2,%lo(var7f1b2b20)
/* f0fe88c: 258c7268 */ addiu $t4,$t4,%lo(mpweaponstable)
/* f0fe88c: 258c7268 */ addiu $t4,$t4,%lo(g_MpWeapons)
/* f0fe890: 267321b0 */ addiu $s3,$s3,%lo(var800a21b0)
/* f0fe894: 2652cb8e */ addiu $s2,$s2,%lo(g_MpSetup+0x6)
/* f0fe898: 00801825 */ or $v1,$a0,$zero

View File

@ -717,14 +717,14 @@ glabel func0f198068
/* f198084: afb20030 */ sw $s2,0x30($sp)
/* f198088: afb1002c */ sw $s1,0x2c($sp)
/* f19808c: 3c16800b */ lui $s6,%hi(g_MpSetup)
/* f198090: 3c1e8008 */ lui $s8,%hi(mpweaponstable)
/* f198090: 3c1e8008 */ lui $s8,%hi(g_MpWeapons)
/* f198094: 00c08825 */ or $s1,$a2,$zero
/* f198098: 0080b825 */ or $s7,$a0,$zero
/* f19809c: afbf004c */ sw $ra,0x4c($sp)
/* f1980a0: afb00028 */ sw $s0,0x28($sp)
/* f1980a4: afa5008c */ sw $a1,0x8c($sp)
/* f1980a8: afa70094 */ sw $a3,0x94($sp)
/* f1980ac: 27de7268 */ addiu $s8,$s8,%lo(mpweaponstable)
/* f1980ac: 27de7268 */ addiu $s8,$s8,%lo(g_MpWeapons)
/* f1980b0: 26d6cb88 */ addiu $s6,$s6,%lo(g_MpSetup)
/* f1980b4: 00009025 */ or $s2,$zero,$zero
/* f1980b8: 00c09825 */ or $s3,$a2,$zero
@ -854,8 +854,8 @@ GLOBAL_ASM(
glabel func0f198278
/* f198278: 3c03800b */ lui $v1,%hi(g_MpSetup)
/* f19827c: 3c07800b */ lui $a3,%hi(g_MpSetup+0x6)
/* f198280: 3c048008 */ lui $a0,%hi(mpweaponstable)
/* f198284: 24847268 */ addiu $a0,$a0,%lo(mpweaponstable)
/* f198280: 3c048008 */ lui $a0,%hi(g_MpWeapons)
/* f198284: 24847268 */ addiu $a0,$a0,%lo(g_MpWeapons)
/* f198288: 24e7cb8e */ addiu $a3,$a3,%lo(g_MpSetup+0x6)
/* f19828c: 2463cb88 */ addiu $v1,$v1,%lo(g_MpSetup)
/* f198290: 2406005b */ addiu $a2,$zero,0x5b
@ -882,9 +882,9 @@ glabel func0f198278
GLOBAL_ASM(
glabel func0f1982d4
/* f1982d4: 3c05800b */ lui $a1,%hi(g_MpSetup)
/* f1982d8: 3c068008 */ lui $a2,%hi(mpweaponstable)
/* f1982d8: 3c068008 */ lui $a2,%hi(g_MpWeapons)
/* f1982dc: 2403ffff */ addiu $v1,$zero,-1
/* f1982e0: 24c67268 */ addiu $a2,$a2,%lo(mpweaponstable)
/* f1982e0: 24c67268 */ addiu $a2,$a2,%lo(g_MpWeapons)
/* f1982e4: 24a5cb88 */ addiu $a1,$a1,%lo(g_MpSetup)
/* f1982e8: 00001025 */ or $v0,$zero,$zero
/* f1982ec: 24080006 */ addiu $t0,$zero,0x6

View File

@ -705,8 +705,8 @@ glabel func0f19afdc
/* f19b430: 1840001c */ blez $v0,.L0f19b4a4
/* f19b434: 0013c880 */ sll $t9,$s3,0x2
/* f19b438: 0333c821 */ addu $t9,$t9,$s3
/* f19b43c: 3c088008 */ lui $t0,%hi(mpweaponstable)
/* f19b440: 25087268 */ addiu $t0,$t0,%lo(mpweaponstable)
/* f19b43c: 3c088008 */ lui $t0,%hi(g_MpWeapons)
/* f19b440: 25087268 */ addiu $t0,$t0,%lo(g_MpWeapons)
/* f19b444: 0019c840 */ sll $t9,$t9,0x1
/* f19b448: 3c11800b */ lui $s1,%hi(g_MpChallengesCompleted)
/* f19b44c: 2631ccc8 */ addiu $s1,$s1,%lo(g_MpChallengesCompleted)
@ -1273,13 +1273,13 @@ glabel func0f19bb98
/* f19bbb0: afb2001c */ sw $s2,0x1c($sp)
/* f19bbb4: afb10018 */ sw $s1,0x18($sp)
/* f19bbb8: afb00014 */ sw $s0,0x14($sp)
/* f19bbbc: 3c138008 */ lui $s3,%hi(mpweaponstable)
/* f19bbbc: 3c138008 */ lui $s3,%hi(g_MpWeapons)
/* f19bbc0: 00a0a825 */ or $s5,$a1,$zero
/* f19bbc4: 00c0b025 */ or $s6,$a2,$zero
/* f19bbc8: 0080b825 */ or $s7,$a0,$zero
/* f19bbcc: afbf0034 */ sw $ra,0x34($sp)
/* f19bbd0: 00009025 */ or $s2,$zero,$zero
/* f19bbd4: 26737268 */ addiu $s3,$s3,%lo(mpweaponstable)
/* f19bbd4: 26737268 */ addiu $s3,$s3,%lo(g_MpWeapons)
/* f19bbd8: 00808025 */ or $s0,$a0,$zero
/* f19bbdc: 00008825 */ or $s1,$zero,$zero
/* f19bbe0: 2414000a */ addiu $s4,$zero,0xa

View File

@ -1468,12 +1468,12 @@ glabel mpGetNumWeaponOptions
/* f188bd8: afb20020 */ sw $s2,0x20($sp)
/* f188bdc: afb00018 */ sw $s0,0x18($sp)
/* f188be0: afb1001c */ sw $s1,0x1c($sp)
/* f188be4: 3c108008 */ lui $s0,%hi(mpweaponstable)
/* f188be8: 3c128008 */ lui $s2,%hi(mpweaponstable+0x186)
/* f188be4: 3c108008 */ lui $s0,%hi(g_MpWeapons)
/* f188be8: 3c128008 */ lui $s2,%hi(g_MpWeapons+0x186)
/* f188bec: afbf0024 */ sw $ra,0x24($sp)
/* f188bf0: 00008825 */ or $s1,$zero,$zero
/* f188bf4: 265273ee */ addiu $s2,$s2,%lo(mpweaponstable+0x186)
/* f188bf8: 26107268 */ addiu $s0,$s0,%lo(mpweaponstable)
/* f188bf4: 265273ee */ addiu $s2,$s2,%lo(g_MpWeapons+0x186)
/* f188bf8: 26107268 */ addiu $s0,$s0,%lo(g_MpWeapons)
/* f188bfc: 96040004 */ lhu $a0,0x4($s0)
.L0f188c00:
/* f188c00: 308e007f */ andi $t6,$a0,0x7f
@ -1500,12 +1500,12 @@ glabel mpGetWeaponLabel
/* f188c40: afb20020 */ sw $s2,0x20($sp)
/* f188c44: afb00018 */ sw $s0,0x18($sp)
/* f188c48: afb1001c */ sw $s1,0x1c($sp)
/* f188c4c: 3c108008 */ lui $s0,%hi(mpweaponstable)
/* f188c50: 3c128008 */ lui $s2,%hi(mpweaponstable+0x186)
/* f188c4c: 3c108008 */ lui $s0,%hi(g_MpWeapons)
/* f188c50: 3c128008 */ lui $s2,%hi(g_MpWeapons+0x186)
/* f188c54: 00808825 */ or $s1,$a0,$zero
/* f188c58: afbf0024 */ sw $ra,0x24($sp)
/* f188c5c: 265273ee */ addiu $s2,$s2,%lo(mpweaponstable+0x186)
/* f188c60: 26107268 */ addiu $s0,$s0,%lo(mpweaponstable)
/* f188c5c: 265273ee */ addiu $s2,$s2,%lo(g_MpWeapons+0x186)
/* f188c60: 26107268 */ addiu $s0,$s0,%lo(g_MpWeapons)
/* f188c64: 96040004 */ lhu $a0,0x4($s0)
.L0f188c68:
/* f188c68: 308e007f */ andi $t6,$a0,0x7f
@ -1560,43 +1560,21 @@ glabel mpGetWeaponLabel
/* f188d14: 27bd0028 */ addiu $sp,$sp,0x28
);
GLOBAL_ASM(
glabel mpSetWeaponSlot
/* f188d18: 27bdffd8 */ addiu $sp,$sp,-40
/* f188d1c: afb20020 */ sw $s2,0x20($sp)
/* f188d20: afb1001c */ sw $s1,0x1c($sp)
/* f188d24: 00a08825 */ or $s1,$a1,$zero
/* f188d28: afbf0024 */ sw $ra,0x24($sp)
/* f188d2c: afb00018 */ sw $s0,0x18($sp)
/* f188d30: afa40028 */ sw $a0,0x28($sp)
/* f188d34: 04a0000d */ bltz $a1,.L0f188d6c
/* f188d38: 00009025 */ or $s2,$zero,$zero
/* f188d3c: 3c108008 */ lui $s0,%hi(mpweaponstable)
/* f188d40: 26107268 */ addiu $s0,$s0,%lo(mpweaponstable)
.L0f188d44:
/* f188d44: 96040004 */ lhu $a0,0x4($s0)
/* f188d48: 308e007f */ andi $t6,$a0,0x7f
/* f188d4c: 0fc67244 */ jal mpIsChallengeComplete
/* f188d50: 01c02025 */ or $a0,$t6,$zero
/* f188d54: 14400002 */ bnez $v0,.L0f188d60
/* f188d58: 26520001 */ addiu $s2,$s2,0x1
/* f188d5c: 26310001 */ addiu $s1,$s1,0x1
.L0f188d60:
/* f188d60: 0232082a */ slt $at,$s1,$s2
/* f188d64: 1020fff7 */ beqz $at,.L0f188d44
/* f188d68: 2610000a */ addiu $s0,$s0,0xa
.L0f188d6c:
/* f188d6c: 8faf0028 */ lw $t7,0x28($sp)
/* f188d70: 3c01800b */ lui $at,%hi(g_MpSetup+0x18)
/* f188d74: 8fbf0024 */ lw $ra,0x24($sp)
/* f188d78: 002f0821 */ addu $at,$at,$t7
/* f188d7c: a031cba0 */ sb $s1,%lo(g_MpSetup+0x18)($at)
/* f188d80: 8fb1001c */ lw $s1,0x1c($sp)
/* f188d84: 8fb00018 */ lw $s0,0x18($sp)
/* f188d88: 8fb20020 */ lw $s2,0x20($sp)
/* f188d8c: 03e00008 */ jr $ra
/* f188d90: 27bd0028 */ addiu $sp,$sp,0x28
);
void mpSetWeaponSlot(s32 slot, s32 mpweaponnum)
{
s32 optionindex = mpweaponnum;
s32 i;
for (i = 0; i <= mpweaponnum; i++) {
if (mpIsChallengeComplete(g_MpWeapons[i].unlock & 0x7f) == 0) {
mpweaponnum++;
}
optionindex = mpweaponnum;
}
g_MpSetup.weapons[slot] = optionindex;
}
GLOBAL_ASM(
glabel mpGetWeaponSlot
@ -1613,8 +1591,8 @@ glabel mpGetWeaponSlot
/* f188dbc: 00009025 */ or $s2,$zero,$zero
/* f188dc0: 19e00010 */ blez $t7,.L0f188e04
/* f188dc4: 00008825 */ or $s1,$zero,$zero
/* f188dc8: 3c108008 */ lui $s0,%hi(mpweaponstable)
/* f188dcc: 26107268 */ addiu $s0,$s0,%lo(mpweaponstable)
/* f188dc8: 3c108008 */ lui $s0,%hi(g_MpWeapons)
/* f188dcc: 26107268 */ addiu $s0,$s0,%lo(g_MpWeapons)
/* f188dd0: 96040004 */ lhu $a0,0x4($s0)
.L0f188dd4:
/* f188dd4: 3098007f */ andi $t8,$a0,0x7f
@ -1648,10 +1626,10 @@ glabel func0f188e24
/* f188e2c: 00c01025 */ or $v0,$a2,$zero
/* f188e30: 18c0001e */ blez $a2,.L0f188eac
/* f188e34: 00002825 */ or $a1,$zero,$zero
/* f188e38: 3c088008 */ lui $t0,%hi(mpweaponstable)
/* f188e38: 3c088008 */ lui $t0,%hi(g_MpWeapons)
/* f188e3c: 3c04800b */ lui $a0,%hi(g_MpSetup)
/* f188e40: 2484cb88 */ addiu $a0,$a0,%lo(g_MpSetup)
/* f188e44: 25087268 */ addiu $t0,$t0,%lo(mpweaponstable)
/* f188e44: 25087268 */ addiu $t0,$t0,%lo(g_MpWeapons)
/* f188e48: 2409000a */ addiu $t1,$zero,0xa
/* f188e4c: 2407005c */ addiu $a3,$zero,0x5c
/* f188e50: 00857021 */ addu $t6,$a0,$a1
@ -1684,9 +1662,9 @@ glabel func0f188e24
.L0f188eac:
/* f188eac: 93a30003 */ lbu $v1,0x3($sp)
/* f188eb0: 2409000a */ addiu $t1,$zero,0xa
/* f188eb4: 3c088008 */ lui $t0,%hi(mpweaponstable)
/* f188eb4: 3c088008 */ lui $t0,%hi(g_MpWeapons)
/* f188eb8: 00690019 */ multu $v1,$t1
/* f188ebc: 25087268 */ addiu $t0,$t0,%lo(mpweaponstable)
/* f188ebc: 25087268 */ addiu $t0,$t0,%lo(g_MpWeapons)
/* f188ec0: 27bd0010 */ addiu $sp,$sp,0x10
/* f188ec4: 00005012 */ mflo $t2
/* f188ec8: 010a1021 */ addu $v0,$t0,$t2
@ -1865,7 +1843,7 @@ glabel func0f18913c
/* f189150: afb60030 */ sw $s6,0x30($sp)
/* f189154: afb40028 */ sw $s4,0x28($sp)
/* f189158: 25ef73f0 */ addiu $t7,$t7,%lo(g_MpWeaponSets)
/* f18915c: 3c158008 */ lui $s5,%hi(mpweaponstable)
/* f18915c: 3c158008 */ lui $s5,%hi(g_MpWeapons)
/* f189160: 3c17800b */ lui $s7,%hi(g_MpSetup+0x6)
/* f189164: 00007100 */ sll $t6,$zero,0x4
/* f189168: afbf003c */ sw $ra,0x3c($sp)
@ -1876,7 +1854,7 @@ glabel func0f18913c
/* f18917c: afa00040 */ sw $zero,0x40($sp)
/* f189180: 01cff021 */ addu $s8,$t6,$t7
/* f189184: 26f7cb8e */ addiu $s7,$s7,%lo(g_MpSetup+0x6)
/* f189188: 26b57268 */ addiu $s5,$s5,%lo(mpweaponstable)
/* f189188: 26b57268 */ addiu $s5,$s5,%lo(g_MpWeapons)
/* f18918c: 2414005b */ addiu $s4,$zero,0x5b
/* f189190: 2416000a */ addiu $s6,$zero,0xa
/* f189194: afa00044 */ sw $zero,0x44($sp)
@ -2050,8 +2028,8 @@ glabel func0f1892dc
/* f1893f8: 1040006b */ beqz $v0,.L0f1895a8
/* f1893fc: 00405825 */ or $t3,$v0,$zero
/* f189400: 3c0a800b */ lui $t2,%hi(g_MpSetup)
/* f189404: 3c088008 */ lui $t0,%hi(mpweaponstable)
/* f189408: 25087268 */ addiu $t0,$t0,%lo(mpweaponstable)
/* f189404: 3c088008 */ lui $t0,%hi(g_MpWeapons)
/* f189408: 25087268 */ addiu $t0,$t0,%lo(g_MpWeapons)
/* f18940c: 254acb88 */ addiu $t2,$t2,%lo(g_MpSetup)
/* f189410: 2410005b */ addiu $s0,$zero,0x5b
/* f189414: 2409000a */ addiu $t1,$zero,0xa
@ -2069,8 +2047,8 @@ glabel func0f1892dc
/* f189440: afaa0024 */ sw $t2,0x24($sp)
/* f189444: 0fc67244 */ jal mpIsChallengeComplete
/* f189448: afab0028 */ sw $t3,0x28($sp)
/* f18944c: 3c088008 */ lui $t0,%hi(mpweaponstable)
/* f189450: 25087268 */ addiu $t0,$t0,%lo(mpweaponstable)
/* f18944c: 3c088008 */ lui $t0,%hi(g_MpWeapons)
/* f189450: 25087268 */ addiu $t0,$t0,%lo(g_MpWeapons)
/* f189454: 8fa30044 */ lw $v1,0x44($sp)
/* f189458: 8fa50040 */ lw $a1,0x40($sp)
/* f18945c: 8fa60038 */ lw $a2,0x38($sp)

View File

@ -81,7 +81,7 @@ extern struct mpscenariooverview g_MpScenarioOverviews[];
extern u32 var8008716c;
extern u32 var800871fc;
extern u32 var80087264;
extern struct mpweapon mpweaponstable[];
extern struct mpweapon g_MpWeapons[];
extern struct mpweaponset g_MpWeaponSets[12];
extern u32 var800874c8;
extern u32 var800874cc;

View File

@ -22,7 +22,7 @@ s32 func0f188a84(struct mpteaminfo *info);
u32 func0f188bcc(void);
u32 mpGetNumWeaponOptions(void);
char *mpGetWeaponLabel(s32 weaponnum);
void mpSetWeaponSlot(s32 slot, s32 weaponnum);
void mpSetWeaponSlot(s32 slot, s32 mpweaponnum);
s32 mpGetWeaponSlot(s32 slot);
u32 func0f188e24(void);
s32 mpCountWeaponSetThing(s32 weaponsetindex);

View File

@ -4299,8 +4299,7 @@ struct mpsetup {
* Bits 0xf000 are probably not used
*/
/*0x800acb9e*/ u16 chrslots;
/*0x800acba0*/ u32 unk18;
/*0x800acba4*/ u16 unk1c;
/*0x800acba0*/ u8 weapons[6];
/*0x800acba6*/ u8 paused;
/*0x800acba8*/ bool saved;
/*0x800acbac*/ u16 unk24;
@ -5981,7 +5980,7 @@ struct mpweapon {
u8 unk01;
u8 unk02;
u8 unk03;
u16 unk04;
u16 unlock;
u16 model;
u8 unk08;
u8 unk09;