Merge branch 'master' into master

This commit is contained in:
Cleverking2003
2020-06-25 21:45:38 +03:00
committed by GitHub
11 changed files with 544 additions and 936 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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]

View File

@@ -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

View File

@@ -0,0 +1,6 @@
#ifndef NITRO_SPI_MIC_H_
#define NITRO_SPI_MIC_H_
void MIC_Init(void);
#endif //NITRO_SPI_MIC_H_

View File

@@ -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

View File

@@ -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);

321
arm9/src/sound.c Normal file
View File

@@ -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();
}

15
include/options.h Normal file
View File

@@ -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

42
include/sdat.h Normal file
View File

@@ -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

65
include/sound.h Normal file
View File

@@ -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