Skip to content

Commit

Permalink
Latest Release RM1016-1143-0.93.1-a804ac8 on PATREON - ANIMATION SELE…
Browse files Browse the repository at this point in the history
…CTOR IN CFW SETTINGS
  • Loading branch information
RogueMaster committed Oct 18, 2023
1 parent 105db0a commit d07f27f
Show file tree
Hide file tree
Showing 16 changed files with 446 additions and 7 deletions.
8 changes: 5 additions & 3 deletions ReadMe.md
Expand Up @@ -21,16 +21,16 @@ This software is for experimental purposes only and is not meant for any illegal
- Keep Your Flipper Up To Date With [PATREON membership](https://www.patreon.com/RogueMaster/membership)
- [PATREON for daily compiled releases](https://www.patreon.com/RogueMaster) for nearly ALL updates. GitHub releases will occur weekly or with OFW version updates.
- [Contact me on Discord/Patreon to RENAME your Flipper or for GIF conversion for Flipper Zero](https://www.patreon.com/RogueMaster/membership)
- [:fire: PATREON ANIMATION BUILDS AVAILABLE](https://www.patreon.com/RogueMaster/membership): [ALL](https://www.patreon.com/posts/animation-all-v4-77935728), 420, 420+18, Anime Only, Anime+420, Anime+420+18, BMO, CHERUI 18+, DBZ, Dolphin, HACKZ, MARIO, No Anim, ONE PIECE, P0KEMON, RM 18PLUS, RM SELECT, RM SELECT + 18PLUS, RM MINIMAL (default on GitHub), SAO, SCIENCE, SJUMP, SQUATCH, WATCHDOGS AND STOCK with all assets updated to look like stock. ALL, Anime and RM Select builds are very large and can slow down F0.
- [:fire: PATREON ANIMATION BUILDS AVAILABLE](https://www.patreon.com/RogueMaster/membership): [ALL](https://www.patreon.com/posts/animation-all-v4-77935728), 420, 420+18, Anime Only, Anime+420, Anime+420+18, BMO, CHERRY, 18+, DBZ, Dolphin, HACKZ, MARIO, No Anim, ONE PIECE, P0KEMON, RM 18PLUS, RM SELECT, RM SELECT + 18PLUS, RM MINIMAL (default on GitHub), SAO, SCIENCE, SJUMP, SQUATCH, WATCHDOGS AND STOCK with all assets updated to look like stock. ALL, Anime and RM Select builds are very large and can slow down F0.
- [VIDEO PREVIEW FOR ALL ANIMATIONS](https://www.patreon.com/posts/august-2023-all-87925007)
- [Supporters also get SD Card Assets zip file with extra NFC Assets such as Infrared remotes, NFC files, SubGHz files and 86 RM Pro Trained Level 50 Sm@sh Amiib0 (By RogueMaster)](https://www.patreon.com/RogueMaster/membership)

<a name="latest">

## Latest Updates - [PATREON: Latest Release RM1017-1744-0.93.1-2d1dc65](https://www.patreon.com/RogueMaster?filters[tag]=Latest%20Release)

- Last Synced/Checked OFW, changes in [commits](https://github.com/flipperdevices/flipperzero-firmware/commits/dev): `2023-10-17 22:15 EST`
- Last Synced/Checked Unleashed, changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2023-10-17 22:15 EST`
- Last Synced/Checked OFW, changes in [commits](https://github.com/flipperdevices/flipperzero-firmware/commits/dev): `2023-10-18 02:15 EST`
- Last Synced/Checked Unleashed, changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2023-10-18 02:15 EST`
- Updated: [XRemote v1.0.6 (By kala13x)](https://github.com/kala13x/flipper-xremote)
- UL: SubGHz: Add 4 more systems to Add Manually (untested!)
- UL: SubGHz: Add Manually fixes
Expand All @@ -43,6 +43,8 @@ This software is for experimental purposes only and is not meant for any illegal
- Updated: [HEX Viewer v2.0 (By QtRoS)](https://github.com/QtRoS/flipperzero-firmware) Removed Unneded Import & Screens From xMasterX
- Fix: [Debug: Launch app on Flipper broken in VSCode #982 (By jamisondeerek)](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/issues/982)
- Updated: [Pokemon Trading v1.3 (By EstebanFuentealba)](https://github.com/EstebanFuentealba/Flipper-Zero-Game-Boy-Trading-Pokemons)
- [Patreon Update: SD Card Assets now include the dolphin folder with Manifest Switcher files found here](https://github.com/RogueMaster/awesome-flipperzero-withModules/tree/rogue_main/graphics/dolphin-ManifestSwitcher)
- [CFW Settings - Interface - Desktop - Animations Selector (By RogueMaster)]() [You must copy these files to your SD dolphin folder](https://github.com/RogueMaster/awesome-flipperzero-withModules/tree/rogue_main/graphics/dolphin-ManifestSwitcher)

<a name="release">

Expand Down
200 changes: 197 additions & 3 deletions applications/services/desktop/animations/animation_storage.c
Expand Up @@ -5,6 +5,7 @@
#include <core/dangerous_defines.h>
#include <storage/storage.h>
#include <gui/icon_i.h>
#include <cfw.h>

#include "animation_manager.h"
#include "animation_storage.h"
Expand All @@ -14,7 +15,6 @@

#define ANIMATION_META_FILE "meta.txt"
#define ANIMATION_DIR EXT_PATH("dolphin")
#define ANIMATION_MANIFEST_FILE ANIMATION_DIR "/manifest.txt"
#define TAG "AnimationStorage"

static void animation_storage_free_bubbles(BubbleAnimation* animation);
Expand All @@ -34,10 +34,106 @@ static bool animation_storage_load_single_manifest_info(
FuriString* read_string;
read_string = furi_string_alloc();

FuriString* anim_manifest;
anim_manifest = furi_string_alloc();
AnimStyle my_anim_style = CFW_SETTINGS()->anim_style;
switch(my_anim_style) {
case AnimStyleNone:
furi_string_printf(anim_manifest, "%s/manifest_None.txt", ANIMATION_DIR);
break;
case AnimStyleDefault:
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
break;
case AnimStyleMinimal:
furi_string_printf(anim_manifest, "%s/manifest_Minimal.txt", ANIMATION_DIR);
break;
case AnimStyle420:
furi_string_printf(anim_manifest, "%s/manifest_420.txt", ANIMATION_DIR);
break;
case AnimStyle42018:
furi_string_printf(anim_manifest, "%s/manifest_42018.txt", ANIMATION_DIR);
break;
case AnimStyleALL:
furi_string_printf(anim_manifest, "%s/manifest_ALL.txt", ANIMATION_DIR);
break;
case AnimStyleAnime:
furi_string_printf(anim_manifest, "%s/manifest_Anime.txt", ANIMATION_DIR);
break;
case AnimStyleAnime420:
furi_string_printf(anim_manifest, "%s/manifest_Anime420.txt", ANIMATION_DIR);
break;
case AnimStyleAnime42018:
furi_string_printf(anim_manifest, "%s/manifest_Anime42018.txt", ANIMATION_DIR);
break;
case AnimStyleBMO:
furi_string_printf(anim_manifest, "%s/manifest_BMO.txt", ANIMATION_DIR);
break;
case AnimStyleCherry:
furi_string_printf(anim_manifest, "%s/manifest_Cherry.txt", ANIMATION_DIR);
break;
case AnimStyleCorpLogos:
furi_string_printf(anim_manifest, "%s/manifest_CorpLogos.txt", ANIMATION_DIR);
break;
case AnimStyleDBZ:
furi_string_printf(anim_manifest, "%s/manifest_DBZ.txt", ANIMATION_DIR);
break;
case AnimStyleDigim0n:
furi_string_printf(anim_manifest, "%s/manifest_Digim0n.txt", ANIMATION_DIR);
break;
case AnimStyleDolphin:
furi_string_printf(anim_manifest, "%s/manifest_Dolphin.txt", ANIMATION_DIR);
break;
case AnimStyleHackz:
furi_string_printf(anim_manifest, "%s/manifest_Hackz.txt", ANIMATION_DIR);
break;
case AnimStyleMario:
furi_string_printf(anim_manifest, "%s/manifest_Mario.txt", ANIMATION_DIR);
break;
case AnimStyleNYAN:
furi_string_printf(anim_manifest, "%s/manifest_NYAN.txt", ANIMATION_DIR);
break;
case AnimStyleOnePiece:
furi_string_printf(anim_manifest, "%s/manifest_OnePiece.txt", ANIMATION_DIR);
break;
case AnimStyleP0kemon:
furi_string_printf(anim_manifest, "%s/manifest_P0kemon.txt", ANIMATION_DIR);
break;
case AnimStyleRM18:
furi_string_printf(anim_manifest, "%s/manifest_RM18.txt", ANIMATION_DIR);
break;
case AnimStyleRMSelect:
furi_string_printf(anim_manifest, "%s/manifest_RMSelect.txt", ANIMATION_DIR);
break;
case AnimStyleRMSelect18:
furi_string_printf(anim_manifest, "%s/manifest_RMSelect18.txt", ANIMATION_DIR);
break;
case AnimStyleSAO:
furi_string_printf(anim_manifest, "%s/manifest_SAO.txt", ANIMATION_DIR);
break;
case AnimStyleScience:
furi_string_printf(anim_manifest, "%s/manifest_Science.txt", ANIMATION_DIR);
break;
case AnimStyleSJUMP:
furi_string_printf(anim_manifest, "%s/manifest_SJUMP.txt", ANIMATION_DIR);
break;
case AnimStyleSquatch:
furi_string_printf(anim_manifest, "%s/manifest_Squatch.txt", ANIMATION_DIR);
break;
case AnimStyleStock:
furi_string_printf(anim_manifest, "%s/manifest_Stock.txt", ANIMATION_DIR);
break;
case AnimStyleWatchDogs:
furi_string_printf(anim_manifest, "%s/manifest_WatchDogs.txt", ANIMATION_DIR);
break;
default:
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
break;
}

do {
uint32_t u32value;
if(FSE_OK != storage_sd_status(storage)) break;
if(!flipper_format_file_open_existing(file, ANIMATION_MANIFEST_FILE)) break;
if(!flipper_format_file_open_existing(file, furi_string_get_cstr(anim_manifest))) break;

if(!flipper_format_read_header(file, read_string, &u32value)) break;
if(furi_string_cmp_str(read_string, "Flipper Animation Manifest")) break;
Expand Down Expand Up @@ -71,6 +167,7 @@ static bool animation_storage_load_single_manifest_info(
if(!result && manifest_info->name) {
free((void*)manifest_info->name);
}
furi_string_free(anim_manifest);
furi_string_free(read_string);
flipper_format_free(file);

Expand All @@ -90,12 +187,108 @@ void animation_storage_fill_animation_list(StorageAnimationList_t* animation_lis
FuriString* read_string;
read_string = furi_string_alloc();

FuriString* anim_manifest;
anim_manifest = furi_string_alloc();
AnimStyle my_anim_style = CFW_SETTINGS()->anim_style;
switch(my_anim_style) {
case AnimStyleNone:
furi_string_printf(anim_manifest, "%s/manifest_None.txt", ANIMATION_DIR);
break;
case AnimStyleDefault:
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
break;
case AnimStyleMinimal:
furi_string_printf(anim_manifest, "%s/manifest_Minimal.txt", ANIMATION_DIR);
break;
case AnimStyle420:
furi_string_printf(anim_manifest, "%s/manifest_420.txt", ANIMATION_DIR);
break;
case AnimStyle42018:
furi_string_printf(anim_manifest, "%s/manifest_42018.txt", ANIMATION_DIR);
break;
case AnimStyleALL:
furi_string_printf(anim_manifest, "%s/manifest_ALL.txt", ANIMATION_DIR);
break;
case AnimStyleAnime:
furi_string_printf(anim_manifest, "%s/manifest_Anime.txt", ANIMATION_DIR);
break;
case AnimStyleAnime420:
furi_string_printf(anim_manifest, "%s/manifest_Anime420.txt", ANIMATION_DIR);
break;
case AnimStyleAnime42018:
furi_string_printf(anim_manifest, "%s/manifest_Anime42018.txt", ANIMATION_DIR);
break;
case AnimStyleBMO:
furi_string_printf(anim_manifest, "%s/manifest_BMO.txt", ANIMATION_DIR);
break;
case AnimStyleCherry:
furi_string_printf(anim_manifest, "%s/manifest_Cherry.txt", ANIMATION_DIR);
break;
case AnimStyleCorpLogos:
furi_string_printf(anim_manifest, "%s/manifest_CorpLogos.txt", ANIMATION_DIR);
break;
case AnimStyleDBZ:
furi_string_printf(anim_manifest, "%s/manifest_DBZ.txt", ANIMATION_DIR);
break;
case AnimStyleDigim0n:
furi_string_printf(anim_manifest, "%s/manifest_Digim0n.txt", ANIMATION_DIR);
break;
case AnimStyleDolphin:
furi_string_printf(anim_manifest, "%s/manifest_Dolphin.txt", ANIMATION_DIR);
break;
case AnimStyleHackz:
furi_string_printf(anim_manifest, "%s/manifest_Hackz.txt", ANIMATION_DIR);
break;
case AnimStyleMario:
furi_string_printf(anim_manifest, "%s/manifest_Mario.txt", ANIMATION_DIR);
break;
case AnimStyleNYAN:
furi_string_printf(anim_manifest, "%s/manifest_NYAN.txt", ANIMATION_DIR);
break;
case AnimStyleOnePiece:
furi_string_printf(anim_manifest, "%s/manifest_OnePiece.txt", ANIMATION_DIR);
break;
case AnimStyleP0kemon:
furi_string_printf(anim_manifest, "%s/manifest_P0kemon.txt", ANIMATION_DIR);
break;
case AnimStyleRM18:
furi_string_printf(anim_manifest, "%s/manifest_RM18.txt", ANIMATION_DIR);
break;
case AnimStyleRMSelect:
furi_string_printf(anim_manifest, "%s/manifest_RMSelect.txt", ANIMATION_DIR);
break;
case AnimStyleRMSelect18:
furi_string_printf(anim_manifest, "%s/manifest_RMSelect18.txt", ANIMATION_DIR);
break;
case AnimStyleSAO:
furi_string_printf(anim_manifest, "%s/manifest_SAO.txt", ANIMATION_DIR);
break;
case AnimStyleScience:
furi_string_printf(anim_manifest, "%s/manifest_Science.txt", ANIMATION_DIR);
break;
case AnimStyleSJUMP:
furi_string_printf(anim_manifest, "%s/manifest_SJUMP.txt", ANIMATION_DIR);
break;
case AnimStyleSquatch:
furi_string_printf(anim_manifest, "%s/manifest_Squatch.txt", ANIMATION_DIR);
break;
case AnimStyleStock:
furi_string_printf(anim_manifest, "%s/manifest_Stock.txt", ANIMATION_DIR);
break;
case AnimStyleWatchDogs:
furi_string_printf(anim_manifest, "%s/manifest_WatchDogs.txt", ANIMATION_DIR);
break;
default:
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
break;
}

do {
uint32_t u32value;
StorageAnimation* storage_animation = NULL;

if(FSE_OK != storage_sd_status(storage)) break;
if(!flipper_format_file_open_existing(file, ANIMATION_MANIFEST_FILE)) break;
if(!flipper_format_file_open_existing(file, furi_string_get_cstr(anim_manifest))) break;
if(!flipper_format_read_header(file, read_string, &u32value)) break;
if(furi_string_cmp_str(read_string, "Flipper Animation Manifest")) break;
do {
Expand Down Expand Up @@ -126,6 +319,7 @@ void animation_storage_fill_animation_list(StorageAnimationList_t* animation_lis
animation_storage_free_storage_animation(&storage_animation);
} while(0);

furi_string_free(anim_manifest);
furi_string_free(read_string);
flipper_format_free(file);

Expand Down
Expand Up @@ -12,6 +12,14 @@
#define CFW_DESKTOP_SELECT_STEALTH_ICON 9
#define CFW_DESKTOP_SELECT_TOP_BAR 10

const char* const anim_style_names[AnimStyleCount] = {
"None", "Default", "Minimal", "420", "420+18", "ALL",
"Anime", "Anime+420", "Anime+420+18", "BMO", "Cherry", "Corp Logos",
"DBZ", "Digim0n", "Dolphin", "Hackz", "Mario", "NYAN",
"One Piece", "P0kemon", "RM 18+", "RM Select", "RM Select 18+", "SAO",
"Science", "SJUMP", "Squatch", "Stock", "WatchDogs",
};

#define BATTERY_VIEW_COUNT 7
const char* const battery_view_count_text[BATTERY_VIEW_COUNT] =
{"Bar", "%", "Inv. %", "Retro 3", "Retro 5", "Bar %", "None"};
Expand Down Expand Up @@ -62,6 +70,14 @@ static void cfw_app_scene_interface_desktop_var_item_list_callback(void* context
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}

static void cfw_app_scene_interface_desktop_anim_style_changed(VariableItem* item) {
CfwApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, anim_style_names[index]);
CFW_SETTINGS()->anim_style = index;
app->save_settings = true;
}

static void cfw_app_scene_interface_desktop_clock_enable_changed(VariableItem* item) {
CfwApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
Expand Down Expand Up @@ -144,7 +160,7 @@ static void cfw_app_scene_interface_desktop_dumbmode_icon_changed(VariableItem*

void cfw_app_scene_interface_desktop_on_enter(void* context) {
CfwApp* app = context;
// CfwSettings* cfw_settings = CFW_SETTINGS();
CfwSettings* cfw_settings = CFW_SETTINGS();
VariableItemList* var_item_list = app->var_item_list;

VariableItem* item;
Expand All @@ -153,6 +169,15 @@ void cfw_app_scene_interface_desktop_on_enter(void* context) {
origIconStyle_value = app->desktop.icon_style;
origBattDisp_value = app->desktop.displayBatteryPercentage;

item = variable_item_list_add(
var_item_list,
"Animations",
AnimStyleCount,
cfw_app_scene_interface_desktop_anim_style_changed,
app);
variable_item_set_current_value_index(item, cfw_settings->anim_style);
variable_item_set_current_value_text(item, anim_style_names[cfw_settings->anim_style]);

item = variable_item_list_add(
var_item_list,
"Icon Style",
Expand Down
Expand Up @@ -26,6 +26,7 @@ const char* const menu_style_names[MenuStyleCount] = {
"Compact",
"Terminal",
};

static void cfw_app_scene_interface_mainmenu_menu_style_changed(VariableItem* item) {
CfwApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
Expand Down
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions assets/dolphin/external/MjK_blank_128x64/meta.txt
@@ -0,0 +1,14 @@
Filetype: Flipper Animation
Version: 1

Width: 128
Height: 64
Passive frames: 2
Active frames: 1
Frames order: 0 1 0
Active cycles: 1
Frame rate: 1
Duration: 3600
Active cooldown: 1

Bubble slots: 0
7 changes: 7 additions & 0 deletions assets/dolphin/external/manifest.txt
@@ -1,6 +1,13 @@
Filetype: Flipper Animation Manifest
Version: 1

Name: MjK_blank_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 30
Weight: 0

Name: wrenchathome_F0Pattern_128x64
Min butthurt: 0
Max butthurt: 14
Expand Down
Binary file added assets/resources/dolphin/MjK_blank_128x64/frame_0.bm
Binary file not shown.
Binary file added assets/resources/dolphin/MjK_blank_128x64/frame_1.bm
Binary file not shown.
14 changes: 14 additions & 0 deletions assets/resources/dolphin/MjK_blank_128x64/meta.txt
@@ -0,0 +1,14 @@
Filetype: Flipper Animation
Version: 1

Width: 128
Height: 64
Passive frames: 2
Active frames: 1
Frames order: 0 1 0
Active cycles: 1
Frame rate: 1
Duration: 3600
Active cooldown: 1

Bubble slots: 0
7 changes: 7 additions & 0 deletions assets/resources/dolphin/manifest.txt
@@ -1,6 +1,13 @@
Filetype: Flipper Animation Manifest
Version: 1

Name: MjK_blank_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 30
Weight: 0

Name: wrenchathome_F0Pattern_128x64
Min butthurt: 0
Max butthurt: 14
Expand Down

0 comments on commit d07f27f

Please sign in to comment.