diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a013b4be17..e89d80c7112 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,7 @@ on: - develop env: - firmware_version: '0.86.1' + firmware_version: '0.101.2' jobs: build: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43be5d678b5..9e00f82ab88 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: - 'v[0-9]+.[0-9]+.[0-9]+' env: - firmware_version: '0.86.1' + firmware_version: '0.101.2' jobs: build: diff --git a/.github/workflows/ufbt_build.yaml b/.github/workflows/ufbt_build.yaml index 411cbffc421..c554364a94a 100644 --- a/.github/workflows/ufbt_build.yaml +++ b/.github/workflows/ufbt_build.yaml @@ -1,10 +1,11 @@ -name: "FAP: Build for multiple SDK sources" +name: "uFBT Build" on: - push: - branches: - - main - - develop - pull_request: + workflow_dispatch: + # push: + # branches: + # - main + # - develop + # pull_request: # schedule: # do a build every day # - cron: "1 1 * * *" @@ -21,9 +22,9 @@ jobs: name: 'ufbt: Build for ${{ matrix.name }}' steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build with ufbt - uses: flipperdevices/flipperzero-ufbt-action@v0.1.2 + uses: flipperdevices/flipperzero-ufbt-action@v0.1.3 id: build-app with: sdk-channel: ${{ matrix.sdk-channel }} diff --git a/README.md b/README.md index 7ca2770b9a8..d1eb783e0bf 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,8 @@ ![FLIPR](https://github.com/xtruan/flipper-chess/blob/main/icons/FLIPR_128x64.png) ## Chess game for Flipper Zero -- Built against `0.86.1` Flipper Zero firmware release +- Built against `0.101.2` Flipper Zero firmware release - Uses [smallchesslib](https://codeberg.org/drummyfish/smallchesslib) -- Included in [RogueMaster Custom Firmware](https://github.com/RogueMaster/flipperzero-firmware-wPlugins) ### Installation diff --git a/application.fam b/application.fam index e0479c380ea..319a5ec0f4e 100644 --- a/application.fam +++ b/application.fam @@ -14,6 +14,6 @@ App( fap_category="Games", fap_author="Struan Clark (xtruan)", fap_weburl="https://github.com/xtruan/flipper-chess", - fap_version=(1, 9), + fap_version=(1, 10), fap_description="Chess for Flipper", ) diff --git a/catalog/manifest.yml b/catalog/manifest.yml index be26d9ce94e..6f1bc835182 100644 --- a/catalog/manifest.yml +++ b/catalog/manifest.yml @@ -2,9 +2,9 @@ sourcecode: type: git location: origin: https://github.com/xtruan/flipper-chess.git - commit_sha: c340eb5ec6a68f9e1213d725002d25812bbe989b + commit_sha: 4678ec9a6db516e09a9c18929dca2a5f1acca32a description: "How about a nice game of chess?" -changelog: "v1.9.0 - Gameplay enhancements and bug fixes" +changelog: "v1.10 - Update to support new FW" author: "@xtruan" screenshots: - "./catalog/startscreen.png" diff --git a/flipchess.c b/flipchess.c index 3a1ca8c7920..d6528c36ba2 100644 --- a/flipchess.c +++ b/flipchess.c @@ -74,7 +74,6 @@ FlipChess* flipchess_app_alloc() { app->view_dispatcher, flipchess_tick_event_callback, 100); view_dispatcher_set_custom_event_callback( app->view_dispatcher, flipchess_custom_event_callback); - app->submenu = submenu_alloc(); // Settings app->haptic = FlipChessHapticOn; @@ -89,6 +88,7 @@ FlipChess* flipchess_app_alloc() { // Text input app->input_state = FlipChessTextInputDefault; + app->submenu = submenu_alloc(); view_dispatcher_add_view( app->view_dispatcher, FlipChessViewIdMenu, submenu_get_view(app->submenu)); app->flipchess_startscreen = flipchess_startscreen_alloc(); @@ -131,14 +131,17 @@ void flipchess_app_free(FlipChess* app) { // Scene manager scene_manager_free(app->scene_manager); - text_input_free(app->text_input); - // View Dispatcher view_dispatcher_remove_view(app->view_dispatcher, FlipChessViewIdMenu); + submenu_free(app->submenu); + view_dispatcher_remove_view(app->view_dispatcher, FlipChessViewIdStartscreen); + flipchess_startscreen_free(app->flipchess_startscreen); view_dispatcher_remove_view(app->view_dispatcher, FlipChessViewIdScene1); + flipchess_scene_1_free(app->flipchess_scene_1); view_dispatcher_remove_view(app->view_dispatcher, FlipChessViewIdSettings); + variable_item_list_free(app->variable_item_list); view_dispatcher_remove_view(app->view_dispatcher, FlipChessViewIdTextInput); - submenu_free(app->submenu); + text_input_free(app->text_input); view_dispatcher_free(app->view_dispatcher); furi_record_close(RECORD_GUI); diff --git a/flipchess.h b/flipchess.h index 2e6c2f12424..7afa06bf0ab 100644 --- a/flipchess.h +++ b/flipchess.h @@ -16,7 +16,7 @@ #include "views/flipchess_startscreen.h" #include "views/flipchess_scene_1.h" -#define FLIPCHESS_VERSION "v1.9.0" +#define FLIPCHESS_VERSION "v1.10" #define TEXT_BUFFER_SIZE 96 #define TEXT_SIZE (TEXT_BUFFER_SIZE - 1) diff --git a/helpers/flipchess_file.c b/helpers/flipchess_file.c index a051f9b645a..99aee49750f 100644 --- a/helpers/flipchess_file.c +++ b/helpers/flipchess_file.c @@ -40,10 +40,10 @@ bool flipchess_has_file(const FlipChessFile file_type, const char* file_name, co bool flipchess_load_file(char* contents, const FlipChessFile file_type, const char* file_name) { bool ret = false; const char* path; + char path_buf[FILE_MAX_PATH_LEN] = {0}; if(file_type == FlipChessFileBoard) { path = FLIPCHESS_BOARD_PATH; } else { - char path_buf[FILE_MAX_PATH_LEN] = {0}; strcpy(path_buf, FLIPCHESS_APP_BASE_FOLDER); // 22 strcpy(path_buf + strlen(path_buf), "/"); strcpy(path_buf + strlen(path_buf), file_name); @@ -99,11 +99,11 @@ bool flipchess_save_file( bool ret = false; const char* path; const char* path_bak; + char path_buf[FILE_MAX_PATH_LEN] = {0}; if(file_type == FlipChessFileBoard) { path = FLIPCHESS_BOARD_PATH; path_bak = FLIPCHESS_BOARD_PATH_BAK; } else { - char path_buf[FILE_MAX_PATH_LEN] = {0}; strcpy(path_buf, FLIPCHESS_APP_BASE_FOLDER); // 22 strcpy(path_buf + strlen(path_buf), "/"); strcpy(path_buf + strlen(path_buf), file_name); diff --git a/helpers/flipchess_fonts.c b/helpers/flipchess_fonts.c new file mode 100644 index 00000000000..8fc609f7ec6 --- /dev/null +++ b/helpers/flipchess_fonts.c @@ -0,0 +1,71 @@ +#include "flipchess_fonts.h" + +/* + Fontname: -FreeType-LucasArts SCUMM Subtitle Roman Outline-Medium-R-Normal--32-320-72-72-P-107-ISO10646-1 + Copyright: Copyright Goatmeal 2013 LucasArts SCUMM - Subtitle - Roman + Glyphs: 74/95 + BBX Build Mode: 0 +*/ +const uint8_t _u8g2_font_lucasarts_scumm_subtitle_o_tr[1941] U8G2_FONT_SECTION( + "_u8g2_font_lucasarts_scumm_subtitle_o_tr") = + "J\0\3\2\5\4\1\4\6\22\21\0\373\14\374\14\374\1\265\4\345\7x \5\0b\11!\21\246\237" + "\231!\221F\307I\211\232\206\250\323\220\0\42\11\250>\212'\237\206\3'\11\244>\211A\62\15\2," + "\16\346\222\231A\311\222,\221N\312\20\1-\11in\212\207\34x\10.\11\204\36\211A\222\6\1/" + "\26\253\337zd\7\224XJ\265P\363\37\63\65\222\23\35\330\21\0\60\42\255_\273aHm\322$E" + "\212\224HY\64i\222\224F\66i\312\42%R\244H\232\64U\35\206\14\61\27\250\37\252!\223\42-" + "\12\243)\214\302(\214\302(\214\242C<\34\62\34\253\337\252a\310TE:)\322 I\251$J\242" + "$J\242$J\303\240C\303\3\63\35\253\337\252a\310TE:)\322 I\331\20i\241\70D\303\344" + "\42\235\24U\33\206\10\64\36\253\337\352!\226R-\24\63\251dJ\244)\211\206h\207\206A\222\243\34" + "\210r`H\0\65\35\253\337\212\357\220\64\234r \32\246\34P\206!\222\245A\213,\322IQ\265a" + "\210\0\66\35\253\337\252a\310TE:)\222\64\334\1%\233&E\222\262\310\42\235\24U\33\206\10\67" + "\35\253\337\212\357\320pJ%Q\22%\65\222\243\34\210r \312\201(\7\242\34\30B\0\70\33\253\337" + "\252a\310TE:)\222E:)\252\42\235\24\311\42\235\24U\33\206\10\71\34\253\337\252a\310TE" + ":)\222\224E\26\351\226\350\300\223E:)\252\66\14\21\0:\14$#\211A\222\6q\220\244A;" + "\17d\33\211A\222\6q\220\244E\31\24\0\77\36\253\337\252a\310TE:)\322 I\251$J\242" + "\244Fr\224\3C\16D\71\60\204\0A%\257\337\353!\307\244\34\313tD\314\221H\221%)\216\206" + "D\324\221\60\32\26I\12\243D\22\225\261\66\14\341 B\34\253\337\212\203\26KN\321T\232J\246X" + "\212&%J\244$J\244w@\31N\0C\42\254\37\273\341\244&\211\264%\221\42M\231\42\211C\224" + "#\221\16H\341\22)K\42MVq\30\42\0D#\254\37\213\267\34\220\244I\252H\235\224(\222\222" + "(\213\222(\222\222\250\244D\211\224H\223\222\3\322p\3E\36\253\337\212\357\320!J\242A))C" + "\22\25\323\60*F\312\220D\203\62\15\221\16\15\17F\36\253\337\212\357\320!J\242A))C\22\25" + "\323\60*FJ\30\15\231\64\246\341\60\204\0G%\255_\273\341\246&\221\264E\221\42%R\246\224\304" + "%\212\206AR\322)\231\224H\221\42i\313\304(\34.\0H\33\254\37\213\17\241\70\15\221\22\365\247" + "!\252#Q\64D\375\213\64D\243\70<\4I\17\246\237\211C\70)Q\377/\322\70\14\1J\34\252" + "\237\312a,Jj\24Gq\24G\321 %\222\224DS\222UTi\30\42\0K\34\254\37\213\17\241" + "\70]\42[\24\211\241\32\252Q$F\266hR\244!\32\305\341!L\37\254\37\213CZ\225\346(G" + "\242\34\211r$\312\221(G\242p\211\62e\32$\35\33\36\2M\42\257\337\213\333\60\204\212xT\302" + "\61\352\177\322\244\222&\225\226\251\64\14Q\42i\322\230\205\303\220\15\3N#\255_\213\313\60\204I\270" + "\15\221\22N-S\223TR\244\222\324\264D\245\61\221\206lL\302aH\206\1O\42\255_\273aH" + "m\322$E\212\224HY\64i\222\224F\66i\312\42%R\244H\232\64U\35\206\14P\37\253\337\212" + "\247\34P\244I\211\22)\211\22)\211&%\226\242A\213r \212%\65L\207\25Q'\355W\273a" + "Hm\322$E\212\224HY\64i\222\224F\66i\312\42%\32\244HJ\42MU\247\35\320rd\220" + "\0R\35\254\37\213\267\34\220\244I\252H-Ri\222b-\232\244\212\324\213\64D\243\70<\4S\36" + "\253\337\252\341\242&\333$-\246!\31\264!{\310\6e\210\24e\222\266%U\206\23\0T\32\252\237" + "\212\7\35\221J\212\244\14\322\220Eq\24Gq\24G\251$\26\207\11U\37\253\337\212\217\332\64$J" + "T\211Z\242\226\250%j\211Z\242hH\242L\212Tm\30\42\0V\36\253\337\212\217\332\64$JT" + "\211Z\242hH\42\213\26)a\244\204\232\232\305Y + +extern const uint8_t _u8g2_font_lucasarts_scumm_subtitle_o_tr[] U8G2_FONT_SECTION( + "_u8g2_font_lucasarts_scumm_subtitle_o_tr"); diff --git a/icons/Background_128x11.png b/icons/Background_128x11.png deleted file mode 100644 index 149780f0c97..00000000000 Binary files a/icons/Background_128x11.png and /dev/null differ diff --git a/sam/stm32_sam.cpp b/sam/stm32_sam.cpp index 041a07a68a1..cd36ec64820 100644 --- a/sam/stm32_sam.cpp +++ b/sam/stm32_sam.cpp @@ -4510,7 +4510,7 @@ void STM32SAM::AdjustLengths() { mem56 = flags[index]; // not a consonant - if((index != 255 && flags[index] & 64) == 0) { + if((mem56 & 64) == 0) { // RX or LX? if((index == 18) || (index == 19)) // 'RX' & 'LX' { @@ -4519,7 +4519,7 @@ void STM32SAM::AdjustLengths() { index = phonemeindex[X]; // next phoneme a consonant? - if((flags[index] & 64) != 0) { + if((mem56 & 64) != 0) { // RULE: RX | LX // decrease length of vowel by 1 frame diff --git a/views/flipchess_startscreen.c b/views/flipchess_startscreen.c index d25bbe2cc8e..0b41bcd161c 100644 --- a/views/flipchess_startscreen.c +++ b/views/flipchess_startscreen.c @@ -4,6 +4,9 @@ #include #include #include "flipchess_icons.h" +#include "helpers/flipchess_fonts.h" + +#include struct FlipChessStartscreen { View* view; @@ -32,15 +35,9 @@ void flipchess_startscreen_draw(Canvas* canvas, FlipChessStartscreenModel* model canvas_draw_icon(canvas, 0, 0, &I_FLIPR_128x64); -#ifdef CANVAS_HAS_FONT_SCUMM_ROMAN_OUTLINE const uint8_t text_x_pos = 2; const uint8_t text_y_pos = 12; - canvas_set_font(canvas, FontScummRomanOutline); -#else - const uint8_t text_x_pos = 4; - const uint8_t text_y_pos = 11; - canvas_set_font(canvas, FontPrimary); -#endif + canvas_set_custom_u8g2_font(canvas, _u8g2_font_lucasarts_scumm_subtitle_o_tr); canvas_draw_str(canvas, text_x_pos, text_y_pos, "Chess"); canvas_set_font(canvas, FontSecondary); canvas_draw_str(canvas, 62, text_y_pos, FLIPCHESS_VERSION);