From 98ff8fb92b03db4f6bce8371b0c70ca894f9bae8 Mon Sep 17 00:00:00 2001 From: TIny_Hacker Date: Mon, 19 Dec 2022 20:00:46 -0500 Subject: [PATCH] Various bug patches/improvements - Speed up opening and closing of menus - Exit app more cleanly - Properly handle hiding hidden programs in the shell when the option is selected Co-Authored-By: RoccoLox Programs --- makefile | 2 +- src/asm/apps.asm | 1 + src/asm/editProg.asm | 7 ++-- src/asm/getVATPtrs.asm | 82 ++++++++++++++++++++++++++++++++++++++++++ src/asm/getVATPtrs.h | 4 ++- src/asm/hooks.asm | 8 +++++ src/main.c | 46 +++++++++++++++--------- src/menu.c | 43 +++++++++++++++++++--- src/menu.h | 2 +- src/ui.c | 13 +++---- src/utility.c | 2 +- 11 files changed, 178 insertions(+), 32 deletions(-) diff --git a/makefile b/makefile index b3acc6e..41a7617 100644 --- a/makefile +++ b/makefile @@ -10,7 +10,7 @@ NAME = CEaShell APP_NAME = CEaShell APP_VERSION = 5.0.0.0000 -CEASHELL_VERSION = 0.81.2 +CEASHELL_VERSION = 0.82 ICON = icon.png DESCRIPTION = (C) 2022 RoccoLox + TIny_Hacker COMPRESSED = NO diff --git a/src/asm/apps.asm b/src/asm/apps.asm index 2868880..39d2216 100644 --- a/src/asm/apps.asm +++ b/src/asm/apps.asm @@ -137,6 +137,7 @@ _executeApp: ; mostly Cesium's code ld bc, $fff call ti.MemClear ; get proper stuff for the app + call ti.DrawStatusBar push ix ld ix, 0 add ix, sp diff --git a/src/asm/editProg.asm b/src/asm/editProg.asm index 535270c..172b0b0 100644 --- a/src/asm/editProg.asm +++ b/src/asm/editProg.asm @@ -257,12 +257,12 @@ hook_app_change: .close_editor: call ti.ClrAppChangeHook push af, bc, hl + call ti.CursorOff + call ti.CloseEditEqu ld hl, isAppvar ld a, edit_appvar cp a, (hl) jr z, _restoreAppvar - call ti.CursorOff - call ti.CloseEditEqu ld hl, backup_prgm_name call ti.Mov9ToOP1 call ti.ChkFindSym @@ -303,6 +303,9 @@ hook_app_change: jr .exitOS _restoreAppvar: + ld hl, isAppvar + ld a, 0 + ld (hl), a pop hl, bc, af ld hl, tempProg call ti.Mov9ToOP1 diff --git a/src/asm/getVATPtrs.asm b/src/asm/getVATPtrs.asm index 4edf84e..d1c1d7d 100644 --- a/src/asm/getVATPtrs.asm +++ b/src/asm/getVATPtrs.asm @@ -19,13 +19,19 @@ include 'include/ti84pceg.inc' arrayPtr := ti.appData _getProgramPtrs: + ld iy, ti.flags + res 0, (iy + ti.asm_Flag1) push ix ld ix, 0 add ix, sp ld hl, (ix + 6) ; get array + ld a, (ix + 9) ; ignore hidden programs? pop ix ld (arrayPtr), hl ld hl, (ti.progPtr) + bit 0, a + jr z, .loop + set 0, (iy + ti.asm_Flag1) .loop: ld de, (ti.pTemp) @@ -42,6 +48,22 @@ _getProgramPtrs: jr nz, .skipEntry .isProgram: + ld de, 7 + or a, a + sbc hl, de + ld a, (hl) + add hl, de + push hl + call _checkHasHiddenHeader + pop hl + bit 0, b + jr nz, .skipEntry + bit 0, (iy + ti.asm_Flag1) + jr z, .loadAddress + cp a, 65 + jr c, .skipEntry + +.loadAddress: ld de, (arrayPtr) ex de, hl ld (hl), de @@ -61,6 +83,66 @@ _getProgramPtrs: sbc hl, de jr .loop +_checkHasHiddenHeader: + ld b, 0 + ld de, 5 + or a, a + sbc hl, de + ld a, (hl) + ld (ti.scrapMem + 2), a + ld de, (ti.scrapMem) + inc hl + ld d, (hl) + inc hl + ld e, (hl) + call ti.ChkInRam + jr z, .inRam + ld hl, 9 + add hl, de + ex de, hl + ld hl, 0 + ld a, (de) + ld l, a + add hl, de + ex de, hl + inc de + +.inRam: + ld hl, 0 + ld a, (de) + ld l, a + inc de + ld a, (de) + ld h, a ; get program size + inc de + call ti.ChkHLIs0 + ret z + dec hl + call ti.ChkHLIs0 + ret z + ex de, hl + ld a, $72 ; Ans token + cp a, (hl) + jr z, .maybeHidden + ld a, $AB ; rand token + cp a, (hl) + jr z, .maybeHidden + ret + +.maybeHidden: + inc hl + ld a, $3F ; newline + cp a, (hl) + jr z, .isHidden + ld a, $3E ; colon + cp a, (hl) + jr z, .isHidden + ret + +.isHidden: + ld b, 1 + ret + _getAppVarPtrs: push ix ld ix, 0 diff --git a/src/asm/getVATPtrs.h b/src/asm/getVATPtrs.h index d3f372e..de828db 100644 --- a/src/asm/getVATPtrs.h +++ b/src/asm/getVATPtrs.h @@ -12,11 +12,13 @@ #ifndef GETVATPTRS_H #define GETVATPTRS_H +#include + #ifdef __cplusplus extern "C" { #endif -void getProgramPtrs(void **programPtrs); +void getProgramPtrs(void **programPtrs, bool hideHiddenPrograms); void getAppVarPtrs(void **appvarPtrs); diff --git a/src/asm/hooks.asm b/src/asm/hooks.asm index 663df8d..cdf1628 100644 --- a/src/asm/hooks.asm +++ b/src/asm/hooks.asm @@ -526,6 +526,14 @@ _triggerAPD: or a, a sbc hl, hl ld (ti.asm_prgm_size), hl + ld hl, ti.pixelShadow + ld bc, 8400 * 3 + call ti.MemClear + call ti.ClrTxtShd + ld hl, ti.textShadow + ld de, ti.cmdShadow + ld bc, $104 + ldir ld hl, _reloadHook call ti.SetGetCSCHook ld a, ti.kClear diff --git a/src/main.c b/src/main.c index bb557fb..9557838 100644 --- a/src/main.c +++ b/src/main.c @@ -5,8 +5,8 @@ * By RoccoLox Programs and TIny_Hacker * Copyright 2022 * License: GPL-3.0 - * Last Build: December 18, 2022 - * Version: 0.81.2 + * Last Build: December 19, 2022 + * Version: 0.82 * * -------------------------------------- **/ @@ -176,7 +176,7 @@ int main(void) { void **programPtrs = malloc(NOPROGS * 3); void **appvarPtrs = malloc(NOAPPVARS * 3); - getProgramPtrs(programPtrs); + getProgramPtrs(programPtrs, !showHiddenProg); getAppVarPtrs(appvarPtrs); bool infoOps[2] = {false, false}; // This will keep track of whether a program has been deleted or hidden @@ -338,7 +338,7 @@ int main(void) { programPtrs = malloc(NOPROGS * 3); appvarPtrs = malloc(NOAPPVARS * 3); - getProgramPtrs(programPtrs); + getProgramPtrs(programPtrs, !showHiddenProg); getAppVarPtrs(appvarPtrs); ui_DrawAllFiles(colors, programPtrs, appvarPtrs, fileSelected, fileNumbers[directory], fileStartLoc, directory, displayCEaShell, showHiddenProg, showApps, showAppvars); @@ -380,14 +380,21 @@ int main(void) { gfx_Sprite_NoClip(buffer2, 160, 38); } + gfx_BlitBuffer(); + fullRedraw = true; + if (kb_IsDown(kb_KeyClear)) { continue; - } else { // We write the preferences before exiting, so this is fine - util_WritePrefs(colors, transitionSpeed, is24Hour, displayCEaShell, getCSCHook, editArchivedProg, editLockedProg, showHiddenProg, showFileCount, hideBusyIndicator, lowercase, apdTimer, fileSelected, fileStartLoc, directory, showApps, showAppvars, &programPtrs, &appvarPtrs, fileNumbers, true); // Stores our data to the appvar before exiting } - fullRedraw = true; - gfx_BlitBuffer(); + free(programPtrs); + free(appvarPtrs); + + programPtrs = malloc(NOPROGS * 3); + appvarPtrs = malloc(NOAPPVARS * 3); + + getProgramPtrs(programPtrs, !showHiddenProg); + getAppVarPtrs(appvarPtrs); } else if ((kb_IsDown(kb_KeyWindow) || kb_IsDown(kb_KeyZoom) || kb_IsDown(kb_KeyTrace) || kb_IsDown(kb_KeyAlpha)) && fileSelected >= 0 + ((directory == PROGRAMS_FOLDER) * (showApps + showAppvars)) + (directory != PROGRAMS_FOLDER)) { // Info menu ui_StatusBar(colors[1], is24Hour, batteryStatus, "File Info", fileNumbers[directory], showFileCount); gfx_BlitBuffer(); @@ -425,7 +432,7 @@ int main(void) { programPtrs = malloc(NOPROGS * 3); appvarPtrs = malloc(NOAPPVARS * 3); - getProgramPtrs(programPtrs); + getProgramPtrs(programPtrs, !showHiddenProg); getAppVarPtrs(appvarPtrs); while (kb_AnyKey()); @@ -436,7 +443,7 @@ int main(void) { programPtrs = malloc(NOPROGS * 3); appvarPtrs = malloc(NOAPPVARS * 3); - getProgramPtrs(programPtrs); + getProgramPtrs(programPtrs, !showHiddenProg); getAppVarPtrs(appvarPtrs); infoOps[1] = false; @@ -479,7 +486,7 @@ int main(void) { gfx_SetFontSpacing(defaultSpacing); gfx_SetCharData(91, leftBracket); - menu_Settings(colors, &getCSCHook, &editArchivedProg, &editLockedProg, &showHiddenProg, &showFileCount, &hideBusyIndicator, &lowercase, &apdTimer); + menu_Settings(colors, &fileSelected, &fileStartLoc, &getCSCHook, &editArchivedProg, &editLockedProg, &showHiddenProg, &showFileCount, &hideBusyIndicator, &lowercase, &apdTimer); defaultSpacing[91] = 8; gfx_SetFontSpacing(defaultSpacing); @@ -515,14 +522,21 @@ int main(void) { gfx_Sprite_NoClip(buffer2, 160, 38); } + fullRedraw = true; + gfx_BlitBuffer(); + if (kb_IsDown(kb_KeyClear)) { continue; - } else { // Same as Customize menu - util_WritePrefs(colors, transitionSpeed, is24Hour, displayCEaShell, getCSCHook, editArchivedProg, editLockedProg, showHiddenProg, showFileCount, hideBusyIndicator, lowercase, apdTimer, fileSelected, fileStartLoc, directory, showApps, showAppvars, &programPtrs, &appvarPtrs, fileNumbers, true); } - fullRedraw = true; - gfx_BlitBuffer(); + free(programPtrs); + free(appvarPtrs); + + programPtrs = malloc(NOPROGS * 3); + appvarPtrs = malloc(NOAPPVARS * 3); + + getProgramPtrs(programPtrs, !showHiddenProg); + getAppVarPtrs(appvarPtrs); } else if (kb_IsDown(kb_Key2nd) || kb_IsDown(kb_KeyEnter)) { if (fileSelected == 0 && directory == PROGRAMS_FOLDER) { // Toggle directories if (showApps) { @@ -638,7 +652,7 @@ int main(void) { programPtrs = malloc(NOPROGS * 3); appvarPtrs = malloc(NOAPPVARS * 3); - getProgramPtrs(programPtrs); + getProgramPtrs(programPtrs, !showHiddenProg); getAppVarPtrs(appvarPtrs); } } diff --git a/src/menu.c b/src/menu.c index c80463b..d49f2dc 100644 --- a/src/menu.c +++ b/src/menu.c @@ -60,7 +60,9 @@ static void menu_ColorPicker(uint8_t *colors, uint8_t *newColors, uint8_t apdTim bool keyPressed = false; uint8_t colorSelected = colors[0]; uint8_t colorModifying = 0; + while (kb_AnyKey()); + while (!kb_IsDown(kb_KeyYequ) && !kb_IsDown(kb_KeyClear) && !kb_IsDown(kb_KeyAlpha)) { // Key detection loop if ((timer_Get(1) >= ONE_MINUTE * apdTimer) && apdTimer) { gfx_End(); @@ -68,6 +70,7 @@ static void menu_ColorPicker(uint8_t *colors, uint8_t *newColors, uint8_t apdTim } kb_Scan(); + if (!kb_AnyKey() && keyPressed) { keyPressed = false; timer_Set(1, 0); @@ -80,6 +83,7 @@ static void menu_ColorPicker(uint8_t *colors, uint8_t *newColors, uint8_t apdTim if ((kb_Data[7] || kb_IsDown(kb_Key2nd) || kb_IsDown(kb_KeyEnter) || kb_IsDown(kb_KeyMode)) && (!keyPressed || timer_Get(1) > 3000)) { redraw = true; + if (kb_IsDown(kb_KeyLeft)) { if (colorSelected != 0) { colorSelected -= 1; @@ -110,22 +114,27 @@ static void menu_ColorPicker(uint8_t *colors, uint8_t *newColors, uint8_t apdTim if (kb_IsDown(kb_Key2nd) || kb_IsDown(kb_KeyEnter)) { newColors[colorModifying] = colorSelected; + while (kb_AnyKey()); + if (colorModifying != 2) { colorModifying++; } else { break; } + colorSelected = colors[colorModifying]; } if (kb_IsDown(kb_KeyMode)) { while (kb_AnyKey()); + if (colorModifying < 2) { colorModifying++; } else { colorModifying = 0; } + colorSelected = newColors[colorModifying]; } @@ -134,6 +143,7 @@ static void menu_ColorPicker(uint8_t *colors, uint8_t *newColors, uint8_t apdTim kb_Scan(); } } + keyPressed = true; timer_Set(1,0); } @@ -327,14 +337,16 @@ static void menu_LooksRefresh(const uint8_t color, uint8_t *colors, const uint8_ menu_ThemePreview(color, colors, defaultThemes); uint8_t drawBox = 0; // Theme selector + for (uint8_t y = 49; y < 78; y += 28) { for (int x = 168; x < 282; x += 28, drawBox += 3) { shapes_RoundRectangleFill(defaultThemes[drawBox], 6, 22, 22, x, y); } } + gfx_TransparentSprite_NoClip(invSwitch, 280, 77); // Invert color icon } - + ui_DrawUISprite(colors[1], UI_LARROW, 15, 208); } @@ -359,6 +371,7 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned bool keyPressed = false; while (kb_AnyKey()); + while (!kb_IsDown(kb_KeyYequ) && !kb_IsDown(kb_KeyClear)) { // Key detection loop if ((timer_Get(1) >= ONE_MINUTE * apdTimer) && apdTimer) { gfx_End(); @@ -366,6 +379,7 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned } kb_Scan(); + if (!kb_AnyKey() && keyPressed) { keyPressed = false; timer_Set(1, 0); @@ -396,6 +410,7 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned cursorY = cursorY - 28 * (kb_IsDown(kb_KeyUp) && cursorY > 47) + 28 * (kb_IsDown(kb_KeyDown) && cursorY < 75); cursorX = cursorX - 28 * (kb_IsDown(kb_KeyLeft) && cursorX > 166) + 28 * (kb_IsDown(kb_KeyRight) && cursorX < 278); } + color = 3 * ((cursorX - 166) / 28) + 15 * (cursorY > 47); // Change the selected color/theme shapes_RoundRectangleFill(colors[0], 8, 26, 26, prevCursorX, prevCursorY); // Erase old color @@ -445,6 +460,7 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned *transitionSpeed = 1; } } + break; case 3: *displayCEaShell = !*displayCEaShell; @@ -475,6 +491,8 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned *showAppvars = true; } } + + break; default: break; } @@ -504,23 +522,28 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned while (kb_AnyKey()); } } + if (themePicker) { menu_ThemePreview(color, colors, defaultThemes); // Refresh the preview if a different theme is selected } } + menu_LooksRefresh(color, colors, defaultThemes, cursorX, cursorY, *is24Hour, *transitionSpeed, *displayCEaShell, themePicker, *showApps, *showAppvars, option); gfx_BlitBuffer(); + if (!keyPressed) { while (timer_Get(1) < 9000 && kb_Data[7]) { kb_Scan(); } } + keyPressed = true; timer_Set(1,0); } if ((kb_IsDown(kb_KeyEnter) || kb_IsDown(kb_Key2nd)) && themePicker) { // If you select a theme themePicker = false; + if (color == 27) { colors[3] = !colors[3]; invertPalette(); @@ -546,6 +569,7 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned gfx_BlitBuffer(); } } + gfx_SetTextFGColor(255 * !(colors[1] > 131 && colors[1] % 8 > 3)); } @@ -582,6 +606,7 @@ static void menu_InfoRedraw(const bool fullRedraw, const bool drawCursor, uint8_ if (osFileType != OS_TYPE_APPVAR) { fileName[0] += 64 * isHidden; } + free(description); } @@ -768,9 +793,10 @@ void menu_Info(uint8_t *colors, void **programPtrs, void **appvarPtrs, bool *inf gfx_BlitBuffer(); bool keyPressed = false; - fileName[0] -= 64 * initialValue[2]; // The viewable file name becomes what the OS sees instead + while (kb_AnyKey()); + while (!kb_IsDown(kb_KeyWindow) && !kb_IsDown(kb_KeyZoom) && !kb_IsDown(kb_KeyTrace) && !kb_IsDown(kb_KeyAlpha) && !kb_IsDown(kb_KeyClear)) { if ((timer_Get(1) >= ONE_MINUTE * apdTimer) && apdTimer) { gfx_End(); @@ -982,6 +1008,7 @@ void menu_Info(uint8_t *colors, void **programPtrs, void **appvarPtrs, bool *inf fileName[0] += 64; } } + ti_Close(slot); } @@ -1086,7 +1113,7 @@ static void menu_SettingsRedraw(uint8_t *colors, const uint8_t option, const uin gfx_PrintStringXY("Automatically turn", 171, 69); gfx_PrintStringXY("off the calculator", 171, 81); gfx_PrintStringXY("after a certain", 171, 93); - gfx_PrintStringXY("number of minutes", 171, 105); + gfx_PrintStringXY("lenght of inactivity", 171, 105); gfx_PrintStringXY("in CEaShell.", 171, 117); break; case 9: @@ -1141,7 +1168,7 @@ static void menu_SettingsRedraw(uint8_t *colors, const uint8_t option, const uin } } -void menu_Settings(uint8_t *colors, uint8_t *getCSCHook, bool *editArchivedProg, bool *editLockedProg, bool *showHiddenProg, bool *showFileCount, bool *hideBusyIndicator, bool *lowercase, uint8_t *apdTimer) { +void menu_Settings(uint8_t *colors, unsigned int *fileSelected, unsigned int *fileStartLoc, uint8_t *getCSCHook, bool *editArchivedProg, bool *editLockedProg, bool *showHiddenProg, bool *showFileCount, bool *hideBusyIndicator, bool *lowercase, uint8_t *apdTimer) { timer_Set(1, 0); shapes_RoundRectangleFill(colors[1], 8, 304, 192, 8, 39); @@ -1211,6 +1238,7 @@ void menu_Settings(uint8_t *colors, uint8_t *getCSCHook, bool *editArchivedProg, } else { removeGetCSCHook(); } + break; case 2: *editArchivedProg = !*editArchivedProg; @@ -1226,12 +1254,19 @@ void menu_Settings(uint8_t *colors, uint8_t *getCSCHook, bool *editArchivedProg, removeHomescreenHook(); } } + break; case 3: *editLockedProg = !*editLockedProg; break; case 4: *showHiddenProg = !*showHiddenProg; + + if (!(*showHiddenProg)) { + *fileSelected = 0; + *fileStartLoc = 0; + } + break; case 5: *showFileCount = !*showFileCount; diff --git a/src/menu.h b/src/menu.h index 6568de8..f828bb6 100644 --- a/src/menu.h +++ b/src/menu.h @@ -23,7 +23,7 @@ void menu_Looks(uint8_t *colors, void **programPtrs, void **appvarPtrs, unsigned void menu_Info(uint8_t *colors, void **programPtrs, void **appvarPtrs, bool *infoOps, unsigned int fileSelected, const unsigned int fileStartLoc, unsigned int *fileNumbers, const uint8_t directory, const bool displayCEaShell, const bool editLockedProg, const bool showHiddenProg, const uint8_t apdTimer, const bool showApps, const bool showAppvars); -void menu_Settings(uint8_t *colors, uint8_t *getCSCHook, bool *editArchivedProg, bool *editLockedProg, bool *showHiddenProg, bool *showFileCount, bool *hideBusyIndicator, bool *lowercase, uint8_t *apdTimer); +void menu_Settings(uint8_t *colors, unsigned int *fileSelected, unsigned int *fileStartLoc, uint8_t *getCSCHook, bool *editArchivedProg, bool *editLockedProg, bool *showHiddenProg, bool *showFileCount, bool *hideBusyIndicator, bool *lowercase, uint8_t *apdTimer); #ifdef __cplusplus } diff --git a/src/ui.c b/src/ui.c index 81acb53..2dd2395 100644 --- a/src/ui.c +++ b/src/ui.c @@ -565,8 +565,9 @@ void ui_DrawDoubleMenuItem(const char *lineOne, const char *lineTwo, const int x void ui_AboutScreen(uint8_t *colors) { const char *specialThanks = "Special Thanks To: Code/Coding Help: MateoConLechuga, calc84maniac, commandblockguy, jacobly, Zeroko, and the CEdev Discord." - " Inspiration/Feature Ideas: KermMartian, Adriweb, epsilon5, NoahK, DJ Omnimaga. Beta Testing: Nanobot567, ChuckyHecker, darkwater4213, Oxiti8." - " And a big thank you to the members of the discord for your support and ideas!"; + " French translation: Shadow. Inspiration/Feature Ideas: KermMartian, Adriweb, epsilon5, NoahK," + " DJ Omnimaga. Beta Testing: Nanobot567, ChuckyHecker, darkwater4213, Oxiti8." + " And a big thank you to the members of our discord for your support and ideas!"; unsigned int startDisplay = 0; shapes_RoundRectangleFill(colors[0], 8, 290, 155, 15, 46); gfx_SetTextScale(2, 2); @@ -579,7 +580,7 @@ void ui_AboutScreen(uint8_t *colors) { gfx_PrintStringXY("shell created by RoccoLox Programs and", 21, 102); gfx_PrintStringXY("TIny_Hacker. CEaShell aims to provide an", 21, 115); gfx_PrintStringXY("easy to use, modern interface for the", 21, 128); - gfx_PrintStringXY("TI-84 + CE calculator.", 21, 141); + gfx_PrintStringXY("TI-84+ CE and TI-83 PCE calculators.", 21, 141); gfx_PrintStringXY("(C) Copyright 2022", 21, 175); gfx_PrintStringXY("RoccoLox Programs, TIny_Hacker", 21, 188); gfx_SetClipRegion(21, 52, 299, 196); // Helps cut the text off in the scrolling animation @@ -619,7 +620,7 @@ void ui_AboutScreen(uint8_t *colors) { timer_Set(1, 0); } - if (startDisplay > 344) { + if (startDisplay > 372) { startDisplay = 0; // restart } @@ -638,7 +639,7 @@ void ui_NewUser(void) { gfx_PrintStringXY("Welcome to CEaShell", 29, 27); gfx_SetTextScale(1, 1); gfx_PrintStringXY("v"VERSION_NO, 29, 44); - gfx_PrintStringXY("A new shell for the TI-84 Plus CE.", 29, 54); + gfx_PrintStringXY("A shell for the CE calculators.", 29, 54); shapes_RoundRectangleFill(237, 6, 272, 143, 24, 71); shapes_RoundRectangleFill(236, 7, 86, 22, 206, 188); gfx_PrintStringXY("Alpha to", 211, 191); @@ -650,7 +651,7 @@ void ui_NewUser(void) { gfx_PrintStringXY("and menus.", 29, 112); gfx_PrintStringXY("Use the function keys to open the menu", 29, 130); gfx_PrintStringXY("buttons on the bottom row. You can open", 29, 142); - gfx_PrintStringXY("the description pill for more info", 29, 154); + gfx_PrintStringXY("the description bar for more info", 29, 154); gfx_PrintStringXY("on a file using the function keys or", 29, 166); gfx_PrintStringXY("[alpha].", 29, 180); gfx_BlitBuffer(); diff --git a/src/utility.c b/src/utility.c index 760afc6..9ff3138 100644 --- a/src/utility.c +++ b/src/utility.c @@ -94,7 +94,7 @@ const bool showApps, const bool showAppvars, void ***programPtrs, void ***appvar *programPtrs = malloc(NOPROGS * 3); *appvarPtrs = malloc(NOAPPVARS * 3); - getProgramPtrs(*programPtrs); + getProgramPtrs(*programPtrs, !showHiddenProg); getAppVarPtrs(*appvarPtrs); } }