From 150553406525675e151ac3996a41752106b8d4b5 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 1 Oct 2020 07:57:05 +1000 Subject: [PATCH] Decompile audioStartThread --- src/game/chr/chraicommands.c | 4 ++-- src/game/data/data_000000.c | 2 +- src/game/game_0601b0.c | 8 ++++---- src/game/game_092610.c | 20 +++++++++---------- src/game/game_097ba0.c | 24 +++++++++++----------- src/game/game_0f09f0.c | 2 +- src/gvars/gvars.c | 2 +- src/include/game/data/data_000000.h | 1 + src/include/gvars/gvars.h | 2 +- src/include/lib/lib_08a20.h | 2 +- src/lib/lib_08a20.c | 31 ++++++++++------------------- src/lib/lib_0e9d0.c | 10 +++++----- 12 files changed, 50 insertions(+), 58 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index d6d7cddb5..0dfcfaf6b 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -10545,7 +10545,7 @@ bool aiChrBeginOrEndTeleport(void) g_Vars.currentplayer->teleportcamerapad = 0; a = osGetThreadPri(0); - b = osGetThreadPri(&var800915e0); + b = osGetThreadPri(&g_AudioThread); osSetThreadPri(0, b + 1); c = audioStart(var80095200, 0x0433, NULL, -1, -1, -1, -1, -1); @@ -10586,7 +10586,7 @@ bool aiIfChrTeleportFullWhite(void) } else { fvalue = 0.4; a = osGetThreadPri(0); - b = osGetThreadPri(&var800915e0); + b = osGetThreadPri(&g_AudioThread); osSetThreadPri(0, b + 1); c = audioStart(var80095200, 0x8055, NULL, -1, -1, -1, -1, -1); diff --git a/src/game/data/data_000000.c b/src/game/data/data_000000.c index faef426bf..0804c8096 100644 --- a/src/game/data/data_000000.c +++ b/src/game/data/data_000000.c @@ -3420,7 +3420,7 @@ u32 var8005d500 = 0x00000000; u32 var8005d504 = 0x00000000; u32 var8005d508 = 0x00000000; u32 var8005d50c = 0x00000000; -u32 var8005d510 = 0x00000000; +u8 g_AudioIsThreadRunning = false; u32 var8005d514 = 0x00000001; u32 var8005d518 = 0x00000001; u32 var8005d51c = 0x00000000; diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index a2888df55..6aec4f8e1 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -632,10 +632,10 @@ glabel var7f1a9e50 /* f060ab8: 00002025 */ or $a0,$zero,$zero /* f060abc: 0c012230 */ jal osGetThreadPri /* f060ac0: afa3005c */ sw $v1,0x5c($sp) -/* f060ac4: 3c048009 */ lui $a0,%hi(var800915e0) +/* f060ac4: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f060ac8: afa2004c */ sw $v0,0x4c($sp) /* f060acc: 0c012230 */ jal osGetThreadPri -/* f060ad0: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f060ad0: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f060ad4: 00002025 */ or $a0,$zero,$zero /* f060ad8: 0c01210c */ jal osSetThreadPri /* f060adc: 24450001 */ addiu $a1,$v0,0x1 @@ -785,10 +785,10 @@ glabel var7f1a9e5c /* f060cc4: 8fa50064 */ lw $a1,0x64($sp) /* f060cc8: 0c012230 */ jal osGetThreadPri /* f060ccc: 00002025 */ or $a0,$zero,$zero -/* f060cd0: 3c048009 */ lui $a0,%hi(var800915e0) +/* f060cd0: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f060cd4: afa20050 */ sw $v0,0x50($sp) /* f060cd8: 0c012230 */ jal osGetThreadPri -/* f060cdc: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f060cdc: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f060ce0: 00002025 */ or $a0,$zero,$zero /* f060ce4: 0c01210c */ jal osSetThreadPri /* f060ce8: 24450001 */ addiu $a1,$v0,0x1 diff --git a/src/game/game_092610.c b/src/game/game_092610.c index a471e1d07..e3b6fd67d 100644 --- a/src/game/game_092610.c +++ b/src/game/game_092610.c @@ -1289,10 +1289,10 @@ glabel func0f093630 /* f09368c: 18400033 */ blez $v0,.L0f09375c /* f093690: 00128100 */ sll $s0,$s2,0x4 /* f093694: 02128023 */ subu $s0,$s0,$s2 -/* f093698: 3c158009 */ lui $s5,%hi(var800915e0) +/* f093698: 3c158009 */ lui $s5,%hi(g_AudioThread) /* f09369c: 3c138007 */ lui $s3,%hi(var8006ae10) /* f0936a0: 2673ae10 */ addiu $s3,$s3,%lo(var8006ae10) -/* f0936a4: 26b515e0 */ addiu $s5,$s5,%lo(var800915e0) +/* f0936a4: 26b515e0 */ addiu $s5,$s5,%lo(g_AudioThread) /* f0936a8: 001080c0 */ sll $s0,$s0,0x3 /* f0936ac: 2416ffff */ addiu $s6,$zero,-1 /* f0936b0: 8e6e0000 */ lw $t6,0x0($s3) @@ -1388,10 +1388,10 @@ glabel func0f093790 /* f0937e4: 18400035 */ blez $v0,.L0f0938bc /* f0937e8: 00139100 */ sll $s2,$s3,0x4 /* f0937ec: 02539023 */ subu $s2,$s2,$s3 -/* f0937f0: 3c168009 */ lui $s6,%hi(var800915e0) +/* f0937f0: 3c168009 */ lui $s6,%hi(g_AudioThread) /* f0937f4: 3c158007 */ lui $s5,%hi(var8006ae10) /* f0937f8: 26b5ae10 */ addiu $s5,$s5,%lo(var8006ae10) -/* f0937fc: 26d615e0 */ addiu $s6,$s6,%lo(var800915e0) +/* f0937fc: 26d615e0 */ addiu $s6,$s6,%lo(g_AudioThread) /* f093800: 001290c0 */ sll $s2,$s2,0x3 /* f093804: 8eae0000 */ lw $t6,0x0($s5) .L0f093808: @@ -1940,10 +1940,10 @@ glabel func0f0939f8 /* f093f80: 35cf0010 */ ori $t7,$t6,0x10 /* f093f84: 0c012230 */ jal osGetThreadPri /* f093f88: a60f0030 */ sh $t7,0x30($s0) -/* f093f8c: 3c048009 */ lui $a0,%hi(var800915e0) +/* f093f8c: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f093f90: afa200a8 */ sw $v0,0xa8($sp) /* f093f94: 0c012230 */ jal osGetThreadPri -/* f093f98: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f093f98: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f093f9c: 00002025 */ or $a0,$zero,$zero /* f093fa0: 0c01210c */ jal osSetThreadPri /* f093fa4: 24450001 */ addiu $a1,$v0,0x1 @@ -1957,10 +1957,10 @@ glabel func0f0939f8 .L0f093fc4: /* f093fc4: 0c012230 */ jal osGetThreadPri /* f093fc8: 00002025 */ or $a0,$zero,$zero -/* f093fcc: 3c048009 */ lui $a0,%hi(var800915e0) +/* f093fcc: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f093fd0: afa200a8 */ sw $v0,0xa8($sp) /* f093fd4: 0c012230 */ jal osGetThreadPri -/* f093fd8: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f093fd8: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f093fdc: 00002025 */ or $a0,$zero,$zero /* f093fe0: 0c01210c */ jal osSetThreadPri /* f093fe4: 24450001 */ addiu $a1,$v0,0x1 @@ -2441,10 +2441,10 @@ glabel audioPlayFromProp2 .L0f094668: /* f094668: 0c012230 */ jal osGetThreadPri /* f09466c: 00002025 */ or $a0,$zero,$zero -/* f094670: 3c048009 */ lui $a0,%hi(var800915e0) +/* f094670: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f094674: afa20048 */ sw $v0,0x48($sp) /* f094678: 0c012230 */ jal osGetThreadPri -/* f09467c: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f09467c: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f094680: 00002025 */ or $a0,$zero,$zero /* f094684: 0c01210c */ jal osSetThreadPri /* f094688: 24450001 */ addiu $a1,$v0,0x1 diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index b0b3859f3..30d0da737 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -3809,10 +3809,10 @@ glabel var7f1ac320 /* f09a9c0: 8fbf002c */ lw $ra,0x2c($sp) /* f09a9c4: 0c012230 */ jal osGetThreadPri /* f09a9c8: 00002025 */ or $a0,$zero,$zero -/* f09a9cc: 3c048009 */ lui $a0,%hi(var800915e0) +/* f09a9cc: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f09a9d0: afa20040 */ sw $v0,0x40($sp) /* f09a9d4: 0c012230 */ jal osGetThreadPri -/* f09a9d8: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f09a9d8: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f09a9dc: 00002025 */ or $a0,$zero,$zero /* f09a9e0: 0c01210c */ jal osSetThreadPri /* f09a9e4: 24450001 */ addiu $a1,$v0,0x1 @@ -5168,10 +5168,10 @@ glabel var7f1ac450 /* f09ba84: 00002025 */ or $a0,$zero,$zero /* f09ba88: 0c012230 */ jal osGetThreadPri /* f09ba8c: e7a40044 */ swc1 $f4,0x44($sp) -/* f09ba90: 3c048009 */ lui $a0,%hi(var800915e0) +/* f09ba90: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f09ba94: afa20040 */ sw $v0,0x40($sp) /* f09ba98: 0c012230 */ jal osGetThreadPri -/* f09ba9c: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f09ba9c: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f09baa0: 00002025 */ or $a0,$zero,$zero /* f09baa4: 0c01210c */ jal osSetThreadPri /* f09baa8: 24450001 */ addiu $a1,$v0,0x1 @@ -5204,10 +5204,10 @@ glabel var7f1ac450 /* f09bb10: 00002025 */ or $a0,$zero,$zero /* f09bb14: 0c012230 */ jal osGetThreadPri /* f09bb18: e7a80038 */ swc1 $f8,0x38($sp) -/* f09bb1c: 3c048009 */ lui $a0,%hi(var800915e0) +/* f09bb1c: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f09bb20: afa20034 */ sw $v0,0x34($sp) /* f09bb24: 0c012230 */ jal osGetThreadPri -/* f09bb28: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f09bb28: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f09bb2c: 00002025 */ or $a0,$zero,$zero /* f09bb30: 0c01210c */ jal osSetThreadPri /* f09bb34: 24450001 */ addiu $a1,$v0,0x1 @@ -6272,10 +6272,10 @@ glabel var7f1ac5ec /* f09c6e4: 00002025 */ or $a0,$zero,$zero /* f09c6e8: 0c012230 */ jal osGetThreadPri /* f09c6ec: e7a6004c */ swc1 $f6,0x4c($sp) -/* f09c6f0: 3c048009 */ lui $a0,%hi(var800915e0) +/* f09c6f0: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f09c6f4: afa20044 */ sw $v0,0x44($sp) /* f09c6f8: 0c012230 */ jal osGetThreadPri -/* f09c6fc: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f09c6fc: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f09c700: 00002025 */ or $a0,$zero,$zero /* f09c704: 0c01210c */ jal osSetThreadPri /* f09c708: 24450001 */ addiu $a1,$v0,0x1 @@ -6380,10 +6380,10 @@ glabel var7f1ac5ec /* f09c890: 00002025 */ or $a0,$zero,$zero /* f09c894: 0c012230 */ jal osGetThreadPri /* f09c898: e7a60040 */ swc1 $f6,0x40($sp) -/* f09c89c: 3c048009 */ lui $a0,%hi(var800915e0) +/* f09c89c: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f09c8a0: afa2003c */ sw $v0,0x3c($sp) /* f09c8a4: 0c012230 */ jal osGetThreadPri -/* f09c8a8: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f09c8a8: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f09c8ac: 00002025 */ or $a0,$zero,$zero /* f09c8b0: 0c01210c */ jal osSetThreadPri /* f09c8b4: 24450001 */ addiu $a1,$v0,0x1 @@ -6418,10 +6418,10 @@ glabel var7f1ac5ec /* f09c924: 00002025 */ or $a0,$zero,$zero /* f09c928: 0c012230 */ jal osGetThreadPri /* f09c92c: e7b00034 */ swc1 $f16,0x34($sp) -/* f09c930: 3c048009 */ lui $a0,%hi(var800915e0) +/* f09c930: 3c048009 */ lui $a0,%hi(g_AudioThread) /* f09c934: afa20030 */ sw $v0,0x30($sp) /* f09c938: 0c012230 */ jal osGetThreadPri -/* f09c93c: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* f09c93c: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* f09c940: 00002025 */ or $a0,$zero,$zero /* f09c944: 0c01210c */ jal osSetThreadPri /* f09c948: 24450001 */ addiu $a1,$v0,0x1 diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 1fd93211f..b4e0c8520 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -140,7 +140,7 @@ void menuPlaySound(s32 menusound) if (sound != -1) { s32 handle; OSPri prevpri = osGetThreadPri(NULL); - osSetThreadPri(0, osGetThreadPri(&var800915e0) + 1); + osSetThreadPri(0, osGetThreadPri(&g_AudioThread) + 1); handle = audioStart(var80095200, sound, NULL, -1, -1, -1, -1, -1); diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 8544a0829..7516f5bee 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -4196,7 +4196,7 @@ u32 var800915d0 = 0; u32 var800915d4 = 0; u32 var800915d8 = 0; u32 var800915dc = 0; -OSThread var800915e0 = {0}; +OSThread g_AudioThread = {0}; u32 var80091790 = 0; u32 var80091794 = 0; u32 var80091798 = 0; diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 360b2276e..33dfba62a 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -74,6 +74,7 @@ extern u32 var8005d390; extern u32 var8005d3b8; extern u32 var8005d4c0; extern u32 var8005d4e8; +extern u8 g_AudioIsThreadRunning; extern u32 var8005d520; extern struct rend_vidat var8005d530; extern u32 var8005d588; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 6e366eb51..7f87bf714 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -404,7 +404,7 @@ extern u32 var80091590; extern u32 var800915c8; extern u32 var800915d0; extern u32 var800915d4; -extern OSThread var800915e0; +extern OSThread g_AudioThread; extern u32 var80091810; extern u32 var80091828; extern u32 var80091848; diff --git a/src/include/lib/lib_08a20.h b/src/include/lib/lib_08a20.h index 6415686df..da857201a 100644 --- a/src/include/lib/lib_08a20.h +++ b/src/include/lib/lib_08a20.h @@ -5,7 +5,7 @@ u32 func00008a20(void); u32 func00008a48(void); -u32 func000090ec(void); +void audioStartThread(void); u32 func00009118(void); u32 func00009124(void); u32 func00009448(void); diff --git a/src/lib/lib_08a20.c b/src/lib/lib_08a20.c index c730ef289..c1550443c 100644 --- a/src/lib/lib_08a20.c +++ b/src/lib/lib_08a20.c @@ -475,12 +475,12 @@ glabel func00008a48 /* 9094: 2405003c */ addiu $a1,$zero,0x3c /* 9098: 3c088009 */ lui $t0,%hi(var800918f0) /* 909c: 8d0818f0 */ lw $t0,%lo(var800918f0)($t0) -/* 90a0: 3c048009 */ lui $a0,%hi(var800915e0) +/* 90a0: 3c048009 */ lui $a0,%hi(g_AudioThread) /* 90a4: 3c067001 */ lui $a2,%hi(func00009154) /* 90a8: 24090014 */ addiu $t1,$zero,0x14 /* 90ac: afa90014 */ sw $t1,0x14($sp) /* 90b0: 24c69154 */ addiu $a2,$a2,%lo(func00009154) -/* 90b4: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* 90b4: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* 90b8: 24050004 */ addiu $a1,$zero,0x4 /* 90bc: 00003825 */ or $a3,$zero,$zero /* 90c0: 0c000fb8 */ jal osCreateThread @@ -496,20 +496,11 @@ glabel func00008a48 /* 90e8: 27bd05c0 */ addiu $sp,$sp,0x5c0 ); -GLOBAL_ASM( -glabel func000090ec -/* 90ec: 27bdffe8 */ addiu $sp,$sp,-24 -/* 90f0: afbf0014 */ sw $ra,0x14($sp) -/* 90f4: 3c048009 */ lui $a0,%hi(var800915e0) -/* 90f8: 0c01207c */ jal osStartThread -/* 90fc: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) -/* 9100: 8fbf0014 */ lw $ra,0x14($sp) -/* 9104: 240e0001 */ addiu $t6,$zero,0x1 -/* 9108: 3c018006 */ lui $at,%hi(var8005d510) -/* 910c: a02ed510 */ sb $t6,%lo(var8005d510)($at) -/* 9110: 03e00008 */ jr $ra -/* 9114: 27bd0018 */ addiu $sp,$sp,0x18 -); +void audioStartThread(void) +{ + osStartThread(&g_AudioThread); + g_AudioIsThreadRunning = true; +} GLOBAL_ASM( glabel func00009118 @@ -520,14 +511,14 @@ glabel func00009118 GLOBAL_ASM( glabel func00009124 -/* 9124: 3c0e8006 */ lui $t6,%hi(var8005d510) -/* 9128: 81ced510 */ lb $t6,%lo(var8005d510)($t6) +/* 9124: 3c0e8006 */ lui $t6,%hi(g_AudioIsThreadRunning) +/* 9128: 81ced510 */ lb $t6,%lo(g_AudioIsThreadRunning)($t6) /* 912c: 27bdffe8 */ addiu $sp,$sp,-24 /* 9130: afbf0014 */ sw $ra,0x14($sp) /* 9134: 11c00003 */ beqz $t6,.L00009144 -/* 9138: 3c048009 */ lui $a0,%hi(var800915e0) +/* 9138: 3c048009 */ lui $a0,%hi(g_AudioThread) /* 913c: 0c0120dc */ jal osStopThread -/* 9140: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* 9140: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) .L00009144: /* 9144: 8fbf0014 */ lw $ra,0x14($sp) /* 9148: 27bd0018 */ addiu $sp,$sp,0x18 diff --git a/src/lib/lib_0e9d0.c b/src/lib/lib_0e9d0.c index ed0efa906..f4b4515d8 100644 --- a/src/lib/lib_0e9d0.c +++ b/src/lib/lib_0e9d0.c @@ -1314,7 +1314,7 @@ glabel func0000f804 /* fb6c: 3c047001 */ lui $a0,%hi(func0000f7b8) /* fb70: 0c00cd8d */ jal func00033634 /* fb74: 2484f7b8 */ addiu $a0,$a0,%lo(func0000f7b8) -/* fb78: 0c00243b */ jal func000090ec +/* fb78: 0c00243b */ jal audioStartThread /* fb7c: 00000000 */ nop /* fb80: 3c048006 */ lui $a0,%hi(g_SoundMode) /* fb84: 0c003ce3 */ jal audioSetSoundMode @@ -1565,10 +1565,10 @@ glabel func0000fe88 /* fe94: afb00028 */ sw $s0,0x28($sp) /* fe98: 0c012230 */ jal osGetThreadPri /* fe9c: 00002025 */ or $a0,$zero,$zero -/* fea0: 3c048009 */ lui $a0,%hi(var800915e0) +/* fea0: 3c048009 */ lui $a0,%hi(g_AudioThread) /* fea4: 00408025 */ or $s0,$v0,$zero /* fea8: 0c012230 */ jal osGetThreadPri -/* feac: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* feac: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* feb0: 00002025 */ or $a0,$zero,$zero /* feb4: 0c01210c */ jal osSetThreadPri /* feb8: 24450001 */ addiu $a1,$v0,0x1 @@ -2226,9 +2226,9 @@ glabel func00010718 /* 10730: 0c012230 */ jal osGetThreadPri /* 10734: 00002025 */ or $a0,$zero,$zero /* 10738: 2408ffff */ addiu $t0,$zero,-1 -/* 1073c: 3c048009 */ lui $a0,%hi(var800915e0) +/* 1073c: 3c048009 */ lui $a0,%hi(g_AudioThread) /* 10740: afa2003c */ sw $v0,0x3c($sp) -/* 10744: 248415e0 */ addiu $a0,$a0,%lo(var800915e0) +/* 10744: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) /* 10748: 0c012230 */ jal osGetThreadPri /* 1074c: afa80038 */ sw $t0,0x38($sp) /* 10750: 00002025 */ or $a0,$zero,$zero