Decompile argsParseDebugArgs

This commit is contained in:
Ryan Dwyer 2021-01-30 19:35:34 +10:00
parent 753e1ab228
commit f262c23324
12 changed files with 76 additions and 108 deletions

View File

@ -570,7 +570,7 @@ void mainproc(void *arg)
func00013710();
rmonCreateThread();
if (func00012f30()) {
if (argsParseDebugArgs()) {
osStopThread(NULL);
}

View File

@ -102,7 +102,7 @@ s32 func0f16d180(s32 tracktype)
void musicStart(u32 tracktype, u32 tracknum, f32 arg2, u16 volume)
{
if (var8005dda0 == 0) {
if (!g_Silent) {
var800aa5d8[var800840c4].tracktype = tracktype;
var800aa5d8[var800840c4].tracknum = tracknum;
var800aa5d8[var800840c4].unk0c = arg2;
@ -117,7 +117,7 @@ void musicStart(u32 tracktype, u32 tracknum, f32 arg2, u16 volume)
void musicEnd(s32 tracktype)
{
if (var8005dda0 == 0) {
if (!g_Silent) {
var800aa5d8[var800840c4].tracktype = tracktype;
var800aa5d8[var800840c4].unk12 = 2;
var800aa5d8[var800840c4].unk14 = var800840d4++;
@ -129,7 +129,7 @@ void musicEnd(s32 tracktype)
void func0f16d2ac(s32 tracktype, f32 arg1, s32 arg2)
{
if (var8005dda0 == 0) {
if (!g_Silent) {
var800aa5d8[var800840c4].tracktype = tracktype;
var800aa5d8[var800840c4].unk0c = arg1;
var800aa5d8[var800840c4].unk08 = arg2;
@ -145,7 +145,7 @@ void func0f16d324(void)
{
s32 i;
if (var8005dda0 == 0) {
if (!g_Silent) {
for (i = 0; i < 4; i++) {
g_AudioXReasonsActive[i] = 0;
var800aaa78[i] = 0;

View File

@ -11847,7 +11847,7 @@ u32 var80099870 = 0;
u32 var80099874 = 0;
u32 var80099878 = 0;
u32 var8009987c = 0;
char g_ArgString[120] = {0};
u32 g_ArgBuffer[30] = {0};
u32 var800998f8 = 0;
u32 var800998fc = 0;
u32 var80099900 = 0;

View File

@ -103,7 +103,7 @@ extern u32 var8005dd1c;
extern s32 g_MainStageNum;
extern u32 var8005dd5c;
extern u32 var8005dd7c;
extern u32 var8005dda0;
extern bool g_Silent;
extern u32 var8005dda8;
extern u32 var8005ddac;
extern u32 var8005ddb4;

View File

@ -417,7 +417,7 @@ extern u32 var80099474;
extern u32 var80099478;
extern u32 var80099484;
extern u32 var8009985c;
extern char g_ArgString[120];
extern u32 g_ArgBuffer[30];
extern u32 var800998f8;
extern u32 var80099900;
extern u32 var80099a00;

View File

@ -7,7 +7,7 @@ void rngSetSeed(u32 amount);
u32 func00012e1c(u64 *value);
char *argParseString(char *str);
void argSetString(char *string);
s32 func00012f30(void);
s32 argsParseDebugArgs(void);
char *argFindByPrefix(s32 occurrence, char *string);
void argGetLevel(s32 *stagenum);
u32 random(void);

View File

@ -4,7 +4,7 @@
#include "types.h"
void rmonproc();
u32 func0002fa08(void);
bool rmonIsDisabled(void);
void func0002faa4(char *format, ...);
#endif

View File

@ -46,7 +46,7 @@ const u32 var70053c94[] = {0x3eb33333};
const u32 var70053c98[] = {0x3f4ccccd};
const u32 var70053c9c[] = {0x00000000};
u32 var8005dda0 = 0x00000000;
bool g_Silent = false;
u32 var8005dda4 = 0x00000000;
u32 var8005dda8 = 0x00000000;
u32 var8005ddac = 0xffffffff;
@ -1725,8 +1725,8 @@ glabel func0000f804
/* f88c: 3c018006 */ lui $at,%hi(var8005ddd0)
/* f890: ac20ddd0 */ sw $zero,%lo(var8005ddd0)($at)
.L0000f894:
/* f894: 3c188006 */ lui $t8,%hi(var8005dda0)
/* f898: 8f18dda0 */ lw $t8,%lo(var8005dda0)($t8)
/* f894: 3c188006 */ lui $t8,%hi(g_Silent)
/* f898: 8f18dda0 */ lw $t8,%lo(g_Silent)($t8)
/* f89c: 02002025 */ or $a0,$s0,$zero
/* f8a0: 570000bb */ bnezl $t8,.L0000fb90
/* f8a4: 8fbf0024 */ lw $ra,0x24($sp)
@ -1946,8 +1946,8 @@ glabel func0000fba0
GLOBAL_ASM(
glabel func0000fbc4
/* fbc4: 3c0e8006 */ lui $t6,%hi(var8005dda0)
/* fbc8: 8dcedda0 */ lw $t6,%lo(var8005dda0)($t6)
/* fbc4: 3c0e8006 */ lui $t6,%hi(g_Silent)
/* fbc8: 8dcedda0 */ lw $t6,%lo(g_Silent)($t6)
/* fbcc: 27bdffe8 */ addiu $sp,$sp,-24
/* fbd0: afbf0014 */ sw $ra,0x14($sp)
/* fbd4: 15c00015 */ bnez $t6,.L0000fc2c
@ -1993,8 +1993,8 @@ glabel func0000fc48
/* fc58: afa5144c */ sw $a1,0x144c($sp)
/* fc5c: 0c00e344 */ jal func00038d10
/* fc60: 8c8400f8 */ lw $a0,0xf8($a0)
/* fc64: 3c0e8006 */ lui $t6,%hi(var8005dda0)
/* fc68: 8dcedda0 */ lw $t6,%lo(var8005dda0)($t6)
/* fc64: 3c0e8006 */ lui $t6,%hi(g_Silent)
/* fc68: 8dcedda0 */ lw $t6,%lo(g_Silent)($t6)
/* fc6c: 8fa4144c */ lw $a0,0x144c($sp)
/* fc70: 3c038009 */ lui $v1,%hi(var80095208)
/* fc74: 51c00004 */ beqzl $t6,.L0000fc88
@ -2070,8 +2070,8 @@ glabel func0000fc48
GLOBAL_ASM(
glabel func0000fd74
/* fd74: 3c0e8006 */ lui $t6,%hi(var8005dda0)
/* fd78: 8dcedda0 */ lw $t6,%lo(var8005dda0)($t6)
/* fd74: 3c0e8006 */ lui $t6,%hi(g_Silent)
/* fd78: 8dcedda0 */ lw $t6,%lo(g_Silent)($t6)
/* fd7c: 24037fff */ addiu $v1,$zero,0x7fff
/* fd80: 51c00004 */ beqzl $t6,.L0000fd94
/* fd84: 94830100 */ lhu $v1,0x100($a0)
@ -2085,8 +2085,8 @@ glabel func0000fd74
GLOBAL_ASM(
glabel func0000fd9c
/* fd9c: 3c0f8006 */ lui $t7,%hi(var8005dda0)
/* fda0: 8defdda0 */ lw $t7,%lo(var8005dda0)($t7)
/* fd9c: 3c0f8006 */ lui $t7,%hi(g_Silent)
/* fda0: 8defdda0 */ lw $t7,%lo(g_Silent)($t7)
/* fda4: 27bdffe8 */ addiu $sp,$sp,-24
/* fda8: afbf0014 */ sw $ra,0x14($sp)
/* fdac: afa5001c */ sw $a1,0x1c($sp)
@ -2245,7 +2245,7 @@ glabel func0000fe88
/* ffac: 8c820000 */ lw $v0,0x0($a0)
/* ffb0: 8ce30000 */ lw $v1,0x0($a3)
/* ffb4: 3c0f8006 */ lui $t7,%hi(var8005edec)
/* ffb8: 3c188006 */ lui $t8,%hi(var8005dda0)
/* ffb8: 3c188006 */ lui $t8,%hi(g_Silent)
/* ffbc: 0043082a */ slt $at,$v0,$v1
/* ffc0: 10200003 */ beqz $at,.L0000ffd0
/* ffc4: 3c198006 */ lui $t9,%hi(var8005ddd0)
@ -2258,7 +2258,7 @@ glabel func0000fe88
/* ffdc: 00000000 */ nop
/* ffe0: ac22edec */ sw $v0,%lo(var8005edec)($at)
.L0000ffe4:
/* ffe4: 8f18dda0 */ lw $t8,%lo(var8005dda0)($t8)
/* ffe4: 8f18dda0 */ lw $t8,%lo(g_Silent)($t8)
/* ffe8: 570000d4 */ bnezl $t8,.L0001033c
/* ffec: 8fbf002c */ lw $ra,0x2c($sp)
/* fff0: 8f39ddd0 */ lw $t9,%lo(var8005ddd0)($t9)
@ -2516,15 +2516,15 @@ glabel func0000fe88
GLOBAL_ASM(
glabel func00010360
/* 10360: 3c028006 */ lui $v0,%hi(var8005dda0)
/* 10360: 3c028006 */ lui $v0,%hi(g_Silent)
/* 10364: 03e00008 */ jr $ra
/* 10368: 8c42dda0 */ lw $v0,%lo(var8005dda0)($v0)
/* 10368: 8c42dda0 */ lw $v0,%lo(g_Silent)($v0)
);
GLOBAL_ASM(
glabel func0001036c
/* 1036c: 3c0e8006 */ lui $t6,%hi(var8005dda0)
/* 10370: 8dcedda0 */ lw $t6,%lo(var8005dda0)($t6)
/* 1036c: 3c0e8006 */ lui $t6,%hi(g_Silent)
/* 10370: 8dcedda0 */ lw $t6,%lo(g_Silent)($t6)
/* 10374: 27bdffd0 */ addiu $sp,$sp,-48
/* 10378: afbf0024 */ sw $ra,0x24($sp)
/* 1037c: 15c0001f */ bnez $t6,.L000103fc
@ -2973,7 +2973,7 @@ glabel audioStart
/* 10934: 44802000 */ mtc1 $zero,$f4
/* 10938: 24050001 */ addiu $a1,$zero,0x1
/* 1093c: 10620003 */ beq $v1,$v0,.L0001094c
/* 10940: 3c198006 */ lui $t9,%hi(var8005dda0)
/* 10940: 3c198006 */ lui $t9,%hi(g_Silent)
/* 10944: 10000001 */ b .L0001094c
/* 10948: 306500ff */ andi $a1,$v1,0xff
.L0001094c:
@ -3002,7 +3002,7 @@ glabel audioStart
.L0001099c:
/* 1099c: 00000000 */ nop
.L000109a0:
/* 109a0: 8f39dda0 */ lw $t9,%lo(var8005dda0)($t9)
/* 109a0: 8f39dda0 */ lw $t9,%lo(g_Silent)($t9)
/* 109a4: 87b8004e */ lh $t8,0x4e($sp)
/* 109a8: 24010037 */ addiu $at,$zero,0x37
/* 109ac: 13200003 */ beqz $t9,.L000109bc
@ -3098,8 +3098,8 @@ glabel audioStart
GLOBAL_ASM(
glabel func00010ae4
/* 10ae4: 27bdffd8 */ addiu $sp,$sp,-40
/* 10ae8: 3c188006 */ lui $t8,%hi(var8005dda0)
/* 10aec: 8f18dda0 */ lw $t8,%lo(var8005dda0)($t8)
/* 10ae8: 3c188006 */ lui $t8,%hi(g_Silent)
/* 10aec: 8f18dda0 */ lw $t8,%lo(g_Silent)($t8)
/* 10af0: 00047400 */ sll $t6,$a0,0x10
/* 10af4: 000e7c03 */ sra $t7,$t6,0x10
/* 10af8: afa40028 */ sw $a0,0x28($sp)

View File

@ -427,8 +427,8 @@ glabel func000118f4
GLOBAL_ASM(
glabel func0001190c
/* 1190c: 27bdffb8 */ addiu $sp,$sp,-72
/* 11910: 3c0e8006 */ lui $t6,%hi(var8005dda0)
/* 11914: 8dcedda0 */ lw $t6,%lo(var8005dda0)($t6)
/* 11910: 3c0e8006 */ lui $t6,%hi(g_Silent)
/* 11914: 8dcedda0 */ lw $t6,%lo(g_Silent)($t6)
/* 11918: afbf0024 */ sw $ra,0x24($sp)
/* 1191c: afb30020 */ sw $s3,0x20($sp)
/* 11920: afb2001c */ sw $s2,0x1c($sp)
@ -746,8 +746,8 @@ glabel func0001190c
GLOBAL_ASM(
glabel func00011d84
/* 11d84: 3c0e8006 */ lui $t6,%hi(var8005dda0)
/* 11d88: 8dcedda0 */ lw $t6,%lo(var8005dda0)($t6)
/* 11d84: 3c0e8006 */ lui $t6,%hi(g_Silent)
/* 11d88: 8dcedda0 */ lw $t6,%lo(g_Silent)($t6)
/* 11d8c: 27bdffd8 */ addiu $sp,$sp,-40
/* 11d90: afbf0014 */ sw $ra,0x14($sp)
/* 11d94: 15c000e0 */ bnez $t6,.L00012118

View File

@ -6,6 +6,7 @@
#include "game/data/data_0160b0.h"
#include "game/data/data_01a3a0.h"
#include "game/data/data_020df0.h"
#include "game/data/data_02a0e0.h"
#include "game/data/data_02da90.h"
#include "gvars/gvars.h"
#include "lib/lib_12dc0.h"
@ -125,79 +126,46 @@ char *argParseString(char *str)
void argSetString(char *string)
{
strcpy(g_ArgString, string);
argParseString(g_ArgString);
strcpy(g_ArgBuffer, string);
argParseString((char *) g_ArgBuffer);
}
const char var70053ff4[] = "-d";
const char var70053ff8[] = "-s";
const char var70053ffc[] = "-j";
bool argsParseDebugArgs(void)
{
u32 devaddr;
u32 stack;
s32 i;
bool ret = false;
GLOBAL_ASM(
glabel func00012f30
/* 12f30: 27bdffc8 */ addiu $sp,$sp,-56
/* 12f34: afb1001c */ sw $s1,0x1c($sp)
/* 12f38: afbf0024 */ sw $ra,0x24($sp)
/* 12f3c: 3c1101ff */ lui $s1,0x1ff
/* 12f40: afb20020 */ sw $s2,0x20($sp)
/* 12f44: afb00018 */ sw $s0,0x18($sp)
/* 12f48: afa00028 */ sw $zero,0x28($sp)
/* 12f4c: 0c00be82 */ jal func0002fa08
/* 12f50: 3631ff00 */ ori $s1,$s1,0xff00
/* 12f54: 10400004 */ beqz $v0,.L00012f68
/* 12f58: 3c10800a */ lui $s0,%hi(g_ArgString)
/* 12f5c: 3c01800a */ lui $at,%hi(g_ArgString)
/* 12f60: 1000000a */ b .L00012f8c
/* 12f64: ac209880 */ sw $zero,%lo(g_ArgString)($at)
.L00012f68:
/* 12f68: 3c12800a */ lui $s2,%hi(var800998f8)
/* 12f6c: 265298f8 */ addiu $s2,$s2,%lo(var800998f8)
/* 12f70: 26109880 */ addiu $s0,$s0,%lo(g_ArgString)
.L00012f74:
/* 12f74: 02202025 */ or $a0,$s1,$zero
/* 12f78: 0c013994 */ jal osPiReadIo
/* 12f7c: 02002825 */ or $a1,$s0,$zero
/* 12f80: 26100004 */ addiu $s0,$s0,0x4
/* 12f84: 1612fffb */ bne $s0,$s2,.L00012f74
/* 12f88: 26310004 */ addiu $s1,$s1,0x4
.L00012f8c:
/* 12f8c: 3c04800a */ lui $a0,%hi(g_ArgString)
/* 12f90: 0c004b98 */ jal argParseString
/* 12f94: 24849880 */ addiu $a0,$a0,%lo(g_ArgString)
/* 12f98: 3c057005 */ lui $a1,%hi(var70053ff4)
/* 12f9c: 24a53ff4 */ addiu $a1,$a1,%lo(var70053ff4)
/* 12fa0: 0c004c04 */ jal argFindByPrefix
/* 12fa4: 24040001 */ addiu $a0,$zero,0x1
/* 12fa8: 10400003 */ beqz $v0,.L00012fb8
/* 12fac: 24040001 */ addiu $a0,$zero,0x1
/* 12fb0: 240e0001 */ addiu $t6,$zero,0x1
/* 12fb4: afae0028 */ sw $t6,0x28($sp)
.L00012fb8:
/* 12fb8: 3c057005 */ lui $a1,%hi(var70053ff8)
/* 12fbc: 0c004c04 */ jal argFindByPrefix
/* 12fc0: 24a53ff8 */ addiu $a1,$a1,%lo(var70053ff8)
/* 12fc4: 10400004 */ beqz $v0,.L00012fd8
/* 12fc8: 24040001 */ addiu $a0,$zero,0x1
/* 12fcc: 240f0001 */ addiu $t7,$zero,0x1
/* 12fd0: 3c018006 */ lui $at,%hi(var8005dda0)
/* 12fd4: ac2fdda0 */ sw $t7,%lo(var8005dda0)($at)
.L00012fd8:
/* 12fd8: 3c057005 */ lui $a1,%hi(var70053ffc)
/* 12fdc: 0c004c04 */ jal argFindByPrefix
/* 12fe0: 24a53ffc */ addiu $a1,$a1,%lo(var70053ffc)
/* 12fe4: 10400003 */ beqz $v0,.L00012ff4
/* 12fe8: 24180001 */ addiu $t8,$zero,0x1
/* 12fec: 3c018008 */ lui $at,%hi(g_LanguageId)
/* 12ff0: ac384120 */ sw $t8,%lo(g_LanguageId)($at)
.L00012ff4:
/* 12ff4: 8fbf0024 */ lw $ra,0x24($sp)
/* 12ff8: 8fa20028 */ lw $v0,0x28($sp)
/* 12ffc: 8fb00018 */ lw $s0,0x18($sp)
/* 13000: 8fb1001c */ lw $s1,0x1c($sp)
/* 13004: 8fb20020 */ lw $s2,0x20($sp)
/* 13008: 03e00008 */ jr $ra
/* 1300c: 27bd0038 */ addiu $sp,$sp,0x38
);
devaddr = 0x1ffff00;
if (rmonIsDisabled()) {
g_ArgBuffer[0] = 0;
} else {
for (i = 0; i < 30; i++) {
osPiReadIo(devaddr, &g_ArgBuffer[i]);
devaddr += 4;
}
}
argParseString((char *) g_ArgBuffer);
// I'm guessing the -d stands for debug. If set at boot, the main thread
// stops itself immediately after creating the rmon thread.
if (argFindByPrefix(1, "-d")) {
ret = true;
}
if (argFindByPrefix(1, "-s")) {
g_Silent = true;
}
if (argFindByPrefix(1, "-j")) {
g_LanguageId = LANGUAGE_JAPANESE;
}
return ret;
}
/**
* Find a program argument based on its prefix and occurrence of that prefix,

View File

@ -16,7 +16,7 @@ void rmonproc()
// empty
}
bool func0002fa08(void)
bool rmonIsDisabled(void)
{
return true;
}

View File

@ -214,7 +214,7 @@ glabel mainInit
/* d55c: 00000000 */ nop
/* d560: 0c0026ac */ jal func00009ab0
/* d564: 00000000 */ nop
/* d568: 0c00be82 */ jal func0002fa08
/* d568: 0c00be82 */ jal rmonIsDisabled
/* d56c: 00000000 */ nop
/* d570: 3c018006 */ lui $at,%hi(var8005d9b0)
/* d574: 0c004f25 */ jal contSystemInit
@ -624,7 +624,7 @@ const char var70053aa0[] = " -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400";
// func00012a0c();
// func00013758();
// func00009ab0();
// var8005d9b0 = func0002fa08();
// var8005d9b0 = rmonIsDisabled();
// contSystemInit();
// osCreateMesgQueue(&queue, &msg, 1);
//