summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/titlescreen.s98
-rwxr-xr-xdata/rom.s12
-rwxr-xr-xinclude/titlescreen.h8
-rwxr-xr-xsrc/titlescreen.c64
-rwxr-xr-xsym_ewram.txt8
5 files changed, 70 insertions, 120 deletions
diff --git a/asm/titlescreen.s b/asm/titlescreen.s
index fde0f64..47f2c77 100755
--- a/asm/titlescreen.s
+++ b/asm/titlescreen.s
@@ -4,104 +4,6 @@
.text
- thumb_func_start sub_1157C
-sub_1157C: @ 0x0801157C
- push {r4, r5, r6, r7, lr}
- ldr r6, _080115E4 @ =0x086A97AC
- ldr r3, _080115E8 @ =0x020028A2
- movs r0, #0
- ldrsb r0, [r3, r0]
- lsls r0, r0, #1
- adds r0, r0, r6
- ldrh r5, [r0]
- ldr r2, _080115EC @ =gMain
- ldrh r1, [r2, #0x1c]
- movs r0, #0x10
- ands r0, r1
- adds r4, r2, #0
- ldr r7, _080115F0 @ =0x020028A3
- cmp r0, #0
- beq _080115FC
- ldrh r1, [r4, #0x18]
- lsls r0, r5, #0x10
- asrs r0, r0, #0x10
- ands r1, r0
- cmp r1, r0
- bne _080115FC
- movs r0, #0x28
- strb r0, [r7]
- ldrb r0, [r3]
- adds r0, #1
- strb r0, [r3]
- movs r0, #0
- ldrsb r0, [r3, r0]
- lsls r0, r0, #1
- adds r0, r0, r6
- movs r2, #0
- ldrsh r1, [r0, r2]
- movs r0, #1
- rsbs r0, r0, #0
- cmp r1, r0
- bne _080115FC
- movs r0, #0
- strb r0, [r3]
- strb r0, [r7]
- movs r0, #0x65
- bl m4aSongNumStart
- ldr r1, _080115F4 @ =gTitlescreen
- movs r0, #5
- strb r0, [r1, #6]
- ldrb r0, [r4, #3]
- cmp r0, #1
- bne _080115F8
- movs r0, #0xb
- b _080115FA
- .align 2, 0
-_080115E4: .4byte 0x086A97AC
-_080115E8: .4byte 0x020028A2
-_080115EC: .4byte gMain
-_080115F0: .4byte 0x020028A3
-_080115F4: .4byte gTitlescreen
-_080115F8:
- movs r0, #0xa
-_080115FA:
- strb r0, [r4, #3]
-_080115FC:
- ldrh r0, [r4, #0x18]
- ldr r1, _08011638 @ =0x000003FF
- ands r0, r1
- lsls r1, r5, #0x10
- asrs r1, r1, #0x10
- bics r0, r1
- cmp r0, #0
- beq _08011614
- movs r1, #0
- strb r1, [r7]
- ldr r0, _0801163C @ =0x020028A2
- strb r1, [r0]
-_08011614:
- ldrb r1, [r7]
- movs r0, #0
- ldrsb r0, [r7, r0]
- cmp r0, #0
- ble _08011630
- subs r0, r1, #1
- strb r0, [r7]
- lsls r0, r0, #0x18
- cmp r0, #0
- bgt _08011630
- movs r1, #0
- strb r1, [r7]
- ldr r0, _0801163C @ =0x020028A2
- strb r1, [r0]
-_08011630:
- pop {r4, r5, r6, r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011638: .4byte 0x000003FF
-_0801163C: .4byte 0x020028A2
-
thumb_func_start sub_11640
sub_11640: @ 0x08011640
push {r4, r5, r6, r7, lr}
diff --git a/data/rom.s b/data/rom.s
index a039f44..1c6d75f 100755
--- a/data/rom.s
+++ b/data/rom.s
@@ -192,7 +192,17 @@ gUnknown_086A9778:: @ 0x086A9778
.4byte 0x086A94F4
.4byte 0x00000000
-.incbin "baserom.gba", 0x6A97AC, 0x6B159C - 0x6A97AC
+gEReaderAccessButtonSequence:: @ 0x086A97AC
+ .2byte 0x0200
+ .2byte 0x0100
+ .2byte 0x0200
+ .2byte 0x0100
+ .2byte 0x0200
+ .2byte 0x0100
+ .2byte 0xFFFF
+
+ .align 2, 0
+.incbin "baserom.gba", 0x6A97BC, 0x6B159C - 0x6A97BC
gMonHatchSpriteGroupPals:: @ 0x086B159C
.4byte gMonHatchSpriteGroup0_Pals
diff --git a/include/titlescreen.h b/include/titlescreen.h
index 65d790e..3fc4df8 100755
--- a/include/titlescreen.h
+++ b/include/titlescreen.h
@@ -26,10 +26,10 @@ 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 gEraseSaveDataAccessStep;
+extern s8 gEraseSaveDataAccessCounter;
+extern s8 gEReaderAccessStep;
+extern s8 gEReaderAccessCounter;
extern s8 gUnknown_020028A4;
extern s8 gUnknown_020028A5;
extern const u8 *gUnknown_0201C190[];
diff --git a/src/titlescreen.c b/src/titlescreen.c
index c3e51a1..3c679c4 100755
--- a/src/titlescreen.c
+++ b/src/titlescreen.c
@@ -26,6 +26,7 @@ extern const u8 *const gUnknown_086A9778[];
extern const s8 gUnknown_086A9672[9][2];
extern const u16 gUnknown_086A96A4[];
extern const u16 gUnknown_086A96D4[];
+extern const s16 gEReaderAccessButtonSequence[];
extern void sub_2B4(void);
extern void sub_438(void);
@@ -38,12 +39,12 @@ 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);
+static void sub_1157C(void);
// If the user doesn't press any buttons at the title screen,
// it will transition to a demo gameplay experience.
@@ -125,10 +126,10 @@ void sub_10AC0(void)
gTitlescreen.unkD = 0;
gTitlescreen.unkF = 0;
gUnknown_0202C588 = 1;
- gUnknown_020028A0 = 0;
- gUnknown_020028A1 = 0;
- gUnknown_020028A2 = 0;
- gUnknown_020028A3 = 0;
+ gEraseSaveDataAccessStep = 0;
+ gEraseSaveDataAccessCounter = 0;
+ gEReaderAccessStep = 0;
+ gEReaderAccessCounter = 0;
if (gMain.unk40 == 1)
{
@@ -635,11 +636,11 @@ static void sub_114FC(void)
{
if (gMain.newKeys & R_BUTTON)
{
- gUnknown_020028A1 = 40;
- if (++gUnknown_020028A0 == 3)
+ gEraseSaveDataAccessCounter = 40;
+ if (++gEraseSaveDataAccessStep == 3)
{
- gUnknown_020028A0 = 0;
- gUnknown_020028A1 = 0;
+ gEraseSaveDataAccessStep = 0;
+ gEraseSaveDataAccessCounter = 0;
m4aSongNumStart(0x68);
gTitlescreen.unk11 = 1;
gMain.subState = 9;
@@ -647,12 +648,49 @@ static void sub_114FC(void)
}
}
- if (gUnknown_020028A1 > 0)
+ if (gEraseSaveDataAccessCounter > 0)
{
- if (--gUnknown_020028A1 <= 0)
+ if (--gEraseSaveDataAccessCounter <= 0)
{
- gUnknown_020028A1 = 0;
- gUnknown_020028A0 = 0;
+ gEraseSaveDataAccessCounter = 0;
+ gEraseSaveDataAccessStep = 0;
+ }
+ }
+}
+
+static void sub_1157C(void)
+{
+ // To access the e-reader screen, alternate pressing R_BUTTON and L_BUTTON 6 times while holding DPAD_RIGHT.
+ s16 buttonMask = gEReaderAccessButtonSequence[gEReaderAccessStep];
+ if (gMain.heldKeys & DPAD_RIGHT && (gMain.newKeys & buttonMask) == buttonMask)
+ {
+ gEReaderAccessCounter = 40;
+ gEReaderAccessStep++;
+ if (gEReaderAccessButtonSequence[gEReaderAccessStep] == -1)
+ {
+ gEReaderAccessStep = 0;
+ gEReaderAccessCounter = 0;
+ m4aSongNumStart(0x65);
+ gTitlescreen.unk6 = 5;
+ if (gMain.subState == 1)
+ gMain.subState = 11;
+ else
+ gMain.subState = 10;
+ }
+ }
+
+ if (gMain.newKeys & (KEYS_MASK & ~buttonMask))
+ {
+ gEReaderAccessCounter = 0;
+ gEReaderAccessStep = 0;
+ }
+
+ if (gEReaderAccessCounter > 0)
+ {
+ if (--gEReaderAccessCounter <= 0)
+ {
+ gEReaderAccessCounter = 0;
+ gEReaderAccessStep = 0;
}
}
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 9e3af70..6cc4e1c 100755
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -3,16 +3,16 @@
gTitlescreen: @ 0x2002888
.space 0x18
-gUnknown_020028A0: @ 0x20028A0
+gEraseSaveDataAccessStep: @ 0x20028A0
.space 0x1
-gUnknown_020028A1: @ 0x20028A1
+gEraseSaveDataAccessCounter: @ 0x20028A1
.space 0x1
-gUnknown_020028A2: @ 0x20028A2
+gEReaderAccessStep: @ 0x20028A2
.space 0x1
-gUnknown_020028A3: @ 0x20028A3
+gEReaderAccessCounter: @ 0x20028A3
.space 0x1
gUnknown_020028A4: @ 0x20028A4