diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-10-17 18:07:31 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-10-17 18:07:31 -0500 |
commit | 68dcbea52ecc048e4c0eac1bed1845a182498bb7 (patch) | |
tree | 8d7388af611b6bb5e3558f0d40772b452e367a62 | |
parent | 876a79f1fe06958916da0b3a555b8358d972365c (diff) |
Decompile sub_1157C
-rwxr-xr-x | asm/titlescreen.s | 98 | ||||
-rwxr-xr-x | data/rom.s | 12 | ||||
-rwxr-xr-x | include/titlescreen.h | 8 | ||||
-rwxr-xr-x | src/titlescreen.c | 64 | ||||
-rwxr-xr-x | sym_ewram.txt | 8 |
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} @@ -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 |