From a6b85ab113a4295c05ee86595c878e71a0c6cdde Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 30 Mar 2021 08:58:02 +1000 Subject: [PATCH] Decompile func00037f5c --- src/include/lib/lib_37b00.h | 2 +- src/lib/lib_37650.c | 22 +++++++++ src/lib/lib_37b00.c | 96 ++++++++++++++++--------------------- src/lib/lib_38d10.c | 12 ----- 4 files changed, 65 insertions(+), 67 deletions(-) diff --git a/src/include/lib/lib_37b00.h b/src/include/lib/lib_37b00.h index 51e4c9d88..edde8c26d 100644 --- a/src/include/lib/lib_37b00.h +++ b/src/include/lib/lib_37b00.h @@ -11,7 +11,7 @@ void func00037e38(void); void func00037e68(void); u32 func00037ea4(void); void func00037f08(s32 arg0, s32 arg1); -void func00037f5c(s32 arg0, s32 arg1); +void func00037f5c(s32 arg0, bool arg1); u32 func00037fc0(void); u32 func00038924(void); u32 func00038b90(void); diff --git a/src/lib/lib_37650.c b/src/lib/lib_37650.c index dc1cffad7..cfae25639 100644 --- a/src/lib/lib_37650.c +++ b/src/lib/lib_37650.c @@ -6,6 +6,28 @@ #include "data.h" #include "types.h" +// This bss belongs in lib_37b00 but is here due to reordering issues +u32 var8009c390; +u32 var8009c394; +u32 var8009c398; +u32 var8009c39c; +u32 var8009c3a0; +u32 var8009c3a4; +u32 var8009c3a8; +u32 var8009c3ac; +u32 var8009c3b0; +u32 var8009c3b4; +u32 var8009c3b8; +u32 var8009c3bc; +u32 var8009c3c0; +u32 var8009c3c4; +u32 var8009c3c8; +u32 var8009c3cc; +u32 var8009c3d0; +u32 var8009c3d4; +u32 var8009c3d8; +u32 var8009c3dc; + GLOBAL_ASM( glabel func00037650 /* 37650: 27bdffd8 */ addiu $sp,$sp,-40 diff --git a/src/lib/lib_37b00.c b/src/lib/lib_37b00.c index 63e7b5724..67fc809b5 100644 --- a/src/lib/lib_37b00.c +++ b/src/lib/lib_37b00.c @@ -1,46 +1,39 @@ #include #include "constants.h" -#include "bss.h" -#include "lib/lib_37b00.h" -#include "lib/lib_3e730.h" -#include "lib/lib_43dd0.h" -#include "lib/libc/ll.h" -#include "lib/lib_4b170.h" -#include "data.h" #include "types.h" #if VERSION < VERSION_NTSC_1_0 const char var700561b0nb[] = "MPEG : RWI -> Allocating %d bytes for ASISTREAM from audio heap\n"; #endif -u32 var8009c390; -u32 var8009c394; -u32 var8009c398; -u32 var8009c39c; -u32 var8009c3a0; -u32 var8009c3a4; -u32 var8009c3a8; -u32 var8009c3ac; -u32 var8009c3b0; -u32 var8009c3b4; -u32 var8009c3b8; -u32 var8009c3bc; -u32 var8009c3c0; -u32 var8009c3c4; -u32 var8009c3c8; -u32 var8009c3cc; - -// Moved to another file due to bss reordering issues +extern u32 var8009c390; +extern u32 var8009c394; +extern u32 var8009c398; +extern u32 var8009c39c; +extern u32 var8009c3a0; +extern u32 var8009c3a4; +extern u32 var8009c3a8; +extern u32 var8009c3ac; +extern u32 var8009c3b0; +extern u32 var8009c3b4; +extern u32 var8009c3b8; +extern u32 var8009c3bc; +extern u32 var8009c3c0; +extern u32 var8009c3c4; +extern u32 var8009c3c8; +extern u32 var8009c3cc; extern u32 var8009c3d0; extern u32 var8009c3d4; extern u32 var8009c3d8; extern u32 var8009c3dc; -extern u32 var8009c3e0; -extern u32 var8009c3e4; -extern u32 var8009c3e8; -extern u32 var8009c3ec; -extern u8 var8009c3f0; -extern u32 var8009c3f4; + +u32 var8009c3e0; +u32 var8009c3e4; +u32 var8009c3e8; +s16 var8009c3ec; +s16 var8009c3ee; +u8 var8009c3f0; +u32 var8009c3f4; #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( @@ -494,30 +487,25 @@ void func00037f08(s32 arg0, s32 arg1) var8009c3e8 = arg1; } +void func00037f5c(s32 arg0, bool arg1) +{ + if (arg0 > 255) { + arg0 = 255; + } + + if (arg0 < 0) { + arg0 = 0; + } + + var8009c3ee = arg0; + + if (arg1) { + var8009c3ec = var8009c3ee; + } +} + GLOBAL_ASM( -glabel func00037f5c -/* 37f5c: 28810100 */ slti $at,$a0,0x100 -/* 37f60: 14200002 */ bnez $at,.L00037f6c -/* 37f64: 00000000 */ nop -/* 37f68: 240400ff */ addiu $a0,$zero,0xff -.L00037f6c: -/* 37f6c: 04810002 */ bgez $a0,.L00037f78 -/* 37f70: 00000000 */ nop -/* 37f74: 00002025 */ or $a0,$zero,$zero -.L00037f78: -/* 37f78: 3c01800a */ lui $at,%hi(var8009c3ec+0x2) -/* 37f7c: a424c3ee */ sh $a0,%lo(var8009c3ec+0x2)($at) -/* 37f80: 10a00005 */ beqz $a1,.L00037f98 -/* 37f84: 00000000 */ nop -/* 37f88: 3c0e800a */ lui $t6,%hi(var8009c3ec+0x2) -/* 37f8c: 85cec3ee */ lh $t6,%lo(var8009c3ec+0x2)($t6) -/* 37f90: 3c01800a */ lui $at,%hi(var8009c3ec) -/* 37f94: a42ec3ec */ sh $t6,%lo(var8009c3ec)($at) -.L00037f98: -/* 37f98: 03e00008 */ jr $ra -/* 37f9c: 00000000 */ nop -/* 37fa0: 03e00008 */ jr $ra -/* 37fa4: 00000000 */ nop +glabel func00037fa8 /* 37fa8: afa40000 */ sw $a0,0x0($sp) /* 37fac: afa50004 */ sw $a1,0x4($sp) /* 37fb0: 10000001 */ b .L00037fb8 diff --git a/src/lib/lib_38d10.c b/src/lib/lib_38d10.c index dc52e95d2..98639ce9c 100644 --- a/src/lib/lib_38d10.c +++ b/src/lib/lib_38d10.c @@ -4,18 +4,6 @@ #include "data.h" #include "types.h" -// This bss belongs in lib_37b00 but is here due to reordering issues -u32 var8009c3d0; -u32 var8009c3d4; -u32 var8009c3d8; -u32 var8009c3dc; -u32 var8009c3e0; -u32 var8009c3e4; -u32 var8009c3e8; -u32 var8009c3ec; -u8 var8009c3f0; -u32 var8009c3f4; - GLOBAL_ASM( glabel func00038d10 /* 38d10: 03e00008 */ jr $ra