summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-01-27 18:46:39 -0600
committerSeth Barberee <seth.barberee@gmail.com>2021-01-28 09:24:55 -0600
commit4886c9f7dcfbaea24ff56e47c81e8af027b86c98 (patch)
tree8ce1afc88c2d8fc006d32b57d9ab3acea01f0763
parentcb77386b65b0a78c16ccd2dfd3d329aaf502ac2e (diff)
decomp, label, doc, repeat
-rw-r--r--asm/code_2.s2
-rw-r--r--asm/code_800D090.s87
-rw-r--r--asm/code_80118A4.s38
-rw-r--r--asm/code_8012A18.s2
-rw-r--r--asm/code_8027C84.s2
-rw-r--r--asm/code_80521D0.s136
-rw-r--r--asm/code_8097F40.s28
-rw-r--r--asm/code_809D148.s2
-rw-r--r--asm/debug.s (renamed from asm/fatal_system_1.s)0
-rw-r--r--asm/music.s270
-rw-r--r--asm/wonder_mail.s10
-rw-r--r--include/music.h4
-rwxr-xr-xld_script.txt6
-rw-r--r--src/code_800558C.c49
-rw-r--r--src/code_800C9CC.c42
-rw-r--r--src/code_800D090.c60
-rw-r--r--src/code_80118A4.c118
-rw-r--r--src/code_80118A4_1.c55
-rw-r--r--src/code_808EAB0.c8
-rw-r--r--src/code_8097F40.c60
-rw-r--r--src/debug.c198
-rw-r--r--src/fatal_system.c89
-rw-r--r--src/friend_area.c69
-rw-r--r--src/friend_area_1.c6
-rw-r--r--src/music.c6
-rw-r--r--src/music_pre.c372
-rw-r--r--src/save_mid.c4
-rw-r--r--sym_ewram.txt8
-rw-r--r--sym_ewram2.txt2
29 files changed, 815 insertions, 918 deletions
diff --git a/asm/code_2.s b/asm/code_2.s
index 4fb8c50..994f260 100644
--- a/asm/code_2.s
+++ b/asm/code_2.s
@@ -1116,7 +1116,7 @@ _08000F58:
ldr r0, _08000F64
bl sub_80121E0
_08000F5E:
- bl sub_8011854
+ bl xxx_call_start_bg_music
b _08000F78
.align 2, 0
_08000F64: .4byte 0x000f1209
diff --git a/asm/code_800D090.s b/asm/code_800D090.s
index d6f365d..9571b63 100644
--- a/asm/code_800D090.s
+++ b/asm/code_800D090.s
@@ -5,93 +5,6 @@
.text
- thumb_func_start sub_800D16C
-sub_800D16C:
- push {r0-r3}
- push {lr}
- mov r12, r4
- ldr r4, _0800D198
- add sp, r4
- mov r4, r12
- ldr r0, _0800D19C
- add r0, sp
- ldr r1, [r0]
- movs r2, 0x81
- lsls r2, 3
- add r2, sp
- mov r0, sp
- bl vsprintf
- movs r3, 0x80
- lsls r3, 3
- add sp, r3
- pop {r3}
- add sp, 0x10
- bx r3
- .align 2, 0
-_0800D198: .4byte 0xfffffc00
-_0800D19C: .4byte 0x00000404
- thumb_func_end sub_800D16C
-
- thumb_func_start sub_800D1A0
-sub_800D1A0:
- push {r3}
- add sp, 0x4
- bx lr
- thumb_func_end sub_800D1A0
-
- thumb_func_start nullsub_183
-nullsub_183:
- bx lr
- thumb_func_end nullsub_183
-
- thumb_func_start nullsub_188
-nullsub_188:
- bx lr
- thumb_func_end nullsub_188
-
- thumb_func_start nullsub_184
-nullsub_184:
- bx lr
- thumb_func_end nullsub_184
-
- thumb_func_start sub_800D1B4
-sub_800D1B4:
- movs r0, 0
- bx lr
- thumb_func_end sub_800D1B4
-
- thumb_func_start sub_800D1B8
-sub_800D1B8:
- adds r0, r2, 0
- bx lr
- thumb_func_end sub_800D1B8
-
- thumb_func_start nullsub_187
-nullsub_187:
- bx lr
- thumb_func_end nullsub_187
-
- thumb_func_start sub_800D1C0
-sub_800D1C0:
- push {lr}
- ldr r1, _0800D1D4
- ldr r0, [r1]
- cmp r0, 0x2
- bne _0800D1D8
- ldr r0, [r1, 0x4]
- cmp r0, 0x2
- bne _0800D1D8
- movs r0, 0x1
- b _0800D1DA
- .align 2, 0
-_0800D1D4: .4byte gUnknown_202DB60
-_0800D1D8:
- movs r0, 0
-_0800D1DA:
- pop {r1}
- bx r1
- thumb_func_end sub_800D1C0
-
thumb_func_start sub_800D1E0
sub_800D1E0:
push {r4-r7,lr}
diff --git a/asm/code_80118A4.s b/asm/code_80118A4.s
deleted file mode 100644
index 06b2d1f..0000000
--- a/asm/code_80118A4.s
+++ /dev/null
@@ -1,38 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ Unused
- thumb_func_start PrintMessageWithFuncFileLine
-PrintMessageWithFuncFileLine:
- push {r2,r3}
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, [sp, 0x10]
- add r2, sp, 0x14
- bl vsprintf
- adds r0, r4, 0
- bl strlen
- adds r4, r0
- ldr r1, _08011AFC
- ldr r2, [r5, 0x8]
- ldr r3, [r5]
- ldr r0, [r5, 0x4]
- str r0, [sp]
- adds r0, r4, 0
- bl sprintf
- add sp, 0x4
- pop {r4,r5}
- pop {r3}
- add sp, 0x8
- bx r3
- .align 2, 0
-_08011AFC: .4byte gFuncFileLineString2
- thumb_func_end PrintMessageWithFuncFileLine
-
- .align 2,0 @ Don't pad with nop
diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s
index ddb0ef8..e765d1a 100644
--- a/asm/code_8012A18.s
+++ b/asm/code_8012A18.s
@@ -2875,7 +2875,7 @@ _08014110: .4byte 0x004000bc
thumb_func_start sub_8014114
sub_8014114:
push {lr}
- bl sub_8011854
+ bl xxx_call_start_bg_music
movs r0, 0
bl SetSavingIconCoords
pop {r0}
diff --git a/asm/code_8027C84.s b/asm/code_8027C84.s
index 8aa4674..7c4a52b 100644
--- a/asm/code_8027C84.s
+++ b/asm/code_8027C84.s
@@ -1277,7 +1277,7 @@ _08028782:
ldr r1, [r4]
str r0, [r1, 0x44]
_0802878A:
- bl sub_8011854
+ bl xxx_call_start_bg_music
b _08028AF2
_08028790:
ldr r0, [r6]
diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s
index 5114113..2e47ea9 100644
--- a/asm/code_80521D0.s
+++ b/asm/code_80521D0.s
@@ -4476,7 +4476,7 @@ _08054B58:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_8058AAC
+ bl SkyAttackMoveAction
bl _080554BA
_08054B68:
adds r0, r7, 0
@@ -4800,7 +4800,7 @@ _08054E0C:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805B220
+ bl TrapperOrbAction
b _080554BA
_08054E1A:
adds r0, r7, 0
@@ -4849,7 +4849,7 @@ _08054E6E:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805B8B0
+ bl SkullBashMoveAction
b _080554BA
_08054E7C:
adds r0, r7, 0
@@ -4905,7 +4905,7 @@ _08054EDE:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_8057A98
+ bl TormentMoveAction
b _080554BA
_08054EEC:
adds r0, r7, 0
@@ -4961,7 +4961,7 @@ _08054F4E:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805C2AC
+ bl FillInOrbAction
b _080554BA
_08054F5C:
adds r0, r7, 0
@@ -5031,7 +5031,7 @@ _08054FDA:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805983C
+ bl DiveMoveAction
b _080554BA
_08054FE8:
adds r0, r7, 0
@@ -5066,7 +5066,7 @@ _08055020:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805BF40
+ bl TrapbustOrbAction
b _080554BA
_0805502E:
adds r0, r7, 0
@@ -5087,7 +5087,7 @@ _0805504A:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805810C
+ bl GrudgeMoveAction
b _080554BA
_08055058:
adds r0, r7, 0
@@ -5236,7 +5236,7 @@ _08055174:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805A640
+ bl SpitUpMoveAction
b _080554BA
_08055182:
adds r0, r7, 0
@@ -5341,7 +5341,7 @@ _08055246:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_8059C8C
+ bl HelpingHandMoveAction
b _080554BA
_08055254:
adds r0, r7, 0
@@ -5390,7 +5390,7 @@ _080552A8:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805B038
+ bl TransformMoveAction
b _080554BA
_080552B6:
adds r0, r7, 0
@@ -5425,7 +5425,7 @@ _080552EE:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805BD88
+ bl TransferOrbAction
b _080554BA
_080552FC:
adds r0, r7, 0
@@ -5474,7 +5474,7 @@ _08055350:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805BED4
+ bl EscapeOrbAction
b _080554BA
_0805535E:
adds r0, r7, 0
@@ -5502,7 +5502,7 @@ _08055388:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_8059340
+ bl SketchMoveAction
b _080554BA
_08055396:
adds r0, r7, 0
@@ -5523,7 +5523,7 @@ _080553B2:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_8059290
+ bl SkillSwapMoveAction
b _080554BA
_080553C0:
adds r0, r7, 0
@@ -5537,7 +5537,7 @@ _080553CE:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805BBA8
+ bl CleanseOrbAction
b _080554BA
_080553DC:
adds r0, r7, 0
@@ -5635,7 +5635,7 @@ _08055492:
adds r1, r5, 0
mov r2, r8
mov r3, r9
- bl sub_805B464
+ bl MimicMoveAction
b _080554BA
_080554A0:
adds r0, r7, 0
@@ -10577,8 +10577,8 @@ _08057A90: .4byte gUnknown_202DF98
_08057A94: .4byte gUnknown_80FC7EC
thumb_func_end sub_8057A0C
- thumb_func_start sub_8057A98
-sub_8057A98:
+ thumb_func_start TormentMoveAction
+TormentMoveAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -10719,7 +10719,7 @@ _08057B9C:
bx r1
.align 2, 0
_08057BB0: .4byte gUnknown_80FCFE4
- thumb_func_end sub_8057A98
+ thumb_func_end TormentMoveAction
thumb_func_start sub_8057BB4
sub_8057BB4:
@@ -11439,8 +11439,8 @@ _080580F4:
bx r1
thumb_func_end sub_805805C
- thumb_func_start sub_805810C
-sub_805810C:
+ thumb_func_start GrudgeMoveAction
+GrudgeMoveAction:
push {r4-r7,lr}
adds r6, r0, 0
adds r5, r1, 0
@@ -11478,7 +11478,7 @@ _0805814E:
bx r1
.align 2, 0
_08058158: .4byte gUnknown_80FD294
- thumb_func_end sub_805810C
+ thumb_func_end GrudgeMoveAction
thumb_func_start sub_805815C
sub_805815C:
@@ -12740,8 +12740,8 @@ _08058AA4: .4byte gUnknown_8106A4C
_08058AA8: .4byte gUnknown_8106A50
thumb_func_end sub_8058A7C
- thumb_func_start sub_8058AAC
-sub_8058AAC:
+ thumb_func_start SkyAttackMoveAction
+SkyAttackMoveAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -12810,7 +12810,7 @@ _08058B2A:
bx r1
.align 2, 0
_08058B38: .4byte gUnknown_80FACC4
- thumb_func_end sub_8058AAC
+ thumb_func_end SkyAttackMoveAction
thumb_func_start sub_8058B3C
sub_8058B3C:
@@ -13804,8 +13804,8 @@ _0805927E:
bx r1
thumb_func_end sub_80591E4
- thumb_func_start sub_8059290
-sub_8059290:
+ thumb_func_start SkillSwapMoveAction
+SkillSwapMoveAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -13890,10 +13890,10 @@ _0805932E:
.align 2, 0
_08059338: .4byte gUnknown_203B418
_0805933C: .4byte gUnknown_80FC888
- thumb_func_end sub_8059290
+ thumb_func_end SkillSwapMoveAction
- thumb_func_start sub_8059340
-sub_8059340:
+ thumb_func_start SketchMoveAction
+SketchMoveAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -14008,7 +14008,7 @@ _0805940A:
.align 2, 0
_0805941C: .4byte gUnknown_202DE58
_08059420: .4byte gUnknown_80FE38C
- thumb_func_end sub_8059340
+ thumb_func_end SketchMoveAction
thumb_func_start sub_8059424
sub_8059424:
@@ -14549,8 +14549,8 @@ sub_80597F0:
bx r1
thumb_func_end sub_80597F0
- thumb_func_start sub_805983C
-sub_805983C:
+ thumb_func_start DiveMoveAction
+DiveMoveAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -14616,7 +14616,7 @@ _080598B8:
bx r1
.align 2, 0
_080598C8: .4byte gUnknown_80FAD2C
- thumb_func_end sub_805983C
+ thumb_func_end DiveMoveAction
thumb_func_start sub_80598CC
sub_80598CC:
@@ -15126,8 +15126,8 @@ sub_8059C80:
bx r1
thumb_func_end sub_8059C80
- thumb_func_start sub_8059C8C
-sub_8059C8C:
+ thumb_func_start HelpingHandMoveAction
+HelpingHandMoveAction:
push {r4-r6,lr}
adds r5, r0, 0
adds r4, r1, 0
@@ -15163,7 +15163,7 @@ _08059CC6:
.align 2, 0
_08059CD0: .4byte gUnknown_8106A4C
_08059CD4: .4byte gUnknown_8106A50
- thumb_func_end sub_8059C8C
+ thumb_func_end HelpingHandMoveAction
thumb_func_start sub_8059CD8
sub_8059CD8:
@@ -16432,8 +16432,8 @@ _0805A632:
_0805A63C: .4byte gUnknown_80F4DD2
thumb_func_end sub_805A5E8
- thumb_func_start sub_805A640
-sub_805A640:
+ thumb_func_start SpitUpMoveAction
+SpitUpMoveAction:
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
@@ -16469,7 +16469,7 @@ _0805A678:
bx r1
.align 2, 0
_0805A684: .4byte gUnknown_80FCA3C
- thumb_func_end sub_805A640
+ thumb_func_end SpitUpMoveAction
thumb_func_start sub_805A688
sub_805A688:
@@ -17721,8 +17721,8 @@ sub_805B028:
bx r1
thumb_func_end sub_805B028
- thumb_func_start sub_805B038
-sub_805B038:
+ thumb_func_start TransformMoveAction
+TransformMoveAction:
push {r4-r6,lr}
adds r5, r0, 0
adds r6, r1, 0
@@ -17751,7 +17751,7 @@ _0805B068:
bx r1
.align 2, 0
_0805B070: .4byte gUnknown_80FEFF4
- thumb_func_end sub_805B038
+ thumb_func_end TransformMoveAction
thumb_func_start sub_805B074
sub_805B074:
@@ -17977,8 +17977,8 @@ sub_805B214:
bx r1
thumb_func_end sub_805B214
- thumb_func_start sub_805B220
-sub_805B220:
+ thumb_func_start TrapperOrbAction
+TrapperOrbAction:
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -18012,7 +18012,7 @@ _0805B252:
bx r1
.align 2, 0
_0805B260: .4byte gUnknown_80FC5A8
- thumb_func_end sub_805B220
+ thumb_func_end TrapperOrbAction
thumb_func_start sub_805B264
sub_805B264:
@@ -18297,8 +18297,8 @@ sub_805B454:
bx r1
thumb_func_end sub_805B454
- thumb_func_start sub_805B464
-sub_805B464:
+ thumb_func_start MimicMoveAction
+MimicMoveAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -18404,7 +18404,7 @@ _0805B524:
bx r1
.align 2, 0
_0805B538: .4byte gUnknown_80FDD00
- thumb_func_end sub_805B464
+ thumb_func_end MimicMoveAction
thumb_func_start sub_805B53C
sub_805B53C:
@@ -18864,8 +18864,8 @@ sub_805B884:
_0805B8AC: .4byte gUnknown_8106A4C
thumb_func_end sub_805B884
- thumb_func_start sub_805B8B0
-sub_805B8B0:
+ thumb_func_start SkullBashMoveAction
+SkullBashMoveAction:
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
@@ -18910,7 +18910,7 @@ _0805B900:
bx r1
.align 2, 0
_0805B90C: .4byte gUnknown_80FAFF0
- thumb_func_end sub_805B8B0
+ thumb_func_end SkullBashMoveAction
thumb_func_start sub_805B910
sub_805B910:
@@ -19256,8 +19256,8 @@ sub_805BB98:
bx r1
thumb_func_end sub_805BB98
- thumb_func_start sub_805BBA8
-sub_805BBA8:
+ thumb_func_start CleanseOrbAction
+CleanseOrbAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -19358,7 +19358,7 @@ _0805BC60:
bx r1
.align 2, 0
_0805BC6C: .4byte gUnknown_80FC920
- thumb_func_end sub_805BBA8
+ thumb_func_end CleanseOrbAction
thumb_func_start sub_805BC70
sub_805BC70:
@@ -19517,8 +19517,8 @@ sub_805BD7C:
bx r1
thumb_func_end sub_805BD7C
- thumb_func_start sub_805BD88
-sub_805BD88:
+ thumb_func_start TransferOrbAction
+TransferOrbAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -19644,7 +19644,7 @@ _0805BE78:
.align 2, 0
_0805BE88: .4byte gUnknown_202DF98
_0805BE8C: .4byte gUnknown_80FD450
- thumb_func_end sub_805BD88
+ thumb_func_end TransferOrbAction
thumb_func_start sub_805BE90
sub_805BE90:
@@ -19694,8 +19694,8 @@ sub_805BEC8:
bx r1
thumb_func_end sub_805BEC8
- thumb_func_start sub_805BED4
-sub_805BED4:
+ thumb_func_start EscapeOrbAction
+EscapeOrbAction:
push {r4-r6,lr}
adds r4, r0, 0
adds r6, r1, 0
@@ -19739,7 +19739,7 @@ _0805BF26:
bx r1
.align 2, 0
_0805BF30: .4byte gUnknown_80FD4C4
- thumb_func_end sub_805BED4
+ thumb_func_end EscapeOrbAction
thumb_func_start sub_805BF34
sub_805BF34:
@@ -19750,8 +19750,8 @@ sub_805BF34:
bx r1
thumb_func_end sub_805BF34
- thumb_func_start sub_805BF40
-sub_805BF40:
+ thumb_func_start TrapbustOrbAction
+TrapbustOrbAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -19908,7 +19908,7 @@ _0805C06A:
bx r1
.align 2, 0
_0805C07C: .4byte gUnknown_80FD1CC
- thumb_func_end sub_805BF40
+ thumb_func_end TrapbustOrbAction
thumb_func_start sub_805C080
sub_805C080:
@@ -20209,8 +20209,8 @@ sub_805C2A0:
bx r1
thumb_func_end sub_805C2A0
- thumb_func_start sub_805C2AC
-sub_805C2AC:
+ thumb_func_start FillInOrbAction
+FillInOrbAction:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -20356,7 +20356,7 @@ _0805C3CA:
bx r1
.align 2, 0
_0805C3D8: .4byte gUnknown_80FD0B8
- thumb_func_end sub_805C2AC
+ thumb_func_end FillInOrbAction
thumb_func_start sub_805C3DC
sub_805C3DC:
diff --git a/asm/code_8097F40.s b/asm/code_8097F40.s
index 5368da6..6392ba9 100644
--- a/asm/code_8097F40.s
+++ b/asm/code_8097F40.s
@@ -5,34 +5,6 @@
.text
- thumb_func_start sub_8097F74
-sub_8097F74:
- push {r4,lr}
- ldr r4, _08097FA0
- ldr r0, [r4]
- movs r1, 0
- movs r2, 0x64
- bl memset
- movs r2, 0
- ldr r3, _08097FA4
-_08097F86:
- ldr r0, [r4]
- adds r0, 0x58
- adds r0, r2
- ldrb r1, [r3, 0x2]
- strb r1, [r0]
- adds r3, 0x4
- adds r2, 0x1
- cmp r2, 0xB
- ble _08097F86
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097FA0: .4byte gUnknown_203B498
-_08097FA4: .4byte gExclusivePokemon
- thumb_func_end sub_8097F74
-
thumb_func_start sub_8097FA8
sub_8097FA8:
lsls r0, 24
diff --git a/asm/code_809D148.s b/asm/code_809D148.s
index 2473525..a48ad08 100644
--- a/asm/code_809D148.s
+++ b/asm/code_809D148.s
@@ -1481,7 +1481,7 @@ _0809DEE8:
str r0, [r1]
add r0, sp, 0x4
ldrh r0, [r0, 0x2]
- bl sub_8011940
+ bl IsEqualtoBGTrack
lsls r0, 24
cmp r0, 0
bne _0809DF06
diff --git a/asm/fatal_system_1.s b/asm/debug.s
index e0f194d..e0f194d 100644
--- a/asm/fatal_system_1.s
+++ b/asm/debug.s
diff --git a/asm/music.s b/asm/music.s
index 0e13f2c..1bec74b 100644
--- a/asm/music.s
+++ b/asm/music.s
@@ -5,276 +5,6 @@
.text
- thumb_func_start sub_800C074
-sub_800C074:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r5, r0, 16
- mov r8, r5
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _0800C0FC
- cmp r5, r0
- bne _0800C08C
- b _0800C208
-_0800C08C:
- movs r7, 0x80
- lsls r7, 1
- cmp r6, r7
- bls _0800C096
- adds r6, r7, 0
-_0800C096:
- adds r0, r5, 0
- bl sub_800CACC
- lsls r0, 24
- cmp r0, 0
- bne _0800C0A4
- b _0800C1B0
-_0800C0A4:
- adds r0, r5, 0
- bl sub_800CAE0
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x1
- beq _0800C0B4
- b _0800C1D0
-_0800C0B4:
- bl DisableInterrupts
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, _0800C100
- strh r5, [r6]
- ldr r4, _0800C104
- ldrh r0, [r4]
- adds r2, r0, 0
- cmp r2, 0
- bne _0800C144
- ldr r0, _0800C108
- ldrh r1, [r0]
- ldr r0, _0800C10C
- cmp r1, r0
- beq _0800C12C
- ldr r0, _0800C110
- ldrh r1, [r0]
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0800C120
- strh r7, [r4]
- ldr r1, _0800C114
- movs r0, 0x10
- strh r0, [r1]
- ldr r0, _0800C118
- strb r2, [r0]
- ldr r0, _0800C11C
- movs r1, 0x1
- bl m4aMPlayFadeOutTemporarily
- b _0800C15E
- .align 2, 0
-_0800C0FC: .4byte 0x000003e5
-_0800C100: .4byte gUnknown_202D68E
-_0800C104: .4byte gUnknown_202D690
-_0800C108: .4byte gCurrentBGSong
-_0800C10C: .4byte 0x000003e7
-_0800C110: .4byte gBGMusicPlayerState
-_0800C114: .4byte gUnknown_202D692
-_0800C118: .4byte gUnknown_202D694
-_0800C11C: .4byte gUnknown_20008F0
-_0800C120:
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, 0x3
- bne _0800C12C
- movs r0, 0x2
- b _0800C15C
-_0800C12C:
- movs r0, 0x3
- strh r0, [r4]
- ldr r0, _0800C140
- bl m4aMPlayStop
- ldrh r0, [r6]
- bl m4aSongNumStart
- b _0800C15E
- .align 2, 0
-_0800C140: .4byte gUnknown_20008F0
-_0800C144:
- subs r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0800C15E
- ldr r0, _0800C17C
- bl m4aMPlayStop
- ldrh r0, [r6]
- bl m4aSongNumStart
- movs r0, 0x3
-_0800C15C:
- strh r0, [r4]
-_0800C15E:
- ldr r0, _0800C180
- ldrh r0, [r0]
- cmp r0, 0x26
- bgt _0800C184
- cmp r0, 0x25
- bge _0800C19A
- cmp r0, 0x1A
- blt _0800C1A0
- cmp r0, 0x1F
- ble _0800C19A
- cmp r0, 0x23
- bgt _0800C1A0
- cmp r0, 0x22
- blt _0800C1A0
- b _0800C19A
- .align 2, 0
-_0800C17C: .4byte gUnknown_20008F0
-_0800C180: .4byte gCurrentBGSong
-_0800C184:
- cmp r0, 0x7A
- beq _0800C19A
- cmp r0, 0x7A
- bgt _0800C196
- cmp r0, 0x77
- bgt _0800C1A0
- cmp r0, 0x75
- blt _0800C1A0
- b _0800C19A
-_0800C196:
- cmp r0, 0x7F
- bne _0800C1A0
-_0800C19A:
- ldr r1, _0800C1AC
- movs r0, 0x1
- strb r0, [r1]
-_0800C1A0:
- mov r0, r8
- cmp r0, 0
- beq _0800C208
- bl EnableInterrupts
- b _0800C208
- .align 2, 0
-_0800C1AC: .4byte gUnknown_202D694
-_0800C1B0:
- adds r0, r5, 0
- bl sub_800CAAC
- lsls r0, 24
- cmp r0, 0
- beq _0800C208
- adds r0, r5, 0
- bl sub_800CAE0
- lsls r0, 16
- lsrs r0, 16
- lsls r2, r0, 3
- ldr r1, _0800C1D8
- adds r4, r2, r1
- cmp r0, 0x1
- bhi _0800C1DC
-_0800C1D0:
- adds r0, r5, 0
- bl nullsub_20
- b _0800C208
- .align 2, 0
-_0800C1D8: .4byte gUnknown_3000FD8
-_0800C1DC:
- bl DisableInterrupts
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- bl m4aSongNumStart
- movs r0, 0x1
- strh r0, [r4]
- mov r0, r8
- strh r0, [r4, 0x2]
- cmp r6, r7
- bne _0800C1FA
- movs r0, 0
- b _0800C1FC
-_0800C1FA:
- movs r0, 0x1
-_0800C1FC:
- strb r0, [r4, 0x6]
- strh r6, [r4, 0x4]
- cmp r5, 0
- beq _0800C208
- bl EnableInterrupts
-_0800C208:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_800C074
-
- thumb_func_start sub_800C214
-sub_800C214:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r7, r1, 16
- movs r0, 0x80
- lsls r0, 1
- cmp r7, r0
- bls _0800C22C
- adds r7, r0, 0
-_0800C22C:
- adds r0, r5, 0
- bl sub_800CACC
- lsls r0, 24
- cmp r0, 0
- bne _0800C286
- adds r0, r5, 0
- bl sub_800CAAC
- lsls r0, 24
- cmp r0, 0
- beq _0800C286
- adds r0, r5, 0
- bl sub_800CAE0
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _0800C290
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- mov r8, r1
- lsls r2, r0, 3
- ldr r1, _0800C294
- adds r4, r2, r1
- cmp r0, 0x1
- bls _0800C286
- bl DisableInterrupts
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r4, 0x2]
- cmp r0, r5
- bne _0800C27E
- mov r0, r8
- movs r1, 0xF
- adds r2, r7, 0
- bl m4aMPlayVolumeControl
-_0800C27E:
- cmp r6, 0
- beq _0800C286
- bl EnableInterrupts
-_0800C286:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C290: .4byte gMPlayTable
-_0800C294: .4byte gUnknown_3000FD8
- thumb_func_end sub_800C214
-
thumb_func_start sub_800C298
sub_800C298:
push {r4-r7,lr}
diff --git a/asm/wonder_mail.s b/asm/wonder_mail.s
index f903140..df22c33 100644
--- a/asm/wonder_mail.s
+++ b/asm/wonder_mail.s
@@ -2393,7 +2393,7 @@ _0802AEE2:
ldr r0, [r0]
str r0, [r1]
_0802AEE6:
- bl sub_8011854
+ bl xxx_call_start_bg_music
b _0802B2AA
_0802AEEC:
ldr r0, _0802AEF0
@@ -18996,7 +18996,7 @@ _080333DA:
_080333DC:
str r0, [r1]
_080333DE:
- bl sub_8011854
+ bl xxx_call_start_bg_music
b _080338B4
_080333E4:
ldr r0, _080333E8
@@ -26254,7 +26254,7 @@ _08036D44:
ldr r1, [r4]
str r0, [r1, 0xC]
_08036D66:
- bl sub_8011854
+ bl xxx_call_start_bg_music
b _08036DFA
.align 2, 0
_08036D6C: .4byte gUnknown_203B358
@@ -27375,7 +27375,7 @@ _080376AE:
ldr r1, [r4]
str r0, [r1, 0x4]
_080376BE:
- bl sub_8011854
+ bl xxx_call_start_bg_music
pop {r4-r6}
pop {r0}
bx r0
@@ -32681,7 +32681,7 @@ _0803A138:
movs r2, 0xB4
bl memcpy
_0803A14C:
- bl sub_8011854
+ bl xxx_call_start_bg_music
b _0803A1AA
_0803A152:
ldr r0, _0803A160
diff --git a/include/music.h b/include/music.h
index 3a83946..8baa030 100644
--- a/include/music.h
+++ b/include/music.h
@@ -1,8 +1,8 @@
#ifndef GUARD_MUSIC_H
#define GUARD_MUSIC_H
-void sub_800C93C(void);
-void sub_800C9CC(void);
+void StopBGMusicVSync(void);
+void StartBGMusicVSync(void);
u8 sub_800CA38(u32 songIndex);
void StartNewBGM(u16 songIndex);
bool8 IsBGSong(u32 songIndex);
diff --git a/ld_script.txt b/ld_script.txt
index dce23d0..cc185a3 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -78,10 +78,8 @@ SECTIONS {
src/code_800D090.o(.text);
asm/code_800D090.o(.text);
src/code_80118A4.o(.text);
- asm/code_80118A4.o(.text);
- src/code_80118A4_1.o(.text);
- src/fatal_system.o(.text);
- asm/fatal_system_1.o(.text);
+ src/debug.o(.text);
+ asm/debug.o(.text);
src/save.o(.text);
asm/save.o(.text);
src/save_mid.o(.text);
diff --git a/src/code_800558C.c b/src/code_800558C.c
index 13e3255..8de7dd3 100644
--- a/src/code_800558C.c
+++ b/src/code_800558C.c
@@ -16,58 +16,17 @@ extern void sub_800CC44(s32 r0, s32 r1);
void sub_80060A8(void)
{
- bool32 temp;
- bool32 preload;
- bool32 preload2;
-
gUnknown_2026E3C = gUnknown_2026E58;
-
- preload = gUnknown_2026E54;
- temp = FALSE;
- if (!gUnknown_2026E54)
- {
- temp = TRUE;
- }
- gUnknown_2026E54 = temp;
-
- preload2 = gUnknown_2026E50;
- temp = FALSE;
- if (!gUnknown_2026E50)
- {
- temp = TRUE;
- }
- gUnknown_2026E50 = temp;
-
+ gUnknown_2026E54 = !gUnknown_2026E54;
+ gUnknown_2026E50 = !gUnknown_2026E50;
gUnknown_2026E38 = FALSE;
}
void sub_80060EC(void)
{
- bool32 temp;
- bool32 preload;
- bool32 preload2;
-
gUnknown_2026E3C = gUnknown_2026E58;
-
- preload = gUnknown_2026E54;
- temp = FALSE;
-
- if (!gUnknown_2026E54)
- {
- temp = TRUE;
- }
- gUnknown_2026E54 = temp;
-
-
- preload2 = gUnknown_2026E50;
- temp = FALSE;
-
- if (!gUnknown_2026E50)
- {
- temp = TRUE;
- }
- gUnknown_2026E50 = temp;
-
+ gUnknown_2026E54 = !gUnknown_2026E54;
+ gUnknown_2026E50 = !gUnknown_2026E50;
sub_800CC44((gUnknown_2026E4E & (0xF8 << 5)) >> 8, gUnknown_2026E4E & 0x1F);
gUnknown_2026E38 = TRUE;
}
diff --git a/src/code_800C9CC.c b/src/code_800C9CC.c
index 28ce10a..99aa827 100644
--- a/src/code_800C9CC.c
+++ b/src/code_800C9CC.c
@@ -8,10 +8,10 @@ extern u8 gUnknown_202D6B9;
extern u16 gUnknown_202D7FA;
extern u8 gUnknown_202D7FE;
-extern struct BGControlStruct gUnknown_202D698;
-extern struct BGControlStruct gUnknown_202D6A0;
-extern struct BGControlStruct gUnknown_202D6A8;
-extern struct BGControlStruct gUnknown_202D6B0;
+extern struct BGControlStruct gBG0Control;
+extern struct BGControlStruct gBG1Control;
+extern struct BGControlStruct gBG2Control;
+extern struct BGControlStruct gBG3Control;
void ReadKeyInput(struct Inputs *r0)
{
@@ -93,26 +93,26 @@ void sub_800CC44(s32 r0, s32 r1)
void SetBG0RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D698.hofs = xoffset;
- gUnknown_202D698.vofs = yoffset;
+ gBG0Control.hofs = xoffset;
+ gBG0Control.vofs = yoffset;
}
void SetBG1RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D6A0.hofs = xoffset;
- gUnknown_202D6A0.vofs = yoffset;
+ gBG1Control.hofs = xoffset;
+ gBG1Control.vofs = yoffset;
}
void SetBG2RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D6A8.hofs = xoffset;
- gUnknown_202D6A8.vofs = yoffset;
+ gBG2Control.hofs = xoffset;
+ gBG2Control.vofs = yoffset;
}
void SetBG3RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D6B0.hofs = xoffset;
- gUnknown_202D6B0.vofs = yoffset;
+ gBG3Control.hofs = xoffset;
+ gBG3Control.vofs = yoffset;
}
void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset)
@@ -131,16 +131,16 @@ void SetBGRegXOffset(s32 reg, s32 offset)
switch (reg) {
default:
case 0:
- gUnknown_202D698.hofs = offset;
+ gBG0Control.hofs = offset;
break;
case 1:
- gUnknown_202D6A0.hofs = offset;
+ gBG1Control.hofs = offset;
break;
case 2:
- gUnknown_202D6A8.hofs = offset;
+ gBG2Control.hofs = offset;
break;
case 3:
- gUnknown_202D6B0.hofs = offset;
+ gBG3Control.hofs = offset;
break;
}
}
@@ -150,16 +150,16 @@ void SetBGRegYOffset(s32 reg, s32 offset)
switch (reg) {
default:
case 0:
- gUnknown_202D698.vofs = offset;
+ gBG0Control.vofs = offset;
break;
case 1:
- gUnknown_202D6A0.vofs = offset;
+ gBG1Control.vofs = offset;
break;
case 2:
- gUnknown_202D6A8.vofs = offset;
+ gBG2Control.vofs = offset;
break;
case 3:
- gUnknown_202D6B0.vofs = offset;
+ gBG3Control.vofs = offset;
break;
}
}
@@ -167,7 +167,7 @@ void SetBGRegYOffset(s32 reg, s32 offset)
void sub_800CD64(s32 r0, u8 r1)
{
gUnknown_202D7FE = r1;
- gUnknown_202D6A8.unk2 = r0 ? 0x8000 : 0;
+ gBG2Control.unk2 = r0 ? 0x8000 : 0;
}
void SetBGOBJEnableFlags(u32 mask)
diff --git a/src/code_800D090.c b/src/code_800D090.c
index da82789..b263d30 100644
--- a/src/code_800D090.c
+++ b/src/code_800D090.c
@@ -2,11 +2,20 @@
#include <stdio.h>
#include "gba/gba.h"
#include "config.h"
+#include "global.h"
extern void SoundBiasReset(void);
extern void SoundBiasSet(void);
+struct unkStruct_202DB60
+{
+ u32 unk0;
+ u32 unk4;
+};
+
+extern struct unkStruct_202DB60 gUnknown_202DB60;
+
void Hang(void)
{
while(1)
@@ -62,7 +71,6 @@ void sub_800D098(void)
REG_IME = 1;
- // Good after here
while(REG_VCOUNT <= 159){}
REG_DISPCNT = dispcnt_save; // restore DISPCNT
while(REG_KEYINPUT != 0x3ff){} // All buttons
@@ -75,3 +83,53 @@ void sub_800D158(u8 *buffer, const char *text, ...)
vsprintf(buffer, text, vArgv);
va_end(vArgv);
}
+
+// Unused
+void sub_800D16C(const char *text, ...)
+{
+ char buffer[1024];
+ va_list vArgv;
+ va_start(vArgv, text);
+ vsprintf(buffer, text, vArgv);
+ va_end(vArgv);
+}
+
+// Unused
+void sub_800D10A(const char *r0, u32 r1, u32 r2, u32 r3, ...)
+{
+}
+
+void nullsub_183(void)
+{
+}
+
+void nullsub_188(void)
+{
+}
+
+void nullsub_184(void)
+{
+}
+
+u32 sub_800D1B4(void)
+{
+ return 0;
+}
+
+u32 sub_800D1B8(u32 r0, u32 r1, u32 r2)
+{
+ return r2;
+}
+
+void nullsub_187(void)
+{
+}
+
+u32 sub_800D1C0(void)
+{
+ if(gUnknown_202DB60.unk0 != 2)
+ return 0;
+ if(gUnknown_202DB60.unk4 != 2)
+ return 0;
+ return 1;
+}
diff --git a/src/code_80118A4.c b/src/code_80118A4.c
index 2cb450d..03859b0 100644
--- a/src/code_80118A4.c
+++ b/src/code_80118A4.c
@@ -1,12 +1,15 @@
+#include <stdarg.h>
+#include <stdio.h>
#include "global.h"
#include "music.h"
#include "constants/bg_music.h"
#include "time.h"
#include "bg.h"
#include "input.h"
+#include "config.h"
+
void sub_8011924(void);
-void nullsub_26(void);
extern u8 sub_80023E4(u8);
extern void sub_800BF48(u16 r0);
@@ -18,15 +21,6 @@ extern void sub_800C074(u16 r0, u16 r1);
extern void sub_800C298(u16 r0);
extern u8 sub_800C5D0(u16 r0);
-extern void nullsub_27(void);
-extern void nullsub_29(void);
-extern void nullsub_30(void);
-extern void nullsub_31(void);
-extern void nullsub_32(void);
-extern void nullsub_28(void);
-
-extern int sprintf(char *, const char *, ...);
-
extern struct PlayTimeStruct *gUnknown_203B47C;
struct UnkSaveStruct1
@@ -50,23 +44,12 @@ struct UnkBgStruct
};
extern struct UnkBgStruct *gUnknown_203B0E4;
-struct DebugLocation
-{
- char *file;
- u32 line;
- char *func;
-};
-
extern u16 gUnknown_80D4144[];
extern s16 gUnknown_202DE20;
extern s16 gUnknown_202DE22;
extern s16 gUnknown_202DE24;
extern u32 gUnknown_202DE1C;
-extern u32 gUnknown_203B14C;
-extern const char gNotEntryText[];
-extern const char gFuncFileLineString[];
-extern const char gFuncFileLineStringWPrefix[];
void nullsub_8(u32);
void sub_8005838(u32, u32);
@@ -114,32 +97,23 @@ void sub_801169C(void)
void sub_8011760(void)
{
if(sub_80023E4(0xD) != 0)
- {
StartNewBGM(MUS_WORLD_CALAMITY);
- return;
- }
- if(sub_80023E4(0xC) != 0)
- {
+ else if(sub_80023E4(0xC) != 0)
StartNewBGM(MUS_POKEMON_SQUARE);
- }
}
void sub_801178C(void)
{
if(sub_80023E4(0xD) != 0)
- {
StartNewBGM(MUS_WORLD_CALAMITY);
- return;
- }
- StartNewBGM(MUS_POKEMON_SQUARE);
+ else
+ StartNewBGM(MUS_POKEMON_SQUARE);
}
void sub_80117AC(void)
{
if(sub_80023E4(0xD) == 0)
- {
sub_800BFD0(0x1E);
- }
}
void sub_80117C4(void)
@@ -149,17 +123,19 @@ void sub_80117C4(void)
void sub_80117D0(void)
{
- sub_800C074(0x97 << 1, 0x80 << 1);
+ sub_800C074(0x97 << 1, 256);
}
+// Some sound effect
void sub_80117E4(void)
{
- sub_800C074(0x12f, 0x80 << 1);
+ sub_800C074(303, 256);
}
+// Some sound effect
void sub_80117F8(void)
{
- sub_800C074(0x12d, 0x80 << 1);
+ sub_800C074(301, 256);
}
void sub_801180C(void)
@@ -172,15 +148,15 @@ void sub_801180C(void)
void sub_8011830(void)
{
- sub_800C93C();
+ StopBGMusicVSync();
gUnknown_202DE20 = 0;
gUnknown_202DE22 = 0;
gUnknown_202DE24 = 0;
}
-void sub_8011854(void)
+void xxx_call_start_bg_music(void)
{
- sub_800C9CC();
+ StartBGMusicVSync();
}
void sub_8011860(void)
@@ -238,40 +214,40 @@ void sub_8011930(u16 r0)
sub_800BFD0(r0);
}
-u32 sub_8011940(u16 r0)
+u32 IsEqualtoBGTrack(u16 songIndex)
{
u32 temp;
temp = GetCurrentBGSong();
- if(r0 == 999)
+ if(songIndex == 999)
return temp != 999;
- return temp == r0;
+ return temp == songIndex;
}
-void sub_8011974(u16 r0, u16 r1)
+void sub_8011974(u16 songIndex, u16 r1)
{
- sub_800C074(r0, r1);
+ sub_800C074(songIndex, r1);
}
-void sub_8011988(u16 r0)
+void sub_8011988(u16 songIndex)
{
- sub_800C074(r0, 0x80 << 1);
+ sub_800C074(songIndex, 0x80 << 1);
}
-void sub_801199C(u16 r0)
+void sub_801199C(u16 songIndex)
{
- sub_800C298(r0);
+ sub_800C298(songIndex);
}
-void sub_80119AC(u16 r0, u16 r1)
+void sub_80119AC(u16 songIndex, u16 r1)
{
- sub_800C3F8(r0, r1);
+ sub_800C3F8(songIndex, r1);
}
-u8 sub_80119C0(u16 r0)
+u8 sub_80119C0(u16 songIndex)
{
- return sub_800C5D0(r0);
+ return sub_800C5D0(songIndex);
}
void sub_80119D4(u32 r0)
@@ -294,41 +270,3 @@ void sub_8011A2C(u32 r0)
{
gUnknown_202DE1C = r0;
}
-
-void NDS_DebugInit(void)
-{
- nullsub_26();
- nullsub_27();
- nullsub_29();
- nullsub_30();
- nullsub_31();
- nullsub_32();
- nullsub_28();
- gUnknown_203B14C = 1; // Maybe a flag saying Debug is on?
-}
-
-void nullsub_25(void)
-{
-}
-
-void nullsub_26(void)
-{
-}
-
-// Unused
-void PrintFuncFileLineOrNotEntry(char * r0, struct DebugLocation *r1)
-{
- if(r1 != 0)
- {
- sprintf(r0, gFuncFileLineString, r1->func, r1->file, r1->line);
- }
- else
- {
- sprintf(r0, gNotEntryText);
- }
-}
-
-void PrintFuncFileLine(char *buf, struct DebugLocation *loc, char* prefix)
-{
- sprintf(buf, gFuncFileLineStringWPrefix, prefix, loc->func, loc->file, loc->line);
-}
diff --git a/src/code_80118A4_1.c b/src/code_80118A4_1.c
index 89f4db5..e69de29 100644
--- a/src/code_80118A4_1.c
+++ b/src/code_80118A4_1.c
@@ -1,55 +0,0 @@
-#include "global.h"
-
-extern u8 gUnknown_203B150;
-
-void PrintFuncFileLine(char *r0, const char *r1, ...);
-extern const char gUnknown_80D421C;
-
-void nullsub_199(void)
-{
-}
-
-void nullsub_27(void)
-{
-}
-
-void sub_8011B08(void)
-{
- gUnknown_203B150 = 1;
-}
-
-void sub_8011B14(void)
-{
- gUnknown_203B150 = 0;
-}
-
-u8 sub_8011B20(void)
-{
- gUnknown_203B150 = !gUnknown_203B150;
- return gUnknown_203B150;
-}
-
-// unused
-u8 sub_8011B3C(void)
-{
- return gUnknown_203B150;
-}
-
-// unused
-void nullsub_137(void)
-{
-
-}
-
-// TODO merge with fatal_system
-void FatalErrorPrintFuncFileLine(const char *r0, const char *r1)
-{
- char buf[0x100];
- if(r0 != 0){
- PrintFuncFileLine(buf, r1, r0);
- }
- else
- {
- PrintFuncFileLine(buf, r1, &gUnknown_80D421C);
- }
-}
diff --git a/src/code_808EAB0.c b/src/code_808EAB0.c
index bf80687..44be84e 100644
--- a/src/code_808EAB0.c
+++ b/src/code_808EAB0.c
@@ -119,16 +119,10 @@ void sub_808EB48(u8 *r0, s32 r1)
bool8 sub_808EB7C(s32 r0, u8 r1)
{
- u8 return_var;
if(r1 == 0)
{
return FALSE;
}
- return_var = FALSE;
- if(gUnknown_810A390[r1] <= r0)
- {
- return_var = TRUE;
- }
- return return_var;
+ return gUnknown_810A390[r1] <= r0;
}
diff --git a/src/code_8097F40.c b/src/code_8097F40.c
index 94d271c..6775965 100644
--- a/src/code_8097F40.c
+++ b/src/code_8097F40.c
@@ -1,4 +1,13 @@
#include "global.h"
+#define NUM_EXCLUSIVE_POKEMON 12
+
+struct ExclusivePokemon
+{
+ u16 poke_id;
+ bool8 in_rrt; // red rescue team
+ bool8 in_brt; // blue rescue team
+};
+extern struct ExclusivePokemon gExclusivePokemon[];
extern u8 gUnknown_810ACC0[];
extern u8 *gUnknown_203B498;
@@ -6,14 +15,7 @@ extern u8 gUnknown_2039840;
bool8 sub_8097F40(u32 r0)
{
- bool8 temp;
- temp = FALSE;
- if(gUnknown_810ACC0[r0] == 2)
- {
- temp = TRUE;
- }
- return temp;
-
+ return gUnknown_810ACC0[r0] == 2;
}
void sub_8097F5C(void)
@@ -26,3 +28,45 @@ u8 *sub_8097F6C(void)
return &gUnknown_2039840;
}
+#ifdef NONMATCHING
+void sub_8097F74(void)
+{
+ s32 counter;
+ memset(gUnknown_203B498, 0, 0x64);
+ for(counter = 0; counter < NUM_EXCLUSIVE_POKEMON; counter++)
+ {
+ // TODO fix switching of addition statements (when it figures out the index)
+ gUnknown_203B498[counter + 0x58] = gExclusivePokemon[counter].in_rrt;
+ }
+}
+#else
+NAKED
+void sub_8097F74(void)
+{
+ asm_unified("\tpush {r4,lr}\n"
+ "\tldr r4, _08097FA0\n"
+ "\tldr r0, [r4]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0x64\n"
+ "\tbl memset\n"
+ "\tmovs r2, 0\n"
+ "\tldr r3, _08097FA4\n"
+"_08097F86:\n"
+ "\tldr r0, [r4]\n"
+ "\tadds r0, 0x58\n"
+ "\tadds r0, r2\n"
+ "\tldrb r1, [r3, 0x2]\n"
+ "\tstrb r1, [r0]\n"
+ "\tadds r3, 0x4\n"
+ "\tadds r2, 0x1\n"
+ "\tcmp r2, 0xB\n"
+ "\tble _08097F86\n"
+ "\tpop {r4}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+"_08097FA0: .4byte gUnknown_203B498\n"
+"_08097FA4: .4byte gExclusivePokemon");
+
+}
+#endif
diff --git a/src/debug.c b/src/debug.c
new file mode 100644
index 0000000..4482df1
--- /dev/null
+++ b/src/debug.c
@@ -0,0 +1,198 @@
+#include <stdarg.h>
+#include <stdio.h>
+#include "gba/gba.h"
+#include "config.h"
+#include "debug.h"
+
+extern void Hang();
+
+extern u8 gUnknown_203B150;
+
+extern bool32 gNDS_DebugEnabled;
+
+extern const char gUnknown_80D421C[];
+extern const char gNotMountText[];
+extern const char gNotEntryText[];
+extern const char gFuncFileLineString[];
+extern const char gFuncFileLineStringWPrefix[];
+extern const char gFuncFileLineString2[];
+
+void NDS_DebugInit(void)
+{
+ nullsub_26();
+ nullsub_27();
+ nullsub_29();
+ nullsub_30();
+ nullsub_31();
+ nullsub_32();
+ nullsub_28();
+ gNDS_DebugEnabled = TRUE;
+}
+
+void nullsub_25(void)
+{
+}
+
+void nullsub_26(void)
+{
+}
+
+// Unused
+void PrintFuncFileLineOrNotEntry(char * buf, struct DebugLocation *debug)
+{
+ if(debug != NULL)
+ {
+ sprintf(buf, gFuncFileLineString, debug->func, debug->file, debug->line);
+ }
+ else
+ {
+ sprintf(buf, gNotEntryText);
+ }
+}
+
+void PrintFuncFileLine(char *buf, struct DebugLocation *loc, const char* prefix)
+{
+ sprintf(buf, gFuncFileLineStringWPrefix, prefix, loc->func, loc->file, loc->line);
+}
+
+void PrintMessageWithFuncFileLine(u8 *buffer, struct DebugLocation *debug, const char *text, ...)
+{
+ va_list vArgv;
+ u32 length;
+
+ va_start(vArgv, text);
+ vsprintf(buffer, text, vArgv);
+ length = strlen(buffer);
+ sprintf(&buffer[length], gFuncFileLineString2, debug->func, debug->file, debug->line);
+ va_end(vArgv);
+}
+
+void nullsub_199(void)
+{
+}
+
+void nullsub_27(void)
+{
+}
+
+void sub_8011B08(void)
+{
+ gUnknown_203B150 = 1;
+}
+
+void sub_8011B14(void)
+{
+ gUnknown_203B150 = 0;
+}
+
+u8 sub_8011B20(void)
+{
+ gUnknown_203B150 = !gUnknown_203B150;
+ return gUnknown_203B150;
+}
+
+// unused
+u8 sub_8011B3C(void)
+{
+ return gUnknown_203B150;
+}
+
+// unused
+void nullsub_137(void)
+{
+
+}
+
+void FatalErrorPrintFuncFileLine(const char *r0, struct DebugLocation *debug)
+{
+ char buf[0x100];
+ if(r0 != NULL){
+ PrintFuncFileLine(buf, debug, r0);
+ }
+ else
+ {
+ PrintFuncFileLine(buf, debug, gUnknown_80D421C);
+ }
+}
+
+void FatalErrorFormatMessage(const char *text, ...)
+{
+ char bufPrint[0x100];
+ va_list vArgv;
+ va_start(vArgv, text);
+ vsprintf(bufPrint, text, vArgv);
+ va_end(vArgv);
+}
+
+
+void sub_8011B88(const char *text, ...)
+{
+ char bufPrint[0x100];
+ va_list vArgv;
+ va_start(vArgv, text);
+ vsprintf(bufPrint, text, vArgv);
+ va_end(vArgv);
+}
+
+void nullsub_28(void)
+{
+}
+
+u32 sub_8011BA4(void)
+{
+ return 0;
+}
+
+// Unused
+u32 sub_8011BA8(void)
+{
+ return 0;
+}
+
+// Unused
+const char *sub_8011BAC(void)
+{
+ return gNotMountText;
+}
+
+// Unused
+void UnusedHang(void)
+{
+ Hang();
+}
+
+void Log(u8 *buffer, const char *text, ...)
+{
+ va_list vArgv;
+ va_start(vArgv, text);
+ va_end(vArgv);
+}
+
+// Unused
+void sub_8011BC8(u32 r0, u32 r1, u32 r2, ...)
+{
+ va_list vArgv;
+ va_start(vArgv, r2);
+ va_end(vArgv);
+}
+
+void nullsub_29()
+{
+}
+
+void nullsub_30()
+{
+}
+
+void nullsub_31()
+{
+}
+
+void nullsub_32()
+{
+}
+
+void FatalErrorHang()
+{
+ Hang();
+}
diff --git a/src/fatal_system.c b/src/fatal_system.c
deleted file mode 100644
index 31c430e..0000000
--- a/src/fatal_system.c
+++ /dev/null
@@ -1,89 +0,0 @@
-#include <stdarg.h>
-#include <stdio.h>
-#include "gba/gba.h"
-#include "config.h"
-
-extern const char gNotMountText;
-extern void Hang();
-
-void FatalErrorFormatMessage(const char *text, ...)
-{
- char bufPrint[0x100];
- va_list vArgv;
- va_start(vArgv, text);
- vsprintf(bufPrint, text, vArgv);
- va_end(vArgv);
-}
-
-
-void sub_8011B88(const char *text, ...)
-{
- char bufPrint[0x100];
- va_list vArgv;
- va_start(vArgv, text);
- vsprintf(bufPrint, text, vArgv);
- va_end(vArgv);
-}
-
-void nullsub_28(void)
-{
-}
-
-u32 sub_8011BA4(void)
-{
- return 0;
-}
-
-// Unused
-u32 sub_8011BA8(void)
-{
- return 0;
-}
-
-// Unused
-const char *sub_8011BAC(void)
-{
- return &gNotMountText;
-}
-
-// Unused
-void UnusedHang(void)
-{
- Hang();
-}
-
-void Log(u8 *buffer, const char *text, ...)
-{
- va_list vArgv;
- va_start(vArgv, text);
- va_end(vArgv);
-}
-
-// Unused
-void sub_8011BC8(u32 r0, u32 r1, u32 r2, ...)
-{
- va_list vArgv;
- va_start(vArgv, r2);
- va_end(vArgv);
-}
-
-void nullsub_29()
-{
-}
-
-void nullsub_30()
-{
-}
-
-void nullsub_31()
-{
-}
-
-void nullsub_32()
-{
-}
-
-void FatalErrorHang()
-{
- Hang();
-}
diff --git a/src/friend_area.c b/src/friend_area.c
index 445a1cf..8435bb1 100644
--- a/src/friend_area.c
+++ b/src/friend_area.c
@@ -18,14 +18,6 @@ struct unkStruct_203B45C
u8 unk29[0x2f];
};
-struct unkFriendAreaStruct
-{
- // size: 0x18
- u32 unk0;
- u32 unk4;
- u32 padding[4];
-};
-
extern struct unkStruct_203B45C gUnknown_203B45C[];
extern bool8 *gFriendAreas;
@@ -622,75 +614,20 @@ void sub_8092558(u8 *buffer, u8 index)
sub_800D158(buffer, &gUnknown_81098A4, gFriendAreaNames[index]);
}
-#ifdef NONMATCHING
void sub_8092578(u8 *buffer, u8 index, u8 r2)
{
// I think this is when we buy the friend area from wigglytuff
- struct unkFriendAreaStruct temp;
+ u32 temp[5];
if(r2)
{
- sub_8090FEC(gFriendAreaSettings[index].price, &(temp.unk4), 1);
- // TODO: There's some stack storage here in the middle calling this func
- // add r0, sp, 0x4
- // str r0, [sp]
- //temp.unk0 = temp.unk4;
- sub_800D158(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96);
+ sub_8090FEC(gFriendAreaSettings[index].price, (&temp[0]), 1);
+ sub_800D158(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, temp);
}
else
{
strcpy(buffer, gFriendAreaNames[index]);
}
}
-#else
-NAKED void sub_8092578(u8 *buffer, u8 index, u8 r2)
-{
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tsub sp, 0x18\n"
- "\tadds r5, r0, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r4, r1, 24\n"
- "\tlsls r2, 24\n"
- "\tcmp r2, 0\n"
- "\tbeq _080925C0\n"
- "\tldr r0, _080925B4\n"
- "\tlsls r1, r4, 3\n"
- "\tadds r0, 0x4\n"
- "\tadds r1, r0\n"
- "\tldr r0, [r1]\n"
- "\tadd r1, sp, 0x4\n"
- "\tmovs r2, 0x1\n"
- "\tbl sub_8090FEC\n"
- "\tldr r1, _080925B8\n"
- "\tldr r2, _080925BC\n"
- "\tlsls r0, r4, 2\n"
- "\tadds r0, r2\n"
- "\tldr r2, [r0]\n"
- "\tadd r0, sp, 0x4\n"
- "\tstr r0, [sp]\n"
- "\tadds r0, r5, 0\n"
- "\tmovs r3, 0x60\n"
- "\tbl sub_800D158\n"
- "\tb _080925CE\n"
- "\t.align 2, 0\n"
-"\t_080925B4: .4byte gFriendAreaSettings\n"
-"\t_080925B8: .4byte gUnknown_81098AC\n"
-"\t_080925BC: .4byte gFriendAreaNames\n"
-"\t_080925C0:\n"
- "\tldr r0, _080925D8\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r1, r0\n"
- "\tldr r1, [r1]\n"
- "\tadds r0, r5, 0\n"
- "\tbl strcpy\n"
-"\t_080925CE:\n"
- "\tadd sp, 0x18\n"
- "\tpop {r4,r5}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
-"\t_080925D8: .4byte gFriendAreaNames");
-}
-#endif
u32 GetFriendAreaDescription(u8 index)
{
diff --git a/src/friend_area_1.c b/src/friend_area_1.c
index ae04cdf..9a40e2c 100644
--- a/src/friend_area_1.c
+++ b/src/friend_area_1.c
@@ -17,10 +17,8 @@ u32 sub_80927A8(u32 r0, u32 r1)
sub_809486C(temp, r0, r1);
for(counter = 0; counter < NUM_FRIEND_AREAS; counter++)
{
- // TODO moves into R1 for the load else it matches
- if(!gFriendAreas[counter])
- temp[4] = gFriendAreas[counter];
- else
+ // TODO fix one line diff of storing into temp[4]
+ if(gFriendAreas[counter])
temp[4] = -1;
sub_809488C(temp, &(temp[4]), 1);
}
diff --git a/src/music.c b/src/music.c
index 8f02775..701fd3f 100644
--- a/src/music.c
+++ b/src/music.c
@@ -32,7 +32,7 @@ bool8 sub_800CAAC(u32);
bool8 sub_800CACC(u32);
u16 sub_800CAE0(u16);
-void sub_800C93C(void)
+void StopBGMusicVSync(void)
{
bool8 interrupt_flag;
u16 temp;
@@ -50,7 +50,7 @@ void sub_800C93C(void)
{
if(gBGMusicPlayerState == 2)
{
- gUnknown_202D694 = gUnknown_202D690;
+ gUnknown_202D694 = 0;
}
else if(gBGMusicPlayerState == 1)
{
@@ -68,7 +68,7 @@ void sub_800C93C(void)
}
}
-void sub_800C9CC(void)
+void StartBGMusicVSync(void)
{
bool8 interrupt_flag = DisableInterrupts();
m4aSoundVSyncOn();
diff --git a/src/music_pre.c b/src/music_pre.c
index 42a8cb0..5c0589a 100644
--- a/src/music_pre.c
+++ b/src/music_pre.c
@@ -11,13 +11,17 @@ extern void SoundBiasSet();
extern void SetInterruptFlag(u16);
extern void nullsub_25();
extern void nullsub_18();
+extern void UpdateSound();
+extern void UpdateInput();
extern void sub_800C298(u16 r0);
typedef void (*IntrCallback)(void);
extern IntrCallback gUnknown_202D5F0[];
+extern struct MusicPlayerInfo gUnknown_20008F0; // BGM??
extern u32 gUnknown_203B0A0;
+extern u32 gUnknown_203B0A4;
extern u16 gBGMusicPlayerState;
extern u16 gCurrentBGSong;
extern u16 gUnknown_202D68C;
@@ -33,20 +37,19 @@ extern u8 gUnknown_203B09A;
struct unkStruct_3000FD8
{
u16 unk0;
- u16 unk2;
+ u16 songIndex;
u16 unk4;
u8 unk6;
- u8 padding;
};
extern struct unkStruct_3000FD8 gUnknown_3000FD8[8];
extern u8 gUnknown_202D7FE;
extern u16 gUnknown_202D7FC;
-extern struct BGControlStruct gUnknown_202D698;
-extern struct BGControlStruct gUnknown_202D6A0;
-extern struct BGControlStruct gUnknown_202D6A8;
-extern struct BGControlStruct gUnknown_202D6B0;
+extern struct BGControlStruct gBG0Control;
+extern struct BGControlStruct gBG1Control;
+extern struct BGControlStruct gBG2Control;
+extern struct BGControlStruct gBG3Control;
void sub_800BF80(void);
void xxx_update_bg_sound_input(void);
@@ -219,18 +222,18 @@ void UpdateBGControlRegisters(void)
BG[3] = 3;
}
- REG_BG0HOFS = gUnknown_202D698.hofs;
- REG_BG0VOFS = gUnknown_202D698.vofs;
- REG_BG1HOFS = gUnknown_202D6A0.hofs;
- REG_BG1VOFS = gUnknown_202D6A0.vofs;
- REG_BG2HOFS = gUnknown_202D6A8.hofs;
- REG_BG2VOFS = gUnknown_202D6A8.vofs;
- REG_BG3HOFS = gUnknown_202D6B0.hofs;
- REG_BG3VOFS = gUnknown_202D6B0.vofs;
+ REG_BG0HOFS = gBG0Control.hofs;
+ REG_BG0VOFS = gBG0Control.vofs;
+ REG_BG1HOFS = gBG1Control.hofs;
+ REG_BG1VOFS = gBG1Control.vofs;
+ REG_BG2HOFS = gBG2Control.hofs;
+ REG_BG2VOFS = gBG2Control.vofs;
+ REG_BG3HOFS = gBG3Control.hofs;
+ REG_BG3VOFS = gBG3Control.vofs;
REG_BG0CNT = BG[0] | 0xB0 << 6;
REG_BG1CNT = BG[1] | 0xB4 << 6;
- if(gUnknown_202D6A8.unk2 == 0x80 << 8)
+ if(gBG2Control.unk2 == 0x80 << 8)
{
REG_BG2CNT = BG[2] | 0x2e08;
}
@@ -276,7 +279,7 @@ void sub_800BD08(void)
while(counter >= 0)
{
preload->unk0 = zero2;
- preload->unk2 = 0x3e5;
+ preload->songIndex = 0x3e5;
preload->unk4 = zero2;
preload->unk6 = zero;
counter--;
@@ -449,3 +452,340 @@ u16 GetCurrentBGSong(void)
{
return gCurrentBGSong;
}
+
+#ifdef NONMATCHING
+void sub_800C074(u16 SongIndex,u16 param_2)
+{
+ bool8 interrupt_flag;
+ u16 msVar;
+ struct unkStruct_3000FD8 *preload;
+
+ if (SongIndex == 0x3e5)
+ return;
+ if (0x100 < param_2)
+ param_2 = 0x100;
+
+ if (sub_800CACC(SongIndex))
+ {
+ msVar = sub_800CAE0(SongIndex);
+ if (msVar == 1) {
+ interrupt_flag = DisableInterrupts();
+ gUnknown_202D68E = SongIndex;
+ if(gUnknown_202D690 == 0)
+ {
+ if (gCurrentBGSong != 999)
+ {
+ if ((u16)(gBGMusicPlayerState - 1U) < 2)
+ {
+ gUnknown_202D690 = msVar;
+ gUnknown_202D692 = 16;
+ gUnknown_202D694 = 0;
+ m4aMPlayFadeOutTemporarily(&gUnknown_20008F0,1);
+ }
+ else
+ {
+ if (gBGMusicPlayerState == 3)
+ gUnknown_202D690 = 2;
+ else
+ {
+ gUnknown_202D690 = 3;
+ m4aMPlayStop(&gUnknown_20008F0);
+ m4aSongNumStart(gUnknown_202D68E);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (1 < (u16)(gUnknown_202D690 - 1U))
+ {
+ m4aMPlayStop(&gUnknown_20008F0);
+ m4aSongNumStart(gUnknown_202D68E);
+ gUnknown_202D690 = 3;
+ }
+ }
+ switch(gCurrentBGSong)
+ {
+ case 26: // 0x1A
+ case 27: // 0x1B
+ case 28: // 0x1C
+ case 29: // 0x1D
+ case 30: // 0x1E
+ case 31: // 0x1F
+ case 34: // 0x22
+ case 35: // 0x23
+ case 37: // 0x25
+ case 38: // 0x26
+ case 117: // 0x75
+ case 118: // 0x76
+ case 119: // 0x77
+ case 122: // 0x7A
+ case 127: // 0x7F
+ gUnknown_202D694 = 1;
+ break;
+ default:
+ break;
+ }
+ if (interrupt_flag)
+ EnableInterrupts();
+ }
+ else
+ {
+ nullsub_20(SongIndex);
+ }
+ }
+ else
+ {
+ if (!sub_800CAAC(SongIndex))
+ return;
+ msVar = sub_800CAE0(SongIndex);
+ preload = &gUnknown_3000FD8[msVar]; // need to load this before comparison to match
+ if (msVar <= 1)
+ nullsub_20(SongIndex);
+ else
+ {
+ interrupt_flag = DisableInterrupts();
+ m4aSongNumStart(SongIndex);
+ preload->unk0 = 1;
+ preload->songIndex = SongIndex;
+ // TODO fix this comparison
+ // Generates eor/neg/lsr
+ preload->unk6 = param_2 != 0x100;
+ preload->unk4 = param_2;
+ if (interrupt_flag)
+ EnableInterrupts();
+ }
+ }
+}
+#else
+NAKED
+void sub_800C074(u16 SongIndex, u16 param_2)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tmov r8, r5\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r6, r1, 16\n"
+ "\tldr r0, _0800C0FC\n"
+ "\tcmp r5, r0\n"
+ "\tbne _0800C08C\n"
+ "\tb _0800C208\n"
+"_0800C08C:\n"
+ "\tmovs r7, 0x80\n"
+ "\tlsls r7, 1\n"
+ "\tcmp r6, r7\n"
+ "\tbls _0800C096\n"
+ "\tadds r6, r7, 0\n"
+"_0800C096:\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_800CACC\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0800C0A4\n"
+ "\tb _0800C1B0\n"
+"_0800C0A4:\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_800CAE0\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r7, r0, 16\n"
+ "\tcmp r7, 0x1\n"
+ "\tbeq _0800C0B4\n"
+ "\tb _0800C1D0\n"
+"_0800C0B4:\n"
+ "\tbl DisableInterrupts\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r8, r0\n"
+ "\tldr r6, _0800C100\n"
+ "\tstrh r5, [r6]\n"
+ "\tldr r4, _0800C104\n"
+ "\tldrh r0, [r4]\n"
+ "\tadds r2, r0, 0\n"
+ "\tcmp r2, 0\n"
+ "\tbne _0800C144\n"
+ "\tldr r0, _0800C108\n"
+ "\tldrh r1, [r0]\n"
+ "\tldr r0, _0800C10C\n"
+ "\tcmp r1, r0\n"
+ "\tbeq _0800C12C\n"
+ "\tldr r0, _0800C110\n"
+ "\tldrh r1, [r0]\n"
+ "\tsubs r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x1\n"
+ "\tbhi _0800C120\n"
+ "\tstrh r7, [r4]\n"
+ "\tldr r1, _0800C114\n"
+ "\tmovs r0, 0x10\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r0, _0800C118\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r0, _0800C11C\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl m4aMPlayFadeOutTemporarily\n"
+ "\tb _0800C15E\n"
+ "\t.align 2, 0\n"
+"_0800C0FC: .4byte 0x000003e5\n"
+"_0800C100: .4byte gUnknown_202D68E\n"
+"_0800C104: .4byte gUnknown_202D690\n"
+"_0800C108: .4byte gCurrentBGSong\n"
+"_0800C10C: .4byte 0x000003e7\n"
+"_0800C110: .4byte gBGMusicPlayerState\n"
+"_0800C114: .4byte gUnknown_202D692\n"
+"_0800C118: .4byte gUnknown_202D694\n"
+"_0800C11C: .4byte gUnknown_20008F0\n"
+"_0800C120:\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x3\n"
+ "\tbne _0800C12C\n"
+ "\tmovs r0, 0x2\n"
+ "\tb _0800C15C\n"
+"_0800C12C:\n"
+ "\tmovs r0, 0x3\n"
+ "\tstrh r0, [r4]\n"
+ "\tldr r0, _0800C140\n"
+ "\tbl m4aMPlayStop\n"
+ "\tldrh r0, [r6]\n"
+ "\tbl m4aSongNumStart\n"
+ "\tb _0800C15E\n"
+ "\t.align 2, 0\n"
+"_0800C140: .4byte gUnknown_20008F0\n"
+"_0800C144:\n"
+ "\tsubs r0, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x1\n"
+ "\tbls _0800C15E\n"
+ "\tldr r0, _0800C17C\n"
+ "\tbl m4aMPlayStop\n"
+ "\tldrh r0, [r6]\n"
+ "\tbl m4aSongNumStart\n"
+ "\tmovs r0, 0x3\n"
+"_0800C15C:\n"
+ "\tstrh r0, [r4]\n"
+"_0800C15E:\n"
+ "\tldr r0, _0800C180\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, 0x26\n"
+ "\tbgt _0800C184\n"
+ "\tcmp r0, 0x25\n"
+ "\tbge _0800C19A\n"
+ "\tcmp r0, 0x1A\n"
+ "\tblt _0800C1A0\n"
+ "\tcmp r0, 0x1F\n"
+ "\tble _0800C19A\n"
+ "\tcmp r0, 0x23\n"
+ "\tbgt _0800C1A0\n"
+ "\tcmp r0, 0x22\n"
+ "\tblt _0800C1A0\n"
+ "\tb _0800C19A\n"
+ "\t.align 2, 0\n"
+"_0800C17C: .4byte gUnknown_20008F0\n"
+"_0800C180: .4byte gCurrentBGSong\n"
+"_0800C184:\n"
+ "\tcmp r0, 0x7A\n"
+ "\tbeq _0800C19A\n"
+ "\tcmp r0, 0x7A\n"
+ "\tbgt _0800C196\n"
+ "\tcmp r0, 0x77\n"
+ "\tbgt _0800C1A0\n"
+ "\tcmp r0, 0x75\n"
+ "\tblt _0800C1A0\n"
+ "\tb _0800C19A\n"
+"_0800C196:\n"
+ "\tcmp r0, 0x7F\n"
+ "\tbne _0800C1A0\n"
+"_0800C19A:\n"
+ "\tldr r1, _0800C1AC\n"
+ "\tmovs r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+"_0800C1A0:\n"
+ "\tmov r0, r8\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0800C208\n"
+ "\tbl EnableInterrupts\n"
+ "\tb _0800C208\n"
+ "\t.align 2, 0\n"
+"_0800C1AC: .4byte gUnknown_202D694\n"
+"_0800C1B0:\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_800CAAC\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0800C208\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_800CAE0\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tlsls r2, r0, 3\n"
+ "\tldr r1, _0800C1D8\n"
+ "\tadds r4, r2, r1\n"
+ "\tcmp r0, 0x1\n"
+ "\tbhi _0800C1DC\n"
+"_0800C1D0:\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl nullsub_20\n"
+ "\tb _0800C208\n"
+ "\t.align 2, 0\n"
+"_0800C1D8: .4byte gUnknown_3000FD8\n"
+"_0800C1DC:\n"
+ "\tbl DisableInterrupts\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tmov r0, r8\n"
+ "\tbl m4aSongNumStart\n"
+ "\tmovs r0, 0x1\n"
+ "\tstrh r0, [r4]\n"
+ "\tmov r0, r8\n"
+ "\tstrh r0, [r4, 0x2]\n"
+ "\tcmp r6, r7\n"
+ "\tbne _0800C1FA\n"
+ "\tmovs r0, 0\n"
+ "\tb _0800C1FC\n"
+"_0800C1FA:\n"
+ "\tmovs r0, 0x1\n"
+"_0800C1FC:\n"
+ "\tstrb r0, [r4, 0x6]\n"
+ "\tstrh r6, [r4, 0x4]\n"
+ "\tcmp r5, 0\n"
+ "\tbeq _0800C208\n"
+ "\tbl EnableInterrupts\n"
+"_0800C208:\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+void sub_800C214(u16 songIndex, u16 volume)
+{
+ bool8 interrupt_flag;
+ u16 msVar;
+ struct MusicPlayerInfo *info;
+ struct unkStruct_3000FD8 *preload;
+
+ if (256 < volume) {
+ volume = 256;
+ }
+
+ if ((!sub_800CACC(songIndex)) && (sub_800CAAC(songIndex))) {
+ msVar = sub_800CAE0(songIndex);
+ info = gMPlayTable[msVar].info;
+ preload = &gUnknown_3000FD8[msVar];
+ if (msVar > 1) {
+ interrupt_flag = DisableInterrupts();
+ if (preload->songIndex == songIndex) {
+ m4aMPlayVolumeControl(info, 0xf, volume);
+ }
+ if (interrupt_flag)
+ EnableInterrupts();
+ }
+ }
+}
diff --git a/src/save_mid.c b/src/save_mid.c
index 604c98d..0c4531c 100644
--- a/src/save_mid.c
+++ b/src/save_mid.c
@@ -75,7 +75,7 @@ extern void MemoryFree(void* a);
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
extern void sub_8011830(void);
extern s32 WriteFlashData(s32 sector, u8 *src, s32 size);
-extern void sub_8011854(void);
+extern void xxx_call_start_bg_music(void);
extern u32 *sub_809769C(void);
u32 *sub_8011C4C(void);
extern void sub_80958E4(u8 *a, u32 b);
@@ -125,7 +125,7 @@ u32 sub_8012240(void)
MemoryFill8((u8 *)r5, 0xFF, 0x4);
sub_8011830();
temp = WriteFlashData(0x1F, (u8 *)r5, sizeof(struct unk_struct));
- sub_8011854();
+ xxx_call_start_bg_music();
MemoryFree(r5);
if(temp != 0)
{
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f5dd6a1..53ff44a 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -292,16 +292,16 @@ gUnknown_202D692 = .; /* 202D692 */
gUnknown_202D694 = .; /* 202D694 */
. += 0x4;
-gUnknown_202D698 = .; /* 202D698 */
+gBG0Control = .; /* 202D698 */
. += 0x8;
-gUnknown_202D6A0 = .; /* 202D6A0 */
+gBG1Control = .; /* 202D6A0 */
. += 0x8;
-gUnknown_202D6A8 = .; /* 202D6A8 */
+gBG2Control = .; /* 202D6A8 */
. += 0x8;
-gUnknown_202D6B0 = .; /* 202D6B0 */
+gBG3Control = .; /* 202D6B0 */
. += 0x8;
gUnknown_202D6B8 = .; /* 202D6B8 */
diff --git a/sym_ewram2.txt b/sym_ewram2.txt
index d736c01..4ff84ba 100644
--- a/sym_ewram2.txt
+++ b/sym_ewram2.txt
@@ -161,7 +161,7 @@ gUnknown_203B0E8 = .; /* 203B0E8 */
gUnknown_203B0EC = .; /* 203B0EC */
. += 0x60;
-gUnknown_203B14C = .; /* 203B14C */
+gNDS_DebugEnabled = .; /* 203B14C */
. += 0x4;
gUnknown_203B150 = .; /* 203B150 */