summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/menu_unknown.c264
1 files changed, 222 insertions, 42 deletions
diff --git a/src/menu_unknown.c b/src/menu_unknown.c
index 303bb7c82..243eb33ff 100644
--- a/src/menu_unknown.c
+++ b/src/menu_unknown.c
@@ -9,72 +9,76 @@
#include "string_util.h"
#include "window.h"
#include "constants/songs.h"
+#include "scanline_effect.h"
#define WINDOW_UNK_0 0
#define WINDOW_UNK_1 1
#define WINDOW_UNK_2 2
-extern struct ListMenuItem *gUnknown_0203CF4C;
-extern u8 gUnknown_0203CF48[3];
+EWRAM_DATA static u8 sUnknown_0203CF48[3] = {0};
+EWRAM_DATA static struct ListMenuItem *sUnknown_0203CF4C = NULL;
void sub_81D1E7C(s32 itemIndex, bool8 onInit, struct ListMenu *list);
-const struct WindowTemplate gUnknown_086253E8[] =
+static const struct WindowTemplate sUnknown_086253E8[] =
{
[WINDOW_UNK_0] = {
- //0x08010100,
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 8,
- //0x00080F02,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x8
},
[WINDOW_UNK_1] = {
- //0x08 01 15 00,
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 1,
.width = 8,
- //0x0018 0F 12,
.height = 18,
.paletteNum = 0xF,
.baseBlock = 0x18
},
[WINDOW_UNK_2] = {
- //0x0B 01 01 00
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 11,
- //0x0018 0F 08
.height = 8,
.paletteNum = 0xF,
.baseBlock = 0x18
}
};
-const u8 gUnknown_08625400[] = {
+static const u8 sUnknown_08625400[] =
+{
1, 2, 3
};
static const u8 sEmptyItemName[] = _("");
+static const struct ScanlineEffectParams sUnknown_08625404 =
+{
+ .dmaDest = (void*)REG_ADDR_WIN0H,
+ .dmaControl = SCANLINE_EFFECT_DMACNT_32BIT,
+ .initState = 1,
+ .unused9 = 0
+};
+
bool8 sub_81D1C44(u8 count)
{
u32 i;
struct ListMenuItem **v1;
- v1 = &gUnknown_0203CF4C;
+ v1 = &sUnknown_0203CF4C;
*v1 = Alloc(count * sizeof(struct ListMenuItem) + sizeof(struct ListMenuItem));
- if (gUnknown_0203CF4C == NULL)
+ if (sUnknown_0203CF4C == NULL)
return FALSE;
- for (i = 0; i < ARRAY_COUNT(gUnknown_0203CF48); i = (u8)(i + 1))
+ for (i = 0; i < ARRAY_COUNT(sUnknown_0203CF48); i = (u8)(i + 1))
{
- gUnknown_0203CF48[i] |= 0xFF;
+ sUnknown_0203CF48[i] |= 0xFF;
}
return TRUE;
@@ -84,7 +88,7 @@ u8 sub_81D1C84(u8 a0)
{
struct WindowTemplate template;
- u8 windowId = gUnknown_0203CF48[a0];
+ u8 windowId = sUnknown_0203CF48[a0];
if (windowId == 0xFF)
{
if (a0 == WINDOW_UNK_2)
@@ -93,31 +97,31 @@ u8 sub_81D1C84(u8 a0)
u32 v2;
s32 v3;
- template = gUnknown_086253E8[WINDOW_UNK_2];
+ template = sUnknown_086253E8[WINDOW_UNK_2];
v3 = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4);
template.width = v3;
- gUnknown_0203CF48[WINDOW_UNK_2] = AddWindow(&template);
+ sUnknown_0203CF48[WINDOW_UNK_2] = AddWindow(&template);
}
else
{
- gUnknown_0203CF48[a0] = AddWindow(&gUnknown_086253E8[a0]);
+ sUnknown_0203CF48[a0] = AddWindow(&sUnknown_086253E8[a0]);
}
- SetStandardWindowBorderStyle(gUnknown_0203CF48[a0], 0);
+ SetStandardWindowBorderStyle(sUnknown_0203CF48[a0], 0);
}
- return gUnknown_0203CF48[a0];
+ return sUnknown_0203CF48[a0];
}
void sub_81D1D04(u8 a0)
{
- sub_8198070(gUnknown_0203CF48[a0], 0);
- ClearWindowTilemap(gUnknown_0203CF48[a0]);
- RemoveWindow(gUnknown_0203CF48[a0]);
- gUnknown_0203CF48[a0] = 0xFF;
+ sub_8198070(sUnknown_0203CF48[a0], 0);
+ ClearWindowTilemap(sUnknown_0203CF48[a0]);
+ RemoveWindow(sUnknown_0203CF48[a0]);
+ sUnknown_0203CF48[a0] = 0xFF;
}
u8 sub_81D1D34(u8 a0)
{
- return gUnknown_0203CF48[a0];
+ return sUnknown_0203CF48[a0];
}
void sub_81D1D44(u8 windowId, s32 itemId, u8 y)
@@ -133,7 +137,7 @@ void sub_81D1D44(u8 windowId, s32 itemId, u8 y)
length = StringLength(buffer);
if (length <= 5)
ConvertInternationalString(buffer, LANGUAGE_JAPANESE);
- AddTextPrinterParameterized4(windowId, 1, 8, y, 0, 0, gUnknown_08625400, -1, buffer);
+ AddTextPrinterParameterized4(windowId, 1, 8, y, 0, 0, sUnknown_08625400, -1, buffer);
}
u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page)
@@ -141,16 +145,16 @@ u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page)
u16 i;
for (i = 0; i < page->count; i++)
{
- gUnknown_0203CF4C[i].name = sEmptyItemName;
- gUnknown_0203CF4C[i].id = i;
+ sUnknown_0203CF4C[i].name = sEmptyItemName;
+ sUnknown_0203CF4C[i].id = i;
}
- gUnknown_0203CF4C[i].name = gText_Cancel2;
- gUnknown_0203CF4C[i].id = LIST_CANCEL;
+ sUnknown_0203CF4C[i].name = gText_Cancel2;
+ sUnknown_0203CF4C[i].id = LIST_CANCEL;
- gMultiuseListMenuTemplate.items = gUnknown_0203CF4C;
+ gMultiuseListMenuTemplate.items = sUnknown_0203CF4C;
gMultiuseListMenuTemplate.totalItems = page->count + 1;
- gMultiuseListMenuTemplate.windowId = gUnknown_0203CF48[1];
+ gMultiuseListMenuTemplate.windowId = sUnknown_0203CF48[1];
gMultiuseListMenuTemplate.header_X = 0;
gMultiuseListMenuTemplate.item_X = 8;
gMultiuseListMenuTemplate.cursor_X = 0;
@@ -182,40 +186,216 @@ void sub_81D1E90(struct PlayerPCItemPageStruct *page)
void sub_81D1EC0(void)
{
- Free(gUnknown_0203CF4C);
+ Free(sUnknown_0203CF4C);
}
void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0)
{
u8 j;
u8 i;
- u8 v1;
for (j = 0; j < 5; j++)
{
for (i = 0; i < 10; i++)
{
- // u16
a0->unk64[i][j].unk0 = 0;
a0->unk64[i][j].unk2 = 0;
}
for (i = 0; i < 4; i++)
{
- // u8
a0->unk0[i][j] = 0;
-
- // u16
a0->unk14[i][j].unk0 = 0x9B;
a0->unk14[i][j].unk2 = 0x5B;
}
- // u16
a0->unk12C[j].unk0 = 0;
a0->unk12C[j].unk2 = 0;
}
- // u8
a0->unk354 = 0;
-
- // u16
a0->unk352 = 0;
+}
+
+NAKED
+void sub_81D1F84(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 arg1[4][5], struct UnknownSubStruct_81D1ED4 arg2[4][5])
+{
+ /*
+ u16 j;
+ u16 i;
+ s16 v1;
+ s16 v2;
+ for (j = 0; j < 5; j++)
+ {
+ v1 = arg1[0][j].unk0;
+ v2 = (arg2[0][j].unk0 - v1) / 10;
+
+ for (i = 0; i < 9; i++)
+ {
+ arg0->unk64[i][j].unk0 = v1 + ((v1 << 1) & 1);
+ }
+
+ for (i = 0; i < 9; i++)
+ {
+
+ }
+ }
+ */
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ mov r8, r0\n\
+ str r1, [sp]\n\
+ mov r9, r2\n\
+ movs r7, 0\n\
+_081D1F98:\n\
+ lsls r4, r7, 2\n\
+ ldr r1, [sp]\n\
+ adds r0, r4, r1\n\
+ ldrh r1, [r0]\n\
+ lsls r5, r1, 8\n\
+ mov r2, r9\n\
+ adds r0, r4, r2\n\
+ ldrh r0, [r0]\n\
+ subs r0, r1\n\
+ lsls r0, 8\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r6, r0, 0\n\
+ movs r3, 0\n\
+ adds r7, 0x1\n\
+ mov r10, r7\n\
+ mov r12, r4\n\
+_081D1FBC:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ add r0, r12\n\
+ add r0, r8\n\
+ asrs r2, r5, 8\n\
+ asrs r1, r5, 7\n\
+ movs r7, 0x1\n\
+ ands r1, r7\n\
+ adds r2, r1\n\
+ adds r0, 0x64\n\
+ strh r2, [r0]\n\
+ adds r5, r6\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x8\n\
+ bls _081D1FBC\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ add r0, r8\n\
+ mov r1, r9\n\
+ adds r2, r4, r1\n\
+ ldrh r1, [r2]\n\
+ adds r0, 0x64\n\
+ strh r1, [r0]\n\
+ ldr r7, [sp]\n\
+ adds r0, r4, r7\n\
+ ldrh r1, [r0, 0x2]\n\
+ lsls r5, r1, 8\n\
+ ldrh r0, [r2, 0x2]\n\
+ subs r0, r1\n\
+ lsls r0, 8\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r6, r0, 0\n\
+ movs r3, 0\n\
+ str r4, [sp, 0x4]\n\
+ movs r0, 0x1\n\
+ mov r12, r0\n\
+_081D2012:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1, r0\n\
+ add r0, r8\n\
+ asrs r2, r5, 8\n\
+ asrs r1, r5, 7\n\
+ mov r7, r12\n\
+ ands r1, r7\n\
+ adds r2, r1\n\
+ adds r0, 0x66\n\
+ strh r2, [r0]\n\
+ adds r5, r6\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x8\n\
+ bls _081D2012\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ add r0, r8\n\
+ mov r2, r9\n\
+ adds r1, r4, r2\n\
+ ldrh r1, [r1, 0x2]\n\
+ adds r0, 0x66\n\
+ strh r1, [r0]\n\
+ mov r7, r10\n\
+ lsls r0, r7, 16\n\
+ lsrs r7, r0, 16\n\
+ cmp r7, 0x4\n\
+ bls _081D1F98\n\
+ ldr r1, =0x00000352\n\
+ add r1, r8\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+
+bool32 sub_81D2074(struct UnknownStruct_81D1ED4 *a0)
+{
+ if (a0->unk352 < 10)
+ {
+ sub_81D2230(a0);
+ return ++a0->unk352 != 10;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+}
+
+void sub_81D20AC(struct UnknownStruct_81D1ED4 *a0)
+{
+ a0->unk355 = 0;
+}
+
+bool8 sub_81D20BC(struct UnknownStruct_81D1ED4 *arg0)
+{
+ struct ScanlineEffectParams params;
+ switch (arg0->unk355)
+ {
+ case 0:
+ ScanlineEffect_Clear();
+ arg0->unk355++;
+ return TRUE;
+ case 1:
+ params = sUnknown_08625404;
+ ScanlineEffect_SetParams(params);
+ arg0->unk355++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
} \ No newline at end of file