diff options
-rw-r--r-- | arm9/asm/unk_020040F4.s | 2288 | ||||
-rw-r--r-- | arm9/src/scrcmd_sound.c | 7 | ||||
-rw-r--r-- | arm9/src/sound.c | 4 | ||||
-rw-r--r-- | arm9/src/unk_020040F4.c | 1365 | ||||
-rw-r--r-- | arm9/src/unk_0204AEA8.c | 2 | ||||
-rw-r--r-- | include/unk_020040F4.h | 111 |
6 files changed, 1479 insertions, 2298 deletions
diff --git a/arm9/asm/unk_020040F4.s b/arm9/asm/unk_020040F4.s deleted file mode 100644 index cfd9551f..00000000 --- a/arm9/asm/unk_020040F4.s +++ /dev/null @@ -1,2288 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - .global UNK_021C3DD8 -UNK_021C3DD8: ; 0x021C3DD8 - .space 0x8 - - .global UNK_021C3DE0 -UNK_021C3DE0: ; 0x021C3DE0 - .space 0x7d0 - - .section .rodata - - .global UNK_020ECB8C -UNK_020ECB8C: ; 0x020ECB8C - .byte 2, 3, 4, 5, 6, 7, 8, 9, 10 - - .text - - thumb_func_start FUN_020040F4 -FUN_020040F4: ; 0x020040F4 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x5 - bl FUN_02003D38 - strb r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004104 -FUN_02004104: ; 0x02004104 - push {r3, lr} - mov r0, #0x5 - bl FUN_02003D38 - ldrb r0, [r0, #0x0] - pop {r3, pc} - - thumb_func_start FUN_02004110 -FUN_02004110: ; 0x02004110 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x9 - bl FUN_02003D38 - strh r4, [r0, #0x0] - mov r0, #0x0 - bl FUN_02004130 - pop {r4, pc} - - thumb_func_start FUN_02004124 -FUN_02004124: ; 0x02004124 - push {r3, lr} - mov r0, #0x9 - bl FUN_02003D38 - ldrh r0, [r0, #0x0] - pop {r3, pc} - - thumb_func_start FUN_02004130 -FUN_02004130: ; 0x02004130 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0xa - bl FUN_02003D38 - strh r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004140 -FUN_02004140: ; 0x02004140 - push {r3, lr} - mov r0, #0xa - bl FUN_02003D38 - ldrh r0, [r0, #0x0] - pop {r3, pc} - - thumb_func_start FUN_0200414C -FUN_0200414C: ; 0x0200414C - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x1f - bl FUN_02003D38 - strh r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200415C -FUN_0200415C: ; 0x0200415C - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x14 - bl FUN_02003D38 - add r4, r0, #0x0 - mov r0, #0x15 - bl FUN_02003D38 - cmp r5, #0x33 - bhs _0200417A - strb r5, [r4, #0x0] - mov r1, #0x0 - strb r1, [r0, #0x0] - pop {r3-r5, pc} -_0200417A: - strb r5, [r0, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02004180 -FUN_02004180: ; 0x02004180 - push {r3, lr} - cmp r0, #0x39 - bgt _020041DE - blt _0200418A - b _020042C8 -_0200418A: - cmp r0, #0x35 - bgt _020041CC - blt _02004192 - b _0200429A -_02004192: - cmp r0, #0x33 - bgt _020041C6 - bge _0200427C - cmp r0, #0xe - bhi _020041CA - add r2, r0, r0 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_020041A8: ; jump table (using 16-bit offset) - .short _0200432C - _020041A8 - 2; case 0 - .short _02004222 - _020041A8 - 2; case 1 - .short _0200422C - _020041A8 - 2; case 2 - .short _02004236 - _020041A8 - 2; case 3 - .short _02004240 - _020041A8 - 2; case 4 - .short _0200424A - _020041A8 - 2; case 5 - .short _0200425E - _020041A8 - 2; case 6 - .short _0200429A - _020041A8 - 2; case 7 - .short _02004268 - _020041A8 - 2; case 8 - .short _02004222 - _020041A8 - 2; case 9 - .short _02004222 - _020041A8 - 2; case 10 - .short _02004254 - _020041A8 - 2; case 11 - .short _02004272 - _020041A8 - 2; case 12 - .short _0200422C - _020041A8 - 2; case 13 - .short _02004222 - _020041A8 - 2; case 14 -_020041C6: - cmp r0, #0x34 - beq _02004290 -_020041CA: - b _0200432C -_020041CC: - cmp r0, #0x37 - bgt _020041D8 - bge _020042AE - cmp r0, #0x36 - beq _020042A4 - b _0200432C -_020041D8: - cmp r0, #0x38 - beq _020042BE - b _0200432C -_020041DE: - cmp r0, #0x3d - bgt _020041F8 - blt _020041E6 - b _020042F0 -_020041E6: - cmp r0, #0x3b - bgt _020041F2 - bge _020042DC - cmp r0, #0x3a - beq _020042D2 - b _0200432C -_020041F2: - cmp r0, #0x3c - beq _020042E6 - b _0200432C -_020041F8: - cmp r0, #0x3f - bgt _02004206 - blt _02004200 - b _02004304 -_02004200: - cmp r0, #0x3e - beq _020042FA - b _0200432C -_02004206: - sub r0, #0x40 - cmp r0, #0x3 - bls _0200420E - b _0200432C -_0200420E: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0200421A: ; jump table (using 16-bit offset) - .short _0200430E - _0200421A - 2; case 0 - .short _0200431E - _0200421A - 2; case 1 - .short _02004286 - _0200421A - 2; case 2 - .short _020042AE - _0200421A - 2; case 3 -_02004222: - mov r0, #0x1 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_0200422C: - mov r0, #0x2 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004236: - mov r0, #0xd - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004240: - mov r0, #0x1 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_0200424A: - mov r0, #0x2 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004254: - mov r0, #0x1 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_0200425E: - mov r0, #0xb - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004268: - mov r0, #0x1 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004272: - mov r0, #0xe - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_0200427C: - mov r0, #0x3 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004286: - mov r0, #0x6 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004290: - mov r0, #0x5 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_0200429A: - mov r0, #0x9 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042A4: - mov r0, #0xa - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042AE: - ldr r0, _02004330 ; =0x000005E5 - bl GF_Snd_LoadBank - ldr r0, _02004330 ; =0x000005E5 - bl GF_Snd_LoadWaveArc - add r1, r0, #0x0 - b _0200432C -_020042BE: - mov r0, #0xc - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042C8: - mov r0, #0x7 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042D2: - mov r0, #0x8 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042DC: - mov r0, #0xf - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042E6: - mov r0, #0x3 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042F0: - mov r0, #0x5 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_020042FA: - mov r0, #0xf - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_02004304: - mov r0, #0x4 - bl GF_Snd_LoadGroup - add r1, r0, #0x0 - b _0200432C -_0200430E: - ldr r0, _02004334 ; =0x000005ED - bl GF_Snd_LoadBank - ldr r0, _02004334 ; =0x000005ED - bl GF_Snd_LoadWaveArc - add r1, r0, #0x0 - b _0200432C -_0200431E: - ldr r0, _02004338 ; =0x000005EC - bl GF_Snd_LoadBank - ldr r0, _02004338 ; =0x000005EC - bl GF_Snd_LoadWaveArc - add r1, r0, #0x0 -_0200432C: - add r0, r1, #0x0 - pop {r3, pc} - .balign 4 -_02004330: .word 0x000005E5 -_02004334: .word 0x000005ED -_02004338: .word 0x000005EC - - thumb_func_start FUN_0200433C -FUN_0200433C: ; 0x0200433C - push {r3-r7, lr} - sub sp, #0x8 - add r4, r0, #0x0 - mov r0, #0x14 - add r5, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02003D38 - str r0, [sp, #0x0] - mov r0, #0x15 - bl FUN_02003D38 - str r0, [sp, #0x4] - mov r0, #0xd - bl FUN_02003D38 - add r7, r0, #0x0 - cmp r4, #0x33 - bhs _02004370 - ldr r0, [sp, #0x0] - ldrb r0, [r0, #0x0] - cmp r0, r4 - bne _0200437E - add sp, #0x8 - mov r0, #0x0 - pop {r3-r7, pc} -_02004370: - ldr r0, [sp, #0x4] - ldrb r0, [r0, #0x0] - cmp r0, r4 - bne _0200437E - add sp, #0x8 - mov r0, #0x0 - pop {r3-r7, pc} -_0200437E: - add r0, r4, #0x0 - bl FUN_0200415C - cmp r4, #0x39 - bgt _020043DC - bge _02004458 - cmp r4, #0x35 - bgt _020043CA - bge _02004458 - cmp r4, #0x33 - bgt _020043C4 - bge _02004458 - cmp r4, #0xe - bhi _020043C8 - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020043A6: ; jump table (using 16-bit offset) - .short _020044A0 - _020043A6 - 2; case 0 - .short _02004460 - _020043A6 - 2; case 1 - .short _02004484 - _020043A6 - 2; case 2 - .short _02004496 - _020043A6 - 2; case 3 - .short _0200441C - _020043A6 - 2; case 4 - .short _02004430 - _020043A6 - 2; case 5 - .short _02004444 - _020043A6 - 2; case 6 - .short _0200444E - _020043A6 - 2; case 7 - .short _02004496 - _020043A6 - 2; case 8 - .short _02004496 - _020043A6 - 2; case 9 - .short _02004496 - _020043A6 - 2; case 10 - .short _0200443A - _020043A6 - 2; case 11 - .short _02004496 - _020043A6 - 2; case 12 - .short _02004496 - _020043A6 - 2; case 13 - .short _02004472 - _020043A6 - 2; case 14 -_020043C4: - cmp r4, #0x34 - beq _02004458 -_020043C8: - b _020044A0 -_020043CA: - cmp r4, #0x37 - bgt _020043D6 - bge _02004458 - cmp r4, #0x36 - beq _02004458 - b _020044A0 -_020043D6: - cmp r4, #0x38 - beq _02004458 - b _020044A0 -_020043DC: - cmp r4, #0x3d - bgt _020043F4 - bge _02004458 - cmp r4, #0x3b - bgt _020043EE - bge _02004458 - cmp r4, #0x3a - beq _02004458 - b _020044A0 -_020043EE: - cmp r4, #0x3c - beq _02004458 - b _020044A0 -_020043F4: - cmp r4, #0x3f - bgt _02004400 - bge _02004458 - cmp r4, #0x3e - beq _02004458 - b _020044A0 -_02004400: - add r0, r4, #0x0 - sub r0, #0x40 - cmp r0, #0x3 - bhi _020044A0 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02004414: ; jump table (using 16-bit offset) - .short _02004458 - _02004414 - 2; case 0 - .short _02004458 - _02004414 - 2; case 1 - .short _02004458 - _02004414 - 2; case 2 - .short _02004458 - _02004414 - 2; case 3 -_0200441C: - mov r0, #0x0 - bl FUN_0200516C - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_020044D4 - mov r0, #0x0 - strh r0, [r7, #0x0] - b _020044A0 -_02004430: - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02004648 - b _020044A0 -_0200443A: - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02004680 - b _020044A0 -_02004444: - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_020046A0 - b _020044A0 -_0200444E: - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_020046C4 - b _020044A0 -_02004458: - add r0, r4, #0x0 - bl FUN_020046E8 - b _020044A0 -_02004460: - mov r0, #0x1 - bl FUN_0200516C - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl FUN_02004704 - b _020044A0 -_02004472: - mov r0, #0x2 - bl FUN_0200516C - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl FUN_02004704 - b _020044A0 -_02004484: - mov r0, #0x0 - bl FUN_0200516C - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl FUN_02004704 - b _020044A0 -_02004496: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl FUN_02004704 -_020044A0: - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020044A8 -FUN_020044A8: ; 0x020044A8 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x17 - bl FUN_02003D38 - ldr r0, [r0, #0x0] - bl GF_Snd_RestoreState - mov r0, #0x18 - bl FUN_02003D38 - bl GF_Snd_SaveState - add r0, r4, #0x0 - bl FUN_02004180 - mov r0, #0x19 - bl FUN_02003D38 - bl GF_Snd_SaveState - pop {r4, pc} - - thumb_func_start FUN_020044D4 -FUN_020044D4: ; 0x020044D4 - push {r4-r6, lr} - add r5, r0, #0x0 - mov r0, #0xb - bl FUN_02003D38 - add r6, r0, #0x0 - mov r0, #0x17 - bl FUN_02003D38 - mov r0, #0x1f - bl FUN_02003D38 - mov r0, #0x0 - bl FUN_02003FF4 - bl FUN_020048EC - add r4, r0, #0x0 - ldrb r0, [r6, #0x0] - cmp r0, #0x0 - bne _0200450E - cmp r4, r5 - bne _0200450E - bl FUN_02004140 - mov r1, #0x12 - lsl r1, r1, #0x6 - cmp r0, r1 - bne _02004566 -_0200450E: - mov r0, #0x1 - bl FUN_02004DBC - bl FUN_02005454 - cmp r4, r5 - beq _02004528 - mov r0, #0x1 - mov r1, #0x0 - bl FUN_020047C8 - bl FUN_0200541C -_02004528: - ldrb r0, [r6, #0x0] - cmp r0, #0x1 - bne _02004560 - mov r0, #0x2 - bl FUN_02004748 - bl GF_Snd_RestoreState - mov r0, #0x4 - bl FUN_02004180 - mov r0, #0x19 - bl FUN_02003D38 - bl GF_Snd_SaveState - cmp r4, r5 - beq _02004554 - mov r0, #0x1 - mov r1, #0x0 - bl FUN_020047C8 -_02004554: - lsl r1, r4, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl FUN_02004568 - pop {r4-r6, pc} -_02004560: - add r0, r5, #0x0 - bl FUN_0200521C -_02004566: - pop {r4-r6, pc} - - thumb_func_start FUN_02004568 -FUN_02004568: ; 0x02004568 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x1f - bl FUN_02003D38 - add r4, r0, #0x0 - ldrh r0, [r4, #0x0] - bl FUN_02004900 - ldr r1, _020045C0 ; =0x000003E9 - cmp r0, r1 - beq _02004594 - add r1, r1, #0x2 - cmp r0, r1 - beq _02004594 - add r0, r5, #0x0 - mov r1, #0x4 - bl GF_Snd_LoadSeqEx - bl GF_AssertFail - b _0200459C -_02004594: - ldrh r0, [r4, #0x0] - mov r1, #0x6 - bl GF_Snd_LoadSeqEx -_0200459C: - mov r0, #0x1a - bl FUN_02003D38 - bl GF_Snd_SaveState - mov r0, #0x1 - mov r1, #0x0 - bl FUN_020047C8 - mov r0, #0x7f - mov r1, #0x28 - mov r2, #0x0 - bl FUN_0200538C - mov r0, #0x0 - bl FUN_02004DBC - pop {r3-r5, pc} - .balign 4 -_020045C0: .word 0x000003E9 - - thumb_func_start FUN_020045C4 -FUN_020045C4: ; 0x020045C4 - push {r3-r7, lr} - add r7, r0, #0x0 - mov r0, #0x12 - add r5, r1, #0x0 - bl FUN_02003D38 - add r6, r0, #0x0 - mov r0, #0x1f - bl FUN_02003D38 - add r4, r0, #0x0 - ldrb r0, [r6, #0x0] - cmp r0, #0x1 - beq _020045E4 - cmp r5, #0x0 - bne _02004642 -_020045E4: - mov r0, #0x1 - bl FUN_02004748 - bl GF_Snd_RestoreState - ldrh r0, [r4, #0x0] - mov r1, #0x2 - bl GF_Snd_LoadSeqEx - mov r0, #0x18 - bl FUN_02003D38 - bl GF_Snd_SaveState - mov r0, #0x4 - bl FUN_02004180 - mov r0, #0x19 - bl FUN_02003D38 - bl GF_Snd_SaveState - ldrh r0, [r4, #0x0] - bl FUN_02004900 - ldr r1, _02004644 ; =0x000003E9 - cmp r0, r1 - beq _02004630 - add r1, r1, #0x2 - cmp r0, r1 - beq _02004630 - add r0, r7, #0x0 - mov r1, #0x4 - bl GF_Snd_LoadSeqEx - bl GF_AssertFail - b _02004638 -_02004630: - ldrh r0, [r4, #0x0] - mov r1, #0x4 - bl GF_Snd_LoadSeqEx -_02004638: - mov r0, #0x1a - bl FUN_02003D38 - bl GF_Snd_SaveState -_02004642: - pop {r3-r7, pc} - .balign 4 -_02004644: .word 0x000003E9 - - thumb_func_start FUN_02004648 -FUN_02004648: ; 0x02004648 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x17 - bl FUN_02003D38 - bl FUN_020051AC - mov r0, #0x2 - bl FUN_02004748 - bl GF_Snd_RestoreState - mov r0, #0x5 - bl FUN_02004180 - mov r0, #0x19 - bl FUN_02003D38 - bl GF_Snd_SaveState - mov r0, #0x1 - bl FUN_02004DBC - add r0, r4, #0x0 - bl FUN_0200521C - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004680 -FUN_02004680: ; 0x02004680 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x17 - bl FUN_02003D38 - bl FUN_0200541C - bl FUN_02004810 - mov r0, #0x4 - bl FUN_020044A8 - add r0, r4, #0x0 - bl FUN_0200521C - pop {r4, pc} - - thumb_func_start FUN_020046A0 -FUN_020046A0: ; 0x020046A0 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x17 - bl FUN_02003D38 - bl FUN_0200541C - mov r0, #0x6 - bl FUN_020044A8 - mov r0, #0x1 - bl FUN_02004DBC - add r0, r4, #0x0 - bl FUN_0200521C - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020046C4 -FUN_020046C4: ; 0x020046C4 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x17 - bl FUN_02003D38 - bl FUN_0200541C - mov r0, #0x7 - bl FUN_020044A8 - mov r0, #0x1 - bl FUN_02004DBC - add r0, r4, #0x0 - bl FUN_0200521C - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020046E8 -FUN_020046E8: ; 0x020046E8 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02004738 - add r0, r4, #0x0 - bl FUN_02004180 - mov r0, #0x1b - bl FUN_02003D38 - bl GF_Snd_SaveState - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004704 -FUN_02004704: ; 0x02004704 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x17 - add r4, r1, #0x0 - bl FUN_02003D38 - bl FUN_0200541C - add r0, r5, #0x0 - bl FUN_020044A8 - add r0, r4, #0x0 - bl FUN_0200521C - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02004724 -FUN_02004724: ; 0x02004724 - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - bl FUN_020051AC - add r0, r4, #0x0 - bl FUN_0200521C - pop {r4, pc} - - thumb_func_start FUN_02004738 -FUN_02004738: ; 0x02004738 - push {r3, lr} - mov r0, #0x4 - bl FUN_02004748 - bl GF_Snd_RestoreState - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02004748 -FUN_02004748: ; 0x02004748 - push {r3-r5, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - cmp r4, #0x7 - blt _02004762 - bl GF_AssertFail - mov r0, #0x1a - bl FUN_02003D38 - ldr r0, [r0, #0x0] - pop {r3-r5, pc} -_02004762: - cmp r4, #0x6 - bhi _020047C4 - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02004772: ; jump table (using 16-bit offset) - .short _02004780 - _02004772 - 2; case 0 - .short _0200478A - _02004772 - 2; case 1 - .short _02004794 - _02004772 - 2; case 2 - .short _0200479E - _02004772 - 2; case 3 - .short _020047A8 - _02004772 - 2; case 4 - .short _020047B2 - _02004772 - 2; case 5 - .short _020047BC - _02004772 - 2; case 6 -_02004780: - mov r0, #0x16 - bl FUN_02003D38 - add r5, r0, #0x0 - b _020047C4 -_0200478A: - mov r0, #0x17 - bl FUN_02003D38 - add r5, r0, #0x0 - b _020047C4 -_02004794: - mov r0, #0x18 - bl FUN_02003D38 - add r5, r0, #0x0 - b _020047C4 -_0200479E: - mov r0, #0x19 - bl FUN_02003D38 - add r5, r0, #0x0 - b _020047C4 -_020047A8: - mov r0, #0x1a - bl FUN_02003D38 - add r5, r0, #0x0 - b _020047C4 -_020047B2: - mov r0, #0x1b - bl FUN_02003D38 - add r5, r0, #0x0 - b _020047C4 -_020047BC: - mov r0, #0x1c - bl FUN_02003D38 - add r5, r0, #0x0 -_020047C4: - ldr r0, [r5, #0x0] - pop {r3-r5, pc} - - thumb_func_start FUN_020047C8 -FUN_020047C8: ; 0x020047C8 - push {r4-r6, lr} - add r5, r1, #0x0 - cmp r0, #0x1 - bne _020047DC - mov r0, #0xb - bl FUN_02003D38 - add r6, r0, #0x0 - mov r4, #0x0 - b _020047EA -_020047DC: - cmp r0, #0x7 - bne _0200480E - mov r0, #0xc - bl FUN_02003D38 - add r6, r0, #0x0 - mov r4, #0x7 -_020047EA: - cmp r5, #0x0 - bne _02004800 - add r0, r4, #0x0 - bl FUN_02003FF4 - bl FUN_020048EC - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02004110 -_02004800: - add r0, r4, #0x0 - bl FUN_02003FF4 - add r1, r5, #0x0 - bl NNS_SndPlayerPause - strb r5, [r6, #0x0] -_0200480E: - pop {r4-r6, pc} - - thumb_func_start FUN_02004810 -FUN_02004810: ; 0x02004810 - push {r4, lr} - mov r0, #0xb - bl FUN_02003D38 - add r4, r0, #0x0 - mov r0, #0xc - bl FUN_02003D38 - mov r1, #0x0 - strb r1, [r4, #0x0] - strb r1, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_02004828 -FUN_02004828: ; 0x02004828 - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_02003FF4 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl NNS_SndPlayerMoveVolume - pop {r3-r5, pc} - - thumb_func_start FUN_0200483C -FUN_0200483C: ; 0x0200483C - push {r4, lr} - add r4, r1, #0x0 - bpl _02004844 - mov r4, #0x0 -_02004844: - cmp r4, #0x7f - ble _0200484A - mov r4, #0x7f -_0200484A: - bl FUN_02003FF4 - add r1, r4, #0x0 - bl NNS_SndPlayerSetInitialVolume - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004858 -FUN_02004858: ; 0x02004858 - push {r3-r5, lr} - add r5, r1, #0x0 - bl NNS_SndArcGetSeqParam - cmp r5, #0x1 - beq _02004868 - cmp r5, #0x8 - bne _0200486C -_02004868: - mov r4, #0x7f - b _02004872 -_0200486C: - cmp r0, #0x0 - beq _0200488A - ldrb r4, [r0, #0x2] -_02004872: - bl FUN_020313EC - cmp r0, #0x1 - bne _0200488A - add r0, r4, #0x0 - mov r1, #0x5 - bl _s32_div_f - add r1, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0200483C -_0200488A: - pop {r3-r5, pc} - - thumb_func_start FUN_0200488C -FUN_0200488C: ; 0x0200488C - push {r4, lr} - add r4, r1, #0x0 - bl FUN_020048D0 - bl FUN_02004018 - add r1, r4, #0x0 - bl FUN_0200483C - pop {r4, pc} - - thumb_func_start FUN_020048A0 -FUN_020048A0: ; 0x020048A0 - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_02003FF4 - mov r2, #0x0 - mvn r2, r2 - add r1, r5, #0x0 - add r3, r2, #0x0 - str r4, [sp, #0x0] - bl NNS_SndArcPlayerStartSeqEx - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020048BC -FUN_020048BC: ; 0x020048BC - push {r4, lr} - add r4, r0, #0x0 - bpl _020048C6 - bl GF_AssertFail -_020048C6: - add r0, r4, #0x0 - bl NNS_SndPlayerCountPlayingSeqByPlayerNo - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020048D0 -FUN_020048D0: ; 0x020048D0 - push {r3, lr} - cmp r0, #0x0 - bne _020048DA - mov r0, #0xff - pop {r3, pc} -_020048DA: - bl NNS_SndArcGetSeqParam - cmp r0, #0x0 - bne _020048E6 - mov r0, #0xff - pop {r3, pc} -_020048E6: - ldrb r0, [r0, #0x5] - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020048EC -FUN_020048EC: ; 0x020048EC - ldr r3, _020048F0 ; =NNS_SndPlayerGetSeqNo - bx r3 - .balign 4 -_020048F0: .word NNS_SndPlayerGetSeqNo - - thumb_func_start FUN_020048F4 -FUN_020048F4: ; 0x020048F4 - push {r3, lr} - bl FUN_02004900 - bl NNS_SndArcGetBankInfo - pop {r3, pc} - - thumb_func_start FUN_02004900 -FUN_02004900: ; 0x02004900 - push {r3, lr} - bl NNS_SndArcGetSeqParam - cmp r0, #0x0 - bne _0200490E - mov r0, #0x0 - pop {r3, pc} -_0200490E: - ldrh r0, [r0, #0x0] - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02004914 -FUN_02004914: ; 0x02004914 - ldr r3, _02004918 ; =MIC_StartAutoSampling - bx r3 - .balign 4 -_02004918: .word MIC_StartAutoSampling - - thumb_func_start FUN_0200491C -FUN_0200491C: ; 0x0200491C - push {r3, lr} - bl GetSoundDataPointer - bl MIC_StopAutoSampling - pop {r3, pc} - - thumb_func_start FUN_02004928 -FUN_02004928: ; 0x02004928 - push {r3, lr} - bl MIC_DoSamplingAsync - pop {r3, pc} - - thumb_func_start FUN_02004930 -FUN_02004930: ; 0x02004930 - push {r4-r6, lr} - add r5, r0, #0x0 - bl GetSoundDataPointer - mov r0, #0xf - bl FUN_02003D38 - add r6, r0, #0x0 - mov r0, #0x10 - bl FUN_02003D38 - add r4, r0, #0x0 - cmp r5, #0xe - beq _02004954 - cmp r5, #0xf - beq _02004954 - bl GF_AssertFail -_02004954: - cmp r5, #0xe - bne _02004962 - ldrb r0, [r6, #0x0] - cmp r0, #0x0 - bne _02004962 - bl GF_AssertFail -_02004962: - cmp r5, #0xf - bne _02004970 - ldrb r0, [r4, #0x0] - cmp r0, #0x0 - bne _02004970 - bl GF_AssertFail -_02004970: - cmp r5, #0xe - bne _0200497C - mov r0, #0x0 - bl FUN_02003D38 - pop {r4-r6, pc} -_0200497C: - mov r0, #0x1 - bl FUN_02003D38 - pop {r4-r6, pc} - - thumb_func_start FUN_02004984 -FUN_02004984: ; 0x02004984 - push {r4-r6, lr} - add r5, r0, #0x0 - bl GetSoundDataPointer - mov r0, #0xf - bl FUN_02003D38 - add r6, r0, #0x0 - mov r0, #0x10 - bl FUN_02003D38 - add r4, r0, #0x0 - cmp r5, #0xe - beq _020049A8 - cmp r5, #0xf - beq _020049A8 - bl GF_AssertFail -_020049A8: - cmp r5, #0xe - bne _020049D6 - ldrb r0, [r6, #0x0] - cmp r0, #0x0 - bne _020049D0 - mov r0, #0x0 - bl FUN_02003D38 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl NNS_SndWaveOutAllocChannel - str r0, [r4, #0x0] - cmp r0, #0x0 - bne _020049CA - mov r0, #0x0 - pop {r4-r6, pc} -_020049CA: - mov r0, #0x1 - strb r0, [r6, #0x0] - b _020049FE -_020049D0: - bl GF_AssertFail - b _020049FE -_020049D6: - ldrb r0, [r4, #0x0] - cmp r0, #0x0 - bne _020049FA - mov r0, #0x1 - bl FUN_02003D38 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl NNS_SndWaveOutAllocChannel - str r0, [r6, #0x0] - cmp r0, #0x0 - bne _020049F4 - mov r0, #0x0 - pop {r4-r6, pc} -_020049F4: - mov r0, #0x1 - strb r0, [r4, #0x0] - b _020049FE -_020049FA: - bl GF_AssertFail -_020049FE: - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02004A04 -FUN_02004A04: ; 0x02004A04 - push {r4-r6, lr} - add r5, r0, #0x0 - bl GetSoundDataPointer - mov r0, #0xf - bl FUN_02003D38 - add r6, r0, #0x0 - mov r0, #0x10 - bl FUN_02003D38 - add r4, r0, #0x0 - cmp r5, #0xe - beq _02004A2A - cmp r5, #0xf - beq _02004A2A - bl GF_AssertFail - pop {r4-r6, pc} -_02004A2A: - cmp r5, #0xe - bne _02004A4C - ldrb r0, [r6, #0x0] - cmp r0, #0x1 - bne _02004A46 - add r0, r5, #0x0 - bl FUN_02004930 - ldr r0, [r0, #0x0] - bl NNS_SndWaveOutFreeChannel - mov r0, #0x0 - strb r0, [r6, #0x0] - pop {r4-r6, pc} -_02004A46: - bl GF_AssertFail - pop {r4-r6, pc} -_02004A4C: - ldrb r0, [r4, #0x0] - cmp r0, #0x1 - bne _02004A64 - add r0, r5, #0x0 - bl FUN_02004930 - ldr r0, [r0, #0x0] - bl NNS_SndWaveOutFreeChannel - mov r0, #0x0 - strb r0, [r4, #0x0] - pop {r4-r6, pc} -_02004A64: - bl GF_AssertFail - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02004A6C -FUN_02004A6C: ; 0x02004A6C - push {r3-r5, lr} - sub sp, #0x18 - add r3, r0, #0x0 - ldr r0, [r3, #0x10] - add r4, r1, #0x0 - str r0, [sp, #0x0] - ldr r0, [r3, #0x14] - str r0, [sp, #0x4] - ldr r0, [r3, #0x18] - str r0, [sp, #0x8] - ldr r0, [r3, #0x1c] - str r0, [sp, #0xc] - ldr r0, [r3, #0x20] - str r0, [sp, #0x10] - ldr r0, [r3, #0x24] - str r0, [sp, #0x14] - ldr r0, [r3, #0x0] - ldr r1, [r3, #0x4] - ldr r2, [r3, #0x8] - ldr r0, [r0, #0x0] - ldr r3, [r3, #0xc] - bl NNS_SndWaveOutStart - add r5, r0, #0x0 - bne _02004AA4 - add r0, r4, #0x0 - bl FUN_02004A04 -_02004AA4: - add r0, r5, #0x0 - add sp, #0x18 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02004AAC -FUN_02004AAC: ; 0x02004AAC - push {r3, lr} - bl FUN_02004930 - ldr r0, [r0, #0x0] - bl NNS_SndWaveOutStop - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02004ABC -FUN_02004ABC: ; 0x02004ABC - push {r3, lr} - bl FUN_02004930 - ldr r0, [r0, #0x0] - bl NNS_SndWaveOutIsPlaying - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02004ACC -FUN_02004ACC: ; 0x02004ACC - push {r4, lr} - add r4, r1, #0x0 - cmp r4, #0x7f - bls _02004AD6 - mov r4, #0x7f -_02004AD6: - bl FUN_02004930 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl NNS_SndWaveOutSetPan - pop {r4, pc} - - thumb_func_start FUN_02004AE4 -FUN_02004AE4: ; 0x02004AE4 - push {r4, lr} - add r4, r1, #0x0 - bl FUN_02004930 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl NNS_SndWaveOutSetSpeed - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004AF8 -FUN_02004AF8: ; 0x02004AF8 - push {r3-r5, lr} - add r4, r0, #0x0 - add r5, r1, #0x0 - bl FUN_020313EC - cmp r0, #0x1 - bne _02004B20 - add r0, r4, #0x0 - bl FUN_02004930 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - bl _s32_div_f - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl NNS_SndWaveOutSetVolume - pop {r3-r5, pc} -_02004B20: - add r0, r4, #0x0 - bl FUN_02004930 - ldr r0, [r0, #0x0] - add r1, r5, #0x0 - bl NNS_SndWaveOutSetVolume - pop {r3-r5, pc} - - thumb_func_start FUN_02004B30 -FUN_02004B30: ; 0x02004B30 - push {r3-r7, lr} - sub sp, #0x30 - add r6, r0, #0x0 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r5, r3, #0x0 - bl GetSoundDataPointer - mov r0, #0x21 - bl FUN_02003D38 - add r4, r0, #0x0 - cmp r5, #0xe - beq _02004B54 - cmp r5, #0xf - beq _02004B54 - bl GF_AssertFail -_02004B54: - add r0, r6, #0x0 - bl NNS_SndArcGetWaveArcInfo - add r7, r0, #0x0 - bne _02004B68 - bl GF_AssertFail - add sp, #0x30 - mov r0, #0x0 - pop {r3-r7, pc} -_02004B68: - ldr r0, [r7, #0x0] - lsl r0, r0, #0x8 - lsr r0, r0, #0x8 - bl NNS_SndArcGetFileSize - add r6, r0, #0x0 - bne _02004B80 - bl GF_AssertFail - add sp, #0x30 - mov r0, #0x0 - pop {r3-r7, pc} -_02004B80: - cmp r5, #0xe - bne _02004BCE - ldr r0, [sp, #0x48] - add r1, r6, #0x0 - bl AllocFromHeap - str r0, [r4, #0x0] - cmp r0, #0x0 - bne _02004B9C - bl GF_AssertFail - add sp, #0x30 - mov r0, #0x0 - pop {r3-r7, pc} -_02004B9C: - mov r1, #0x0 - add r2, r6, #0x0 - bl memset - ldr r0, [r7, #0x0] - ldr r1, [r4, #0x0] - lsl r0, r0, #0x8 - lsr r0, r0, #0x8 - add r2, r6, #0x0 - mov r3, #0x0 - bl NNS_SndArcReadFile - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - bne _02004BC6 - bl GF_AssertFail - add sp, #0x30 - mov r0, #0x0 - pop {r3-r7, pc} -_02004BC6: - ldr r0, [r4, #0x0] - add r1, r6, #0x0 - bl FUN_02004C1C -_02004BCE: - add r0, r5, #0x0 - bl FUN_02004930 - mov r1, #0x0 - str r1, [sp, #0xc] - str r0, [sp, #0x8] - ldr r0, [r4, #0x0] - str r0, [sp, #0x10] - ldr r0, _02004C18 ; =0x00003443 - str r1, [sp, #0x14] - str r0, [sp, #0x20] - ldr r0, [sp, #0x0] - str r1, [sp, #0x18] - str r0, [sp, #0x24] - mov r0, #0x6 - lsl r0, r0, #0xc - str r0, [sp, #0x28] - ldr r0, [sp, #0x4] - add r1, r5, #0x0 - str r0, [sp, #0x2c] - add r0, sp, #0x8 - str r6, [sp, #0x1c] - bl FUN_02004A6C - add r4, r0, #0x0 - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl FUN_02004AF8 - mov r0, #0xe - bl FUN_02003D38 - mov r1, #0x1 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add sp, #0x30 - pop {r3-r7, pc} - .balign 4 -_02004C18: .word 0x00003443 - - thumb_func_start FUN_02004C1C -FUN_02004C1C: ; 0x02004C1C - push {r3-r6} - mov r5, #0x0 - lsr r6, r1, #0x1 - beq _02004C36 - sub r2, r1, #0x1 -_02004C26: - sub r3, r2, r5 - ldrb r4, [r0, r5] - ldrb r1, [r0, r3] - strb r1, [r0, r5] - add r5, r5, #0x1 - strb r4, [r0, r3] - cmp r5, r6 - blo _02004C26 -_02004C36: - pop {r3-r6} - bx lr - .balign 4 - - thumb_func_start FUN_02004C3C -FUN_02004C3C: ; 0x02004C3C - push {r4-r6, lr} - add r5, r0, #0x0 - bl GetSoundDataPointer - mov r0, #0xe - bl FUN_02003D38 - add r4, r0, #0x0 - mov r0, #0x21 - bl FUN_02003D38 - add r6, r0, #0x0 - cmp r5, #0xe - beq _02004C60 - cmp r5, #0xf - beq _02004C60 - bl GF_AssertFail -_02004C60: - add r0, r5, #0x0 - bl FUN_02004AAC - ldrb r0, [r4, #0x0] - cmp r0, #0x1 - bne _02004C76 - mov r0, #0x0 - strb r0, [r4, #0x0] - ldr r0, [r6, #0x0] - bl FreeToHeap -_02004C76: - pop {r4-r6, pc} - - thumb_func_start FUN_02004C78 -FUN_02004C78: ; 0x02004C78 - ldr r3, _02004C7C ; =NNS_SndCaptureIsActive - bx r3 - .balign 4 -_02004C7C: .word NNS_SndCaptureIsActive - - thumb_func_start FUN_02004C80 -FUN_02004C80: ; 0x02004C80 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl GetSoundDataPointer - mov r0, #0x3 - bl FUN_02003D38 - mov r1, #0x1 - mov r3, #0xfa - lsl r1, r1, #0xc - mov r2, #0x0 - lsl r3, r3, #0x6 - str r4, [sp, #0x0] - bl NNS_SndCaptureStartReverb - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_02004CA4 -FUN_02004CA4: ; 0x02004CA4 - ldr r3, _02004CA8 ; =NNS_SndCaptureStopReverb - bx r3 - .balign 4 -_02004CA8: .word NNS_SndCaptureStopReverb - - thumb_func_start FUN_02004CAC -FUN_02004CAC: ; 0x02004CAC - ldr r3, _02004CB0 ; =NNS_SndCaptureSetReverbVolume - bx r3 - .balign 4 -_02004CB0: .word NNS_SndCaptureSetReverbVolume - - thumb_func_start FUN_02004CB4 -FUN_02004CB4: ; 0x02004CB4 - push {r3-r4, lr} - sub sp, #0xc - bl GetSoundDataPointer - mov r0, #0x4 - bl FUN_02003D38 - mov r1, #0x0 - mov r2, #0x1c - bl MI_CpuFill8 - mov r0, #0x3 - bl FUN_02003D38 - add r4, r0, #0x0 - mov r0, #0x4 - bl FUN_02003D38 - mov r2, #0x2 - ldr r1, _02004CF4 ; =FUN_02005068 - str r2, [sp, #0x0] - str r1, [sp, #0x4] - str r0, [sp, #0x8] - lsl r1, r2, #0xb - ldr r3, _02004CF8 ; =0x000055F0 - add r0, r4, #0x0 - mov r2, #0x0 - bl NNS_SndCaptureStartEffect - add sp, #0xc - pop {r3-r4, pc} - nop -_02004CF4: .word FUN_02005068 -_02004CF8: .word 0x000055F0 - - thumb_func_start FUN_02004CFC -FUN_02004CFC: ; 0x02004CFC - ldr r3, _02004D00 ; =NNS_SndCaptureStopEffect - bx r3 - .balign 4 -_02004D00: .word NNS_SndCaptureStopEffect - - thumb_func_start FUN_02004D04 -FUN_02004D04: ; 0x02004D04 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x13 - bl FUN_02003D38 - cmp r4, #0x8 - ble _02004D16 - mov r4, #0x8 - b _02004D1C -_02004D16: - cmp r4, #0x0 - bge _02004D1C - mov r4, #0x0 -_02004D1C: - strb r4, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_02004D20 -FUN_02004D20: ; 0x02004D20 - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_02003FF4 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl NNS_SndPlayerSetTrackPitch - pop {r3-r5, pc} - - thumb_func_start FUN_02004D34 -FUN_02004D34: ; 0x02004D34 - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_020048D0 - bl FUN_02004018 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl FUN_02004D20 - pop {r3-r5, pc} - - thumb_func_start FUN_02004D4C -FUN_02004D4C: ; 0x02004D4C - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_02003FF4 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl NNS_SndPlayerSetTrackPan - pop {r3-r5, pc} - - thumb_func_start FUN_02004D60 -FUN_02004D60: ; 0x02004D60 - push {r4, lr} - add r4, r0, #0x0 - bl NNS_SndSetMonoFlag - ldr r0, _02004D70 ; =UNK_021C3DD8 - str r4, [r0, #0x0] - pop {r4, pc} - nop -_02004D70: .word UNK_021C3DD8 - - thumb_func_start FUN_02004D74 -FUN_02004D74: ; 0x02004D74 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x6 - bl FUN_02003D38 - str r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004D84 -FUN_02004D84: ; 0x02004D84 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x7 - bl FUN_02003D38 - str r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004D94 -FUN_02004D94: ; 0x02004D94 - push {r3, lr} - mov r0, #0x7 - bl FUN_02003D38 - ldrh r1, [r0, #0x0] - cmp r1, #0x0 - bne _02004DAA - mov r1, #0x0 - strh r1, [r0, #0x0] - add r0, r1, #0x0 - pop {r3, pc} -_02004DAA: - sub r1, r1, #0x1 - strh r1, [r0, #0x0] - ldrh r0, [r0, #0x0] - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02004DB4 -FUN_02004DB4: ; 0x02004DB4 - ldr r0, _02004DB8 ; =UNK_021C3DE0 - bx lr - .balign 4 -_02004DB8: .word UNK_021C3DE0 - - thumb_func_start FUN_02004DBC -FUN_02004DBC: ; 0x02004DBC - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x12 - bl FUN_02003D38 - strb r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02004DCC -FUN_02004DCC: ; 0x02004DCC - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - mov r0, #0x15 - add r6, r1, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x8] - bl FUN_02003D38 - add r4, r0, #0x0 - add r0, sp, #0x10 - ldrb r0, [r0, #0x10] - ldr r3, [sp, #0x8] - add r1, r6, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - add r2, r7, #0x0 - str r0, [sp, #0x4] - add r0, r5, #0x0 - bl FUN_02004E44 - mov r0, #0x0 - strb r0, [r4, #0x0] - mov r0, #0x5 - bl FUN_02003CE8 - mov r0, #0x1 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02004E08 -FUN_02004E08: ; 0x02004E08 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - mov r0, #0x8 - add r6, r1, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x8] - bl FUN_02003D38 - add r4, r0, #0x0 - add r0, sp, #0x10 - ldrb r0, [r0, #0x14] - ldr r3, [sp, #0x8] - add r1, r6, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x28] - add r2, r7, #0x0 - str r0, [sp, #0x4] - add r0, r5, #0x0 - bl FUN_02004E44 - ldr r0, [sp, #0x20] - str r0, [r4, #0x0] - mov r0, #0x6 - bl FUN_02003CE8 - mov r0, #0x1 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02004E44 -FUN_02004E44: ; 0x02004E44 - push {r3-r7, lr} - add r6, r2, #0x0 - mov r0, #0x2 - add r5, r1, #0x0 - add r7, r3, #0x0 - bl FUN_02003D38 - add r4, r0, #0x0 - mov r0, #0x0 - add r1, r6, #0x0 - bl FUN_020053CC - mov r0, #0x0 - bl FUN_02004110 - add r0, r5, #0x0 - bl FUN_02004130 - add r0, r7, #0x0 - bl FUN_02004D84 - add r0, r5, #0x0 - bl FUN_020048F4 - str r0, [r4, #0x0] - add r0, sp, #0x8 - ldrb r0, [r0, #0x10] - bl FUN_02004DBC - pop {r3-r7, pc} - - thumb_func_start FUN_02004E80 -FUN_02004E80: ; 0x02004E80 - cmp r0, #0x0 - bne _02004E88 - mov r0, #0x0 - bx lr -_02004E88: - add r0, #0xc - bx lr - - thumb_func_start FUN_02004E8C -FUN_02004E8C: ; 0x02004E8C - cmp r0, #0x0 - bne _02004E94 - mov r0, #0x0 - bx lr -_02004E94: - ldr r0, [r0, #0x8] - bx lr - - thumb_func_start FUN_02004E98 -FUN_02004E98: ; 0x02004E98 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x5 - bl FUN_02004748 - bl GF_Snd_RestoreState - lsl r0, r5, #0x10 - lsr r4, r0, #0x10 - ldr r0, _02004ECC ; =0x000001B9 - cmp r4, r0 - beq _02004EBC - add r0, #0x36 - cmp r5, r0 - bgt _02004EBA - cmp r5, #0x0 - bne _02004EBC -_02004EBA: - mov r4, #0x1 -_02004EBC: - add r0, r4, #0x0 - bl GF_Snd_LoadWaveArc - add r0, r4, #0x0 - bl FUN_02004ED0 - pop {r3-r5, pc} - nop -_02004ECC: .word 0x000001B9 - - thumb_func_start FUN_02004ED0 -FUN_02004ED0: ; 0x02004ED0 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x20 - bl FUN_02003D38 - add r4, r0, #0x0 - lsl r0, r5, #0x10 - ldr r1, _02004F24 ; =0x000001B9 - lsr r0, r0, #0x10 - cmp r0, r1 - beq _02004EF2 - add r1, #0x36 - cmp r5, r1 - bgt _02004EF0 - cmp r5, #0x0 - bne _02004EF2 -_02004EF0: - mov r0, #0x1 -_02004EF2: - bl NNS_SndArcGetWaveArcInfo - cmp r0, #0x0 - bne _02004F02 - bl GF_AssertFail - mov r0, #0x0 - pop {r3-r5, pc} -_02004F02: - ldr r0, [r0, #0x0] - lsl r0, r0, #0x8 - lsr r0, r0, #0x8 - bl NNS_SndArcGetFileAddress - cmp r0, #0x0 - bne _02004F18 - bl GF_AssertFail - mov r0, #0x0 - pop {r3-r5, pc} -_02004F18: - mov r1, #0x0 - bl SND_GetWaveDataAddress - str r0, [r4, #0x0] - pop {r3-r5, pc} - nop -_02004F24: .word 0x000001B9 - - thumb_func_start FUN_02004F28 -FUN_02004F28: ; 0x02004F28 - push {r4-r6, lr} - mov r0, #0x1 - add r5, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02004F64 - mov r1, #0x3 - add r4, r0, #0x0 - add r0, r6, #0x0 - lsl r1, r1, #0x8 - ldr r5, [r5, #0x8] - bl _s32_div_f - lsl r1, r0, #0x1 - bpl _02004F50 - mov r0, #0x20 - bl _s32_div_f - neg r0, r0 - b _02004F5A -_02004F50: - cmp r1, #0x0 - bne _02004F58 - mov r0, #0x20 - b _02004F5A -_02004F58: - lsl r0, r1, #0x5 -_02004F5A: - mul r0, r4 - cmp r0, r5 - blo _02004F62 - mov r0, #0x0 -_02004F62: - pop {r4-r6, pc} - - thumb_func_start FUN_02004F64 -FUN_02004F64: ; 0x02004F64 - push {r3, lr} - bl FUN_02003FF4 - bl NNS_SndPlayerGetTick - pop {r3, pc} - - thumb_func_start FUN_02004F70 -FUN_02004F70: ; 0x02004F70 - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x0] - add r4, r1, #0x0 - add r6, r2, #0x0 - ldr r1, [sp, #0x0] - mov r0, #0x1 - add r2, r3, #0x0 - bl FUN_02004F28 - add r1, r0, #0x0 - mov r12, r0 - sub r1, #0x64 - bpl _02004F8E - mov r1, #0x0 -_02004F8E: - ldr r0, [sp, #0x0] - mov r3, #0x0 - add r0, r0, r1 - ldrb r0, [r0, #0xc] - add r7, r3, #0x0 - cmp r0, #0x80 - bhs _02004FA0 - mov r0, #0x1 - b _02004FA2 -_02004FA0: - sub r0, r3, #0x1 -_02004FA2: - lsl r0, r0, #0x18 - asr r5, r0, #0x18 - mov r0, r12 - cmp r1, r0 - bhs _02005022 -_02004FAC: - mov r0, #0x0 - cmp r5, #0x0 - ble _02004FC6 - ldr r2, [sp, #0x0] - add r2, r2, r1 - str r2, [sp, #0x4] - ldrb r2, [r2, #0xc] - cmp r2, #0x80 - bls _02004FC2 - mov r0, #0x1 - b _02004FD8 -_02004FC2: - add r3, r3, #0x1 - b _02004FD8 -_02004FC6: - ldr r2, [sp, #0x0] - add r2, r2, r1 - str r2, [sp, #0x4] - ldrb r2, [r2, #0xc] - cmp r2, #0x80 - bhs _02004FD6 - mov r0, #0x1 - b _02004FD8 -_02004FD6: - add r3, r3, #0x1 -_02004FD8: - cmp r0, #0x1 - bne _0200501A - ldr r5, _02005064 ; =UNK_020ECB8C - mov r2, #0x0 -_02004FE0: - ldrb r0, [r5, #0x0] - cmp r3, r0 - bge _02004FEA - add r7, r2, #0x0 - b _02004FF2 -_02004FEA: - add r2, r2, #0x1 - add r5, r5, #0x1 - cmp r2, #0x9 - blt _02004FE0 -_02004FF2: - cmp r7, r6 - blt _02004FF8 - sub r7, r6, #0x1 -_02004FF8: - cmp r3, #0x0 - beq _02005006 - sub r0, r6, #0x1 - sub r0, r0, r7 - ldrb r2, [r4, r0] - add r2, r2, #0x1 - strb r2, [r4, r0] -_02005006: - ldr r0, [sp, #0x4] - mov r3, #0x0 - ldrb r0, [r0, #0xc] - cmp r0, #0x80 - bhs _02005014 - mov r0, #0x1 - b _02005016 -_02005014: - sub r0, r3, #0x1 -_02005016: - lsl r0, r0, #0x18 - asr r5, r0, #0x18 -_0200501A: - add r1, r1, #0x2 - mov r0, r12 - cmp r1, r0 - blo _02004FAC -_02005022: - mov r2, #0x0 - cmp r6, #0x0 - ble _02005038 - mov r0, #0x9 -_0200502A: - ldrb r1, [r4, r2] - cmp r1, #0xa - blo _02005032 - strb r0, [r4, r2] -_02005032: - add r2, r2, #0x1 - cmp r2, r6 - blt _0200502A -_02005038: - sub r2, r6, #0x1 - mov r3, #0x0 - cmp r2, #0x0 - ble _02005060 -_02005040: - ldrb r0, [r4, r3] - add r1, r4, r3 - cmp r0, #0x0 - bne _0200505A - ldrb r0, [r1, #0x1] - cmp r0, #0x0 - beq _0200505A - add r0, r3, #0x1 - ldrb r0, [r4, r0] - add sp, #0x8 - lsr r0, r0, #0x1 - strb r0, [r1, #0x0] - pop {r3-r7, pc} -_0200505A: - add r3, r3, #0x1 - cmp r3, r2 - blt _02005040 -_02005060: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_02005064: .word UNK_020ECB8C - - thumb_func_start FUN_02005068 -FUN_02005068: ; 0x02005068 - push {r3-r7, lr} - sub sp, #0x30 - add r5, r0, #0x0 - ldr r0, [sp, #0x48] - add r6, r1, #0x0 - str r0, [sp, #0xc] - mov r0, #0x13 - str r2, [sp, #0x0] - add r4, r3, #0x0 - bl FUN_02003D38 - add r7, r0, #0x0 - cmp r4, #0x1 - beq _0200508A - ldr r0, [sp, #0x0] - lsr r0, r0, #0x1 - str r0, [sp, #0x0] -_0200508A: - ldrb r2, [r7, #0x0] - cmp r2, #0x0 - beq _0200515A - mov r0, #0x0 - cmp r2, #0x0 - ble _020050BC - add r1, sp, #0x10 -_02005098: - ldr r3, [sp, #0x0] - sub r2, r3, r2 - add r2, r0, r2 - lsl r2, r2, #0x1 - ldrsh r2, [r5, r2] - strh r2, [r1, #0x0] - ldrb r3, [r7, #0x0] - ldr r2, [sp, #0x0] - sub r2, r2, r3 - add r2, r0, r2 - lsl r2, r2, #0x1 - ldrsh r2, [r6, r2] - add r0, r0, #0x1 - strh r2, [r1, #0x2] - ldrb r2, [r7, #0x0] - add r1, r1, #0x4 - cmp r0, r2 - blt _02005098 -_020050BC: - ldr r0, [sp, #0x0] - sub r4, r0, #0x1 - sub r0, r2, #0x1 - cmp r4, r0 - blt _02005126 - lsl r1, r4, #0x1 - add r0, r5, r1 - str r0, [sp, #0x8] - add r0, r6, r1 - str r0, [sp, #0x4] -_020050D0: - mov r0, #0x0 - add r1, r0, #0x0 - cmp r2, #0x0 - ble _020050E6 -_020050D8: - sub r3, r4, r1 - lsl r3, r3, #0x1 - ldrsh r3, [r5, r3] - add r1, r1, #0x1 - add r0, r0, r3 - cmp r1, r2 - blt _020050D8 -_020050E6: - add r1, r2, #0x0 - bl _s32_div_f - ldr r1, [sp, #0x8] - strh r0, [r1, #0x0] - mov r0, #0x0 - ldrb r1, [r7, #0x0] - add r2, r0, #0x0 - cmp r1, #0x0 - ble _02005108 -_020050FA: - sub r3, r4, r2 - lsl r3, r3, #0x1 - ldrsh r3, [r6, r3] - add r2, r2, #0x1 - add r0, r0, r3 - cmp r2, r1 - blt _020050FA -_02005108: - bl _s32_div_f - ldr r1, [sp, #0x4] - sub r4, r4, #0x1 - strh r0, [r1, #0x0] - ldr r0, [sp, #0x8] - ldrb r2, [r7, #0x0] - sub r0, r0, #0x2 - str r0, [sp, #0x8] - add r0, r1, #0x0 - sub r0, r0, #0x2 - str r0, [sp, #0x4] - sub r0, r2, #0x1 - cmp r4, r0 - bge _020050D0 -_02005126: - mov r1, #0x0 - cmp r2, #0x0 - ble _0200514A - add r0, sp, #0x10 - mov r4, #0x2 -_02005130: - mov r2, #0x0 - ldrsh r3, [r0, r2] - ldr r2, [sp, #0xc] - add r1, r1, #0x1 - strh r3, [r2, #0x0] - ldrsh r3, [r0, r4] - add r0, r0, #0x4 - strh r3, [r2, #0x2] - add r2, r2, #0x4 - str r2, [sp, #0xc] - ldrb r2, [r7, #0x0] - cmp r1, r2 - blt _02005130 -_0200514A: - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl DC_FlushRange - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - bl DC_FlushRange -_0200515A: - add sp, #0x30 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02005160 -FUN_02005160: ; 0x02005160 - ldr r3, _02005168 ; =NNS_SndPlayerSetAllocatableChannel - add r1, r0, #0x0 - mov r0, #0x7 - bx r3 - .balign 4 -_02005168: .word NNS_SndPlayerSetAllocatableChannel - - thumb_func_start FUN_0200516C -FUN_0200516C: ; 0x0200516C - push {r3, lr} - cmp r0, #0x0 - bne _02005180 - ldr r0, _020051A4 ; =0x000007FF - bl FUN_02005160 - mov r0, #0x0 - bl FUN_02004CA4 - b _0200519C -_02005180: - cmp r0, #0x1 - ldr r0, _020051A8 ; =0x00007FFF - bne _02005192 - bl FUN_02005160 - mov r0, #0x1e - bl FUN_02004C80 - b _0200519C -_02005192: - bl FUN_02005160 - mov r0, #0xf - bl FUN_02004C80 -_0200519C: - bl FUN_02004C78 - pop {r3, pc} - nop -_020051A4: .word 0x000007FF -_020051A8: .word 0x00007FFF - - thumb_func_start FUN_020051AC -FUN_020051AC: ; 0x020051AC - push {r3, lr} - bl FUN_02005404 - cmp r0, #0x0 - bne _020051E0 - mov r0, #0x0 - bl FUN_02003FF4 - bl FUN_020048EC - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _020051E0 - bl FUN_02004124 - ldr r1, _020051E8 ; =0x0000047E - cmp r0, r1 - beq _020051E0 - bl FUN_02005454 - mov r0, #0x1 - add r1, r0, #0x0 - bl FUN_020047C8 - pop {r3, pc} -_020051E0: - bl FUN_0200541C - pop {r3, pc} - nop -_020051E8: .word 0x0000047E - - thumb_func_start FUN_020051EC -FUN_020051EC: ; 0x020051EC - ldr r3, _020051F0 ; =NNS_SndPlayerSetPlayerVolume - bx r3 - .balign 4 -_020051F0: .word NNS_SndPlayerSetPlayerVolume diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index 1251c612..ae20b5a4 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -1,14 +1,13 @@ #include "scrcmd.h" +#include "unk_020040F4.h" extern void* Sav2_Chatot_get(struct SaveBlock2* sav2); extern u32 FUN_02005D20(void *); extern void FUN_02005E6C(void *); -extern void FUN_0200433C(u32, u32, u32); extern u32 FUN_02005E28(void); extern void FUN_02005E64(void); extern BOOL FUN_02005CBC(void); extern void PlaySound(u16); -extern u32 FUN_02004124(u16); extern void FUN_0204AB20(struct UnkSavStruct80 *ctx, u16); extern u16 FUN_0204ABA8(struct UnkSavStruct80 *ctx, u32); extern void FUN_0200521C(u16); @@ -20,13 +19,9 @@ extern BOOL FUN_02005404(void); extern u16 FUN_02005410(u16); extern void PlaySE(u16); extern void FUN_020054F0(u16, u32); -extern void FUN_020047C8(u8, u8); -extern void FUN_020040F4(u8); extern BOOL FUN_02005508(u16); extern void FUN_02005578(u16); extern BOOL FUN_02005670(void); -extern void FUN_0200488C(u16, u16); - THUMB_FUNC BOOL ScrCmd_Unk02AE(struct ScriptContext *ctx) { diff --git a/arm9/src/sound.c b/arm9/src/sound.c index a5228dab..bc30b97a 100644 --- a/arm9/src/sound.c +++ b/arm9/src/sound.c @@ -2,6 +2,7 @@ #include "sound.h" #include "SPI_mic.h" #include "SPI_pm.h" +#include "unk_020040F4.h" #pragma thumb on @@ -18,9 +19,6 @@ void FUN_020040A4(struct SoundData *); void FUN_02003CE8(int); void FUN_020040DC(void); -extern BOOL FUN_020048BC(int); -extern void FUN_02004D60(u32); -extern BOOL FUN_02004D94(void); extern void FUN_0200521C(int); extern void FUN_0200538C(int, int, int); extern BOOL FUN_02005404(void); diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c new file mode 100644 index 00000000..d8624329 --- /dev/null +++ b/arm9/src/unk_020040F4.c @@ -0,0 +1,1365 @@ +#include "global.h" +#include "unk_020040F4.h" +#include "OS_cache.h" +#include "sound.h" +#include "unk_0202F150.h" + +u32 UNK_021C3DD8[2]; + +u8 UNK_021C3DE0[0x7d0]; + +const u8 UNK_020ECB8C[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + +extern void FUN_02005454(); +extern void FUN_0200541C(); +extern void FUN_0200521C(int); +extern void FUN_0200538C(u32, u16, u32); +extern void NNS_SndPlayerPause(u32 *, u8); +extern void NNS_SndPlayerMoveVolume(u32 *, u32, u32); +extern void NNS_SndPlayerSetInitialVolume(u32 *, s32); +extern void *NNS_SndArcGetSeqParam(u32); +extern void NNS_SndArcPlayerStartSeqEx(u32 *, u32, s32, s32, u32); +extern BOOL NNS_SndPlayerCountPlayingSeqByPlayerNo(int); +extern u32 NNS_SndPlayerGetSeqNo(u32 *); +extern u32 NNS_SndArcGetBankInfo(u32); +extern u32 MIC_StartAutoSampling(u32); +extern u32 MIC_StopAutoSampling(); +extern u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3); +extern u32 NNS_SndWaveOutAllocChannel(u32); +extern void NNS_SndWaveOutFreeChannel(u32); +extern u32 NNS_SndWaveOutStart(u32, u32, void *, u32, u32, u32, u32, s32, u32, u32); +extern void NNS_SndWaveOutStop(u32); +extern void NNS_SndWaveOutIsPlaying(u32); +extern void NNS_SndWaveOutSetPan(u32, u32); +extern void NNS_SndWaveOutSetSpeed(u32, u32); +extern void NNS_SndWaveOutSetVolume(u32, s32); +extern struct WaveArcInfo *NNS_SndArcGetWaveArcInfo(u32); +extern u32 NNS_SndArcGetFileSize(u32); +extern s32 NNS_SndArcReadFile(u32, void *, u32, u32); +extern BOOL NNS_SndCaptureIsActive(); +extern u32 NNS_SndCaptureStartReverb(void *, u32, u32, u32, u32); +extern void NNS_SndCaptureStopReverb(u32); +extern void NNS_SndCaptureSetReverbVolume(); +extern u32 NNS_SndCaptureStartEffect(void *, u32, u32, u32, u32, void (*)(), void *); +extern void NNS_SndCaptureStopEffect(); +extern void NNS_SndPlayerSetTrackPitch(u32 *, u32, u32); +extern void NNS_SndPlayerSetTrackPan(u32 *, u32, u32); +extern void NNS_SndSetMonoFlag(u32 param0); +extern void FUN_02003CE8(u32); +extern void FUN_020053CC(u32, u32); +extern u32 NNS_SndArcGetFileAddress(u32); +extern u32 SND_GetWaveDataAddress(u32, u32); +extern u32 NNS_SndPlayerGetTick(u32 *); +extern void NNS_SndPlayerSetAllocatableChannel(u32, u32); +extern BOOL FUN_02005404(void); +extern void NNS_SndPlayerSetPlayerVolume(u32, u8); + +THUMB_FUNC void FUN_020040F4(u8 param0) +{ + u8 *ptr = FUN_02003D38(5); + *ptr = param0; +} + +THUMB_FUNC u8 FUN_02004104() +{ + u8 *ptr = FUN_02003D38(5); + + return *ptr; +} + +THUMB_FUNC void FUN_02004110(u16 param0) +{ + u16 *ptr = FUN_02003D38(9); + *ptr = param0; + + FUN_02004130(0); +} + +THUMB_FUNC u16 FUN_02004124() +{ + u16 *ptr = FUN_02003D38(9); + + return *ptr; +} + +THUMB_FUNC void FUN_02004130(u16 param0) +{ + u16 *ptr = FUN_02003D38(10); + *ptr = param0; +} + +THUMB_FUNC u16 FUN_02004140() +{ + u16 *ptr = FUN_02003D38(10); + + return *ptr; +} + +THUMB_FUNC void FUN_0200414C(u16 param0) +{ + u16 *ptr = FUN_02003D38(31); + *ptr = param0; +} + +THUMB_FUNC void FUN_0200415C(u8 param0) +{ + u8 *ptr = FUN_02003D38(20); + u8 *ptr2 = FUN_02003D38(21); + + if (param0 < 51) + { + *ptr = param0; + *ptr2 = 0; + } + else + { + *ptr2 = param0; + } +} + +THUMB_FUNC BOOL FUN_02004180(s32 param0) +{ + BOOL res; + switch (param0) + { + case 1: + case 9: + case 10: + case 14: + res = GF_Snd_LoadGroup(1); + break; + case 2: + case 13: + res = GF_Snd_LoadGroup(2); + break; + case 3: + res = GF_Snd_LoadGroup(13); + break; + case 4: + res = GF_Snd_LoadGroup(1); + break; + case 5: + res = GF_Snd_LoadGroup(2); + break; + case 11: + res = GF_Snd_LoadGroup(1); + break; + case 6: + res = GF_Snd_LoadGroup(11); + break; + case 8: + res = GF_Snd_LoadGroup(1); + break; + case 12: + res = GF_Snd_LoadGroup(14); + break; + case 51: + res = GF_Snd_LoadGroup(3); + break; + case 66: + res = GF_Snd_LoadGroup(6); + break; + case 52: + res = GF_Snd_LoadGroup(5); + break; + case 7: + case 53: + res = GF_Snd_LoadGroup(9); + break; + case 54: + res = GF_Snd_LoadGroup(10); + break; + case 55: + case 67: + res = GF_Snd_LoadBank(0x5e5); + res = GF_Snd_LoadWaveArc(0x5e5); + break; + case 56: + res = GF_Snd_LoadGroup(12); + break; + case 57: + res = GF_Snd_LoadGroup(7); + break; + case 58: + res = GF_Snd_LoadGroup(8); + break; + case 59: + res = GF_Snd_LoadGroup(15); + break; + case 60: + res = GF_Snd_LoadGroup(3); + break; + case 61: + res = GF_Snd_LoadGroup(5); + break; + case 62: + res = GF_Snd_LoadGroup(15); + break; + case 63: + res = GF_Snd_LoadGroup(4); + break; + case 64: + res = GF_Snd_LoadBank(0x5ed); + res = GF_Snd_LoadWaveArc(0x5ed); + break; + case 65: + res = GF_Snd_LoadBank(0x5ec); + res = GF_Snd_LoadWaveArc(0x5ec); + break; + } + + return res; +} + +THUMB_FUNC u32 FUN_0200433C(u8 param0, int param1, u32 param2) +{ + u8 *st0 = FUN_02003D38(20); + u8 *st4 = FUN_02003D38(21); + u16 *r7 = FUN_02003D38(13); + + if (param0 < 51) + { + if (*st0 == param0) + { + return 0; + } + } + else + { + if (*st4 == param0) + { + return 0; + } + } + + FUN_0200415C(param0); + + switch (param0) + { + case 4: + FUN_0200516C(0); + FUN_020044D4(param1, param2); + *r7 = 0; + break; + case 5: + FUN_02004648(param1, param2); + break; + case 11: + FUN_02004680(param1, param2); + break; + case 6: + FUN_020046A0(param1, param2); + break; + case 7: + FUN_020046C4(param1, param2); + break; + case 57: + case 53: + case 51: + case 52: + case 54: + case 55: + case 56: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + FUN_020046E8(param0); + break; + case 1: + FUN_0200516C(1); + FUN_02004704(param0, param1, param2); + break; + case 14: + FUN_0200516C(2); + FUN_02004704(param0, param1, param2); + break; + case 2: + FUN_0200516C(0); + FUN_02004704(param0, param1, param2); + break; + case 3: + case 8: + case 9: + case 10: + case 12: + case 13: + FUN_02004704(param0, param1, param2); + break; + } + + return 1; +} + +THUMB_FUNC void FUN_020044A8(s32 param0) +{ + int *ptr = FUN_02003D38(23); + GF_Snd_RestoreState(*ptr); + + int *ptr2 = FUN_02003D38(24); + GF_Snd_SaveState(ptr2); + + FUN_02004180(param0); + + int *ptr3 = FUN_02003D38(25); + GF_Snd_SaveState(ptr3); +} + +THUMB_FUNC void FUN_020044D4(int param0, u32 param1) +{ +#pragma unused(param1) + + u8 *ptr = FUN_02003D38(11); + + FUN_02003D38(23); + FUN_02003D38(31); + u32 r4 = FUN_020048EC(FUN_02003FF4(0)); + + if (*ptr == 0 && r4 == param0 && FUN_02004140() != 1152) + { + return; + } + + FUN_02004DBC(1); + FUN_02005454(); + + if (r4 != param0) + { + FUN_020047C8(1, 0); + FUN_0200541C(); + } + + if (*ptr == 1) + { + GF_Snd_RestoreState(FUN_02004748(2)); + FUN_02004180(4); + GF_Snd_SaveState((int *)FUN_02003D38(25)); + + if (r4 != param0) + { + FUN_020047C8(1, 0); + } + FUN_02004568(param0, (u16)r4); + return; + } + + FUN_0200521C(param0); +} + +THUMB_FUNC void FUN_02004568(int seqNo, u16 param1) +{ +#pragma unused(param1) + + u16 *ptr = FUN_02003D38(31); + + u32 r0 = FUN_02004900(*ptr); + if (r0 != 1001 && r0 != 1003) + { + GF_Snd_LoadSeqEx(seqNo, 4); + GF_ASSERT(FALSE); + } + else + { + GF_Snd_LoadSeqEx(*ptr, 6); + } + + GF_Snd_SaveState((int *)FUN_02003D38(26)); + FUN_020047C8(1, 0); + FUN_0200538C(0x7f, 0x28, 0); + FUN_02004DBC(0); +} + +THUMB_FUNC void FUN_020045C4(int param0, u32 param1) +{ + u8 *ptr = FUN_02003D38(18); + u16 *ptr2 = FUN_02003D38(31); + + if (*ptr != 1 && param1 != 0) + { + return; + } + + GF_Snd_RestoreState(FUN_02004748(1)); + GF_Snd_LoadSeqEx(*ptr2, 2); + GF_Snd_SaveState((int *)FUN_02003D38(24)); + + FUN_02004180(4); + GF_Snd_SaveState((int *)FUN_02003D38(25)); + + u32 r0 = FUN_02004900(*ptr2); + if (r0 != 1001 && r0 != 1003) + { + GF_Snd_LoadSeqEx(param0, 4); + GF_ASSERT(FALSE); + } + else + { + GF_Snd_LoadSeqEx(*ptr2, 4); + } + + GF_Snd_SaveState((int *)FUN_02003D38(26)); +} + +THUMB_FUNC void FUN_02004648(int param0, u32 param1) +{ +#pragma unused(param1) + FUN_02003D38(23); + FUN_020051AC(); + + GF_Snd_RestoreState(FUN_02004748(2)); + FUN_02004180(5); + GF_Snd_SaveState((int *)FUN_02003D38(25)); + FUN_02004DBC(1); + FUN_0200521C(param0); +} + +THUMB_FUNC void FUN_02004680(int param0, u32 param1) +{ +#pragma unused(param1) + FUN_02003D38(23); + FUN_0200541C(); + FUN_02004810(); + FUN_020044A8(4); + FUN_0200521C(param0); +} + +THUMB_FUNC void FUN_020046A0(int param0, u32 param1) +{ +#pragma unused(param1) + FUN_02003D38(23); + FUN_0200541C(); + FUN_020044A8(6); + FUN_02004DBC(1); + FUN_0200521C(param0); +} + +THUMB_FUNC void FUN_020046C4(int param0, u32 param1) +{ +#pragma unused(param1) + FUN_02003D38(23); + FUN_0200541C(); + FUN_020044A8(7); + FUN_02004DBC(1); + FUN_0200521C(param0); +} + +THUMB_FUNC void FUN_020046E8(s32 param0) +{ + FUN_02004738(); + FUN_02004180(param0); + GF_Snd_SaveState((int *)FUN_02003D38(27)); +} + +THUMB_FUNC void FUN_02004704(s32 param0, int param1, u32 param2) +{ +#pragma unused(param2) + FUN_02003D38(23); + FUN_0200541C(); + FUN_020044A8(param0); + FUN_0200521C(param1); +} + +THUMB_FUNC void FUN_02004724(int param0) +{ + GetSoundDataPointer(); + FUN_020051AC(); + FUN_0200521C(param0); +} + +THUMB_FUNC void FUN_02004738() +{ + GF_Snd_RestoreState(FUN_02004748(4)); +} + +THUMB_FUNC int FUN_02004748(s32 param0) +{ + GetSoundDataPointer(); + + if (param0 >= 7) + { + GF_AssertFail(); + return *(int *)FUN_02003D38(26); + } + + int *r5; + switch (param0) + { + case 0: + r5 = FUN_02003D38(22); + break; + case 1: + r5 = FUN_02003D38(23); + break; + case 2: + r5 = FUN_02003D38(24); + break; + case 3: + r5 = FUN_02003D38(25); + break; + case 4: + r5 = FUN_02003D38(26); + break; + case 5: + r5 = FUN_02003D38(27); + break; + case 6: + r5 = FUN_02003D38(28); + break; + } + + return *r5; +} + +THUMB_FUNC void FUN_020047C8(u8 param0, u8 param1) +{ + u8 *ptr; + int r4; + if (param0 == 1) + { + ptr = FUN_02003D38(11); + r4 = 0; + } + else + { + if (param0 != 7) + { + return; + } + + ptr = FUN_02003D38(12); + r4 = 7; + } + + if (param1 == 0) + { + FUN_02004110((u16)FUN_020048EC(FUN_02003FF4(r4))); + } + + NNS_SndPlayerPause(FUN_02003FF4(r4), param1); + *ptr = param1; +} + +THUMB_FUNC void FUN_02004810() +{ + u8 *ptr = FUN_02003D38(11); + u8 *ptr2 = FUN_02003D38(12); + *ptr = 0; + *ptr2 = 0; +} + +THUMB_FUNC void FUN_02004828(int param0, u32 param1, u32 param2) +{ + NNS_SndPlayerMoveVolume(FUN_02003FF4(param0), param1, param2); +} + +THUMB_FUNC void FUN_0200483C(int param0, s32 param1) +{ + if (param1 < 0) + { + param1 = 0; + } + + if (param1 > 127) + { + param1 = 127; + } + + NNS_SndPlayerSetInitialVolume(FUN_02003FF4(param0), param1); +} + +THUMB_FUNC void FUN_02004858(u32 param0, int param1) +{ + u8 *ret = NNS_SndArcGetSeqParam(param0); + u8 r4; + if (param1 == 1 || param1 == 8) + { + r4 = 127; + } + else + { + if (ret == NULL) + { + return; + } + + r4 = ret[2]; + } + + if (FUN_020313EC() == 1) + { + FUN_0200483C(param1, r4 / 5); + } +} + +THUMB_FUNC void FUN_0200488C(u16 param0, u16 param1) +{ + FUN_0200483C((int)FUN_02004018(FUN_020048D0(param0)), param1); +} + +THUMB_FUNC void FUN_020048A0(int param0, u32 param1, u32 param2) +{ + NNS_SndArcPlayerStartSeqEx(FUN_02003FF4(param0), param1, -1, -1, param2); +} + +THUMB_FUNC BOOL FUN_020048BC(int param0) +{ + GF_ASSERT(param0 >= 0); + + return NNS_SndPlayerCountPlayingSeqByPlayerNo(param0); +} + +THUMB_FUNC u8 FUN_020048D0(u16 param0) +{ + if (param0 == 0) + { + return 0xff; + } + + u8 *ptr = NNS_SndArcGetSeqParam(param0); + if (ptr == NULL) + { + return 0xff; + } + + return ptr[5]; +} + +THUMB_FUNC u32 FUN_020048EC(u32 *param0) +{ + return NNS_SndPlayerGetSeqNo(param0); +} + +THUMB_FUNC u32 FUN_020048F4(u16 param0) +{ + return NNS_SndArcGetBankInfo(FUN_02004900(param0)); +} + +THUMB_FUNC u16 FUN_02004900(u16 param0) +{ + u16 *ptr = NNS_SndArcGetSeqParam(param0); + if (ptr == NULL) + { + return 0; + } + + return *ptr; +} + +THUMB_FUNC u32 FUN_02004914(u32 param0) +{ + return MIC_StartAutoSampling(param0); +} + +THUMB_FUNC u32 FUN_0200491C(u32 param0) +{ +#pragma unused(param0) + GetSoundDataPointer(); + return MIC_StopAutoSampling(); +} + +THUMB_FUNC u32 FUN_02004928(u32 param0, u32 param1, u32 param2, u32 param3) +{ + return MIC_DoSamplingAsync(param0, param1, param2, param3); +} + +THUMB_FUNC void *FUN_02004930(u32 param0) +{ + GetSoundDataPointer(); + u8 *ptr = FUN_02003D38(15); + u8 *ptr2 = FUN_02003D38(16); + GF_ASSERT(param0 == 14 || param0 == 15); + GF_ASSERT(param0 != 14 || *ptr != 0); + GF_ASSERT(param0 != 15 || *ptr2 != 0); + + if (param0 == 14) + { + return FUN_02003D38(0); + } + + return FUN_02003D38(1); +} + +THUMB_FUNC u32 FUN_02004984(u32 param0) +{ + GetSoundDataPointer(); + u8 *ptr = FUN_02003D38(15); + u8 *ptr2 = FUN_02003D38(16); + GF_ASSERT(param0 == 14 || param0 == 15); + + if (param0 == 14) + { + if (*ptr == 0) + { + u32 *r4 = FUN_02003D38(0); + *r4 = NNS_SndWaveOutAllocChannel(param0); + if (*r4 == 0) + { + return 0; + } + *ptr = 1; + } + else + { + GF_AssertFail(); + } + } + else + { + if (*ptr2 == 0) + { + u32 *r6 = FUN_02003D38(1); + *r6 = NNS_SndWaveOutAllocChannel(param0); + if (*r6 == 0) + { + return 0; + } + + *ptr2 = 1; + } + else + { + GF_AssertFail(); + } + } + + return 1; +} + +THUMB_FUNC void FUN_02004A04(u32 param0) +{ + GetSoundDataPointer(); + u8 *ptr = FUN_02003D38(15); + u8 *ptr2 = FUN_02003D38(16); + if (param0 != 14 && param0 != 15) + { + GF_AssertFail(); + return; + } + + if (param0 == 14) + { + if (*ptr == 1) + { + NNS_SndWaveOutFreeChannel(*(u32 *)FUN_02004930(param0)); + *ptr = 0; + return; + } + else + { + GF_AssertFail(); + return; + } + } + + if (*ptr2 == 1) + { + NNS_SndWaveOutFreeChannel(*(u32 *)FUN_02004930(param0)); + *ptr2 = 0; + return; + } + else + { + GF_AssertFail(); + } +} + +THUMB_FUNC u32 FUN_02004A6C(struct UnkStruct_020040F4_1 *param0, u32 param1) +{ + u32 res = NNS_SndWaveOutStart(*(u32 *)param0->unk00, + param0->unk04, + param0->unk08, + param0->unk0c, + param0->unk10, + param0->unk14, + param0->unk18, + param0->unk1c, + param0->unk20, + param0->unk24); + if (res == 0) + { + FUN_02004A04(param1); + } + + return res; +} + +THUMB_FUNC void FUN_02004AAC(u32 param0) +{ + NNS_SndWaveOutStop(*(u32 *)FUN_02004930(param0)); +} + +THUMB_FUNC void FUN_02004ABC(u32 param0) +{ + NNS_SndWaveOutIsPlaying(*(u32 *)FUN_02004930(param0)); +} + +THUMB_FUNC void FUN_02004ACC(u32 param0, u32 param1) +{ + if (param1 > 127) + { + param1 = 127; + } + + NNS_SndWaveOutSetPan(*(u32 *)FUN_02004930(param0), param1); +} + +THUMB_FUNC void FUN_02004AE4(u32 param0, u32 param1) +{ + NNS_SndWaveOutSetSpeed(*(u32 *)FUN_02004930(param0), param1); +} + +THUMB_FUNC void FUN_02004AF8(u32 param0, s32 param1) +{ + if (FUN_020313EC() == 1) + { + NNS_SndWaveOutSetVolume(*(u32 *)FUN_02004930(param0), param1 / 5); + return; + } + + NNS_SndWaveOutSetVolume(*(u32 *)FUN_02004930(param0), param1); +} + +THUMB_FUNC u32 FUN_02004B30(u32 param0, s32 param1, u32 param2, u32 param3, u32 param4) +{ + GetSoundDataPointer(); + + void **r4 = FUN_02003D38(33); + GF_ASSERT(param3 == 14 || param3 == 15); + + struct WaveArcInfo *r7 = NNS_SndArcGetWaveArcInfo(param0); + if (r7 == 0) + { + GF_AssertFail(); + return 0; + } + + u32 r6 = NNS_SndArcGetFileSize(r7->unk00); + if (r6 == 0) + { + GF_AssertFail(); + return 0; + } + + if (param3 == 14) + { + void *ptr = AllocFromHeap(param4, r6); + *r4 = ptr; + if (ptr == NULL) + { + GF_AssertFail(); + return 0; + } + + memset(ptr, 0, r6); + if (NNS_SndArcReadFile(r7->unk00, *r4, r6, 0) == -1) + { + GF_AssertFail(); + return 0; + } + + FUN_02004C1C(*r4, r6); + } + + void *res = FUN_02004930(param3); + + struct UnkStruct_020040F4_1 st8; + st8.unk04 = 0; + st8.unk00 = res; + st8.unk08 = *r4; + st8.unk0c = 0; + st8.unk18 = 0x3443; + st8.unk10 = 0; + st8.unk1c = param1; + st8.unk20 = 0x6000; + st8.unk24 = param2; + st8.unk14 = r6; + + u32 ret = FUN_02004A6C(&st8, param3); + FUN_02004AF8(param3, param1); + u8 *r0 = FUN_02003D38(14); + *r0 = 1; + + return ret; +} + +THUMB_FUNC void FUN_02004C1C(u8 *param0, u32 param1) +{ + for (u32 r5 = 0; r5 < param1 / 2; r5++) + { + u8 r4 = param0[r5]; + param0[r5] = param0[param1 - 1 - r5]; + param0[param1 - 1 - r5] = r4; + } +} + +THUMB_FUNC void FUN_02004C3C(u32 param0) +{ + GetSoundDataPointer(); + u8 *ptr = FUN_02003D38(14); + void **ptr2 = FUN_02003D38(33); + + GF_ASSERT(param0 == 14 || param0 == 15); + + FUN_02004AAC(param0); + + if (*ptr == 1) + { + *ptr = 0; + FreeToHeap(*ptr2); + } +} + +THUMB_FUNC BOOL FUN_02004C78() +{ + return NNS_SndCaptureIsActive(); +} + +THUMB_FUNC u32 FUN_02004C80(u32 param0) +{ + GetSoundDataPointer(); + + return NNS_SndCaptureStartReverb(FUN_02003D38(3), 0x1000, 0, 0x3E80, param0); +} + +THUMB_FUNC void FUN_02004CA4(u32 param0) +{ + NNS_SndCaptureStopReverb(param0); +} + +THUMB_FUNC void FUN_02004CAC() +{ + NNS_SndCaptureSetReverbVolume(); +} + +THUMB_FUNC void FUN_02004CB4() +{ + GetSoundDataPointer(); + + MI_CpuFill8(FUN_02003D38(4), 0, 0x1c); + + void *r4 = FUN_02003D38(3); + void *st8 = FUN_02003D38(4); + + NNS_SndCaptureStartEffect(r4, 0x1000, 0, 0x55F0, 2, FUN_02005068, st8); +} + +THUMB_FUNC void FUN_02004CFC() +{ + NNS_SndCaptureStopEffect(); +} + +THUMB_FUNC void FUN_02004D04(s32 param0) +{ + u8 *ptr = FUN_02003D38(19); + + if (param0 > 8) + { + param0 = 8; + } + else if (param0 < 0) + { + param0 = 0; + } + + *ptr = (u8)param0; +} + +THUMB_FUNC void FUN_02004D20(int param0, u32 param1, u32 param2) +{ + NNS_SndPlayerSetTrackPitch(FUN_02003FF4(param0), param1, param2); +} + +THUMB_FUNC void FUN_02004D34(u16 param0, u32 param1, u32 param2) +{ + FUN_02004D20((int)FUN_02004018(FUN_020048D0(param0)), param1, param2); +} + +THUMB_FUNC void FUN_02004D4C(int param0, u32 param1, u32 param2) +{ + NNS_SndPlayerSetTrackPan(FUN_02003FF4(param0), param1, param2); +} + +THUMB_FUNC void FUN_02004D60(u32 param0) +{ + NNS_SndSetMonoFlag(param0); + UNK_021C3DD8[0] = param0; +} + +THUMB_FUNC void FUN_02004D74(u32 param0) +{ + *(u32 *)FUN_02003D38(6) = param0; +} + +THUMB_FUNC void FUN_02004D84(u32 param0) +{ + *(u32 *)FUN_02003D38(7) = param0; +} + +THUMB_FUNC u16 FUN_02004D94() +{ + u16 *ptr = FUN_02003D38(7); + + if (*ptr == 0) + { + *ptr = 0; + return 0; + } + + return --(*ptr); +} + +THUMB_FUNC u8 *FUN_02004DB4() +{ + return UNK_021C3DE0; +} + +THUMB_FUNC void FUN_02004DBC(u8 param0) +{ + *(u8 *)FUN_02003D38(18) = param0; +} + +THUMB_FUNC u32 FUN_02004DCC(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5) +{ + u8 *ptr = FUN_02003D38(21); + + FUN_02004E44(param0, param1, param2, param3, param4, param5); + + *ptr = 0; + FUN_02003CE8(5); + return 1; +} + +THUMB_FUNC u32 FUN_02004E08( + u32 param0, u16 param1, u32 param2, u32 param3, u32 param35, u8 param4, u32 param5) +{ + u32 *ptr = FUN_02003D38(8); + + FUN_02004E44(param0, param1, param2, param3, param4, param5); + + *ptr = param35; + FUN_02003CE8(6); + return 1; +} + +THUMB_FUNC void FUN_02004E44(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5) +{ +#pragma unused(param0) +#pragma unused(param5) + u32 *ptr = FUN_02003D38(2); + + FUN_020053CC(0, param2); + FUN_02004110(0); + FUN_02004130(param1); + FUN_02004D84(param3); + *ptr = FUN_020048F4(param1); + + FUN_02004DBC(param4); +} + +THUMB_FUNC u32 FUN_02004E80(u32 param0) +{ + if (param0 == 0) + { + return 0; + } + + return param0 + 12; +} + +THUMB_FUNC u32 FUN_02004E8C(u32 *param0) +{ + if (param0 == NULL) + { + return 0; + } + + return param0[2]; +} + +THUMB_FUNC u32 FUN_02004E98(s32 param0) +{ + GF_Snd_RestoreState(FUN_02004748(5)); + + u16 r4 = (u16)param0; + + if (r4 != 0x1B9 && (param0 > 0x1ef || param0 == 0)) + { + r4 = 1; + } + + GF_Snd_LoadWaveArc(r4); + return FUN_02004ED0(r4); +} + +THUMB_FUNC u32 FUN_02004ED0(s32 param0) +{ + u32 *ptr = FUN_02003D38(32); + + u16 r4 = (u16)param0; + + if (r4 != 0x1B9 && (param0 > 0x1ef || param0 == 0)) + { + r4 = 1; + } + + struct WaveArcInfo *info = NNS_SndArcGetWaveArcInfo(r4); + if (info == NULL) + { + GF_AssertFail(); + return 0; + } + + u32 address = NNS_SndArcGetFileAddress(info->unk00); + if (address == 0) + { + GF_AssertFail(); + return 0; + } + + *ptr = SND_GetWaveDataAddress(address, 0); + return *ptr; +} + +THUMB_FUNC u32 FUN_02004F28(u32 param0, struct UnkStruct_020040F4_2 *param1, s32 param2) +{ +#pragma unused(param0) + u32 r4 = FUN_02004F64(1); + u32 r5 = param1->unk08; + + s32 r1 = (param2 / (3 * 0x100)) << 1; + if (r1 < 0) + { + r1 = 32 / r1; + r1 = -r1; + } + else if (r1 == 0) + { + r1 = 32; + } + else + { + r1 = 32 * r1; + } + + u32 r0 = r4 * r1; + if (r0 >= r5) + { + r0 = 0; + } + + return r0; +} + +THUMB_FUNC u32 FUN_02004F64(int param0) +{ + return NNS_SndPlayerGetTick(FUN_02003FF4(param0)); +} + +THUMB_FUNC void FUN_02004F70( + struct UnkStruct_020040F4_2 *param0, u8 *param1, int param2, s32 param3) +{ + int r0; + s32 r1; + int i, j; + u32 r12 = FUN_02004F28(1, param0, param3); + r1 = (s32)r12 - 100; + if (r1 < 0) + { + r1 = 0; + } + + int r3 = 0; + int r7 = 0; + s8 r5; + if (param0->unk0c[r1] < 0x80) + { + r5 = 1; + } + else + { + r5 = -1; + } + r5 = (s8)(s32)r5; + + for (i = r1; i < r12; i += 2) + { + r0 = 0; + if (r5 > 0) + { + if (param0->unk0c[i] > 0x80) + { + r0 = 1; + } + else + { + r3++; + } + } + else + { + if (param0->unk0c[i] < 0x80) + { + r0 = 1; + } + else + { + r3++; + } + } + + if (r0 == 1) + { + for (j = 0; j < 9; j++) + { + if (r3 < UNK_020ECB8C[j]) + { + r7 = j; + break; + } + } + + if (r7 >= param2) + { + r7 = param2 - 1; + } + + if (r3 != 0) + { + param1[param2 - 1 - r7]++; + } + + r3 = 0; + r0 = 0; + if (param0->unk0c[i] < 0x80) + { + r5 = 1; + } + else + { + r5 = -1; + } + r5 = (s8)(s32)r5; + } + } + + for (i = 0; i < param2; i++) + { + if (param1[i] >= 10) + { + param1[i] = 9; + } + } + + for (i = 0; i < param2 - 1; i++) + { + if (param1[i] == 0 && param1[i + 1] != 0) + { + param1[i] = (u8)(param1[i + 1] / 2); + return; + } + } +} + +THUMB_FUNC void FUN_02005068(s16 *param0, s16 *param1, u32 param2, u32 param3, void *param4) +{ + s16 st10[8][2]; + s16(*st0)[2] = param4; + u8 *r7 = FUN_02003D38(19); + + int r0; + int i, j; + + if (param3 != 1) + { + param2 /= 2; + } + + if (*r7 == 0) + { + return; + } + + for (i = 0; i < *r7; i++) + { + st10[i][0] = param0[param2 - (*r7) + i]; + st10[i][1] = param1[param2 - (*r7) + i]; + } + + for (i = (int)param2 - 1; i >= *r7 - 1; i--) + { + r0 = 0; + for (j = 0; j < *r7; j++) + { + r0 += param0[i - j]; + } + + param0[i] = (s16)(r0 / (*r7)); + + r0 = 0; + for (j = 0; j < *r7; j++) + { + r0 += param1[i - j]; + } + + param1[i] = (s16)(r0 / (*r7)); + } + + for (i = 0; i < *r7; i++) + { + st0[i][0] = st10[i][0]; + st0[i][1] = st10[i][1]; + } + + DC_FlushRange(param0, param2); + DC_FlushRange(param1, param2); +} + +THUMB_FUNC void FUN_02005160(u32 param0) +{ + NNS_SndPlayerSetAllocatableChannel(7, param0); +} + +THUMB_FUNC void FUN_0200516C(u32 param0) +{ + if (param0 == 0) + { + FUN_02005160(0x7ff); + FUN_02004CA4(0); + } + else if (param0 == 1) + { + FUN_02005160(0x7fff); + FUN_02004C80(30); + } + else + { + FUN_02005160(0x7fff); + FUN_02004C80(15); + } + + FUN_02004C78(); +} + +THUMB_FUNC void FUN_020051AC() +{ + if (FUN_02005404() == FALSE && FUN_020048EC(FUN_02003FF4(0)) != -1 && FUN_02004124() != 0x47e) + { + + FUN_02005454(); + FUN_020047C8(1, 1); + return; + } + + FUN_0200541C(); +} + +THUMB_FUNC void FUN_020051EC(u32 param0, u8 param1) +{ + NNS_SndPlayerSetPlayerVolume(param0, param1); +} diff --git a/arm9/src/unk_0204AEA8.c b/arm9/src/unk_0204AEA8.c index a2b2dd71..54deef4d 100644 --- a/arm9/src/unk_0204AEA8.c +++ b/arm9/src/unk_0204AEA8.c @@ -2,9 +2,9 @@ #include "heap.h" #include "unk_0204639C.h" #include "unk_0204AEA8.h" +#include "unk_020040F4.h" extern void MOD05_021E3444(u32, struct UnkSavStruct80 *, u32); -extern void FUN_0200433C(u32, u16, u32); THUMB_FUNC BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) { diff --git a/include/unk_020040F4.h b/include/unk_020040F4.h new file mode 100644 index 00000000..4169aca5 --- /dev/null +++ b/include/unk_020040F4.h @@ -0,0 +1,111 @@ +#include "global.h" + +struct WaveArcInfo +{ + u32 unk00 : 24; +}; + +struct UnkStruct_020040F4_1 +{ + void *unk00; + u32 unk04; + void *unk08; + u32 unk0c; + u32 unk10; + u32 unk14; + u32 unk18; + s32 unk1c; + u32 unk20; + u32 unk24; +}; + +struct UnkStruct_020040F4_2 +{ + u32 unk00; + u32 unk04; + u32 unk08; + u8 unk0c[9]; +}; + +void FUN_020040F4(u8 param0); +u8 FUN_02004104(); +void FUN_02004110(u16 param0); +u16 FUN_02004124(); +void FUN_02004130(u16 param0); +u16 FUN_02004140(); +void FUN_0200414C(u16 param0); +void FUN_0200415C(u8 param0); +BOOL FUN_02004180(s32 param0); +u32 FUN_0200433C(u8 param0, int param1, u32 param2); +void FUN_020044A8(s32 param0); +void FUN_020044D4(int param0, u32 param1); +void FUN_02004568(int seqNo, u16 param1); +void FUN_020045C4(int param0, u32 param1); +void FUN_02004648(int param0, u32 param1); +void FUN_02004680(int param0, u32 param1); +void FUN_020046A0(int param0, u32 param1); +void FUN_020046C4(int param0, u32 param1); +void FUN_020046E8(s32 param0); +void FUN_02004704(s32 param0, int param1, u32 param2); +void FUN_02004724(int param0); +void FUN_02004738(); +int FUN_02004748(s32 param0); +void FUN_020047C8(u8 param0, u8 param1); +void FUN_02004810(); +void FUN_02004828(int param0, u32 param1, u32 param2); +void FUN_0200483C(int param0, s32 param1); +void FUN_02004858(u32 param0, int param1); +void FUN_0200488C(u16 param0, u16 param1); +void FUN_020048A0(int param0, u32 param1, u32 param2); +BOOL FUN_020048BC(int param0); +u8 FUN_020048D0(u16 param0); +u32 FUN_020048EC(u32 *param0); +u32 FUN_020048F4(u16 param0); +u16 FUN_02004900(u16 param0); +u32 FUN_02004914(u32 param0); +u32 FUN_0200491C(u32 param0); +u32 FUN_02004928(u32 param0, u32 param1, u32 param2, u32 param3); +void *FUN_02004930(u32 param0); +u32 FUN_02004984(u32 param0); +void FUN_02004A04(u32 param0); +u32 FUN_02004A6C(struct UnkStruct_020040F4_1 *param0, u32 param1); +void FUN_02004AAC(u32 param0); +void FUN_02004ABC(u32 param0); +void FUN_02004ACC(u32 param0, u32 param1); +void FUN_02004AE4(u32 param0, u32 param1); +void FUN_02004AF8(u32 param0, s32 param1); +u32 FUN_02004B30(u32 param0, s32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02004C1C(u8 *param0, u32 param1); +void FUN_02004C3C(u32 param0); +BOOL FUN_02004C78(); +u32 FUN_02004C80(u32 param0); +void FUN_02004CA4(u32 param0); +void FUN_02004CAC(); +void FUN_02004CB4(); +void FUN_02004CFC(); +void FUN_02004D04(s32 param0); +void FUN_02004D20(int param0, u32 param1, u32 param2); +void FUN_02004D34(u16 param0, u32 param1, u32 param2); +void FUN_02004D4C(int param0, u32 param1, u32 param2); +void FUN_02004D60(u32 param0); +void FUN_02004D74(u32 param0); +void FUN_02004D84(u32 param0); +u16 FUN_02004D94(); +u8 *FUN_02004DB4(); +void FUN_02004DBC(u8 param0); +u32 FUN_02004DCC(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5); +u32 FUN_02004E08( + u32 param0, u16 param1, u32 param2, u32 param3, u32 param35, u8 param4, u32 param5); +void FUN_02004E44(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5); +u32 FUN_02004E80(u32 param0); +u32 FUN_02004E8C(u32 *param0); +u32 FUN_02004E98(s32 param0); +u32 FUN_02004ED0(s32 param0); +u32 FUN_02004F28(u32 param0, struct UnkStruct_020040F4_2 *param1, s32 param2); +u32 FUN_02004F64(int param0); +void FUN_02004F70(struct UnkStruct_020040F4_2 *param0, u8 *param1, int param2, s32 param3); +void FUN_02005068(s16 *param0, s16 *param1, u32 param2, u32 param3, void *param4); +void FUN_02005160(u32 param0); +void FUN_0200516C(u32 param0); +void FUN_020051AC(); +void FUN_020051EC(u32 param0, u8 param1); |