summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/daycare.c28
-rw-r--r--src/trade.c25
-rw-r--r--src/union_room_chat.c15
-rw-r--r--src/union_room_chat_display.c572
4 files changed, 579 insertions, 61 deletions
diff --git a/src/daycare.c b/src/daycare.c
index 856a5fbc0..ef9da89fe 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1,44 +1,34 @@
#include "global.h"
-#include "pokemon.h"
+#include "gflib.h"
#include "battle.h"
#include "daycare.h"
-#include "string_util.h"
#include "constants/species.h"
#include "constants/items.h"
#include "mail_data.h"
#include "pokemon_storage_system.h"
#include "event_data.h"
#include "random.h"
-#include "main.h"
#include "constants/moves.h"
-#include "text.h"
#include "menu.h"
#include "new_menu_helpers.h"
#include "script.h"
#include "strings.h"
-#include "task.h"
-#include "window.h"
#include "party_menu.h"
#include "list_menu.h"
#include "overworld.h"
#include "pokedex.h"
#include "decompress.h"
-#include "palette.h"
-#include "sound.h"
#include "constants/songs.h"
#include "text_window.h"
#include "trig.h"
-#include "malloc.h"
-#include "gpu_regs.h"
-#include "bg.h"
#include "m4a.h"
#include "graphics.h"
#include "scanline_effect.h"
#include "naming_screen.h"
#include "help_system.h"
#include "field_fadetransition.h"
+#include "trade.h"
#include "constants/daycare.h"
-#include "constants/pokemon.h"
#include "constants/region_map.h"
// Combination of RSE's Day-Care (re-used on Four Island), FRLG's Day-Care, and egg_hatch.c
@@ -60,20 +50,6 @@ struct EggHatchData
u8 textColor[3];
};
-extern const u8 gText_MaleSymbol4[];
-extern const u8 gText_FemaleSymbol4[];
-extern const u8 gText_GenderlessSymbol[];
-extern const u8 gText_Lv[];
-extern const u8 gDaycareText_GetAlongVeryWell[];
-extern const u8 gDaycareText_GetAlong[];
-extern const u8 gDaycareText_DontLikeOther[];
-extern const u8 gDaycareText_PlayOther[];
-extern const u8 gExpandedPlaceholder_Empty[];
-
-extern const u32 gUnknown_826601C[]; // tilemap gameboy circle
-extern const u8 gText_HatchedFromEgg[];
-extern const u8 gText_NickHatchPrompt[];
-
// this file's functions
static void ClearDaycareMonMail(struct DayCareMail *mail);
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
diff --git a/src/trade.c b/src/trade.c
index 05a259e60..fe5f53be9 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1,41 +1,22 @@
#include "global.h"
-#include "palette.h"
+#include "gflib.h"
#include "task.h"
#include "decompress.h"
-#include "gpu_regs.h"
-#include "malloc.h"
-#include "bg.h"
-#include "text.h"
-#include "window.h"
-#include "librfu.h"
#include "text_window.h"
-#include "evolution_scene.h"
#include "pokemon_icon.h"
-#include "pokedex.h"
-#include "mail_data.h"
#include "graphics.h"
#include "link.h"
-#include "random.h"
-#include "save.h"
#include "load_save.h"
-#include "quest_log.h"
-#include "field_fadetransition.h"
-#include "mevent.h"
-#include "help_system.h"
#include "link_rfu.h"
#include "cable_club.h"
#include "data.h"
-#include "sound.h"
-#include "string_util.h"
#include "strings.h"
#include "menu.h"
#include "overworld.h"
#include "battle_anim.h"
#include "pokeball.h"
#include "party_menu.h"
-#include "util.h"
#include "daycare.h"
-#include "script.h"
#include "event_data.h"
#include "battle_interface.h"
#include "pokemon_summary_screen.h"
@@ -43,11 +24,7 @@
#include "new_menu_helpers.h"
#include "trade.h"
#include "trade_scene.h"
-#include "constants/species.h"
-#include "constants/items.h"
-#include "constants/easy_chat.h"
#include "constants/songs.h"
-#include "constants/region_map.h"
#include "constants/moves.h"
struct TradeMenuResources
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 936803f80..f8243f742 100644
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -13,18 +13,11 @@
#include "scanline_effect.h"
#include "strings.h"
#include "task.h"
+#include "union_room_chat.h"
#include "union_room_chat_display.h"
#include "data_8479668.h"
#include "constants/songs.h"
-enum
-{
- UNION_ROOM_KB_PAGE_UPPER,
- UNION_ROOM_KB_PAGE_LOWER,
- UNION_ROOM_KB_PAGE_EMOJI,
- UNION_ROOM_KB_PAGE_COUNT
-};
-
struct UnionRoomChat
{
u8 filler0[0x4];
@@ -147,7 +140,7 @@ const u8 gUnknown_845A8AC[] = {
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE
};
-const u8 *const sUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT][UNION_ROOM_KB_ROW_COUNT] = {
+const u8 *const gUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT][UNION_ROOM_KB_ROW_COUNT] = {
[UNION_ROOM_KB_PAGE_UPPER] = {
gText_UnionRoomChatKeyboard_ABCDE,
gText_UnionRoomChatKeyboard_FGHIJ,
@@ -951,7 +944,7 @@ void sub_81292D8(void)
if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT)
{
- charsStr = sUnionRoomKeyboardText[gUnknown_203B0E0->currentPage][gUnknown_203B0E0->currentRow];
+ charsStr = gUnionRoomKeyboardText[gUnknown_203B0E0->currentPage][gUnknown_203B0E0->currentRow];
for (i = 0; i < gUnknown_203B0E0->unk11; i++)
{
if (*charsStr == CHAR_EXTRA_EMOJI)
@@ -1265,7 +1258,7 @@ u8 *sub_81297C4(void)
return gUnknown_203B0E0->unk39;
}
-u8 sub_81297D0(void)
+u16 sub_81297D0(void)
{
return gUnknown_203B0E0->unk16;
}
diff --git a/src/union_room_chat_display.c b/src/union_room_chat_display.c
index 993481d3d..0e1e7c3b6 100644
--- a/src/union_room_chat_display.c
+++ b/src/union_room_chat_display.c
@@ -1,7 +1,12 @@
#include "global.h"
#include "gflib.h"
+#include "dynamic_placeholder_text_util.h"
+#include "graphics.h"
+#include "menu.h"
#include "new_menu_helpers.h"
#include "scanline_effect.h"
+#include "strings.h"
+#include "text_window.h"
#include "union_room_chat.h"
#include "union_room_chat_display.h"
#include "union_room_chat_objects.h"
@@ -36,6 +41,18 @@ struct Unk845AABC
bool32 (*unk4)(u8 *);
};
+struct Unk845AB64
+{
+ const u8 *unk0;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+};
+
EWRAM_DATA struct UnionRoomChat2 * gUnknown_203B0E4 = NULL;
void sub_8129BB8(struct UnionRoomChat2 * ptr);
@@ -87,6 +104,8 @@ void sub_812ACEC(void);
void sub_812AD04(void);
void sub_812AD20(void);
void sub_812AD50(void);
+void sub_812ADA0(s16 a0);
+void sub_812ADF8(s16 a0);
const u16 gUnknown_845AA24[] = INCBIN_U16("graphics/union_room_chat/unk_845AA24.gbapal");
const u16 gUnknown_845AA44[] = INCBIN_U16("graphics/union_room_chat/unk_845AA44.gbapal");
@@ -188,6 +207,30 @@ const struct Unk845AABC gUnknown_845AABC[] = {
{20, sub_812A3D0}
};
+const struct Unk845AB64 gUnknown_845AB64[] = {
+ {gText_QuitChatting, 1, 0, 0, 1, 2, 0, 0},
+ {gText_RegisterTextWhere, 1, 0, 0, 1, 2, 0, 0},
+ {gText_RegisterTextHere, 1, 0, 0, 1, 2, 0, 0},
+ {gText_InputText, 1, 0, 0, 1, 2, 0, 0},
+ {gText_ExitingTheChat, 2, 0, 0, 1, 2, 0, 0},
+ {gText_LeaderHasLeftEndingChat, 2, 0, 0, 0, 2, 1, 0},
+ {gText_RegisteredTextChanged_OKtoSave, 2, 0, 0, 1, 2, 0, 1},
+ {gText_RegisteredTextChanged_AlreadySavedFile, 2, 0, 0, 1, 2, 0, 1},
+ {gText_RegisteredTextChanged_SavingDontTurnOff, 2, 0, 0, 1, 2, 0, 1},
+ {gText_RegisteredTextChanged_SavedTheGame, 2, 0, 0, 1, 2, 1, 1},
+ {gText_IfLeaderLeavesChatWillEnd, 2, 0, 0, 1, 2, 0, 1}
+};
+
+const u8 gText_Ellipsis[] = _("…");
+
+const struct MenuAction gUnknown_845ABEC[] = {
+ {gText_Upper},
+ {gText_Lower},
+ {gText_Symbols},
+ {gText_Register2},
+ {gText_Exit}
+};
+
bool8 sub_8129B14(void)
{
gUnknown_203B0E4 = Alloc(sizeof(*gUnknown_203B0E4));
@@ -654,3 +697,532 @@ bool32 sub_812A1B8(u8 *state)
return TRUE;
}
+
+bool32 sub_812A1FC(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A578(4, 0);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A240(u8 *state)
+{
+ u8 *str;
+
+ switch (*state)
+ {
+ case 0:
+ DynamicPlaceholderTextUtil_Reset();
+ str = sub_8129814();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, str);
+ sub_812A578(5, 0);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A294(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A578(6, 0);
+ sub_812A424(23, 10, 1);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A2E4(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A578(7, 0);
+ sub_812A424(23, 10, 1);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A334(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A578(8, 0);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A378(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ sub_812A578(9, 0);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A3D0(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A578(10, 0);
+ sub_812A424(23, 10, 1);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A420(u8 *arg0)
+{
+ return FALSE;
+}
+
+void sub_812A424(u8 left, u8 top, u8 initialCursorPos)
+{
+ struct WindowTemplate template;
+ template.bg = 0;
+ template.tilemapLeft = left;
+ template.tilemapTop = top;
+ template.width = 6;
+ template.height = 4;
+ template.paletteNum = 14;
+ template.baseBlock = 0x52;
+ gUnknown_203B0E4->unk18 = AddWindow(&template);
+ if (gUnknown_203B0E4->unk18 != 0xFF)
+ {
+ FillWindowPixelBuffer(gUnknown_203B0E4->unk18, PIXEL_FILL(1));
+ PutWindowTilemap(gUnknown_203B0E4->unk18);
+ AddTextPrinterParameterized(gUnknown_203B0E4->unk18, 2, gText_Yes, 8, 2, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gUnknown_203B0E4->unk18, 2, gText_No, 8, 16, TEXT_SPEED_FF, NULL);
+ DrawTextBorderOuter(gUnknown_203B0E4->unk18, 1, 13);
+ Menu_InitCursor(gUnknown_203B0E4->unk18, 2, 0, 2, 14, 2, initialCursorPos);
+ }
+}
+
+void sub_812A51C(void)
+{
+ if (gUnknown_203B0E4->unk18 != 0xFF)
+ {
+ ClearStdWindowAndFrameToTransparent(gUnknown_203B0E4->unk18, FALSE);
+ ClearWindowTilemap(gUnknown_203B0E4->unk18);
+ }
+}
+
+void sub_812A544(void)
+{
+ if (gUnknown_203B0E4->unk18 != 0xFF)
+ {
+ RemoveWindow(gUnknown_203B0E4->unk18);
+ gUnknown_203B0E4->unk18 = 0xFF;
+ }
+}
+
+s8 sub_812A568(void)
+{
+ return Menu_ProcessInput();
+}
+
+void sub_812A578(int arg0, u16 arg1)
+{
+ const u8 *str;
+ int windowId;
+ struct WindowTemplate template;
+ template.bg = 0;
+ template.tilemapLeft = 8;
+ template.tilemapTop = 16;
+ template.width = 21;
+ template.height = 4;
+ template.paletteNum = 14;
+ template.baseBlock = 0x06A;
+ if (gUnknown_845AB64[arg0].unkA)
+ {
+ template.tilemapLeft -= 7;
+ template.width += 7;
+ }
+
+ gUnknown_203B0E4->unk1E = AddWindow(&template);
+ windowId = gUnknown_203B0E4->unk1E;
+ if (gUnknown_203B0E4->unk1E == 0xFF)
+ return;
+
+ if (gUnknown_845AB64[arg0].unk9)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203B0E4->unk22, gUnknown_845AB64[arg0].unk0);
+ str = gUnknown_203B0E4->unk22;
+ }
+ else
+ {
+ str = gUnknown_845AB64[arg0].unk0;
+ }
+
+ ChangeBgY(0, arg1 * 256, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (gUnknown_845AB64[arg0].unk4 == 1)
+ {
+ DrawTextBorderInner(windowId, 0xA, 2);
+ AddTextPrinterParameterized5(
+ windowId,
+ 2,
+ str,
+ gUnknown_845AB64[arg0].unk5 + 8,
+ gUnknown_845AB64[arg0].unk6 + 8,
+ TEXT_SPEED_FF,
+ NULL,
+ gUnknown_845AB64[arg0].unk7,
+ gUnknown_845AB64[arg0].unk8);
+ }
+ else
+ {
+ DrawTextBorderOuter(windowId, 0xA, 2);
+ AddTextPrinterParameterized5(
+ windowId,
+ 2,
+ str,
+ gUnknown_845AB64[arg0].unk5,
+ gUnknown_845AB64[arg0].unk6,
+ TEXT_SPEED_FF,
+ NULL,
+ gUnknown_845AB64[arg0].unk7,
+ gUnknown_845AB64[arg0].unk8);
+ }
+
+ gUnknown_203B0E4->unk1E = windowId;
+}
+
+void sub_812A6F4(void)
+{
+ if (gUnknown_203B0E4->unk1E != 0xFF)
+ {
+ ClearStdWindowAndFrameToTransparent(gUnknown_203B0E4->unk1E, FALSE);
+ ClearWindowTilemap(gUnknown_203B0E4->unk1E);
+ }
+
+ ChangeBgY(0, 0, 0);
+}
+
+void sub_812A728(void)
+{
+ if (gUnknown_203B0E4->unk1E != 0xFF)
+ {
+ RemoveWindow(gUnknown_203B0E4->unk1E);
+ gUnknown_203B0E4->unk1E = 0xFF;
+ }
+}
+
+void sub_812A74C(u16 x, u16 width, u8 fillValue)
+{
+ FillWindowPixelRect(1, fillValue, x * 8, 1, width * 8, 14);
+}
+
+void sub_812A778(u16 x, u8 *str, u8 fillValue, u8 arg3, u8 arg4)
+{
+ u8 *str2;
+ u8 sp[38];
+ if (fillValue)
+ sub_812A74C(x, sub_81297DC() - x, fillValue);
+
+ sp[0] = fillValue;
+ sp[1] = arg3;
+ sp[2] = arg4;
+ str2 = &sp[4];
+ str2[0] = EXT_CTRL_CODE_BEGIN;
+ str2[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ str2[2] = 8;
+ StringCopy(&str2[3], str);
+ AddTextPrinterParameterized3(1, 2, x * 8, 1, sp, TEXT_SPEED_FF, str2);
+}
+
+void sub_812A804(void)
+{
+ u8 page;
+ int i;
+ int var1;
+ u16 left;
+ u16 top;
+ u8 sp[52];
+ u8 *str;
+ u8 *str2;
+
+ FillWindowPixelBuffer(2, PIXEL_FILL(15));
+ page = GetCurrentKeyboardPage();
+ sp[0] = 0;
+ sp[1] = 14;
+ sp[2] = 13;
+ if (page != UNION_ROOM_KB_PAGE_COUNT)
+ {
+ str = &sp[4];
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ var1 = 8;
+ str[2] = var1;
+ left = var1;
+ if (page == UNION_ROOM_KB_PAGE_EMOJI)
+ left = 6;
+
+ for (i = 0, top = 0; i < UNION_ROOM_KB_ROW_COUNT; i++, top += 12)
+ {
+ if (!gUnionRoomKeyboardText[page][i])
+ return;
+
+ StringCopy(&sp[7], gUnionRoomKeyboardText[page][i]);
+ AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, &sp[4]);
+ }
+ }
+ else
+ {
+ left = 4;
+ for (i = 0, top = 0; i < 10; i++, top += 12)
+ {
+ str2 = sub_81294B0(i);
+ if (GetStringWidth(0, str2, 0) <= 40)
+ {
+ AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, str2);
+ }
+ else
+ {
+ int length = StringLength_Multibyte(str2);
+ do
+ {
+ length--;
+ StringCopyN_Multibyte(&sp[4], str2, length);
+ } while (GetStringWidth(0, &sp[4], 0) > 35);
+
+ AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, &sp[4]);
+ AddTextPrinterParameterized3(2, 0, left + 35, top, sp, TEXT_SPEED_FF, gText_Ellipsis);
+ }
+ }
+ }
+}
+
+bool32 sub_812A980(void)
+{
+ if (gUnknown_203B0E4->unk20 < 56)
+ {
+ gUnknown_203B0E4->unk20 += 12;
+ if (gUnknown_203B0E4->unk20 >= 56)
+ gUnknown_203B0E4->unk20 = 56;
+
+ if (gUnknown_203B0E4->unk20 < 56)
+ {
+ sub_812ADA0(gUnknown_203B0E4->unk20);
+ return TRUE;
+ }
+ }
+
+ sub_812ADF8(gUnknown_203B0E4->unk20);
+ return FALSE;
+}
+
+bool32 sub_812A9C8(void)
+{
+ if (gUnknown_203B0E4->unk20 > 0)
+ {
+ gUnknown_203B0E4->unk20 -= 12;
+ if (gUnknown_203B0E4->unk20 <= 0)
+ gUnknown_203B0E4->unk20 = 0;
+
+ if (gUnknown_203B0E4->unk20 > 0)
+ {
+ sub_812ADA0(gUnknown_203B0E4->unk20);
+ return TRUE;
+ }
+ }
+
+ sub_812ADF8(gUnknown_203B0E4->unk20);
+ return FALSE;
+}
+
+void sub_812AA10(void)
+{
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
+ DrawTextBorderOuter(3, 1, 13);
+ UnionRoomAndTradeMenuPrintOptions(3, 2, 14, 5, gUnknown_845ABEC);
+ Menu_InitCursor(3, 2, 0, 0, 14, 5, GetCurrentKeyboardPage());
+ PutWindowTilemap(3);
+}
+
+void sub_812AA64(void)
+{
+ ClearStdWindowAndFrameToTransparent(3, FALSE);
+ ClearWindowTilemap(3);
+}
+
+void sub_812AA78(u16 row, u8 *str, u8 arg2)
+{
+ u8 color[3];
+ color[0] = 1;
+ color[1] = arg2 * 2 + 2;
+ color[2] = arg2 * 2 + 3;
+ FillWindowPixelRect(0, PIXEL_FILL(1), 0, row * 15, 168, 15);
+ AddTextPrinterParameterized3(0, 2, 0, row * 15, color, TEXT_SPEED_FF, str);
+}
+
+void sub_812AAD4(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(64, 240));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 144));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG2 | WININ_WIN0_BG3
+ | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+}
+
+void sub_812AB8C(void)
+{
+ SetBgTilemapBuffer(0, gUnknown_203B0E4->unk128);
+ SetBgTilemapBuffer(1, gUnknown_203B0E4->unk928);
+ SetBgTilemapBuffer(3, gUnknown_203B0E4->unk1128);
+ SetBgTilemapBuffer(2, gUnknown_203B0E4->unk1928);
+}
+
+void sub_812ABD8(void)
+{
+ RequestDma3Fill(0, (void *)BG_CHAR_ADDR(0), 0x20, 1);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
+ CopyBgTilemapBufferToVram(0);
+}
+
+void sub_812AC08(void)
+{
+ LoadPalette(gUnknown_8EAA9F0, 0x70, 0x20);
+ LoadPalette(gUnknown_845AA24, 0xC0, 0x20);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8EAAA10, 0, 0, 0);
+ CopyToBgTilemapBuffer(1, gUnknown_8EAAA6C, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+}
+
+void sub_812AC58(void)
+{
+ u8 *ptr;
+
+ LoadPalette(gLinkMiscMenu_Pal, 0, 0x20);
+ ptr = DecompressAndCopyTileDataToVram(2, gLinkMiscMenu_Gfx, 0, 0, 0);
+ CopyToBgTilemapBuffer(2, gLinkMiscMenu_Tilemap, 0, 0);
+ CopyBgTilemapBufferToVram(2);
+}
+
+void sub_812AC9C(void)
+{
+ LoadPalette(gUnknown_845AA44, 0x80, 0x20);
+ RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1);
+}
+
+void sub_812ACC0(void)
+{
+ LoadPalette(gUnknown_845AA64, 0xF0, 0x20);
+ PutWindowTilemap(0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ CopyWindowToVram(0, 3);
+}
+
+void sub_812ACEC(void)
+{
+ PutWindowTilemap(2);
+ sub_812A804();
+ CopyWindowToVram(2, 3);
+}
+
+void sub_812AD04(void)
+{
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+}
+
+void sub_812AD20(void)
+{
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
+ TextWindow_SetUserSelectedFrame(3, 1, 0xD0);
+ TextWindow_SetStdFrame0_WithPal(3, 0xA, 0x20);
+ LoadPalette(gTMCaseMainWindowPalette, 0xE0, 0x20);
+}
+
+void sub_812AD50(void)
+{
+ struct ScanlineEffectParams params;
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.dmaDest = &REG_BG1HOFS;
+ params.initState = 1;
+ params.unused9 = 0;
+ gUnknown_203B0E4->unk20 = 0;
+ CpuFastFill(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
+ ScanlineEffect_SetParams(params);
+}
+
+void sub_812ADA0(s16 arg0)
+{
+ CpuFill16(arg0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], 0x120);
+ CpuFill16(0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer] + 0x90, 0x20);
+}
+
+void sub_812ADF8(s16 arg0)
+{
+ CpuFill16(arg0, gScanlineEffectRegBuffers[0], 0x120);
+ CpuFill16(0, gScanlineEffectRegBuffers[0] + 0x90, 0x20);
+ CpuFill16(arg0, gScanlineEffectRegBuffers[0] + 0x3C0, 0x120);
+ CpuFill16(0, gScanlineEffectRegBuffers[0] + 0x450, 0x20);
+}