From c4164408a4e8bb0a0880477a2770838d8b53bb8a Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 13 Nov 2020 18:55:09 +1000 Subject: [PATCH] Decompile func0f116df0 --- src/game/pak/pak.c | 57 ++++--------- src/include/game/pak/pak.h | 2 +- src/include/types.h | 160 ++----------------------------------- 3 files changed, 24 insertions(+), 195 deletions(-) diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index 21b84296d..b9932afa3 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -469,48 +469,21 @@ void func0f116db0(s8 device, s32 value) var800a2380[device].unk010 = value; } -GLOBAL_ASM( -glabel func0f116df0 -/* f116df0: 27bdffe8 */ addiu $sp,$sp,-24 -/* f116df4: afbf0014 */ sw $ra,0x14($sp) -/* f116df8: afa40018 */ sw $a0,0x18($sp) -/* f116dfc: afa5001c */ sw $a1,0x1c($sp) -/* f116e00: aca00000 */ sw $zero,0x0($a1) -/* f116e04: 0fc45ad7 */ jal func0f116b5c -/* f116e08: 83a4001b */ lb $a0,0x1b($sp) -/* f116e0c: 50400019 */ beqzl $v0,.L0f116e74 -/* f116e10: 24020001 */ addiu $v0,$zero,0x1 -/* f116e14: 0fc4695d */ jal func0f11a574 -/* f116e18: 83a4001b */ lb $a0,0x1b($sp) -/* f116e1c: 10400012 */ beqz $v0,.L0f116e68 -/* f116e20: 83af001b */ lb $t7,0x1b($sp) -/* f116e24: 000fc080 */ sll $t8,$t7,0x2 -/* f116e28: 030fc023 */ subu $t8,$t8,$t7 -/* f116e2c: 0018c080 */ sll $t8,$t8,0x2 -/* f116e30: 030fc023 */ subu $t8,$t8,$t7 -/* f116e34: 0018c080 */ sll $t8,$t8,0x2 -/* f116e38: 030fc021 */ addu $t8,$t8,$t7 -/* f116e3c: 0018c080 */ sll $t8,$t8,0x2 -/* f116e40: 030fc023 */ subu $t8,$t8,$t7 -/* f116e44: 0018c080 */ sll $t8,$t8,0x2 -/* f116e48: 3c08800a */ lui $t0,%hi(var800a2380) -/* f116e4c: 8faa001c */ lw $t2,0x1c($sp) -/* f116e50: 25082380 */ addiu $t0,$t0,%lo(var800a2380) -/* f116e54: 27190018 */ addiu $t9,$t8,0x18 -/* f116e58: 03284821 */ addu $t1,$t9,$t0 -/* f116e5c: 00001025 */ or $v0,$zero,$zero -/* f116e60: 10000004 */ beqz $zero,.L0f116e74 -/* f116e64: ad490000 */ sw $t1,0x0($t2) -.L0f116e68: -/* f116e68: 10000002 */ beqz $zero,.L0f116e74 -/* f116e6c: 24020002 */ addiu $v0,$zero,0x2 -/* f116e70: 24020001 */ addiu $v0,$zero,0x1 -.L0f116e74: -/* f116e74: 8fbf0014 */ lw $ra,0x14($sp) -/* f116e78: 27bd0018 */ addiu $sp,$sp,0x18 -/* f116e7c: 03e00008 */ jr $ra -/* f116e80: 00000000 */ sll $zero,$zero,0x0 -); +s32 func0f116df0(s8 device, struct pakdata **pakdata) +{ + *pakdata = NULL; + + if (func0f116b5c(device)) { + if (func0f11a574(device)) { + *pakdata = &var800a2380[device].pakdata; + return 0; + } + + return 2; + } + + return 1; +} GLOBAL_ASM( glabel func0f116e84 diff --git a/src/include/game/pak/pak.h b/src/include/game/pak/pak.h index 431435d71..fab9845a6 100644 --- a/src/include/game/pak/pak.h +++ b/src/include/game/pak/pak.h @@ -79,7 +79,7 @@ void func0f11a2e4(void); u32 func0f11a32c(void); u32 func0f11a434(void); u32 func0f11a504(u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4, u32 arg5, u16 *arg6); -u32 func0f11a574(void); +s32 func0f11a574(s8 device); u32 func0f11a7dc(void); u32 func0f11a8f4(void); u32 func0f11ac7c(void); diff --git a/src/include/types.h b/src/include/types.h index 136f27bac..45821ce13 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5102,6 +5102,13 @@ struct textoverride { /*0x24*/ struct defaultobj *obj; }; +struct pakdata { + /*0x000*/ OSPfsState notes[16]; + /*0x200*/ bool notesinuse[16]; + /*0x240*/ u16 pagesused; + /*0x242*/ u16 pagesfree; +}; + struct var800a2380 { /*0x000*/ u32 unk000; /*0x004*/ u32 unk004; @@ -5109,151 +5116,7 @@ struct var800a2380 { /*0x00c*/ u32 unk00c; /*0x010*/ u32 unk010; /*0x014*/ u8 unk014; - /*0x018*/ u32 unk018; - /*0x01c*/ u32 unk01c; - /*0x020*/ u32 unk020; - /*0x024*/ u32 unk024; - /*0x028*/ u32 unk028; - /*0x02c*/ u32 unk02c; - /*0x030*/ u32 unk030; - /*0x034*/ u32 unk034; - /*0x038*/ u32 unk038; - /*0x03c*/ u32 unk03c; - /*0x040*/ u32 unk040; - /*0x044*/ u32 unk044; - /*0x048*/ u32 unk048; - /*0x04c*/ u32 unk04c; - /*0x050*/ u32 unk050; - /*0x054*/ u32 unk054; - /*0x058*/ u32 unk058; - /*0x05c*/ u32 unk05c; - /*0x060*/ u32 unk060; - /*0x064*/ u32 unk064; - /*0x068*/ u32 unk068; - /*0x06c*/ u32 unk06c; - /*0x070*/ u32 unk070; - /*0x074*/ u32 unk074; - /*0x078*/ u32 unk078; - /*0x07c*/ u32 unk07c; - /*0x080*/ u32 unk080; - /*0x084*/ u32 unk084; - /*0x088*/ u32 unk088; - /*0x08c*/ u32 unk08c; - /*0x090*/ u32 unk090; - /*0x094*/ u32 unk094; - /*0x098*/ u32 unk098; - /*0x09c*/ u32 unk09c; - /*0x0a0*/ u32 unk0a0; - /*0x0a4*/ u32 unk0a4; - /*0x0a8*/ u32 unk0a8; - /*0x0ac*/ u32 unk0ac; - /*0x0b0*/ u32 unk0b0; - /*0x0b4*/ u32 unk0b4; - /*0x0b8*/ u32 unk0b8; - /*0x0bc*/ u32 unk0bc; - /*0x0c0*/ u32 unk0c0; - /*0x0c4*/ u32 unk0c4; - /*0x0c8*/ u32 unk0c8; - /*0x0cc*/ u32 unk0cc; - /*0x0d0*/ u32 unk0d0; - /*0x0d4*/ u32 unk0d4; - /*0x0d8*/ u32 unk0d8; - /*0x0dc*/ u32 unk0dc; - /*0x0e0*/ u32 unk0e0; - /*0x0e4*/ u32 unk0e4; - /*0x0e8*/ u32 unk0e8; - /*0x0ec*/ u32 unk0ec; - /*0x0f0*/ u32 unk0f0; - /*0x0f4*/ u32 unk0f4; - /*0x0f8*/ u32 unk0f8; - /*0x0fc*/ u32 unk0fc; - /*0x100*/ u32 unk100; - /*0x104*/ u32 unk104; - /*0x108*/ u32 unk108; - /*0x10c*/ u32 unk10c; - /*0x110*/ u32 unk110; - /*0x114*/ u32 unk114; - /*0x118*/ u32 unk118; - /*0x11c*/ u32 unk11c; - /*0x120*/ u32 unk120; - /*0x124*/ u32 unk124; - /*0x128*/ u32 unk128; - /*0x12c*/ u32 unk12c; - /*0x130*/ u32 unk130; - /*0x134*/ u32 unk134; - /*0x138*/ u32 unk138; - /*0x13c*/ u32 unk13c; - /*0x140*/ u32 unk140; - /*0x144*/ u32 unk144; - /*0x148*/ u32 unk148; - /*0x14c*/ u32 unk14c; - /*0x150*/ u32 unk150; - /*0x154*/ u32 unk154; - /*0x158*/ u32 unk158; - /*0x15c*/ u32 unk15c; - /*0x160*/ u32 unk160; - /*0x164*/ u32 unk164; - /*0x168*/ u32 unk168; - /*0x16c*/ u32 unk16c; - /*0x170*/ u32 unk170; - /*0x174*/ u32 unk174; - /*0x178*/ u32 unk178; - /*0x17c*/ u32 unk17c; - /*0x180*/ u32 unk180; - /*0x184*/ u32 unk184; - /*0x188*/ u32 unk188; - /*0x18c*/ u32 unk18c; - /*0x190*/ u32 unk190; - /*0x194*/ u32 unk194; - /*0x198*/ u32 unk198; - /*0x19c*/ u32 unk19c; - /*0x1a0*/ u32 unk1a0; - /*0x1a4*/ u32 unk1a4; - /*0x1a8*/ u32 unk1a8; - /*0x1ac*/ u32 unk1ac; - /*0x1b0*/ u32 unk1b0; - /*0x1b4*/ u32 unk1b4; - /*0x1b8*/ u32 unk1b8; - /*0x1bc*/ u32 unk1bc; - /*0x1c0*/ u32 unk1c0; - /*0x1c4*/ u32 unk1c4; - /*0x1c8*/ u32 unk1c8; - /*0x1cc*/ u32 unk1cc; - /*0x1d0*/ u32 unk1d0; - /*0x1d4*/ u32 unk1d4; - /*0x1d8*/ u32 unk1d8; - /*0x1dc*/ u32 unk1dc; - /*0x1e0*/ u32 unk1e0; - /*0x1e4*/ u32 unk1e4; - /*0x1e8*/ u32 unk1e8; - /*0x1ec*/ u32 unk1ec; - /*0x1f0*/ u32 unk1f0; - /*0x1f4*/ u32 unk1f4; - /*0x1f8*/ u32 unk1f8; - /*0x1fc*/ u32 unk1fc; - /*0x200*/ u32 unk200; - /*0x204*/ u32 unk204; - /*0x208*/ u32 unk208; - /*0x20c*/ u32 unk20c; - /*0x210*/ u32 unk210; - /*0x214*/ u32 unk214; - /*0x218*/ u32 unk218; - /*0x21c*/ u32 unk21c; - /*0x220*/ u32 unk220; - /*0x224*/ u32 unk224; - /*0x228*/ u32 unk228; - /*0x22c*/ u32 unk22c; - /*0x230*/ u32 unk230; - /*0x234*/ u32 unk234; - /*0x238*/ u32 unk238; - /*0x23c*/ u32 unk23c; - /*0x240*/ u32 unk240; - /*0x244*/ u32 unk244; - /*0x248*/ u32 unk248; - /*0x24c*/ u32 unk24c; - /*0x250*/ u32 unk250; - /*0x254*/ u32 unk254; - /*0x258*/ u32 unk258; + /*0x018*/ struct pakdata pakdata; /*0x25c*/ u32 unk25c; /*0x260*/ u16 unk260; /*0x262*/ u16 unk262; @@ -6977,11 +6840,4 @@ struct remoteminething { }; }; -struct pakdata { - /*0x000*/ OSPfsState notes[16]; - /*0x200*/ bool notesinuse[16]; - /*0x240*/ u16 pagesused; - /*0x242*/ u16 pagesfree; -}; - #endif