Merge pull request #386 from PikalaxALT/pikalax_work

Decompile code related to Chatot's data in the save block
This commit is contained in:
Akira Akashi
2021-05-24 15:01:06 +01:00
committed by GitHub
24 changed files with 286 additions and 317 deletions
+1 -1
View File
@@ -111,7 +111,7 @@ Static arm9
Object seal_case.o
Object unk_02029CEC.o
Object igt.o
Object unk_02029EC4.o
Object sav_chatot.o
Object unk_02029FB0.o
Object unk_0202A1E0.o
Object unk_0202A8F4.o
+1 -1
View File
@@ -173,7 +173,7 @@ FUN_0203FF10: ; 0x0203FF10
str r0, [sp, #0x30]
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
bl FUN_02029EF8
bl Sav2_Chatot_get
str r0, [sp, #0x34]
add r0, sp, #0x14
bl FUN_02081214
+49 -49
View File
@@ -203,133 +203,133 @@ _0200421A: ; jump table (using 16-bit offset)
.short _020042AE - _0200421A - 2; case 3
_02004222:
mov r0, #0x1
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200422C:
mov r0, #0x2
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004236:
mov r0, #0xd
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004240:
mov r0, #0x1
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200424A:
mov r0, #0x2
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004254:
mov r0, #0x1
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200425E:
mov r0, #0xb
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004268:
mov r0, #0x1
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004272:
mov r0, #0xe
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200427C:
mov r0, #0x3
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004286:
mov r0, #0x6
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004290:
mov r0, #0x5
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200429A:
mov r0, #0x9
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042A4:
mov r0, #0xa
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042AE:
ldr r0, _02004330 ; =0x000005E5
bl FUN_02003FDC
bl GF_Snd_LoadBank
ldr r0, _02004330 ; =0x000005E5
bl FUN_02003FC4
bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
b _0200432C
_020042BE:
mov r0, #0xc
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042C8:
mov r0, #0x7
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042D2:
mov r0, #0x8
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042DC:
mov r0, #0xf
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042E6:
mov r0, #0x3
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042F0:
mov r0, #0x5
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042FA:
mov r0, #0xf
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004304:
mov r0, #0x4
bl FUN_02003F78
bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200430E:
ldr r0, _02004334 ; =0x000005ED
bl FUN_02003FDC
bl GF_Snd_LoadBank
ldr r0, _02004334 ; =0x000005ED
bl FUN_02003FC4
bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
b _0200432C
_0200431E:
ldr r0, _02004338 ; =0x000005EC
bl FUN_02003FDC
bl GF_Snd_LoadBank
ldr r0, _02004338 ; =0x000005EC
bl FUN_02003FC4
bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
_0200432C:
add r0, r1, #0x0
@@ -536,15 +536,15 @@ FUN_020044A8: ; 0x020044A8
mov r0, #0x17
bl FUN_02003D38
ldr r0, [r0, #0x0]
bl FUN_02003F64
bl GF_Snd_RestoreState
mov r0, #0x18
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
add r0, r4, #0x0
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
pop {r4, pc}
thumb_func_start FUN_020044D4
@@ -588,12 +588,12 @@ _02004528:
bne _02004560
mov r0, #0x2
bl FUN_02004748
bl FUN_02003F64
bl GF_Snd_RestoreState
mov r0, #0x4
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
cmp r4, r5
beq _02004554
mov r0, #0x1
@@ -628,17 +628,17 @@ FUN_02004568: ; 0x02004568
beq _02004594
add r0, r5, #0x0
mov r1, #0x4
bl FUN_02003FA8
bl GF_Snd_LoadSeqEx
bl ErrorHandling
b _0200459C
_02004594:
ldrh r0, [r4, #0x0]
mov r1, #0x6
bl FUN_02003FA8
bl GF_Snd_LoadSeqEx
_0200459C:
mov r0, #0x1a
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
mov r0, #0x1
mov r1, #0x0
bl FUN_020047C8
@@ -671,18 +671,18 @@ FUN_020045C4: ; 0x020045C4
_020045E4:
mov r0, #0x1
bl FUN_02004748
bl FUN_02003F64
bl GF_Snd_RestoreState
ldrh r0, [r4, #0x0]
mov r1, #0x2
bl FUN_02003FA8
bl GF_Snd_LoadSeqEx
mov r0, #0x18
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
mov r0, #0x4
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
ldrh r0, [r4, #0x0]
bl FUN_02004900
ldr r1, _02004644 ; =0x000003E9
@@ -693,17 +693,17 @@ _020045E4:
beq _02004630
add r0, r7, #0x0
mov r1, #0x4
bl FUN_02003FA8
bl GF_Snd_LoadSeqEx
bl ErrorHandling
b _02004638
_02004630:
ldrh r0, [r4, #0x0]
mov r1, #0x4
bl FUN_02003FA8
bl GF_Snd_LoadSeqEx
_02004638:
mov r0, #0x1a
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
_02004642:
pop {r3-r7, pc}
.balign 4
@@ -718,12 +718,12 @@ FUN_02004648: ; 0x02004648
bl FUN_020051AC
mov r0, #0x2
bl FUN_02004748
bl FUN_02003F64
bl GF_Snd_RestoreState
mov r0, #0x5
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
mov r0, #0x1
bl FUN_02004DBC
add r0, r4, #0x0
@@ -786,7 +786,7 @@ FUN_020046E8: ; 0x020046E8
bl FUN_02004180
mov r0, #0x1b
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
pop {r4, pc}
.balign 4
@@ -820,7 +820,7 @@ FUN_02004738: ; 0x02004738
push {r3, lr}
mov r0, #0x4
bl FUN_02004748
bl FUN_02003F64
bl GF_Snd_RestoreState
pop {r3, pc}
.balign 4
@@ -1824,7 +1824,7 @@ FUN_02004E98: ; 0x02004E98
add r5, r0, #0x0
mov r0, #0x5
bl FUN_02004748
bl FUN_02003F64
bl GF_Snd_RestoreState
lsl r0, r5, #0x10
lsr r4, r0, #0x10
ldr r0, _02004ECC ; =0x000001B9
@@ -1839,7 +1839,7 @@ _02004EBA:
mov r4, #0x1
_02004EBC:
add r0, r4, #0x0
bl FUN_02003FC4
bl GF_Snd_LoadWaveArc
add r0, r4, #0x0
bl FUN_02004ED0
pop {r3-r5, pc}
+7 -7
View File
@@ -81,12 +81,12 @@ FUN_02005288: ; 0x02005288
mov r0, #0x3
add r4, r2, #0x0
bl FUN_02004748
bl FUN_02003F64
bl GF_Snd_RestoreState
add r0, r5, #0x0
bl FUN_02003F90
bl GF_Snd_LoadSeq
mov r0, #0x1a
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
add r0, r4, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
@@ -148,7 +148,7 @@ _02005318:
_0200532A:
add r0, r5, #0x0
mov r1, #0x1
bl FUN_02003FA8
bl GF_Snd_LoadSeqEx
mov r0, #0x7
bl FUN_02003FF4
add r1, r5, #0x0
@@ -1232,10 +1232,10 @@ PlayBGM: ; 0x02005C28
_02005C48:
mov r0, #0x1c
bl FUN_02003D38
bl FUN_02003F3C
bl GF_Snd_SaveState
add r0, r5, #0x0
mov r1, #0x3
bl FUN_02003FA8
bl GF_Snd_LoadSeqEx
mov r0, #0x2
bl FUN_02003FF4
add r1, r5, #0x0
@@ -1282,7 +1282,7 @@ FUN_02005CA0: ; 0x02005CA0
bl NNS_SndPlayerStopSeq
mov r0, #0x6
bl FUN_02004748
bl FUN_02003F64
bl GF_Snd_RestoreState
pop {r4, pc}
thumb_func_start FUN_02005CBC
+6 -6
View File
@@ -30,7 +30,7 @@ FUN_02005D20: ; 0x02005D20
bl FUN_02003D38
add r4, r0, #0x0
add r0, r5, #0x0
bl FUN_02029F04
bl Chatot_exists
cmp r0, #0x0
bne _02005D3A
mov r0, #0x0
@@ -80,10 +80,10 @@ _02005D70:
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r6, #0x0
bl FUN_02029F10
bl Chatot_GetData
add r1, r0, #0x0
ldr r0, [sp, #0x0]
bl FUN_02029F14
bl Chatot_Decode
mov r0, #0xe
bl FUN_02004930
str r0, [sp, #0x8]
@@ -192,7 +192,7 @@ FUN_02005E6C: ; 0x02005E6C
bl FUN_02004DB4
add r1, r0, #0x0
add r0, r4, #0x0
bl FUN_02029F4C
bl Chatot_Encode
pop {r4, pc}
.balign 4
@@ -250,14 +250,14 @@ _02005EDC: .word 0x000001B9
FUN_02005EE0: ; 0x02005EE0
push {r4, lr}
add r4, r0, #0x0
bl FUN_02029F04
bl Chatot_exists
cmp r0, #0x0
bne _02005EF0
mov r0, #0x0
pop {r4, pc}
_02005EF0:
add r0, r4, #0x0
bl FUN_02029F10
bl Chatot_GetData
mov r1, #0xf
ldrsb r0, [r0, r1]
sub r1, #0x2d
-149
View File
@@ -1,149 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.text
thumb_func_start FUN_02029EC4
FUN_02029EC4: ; 0x02029EC4
mov r0, #0xfb
lsl r0, r0, #0x2
bx lr
.balign 4
thumb_func_start FUN_02029ECC
FUN_02029ECC: ; 0x02029ECC
push {r4, lr}
add r4, r0, #0x0
mov r2, #0xfb
mov r0, #0x0
add r1, r4, #0x0
lsl r2, r2, #0x2
bl MIi_CpuClear32
mov r0, #0x0
str r0, [r4, #0x0]
pop {r4, pc}
.balign 4
thumb_func_start FUN_02029EE4
FUN_02029EE4: ; 0x02029EE4
push {r4, lr}
mov r1, #0xfb
lsl r1, r1, #0x2
bl AllocFromHeap
add r4, r0, #0x0
bl FUN_02029ECC
add r0, r4, #0x0
pop {r4, pc}
thumb_func_start FUN_02029EF8
FUN_02029EF8: ; 0x02029EF8
ldr r3, _02029F00 ; =SavArray_get
mov r1, #0x16
bx r3
nop
_02029F00: .word SavArray_get
thumb_func_start FUN_02029F04
FUN_02029F04: ; 0x02029F04
ldr r0, [r0, #0x0]
bx lr
thumb_func_start FUN_02029F08
FUN_02029F08: ; 0x02029F08
mov r1, #0x0
str r1, [r0, #0x0]
bx lr
.balign 4
thumb_func_start FUN_02029F10
FUN_02029F10: ; 0x02029F10
add r0, r0, #0x4
bx lr
thumb_func_start FUN_02029F14
FUN_02029F14: ; 0x02029F14
push {r4-r7}
mov r5, #0x0
mov r2, #0xfa
add r4, r5, #0x0
mov r6, #0xf
lsl r2, r2, #0x2
_02029F20:
ldrsb r7, [r1, r4]
add r3, r0, r5
and r7, r6
lsl r7, r7, #0x18
lsr r7, r7, #0x18
sub r7, #0x8
lsl r7, r7, #0x18
asr r7, r7, #0x14
strb r7, [r0, r5]
ldrsb r7, [r1, r4]
add r4, r4, #0x1
add r5, r5, #0x2
lsl r7, r7, #0x14
lsr r7, r7, #0x18
sub r7, #0x8
lsl r7, r7, #0x18
asr r7, r7, #0x14
strb r7, [r3, #0x1]
cmp r4, r2
blt _02029F20
pop {r4-r7}
bx lr
thumb_func_start FUN_02029F4C
FUN_02029F4C: ; 0x02029F4C
push {r4-r7}
add r3, r0, #0x0
add r2, r1, #0x0
mov r0, #0x1
mov r1, #0x0
str r0, [r3, #0x0]
add r0, r1, #0x0
_02029F5A:
ldrsb r4, [r2, r0]
add r6, r3, r1
add r7, r2, r0
asr r5, r4, #0x3
lsr r5, r5, #0x1c
add r5, r4, r5
lsl r4, r5, #0x14
asr r4, r4, #0x18
add r4, #0x8
strb r4, [r6, #0x4]
mov r4, #0x4
ldrsb r5, [r6, r4]
mov r4, #0x1
ldrsb r4, [r7, r4]
add r0, r0, #0x2
add r1, r1, #0x1
asr r7, r4, #0x3
lsr r7, r7, #0x1c
add r7, r4, r7
lsl r4, r7, #0x14
asr r4, r4, #0x18
add r4, #0x8
lsl r4, r4, #0x18
lsr r4, r4, #0x14
orr r4, r5
strb r4, [r6, #0x4]
mov r4, #0x7d
lsl r4, r4, #0x4
cmp r0, r4
blt _02029F5A
pop {r4-r7}
bx lr
.balign 4
thumb_func_start FUN_02029F9C
FUN_02029F9C: ; 0x02029F9C
add r2, r0, #0x0
add r0, r1, #0x0
add r1, r2, #0x0
mov r2, #0xfb
ldr r3, _02029FAC ; =MIi_CpuCopyFast
lsl r2, r2, #0x2
bx r3
nop
_02029FAC: .word MIi_CpuCopyFast
+6 -6
View File
@@ -97,7 +97,7 @@ _0204775C:
add r4, r7, #0x0
_02047774:
add r0, r5, #0x0
bl FUN_02029EE4
bl Chatot_new
mov r1, #0x46
lsl r1, r1, #0x2
str r0, [r4, r1]
@@ -455,11 +455,11 @@ FUN_02047A64: ; 0x02047A64
add r2, r0, r2
mov r0, #0x46
lsl r0, r0, #0x2
ldr r3, _02047A74 ; =FUN_02029F9C
ldr r3, _02047A74 ; =Chatot_copy
ldr r0, [r2, r0]
bx r3
nop
_02047A74: .word FUN_02029F9C
_02047A74: .word Chatot_copy
thumb_func_start FUN_02047A78
FUN_02047A78: ; 0x02047A78
@@ -480,7 +480,7 @@ FUN_02047A78: ; 0x02047A78
bl Sav2_Pokedex_get
str r0, [sp, #0x4]
ldr r0, [r4, #0xc]
bl FUN_02029EF8
bl Sav2_Chatot_get
str r0, [sp, #0x8]
ldr r0, [r4, #0xc]
bl Sav2_PlayerData_GetOptionsAddr
@@ -628,7 +628,7 @@ FUN_02047BC0: ; 0x02047BC0
str r0, [sp, #0xc]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl FUN_02029EF8
bl Sav2_Chatot_get
str r0, [sp, #0x8]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
@@ -795,7 +795,7 @@ FUN_02047D48: ; 0x02047D48
str r0, [sp, #0x18]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl FUN_02029EF8
bl Sav2_Chatot_get
str r0, [sp, #0x14]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
+1 -1
View File
@@ -572,7 +572,7 @@ _0206C350:
add r0, r4, #0x0
ldr r1, [r2, r1]
add r0, #0x20
bl FUN_02029F9C
bl Chatot_copy
mov r0, #0x1
pop {r4, pc}
.balign 4
+3 -3
View File
@@ -916,7 +916,7 @@ _020812F2:
add r5, r4, #0x0
_02081304:
mov r0, #0x14
bl FUN_02029EE4
bl Chatot_new
mov r1, #0x57
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -927,7 +927,7 @@ _02081304:
add r0, r1, #0x0
ldr r0, [r4, r0]
ldr r1, [r6, #0x20]
bl FUN_02029F9C
bl Chatot_copy
ldr r0, [r6, #0x8]
ldr r1, [r4, #0x0]
bl CopyPokemonToPokemon
@@ -1900,7 +1900,7 @@ _02081A7C:
strb r0, [r4, r2]
pop {r3-r7, pc}
_02081A8A:
bl FUN_02029EC4
bl Sav2_Chatot_sizeof
add r2, r0, #0x0
mov r0, #0x57
lsl r0, r0, #0x2
+2 -2
View File
@@ -830,7 +830,7 @@ FUN_02083AA8: ; 0x02083AA8
push {r3-r5, lr}
add r5, r2, #0x0
add r4, r3, #0x0
bl FUN_02029EC4
bl Sav2_Chatot_sizeof
add r2, r0, #0x0
ldrb r1, [r5, r2]
add r0, r5, #0x0
@@ -854,7 +854,7 @@ FUN_02083AD4: ; 0x02083AD4
add r4, r0, #0x0
add r7, r1, #0x0
add r6, r2, #0x0
bl FUN_02029EC4
bl Sav2_Chatot_sizeof
add r5, r0, #0x0
ldr r0, _02083B0C ; =0x00000585
add r4, r4, r0
+17 -17
View File
@@ -269,13 +269,13 @@
.extern DoSoundUpdateFrame
.extern FUN_02003CE8
.extern FUN_02003D38
.extern FUN_02003F3C
.extern FUN_02003F64
.extern FUN_02003F78
.extern FUN_02003F90
.extern FUN_02003FA8
.extern FUN_02003FC4
.extern FUN_02003FDC
.extern GF_Snd_SaveState
.extern GF_Snd_RestoreState
.extern GF_Snd_LoadGroup
.extern GF_Snd_LoadSeq
.extern GF_Snd_LoadSeqEx
.extern GF_Snd_LoadWaveArc
.extern GF_Snd_LoadBank
.extern FUN_02003FF4
.extern FUN_02004018
.extern FUN_020040F4
@@ -1977,16 +1977,16 @@
.extern AddIGTSeconds
.extern GetIGTHours
.extern GetIGTMinutes
.extern FUN_02029EC4
.extern FUN_02029ECC
.extern FUN_02029EE4
.extern FUN_02029EF8
.extern FUN_02029F04
.extern FUN_02029F08
.extern FUN_02029F10
.extern FUN_02029F14
.extern FUN_02029F4C
.extern FUN_02029F9C
.extern Sav2_Chatot_sizeof
.extern Sav2_Chatot_init
.extern Chatot_new
.extern Sav2_Chatot_get
.extern Chatot_exists
.extern Chatot_invalidate
.extern Chatot_GetData
.extern Chatot_Decode
.extern Chatot_Encode
.extern Chatot_copy
.extern FUN_02029FB0
.extern FUN_02029FB8
.extern FUN_02029FC8
+1 -1
View File
@@ -32,7 +32,7 @@ void NNS_SndArcInit(NNSSndArc *, const char *, void *, u32);
void NNS_SndArcPlayerSetup(void *);
void NNS_SndMain(void);
void NNS_SndHandleInit(u32 *);
void NNS_SndPlayerStopSeqByPlayerNo(int, int);
void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame);
void NNS_SndHandleReleaseSeq(void);
#endif //GUARD_NNS_SND_ARC_H
+3 -3
View File
@@ -4,8 +4,8 @@
struct NNSSndHeap;
typedef struct NNSSndHeap* NNSSndHeapHandle;
NNSSndHeapHandle * NNS_SndHeapCreate(void *, u32);
int NNS_SndHeapSaveState(NNSSndHeapHandle *);
void NNS_SndHeapLoadState(NNSSndHeapHandle *, int);
NNSSndHeapHandle * NNS_SndHeapCreate(void * start, u32 size);
int NNS_SndHeapSaveState(NNSSndHeapHandle * heap);
void NNS_SndHeapLoadState(NNSSndHeapHandle * heap, int level);
#endif //GUARD_NNS_SND_HEAP_H
+2 -2
View File
@@ -7747,8 +7747,8 @@ _021EC544:
cmp r0, #0
bne _021EC572
add r0, r7, #0
bl FUN_02029EF8
bl FUN_02029F08
bl Sav2_Chatot_get
bl Chatot_invalidate
_021EC572:
add sp, #0x24
pop {r4, r5, r6, r7, pc}
+2 -2
View File
@@ -122,8 +122,8 @@ StoragePC_Overlay_Teardown: ; 0x021D75B8
mov r0, #0x47
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_02029EF8
bl FUN_02029F08
bl Sav2_Chatot_get
bl Chatot_invalidate
_021D75DE:
mov r0, #0x45
lsl r0, r0, #2
+4 -4
View File
@@ -1161,7 +1161,7 @@ _0222DF74:
b _0222E0E8
_0222DF80:
ldr r0, [r4, #4]
bl FUN_02029EF8
bl Sav2_Chatot_get
bl MOD71_0222F528
ldr r0, [r4, #0x4c]
add r0, r0, #1
@@ -3446,7 +3446,7 @@ MOD71_0222F264: ; 0x0222F264
cmp r0, r1
bne _0222F2AE
ldr r0, [r4, #4]
bl FUN_02029EF8
bl Sav2_Chatot_get
mov r1, #0
mov r2, #0x64
add r3, r1, #0
@@ -6379,8 +6379,8 @@ _02230A40:
cmp r0, #0
bne _02230A98
ldr r0, [r5, #0x10]
bl FUN_02029EF8
bl FUN_02029F08
bl Sav2_Chatot_get
bl Chatot_invalidate
_02230A98:
ldr r0, [r5, #0x10]
add r1, r4, #0
+2 -2
View File
@@ -16126,8 +16126,8 @@ _02235590:
bne _022355DC
ldr r0, [r5]
ldr r0, [r0, #0x20]
bl FUN_02029EF8
bl FUN_02029F08
bl Sav2_Chatot_get
bl Chatot_invalidate
_022355DC:
cmp r6, #0
beq _022355EA
+1 -6
View File
@@ -26,17 +26,12 @@ s32 UNK_02016FA4;
PMBackLightSwitch gBacklightTop;
struct UnkStruct_02016FA8 UNK_02016FA8;
extern void InitSystemForTheGame(void);
extern void InitGraphicMemory(void);
extern void FUN_02022294(void);
extern void GF_InitRTCWork(void);
extern void FUN_02002C14(void);
extern void FUN_02002C50(int, int);
extern struct SaveBlock2 * SaveBlock2_new(void);
extern void * FUN_02029EF8(struct SaveBlock2 *);
extern int FUN_020337E8(int);
extern void FUN_02034188(int, int);
extern int FUN_020227FC(struct SaveBlock2 *);
extern void FUN_02089D90(int);
extern void FUN_0200A2AC(void);
extern void FUN_02015E30(void);
@@ -73,7 +68,7 @@ THUMB_FUNC void NitroMain(void)
FUN_02002C50(3, 3);
UNK_02016FA8.unk10 = -1;
UNK_02016FA8.unk18 = SaveBlock2_new();
InitSoundData(FUN_02029EF8(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18));
InitSoundData(Sav2_Chatot_get(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18));
Init_Timer3();
if (FUN_020337E8(3) == 3)
FUN_02034188(3, 0);
+98
View File
@@ -0,0 +1,98 @@
#include "global.h"
#include "MI_memory.h"
#include "heap.h"
#include "sav_chatot.h"
THUMB_FUNC u32 Sav2_Chatot_sizeof(void)
{
return sizeof(struct SaveChatotSoundClip);
}
THUMB_FUNC void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot)
{
MIi_CpuClear32(0, chatot, sizeof(struct SaveChatotSoundClip));
chatot->exists = FALSE;
}
THUMB_FUNC struct SaveChatotSoundClip * Chatot_new(u32 heap_id)
{
struct SaveChatotSoundClip * ret = (struct SaveChatotSoundClip *)AllocFromHeap(heap_id, sizeof(struct SaveChatotSoundClip));
Sav2_Chatot_init(ret);
return ret;
}
THUMB_FUNC struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2)
{
return (struct SaveChatotSoundClip *) SavArray_get(sav2, 22);
}
THUMB_FUNC BOOL Chatot_exists(struct SaveChatotSoundClip * chatot)
{
return chatot->exists;
}
THUMB_FUNC void Chatot_invalidate(struct SaveChatotSoundClip * chatot)
{
chatot->exists = FALSE;
}
THUMB_FUNC s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot)
{
return chatot->data;
}
static inline s8 transform(u8 value)
{
return (s8)(value - 8);
}
THUMB_FUNC void Chatot_Decode(s8 * dest, const s8 * data)
{
s32 i;
s32 dest_i;
u8 val;
s8 val2;
for (dest_i = 0, i = 0; i < 1000; i++, dest_i += 2)
{
val = (u8)(data[i] & 0xF);
val2 = transform(val);
dest[dest_i + 0] = (s8)(val2 << 4);
val = (u8)(data[i] >> 4);
val2 = transform(val);
dest[dest_i + 1] = (s8)(val2 << 4);
}
}
static inline u8 untransform(s8 val)
{
val /= 16;
return (u8)(val + 8);
}
THUMB_FUNC void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data)
{
s32 src_i;
s32 i = 0;
u8 val2;
s8 val;
chatot->exists = TRUE;
for (src_i = 0; src_i < 2000; src_i += 2)
{
val = data[src_i + 0];
val2 = untransform(val);
chatot->data[i] = (s8)val2;
val = data[src_i + 1];
val2 = untransform(val);
chatot->data[i] |= val2 << 4;
i++;
}
}
THUMB_FUNC void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src)
{
MIi_CpuCopyFast(src, dest, sizeof(struct SaveChatotSoundClip));
}
+3 -3
View File
@@ -15,6 +15,7 @@
#include "seal.h"
#include "unk_020139D8.h"
#include "unk_02024E64.h"
#include "sav_chatot.h"
extern u32 FUN_0202AC20(void);
extern u32 FUN_02034D7C(void);
@@ -26,7 +27,7 @@ extern u32 FUN_02028054(void);
extern u32 FUN_02028980(void);
extern u32 FUN_02029A84(void);
extern u32 FUN_02029FB0(void);
extern u32 FUN_02029EC4(void);
extern u32 Sav2_Chatot_sizeof(void);
extern u32 FUN_0202A89C(void);
extern u32 FUN_0202A8F4(void);
extern u32 FUN_0202A924(void);
@@ -47,7 +48,6 @@ extern void FUN_0202805C(void *);
extern void FUN_02028994(void *);
extern void FUN_02029A8C(void *);
extern void FUN_02029FB8(void *);
extern void FUN_02029ECC(void *);
extern void FUN_0202A8A4(void *);
extern void FUN_0202A8F8(void *);
extern void FUN_0202A92C(void *);
@@ -87,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = {
{ 19, 0, (SAVSIZEFN)FUN_02029A84, (SAVINITFN)FUN_02029A8C },
{ 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 },
{ 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init },
{ 22, 0, (SAVSIZEFN)FUN_02029EC4, (SAVINITFN)FUN_02029ECC },
{ 22, 0, (SAVSIZEFN)Sav2_Chatot_sizeof, (SAVINITFN)Sav2_Chatot_init },
{ 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 },
{ 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 },
{ 25, 0, (SAVSIZEFN)FUN_0202A924, (SAVINITFN)FUN_0202A92C },
+3 -3
View File
@@ -1,6 +1,6 @@
#include "scrcmd.h"
extern void* FUN_02029EF8(struct SaveBlock2* sav2);
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);
@@ -203,7 +203,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0059(struct ScriptContext* ctx)
{
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
void* unk = FUN_02029EF8(ctx->unk80->saveBlock2);
void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2);
if (FUN_02005D20(unk) == 1)
{
*ret_ptr = 1;
@@ -241,7 +241,7 @@ THUMB_FUNC BOOL ScrCmd_Unk005B(struct ScriptContext* ctx)
THUMB_FUNC BOOL ScrCmd_Unk005C(struct ScriptContext* ctx)
{
void* unk = FUN_02029EF8(ctx->unk80->saveBlock2);
void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2);
FUN_02005E6C(unk);
return TRUE;
+37 -37
View File
@@ -11,8 +11,8 @@ static u32 UNK_02107074;
void FUN_02003C40(void);
BOOL FUN_02003D04(void);
void FUN_020040C8(void);
void FUN_02004064(struct SoundData *);
void GF_InitMic(void);
void GF_SoundDataInit(struct SoundData *);
void FUN_02004088(struct SoundData *);
void FUN_020040A4(struct SoundData *);
void FUN_02003CE8(int);
@@ -26,20 +26,20 @@ extern void FUN_0200538C(int, int, int);
extern BOOL FUN_02005404(void);
extern void FUN_02005CFC(void);
void InitSoundData(void * a0, struct Options * a1)
void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options)
{
struct SoundData * sdat = GetSoundDataPointer();
NNS_SndInit();
FUN_020040C8();
FUN_02004064(sdat);
sdat->heap = NNS_SndHeapCreate(sdat->unk_00094, sizeof(sdat->unk_00094));
GF_InitMic();
GF_SoundDataInit(sdat);
sdat->heap = NNS_SndHeapCreate(sdat->heapBuffer, sizeof(sdat->heapBuffer));
NNS_SndArcInit(&sdat->header, "data/sound/sound_data.sdat", sdat->heap, 0);
NNS_SndArcPlayerSetup(sdat->heap);
FUN_02004088(sdat);
FUN_020040A4(sdat);
UNK_02107074 = 0;
sdat->unk_BCD4C = a0;
FUN_02004D60(a1->soundMethod);
sdat->chatot = chatot;
FUN_02004D60(options->soundMethod);
}
void DoSoundUpdateFrame(void)
@@ -185,7 +185,7 @@ void * FUN_02003D38(u32 a0)
case 34:
return &sdat->unk_BCD48;
case 35:
return &sdat->unk_BCD4C;
return &sdat->chatot;
case 36:
return &sdat->unk_BCD50;
case 37:
@@ -200,61 +200,61 @@ void * FUN_02003D38(u32 a0)
}
}
int FUN_02003F3C(int * a0)
int GF_Snd_SaveState(int * level_p)
{
struct SoundData * sdat = GetSoundDataPointer();
int r4 = NNS_SndHeapSaveState(sdat->heap);
GF_ASSERT(r4 != -1);
if (a0 != NULL)
*a0 = r4;
return r4;
int level = NNS_SndHeapSaveState(sdat->heap);
GF_ASSERT(level != -1);
if (level_p != NULL)
*level_p = level;
return level;
}
void FUN_02003F64(int a0)
void GF_Snd_RestoreState(int level)
{
struct SoundData * sdat = GetSoundDataPointer();
NNS_SndHeapLoadState(sdat->heap, a0);
NNS_SndHeapLoadState(sdat->heap, level);
}
BOOL FUN_02003F78(int a0)
BOOL GF_Snd_LoadGroup(int groupNo)
{
struct SoundData * sdat = GetSoundDataPointer();
return NNS_SndArcLoadGroup(a0, sdat->heap);
return NNS_SndArcLoadGroup(groupNo, sdat->heap);
}
BOOL FUN_02003F90(int a0)
BOOL GF_Snd_LoadSeq(int seqNo)
{
struct SoundData * sdat = GetSoundDataPointer();
return NNS_SndArcLoadSeq(a0, sdat->heap);
return NNS_SndArcLoadSeq(seqNo, sdat->heap);
}
BOOL FUN_02003FA8(int a0, u32 a1)
BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag)
{
struct SoundData * sdat = GetSoundDataPointer();
return NNS_SndArcLoadSeqEx(a0, a1, sdat->heap);
return NNS_SndArcLoadSeqEx(seqNo, loadFlag, sdat->heap);
}
BOOL FUN_02003FC4(int a0)
BOOL GF_Snd_LoadWaveArc(int waveArcNo)
{
struct SoundData * sdat = GetSoundDataPointer();
return NNS_SndArcLoadWaveArc(a0, sdat->heap);
return NNS_SndArcLoadWaveArc(waveArcNo, sdat->heap);
}
BOOL FUN_02003FDC(int a0)
BOOL GF_Snd_LoadBank(int bankNo)
{
struct SoundData * sdat = GetSoundDataPointer();
return NNS_SndArcLoadBank(a0, sdat->heap);
return NNS_SndArcLoadBank(bankNo, sdat->heap);
}
u32 * FUN_02003FF4(int a0)
u32 * FUN_02003FF4(int playerNo)
{
struct SoundData * sdat = GetSoundDataPointer();
if (a0 >= 9)
if (playerNo >= (s32)NELEMS(sdat->players))
{
GF_ASSERT(0);
a0 = 0;
playerNo = 0;
}
return &sdat->unk_BBC94[a0];
return &sdat->players[playerNo];
}
u32 FUN_02004018(u32 a0)
@@ -283,7 +283,7 @@ u32 FUN_02004018(u32 a0)
}
}
void FUN_02004064(struct SoundData * sdat)
void GF_SoundDataInit(struct SoundData * sdat)
{
int i;
memset(sdat, 0, sizeof(*sdat));
@@ -296,18 +296,18 @@ void FUN_02004088(struct SoundData * sdat)
int i;
for (i = 0; i < 9; i++)
{
NNS_SndHandleInit(&sdat->unk_BBC94[i]);
NNS_SndHandleInit(&sdat->players[i]);
}
}
void FUN_020040A4(struct SoundData * sdat)
{
FUN_02003F3C(&sdat->unk_BCD1C[0]);
FUN_02003F78(0);
FUN_02003F3C(&sdat->unk_BCD1C[1]);
GF_Snd_SaveState(&sdat->unk_BCD1C[0]);
GF_Snd_LoadGroup(0);
GF_Snd_SaveState(&sdat->unk_BCD1C[1]);
}
void FUN_020040C8(void)
void GF_InitMic(void)
{
MIC_Init();
PM_SetAmp(1);
+24
View File
@@ -0,0 +1,24 @@
#ifndef POKEDIAMOND_SAV_CHATOT_H
#define POKEDIAMOND_SAV_CHATOT_H
#include "save_block_2.h"
struct SaveChatotSoundClip
{
// TODO: Fill this in
BOOL exists;
s8 data[1000];
};
u32 Sav2_Chatot_sizeof(void);
void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot);
struct SaveChatotSoundClip * Chatot_new(u32 heap_id);
struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2);
BOOL Chatot_exists(struct SaveChatotSoundClip * chatot);
void Chatot_invalidate(struct SaveChatotSoundClip * chatot);
s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot);
void Chatot_Decode(s8 * dest, const s8 * data);
void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data);
void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src);
#endif //POKEDIAMOND_SAV_CHATOT_H
+13 -12
View File
@@ -6,13 +6,14 @@
#include "NNS_SND_heap.h"
#include "NNS_SND_arc_loader.h"
#include "player_data.h"
#include "sav_chatot.h"
struct SoundData
{
NNSSndArc header;
NNSSndHeapHandle * heap; // 0x00090
u8 unk_00094[0xBBC00];
u32 unk_BBC94[9];
u8 heapBuffer[0xBBC00];
u32 players[9];
u32 unk_BBCB8;
u32 unk_BBCBC;
u8 unk_BBCC0[0x20];
@@ -44,7 +45,7 @@ struct SoundData
u32 unk_BCD3C;
u64 unk_BCD40;
u32 unk_BCD48;
void * unk_BCD4C;
struct SaveChatotSoundClip * chatot;
u32 unk_BCD50;
u32 unk_BCD54;
u32 unk_BCD58;
@@ -52,16 +53,16 @@ struct SoundData
};
struct SoundData * GetSoundDataPointer(void);
void InitSoundData(void * a0, struct Options * a1);
void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options);
void * FUN_02003D38(u32 a0);
int FUN_02003F3C(int * a0);
void FUN_02003F64(int a0);
BOOL FUN_02003F78(int a0);
BOOL FUN_02003F90(int a0);
BOOL FUN_02003FA8(int a0, u32 a1);
BOOL FUN_02003FC4(int a0);
BOOL FUN_02003FDC(int a0);
u32 * FUN_02003FF4(int a0);
int GF_Snd_SaveState(int * level_p);
void GF_Snd_RestoreState(int level);
BOOL GF_Snd_LoadGroup(int groupNo);
BOOL GF_Snd_LoadSeq(int seqNo);
BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag);
BOOL GF_Snd_LoadWaveArc(int waveArcNo);
BOOL GF_Snd_LoadBank(int bankNo);
u32 * FUN_02003FF4(int playerNo);
u32 FUN_02004018(u32 a0);
void DoSoundUpdateFrame(void);