Merge pull request #1855 from GriffinRichards/doc-chat

Add/correct some union room chat documentation
This commit is contained in:
GriffinR 2023-02-27 13:25:05 -05:00 committed by GitHub
commit adf28c2f63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 43 additions and 58 deletions

View File

Before

Width:  |  Height:  |  Size: 189 B

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 B

After

Width:  |  Height:  |  Size: 177 B

View File

@ -1,19 +0,0 @@
JASC-PAL
0100
16
156 197 98
41 131 222
0 82 172
197 255 106
172 230 49
246 246 213
255 49 49
255 148 148
131 164 213
238 238 90
65 65 65
115 115 115
172 172 172
230 230 255
0 0 0
255 255 255

View File

@ -4992,10 +4992,10 @@ extern const u32 gUsePokeblockCondition_Gfx[];
extern const u16 gUnionRoomChat_Background_Pal[]; extern const u16 gUnionRoomChat_Background_Pal[];
extern const u32 gUnionRoomChat_Background_Gfx[]; extern const u32 gUnionRoomChat_Background_Gfx[];
extern const u32 gUnionRoomChat_Background_Tilemap[]; extern const u32 gUnionRoomChat_Background_Tilemap[];
extern const u16 gUnionRoomChat_Window_Pal1[]; extern const u16 gUnionRoomChat_InputText_Pal[];
extern const u16 gUnionRoomChat_Window_Pal2[]; extern const u16 gUnionRoomChat_Keyboard_Pal[];
extern const u32 gUnionRoomChat_Border_Gfx[]; extern const u32 gUnionRoomChat_Keyboard_Gfx[];
extern const u32 gUnionRoomChat_Border_Tilemap[]; extern const u32 gUnionRoomChat_Keyboard_Tilemap[];
extern const u32 gUnionRoomChat_RButtonLabels[]; extern const u32 gUnionRoomChat_RButtonLabels[];
// Use Pokeblock // Use Pokeblock

View File

@ -1427,10 +1427,10 @@ const u32 gNamingScreenKeyboardSymbols_Tilemap[] = INCBIN_U32("graphics/naming_s
const u16 gUnionRoomChat_Background_Pal[] = INCBIN_U16("graphics/union_room_chat/background.gbapal"); const u16 gUnionRoomChat_Background_Pal[] = INCBIN_U16("graphics/union_room_chat/background.gbapal");
const u32 gUnionRoomChat_Background_Gfx[] = INCBIN_U32("graphics/union_room_chat/background.4bpp.lz"); const u32 gUnionRoomChat_Background_Gfx[] = INCBIN_U32("graphics/union_room_chat/background.4bpp.lz");
const u32 gUnionRoomChat_Background_Tilemap[] = INCBIN_U32("graphics/union_room_chat/background.bin.lz"); const u32 gUnionRoomChat_Background_Tilemap[] = INCBIN_U32("graphics/union_room_chat/background.bin.lz");
const u16 gUnionRoomChat_Window_Pal1[] = INCBIN_U16("graphics/union_room_chat/window_1.gbapal"); const u16 gUnionRoomChat_InputText_Pal[] = INCBIN_U16("graphics/union_room_chat/input_text.gbapal");
const u16 gUnionRoomChat_Window_Pal2[] = INCBIN_U16("graphics/union_room_chat/window_2.gbapal"); const u16 gUnionRoomChat_Keyboard_Pal[] = INCBIN_U16("graphics/union_room_chat/keyboard.gbapal");
const u32 gUnionRoomChat_Border_Gfx[] = INCBIN_U32("graphics/union_room_chat/border.4bpp.lz"); const u32 gUnionRoomChat_Keyboard_Gfx[] = INCBIN_U32("graphics/union_room_chat/keyboard.4bpp.lz");
const u32 gUnionRoomChat_Border_Tilemap[] = INCBIN_U32("graphics/union_room_chat/border.bin.lz"); const u32 gUnionRoomChat_Keyboard_Tilemap[] = INCBIN_U32("graphics/union_room_chat/keyboard.bin.lz");
const u32 gUnionRoomChat_RButtonLabels[] = INCBIN_U32("graphics/union_room_chat/r_button_labels.4bpp.lz"); const u32 gUnionRoomChat_RButtonLabels[] = INCBIN_U32("graphics/union_room_chat/r_button_labels.4bpp.lz");
const u16 gTilesetPalettes_General[][16] = const u16 gTilesetPalettes_General[][16] =

64
src/union_room_chat.c Executable file → Normal file
View File

@ -173,8 +173,7 @@ struct UnionRoomChatDisplay
u8 bg1Buffer[BG_SCREEN_SIZE]; u8 bg1Buffer[BG_SCREEN_SIZE];
u8 bg3Buffer[BG_SCREEN_SIZE]; u8 bg3Buffer[BG_SCREEN_SIZE];
u8 bg2Buffer[BG_SCREEN_SIZE]; u8 bg2Buffer[BG_SCREEN_SIZE];
u8 unk2128[0x20]; u8 textEntryTiles[TILE_SIZE_4BPP * 2];
u8 unk2148[0x20];
}; };
struct UnionRoomChatSprites struct UnionRoomChatSprites
@ -254,11 +253,11 @@ static void FreeSprites(void);
static void ResetGpuBgState(void); static void ResetGpuBgState(void);
static void SetBgTilemapBuffers(void); static void SetBgTilemapBuffers(void);
static void ClearBg0(void); static void ClearBg0(void);
static void LoadChatWindowBorderGfx(void); static void LoadKeyboardWindowGfx(void);
static void LoadChatWindowGfx(void); static void LoadChatWindowGfx(void);
static void LoadChatUnkPalette(void); static void LoadChatUnkPalette(void);
static void LoadChatMessagesWindow(void); static void LoadChatMessagesWindow(void);
static void LoadKeyboardWindow(void); static void DrawKeyboardWindow(void);
static void LoadKeyboardSwapWindow(void); static void LoadKeyboardSwapWindow(void);
static void LoadTextEntryWindow(void); static void LoadTextEntryWindow(void);
static void CreateKeyboardCursorSprite(void); static void CreateKeyboardCursorSprite(void);
@ -527,8 +526,8 @@ static const u8 *const sUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT - 1][UNIO
} }
}; };
static const u16 sUnk_Palette1[] = INCBIN_U16("graphics/union_room_chat/unk_palette1.gbapal"); static const u16 sUnusedPalette[] = INCBIN_U16("graphics/union_room_chat/unused.gbapal"); // Loaded but never apparently used
static const u16 sUnk_Palette2[] = INCBIN_U16("graphics/union_room_chat/unk_palette2.gbapal"); static const u16 sChatMessagesWindow_Pal[] = INCBIN_U16("graphics/union_room_chat/chat_messages_window.gbapal");
static const struct BgTemplate sBgTemplates[] = { static const struct BgTemplate sBgTemplates[] = {
{ {
@ -759,15 +758,15 @@ static const u32 sTextEntryArrowTiles[] = INCBIN_U32("graphics/union_room_chat/t
static const u32 sRButtonGfxTiles[] = INCBIN_U32("graphics/union_room_chat/r_button.4bpp.lz"); static const u32 sRButtonGfxTiles[] = INCBIN_U32("graphics/union_room_chat/r_button.4bpp.lz");
static const struct CompressedSpriteSheet sSpriteSheets[] = { static const struct CompressedSpriteSheet sSpriteSheets[] = {
{sKeyboardCursorTiles, 0x1000, 0}, {.data = sKeyboardCursorTiles, .size = 0x1000, .tag = GFXTAG_KEYBOARD_CURSOR},
{sTextEntryArrowTiles, 0x0040, 1}, {.data = sTextEntryArrowTiles, .size = 0x0040, .tag = GFXTAG_TEXT_ENTRY_ARROW},
{sTextEntryCursorTiles, 0x0040, 2}, {.data = sTextEntryCursorTiles, .size = 0x0040, .tag = GFXTAG_TEXT_ENTRY_CURSOR},
{sRButtonGfxTiles, 0x0080, 3}, {.data = sRButtonGfxTiles, .size = 0x0080, .tag = GFXTAG_RBUTTON_ICON},
{gUnionRoomChat_RButtonLabels, 0x0400, 4} {.data = gUnionRoomChat_RButtonLabels, .size = 0x0400, .tag = GFXTAG_RBUTTON_LABELS}
}; };
static const struct SpritePalette sSpritePalette = { static const struct SpritePalette sSpritePalette = {
sUnionRoomChatInterfacePal, 0 .data = sUnionRoomChatInterfacePal, .tag = PALTAG_INTERFACE
}; };
static const struct OamData sOam_KeyboardCursor = { static const struct OamData sOam_KeyboardCursor = {
@ -970,7 +969,7 @@ static void CB2_LoadInterface(void)
sChat->handleInputTask = CreateTask(Task_HandlePlayerInput, 8); sChat->handleInputTask = CreateTask(Task_HandlePlayerInput, 8);
sChat->receiveMessagesTask = CreateTask(Task_ReceiveChatMessage, 7); sChat->receiveMessagesTask = CreateTask(Task_ReceiveChatMessage, 7);
LoadWirelessStatusIndicatorSpriteGfx(); LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(232, 150); CreateWirelessStatusIndicatorSprite(DISPLAY_WIDTH - 8, DISPLAY_HEIGHT - 10);
} }
break; break;
} }
@ -1759,7 +1758,7 @@ static void RegisterTextAtRow(void)
static void ResetMessageEntryBuffer(void) static void ResetMessageEntryBuffer(void)
{ {
sChat->messageEntryBuffer[0] = EOS; sChat->messageEntryBuffer[0] = EOS;
sChat->lastBufferCursorPos = 15; sChat->lastBufferCursorPos = MAX_MESSAGE_LENGTH;
sChat->bufferCursorPos = 0; sChat->bufferCursorPos = 0;
} }
@ -2063,10 +2062,10 @@ static void Task_ReceiveChatMessage(u8 taskId)
tState = 3; tState = 3;
// fall through // fall through
case 3: case 3:
for (; tI < 5 && ((tBlockReceivedStatus >> tI) & 1) == 0; tI++) for (; tI < MAX_RFU_PLAYERS && ((tBlockReceivedStatus >> tI) & 1) == 0; tI++)
; ;
if (tI == 5) if (tI == MAX_RFU_PLAYERS)
{ {
tState = 1; tState = 1;
return; return;
@ -2254,7 +2253,7 @@ static bool32 Display_LoadGfx(u8 *state)
ClearBg0(); ClearBg0();
break; break;
case 2: case 2:
LoadChatWindowBorderGfx(); LoadKeyboardWindowGfx();
break; break;
case 3: case 3:
LoadChatWindowGfx(); LoadChatWindowGfx();
@ -2264,7 +2263,7 @@ static bool32 Display_LoadGfx(u8 *state)
break; break;
case 5: case 5:
LoadChatMessagesWindow(); LoadChatMessagesWindow();
LoadKeyboardWindow(); DrawKeyboardWindow();
LoadKeyboardSwapWindow(); LoadKeyboardSwapWindow();
LoadTextEntryWindow(); LoadTextEntryWindow();
break; break;
@ -3063,12 +3062,12 @@ static void ClearBg0(void)
CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(0);
} }
static void LoadChatWindowBorderGfx(void) static void LoadKeyboardWindowGfx(void)
{ {
LoadPalette(gUnionRoomChat_Window_Pal2, BG_PLTT_ID(7), PLTT_SIZE_4BPP); LoadPalette(gUnionRoomChat_Keyboard_Pal, BG_PLTT_ID(7), PLTT_SIZE_4BPP);
LoadPalette(gUnionRoomChat_Window_Pal1, BG_PLTT_ID(12), PLTT_SIZE_4BPP); LoadPalette(gUnionRoomChat_InputText_Pal, BG_PLTT_ID(12), PLTT_SIZE_4BPP);
DecompressAndCopyTileDataToVram(1, gUnionRoomChat_Border_Gfx, 0, 0, 0); DecompressAndCopyTileDataToVram(1, gUnionRoomChat_Keyboard_Gfx, 0, 0, 0);
CopyToBgTilemapBuffer(1, gUnionRoomChat_Border_Tilemap, 0, 0); CopyToBgTilemapBuffer(1, gUnionRoomChat_Keyboard_Tilemap, 0, 0);
CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(1);
} }
@ -3080,8 +3079,12 @@ static void LoadChatWindowGfx(void)
ptr = DecompressAndCopyTileDataToVram(2, gUnionRoomChat_Background_Gfx, 0, 0, 0); ptr = DecompressAndCopyTileDataToVram(2, gUnionRoomChat_Background_Gfx, 0, 0, 0);
if (ptr) if (ptr)
{ {
CpuFastCopy(&ptr[0x220], sDisplay->unk2128, sizeof(sDisplay->unk2128)); // The below is nonsense. Tiles 0x11 and 0x21 of the background tileset are
CpuFastCopy(&ptr[0x420], sDisplay->unk2148, sizeof(sDisplay->unk2148)); // the second half of "OK" and the "T" in "START" in the instructions header.
// They're later blitted onto the text entry window, then immediately cleared.
// The window has a different palette as well, so the tiles would appear mostly black anyway.
CpuFastCopy(&ptr[0x11 * TILE_SIZE_4BPP], &sDisplay->textEntryTiles[TILE_SIZE_4BPP * 0], TILE_SIZE_4BPP);
CpuFastCopy(&ptr[0x21 * TILE_SIZE_4BPP], &sDisplay->textEntryTiles[TILE_SIZE_4BPP * 1], TILE_SIZE_4BPP);
} }
CopyToBgTilemapBuffer(2, gUnionRoomChat_Background_Tilemap, 0, 0); CopyToBgTilemapBuffer(2, gUnionRoomChat_Background_Tilemap, 0, 0);
@ -3090,19 +3093,19 @@ static void LoadChatWindowGfx(void)
static void LoadChatUnkPalette(void) static void LoadChatUnkPalette(void)
{ {
LoadPalette(sUnk_Palette1, BG_PLTT_ID(8), sizeof(sUnk_Palette1)); LoadPalette(sUnusedPalette, BG_PLTT_ID(8), sizeof(sUnusedPalette));
RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1); RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + TILE_SIZE_4BPP, TILE_SIZE_4BPP, 1);
} }
static void LoadChatMessagesWindow(void) static void LoadChatMessagesWindow(void)
{ {
LoadPalette(sUnk_Palette2, BG_PLTT_ID(15), sizeof(sUnk_Palette2)); LoadPalette(sChatMessagesWindow_Pal, BG_PLTT_ID(15), sizeof(sChatMessagesWindow_Pal));
PutWindowTilemap(WIN_CHAT_HISTORY); PutWindowTilemap(WIN_CHAT_HISTORY);
FillWindowPixelBuffer(WIN_CHAT_HISTORY, PIXEL_FILL(1)); FillWindowPixelBuffer(WIN_CHAT_HISTORY, PIXEL_FILL(1));
CopyWindowToVram(WIN_CHAT_HISTORY, COPYWIN_FULL); CopyWindowToVram(WIN_CHAT_HISTORY, COPYWIN_FULL);
} }
static void LoadKeyboardWindow(void) static void DrawKeyboardWindow(void)
{ {
PutWindowTilemap(WIN_KEYBOARD); PutWindowTilemap(WIN_KEYBOARD);
PrintCurrentKeyboardPage(); PrintCurrentKeyboardPage();
@ -3116,8 +3119,9 @@ static void LoadTextEntryWindow(void)
unused[0] = 0; unused[0] = 0;
unused[1] = 0xFF; unused[1] = 0xFF;
// Pointless, cleared below. The tiles are nonsense anyway, see LoadChatWindowGfx.
for (i = 0; i < MAX_MESSAGE_LENGTH; i++) for (i = 0; i < MAX_MESSAGE_LENGTH; i++)
BlitBitmapToWindow(WIN_TEXT_ENTRY, sDisplay->unk2128, i * 8, 0, 8, 16); BlitBitmapToWindow(WIN_TEXT_ENTRY, sDisplay->textEntryTiles, i * 8, 0, 8, 16);
FillWindowPixelBuffer(WIN_TEXT_ENTRY, PIXEL_FILL(0)); FillWindowPixelBuffer(WIN_TEXT_ENTRY, PIXEL_FILL(0));
PutWindowTilemap(WIN_TEXT_ENTRY); PutWindowTilemap(WIN_TEXT_ENTRY);