From c676e24f82c2e14ed71308d8558d0ce59c2fbe44 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 1 Oct 2020 08:07:22 +1000 Subject: [PATCH] Decompile audioStopThread --- src/boot/boot.c | 2 +- src/game/data/data_000000.c | 2 +- src/include/game/data/data_000000.h | 2 +- src/include/lib/lib_08a20.h | 2 +- src/lib/lib_08a20.c | 27 +++++++++++---------------- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/boot/boot.c b/src/boot/boot.c index c6af31850..8952d89a2 100644 --- a/src/boot/boot.c +++ b/src/boot/boot.c @@ -2120,7 +2120,7 @@ glabel resetproc /* 2e20: 24060001 */ addiu $a2,$zero,0x1 /* 2e24: 240e0001 */ addiu $t6,$zero,0x1 /* 2e28: 3c018006 */ lui $at,%hi(var8005ced0) -/* 2e2c: 0c002449 */ jal func00009124 +/* 2e2c: 0c002449 */ jal audioStopThread /* 2e30: a02eced0 */ sb $t6,%lo(var8005ced0)($at) /* 2e34: 3c048009 */ lui $a0,%hi(var8008d6d0) /* 2e38: 0c0120dc */ jal osStopThread diff --git a/src/game/data/data_000000.c b/src/game/data/data_000000.c index 0804c8096..11954d2a7 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; -u8 g_AudioIsThreadRunning = false; +s8 g_AudioIsThreadRunning = false; u32 var8005d514 = 0x00000001; u32 var8005d518 = 0x00000001; u32 var8005d51c = 0x00000000; diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 33dfba62a..d4aecee66 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -74,7 +74,7 @@ extern u32 var8005d390; extern u32 var8005d3b8; extern u32 var8005d4c0; extern u32 var8005d4e8; -extern u8 g_AudioIsThreadRunning; +extern s8 g_AudioIsThreadRunning; extern u32 var8005d520; extern struct rend_vidat var8005d530; extern u32 var8005d588; diff --git a/src/include/lib/lib_08a20.h b/src/include/lib/lib_08a20.h index da857201a..4c9b738da 100644 --- a/src/include/lib/lib_08a20.h +++ b/src/include/lib/lib_08a20.h @@ -7,7 +7,7 @@ u32 func00008a20(void); u32 func00008a48(void); void audioStartThread(void); u32 func00009118(void); -u32 func00009124(void); +void audioStopThread(void); u32 func00009448(void); u32 func00009614(void); diff --git a/src/lib/lib_08a20.c b/src/lib/lib_08a20.c index c1550443c..b2aada16b 100644 --- a/src/lib/lib_08a20.c +++ b/src/lib/lib_08a20.c @@ -509,22 +509,17 @@ glabel func00009118 /* 9120: 24421810 */ addiu $v0,$v0,%lo(var80091810) ); -GLOBAL_ASM( -glabel func00009124 -/* 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(g_AudioThread) -/* 913c: 0c0120dc */ jal osStopThread -/* 9140: 248415e0 */ addiu $a0,$a0,%lo(g_AudioThread) -.L00009144: -/* 9144: 8fbf0014 */ lw $ra,0x14($sp) -/* 9148: 27bd0018 */ addiu $sp,$sp,0x18 -/* 914c: 03e00008 */ jr $ra -/* 9150: 00000000 */ nop -); +/** + * This doesn't set g_AudioIsThreadRunning to false, but that's okay because + * this is only called when resetting the console, and when that happens the + * variable is likely reset too. + */ +void audioStopThread(void) +{ + if (g_AudioIsThreadRunning) { + osStopThread(&g_AudioThread); + } +} GLOBAL_ASM( glabel func00009154