diff options
-rw-r--r-- | asm/secret_base.s | 110 | ||||
-rwxr-xr-x | src/secret_base_80bb4ac.c | 32 |
2 files changed, 28 insertions, 114 deletions
diff --git a/asm/secret_base.s b/asm/secret_base.s index 105cb4d12..913f6915a 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,116 +6,6 @@ .section .text_b - thumb_func_start sub_80BBBEC -sub_80BBBEC: @ 80BBBEC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080BBC5C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BBC52 - ldr r0, _080BBC60 @ =gUnknown_020387DC - ldrb r0, [r0] - movs r1, 0xA - bl __udivsi3 - ldr r1, _080BBC64 @ =gSaveBlock1 - movs r5, 0x4 - ldrsb r5, [r1, r5] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - ldr r4, _080BBC68 @ =gUnknown_083D1374 - lsls r0, 26 - asrs r0, 24 - adds r3, r0, 0x2 - adds r3, r4 - ldrb r3, [r3] - lsls r3, 24 - asrs r3, 24 - adds r0, 0x3 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - adds r0, r5, 0 - bl warp1_set - bl warp_in - ldr r1, _080BBC6C @ =gUnknown_0300485C - ldr r0, _080BBC70 @ =sub_80BBB90 - str r0, [r1] - ldr r0, _080BBC74 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r6, 0 - bl DestroyTask -_080BBC52: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BBC5C: .4byte gPaletteFade -_080BBC60: .4byte gUnknown_020387DC -_080BBC64: .4byte gSaveBlock1 -_080BBC68: .4byte gUnknown_083D1374 -_080BBC6C: .4byte gUnknown_0300485C -_080BBC70: .4byte sub_80BBB90 -_080BBC74: .4byte CB2_LoadMap - thumb_func_end sub_80BBBEC - - thumb_func_start sub_80BBC78 -sub_80BBC78: @ 80BBC78 - push {lr} - ldr r0, _080BBCA0 @ =sub_80BBBEC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BBCA4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - movs r0, 0x1 - movs r1, 0 - bl fade_screen - pop {r0} - bx r0 - .align 2, 0 -_080BBCA0: .4byte sub_80BBBEC -_080BBCA4: .4byte gTasks - thumb_func_end sub_80BBC78 - - thumb_func_start CurrentMapIsSecretBase -CurrentMapIsSecretBase: @ 80BBCA8 - push {lr} - ldr r1, _080BBCC0 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x19 - bne _080BBCC4 - ldrb r0, [r1, 0x5] - cmp r0, 0x17 - bhi _080BBCC4 - movs r0, 0x1 - b _080BBCC6 - .align 2, 0 -_080BBCC0: .4byte gSaveBlock1 -_080BBCC4: - movs r0, 0 -_080BBCC6: - pop {r1} - bx r1 - thumb_func_end CurrentMapIsSecretBase - thumb_func_start sub_80BBCCC sub_80BBCCC: @ 80BBCCC push {r4-r7,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index f01b2ebcb..990da5727 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -21,7 +21,7 @@ extern const struct { u16 unk_083D1358_0; u16 unk_083D1358_1; } gUnknown_083D1358[7]; -extern const u8 gUnknown_083D1374[48]; +extern const u8 gUnknown_083D1374[4 * 16]; extern void *gUnknown_0300485C; extern u8 sub_807D770(void); @@ -238,10 +238,10 @@ void sub_80BBAF0(void) { saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); } -u8 sub_80BBB24(void) { +bool8 sub_80BBB24(void) { if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) - return 0; - return 1; + return FALSE; + return TRUE; } void sub_80BBB50(u8 taskid) { @@ -262,3 +262,27 @@ void sub_80BBB90(void) { pal_fill_black(); CreateTask(sub_80BBB50, 0); } + +void sub_80BBBEC(u8 taskid) { + s8 idx; + if (!gPaletteFade.active) { + idx = 4 * (gUnknown_020387DC / 10); + warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); + warp_in(); + gUnknown_0300485C = sub_80BBB90; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + } +} + +void sub_80BBC78(void) { + u8 taskid = CreateTask(sub_80BBBEC, 0); + gTasks[taskid].data[0] = 0; + fade_screen(1, 0); +} + +bool8 CurrentMapIsSecretBase(void) { + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4) + return TRUE; + return FALSE; +} |