From 658c5de647c01f578f1ab49f67923bc24ce794aa Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 17 Oct 2021 21:12:29 +1000 Subject: [PATCH] Decompile amgrCreate --- src/include/bss.h | 2 +- src/include/lib/audiomgr.h | 2 +- src/include/lib/lib_09660.h | 3 +- src/include/lib/lib_2fc60.h | 2 +- src/lib/audiomgr.c | 1347 +++-------------------------------- src/lib/snd.c | 22 +- 6 files changed, 106 insertions(+), 1272 deletions(-) diff --git a/src/include/bss.h b/src/include/bss.h index 0e187b5a3..feaa42665 100644 --- a/src/include/bss.h +++ b/src/include/bss.h @@ -34,7 +34,7 @@ extern u32 var80090b08; extern AMAudioMgr g_AudioManager; extern u32 var80092828; extern Mtx *var80092870; -extern s32 var80094ea8; +extern s32 g_SndMaxFxBusses; extern struct var80094ed8 var80094ed8[3]; extern ALHeap g_SndHeap; extern u32 var80095200; diff --git a/src/include/lib/audiomgr.h b/src/include/lib/audiomgr.h index 6ed2edd44..677d13643 100644 --- a/src/include/lib/audiomgr.h +++ b/src/include/lib/audiomgr.h @@ -7,7 +7,7 @@ void amgrAllocateStack(void); #if VERSION >= VERSION_PAL_FINAL -void amgrCreate(ALSynConfig *config, u32 *arg1); +void amgrCreate(ALSynConfig *config, u32 *settings); #else void amgrCreate(ALSynConfig *config); #endif diff --git a/src/include/lib/lib_09660.h b/src/include/lib/lib_09660.h index cd7b81c46..f3df91b0f 100644 --- a/src/include/lib/lib_09660.h +++ b/src/include/lib/lib_09660.h @@ -4,7 +4,8 @@ #include "data.h" #include "types.h" -u32 func00009660(void); +void func00009660(void); +void func00009844(void); void amgrClearDmaBuffers(void); u32 func00009a08(void); diff --git a/src/include/lib/lib_2fc60.h b/src/include/lib/lib_2fc60.h index f63dff695..f2b3e2fc2 100644 --- a/src/include/lib/lib_2fc60.h +++ b/src/include/lib/lib_2fc60.h @@ -9,7 +9,7 @@ u32 func000301a4(void); u32 func000301e4(void); u32 func00030690(void); u32 func00030bd8(void); -u32 func00030bfc(void); +void func00030bfc(s32 arg0, s32 arg1); void func00030c98(ALSeqpConfig *config); #endif diff --git a/src/lib/audiomgr.c b/src/lib/audiomgr.c index 7a8d5a653..d18122489 100644 --- a/src/lib/audiomgr.c +++ b/src/lib/audiomgr.c @@ -33,368 +33,18 @@ u32 var800915c4; AMAudioMgr g_AudioManager; OSScClient var800918d0; u32 var800918dc; -u32 var800918e0; +u32 g_AmgrFreqPerTick; u32 var800918e4; s32 var800918e8; -u32 var800918ec; +s32 var800918ec; void *g_AudioSp; u32 var8005cf90 = 0x00000000; u8 var8005cf94 = 1; -u32 var8005cf98 = 0x00000001; -u32 var8005cf9c = 0x000014a0; -u32 var8005cfa0 = 0x00000000; -u32 var8005cfa4 = 0x00001358; -u32 var8005cfa8 = 0x00004d0c; -u32 var8005cfac = 0x00000000; -u32 var8005cfb0 = 0x000053ff; -u32 var8005cfb4 = 0x00000000; -u32 var8005cfb8 = 0x00000000; -u32 var8005cfbc = 0x00000000; -u32 var8005cfc0 = 0x00000001; -u32 var8005cfc4 = 0x000001b8; -u32 var8005cfc8 = 0x00000000; -u32 var8005cfcc = 0x00000068; -u32 var8005cfd0 = 0x00004000; -u32 var8005cfd4 = 0x00000000; -u32 var8005cfd8 = 0x00007fff; -u32 var8005cfdc = 0x00001db0; -u32 var8005cfe0 = 0x00001b58; -u32 var8005cfe4 = 0x00000000; -u32 var8005cfe8 = 0x00000001; -u32 var8005cfec = 0x000001b8; -u32 var8005cff0 = 0x00000000; -u32 var8005cff4 = 0x00000068; -u32 var8005cff8 = 0x00000000; -u32 var8005cffc = 0x00005fff; -u32 var8005d000 = 0x00007fff; -u32 var8005d004 = 0x0000017c; -u32 var8005d008 = 0x000001f4; -u32 var8005d00c = 0x00000000; -u32 var8005d010 = 0x00000006; -u32 var8005d014 = 0x00001868; -u32 var8005d018 = 0x00000000; -u32 var8005d01c = 0x00000160; -u32 var8005d020 = 0x00002666; -u32 var8005d024 = 0xffffd99a; -u32 var8005d028 = 0x00000000; -u32 var8005d02c = 0x00000000; -u32 var8005d030 = 0x00000000; -u32 var8005d034 = 0x00000000; -u32 var8005d038 = 0x00000188; -u32 var8005d03c = 0x00000640; -u32 var8005d040 = 0x0000235e; -u32 var8005d044 = 0xffffd99a; -u32 var8005d048 = 0x0000750c; -u32 var8005d04c = 0x00000000; -u32 var8005d050 = 0x00000000; -u32 var8005d054 = 0x00000bca; -u32 var8005d058 = 0x00000318; -u32 var8005d05c = 0x000009f8; -u32 var8005d060 = 0x00004000; -u32 var8005d064 = 0xffffc000; -u32 var8005d068 = 0x00006d78; -u32 var8005d06c = 0x00000000; -u32 var8005d070 = 0x00000000; -u32 var8005d074 = 0x00001286; -u32 var8005d078 = 0x00000c78; -u32 var8005d07c = 0x000015d8; -u32 var8005d080 = 0x0000521a; -u32 var8005d084 = 0xffffc000; -u32 var8005d088 = 0x0000724f; -u32 var8005d08c = 0x00000000; -u32 var8005d090 = 0x00000000; -u32 var8005d094 = 0x00001650; -u32 var8005d098 = 0x00000d28; -u32 var8005d09c = 0x000012c0; -u32 var8005d0a0 = 0x00002143; -u32 var8005d0a4 = 0xffffe000; -u32 var8005d0a8 = 0x00005de4; -u32 var8005d0ac = 0x00000000; -u32 var8005d0b0 = 0x00000000; -u32 var8005d0b4 = 0x00002286; -u32 var8005d0b8 = 0x00000000; -u32 var8005d0bc = 0x00001720; -u32 var8005d0c0 = 0x000032c8; -u32 var8005d0c4 = 0xffffcd38; -u32 var8005d0c8 = 0x00000000; -u32 var8005d0cc = 0x00000000; -u32 var8005d0d0 = 0x00000000; -u32 var8005d0d4 = 0x00004500; -u32 var8005d0d8 = 0x00000002; -u32 var8005d0dc = 0x000008b0; -u32 var8005d0e0 = 0x00000600; -u32 var8005d0e4 = 0x00000760; -u32 var8005d0e8 = 0x00007142; -u32 var8005d0ec = 0x00000000; -u32 var8005d0f0 = 0x00005bff; -u32 var8005d0f4 = 0x00000000; -u32 var8005d0f8 = 0x00000000; -u32 var8005d0fc = 0x00007bc9; -u32 var8005d100 = 0x00000000; -u32 var8005d104 = 0x00000528; -u32 var8005d108 = 0x00005f27; -u32 var8005d10c = 0xffffb288; -u32 var8005d110 = 0x00007ef1; -u32 var8005d114 = 0x00000000; -u32 var8005d118 = 0x00000001; -u32 var8005d11c = 0x000066bb; -u32 var8005d120 = 0x00000003; -u32 var8005d124 = 0x00000b40; -u32 var8005d128 = 0x00000000; -u32 var8005d12c = 0x00000160; -u32 var8005d130 = 0x00002666; -u32 var8005d134 = 0xffffd99a; -u32 var8005d138 = 0x00000000; -u32 var8005d13c = 0x00000000; -u32 var8005d140 = 0x00000000; -u32 var8005d144 = 0x00000000; -u32 var8005d148 = 0x00000188; -u32 var8005d14c = 0x00000640; -u32 var8005d150 = 0x0000235e; -u32 var8005d154 = 0xffffd99a; -u32 var8005d158 = 0x000016f2; -u32 var8005d15c = 0x00000000; -u32 var8005d160 = 0x00000000; -u32 var8005d164 = 0x00000bca; -u32 var8005d168 = 0x00000318; -u32 var8005d16c = 0x000009f8; -u32 var8005d170 = 0x00004000; -u32 var8005d174 = 0xffffc000; -u32 var8005d178 = 0x0000186b; -u32 var8005d17c = 0x00000000; -u32 var8005d180 = 0x00000000; -u32 var8005d184 = 0x00001286; -u32 var8005d188 = 0x00000003; -u32 var8005d18c = 0x00000b40; -u32 var8005d190 = 0x00000000; -u32 var8005d194 = 0x00000160; -u32 var8005d198 = 0x00002666; -u32 var8005d19c = 0xffffd99a; -u32 var8005d1a0 = 0x00000000; -u32 var8005d1a4 = 0x00000000; -u32 var8005d1a8 = 0x00000000; -u32 var8005d1ac = 0x00000000; -u32 var8005d1b0 = 0x00000188; -u32 var8005d1b4 = 0x00000640; -u32 var8005d1b8 = 0x0000235e; -u32 var8005d1bc = 0xffffd99a; -u32 var8005d1c0 = 0x000016f2; -u32 var8005d1c4 = 0x00000000; -u32 var8005d1c8 = 0x00000000; -u32 var8005d1cc = 0x00000bca; -u32 var8005d1d0 = 0x00000318; -u32 var8005d1d4 = 0x000009f8; -u32 var8005d1d8 = 0x00004000; -u32 var8005d1dc = 0xffffc000; -u32 var8005d1e0 = 0x0000186b; -u32 var8005d1e4 = 0x00000000; -u32 var8005d1e8 = 0x00000000; -u32 var8005d1ec = 0x00001286; -u32 var8005d1f0 = 0x00000003; -u32 var8005d1f4 = 0x00000898; -u32 var8005d1f8 = 0x00000000; -u32 var8005d1fc = 0x000004a0; -u32 var8005d200 = 0x00002666; -u32 var8005d204 = 0xffffd99a; -u32 var8005d208 = 0x00000000; -u32 var8005d20c = 0x00000000; -u32 var8005d210 = 0x00000000; -u32 var8005d214 = 0x00000000; -u32 var8005d218 = 0x000001a0; -u32 var8005d21c = 0x00000340; -u32 var8005d220 = 0x00000ccc; -u32 var8005d224 = 0xfffff334; -u32 var8005d228 = 0x00003fff; -u32 var8005d22c = 0x00000000; -u32 var8005d230 = 0x00000000; -u32 var8005d234 = 0x00000000; -u32 var8005d238 = 0x00000000; -u32 var8005d23c = 0x00000528; -u32 var8005d240 = 0x00001388; -u32 var8005d244 = 0x00000000; -u32 var8005d248 = 0x00000000; -u32 var8005d24c = 0x00000000; -u32 var8005d250 = 0x00000000; -u32 var8005d254 = 0x00005000; -u32 var8005d258 = 0x00000004; -u32 var8005d25c = 0x00000898; -u32 var8005d260 = 0x00000000; -u32 var8005d264 = 0x000005a8; -u32 var8005d268 = 0x00002666; -u32 var8005d26c = 0xffffd99a; -u32 var8005d270 = 0x00000000; -u32 var8005d274 = 0x00000000; -u32 var8005d278 = 0x00000000; -u32 var8005d27c = 0x00000000; -u32 var8005d280 = 0x000001e0; -u32 var8005d284 = 0x000004a0; -u32 var8005d288 = 0x00000ccc; -u32 var8005d28c = 0xfffff334; -u32 var8005d290 = 0x00003fff; -u32 var8005d294 = 0x00000000; -u32 var8005d298 = 0x00000000; -u32 var8005d29c = 0x00000000; -u32 var8005d2a0 = 0x000005a8; -u32 var8005d2a4 = 0x000007d0; -u32 var8005d2a8 = 0x00000ccc; -u32 var8005d2ac = 0xfffff334; -u32 var8005d2b0 = 0x00003fff; -u32 var8005d2b4 = 0x00000000; -u32 var8005d2b8 = 0x00000000; -u32 var8005d2bc = 0x00000000; -u32 var8005d2c0 = 0x00000000; -u32 var8005d2c4 = 0x00000810; -u32 var8005d2c8 = 0x00001f40; -u32 var8005d2cc = 0x00000000; -u32 var8005d2d0 = 0x00000000; -u32 var8005d2d4 = 0x00000000; -u32 var8005d2d8 = 0x00000000; -u32 var8005d2dc = 0x00005000; -u32 var8005d2e0 = 0x00000001; -u32 var8005d2e4 = 0x00001130; -u32 var8005d2e8 = 0x00000000; -u32 var8005d2ec = 0x00000f60; -u32 var8005d2f0 = 0x00002ee0; -u32 var8005d2f4 = 0x00000000; -u32 var8005d2f8 = 0x00007fff; -u32 var8005d2fc = 0x00000000; -u32 var8005d300 = 0x00000000; -u32 var8005d304 = 0x00000000; -u32 var8005d308 = 0x00000004; -u32 var8005d30c = 0x00000e98; -u32 var8005d310 = 0x000000c0; -u32 var8005d314 = 0x00000188; -u32 var8005d318 = 0x00002666; -u32 var8005d31c = 0xffffd99a; -u32 var8005d320 = 0x00003484; -u32 var8005d324 = 0x00000000; -u32 var8005d328 = 0x00000000; -u32 var8005d32c = 0x00000000; -u32 var8005d330 = 0x000001b8; -u32 var8005d334 = 0x00000580; -u32 var8005d338 = 0x00004000; -u32 var8005d33c = 0xffffc000; -u32 var8005d340 = 0x000019eb; -u32 var8005d344 = 0x00000000; -u32 var8005d348 = 0x00000000; -u32 var8005d34c = 0x00000000; -u32 var8005d350 = 0x00000a50; -u32 var8005d354 = 0x00000b98; -u32 var8005d358 = 0x00002000; -u32 var8005d35c = 0xffffe000; -u32 var8005d360 = 0x00000000; -u32 var8005d364 = 0x00000000; -u32 var8005d368 = 0x00000000; -u32 var8005d36c = 0x00000000; -u32 var8005d370 = 0x00000000; -u32 var8005d374 = 0x00000cb8; -u32 var8005d378 = 0x00004650; -u32 var8005d37c = 0xffffb9b0; -u32 var8005d380 = 0x00000000; -u32 var8005d384 = 0x0000017c; -u32 var8005d388 = 0x0000000a; -u32 var8005d38c = 0x00000000; -u32 var8005d390 = 0x00000001; -u32 var8005d394 = 0x00000528; -u32 var8005d398 = 0x00000000; -u32 var8005d39c = 0x00000448; -u32 var8005d3a0 = 0x00003334; -u32 var8005d3a4 = 0x00000000; -u32 var8005d3a8 = 0x00007335; -u32 var8005d3ac = 0x00000000; -u32 var8005d3b0 = 0x00000000; -u32 var8005d3b4 = 0x00000000; -u32 var8005d3b8 = 0x00000008; -u32 var8005d3bc = 0x00001b80; -u32 var8005d3c0 = 0x00000000; -u32 var8005d3c4 = 0x000000c0; -u32 var8005d3c8 = 0x00002666; -u32 var8005d3cc = 0xffffd99a; -u32 var8005d3d0 = 0x00000000; -u32 var8005d3d4 = 0x00000000; -u32 var8005d3d8 = 0x00000000; -u32 var8005d3dc = 0x00000000; -u32 var8005d3e0 = 0x000000c0; -u32 var8005d3e4 = 0x00000188; -u32 var8005d3e8 = 0x00002666; -u32 var8005d3ec = 0xffffd99a; -u32 var8005d3f0 = 0x00002b84; -u32 var8005d3f4 = 0x00000000; -u32 var8005d3f8 = 0x00000000; -u32 var8005d3fc = 0x00000000; -u32 var8005d400 = 0x00000370; -u32 var8005d404 = 0x00000b00; -u32 var8005d408 = 0x00004000; -u32 var8005d40c = 0xffffc000; -u32 var8005d410 = 0x000011eb; -u32 var8005d414 = 0x00000000; -u32 var8005d418 = 0x00000000; -u32 var8005d41c = 0x00000000; -u32 var8005d420 = 0x00000420; -u32 var8005d424 = 0x00000840; -u32 var8005d428 = 0x00002000; -u32 var8005d42c = 0xffffe000; -u32 var8005d430 = 0x00000000; -u32 var8005d434 = 0x00000000; -u32 var8005d438 = 0x00000000; -u32 var8005d43c = 0x00000000; -u32 var8005d440 = 0x00000dc0; -u32 var8005d444 = 0x00001810; -u32 var8005d448 = 0x00004000; -u32 var8005d44c = 0xffffc000; -u32 var8005d450 = 0x000011eb; -u32 var8005d454 = 0x00000000; -u32 var8005d458 = 0x00000000; -u32 var8005d45c = 0x00000000; -u32 var8005d460 = 0x00000e70; -u32 var8005d464 = 0x000014a0; -u32 var8005d468 = 0x00002000; -u32 var8005d46c = 0xffffe000; -u32 var8005d470 = 0x00000000; -u32 var8005d474 = 0x00000000; -u32 var8005d478 = 0x00000000; -u32 var8005d47c = 0x00000000; -u32 var8005d480 = 0x000014a0; -u32 var8005d484 = 0x00001738; -u32 var8005d488 = 0x00002000; -u32 var8005d48c = 0xffffe000; -u32 var8005d490 = 0x00000000; -u32 var8005d494 = 0x00000000; -u32 var8005d498 = 0x00000000; -u32 var8005d49c = 0x00000000; -u32 var8005d4a0 = 0x00000000; -u32 var8005d4a4 = 0x00001970; -u32 var8005d4a8 = 0x000032c8; -u32 var8005d4ac = 0xffffcd38; -u32 var8005d4b0 = 0x00000000; -u32 var8005d4b4 = 0x0000017c; -u32 var8005d4b8 = 0x0000000a; -u32 var8005d4bc = 0x00000000; -u32 var8005d4c0 = 0x00000001; -u32 var8005d4c4 = 0x00000a50; -u32 var8005d4c8 = 0x00000000; -u32 var8005d4cc = 0x00000898; -u32 var8005d4d0 = 0x00003334; -u32 var8005d4d4 = 0x00000000; -u32 var8005d4d8 = 0x00007335; -u32 var8005d4dc = 0x00000000; -u32 var8005d4e0 = 0x00000000; -u32 var8005d4e4 = 0x00000000; -u32 var8005d4e8 = 0x00000001; -u32 var8005d4ec = 0x00000148; -u32 var8005d4f0 = 0x00000000; -u32 var8005d4f4 = 0x00000000; -u32 var8005d4f8 = 0x00000000; -u32 var8005d4fc = 0x00000000; -u32 var8005d500 = 0x00000000; -u32 var8005d504 = 0x00000000; -u32 var8005d508 = 0x00000000; -u32 var8005d50c = 0x00000000; -s8 g_AudioIsThreadRunning = false; void amgrHandleDoneMsg(AudioInfo *info); void amgrHandleFrameMsg(AudioInfo *info, AudioInfo *previnfo); +void amgrMain(void *arg); void amgrAllocateStack(void) { @@ -402,911 +52,94 @@ void amgrAllocateStack(void) } #if VERSION >= VERSION_PAL_FINAL -GLOBAL_ASM( -glabel amgrCreate -/* 8988: 27bdfa48 */ addiu $sp,$sp,-1464 -/* 898c: afbf002c */ sw $ra,0x2c($sp) -/* 8990: afb0001c */ sw $s0,0x1c($sp) -/* 8994: afa405b8 */ sw $a0,0x5b8($sp) -/* 8998: 00a08025 */ move $s0,$a1 -/* 899c: afb30028 */ sw $s3,0x28($sp) -/* 89a0: afb20024 */ sw $s2,0x24($sp) -/* 89a4: afb10020 */ sw $s1,0x20($sp) -/* 89a8: 0c01362c */ jal osAiSetFrequency -/* 89ac: 24045604 */ li $a0,0x5604 -/* 89b0: 8fa505b8 */ lw $a1,0x5b8($sp) -/* 89b4: 3c0e7001 */ lui $t6,0x7001 -/* 89b8: 25ce9754 */ addiu $t6,$t6,-26796 -/* 89bc: aca20018 */ sw $v0,0x18($a1) -/* 89c0: acae0010 */ sw $t6,0x10($a1) -/* 89c4: 8e0f0004 */ lw $t7,0x4($s0) -/* 89c8: 3c048009 */ lui $a0,0x8009 -/* 89cc: 44825000 */ mtc1 $v0,$f10 -/* 89d0: 448f2000 */ mtc1 $t7,$f4 -/* 89d4: 24841e30 */ addiu $a0,$a0,0x1e30 -/* 89d8: 05e10005 */ bgez $t7,.PF000089f0 -/* 89dc: 468021a0 */ cvt.s.w $f6,$f4 -/* 89e0: 3c014f80 */ lui $at,0x4f80 -/* 89e4: 44814000 */ mtc1 $at,$f8 -/* 89e8: 00000000 */ nop -/* 89ec: 46083180 */ add.s $f6,$f6,$f8 -.PF000089f0: -/* 89f0: 46805420 */ cvt.s.w $f16,$f10 -/* 89f4: 3c0141c8 */ lui $at,0x41c8 -/* 89f8: 44812000 */ mtc1 $at,$f4 -/* 89fc: 240200b8 */ li $v0,0xb8 -/* 8a00: 46103482 */ mul.s $f18,$f6,$f16 -/* 8a04: 46049003 */ div.s $f0,$f18,$f4 -/* 8a08: 4600020d */ trunc.w.s $f8,$f0 -/* 8a0c: 44194000 */ mfc1 $t9,$f8 -/* 8a10: 00000000 */ nop -/* 8a14: 03201825 */ move $v1,$t9 -/* 8a18: 44835000 */ mtc1 $v1,$f10 -/* 8a1c: ac990000 */ sw $t9,0x0($a0) -/* 8a20: 07210005 */ bgez $t9,.PF00008a38 -/* 8a24: 468051a0 */ cvt.s.w $f6,$f10 -/* 8a28: 3c014f80 */ lui $at,0x4f80 -/* 8a2c: 44818000 */ mtc1 $at,$f16 -/* 8a30: 00000000 */ nop -/* 8a34: 46103180 */ add.s $f6,$f6,$f16 -.PF00008a38: -/* 8a38: 4600303c */ c.lt.s $f6,$f0 -/* 8a3c: 00000000 */ nop -/* 8a40: 45000004 */ bc1f .PF00008a54 -/* 8a44: 00000000 */ nop -/* 8a48: 24690001 */ addiu $t1,$v1,0x1 -/* 8a4c: ac890000 */ sw $t1,0x0($a0) -/* 8a50: 01201825 */ move $v1,$t1 -.PF00008a54: -/* 8a54: 0062001b */ divu $zero,$v1,$v0 -/* 8a58: 00005012 */ mflo $t2 -/* 8a5c: 3c018009 */ lui $at,0x8009 -/* 8a60: 14400002 */ bnez $v0,.PF00008a6c -/* 8a64: 00000000 */ nop -/* 8a68: 0007000d */ break 0x7 -.PF00008a6c: -/* 8a6c: 01420019 */ multu $t2,$v0 -/* 8a70: 00005812 */ mflo $t3 -/* 8a74: 256c00b8 */ addiu $t4,$t3,0xb8 -/* 8a78: ac8c0000 */ sw $t4,0x0($a0) -/* 8a7c: 258dff48 */ addiu $t5,$t4,-184 -/* 8a80: ac2d1e2c */ sw $t5,0x1e2c($at) -/* 8a84: 3c018009 */ lui $at,0x8009 -/* 8a88: 258e0050 */ addiu $t6,$t4,0x50 -/* 8a8c: ac2e1e34 */ sw $t6,0x1e34($at) -/* 8a90: 3c018006 */ lui $at,0x8006 -/* 8a94: 0c00255c */ jal func00009660 -/* 8a98: a020cc34 */ sb $zero,-0x33cc($at) -/* 8a9c: 3c048009 */ lui $a0,0x8009 -/* 8aa0: 3c058009 */ lui $a1,0x8009 -/* 8aa4: 24a51db0 */ addiu $a1,$a1,0x1db0 -/* 8aa8: 24841d98 */ addiu $a0,$a0,0x1d98 -/* 8aac: 0c011f10 */ jal osCreateMesgQueue -/* 8ab0: 24060008 */ li $a2,0x8 -/* 8ab4: 3c048009 */ lui $a0,0x8009 -/* 8ab8: 3c058009 */ lui $a1,0x8009 -/* 8abc: 24a51d78 */ addiu $a1,$a1,0x1d78 -/* 8ac0: 24841d60 */ addiu $a0,$a0,0x1d60 -/* 8ac4: 0c011f10 */ jal osCreateMesgQueue -/* 8ac8: 24060008 */ li $a2,0x8 -/* 8acc: 3c128009 */ lui $s2,0x8009 -/* 8ad0: 26521e3c */ addiu $s2,$s2,0x1e3c -/* 8ad4: 240f07d0 */ li $t7,0x7d0 -/* 8ad8: 3c108009 */ lui $s0,0x8009 -/* 8adc: 3c138009 */ lui $s3,0x8009 -/* 8ae0: 3c118009 */ lui $s1,0x8009 -/* 8ae4: ae4f0000 */ sw $t7,0x0($s2) -/* 8ae8: 26315740 */ addiu $s1,$s1,0x5740 -/* 8aec: 26731b20 */ addiu $s3,$s3,0x1b20 -/* 8af0: 26101b18 */ addiu $s0,$s0,0x1b18 -.PF00008af4: -/* 8af4: 8e580000 */ lw $t8,0x0($s2) -/* 8af8: 00002025 */ move $a0,$zero -/* 8afc: 00002825 */ move $a1,$zero -/* 8b00: 0018c8c0 */ sll $t9,$t8,0x3 -/* 8b04: afb90010 */ sw $t9,0x10($sp) -/* 8b08: 02203025 */ move $a2,$s1 -/* 8b0c: 0c00bd05 */ jal alHeapDBAlloc -/* 8b10: 24070001 */ li $a3,0x1 -/* 8b14: 26100004 */ addiu $s0,$s0,0x4 -/* 8b18: 0213082b */ sltu $at,$s0,$s3 -/* 8b1c: 1420fff5 */ bnez $at,.PF00008af4 -/* 8b20: ae02fffc */ sw $v0,-0x4($s0) -/* 8b24: 3c108009 */ lui $s0,0x8009 -/* 8b28: 3c128009 */ lui $s2,0x8009 -/* 8b2c: 26521b24 */ addiu $s2,$s2,0x1b24 -/* 8b30: 26101b18 */ addiu $s0,$s0,0x1b18 -.PF00008b34: -/* 8b34: 24090060 */ li $t1,0x60 -/* 8b38: afa90010 */ sw $t1,0x10($sp) -/* 8b3c: 00002025 */ move $a0,$zero -/* 8b40: 00002825 */ move $a1,$zero -/* 8b44: 02203025 */ move $a2,$s1 -/* 8b48: 0c00bd05 */ jal alHeapDBAlloc -/* 8b4c: 24070001 */ li $a3,0x1 -/* 8b50: ae020008 */ sw $v0,0x8($s0) -/* 8b54: a4400004 */ sh $zero,0x4($v0) -/* 8b58: 240a0e68 */ li $t2,0xe68 -/* 8b5c: afaa0010 */ sw $t2,0x10($sp) -/* 8b60: 00002025 */ move $a0,$zero -/* 8b64: 00002825 */ move $a1,$zero -/* 8b68: 02203025 */ move $a2,$s1 -/* 8b6c: 0c00bd05 */ jal alHeapDBAlloc -/* 8b70: 24070001 */ li $a3,0x1 -/* 8b74: 8e0b0008 */ lw $t3,0x8($s0) -/* 8b78: 26100004 */ addiu $s0,$s0,0x4 -/* 8b7c: 0212082b */ sltu $at,$s0,$s2 -/* 8b80: 1420ffec */ bnez $at,.PF00008b34 -/* 8b84: ad620000 */ sw $v0,0x0($t3) -/* 8b88: 3c0d8006 */ lui $t5,0x8006 -/* 8b8c: 3c088009 */ lui $t0,0x8009 -/* 8b90: 25adcc38 */ addiu $t5,$t5,-13256 -/* 8b94: 25081040 */ addiu $t0,$t0,0x1040 -/* 8b98: 27a201b8 */ addiu $v0,$sp,0x1b8 -/* 8b9c: 27a30088 */ addiu $v1,$sp,0x88 -/* 8ba0: 27a50190 */ addiu $a1,$sp,0x190 -/* 8ba4: 27a60060 */ addiu $a2,$sp,0x60 -/* 8ba8: 24070001 */ li $a3,0x1 -/* 8bac: 25af0024 */ addiu $t7,$t5,0x24 -/* 8bb0: 27ac0588 */ addiu $t4,$sp,0x588 -.PF00008bb4: -/* 8bb4: 8da10000 */ lw $at,0x0($t5) -/* 8bb8: 25ad000c */ addiu $t5,$t5,0xc -/* 8bbc: 258c000c */ addiu $t4,$t4,0xc -/* 8bc0: ad81fff4 */ sw $at,-0xc($t4) -/* 8bc4: 8da1fff8 */ lw $at,-0x8($t5) -/* 8bc8: ad81fff8 */ sw $at,-0x8($t4) -/* 8bcc: 8da1fffc */ lw $at,-0x4($t5) -/* 8bd0: 15affff8 */ bne $t5,$t7,.PF00008bb4 -/* 8bd4: ad81fffc */ sw $at,-0x4($t4) -/* 8bd8: 8da10000 */ lw $at,0x0($t5) -/* 8bdc: 3c198006 */ lui $t9,0x8006 -/* 8be0: 2739cc60 */ addiu $t9,$t9,-13216 -/* 8be4: 272a0024 */ addiu $t2,$t9,0x24 -/* 8be8: 27b80560 */ addiu $t8,$sp,0x560 -/* 8bec: ad810000 */ sw $at,0x0($t4) -.PF00008bf0: -/* 8bf0: 8f210000 */ lw $at,0x0($t9) -/* 8bf4: 2739000c */ addiu $t9,$t9,0xc -/* 8bf8: 2718000c */ addiu $t8,$t8,0xc -/* 8bfc: af01fff4 */ sw $at,-0xc($t8) -/* 8c00: 8f21fff8 */ lw $at,-0x8($t9) -/* 8c04: af01fff8 */ sw $at,-0x8($t8) -/* 8c08: 8f21fffc */ lw $at,-0x4($t9) -/* 8c0c: 172afff8 */ bne $t9,$t2,.PF00008bf0 -/* 8c10: af01fffc */ sw $at,-0x4($t8) -/* 8c14: 8f210000 */ lw $at,0x0($t9) -/* 8c18: 3c0e8006 */ lui $t6,0x8006 -/* 8c1c: 25cecc88 */ addiu $t6,$t6,-13176 -/* 8c20: 25cd0024 */ addiu $t5,$t6,0x24 -/* 8c24: 27ab0538 */ addiu $t3,$sp,0x538 -/* 8c28: af010000 */ sw $at,0x0($t8) -.PF00008c2c: -/* 8c2c: 8dc10000 */ lw $at,0x0($t6) -/* 8c30: 25ce000c */ addiu $t6,$t6,0xc -/* 8c34: 256b000c */ addiu $t3,$t3,0xc -/* 8c38: ad61fff4 */ sw $at,-0xc($t3) -/* 8c3c: 8dc1fff8 */ lw $at,-0x8($t6) -/* 8c40: ad61fff8 */ sw $at,-0x8($t3) -/* 8c44: 8dc1fffc */ lw $at,-0x4($t6) -/* 8c48: 15cdfff8 */ bne $t6,$t5,.PF00008c2c -/* 8c4c: ad61fffc */ sw $at,-0x4($t3) -/* 8c50: 8dc10000 */ lw $at,0x0($t6) -/* 8c54: 3c098006 */ lui $t1,0x8006 -/* 8c58: 2529ccb0 */ addiu $t1,$t1,-13136 -/* 8c5c: 253900c0 */ addiu $t9,$t1,0xc0 -/* 8c60: 27ac0470 */ addiu $t4,$sp,0x470 -/* 8c64: ad610000 */ sw $at,0x0($t3) -.PF00008c68: -/* 8c68: 8d210000 */ lw $at,0x0($t1) -/* 8c6c: 2529000c */ addiu $t1,$t1,0xc -/* 8c70: 258c000c */ addiu $t4,$t4,0xc -/* 8c74: ad81fff4 */ sw $at,-0xc($t4) -/* 8c78: 8d21fff8 */ lw $at,-0x8($t1) -/* 8c7c: ad81fff8 */ sw $at,-0x8($t4) -/* 8c80: 8d21fffc */ lw $at,-0x4($t1) -/* 8c84: 1539fff8 */ bne $t1,$t9,.PF00008c68 -/* 8c88: ad81fffc */ sw $at,-0x4($t4) -/* 8c8c: 8d210000 */ lw $at,0x0($t1) -/* 8c90: 8d390004 */ lw $t9,0x4($t1) -/* 8c94: 3c0f8006 */ lui $t7,0x8006 -/* 8c98: 25efcd78 */ addiu $t7,$t7,-12936 -/* 8c9c: 25ee0048 */ addiu $t6,$t7,0x48 -/* 8ca0: 27b80428 */ addiu $t8,$sp,0x428 -/* 8ca4: ad810000 */ sw $at,0x0($t4) -/* 8ca8: ad990004 */ sw $t9,0x4($t4) -.PF00008cac: -/* 8cac: 8de10000 */ lw $at,0x0($t7) -/* 8cb0: 25ef000c */ addiu $t7,$t7,0xc -/* 8cb4: 2718000c */ addiu $t8,$t8,0xc -/* 8cb8: af01fff4 */ sw $at,-0xc($t8) -/* 8cbc: 8de1fff8 */ lw $at,-0x8($t7) -/* 8cc0: af01fff8 */ sw $at,-0x8($t8) -/* 8cc4: 8de1fffc */ lw $at,-0x4($t7) -/* 8cc8: 15eefff8 */ bne $t7,$t6,.PF00008cac -/* 8ccc: af01fffc */ sw $at,-0x4($t8) -/* 8cd0: 3c0a8006 */ lui $t2,0x8006 -/* 8cd4: 254acdc0 */ addiu $t2,$t2,-12864 -/* 8cd8: 25490060 */ addiu $t1,$t2,0x60 -/* 8cdc: 27ab03c0 */ addiu $t3,$sp,0x3c0 -.PF00008ce0: -/* 8ce0: 8d410000 */ lw $at,0x0($t2) -/* 8ce4: 254a000c */ addiu $t2,$t2,0xc -/* 8ce8: 256b000c */ addiu $t3,$t3,0xc -/* 8cec: ad61fff4 */ sw $at,-0xc($t3) -/* 8cf0: 8d41fff8 */ lw $at,-0x8($t2) -/* 8cf4: ad61fff8 */ sw $at,-0x8($t3) -/* 8cf8: 8d41fffc */ lw $at,-0x4($t2) -/* 8cfc: 1549fff8 */ bne $t2,$t1,.PF00008ce0 -/* 8d00: ad61fffc */ sw $at,-0x4($t3) -/* 8d04: 8d410000 */ lw $at,0x0($t2) -/* 8d08: 8d490004 */ lw $t1,0x4($t2) -/* 8d0c: 3c0d8006 */ lui $t5,0x8006 -/* 8d10: 25adce28 */ addiu $t5,$t5,-12760 -/* 8d14: 25af0060 */ addiu $t7,$t5,0x60 -/* 8d18: 27ac0358 */ addiu $t4,$sp,0x358 -/* 8d1c: ad610000 */ sw $at,0x0($t3) -/* 8d20: ad690004 */ sw $t1,0x4($t3) -.PF00008d24: -/* 8d24: 8da10000 */ lw $at,0x0($t5) -/* 8d28: 25ad000c */ addiu $t5,$t5,0xc -/* 8d2c: 258c000c */ addiu $t4,$t4,0xc -/* 8d30: ad81fff4 */ sw $at,-0xc($t4) -/* 8d34: 8da1fff8 */ lw $at,-0x8($t5) -/* 8d38: ad81fff8 */ sw $at,-0x8($t4) -/* 8d3c: 8da1fffc */ lw $at,-0x4($t5) -/* 8d40: 15affff8 */ bne $t5,$t7,.PF00008d24 -/* 8d44: ad81fffc */ sw $at,-0x4($t4) -/* 8d48: 8da10000 */ lw $at,0x0($t5) -/* 8d4c: 8daf0004 */ lw $t7,0x4($t5) -/* 8d50: 3c198006 */ lui $t9,0x8006 -/* 8d54: 2739ce90 */ addiu $t9,$t9,-12656 -/* 8d58: 272a0060 */ addiu $t2,$t9,0x60 -/* 8d5c: 27b802f0 */ addiu $t8,$sp,0x2f0 -/* 8d60: ad810000 */ sw $at,0x0($t4) -/* 8d64: ad8f0004 */ sw $t7,0x4($t4) -.PF00008d68: -/* 8d68: 8f210000 */ lw $at,0x0($t9) -/* 8d6c: 2739000c */ addiu $t9,$t9,0xc -/* 8d70: 2718000c */ addiu $t8,$t8,0xc -/* 8d74: af01fff4 */ sw $at,-0xc($t8) -/* 8d78: 8f21fff8 */ lw $at,-0x8($t9) -/* 8d7c: af01fff8 */ sw $at,-0x8($t8) -/* 8d80: 8f21fffc */ lw $at,-0x4($t9) -/* 8d84: 172afff8 */ bne $t9,$t2,.PF00008d68 -/* 8d88: af01fffc */ sw $at,-0x4($t8) -/* 8d8c: 8f210000 */ lw $at,0x0($t9) -/* 8d90: 8f2a0004 */ lw $t2,0x4($t9) -/* 8d94: 3c0e8006 */ lui $t6,0x8006 -/* 8d98: 25cecef8 */ addiu $t6,$t6,-12552 -/* 8d9c: 25cd0084 */ addiu $t5,$t6,0x84 -/* 8da0: 27ab0268 */ addiu $t3,$sp,0x268 -/* 8da4: af010000 */ sw $at,0x0($t8) -/* 8da8: af0a0004 */ sw $t2,0x4($t8) -.PF00008dac: -/* 8dac: 8dc10000 */ lw $at,0x0($t6) -/* 8db0: 25ce000c */ addiu $t6,$t6,0xc -/* 8db4: 256b000c */ addiu $t3,$t3,0xc -/* 8db8: ad61fff4 */ sw $at,-0xc($t3) -/* 8dbc: 8dc1fff8 */ lw $at,-0x8($t6) -/* 8dc0: ad61fff8 */ sw $at,-0x8($t3) -/* 8dc4: 8dc1fffc */ lw $at,-0x4($t6) -/* 8dc8: 15cdfff8 */ bne $t6,$t5,.PF00008dac -/* 8dcc: ad61fffc */ sw $at,-0x4($t3) -/* 8dd0: 8dc10000 */ lw $at,0x0($t6) -/* 8dd4: 3c098006 */ lui $t1,0x8006 -/* 8dd8: 2529cf80 */ addiu $t1,$t1,-12416 -/* 8ddc: 25390024 */ addiu $t9,$t1,0x24 -/* 8de0: 27ac0240 */ addiu $t4,$sp,0x240 -/* 8de4: ad610000 */ sw $at,0x0($t3) -.PF00008de8: -/* 8de8: 8d210000 */ lw $at,0x0($t1) -/* 8dec: 2529000c */ addiu $t1,$t1,0xc -/* 8df0: 258c000c */ addiu $t4,$t4,0xc -/* 8df4: ad81fff4 */ sw $at,-0xc($t4) -/* 8df8: 8d21fff8 */ lw $at,-0x8($t1) -/* 8dfc: ad81fff8 */ sw $at,-0x8($t4) -/* 8e00: 8d21fffc */ lw $at,-0x4($t1) -/* 8e04: 1539fff8 */ bne $t1,$t9,.PF00008de8 -/* 8e08: ad81fffc */ sw $at,-0x4($t4) -/* 8e0c: 8d210000 */ lw $at,0x0($t1) -/* 8e10: 3c188006 */ lui $t8,0x8006 -/* 8e14: 2718cfa8 */ addiu $t8,$t8,-12376 -/* 8e18: 270d0084 */ addiu $t5,$t8,0x84 -/* 8e1c: 00407025 */ move $t6,$v0 -/* 8e20: ad810000 */ sw $at,0x0($t4) -.PF00008e24: -/* 8e24: 8f010000 */ lw $at,0x0($t8) -/* 8e28: 2718000c */ addiu $t8,$t8,0xc -/* 8e2c: 25ce000c */ addiu $t6,$t6,0xc -/* 8e30: adc1fff4 */ sw $at,-0xc($t6) -/* 8e34: 8f01fff8 */ lw $at,-0x8($t8) -/* 8e38: adc1fff8 */ sw $at,-0x8($t6) -/* 8e3c: 8f01fffc */ lw $at,-0x4($t8) -/* 8e40: 170dfff8 */ bne $t8,$t5,.PF00008e24 -/* 8e44: adc1fffc */ sw $at,-0x4($t6) -/* 8e48: 8f010000 */ lw $at,0x0($t8) -/* 8e4c: 3c0b8006 */ lui $t3,0x8006 -/* 8e50: 256bd030 */ addiu $t3,$t3,-12240 -/* 8e54: 25790024 */ addiu $t9,$t3,0x24 -/* 8e58: 00a04825 */ move $t1,$a1 -/* 8e5c: adc10000 */ sw $at,0x0($t6) -.PF00008e60: -/* 8e60: 8d610000 */ lw $at,0x0($t3) -/* 8e64: 256b000c */ addiu $t3,$t3,0xc -/* 8e68: 2529000c */ addiu $t1,$t1,0xc -/* 8e6c: ad21fff4 */ sw $at,-0xc($t1) -/* 8e70: 8d61fff8 */ lw $at,-0x8($t3) -/* 8e74: ad21fff8 */ sw $at,-0x8($t1) -/* 8e78: 8d61fffc */ lw $at,-0x4($t3) -/* 8e7c: 1579fff8 */ bne $t3,$t9,.PF00008e60 -/* 8e80: ad21fffc */ sw $at,-0x4($t1) -/* 8e84: 8d610000 */ lw $at,0x0($t3) -/* 8e88: 3c0c8006 */ lui $t4,0x8006 -/* 8e8c: 258cd058 */ addiu $t4,$t4,-12200 -/* 8e90: 258d0108 */ addiu $t5,$t4,0x108 -/* 8e94: 0060c025 */ move $t8,$v1 -/* 8e98: ad210000 */ sw $at,0x0($t1) -.PF00008e9c: -/* 8e9c: 8d810000 */ lw $at,0x0($t4) -/* 8ea0: 258c000c */ addiu $t4,$t4,0xc -/* 8ea4: 2718000c */ addiu $t8,$t8,0xc -/* 8ea8: af01fff4 */ sw $at,-0xc($t8) -/* 8eac: 8d81fff8 */ lw $at,-0x8($t4) -/* 8eb0: af01fff8 */ sw $at,-0x8($t8) -/* 8eb4: 8d81fffc */ lw $at,-0x4($t4) -/* 8eb8: 158dfff8 */ bne $t4,$t5,.PF00008e9c -/* 8ebc: af01fffc */ sw $at,-0x4($t8) -/* 8ec0: 3c0e8006 */ lui $t6,0x8006 -/* 8ec4: 25ced160 */ addiu $t6,$t6,-11936 -/* 8ec8: 25d90024 */ addiu $t9,$t6,0x24 -/* 8ecc: 00c05825 */ move $t3,$a2 -.PF00008ed0: -/* 8ed0: 8dc10000 */ lw $at,0x0($t6) -/* 8ed4: 25ce000c */ addiu $t6,$t6,0xc -/* 8ed8: 256b000c */ addiu $t3,$t3,0xc -/* 8edc: ad61fff4 */ sw $at,-0xc($t3) -/* 8ee0: 8dc1fff8 */ lw $at,-0x8($t6) -/* 8ee4: ad61fff8 */ sw $at,-0x8($t3) -/* 8ee8: 8dc1fffc */ lw $at,-0x4($t6) -/* 8eec: 15d9fff8 */ bne $t6,$t9,.PF00008ed0 -/* 8ef0: ad61fffc */ sw $at,-0x4($t3) -/* 8ef4: 8dc10000 */ lw $at,0x0($t6) -/* 8ef8: 3c0f8006 */ lui $t7,0x8006 -/* 8efc: 25efd188 */ addiu $t7,$t7,-11896 -/* 8f00: 25ec0024 */ addiu $t4,$t7,0x24 -/* 8f04: 27a90038 */ addiu $t1,$sp,0x38 -/* 8f08: ad610000 */ sw $at,0x0($t3) -.PF00008f0c: -/* 8f0c: 8de10000 */ lw $at,0x0($t7) -/* 8f10: 25ef000c */ addiu $t7,$t7,0xc -/* 8f14: 2529000c */ addiu $t1,$t1,0xc -/* 8f18: ad21fff4 */ sw $at,-0xc($t1) -/* 8f1c: 8de1fff8 */ lw $at,-0x8($t7) -/* 8f20: ad21fff8 */ sw $at,-0x8($t1) -/* 8f24: 8de1fffc */ lw $at,-0x4($t7) -/* 8f28: 15ecfff8 */ bne $t7,$t4,.PF00008f0c -/* 8f2c: ad21fffc */ sw $at,-0x4($t1) -/* 8f30: 8de10000 */ lw $at,0x0($t7) -/* 8f34: ad210000 */ sw $at,0x0($t1) -/* 8f38: 91180000 */ lbu $t8,0x0($t0) -/* 8f3c: 8fb005b8 */ lw $s0,0x5b8($sp) -/* 8f40: 54f80004 */ bnel $a3,$t8,.PF00008f54 -/* 8f44: 8fb005b8 */ lw $s0,0x5b8($sp) -/* 8f48: 10000003 */ b .PF00008f58 -/* 8f4c: ae020020 */ sw $v0,0x20($s0) -/* 8f50: 8fb005b8 */ lw $s0,0x5b8($sp) -.PF00008f54: -/* 8f54: ae030020 */ sw $v1,0x20($s0) -.PF00008f58: -/* 8f58: 3c048009 */ lui $a0,0x8009 -/* 8f5c: 248453f8 */ addiu $a0,$a0,0x53f8 -/* 8f60: 8c820000 */ lw $v0,0x0($a0) -/* 8f64: 28410002 */ slti $at,$v0,0x2 -/* 8f68: 14200010 */ bnez $at,.PF00008fac -/* 8f6c: 28410002 */ slti $at,$v0,0x2 -/* 8f70: 1420000e */ bnez $at,.PF00008fac -/* 8f74: 00e01825 */ move $v1,$a3 -/* 8f78: 26020004 */ addiu $v0,$s0,0x4 -/* 8f7c: 91190000 */ lbu $t9,0x0($t0) -.PF00008f80: -/* 8f80: 54f90004 */ bnel $a3,$t9,.PF00008f94 -/* 8f84: ac460020 */ sw $a2,0x20($v0) -/* 8f88: 10000002 */ b .PF00008f94 -/* 8f8c: ac450020 */ sw $a1,0x20($v0) -/* 8f90: ac460020 */ sw $a2,0x20($v0) -.PF00008f94: -/* 8f94: 8c8e0000 */ lw $t6,0x0($a0) -/* 8f98: 24630001 */ addiu $v1,$v1,0x1 -/* 8f9c: 24420004 */ addiu $v0,$v0,0x4 -/* 8fa0: 006e082a */ slt $at,$v1,$t6 -/* 8fa4: 5420fff6 */ bnezl $at,.PF00008f80 -/* 8fa8: 91190000 */ lbu $t9,0x0($t0) -.PF00008fac: -/* 8fac: 3c048009 */ lui $a0,0x8009 -/* 8fb0: 24841dd0 */ addiu $a0,$a0,0x1dd0 -/* 8fb4: 0c00bd28 */ jal n_alInit -/* 8fb8: 02002825 */ move $a1,$s0 -/* 8fbc: 00002025 */ move $a0,$zero -/* 8fc0: 0c00c13f */ jal func00030bfc -/* 8fc4: 2405003c */ li $a1,0x3c -/* 8fc8: 3c0b8009 */ lui $t3,0x8009 -/* 8fcc: 8d6b1e40 */ lw $t3,0x1e40($t3) -/* 8fd0: 3c048009 */ lui $a0,0x8009 -/* 8fd4: 3c067001 */ lui $a2,0x7001 -/* 8fd8: 240d0014 */ li $t5,0x14 -/* 8fdc: afad0014 */ sw $t5,0x14($sp) -/* 8fe0: 24c6907c */ addiu $a2,$a2,-28548 -/* 8fe4: 24841b30 */ addiu $a0,$a0,0x1b30 -/* 8fe8: 24050004 */ li $a1,0x4 -/* 8fec: 00003825 */ move $a3,$zero -/* 8ff0: 0c000fac */ jal osCreateThread -/* 8ff4: afab0010 */ sw $t3,0x10($sp) -/* 8ff8: 8fbf002c */ lw $ra,0x2c($sp) -/* 8ffc: 8fb0001c */ lw $s0,0x1c($sp) -/* 9000: 8fb10020 */ lw $s1,0x20($sp) -/* 9004: 8fb20024 */ lw $s2,0x24($sp) -/* 9008: 8fb30028 */ lw $s3,0x28($sp) -/* 900c: 03e00008 */ jr $ra -/* 9010: 27bd05b8 */ addiu $sp,$sp,0x5b8 -); +void amgrCreate(ALSynConfig *config, u32 *settings) #else -GLOBAL_ASM( -glabel amgrCreate -/* 8a48: 27bdfa40 */ addiu $sp,$sp,-1472 -/* 8a4c: afbf0034 */ sw $ra,0x34($sp) -/* 8a50: afa405c0 */ sw $a0,0x5c0($sp) -/* 8a54: afb50030 */ sw $s5,0x30($sp) -/* 8a58: afb4002c */ sw $s4,0x2c($sp) -/* 8a5c: afb30028 */ sw $s3,0x28($sp) -/* 8a60: afb20024 */ sw $s2,0x24($sp) -/* 8a64: afb10020 */ sw $s1,0x20($sp) -/* 8a68: afb0001c */ sw $s0,0x1c($sp) -/* 8a6c: 0c01389c */ jal osAiSetFrequency -/* 8a70: 24045604 */ addiu $a0,$zero,0x5604 -/* 8a74: 44822000 */ mtc1 $v0,$f4 -/* 8a78: 3c0141f0 */ lui $at,0x41f0 -/* 8a7c: 44814000 */ mtc1 $at,$f8 -/* 8a80: 468021a0 */ cvt.s.w $f6,$f4 -/* 8a84: 8fa505c0 */ lw $a1,0x5c0($sp) -/* 8a88: 3c0e7001 */ lui $t6,%hi(func00009844) -/* 8a8c: 3c158009 */ lui $s5,%hi(g_Is4Mb) -/* 8a90: 25ce9844 */ addiu $t6,$t6,%lo(func00009844) -/* 8a94: 26b50af0 */ addiu $s5,$s5,%lo(g_Is4Mb) -/* 8a98: 46083083 */ div.s $f2,$f6,$f8 -/* 8a9c: aca20018 */ sw $v0,0x18($a1) -/* 8aa0: acae0010 */ sw $t6,0x10($a1) -/* 8aa4: 92af0000 */ lbu $t7,0x0($s5) -/* 8aa8: 24140001 */ addiu $s4,$zero,0x1 -/* 8aac: 240400b8 */ addiu $a0,$zero,0xb8 -/* 8ab0: 168f0006 */ bne $s4,$t7,.L00008acc -/* 8ab4: 46001006 */ mov.s $f0,$f2 -/* 8ab8: 3c013f00 */ lui $at,0x3f00 -/* 8abc: 44815000 */ mtc1 $at,$f10 -/* 8ac0: 00000000 */ nop -/* 8ac4: 460a1002 */ mul.s $f0,$f2,$f10 -/* 8ac8: 00000000 */ nop -.L00008acc: -/* 8acc: 4600040d */ trunc.w.s $f16,$f0 -/* 8ad0: 3c038009 */ lui $v1,%hi(var800918e0) -/* 8ad4: 246318e0 */ addiu $v1,$v1,%lo(var800918e0) -/* 8ad8: 44198000 */ mfc1 $t9,$f16 -/* 8adc: 00000000 */ nop -/* 8ae0: 03201025 */ or $v0,$t9,$zero -/* 8ae4: 44829000 */ mtc1 $v0,$f18 -/* 8ae8: ac790000 */ sw $t9,0x0($v1) -/* 8aec: 07210005 */ bgez $t9,.L00008b04 -/* 8af0: 46809120 */ cvt.s.w $f4,$f18 -/* 8af4: 3c014f80 */ lui $at,0x4f80 -/* 8af8: 44813000 */ mtc1 $at,$f6 -/* 8afc: 00000000 */ nop -/* 8b00: 46062100 */ add.s $f4,$f4,$f6 -.L00008b04: -/* 8b04: 4600203c */ c.lt.s $f4,$f0 -/* 8b08: 00000000 */ nop -/* 8b0c: 45000004 */ bc1f .L00008b20 -/* 8b10: 00000000 */ nop -/* 8b14: 24480001 */ addiu $t0,$v0,0x1 -/* 8b18: ac680000 */ sw $t0,0x0($v1) -/* 8b1c: 01001025 */ or $v0,$t0,$zero -.L00008b20: -/* 8b20: 0044001b */ divu $zero,$v0,$a0 -/* 8b24: 00004812 */ mflo $t1 -/* 8b28: 3c018009 */ lui $at,%hi(var800918dc) -/* 8b2c: 14800002 */ bnez $a0,.L00008b38 -/* 8b30: 00000000 */ nop -/* 8b34: 0007000d */ break 0x7 -.L00008b38: -/* 8b38: 01240019 */ multu $t1,$a0 -/* 8b3c: 00005012 */ mflo $t2 -/* 8b40: 254b00b8 */ addiu $t3,$t2,0xb8 -/* 8b44: ac6b0000 */ sw $t3,0x0($v1) -/* 8b48: 256cff48 */ addiu $t4,$t3,-184 -/* 8b4c: ac2c18dc */ sw $t4,%lo(var800918dc)($at) -/* 8b50: 3c018009 */ lui $at,%hi(var800918e4) -/* 8b54: 256d0050 */ addiu $t5,$t3,0x50 -/* 8b58: ac2d18e4 */ sw $t5,%lo(var800918e4)($at) -/* 8b5c: 3c018006 */ lui $at,%hi(var8005cf94) -/* 8b60: 0c002598 */ jal func00009660 -/* 8b64: a020cf94 */ sb $zero,%lo(var8005cf94)($at) -/* 8b68: 3c048009 */ lui $a0,%hi(g_AudioManager+0x280) -/* 8b6c: 3c058009 */ lui $a1,%hi(g_AudioManager+0x298) -/* 8b70: 24a51860 */ addiu $a1,$a1,%lo(g_AudioManager+0x298) -/* 8b74: 24841848 */ addiu $a0,$a0,%lo(g_AudioManager+0x280) -/* 8b78: 0c0120d0 */ jal osCreateMesgQueue -/* 8b7c: 24060008 */ addiu $a2,$zero,0x8 -/* 8b80: 3c048009 */ lui $a0,%hi(g_AudioManager+0x248) -/* 8b84: 3c058009 */ lui $a1,%hi(g_AudioManager+0x260) -/* 8b88: 24a51828 */ addiu $a1,$a1,%lo(g_AudioManager+0x260) -/* 8b8c: 24841810 */ addiu $a0,$a0,%lo(g_AudioManager+0x248) -/* 8b90: 0c0120d0 */ jal osCreateMesgQueue -/* 8b94: 24060008 */ addiu $a2,$zero,0x8 -/* 8b98: 92af0000 */ lbu $t7,0x0($s5) -/* 8b9c: 3c128009 */ lui $s2,%hi(var800918ec) -/* 8ba0: 265218ec */ addiu $s2,$s2,%lo(var800918ec) -/* 8ba4: 240e07d0 */ addiu $t6,$zero,0x7d0 -/* 8ba8: 168f0003 */ bne $s4,$t7,.L00008bb8 -/* 8bac: ae4e0000 */ sw $t6,0x0($s2) -/* 8bb0: 000ec843 */ sra $t9,$t6,0x1 -/* 8bb4: ae590000 */ sw $t9,0x0($s2) -.L00008bb8: -/* 8bb8: 3c108009 */ lui $s0,%hi(g_AudioManager) -/* 8bbc: 3c138009 */ lui $s3,%hi(g_AudioManager+0x8) -/* 8bc0: 3c118009 */ lui $s1,%hi(g_SndHeap) -/* 8bc4: 263151f0 */ addiu $s1,$s1,%lo(g_SndHeap) -/* 8bc8: 267315d0 */ addiu $s3,$s3,%lo(g_AudioManager+0x8) -/* 8bcc: 261015c8 */ addiu $s0,$s0,%lo(g_AudioManager) -.L00008bd0: -/* 8bd0: 8e480000 */ lw $t0,0x0($s2) -/* 8bd4: 00002025 */ or $a0,$zero,$zero -/* 8bd8: 00002825 */ or $a1,$zero,$zero -/* 8bdc: 000848c0 */ sll $t1,$t0,0x3 -/* 8be0: afa90010 */ sw $t1,0x10($sp) -/* 8be4: 02203025 */ or $a2,$s1,$zero -/* 8be8: 0c00bec5 */ jal alHeapDBAlloc -/* 8bec: 02803825 */ or $a3,$s4,$zero -/* 8bf0: 26100004 */ addiu $s0,$s0,0x4 -/* 8bf4: 0213082b */ sltu $at,$s0,$s3 -/* 8bf8: 1420fff5 */ bnez $at,.L00008bd0 -/* 8bfc: ae02fffc */ sw $v0,-0x4($s0) -/* 8c00: 3c108009 */ lui $s0,%hi(g_AudioManager) -/* 8c04: 3c128009 */ lui $s2,%hi(g_AudioManager+0x0c) -/* 8c08: 265215d4 */ addiu $s2,$s2,%lo(g_AudioManager+0x0c) -/* 8c0c: 261015c8 */ addiu $s0,$s0,%lo(g_AudioManager) -.L00008c10: -/* 8c10: 240a0060 */ addiu $t2,$zero,0x60 -/* 8c14: afaa0010 */ sw $t2,0x10($sp) -/* 8c18: 00002025 */ or $a0,$zero,$zero -/* 8c1c: 00002825 */ or $a1,$zero,$zero -/* 8c20: 02203025 */ or $a2,$s1,$zero -/* 8c24: 0c00bec5 */ jal alHeapDBAlloc -/* 8c28: 02803825 */ or $a3,$s4,$zero -/* 8c2c: ae020008 */ sw $v0,0x8($s0) -/* 8c30: a4400004 */ sh $zero,0x4($v0) -/* 8c34: 240b0c00 */ addiu $t3,$zero,0xc00 -/* 8c38: afab0010 */ sw $t3,0x10($sp) -/* 8c3c: 00002025 */ or $a0,$zero,$zero -/* 8c40: 00002825 */ or $a1,$zero,$zero -/* 8c44: 02203025 */ or $a2,$s1,$zero -/* 8c48: 0c00bec5 */ jal alHeapDBAlloc -/* 8c4c: 02803825 */ or $a3,$s4,$zero -/* 8c50: 8e0c0008 */ lw $t4,0x8($s0) -/* 8c54: 26100004 */ addiu $s0,$s0,0x4 -/* 8c58: 0212082b */ sltu $at,$s0,$s2 -/* 8c5c: 1420ffec */ bnez $at,.L00008c10 -/* 8c60: ad820000 */ sw $v0,0x0($t4) -/* 8c64: 3c0e8006 */ lui $t6,%hi(var8005cf98) -/* 8c68: 25cecf98 */ addiu $t6,$t6,%lo(var8005cf98) -/* 8c6c: 27a201c0 */ addiu $v0,$sp,0x1c0 -/* 8c70: 27a30090 */ addiu $v1,$sp,0x90 -/* 8c74: 27a50198 */ addiu $a1,$sp,0x198 -/* 8c78: 27a60068 */ addiu $a2,$sp,0x68 -/* 8c7c: 25d80024 */ addiu $t8,$t6,0x24 -/* 8c80: 27ad0590 */ addiu $t5,$sp,0x590 -.L00008c84: -/* 8c84: 8dc10000 */ lw $at,0x0($t6) -/* 8c88: 25ce000c */ addiu $t6,$t6,0xc -/* 8c8c: 25ad000c */ addiu $t5,$t5,0xc -/* 8c90: ada1fff4 */ sw $at,-0xc($t5) -/* 8c94: 8dc1fff8 */ lw $at,-0x8($t6) -/* 8c98: ada1fff8 */ sw $at,-0x8($t5) -/* 8c9c: 8dc1fffc */ lw $at,-0x4($t6) -/* 8ca0: 15d8fff8 */ bne $t6,$t8,.L00008c84 -/* 8ca4: ada1fffc */ sw $at,-0x4($t5) -/* 8ca8: 8dc10000 */ lw $at,0x0($t6) -/* 8cac: 3c088006 */ lui $t0,%hi(var8005cfc0) -/* 8cb0: 2508cfc0 */ addiu $t0,$t0,%lo(var8005cfc0) -/* 8cb4: 250a0024 */ addiu $t2,$t0,0x24 -/* 8cb8: 27b90568 */ addiu $t9,$sp,0x568 -/* 8cbc: ada10000 */ sw $at,0x0($t5) -.L00008cc0: -/* 8cc0: 8d010000 */ lw $at,0x0($t0) -/* 8cc4: 2508000c */ addiu $t0,$t0,0xc -/* 8cc8: 2739000c */ addiu $t9,$t9,0xc -/* 8ccc: af21fff4 */ sw $at,-0xc($t9) -/* 8cd0: 8d01fff8 */ lw $at,-0x8($t0) -/* 8cd4: af21fff8 */ sw $at,-0x8($t9) -/* 8cd8: 8d01fffc */ lw $at,-0x4($t0) -/* 8cdc: 150afff8 */ bne $t0,$t2,.L00008cc0 -/* 8ce0: af21fffc */ sw $at,-0x4($t9) -/* 8ce4: 8d010000 */ lw $at,0x0($t0) -/* 8ce8: 3c0c8006 */ lui $t4,%hi(var8005cfe8) -/* 8cec: 258ccfe8 */ addiu $t4,$t4,%lo(var8005cfe8) -/* 8cf0: 25980024 */ addiu $t8,$t4,0x24 -/* 8cf4: 27ab0540 */ addiu $t3,$sp,0x540 -/* 8cf8: af210000 */ sw $at,0x0($t9) -.L00008cfc: -/* 8cfc: 8d810000 */ lw $at,0x0($t4) -/* 8d00: 258c000c */ addiu $t4,$t4,0xc -/* 8d04: 256b000c */ addiu $t3,$t3,0xc -/* 8d08: ad61fff4 */ sw $at,-0xc($t3) -/* 8d0c: 8d81fff8 */ lw $at,-0x8($t4) -/* 8d10: ad61fff8 */ sw $at,-0x8($t3) -/* 8d14: 8d81fffc */ lw $at,-0x4($t4) -/* 8d18: 1598fff8 */ bne $t4,$t8,.L00008cfc -/* 8d1c: ad61fffc */ sw $at,-0x4($t3) -/* 8d20: 8d810000 */ lw $at,0x0($t4) -/* 8d24: 3c0d8006 */ lui $t5,%hi(var8005d010) -/* 8d28: 25add010 */ addiu $t5,$t5,%lo(var8005d010) -/* 8d2c: 25aa00c0 */ addiu $t2,$t5,0xc0 -/* 8d30: 27ae0478 */ addiu $t6,$sp,0x478 -/* 8d34: ad610000 */ sw $at,0x0($t3) -.L00008d38: -/* 8d38: 8da10000 */ lw $at,0x0($t5) -/* 8d3c: 25ad000c */ addiu $t5,$t5,0xc -/* 8d40: 25ce000c */ addiu $t6,$t6,0xc -/* 8d44: adc1fff4 */ sw $at,-0xc($t6) -/* 8d48: 8da1fff8 */ lw $at,-0x8($t5) -/* 8d4c: adc1fff8 */ sw $at,-0x8($t6) -/* 8d50: 8da1fffc */ lw $at,-0x4($t5) -/* 8d54: 15aafff8 */ bne $t5,$t2,.L00008d38 -/* 8d58: adc1fffc */ sw $at,-0x4($t6) -/* 8d5c: 8da10000 */ lw $at,0x0($t5) -/* 8d60: 8daa0004 */ lw $t2,0x4($t5) -/* 8d64: 3c198006 */ lui $t9,%hi(var8005d0d8) -/* 8d68: 2739d0d8 */ addiu $t9,$t9,%lo(var8005d0d8) -/* 8d6c: 27380048 */ addiu $t8,$t9,0x48 -/* 8d70: 27a80430 */ addiu $t0,$sp,0x430 -/* 8d74: adc10000 */ sw $at,0x0($t6) -/* 8d78: adca0004 */ sw $t2,0x4($t6) -.L00008d7c: -/* 8d7c: 8f210000 */ lw $at,0x0($t9) -/* 8d80: 2739000c */ addiu $t9,$t9,0xc -/* 8d84: 2508000c */ addiu $t0,$t0,0xc -/* 8d88: ad01fff4 */ sw $at,-0xc($t0) -/* 8d8c: 8f21fff8 */ lw $at,-0x8($t9) -/* 8d90: ad01fff8 */ sw $at,-0x8($t0) -/* 8d94: 8f21fffc */ lw $at,-0x4($t9) -/* 8d98: 1738fff8 */ bne $t9,$t8,.L00008d7c -/* 8d9c: ad01fffc */ sw $at,-0x4($t0) -/* 8da0: 3c0b8006 */ lui $t3,%hi(var8005d120) -/* 8da4: 256bd120 */ addiu $t3,$t3,%lo(var8005d120) -/* 8da8: 256a0060 */ addiu $t2,$t3,0x60 -/* 8dac: 27ac03c8 */ addiu $t4,$sp,0x3c8 -.L00008db0: -/* 8db0: 8d610000 */ lw $at,0x0($t3) -/* 8db4: 256b000c */ addiu $t3,$t3,0xc -/* 8db8: 258c000c */ addiu $t4,$t4,0xc -/* 8dbc: ad81fff4 */ sw $at,-0xc($t4) -/* 8dc0: 8d61fff8 */ lw $at,-0x8($t3) -/* 8dc4: ad81fff8 */ sw $at,-0x8($t4) -/* 8dc8: 8d61fffc */ lw $at,-0x4($t3) -/* 8dcc: 156afff8 */ bne $t3,$t2,.L00008db0 -/* 8dd0: ad81fffc */ sw $at,-0x4($t4) -/* 8dd4: 8d610000 */ lw $at,0x0($t3) -/* 8dd8: 8d6a0004 */ lw $t2,0x4($t3) -/* 8ddc: 3c0e8006 */ lui $t6,%hi(var8005d188) -/* 8de0: 25ced188 */ addiu $t6,$t6,%lo(var8005d188) -/* 8de4: 25d80060 */ addiu $t8,$t6,0x60 -/* 8de8: 27ad0360 */ addiu $t5,$sp,0x360 -/* 8dec: ad810000 */ sw $at,0x0($t4) -/* 8df0: ad8a0004 */ sw $t2,0x4($t4) -.L00008df4: -/* 8df4: 8dc10000 */ lw $at,0x0($t6) -/* 8df8: 25ce000c */ addiu $t6,$t6,0xc -/* 8dfc: 25ad000c */ addiu $t5,$t5,0xc -/* 8e00: ada1fff4 */ sw $at,-0xc($t5) -/* 8e04: 8dc1fff8 */ lw $at,-0x8($t6) -/* 8e08: ada1fff8 */ sw $at,-0x8($t5) -/* 8e0c: 8dc1fffc */ lw $at,-0x4($t6) -/* 8e10: 15d8fff8 */ bne $t6,$t8,.L00008df4 -/* 8e14: ada1fffc */ sw $at,-0x4($t5) -/* 8e18: 8dc10000 */ lw $at,0x0($t6) -/* 8e1c: 8dd80004 */ lw $t8,0x4($t6) -/* 8e20: 3c088006 */ lui $t0,%hi(var8005d1f0) -/* 8e24: 2508d1f0 */ addiu $t0,$t0,%lo(var8005d1f0) -/* 8e28: 250a0060 */ addiu $t2,$t0,0x60 -/* 8e2c: 27b902f8 */ addiu $t9,$sp,0x2f8 -/* 8e30: ada10000 */ sw $at,0x0($t5) -/* 8e34: adb80004 */ sw $t8,0x4($t5) -.L00008e38: -/* 8e38: 8d010000 */ lw $at,0x0($t0) -/* 8e3c: 2508000c */ addiu $t0,$t0,0xc -/* 8e40: 2739000c */ addiu $t9,$t9,0xc -/* 8e44: af21fff4 */ sw $at,-0xc($t9) -/* 8e48: 8d01fff8 */ lw $at,-0x8($t0) -/* 8e4c: af21fff8 */ sw $at,-0x8($t9) -/* 8e50: 8d01fffc */ lw $at,-0x4($t0) -/* 8e54: 150afff8 */ bne $t0,$t2,.L00008e38 -/* 8e58: af21fffc */ sw $at,-0x4($t9) -/* 8e5c: 8d010000 */ lw $at,0x0($t0) -/* 8e60: 8d0a0004 */ lw $t2,0x4($t0) -/* 8e64: 3c0c8006 */ lui $t4,%hi(var8005d258) -/* 8e68: 258cd258 */ addiu $t4,$t4,%lo(var8005d258) -/* 8e6c: 25980084 */ addiu $t8,$t4,0x84 -/* 8e70: 27ab0270 */ addiu $t3,$sp,0x270 -/* 8e74: af210000 */ sw $at,0x0($t9) -/* 8e78: af2a0004 */ sw $t2,0x4($t9) -.L00008e7c: -/* 8e7c: 8d810000 */ lw $at,0x0($t4) -/* 8e80: 258c000c */ addiu $t4,$t4,0xc -/* 8e84: 256b000c */ addiu $t3,$t3,0xc -/* 8e88: ad61fff4 */ sw $at,-0xc($t3) -/* 8e8c: 8d81fff8 */ lw $at,-0x8($t4) -/* 8e90: ad61fff8 */ sw $at,-0x8($t3) -/* 8e94: 8d81fffc */ lw $at,-0x4($t4) -/* 8e98: 1598fff8 */ bne $t4,$t8,.L00008e7c -/* 8e9c: ad61fffc */ sw $at,-0x4($t3) -/* 8ea0: 8d810000 */ lw $at,0x0($t4) -/* 8ea4: 3c0d8006 */ lui $t5,%hi(var8005d2e0) -/* 8ea8: 25add2e0 */ addiu $t5,$t5,%lo(var8005d2e0) -/* 8eac: 25aa0024 */ addiu $t2,$t5,0x24 -/* 8eb0: 27ae0248 */ addiu $t6,$sp,0x248 -/* 8eb4: ad610000 */ sw $at,0x0($t3) -.L00008eb8: -/* 8eb8: 8da10000 */ lw $at,0x0($t5) -/* 8ebc: 25ad000c */ addiu $t5,$t5,0xc -/* 8ec0: 25ce000c */ addiu $t6,$t6,0xc -/* 8ec4: adc1fff4 */ sw $at,-0xc($t6) -/* 8ec8: 8da1fff8 */ lw $at,-0x8($t5) -/* 8ecc: adc1fff8 */ sw $at,-0x8($t6) -/* 8ed0: 8da1fffc */ lw $at,-0x4($t5) -/* 8ed4: 15aafff8 */ bne $t5,$t2,.L00008eb8 -/* 8ed8: adc1fffc */ sw $at,-0x4($t6) -/* 8edc: 8da10000 */ lw $at,0x0($t5) -/* 8ee0: 3c088006 */ lui $t0,%hi(var8005d308) -/* 8ee4: 2508d308 */ addiu $t0,$t0,%lo(var8005d308) -/* 8ee8: 250f0084 */ addiu $t7,$t0,0x84 -/* 8eec: 0040c025 */ or $t8,$v0,$zero -/* 8ef0: adc10000 */ sw $at,0x0($t6) -.L00008ef4: -/* 8ef4: 8d010000 */ lw $at,0x0($t0) -/* 8ef8: 2508000c */ addiu $t0,$t0,0xc -/* 8efc: 2718000c */ addiu $t8,$t8,0xc -/* 8f00: af01fff4 */ sw $at,-0xc($t8) -/* 8f04: 8d01fff8 */ lw $at,-0x8($t0) -/* 8f08: af01fff8 */ sw $at,-0x8($t8) -/* 8f0c: 8d01fffc */ lw $at,-0x4($t0) -/* 8f10: 150ffff8 */ bne $t0,$t7,.L00008ef4 -/* 8f14: af01fffc */ sw $at,-0x4($t8) -/* 8f18: 8d010000 */ lw $at,0x0($t0) -/* 8f1c: 3c0c8006 */ lui $t4,%hi(var8005d390) -/* 8f20: 258cd390 */ addiu $t4,$t4,%lo(var8005d390) -/* 8f24: 25890024 */ addiu $t1,$t4,0x24 -/* 8f28: 00a05025 */ or $t2,$a1,$zero -/* 8f2c: af010000 */ sw $at,0x0($t8) -.L00008f30: -/* 8f30: 8d810000 */ lw $at,0x0($t4) -/* 8f34: 258c000c */ addiu $t4,$t4,0xc -/* 8f38: 254a000c */ addiu $t2,$t2,0xc -/* 8f3c: ad41fff4 */ sw $at,-0xc($t2) -/* 8f40: 8d81fff8 */ lw $at,-0x8($t4) -/* 8f44: ad41fff8 */ sw $at,-0x8($t2) -/* 8f48: 8d81fffc */ lw $at,-0x4($t4) -/* 8f4c: 1589fff8 */ bne $t4,$t1,.L00008f30 -/* 8f50: ad41fffc */ sw $at,-0x4($t2) -/* 8f54: 8d810000 */ lw $at,0x0($t4) -/* 8f58: 3c0d8006 */ lui $t5,%hi(var8005d3b8) -/* 8f5c: 25add3b8 */ addiu $t5,$t5,%lo(var8005d3b8) -/* 8f60: 25b90108 */ addiu $t9,$t5,0x108 -/* 8f64: 00607825 */ or $t7,$v1,$zero -/* 8f68: ad410000 */ sw $at,0x0($t2) -.L00008f6c: -/* 8f6c: 8da10000 */ lw $at,0x0($t5) -/* 8f70: 25ad000c */ addiu $t5,$t5,0xc -/* 8f74: 25ef000c */ addiu $t7,$t7,0xc -/* 8f78: ade1fff4 */ sw $at,-0xc($t7) -/* 8f7c: 8da1fff8 */ lw $at,-0x8($t5) -/* 8f80: ade1fff8 */ sw $at,-0x8($t7) -/* 8f84: 8da1fffc */ lw $at,-0x4($t5) -/* 8f88: 15b9fff8 */ bne $t5,$t9,.L00008f6c -/* 8f8c: ade1fffc */ sw $at,-0x4($t7) -/* 8f90: 3c088006 */ lui $t0,%hi(var8005d4c0) -/* 8f94: 2508d4c0 */ addiu $t0,$t0,%lo(var8005d4c0) -/* 8f98: 250b0024 */ addiu $t3,$t0,0x24 -/* 8f9c: 00c04825 */ or $t1,$a2,$zero -.L00008fa0: -/* 8fa0: 8d010000 */ lw $at,0x0($t0) -/* 8fa4: 2508000c */ addiu $t0,$t0,0xc -/* 8fa8: 2529000c */ addiu $t1,$t1,0xc -/* 8fac: ad21fff4 */ sw $at,-0xc($t1) -/* 8fb0: 8d01fff8 */ lw $at,-0x8($t0) -/* 8fb4: ad21fff8 */ sw $at,-0x8($t1) -/* 8fb8: 8d01fffc */ lw $at,-0x4($t0) -/* 8fbc: 150bfff8 */ bne $t0,$t3,.L00008fa0 -/* 8fc0: ad21fffc */ sw $at,-0x4($t1) -/* 8fc4: 8d010000 */ lw $at,0x0($t0) -/* 8fc8: 3c0a8006 */ lui $t2,%hi(var8005d4e8) -/* 8fcc: 254ad4e8 */ addiu $t2,$t2,%lo(var8005d4e8) -/* 8fd0: 25590024 */ addiu $t9,$t2,0x24 -/* 8fd4: 27ac0040 */ addiu $t4,$sp,0x40 -/* 8fd8: ad210000 */ sw $at,0x0($t1) -.L00008fdc: -/* 8fdc: 8d410000 */ lw $at,0x0($t2) -/* 8fe0: 254a000c */ addiu $t2,$t2,0xc -/* 8fe4: 258c000c */ addiu $t4,$t4,0xc -/* 8fe8: ad81fff4 */ sw $at,-0xc($t4) -/* 8fec: 8d41fff8 */ lw $at,-0x8($t2) -/* 8ff0: ad81fff8 */ sw $at,-0x8($t4) -/* 8ff4: 8d41fffc */ lw $at,-0x4($t2) -/* 8ff8: 1559fff8 */ bne $t2,$t9,.L00008fdc -/* 8ffc: ad81fffc */ sw $at,-0x4($t4) -/* 9000: 8d410000 */ lw $at,0x0($t2) -/* 9004: ad810000 */ sw $at,0x0($t4) -/* 9008: 92ad0000 */ lbu $t5,0x0($s5) -/* 900c: 8fa705c0 */ lw $a3,0x5c0($sp) -/* 9010: 568d0004 */ bnel $s4,$t5,.L00009024 -/* 9014: 8fa705c0 */ lw $a3,0x5c0($sp) -/* 9018: 10000003 */ b .L00009028 -/* 901c: ace20020 */ sw $v0,0x20($a3) -/* 9020: 8fa705c0 */ lw $a3,0x5c0($sp) -.L00009024: -/* 9024: ace30020 */ sw $v1,0x20($a3) -.L00009028: -/* 9028: 3c048009 */ lui $a0,%hi(var80094ea8) -/* 902c: 24844ea8 */ addiu $a0,$a0,%lo(var80094ea8) -/* 9030: 8c820000 */ lw $v0,0x0($a0) -/* 9034: 28410002 */ slti $at,$v0,0x2 -/* 9038: 14200010 */ bnez $at,.L0000907c -/* 903c: 28410002 */ slti $at,$v0,0x2 -/* 9040: 1420000e */ bnez $at,.L0000907c -/* 9044: 02801825 */ or $v1,$s4,$zero -/* 9048: 24e20004 */ addiu $v0,$a3,0x4 -/* 904c: 92b80000 */ lbu $t8,0x0($s5) -.L00009050: -/* 9050: 56980004 */ bnel $s4,$t8,.L00009064 -/* 9054: ac460020 */ sw $a2,0x20($v0) -/* 9058: 10000002 */ b .L00009064 -/* 905c: ac450020 */ sw $a1,0x20($v0) -/* 9060: ac460020 */ sw $a2,0x20($v0) -.L00009064: -/* 9064: 8c8b0000 */ lw $t3,0x0($a0) -/* 9068: 24630001 */ addiu $v1,$v1,0x1 -/* 906c: 24420004 */ addiu $v0,$v0,0x4 -/* 9070: 006b082a */ slt $at,$v1,$t3 -/* 9074: 5420fff6 */ bnezl $at,.L00009050 -/* 9078: 92b80000 */ lbu $t8,0x0($s5) -.L0000907c: -/* 907c: 3c048009 */ lui $a0,%hi(g_AudioManager+0x2b8) -/* 9080: 24841880 */ addiu $a0,$a0,%lo(g_AudioManager+0x2b8) -/* 9084: 0c00bee8 */ jal n_alInit -/* 9088: 00e02825 */ or $a1,$a3,$zero -/* 908c: 00002025 */ or $a0,$zero,$zero -/* 9090: 0c00c2ff */ jal func00030bfc -/* 9094: 2405003c */ addiu $a1,$zero,0x3c -/* 9098: 3c088009 */ lui $t0,%hi(g_AudioSp) -/* 909c: 8d0818f0 */ lw $t0,%lo(g_AudioSp)($t0) -/* 90a0: 3c048009 */ lui $a0,%hi(g_AudioManager+0x18) -/* 90a4: 3c067001 */ lui $a2,%hi(amgrMain) -/* 90a8: 24090014 */ addiu $t1,$zero,0x14 -/* 90ac: afa90014 */ sw $t1,0x14($sp) -/* 90b0: 24c69154 */ addiu $a2,$a2,%lo(amgrMain) -/* 90b4: 248415e0 */ addiu $a0,$a0,%lo(g_AudioManager+0x18) -/* 90b8: 24050004 */ addiu $a1,$zero,0x4 -/* 90bc: 00003825 */ or $a3,$zero,$zero -/* 90c0: 0c000fb8 */ jal osCreateThread -/* 90c4: afa80010 */ sw $t0,0x10($sp) -/* 90c8: 8fbf0034 */ lw $ra,0x34($sp) -/* 90cc: 8fb0001c */ lw $s0,0x1c($sp) -/* 90d0: 8fb10020 */ lw $s1,0x20($sp) -/* 90d4: 8fb20024 */ lw $s2,0x24($sp) -/* 90d8: 8fb30028 */ lw $s3,0x28($sp) -/* 90dc: 8fb4002c */ lw $s4,0x2c($sp) -/* 90e0: 8fb50030 */ lw $s5,0x30($sp) -/* 90e4: 03e00008 */ jr $ra -/* 90e8: 27bd05c0 */ addiu $sp,$sp,0x5c0 -); +void amgrCreate(ALSynConfig *config) #endif +{ + f32 freqpertick; + s32 i; + + config->outputRate = osAiSetFrequency(22020); + config->dmaproc = func00009844; + +#if VERSION >= VERSION_PAL_FINAL + freqpertick = settings[1] * (f32)config->outputRate / 25.0f; +#else + freqpertick = config->outputRate / 30.0f; + + if (IS4MB()) { + freqpertick *= 0.5f; + } +#endif + + g_AmgrFreqPerTick = (s32)freqpertick; + + if ((f32)g_AmgrFreqPerTick < freqpertick) { + g_AmgrFreqPerTick++; + } + + g_AmgrFreqPerTick = g_AmgrFreqPerTick / 184 * 184 + 184; + var800918dc = g_AmgrFreqPerTick - 184; + var800918e4 = g_AmgrFreqPerTick + 80; + var8005cf94 = 0; + + func00009660(); + + osCreateMesgQueue(&g_AudioManager.audioReplyMsgQ, g_AudioManager.audioReplyMsgBuf, ARRAYCOUNT(g_AudioManager.audioFrameMsgBuf)); + osCreateMesgQueue(&g_AudioManager.audioFrameMsgQ, g_AudioManager.audioFrameMsgBuf, ARRAYCOUNT(g_AudioManager.audioFrameMsgBuf)); + + var800918ec = 2000; + +#if VERSION < VERSION_PAL_FINAL + if (IS4MB()) { + var800918ec >>= 1; + } +#endif + + for (i = 0; i < ARRAYCOUNT(g_AudioManager.ACMDList); i++) { + g_AudioManager.ACMDList[i] = alHeapAlloc(&g_SndHeap, 1, var800918ec * sizeof(Acmd)); + } + + for (i = 0; i < ARRAYCOUNT(g_AudioManager.audioInfo); i++) { + // @todo: Find out why AudioInfo is only 0x60 + g_AudioManager.audioInfo[i] = alHeapAlloc(&g_SndHeap, 1, 0x60); + g_AudioManager.audioInfo[i]->frameSamples = 0; + g_AudioManager.audioInfo[i]->data = alHeapAlloc(&g_SndHeap, 1, PAL ? 3688 : 1024 * 3); + } + + { + s32 sp590[] = { 0x00000001, 0x000014a0, 0x00000000, 0x00001358, 0x00004d0c, 0x00000000, 0x000053ff, 0x00000000, 0x00000000, 0x00000000 }; + s32 sp568[] = { 0x00000001, 0x000001b8, 0x00000000, 0x00000068, 0x00004000, 0x00000000, 0x00007fff, 0x00001db0, 0x00001b58, 0x00000000 }; + s32 sp540[] = { 0x00000001, 0x000001b8, 0x00000000, 0x00000068, 0x00000000, 0x00005fff, 0x00007fff, 0x0000017c, 0x000001f4, 0x00000000 }; + s32 sp478[] = { 0x00000006, 0x00001868, 0x00000000, 0x00000160, 0x00002666, 0xffffd99a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000188, 0x00000640, 0x0000235e, 0xffffd99a, 0x0000750c, 0x00000000, 0x00000000, 0x00000bca, 0x00000318, 0x000009f8, 0x00004000, 0xffffc000, 0x00006d78, 0x00000000, 0x00000000, 0x00001286, 0x00000c78, 0x000015d8, 0x0000521a, 0xffffc000, 0x0000724f, 0x00000000, 0x00000000, 0x00001650, 0x00000d28, 0x000012c0, 0x00002143, 0xffffe000, 0x00005de4, 0x00000000, 0x00000000, 0x00002286, 0x00000000, 0x00001720, 0x000032c8, 0xffffcd38, 0x00000000, 0x00000000, 0x00000000, 0x00004500 }; + s32 sp430[] = { 0x00000002, 0x000008b0, 0x00000600, 0x00000760, 0x00007142, 0x00000000, 0x00005bff, 0x00000000, 0x00000000, 0x00007bc9, 0x00000000, 0x00000528, 0x00005f27, 0xffffb288, 0x00007ef1, 0x00000000, 0x00000001, 0x000066bb }; + s32 sp3c8[] = { 0x00000003, 0x00000b40, 0x00000000, 0x00000160, 0x00002666, 0xffffd99a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000188, 0x00000640, 0x0000235e, 0xffffd99a, 0x000016f2, 0x00000000, 0x00000000, 0x00000bca, 0x00000318, 0x000009f8, 0x00004000, 0xffffc000, 0x0000186b, 0x00000000, 0x00000000, 0x00001286 }; + s32 sp360[] = { 0x00000003, 0x00000b40, 0x00000000, 0x00000160, 0x00002666, 0xffffd99a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000188, 0x00000640, 0x0000235e, 0xffffd99a, 0x000016f2, 0x00000000, 0x00000000, 0x00000bca, 0x00000318, 0x000009f8, 0x00004000, 0xffffc000, 0x0000186b, 0x00000000, 0x00000000, 0x00001286 }; + s32 sp2f8[] = { 0x00000003, 0x00000898, 0x00000000, 0x000004a0, 0x00002666, 0xffffd99a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001a0, 0x00000340, 0x00000ccc, 0xfffff334, 0x00003fff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000528, 0x00001388, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00005000 }; + s32 sp270[] = { 0x00000004, 0x00000898, 0x00000000, 0x000005a8, 0x00002666, 0xffffd99a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001e0, 0x000004a0, 0x00000ccc, 0xfffff334, 0x00003fff, 0x00000000, 0x00000000, 0x00000000, 0x000005a8, 0x000007d0, 0x00000ccc, 0xfffff334, 0x00003fff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000810, 0x00001f40, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00005000 }; + s32 sp248[] = { 0x00000001, 0x00001130, 0x00000000, 0x00000f60, 0x00002ee0, 0x00000000, 0x00007fff, 0x00000000, 0x00000000, 0x00000000 }; + s32 sp1c0[] = { 0x00000004, 0x00000e98, 0x000000c0, 0x00000188, 0x00002666, 0xffffd99a, 0x00003484, 0x00000000, 0x00000000, 0x00000000, 0x000001b8, 0x00000580, 0x00004000, 0xffffc000, 0x000019eb, 0x00000000, 0x00000000, 0x00000000, 0x00000a50, 0x00000b98, 0x00002000, 0xffffe000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000cb8, 0x00004650, 0xffffb9b0, 0x00000000, 0x0000017c, 0x0000000a, 0x00000000 }; + s32 sp198[] = { 0x00000001, 0x00000528, 0x00000000, 0x00000448, 0x00003334, 0x00000000, 0x00007335, 0x00000000, 0x00000000, 0x00000000 }; + s32 sp090[] = { 0x00000008, 0x00001b80, 0x00000000, 0x000000c0, 0x00002666, 0xffffd99a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000c0, 0x00000188, 0x00002666, 0xffffd99a, 0x00002b84, 0x00000000, 0x00000000, 0x00000000, 0x00000370, 0x00000b00, 0x00004000, 0xffffc000, 0x000011eb, 0x00000000, 0x00000000, 0x00000000, 0x00000420, 0x00000840, 0x00002000, 0xffffe000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000dc0, 0x00001810, 0x00004000, 0xffffc000, 0x000011eb, 0x00000000, 0x00000000, 0x00000000, 0x00000e70, 0x000014a0, 0x00002000, 0xffffe000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000014a0, 0x00001738, 0x00002000, 0xffffe000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001970, 0x000032c8, 0xffffcd38, 0x00000000, 0x0000017c, 0x0000000a, 0x00000000 }; + s32 sp068[] = { 0x00000001, 0x00000a50, 0x00000000, 0x00000898, 0x00003334, 0x00000000, 0x00007335, 0x00000000, 0x00000000, 0x00000000 }; + s32 sp040[] = { 0x00000001, 0x00000148, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }; + + config->params[0] = (s32 *) (IS4MB() ? sp1c0 : sp090); + + if (g_SndMaxFxBusses >= 2) { + for (i = 1; i < g_SndMaxFxBusses; i++) { + config->params[i] = (s32 *) (IS4MB() ? sp198 : sp068); + } + } + } + + n_alInit(&g_AudioManager.g, config); + func00030bfc(0, 60); + osCreateThread(&g_AudioManager.thread, THREAD_AUDIO, &amgrMain, 0, g_AudioSp, THREADPRI_AUDIO); +} + +s8 g_AudioIsThreadRunning = false; void amgrStartThread(void) { @@ -1422,7 +255,7 @@ void amgrHandleFrameMsg(AudioInfo *info, AudioInfo *previnfo) info->frameSamples = var800918dc; var8005cf94 = 2; } else { - info->frameSamples = var800918e0; + info->frameSamples = g_AmgrFreqPerTick; if (var8005cf94 != 0) { var8005cf94--; diff --git a/src/lib/snd.c b/src/lib/snd.c index e9f9d5387..5ded72202 100644 --- a/src/lib/snd.c +++ b/src/lib/snd.c @@ -36,7 +36,7 @@ struct var80094eb0 { s32 g_NumSounds; u32 *g_ALSoundRomOffsets; -s32 var80094ea8; +s32 g_SndMaxFxBusses; u32 var80094eac; struct var80094eb0 var80094eb0; u32 var80094ecc; @@ -1711,7 +1711,7 @@ void sndSetSoundMode(s32 mode) speaker00034104(0, 4); - for (i = 1; i < var80094ea8; i++) { + for (i = 1; i < g_SndMaxFxBusses; i++) { switch (mode) { case SOUNDMODE_STEREO: case SOUNDMODE_HEADPHONE: @@ -2087,7 +2087,7 @@ void sndInit(void) g_Vars.langfilteron = false; if (IS4MB()) { - var80094ea8 = 1; + g_SndMaxFxBusses = 1; #if VERSION >= VERSION_PAL_FINAL heaplen -= 1024 * 6; @@ -2101,7 +2101,7 @@ void sndInit(void) g_SndMp3Enabled = false; } else { g_SndMp3Enabled = true; - var80094ea8 = 2; + g_SndMaxFxBusses = 2; if (argFindByPrefix(1, "-nomp3")) { g_SndMp3Enabled = false; @@ -2113,7 +2113,7 @@ void sndInit(void) // clear it and give it to the audio library ALSynConfig synconfig; #if VERSION >= VERSION_PAL_FINAL - u32 sp58[3]; + u32 settings[3]; #endif u8 *ptr = malloc(heaplen, MEMPOOL_PERMANENT); u32 len = &_seqctlSegmentRomEnd - &_seqctlSegmentRomStart; @@ -2168,9 +2168,9 @@ void sndInit(void) synconfig.dmaproc = NULL; synconfig.outputRate = 0; synconfig.heap = &g_SndHeap; - synconfig.maxFXbusses = var80094ea8; + synconfig.maxFXbusses = g_SndMaxFxBusses; - for (i = 0; i < var80094ea8; i++) { + for (i = 0; i < g_SndMaxFxBusses; i++) { synconfig.fxTypes[i] = 6; } @@ -2181,11 +2181,11 @@ void sndInit(void) sp7c[3] = (u32) &g_SndHeap; #if VERSION >= VERSION_PAL_FINAL - sp58[0] = 22020; - sp58[1] = 1; - sp58[2] = 2000; + settings[0] = 22020; + settings[1] = 1; + settings[2] = 2000; - amgrCreate(&synconfig, &sp58); + amgrCreate(&synconfig, settings); #else amgrCreate(&synconfig); #endif