diff options
author | Phlosioneer <mattmdrr2@gmail.com> | 2019-03-05 22:32:28 -0500 |
---|---|---|
committer | Phlosioneer <mattmdrr2@gmail.com> | 2019-03-05 22:32:28 -0500 |
commit | 4345ba8e6cf145a646666b8d2be1a255873ed29a (patch) | |
tree | fef6a23b3595ec194f69191e1d281700c0f4a8c1 /src | |
parent | c3594f982ddd0839aa7b97cb5a54087e198b0326 (diff) |
More decompiled and cleanup
Diffstat (limited to 'src')
-rw-r--r-- | src/menu_unknown.c | 264 |
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 |