diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-06-25 13:17:06 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-06-25 13:17:06 -0400 |
commit | f61b7cc024fd9be692960ee284bb078fb5f1f125 (patch) | |
tree | 4b6c5870add11dbe2910e4a27d56d902239cd7ed | |
parent | 40c3f6e85a2d25d3d98b2cfdaf1dd6872bbb4a6d (diff) |
sound.c
-rw-r--r-- | arm9/arm9.lcf | 6 | ||||
-rw-r--r-- | arm9/asm/unk_02003B98.s | 780 | ||||
-rw-r--r-- | arm9/asm/unk_020ADA84.s | 233 | ||||
-rw-r--r-- | arm9/global.inc | 2 | ||||
-rw-r--r-- | arm9/lib/include/SPI_mic.h | 6 | ||||
-rw-r--r-- | arm9/lib/include/SPI_pm.h | 2 | ||||
-rw-r--r-- | arm9/src/main.c | 8 | ||||
-rw-r--r-- | arm9/src/sound.c | 321 | ||||
-rw-r--r-- | include/options.h | 15 | ||||
-rw-r--r-- | include/sdat.h | 42 | ||||
-rw-r--r-- | include/sound.h | 65 |
11 files changed, 544 insertions, 936 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index ca9690b9..546d2b71 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -131,7 +131,7 @@ SECTIONS { unk_02002C14.o (.text) unk_02002F08.o (.text) unk_020030E8.o (.text) - unk_02003B98.o (.text) + sound.o (.text) unk_020040F4.o (.text) unk_020051F4.o (.text) unk_02005CFC.o (.text) @@ -772,7 +772,7 @@ SECTIONS { SDK_STATIC_TEXT_END = .; SDK_STATIC_DATA_START = .; - unk_02003B98.o (.data) + sound.o (.data) filesystem.o (.data) unk_02006D98.o (.data) unk_0200E850.o (.data) @@ -846,7 +846,7 @@ SECTIONS { main.o (.bss) unk_020023C0.o (.bss) unk_02002C14.o (.bss) - unk_02003B98.o (.bss) + sound.o (.bss) unk_020040F4.o (.bss) poke_overlay.o (.bss) unk_02009EAC.o (.bss) diff --git a/arm9/asm/unk_02003B98.s b/arm9/asm/unk_02003B98.s deleted file mode 100644 index 83b1e1d3..00000000 --- a/arm9/asm/unk_02003B98.s +++ /dev/null @@ -1,780 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .data - ; 0x02104780 - .global UNK_02104780 -UNK_02104780: ; 0x02104780 - .asciz "data/sound/sound_data.sdat" - - .section .bss - .global UNK_02107070 -UNK_02107070: ; 0x02107070 - .space 0x8 - - .global sSoundDataBuffer -sSoundDataBuffer: ; 0x02107078 - ; 00: SDATHeader - ; - 00: char magic[4] - ; - 04: u16 byte_order - ; - 06: u16 version - ; - 08: u32 filesize - ; - 0C: u16 header size - ; - 0E: u16 section count - ; - 10: u32 symb_offset - ; - 14: u32 symb_size - ; - 18: u32 info_offset - ; - 1C: u32 info_size - ; - 20: u32 fat_offset - ; - 24: u32 fat_size - ; - 28: u32 file_offset - ; - 2c: u32 file_size - ; 30: u32 - ; 34: FSFile - ; 7C: FSFileID - ; 84: u32 - ; 88: u32 - ; 8C: u32 - ; 90: u32 - ; 94: u8[0xBBB6C] - ; BBC00: u8[0x94] - ; BBC94: u8[0x24] - ; BBCB8: u32 - ; BBCBC: u32 - ; BBCC0: u8[0x20] - ; BBCE0: u8[0x1000] - ; BCCE0: u8[0x1C] - ; BCCFC: u16 - ; BCCFE: u16 - ; BCD00: u32 - ; BCD10: u8 - ; BCD11: u8 - ; BCD12: u16 - ; BCD14: u8 - ; BCD15: u8 - ; BCD16: u8 - ; BCD17: u8 - ; BCD18: u8 - ; BCD19: u8 - ; BCD1A: u8 - ; BCD1B: u8 - ; BCD1C: u32 - ; BCD20: u32 - ; BCD24: u32 - ; BCD28: u32 - ; BCD2C: u32 - ; BCD30: u32 - ; BCD34: u32 - ; BCD38: u32 - ; BCD3C: u32 - ; BCD40: u64 - ; BCD48: u32 - ; BCD4C: u32 - ; BCD50: u32 - ; BCD54: u32 - ; BCD58: u32 - ; BCD5C: u32 - .space 0xbcd60 - - .text - - thumb_func_start FUN_02003B98 -FUN_02003B98: ; 0x02003B98 - push {r4-r6, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - bl GetSoundDataPointer - add r4, r0, #0x0 - bl FUN_020C01D0 - bl FUN_020040C8 - add r0, r4, #0x0 - bl FUN_02004064 - add r0, r4, #0x0 - ldr r1, _02003C00 ; =0x000BBC00 - add r0, #0x94 - bl FUN_020C2A94 - add r1, r4, #0x0 - add r1, #0x90 - str r0, [r1, #0x0] - add r2, r4, #0x0 - add r2, #0x90 - ldr r1, _02003C04 ; =UNK_02104780 - ldr r2, [r2, #0x0] - add r0, r4, #0x0 - mov r3, #0x0 - bl FUN_020C26F8 - add r0, r4, #0x0 - add r0, #0x90 - ldr r0, [r0, #0x0] - bl FUN_020C39CC - add r0, r4, #0x0 - bl FUN_02004088 - add r0, r4, #0x0 - bl FUN_020040A4 - ldr r0, _02003C08 ; =UNK_02107070 - mov r1, #0x0 - str r1, [r0, #0x4] - ldr r0, _02003C0C ; =0x000BCD4C - str r5, [r4, r0] - ldrh r0, [r6, #0x0] - lsl r0, r0, #0x1a - lsr r0, r0, #0x1e - bl FUN_02004D60 - pop {r4-r6, pc} - nop -_02003C00: .word 0x000BBC00 -_02003C04: .word UNK_02104780 -_02003C08: .word UNK_02107070 -_02003C0C: .word 0x000BCD4C - - thumb_func_start FUN_02003C10 -FUN_02003C10: ; 0x02003C10 - push {r4, lr} - bl GetSoundDataPointer - add r4, r0, #0x0 - bl FUN_02003D04 - cmp r0, #0x0 - bne _02003C30 - ldr r0, _02003C3C ; =0x000BCD00 - ldr r1, [r4, r0] - cmp r1, #0x0 - ble _02003C2C - sub r1, r1, #0x1 - str r1, [r4, r0] -_02003C2C: - bl FUN_02003C40 -_02003C30: - bl FUN_02005CFC - bl FUN_020C01A0 - pop {r4, pc} - nop -_02003C3C: .word 0x000BCD00 - - thumb_func_start FUN_02003C40 -FUN_02003C40: ; 0x02003C40 - push {r4, lr} - bl GetSoundDataPointer - add r4, r0, #0x0 - ldr r0, _02003CDC ; =UNK_02107070 - ldr r0, [r0, #0x0] - cmp r0, #0x6 - bhi _02003CD8 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02003C5C: ; jump table (using 16-bit offset) - .short _02003CD8 - _02003C5C - 2; case 0 - .short _02003C6A - _02003C5C - 2; case 1 - .short _02003CD8 - _02003C5C - 2; case 2 - .short _02003C72 - _02003C5C - 2; case 3 - .short _02003C82 - _02003C5C - 2; case 4 - .short _02003C92 - _02003C5C - 2; case 5 - .short _02003CB0 - _02003C5C - 2; case 6 -_02003C6A: - mov r0, #0x2 - bl FUN_02003CE8 - pop {r4, pc} -_02003C72: - bl FUN_02005404 - cmp r0, #0x0 - bne _02003CD8 - mov r0, #0x2 - bl FUN_02003CE8 - pop {r4, pc} -_02003C82: - bl FUN_02005404 - cmp r0, #0x0 - bne _02003CD8 - mov r0, #0x2 - bl FUN_02003CE8 - pop {r4, pc} -_02003C92: - bl FUN_02005404 - cmp r0, #0x0 - bne _02003CD8 - bl FUN_02004D94 - cmp r0, #0x0 - bne _02003CD8 - bl FUN_020040DC - ldr r0, _02003CE0 ; =0x000BCD0E - ldrh r0, [r4, r0] - bl FUN_0200521C - pop {r4, pc} -_02003CB0: - bl FUN_02005404 - cmp r0, #0x0 - bne _02003CD8 - bl FUN_02004D94 - cmp r0, #0x0 - bne _02003CD8 - bl FUN_020040DC - ldr r0, _02003CE0 ; =0x000BCD0E - ldrh r0, [r4, r0] - bl FUN_0200521C - ldr r1, _02003CE4 ; =0x000BCD08 - mov r0, #0x7f - ldr r1, [r4, r1] - mov r2, #0x0 - bl FUN_0200538C -_02003CD8: - pop {r4, pc} - nop -_02003CDC: .word UNK_02107070 -_02003CE0: .word 0x000BCD0E -_02003CE4: .word 0x000BCD08 - - thumb_func_start FUN_02003CE8 -FUN_02003CE8: ; 0x02003CE8 - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - ldr r1, _02003CFC ; =0x000BCCFC - mov r2, #0x0 - strh r2, [r0, r1] - ldr r0, _02003D00 ; =UNK_02107070 - str r4, [r0, #0x0] - pop {r4, pc} - .balign 4 -_02003CFC: .word 0x000BCCFC -_02003D00: .word UNK_02107070 - - thumb_func_start FUN_02003D04 -FUN_02003D04: ; 0x02003D04 - push {r4, lr} - bl GetSoundDataPointer - add r4, r0, #0x0 - mov r0, #0x2 - bl FUN_020048BC - cmp r0, #0x0 - beq _02003D1A - mov r0, #0x1 - pop {r4, pc} -_02003D1A: - ldr r0, _02003D2C ; =0x000BCD12 - ldrh r0, [r4, r0] - cmp r0, #0x0 - beq _02003D26 - mov r0, #0x1 - pop {r4, pc} -_02003D26: - mov r0, #0x0 - pop {r4, pc} - nop -_02003D2C: .word 0x000BCD12 - - thumb_func_start GetSoundDataPointer -GetSoundDataPointer: ; 0x02003D30 - ldr r0, _02003D34 ; =sSoundDataBuffer - bx lr - .balign 4 -_02003D34: .word sSoundDataBuffer - - thumb_func_start FUN_02003D38 -FUN_02003D38: ; 0x02003D38 - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - cmp r4, #0x27 - bls _02003D46 - b _02003E92 -_02003D46: - add r1, r4, r4 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02003D52: ; jump table (using 16-bit offset) - .short _02003DA8 - _02003D52 - 2; case 0 - .short _02003DAE - _02003D52 - 2; case 1 - .short _02003DB4 - _02003D52 - 2; case 2 - .short _02003DBA - _02003D52 - 2; case 3 - .short _02003DC0 - _02003D52 - 2; case 4 - .short _02003DA2 - _02003D52 - 2; case 5 - .short _02003DC6 - _02003D52 - 2; case 6 - .short _02003DCC - _02003D52 - 2; case 7 - .short _02003DD2 - _02003D52 - 2; case 8 - .short _02003DD8 - _02003D52 - 2; case 9 - .short _02003DDE - _02003D52 - 2; case 10 - .short _02003DE4 - _02003D52 - 2; case 11 - .short _02003DEA - _02003D52 - 2; case 12 - .short _02003DF0 - _02003D52 - 2; case 13 - .short _02003DF6 - _02003D52 - 2; case 14 - .short _02003DFC - _02003D52 - 2; case 15 - .short _02003E02 - _02003D52 - 2; case 16 - .short _02003E08 - _02003D52 - 2; case 17 - .short _02003E0E - _02003D52 - 2; case 18 - .short _02003E14 - _02003D52 - 2; case 19 - .short _02003E1A - _02003D52 - 2; case 20 - .short _02003E20 - _02003D52 - 2; case 21 - .short _02003E26 - _02003D52 - 2; case 22 - .short _02003E2C - _02003D52 - 2; case 23 - .short _02003E32 - _02003D52 - 2; case 24 - .short _02003E38 - _02003D52 - 2; case 25 - .short _02003E3E - _02003D52 - 2; case 26 - .short _02003E44 - _02003D52 - 2; case 27 - .short _02003E4A - _02003D52 - 2; case 28 - .short _02003E50 - _02003D52 - 2; case 29 - .short _02003E56 - _02003D52 - 2; case 30 - .short _02003E5C - _02003D52 - 2; case 31 - .short _02003E62 - _02003D52 - 2; case 32 - .short _02003E68 - _02003D52 - 2; case 33 - .short _02003E6E - _02003D52 - 2; case 34 - .short _02003E74 - _02003D52 - 2; case 35 - .short _02003E7A - _02003D52 - 2; case 36 - .short _02003E80 - _02003D52 - 2; case 37 - .short _02003E86 - _02003D52 - 2; case 38 - .short _02003E8C - _02003D52 - 2; case 39 -_02003DA2: - ldr r1, _02003E9C ; =0x000BCCFE - add r0, r0, r1 - pop {r4, pc} -_02003DA8: - ldr r1, _02003EA0 ; =0x000BBCB8 - add r0, r0, r1 - pop {r4, pc} -_02003DAE: - ldr r1, _02003EA4 ; =0x000BBCBC - add r0, r0, r1 - pop {r4, pc} -_02003DB4: - ldr r1, _02003EA8 ; =0x000BBCC0 - add r0, r0, r1 - pop {r4, pc} -_02003DBA: - ldr r1, _02003EAC ; =0x000BBCE0 - add r0, r0, r1 - pop {r4, pc} -_02003DC0: - ldr r1, _02003EB0 ; =0x000BCCE0 - add r0, r0, r1 - pop {r4, pc} -_02003DC6: - ldr r1, _02003EB4 ; =0x000BCD00 - add r0, r0, r1 - pop {r4, pc} -_02003DCC: - ldr r1, _02003EB8 ; =0x000BCD04 - add r0, r0, r1 - pop {r4, pc} -_02003DD2: - ldr r1, _02003EBC ; =0x000BCD08 - add r0, r0, r1 - pop {r4, pc} -_02003DD8: - ldr r1, _02003EC0 ; =0x000BCD0C - add r0, r0, r1 - pop {r4, pc} -_02003DDE: - ldr r1, _02003EC4 ; =0x000BCD0E - add r0, r0, r1 - pop {r4, pc} -_02003DE4: - ldr r1, _02003EC8 ; =0x000BCD10 - add r0, r0, r1 - pop {r4, pc} -_02003DEA: - ldr r1, _02003ECC ; =0x000BCD11 - add r0, r0, r1 - pop {r4, pc} -_02003DF0: - ldr r1, _02003ED0 ; =0x000BCD12 - add r0, r0, r1 - pop {r4, pc} -_02003DF6: - ldr r1, _02003ED4 ; =0x000BCD14 - add r0, r0, r1 - pop {r4, pc} -_02003DFC: - ldr r1, _02003ED8 ; =0x000BCD15 - add r0, r0, r1 - pop {r4, pc} -_02003E02: - ldr r1, _02003EDC ; =0x000BCD16 - add r0, r0, r1 - pop {r4, pc} -_02003E08: - ldr r1, _02003EE0 ; =0x000BCD17 - add r0, r0, r1 - pop {r4, pc} -_02003E0E: - ldr r1, _02003EE4 ; =0x000BCD18 - add r0, r0, r1 - pop {r4, pc} -_02003E14: - ldr r1, _02003EE8 ; =0x000BCD19 - add r0, r0, r1 - pop {r4, pc} -_02003E1A: - ldr r1, _02003EEC ; =0x000BCD1A - add r0, r0, r1 - pop {r4, pc} -_02003E20: - ldr r1, _02003EF0 ; =0x000BCD1B - add r0, r0, r1 - pop {r4, pc} -_02003E26: - ldr r1, _02003EF4 ; =0x000BCD1C - add r0, r0, r1 - pop {r4, pc} -_02003E2C: - ldr r1, _02003EF8 ; =0x000BCD20 - add r0, r0, r1 - pop {r4, pc} -_02003E32: - ldr r1, _02003EFC ; =0x000BCD24 - add r0, r0, r1 - pop {r4, pc} -_02003E38: - ldr r1, _02003F00 ; =0x000BCD28 - add r0, r0, r1 - pop {r4, pc} -_02003E3E: - ldr r1, _02003F04 ; =0x000BCD2C - add r0, r0, r1 - pop {r4, pc} -_02003E44: - ldr r1, _02003F08 ; =0x000BCD30 - add r0, r0, r1 - pop {r4, pc} -_02003E4A: - ldr r1, _02003F0C ; =0x000BCD34 - add r0, r0, r1 - pop {r4, pc} -_02003E50: - ldr r1, _02003F10 ; =0x000BCD38 - add r0, r0, r1 - pop {r4, pc} -_02003E56: - ldr r1, _02003F14 ; =0x000BCD39 - add r0, r0, r1 - pop {r4, pc} -_02003E5C: - ldr r1, _02003F18 ; =0x000BCD3A - add r0, r0, r1 - pop {r4, pc} -_02003E62: - ldr r1, _02003F1C ; =0x000BCD3C - add r0, r0, r1 - pop {r4, pc} -_02003E68: - ldr r1, _02003F20 ; =0x000BCD40 - add r0, r0, r1 - pop {r4, pc} -_02003E6E: - ldr r1, _02003F24 ; =0x000BCD48 - add r0, r0, r1 - pop {r4, pc} -_02003E74: - ldr r1, _02003F28 ; =0x000BCD4C - add r0, r0, r1 - pop {r4, pc} -_02003E7A: - ldr r1, _02003F2C ; =0x000BCD50 - add r0, r0, r1 - pop {r4, pc} -_02003E80: - ldr r1, _02003F30 ; =0x000BCD54 - add r0, r0, r1 - pop {r4, pc} -_02003E86: - ldr r1, _02003F34 ; =0x000BCD58 - add r0, r0, r1 - pop {r4, pc} -_02003E8C: - ldr r1, _02003F38 ; =0x000BCD5C - add r0, r0, r1 - pop {r4, pc} -_02003E92: - bl ErrorHandling - mov r0, #0x0 - pop {r4, pc} - nop -_02003E9C: .word 0x000BCCFE -_02003EA0: .word 0x000BBCB8 -_02003EA4: .word 0x000BBCBC -_02003EA8: .word 0x000BBCC0 -_02003EAC: .word 0x000BBCE0 -_02003EB0: .word 0x000BCCE0 -_02003EB4: .word 0x000BCD00 -_02003EB8: .word 0x000BCD04 -_02003EBC: .word 0x000BCD08 -_02003EC0: .word 0x000BCD0C -_02003EC4: .word 0x000BCD0E -_02003EC8: .word 0x000BCD10 -_02003ECC: .word 0x000BCD11 -_02003ED0: .word 0x000BCD12 -_02003ED4: .word 0x000BCD14 -_02003ED8: .word 0x000BCD15 -_02003EDC: .word 0x000BCD16 -_02003EE0: .word 0x000BCD17 -_02003EE4: .word 0x000BCD18 -_02003EE8: .word 0x000BCD19 -_02003EEC: .word 0x000BCD1A -_02003EF0: .word 0x000BCD1B -_02003EF4: .word 0x000BCD1C -_02003EF8: .word 0x000BCD20 -_02003EFC: .word 0x000BCD24 -_02003F00: .word 0x000BCD28 -_02003F04: .word 0x000BCD2C -_02003F08: .word 0x000BCD30 -_02003F0C: .word 0x000BCD34 -_02003F10: .word 0x000BCD38 -_02003F14: .word 0x000BCD39 -_02003F18: .word 0x000BCD3A -_02003F1C: .word 0x000BCD3C -_02003F20: .word 0x000BCD40 -_02003F24: .word 0x000BCD48 -_02003F28: .word 0x000BCD4C -_02003F2C: .word 0x000BCD50 -_02003F30: .word 0x000BCD54 -_02003F34: .word 0x000BCD58 -_02003F38: .word 0x000BCD5C - - thumb_func_start FUN_02003F3C -FUN_02003F3C: ; 0x02003F3C - push {r3-r5, lr} - add r5, r0, #0x0 - bl GetSoundDataPointer - add r0, #0x90 - ldr r0, [r0, #0x0] - bl FUN_020C290C - add r4, r0, #0x0 - mov r0, #0x0 - mvn r0, r0 - cmp r4, r0 - bne _02003F5A - bl ErrorHandling -_02003F5A: - cmp r5, #0x0 - beq _02003F60 - str r4, [r5, #0x0] -_02003F60: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02003F64 -FUN_02003F64: ; 0x02003F64 - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - add r0, #0x90 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl FUN_020C2828 - pop {r4, pc} - - thumb_func_start FUN_02003F78 -FUN_02003F78: ; 0x02003F78 - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - add r1, r0, #0x0 - add r1, #0x90 - ldr r1, [r1, #0x0] - add r0, r4, #0x0 - bl FUN_020C36A8 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02003F90 -FUN_02003F90: ; 0x02003F90 - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - add r1, r0, #0x0 - add r1, #0x90 - ldr r1, [r1, #0x0] - add r0, r4, #0x0 - bl FUN_020C3674 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02003FA8 -FUN_02003FA8: ; 0x02003FA8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bl GetSoundDataPointer - add r2, r0, #0x0 - add r2, #0x90 - ldr r2, [r2, #0x0] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_020C35E0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02003FC4 -FUN_02003FC4: ; 0x02003FC4 - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - add r1, r0, #0x0 - add r1, #0x90 - ldr r1, [r1, #0x0] - add r0, r4, #0x0 - bl FUN_020C360C - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02003FDC -FUN_02003FDC: ; 0x02003FDC - push {r4, lr} - add r4, r0, #0x0 - bl GetSoundDataPointer - add r1, r0, #0x0 - add r1, #0x90 - ldr r1, [r1, #0x0] - add r0, r4, #0x0 - bl FUN_020C3640 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02003FF4 -FUN_02003FF4: ; 0x02003FF4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl GetSoundDataPointer - add r4, r0, #0x0 - cmp r5, #0x9 - blt _02004008 - bl ErrorHandling - mov r5, #0x0 -_02004008: - ldr r0, _02004014 ; =0x000BBC94 - add r1, r4, r0 - lsl r0, r5, #0x2 - add r0, r1, r0 - pop {r3-r5, pc} - nop -_02004014: .word 0x000BBC94 - - thumb_func_start FUN_02004018 -FUN_02004018: ; 0x02004018 - push {r3, lr} - cmp r0, #0x7 - bhi _0200405A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0200402A: ; jump table (using 16-bit offset) - .short _0200403E - _0200402A - 2; case 0 - .short _0200403A - _0200402A - 2; case 1 - .short _02004042 - _0200402A - 2; case 2 - .short _02004046 - _0200402A - 2; case 3 - .short _0200404A - _0200402A - 2; case 4 - .short _0200404E - _0200402A - 2; case 5 - .short _02004052 - _0200402A - 2; case 6 - .short _02004056 - _0200402A - 2; case 7 -_0200403A: - mov r0, #0x0 - pop {r3, pc} -_0200403E: - mov r0, #0x1 - pop {r3, pc} -_02004042: - mov r0, #0x2 - pop {r3, pc} -_02004046: - mov r0, #0x3 - pop {r3, pc} -_0200404A: - mov r0, #0x4 - pop {r3, pc} -_0200404E: - mov r0, #0x5 - pop {r3, pc} -_02004052: - mov r0, #0x6 - pop {r3, pc} -_02004056: - mov r0, #0x7 - pop {r3, pc} -_0200405A: - bl ErrorHandling - mov r0, #0x3 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02004064 -FUN_02004064: ; 0x02004064 - push {r4, lr} - ldr r2, _02004080 ; =0x000BCD60 - mov r1, #0x0 - add r4, r0, #0x0 - bl memset - ldr r0, _02004084 ; =0x000BCD1C - mov r1, #0x0 -_02004074: - add r1, r1, #0x1 - str r1, [r4, r0] - add r4, r4, #0x4 - cmp r1, #0x7 - blt _02004074 - pop {r4, pc} - .balign 4 -_02004080: .word 0x000BCD60 -_02004084: .word 0x000BCD1C - - thumb_func_start FUN_02004088 -FUN_02004088: ; 0x02004088 - push {r3-r5, lr} - ldr r1, _020040A0 ; =0x000BBC94 - mov r4, #0x0 - add r5, r0, r1 -_02004090: - add r0, r5, #0x0 - bl FUN_020C0F80 - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, #0x9 - blt _02004090 - pop {r3-r5, pc} - .balign 4 -_020040A0: .word 0x000BBC94 - - thumb_func_start FUN_020040A4 -FUN_020040A4: ; 0x020040A4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _020040C0 ; =0x000BCD1C - add r0, r4, r0 - bl FUN_02003F3C - mov r0, #0x0 - bl FUN_02003F78 - ldr r0, _020040C4 ; =0x000BCD20 - add r0, r4, r0 - bl FUN_02003F3C - pop {r4, pc} - .balign 4 -_020040C0: .word 0x000BCD1C -_020040C4: .word 0x000BCD20 - - thumb_func_start FUN_020040C8 -FUN_020040C8: ; 0x020040C8 - push {r3, lr} - bl MIC_Init - mov r0, #0x1 - bl PM_SetAmp - mov r0, #0x2 - bl PM_SetAmpGain - pop {r3, pc} - - thumb_func_start FUN_020040DC -FUN_020040DC: ; 0x020040DC - push {r3, lr} - mov r0, #0x7 - mov r1, #0x0 - bl FUN_020C1040 - mov r0, #0x7 - bl FUN_02003FF4 - bl FUN_020C0F68 - pop {r3, pc} - .balign 4 diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s index e590a607..343f4c31 100644 --- a/arm9/asm/unk_020ADA84.s +++ b/arm9/asm/unk_020ADA84.s @@ -6370,24 +6370,16 @@ _020B13B8: cmp r0, #0x8 addls pc, pc, r0, lsl #0x2 b _020B1444 -_020B13E4: - b _020B1444 -_020B13E8: - b _020B1414 -_020B13EC: - b _020B141C -_020B13F0: - b _020B1444 -_020B13F4: - b _020B1424 -_020B13F8: - b _020B1444 -_020B13FC: - b _020B1444 -_020B1400: - b _020B1444 -_020B1404: - b _020B142C + ; Jump table + b _020B1444 ; case 0 + b _020B1414 ; case 1 + b _020B141C ; case 2 + b _020B1444 ; case 3 + b _020B1424 ; case 4 + b _020B1444 ; case 5 + b _020B1444 ; case 6 + b _020B1444 ; case 7 + b _020B142C ; case 8 _020B1408: cmp r0, #0x20 beq _020B143C @@ -6422,24 +6414,16 @@ _020B1448: cmp r0, #0x8 addls pc, pc, r0, lsl #0x2 b _020B14CC -_020B146C: - b _020B14CC -_020B1470: - b _020B149C -_020B1474: - b _020B14A4 -_020B1478: - b _020B14CC -_020B147C: - b _020B14AC -_020B1480: - b _020B14CC -_020B1484: - b _020B14CC -_020B1488: - b _020B14CC -_020B148C: - b _020B14B4 + ; Jump table + b _020B14CC ; case 0 + b _020B149C ; case 1 + b _020B14A4 ; case 2 + b _020B14CC ; case 3 + b _020B14AC ; case 4 + b _020B14CC ; case 5 + b _020B14CC ; case 6 + b _020B14CC ; case 7 + b _020B14B4 ; case 8 _020B1490: cmp r0, #0x20 beq _020B14C4 @@ -6563,24 +6547,16 @@ _020B15F8: cmp r0, #0x8 addls pc, pc, r0, lsl #0x2 b _020B1684 -_020B1624: - b _020B1684 -_020B1628: - b _020B1654 -_020B162C: - b _020B165C -_020B1630: - b _020B1684 -_020B1634: - b _020B1664 -_020B1638: - b _020B1684 -_020B163C: - b _020B1684 -_020B1640: - b _020B1684 -_020B1644: - b _020B166C + ; Jump table + b _020B1684 ; case 0 + b _020B1654 ; case 1 + b _020B165C ; case 2 + b _020B1684 ; case 3 + b _020B1664 ; case 4 + b _020B1684 ; case 5 + b _020B1684 ; case 6 + b _020B1684 ; case 7 + b _020B166C ; case 8 _020B1648: cmp r0, #0x20 beq _020B167C @@ -6615,24 +6591,16 @@ _020B1688: cmp r0, #0x8 addls pc, pc, r0, lsl #0x2 b _020B170C -_020B16AC: - b _020B170C -_020B16B0: - b _020B16DC -_020B16B4: - b _020B16E4 -_020B16B8: - b _020B170C -_020B16BC: - b _020B16EC -_020B16C0: - b _020B170C -_020B16C4: - b _020B170C -_020B16C8: - b _020B170C -_020B16CC: - b _020B16F4 + ; Jump table + b _020B170C ; case 0 + b _020B16DC ; case 1 + b _020B16E4 ; case 2 + b _020B170C ; case 3 + b _020B16EC ; case 4 + b _020B170C ; case 5 + b _020B170C ; case 6 + b _020B170C ; case 7 + b _020B16F4 ; case 8 _020B16D0: cmp r0, #0x20 beq _020B1704 @@ -6756,24 +6724,16 @@ _020B1838: cmp r0, #0x8 addls pc, pc, r0, lsl #0x2 b _020B18C4 -_020B1864: - b _020B18C4 -_020B1868: - b _020B1894 -_020B186C: - b _020B189C -_020B1870: - b _020B18C4 -_020B1874: - b _020B18A4 -_020B1878: - b _020B18C4 -_020B187C: - b _020B18C4 -_020B1880: - b _020B18C4 -_020B1884: - b _020B18AC + ; Jump table + b _020B18C4 ; case 0 + b _020B1894 ; case 1 + b _020B189C ; case 2 + b _020B18C4 ; case 3 + b _020B18A4 ; case 4 + b _020B18C4 ; case 5 + b _020B18C4 ; case 6 + b _020B18C4 ; case 7 + b _020B18AC ; case 8 _020B1888: cmp r0, #0x20 beq _020B18BC @@ -6808,24 +6768,16 @@ _020B18C8: cmp r0, #0x8 addls pc, pc, r0, lsl #0x2 b _020B194C -_020B18EC: - b _020B194C -_020B18F0: - b _020B191C -_020B18F4: - b _020B1924 -_020B18F8: - b _020B194C -_020B18FC: - b _020B192C -_020B1900: - b _020B194C -_020B1904: - b _020B194C -_020B1908: - b _020B194C -_020B190C: - b _020B1934 + ; Jump table + b _020B194C ; case 0 + b _020B191C ; case 1 + b _020B1924 ; case 2 + b _020B194C ; case 3 + b _020B192C ; case 4 + b _020B194C ; case 5 + b _020B194C ; case 6 + b _020B194C ; case 7 + b _020B1934 ; case 8 _020B1910: cmp r0, #0x20 beq _020B1944 @@ -7959,14 +7911,11 @@ _020B2828: cmp r0, #0x3 addls pc, pc, r0, lsl #0x2 b _020B288C -_020B2860: - b _020B2870 -_020B2864: - b _020B288C -_020B2868: - b _020B2870 -_020B286C: - b _020B2870 + ; Jump table + b _020B2870 ; case 0 + b _020B288C ; case 1 + b _020B2870 ; case 2 + b _020B2870 ; case 3 _020B2870: ldr r0, _020B28B0 ; =UNK_021CDD64 mov r1, #0x1 @@ -8056,14 +8005,11 @@ _020B297C: cmp r0, #0x3 addls pc, pc, r0, lsl #0x2 b _020B29E0 -_020B29B4: - b _020B29C4 -_020B29B8: - b _020B29E0 -_020B29BC: - b _020B29C4 -_020B29C0: - b _020B29C4 + ; Jump table + b _020B29C4 ; case 0 + b _020B29E0 ; case 1 + b _020B29C4 ; case 2 + b _020B29C4 ; case 3 _020B29C4: ldr r0, _020B2A04 ; =UNK_021CDD64 mov r1, #0x1 @@ -10529,14 +10475,11 @@ _020B4C7C: cmp r0, #0x3 addls pc, pc, r0, lsl #0x2 b _020B4CB8 -_020B4C8C: - b _020B4C9C -_020B4C90: - b _020B4CAC -_020B4C94: - b _020B4CAC -_020B4C98: - b _020B4CB8 + ; Jump table + b _020B4C9C ; case 0 + b _020B4CAC ; case 1 + b _020B4CAC ; case 2 + b _020B4CB8 ; case 3 _020B4C9C: mov r0, r5 mov r1, r6 @@ -10588,14 +10531,11 @@ _020B4D24: cmp r0, #0x3 addls pc, pc, r0, lsl #0x2 b _020B4D74 -_020B4D48: - b _020B4D58 -_020B4D4C: - b _020B4D68 -_020B4D50: - b _020B4D68 -_020B4D54: - b _020B4D74 + ; Jump table + b _020B4D58 ; case 0 + b _020B4D68 ; case 1 + b _020B4D68 ; case 2 + b _020B4D74 ; case 3 _020B4D58: mov r0, r4 mov r1, r5 @@ -27356,14 +27296,11 @@ _020C3500: cmp r0, #0x3 addls pc, pc, r0, lsl #0x2 b _020C35C0 -_020C3510: - b _020C3520 -_020C3514: - b _020C3570 -_020C3518: - b _020C3598 -_020C351C: - b _020C3548 + ; Jump table + b _020C3520 ; case 0 + b _020C3570 ; case 1 + b _020C3598 ; case 2 + b _020C3548 ; case 3 _020C3520: str r5, [sp, #0x0] ldrb r1, [r6, #0x1] diff --git a/arm9/global.inc b/arm9/global.inc index 2aced615..f478ba68 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -264,7 +264,7 @@ .extern FUN_02003A30 .extern FUN_02003A64 .extern FUN_02003B40 -.extern FUN_02003B98 +.extern InitSoundData .extern FUN_02003C10 .extern FUN_02003CE8 .extern FUN_02003D38 diff --git a/arm9/lib/include/SPI_mic.h b/arm9/lib/include/SPI_mic.h new file mode 100644 index 00000000..79588fe9 --- /dev/null +++ b/arm9/lib/include/SPI_mic.h @@ -0,0 +1,6 @@ +#ifndef NITRO_SPI_MIC_H_ +#define NITRO_SPI_MIC_H_ + +void MIC_Init(void); + +#endif //NITRO_SPI_MIC_H_ diff --git a/arm9/lib/include/SPI_pm.h b/arm9/lib/include/SPI_pm.h index b5063ed8..a5957f74 100644 --- a/arm9/lib/include/SPI_pm.h +++ b/arm9/lib/include/SPI_pm.h @@ -32,6 +32,8 @@ void PM_GetBackLight(PMBackLightSwitch * top, PMBackLightSwitch * bottom); void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern); u32 PM_SetBackLight(PMLCDTarget target, PMBackLightSwitch status); void PM_ForceToPowerOff(void); +void PM_SetAmp(int gain); +void PM_SetAmpGain(int gain); ENUMS_ALWAYS_INT_RESET diff --git a/arm9/src/main.c b/arm9/src/main.c index 36e81d02..ec3c358c 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -6,6 +6,8 @@ #include "PAD_pad.h" #include "main.h" #include "poke_overlay.h" +#include "options.h" +#include "sound.h" FS_EXTERN_OVERLAY(MODULE_52); FS_EXTERN_OVERLAY(MODULE_63); @@ -31,9 +33,7 @@ extern void FUN_0201259C(void); extern void FUN_02002C14(void); extern void FUN_02002C50(int, int); extern struct UnkStruct_021C59C8 * FUN_0202254C(void); -extern void FUN_02003B98(int, int); -extern int FUN_02029EF8(struct UnkStruct_021C59C8 *); -extern int LoadPlayerDataAddress(struct UnkStruct_021C59C8 *); +extern u32 FUN_02029EF8(struct UnkStruct_021C59C8 *); extern void FUN_02020AFC(void); extern int FUN_020337E8(int); extern void FUN_02034188(int, int); @@ -75,7 +75,7 @@ THUMB_FUNC void NitroMain(void) FUN_02002C50(3, 3); gBacklightTop.unk18 = -1; gBacklightTop.unk20 = FUN_0202254C(); - FUN_02003B98(FUN_02029EF8(gBacklightTop.unk20), LoadPlayerDataAddress(gBacklightTop.unk20)); + InitSoundData(FUN_02029EF8(gBacklightTop.unk20), LoadPlayerDataAddress(gBacklightTop.unk20)); FUN_02020AFC(); if (FUN_020337E8(3) == 3) FUN_02034188(3, 0); diff --git a/arm9/src/sound.c b/arm9/src/sound.c new file mode 100644 index 00000000..a89d0f56 --- /dev/null +++ b/arm9/src/sound.c @@ -0,0 +1,321 @@ +#include "global.h" +#include "sound.h" +#include "SPI_mic.h" +#include "SPI_pm.h" + +#pragma thumb on + +static struct SoundData sSoundDataBuffer; +static u32 UNK_02107070[2]; + +void FUN_02003C40(void); +BOOL FUN_02003D04(void); +void FUN_020040C8(void); +void FUN_02004064(struct SoundData *); +void FUN_02004088(struct SoundData *); +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); +extern void FUN_02005CFC(void); + +void InitSoundData(u32 a0, struct Options * a1) +{ + struct SoundData * sdat = GetSoundDataPointer(); + FUN_020C01D0(); + FUN_020040C8(); + FUN_02004064(sdat); + sdat->unk_00090 = FUN_020C2A94(sdat->unk_00094, sizeof(sdat->unk_00094)); + FUN_020C26F8(&sdat->header, "data/sound/sound_data.sdat", sdat->unk_00090, 0); + FUN_020C39CC(sdat->unk_00090); + FUN_02004088(sdat); + FUN_020040A4(sdat); + UNK_02107070[1] = 0; + sdat->unk_BCD4C = a0; + FUN_02004D60(a1->unk0_4); +} + +void FUN_02003C10(void) +{ + struct SoundData * sdat = GetSoundDataPointer(); + if (!FUN_02003D04()) + { + if (sdat->unk_BCD00 > 0) + sdat->unk_BCD00--; + FUN_02003C40(); + } + FUN_02005CFC(); + FUN_020C01A0(); +} + +void FUN_02003C40(void) +{ + struct SoundData * sdat = GetSoundDataPointer(); + switch (UNK_02107070[0]) + { + case 1: + FUN_02003CE8(2); + break; + case 3: + if (!FUN_02005404()) + FUN_02003CE8(2); + break; + case 4: + if (!FUN_02005404()) + FUN_02003CE8(2); + break; + case 5: + if (!FUN_02005404() && !FUN_02004D94()) + { + FUN_020040DC(); + FUN_0200521C(sdat->unk_BCD0E); + } + break; + case 6: + if (!FUN_02005404() && !FUN_02004D94()) + { + FUN_020040DC(); + FUN_0200521C(sdat->unk_BCD0E); + FUN_0200538C(0x7F, (int)sdat->unk_BCD08, 0); + } + break; + } +} + +void FUN_02003CE8(int a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + sdat->unk_BCCFC = 0; + UNK_02107070[0] = (u32)a0; +} + +BOOL FUN_02003D04(void) +{ + struct SoundData * sdat = GetSoundDataPointer(); + if (FUN_020048BC(2)) + return TRUE; + return sdat->unk_BCD12 != 0; +} + +struct SoundData * GetSoundDataPointer(void) +{ + return &sSoundDataBuffer; +} + +void * FUN_02003D38(u32 a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + switch (a0) + { + case 5: + return &sdat->unk_BCCFE; + case 0: + return &sdat->unk_BBCB8; + case 1: + return &sdat->unk_BBCBC; + case 2: + return &sdat->unk_BBCC0; + case 3: + return &sdat->unk_BBCE0; + case 4: + return &sdat->unk_BCCE0; + case 6: + return &sdat->unk_BCD00; + case 7: + return &sdat->unk_BCD04; + case 8: + return &sdat->unk_BCD08; + case 9: + return &sdat->unk_BCD0C; + case 10: + return &sdat->unk_BCD0E; + case 11: + return &sdat->unk_BCD10; + case 12: + return &sdat->unk_BCD11; + case 13: + return &sdat->unk_BCD12; + case 14: + return &sdat->unk_BCD14; + case 15: + return &sdat->unk_BCD15; + case 16: + return &sdat->unk_BCD16; + case 17: + return &sdat->unk_BCD17; + case 18: + return &sdat->unk_BCD18; + case 19: + return &sdat->unk_BCD19; + case 20: + return &sdat->unk_BCD1A; + case 21: + return &sdat->unk_BCD1B; + case 22: + return &sdat->unk_BCD1C[0]; + case 23: + return &sdat->unk_BCD1C[1]; + case 24: + return &sdat->unk_BCD1C[2]; + case 25: + return &sdat->unk_BCD1C[3]; + case 26: + return &sdat->unk_BCD1C[4]; + case 27: + return &sdat->unk_BCD1C[5]; + case 28: + return &sdat->unk_BCD1C[6]; + case 29: + return &sdat->unk_BCD38; + case 30: + return &sdat->unk_BCD39; + case 31: + return &sdat->unk_BCD3A; + case 32: + return &sdat->unk_BCD3C; + case 33: + return &sdat->unk_BCD40; + case 34: + return &sdat->unk_BCD48; + case 35: + return &sdat->unk_BCD4C; + case 36: + return &sdat->unk_BCD50; + case 37: + return &sdat->unk_BCD54; + case 38: + return &sdat->unk_BCD58; + case 39: + return &sdat->unk_BCD5C; + default: + GF_ASSERT(0); + return NULL; + } +} + +int FUN_02003F3C(int * a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + int r4 = FUN_020C290C(sdat->unk_00090); + GF_ASSERT(r4 != -1); + if (a0 != NULL) + *a0 = r4; + return r4; +} + +void FUN_02003F64(int a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + FUN_020C2828(sdat->unk_00090, a0); +} + +BOOL FUN_02003F78(u32 * a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + return FUN_020C36A8(a0, sdat->unk_00090); +} + +BOOL FUN_02003F90(u32 * a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + return FUN_020C3674(a0, sdat->unk_00090); +} + +BOOL FUN_02003FA8(u32 * a0, u32 * a1) +{ + struct SoundData * sdat = GetSoundDataPointer(); + return FUN_020C35E0(a0, a1, sdat->unk_00090); +} + +BOOL FUN_02003FC4(u32 * a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + return FUN_020C360C(a0, sdat->unk_00090); +} + +BOOL FUN_02003FDC(u32 * a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + return FUN_020C3640(a0, sdat->unk_00090); +} + +u32 * FUN_02003FF4(int a0) +{ + struct SoundData * sdat = GetSoundDataPointer(); + if (a0 >= 9) + { + GF_ASSERT(0); + a0 = 0; + } + return &sdat->unk_BBC94[a0]; +} + +u32 FUN_02004018(u32 a0) +{ + switch (a0) + { + case 1: + return 0; + case 0: + return 1; + case 2: + return 2; + case 3: + return 3; + case 4: + return 4; + case 5: + return 5; + case 6: + return 6; + case 7: + return 7; + default: + GF_ASSERT(0); + return 3; + } +} + +void FUN_02004064(struct SoundData * sdat) +{ + int i; + memset(sdat, 0, sizeof(*sdat)); + for (i = 0; i < 7; i++) + sdat->unk_BCD1C[i] = i + 1; +} + +void FUN_02004088(struct SoundData * sdat) +{ + int i; + for (i = 0; i < 9; i++) + { + FUN_020C0F80(&sdat->unk_BBC94[i]); + } +} + +void FUN_020040A4(struct SoundData * sdat) +{ + FUN_02003F3C(&sdat->unk_BCD1C[0]); + FUN_02003F78(NULL); + FUN_02003F3C(&sdat->unk_BCD1C[1]); +} + +void FUN_020040C8(void) +{ + MIC_Init(); + PM_SetAmp(1); + PM_SetAmpGain(2); +} + +void FUN_020040DC(void) +{ + FUN_020C1040(7, 0); + FUN_02003FF4(7); + FUN_020C0F68(); +} diff --git a/include/options.h b/include/options.h new file mode 100644 index 00000000..730cbaa5 --- /dev/null +++ b/include/options.h @@ -0,0 +1,15 @@ +#ifndef POKEDIAMOND_OPTIONS_H +#define POKEDIAMOND_OPTIONS_H + +#include "main.h" + +struct Options { + u16 unk0_0:4; + u16 unk0_4:2; + u16 unk0_6:10; + u8 padding[2]; // TODO: finish me +}; + +struct Options * LoadPlayerDataAddress(struct UnkStruct_021C59C8 *); + +#endif //POKEDIAMOND_OPTIONS_H diff --git a/include/sdat.h b/include/sdat.h new file mode 100644 index 00000000..70522a3d --- /dev/null +++ b/include/sdat.h @@ -0,0 +1,42 @@ +#ifndef GUARD_LIBSDAT_H +#define GUARD_LIBSDAT_H + +struct SDATHeader +{ + // Generic header + char magic[4]; + u16 bom; + u16 version; + u32 filesize; + u16 header_size; + u16 section_count; + // SDAT chunks + u32 symb_offset, symb_size; + u32 info_offset, info_size; + u32 fat_offset, fat_size; + u32 file_offset, file_size; + u32 unk_00030; + FSFile file; // 00034 + FSFileID fileID; // 7C + u32 unk_00084; + u32 unk_00088; + void * unk_0008C; +}; + +void FUN_020C01D0(void); +void * FUN_020C2A94(void *, u32); +void FUN_020C26F8(struct SDATHeader *, char *, void *, u32); +void FUN_020C39CC(void *); +void FUN_020C01A0(void); +int FUN_020C290C(void *); +void FUN_020C2828(void *, int); +BOOL FUN_020C36A8(u32 *, void *); +BOOL FUN_020C3674(u32 *, void *); +BOOL FUN_020C35E0(u32 *, u32 *, void *); +BOOL FUN_020C360C(u32 *, void *); +BOOL FUN_020C3640(u32 *, void *); +void FUN_020C0F80(u32 *); +void FUN_020C1040(int, int); +void FUN_020C0F68(void); + +#endif //GUARD_LIBSDAT_H diff --git a/include/sound.h b/include/sound.h new file mode 100644 index 00000000..0a4fc4ed --- /dev/null +++ b/include/sound.h @@ -0,0 +1,65 @@ +#ifndef POKEDIAMOND_SOUND_H +#define POKEDIAMOND_SOUND_H + +#include "FS_file.h" +#include "sdat.h" +#include "options.h" + +struct SoundData +{ + struct SDATHeader header; + void * unk_00090; + u8 unk_00094[0xBBC00]; + u32 unk_BBC94[9]; + u32 unk_BBCB8; + u32 unk_BBCBC; + u8 unk_BBCC0[0x20]; + u8 unk_BBCE0[0x1000]; + u8 unk_BCCE0[0x1C]; + u16 unk_BCCFC; + u16 unk_BCCFE; + s32 unk_BCD00; + u32 unk_BCD04; + u32 unk_BCD08; + u16 unk_BCD0C; + u16 unk_BCD0E; + u8 unk_BCD10; + u8 unk_BCD11; + u16 unk_BCD12; + u8 unk_BCD14; + u8 unk_BCD15; + u8 unk_BCD16; + u8 unk_BCD17; + u8 unk_BCD18; + u8 unk_BCD19; + u8 unk_BCD1A; + u8 unk_BCD1B; + int unk_BCD1C[7]; + u8 unk_BCD38; + u8 unk_BCD39; + u8 unk_BCD3A; + u8 unk_BCD3B; + u32 unk_BCD3C; + u64 unk_BCD40; + u32 unk_BCD48; + u32 unk_BCD4C; + u32 unk_BCD50; + u32 unk_BCD54; + u32 unk_BCD58; + u32 unk_BCD5C; +}; + +struct SoundData * GetSoundDataPointer(void); +void InitSoundData(u32 a0, struct Options * a1); +void * FUN_02003D38(u32 a0); +int FUN_02003F3C(int * a0); +void FUN_02003F64(int a0); +BOOL FUN_02003F78(u32 * a0); +BOOL FUN_02003F90(u32 * a0); +BOOL FUN_02003FA8(u32 * a0, u32 * a1); +BOOL FUN_02003FC4(u32 * a0); +BOOL FUN_02003FDC(u32 * a0); +u32 * FUN_02003FF4(int a0); +u32 FUN_02004018(u32 a0); + +#endif //POKEDIAMOND_SOUND_H |