diff options
Diffstat (limited to 'src/field/secret_base.c')
-rw-r--r-- | src/field/secret_base.c | 263 |
1 files changed, 218 insertions, 45 deletions
diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 2e4138a3b..8b67a2cd9 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -51,7 +51,7 @@ static void Task_SecretBasePC_Registry(u8 taskId); extern u8 gUnknown_0815F399[]; extern u8 gUnknown_0815F49A[]; -extern u8 gUnknown_020387DC; +EWRAM_DATA u8 gUnknown_020387DC = 0; const struct { @@ -348,7 +348,7 @@ void sub_80BBA48(u8 taskid) void sub_80BBAF0(void) { CreateTask(sub_80BBA48, 0); - fade_screen(1, 0); + FadeScreen(1, 0); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); } @@ -362,7 +362,7 @@ bool8 sub_80BBB24(void) void sub_80BBB50(u8 taskid) { FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); - if (sub_807D770() == 1) { + if (IsWeatherNotFadingIn() == 1) { EnableBothScriptContexts(); DestroyTask(taskid); } @@ -397,7 +397,7 @@ void sub_80BBC78(void) { u8 taskid = CreateTask(sub_80BBBEC, 0); gTasks[taskid].data[0] = 0; - fade_screen(1, 0); + FadeScreen(1, 0); } bool8 CurrentMapIsSecretBase(void) @@ -534,7 +534,7 @@ void sub_80BC074(u8 taskid) void sub_80BC0F8(void) { CreateTask(sub_80BC074, 0); - fade_screen(1, 0); + FadeScreen(1, 0); } void sub_80BC114(void) { @@ -895,7 +895,7 @@ void Task_SecretBasePC_Registry(u8 taskId) s16 *taskData; ScriptContext2_Enable(); - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); taskData = gTasks[taskId].data; @@ -913,7 +913,7 @@ void Task_SecretBasePC_Registry(u8 taskId) taskData[1] = 0; taskData[2] = 0; - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC7D8(taskId); gTasks[taskId].func = sub_80BC824; @@ -948,8 +948,8 @@ void sub_80BC6B0(u8 taskId) if (sub_80BC268(i) == TRUE) { sub_80BC190(gStringVar1, i); - MenuFillWindowRectWithBlankTile(18, 2 * n + 2, 28, 2 * n + 3); - MenuPrint(gStringVar1, 18, 2 * n + 2); + Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); + Menu_PrintText(gStringVar1, 18, 2 * n + 2); if (++n == 8) break; } @@ -957,25 +957,25 @@ void sub_80BC6B0(u8 taskId) if (n < 8) { - MenuFillWindowRectWithBlankTile(18, 2 * n + 2, 28, 2 * n + 3); - MenuPrint(gUnknownText_Exit, 18, 2 * n + 2); - DestroyVerticalScrollIndicator(1); + Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); + Menu_PrintText(gUnknownText_Exit, 18, 2 * n + 2); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (n != 7) - MenuFillWindowRectWithBlankTile(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match + Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match } else - CreateVerticalScrollIndicators(1, 0xbc, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xbc, 0x98); if (taskData[2] == 0) - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); else - CreateVerticalScrollIndicators(0, 0xbc, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0xbc, 0x08); } void sub_80BC7D8(u8 taskId) { u16 *taskData = gTasks[taskId].data; - MenuDrawTextWindow(17, 0, 29, 19); + Menu_DrawStdWindowFrame(17, 0, 29, 19); InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); sub_80BC6B0(taskId); @@ -990,7 +990,7 @@ void sub_80BC824(u8 taskId) if (taskData[1]) { PlaySE(5); - taskData[1] = MoveMenuCursor(-1); + taskData[1] = Menu_MoveCursor(-1); } else if (taskData[2]) { @@ -1013,7 +1013,7 @@ void sub_80BC824(u8 taskId) else { PlaySE(5); - taskData[1] = MoveMenuCursor(1); + taskData[1] = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -1021,13 +1021,13 @@ void sub_80BC824(u8 taskId) PlaySE(5); if (taskData[1] + taskData[2] == taskData[0]) { - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_DestroyCursor(); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } else { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); taskData[4] = sub_80BC948(taskData[1] + taskData[2]); sub_80BC980(taskId); } @@ -1035,8 +1035,8 @@ void sub_80BC824(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(5); - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_DestroyCursor(); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } } @@ -1064,10 +1064,10 @@ u8 sub_80BC948(u8 a) void sub_80BC980(u8 taskId) { - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); - MenuDrawTextWindow(1, 0, 12, 5); - PrintMenuItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); + Menu_DrawStdWindowFrame(1, 0, 12, 5); + Menu_PrintItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); InitMenu(0, 2, 1, 2, 0, 10); gTasks[taskId].func = sub_80BC9E4; } @@ -1076,24 +1076,24 @@ void sub_80BC9E4(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (GetMenuCursorPos()) + if (Menu_GetCursorPos()) { PlaySE(5); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (GetMenuCursorPos() != 1) + if (Menu_GetCursorPos() != 1) { PlaySE(5); - MoveMenuCursor(1); + Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) { PlaySE(5); - gUnknown_083D13D4[GetMenuCursorPos()].func(taskId); + gUnknown_083D13D4[Menu_GetCursorPos()].func(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -1106,10 +1106,10 @@ void sub_80BCA84(u8 taskId) { s16 *taskData = gTasks[taskId].data; - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); - HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); + Menu_DestroyCursor(); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC190(gStringVar1, taskData[4]); StringExpandPlaceholders(gStringVar4, gOtherText_OkayToDeleteFromRegistry); @@ -1126,7 +1126,7 @@ void sub_80BCB10(u8 taskId) { s16 *taskData = gTasks[taskId].data; - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSaveBlock1.secretBases[taskData[4]].sbr_field_1_6 = 0; taskData[0]--; @@ -1147,13 +1147,13 @@ void sub_80BCB10(u8 taskId) void sub_80BCB90(u8 taskId) { - MenuZeroFillWindowRect(20, 8, 26, 13); + Menu_EraseWindowRect(20, 8, 26, 13); DisplayItemMessageOnField(taskId, gOtherText_RegisteredDataDeleted, sub_80BCB10, 0); } void sub_80BCBC0(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC7D8(taskId); gTasks[taskId].func = sub_80BC824; @@ -1164,9 +1164,9 @@ void sub_80BCBF8(u8 taskId) s16 *taskData = gTasks[taskId].data; InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); - MenuZeroFillWindowRect(1, 0, 12, 5); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + Menu_EraseWindowRect(1, 0, 12, 5); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); gTasks[taskId].func = sub_80BC824; } @@ -1176,8 +1176,8 @@ void sub_80BCC54(u8 taskId) u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE); BuyMenuFreeMemory(); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (curBaseIndex == 0) { @@ -1648,6 +1648,178 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases sub_80BD328(basesC, 0); } +#if DEBUG +__attribute__((naked)) +void sub_80BD674(void *playerRecords, u32 size, u8 c) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + add r6, r0, #0\n\ + add r5, r1, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r7, r2, #0x18\n\ + ldr r0, ._503 @ gUnknown_020297ED\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._498 @cond_branch\n\ + mov r0, #0x60\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._498 @cond_branch\n\ + b ._520\n\ +._498:\n\ + bl GetLinkPlayerCount\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x2\n\ + beq ._500 @cond_branch\n\ + cmp r0, #0x3\n\ + beq ._501 @cond_branch\n\ + b ._505\n\ +._504:\n\ + .align 2, 0\n\ +._503:\n\ + .word gUnknown_020297ED\n\ +._500:\n\ + lsl r4, r5, #0x1\n\ + add r0, r6, r4\n\ + mov r1, #0x0\n\ + add r2, r5, #0\n\ + bl memset\n\ + add r4, r4, r5\n\ + add r4, r6, r4\n\ + add r0, r4, #0\n\ + mov r1, #0x0\n\ + add r2, r5, #0\n\ + bl memset\n\ + b ._505\n\ +._501:\n\ + lsl r0, r5, #0x1\n\ + add r0, r0, r5\n\ + add r0, r6, r0\n\ + mov r1, #0x0\n\ + add r2, r5, #0\n\ + bl memset\n\ +._505:\n\ + cmp r7, #0x1\n\ + beq ._506 @cond_branch\n\ + cmp r7, #0x1\n\ + bgt ._507 @cond_branch\n\ + cmp r7, #0\n\ + beq ._508 @cond_branch\n\ + b ._515\n\ +._507:\n\ + cmp r7, #0x2\n\ + beq ._510 @cond_branch\n\ + cmp r7, #0x3\n\ + beq ._511 @cond_branch\n\ + b ._515\n\ +._508:\n\ + add r0, r6, r5\n\ + lsl r2, r5, #0x1\n\ + add r1, r6, r2\n\ + add r2, r2, r5\n\ + add r2, r6, r2\n\ + bl sub_80BD610\n\ + b ._515\n\ +._506:\n\ + lsl r1, r5, #0x1\n\ + add r0, r6, r1\n\ + add r1, r1, r5\n\ + add r1, r6, r1\n\ + add r2, r6, #0\n\ + bl sub_80BD610\n\ + b ._515\n\ +._510:\n\ + lsl r0, r5, #0x1\n\ + add r0, r0, r5\n\ + add r0, r6, r0\n\ + add r2, r6, r5\n\ + add r1, r6, #0\n\ + bl sub_80BD610\n\ + b ._515\n\ +._511:\n\ + add r1, r6, r5\n\ + lsl r2, r5, #0x1\n\ + add r2, r6, r2\n\ + add r0, r6, #0\n\ + bl sub_80BD610\n\ +._515:\n\ + mov r3, #0x1\n\ + ldr r6, ._521 @ gSaveBlock1\n\ + mov r5, #0x10\n\ + neg r5, r5\n\ + ldr r4, ._521 + 4 @ 0x1a09\n\ +._517:\n\ + lsl r0, r3, #0x2\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x5\n\ + add r0, r0, r6\n\ + add r2, r0, r4\n\ + ldrb r1, [r2]\n\ + lsl r0, r1, #0x1c\n\ + lsr r0, r0, #0x1c\n\ + cmp r0, #0x1\n\ + bne ._516 @cond_branch\n\ + mov r0, #0x3f\n\ + and r0, r0, r1\n\ + mov r1, #0x40\n\ + orr r0, r0, r1\n\ + and r0, r0, r5\n\ + strb r0, [r2]\n\ +._516:\n\ + add r0, r3, #1\n\ + lsl r0, r0, #0x10\n\ + lsr r3, r0, #0x10\n\ + cmp r3, #0x13\n\ + bls ._517 @cond_branch\n\ + bl sub_80BD280\n\ + mov r3, #0x1\n\ + ldr r4, ._521 @ gSaveBlock1\n\ + ldr r6, ._521 + 4 @ 0x1a09\n\ + add r7, r4, #0\n\ + mov r5, #0x3f\n\ +._519:\n\ + lsl r0, r3, #0x2\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x5\n\ + add r0, r0, r4\n\ + add r2, r0, r6\n\ + ldrb r1, [r2]\n\ + lsr r0, r1, #0x6\n\ + cmp r0, #0x2\n\ + bne ._518 @cond_branch\n\ + add r0, r5, #0\n\ + and r0, r0, r1\n\ + strb r0, [r2]\n\ +._518:\n\ + add r0, r3, #1\n\ + lsl r0, r0, #0x10\n\ + lsr r3, r0, #0x10\n\ + cmp r3, #0x13\n\ + bls ._519 @cond_branch\n\ + ldr r0, ._521 + 8 @ 0x1a16\n\ + add r2, r7, r0\n\ + ldrh r1, [r2]\n\ + ldr r0, ._521 + 12 @ 0xffff\n\ + cmp r1, r0\n\ + beq ._520 @cond_branch\n\ + add r0, r1, #1\n\ + strh r0, [r2]\n\ +._520:\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._522:\n\ + .align 2, 0\n\ +._521:\n\ + .word gSaveBlock1\n\ + .word 0x1a09\n\ + .word 0x1a16\n\ + .word 0xffff"); +} +#else void sub_80BD674(void *playerRecords, u32 size, u8 c) { if (FlagGet(FLAG_RECEIVED_SECRET_POWER)) @@ -1706,3 +1878,4 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) } } } +#endif |