Skip to content

Commit d07f27f

Browse files
committed
Latest Release RM1016-1143-0.93.1-a804ac8 on PATREON - ANIMATION SELECTOR IN CFW SETTINGS
1 parent 105db0a commit d07f27f

File tree

16 files changed

+446
-7
lines changed

16 files changed

+446
-7
lines changed

ReadMe.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ This software is for experimental purposes only and is not meant for any illegal
2121
- Keep Your Flipper Up To Date With [PATREON membership](https://www.patreon.com/RogueMaster/membership)
2222
- [PATREON for daily compiled releases](https://www.patreon.com/RogueMaster) for nearly ALL updates. GitHub releases will occur weekly or with OFW version updates.
2323
- [Contact me on Discord/Patreon to RENAME your Flipper or for GIF conversion for Flipper Zero](https://www.patreon.com/RogueMaster/membership)
24-
- [: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.
24+
- [: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.
2525
- [VIDEO PREVIEW FOR ALL ANIMATIONS](https://www.patreon.com/posts/august-2023-all-87925007)
2626
- [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)
2727

2828
<a name="latest">
2929

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

32-
- Last Synced/Checked OFW, changes in [commits](https://github.com/flipperdevices/flipperzero-firmware/commits/dev): `2023-10-17 22:15 EST`
33-
- Last Synced/Checked Unleashed, changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2023-10-17 22:15 EST`
32+
- Last Synced/Checked OFW, changes in [commits](https://github.com/flipperdevices/flipperzero-firmware/commits/dev): `2023-10-18 02:15 EST`
33+
- Last Synced/Checked Unleashed, changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2023-10-18 02:15 EST`
3434
- Updated: [XRemote v1.0.6 (By kala13x)](https://github.com/kala13x/flipper-xremote)
3535
- UL: SubGHz: Add 4 more systems to Add Manually (untested!)
3636
- UL: SubGHz: Add Manually fixes
@@ -43,6 +43,8 @@ This software is for experimental purposes only and is not meant for any illegal
4343
- Updated: [HEX Viewer v2.0 (By QtRoS)](https://github.com/QtRoS/flipperzero-firmware) Removed Unneded Import & Screens From xMasterX
4444
- Fix: [Debug: Launch app on Flipper broken in VSCode #982 (By jamisondeerek)](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/issues/982)
4545
- Updated: [Pokemon Trading v1.3 (By EstebanFuentealba)](https://github.com/EstebanFuentealba/Flipper-Zero-Game-Boy-Trading-Pokemons)
46+
- [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)
47+
- [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)
4648

4749
<a name="release">
4850

applications/services/desktop/animations/animation_storage.c

Lines changed: 197 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <core/dangerous_defines.h>
66
#include <storage/storage.h>
77
#include <gui/icon_i.h>
8+
#include <cfw.h>
89

910
#include "animation_manager.h"
1011
#include "animation_storage.h"
@@ -14,7 +15,6 @@
1415

1516
#define ANIMATION_META_FILE "meta.txt"
1617
#define ANIMATION_DIR EXT_PATH("dolphin")
17-
#define ANIMATION_MANIFEST_FILE ANIMATION_DIR "/manifest.txt"
1818
#define TAG "AnimationStorage"
1919

2020
static void animation_storage_free_bubbles(BubbleAnimation* animation);
@@ -34,10 +34,106 @@ static bool animation_storage_load_single_manifest_info(
3434
FuriString* read_string;
3535
read_string = furi_string_alloc();
3636

37+
FuriString* anim_manifest;
38+
anim_manifest = furi_string_alloc();
39+
AnimStyle my_anim_style = CFW_SETTINGS()->anim_style;
40+
switch(my_anim_style) {
41+
case AnimStyleNone:
42+
furi_string_printf(anim_manifest, "%s/manifest_None.txt", ANIMATION_DIR);
43+
break;
44+
case AnimStyleDefault:
45+
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
46+
break;
47+
case AnimStyleMinimal:
48+
furi_string_printf(anim_manifest, "%s/manifest_Minimal.txt", ANIMATION_DIR);
49+
break;
50+
case AnimStyle420:
51+
furi_string_printf(anim_manifest, "%s/manifest_420.txt", ANIMATION_DIR);
52+
break;
53+
case AnimStyle42018:
54+
furi_string_printf(anim_manifest, "%s/manifest_42018.txt", ANIMATION_DIR);
55+
break;
56+
case AnimStyleALL:
57+
furi_string_printf(anim_manifest, "%s/manifest_ALL.txt", ANIMATION_DIR);
58+
break;
59+
case AnimStyleAnime:
60+
furi_string_printf(anim_manifest, "%s/manifest_Anime.txt", ANIMATION_DIR);
61+
break;
62+
case AnimStyleAnime420:
63+
furi_string_printf(anim_manifest, "%s/manifest_Anime420.txt", ANIMATION_DIR);
64+
break;
65+
case AnimStyleAnime42018:
66+
furi_string_printf(anim_manifest, "%s/manifest_Anime42018.txt", ANIMATION_DIR);
67+
break;
68+
case AnimStyleBMO:
69+
furi_string_printf(anim_manifest, "%s/manifest_BMO.txt", ANIMATION_DIR);
70+
break;
71+
case AnimStyleCherry:
72+
furi_string_printf(anim_manifest, "%s/manifest_Cherry.txt", ANIMATION_DIR);
73+
break;
74+
case AnimStyleCorpLogos:
75+
furi_string_printf(anim_manifest, "%s/manifest_CorpLogos.txt", ANIMATION_DIR);
76+
break;
77+
case AnimStyleDBZ:
78+
furi_string_printf(anim_manifest, "%s/manifest_DBZ.txt", ANIMATION_DIR);
79+
break;
80+
case AnimStyleDigim0n:
81+
furi_string_printf(anim_manifest, "%s/manifest_Digim0n.txt", ANIMATION_DIR);
82+
break;
83+
case AnimStyleDolphin:
84+
furi_string_printf(anim_manifest, "%s/manifest_Dolphin.txt", ANIMATION_DIR);
85+
break;
86+
case AnimStyleHackz:
87+
furi_string_printf(anim_manifest, "%s/manifest_Hackz.txt", ANIMATION_DIR);
88+
break;
89+
case AnimStyleMario:
90+
furi_string_printf(anim_manifest, "%s/manifest_Mario.txt", ANIMATION_DIR);
91+
break;
92+
case AnimStyleNYAN:
93+
furi_string_printf(anim_manifest, "%s/manifest_NYAN.txt", ANIMATION_DIR);
94+
break;
95+
case AnimStyleOnePiece:
96+
furi_string_printf(anim_manifest, "%s/manifest_OnePiece.txt", ANIMATION_DIR);
97+
break;
98+
case AnimStyleP0kemon:
99+
furi_string_printf(anim_manifest, "%s/manifest_P0kemon.txt", ANIMATION_DIR);
100+
break;
101+
case AnimStyleRM18:
102+
furi_string_printf(anim_manifest, "%s/manifest_RM18.txt", ANIMATION_DIR);
103+
break;
104+
case AnimStyleRMSelect:
105+
furi_string_printf(anim_manifest, "%s/manifest_RMSelect.txt", ANIMATION_DIR);
106+
break;
107+
case AnimStyleRMSelect18:
108+
furi_string_printf(anim_manifest, "%s/manifest_RMSelect18.txt", ANIMATION_DIR);
109+
break;
110+
case AnimStyleSAO:
111+
furi_string_printf(anim_manifest, "%s/manifest_SAO.txt", ANIMATION_DIR);
112+
break;
113+
case AnimStyleScience:
114+
furi_string_printf(anim_manifest, "%s/manifest_Science.txt", ANIMATION_DIR);
115+
break;
116+
case AnimStyleSJUMP:
117+
furi_string_printf(anim_manifest, "%s/manifest_SJUMP.txt", ANIMATION_DIR);
118+
break;
119+
case AnimStyleSquatch:
120+
furi_string_printf(anim_manifest, "%s/manifest_Squatch.txt", ANIMATION_DIR);
121+
break;
122+
case AnimStyleStock:
123+
furi_string_printf(anim_manifest, "%s/manifest_Stock.txt", ANIMATION_DIR);
124+
break;
125+
case AnimStyleWatchDogs:
126+
furi_string_printf(anim_manifest, "%s/manifest_WatchDogs.txt", ANIMATION_DIR);
127+
break;
128+
default:
129+
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
130+
break;
131+
}
132+
37133
do {
38134
uint32_t u32value;
39135
if(FSE_OK != storage_sd_status(storage)) break;
40-
if(!flipper_format_file_open_existing(file, ANIMATION_MANIFEST_FILE)) break;
136+
if(!flipper_format_file_open_existing(file, furi_string_get_cstr(anim_manifest))) break;
41137

42138
if(!flipper_format_read_header(file, read_string, &u32value)) break;
43139
if(furi_string_cmp_str(read_string, "Flipper Animation Manifest")) break;
@@ -71,6 +167,7 @@ static bool animation_storage_load_single_manifest_info(
71167
if(!result && manifest_info->name) {
72168
free((void*)manifest_info->name);
73169
}
170+
furi_string_free(anim_manifest);
74171
furi_string_free(read_string);
75172
flipper_format_free(file);
76173

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

190+
FuriString* anim_manifest;
191+
anim_manifest = furi_string_alloc();
192+
AnimStyle my_anim_style = CFW_SETTINGS()->anim_style;
193+
switch(my_anim_style) {
194+
case AnimStyleNone:
195+
furi_string_printf(anim_manifest, "%s/manifest_None.txt", ANIMATION_DIR);
196+
break;
197+
case AnimStyleDefault:
198+
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
199+
break;
200+
case AnimStyleMinimal:
201+
furi_string_printf(anim_manifest, "%s/manifest_Minimal.txt", ANIMATION_DIR);
202+
break;
203+
case AnimStyle420:
204+
furi_string_printf(anim_manifest, "%s/manifest_420.txt", ANIMATION_DIR);
205+
break;
206+
case AnimStyle42018:
207+
furi_string_printf(anim_manifest, "%s/manifest_42018.txt", ANIMATION_DIR);
208+
break;
209+
case AnimStyleALL:
210+
furi_string_printf(anim_manifest, "%s/manifest_ALL.txt", ANIMATION_DIR);
211+
break;
212+
case AnimStyleAnime:
213+
furi_string_printf(anim_manifest, "%s/manifest_Anime.txt", ANIMATION_DIR);
214+
break;
215+
case AnimStyleAnime420:
216+
furi_string_printf(anim_manifest, "%s/manifest_Anime420.txt", ANIMATION_DIR);
217+
break;
218+
case AnimStyleAnime42018:
219+
furi_string_printf(anim_manifest, "%s/manifest_Anime42018.txt", ANIMATION_DIR);
220+
break;
221+
case AnimStyleBMO:
222+
furi_string_printf(anim_manifest, "%s/manifest_BMO.txt", ANIMATION_DIR);
223+
break;
224+
case AnimStyleCherry:
225+
furi_string_printf(anim_manifest, "%s/manifest_Cherry.txt", ANIMATION_DIR);
226+
break;
227+
case AnimStyleCorpLogos:
228+
furi_string_printf(anim_manifest, "%s/manifest_CorpLogos.txt", ANIMATION_DIR);
229+
break;
230+
case AnimStyleDBZ:
231+
furi_string_printf(anim_manifest, "%s/manifest_DBZ.txt", ANIMATION_DIR);
232+
break;
233+
case AnimStyleDigim0n:
234+
furi_string_printf(anim_manifest, "%s/manifest_Digim0n.txt", ANIMATION_DIR);
235+
break;
236+
case AnimStyleDolphin:
237+
furi_string_printf(anim_manifest, "%s/manifest_Dolphin.txt", ANIMATION_DIR);
238+
break;
239+
case AnimStyleHackz:
240+
furi_string_printf(anim_manifest, "%s/manifest_Hackz.txt", ANIMATION_DIR);
241+
break;
242+
case AnimStyleMario:
243+
furi_string_printf(anim_manifest, "%s/manifest_Mario.txt", ANIMATION_DIR);
244+
break;
245+
case AnimStyleNYAN:
246+
furi_string_printf(anim_manifest, "%s/manifest_NYAN.txt", ANIMATION_DIR);
247+
break;
248+
case AnimStyleOnePiece:
249+
furi_string_printf(anim_manifest, "%s/manifest_OnePiece.txt", ANIMATION_DIR);
250+
break;
251+
case AnimStyleP0kemon:
252+
furi_string_printf(anim_manifest, "%s/manifest_P0kemon.txt", ANIMATION_DIR);
253+
break;
254+
case AnimStyleRM18:
255+
furi_string_printf(anim_manifest, "%s/manifest_RM18.txt", ANIMATION_DIR);
256+
break;
257+
case AnimStyleRMSelect:
258+
furi_string_printf(anim_manifest, "%s/manifest_RMSelect.txt", ANIMATION_DIR);
259+
break;
260+
case AnimStyleRMSelect18:
261+
furi_string_printf(anim_manifest, "%s/manifest_RMSelect18.txt", ANIMATION_DIR);
262+
break;
263+
case AnimStyleSAO:
264+
furi_string_printf(anim_manifest, "%s/manifest_SAO.txt", ANIMATION_DIR);
265+
break;
266+
case AnimStyleScience:
267+
furi_string_printf(anim_manifest, "%s/manifest_Science.txt", ANIMATION_DIR);
268+
break;
269+
case AnimStyleSJUMP:
270+
furi_string_printf(anim_manifest, "%s/manifest_SJUMP.txt", ANIMATION_DIR);
271+
break;
272+
case AnimStyleSquatch:
273+
furi_string_printf(anim_manifest, "%s/manifest_Squatch.txt", ANIMATION_DIR);
274+
break;
275+
case AnimStyleStock:
276+
furi_string_printf(anim_manifest, "%s/manifest_Stock.txt", ANIMATION_DIR);
277+
break;
278+
case AnimStyleWatchDogs:
279+
furi_string_printf(anim_manifest, "%s/manifest_WatchDogs.txt", ANIMATION_DIR);
280+
break;
281+
default:
282+
furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR);
283+
break;
284+
}
285+
93286
do {
94287
uint32_t u32value;
95288
StorageAnimation* storage_animation = NULL;
96289

97290
if(FSE_OK != storage_sd_status(storage)) break;
98-
if(!flipper_format_file_open_existing(file, ANIMATION_MANIFEST_FILE)) break;
291+
if(!flipper_format_file_open_existing(file, furi_string_get_cstr(anim_manifest))) break;
99292
if(!flipper_format_read_header(file, read_string, &u32value)) break;
100293
if(furi_string_cmp_str(read_string, "Flipper Animation Manifest")) break;
101294
do {
@@ -126,6 +319,7 @@ void animation_storage_fill_animation_list(StorageAnimationList_t* animation_lis
126319
animation_storage_free_storage_animation(&storage_animation);
127320
} while(0);
128321

322+
furi_string_free(anim_manifest);
129323
furi_string_free(read_string);
130324
flipper_format_free(file);
131325

applications/settings/cfw_app/scenes/cfw_app_scene_interface_desktop.c

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@
1212
#define CFW_DESKTOP_SELECT_STEALTH_ICON 9
1313
#define CFW_DESKTOP_SELECT_TOP_BAR 10
1414

15+
const char* const anim_style_names[AnimStyleCount] = {
16+
"None", "Default", "Minimal", "420", "420+18", "ALL",
17+
"Anime", "Anime+420", "Anime+420+18", "BMO", "Cherry", "Corp Logos",
18+
"DBZ", "Digim0n", "Dolphin", "Hackz", "Mario", "NYAN",
19+
"One Piece", "P0kemon", "RM 18+", "RM Select", "RM Select 18+", "SAO",
20+
"Science", "SJUMP", "Squatch", "Stock", "WatchDogs",
21+
};
22+
1523
#define BATTERY_VIEW_COUNT 7
1624
const char* const battery_view_count_text[BATTERY_VIEW_COUNT] =
1725
{"Bar", "%", "Inv. %", "Retro 3", "Retro 5", "Bar %", "None"};
@@ -62,6 +70,14 @@ static void cfw_app_scene_interface_desktop_var_item_list_callback(void* context
6270
view_dispatcher_send_custom_event(app->view_dispatcher, index);
6371
}
6472

73+
static void cfw_app_scene_interface_desktop_anim_style_changed(VariableItem* item) {
74+
CfwApp* app = variable_item_get_context(item);
75+
uint8_t index = variable_item_get_current_value_index(item);
76+
variable_item_set_current_value_text(item, anim_style_names[index]);
77+
CFW_SETTINGS()->anim_style = index;
78+
app->save_settings = true;
79+
}
80+
6581
static void cfw_app_scene_interface_desktop_clock_enable_changed(VariableItem* item) {
6682
CfwApp* app = variable_item_get_context(item);
6783
uint8_t index = variable_item_get_current_value_index(item);
@@ -144,7 +160,7 @@ static void cfw_app_scene_interface_desktop_dumbmode_icon_changed(VariableItem*
144160

145161
void cfw_app_scene_interface_desktop_on_enter(void* context) {
146162
CfwApp* app = context;
147-
// CfwSettings* cfw_settings = CFW_SETTINGS();
163+
CfwSettings* cfw_settings = CFW_SETTINGS();
148164
VariableItemList* var_item_list = app->var_item_list;
149165

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

172+
item = variable_item_list_add(
173+
var_item_list,
174+
"Animations",
175+
AnimStyleCount,
176+
cfw_app_scene_interface_desktop_anim_style_changed,
177+
app);
178+
variable_item_set_current_value_index(item, cfw_settings->anim_style);
179+
variable_item_set_current_value_text(item, anim_style_names[cfw_settings->anim_style]);
180+
156181
item = variable_item_list_add(
157182
var_item_list,
158183
"Icon Style",

applications/settings/cfw_app/scenes/cfw_app_scene_interface_mainmenu.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const char* const menu_style_names[MenuStyleCount] = {
2626
"Compact",
2727
"Terminal",
2828
};
29+
2930
static void cfw_app_scene_interface_mainmenu_menu_style_changed(VariableItem* item) {
3031
CfwApp* app = variable_item_get_context(item);
3132
uint8_t index = variable_item_get_current_value_index(item);
89 Bytes
Loading
89 Bytes
Loading
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Filetype: Flipper Animation
2+
Version: 1
3+
4+
Width: 128
5+
Height: 64
6+
Passive frames: 2
7+
Active frames: 1
8+
Frames order: 0 1 0
9+
Active cycles: 1
10+
Frame rate: 1
11+
Duration: 3600
12+
Active cooldown: 1
13+
14+
Bubble slots: 0

assets/dolphin/external/manifest.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
Filetype: Flipper Animation Manifest
22
Version: 1
33

4+
Name: MjK_blank_128x64
5+
Min butthurt: 0
6+
Max butthurt: 14
7+
Min level: 1
8+
Max level: 30
9+
Weight: 0
10+
411
Name: wrenchathome_F0Pattern_128x64
512
Min butthurt: 0
613
Max butthurt: 14
108 Bytes
Binary file not shown.
108 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)