From 146611e7f019b54706ab1f930ad5219ee0e57bdb Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 16 Feb 2020 18:50:33 +1000 Subject: [PATCH] Decompile func0f1a7794 --- src/game/data/data_000000.c | 2 +- src/game/game_1a3340.c | 67 ++++++++--------------------- src/include/game/data/data_000000.h | 1 + src/include/game/game_166e40.h | 6 ++- src/include/game/game_1a3340.h | 6 +-- src/include/library/library_1a500.h | 2 +- 6 files changed, 28 insertions(+), 56 deletions(-) diff --git a/src/game/data/data_000000.c b/src/game/data/data_000000.c index 895a7dcce..c64dddf47 100644 --- a/src/game/data/data_000000.c +++ b/src/game/data/data_000000.c @@ -3707,7 +3707,7 @@ u32 var8005d990 = 0x700529ac; u32 var8005d994 = 0x00000000; u32 var8005d998 = 0x00000000; u32 var8005d99c = 0x00000000; -u32 var8005d9a0 = 0x00000000; +u8 var8005d9a0 = 0; u32 var8005d9a4 = 0x00000000; u32 var8005d9a8 = 0x00000000; u32 var8005d9ac = 0x00000000; diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index 8bad1c587..82aefb7fc 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -4834,55 +4834,24 @@ glabel func0f1a7730 /* f1a7790: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f1a7794 -/* f1a7794: 27bdffd8 */ addiu $sp,$sp,-40 -/* f1a7798: afb00020 */ sw $s0,0x20($sp) -/* f1a779c: 240e0006 */ addiu $t6,$zero,0x6 -/* f1a77a0: 3c018006 */ lui $at,0x8006 -/* f1a77a4: 00c08025 */ or $s0,$a2,$zero -/* f1a77a8: afbf0024 */ sw $ra,0x24($sp) -/* f1a77ac: afa40028 */ sw $a0,0x28($sp) -/* f1a77b0: afa5002c */ sw $a1,0x2c($sp) -/* f1a77b4: afa70034 */ sw $a3,0x34($sp) -/* f1a77b8: a02ed9a0 */ sb $t6,-0x2660($at) -/* f1a77bc: 10a00008 */ beqz $a1,.L0f1a77e0 -/* f1a77c0: 00a07825 */ or $t7,$a1,$zero -/* f1a77c4: 97a4002a */ lhu $a0,0x2a($sp) -/* f1a77c8: 24050011 */ addiu $a1,$zero,0x11 -/* f1a77cc: 01e03025 */ or $a2,$t7,$zero -/* f1a77d0: 0fc59c80 */ jal func0f167200 -/* f1a77d4: 02003825 */ or $a3,$s0,$zero -/* f1a77d8: 10000005 */ beqz $zero,.L0f1a77f0 -/* f1a77dc: 00408025 */ or $s0,$v0,$zero -.L0f1a77e0: -/* f1a77e0: 97a4002a */ lhu $a0,0x2a($sp) -/* f1a77e4: 0fc59c3f */ jal func0f1670fc -/* f1a77e8: 24050011 */ addiu $a1,$zero,0x11 -/* f1a77ec: 00408025 */ or $s0,$v0,$zero -.L0f1a77f0: -/* f1a77f0: 0fc69dcc */ jal func0f1a7730 -/* f1a77f4: 02002025 */ or $a0,$s0,$zero -/* f1a77f8: 02002025 */ or $a0,$s0,$zero -/* f1a77fc: 3c050500 */ lui $a1,0x500 -/* f1a7800: 0c008a89 */ jal func00022a24 -/* f1a7804: 02003025 */ or $a2,$s0,$zero -/* f1a7808: 8fb9002c */ lw $t9,0x2c($sp) -/* f1a780c: 8fb80034 */ lw $t8,0x34($sp) -/* f1a7810: 02002025 */ or $a0,$s0,$zero -/* f1a7814: 2f280001 */ sltiu $t0,$t9,0x1 -/* f1a7818: afa80014 */ sw $t0,0x14($sp) -/* f1a781c: 97a5002a */ lhu $a1,0x2a($sp) -/* f1a7820: 3c060500 */ lui $a2,0x500 -/* f1a7824: 02003825 */ or $a3,$s0,$zero -/* f1a7828: 0fc69d58 */ jal func0f1a7560 -/* f1a782c: afb80010 */ sw $t8,0x10($sp) -/* f1a7830: 8fbf0024 */ lw $ra,0x24($sp) -/* f1a7834: 02001025 */ or $v0,$s0,$zero -/* f1a7838: 8fb00020 */ lw $s0,0x20($sp) -/* f1a783c: 03e00008 */ jr $ra -/* f1a7840: 27bd0028 */ addiu $sp,$sp,0x28 -); +void *func0f1a7794(u16 fileid, u32 arg1, s32 arg2, s32 arg3) +{ + void *ptr; + + var8005d9a0 = 6; + + if (arg1) { + ptr = func0f167200(fileid, 0x11, arg1, arg2); + } else { + ptr = func0f1670fc(fileid, 0x11); + } + + func0f1a7730(ptr); + func00022a24(ptr, 0x5000000, ptr); + func0f1a7560(ptr, fileid, 0x5000000, ptr, arg3, arg1 < 1); + + return ptr; +} void *fileLoad(u16 fileid) { diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 8724d3a0d..9d71d5001 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -83,6 +83,7 @@ extern u32 var8005d5b8; extern u32 var8005d5bc; extern u32 var8005d880; extern u32 var8005d994; +extern u8 var8005d9a0; extern u32 var8005d9cc; extern u32 var8005d9d4; extern u32 var8005dcc8; diff --git a/src/include/game/game_166e40.h b/src/include/game/game_166e40.h index 20b37ea16..fe29cf908 100644 --- a/src/include/game/game_166e40.h +++ b/src/include/game/game_166e40.h @@ -1,5 +1,7 @@ #ifndef GAME_GAME_166E40 #define GAME_GAME_166E40 +#include +#include "types.h" u32 func0f166e40(void); u32 func0f166e54(void); @@ -9,8 +11,8 @@ u32 func0f166eb4(void); u32 func0f166f74(void); u32 func0f166ff0(void); u32 func0f167054(void); -char *func0f1670fc(s32 file_id, s32 arg1); -char *func0f167200(s32 file_id, s32 arg1, s32 arg2, s32 arg3); +void *func0f1670fc(s32 file_id, s32 arg1); +void *func0f167200(s32 file_id, s32 arg1, s32 arg2, s32 arg3); u32 func0f167280(void); u32 func0f167294(void); u32 func0f1672a8(void); diff --git a/src/include/game/game_1a3340.h b/src/include/game/game_1a3340.h index 7d5d4ecea..20a4b9295 100644 --- a/src/include/game/game_1a3340.h +++ b/src/include/game/game_1a3340.h @@ -33,9 +33,9 @@ u32 func0f1a6b7c(void); u32 func0f1a6c8c(void); u32 func0f1a6cc4(void); u32 func0f1a7554(void); -u32 func0f1a7560(void); -u32 func0f1a7730(void); -void *func0f1a7794(u16 fileid, s32 arg1, s32 arg2, s32 arg3); +void func0f1a7560(void *ptr, u16 fileid, u32 arg2, void *arg3, s32 arg4, bool arg5); +void func0f1a7730(void *ptr); +void *func0f1a7794(u16 fileid, u32 arg1, s32 arg2, s32 arg3); void *fileLoad(u16 fileid); s32 menudialog001a39a8(u32, u32, u32 *); s32 menudialog001a3af4(u32, u32, u32 *); diff --git a/src/include/library/library_1a500.h b/src/include/library/library_1a500.h index e7c190692..3e9b88901 100644 --- a/src/include/library/library_1a500.h +++ b/src/include/library/library_1a500.h @@ -92,7 +92,7 @@ u32 func00021ef4(void); u32 func000220fc(void); u32 func000225d4(void); u32 func000227a4(void); -u32 func00022a24(void); +void func00022a24(void *arg0, u32 arg1, void *arg2); u32 func00022b68(void); u32 func00022d24(void); u32 func00022d50(void);