summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/field_select.s2
-rwxr-xr-xasm/high_scores.s14
-rwxr-xr-xasm/intro.s2
-rwxr-xr-xasm/options.s2
-rwxr-xr-xasm/pokedex.s2
-rwxr-xr-xasm/rom_11B9C.s10
-rwxr-xr-xasm/rom_24C.s2
-rwxr-xr-xasm/rom_25A4.s2
-rwxr-xr-xasm/rom_2C58.s2
-rwxr-xr-xasm/titlescreen.s1352
-rwxr-xr-xdata/rom.s109
-rwxr-xr-xinclude/m4a.h6
-rwxr-xr-xinclude/main.h21
-rwxr-xr-xinclude/titlescreen.h34
-rwxr-xr-xsrc/main.c2
-rwxr-xr-xsrc/titlescreen.c582
-rwxr-xr-xsym_bss.txt2
-rwxr-xr-xsym_ewram.txt47
18 files changed, 810 insertions, 1383 deletions
diff --git a/asm/field_select.s b/asm/field_select.s
index 3044199..d5e21d8 100755
--- a/asm/field_select.s
+++ b/asm/field_select.s
@@ -587,7 +587,7 @@ sub_8F64: @ 0x08008F64
strb r0, [r1]
ldr r0, _08008F90 @ =0x02002838
ldrh r0, [r0, #0x16]
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/high_scores.s b/asm/high_scores.s
index bb9fc8b..cf320e2 100755
--- a/asm/high_scores.s
+++ b/asm/high_scores.s
@@ -127,7 +127,7 @@ sub_CE88: @ 0x0800CE88
str r0, [r4, #4]
str r5, [r4, #8]
ldr r0, [r4, #8]
- ldr r4, _0800CFCC @ =0x0202C588
+ ldr r4, _0800CFCC @ =gUnknown_0202C588
movs r1, #0
ldrsh r0, [r4, r1]
cmp r0, #0
@@ -171,7 +171,7 @@ _0800CFBC: .4byte 0x80000080
_0800CFC0: .4byte 0x0809DFE0
_0800CFC4: .4byte 0x06010000
_0800CFC8: .4byte 0x80002210
-_0800CFCC: .4byte 0x0202C588
+_0800CFCC: .4byte gUnknown_0202C588
_0800CFD0: .4byte 0x02002858
thumb_func_start sub_CFD4
@@ -269,7 +269,7 @@ _0800D03A:
strb r3, [r1]
ldr r4, _0800D0D0 @ =0x02002885
strb r3, [r4]
- ldr r1, _0800D0D4 @ =0x0202C588
+ ldr r1, _0800D0D4 @ =gUnknown_0202C588
movs r4, #0
ldrsh r0, [r1, r4]
cmp r0, #1
@@ -302,7 +302,7 @@ _0800D0C4: .4byte 0x0202BEBC
_0800D0C8: .4byte 0x0201C18C
_0800D0CC: .4byte 0x02002884
_0800D0D0: .4byte 0x02002885
-_0800D0D4: .4byte 0x0202C588
+_0800D0D4: .4byte gUnknown_0202C588
_0800D0D8: .4byte gMain
_0800D0DC: .4byte 0x02002882
_0800D0E0: .4byte 0x02002880
@@ -1852,7 +1852,7 @@ sub_DD4C: @ 0x0800DD4C
movs r0, #1
strb r0, [r1]
movs r0, #1
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
@@ -2271,7 +2271,7 @@ sub_E0C4: @ 0x0800E0C4
asrs r0, r0, #0x18
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
@@ -2592,7 +2592,7 @@ sub_E390: @ 0x0800E390
bl m4aMPlayAllStop
bl sub_D10
movs r0, #8
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
diff --git a/asm/intro.s b/asm/intro.s
index 1d6e22a..a43d2ae 100755
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -174,7 +174,7 @@ sub_93D0: @ 0x080093D0
movs r0, #0
strb r0, [r1]
movs r0, #1
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/options.s b/asm/options.s
index a7bb86a..044ad2e 100755
--- a/asm/options.s
+++ b/asm/options.s
@@ -1278,7 +1278,7 @@ sub_51C60: @ 0x08051C60
movs r0, #1
strb r0, [r1]
movs r0, #1
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/pokedex.s b/asm/pokedex.s
index ff9bfbd..df6f920 100755
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -1813,7 +1813,7 @@ sub_4D50: @ 0x08004D50
movs r0, #1
strb r0, [r1]
movs r0, #1
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s
index 6aff0d3..7597f34 100755
--- a/asm/rom_11B9C.s
+++ b/asm/rom_11B9C.s
@@ -14885,7 +14885,7 @@ _080192A4:
cmp r0, r1
bhs _080192EC
movs r0, #1
- bl sub_23C
+ bl SetMainGameState
b _080192F2
.align 2, 0
_080192E0: .4byte gMain
@@ -14893,7 +14893,7 @@ _080192E4: .4byte 0x02031520
_080192E8: .4byte 0x00000141
_080192EC:
movs r0, #9
- bl sub_23C
+ bl SetMainGameState
_080192F2:
ldr r1, _08019300 @ =gMain
movs r0, #0
@@ -113123,7 +113123,7 @@ _0804B23A:
cmp r0, #1
bls _0804B258
movs r0, #0xb
- bl sub_23C
+ bl SetMainGameState
b _0804B276
.align 2, 0
_0804B250: .4byte gMain
@@ -113136,13 +113136,13 @@ _0804B258:
beq _0804B270
_0804B262:
movs r0, #0
- bl sub_23C
+ bl SetMainGameState
b _0804B276
.align 2, 0
_0804B26C: .4byte 0x00FFFF00
_0804B270:
movs r0, #8
- bl sub_23C
+ bl SetMainGameState
_0804B276:
pop {r4}
pop {r0}
diff --git a/asm/rom_24C.s b/asm/rom_24C.s
index 27f1457..a58c023 100755
--- a/asm/rom_24C.s
+++ b/asm/rom_24C.s
@@ -981,7 +981,7 @@ sub_9BC_Main: @ 0x080009BC
bl sub_2B4
bl sub_D10
movs r0, #1
- bl sub_23C
+ bl SetMainGameState
b _080009FC
.align 2, 0
_080009DC: .4byte gMain
diff --git a/asm/rom_25A4.s b/asm/rom_25A4.s
index 83eebac..33d7883 100755
--- a/asm/rom_25A4.s
+++ b/asm/rom_25A4.s
@@ -478,7 +478,7 @@ sub_2990: @ 0x08002990
asrs r0, r0, #0x18
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/rom_2C58.s b/asm/rom_2C58.s
index 8163675..d46aceb 100755
--- a/asm/rom_2C58.s
+++ b/asm/rom_2C58.s
@@ -1278,7 +1278,7 @@ sub_374C: @ 0x0800374C
asrs r0, r0, #0x18
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
- bl sub_23C
+ bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/titlescreen.s b/asm/titlescreen.s
index 50c88c7..fde0f64 100755
--- a/asm/titlescreen.s
+++ b/asm/titlescreen.s
@@ -4,1330 +4,6 @@
.text
- thumb_func_start sub_10AC0
-sub_10AC0: @ 0x08010AC0
- push {r4, r5, r6, r7, lr}
- ldr r1, _08010B28 @ =gUnknown_2002888
- movs r2, #0
- movs r0, #0
- strh r0, [r1, #4]
- strh r0, [r1, #2]
- strb r2, [r1, #6]
- strb r2, [r1, #8]
- movs r0, #4
- strb r0, [r1, #0x10]
- movs r3, #1
- strb r3, [r1, #9]
- strb r2, [r1, #0x11]
- movs r0, #6
- strb r0, [r1, #0xa]
- strb r2, [r1, #0xc]
- movs r0, #3
- strb r0, [r1, #0xe]
- strb r2, [r1, #0xb]
- strb r2, [r1, #0xd]
- strb r2, [r1, #0xf]
- ldr r0, _08010B2C @ =0x0202C588
- strh r3, [r0]
- ldr r0, _08010B30 @ =0x020028A0
- strb r2, [r0]
- ldr r0, _08010B34 @ =0x020028A1
- strb r2, [r0]
- ldr r0, _08010B38 @ =0x020028A2
- strb r2, [r0]
- ldr r0, _08010B3C @ =0x020028A3
- strb r2, [r0]
- ldr r0, _08010B40 @ =gMain
- ldr r2, [r0, #0x40]
- adds r6, r0, #0
- cmp r2, #1
- bne _08010B58
- ldr r7, _08010B44 @ =0x020028A4
- ldr r5, _08010B48 @ =0x020028A5
- ldr r0, _08010B4C @ =gUnknown_202BE24
- mov ip, r0
- ldr r4, _08010B50 @ =0x086A975C
- ldr r3, _08010B54 @ =0x0202BE00
- movs r2, #6
-_08010B16:
- ldm r4!, {r0}
- stm r3!, {r0}
- subs r2, #1
- cmp r2, #0
- bge _08010B16
- movs r0, #1
- strb r0, [r1]
- strb r0, [r1, #7]
- b _08010B78
- .align 2, 0
-_08010B28: .4byte gUnknown_2002888
-_08010B2C: .4byte 0x0202C588
-_08010B30: .4byte 0x020028A0
-_08010B34: .4byte 0x020028A1
-_08010B38: .4byte 0x020028A2
-_08010B3C: .4byte 0x020028A3
-_08010B40: .4byte gMain
-_08010B44: .4byte 0x020028A4
-_08010B48: .4byte 0x020028A5
-_08010B4C: .4byte gUnknown_202BE24
-_08010B50: .4byte 0x086A975C
-_08010B54: .4byte 0x0202BE00
-_08010B58:
- ldr r7, _08010B94 @ =0x020028A4
- ldr r5, _08010B98 @ =0x020028A5
- ldr r0, _08010B9C @ =gUnknown_202BE24
- mov ip, r0
- ldr r4, _08010BA0 @ =0x086A96F8
- ldr r3, _08010BA4 @ =0x0201C190
- movs r2, #6
-_08010B66:
- ldm r4!, {r0}
- stm r3!, {r0}
- subs r2, #1
- cmp r2, #0
- bge _08010B66
- movs r0, #0
- strb r0, [r1]
- strb r0, [r1, #7]
- strb r0, [r6, #0xd]
-_08010B78:
- movs r2, #0
- movs r0, #0
- strh r0, [r1, #0x14]
- movs r0, #1
- strh r0, [r1, #0x12]
- strb r2, [r7]
- ldrh r1, [r6, #0x1c]
- movs r0, #0xf
- ands r0, r1
- cmp r0, #0xf
- bne _08010BA8
- movs r0, #1
- strb r0, [r5]
- b _08010BAA
- .align 2, 0
-_08010B94: .4byte 0x020028A4
-_08010B98: .4byte 0x020028A5
-_08010B9C: .4byte gUnknown_202BE24
-_08010BA0: .4byte 0x086A96F8
-_08010BA4: .4byte 0x0201C190
-_08010BA8:
- strb r2, [r5]
-_08010BAA:
- movs r0, #0
- mov r1, ip
- strb r0, [r1]
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
-
- thumb_func_start sub_10BB8
-sub_10BB8: @ 0x08010BB8
- push {r4, r5, r6, r7, lr}
- ldr r2, _08010BE8 @ =gMain
- ldrh r1, [r2, #0x1c]
- movs r0, #0xf
- ands r0, r1
- adds r7, r2, #0
- cmp r0, #0xf
- bne _08010BF8
- ldr r0, _08010BEC @ =0x020028A5
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- ldr r2, _08010BF0 @ =0x020028A4
- cmp r0, #0
- bne _08010C00
- movs r0, #1
- strb r0, [r2]
- ldr r1, _08010BF4 @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xb
- strb r0, [r7, #3]
- b _08010C00
- .align 2, 0
-_08010BE8: .4byte gMain
-_08010BEC: .4byte 0x020028A5
-_08010BF0: .4byte 0x020028A4
-_08010BF4: .4byte gUnknown_2002888
-_08010BF8:
- ldr r1, _08010CD4 @ =0x020028A5
- movs r0, #0
- strb r0, [r1]
- ldr r2, _08010CD8 @ =0x020028A4
-_08010C00:
- movs r4, #0
- ldrsb r4, [r2, r4]
- cmp r4, #0
- bne _08010CC8
- ldr r2, _08010CDC @ =gUnknown_2002888
- ldrh r0, [r2, #4]
- adds r0, #1
- strh r0, [r2, #4]
- ldr r3, _08010CE0 @ =0x086A9662
- movs r1, #8
- ldrsb r1, [r2, r1]
- adds r1, r1, r3
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _08010C3A
- strh r4, [r2, #4]
- ldrb r0, [r2, #8]
- adds r0, #1
- strb r0, [r2, #8]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #3
- ble _08010C3A
- movs r0, #0
- strb r0, [r2, #8]
-_08010C3A:
- adds r4, r7, #0
- ldrh r1, [r4, #0x1c]
- ldr r0, _08010CE4 @ =0x000003FF
- ands r0, r1
- cmp r0, #0
- beq _08010C4A
- movs r0, #0
- strh r0, [r2, #0x14]
-_08010C4A:
- ldrh r1, [r4, #0x18]
- movs r0, #9
- ands r0, r1
- cmp r0, #0
- beq _08010C66
- movs r0, #0x65
- bl m4aSongNumStart
- ldr r1, _08010CDC @ =gUnknown_2002888
- movs r0, #0
- strh r0, [r1, #4]
- strh r0, [r1, #2]
- movs r0, #2
- strb r0, [r4, #3]
-_08010C66:
- bl sub_114FC
- bl sub_1157C
- ldr r6, _08010CDC @ =gUnknown_2002888
- ldrh r0, [r6, #0x14]
- adds r0, #1
- strh r0, [r6, #0x14]
- lsls r0, r0, #0x10
- movs r1, #0xe1
- lsls r1, r1, #0x13
- cmp r0, r1
- ble _08010CC8
- movs r1, #0x14
- ldrsh r0, [r6, r1]
- movs r1, #0xa
- bl __modsi3
- lsls r0, r0, #0x10
- cmp r0, #0
- bne _08010CB4
- ldrh r0, [r6, #0x12]
- adds r0, #1
- strh r0, [r6, #0x12]
- ldr r4, _08010CE8 @ =0x02032EE0
- ldr r5, _08010CEC @ =0x0000FFFF
- movs r0, #0x12
- ldrsh r1, [r6, r0]
- movs r0, #0x80
- lsls r0, r0, #1
- bl __divsi3
- adds r2, r0, #0
- lsls r2, r2, #0x10
- lsrs r2, r2, #0x10
- adds r0, r4, #0
- adds r1, r5, #0
- bl m4aMPlayVolumeControl
-_08010CB4:
- movs r1, #0x12
- ldrsh r0, [r6, r1]
- cmp r0, #9
- ble _08010CC8
- movs r0, #0
- strh r0, [r6, #0x14]
- movs r0, #7
- strb r0, [r6, #6]
- movs r0, #0xb
- strb r0, [r7, #3]
-_08010CC8:
- bl sub_11640
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010CD4: .4byte 0x020028A5
-_08010CD8: .4byte 0x020028A4
-_08010CDC: .4byte gUnknown_2002888
-_08010CE0: .4byte 0x086A9662
-_08010CE4: .4byte 0x000003FF
-_08010CE8: .4byte 0x02032EE0
-_08010CEC: .4byte 0x0000FFFF
-
- thumb_func_start sub_10CF0
-sub_10CF0: @ 0x08010CF0
- push {r4, r5, r6, r7, lr}
- ldr r6, _08010D70 @ =gMain
- ldrh r1, [r6, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _08010D74 @ =0x020028A4
- cmp r0, #0xf
- bne _08010D0E
- movs r0, #1
- strb r0, [r2]
- ldr r1, _08010D78 @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xb
- strb r0, [r6, #3]
-_08010D0E:
- movs r4, #0
- ldrsb r4, [r2, r4]
- cmp r4, #0
- bne _08010D66
- ldr r3, _08010D78 @ =gUnknown_2002888
- ldrh r0, [r3, #4]
- adds r0, #1
- movs r7, #0
- strh r0, [r3, #4]
- ldr r5, _08010D7C @ =0x086A9666
- movs r2, #2
- ldrsh r1, [r3, r2]
- lsls r1, r1, #1
- adds r2, r5, #1
- adds r1, r1, r2
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _08010D66
- strh r4, [r3, #4]
- movs r1, #2
- ldrsh r0, [r3, r1]
- lsls r0, r0, #1
- adds r0, r0, r5
- ldrb r0, [r0]
- strb r0, [r3, #8]
- ldrh r0, [r3, #2]
- adds r0, #1
- strh r0, [r3, #2]
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- cmp r0, #5
- ble _08010D66
- strh r4, [r3, #2]
- ldr r0, _08010D80 @ =gUnknown_202BE24
- strb r7, [r0]
- strb r7, [r3, #9]
- movs r0, #1
- strb r0, [r3, #0xb]
- movs r0, #3
- strb r0, [r6, #3]
-_08010D66:
- bl sub_11640
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010D70: .4byte gMain
-_08010D74: .4byte 0x020028A4
-_08010D78: .4byte gUnknown_2002888
-_08010D7C: .4byte 0x086A9666
-_08010D80: .4byte gUnknown_202BE24
-
- thumb_func_start sub_10D84
-sub_10D84: @ 0x08010D84
- push {r4, r5, r6, lr}
- ldr r6, _08010DD0 @ =gMain
- ldrh r1, [r6, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _08010DD4 @ =0x020028A4
- cmp r0, #0xf
- bne _08010DA2
- movs r0, #1
- strb r0, [r2]
- ldr r1, _08010DD8 @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xa
- strb r0, [r6, #3]
-_08010DA2:
- movs r5, #0
- ldrsb r5, [r2, r5]
- cmp r5, #0
- bne _08010DF2
- ldrh r1, [r6, #0x18]
- movs r4, #1
- ands r4, r1
- cmp r4, #0
- beq _08010DDC
- movs r0, #0x65
- bl m4aSongNumStart
- bl sub_11B74
- bl sub_2B4
- bl m4aMPlayAllStop
- bl sub_D10
- strb r5, [r6, #3]
- b _08010DF2
- .align 2, 0
-_08010DD0: .4byte gMain
-_08010DD4: .4byte 0x020028A4
-_08010DD8: .4byte gUnknown_2002888
-_08010DDC:
- movs r0, #2
- ands r0, r1
- cmp r0, #0
- beq _08010DF2
- movs r0, #0x66
- bl m4aSongNumStart
- ldr r0, _08010DFC @ =gUnknown_2002888
- strb r4, [r0, #0x11]
- movs r0, #1
- strb r0, [r6, #3]
-_08010DF2:
- bl sub_11640
- pop {r4, r5, r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08010DFC: .4byte gUnknown_2002888
-
- thumb_func_start sub_10E00
-sub_10E00: @ 0x08010E00
- push {r4, r5, r6, lr}
- ldr r5, _08010E7C @ =gMain
- ldrh r1, [r5, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _08010E80 @ =0x020028A4
- cmp r0, #0xf
- bne _08010E1E
- movs r0, #1
- strb r0, [r2]
- ldr r1, _08010E84 @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xb
- strb r0, [r5, #3]
-_08010E1E:
- movs r4, #0
- ldrsb r4, [r2, r4]
- cmp r4, #0
- bne _08010EE0
- ldr r3, _08010E84 @ =gUnknown_2002888
- ldrb r0, [r3, #7]
- cmp r0, #0
- bne _08010E94
- ldrh r0, [r3, #4]
- adds r0, #1
- strh r0, [r3, #4]
- ldr r2, _08010E88 @ =0x086A9748
- movs r6, #2
- ldrsh r1, [r3, r6]
- adds r1, r1, r2
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _08010E76
- strh r4, [r3, #4]
- ldr r2, _08010E8C @ =0x0201C190
- ldr r1, _08010E90 @ =0x086A9714
- movs r6, #2
- ldrsh r0, [r3, r6]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- str r0, [r2, #0x18]
- ldrh r0, [r3, #2]
- adds r0, #1
- strh r0, [r3, #2]
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- cmp r0, #0xb
- ble _08010E76
- strh r4, [r3, #2]
- movs r0, #1
- strb r0, [r3, #0xd]
- strb r0, [r3, #0xf]
- movs r0, #4
- strb r0, [r5, #3]
-_08010E76:
- bl sub_1175C
- b _08010EE0
- .align 2, 0
-_08010E7C: .4byte gMain
-_08010E80: .4byte 0x020028A4
-_08010E84: .4byte gUnknown_2002888
-_08010E88: .4byte 0x086A9748
-_08010E8C: .4byte 0x0201C190
-_08010E90: .4byte 0x086A9714
-_08010E94:
- ldrh r0, [r3, #4]
- adds r0, #1
- strh r0, [r3, #4]
- ldr r2, _08010EE8 @ =0x086A9748
- movs r6, #2
- ldrsh r1, [r3, r6]
- adds r1, r1, r2
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _08010EDC
- strh r4, [r3, #4]
- ldr r2, _08010EEC @ =0x0202BE00
- ldr r1, _08010EF0 @ =0x086A9778
- movs r6, #2
- ldrsh r0, [r3, r6]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- str r0, [r2, #0x18]
- ldrh r0, [r3, #2]
- adds r0, #1
- strh r0, [r3, #2]
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- cmp r0, #0xb
- ble _08010EDC
- strh r4, [r3, #2]
- movs r0, #1
- strb r0, [r3, #0xd]
- strb r0, [r3, #0xf]
- movs r0, #5
- strb r0, [r5, #3]
-_08010EDC:
- bl sub_11968
-_08010EE0:
- pop {r4, r5, r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08010EE8: .4byte 0x086A9748
-_08010EEC: .4byte 0x0202BE00
-_08010EF0: .4byte 0x086A9778
-
- thumb_func_start sub_10EF4
-sub_10EF4: @ 0x08010EF4
- push {r4, r5, lr}
- ldr r3, _08010F94 @ =gMain
- ldrh r1, [r3, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _08010F98 @ =0x020028A4
- cmp r0, #0xf
- bne _08010F12
- movs r0, #1
- strb r0, [r2]
- ldr r1, _08010F9C @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xa
- strb r0, [r3, #3]
-_08010F12:
- movs r4, #0
- ldrsb r4, [r2, r4]
- cmp r4, #0
- bne _08011010
- ldr r3, _08010F9C @ =gUnknown_2002888
- ldrh r0, [r3, #4]
- adds r0, #1
- strh r0, [r3, #4]
- ldr r5, _08010FA0 @ =0x086A9672
- movs r2, #2
- ldrsh r1, [r3, r2]
- lsls r1, r1, #1
- adds r2, r5, #1
- adds r1, r1, r2
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _08010F68
- strh r4, [r3, #4]
- ldrh r0, [r3, #2]
- adds r0, #1
- strh r0, [r3, #2]
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- cmp r0, #6
- ble _08010F4E
- strh r4, [r3, #2]
-_08010F4E:
- movs r1, #2
- ldrsh r0, [r3, r1]
- lsls r0, r0, #1
- adds r0, r0, r5
- ldrb r0, [r0]
- strb r0, [r3, #0xc]
- movs r2, #2
- ldrsh r0, [r3, r2]
- lsls r0, r0, #1
- adds r0, r0, r5
- ldrb r0, [r0]
- adds r0, #3
- strb r0, [r3, #0xe]
-_08010F68:
- ldr r0, _08010F94 @ =gMain
- ldrh r1, [r0, #0x18]
- movs r0, #0x40
- ands r0, r1
- lsls r0, r0, #0x10
- lsrs r4, r0, #0x10
- cmp r4, #0
- beq _08010FA4
- movs r0, #0x67
- bl m4aSongNumStart
- ldr r1, _08010F9C @ =gUnknown_2002888
- ldrb r0, [r1]
- subs r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- cmp r0, #0
- bge _08010FC4
- movs r0, #3
- strb r0, [r1]
- b _08010FC4
- .align 2, 0
-_08010F94: .4byte gMain
-_08010F98: .4byte 0x020028A4
-_08010F9C: .4byte gUnknown_2002888
-_08010FA0: .4byte 0x086A9672
-_08010FA4:
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08010FC4
- movs r0, #0x67
- bl m4aSongNumStart
- ldr r1, _08010FE4 @ =gUnknown_2002888
- ldrb r0, [r1]
- adds r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #3
- ble _08010FC4
- strb r4, [r1]
-_08010FC4:
- ldr r5, _08010FE8 @ =gMain
- ldrh r1, [r5, #0x18]
- movs r4, #9
- ands r4, r1
- cmp r4, #0
- beq _08010FEC
- movs r0, #0x65
- bl m4aSongNumStart
- ldr r1, _08010FE4 @ =gUnknown_2002888
- movs r0, #0
- strh r0, [r1, #4]
- strh r0, [r1, #2]
- movs r0, #7
- b _0801100A
- .align 2, 0
-_08010FE4: .4byte gUnknown_2002888
-_08010FE8: .4byte gMain
-_08010FEC:
- movs r0, #2
- ands r0, r1
- cmp r0, #0
- beq _0801100C
- movs r0, #0x66
- bl m4aSongNumStart
- ldr r1, _0801101C @ =gUnknown_2002888
- movs r2, #0
- strh r4, [r1, #4]
- movs r0, #0xc
- strh r0, [r1, #2]
- strb r2, [r1, #0xd]
- strb r2, [r1, #0xf]
- movs r0, #6
-_0801100A:
- strb r0, [r5, #3]
-_0801100C:
- bl sub_1157C
-_08011010:
- bl sub_1175C
- pop {r4, r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801101C: .4byte gUnknown_2002888
-
- thumb_func_start sub_11020
-sub_11020: @ 0x08011020
- push {r4, r5, lr}
- ldr r3, _08011088 @ =gMain
- ldrh r1, [r3, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _0801108C @ =0x020028A4
- cmp r0, #0xf
- bne _0801103E
- movs r0, #1
- strb r0, [r2]
- ldr r1, _08011090 @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xb
- strb r0, [r3, #3]
-_0801103E:
- movs r0, #0
- ldrsb r0, [r2, r0]
- cmp r0, #0
- bne _080110DE
- ldr r5, _08011090 @ =gUnknown_2002888
- ldrh r1, [r5, #4]
- movs r0, #3
- ands r1, r0
- cmp r1, #0
- bne _080110B6
- movs r2, #2
- ldrsh r0, [r5, r2]
- cmp r0, #0
- bne _080110A0
- movs r0, #1
- strh r0, [r5, #2]
- movs r0, #0
- ldrsb r0, [r5, r0]
- lsls r0, r0, #0xb
- ldr r4, _08011094 @ =0x060101E0
- adds r0, r0, r4
- ldr r1, _08011098 @ =0x03000000
- movs r2, #8
- movs r3, #2
- bl sub_10708
- ldr r0, _0801109C @ =0x060161E0
- movs r1, #0
- ldrsb r1, [r5, r1]
- lsls r1, r1, #0xb
- adds r1, r1, r4
- movs r2, #8
- movs r3, #2
- bl sub_10708
- b _080110B6
- .align 2, 0
-_08011088: .4byte gMain
-_0801108C: .4byte 0x020028A4
-_08011090: .4byte gUnknown_2002888
-_08011094: .4byte 0x060101E0
-_08011098: .4byte 0x03000000
-_0801109C: .4byte 0x060161E0
-_080110A0:
- strh r1, [r5, #2]
- ldr r0, _080110E8 @ =0x03000000
- movs r1, #0
- ldrsb r1, [r5, r1]
- lsls r1, r1, #0xb
- ldr r2, _080110EC @ =0x060101E0
- adds r1, r1, r2
- movs r2, #8
- movs r3, #2
- bl sub_10708
-_080110B6:
- ldr r3, _080110F0 @ =gUnknown_2002888
- movs r1, #4
- ldrsh r0, [r3, r1]
- cmp r0, #0x14
- ble _080110D8
- ldr r2, _080110F4 @ =gMain
- movs r0, #0
- strb r0, [r2, #0xd]
- ldr r1, _080110F8 @ =0x086A96A4
- movs r0, #0
- ldrsb r0, [r3, r0]
- lsls r0, r0, #1
- adds r0, r0, r1
- ldrh r0, [r0]
- strb r0, [r3, #6]
- movs r0, #0xa
- strb r0, [r2, #3]
-_080110D8:
- ldrh r0, [r3, #4]
- adds r0, #1
- strh r0, [r3, #4]
-_080110DE:
- bl sub_1175C
- pop {r4, r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080110E8: .4byte 0x03000000
-_080110EC: .4byte 0x060101E0
-_080110F0: .4byte gUnknown_2002888
-_080110F4: .4byte gMain
-_080110F8: .4byte 0x086A96A4
-
- thumb_func_start sub_110FC
-sub_110FC: @ 0x080110FC
- push {r4, r5, lr}
- ldr r3, _0801119C @ =gMain
- ldrh r1, [r3, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _080111A0 @ =0x020028A4
- cmp r0, #0xf
- bne _0801111A
- movs r0, #1
- strb r0, [r2]
- ldr r1, _080111A4 @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xa
- strb r0, [r3, #3]
-_0801111A:
- movs r4, #0
- ldrsb r4, [r2, r4]
- cmp r4, #0
- bne _08011218
- ldr r3, _080111A4 @ =gUnknown_2002888
- ldrh r0, [r3, #4]
- adds r0, #1
- strh r0, [r3, #4]
- ldr r5, _080111A8 @ =0x086A9672
- movs r2, #2
- ldrsh r1, [r3, r2]
- lsls r1, r1, #1
- adds r2, r5, #1
- adds r1, r1, r2
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _08011170
- strh r4, [r3, #4]
- ldrh r0, [r3, #2]
- adds r0, #1
- strh r0, [r3, #2]
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- cmp r0, #6
- ble _08011156
- strh r4, [r3, #2]
-_08011156:
- movs r1, #2
- ldrsh r0, [r3, r1]
- lsls r0, r0, #1
- adds r0, r0, r5
- ldrb r0, [r0]
- strb r0, [r3, #0xc]
- movs r2, #2
- ldrsh r0, [r3, r2]
- lsls r0, r0, #1
- adds r0, r0, r5
- ldrb r0, [r0]
- adds r0, #3
- strb r0, [r3, #0xe]
-_08011170:
- ldr r0, _0801119C @ =gMain
- ldrh r1, [r0, #0x18]
- movs r0, #0x40
- ands r0, r1
- lsls r0, r0, #0x10
- lsrs r4, r0, #0x10
- cmp r4, #0
- beq _080111AC
- movs r0, #0x67
- bl m4aSongNumStart
- ldr r1, _080111A4 @ =gUnknown_2002888
- ldrb r0, [r1]
- subs r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- cmp r0, #0
- bge _080111CC
- movs r0, #4
- strb r0, [r1]
- b _080111CC
- .align 2, 0
-_0801119C: .4byte gMain
-_080111A0: .4byte 0x020028A4
-_080111A4: .4byte gUnknown_2002888
-_080111A8: .4byte 0x086A9672
-_080111AC:
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080111CC
- movs r0, #0x67
- bl m4aSongNumStart
- ldr r1, _080111EC @ =gUnknown_2002888
- ldrb r0, [r1]
- adds r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #4
- ble _080111CC
- strb r4, [r1]
-_080111CC:
- ldr r5, _080111F0 @ =gMain
- ldrh r1, [r5, #0x18]
- movs r4, #9
- ands r4, r1
- cmp r4, #0
- beq _080111F4
- movs r0, #0x65
- bl m4aSongNumStart
- ldr r1, _080111EC @ =gUnknown_2002888
- movs r0, #0
- strh r0, [r1, #4]
- strh r0, [r1, #2]
- movs r0, #8
- b _08011212
- .align 2, 0
-_080111EC: .4byte gUnknown_2002888
-_080111F0: .4byte gMain
-_080111F4:
- movs r0, #2
- ands r0, r1
- cmp r0, #0
- beq _08011214
- movs r0, #0x66
- bl m4aSongNumStart
- ldr r1, _08011224 @ =gUnknown_2002888
- movs r2, #0
- strh r4, [r1, #4]
- movs r0, #0xc
- strh r0, [r1, #2]
- strb r2, [r1, #0xd]
- strb r2, [r1, #0xf]
- movs r0, #6
-_08011212:
- strb r0, [r5, #3]
-_08011214:
- bl sub_1157C
-_08011218:
- bl sub_11968
- pop {r4, r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08011224: .4byte gUnknown_2002888
-
- thumb_func_start sub_11228
-sub_11228: @ 0x08011228
- push {r4, r5, lr}
- ldr r3, _08011290 @ =gMain
- ldrh r1, [r3, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _08011294 @ =0x020028A4
- cmp r0, #0xf
- bne _08011246
- movs r0, #1
- strb r0, [r2]
- ldr r1, _08011298 @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xb
- strb r0, [r3, #3]
-_08011246:
- movs r0, #0
- ldrsb r0, [r2, r0]
- cmp r0, #0
- bne _0801130C
- ldr r5, _08011298 @ =gUnknown_2002888
- ldrh r1, [r5, #4]
- movs r0, #3
- ands r1, r0
- cmp r1, #0
- bne _080112BE
- movs r2, #2
- ldrsh r0, [r5, r2]
- cmp r0, #0
- bne _080112A8
- movs r0, #1
- strh r0, [r5, #2]
- movs r0, #0
- ldrsb r0, [r5, r0]
- lsls r0, r0, #0xb
- ldr r4, _0801129C @ =0x060101E0
- adds r0, r0, r4
- ldr r1, _080112A0 @ =0x03000000
- movs r2, #8
- movs r3, #2
- bl sub_10708
- ldr r0, _080112A4 @ =0x060161E0
- movs r1, #0
- ldrsb r1, [r5, r1]
- lsls r1, r1, #0xb
- adds r1, r1, r4
- movs r2, #8
- movs r3, #2
- bl sub_10708
- b _080112BE
- .align 2, 0
-_08011290: .4byte gMain
-_08011294: .4byte 0x020028A4
-_08011298: .4byte gUnknown_2002888
-_0801129C: .4byte 0x060101E0
-_080112A0: .4byte 0x03000000
-_080112A4: .4byte 0x060161E0
-_080112A8:
- strh r1, [r5, #2]
- ldr r0, _080112DC @ =0x03000000
- movs r1, #0
- ldrsb r1, [r5, r1]
- lsls r1, r1, #0xb
- ldr r2, _080112E0 @ =0x060101E0
- adds r1, r1, r2
- movs r2, #8
- movs r3, #2
- bl sub_10708
-_080112BE:
- ldr r0, _080112E4 @ =gUnknown_2002888
- movs r2, #4
- ldrsh r1, [r0, r2]
- adds r3, r0, #0
- cmp r1, #0x14
- ble _08011306
- movs r2, #0
- ldrsb r2, [r3, r2]
- cmp r2, #1
- bne _080112EC
- ldr r0, _080112E8 @ =gMain
- strb r2, [r0, #0xd]
- adds r2, r0, #0
- b _080112F4
- .align 2, 0
-_080112DC: .4byte 0x03000000
-_080112E0: .4byte 0x060101E0
-_080112E4: .4byte gUnknown_2002888
-_080112E8: .4byte gMain
-_080112EC:
- ldr r1, _08011318 @ =gMain
- movs r0, #0
- strb r0, [r1, #0xd]
- adds r2, r1, #0
-_080112F4:
- ldr r1, _0801131C @ =0x086A96D4
- movs r0, #0
- ldrsb r0, [r3, r0]
- lsls r0, r0, #1
- adds r0, r0, r1
- ldrh r0, [r0]
- strb r0, [r3, #6]
- movs r0, #0xa
- strb r0, [r2, #3]
-_08011306:
- ldrh r0, [r3, #4]
- adds r0, #1
- strh r0, [r3, #4]
-_0801130C:
- bl sub_11968
- pop {r4, r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08011318: .4byte gMain
-_0801131C: .4byte 0x086A96D4
-
- thumb_func_start sub_11320
-sub_11320: @ 0x08011320
- push {r4, r5, r6, r7, lr}
- ldr r5, _080113A4 @ =gMain
- ldrh r1, [r5, #0x1c]
- movs r0, #0xf
- ands r0, r1
- ldr r2, _080113A8 @ =0x020028A4
- cmp r0, #0xf
- bne _0801133E
- movs r0, #1
- strb r0, [r2]
- ldr r1, _080113AC @ =gUnknown_2002888
- movs r0, #9
- strb r0, [r1, #6]
- movs r0, #0xb
- strb r0, [r5, #3]
-_0801133E:
- movs r4, #0
- ldrsb r4, [r2, r4]
- cmp r4, #0
- bne _08011410
- ldr r3, _080113AC @ =gUnknown_2002888
- ldrb r0, [r3, #7]
- cmp r0, #0
- bne _080113C0
- ldrh r0, [r3, #4]
- adds r0, #1
- movs r6, #0
- strh r0, [r3, #4]
- ldr r2, _080113B0 @ =0x086A9748
- movs r7, #2
- ldrsh r1, [r3, r7]
- adds r1, r1, r2
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _0801139C
- strh r4, [r3, #4]
- ldrh r0, [r3, #2]
- subs r0, #1
- strh r0, [r3, #2]
- lsls r0, r0, #0x10
- cmp r0, #0
- bge _0801138C
- strh r4, [r3, #2]
- strb r6, [r3]
- ldr r0, _080113B4 @ =gUnknown_202BE24
- movs r1, #1
- strb r1, [r0]
- movs r0, #1
- strb r0, [r3, #9]
- strb r6, [r3, #0xb]
- strb r0, [r5, #3]
-_0801138C:
- ldr r2, _080113B8 @ =0x0201C190
- ldr r1, _080113BC @ =0x086A9714
- movs r4, #2
- ldrsh r0, [r3, r4]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- str r0, [r2, #0x18]
-_0801139C:
- bl sub_1175C
- b _08011410
- .align 2, 0
-_080113A4: .4byte gMain
-_080113A8: .4byte 0x020028A4
-_080113AC: .4byte gUnknown_2002888
-_080113B0: .4byte 0x086A9748
-_080113B4: .4byte gUnknown_202BE24
-_080113B8: .4byte 0x0201C190
-_080113BC: .4byte 0x086A9714
-_080113C0:
- ldrh r0, [r3, #4]
- adds r0, #1
- strh r0, [r3, #4]
- ldr r2, _08011418 @ =0x086A9748
- movs r6, #2
- ldrsh r1, [r3, r6]
- adds r1, r1, r2
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- cmp r0, r1
- blt _0801140C
- strh r4, [r3, #4]
- ldrh r0, [r3, #2]
- subs r0, #1
- strh r0, [r3, #2]
- lsls r0, r0, #0x10
- cmp r0, #0
- bge _080113FC
- strh r4, [r3, #2]
- movs r0, #1
- strb r0, [r3]
- ldr r1, _0801141C @ =gUnknown_202BE24
- strb r0, [r1]
- strb r0, [r3, #9]
- movs r1, #0
- strb r1, [r3, #0xb]
- strb r0, [r5, #3]
-_080113FC:
- ldr r2, _08011420 @ =0x0202BE00
- ldr r1, _08011424 @ =0x086A9778
- movs r7, #2
- ldrsh r0, [r3, r7]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- str r0, [r2, #0x18]
-_0801140C:
- bl sub_11968
-_08011410:
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011418: .4byte 0x086A9748
-_0801141C: .4byte gUnknown_202BE24
-_08011420: .4byte 0x0202BE00
-_08011424: .4byte 0x086A9778
-
- thumb_func_start sub_11428
-sub_11428: @ 0x08011428
- push {lr}
- ldr r0, _0801143C @ =gUnknown_2002888
- ldrb r0, [r0, #7]
- cmp r0, #0
- bne _08011444
- ldr r0, _08011440 @ =sub_1175C + 1
- bl sub_FE04
- b _0801144A
- .align 2, 0
-_0801143C: .4byte gUnknown_2002888
-_08011440: .4byte sub_1175C + 1
-_08011444:
- ldr r0, _08011470 @ =sub_11968 + 1
- bl sub_FE04
-_0801144A:
- bl m4aMPlayAllStop
- bl sub_D10
- ldr r1, _08011474 @ =0x086A964C
- ldr r0, _08011478 @ =gUnknown_2002888
- ldrb r0, [r0, #6]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- lsls r0, r0, #1
- adds r0, r0, r1
- movs r1, #0
- ldrsh r0, [r0, r1]
- cmp r0, #8
- bne _08011480
- ldr r1, _0801147C @ =0x0202C588
- movs r0, #0
- b _08011484
- .align 2, 0
-_08011470: .4byte sub_11968 + 1
-_08011474: .4byte 0x086A964C
-_08011478: .4byte gUnknown_2002888
-_0801147C: .4byte 0x0202C588
-_08011480:
- ldr r1, _080114A4 @ =0x0202C588
- movs r0, #1
-_08011484:
- strh r0, [r1]
- ldr r1, _080114A8 @ =gAutoDisplayTitlescreenMenu
- movs r0, #0
- strb r0, [r1]
- ldr r1, _080114AC @ =0x086A964C
- ldr r0, _080114B0 @ =gUnknown_2002888
- ldrb r0, [r0, #6]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- lsls r0, r0, #1
- adds r0, r0, r1
- ldrh r0, [r0]
- bl sub_23C
- pop {r0}
- bx r0
- .align 2, 0
-_080114A4: .4byte 0x0202C588
-_080114A8: .4byte gAutoDisplayTitlescreenMenu
-_080114AC: .4byte 0x086A964C
-_080114B0: .4byte gUnknown_2002888
-
- thumb_func_start sub_114B4
-sub_114B4: @ 0x080114B4
- push {lr}
- ldr r0, _080114E8 @ =sub_11640 + 1
- bl sub_FE04
- bl m4aMPlayAllStop
- bl sub_D10
- ldr r1, _080114EC @ =0x0202C588
- movs r0, #1
- strh r0, [r1]
- ldr r1, _080114F0 @ =gAutoDisplayTitlescreenMenu
- movs r0, #0
- strb r0, [r1]
- ldr r1, _080114F4 @ =0x086A964C
- ldr r0, _080114F8 @ =gUnknown_2002888
- ldrb r0, [r0, #6]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- lsls r0, r0, #1
- adds r0, r0, r1
- ldrh r0, [r0]
- bl sub_23C
- pop {r0}
- bx r0
- .align 2, 0
-_080114E8: .4byte sub_11640 + 1
-_080114EC: .4byte 0x0202C588
-_080114F0: .4byte gAutoDisplayTitlescreenMenu
-_080114F4: .4byte 0x086A964C
-_080114F8: .4byte gUnknown_2002888
-
- thumb_func_start sub_114FC
-sub_114FC: @ 0x080114FC
- push {r4, lr}
- ldr r4, _0801156C @ =gMain
- ldrh r2, [r4, #0x1c]
- movs r1, #0x88
- lsls r1, r1, #2
- adds r0, r1, #0
- ands r0, r2
- cmp r0, r1
- bne _08011546
- ldrh r1, [r4, #0x18]
- movs r0, #0x80
- lsls r0, r0, #1
- ands r0, r1
- cmp r0, #0
- beq _08011546
- ldr r2, _08011570 @ =0x020028A1
- movs r0, #0x28
- strb r0, [r2]
- ldr r1, _08011574 @ =0x020028A0
- ldrb r0, [r1]
- adds r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #3
- bne _08011546
- movs r0, #0
- strb r0, [r1]
- strb r0, [r2]
- movs r0, #0x68
- bl m4aSongNumStart
- ldr r1, _08011578 @ =gUnknown_2002888
- movs r0, #1
- strb r0, [r1, #0x11]
- movs r0, #9
- strb r0, [r4, #3]
-_08011546:
- ldr r2, _08011570 @ =0x020028A1
- ldrb r1, [r2]
- movs r0, #0
- ldrsb r0, [r2, r0]
- cmp r0, #0
- ble _08011564
- subs r0, r1, #1
- strb r0, [r2]
- lsls r0, r0, #0x18
- cmp r0, #0
- bgt _08011564
- movs r1, #0
- strb r1, [r2]
- ldr r0, _08011574 @ =0x020028A0
- strb r1, [r0]
-_08011564:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801156C: .4byte gMain
-_08011570: .4byte 0x020028A1
-_08011574: .4byte 0x020028A0
-_08011578: .4byte gUnknown_2002888
-
thumb_func_start sub_1157C
sub_1157C: @ 0x0801157C
push {r4, r5, r6, r7, lr}
@@ -1372,7 +48,7 @@ sub_1157C: @ 0x0801157C
strb r0, [r7]
movs r0, #0x65
bl m4aSongNumStart
- ldr r1, _080115F4 @ =gUnknown_2002888
+ ldr r1, _080115F4 @ =gTitlescreen
movs r0, #5
strb r0, [r1, #6]
ldrb r0, [r4, #3]
@@ -1385,7 +61,7 @@ _080115E4: .4byte 0x086A97AC
_080115E8: .4byte 0x020028A2
_080115EC: .4byte gMain
_080115F0: .4byte 0x020028A3
-_080115F4: .4byte gUnknown_2002888
+_080115F4: .4byte gTitlescreen
_080115F8:
movs r0, #0xa
_080115FA:
@@ -1432,7 +108,7 @@ sub_11640: @ 0x08011640
mov r7, sb
mov r6, r8
push {r6, r7}
- ldr r4, _08011744 @ =gUnknown_2002888
+ ldr r4, _08011744 @ =gTitlescreen
movs r0, #8
ldrsb r0, [r4, r0]
movs r1, #0xb8
@@ -1561,7 +237,7 @@ _08011730:
pop {r0}
bx r0
.align 2, 0
-_08011744: .4byte gUnknown_2002888
+_08011744: .4byte gTitlescreen
_08011748: .4byte 0x0200B3B8
_0801174C: .4byte 0x086A96E4
_08011750: .4byte 0x03005000
@@ -1590,7 +266,7 @@ sub_1175C: @ 0x0801175C
adds r1, #2
ldrh r0, [r2, #0x3a]
strh r0, [r1]
- ldr r3, _0801181C @ =gUnknown_2002888
+ ldr r3, _0801181C @ =gTitlescreen
movs r0, #0xa
ldrsb r0, [r3, r0]
movs r1, #0xb8
@@ -1663,7 +339,7 @@ _080117F2:
_08011810: .4byte gMain
_08011814: .4byte 0x00000808
_08011818: .4byte 0x04000050
-_0801181C: .4byte gUnknown_2002888
+_0801181C: .4byte gTitlescreen
_08011820: .4byte 0x0201C190
_08011824: .4byte 0x03005000
_08011828:
@@ -1716,7 +392,7 @@ _0801187C:
cmp r0, #1
bne _080118D8
ldr r2, _08011958 @ =0x086A9684
- ldr r1, _0801195C @ =gUnknown_2002888
+ ldr r1, _0801195C @ =gTitlescreen
movs r0, #0
ldrsb r0, [r1, r0]
lsls r0, r0, #2
@@ -1763,7 +439,7 @@ _080118D8:
cmp r0, #1
bne _08011930
ldr r2, _08011964 @ =0x086A9694
- ldr r1, _0801195C @ =gUnknown_2002888
+ ldr r1, _0801195C @ =gTitlescreen
movs r0, #0
ldrsb r0, [r1, r0]
lsls r0, r0, #2
@@ -1822,7 +498,7 @@ _08011930:
_08011950: .4byte 0x000001FF
_08011954: .4byte 0xFFFFFE00
_08011958: .4byte 0x086A9684
-_0801195C: .4byte gUnknown_2002888
+_0801195C: .4byte gTitlescreen
_08011960: .4byte 0x03005000
_08011964: .4byte 0x086A9694
@@ -1848,7 +524,7 @@ sub_11968: @ 0x08011968
adds r1, #2
ldrh r0, [r2, #0x3a]
strh r0, [r1]
- ldr r3, _08011A28 @ =gUnknown_2002888
+ ldr r3, _08011A28 @ =gTitlescreen
movs r0, #0xa
ldrsb r0, [r3, r0]
movs r1, #0xb8
@@ -1921,7 +597,7 @@ _080119FE:
_08011A1C: .4byte gMain
_08011A20: .4byte 0x00000808
_08011A24: .4byte 0x04000050
-_08011A28: .4byte gUnknown_2002888
+_08011A28: .4byte gTitlescreen
_08011A2C: .4byte 0x0202BE00
_08011A30: .4byte 0x03005000
_08011A34:
@@ -1974,7 +650,7 @@ _08011A88:
cmp r0, #1
bne _08011AE4
ldr r2, _08011B64 @ =0x086A96AC
- ldr r1, _08011B68 @ =gUnknown_2002888
+ ldr r1, _08011B68 @ =gTitlescreen
movs r0, #0
ldrsb r0, [r1, r0]
lsls r0, r0, #2
@@ -2021,7 +697,7 @@ _08011AE4:
cmp r0, #1
bne _08011B3C
ldr r2, _08011B70 @ =0x086A96C0
- ldr r1, _08011B68 @ =gUnknown_2002888
+ ldr r1, _08011B68 @ =gTitlescreen
movs r0, #0
ldrsb r0, [r1, r0]
lsls r0, r0, #2
@@ -2080,7 +756,7 @@ _08011B3C:
_08011B5C: .4byte 0x000001FF
_08011B60: .4byte 0xFFFFFE00
_08011B64: .4byte 0x086A96AC
-_08011B68: .4byte gUnknown_2002888
+_08011B68: .4byte gTitlescreen
_08011B6C: .4byte 0x03005000
_08011B70: .4byte 0x086A96C0
diff --git a/data/rom.s b/data/rom.s
index a827f7d..a039f44 100755
--- a/data/rom.s
+++ b/data/rom.s
@@ -85,7 +85,114 @@ gMainFuncs:: @ 0x086A4AD8
.4byte FieldSelectMain
.4byte sub_25A4_Main
-.incbin "baserom.gba", 0x6A4B08, 0x6B159C - 0x6A4B08
+.incbin "baserom.gba", 0x6A4B08, 0x6A964C - 0x6A4B08
+
+gUnknown_086A964C:: @ 0x086A964C
+ .2byte 0x0002
+ .2byte 0x000A
+ .2byte 0x0005
+ .2byte 0x0004
+ .2byte 0x0008
+ .2byte 0x0007
+ .2byte 0x0001
+ .2byte 0x0003
+ .2byte 0x0009
+ .2byte 0x0000
+ .2byte 0x000B
+
+gUnknown_086A9662:: @ 0x086A9662
+ .byte 0x14, 0x05, 0x14, 0x05
+
+gUnknown_086A9666:: @ 0x086A9666
+ .byte 0x01, 0x05
+ .byte 0x03, 0x05
+ .byte 0x01, 0x05
+ .byte 0x03, 0x05
+ .byte 0x01, 0x05
+ .byte 0x03, 0x05
+
+gUnknown_086A9672:: @ 0x086A9672
+ .byte 0x00, 0x10
+ .byte 0x01, 0x04
+ .byte 0x02, 0x10
+ .byte 0x01, 0x04
+ .byte 0x00, 0x10
+ .byte 0x01, 0x04
+ .byte 0x02, 0x10
+ .byte 0x01, 0x04
+ .byte 0x00, 0x00
+
+.incbin "baserom.gba", 0x6A9684, 0x6A96A4 - 0x6A9684
+
+gUnknown_086A96A4:: @ 0x086A96A4
+ .2byte 0x0001
+ .2byte 0x0002
+ .2byte 0x0003
+ .2byte 0x0004
+
+.incbin "baserom.gba", 0x6A96AC, 0x6A96D4 - 0x6A96AC
+
+gUnknown_086A96D4:: @ 0x086A96D4
+ .2byte 0x0001
+ .2byte 0x0000
+ .2byte 0x0002
+ .2byte 0x0003
+ .2byte 0x0004
+
+.incbin "baserom.gba", 0x6A96DE, 0x6A96F8 - 0x6A96DE
+
+gUnknown_086A96F8:: @ 0x086A96F8
+ .4byte 0x086A8AC0
+ .4byte 0x086A8ACA
+ .4byte 0x086A8AD4
+ .4byte 0x086A8ADE
+ .4byte 0x086A8AE8
+ .4byte 0x086A8AF2
+ .4byte 0x086A80A8
+
+gUnknown_086A9714:: @ 0x086A9714
+ .4byte 0x086A80A8
+ .4byte 0x086A8122
+ .4byte 0x086A81B4
+ .4byte 0x086A823E
+ .4byte 0x086A8308
+ .4byte 0x086A83E2
+ .4byte 0x086A84CC
+ .4byte 0x086A85C6
+ .4byte 0x086A86C8
+ .4byte 0x086A87BA
+ .4byte 0x086A88B4
+ .4byte 0x086A89AE
+ .4byte 0x00000000
+
+gUnknown_086A9748:: @ 0x086A9748
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0
+
+gUnknown_086A975C:: @ 0x086A975C
+ .4byte 0x086A95FE
+ .4byte 0x086A9608
+ .4byte 0x086A9612
+ .4byte 0x086A961C
+ .4byte 0x086A9626
+ .4byte 0x086A9630
+ .4byte 0x086A8BB6
+
+gUnknown_086A9778:: @ 0x086A9778
+ .4byte 0x086A8BB6
+ .4byte 0x086A8C30
+ .4byte 0x086A8CC2
+ .4byte 0x086A8D4C
+ .4byte 0x086A8E16
+ .4byte 0x086A8EF0
+ .4byte 0x086A8FDA
+ .4byte 0x086A90D4
+ .4byte 0x086A91DE
+ .4byte 0x086A92E8
+ .4byte 0x086A93EA
+ .4byte 0x086A94F4
+ .4byte 0x00000000
+
+.incbin "baserom.gba", 0x6A97AC, 0x6B159C - 0x6A97AC
gMonHatchSpriteGroupPals:: @ 0x086B159C
.4byte gMonHatchSpriteGroup0_Pals
diff --git a/include/m4a.h b/include/m4a.h
index 5953794..1a68f8c 100755
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -12,15 +12,13 @@ void m4aSongNumStart(u16);
void m4aSongNumStop(u16 n);
void m4aMPlayAllStop(void);
void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo);
+void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo);
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct MusicPlayerInfo gMPlayInfo_SE1;
-extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern struct MusicPlayerInfo gMPlayInfo_SE3;
+extern struct MusicPlayerInfo gMPlayInfo_02032EE0;
extern struct SoundInfo gSoundInfo;
#endif //GUARD_M4A_H
diff --git a/include/main.h b/include/main.h
index 6cc29c5..0d4de6f 100755
--- a/include/main.h
+++ b/include/main.h
@@ -7,16 +7,23 @@ typedef void (*StateFunc)(void);
struct Main
{
- /*0x00*/u8 filler0[0x2];
- /*0x02*/u8 mainState;
- /*0x03*/u8 subState;
- /*0x04*/u8 filler4[0x12];
- /*0x16*/u16 unk16;
- /*0x18*/u8 filler18[0x28];
- /*0x40*/int unk40;
+ /*0x00*/ u8 filler0[0x2];
+ /*0x02*/ u8 mainState;
+ /*0x03*/ u8 subState;
+ /*0x04*/ u8 filler4[0x9];
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 fillerE[0x8];
+ /*0x16*/ u16 unk16;
+ /*0x18*/ u16 newKeys;
+ /*0x1A*/ u16 releasedKeys;
+ /*0x1C*/ u16 heldKeys;
+ /*0x1E*/ u8 filler1E[0x22];
+ /*0x40*/ int unk40;
};
extern struct Main gMain;
extern StateFunc gMainFuncs[];
+void SetMainGameState(u16);
+
#endif // GUARD_MAIN_H
diff --git a/include/titlescreen.h b/include/titlescreen.h
index 0fcbe8d..65d790e 100755
--- a/include/titlescreen.h
+++ b/include/titlescreen.h
@@ -1,16 +1,38 @@
#ifndef GUARD_TITLESCREEN_H
#define GUARD_TITLESCREEN_H
-struct UnkStruct2002888
+struct TitlescreenStruct
{
- /*0x00*/u8 filler0[0x9];
- /*0x09*/u8 unk9;
- /*0x0A*/u8 fillerA[0x1];
- /*0x0B*/u8 unkB;
+ /*0x00*/ s8 menuCursorIndex;
+ /*0x02*/ s16 unk2;
+ /*0x04*/ s16 unk4;
+ /*0x06*/ s8 unk6;
+ /*0x07*/ u8 unk7;
+ /*0x08*/ s8 unk8;
+ /*0x09*/ u8 unk9;
+ /*0x0A*/ u8 unkA;
+ /*0x0B*/ u8 unkB;
+ /*0x0C*/ u8 unkC;
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 unkE;
+ /*0x0F*/ u8 unkF;
+ /*0x10*/ u8 unk10;
+ /*0x11*/ u8 unk11;
+ /*0x12*/ s16 idleFadeoutCounter;
+ /*0x14*/ s16 idleFramesCounter;
};
-extern struct UnkStruct2002888 gUnknown_2002888;
+extern struct TitlescreenStruct gTitlescreen;
extern s8 gAutoDisplayTitlescreenMenu;
extern u8 gUnknown_202BE24;
+extern u16 gUnknown_0202C588;
+extern s8 gUnknown_020028A0;
+extern s8 gUnknown_020028A1;
+extern u8 gUnknown_020028A2;
+extern u8 gUnknown_020028A3;
+extern s8 gUnknown_020028A4;
+extern s8 gUnknown_020028A5;
+extern const u8 *gUnknown_0201C190[];
+extern const u8 *gUnknown_0202BE00[];
#endif // GUARD_TITLESCREEN_H
diff --git a/src/main.c b/src/main.c
index 1d02a13..1f5dc58 100755
--- a/src/main.c
+++ b/src/main.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "main.h"
-void sub_23C(u8 mainState)
+void SetMainGameState(u16 mainState)
{
gMain.mainState = mainState;
gMain.subState = 0;
diff --git a/src/titlescreen.c b/src/titlescreen.c
index 9de231d..c3e51a1 100755
--- a/src/titlescreen.c
+++ b/src/titlescreen.c
@@ -3,6 +3,9 @@
#include "m4a.h"
#include "main.h"
+extern u8 gUnknown_03000000[];
+
+
extern StateFunc gTitlescreenStateFuncs[];
extern const u8 gTitlescreenBg_Gfx[];
extern const u16 gTitlescreenBg_Pals[];
@@ -12,14 +15,39 @@ extern const u8 gTitlescreenSpritesSavedGame_Gfx[];
extern const u8 gTitlescreenSpritesNoSavedGame_Gfx[];
extern const u8 gGBAButtonIcons_Pals[];
extern const u8 gOptionsSprites_Gfx[];
+extern const u8 *const gUnknown_086A975C[7];
+extern const u8 *const gUnknown_086A96F8[7];
+extern const s16 gUnknown_086A964C[];
+extern const s8 gUnknown_086A9662[];
+extern const s8 gUnknown_086A9666[6][2];
+extern const s8 gUnknown_086A9748[];
+extern const u8 *const gUnknown_086A9714[];
+extern const u8 *const gUnknown_086A9778[];
+extern const s8 gUnknown_086A9672[9][2];
+extern const u16 gUnknown_086A96A4[];
+extern const u16 gUnknown_086A96D4[];
+extern void sub_2B4(void);
extern void sub_438(void);
extern void sub_CBC(void);
+extern void sub_D10(void);
+extern void sub_FE04(void (*func)(void));
extern void sub_FD5C(void (*func)(void));
+extern void sub_10708(void*, void*, u16, s16);
extern void sub_11640(void);
extern void sub_52C44(void);
extern void sub_10AC0(void);
+extern void sub_1157C(void);
+extern void sub_1175C(void);
+extern void sub_11968(void);
+extern void sub_11B74(void);
+
+static void sub_114FC(void);
+
+// If the user doesn't press any buttons at the title screen,
+// it will transition to a demo gameplay experience.
+#define NUM_IDLE_FRAMES 1800
void TitlescreenMain(void)
@@ -63,8 +91,8 @@ void LoadTitlescreenGraphics(void)
if (autoDisplayMenu == 1)
{
gUnknown_202BE24 = 0;
- gUnknown_2002888.unk9 = 0;
- gUnknown_2002888.unkB = autoDisplayMenu;
+ gTitlescreen.unk9 = 0;
+ gTitlescreen.unkB = autoDisplayMenu;
gMain.subState = 3;
sub_CBC();
sub_FD5C(NULL);
@@ -78,3 +106,553 @@ void LoadTitlescreenGraphics(void)
m4aSongNumStart(1);
}
+
+void sub_10AC0(void)
+{
+ int i;
+
+ gTitlescreen.unk4 = 0;
+ gTitlescreen.unk2 = 0;
+ gTitlescreen.unk6 = 0;
+ gTitlescreen.unk8 = 0;
+ gTitlescreen.unk10 = 4;
+ gTitlescreen.unk9 = 1;
+ gTitlescreen.unk11 = 0;
+ gTitlescreen.unkA = 6;
+ gTitlescreen.unkC = 0;
+ gTitlescreen.unkE = 3;
+ gTitlescreen.unkB = 0;
+ gTitlescreen.unkD = 0;
+ gTitlescreen.unkF = 0;
+ gUnknown_0202C588 = 1;
+ gUnknown_020028A0 = 0;
+ gUnknown_020028A1 = 0;
+ gUnknown_020028A2 = 0;
+ gUnknown_020028A3 = 0;
+
+ if (gMain.unk40 == 1)
+ {
+ for (i = 0; i < 7; i++)
+ gUnknown_0202BE00[i] = gUnknown_086A975C[i];
+
+ gTitlescreen.menuCursorIndex = 1;
+ gTitlescreen.unk7 = 1;
+ }
+ else
+ {
+ for (i = 0; i < 7; i++)
+ gUnknown_0201C190[i] = gUnknown_086A96F8[i];
+
+ gTitlescreen.menuCursorIndex = 0;
+ gTitlescreen.unk7 = 0;
+ gMain.unkD = 0;
+ }
+
+ gTitlescreen.idleFramesCounter = 0;
+ gTitlescreen.idleFadeoutCounter = 1;
+ gUnknown_020028A4 = 0;
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ gUnknown_020028A5 = 1;
+ else
+ gUnknown_020028A5 = 0;
+
+ gUnknown_202BE24 = 0;
+}
+
+void sub_10BB8(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ if (!gUnknown_020028A5)
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 11;
+ }
+ }
+ else
+ {
+ gUnknown_020028A5 = 0;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9662[gTitlescreen.unk8])
+ {
+ gTitlescreen.unk4 = 0;
+ if (++gTitlescreen.unk8 > 3)
+ gTitlescreen.unk8 = 0;
+ }
+
+ if (gMain.heldKeys & KEYS_MASK)
+ gTitlescreen.idleFramesCounter = 0;
+
+ if (gMain.newKeys & (A_BUTTON | START_BUTTON))
+ {
+ m4aSongNumStart(0x65);
+ gTitlescreen.unk4 = 0;
+ gTitlescreen.unk2 = 0;
+ gMain.subState = 2;
+ }
+
+ sub_114FC();
+ sub_1157C();
+
+ gTitlescreen.idleFramesCounter++;
+ if (gTitlescreen.idleFramesCounter > NUM_IDLE_FRAMES)
+ {
+ if (gTitlescreen.idleFramesCounter % 10 == 0)
+ {
+ gTitlescreen.idleFadeoutCounter++;
+ m4aMPlayVolumeControl(&gMPlayInfo_02032EE0, 0xFFFF, 0x100 / gTitlescreen.idleFadeoutCounter);
+ }
+
+ if (gTitlescreen.idleFadeoutCounter > 9)
+ {
+ gTitlescreen.idleFramesCounter = 0;
+ gTitlescreen.unk6 = 7;
+ gMain.subState = 11;
+ }
+ }
+ }
+
+ sub_11640();
+}
+
+void sub_10CF0(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 11;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9666[gTitlescreen.unk2][1])
+ {
+ gTitlescreen.unk4 = 0;
+ gTitlescreen.unk8 = gUnknown_086A9666[gTitlescreen.unk2][0];
+ if (++gTitlescreen.unk2 > 5)
+ {
+ gTitlescreen.unk2 = 0;
+ gUnknown_202BE24 = 0;
+ gTitlescreen.unk9 = 0;
+ gTitlescreen.unkB = 1;
+ gMain.subState = 3;
+ }
+ }
+ }
+
+ sub_11640();
+}
+
+void sub_10D84(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 10;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ m4aSongNumStart(0x65);
+ sub_11B74();
+ sub_2B4();
+ m4aMPlayAllStop();
+ sub_D10();
+ gMain.subState = 0;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ m4aSongNumStart(0x66);
+ gTitlescreen.unk11 = 0;
+ gMain.subState = 1;
+ }
+ }
+
+ sub_11640();
+}
+
+void sub_10E00(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 11;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ if (!gTitlescreen.unk7)
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ {
+ gTitlescreen.unk4 = 0;
+ gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2];
+ if (++gTitlescreen.unk2 > 11)
+ {
+ gTitlescreen.unk2 = 0;
+ gTitlescreen.unkD = 1;
+ gTitlescreen.unkF = 1;
+ gMain.subState = 4;
+ }
+ }
+
+ sub_1175C();
+ }
+ else
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ {
+ gTitlescreen.unk4 = 0;
+ gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2];
+ if (++gTitlescreen.unk2 > 11)
+ {
+ gTitlescreen.unk2 = 0;
+ gTitlescreen.unkD = 1;
+ gTitlescreen.unkF = 1;
+ gMain.subState = 5;
+ }
+ }
+
+ sub_11968();
+ }
+ }
+}
+
+void sub_10EF4(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 10;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9672[gTitlescreen.unk2][1])
+ {
+ gTitlescreen.unk4 = 0;
+ if (++gTitlescreen.unk2 > 6)
+ gTitlescreen.unk2 = 0;
+
+ gTitlescreen.unkC = gUnknown_086A9672[gTitlescreen.unk2][0];
+ gTitlescreen.unkE = gUnknown_086A9672[gTitlescreen.unk2][0] + 3;
+ }
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ m4aSongNumStart(0x67);
+ if (--gTitlescreen.menuCursorIndex < 0)
+ gTitlescreen.menuCursorIndex = 3;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ m4aSongNumStart(0x67);
+ if (++gTitlescreen.menuCursorIndex > 3)
+ gTitlescreen.menuCursorIndex = 0;
+ }
+
+ if (gMain.newKeys & (A_BUTTON | START_BUTTON))
+ {
+ m4aSongNumStart(0x65);
+ gTitlescreen.unk4 = 0;
+ gTitlescreen.unk2 = 0;
+ gMain.subState = 7;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ m4aSongNumStart(0x66);
+ gTitlescreen.unk4 = 0;
+ gTitlescreen.unk2 = 12;
+ gTitlescreen.unkD = 0;
+ gTitlescreen.unkF = 0;
+ gMain.subState = 6;
+ }
+
+ sub_1157C();
+ }
+
+ sub_1175C();
+}
+
+void sub_11020(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 11;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ u16 unk4 = gTitlescreen.unk4;
+ u16 mask = 0x3;
+ if (!(unk4 & mask))
+ {
+ if (!gTitlescreen.unk2)
+ {
+ gTitlescreen.unk2 = 1;
+ sub_10708((void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), gUnknown_03000000, 8, 2);
+ sub_10708((void *)(OBJ_VRAM0 + 0x61E0), (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2);
+ }
+ else
+ {
+ gTitlescreen.unk2 = 0;
+ sub_10708(gUnknown_03000000, (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2);
+ }
+ }
+
+ if (gTitlescreen.unk4 > 20)
+ {
+ gMain.unkD = 0;
+ gTitlescreen.unk6 = gUnknown_086A96A4[gTitlescreen.menuCursorIndex];
+ gMain.subState = 10;
+ }
+
+ gTitlescreen.unk4++;
+ }
+
+ sub_1175C();
+}
+
+void sub_110FC(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 10;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9672[gTitlescreen.unk2][1])
+ {
+ gTitlescreen.unk4 = 0;
+ if (++gTitlescreen.unk2 > 6)
+ gTitlescreen.unk2 = 0;
+
+ gTitlescreen.unkC = gUnknown_086A9672[gTitlescreen.unk2][0];
+ gTitlescreen.unkE = gUnknown_086A9672[gTitlescreen.unk2][0] + 3;
+ }
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ m4aSongNumStart(0x67);
+ if (--gTitlescreen.menuCursorIndex < 0)
+ gTitlescreen.menuCursorIndex = 4;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ m4aSongNumStart(0x67);
+ if (++gTitlescreen.menuCursorIndex > 4)
+ gTitlescreen.menuCursorIndex = 0;
+ }
+
+ if (gMain.newKeys & (A_BUTTON | START_BUTTON))
+ {
+ m4aSongNumStart(0x65);
+ gTitlescreen.unk4 = 0;
+ gTitlescreen.unk2 = 0;
+ gMain.subState = 8;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ m4aSongNumStart(0x66);
+ gTitlescreen.unk4 = 0;
+ gTitlescreen.unk2 = 12;
+ gTitlescreen.unkD = 0;
+ gTitlescreen.unkF = 0;
+ gMain.subState = 6;
+ }
+
+ sub_1157C();
+ }
+
+ sub_11968();
+}
+
+void sub_11228(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 11;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ u16 unk4 = gTitlescreen.unk4;
+ u16 mask = 0x3;
+ if (!(unk4 & mask))
+ {
+ if (!gTitlescreen.unk2)
+ {
+ gTitlescreen.unk2 = 1;
+ sub_10708((void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), gUnknown_03000000, 8, 2);
+ sub_10708((void *)(OBJ_VRAM0 + 0x61E0), (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2);
+ }
+ else
+ {
+ gTitlescreen.unk2 = 0;
+ sub_10708(gUnknown_03000000, (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2);
+ }
+ }
+
+ if (gTitlescreen.unk4 > 20)
+ {
+ if (gTitlescreen.menuCursorIndex == 1)
+ gMain.unkD = 1;
+ else
+ gMain.unkD = 0;
+
+ gTitlescreen.unk6 = gUnknown_086A96D4[gTitlescreen.menuCursorIndex];
+ gMain.subState = 10;
+ }
+
+ gTitlescreen.unk4++;
+ }
+
+ sub_11968();
+}
+
+void sub_11320(void)
+{
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
+ {
+ gUnknown_020028A4 = 1;
+ gTitlescreen.unk6 = 9;
+ gMain.subState = 11;
+ }
+
+ if (!gUnknown_020028A4)
+ {
+ if (!gTitlescreen.unk7)
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ {
+ gTitlescreen.unk4 = 0;
+ if (--gTitlescreen.unk2 < 0)
+ {
+ gTitlescreen.unk2 = 0;
+ gTitlescreen.menuCursorIndex = 0;
+ gUnknown_202BE24 = 1;
+ gTitlescreen.unk9 = 1;
+ gTitlescreen.unkB = 0;
+ gMain.subState = 1;
+ }
+
+ gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2];
+ }
+
+ sub_1175C();
+ }
+ else
+ {
+ gTitlescreen.unk4++;
+ if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ {
+ gTitlescreen.unk4 = 0;
+ if (--gTitlescreen.unk2 < 0)
+ {
+ gTitlescreen.unk2 = 0;
+ gTitlescreen.menuCursorIndex = 1;
+ gUnknown_202BE24 = 1;
+ gTitlescreen.unk9 = 1;
+ gTitlescreen.unkB = 0;
+ gMain.subState = 1;
+ }
+
+ gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2];
+ }
+
+ sub_11968();
+ }
+ }
+}
+
+void sub_11428(void)
+{
+ if (!gTitlescreen.unk7)
+ sub_FE04(sub_1175C);
+ else
+ sub_FE04(sub_11968);
+
+ m4aMPlayAllStop();
+ sub_D10();
+
+ if (gUnknown_086A964C[gTitlescreen.unk6] == 8)
+ gUnknown_0202C588 = 0;
+ else
+ gUnknown_0202C588 = 1;
+
+ gAutoDisplayTitlescreenMenu = 0;
+ SetMainGameState(gUnknown_086A964C[gTitlescreen.unk6]);
+}
+
+void sub_114B4(void)
+{
+ sub_FE04(sub_11640);
+ m4aMPlayAllStop();
+ sub_D10();
+ gUnknown_0202C588 = 1;
+ gAutoDisplayTitlescreenMenu = 0;
+ SetMainGameState(gUnknown_086A964C[gTitlescreen.unk6]);
+}
+
+static void sub_114FC(void)
+{
+ // To delete save file, press R_BUTTON 3 times while holding L_BUTTON And DPAD_LEFT.
+ if ((gMain.heldKeys & (L_BUTTON | DPAD_LEFT)) == (L_BUTTON | DPAD_LEFT))
+ {
+ if (gMain.newKeys & R_BUTTON)
+ {
+ gUnknown_020028A1 = 40;
+ if (++gUnknown_020028A0 == 3)
+ {
+ gUnknown_020028A0 = 0;
+ gUnknown_020028A1 = 0;
+ m4aSongNumStart(0x68);
+ gTitlescreen.unk11 = 1;
+ gMain.subState = 9;
+ }
+ }
+ }
+
+ if (gUnknown_020028A1 > 0)
+ {
+ if (--gUnknown_020028A1 <= 0)
+ {
+ gUnknown_020028A1 = 0;
+ gUnknown_020028A0 = 0;
+ }
+ }
+}
diff --git a/sym_bss.txt b/sym_bss.txt
index aab8938..529aaaa 100755
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -1,3 +1,5 @@
+gUnknown_03000000: @ 0x3000000
+
.space 0x7400
SoundMainRAM_Buffer: @ 0x3007400
diff --git a/sym_ewram.txt b/sym_ewram.txt
index c4d83ec..9e3af70 100755
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1,8 +1,27 @@
.space 0x2888
-gUnknown_2002888: @ 0x2002888
+gTitlescreen: @ 0x2002888
+ .space 0x18
- .space 0xD0
+gUnknown_020028A0: @ 0x20028A0
+ .space 0x1
+
+gUnknown_020028A1: @ 0x20028A1
+ .space 0x1
+
+gUnknown_020028A2: @ 0x20028A2
+ .space 0x1
+
+gUnknown_020028A3: @ 0x20028A3
+ .space 0x1
+
+gUnknown_020028A4: @ 0x20028A4
+ .space 0x1
+
+gUnknown_020028A5: @ 0x20028A5
+ .space 0x1
+
+ .space 0xB2
gUnknown_02002958: @ 0x2002958
@@ -19,12 +38,26 @@ gMain: @ 0x200B0C0
gAutoDisplayTitlescreenMenu: @ 0x201A4B4
.space 4
- .space 0x1196C
+ .space 0x1CD8
+
+gUnknown_0201C190: @ 0x201C190
+ .space 0x1C
+
+ .space 0xFC54
+
+gUnknown_0202BE00: @ 0x202BE00
+ .space 0x1C
+
+ .space 0x8
gUnknown_202BE24: @ 0x202BE24
.space 4
- .space 0x5D08
+ .space 0x760
+
+gUnknown_0202C588: @ 0x202C588
+
+ .space 0x55A8
gSoundInfo: @ 0x2031B30
@@ -48,6 +81,10 @@ gPokemonCryTracks: @ 0x2032D60
gPokemonCrySong: @ 0x2032EA0
- .space 0x100
+ .space 0x40
+
+gMPlayInfo_02032EE0: @ 0x2032EE0
+
+ .space 0xC0
gMPlayMemAccArea: @ 0x2032FA0