diff options
-rw-r--r-- | asm/secret_base.s | 85 | ||||
-rw-r--r-- | src/secret_base.c | 23 |
2 files changed, 22 insertions, 86 deletions
diff --git a/asm/secret_base.s b/asm/secret_base.s index 9440307f8..cbcf2e1c7 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,91 +6,6 @@ .section .text_80BC1D0 - thumb_func_start sub_80BCAEC -sub_80BCAEC: @ 80BCAEC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _080BCB0C @ =gUnknown_083D13E4 - adds r0, r4, 0 - bl DoYesNoFuncWithChoice - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BCB0C: .4byte gUnknown_083D13E4 - thumb_func_end sub_80BCAEC - - thumb_func_start sub_80BCB10 -sub_80BCB10: @ 80BCB10 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r7, _080BCB80 @ =gTasks + 0x8 - adds r4, r6, r7 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r2, _080BCB84 @ =gSaveBlock1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 5 - adds r0, r2 - ldr r1, _080BCB88 @ =0x00001a09 - adds r0, r1 - ldrb r2, [r0] - movs r1, 0x3F - ands r1, r2 - strb r1, [r0] - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] - ldrh r1, [r4, 0x4] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080BCB5C - subs r0, r1, 0x1 - strh r0, [r4, 0x4] -_080BCB5C: - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bgt _080BCB6A - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] -_080BCB6A: - adds r0, r5, 0 - bl sub_80BC7D8 - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _080BCB8C @ =sub_80BC824 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BCB80: .4byte gTasks + 0x8 -_080BCB84: .4byte gSaveBlock1 -_080BCB88: .4byte 0x00001a09 -_080BCB8C: .4byte sub_80BC824 - thumb_func_end sub_80BCB10 - thumb_func_start sub_80BCB90 sub_80BCB90: @ 80BCB90 push {r4,lr} diff --git a/src/secret_base.c b/src/secret_base.c index b5d1ef310..4904f7667 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -114,7 +114,7 @@ const struct MenuAction2 gUnknown_083D13D4[] = { {gUnknownText_Exit, sub_80BCBF8} }; -void (*const gUnknown_083D13E4[])(u8) = { +const struct YesNoFuncTable gUnknown_083D13E4 = { sub_80BCB90, sub_80BCBC0 }; @@ -1108,6 +1108,7 @@ void SecretBasePC_Registry(void) CreateTask(Task_SecretBasePC_Registry, 0); } +// This function tries to keep gTasks + 8 in a register. It should not. #ifdef NONMATCHING void Task_SecretBasePC_Registry(u8 taskId) { @@ -1372,3 +1373,23 @@ void sub_80BCA84(u8 taskId) StringExpandPlaceholders(gStringVar4, gOtherText_OkayToDeleteFromRegistry); DisplayItemMessageOnField(taskId, gStringVar4, sub_80BCAEC, 0); } + +void sub_80BCAEC(u8 taskId) +{ + DisplayYesNoMenu(20, 8, 1); + DoYesNoFuncWithChoice(taskId, &gUnknown_083D13E4); +} + +void sub_80BCB10(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + MenuZeroFillWindowRect(0, 0, 29, 19); + gSaveBlock1.secretBases[data[4]].sbr_field_1_6 = 0; + data[0]--; + if (data[2] > 0) + data[2]--; + if (data[0] < 8) + data[3]--; + sub_80BC7D8(taskId); + gTasks[taskId].func = sub_80BC824; +} |