summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-07-22 23:43:21 +0100
committerGitHub <noreply@github.com>2021-07-22 23:43:21 +0100
commit6c7a70938532c2f61999c841fe792d1c1819fc6a (patch)
treeb2d24fe857d7a86b576c9c10b86fb9ca07816d91
parent170851c800b6fe34ba466318e4f1c177bf50a84a (diff)
parenta917f956c984513f7ef3a5f22f42d9527331b9af (diff)
Merge branch 'master' into split-mod33
-rw-r--r--arm9/asm/scrcmd_asm.s169
-rw-r--r--arm9/asm/unk_020051F4.s1319
-rw-r--r--arm9/asm/unk_02038C78.s2
-rw-r--r--arm9/global.inc2
-rw-r--r--arm9/lib/include/NNS_SND_arc.h3
-rw-r--r--arm9/src/scrcmd.c98
-rw-r--r--arm9/src/sound.c6
-rw-r--r--arm9/src/unk_020040F4.c35
-rw-r--r--arm9/src/unk_020051F4.c717
-rw-r--r--include/scrcmd.h2
-rw-r--r--include/script.h3
-rw-r--r--include/sound.h3
-rw-r--r--include/unk_020040F4.h18
-rw-r--r--include/unk_020051F4.h45
14 files changed, 893 insertions, 1529 deletions
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index ef0c42fa..417c0605 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -14,175 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- thumb_func_start ScrCmd_Unk02A1
-ScrCmd_Unk02A1: ; 0x0203B024
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- str r0, [sp, #0x0]
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- bl FUN_0203B120
- str r0, [sp, #0x4]
- cmp r0, #0x0
- bne _0203B07A
- bl GF_AssertFail
-_0203B07A:
- mov r0, #0x4
- add r1, r0, #0x0
- add r1, #0xfc
- bl AllocFromHeap
- add r4, r0, #0x0
- ldr r0, [sp, #0x4]
- bl FUN_02058B2C
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- ldr r0, [sp, #0x4]
- bl FUN_02058B4C
- lsl r0, r0, #0x10
- ldr r2, [sp, #0x0]
- lsr r0, r0, #0x10
- mov r1, #0x0
- cmp r6, r2
- bhs _0203B0B0
- mov r2, #0xf
- strh r2, [r4, #0x0]
- ldr r2, [sp, #0x0]
- add r1, r1, #0x1
- sub r2, r2, r6
- strh r2, [r4, #0x2]
- b _0203B0C0
-_0203B0B0:
- cmp r6, r2
- bls _0203B0C0
- mov r2, #0xe
- strh r2, [r4, #0x0]
- ldr r2, [sp, #0x0]
- add r1, r1, #0x1
- sub r2, r6, r2
- strh r2, [r4, #0x2]
-_0203B0C0:
- cmp r0, r7
- bhs _0203B0D4
- lsl r2, r1, #0x2
- mov r3, #0xc
- strh r3, [r4, r2]
- sub r3, r7, r0
- add r0, r4, r2
- strh r3, [r0, #0x2]
- add r1, r1, #0x1
- b _0203B0E6
-_0203B0D4:
- cmp r0, r7
- bls _0203B0E6
- lsl r2, r1, #0x2
- mov r3, #0xd
- strh r3, [r4, r2]
- sub r3, r0, r7
- add r0, r4, r2
- strh r3, [r0, #0x2]
- add r1, r1, #0x1
-_0203B0E6:
- lsl r2, r1, #0x2
- mov r0, #0xfe
- strh r0, [r4, r2]
- mov r1, #0x0
- add r0, r4, r2
- strh r1, [r0, #0x2]
- ldr r0, [sp, #0x4]
- add r1, r4, #0x0
- bl FUN_0205AEA4
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x4
- bl FUN_02039438
- ldrb r1, [r0, #0x0]
- add r5, #0x80
- add r2, r4, #0x0
- add r1, r1, #0x1
- strb r1, [r0, #0x0]
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- bl FUN_0203B174
- mov r0, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0203B120
-FUN_0203B120: ; 0x0203B120
- push {r3, lr}
- cmp r1, #0xf2
- bne _0203B130
- ldr r0, [r0, #0x34]
- mov r1, #0x30
- bl FUN_020580B4
- pop {r3, pc}
-_0203B130:
- cmp r1, #0xf1
- bne _0203B13E
- mov r1, #0xb
- bl FUN_02039438
- ldr r0, [r0, #0x0]
- pop {r3, pc}
-_0203B13E:
- ldr r0, [r0, #0x34]
- bl FUN_02058060
- pop {r3, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk005F
-ScrCmd_Unk005F: ; 0x0203B148
- push {r3, lr}
- ldr r1, _0203B154 ; =FUN_0203B158
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_0203B154: .word FUN_0203B158
-
- thumb_func_start FUN_0203B158
-FUN_0203B158: ; 0x0203B158
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x4
- bl FUN_02039438
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0203B16E
- mov r0, #0x1
- pop {r3, pc}
-_0203B16E:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
thumb_func_start FUN_0203B174
FUN_0203B174: ; 0x0203B174
push {r3-r7, lr}
diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s
deleted file mode 100644
index 6e6cec72..00000000
--- a/arm9/asm/unk_020051F4.s
+++ /dev/null
@@ -1,1319 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020051F4
-FUN_020051F4: ; 0x020051F4
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r4, r0, #0x0
- bl GetSoundPlayer
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0200526C
- add r0, r6, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200521C
-FUN_0200521C: ; 0x0200521C
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- add r4, r0, #0x0
- bl FUN_02004018
- add r6, r0, #0x0
- cmp r4, #0x7
- bne _0200523E
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02005288
- add r4, r0, #0x0
- b _02005258
-_0200523E:
- cmp r4, #0x1
- bne _02005250
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_020052B8
- add r4, r0, #0x0
- b _02005258
-_02005250:
- bl GF_AssertFail
- mov r0, #0x0
- pop {r4-r6, pc}
-_02005258:
- mov r0, #0x0
- bl FUN_02004DBC
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_0200526C
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200526C
-FUN_0200526C: ; 0x0200526C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02004110
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- mov r0, #0x1
- bl FUN_02003CE8
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02005288
-FUN_02005288: ; 0x02005288
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x3
- add r4, r2, #0x0
- bl FUN_02004748
- bl GF_Snd_RestoreState
- add r0, r5, #0x0
- bl GF_Snd_LoadSeq
- mov r0, #0x1a
- bl FUN_02003D38
- bl GF_Snd_SaveState
- add r0, r4, #0x0
- bl GetSoundPlayer
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020052B8
-FUN_020052B8: ; 0x020052B8
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- mov r0, #0x12
- add r6, r2, #0x0
- bl FUN_02003D38
- mov r0, #0x1f
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- bl GetSoundPlayer
- bl GF_SndPlayerGetSeqNo
- bl FUN_02004900
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl FUN_020045C4
- add r0, r6, #0x0
- bl GetSoundPlayer
- add r6, r0, #0x0
- ldrh r0, [r4, #0x0]
- bl FUN_02004900
- mov r1, #0x0
- mvn r1, r1
- add r2, r0, #0x0
- add r0, r6, #0x0
- add r3, r1, #0x0
- str r5, [sp, #0x0]
- bl NNS_SndArcPlayerStartSeqEx
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02005308
-FUN_02005308: ; 0x02005308
- push {r3-r5, lr}
- add r5, r1, #0x0
- cmp r0, #0x4
- beq _02005318
- bl GF_AssertFail
- mov r0, #0x0
- pop {r3-r5, pc}
-_02005318:
- add r0, r5, #0x0
- bl FUN_020048D0
- cmp r0, #0x7
- beq _0200532A
- bl GF_AssertFail
- mov r0, #0x0
- pop {r3-r5, pc}
-_0200532A:
- add r0, r5, #0x0
- mov r1, #0x1
- bl GF_Snd_LoadSeqEx
- mov r0, #0x7
- bl GetSoundPlayer
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02004110
- mov r0, #0x1
- bl FUN_02003CE8
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005350
-FUN_02005350: ; 0x02005350
- push {r4, lr}
- add r4, r0, #0x0
- bl NNS_SndPlayerStopSeqBySeqNo
- add r0, r4, #0x0
- bl FUN_020048D0
- cmp r0, #0xff
- beq _0200536E
- bl FUN_02004018
- bl GetSoundPlayer
- bl NNS_SndHandleReleaseSeq
-_0200536E:
- bl FUN_02005374
- pop {r4, pc}
-
- thumb_func_start FUN_02005374
-FUN_02005374: ; 0x02005374
- push {r3, lr}
- mov r0, #0x0
- bl FUN_02004110
- mov r0, #0x0
- bl FUN_02004130
- mov r0, #0x0
- bl FUN_02003CE8
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200538C
-FUN_0200538C: ; 0x0200538C
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _020053C8
- bl FUN_02004018
- add r7, r0, #0x0
- cmp r4, #0x0
- bne _020053B2
- mov r1, #0x0
- add r2, r1, #0x0
- bl GF_SndPlayerMoveVolume
-_020053B2:
- add r0, r7, #0x0
- add r1, r6, #0x0
- add r2, r5, #0x0
- bl GF_SndPlayerMoveVolume
- add r0, r5, #0x0
- bl FUN_02004D74
- mov r0, #0x3
- bl FUN_02003CE8
-_020053C8:
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020053CC
-FUN_020053CC: ; 0x020053CC
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02004124
- bl FUN_020048D0
- add r6, r0, #0x0
- cmp r6, #0xff
- beq _02005402
- bl FUN_02005404
- cmp r0, #0x0
- bne _020053FC
- add r0, r6, #0x0
- bl FUN_02004018
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl GF_SndPlayerMoveVolume
- add r0, r4, #0x0
- bl FUN_02004D74
-_020053FC:
- mov r0, #0x4
- bl FUN_02003CE8
-_02005402:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005404
-FUN_02005404: ; 0x02005404
- push {r3, lr}
- mov r0, #0x6
- bl FUN_02003D38
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_02005410
-FUN_02005410: ; 0x02005410
- push {r3, lr}
- bl FUN_020048D0
- bl GF_SndPlayerCountPlayingSeqByPlayerNo
- pop {r3, pc}
-
- thumb_func_start FUN_0200541C
-FUN_0200541C: ; 0x0200541C
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- bl NNS_SndPlayerStopSeqAll
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005440
- mov r0, #0xe
- bl FUN_02004AAC
-_02005440:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _0200544C
- mov r0, #0xf
- bl FUN_02004AAC
-_0200544C:
- mov r0, #0x0
- bl FUN_02003CE8
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005454
-FUN_02005454: ; 0x02005454
- push {r3-r7, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r7, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x7
- bl GetSoundPlayer
- mov r1, #0x0
- bl NNS_SndPlayerStopSeq
- bl FUN_02005374
- mov r5, #0x0
- add r4, r5, #0x0
-_0200547A:
- add r0, r5, #0x3
- add r1, r4, #0x0
- bl FUN_020054F8
- add r5, r5, #0x1
- cmp r5, #0x4
- blt _0200547A
- mov r0, #0x0
- bl FUN_02005614
- ldrb r0, [r7, #0x0]
- cmp r0, #0x1
- bne _0200549A
- mov r0, #0xe
- bl FUN_02004AAC
-_0200549A:
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _020054A6
- mov r0, #0xf
- bl FUN_02004AAC
-_020054A6:
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020054A8
-FUN_020054A8: ; 0x020054A8
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl PlaySE
- add r6, r0, #0x0
- ldr r1, _020054C4 ; =0x0000FFFF
- add r0, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02005530
- add r0, r6, #0x0
- pop {r4-r6, pc}
- nop
-_020054C4: .word 0x0000FFFF
-
- thumb_func_start PlaySE
-PlaySE: ; 0x020054C8
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r4, r0, #0x0
- bl GetSoundPlayer
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- add r0, r6, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020054F0
-FUN_020054F0: ; 0x020054F0
- ldr r3, _020054F4 ; =NNS_SndPlayerStopSeqBySeqNo
- bx r3
- .balign 4
-_020054F4: .word NNS_SndPlayerStopSeqBySeqNo
-
- thumb_func_start FUN_020054F8
-FUN_020054F8: ; 0x020054F8
- push {r4, lr}
- add r4, r1, #0x0
- bl GetSoundPlayer
- add r1, r4, #0x0
- bl NNS_SndPlayerStopSeq
- pop {r4, pc}
-
- thumb_func_start FUN_02005508
-FUN_02005508: ; 0x02005508
- push {r3, lr}
- bl FUN_020048D0
- bl GF_SndPlayerCountPlayingSeqByPlayerNo
- pop {r3, pc}
-
- thumb_func_start FUN_02005514
-FUN_02005514: ; 0x02005514
- push {r4, lr}
- mov r4, #0x0
-_02005518:
- add r0, r4, #0x3
- bl GF_SndPlayerCountPlayingSeqByPlayerNo
- cmp r0, #0x1
- bne _02005526
- mov r0, #0x1
- pop {r4, pc}
-_02005526:
- add r4, r4, #0x1
- cmp r4, #0x4
- blt _02005518
- mov r0, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02005530
-FUN_02005530: ; 0x02005530
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- bl GetSoundPlayer
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl NNS_SndPlayerSetTrackPan
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200554C
-FUN_0200554C: ; 0x0200554C
- push {r3-r7, lr}
- add r6, r0, #0x0
- mov r0, #0x3
- bl FUN_02004018
- ldr r7, _02005574 ; =0x0000FFFF
- add r4, r0, #0x0
- mov r5, #0x0
-_0200555C:
- add r0, r4, r5
- bl GetSoundPlayer
- add r1, r7, #0x0
- add r2, r6, #0x0
- bl NNS_SndPlayerSetTrackPan
- add r5, r5, #0x1
- cmp r5, #0x4
- blt _0200555C
- pop {r3-r7, pc}
- nop
-_02005574: .word 0x0000FFFF
-
- thumb_func_start FUN_02005578
-FUN_02005578: ; 0x02005578
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x11
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x23
- bl FUN_02003D38
- ldr r1, _02005610 ; =0x000001B9
- cmp r5, r1
- beq _0200559C
- add r1, #0x36
- cmp r5, r1
- bhi _0200559A
- cmp r5, #0x0
- bne _0200559C
-_0200559A:
- mov r5, #0x1
-_0200559C:
- ldr r1, _02005610 ; =0x000001B9
- cmp r5, r1
- bne _020055BC
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- mov r2, #0x7f
- add r3, r1, #0x0
- bl FUN_02005D48
- cmp r0, #0x1
- bne _020055BC
- mov r0, #0x0
- bl FUN_02005E80
- mov r0, #0x1
- pop {r3-r5, pc}
-_020055BC:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020055E8
- mov r0, #0x0
- bl FUN_02005614
- mov r0, #0x1
- bl GetSoundPlayer
- mov r1, #0x2
- str r1, [sp, #0x0]
- sub r1, r1, #0x3
- add r2, r5, #0x0
- add r3, r1, #0x0
- bl NNS_SndArcPlayerStartSeqEx
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x1
- bl FUN_02004858
- b _02005606
-_020055E8:
- mov r0, #0x8
- bl GetSoundPlayer
- mov r1, #0x2
- str r1, [sp, #0x0]
- sub r1, r1, #0x3
- add r2, r5, #0x0
- add r3, r1, #0x0
- bl NNS_SndArcPlayerStartSeqEx
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x8
- bl FUN_02004858
-_02005606:
- mov r0, #0x0
- bl FUN_02005E80
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-_02005610: .word 0x000001B9
-
- thumb_func_start FUN_02005614
-FUN_02005614: ; 0x02005614
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xe
- bl FUN_02003D38
- mov r0, #0x1
- bl GetSoundPlayer
- add r1, r5, #0x0
- bl NNS_SndPlayerStopSeq
- mov r0, #0x8
- bl GetSoundPlayer
- add r1, r5, #0x0
- bl NNS_SndPlayerStopSeq
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02005658
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005658:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _0200566A
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_0200566A:
- bl FUN_02005DFC
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005670
-FUN_02005670: ; 0x02005670
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xe
- bl FUN_02003D38
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005696
- mov r0, #0xe
- bl FUN_02004ABC
- pop {r3-r5, pc}
-_02005696:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _020056A4
- mov r0, #0xf
- bl FUN_02004ABC
- pop {r3-r5, pc}
-_020056A4:
- mov r0, #0x0
- bl GF_SndPlayerCountPlayingSeqByPlayerNo
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020056AC
-FUN_020056AC: ; 0x020056AC
- push {r3-r7, lr}
- sub sp, #0x20
- str r0, [sp, #0x4]
- mov r0, #0xf
- str r1, [sp, #0x8]
- add r5, r2, #0x0
- add r6, r3, #0x0
- ldr r7, [sp, #0x38]
- bl FUN_02003D38
- str r0, [sp, #0x14]
- mov r0, #0x10
- bl FUN_02003D38
- str r0, [sp, #0x10]
- mov r0, #0x11
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x1d
- bl FUN_02003D38
- str r0, [sp, #0xc]
- mov r0, #0x23
- bl FUN_02003D38
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r0, r0, #0x1
- str r0, [sp, #0x1c]
- add r0, #0x40
- str r0, [sp, #0x1c]
- add r0, r6, #0x0
- str r0, [sp, #0x18]
- sub r0, #0x1e
- str r0, [sp, #0x18]
- cmp r0, #0x0
- bgt _020056FC
- mov r0, #0x1
- str r0, [sp, #0x18]
-_020056FC:
- mov r0, #0x0
- strb r0, [r4, #0x0]
- ldr r0, [sp, #0x14]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005714
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005714:
- ldr r0, [sp, #0x10]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005728
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_02005728:
- ldr r4, [sp, #0x8]
- ldr r0, _02005AB4 ; =0x000001B9
- add r1, r4, #0x0
- cmp r1, r0
- beq _0200573E
- add r0, #0x36
- cmp r1, r0
- bhi _0200573C
- add r0, r4, #0x0
- bne _0200573E
-_0200573C:
- mov r4, #0x1
-_0200573E:
- ldr r0, _02005AB4 ; =0x000001B9
- ldr r1, [sp, #0x8]
- cmp r1, r0
- bne _020057B4
- ldr r1, [sp, #0x4]
- cmp r1, #0xc
- bhi _020057AE
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02005758: ; jump table (using 16-bit offset)
- .short _02005772 - _02005758 - 2; case 0
- .short _02005772 - _02005758 - 2; case 1
- .short _02005772 - _02005758 - 2; case 2
- .short _020057AE - _02005758 - 2; case 3
- .short _020057AE - _02005758 - 2; case 4
- .short _02005772 - _02005758 - 2; case 5
- .short _020057AE - _02005758 - 2; case 6
- .short _020057AE - _02005758 - 2; case 7
- .short _020057AE - _02005758 - 2; case 8
- .short _020057AE - _02005758 - 2; case 9
- .short _020057AE - _02005758 - 2; case 10
- .short _02005772 - _02005758 - 2; case 11
- .short _02005772 - _02005758 - 2; case 12
-_02005772:
- bl FUN_02005578
- ldr r0, [sp, #0xc]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02005794
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- b _020057A8
-_02005794:
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xe
- add r1, r6, #0x0
- bl FUN_02004AF8
-_020057A8:
- add sp, #0x20
- mov r0, #0x1
- pop {r3-r7, pc}
-_020057AE:
- mov r0, #0x1
- bl FUN_02005E80
-_020057B4:
- ldr r0, [sp, #0x4]
- cmp r0, #0xe
- bls _020057BC
- b _02005AC2
-_020057BC:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020057C8: ; jump table (using 16-bit offset)
- .short _020057E6 - _020057C8 - 2; case 0
- .short _02005802 - _020057C8 - 2; case 1
- .short _02005826 - _020057C8 - 2; case 2
- .short _02005868 - _020057C8 - 2; case 3
- .short _020058B2 - _020057C8 - 2; case 4
- .short _02005900 - _020057C8 - 2; case 5
- .short _02005928 - _020057C8 - 2; case 6
- .short _0200596C - _020057C8 - 2; case 7
- .short _0200599C - _020057C8 - 2; case 8
- .short _020059CA - _020057C8 - 2; case 9
- .short _020059FE - _020057C8 - 2; case 10
- .short _02005A2E - _020057C8 - 2; case 11
- .short _02005A56 - _020057C8 - 2; case 12
- .short _02005A86 - _020057C8 - 2; case 13
- .short _02005ABC - _020057C8 - 2; case 14
-_020057E6:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- b _02005AC2
-_02005802:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x14
- add r1, r7, #0x0
- bl FUN_02005AE0
- b _02005AC2
-_02005826:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x40
- bl GF_SndPlayerSetTrackPitch
- add r0, r4, #0x0
- mov r1, #0x14
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_02005868:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1e
- add r1, r7, #0x0
- bl FUN_02005AE0
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0xc0
- bl GF_SndPlayerSetTrackPitch
- add r0, r4, #0x0
- mov r1, #0x10
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_020058B2:
- mov r0, #0xe
- bl FUN_02004984
- ldr r2, [sp, #0x1c]
- add r0, r4, #0x0
- add r1, r6, #0x0
- mov r3, #0xe
- str r7, [sp, #0x0]
- bl FUN_02004B30
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xf
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r1, #0x86
- mov r0, #0xe
- lsl r1, r1, #0x8
- bl FUN_02004AE4
- mov r1, #0x3f
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, r4, #0x0
- mvn r1, r1
- str r7, [sp, #0x0]
- bl FUN_02005BF8
- mov r1, #0x86
- mov r0, #0xf
- lsl r1, r1, #0x8
- bl FUN_02004AE4
- b _02005AC2
-_02005900:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0xe1
- bl GF_SndPlayerSetTrackPitch
- b _02005AC2
-_02005928:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x2c
- bl GF_SndPlayerSetTrackPitch
- mov r1, #0x3f
- add r0, r4, #0x0
- mvn r1, r1
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_0200596C:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0xb
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x81
- bl GF_SndPlayerSetTrackPitch
- b _02005AC2
-_0200599C:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x3c
- add r1, r7, #0x0
- bl FUN_02005AE0
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x3c
- bl GF_SndPlayerSetTrackPitch
- b _02005AC2
-_020059CA:
- mov r0, #0xe
- bl FUN_02004984
- ldr r2, [sp, #0x1c]
- add r0, r4, #0x0
- add r1, r6, #0x0
- mov r3, #0xe
- str r7, [sp, #0x0]
- bl FUN_02004B30
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xd
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r1, #0x1a
- mov r0, #0xe
- lsl r1, r1, #0xa
- bl FUN_02004AE4
- b _02005AC2
-_020059FE:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x64
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x2d
- bl GF_SndPlayerSetTrackPitch
- b _02005AC2
-_02005A2E:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x61
- bl GF_SndPlayerSetTrackPitch
- b _02005AC2
-_02005A56:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x14
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x61
- bl GF_SndPlayerSetTrackPitch
- b _02005AC2
-_02005A86:
- add r0, r4, #0x0
- bl FUN_02005578
- add r0, r4, #0x0
- mov r1, #0x1
- mov r2, #0x7f
- bl FUN_02005AC8
- add r0, r4, #0x0
- mov r1, #0x14
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl GF_SndPlayerSetTrackPan
- mov r0, #0x8
- add r1, r6, #0x0
- mov r2, #0x0
- bl GF_SndPlayerMoveVolume
- b _02005AC2
- .balign 4
-_02005AB4: .word 0x000001B9
-_02005AB8: .word 0x0000FFFF
-_02005ABC:
- add r0, r4, #0x0
- bl FUN_02005578
-_02005AC2:
- mov r0, #0x1
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02005AC8
-FUN_02005AC8: ; 0x02005AC8
- push {r3-r5, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r0, r4, #0x0
- add r1, r2, #0x0
- bl GF_SndPlayerSetInitialVolume
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005AE0
-FUN_02005AE0: ; 0x02005AE0
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r0, #0x22
- bl FUN_02003D38
- add r6, r0, #0x0
- bl FUN_02005BA0
- add r0, r4, #0x0
- mov r1, #0x8
- bl AllocFromHeap
- add r4, r0, #0x0
- bne _02005B04
- bl GF_AssertFail
- pop {r4-r6, pc}
-_02005B04:
- mov r2, #0x0
- strb r2, [r4, #0x0]
- strb r2, [r4, #0x1]
- strb r2, [r4, #0x2]
- strb r2, [r4, #0x3]
- strb r2, [r4, #0x4]
- strb r2, [r4, #0x5]
- strb r2, [r4, #0x6]
- strb r2, [r4, #0x7]
- ldr r0, _02005B28 ; =FUN_02005B2C
- add r1, r4, #0x0
- str r5, [r4, #0x0]
- bl FUN_0200CA44
- str r0, [r4, #0x4]
- str r0, [r6, #0x0]
- pop {r4-r6, pc}
- nop
-_02005B28: .word FUN_02005B2C
-
- thumb_func_start FUN_02005B2C
-FUN_02005B2C: ; 0x02005B2C
- push {r4-r6, lr}
- mov r0, #0xf
- add r5, r1, #0x0
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- ldr r2, [r5, #0x0]
- add r4, r0, #0x0
- cmp r2, #0xa
- bne _02005B58
- mov r0, #0x1
- mov r1, #0x0
- bl GF_SndPlayerMoveVolume
- ldr r2, [r5, #0x0]
- mov r0, #0x8
- mov r1, #0x0
- bl GF_SndPlayerMoveVolume
-_02005B58:
- ldr r0, [r5, #0x0]
- sub r0, r0, #0x1
- str r0, [r5, #0x0]
- bl FUN_02005670
- cmp r0, #0x0
- bne _02005B6A
- mov r0, #0x0
- str r0, [r5, #0x0]
-_02005B6A:
- ldr r0, [r5, #0x0]
- cmp r0, #0x0
- bgt _02005B9E
- mov r0, #0x0
- bl FUN_02005614
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02005B88
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005B88:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _02005B9A
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_02005B9A:
- bl FUN_02005BA0
-_02005B9E:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005BA0
-FUN_02005BA0: ; 0x02005BA0
- push {r3-r5, lr}
- mov r0, #0x22
- bl FUN_02003D38
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _02005BC2
- bl FUN_0201B6C8
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- bl FUN_0200CAB4
- add r0, r5, #0x0
- bl FreeToHeap
-_02005BC2:
- mov r0, #0x0
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005BC8
-FUN_02005BC8: ; 0x02005BC8
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x11
- add r4, r1, #0x0
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- add r0, r1, #0x0
- bl FUN_02005E80
- add r0, r5, #0x0
- bl FUN_02005578
- add r5, r0, #0x0
- ldr r1, _02005BF4 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r4, #0x0
- bl GF_SndPlayerSetTrackPitch
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-_02005BF4: .word 0x0000FFFF
-
- thumb_func_start FUN_02005BF8
-FUN_02005BF8: ; 0x02005BF8
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- mov r0, #0x11
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- mov r0, #0xf
- bl FUN_02004984
- ldr r0, [sp, #0x18]
- add r1, r4, #0x0
- str r0, [sp, #0x0]
- add r0, r5, #0x0
- add r2, r6, #0x0
- mov r3, #0xf
- bl FUN_02004B30
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start PlaySound
-PlaySound: ; 0x02005C28
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_020048F4
- add r0, r5, #0x0
- bl FUN_02005CEC
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _02005C48
- mov r1, #0x1
- bl FUN_020047C8
-_02005C48:
- mov r0, #0x1c
- bl FUN_02003D38
- bl GF_Snd_SaveState
- add r0, r5, #0x0
- mov r1, #0x3
- bl GF_Snd_LoadSeqEx
- mov r0, #0x2
- bl GetSoundPlayer
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x2
- bl FUN_02004858
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005C74
-FUN_02005C74: ; 0x02005C74
- push {r4, lr}
- mov r0, #0xd
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x2
- bl GF_SndPlayerCountPlayingSeqByPlayerNo
- cmp r0, #0x0
- beq _02005C8C
- mov r0, #0x1
- pop {r4, pc}
-_02005C8C:
- ldrh r0, [r4, #0x0]
- cmp r0, #0x0
- beq _02005C9A
- sub r0, r0, #0x1
- strh r0, [r4, #0x0]
- mov r0, #0x1
- pop {r4, pc}
-_02005C9A:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02005CA0
-FUN_02005CA0: ; 0x02005CA0
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x2
- bl GetSoundPlayer
- add r1, r4, #0x0
- bl NNS_SndPlayerStopSeq
- mov r0, #0x6
- bl FUN_02004748
- bl GF_Snd_RestoreState
- pop {r4, pc}
-
- thumb_func_start FUN_02005CBC
-FUN_02005CBC: ; 0x02005CBC
- push {r3, lr}
- mov r0, #0xd
- bl FUN_02003D38
- bl FUN_02005C74
- cmp r0, #0x1
- bne _02005CD0
- mov r0, #0x1
- pop {r3, pc}
-_02005CD0:
- mov r0, #0x0
- bl FUN_02005CA0
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _02005CE8
- mov r1, #0x0
- bl FUN_020047C8
-_02005CE8:
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02005CEC
-FUN_02005CEC: ; 0x02005CEC
- push {r3, lr}
- mov r0, #0xd
- bl FUN_02003D38
- mov r1, #0xf
- strh r1, [r0, #0x0]
- pop {r3, pc}
- .balign 4
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index e40bd803..aea1dbf8 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -244,7 +244,7 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_SaveChatotCry
.word ScrCmd_Unk005D
.word ScrCmd_Unk005E
- .word ScrCmd_Unk005F
+ .word ScrCmd_WaitForMovement
.word ScrCmd_Unk0060
.word ScrCmd_Unk0061
.word ScrCmd_Unk0062
diff --git a/arm9/global.inc b/arm9/global.inc
index 077162c4..350ae6d2 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2788,7 +2788,7 @@
.extern ScrCmd_Unk02D0
.extern ScrCmd_Unk005E
.extern ScrCmd_Unk02A1
-.extern ScrCmd_Unk005F
+.extern ScrCmd_WaitForMovement
.extern ScrCmd_Unk0060
.extern ScrCmd_Unk02B4
.extern ScrCmd_Unk0061
diff --git a/arm9/lib/include/NNS_SND_arc.h b/arm9/lib/include/NNS_SND_arc.h
index 95b33141..5298d805 100644
--- a/arm9/lib/include/NNS_SND_arc.h
+++ b/arm9/lib/include/NNS_SND_arc.h
@@ -2,6 +2,7 @@
#define GUARD_NNS_SND_ARC_H
#include "SND_main.h"
+#include "FS_file.h"
typedef struct NNSSndArcHeader
{
@@ -33,6 +34,6 @@ void NNS_SndArcPlayerSetup(void *);
void NNS_SndMain(void);
void NNS_SndHandleInit(u32 *);
void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame);
-void NNS_SndHandleReleaseSeq(void);
+void NNS_SndHandleReleaseSeq(u32 *);
#endif //GUARD_NNS_SND_ARC_H
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index 6287579c..c79684a0 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -53,10 +53,12 @@ extern void MOD05_021E1F60(u32 param0);
extern void MOD05_021E26CC(u32 param0, u8 param1);
extern void MOD05_021E2B80(u32 param0, u8 param1);
extern void MOD05_021E2B9C(u32 param0, u8 param1);
-
-extern u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1);
-extern u32 FUN_0205AEA4(u32 param0, const u8 *ptr);
-extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, u32 param2);
+extern u32 FUN_0205AEA4(u32 param0, const void *ptr);
+extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2);
+extern u32 FUN_02058B2C(u32 param0);
+extern u32 FUN_02058B4C(u32 param0);
+extern u32 FUN_020580B4(u32 param0, u32 param1);
+extern u32 FUN_02058060(u32 param0, u32 param1);
extern u8 *UNK_020F34E0;
@@ -75,6 +77,8 @@ static BOOL FUN_0203AA0C(struct ScriptContext *ctx);
static BOOL FUN_0203AB00(struct ScriptContext *ctx);
static BOOL FUN_0203AD2C(struct ScriptContext *ctx);
static BOOL FUN_0203AD78(struct ScriptContext *ctx);
+static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1);
+static BOOL FUN_0203B158(struct ScriptContext *ctx);
extern u8 sScriptConditionTable[6][3];
@@ -1314,6 +1318,90 @@ THUMB_FUNC BOOL ScrCmd_Unk005E(struct ScriptContext *ctx) //ApplyMovement?
u8 *unk5 = FUN_02039438(ctx->unk80, 4);
(*unk5)++;
- FUN_0203B174(ctx->unk80, unk4, 0);
+ FUN_0203B174(ctx->unk80, unk4, NULL);
return FALSE;
}
+
+THUMB_FUNC BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx)
+{
+ u32 unk3; //has to be defined first to match
+ u16 unk0 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ unk3 = FUN_0203B120(ctx->unk80, unk0);
+
+ GF_ASSERT(unk3 != 0);
+
+ u16 *unk4 = AllocFromHeap(4, 0x100);
+ u16 unk5 = (u16)FUN_02058B2C(unk3);
+ u16 unk6 = (u16)FUN_02058B4C(unk3);
+
+ u32 pos = 0;
+
+ if (unk5 < unk1)
+ {
+ unk4[0] = 15;
+ pos++;
+ unk4[1] = unk1 - unk5;
+ }
+ else if (unk5 > unk1)
+ {
+ unk4[0] = 14;
+ pos++;
+ unk4[1] = unk5 - unk1;
+ }
+
+ if (unk6 < unk2)
+ {
+ unk4[pos * 2] = 12;
+ unk4[pos * 2 + 1] = unk2 - unk6;
+ pos++;
+ }
+ else if (unk6 > unk2)
+ {
+ unk4[pos * 2] = 13;
+ unk4[pos * 2 + 1] = unk6 - unk2;
+ pos++;
+ }
+
+ unk4[pos * 2] = 254;
+ unk4[pos * 2 + 1] = 0;
+
+ u32 unk7 = FUN_0205AEA4(unk3, unk4);
+ u8 *unk8 = FUN_02039438(ctx->unk80, 4);
+
+ (*unk8)++;
+
+ FUN_0203B174(ctx->unk80, unk7, unk4);
+ return FALSE;
+}
+
+THUMB_FUNC static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1)
+{
+ if (param1 == 242)
+ {
+ return FUN_020580B4(arg->unk34, 48);
+ }
+ else if (param1 == 241)
+ {
+ u32 *res = FUN_02039438(arg, 11);
+ return *res;
+ }
+ else
+ {
+ return FUN_02058060(arg->unk34, param1);
+ }
+}
+
+THUMB_FUNC BOOL ScrCmd_WaitForMovement(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, FUN_0203B158);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203B158(struct ScriptContext *ctx)
+{
+ u8 *unk = FUN_02039438(ctx->unk80, 4);
+ return *unk == 0 ? TRUE : FALSE;
+}
diff --git a/arm9/src/sound.c b/arm9/src/sound.c
index 6efef50a..ec65dd06 100644
--- a/arm9/src/sound.c
+++ b/arm9/src/sound.c
@@ -16,7 +16,6 @@ void GF_InitMic(void);
void GF_SoundDataInit(struct SoundData *);
void FUN_02004088(struct SoundData *);
void FUN_020040A4(struct SoundData *);
-void FUN_02003CE8(int);
void FUN_020040DC(void);
extern void FUN_0200521C(int);
@@ -255,7 +254,7 @@ u32 * GetSoundPlayer(int playerNo)
return &sdat->players[playerNo];
}
-u32 FUN_02004018(u32 a0)
+int FUN_02004018(u32 a0)
{
switch (a0)
{
@@ -315,6 +314,5 @@ void GF_InitMic(void)
void FUN_020040DC(void)
{
NNS_SndPlayerStopSeqByPlayerNo(7, 0);
- GetSoundPlayer(7);
- NNS_SndHandleReleaseSeq();
+ NNS_SndHandleReleaseSeq(GetSoundPlayer(7));
}
diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c
index 0cbd5e23..5713ddf0 100644
--- a/arm9/src/unk_020040F4.c
+++ b/arm9/src/unk_020040F4.c
@@ -15,7 +15,7 @@ extern void FUN_0200541C();
extern void FUN_0200521C(int);
extern void FUN_0200538C(u32, u16, u32);
extern void NNS_SndPlayerPause(u32 *, u8);
-extern void NNS_SndPlayerMoveVolume(u32 *, u32, u32);
+extern void NNS_SndPlayerMoveVolume(u32 *, s32, s32);
extern void NNS_SndPlayerSetInitialVolume(u32 *, s32);
extern void *NNS_SndArcGetSeqParam(u32);
extern void NNS_SndArcPlayerStartSeqEx(u32 *, u32, s32, s32, u32);
@@ -27,9 +27,9 @@ extern u32 MIC_StopAutoSampling();
extern u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3);
extern u32 NNS_SndWaveOutAllocChannel(u32);
extern void NNS_SndWaveOutFreeChannel(u32);
-extern u32 NNS_SndWaveOutStart(u32, u32, void *, u32, u32, u32, u32, s32, u32, u32);
+extern u32 NNS_SndWaveOutStart(u32, u32, void *, u32, u32, u32, u32, s32, u32, s32);
extern void NNS_SndWaveOutStop(u32);
-extern void NNS_SndWaveOutIsPlaying(u32);
+extern BOOL NNS_SndWaveOutIsPlaying(u32);
extern void NNS_SndWaveOutSetPan(u32, u32);
extern void NNS_SndWaveOutSetSpeed(u32, u32);
extern void NNS_SndWaveOutSetVolume(u32, s32);
@@ -42,10 +42,9 @@ extern void NNS_SndCaptureStopReverb(u32);
extern void NNS_SndCaptureSetReverbVolume(u32, u32);
extern u32 NNS_SndCaptureStartEffect(void *, u32, u32, u32, u32, void (*)(), void *);
extern void NNS_SndCaptureStopEffect();
-extern void NNS_SndPlayerSetTrackPitch(u32 *, u32, u32);
-extern void NNS_SndPlayerSetTrackPan(u32 *, u32, u32);
+extern void NNS_SndPlayerSetTrackPitch(u32 *, u32, s32);
+extern void NNS_SndPlayerSetTrackPan(u32 *, u32, s32);
extern void NNS_SndSetMonoFlag(u32 param0);
-extern void FUN_02003CE8(u32);
extern void FUN_020053CC(u32, u32);
extern u32 NNS_SndArcGetFileAddress(u32);
extern u32 SND_GetWaveDataAddress(u32, u32);
@@ -553,7 +552,7 @@ THUMB_FUNC void FUN_02004810()
*ptr2 = 0;
}
-THUMB_FUNC void GF_SndPlayerMoveVolume(int playerNo, u32 param1, u32 param2)
+THUMB_FUNC void GF_SndPlayerMoveVolume(int playerNo, s32 param1, s32 param2)
{
NNS_SndPlayerMoveVolume(GetSoundPlayer(playerNo), param1, param2);
}
@@ -599,7 +598,7 @@ THUMB_FUNC void FUN_02004858(u32 param0, int playerNo)
THUMB_FUNC void FUN_0200488C(u16 param0, u16 param1)
{
- GF_SndPlayerSetInitialVolume((int)FUN_02004018(FUN_020048D0(param0)), param1);
+ GF_SndPlayerSetInitialVolume(FUN_02004018(FUN_020048D0(param0)), param1);
}
THUMB_FUNC void GF_SndArcPlayerStartSeqEx(int playerNo, u32 param1, u32 param2)
@@ -640,7 +639,7 @@ THUMB_FUNC u32 FUN_020048F4(u16 param0)
return NNS_SndArcGetBankInfo(FUN_02004900(param0));
}
-THUMB_FUNC u16 FUN_02004900(u16 param0)
+THUMB_FUNC u16 FUN_02004900(u32 param0)
{
u16 *ptr = NNS_SndArcGetSeqParam(param0);
if (ptr == NULL)
@@ -794,9 +793,9 @@ THUMB_FUNC void FUN_02004AAC(u32 param0)
NNS_SndWaveOutStop(*(u32 *)FUN_02004930(param0));
}
-THUMB_FUNC void FUN_02004ABC(u32 param0)
+THUMB_FUNC BOOL FUN_02004ABC(u32 param0)
{
- NNS_SndWaveOutIsPlaying(*(u32 *)FUN_02004930(param0));
+ return NNS_SndWaveOutIsPlaying(*(u32 *)FUN_02004930(param0));
}
THUMB_FUNC void FUN_02004ACC(u32 param0, u32 param1)
@@ -825,7 +824,7 @@ THUMB_FUNC void FUN_02004AF8(u32 param0, s32 param1)
NNS_SndWaveOutSetVolume(*(u32 *)FUN_02004930(param0), param1);
}
-THUMB_FUNC u32 FUN_02004B30(u32 param0, s32 param1, u32 param2, u32 param3, u32 param4)
+THUMB_FUNC u32 FUN_02004B30(u32 param0, s32 param1, s32 param2, u32 param3, u32 param4)
{
GetSoundDataPointer();
@@ -970,17 +969,17 @@ THUMB_FUNC void FUN_02004D04(s32 param0)
*ptr = (u8)param0;
}
-THUMB_FUNC void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, u32 param2)
+THUMB_FUNC void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, s32 param2)
{
NNS_SndPlayerSetTrackPitch(GetSoundPlayer(playerNo), param1, param2);
}
-THUMB_FUNC void FUN_02004D34(u16 param0, u32 param1, u32 param2)
+THUMB_FUNC void FUN_02004D34(u16 param0, u32 param1, s32 param2)
{
- GF_SndPlayerSetTrackPitch((int)FUN_02004018(FUN_020048D0(param0)), param1, param2);
+ GF_SndPlayerSetTrackPitch(FUN_02004018(FUN_020048D0(param0)), param1, param2);
}
-THUMB_FUNC void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, u32 param2)
+THUMB_FUNC void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, s32 param2)
{
NNS_SndPlayerSetTrackPan(GetSoundPlayer(playerNo), param1, param2);
}
@@ -991,9 +990,9 @@ THUMB_FUNC void GF_SndSetMonoFlag(u32 param0)
UNK_021C3DD8[0] = param0;
}
-THUMB_FUNC void FUN_02004D74(u32 param0)
+THUMB_FUNC void FUN_02004D74(s32 param0)
{
- *(u32 *)FUN_02003D38(6) = param0;
+ *(s32 *)FUN_02003D38(6) = param0;
}
THUMB_FUNC void FUN_02004D84(u32 param0)
diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c
new file mode 100644
index 00000000..1d3679c8
--- /dev/null
+++ b/arm9/src/unk_020051F4.c
@@ -0,0 +1,717 @@
+#include "global.h"
+#include "unk_020051F4.h"
+#include "NNS_SND_arc.h"
+#include "constants/species.h"
+#include "heap.h"
+#include "sound.h"
+#include "unk_020040F4.h"
+#include "unk_0200CA44.h"
+
+extern u32 NNS_SndArcPlayerStartSeq(u32 *, u32);
+extern u32 NNS_SndArcPlayerStartSeqEx(u32 *, s32, s32, s32, u32);
+extern void NNS_SndPlayerStopSeqBySeqNo(u32, u32);
+extern void NNS_SndPlayerStopSeqAll(u32);
+extern void NNS_SndPlayerStopSeq(u32 *, u32);
+extern void NNS_SndPlayerSetTrackPan(u32 *, u32, u32);
+extern u32 FUN_02005D48(u32, u32, u32, u32);
+extern void FUN_02005E80(u32);
+extern void FUN_02005DFC();
+extern void *FUN_0201B6C8(u32 *);
+
+THUMB_FUNC u32 FUN_020051F4(u16 param0)
+{
+ int playerNo = FUN_02004018(FUN_020048D0(param0));
+
+ u32 ret = NNS_SndArcPlayerStartSeq(GetSoundPlayer(playerNo), param0);
+
+ FUN_0200526C(param0, playerNo);
+
+ return ret;
+}
+
+THUMB_FUNC u32 FUN_0200521C(u16 param0)
+{
+ u8 r4 = FUN_020048D0(param0);
+ int playerNo = FUN_02004018(r4);
+
+ u32 ret;
+ if (r4 == 7)
+ {
+ ret = FUN_02005288(param0, r4, playerNo);
+ }
+ else if (r4 == 1)
+ {
+ ret = FUN_020052B8(param0, r4, playerNo);
+ }
+ else
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ FUN_02004DBC(0);
+ FUN_0200526C(param0, playerNo);
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_0200526C(u16 param0, int playerNo)
+{
+ FUN_02004110(param0);
+ FUN_02004858(param0, playerNo);
+
+ FUN_02003CE8(1);
+}
+
+THUMB_FUNC u32 FUN_02005288(u16 param0, u32 param1, int playerNo)
+{
+#pragma unused(param1)
+ GF_Snd_RestoreState(FUN_02004748(3));
+ GF_Snd_LoadSeq(param0);
+ GF_Snd_SaveState(FUN_02003D38(26));
+ return NNS_SndArcPlayerStartSeq(GetSoundPlayer(playerNo), param0);
+}
+
+THUMB_FUNC u32 FUN_020052B8(u16 param0, u32 param1, int playerNo)
+{
+#pragma unused(param1)
+ FUN_02003D38(18);
+ u16 *r4 = FUN_02003D38(31);
+
+ FUN_020045C4(param0, FUN_02004900(GF_SndPlayerGetSeqNo(GetSoundPlayer(0))));
+
+ return NNS_SndArcPlayerStartSeqEx(GetSoundPlayer(playerNo), -1, FUN_02004900(*r4), -1, param0);
+}
+
+THUMB_FUNC u32 FUN_02005308(u32 param0, u16 param1)
+{
+ if (param0 != 4)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ if (FUN_020048D0(param1) != 7)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ GF_Snd_LoadSeqEx(param1, 1);
+
+ u32 r4 = NNS_SndArcPlayerStartSeq(GetSoundPlayer(7), param1);
+ FUN_02004110(param1);
+ FUN_02003CE8(1);
+
+ return r4;
+}
+
+THUMB_FUNC void FUN_02005350(u16 param0, u32 param1)
+{
+ NNS_SndPlayerStopSeqBySeqNo(param0, param1);
+
+ u8 r0 = FUN_020048D0(param0);
+ if (r0 != 0xff)
+ {
+ NNS_SndHandleReleaseSeq(GetSoundPlayer(FUN_02004018(r0)));
+ }
+
+ FUN_02005374();
+}
+
+THUMB_FUNC void FUN_02005374()
+{
+ FUN_02004110(0);
+ FUN_02004130(0);
+ FUN_02003CE8(0);
+}
+
+THUMB_FUNC void FUN_0200538C(s32 param0, u16 param1, u32 param2)
+{
+ u8 r0 = FUN_020048D0(FUN_02004124());
+ if (r0 == 0xff)
+ {
+ return;
+ }
+
+ int playerNo = FUN_02004018(r0);
+ if (param2 == 0)
+ {
+ GF_SndPlayerMoveVolume(playerNo, 0, 0);
+ }
+
+ GF_SndPlayerMoveVolume(playerNo, param0, param1);
+ FUN_02004D74(param1);
+ FUN_02003CE8(3);
+}
+
+THUMB_FUNC void FUN_020053CC(s32 param0, s32 param1)
+{
+ u8 r6 = FUN_020048D0(FUN_02004124());
+ if (r6 == 0xff)
+ {
+ return;
+ }
+
+ if (!FUN_02005404())
+ {
+ GF_SndPlayerMoveVolume(FUN_02004018(r6), param0, param1);
+ FUN_02004D74(param1);
+ }
+
+ FUN_02003CE8(4);
+}
+
+THUMB_FUNC u16 FUN_02005404()
+{
+ return *(u16 *)FUN_02003D38(6);
+}
+
+THUMB_FUNC u16 FUN_02005410(u16 param0)
+{
+ return GF_SndPlayerCountPlayingSeqByPlayerNo(FUN_020048D0(param0));
+}
+
+THUMB_FUNC void FUN_0200541C()
+{
+ u8 *r5 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+ NNS_SndPlayerStopSeqAll(0);
+
+ if (*r5 == 1)
+ {
+ FUN_02004AAC(14);
+ }
+
+ if (*r4 == 1)
+ {
+ FUN_02004AAC(15);
+ }
+
+ FUN_02003CE8(0);
+}
+
+THUMB_FUNC void FUN_02005454()
+{
+ u8 *r5 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+
+ NNS_SndPlayerStopSeq(GetSoundPlayer(7), 0);
+ FUN_02005374();
+
+ for (s32 i = 0; i < 4; i++)
+ {
+ FUN_020054F8(i + 3, 0);
+ }
+
+ FUN_02005614(0);
+
+ if (*r5 == 1)
+ {
+ FUN_02004AAC(14);
+ }
+
+ if (*r4 == 1)
+ {
+ FUN_02004AAC(15);
+ }
+}
+
+THUMB_FUNC u32 FUN_020054A8(u16 param0, u32 param1)
+{
+ u32 r6 = PlaySE(param0);
+ FUN_02005530(param0, 0xFFFF, param1);
+
+ return r6;
+}
+
+THUMB_FUNC u32 PlaySE(u16 param0)
+{
+ int playerNo = FUN_02004018(FUN_020048D0(param0));
+
+ u32 r6 = NNS_SndArcPlayerStartSeq(GetSoundPlayer(playerNo), param0);
+ FUN_02004858(param0, playerNo);
+
+ return r6;
+}
+
+THUMB_FUNC void FUN_020054F0(u32 param0, u32 param1)
+{
+ NNS_SndPlayerStopSeqBySeqNo(param0, param1);
+}
+
+THUMB_FUNC void FUN_020054F8(s32 param0, u32 param1)
+{
+ NNS_SndPlayerStopSeq(GetSoundPlayer(param0), param1);
+}
+
+THUMB_FUNC u16 FUN_02005508(u16 param0)
+{
+ return GF_SndPlayerCountPlayingSeqByPlayerNo(FUN_020048D0(param0));
+}
+
+THUMB_FUNC BOOL FUN_02005514()
+{
+ for (s32 i = 0; i < 4; i++)
+ {
+ if (GF_SndPlayerCountPlayingSeqByPlayerNo(i + 3) == 1)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02005530(u16 param0, u32 param1, u32 param2)
+{
+ NNS_SndPlayerSetTrackPan(GetSoundPlayer(FUN_02004018(FUN_020048D0(param0))), param1, param2);
+}
+
+THUMB_FUNC void FUN_0200554C(u32 param0)
+{
+ int playerNo = FUN_02004018(3);
+
+ for (int i = 0; i < 4; i++)
+ {
+ NNS_SndPlayerSetTrackPan(GetSoundPlayer(playerNo + i), 0xFFFF, param0);
+ }
+}
+
+THUMB_FUNC u32 FUN_02005578(u16 species)
+{
+ u8 *r4 = FUN_02003D38(17);
+ u32 *r0 = FUN_02003D38(35);
+
+ if (species != SPECIES_CHATOT)
+ {
+ if (species > SPECIES_MANAPHY_EGG || species == SPECIES_NONE)
+ {
+ species = SPECIES_BULBASAUR;
+ }
+ }
+
+ if (species == SPECIES_CHATOT)
+ {
+ if (FUN_02005D48(*r0, 0, 127, 0) == 1)
+ {
+ FUN_02005E80(0);
+
+ return 1;
+ }
+ }
+
+ u32 res;
+ if (*r4 == 0)
+ {
+ FUN_02005614(0);
+ res = NNS_SndArcPlayerStartSeqEx(GetSoundPlayer(1), -1, species, -1, 2);
+ FUN_02004858(species, 1);
+ }
+ else
+ {
+ res = NNS_SndArcPlayerStartSeqEx(GetSoundPlayer(8), -1, species, -1, 2);
+ FUN_02004858(species, 8);
+ }
+
+ FUN_02005E80(0);
+
+ return res;
+}
+
+THUMB_FUNC void FUN_02005614(u32 param0)
+{
+ u8 *r6 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+ FUN_02003D38(14);
+
+ NNS_SndPlayerStopSeq(GetSoundPlayer(1), param0);
+ NNS_SndPlayerStopSeq(GetSoundPlayer(8), param0);
+
+ if (*r6 == 1)
+ {
+ FUN_02004C3C(14);
+ FUN_02004A04(14);
+ }
+
+ if (*r4 == 1)
+ {
+ FUN_02004C3C(15);
+ FUN_02004A04(15);
+ }
+
+ FUN_02005DFC();
+}
+
+THUMB_FUNC BOOL FUN_02005670()
+{
+ u8 *r5 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+ FUN_02003D38(14);
+
+ if (*r5 == 1)
+ {
+ return FUN_02004ABC(14);
+ }
+
+ if (*r4 == 1)
+ {
+ return FUN_02004ABC(15);
+ }
+
+ return GF_SndPlayerCountPlayingSeqByPlayerNo(0);
+}
+
+THUMB_FUNC u32 FUN_020056AC(u32 param0, u16 param1, s32 param2, s32 param3, u32 param4)
+{
+ s32 st1c, st18;
+ u8 *st14 = FUN_02003D38(15);
+ u8 *st10 = FUN_02003D38(16);
+ u8 *r4 = FUN_02003D38(17);
+ u8 *stc = FUN_02003D38(29);
+ FUN_02003D38(35);
+
+ st1c = 64 + (param2 / 2);
+ st18 = param3 - 30;
+
+ if (st18 <= 0)
+ {
+ st18 = 1;
+ }
+
+ *r4 = 0;
+ if (*st14 == 1)
+ {
+ FUN_02004C3C(14);
+ FUN_02004A04(14);
+ }
+
+ if (*st10 == 1)
+ {
+ FUN_02004C3C(15);
+ FUN_02004A04(15);
+ }
+
+ u16 species = param1;
+ if (species != SPECIES_CHATOT)
+ {
+ if (species > SPECIES_MANAPHY_EGG || species == SPECIES_NONE)
+ {
+ species = SPECIES_BULBASAUR;
+ }
+ }
+
+ if (param1 == SPECIES_CHATOT)
+ {
+ switch (param0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 5:
+ case 11:
+ case 12:
+ FUN_02005578(SPECIES_CHATOT);
+ if (*stc == 0)
+ {
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ }
+ else
+ {
+ FUN_02004ACC(14, (u8)st1c);
+ FUN_02004AF8(14, param3);
+ }
+
+ return 1;
+
+ default:
+ FUN_02005E80(1);
+ }
+ }
+
+ switch (param0)
+ {
+ case 0:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ break;
+ case 1:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(20, param4);
+ break;
+ case 2:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 64);
+ FUN_02005BC8(species, 20);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ FUN_02005AC8(species, 8, st18);
+ break;
+ case 3:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(30, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 192);
+ FUN_02005BC8(species, 16);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ FUN_02005AC8(species, 8, st18);
+ break;
+ case 4:
+ FUN_02004984(14);
+ FUN_02004B30(species, param3, st1c, 14, param4);
+ FUN_02004ACC(14, (u8)st1c);
+ FUN_02005AE0(15, param4);
+ FUN_02004AE4(14, 34304);
+ FUN_02005BF8(species, -64, st18, st1c, param4);
+ FUN_02004AE4(15, 34304);
+ break;
+ case 5:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -224);
+ break;
+ case 6:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 44);
+ FUN_02005BC8(species, -64);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ FUN_02005AC8(species, 8, st18);
+ break;
+ case 7:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(11, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -128);
+ break;
+ case 8:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(60, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 60);
+ break;
+ case 9:
+ FUN_02004984(14);
+ FUN_02004B30(species, param3, st1c, 14, param4);
+ FUN_02004ACC(14, (u8)st1c);
+ FUN_02005AE0(13, param4);
+ FUN_02004AE4(14, 26624);
+ break;
+ case 10:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(100, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -44);
+ break;
+ case 11:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -96);
+ break;
+ case 12:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(20, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -96);
+ break;
+ case 13:
+ FUN_02005578(species);
+ FUN_02005AC8(species, 1, 127);
+ FUN_02005BC8(species, 20);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ GF_SndPlayerMoveVolume(8, param3, 0);
+ break;
+ case 14:
+ FUN_02005578(species);
+ break;
+ }
+
+ return 1;
+}
+
+THUMB_FUNC void FUN_02005AC8(u32 param0, int playerNo, s32 param2)
+{
+ GF_SndPlayerSetInitialVolume(playerNo, param2);
+ FUN_02004858(param0, playerNo);
+}
+
+THUMB_FUNC void FUN_02005AE0(u32 param0, u32 param1)
+{
+ u32 *r6 = FUN_02003D38(34);
+ FUN_02005BA0();
+
+ u32 *ptr = AllocFromHeap(param1, 2 * sizeof(u32));
+ if (ptr == NULL)
+ {
+ GF_AssertFail();
+ return;
+ }
+
+ ((u8 *)ptr)[0] = 0;
+ ((u8 *)ptr)[1] = 0;
+ ((u8 *)ptr)[2] = 0;
+ ((u8 *)ptr)[3] = 0;
+ ((u8 *)ptr)[4] = 0;
+ ((u8 *)ptr)[5] = 0;
+ ((u8 *)ptr)[6] = 0;
+ ((u8 *)ptr)[7] = 0;
+
+ ptr[0] = param0;
+ u32 r0 = (u32)FUN_0200CA44(
+ (void (*)(u32, struct TextPrinter *))FUN_02005B2C, (struct TextPrinter *)ptr, 0);
+ ptr[1] = r0;
+ *r6 = r0;
+}
+
+THUMB_FUNC void FUN_02005B2C(u32 param0, s32 *param1)
+{
+#pragma unused(param0)
+ u8 *r6 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+
+ if (*param1 == 10)
+ {
+ GF_SndPlayerMoveVolume(1, 0, *param1);
+ GF_SndPlayerMoveVolume(8, 0, *param1);
+ }
+
+ (*param1)--;
+
+ if (!FUN_02005670())
+ {
+ *param1 = 0;
+ }
+
+ if (*param1 <= 0)
+ {
+ FUN_02005614(0);
+ if (*r6 == 1)
+ {
+ FUN_02004C3C(14);
+ FUN_02004A04(14);
+ }
+ if (*r4 == 1)
+ {
+ FUN_02004C3C(15);
+ FUN_02004A04(15);
+ }
+
+ FUN_02005BA0();
+ }
+}
+
+THUMB_FUNC void FUN_02005BA0()
+{
+ u32 **r4 = FUN_02003D38(34);
+ if (*r4 != NULL)
+ {
+ void *r5 = FUN_0201B6C8(*r4);
+ FUN_0200CAB4((s32)(*r4));
+ FreeToHeap(r5);
+ }
+
+ *r4 = 0;
+}
+
+THUMB_FUNC u32 FUN_02005BC8(u16 param0, s32 param1)
+{
+ *(u8 *)FUN_02003D38(17) = 1;
+
+ FUN_02005E80(1);
+ u32 res = FUN_02005578(param0);
+
+ GF_SndPlayerSetTrackPitch(8, 0xFFFF, param1);
+
+ return res;
+}
+
+THUMB_FUNC void FUN_02005BF8(u32 param0, s32 param1, s32 param2, s32 param3, u32 param4)
+{
+#pragma unused(param1)
+ *(u8 *)FUN_02003D38(17) = 1;
+
+ FUN_02004984(15);
+ FUN_02004B30(param0, param2, param3, 15, param4);
+}
+
+THUMB_FUNC u32 PlaySound(u16 param0)
+{
+ FUN_020048F4(param0);
+ FUN_02005CEC(param0);
+
+ u8 r0 = FUN_020048D0(FUN_02004124());
+ if (r0 != 0xff)
+ {
+ FUN_020047C8(r0, 1);
+ }
+
+ GF_Snd_SaveState((int *)FUN_02003D38(28));
+ GF_Snd_LoadSeqEx(param0, 3);
+ u32 res = NNS_SndArcPlayerStartSeq(GetSoundPlayer(2), param0);
+ FUN_02004858(param0, 2);
+
+ return res;
+}
+
+THUMB_FUNC BOOL FUN_02005C74()
+{
+ u16 *r4 = FUN_02003D38(13);
+
+ if (GF_SndPlayerCountPlayingSeqByPlayerNo(2) != 0)
+ {
+ return TRUE;
+ }
+
+ if (*r4 != 0)
+ {
+ (*r4)--;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02005CA0(u32 param0)
+{
+ NNS_SndPlayerStopSeq(GetSoundPlayer(2), param0);
+ GF_Snd_RestoreState(FUN_02004748(6));
+}
+
+THUMB_FUNC BOOL FUN_02005CBC()
+{
+ FUN_02003D38(13);
+
+ if (FUN_02005C74() == TRUE)
+ {
+ return TRUE;
+ }
+
+ FUN_02005CA0(0);
+ u8 r0 = FUN_020048D0(FUN_02004124());
+
+ if (r0 != 0xff)
+ {
+ FUN_020047C8(r0, 0);
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02005CEC(u16 param0)
+{
+#pragma unused(param0)
+ *(u16 *)FUN_02003D38(13) = 15;
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 826b74d3..5e28a4d0 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -106,6 +106,8 @@ BOOL ScrCmd_Unk0048(struct ScriptContext *ctx);
BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx);
BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx);
BOOL ScrCmd_Unk005E(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx);
+BOOL ScrCmd_WaitForMovement(struct ScriptContext *ctx);
// scrcmd_mart.c
BOOL ScrCmd_NormalMart(struct ScriptContext * ctx);
diff --git a/include/script.h b/include/script.h
index 75b65f90..f6eec142 100644
--- a/include/script.h
+++ b/include/script.h
@@ -33,7 +33,8 @@ struct UnkSavStruct80
struct UnkStruct_0204639C *unk10;
u8 padding2[0x8];
u32 *mapId; //0x1C
- u8 padding3[0x18];
+ u8 padding3[0x14];
+ u32 unk34;
u32 unk38;
u8 padding4[0x24];
u32 unk60;
diff --git a/include/sound.h b/include/sound.h
index aa2f1641..11053cd6 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -63,7 +63,8 @@ BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag);
BOOL GF_Snd_LoadWaveArc(int waveArcNo);
BOOL GF_Snd_LoadBank(int bankNo);
u32 * GetSoundPlayer(int playerNo);
-u32 FUN_02004018(u32 a0);
+int FUN_02004018(u32 a0);
void DoSoundUpdateFrame(void);
+void FUN_02003CE8(int);
#endif //POKEDIAMOND_SOUND_H
diff --git a/include/unk_020040F4.h b/include/unk_020040F4.h
index 641decb7..413e853f 100644
--- a/include/unk_020040F4.h
+++ b/include/unk_020040F4.h
@@ -19,7 +19,7 @@ struct UnkStruct_020040F4_1
u32 unk18;
s32 unk1c;
u32 unk20;
- u32 unk24;
+ s32 unk24;
};
struct UnkStruct_020040F4_2
@@ -55,7 +55,7 @@ void FUN_02004738();
int FUN_02004748(s32 param0);
void FUN_020047C8(u8 param0, u8 param1);
void FUN_02004810();
-void GF_SndPlayerMoveVolume(int playerNo, u32 param1, u32 param2);
+void GF_SndPlayerMoveVolume(int playerNo, s32 param1, s32 param2);
void GF_SndPlayerSetInitialVolume(int playerNo, s32 param1);
void FUN_02004858(u32 param0, int playerNo);
void FUN_0200488C(u16 param0, u16 param1);
@@ -64,7 +64,7 @@ u16 GF_SndPlayerCountPlayingSeqByPlayerNo(int playerNo);
u8 FUN_020048D0(u16 param0);
u32 GF_SndPlayerGetSeqNo(u32 *param0);
u32 FUN_020048F4(u16 param0);
-u16 FUN_02004900(u16 param0);
+u16 FUN_02004900(u32 param0);
u32 GF_MIC_StartAutoSampling(u32 param0);
u32 GF_MIC_StopAutoSampling(u32 param0);
u32 GF_MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3);
@@ -73,11 +73,11 @@ BOOL FUN_02004984(u32 param0);
void FUN_02004A04(u32 param0);
u32 FUN_02004A6C(struct UnkStruct_020040F4_1 *param0, u32 param1);
void FUN_02004AAC(u32 param0);
-void FUN_02004ABC(u32 param0);
+BOOL FUN_02004ABC(u32 param0);
void FUN_02004ACC(u32 param0, u32 param1);
void FUN_02004AE4(u32 param0, u32 param1);
void FUN_02004AF8(u32 param0, s32 param1);
-u32 FUN_02004B30(u32 param0, s32 param1, u32 param2, u32 param3, u32 param4);
+u32 FUN_02004B30(u32 param0, s32 param1, s32 param2, u32 param3, u32 param4);
void FUN_02004C1C(u8 *param0, u32 param1);
void FUN_02004C3C(u32 param0);
BOOL GF_SndCaptureIsActive();
@@ -87,11 +87,11 @@ void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1);
void FUN_02004CB4();
void GF_SndCaptureStopEffect();
void FUN_02004D04(s32 param0);
-void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, u32 param2);
-void FUN_02004D34(u16 param0, u32 param1, u32 param2);
-void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, u32 param2);
+void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, s32 param2);
+void FUN_02004D34(u16 param0, u32 param1, s32 param2);
+void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, s32 param2);
void GF_SndSetMonoFlag(u32 param0);
-void FUN_02004D74(u32 param0);
+void FUN_02004D74(s32 param0);
void FUN_02004D84(u32 param0);
u16 FUN_02004D94();
u8 *FUN_02004DB4();
diff --git a/include/unk_020051F4.h b/include/unk_020051F4.h
new file mode 100644
index 00000000..05be8db7
--- /dev/null
+++ b/include/unk_020051F4.h
@@ -0,0 +1,45 @@
+#ifndef POKEDIAMOND_UNK_020051F4_H
+#define POKEDIAMOND_UNK_020051F4_H
+
+#include "global.h"
+
+
+u32 FUN_020051F4(u16 param0);
+u32 FUN_0200521C(u16 param0);
+void FUN_0200526C(u16 param0, int playerNo);
+u32 FUN_02005288(u16 param0, u32 param1, int playerNo);
+u32 FUN_020052B8(u16 param0, u32 param1, int playerNo);
+u32 FUN_02005308(u32 param0, u16 param1);
+void FUN_02005350(u16 param0, u32 param1);
+void FUN_02005374();
+void FUN_0200538C(s32 param0, u16 param1, u32 param2);
+void FUN_020053CC(s32 param0, s32 param1);
+u16 FUN_02005404();
+u16 FUN_02005410(u16 param0);
+void FUN_0200541C();
+void FUN_02005454();
+u32 FUN_020054A8(u16 param0, u32 param1);
+u32 PlaySE(u16 param0);
+void FUN_020054F0(u32 param0, u32 param1);
+void FUN_020054F8(s32 param0, u32 param1);
+u16 FUN_02005508(u16 param0);
+BOOL FUN_02005514();
+void FUN_02005530(u16 param0, u32 param1, u32 param2);
+void FUN_0200554C(u32 param0);
+u32 FUN_02005578(u16 species);
+void FUN_02005614(u32 param0);
+BOOL FUN_02005670();
+u32 FUN_020056AC(u32 param0, u16 param1, s32 param2, s32 param3, u32 param4);
+void FUN_02005AC8(u32 param0, int playerNo, s32 param2);
+void FUN_02005AE0(u32 param0, u32 param1);
+void FUN_02005B2C(u32 param0, s32 *param1);
+void FUN_02005BA0();
+u32 FUN_02005BC8(u16 param0, s32 param1);
+void FUN_02005BF8(u32 param0, s32 param1, s32 param2, s32 param3, u32 param4);
+u32 PlaySound(u16 param0);
+BOOL FUN_02005C74();
+void FUN_02005CA0(u32 param0);
+BOOL FUN_02005CBC();
+void FUN_02005CEC(u16 param0);
+
+#endif //POKEDIAMOND_UNK_020051F4_H