diff options
Diffstat (limited to 'src/union_room_chat_display.c')
-rw-r--r-- | src/union_room_chat_display.c | 751 |
1 files changed, 386 insertions, 365 deletions
diff --git a/src/union_room_chat_display.c b/src/union_room_chat_display.c index 4bd4be8fe..f43e40368 100644 --- a/src/union_room_chat_display.c +++ b/src/union_room_chat_display.c @@ -11,6 +11,18 @@ #include "union_room_chat_display.h" #include "union_room_chat_objects.h" +#define STDMESSAGE_QUIT_CHATTING 0 +#define STDMESSAGE_REGISTER_WHERE 1 +#define STDMESSAGE_REGISTER_HERE 2 +#define STDMESSAGE_INPUT_TEXT 3 +#define STDMESSAGE_EXITING_CHAT 4 +#define STDMESSAGE_LEADER_LEFT 5 +#define STDMESSAGE_ASK_SAVE 6 +#define STDMESSAGE_ASK_OVERWRITE 7 +#define STDMESSAGE_SAVING_NO_OFF 8 +#define STDMESSAGE_SAVED_THE_GAME 9 +#define STDMESSAGE_WARN_LEADER_LEAVE 10 + struct UnionRoomChat2Subtask { bool32 (*callback)(u8 *); @@ -21,9 +33,9 @@ struct UnionRoomChat2Subtask struct UnionRoomChat2 { struct UnionRoomChat2Subtask subtasks[3]; - u16 unk18; - u16 unk1A; - u16 unk1C; + u16 yesNoMenuWinId; + u16 curLine; + u16 scrollCount; u16 messageWindowId; s16 bg1hofs; u8 expandedPlaceholdersBuffer[0x106]; @@ -35,13 +47,13 @@ struct UnionRoomChat2 u8 unk2148[0x20]; }; -struct Unk845AABC +struct SubtaskInfo { u16 idx; bool32 (*callback)(u8 *); }; -struct Unk845AB64 +struct MessageWindowInfo { const u8 *text; bool8 boxType; @@ -53,63 +65,63 @@ struct Unk845AB64 bool8 widerBox; }; -static EWRAM_DATA struct UnionRoomChat2 * gUnknown_203B0E4 = NULL; - -static void sub_8129BB8(struct UnionRoomChat2 * ptr); -static void sub_8129BC4(void); -static bool32 sub_8129CA0(u8 *state); -static bool32 sub_8129D40(u8 *state); -static bool32 sub_8129D78(u8 *state); -static bool32 sub_8129DB0(u8 *state); -static bool32 sub_8129E1C(u8 *state); -static bool32 sub_8129E28(u8 *state); -static bool32 sub_8129E74(u8 *state); -static bool32 sub_8129EB8(u8 *state); -static bool32 sub_8129F24(u8 *state); -static bool32 sub_8129FCC(u8 *state); -static bool32 sub_812A074(u8 *state); -static bool32 sub_812A0B0(u8 *state); -static bool32 sub_812A18C(u8 *state); -static bool32 sub_812A1B8(u8 *state); -static bool32 sub_812A1FC(u8 *state); -static bool32 sub_812A240(u8 *state); -static bool32 sub_812A294(u8 *state); -static bool32 sub_812A2E4(u8 *state); -static bool32 sub_812A334(u8 *state); -static bool32 sub_812A378(u8 *state); -static bool32 sub_812A3D0(u8 *state); -static bool32 sub_812A420(u8 *state); -static void sub_812A424(u8 a0, u8 a1, u8 a2); -static void sub_812A51C(void); -static void sub_812A544(void); -static void sub_812A578(int a0, u16 a1); -static void sub_812A6F4(void); -static void sub_812A728(void); -static void sub_812A74C(u16 a0, u16 a1, u8 a2); -static void sub_812A778(u16 a0, u8 *a1, u8 a2, u8 a3, u8 a4); -static void sub_812A804(void); -static bool32 sub_812A980(void); -static bool32 sub_812A9C8(void); -static void sub_812AA10(void); -static void sub_812AA64(void); -static void sub_812AA78(u16 a0, u8 *a1, u8 a2); -static void sub_812AAD4(void); -static void sub_812AB8C(void); -static void sub_812ABD8(void); -static void sub_812AC08(void); -static void sub_812AC58(void); -static void sub_812AC9C(void); -static void sub_812ACC0(void); -static void sub_812ACEC(void); -static void sub_812AD04(void); -static void sub_812AD20(void); +static EWRAM_DATA struct UnionRoomChat2 * sWork = NULL; + +static void InitWork(struct UnionRoomChat2 * ptr); +static void UnionRoomChat_ResetDisplaySubtasks(void); +static bool32 DisplaySubtask_LoadGfx(u8 *state); +static bool32 DisplaySubtask_PrintWin3(u8 *state); +static bool32 DisplaySubtask_HideWin3(u8 *state); +static bool32 DisplaySubtask_SwitchPages(u8 *state); +static bool32 DisplaySubtask_MoveSelectorCursorObj(u8 *state); +static bool32 DisplaySubtask_ShowQuitChattingDialog(u8 *state); +static bool32 DisplaySubtask_HideQuitChattingDialog(u8 *state); +static bool32 DisplaySubtask_UpdateMessageBuffer(u8 *state); +static bool32 DisplaySubtask_PrintRegisterWhere(u8 *state); +static bool32 DisplaySubtask_CancelRegister(u8 *state); +static bool32 DisplaySubtask_ReturnToKeyboard(u8 *state); +static bool32 DisplaySubtask_ScrollChat(u8 *state); +static bool32 DisplaySubtask_AnimateSelectorCursorBlink(u8 *state); +static bool32 DisplaySubtask_PrintInputText(u8 *state); +static bool32 DisplaySubtask_PrintExitingChat(u8 *state); +static bool32 DisplaySubtask_PrintLeaderLeft(u8 *state); +static bool32 DisplaySubtask_AskSave(u8 *state); +static bool32 DisplaySubtask_AskOverwriteSave(u8 *state); +static bool32 DisplaySubtask_PrintSavingDontTurnOffPower(u8 *state); +static bool32 DisplaySubtask_PrintSavedTheGame(u8 *state); +static bool32 DisplaySubtask_ShowConfirmLeaderLeaveDialog(u8 *state); +static bool32 DisplaySubtaskDummy(u8 *state); +static void PlaceYesNoMenuAt(u8 a0, u8 a1, u8 a2); +static void HideYesNoMenuWindow(void); +static void DestroyYesNoMenuWindow(void); +static void PlaceStdMessageWindow(int id, u16 bg0vofs); +static void HideStdMessageWindow(void); +static void DestroyStdMessageWindow(void); +static void FillWin1Rect(u16 x, u16 width, u8 fillValue); +static void PrintOnWin1Parameterized(u16 x, u8 *str, u8 bgColor, u8 fgColor, u8 shadowColor); +static void PrintCurrentKeyboardPage(void); +static bool32 AnimateMoveBg1Right(void); +static bool32 AnimateMoveBg1Left(void); +static void PrintKeyboardSwapTextsOnWin3(void); +static void ClearWin3(void); +static void PrintTextOnWin0Colorized(u16 row, u8 *str, u8 colorIdx); +static void ResetGpuBgState(void); +static void SetBgTilemapWorkBuffers(void); +static void ClearBg0(void); +static void LoadUnionRoomChatPanelGfx(void); +static void LoadLinkMiscMenuGfx(void); +static void LoadBg1Pal8(void); +static void LoadWin0(void); +static void LoadWin2(void); +static void LoadWin1(void); +static void LoadWin3(void); static void sub_812AD50(void); -static void sub_812ADA0(s16 a0); -static void sub_812ADF8(s16 a0); +static void FillScanlineEffectWithValue1col(s16 a0); +static void FillScanlineEffectWithValue2col(s16 a0); -static const u16 gUnknown_845AA24[] = INCBIN_U16("graphics/union_room_chat/unk_845AA24.gbapal"); -static const u16 gUnknown_845AA44[] = INCBIN_U16("graphics/union_room_chat/unk_845AA44.gbapal"); -static const u16 gUnknown_845AA64[] = INCBIN_U16("graphics/union_room_chat/unk_845AA64.gbapal"); +static const u16 sUnionRoomChatPanelBgPal_C[] = INCBIN_U16("graphics/union_room_chat/unk_845AA24.gbapal"); +static const u16 sBg1Pal8[] = INCBIN_U16("graphics/union_room_chat/unk_845AA44.gbapal"); +static const u16 sWin0PalF[] = INCBIN_U16("graphics/union_room_chat/unk_845AA64.gbapal"); static const struct BgTemplate gUnknown_845AA84[] = { { @@ -183,32 +195,33 @@ static const struct WindowTemplate gUnknown_845AA94[] = { }, DUMMY_WIN_TEMPLATE }; -static const struct Unk845AABC gUnknown_845AABC[] = { - { 0, sub_8129CA0}, - { 3, sub_8129D40}, - { 4, sub_8129D78}, - { 5, sub_8129DB0}, - { 1, sub_8129E1C}, - { 6, sub_8129E28}, - { 7, sub_8129E74}, - { 8, sub_8129EB8}, - { 9, sub_8129F24}, - {10, sub_8129FCC}, - {11, sub_812A074}, - {12, sub_812A0B0}, - { 2, sub_812A18C}, - {13, sub_812A1B8}, - {18, sub_812A1FC}, - {19, sub_812A240}, - {14, sub_812A294}, - {15, sub_812A2E4}, - {16, sub_812A334}, - {17, sub_812A378}, - {20, sub_812A3D0} +static const struct SubtaskInfo sSubtaskInfo[] = { + {CHATDISPLAYROUTINE_LOADGFX, DisplaySubtask_LoadGfx}, + {CHATDISPLAYROUTINE_SHOWKBSWAPMENU, DisplaySubtask_PrintWin3}, + {CHATDISPLAYROUTINE_HIDEKBSWAPMENU, DisplaySubtask_HideWin3}, + {CHATDISPLAYROUTINE_SWITCHPAGES, DisplaySubtask_SwitchPages}, + {CHATDISPLAYROUTINE_MOVEKBCURSOR, DisplaySubtask_MoveSelectorCursorObj}, + {CHATDISPLAYROUTINE_SHOWQUITCHATTINGDIALOG, DisplaySubtask_ShowQuitChattingDialog}, + {CHATDISPLAYROUTINE_DESTROYSTDMSGANDYESNO, DisplaySubtask_HideQuitChattingDialog}, + {CHATDISPLAYROUTINE_PRINTMSG, DisplaySubtask_UpdateMessageBuffer}, + {CHATDISPLAYROUTINE_PRINTREGISTERWHERE, DisplaySubtask_PrintRegisterWhere}, + {CHATDISPLAYROUTINE_CANCELREGISTER, DisplaySubtask_CancelRegister}, + {CHATDISPLAYROUTINE_RETURNTOKB, DisplaySubtask_ReturnToKeyboard}, + {CHATDISPLAYROUTINE_SCROLLCHAT, DisplaySubtask_ScrollChat}, + {CHATDISPLAYROUTINE_CURSORBLINK, DisplaySubtask_AnimateSelectorCursorBlink}, + {CHATDISPLAYROUTINE_PRINTINPUTTEXT, DisplaySubtask_PrintInputText}, + {CHATDISPLAYROUTINE_PRINTEXITINGCHAT, DisplaySubtask_PrintExitingChat}, + {CHATDISPLAYROUTINE_PRINTLEADERLEFT, DisplaySubtask_PrintLeaderLeft}, + {CHATDISPLAYROUTINE_ASKSAVE, DisplaySubtask_AskSave}, + {CHATDISPLAYROUTINE_ASKOVERWRITESAVE, DisplaySubtask_AskOverwriteSave}, + {CHATDISPLAYROUTINE_PRINTSAVING, DisplaySubtask_PrintSavingDontTurnOffPower}, + {CHATDISPLAYROUTINE_PRINTSAVEDTHEGAME, DisplaySubtask_PrintSavedTheGame}, + {CHATDISPLAYROUTINE_SHOWCONFIRMLEADERLEAVEDIALOG, DisplaySubtask_ShowConfirmLeaderLeaveDialog} }; -static const struct Unk845AB64 gUnknown_845AB64[] = { - { +static const struct MessageWindowInfo sMessageWindowInfo[] = { + + [STDMESSAGE_QUIT_CHATTING] = { .text = gText_QuitChatting, .boxType = 1, .x = 0, @@ -217,7 +230,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = FALSE - }, { + }, + [STDMESSAGE_REGISTER_WHERE] = { .text = gText_RegisterTextWhere, .boxType = 1, .x = 0, @@ -226,7 +240,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = FALSE - }, { + }, + [STDMESSAGE_REGISTER_HERE] = { .text = gText_RegisterTextHere, .boxType = 1, .x = 0, @@ -235,7 +250,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = FALSE - }, { + }, + [STDMESSAGE_INPUT_TEXT] = { .text = gText_InputText, .boxType = 1, .x = 0, @@ -244,7 +260,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = FALSE - }, { + }, + [STDMESSAGE_EXITING_CHAT] = { .text = gText_ExitingTheChat, .boxType = 2, .x = 0, @@ -253,7 +270,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = FALSE - }, { + }, + [STDMESSAGE_LEADER_LEFT] = { .text = gText_LeaderHasLeftEndingChat, .boxType = 2, .x = 0, @@ -262,7 +280,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = TRUE, .widerBox = FALSE - }, { + }, + [STDMESSAGE_ASK_SAVE] = { .text = gText_RegisteredTextChanged_OKtoSave, .boxType = 2, .x = 0, @@ -271,7 +290,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = TRUE - }, { + }, + [STDMESSAGE_ASK_OVERWRITE] = { .text = gText_RegisteredTextChanged_AlreadySavedFile, .boxType = 2, .x = 0, @@ -280,7 +300,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = TRUE - }, { + }, + [STDMESSAGE_SAVING_NO_OFF] = { .text = gText_RegisteredTextChanged_SavingDontTurnOff, .boxType = 2, .x = 0, @@ -289,7 +310,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = FALSE, .widerBox = TRUE - }, { + }, + [STDMESSAGE_SAVED_THE_GAME] = { .text = gText_RegisteredTextChanged_SavedTheGame, .boxType = 2, .x = 0, @@ -298,7 +320,8 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { .lineSpacing = 2, .expandPlaceholders = TRUE, .widerBox = TRUE - }, { + }, + [STDMESSAGE_WARN_LEADER_LEAVE] = { .text = gText_IfLeaderLeavesChatWillEnd, .boxType = 2, .x = 0, @@ -312,7 +335,7 @@ static const struct Unk845AB64 gUnknown_845AB64[] = { static const u8 gText_Ellipsis[] = _("…"); -static const struct MenuAction gUnknown_845ABEC[] = { +static const struct MenuAction sKeyboardSwapTexts[] = { {gText_Upper}, {gText_Lower}, {gText_Symbols}, @@ -320,19 +343,19 @@ static const struct MenuAction gUnknown_845ABEC[] = { {gText_Exit} }; -bool8 sub_8129B14(void) +bool8 UnionRoomChat_TryAllocGraphicsWork(void) { - gUnknown_203B0E4 = Alloc(sizeof(*gUnknown_203B0E4)); - if (gUnknown_203B0E4 && sub_812AE70()) + sWork = Alloc(sizeof(*sWork)); + if (sWork && UnionRoomChat_TryAllocSpriteWork()) { ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_845AA84, NELEMS(gUnknown_845AA84)); InitWindows(gUnknown_845AA94); ResetTempTileDataBuffers(); sub_812AD50(); - sub_8129BB8(gUnknown_203B0E4); - sub_8129BC4(); - sub_8129C34(0, 0); + InitWork(sWork); + UnionRoomChat_ResetDisplaySubtasks(); + UnionRoomChat_StartDisplaySubtask(0, 0); return TRUE; } else @@ -341,80 +364,80 @@ bool8 sub_8129B14(void) } } -bool32 sub_8129B78(void) +bool32 UnionRoomChat_RunDisplaySubtask0(void) { - return sub_8129C8C(0); + return RunDisplaySubtask(0); } -void sub_8129B88(void) +void UnionRoomChat_FreeGraphicsWork(void) { - sub_812AEB0(); - if (gUnknown_203B0E4) - FREE_AND_SET_NULL(gUnknown_203B0E4); + UnionRoomChat_FreeSpriteWork(); + if (sWork != NULL) + FREE_AND_SET_NULL(sWork); FreeAllWindowBuffers(); gScanlineEffect.state = 3; } -static void sub_8129BB8(struct UnionRoomChat2 *arg0) +static void InitWork(struct UnionRoomChat2 *arg0) { - arg0->unk18 = 0xFF; + arg0->yesNoMenuWinId = 0xFF; arg0->messageWindowId = 0xFF; - arg0->unk1A = 0; + arg0->curLine = 0; } -void sub_8129BC4(void) +void UnionRoomChat_ResetDisplaySubtasks(void) { int i; - if (gUnknown_203B0E4 == NULL) + if (sWork == NULL) return; for (i = 0; i < 3; i++) { - gUnknown_203B0E4->subtasks[i].callback = sub_812A420; - gUnknown_203B0E4->subtasks[i].active = FALSE; - gUnknown_203B0E4->subtasks[i].state = 0; + sWork->subtasks[i].callback = DisplaySubtaskDummy; + sWork->subtasks[i].active = FALSE; + sWork->subtasks[i].state = 0; } } -void sub_8129BFC(void) +void UnionRoomChat_RunDisplaySubtasks(void) { int i; - if (gUnknown_203B0E4 == NULL) + if (sWork == NULL) return; for (i = 0; i < 3; i++) { - if (gUnknown_203B0E4->subtasks[i].active) - gUnknown_203B0E4->subtasks[i].active = gUnknown_203B0E4->subtasks[i].callback(&gUnknown_203B0E4->subtasks[i].state); + if (sWork->subtasks[i].active) + sWork->subtasks[i].active = sWork->subtasks[i].callback(&sWork->subtasks[i].state); } } -void sub_8129C34(u16 arg0, u8 arg1) +void UnionRoomChat_StartDisplaySubtask(u16 arg0, u8 arg1) { int i; - gUnknown_203B0E4->subtasks[arg1].callback = sub_812A420; - for (i = 0; i < NELEMS(gUnknown_845AABC); i++) + sWork->subtasks[arg1].callback = DisplaySubtaskDummy; + for (i = 0; i < NELEMS(sSubtaskInfo); i++) { - if (gUnknown_845AABC[i].idx == arg0) + if (sSubtaskInfo[i].idx == arg0) { - gUnknown_203B0E4->subtasks[arg1].callback = gUnknown_845AABC[i].callback; - gUnknown_203B0E4->subtasks[arg1].active = TRUE; - gUnknown_203B0E4->subtasks[arg1].state = 0; + sWork->subtasks[arg1].callback = sSubtaskInfo[i].callback; + sWork->subtasks[arg1].active = TRUE; + sWork->subtasks[arg1].state = 0; break; } } } -bool8 sub_8129C8C(u8 arg0) +bool8 RunDisplaySubtask(u8 arg0) { - return gUnknown_203B0E4->subtasks[arg0].active; + return sWork->subtasks[arg0].active; } -static bool32 sub_8129CA0(u8 *state) +static bool32 DisplaySubtask_LoadGfx(u8 *state) { if (FreeTempTileDataBuffersIfPossible() == TRUE) return TRUE; @@ -422,33 +445,33 @@ static bool32 sub_8129CA0(u8 *state) switch (*state) { case 0: - sub_812AAD4(); - sub_812AB8C(); + ResetGpuBgState(); + SetBgTilemapWorkBuffers(); break; case 1: - sub_812ABD8(); + ClearBg0(); break; case 2: - sub_812AC08(); + LoadUnionRoomChatPanelGfx(); break; case 3: - sub_812AC58(); + LoadLinkMiscMenuGfx(); break; case 4: - sub_812AC9C(); + LoadBg1Pal8(); break; case 5: - sub_812ACC0(); - sub_812ACEC(); - sub_812AD20(); - sub_812AD04(); + LoadWin0(); + LoadWin2(); + LoadWin3(); + LoadWin1(); break; case 6: if (!IsDma3ManagerBusyWithBgCopy()) { - sub_812AEC8(); - sub_812B048(); - sub_812B100(); + UnionRoomChat_CreateSelectorCursorObj(); + UnionRoomChat_SpawnTextEntryPointerSprites(); + CreatePageSwitchUISprites(); } break; default: @@ -459,12 +482,12 @@ static bool32 sub_8129CA0(u8 *state) return TRUE; } -static bool32 sub_8129D40(u8 *state) +static bool32 DisplaySubtask_PrintWin3(u8 *state) { switch (*state) { case 0: - sub_812AA10(); + PrintKeyboardSwapTextsOnWin3(); CopyWindowToVram(3, 3); break; case 1: @@ -475,12 +498,12 @@ static bool32 sub_8129D40(u8 *state) return TRUE; } -static bool32 sub_8129D78(u8 *state) +static bool32 DisplaySubtask_HideWin3(u8 *state) { switch (*state) { case 0: - sub_812AA64(); + ClearWin3(); CopyWindowToVram(3, 3); break; case 1: @@ -491,16 +514,16 @@ static bool32 sub_8129D78(u8 *state) return TRUE; } -static bool32 sub_8129DB0(u8 *state) +static bool32 DisplaySubtask_SwitchPages(u8 *state) { switch (*state) { case 0: - sub_812AEFC(TRUE); - if (sub_812A980()) + UnionRoomChat_ToggleSelectorCursorObjVisibility(TRUE); + if (AnimateMoveBg1Right()) return TRUE; - sub_812A804(); + PrintCurrentKeyboardPage(); CopyWindowToVram(2, 2); break; case 1: @@ -508,12 +531,12 @@ static bool32 sub_8129DB0(u8 *state) return TRUE; break; case 2: - if (sub_812A9C8()) + if (AnimateMoveBg1Left()) return TRUE; - sub_812AF1C(); - sub_812AEFC(FALSE); - sub_812B160(); + UnionRoomChat_MoveSelectorCursorObj(); + UnionRoomChat_ToggleSelectorCursorObjVisibility(FALSE); + UpdateVisibleUnionRoomChatIcon(); return FALSE; } @@ -521,20 +544,20 @@ static bool32 sub_8129DB0(u8 *state) return TRUE; } -static bool32 sub_8129E1C(u8 *state) +static bool32 DisplaySubtask_MoveSelectorCursorObj(u8 *state) { - sub_812AF1C(); + UnionRoomChat_MoveSelectorCursorObj(); return FALSE; } -static bool32 sub_8129E28(u8 *state) +static bool32 DisplaySubtask_ShowQuitChattingDialog(u8 *state) { switch (*state) { case 0: - sub_812A578(0, 0); - sub_812A424(23, 11, 1); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_QUIT_CHATTING, 0); + PlaceYesNoMenuAt(23, 11, 1); + CopyWindowToVram(sWork->messageWindowId, 3); break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -544,21 +567,21 @@ static bool32 sub_8129E28(u8 *state) return TRUE; } -static bool32 sub_8129E74(u8 *state) +static bool32 DisplaySubtask_HideQuitChattingDialog(u8 *state) { switch (*state) { case 0: - sub_812A6F4(); - sub_812A51C(); + HideStdMessageWindow(); + HideYesNoMenuWindow(); CopyBgTilemapBufferToVram(0); break; case 1: if (IsDma3ManagerBusyWithBgCopy()) return TRUE; - sub_812A728(); - sub_812A544(); + DestroyStdMessageWindow(); + DestroyYesNoMenuWindow(); return FALSE; } @@ -566,24 +589,24 @@ static bool32 sub_8129E74(u8 *state) return TRUE; } -static bool32 sub_8129EB8(u8 *state) +static bool32 DisplaySubtask_UpdateMessageBuffer(u8 *state) { - u32 var0, var1; + u32 start, length; u8 *str; switch (*state) { case 0: - sub_8129730(&var0, &var1); - sub_812A74C(var0, var1, 0); - str = sub_8129714(); - sub_812A778(0, str, 3, 1, 2); + UnionRoomChat_GetBufferSelectionRegion(&start, &length); + FillWin1Rect(start, length, PIXEL_FILL(0)); + str = UnionRoomChat_GetMessageEntryBuffer(); + PrintOnWin1Parameterized(0, str, 3, 1, 2); CopyWindowToVram(1, 2); break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { - sub_812B160(); + UpdateVisibleUnionRoomChatIcon(); return FALSE; } return TRUE; @@ -593,7 +616,7 @@ static bool32 sub_8129EB8(u8 *state) return TRUE; } -static bool32 sub_8129F24(u8 *state) +static bool32 DisplaySubtask_PrintRegisterWhere(u8 *state) { u16 var0; u8 *str; @@ -602,18 +625,18 @@ static bool32 sub_8129F24(u8 *state) switch (*state) { case 0: - var0 = sub_8129788(); - str = sub_8129758(); + var0 = UnionRoomChat_GetNumCharsInMessageEntryBuffer(); + str = UnionRoomChat_GetEndOfMessageEntryBuffer(); length = StringLength_Multibyte(str); - sub_812A74C(var0, length, PIXEL_FILL(6)); - sub_812A778(var0, str, 0, 4, 5); + FillWin1Rect(var0, length, PIXEL_FILL(6)); + PrintOnWin1Parameterized(var0, str, 0, 4, 5); CopyWindowToVram(1, 2); break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { - sub_812A578(1, 16); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_REGISTER_WHERE, 16); + CopyWindowToVram(sWork->messageWindowId, 3); } else { @@ -622,7 +645,7 @@ static bool32 sub_8129F24(u8 *state) break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) - sub_812AF8C(1); + UnionRoomChat_UpdateObjPalCycle(1); else return TRUE; break; @@ -634,27 +657,27 @@ static bool32 sub_8129F24(u8 *state) return TRUE; } -static bool32 sub_8129FCC(u8 *state) +static bool32 DisplaySubtask_CancelRegister(u8 *state) { - u16 var0; + u16 x; u8 *str; u16 length; switch (*state) { case 0: - var0 = sub_8129788(); - str = sub_8129758(); + x = UnionRoomChat_GetNumCharsInMessageEntryBuffer(); + str = UnionRoomChat_GetEndOfMessageEntryBuffer(); length = StringLength_Multibyte(str); - sub_812A74C(var0, length, PIXEL_FILL(0)); - sub_812A778(var0, str, 3, 1, 2); + FillWin1Rect(x, length, PIXEL_FILL(0)); + PrintOnWin1Parameterized(x, str, 3, 1, 2); CopyWindowToVram(1, 2); break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { - sub_812A6F4(); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + HideStdMessageWindow(); + CopyWindowToVram(sWork->messageWindowId, 3); } else { @@ -664,8 +687,8 @@ static bool32 sub_8129FCC(u8 *state) case 2: if (!IsDma3ManagerBusyWithBgCopy()) { - sub_812AF8C(0); - sub_812A728(); + UnionRoomChat_UpdateObjPalCycle(0); + DestroyStdMessageWindow(); } else { @@ -680,12 +703,12 @@ static bool32 sub_8129FCC(u8 *state) return TRUE; } -static bool32 sub_812A074(u8 *state) +static bool32 DisplaySubtask_ReturnToKeyboard(u8 *state) { switch (*state) { case 0: - sub_812A804(); + PrintCurrentKeyboardPage(); CopyWindowToVram(2, 2); (*state)++; break; @@ -699,48 +722,48 @@ static bool32 sub_812A074(u8 *state) return TRUE; } -static bool32 sub_812A0B0(u8 *state) +static bool32 DisplaySubtask_ScrollChat(u8 *state) { - u16 var0; + u16 row; u8 *str; - u8 var1; + u8 colorIdx; switch (*state) { case 0: - var0 = gUnknown_203B0E4->unk1A; - str = sub_81297C4(); - var1 = sub_81297D0(); - sub_812AA78(var0, str, var1); + row = sWork->curLine; + str = UnionRoomChat_GetLastReceivedMessage(); + colorIdx = UnionRoomChat_GetReceivedPlayerIndex(); + PrintTextOnWin0Colorized(row, str, colorIdx); CopyWindowToVram(0, 2); break; case 1: if (IsDma3ManagerBusyWithBgCopy()) return TRUE; - if (gUnknown_203B0E4->unk1A < 9) + if (sWork->curLine < 9) { - gUnknown_203B0E4->unk1A++; + sWork->curLine++; *state = 4; return FALSE; } else { - gUnknown_203B0E4->unk1C = 0; + sWork->scrollCount = 0; (*state)++; } // fall through case 2: ScrollWindow(0, 0, 5, PIXEL_FILL(1)); CopyWindowToVram(0, 2); - gUnknown_203B0E4->unk1C++; + sWork->scrollCount++; (*state)++; // fall through case 3: if (IsDma3ManagerBusyWithBgCopy()) return TRUE; - if (gUnknown_203B0E4->unk1C < 3) + if (sWork->scrollCount < 3) { (*state)--; return TRUE; @@ -756,28 +779,28 @@ static bool32 sub_812A0B0(u8 *state) return TRUE; } -static bool32 sub_812A18C(u8 *state) +static bool32 DisplaySubtask_AnimateSelectorCursorBlink(u8 *state) { switch (*state) { case 0: - sub_812AFC0(); + UnionRoomChat_SetSelectorCursorClosedImage(); (*state)++; break; case 1: - return sub_812AFFC(); + return UnionRoomChat_AnimateSelectorCursorReopen(); } return TRUE; } -static bool32 sub_812A1B8(u8 *state) +static bool32 DisplaySubtask_PrintInputText(u8 *state) { switch (*state) { case 0: - sub_812A578(3, 16); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_INPUT_TEXT, 16); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -787,13 +810,13 @@ static bool32 sub_812A1B8(u8 *state) return TRUE; } -static bool32 sub_812A1FC(u8 *state) +static bool32 DisplaySubtask_PrintExitingChat(u8 *state) { switch (*state) { case 0: - sub_812A578(4, 0); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_EXITING_CHAT, 0); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -803,7 +826,7 @@ static bool32 sub_812A1FC(u8 *state) return TRUE; } -static bool32 sub_812A240(u8 *state) +static bool32 DisplaySubtask_PrintLeaderLeft(u8 *state) { u8 *str; @@ -811,10 +834,10 @@ static bool32 sub_812A240(u8 *state) { case 0: DynamicPlaceholderTextUtil_Reset(); - str = sub_8129814(); + str = UnionRoomChat_GetNameOfPlayerWhoDisbandedChat(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, str); - sub_812A578(5, 0); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_LEADER_LEFT, 0); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -824,14 +847,14 @@ static bool32 sub_812A240(u8 *state) return TRUE; } -static bool32 sub_812A294(u8 *state) +static bool32 DisplaySubtask_AskSave(u8 *state) { switch (*state) { case 0: - sub_812A578(6, 0); - sub_812A424(23, 10, 1); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_ASK_SAVE, 0); + PlaceYesNoMenuAt(23, 10, 1); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -841,14 +864,14 @@ static bool32 sub_812A294(u8 *state) return TRUE; } -static bool32 sub_812A2E4(u8 *state) +static bool32 DisplaySubtask_AskOverwriteSave(u8 *state) { switch (*state) { case 0: - sub_812A578(7, 0); - sub_812A424(23, 10, 1); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_ASK_OVERWRITE, 0); + PlaceYesNoMenuAt(23, 10, 1); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -858,13 +881,13 @@ static bool32 sub_812A2E4(u8 *state) return TRUE; } -static bool32 sub_812A334(u8 *state) +static bool32 DisplaySubtask_PrintSavingDontTurnOffPower(u8 *state) { switch (*state) { case 0: - sub_812A578(8, 0); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_SAVING_NO_OFF, 0); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -874,15 +897,15 @@ static bool32 sub_812A334(u8 *state) return TRUE; } -static bool32 sub_812A378(u8 *state) +static bool32 DisplaySubtask_PrintSavedTheGame(u8 *state) { switch (*state) { case 0: DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); - sub_812A578(9, 0); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_SAVED_THE_GAME, 0); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -892,14 +915,14 @@ static bool32 sub_812A378(u8 *state) return TRUE; } -static bool32 sub_812A3D0(u8 *state) +static bool32 DisplaySubtask_ShowConfirmLeaderLeaveDialog(u8 *state) { switch (*state) { case 0: - sub_812A578(10, 0); - sub_812A424(23, 10, 1); - CopyWindowToVram(gUnknown_203B0E4->messageWindowId, 3); + PlaceStdMessageWindow(STDMESSAGE_WARN_LEADER_LEAVE, 0); + PlaceYesNoMenuAt(23, 10, 1); + CopyWindowToVram(sWork->messageWindowId, 3); (*state)++; break; case 1: @@ -909,12 +932,12 @@ static bool32 sub_812A3D0(u8 *state) return TRUE; } -static bool32 sub_812A420(u8 *arg0) +static bool32 DisplaySubtaskDummy(u8 *arg0) { return FALSE; } -static void sub_812A424(u8 left, u8 top, u8 initialCursorPos) +static void PlaceYesNoMenuAt(u8 left, u8 top, u8 initialCursorPos) { struct WindowTemplate template; template.bg = 0; @@ -923,43 +946,43 @@ static void sub_812A424(u8 left, u8 top, u8 initialCursorPos) template.width = 6; template.height = 4; template.paletteNum = 14; - template.baseBlock = 0x52; - gUnknown_203B0E4->unk18 = AddWindow(&template); - if (gUnknown_203B0E4->unk18 != 0xFF) + template.baseBlock = 0x052; + sWork->yesNoMenuWinId = AddWindow(&template); + if (sWork->yesNoMenuWinId != 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); + FillWindowPixelBuffer(sWork->yesNoMenuWinId, PIXEL_FILL(1)); + PutWindowTilemap(sWork->yesNoMenuWinId); + AddTextPrinterParameterized(sWork->yesNoMenuWinId, 2, gText_Yes, 8, 2, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(sWork->yesNoMenuWinId, 2, gText_No, 8, 16, TEXT_SPEED_FF, NULL); + DrawTextBorderOuter(sWork->yesNoMenuWinId, 1, 13); + Menu_InitCursor(sWork->yesNoMenuWinId, 2, 0, 2, 14, 2, initialCursorPos); } } -static void sub_812A51C(void) +static void HideYesNoMenuWindow(void) { - if (gUnknown_203B0E4->unk18 != 0xFF) + if (sWork->yesNoMenuWinId != 0xFF) { - ClearStdWindowAndFrameToTransparent(gUnknown_203B0E4->unk18, FALSE); - ClearWindowTilemap(gUnknown_203B0E4->unk18); + ClearStdWindowAndFrameToTransparent(sWork->yesNoMenuWinId, FALSE); + ClearWindowTilemap(sWork->yesNoMenuWinId); } } -static void sub_812A544(void) +static void DestroyYesNoMenuWindow(void) { - if (gUnknown_203B0E4->unk18 != 0xFF) + if (sWork->yesNoMenuWinId != 0xFF) { - RemoveWindow(gUnknown_203B0E4->unk18); - gUnknown_203B0E4->unk18 = 0xFF; + RemoveWindow(sWork->yesNoMenuWinId); + sWork->yesNoMenuWinId = 0xFF; } } -s8 sub_812A568(void) +s8 UnionRoomChat_ProcessInput(void) { return Menu_ProcessInput(); } -static void sub_812A578(int arg0, u16 arg1) +static void PlaceStdMessageWindow(int id, u16 bg0vofs) { const u8 *str; int windowId; @@ -971,43 +994,43 @@ static void sub_812A578(int arg0, u16 arg1) template.height = 4; template.paletteNum = 14; template.baseBlock = 0x06A; - if (gUnknown_845AB64[arg0].widerBox) + if (sMessageWindowInfo[id].widerBox) { template.tilemapLeft -= 7; template.width += 7; } - gUnknown_203B0E4->messageWindowId = AddWindow(&template); - windowId = gUnknown_203B0E4->messageWindowId; - if (gUnknown_203B0E4->messageWindowId == 0xFF) + sWork->messageWindowId = AddWindow(&template); + windowId = sWork->messageWindowId; + if (sWork->messageWindowId == 0xFF) return; - if (gUnknown_845AB64[arg0].expandPlaceholders) + if (sMessageWindowInfo[id].expandPlaceholders) { - DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203B0E4->expandedPlaceholdersBuffer, gUnknown_845AB64[arg0].text); - str = gUnknown_203B0E4->expandedPlaceholdersBuffer; + DynamicPlaceholderTextUtil_ExpandPlaceholders(sWork->expandedPlaceholdersBuffer, sMessageWindowInfo[id].text); + str = sWork->expandedPlaceholdersBuffer; } else { - str = gUnknown_845AB64[arg0].text; + str = sMessageWindowInfo[id].text; } - ChangeBgY(0, arg1 * 256, 0); + ChangeBgY(0, bg0vofs * 256, 0); FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); - if (gUnknown_845AB64[arg0].boxType == 1) + if (sMessageWindowInfo[id].boxType == 1) { DrawTextBorderInner(windowId, 0xA, 2); AddTextPrinterParameterized5( windowId, 2, str, - gUnknown_845AB64[arg0].x + 8, - gUnknown_845AB64[arg0].y + 8, + sMessageWindowInfo[id].x + 8, + sMessageWindowInfo[id].y + 8, TEXT_SPEED_FF, NULL, - gUnknown_845AB64[arg0].letterSpacing, - gUnknown_845AB64[arg0].lineSpacing); + sMessageWindowInfo[id].letterSpacing, + sMessageWindowInfo[id].lineSpacing); } else { @@ -1016,94 +1039,92 @@ static void sub_812A578(int arg0, u16 arg1) windowId, 2, str, - gUnknown_845AB64[arg0].x, - gUnknown_845AB64[arg0].y, + sMessageWindowInfo[id].x, + sMessageWindowInfo[id].y, TEXT_SPEED_FF, NULL, - gUnknown_845AB64[arg0].letterSpacing, - gUnknown_845AB64[arg0].lineSpacing); + sMessageWindowInfo[id].letterSpacing, + sMessageWindowInfo[id].lineSpacing); } - gUnknown_203B0E4->messageWindowId = windowId; + sWork->messageWindowId = windowId; } -static void sub_812A6F4(void) +static void HideStdMessageWindow(void) { - if (gUnknown_203B0E4->messageWindowId != 0xFF) + if (sWork->messageWindowId != 0xFF) { - ClearStdWindowAndFrameToTransparent(gUnknown_203B0E4->messageWindowId, FALSE); - ClearWindowTilemap(gUnknown_203B0E4->messageWindowId); + ClearStdWindowAndFrameToTransparent(sWork->messageWindowId, FALSE); + ClearWindowTilemap(sWork->messageWindowId); } ChangeBgY(0, 0, 0); } -static void sub_812A728(void) +static void DestroyStdMessageWindow(void) { - if (gUnknown_203B0E4->messageWindowId != 0xFF) + if (sWork->messageWindowId != 0xFF) { - RemoveWindow(gUnknown_203B0E4->messageWindowId); - gUnknown_203B0E4->messageWindowId = 0xFF; + RemoveWindow(sWork->messageWindowId); + sWork->messageWindowId = 0xFF; } } -static void sub_812A74C(u16 x, u16 width, u8 fillValue) +static void FillWin1Rect(u16 x, u16 width, u8 fillValue) { FillWindowPixelRect(1, fillValue, x * 8, 1, width * 8, 14); } -static void sub_812A778(u16 x, u8 *str, u8 fillValue, u8 arg3, u8 arg4) +static void PrintOnWin1Parameterized(u16 x, u8 *str, u8 bgColor, u8 fgColor, u8 shadowColor) { - 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); + u8 color[3]; + u8 strbuf[35]; + + if (bgColor != 0) + FillWin1Rect(x, UnionRoomChat_GetMessageEntryCursorPosition() - x, bgColor); + + color[0] = bgColor; + color[1] = fgColor; + color[2] = shadowColor; + strbuf[0] = EXT_CTRL_CODE_BEGIN; + strbuf[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + strbuf[2] = 8; + StringCopy(&strbuf[3], str); + AddTextPrinterParameterized3(1, 2, x * 8, 1, color, TEXT_SPEED_FF, strbuf); } -static void sub_812A804(void) +static void PrintCurrentKeyboardPage(void) { u8 page; int i; - int var1; u16 left; u16 top; - u8 sp[52]; - u8 *str; + u8 color[3]; + u8 str[45]; u8 *str2; FillWindowPixelBuffer(2, PIXEL_FILL(15)); page = GetCurrentKeyboardPage(); - sp[0] = 0; - sp[1] = 14; - sp[2] = 13; + color[0] = 0; + color[1] = 14; + color[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; + str[2] = 8; + if (page == UNION_ROOM_KB_PAGE_EMOJI) left = 6; - + else + left = 8; 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]); + StringCopy(&str[3], gUnionRoomKeyboardText[page][i]); + AddTextPrinterParameterized3(2, 0, left, top, color, TEXT_SPEED_FF, str); } } else @@ -1111,10 +1132,10 @@ static void sub_812A804(void) left = 4; for (i = 0, top = 0; i < 10; i++, top += 12) { - str2 = sub_81294B0(i); + str2 = UnionRoomChat_GetWorkRegisteredText(i); if (GetStringWidth(0, str2, 0) <= 40) { - AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, str2); + AddTextPrinterParameterized3(2, 0, left, top, color, TEXT_SPEED_FF, str2); } else { @@ -1122,80 +1143,80 @@ static void sub_812A804(void) do { length--; - StringCopyN_Multibyte(&sp[4], str2, length); - } while (GetStringWidth(0, &sp[4], 0) > 35); + StringCopyN_Multibyte(str, str2, length); + } while (GetStringWidth(0, str, 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); + AddTextPrinterParameterized3(2, 0, left, top, color, TEXT_SPEED_FF, str); + AddTextPrinterParameterized3(2, 0, left + 35, top, color, TEXT_SPEED_FF, gText_Ellipsis); } } } } -static bool32 sub_812A980(void) +static bool32 AnimateMoveBg1Right(void) { - if (gUnknown_203B0E4->bg1hofs < 56) + if (sWork->bg1hofs < 56) { - gUnknown_203B0E4->bg1hofs += 12; - if (gUnknown_203B0E4->bg1hofs >= 56) - gUnknown_203B0E4->bg1hofs = 56; + sWork->bg1hofs += 12; + if (sWork->bg1hofs >= 56) + sWork->bg1hofs = 56; - if (gUnknown_203B0E4->bg1hofs < 56) + if (sWork->bg1hofs < 56) { - sub_812ADA0(gUnknown_203B0E4->bg1hofs); + FillScanlineEffectWithValue1col(sWork->bg1hofs); return TRUE; } } - sub_812ADF8(gUnknown_203B0E4->bg1hofs); + FillScanlineEffectWithValue2col(sWork->bg1hofs); return FALSE; } -static bool32 sub_812A9C8(void) +static bool32 AnimateMoveBg1Left(void) { - if (gUnknown_203B0E4->bg1hofs > 0) + if (sWork->bg1hofs > 0) { - gUnknown_203B0E4->bg1hofs -= 12; - if (gUnknown_203B0E4->bg1hofs <= 0) - gUnknown_203B0E4->bg1hofs = 0; + sWork->bg1hofs -= 12; + if (sWork->bg1hofs <= 0) + sWork->bg1hofs = 0; - if (gUnknown_203B0E4->bg1hofs > 0) + if (sWork->bg1hofs > 0) { - sub_812ADA0(gUnknown_203B0E4->bg1hofs); + FillScanlineEffectWithValue1col(sWork->bg1hofs); return TRUE; } } - sub_812ADF8(gUnknown_203B0E4->bg1hofs); + FillScanlineEffectWithValue2col(sWork->bg1hofs); return FALSE; } -static void sub_812AA10(void) +static void PrintKeyboardSwapTextsOnWin3(void) { FillWindowPixelBuffer(3, PIXEL_FILL(1)); DrawTextBorderOuter(3, 1, 13); - UnionRoomAndTradeMenuPrintOptions(3, 2, 14, 5, gUnknown_845ABEC); + UnionRoomAndTradeMenuPrintOptions(3, 2, 14, 5, sKeyboardSwapTexts); Menu_InitCursor(3, 2, 0, 0, 14, 5, GetCurrentKeyboardPage()); PutWindowTilemap(3); } -static void sub_812AA64(void) +static void ClearWin3(void) { ClearStdWindowAndFrameToTransparent(3, FALSE); ClearWindowTilemap(3); } -static void sub_812AA78(u16 row, u8 *str, u8 arg2) +static void PrintTextOnWin0Colorized(u16 row, u8 *str, u8 colorIdx) { u8 color[3]; color[0] = 1; - color[1] = arg2 * 2 + 2; - color[2] = arg2 * 2 + 3; + color[1] = colorIdx * 2 + 2; + color[2] = colorIdx * 2 + 3; FillWindowPixelRect(0, PIXEL_FILL(1), 0, row * 15, 168, 15); AddTextPrinterParameterized3(0, 2, 0, row * 15, color, TEXT_SPEED_FF, str); } -static void sub_812AAD4(void) +static void ResetGpuBgState(void) { ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -1220,31 +1241,31 @@ static void sub_812AAD4(void) SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); } -static void sub_812AB8C(void) +static void SetBgTilemapWorkBuffers(void) { - SetBgTilemapBuffer(0, gUnknown_203B0E4->bg0Buffer); - SetBgTilemapBuffer(1, gUnknown_203B0E4->bg1Buffer); - SetBgTilemapBuffer(3, gUnknown_203B0E4->bg3Buffer); - SetBgTilemapBuffer(2, gUnknown_203B0E4->bg2Buffer); + SetBgTilemapBuffer(0, sWork->bg0Buffer); + SetBgTilemapBuffer(1, sWork->bg1Buffer); + SetBgTilemapBuffer(3, sWork->bg3Buffer); + SetBgTilemapBuffer(2, sWork->bg2Buffer); } -static void sub_812ABD8(void) +static void ClearBg0(void) { RequestDma3Fill(0, (void *)BG_CHAR_ADDR(0), 0x20, 1); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); CopyBgTilemapBufferToVram(0); } -static void sub_812AC08(void) +static void LoadUnionRoomChatPanelGfx(void) { - LoadPalette(gUnknown_8EAA9F0, 0x70, 0x20); - LoadPalette(gUnknown_845AA24, 0xC0, 0x20); - DecompressAndCopyTileDataToVram(1, gUnknown_8EAAA10, 0, 0, 0); - CopyToBgTilemapBuffer(1, gUnknown_8EAAA6C, 0, 0); + LoadPalette(gUnionRoomChatPanelBgPal_7, 0x70, 0x20); + LoadPalette(sUnionRoomChatPanelBgPal_C, 0xC0, 0x20); + DecompressAndCopyTileDataToVram(1, gUnionRoomChatPanelBgTiles, 0, 0, 0); + CopyToBgTilemapBuffer(1, gUnionRoomChatPanelBgMap, 0, 0); CopyBgTilemapBufferToVram(1); } -static void sub_812AC58(void) +static void LoadLinkMiscMenuGfx(void) { u8 *ptr; @@ -1254,35 +1275,35 @@ static void sub_812AC58(void) CopyBgTilemapBufferToVram(2); } -static void sub_812AC9C(void) +static void LoadBg1Pal8(void) { - LoadPalette(gUnknown_845AA44, 0x80, 0x20); + LoadPalette(sBg1Pal8, 0x80, 0x20); RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1); } -static void sub_812ACC0(void) +static void LoadWin0(void) { - LoadPalette(gUnknown_845AA64, 0xF0, 0x20); + LoadPalette(sWin0PalF, 0xF0, 0x20); PutWindowTilemap(0); FillWindowPixelBuffer(0, PIXEL_FILL(1)); CopyWindowToVram(0, 3); } -static void sub_812ACEC(void) +static void LoadWin2(void) { PutWindowTilemap(2); - sub_812A804(); + PrintCurrentKeyboardPage(); CopyWindowToVram(2, 3); } -static void sub_812AD04(void) +static void LoadWin1(void) { FillWindowPixelBuffer(1, PIXEL_FILL(0)); PutWindowTilemap(1); CopyWindowToVram(1, 3); } -static void sub_812AD20(void) +static void LoadWin3(void) { FillWindowPixelBuffer(3, PIXEL_FILL(1)); TextWindow_SetUserSelectedFrame(3, 1, 0xD0); @@ -1297,18 +1318,18 @@ static void sub_812AD50(void) params.dmaDest = ®_BG1HOFS; params.initState = 1; params.unused9 = 0; - gUnknown_203B0E4->bg1hofs = 0; + sWork->bg1hofs = 0; CpuFastFill(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); ScanlineEffect_SetParams(params); } -static void sub_812ADA0(s16 arg0) +static void FillScanlineEffectWithValue1col(s16 arg0) { CpuFill16(arg0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], 0x120); CpuFill16(0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer] + 0x90, 0x20); } -static void sub_812ADF8(s16 arg0) +static void FillScanlineEffectWithValue2col(s16 arg0) { CpuFill16(arg0, gScanlineEffectRegBuffers[0], 0x120); CpuFill16(0, gScanlineEffectRegBuffers[0] + 0x90, 0x20); |