summaryrefslogtreecommitdiff
path: root/src/field/secret_base.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field/secret_base.c')
-rw-r--r--src/field/secret_base.c263
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