diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-13 16:34:18 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-13 16:34:18 -0400 |
commit | 9aac6112a2205a84cc89022a9dcb7140ad060c66 (patch) | |
tree | f14c7431db86ffc4c97947f1373333b114aeb098 /src/help_system.c | |
parent | bd53ad9396f2e9ec1140afe188061d4deb94c7cc (diff) |
Some symbol renaming
Diffstat (limited to 'src/help_system.c')
-rw-r--r-- | src/help_system.c | 519 |
1 files changed, 364 insertions, 155 deletions
diff --git a/src/help_system.c b/src/help_system.c index 7cabce50b..1fd43fffa 100644 --- a/src/help_system.c +++ b/src/help_system.c @@ -16,21 +16,6 @@ extern u8 gGlyphInfo[]; -struct DmaController -{ - void * dest; - void * src; - u32 size:21; - u32 destMode:2; - u32 srcMode:2; - u32 repeat:1; - u32 width:1; - u32 dreqOn:1; - u32 startMode:3; - u32 intrEnable:1; - u32 dmaEnable:1; -}; - struct HelpSystemVideoState { /*0x00*/ MainCallback savedVblankCb; @@ -44,42 +29,26 @@ struct HelpSystemVideoState /*0x15*/ u8 state; }; -void sub_813BB38(void); -void sub_813BB74(void); -void sub_813BBAC(void); -void sub_813BBC8(void); -void sub_813BBDC(void); -void sub_813BCF4(void); -void sub_813BBF4(void); -void sub_813BD14(u8); -void sub_813BF50(u8); -void sub_813BC2C(void); -void sub_813BC48(void); -void sub_813BC5C(void); -void sub_813C3AC(u8, u16, struct Bitmap *, struct Bitmap *, u8 *, u8, u8, u8, u8); -void sub_813C454(const u8 * str); -void sub_813C5D4(void); - -EWRAM_DATA u8 gUnknown_203B174[BG_CHAR_SIZE] = {0}; +static EWRAM_DATA u8 sMapTilesBackup[BG_CHAR_SIZE] = {0}; EWRAM_DATA u8 gUnknown_203F174 = 0; EWRAM_DATA u8 gUnknown_203F175 = 0; -EWRAM_DATA u8 gUnknown_203F176 = 0; -EWRAM_DATA u8 gUnknown_203F177 = 0; -EWRAM_DATA struct HelpSystemVideoState gUnknown_203F178 = {0}; -EWRAM_DATA struct HelpSystemStruct_203F190 gUnknown_203F190 = {0}; -EWRAM_DATA struct ListMenuItem gUnknown_203F1AC[52] = {0}; +static EWRAM_DATA u8 sDelayTimer = 0; +static EWRAM_DATA u8 sInHelpSystem = 0; +static EWRAM_DATA struct HelpSystemVideoState sVideoState = {0}; +EWRAM_DATA struct HelpSystemListMenu gHelpSystemListMenu = {0}; +EWRAM_DATA struct ListMenuItem gHelpSystemListMenuItems[52] = {0}; -const u16 gUnknown_8464008[] = INCBIN_U16("graphics/help_system/unk_8464008.4bpp"); -const u16 gUnknown_8464128[] = INCBIN_U16("graphics/help_system/unk_8464008.gbapal"); +static const u16 sTiles[] = INCBIN_U16("graphics/help_system/unk_8464008.4bpp"); +static const u16 sPals[] = INCBIN_U16("graphics/help_system/unk_8464008.gbapal"); -u8 sub_813B870(void) +u8 RunHelpSystemCallback(void) { s32 i; - switch (gUnknown_203F178.state) + switch (sVideoState.state) { case 0: - gUnknown_203F177 = 0; + sInHelpSystem = 0; if (gSaveBlock2Ptr->optionsButtonMode != OPTIONS_BUTTON_MODE_NORMAL) return 0; if (JOY_NEW(R_BUTTON) && gUnknown_203F175 == 1) @@ -96,39 +65,39 @@ u8 sub_813B870(void) PlaySE(SE_HELP_OPEN); if (!gUnknown_203F174) m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80); - sub_813BB38(); - gUnknown_203F177 = 1; - gUnknown_203F178.state = 1; + SaveCallbacks(); + sInHelpSystem = 1; + sVideoState.state = 1; } break; case 1: - sub_813BBAC(); - sub_813BB74(); - sub_813BBC8(); - (*(vu16 *)PLTT) = gUnknown_8464128[15]; + SaveMapTiles(); + SaveMapGPURegs(); + SaveMapTextColors(); + (*(vu16 *)PLTT) = sPals[15]; SetGpuReg(REG_OFFSET_DISPCNT, 0); - gUnknown_203F178.state = 2; + sVideoState.state = 2; break; case 2: RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); - RequestDma3Copy(gUnknown_8464128, (void *)PLTT, sizeof(gUnknown_8464128), 0); - RequestDma3Copy(gUnknown_8464008, gDecompressionBuffer + 0x3EE0, sizeof(gUnknown_8464008), 0); - gUnknown_203F178.state = 3; + RequestDma3Copy(sPals, (void *)PLTT, sizeof(sPals), 0); + RequestDma3Copy(sTiles, gDecompressionBuffer + 0x3EE0, sizeof(sTiles), 0); + sVideoState.state = 3; break; case 3: sub_813BCF4(); - sub_813C5D4(); - sub_813C5FC(); - sub_813C454(gUnknown_841CB49); + HelpSystem_FillPanel3(); + HelpSystem_FillPanel2(); + HelpSystem_PrintText_Row61(gString_Help); sub_813BD14(1); if (sub_812B40C() == TRUE) - sub_812BC54(&gUnknown_203F190, gUnknown_203F1AC); + sub_812BC54(&gHelpSystemListMenu, gHelpSystemListMenuItems); else - sub_812BCA8(&gUnknown_203F190, gUnknown_203F1AC); + sub_812BCA8(&gHelpSystemListMenu, gHelpSystemListMenuItems); sub_813BE78(1); sub_813BF50(1); - sub_813BC5C(); - gUnknown_203F178.state = 4; + CommitTilemap(); + sVideoState.state = 4; break; case 4: SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -136,46 +105,46 @@ u8 sub_813B870(void) SetGpuReg(REG_OFFSET_BG0VOFS, 0); SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31)); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON); - gUnknown_203F178.state = 5; + sVideoState.state = 5; break; case 5: - if (!sub_812BB9C(&gUnknown_203F190, gUnknown_203F1AC)) + if (!sub_812BB9C(&gHelpSystemListMenu, gHelpSystemListMenuItems)) { PlaySE(SE_HELP_CLOSE); - gUnknown_203F178.state = 6; + sVideoState.state = 6; } break; case 6: SetGpuReg(REG_OFFSET_DISPCNT, 0); - sub_813BC2C(); + RestoreMapTiles(); for (i = 0; i < 0x200; i += 2) { - *((vu16 *)(PLTT + 0x000 + i)) = gUnknown_8464128[15]; - *((vu16 *)(PLTT + 0x200 + i)) = gUnknown_8464128[15]; + *((vu16 *)(PLTT + 0x000 + i)) = sPals[15]; + *((vu16 *)(PLTT + 0x200 + i)) = sPals[15]; } - gUnknown_203F178.state = 7; + sVideoState.state = 7; break; case 7: if (!gUnknown_203F174) m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); - sub_813BC48(); - sub_813BBF4(); - gUnknown_203F178.state = 8; + RestoreMapTextColors(); + RestoreGPURegs(); + sVideoState.state = 8; break; case 8: - sub_813BBDC(); - gUnknown_203F177 = 0; - gUnknown_203F178.state = 0; + RestoreCallbacks(); + sInHelpSystem = 0; + sVideoState.state = 0; break; } - return gUnknown_203F178.state; + return sVideoState.state; } -void sub_813BB38(void) +void SaveCallbacks(void) { vu16 * dma; - gUnknown_203F178.savedVblankCb = gMain.vblankCallback; - gUnknown_203F178.savedHblankCb = gMain.hblankCallback; + sVideoState.savedVblankCb = gMain.vblankCallback; + sVideoState.savedHblankCb = gMain.hblankCallback; gMain.vblankCallback = NULL; gMain.hblankCallback = NULL; @@ -185,64 +154,64 @@ void sub_813BB38(void) dma[5]; } -void sub_813BB74(void) +void SaveMapGPURegs(void) { - gUnknown_203F178.savedDispCnt = GetGpuReg(REG_OFFSET_DISPCNT); - gUnknown_203F178.savedBg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT); - gUnknown_203F178.savedBg0Hofs = GetGpuReg(REG_OFFSET_BG0HOFS); - gUnknown_203F178.savedBg0Vofs = GetGpuReg(REG_OFFSET_BG0VOFS); - gUnknown_203F178.savedBldCnt = GetGpuReg(REG_OFFSET_BLDCNT); + sVideoState.savedDispCnt = GetGpuReg(REG_OFFSET_DISPCNT); + sVideoState.savedBg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT); + sVideoState.savedBg0Hofs = GetGpuReg(REG_OFFSET_BG0HOFS); + sVideoState.savedBg0Vofs = GetGpuReg(REG_OFFSET_BG0VOFS); + sVideoState.savedBldCnt = GetGpuReg(REG_OFFSET_BLDCNT); } -void sub_813BBAC(void) +void SaveMapTiles(void) { - RequestDma3Copy((void *)BG_CHAR_ADDR(3), gUnknown_203B174, BG_CHAR_SIZE, 0); + RequestDma3Copy((void *)BG_CHAR_ADDR(3), sMapTilesBackup, BG_CHAR_SIZE, 0); } -void sub_813BBC8(void) +void SaveMapTextColors(void) { SaveTextColors( - &gUnknown_203F178.savedTextColor.fgColor, - &gUnknown_203F178.savedTextColor.bgColor, - &gUnknown_203F178.savedTextColor.shadowColor + &sVideoState.savedTextColor.fgColor, + &sVideoState.savedTextColor.bgColor, + &sVideoState.savedTextColor.shadowColor ); } -void sub_813BBDC(void) +void RestoreCallbacks(void) { - gMain.vblankCallback = gUnknown_203F178.savedVblankCb; - gMain.hblankCallback = gUnknown_203F178.savedHblankCb; + gMain.vblankCallback = sVideoState.savedVblankCb; + gMain.hblankCallback = sVideoState.savedHblankCb; } -void sub_813BBF4(void) +void RestoreGPURegs(void) { - SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_203F178.savedBldCnt); - SetGpuReg(REG_OFFSET_BG0HOFS, gUnknown_203F178.savedBg0Hofs); - SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_203F178.savedBg0Vofs); - SetGpuReg(REG_OFFSET_BG0CNT, gUnknown_203F178.savedBg0Cnt); - SetGpuReg(REG_OFFSET_DISPCNT, gUnknown_203F178.savedDispCnt); + SetGpuReg(REG_OFFSET_BLDCNT, sVideoState.savedBldCnt); + SetGpuReg(REG_OFFSET_BG0HOFS, sVideoState.savedBg0Hofs); + SetGpuReg(REG_OFFSET_BG0VOFS, sVideoState.savedBg0Vofs); + SetGpuReg(REG_OFFSET_BG0CNT, sVideoState.savedBg0Cnt); + SetGpuReg(REG_OFFSET_DISPCNT, sVideoState.savedDispCnt); } -void sub_813BC2C(void) +void RestoreMapTiles(void) { - RequestDma3Copy(gUnknown_203B174, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); + RequestDma3Copy(sMapTilesBackup, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); } -void sub_813BC48(void) +void RestoreMapTextColors(void) { RestoreTextColors( - &gUnknown_203F178.savedTextColor.fgColor, - &gUnknown_203F178.savedTextColor.bgColor, - &gUnknown_203F178.savedTextColor.shadowColor + &sVideoState.savedTextColor.fgColor, + &sVideoState.savedTextColor.bgColor, + &sVideoState.savedTextColor.shadowColor ); } -void sub_813BC5C(void) +void CommitTilemap(void) { RequestDma3Copy(gDecompressionBuffer, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); } -void sub_813BC78(u16 baseTile, u8 left, u8 top, u8 width, u8 height, u16 increment) +void HS_DrawBgTilemapRect(u16 baseTile, u8 left, u8 top, u8 width, u8 height, u16 increment) { u16 i, j; @@ -255,12 +224,12 @@ void sub_813BC78(u16 baseTile, u8 left, u8 top, u8 width, u8 height, u16 increme } } - sub_813BC5C(); + CommitTilemap(); } void sub_813BCF4(void) { - sub_813BC78(0x1FF, 0, 0, 30, 20, 0); + HS_DrawBgTilemapRect(0x1FF, 0, 0, 30, 20, 0); } void sub_813BD14(u8 mode) @@ -268,10 +237,10 @@ void sub_813BD14(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 1, 0, 7, 2, 0); + HS_DrawBgTilemapRect(0x1FF, 1, 0, 7, 2, 0); break; case 1: - sub_813BC78(0x1E8, 1, 0, 7, 2, 1); + HS_DrawBgTilemapRect(0x1E8, 1, 0, 7, 2, 1); break; } } @@ -281,10 +250,10 @@ void sub_813BD5C(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 13, 0, 16, 2, 0); + HS_DrawBgTilemapRect(0x1FF, 13, 0, 16, 2, 0); break; case 1: - sub_813BC78(0x1A0, 13, 0, 16, 2, 1); + HS_DrawBgTilemapRect(0x1A0, 13, 0, 16, 2, 1); break; } } @@ -294,10 +263,10 @@ void sub_813BDA4(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 2, 3, 26, 16, 0); + HS_DrawBgTilemapRect(0x1FF, 2, 3, 26, 16, 0); break; case 1: - sub_813BC78(0x000, 2, 3, 26, 16, 1); + HS_DrawBgTilemapRect(0x000, 2, 3, 26, 16, 1); break; } } @@ -307,10 +276,10 @@ void sub_813BDE8(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 1, 3, 28, 16, 0); + HS_DrawBgTilemapRect(0x1FF, 1, 3, 28, 16, 0); break; case 1: - sub_813BC78(0x1FA, 1, 3, 28, 17, 0); + HS_DrawBgTilemapRect(0x1FA, 1, 3, 28, 17, 0); break; } } @@ -320,10 +289,10 @@ void sub_813BE30(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 2, 14, 26, 5, 0); + HS_DrawBgTilemapRect(0x1FF, 2, 14, 26, 5, 0); break; case 1: - sub_813BC78(0x11E, 2, 14, 26, 5, 1); + HS_DrawBgTilemapRect(0x11E, 2, 14, 26, 5, 1); break; } } @@ -333,12 +302,12 @@ void sub_813BE78(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 1, 2, 28, 1, 0); - sub_813BC78(0x1FF, 1, 19, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FF, 1, 2, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FF, 1, 19, 28, 1, 0); break; case 1: - sub_813BC78(0x1F7, 1, 2, 28, 1, 0); - sub_813BC78(0x1F8, 1, 19, 28, 1, 0); + HS_DrawBgTilemapRect(0x1F7, 1, 2, 28, 1, 0); + HS_DrawBgTilemapRect(0x1F8, 1, 19, 28, 1, 0); break; } } @@ -348,12 +317,12 @@ void sub_813BEE4(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 1, 2, 28, 1, 0); - sub_813BC78(0x1FF, 1, 19, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FF, 1, 2, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FF, 1, 19, 28, 1, 0); break; case 1: - sub_813BC78(0x1FB, 1, 2, 28, 1, 0); - sub_813BC78(0x1FC, 1, 19, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FB, 1, 2, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FC, 1, 19, 28, 1, 0); break; } } @@ -363,12 +332,12 @@ void sub_813BF50(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 0, 0, 1, 20, 0); - sub_813BC78(0x1FF, 29, 0, 1, 20, 0); + HS_DrawBgTilemapRect(0x1FF, 0, 0, 1, 20, 0); + HS_DrawBgTilemapRect(0x1FF, 29, 0, 1, 20, 0); break; case 1: - sub_813BC78(0x1F9, 0, 0, 1, 20, 0); - sub_813BC78(0x1F9, 29, 0, 1, 20, 0); + HS_DrawBgTilemapRect(0x1F9, 0, 0, 1, 20, 0); + HS_DrawBgTilemapRect(0x1F9, 29, 0, 1, 20, 0); break; } } @@ -378,10 +347,10 @@ void sub_813BFC0(u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 1, 5, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FF, 1, 5, 28, 1, 0); break; case 1: - sub_813BC78(0x1FC, 1, 5, 28, 1, 0); + HS_DrawBgTilemapRect(0x1FC, 1, 5, 28, 1, 0); break; } } @@ -391,20 +360,20 @@ void sub_813C004(u8 a0, u8 mode) switch (mode) { case 0: - sub_813BC78(0x1FF, 28, 3, 1, 1, 0); - sub_813BC78(0x1FF, 28, 18, 1, 1, 0); + HS_DrawBgTilemapRect(0x1FF, 28, 3, 1, 1, 0); + HS_DrawBgTilemapRect(0x1FF, 28, 18, 1, 1, 0); break; case 1: if (a0 == 0) - sub_813BC78(0x1FE, 28, 3, 1, 1, 0); + HS_DrawBgTilemapRect(0x1FE, 28, 3, 1, 1, 0); else - sub_813BC78(0x1FD, 28, 18, 1, 1, 0); + HS_DrawBgTilemapRect(0x1FD, 28, 18, 1, 1, 0); break; } } #define HelpSystemHandleRenderGlyph(character) ({\ - do {sub_813C3AC(font, character, &srcBlit, &destBlit, dest, x, y, width, height);} while (0); font;\ + do {DecompressAndRenderGlyph(font, character, &srcBlit, &destBlit, dest, x, y, width, height);} while (0); font;\ }) #ifdef NONMATCHING @@ -447,15 +416,15 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid { if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC) == TRUE) { - if (gUnknown_841CB3C[i] == EOS) + if (gString_Bill[i] == EOS) break; - HelpSystemHandleRenderGlyph(gUnknown_841CB3C[i]); + HelpSystemHandleRenderGlyph(gString_Bill[i]); } else { - if (gUnknown_841CB41[i] == EOS) + if (gString_Someone[i] == EOS) break; - HelpSystemHandleRenderGlyph(gUnknown_841CB41[i]); + HelpSystemHandleRenderGlyph(gString_Someone[i]); } x += gGlyphInfo[0x80]; } @@ -634,7 +603,7 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid "\tldr r0, [sp, 0x24]\n" "\tadd r2, sp, 0x14\n" "\tadd r3, sp, 0x1C\n" - "\tbl sub_813C3AC\n" + "\tbl DecompressAndRenderGlyph\n" "\tldr r0, [sp, 0x24]\n" "\tldrb r0, [r5]\n" "\tadds r0, r7, r0\n" @@ -677,10 +646,10 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid "\tldr r0, [sp, 0x24]\n" "\tadd r2, sp, 0x14\n" "\tadd r3, sp, 0x1C\n" - "\tbl sub_813C3AC\n" + "\tbl DecompressAndRenderGlyph\n" "\tb _0813C1AC\n" "_0813C184:\n" - "\tldr r0, _0813C1D8 @ =gUnknown_841CB41\n" + "\tldr r0, _0813C1D8 @ =gString_Someone\n" "\tadds r1, r4, r0\n" "\tldrb r0, [r1]\n" "\tcmp r0, 0xFF\n" @@ -698,7 +667,7 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid "\tldr r0, [sp, 0x24]\n" "\tadd r2, sp, 0x14\n" "\tadd r3, sp, 0x1C\n" - "\tbl sub_813C3AC\n" + "\tbl DecompressAndRenderGlyph\n" "_0813C1AC:\n" "\tldr r1, [sp, 0x24]\n" "\tldrb r0, [r5]\n" @@ -715,16 +684,16 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid "\tlsrs r0, 24\n" "\tcmp r0, 0x1\n" "\tbne _0813C184\n" - "\tldr r0, _0813C1E0 @ =gUnknown_841CB3C\n" + "\tldr r0, _0813C1E0 @ =gString_Bill\n" "\tadds r1, r4, r0\n" "\tldrb r0, [r1]\n" "\tcmp r0, 0xFF\n" "\tbne _0813C164\n" "\tb _0813C0AC_masterLoop\n" "\t.align 2, 0\n" - "_0813C1D8: .4byte gUnknown_841CB41\n" + "_0813C1D8: .4byte gString_Someone\n" "_0813C1DC: .4byte 0x00000834\n" - "_0813C1E0: .4byte gUnknown_841CB3C\n" + "_0813C1E0: .4byte gString_Bill\n" "_0813C1E4:\n" "\tldr r7, [sp, 0x34]\n" "\tldr r1, _0813C1FC @ =gGlyphInfo\n" @@ -916,7 +885,7 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid "\tstr r0, [sp, 0x10]\n" "\tldr r0, [sp, 0x24]\n" "\tadd r2, sp, 0x14\n" - "\tbl sub_813C3AC\n" + "\tbl DecompressAndRenderGlyph\n" "\tldr r1, [sp, 0x24]\n" "\tldr r0, _0813C398 @ =gGlyphInfo\n" "\tadds r0, 0x80\n" @@ -941,7 +910,7 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid } #endif //NONMATCHING -void sub_813C3AC(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height) +void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height) { if (font == 0) DecompressGlyphFont0(glyph, FALSE); @@ -958,26 +927,26 @@ void sub_813C3AC(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *dest BlitBitmapRect4Bit(srcBlit, destBlit, 0, 0, x, y, gGlyphInfo[0x80], gGlyphInfo[0x81], 0); } -void sub_813C454(const u8 * str) +void HelpSystem_PrintText_Row61(const u8 * str) { GenerateFontHalfRowLookupTable(1, 15, 2); HelpSystemRenderText(5, gDecompressionBuffer + 0x3D00, str, 6, 2, 7, 2); } -void sub_813C488(const u8 * str) +void HelpSystem_PrintTextRightAlign_Row52(const u8 * str) { s32 left = 0x7C - GetStringWidth(0, str, 0); GenerateFontHalfRowLookupTable(1, 15, 2); HelpSystemRenderText(0, gDecompressionBuffer + 0x3400, str, left, 2, 16, 2); } -void sub_813C4CC(const u8 * str, u8 x, u8 y) +void HelpSystem_PrintTextAt(const u8 * str, u8 x, u8 y) { GenerateFontHalfRowLookupTable(1, 15, 2); HelpSystemRenderText(2, gDecompressionBuffer + 0x0000, str, x, y, 26, 16); } -void sub_813C50C(const u8 * str1, const u8 * str2) +void HelpSystem_PrintTwoStrings(const u8 * str1, const u8 * str2) { CpuFill16(0xEEEE, gDecompressionBuffer + 0x0000, 0x3400); GenerateFontHalfRowLookupTable(1, 14, 2); @@ -985,9 +954,249 @@ void sub_813C50C(const u8 * str1, const u8 * str2) HelpSystemRenderText(2, gDecompressionBuffer + 0x09C0, str2, 0, 0, 26, 13); } -void sub_813C584(const u8 * str) +void HelpSystem_PrintText_813C584(const u8 * str) { CpuFill16(0x1111, gDecompressionBuffer + 0x23C0, 0x1040); GenerateFontHalfRowLookupTable(2, 1, 3); HelpSystemRenderText(2, gDecompressionBuffer + 0x23C0, str, 2, 6, 26, 5); } + +void HelpSystem_FillPanel3(void) +{ + CpuFill16(0xFFFF, gDecompressionBuffer + 0x3D00, 0x1C0); +} + +void HelpSystem_FillPanel2(void) +{ + CpuFill16(0xFFFF, gDecompressionBuffer + 0x3400, 0x400); +} + +void HelpSystem_FillPanel1(void) +{ + CpuFill16(0xFFFF, gDecompressionBuffer + 0x0000, 0x3400); +} + +void HelpSystem_InitListMenuController(struct HelpSystemListMenu * a0, u8 a1, u8 a2) +{ + gHelpSystemListMenu.sub = a0->sub; + gHelpSystemListMenu.field_0C = a1; + gHelpSystemListMenu.field_0D = a2; + gHelpSystemListMenu.field_0E = 0; + if (gHelpSystemListMenu.sub.totalItems < gHelpSystemListMenu.sub.maxShowed) + gHelpSystemListMenu.sub.maxShowed = gHelpSystemListMenu.sub.totalItems; + sub_813BDA4(0); + HelpSystem_FillPanel1(); + PrintListMenuItems(); + PlaceListMenuCursor(); +} + +void HelpSystem_SetInputDelay(u8 a0) +{ + sDelayTimer = a0; +} + +s32 HelpSystem_GetMenuInput(void) +{ + if (sDelayTimer != 0) + { + sDelayTimer--; + return -1; + } + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + return gHelpSystemListMenu.sub.items[gHelpSystemListMenu.field_0C + gHelpSystemListMenu.field_0D].index; + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + return -2; + } + else if (JOY_NEW(L_BUTTON | R_BUTTON)) + { + return -6; + } + else if (JOY_REPT(DPAD_UP)) + { + if (!MoveCursor(1, 0)) + PlaySE(SE_SELECT); + return -4; + } + else if (JOY_REPT(DPAD_DOWN)) + { + if (!MoveCursor(1, 1)) + PlaySE(SE_SELECT); + return -5; + } + else if (JOY_REPT(DPAD_LEFT)) + { + if (!MoveCursor(7, 0)) + PlaySE(SE_SELECT); + return -4; + } + else if (JOY_REPT(DPAD_RIGHT)) + { + if (!MoveCursor(7, 1)) + PlaySE(SE_SELECT); + return -5; + } + else + return -1; +} + +void sub_813C75C(void) +{ + u8 r6 = gHelpSystemListMenu.sub.totalItems - 7; + if (gHelpSystemListMenu.sub.totalItems > 7) + { + s32 r4 = gHelpSystemListMenu.field_0C + gHelpSystemListMenu.field_0D; + sub_813C004(0, 0); + if (r4 == 0) + sub_813C004(1, 1); + else if (gHelpSystemListMenu.field_0C == 0 && gHelpSystemListMenu.field_0D != 0) + sub_813C004(1, 1); + else if (gHelpSystemListMenu.field_0C == r6) + sub_813C004(0, 1); + else if (gHelpSystemListMenu.field_0C != 0) + { + sub_813C004(0, 1); + sub_813C004(1, 1); + } + } +} + +void PrintListMenuItems(void) +{ + u8 glyphHeight = GetFontAttribute(2, 1) + 1; + s32 i; + s32 r5 = gHelpSystemListMenu.field_0C; + + for (i = 0; i < gHelpSystemListMenu.sub.maxShowed; i++) + { + u8 x = gHelpSystemListMenu.sub.left + 8; + u8 y = gHelpSystemListMenu.sub.top + glyphHeight * i; + HelpSystem_PrintTextAt(gHelpSystemListMenu.sub.items[r5].label, x, y); + r5++; + } +} + +void PlaceListMenuCursor(void) +{ + u8 glyphHeight = GetFontAttribute(2, 1) + 1; + u8 x = gHelpSystemListMenu.sub.left; + u8 y = gHelpSystemListMenu.sub.top + glyphHeight * gHelpSystemListMenu.field_0D; + HelpSystem_PrintTextAt(gFameCheckerText_ListMenuCursor, x, y); +} + +void sub_813C860(u8 i) +{ + u8 glyphHeight = GetFontAttribute(2, 1) + 1; + u8 x = gHelpSystemListMenu.sub.left; + u8 y = gHelpSystemListMenu.sub.top + i * glyphHeight; + HelpSystem_PrintTextAt(gString_HelpSystem_ClearTo8, x, y); +} + +u8 TryMoveCursor1(u8 dirn) +{ + u16 r4; + if (dirn == 0) + { + if (gHelpSystemListMenu.sub.maxShowed == 1) + r4 = 0; + else + r4 = gHelpSystemListMenu.sub.maxShowed - (gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1)) - 1; + if (gHelpSystemListMenu.field_0C == 0) + { + if (gHelpSystemListMenu.field_0D != 0) + { + gHelpSystemListMenu.field_0D--; + return 1; + } + else + return 0; + } + if (gHelpSystemListMenu.field_0D > r4) + { + gHelpSystemListMenu.field_0D--; + return 1; + } + else + { + gHelpSystemListMenu.field_0C--; + return 2; + } + } + else + { + if (gHelpSystemListMenu.sub.maxShowed == 1) + r4 = 0; + else + r4 = gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1); + if (gHelpSystemListMenu.field_0C == gHelpSystemListMenu.sub.totalItems - gHelpSystemListMenu.sub.maxShowed) + { + if (gHelpSystemListMenu.field_0D < gHelpSystemListMenu.sub.maxShowed - 1) + { + gHelpSystemListMenu.field_0D++; + return 1; + } + else + return 0; + } + else if (gHelpSystemListMenu.field_0D < r4) + { + gHelpSystemListMenu.field_0D++; + return 1; + } + else + { + gHelpSystemListMenu.field_0C++; + return 2; + } + } +} + +bool8 MoveCursor(u8 by, u8 dirn) +{ + u8 r7 = gHelpSystemListMenu.field_0D; + u8 flags = 0; + s32 i; + for (i = 0; i < by; i++) + flags |= TryMoveCursor1(dirn); + + switch (flags) + { + case 0: + default: + // neither changed + return TRUE; + case 1: + // changed field_0D only + sub_813C860(r7); + PlaceListMenuCursor(); + CommitTilemap(); + break; + case 2: + case 3: + // changed field_0C + if (sub_812BF88() == TRUE) + { + HelpSystem_SetInputDelay(2); + HelpSystem_FillPanel1(); + PrintListMenuItems(); + PlaceListMenuCursor(); + sub_812BDEC(); + sub_813C75C(); + } + else + { + sub_813BDA4(0); + HelpSystem_FillPanel1(); + PrintListMenuItems(); + PlaceListMenuCursor(); + sub_813BDA4(1); + } + CommitTilemap(); + break; + } + return FALSE; +} |