Decompile mpCountWeaponSetThing

This commit is contained in:
Ryan Dwyer 2020-03-19 17:53:36 +10:00
parent 800f4b045e
commit bd098d02f7
6 changed files with 59 additions and 306 deletions

View File

@ -11726,235 +11726,19 @@ u16 mpweaponstable[] = {
};
// 2d410
struct mpweaponset mpweaponsetstable[] = {
{ /*0x00*/ 0x5437, { // Pistols
WEAPON_FALCON2,
WEAPON_MAGSEC4,
WEAPON_PHOENIX,
WEAPON_MAULER,
WEAPON_5B,
WEAPON_5C,
WEAPON_DY357MAGNUM,
WEAPON_PHOENIX,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_FALCON2,
WEAPON_MAGSEC4,
WEAPON_FALCON2,
WEAPON_DY357MAGNUM,
WEAPON_5B,
WEAPON_5C
}
},
{ /*0x01*/ 0x5436, { // Automatics
WEAPON_FALCON2,
WEAPON_CMP150,
WEAPON_LAPTOPGUN,
WEAPON_AR34,
WEAPON_5B,
WEAPON_5C,
WEAPON_CYCLONE,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_FALCON2,
WEAPON_CMP150,
WEAPON_DRAGON,
WEAPON_AR34,
WEAPON_5B,
WEAPON_5C
}
},
{ /*0x02*/ 0x5435, { // Power
WEAPON_MAGSEC4,
WEAPON_DY357MAGNUM,
WEAPON_SHOTGUN,
WEAPON_RCP120,
WEAPON_5B,
WEAPON_5C,
WEAPON_LAPTOPGUN,
WEAPON_RCP120,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_MAGSEC4,
WEAPON_DY357MAGNUM,
WEAPON_DRAGON,
WEAPON_AR34,
WEAPON_5B,
WEAPON_5C
}
},
{ /*0x03*/ 0x5434, { // FarSight
WEAPON_PHOENIX,
WEAPON_CYCLONE,
WEAPON_CALLISTONTG,
WEAPON_FARSIGHTXR20,
WEAPON_5B,
WEAPON_5C,
WEAPON_UNARMED,
WEAPON_CMP150,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C
}
},
{ /*0x04*/ 0x5433, { // Tranquilizer
WEAPON_FALCON2,
WEAPON_CMP150,
WEAPON_DRAGON,
WEAPON_TRANQUILIZER,
WEAPON_5B,
WEAPON_5C,
WEAPON_FALCON2,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C
}
},
{ /*0x05*/ 0x5432, { // Heavy
WEAPON_MAULER,
WEAPON_K7AVENGER,
WEAPON_REAPER,
WEAPON_SUPERDRAGON,
WEAPON_5B,
WEAPON_5C,
WEAPON_FALCON2_SILENCER,
WEAPON_PHOENIX,
WEAPON_CALLISTONTG,
WEAPON_DRAGON,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C
}
},
{ /*0x06*/ 0x5431, { // Golden Magnum
WEAPON_FALCON2_SILENCER,
WEAPON_GRENADE,
WEAPON_CMP150,
WEAPON_DY357LX,
WEAPON_5B,
WEAPON_5C,
WEAPON_MAGSEC4,
WEAPON_DY357LX,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C
}
},
{ /*0x07*/ 0x5430, { // Explosive
WEAPON_DEVASTATOR,
WEAPON_DEVASTATOR,
WEAPON_SUPERDRAGON,
WEAPON_SUPERDRAGON,
WEAPON_5B,
WEAPON_5C,
WEAPON_FALCON2_SILENCER,
WEAPON_K7AVENGER,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C
}
},
{ /*0x08*/ 0x542f, { // Grenade Launcher
WEAPON_MAGSEC4,
WEAPON_CMP150,
WEAPON_AR34,
WEAPON_DEVASTATOR,
WEAPON_5B,
WEAPON_5C,
WEAPON_K7AVENGER,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C
}
},
{ /*0x09*/ 0x542e, { // Rocket Launcher
WEAPON_MAULER,
WEAPON_CYCLONE,
WEAPON_DRAGON,
WEAPON_ROCKETLAUNCHER,
WEAPON_5B,
WEAPON_5C,
WEAPON_PHOENIX,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_FALCON2,
WEAPON_CYCLONE,
WEAPON_DRAGON,
WEAPON_ROCKETLAUNCHER,
WEAPON_5B,
WEAPON_5C
}
},
{ /*0x0a*/ 0x542d, { // Proximity Mine
WEAPON_MAGSEC4,
WEAPON_LAPTOPGUN,
WEAPON_K7AVENGER,
WEAPON_PROXIMITYMINE,
WEAPON_5B,
WEAPON_5C,
WEAPON_CYCLONE,
WEAPON_CALLISTONTG,
WEAPON_SHOTGUN,
WEAPON_NONE,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C,
WEAPON_5C
}
},
{ /*0x0b*/ 0x542c, { // Close Combat
WEAPON_COMBATKNIFE,
WEAPON_COMBATKNIFE,
WEAPON_TIMEDMINE,
WEAPON_CROSSBOW,
WEAPON_5B,
WEAPON_5C,
WEAPON_AR34,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_NONE,
WEAPON_COMBATKNIFE,
WEAPON_COMBATKNIFE,
WEAPON_TIMEDMINE,
WEAPON_TIMEDMINE,
WEAPON_5B,
WEAPON_5C
}
},
struct mpweaponset g_MpWeaponSets[] = {
{ /*0x00*/ L_MPWEAPONS(55), { WEAPON_FALCON2, WEAPON_MAGSEC4, WEAPON_PHOENIX, WEAPON_MAULER, WEAPON_5B, WEAPON_5C }, { 0x08, 0x07, 0x00, 0x00 }, 0x02, 0x05, 0x02, 0x08, 0x5b, 0x5c }, // Pistols
{ /*0x01*/ L_MPWEAPONS(54), { WEAPON_FALCON2, WEAPON_CMP150, WEAPON_LAPTOPGUN, WEAPON_AR34, WEAPON_5B, WEAPON_5C }, { 0x0b, 0x00, 0x00, 0x00 }, 0x02, 0x0a, 0x0f, 0x11, 0x5b, 0x5c }, // Automatics
{ /*0x02*/ L_MPWEAPONS(53), { WEAPON_MAGSEC4, WEAPON_DY357MAGNUM, WEAPON_SHOTGUN, WEAPON_RCP120, WEAPON_5B, WEAPON_5C }, { 0x0e, 0x0d, 0x00, 0x00 }, 0x05, 0x08, 0x0f, 0x11, 0x5b, 0x5c }, // Power
{ /*0x03*/ L_MPWEAPONS(52), { WEAPON_PHOENIX, WEAPON_CYCLONE, WEAPON_CALLISTONTG, WEAPON_FARSIGHTXR20, WEAPON_5B, WEAPON_5C }, { 0x01, 0x0a, 0x00, 0x00 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // FarSight
{ /*0x04*/ L_MPWEAPONS(51), { WEAPON_FALCON2, WEAPON_CMP150, WEAPON_DRAGON, WEAPON_TRANQUILIZER, WEAPON_5B, WEAPON_5C }, { 0x02, 0x00, 0x00, 0x00 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Tranquilizer
{ /*0x05*/ L_MPWEAPONS(50), { WEAPON_MAULER, WEAPON_K7AVENGER, WEAPON_REAPER, WEAPON_SUPERDRAGON, WEAPON_5B, WEAPON_5C }, { 0x03, 0x07, 0x0c, 0x0f }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Heavy
{ /*0x06*/ L_MPWEAPONS(49), { WEAPON_FALCON2_SILENCER, WEAPON_GRENADE, WEAPON_CMP150, WEAPON_DY357LX, WEAPON_5B, WEAPON_5C }, { 0x05, 0x09, 0x00, 0x00 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Golden Magnum
{ /*0x07*/ L_MPWEAPONS(48), { WEAPON_DEVASTATOR, WEAPON_DEVASTATOR, WEAPON_SUPERDRAGON, WEAPON_SUPERDRAGON, WEAPON_5B, WEAPON_5C }, { 0x03, 0x10, 0x00, 0x00 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Explosive
{ /*0x08*/ L_MPWEAPONS(47), { WEAPON_MAGSEC4, WEAPON_CMP150, WEAPON_AR34, WEAPON_DEVASTATOR, WEAPON_5B, WEAPON_5C }, { 0x10, 0x00, 0x00, 0x00 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Grenade Launcher
{ /*0x09*/ L_MPWEAPONS(46), { WEAPON_MAULER, WEAPON_CYCLONE, WEAPON_DRAGON, WEAPON_ROCKETLAUNCHER, WEAPON_5B, WEAPON_5C }, { 0x07, 0x00, 0x00, 0x00 }, 0x02, 0x0b, 0x0f, 0x18, 0x5b, 0x5c }, // Rocket Launcher
{ /*0x0a*/ L_MPWEAPONS(45), { WEAPON_MAGSEC4, WEAPON_LAPTOPGUN, WEAPON_K7AVENGER, WEAPON_PROXIMITYMINE, WEAPON_5B, WEAPON_5C }, { 0x0b, 0x0c, 0x13, 0x00 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Proximity Mine
{ /*0x0b*/ L_MPWEAPONS(44), { WEAPON_COMBATKNIFE, WEAPON_COMBATKNIFE, WEAPON_TIMEDMINE, WEAPON_CROSSBOW, WEAPON_5B, WEAPON_5C }, { 0x11, 0x00, 0x00, 0x00 }, 0x1a, 0x1a, 0x20, 0x20, 0x5b, 0x5c }, // Close Combat
};
u32 var800874c8 = 0x00000000;

View File

@ -1823,65 +1823,27 @@ glabel func0f188e24
/* f188ed0: 00000000 */ sll $zero,$zero,0x0
);
GLOBAL_ASM(
glabel func0f188ed4
/* f188ed4: 27bdffd0 */ addiu $sp,$sp,-48
/* f188ed8: afb30024 */ sw $s3,0x24($sp)
/* f188edc: afb20020 */ sw $s2,0x20($sp)
/* f188ee0: 2881000c */ slti $at,$a0,0xc
/* f188ee4: 00809825 */ or $s3,$a0,$zero
/* f188ee8: afbf002c */ sw $ra,0x2c($sp)
/* f188eec: afb40028 */ sw $s4,0x28($sp)
/* f188ef0: afb1001c */ sw $s1,0x1c($sp)
/* f188ef4: afb00018 */ sw $s0,0x18($sp)
/* f188ef8: 14200003 */ bnez $at,.L0f188f08
/* f188efc: 00009025 */ or $s2,$zero,$zero
/* f188f00: 2492fff4 */ addiu $s2,$a0,-12
/* f188f04: 2413000c */ addiu $s3,$zero,0xc
.L0f188f08:
/* f188f08: 1a60001b */ blez $s3,.L0f188f78
/* f188f0c: 00008825 */ or $s1,$zero,$zero
/* f188f10: 3c108008 */ lui $s0,%hi(mpweaponsetstable)
/* f188f14: 261073f0 */ addiu $s0,$s0,%lo(mpweaponsetstable)
/* f188f18: 2414005c */ addiu $s4,$zero,0x5c
.L0f188f1c:
/* f188f1c: 0fc67244 */ jal mpIsChallengeComplete
/* f188f20: 92040008 */ lbu $a0,0x8($s0)
/* f188f24: 5040000e */ beqzl $v0,.L0f188f60
/* f188f28: 920e000c */ lbu $t6,0xc($s0)
/* f188f2c: 0fc67244 */ jal mpIsChallengeComplete
/* f188f30: 92040009 */ lbu $a0,0x9($s0)
/* f188f34: 5040000a */ beqzl $v0,.L0f188f60
/* f188f38: 920e000c */ lbu $t6,0xc($s0)
/* f188f3c: 0fc67244 */ jal mpIsChallengeComplete
/* f188f40: 9204000a */ lbu $a0,0xa($s0)
/* f188f44: 50400006 */ beqzl $v0,.L0f188f60
/* f188f48: 920e000c */ lbu $t6,0xc($s0)
/* f188f4c: 0fc67244 */ jal mpIsChallengeComplete
/* f188f50: 9204000b */ lbu $a0,0xb($s0)
/* f188f54: 54400005 */ bnezl $v0,.L0f188f6c
/* f188f58: 26520001 */ addiu $s2,$s2,0x1
/* f188f5c: 920e000c */ lbu $t6,0xc($s0)
.L0f188f60:
/* f188f60: 528e0003 */ beql $s4,$t6,.L0f188f70
/* f188f64: 26310001 */ addiu $s1,$s1,0x1
/* f188f68: 26520001 */ addiu $s2,$s2,0x1
.L0f188f6c:
/* f188f6c: 26310001 */ addiu $s1,$s1,0x1
.L0f188f70:
/* f188f70: 1633ffea */ bne $s1,$s3,.L0f188f1c
/* f188f74: 26100012 */ addiu $s0,$s0,0x12
.L0f188f78:
/* f188f78: 8fbf002c */ lw $ra,0x2c($sp)
/* f188f7c: 02401025 */ or $v0,$s2,$zero
/* f188f80: 8fb20020 */ lw $s2,0x20($sp)
/* f188f84: 8fb00018 */ lw $s0,0x18($sp)
/* f188f88: 8fb1001c */ lw $s1,0x1c($sp)
/* f188f8c: 8fb30024 */ lw $s3,0x24($sp)
/* f188f90: 8fb40028 */ lw $s4,0x28($sp)
/* f188f94: 03e00008 */ jr $ra
/* f188f98: 27bd0030 */ addiu $sp,$sp,0x30
);
s32 mpCountWeaponSetThing(s32 weaponsetindex)
{
s32 i;
s32 count = 0;
if (weaponsetindex >= ARRAYCOUNT(g_MpWeaponSets)) {
count = weaponsetindex - ARRAYCOUNT(g_MpWeaponSets);
weaponsetindex = ARRAYCOUNT(g_MpWeaponSets);
}
for (i = 0; i < weaponsetindex; i++) {
if ((mpIsChallengeComplete(g_MpWeaponSets[i].unlocks[0])
&& mpIsChallengeComplete(g_MpWeaponSets[i].unlocks[1])
&& mpIsChallengeComplete(g_MpWeaponSets[i].unlocks[2])
&& mpIsChallengeComplete(g_MpWeaponSets[i].unlocks[3])) || g_MpWeaponSets[i].unk0c != 0x5c) {
count++;
}
}
return count;
}
GLOBAL_ASM(
glabel func0f188f9c
@ -1891,10 +1853,10 @@ glabel func0f188f9c
/* f188fa8: afb30024 */ sw $s3,0x24($sp)
/* f188fac: afb20020 */ sw $s2,0x20($sp)
/* f188fb0: afb1001c */ sw $s1,0x1c($sp)
/* f188fb4: 3c108008 */ lui $s0,%hi(mpweaponsetstable)
/* f188fb4: 3c108008 */ lui $s0,%hi(g_MpWeaponSets)
/* f188fb8: 00809025 */ or $s2,$a0,$zero
/* f188fbc: afbf002c */ sw $ra,0x2c($sp)
/* f188fc0: 261073f0 */ addiu $s0,$s0,%lo(mpweaponsetstable)
/* f188fc0: 261073f0 */ addiu $s0,$s0,%lo(g_MpWeaponSets)
/* f188fc4: 00008825 */ or $s1,$zero,$zero
/* f188fc8: 2413005c */ addiu $s3,$zero,0x5c
/* f188fcc: 2414000c */ addiu $s4,$zero,0xc
@ -1949,7 +1911,7 @@ glabel func0f189058
.L0f18906c:
/* f18906c: 2404000c */ addiu $a0,$zero,0xc
.L0f189070:
/* f189070: 0fc623b5 */ jal func0f188ed4
/* f189070: 0fc623b5 */ jal mpCountWeaponSetThing
/* f189074: 00000000 */ sll $zero,$zero,0x0
/* f189078: 8fbf0014 */ lw $ra,0x14($sp)
/* f18907c: 27bd0018 */ addiu $sp,$sp,0x18
@ -1961,7 +1923,7 @@ GLOBAL_ASM(
glabel func0f189088
/* f189088: 27bdffe8 */ addiu $sp,$sp,-24
/* f18908c: afbf0014 */ sw $ra,0x14($sp)
/* f189090: 0fc623b5 */ jal func0f188ed4
/* f189090: 0fc623b5 */ jal mpCountWeaponSetThing
/* f189094: 2404000e */ addiu $a0,$zero,0xe
/* f189098: 8fbf0014 */ lw $ra,0x14($sp)
/* f18909c: 27bd0018 */ addiu $sp,$sp,0x18
@ -2004,10 +1966,10 @@ glabel func0f1890a8
.L0f189114:
/* f189114: 01c57021 */ addu $t6,$t6,$a1
/* f189118: 000e7040 */ sll $t6,$t6,0x1
/* f18911c: 3c048008 */ lui $a0,%hi(mpweaponsetstable)
/* f18911c: 3c048008 */ lui $a0,%hi(g_MpWeaponSets)
/* f189120: 008e2021 */ addu $a0,$a0,$t6
/* f189124: 0fc5b9f1 */ jal langGet
/* f189128: 948473f0 */ lhu $a0,%lo(mpweaponsetstable)($a0)
/* f189128: 948473f0 */ lhu $a0,%lo(g_MpWeaponSets)($a0)
/* f18912c: 8fbf0014 */ lw $ra,0x14($sp)
.L0f189130:
/* f189130: 27bd0018 */ addiu $sp,$sp,0x18
@ -2020,11 +1982,11 @@ glabel func0f18913c
/* f18913c: 27bdffb8 */ addiu $sp,$sp,-72
/* f189140: afb70034 */ sw $s7,0x34($sp)
/* f189144: afb5002c */ sw $s5,0x2c($sp)
/* f189148: 3c0f8008 */ lui $t7,%hi(mpweaponsetstable)
/* f189148: 3c0f8008 */ lui $t7,%hi(g_MpWeaponSets)
/* f18914c: afbe0038 */ sw $s8,0x38($sp)
/* f189150: afb60030 */ sw $s6,0x30($sp)
/* f189154: afb40028 */ sw $s4,0x28($sp)
/* f189158: 25ef73f0 */ addiu $t7,$t7,%lo(mpweaponsetstable)
/* f189158: 25ef73f0 */ addiu $t7,$t7,%lo(g_MpWeaponSets)
/* f18915c: 3c158008 */ lui $s5,%hi(mpweaponstable)
/* f189160: 3c17800b */ lui $s7,%hi(g_MpSetup+0x6)
/* f189164: 00007100 */ sll $t6,$zero,0x4
@ -2183,8 +2145,8 @@ glabel func0f1892dc
/* f189394: 5040000b */ beqzl $v0,.L0f1893c4
/* f189398: 8e0d0000 */ lw $t5,0x0($s0)
/* f18939c: 8e0f0000 */ lw $t7,0x0($s0)
/* f1893a0: 3c0c8008 */ lui $t4,%hi(mpweaponsetstable)
/* f1893a4: 258c73f0 */ addiu $t4,$t4,%lo(mpweaponsetstable)
/* f1893a0: 3c0c8008 */ lui $t4,%hi(g_MpWeaponSets)
/* f1893a4: 258c73f0 */ addiu $t4,$t4,%lo(g_MpWeaponSets)
/* f1893a8: 000fc0c0 */ sll $t8,$t7,0x3
/* f1893ac: 030fc021 */ addu $t8,$t8,$t7
/* f1893b0: 0018c040 */ sll $t8,$t8,0x1
@ -2193,8 +2155,8 @@ glabel func0f1892dc
/* f1893bc: 032c1021 */ addu $v0,$t9,$t4
/* f1893c0: 8e0d0000 */ lw $t5,0x0($s0)
.L0f1893c4:
/* f1893c4: 3c0f8008 */ lui $t7,%hi(mpweaponsetstable)
/* f1893c8: 25ef73f0 */ addiu $t7,$t7,%lo(mpweaponsetstable)
/* f1893c4: 3c0f8008 */ lui $t7,%hi(g_MpWeaponSets)
/* f1893c8: 25ef73f0 */ addiu $t7,$t7,%lo(g_MpWeaponSets)
/* f1893cc: 000d70c0 */ sll $t6,$t5,0x3
/* f1893d0: 01cd7021 */ addu $t6,$t6,$t5
/* f1893d4: 000e7040 */ sll $t6,$t6,0x1
@ -2372,7 +2334,7 @@ glabel func0f18961c
/* f18961c: 27bdffe8 */ addiu $sp,$sp,-24
/* f189620: afbf0014 */ sw $ra,0x14($sp)
/* f189624: 3c048008 */ lui $a0,%hi(var800874c8)
/* f189628: 0fc623b5 */ jal func0f188ed4
/* f189628: 0fc623b5 */ jal mpCountWeaponSetThing
/* f18962c: 8c8474c8 */ lw $a0,%lo(var800874c8)($a0)
/* f189630: 8fbf0014 */ lw $ra,0x14($sp)
/* f189634: 27bd0018 */ addiu $sp,$sp,0x18

View File

@ -7,7 +7,7 @@
#define true 1
#define ABS(val) (val > 0 ? val : -val)
#define ARRAYCOUNT(a) (sizeof(a) / sizeof(a[0]))
#define ARRAYCOUNT(a) (s32)(sizeof(a) / sizeof(a[0]))
#define CHRRACE(chr) (chr ? chr->race : RACE_HUMAN)
#define FRAMEDURATION (1 / 60.0f)
#define PLAYERCOUNT() ((g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0) + (g_Vars.players[3] ? 1 : 0))

View File

@ -298,7 +298,7 @@ extern u32 var8008716c;
extern u32 var800871fc;
extern u32 var80087264;
extern u16 mpweaponstable[];
extern struct mpweaponset mpweaponsetstable[];
extern struct mpweaponset g_MpWeaponSets[12];
extern u32 var800874c8;
extern u32 var800874cc;
extern u32 var800874f0;

View File

@ -25,7 +25,7 @@ char *mpGetWeaponLabel(s32 weapon_id);
void mpSetWeaponSlot(s32 slot, s32 weapon_id);
s32 mpGetWeaponSlot(s32 slot);
u32 func0f188e24(void);
u32 func0f188ed4(void);
s32 mpCountWeaponSetThing(s32 weaponsetindex);
u32 func0f188f9c(void);
s32 func0f189058(s32 arg0);
u32 func0f189088(void);

View File

@ -3070,8 +3070,15 @@ struct stagetableentry {
};
struct mpweaponset {
u16 namefileid;
u8 slots[16];
/*0x00*/ u16 name;
/*0x02*/ u8 slots[6];
/*0x08*/ u8 unlocks[4];
/*0x0c*/ u8 unk0c;
/*0x0d*/ u8 unk0d;
/*0x0e*/ u8 unk0e;
/*0x0f*/ u8 unk0f;
/*0x10*/ u8 unk10;
/*0x11*/ u8 unk11;
};
struct mphead {