diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9e5f3c729..308aa9428 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -102,14 +102,17 @@ jobs: - name: 'Bundle self-update package' if: ${{ !github.event.pull_request.head.repo.fork }} - run: | - set -e - for UPDATEBUNDLE in artifacts/*/ - do - BUNDLE_NAME=`echo $UPDATEBUNDLE | cut -d'/' -f2` - echo Packaging ${BUNDLE_NAME} - tar czpf artifacts/flipper-z-${BUNDLE_NAME}.tgz -C artifacts ${BUNDLE_NAME} - done + uses: ./.github/actions/docker + with: + run: | + set -e + for UPDATEBUNDLE in artifacts/*/ + do + BUNDLE_NAME=`echo $UPDATEBUNDLE | cut -d'/' -f2` + echo Packaging ${BUNDLE_NAME} + tar czpf artifacts/flipper-z-${BUNDLE_NAME}.tgz -C artifacts ${BUNDLE_NAME} + rm -rf artifacts/${BUNDLE_NAME} + done - name: 'Bundle resources' if: ${{ !github.event.pull_request.head.repo.fork }} diff --git a/applications/archive/helpers/archive_browser.c b/applications/archive/helpers/archive_browser.c index 418fdb47b..10f5ea3e2 100644 --- a/applications/archive/helpers/archive_browser.c +++ b/applications/archive/helpers/archive_browser.c @@ -120,13 +120,12 @@ void archive_file_array_swap(ArchiveBrowserView* browser, int8_t dir) { ArchiveFile_t_clear(&temp); } else if(model->item_idx == array_size && dir > 0) { ArchiveFile_t_init(&temp); - files_array_pop_at(&temp, model->files, model->item_idx); + files_array_pop_at(&temp, model->files, 0); files_array_push_at(model->files, array_size, temp); ArchiveFile_t_clear(&temp); } else { files_array_swap_at(model->files, model->item_idx, swap_idx); } - return false; }); } diff --git a/applications/archive/helpers/archive_favorites.c b/applications/archive/helpers/archive_favorites.c index ef8f1b225..ac5b9d294 100644 --- a/applications/archive/helpers/archive_favorites.c +++ b/applications/archive/helpers/archive_favorites.c @@ -106,6 +106,8 @@ static bool archive_favourites_rescan() { if(file_exists) { storage_file_close(fav_item_file); archive_file_append(ARCHIVE_FAV_TEMP_PATH, "%s\n", string_get_cstr(buffer)); + } else { + storage_file_close(fav_item_file); } } } @@ -116,6 +118,7 @@ static bool archive_favourites_rescan() { storage_file_close(file); storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); storage_file_free(fav_item_file); @@ -163,10 +166,12 @@ bool archive_favorites_read(void* context) { bool file_exists = storage_file_open( fav_item_file, string_get_cstr(buffer), FSAM_READ, FSOM_OPEN_EXISTING); if(file_exists) { + storage_common_stat(fs_api, string_get_cstr(buffer), &file_info); storage_file_close(fav_item_file); archive_add_file_item(browser, &file_info, string_get_cstr(buffer)); file_count++; } else { + storage_file_close(fav_item_file); need_refresh = true; } } @@ -224,6 +229,7 @@ bool archive_favorites_delete(const char* format, ...) { storage_file_close(file); storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); furi_record_close("storage"); @@ -308,6 +314,7 @@ bool archive_favorites_rename(const char* src, const char* dst) { storage_file_close(file); storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); furi_record_close("storage"); @@ -335,6 +342,7 @@ void archive_favorites_save(void* context) { storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); furi_record_close("storage"); diff --git a/applications/cli/cli_commands.c b/applications/cli/cli_commands.c index e6933c226..a58ddd49a 100644 --- a/applications/cli/cli_commands.c +++ b/applications/cli/cli_commands.c @@ -6,6 +6,7 @@ #include #include #include +#include // Close to ISO, `date +'%Y-%m-%d %H:%M:%S %u'` #define CLI_DATE_FORMAT "%.4d-%.2d-%.2d %.2d:%.2d:%.2d %d" @@ -126,13 +127,28 @@ void cli_command_date(Cli* cli, string_t args, void* context) { } } +#define CLI_COMMAND_LOG_RING_SIZE 2048 +#define CLI_COMMAND_LOG_BUFFER_SIZE 64 + +void cli_command_log_tx_callback(const uint8_t* buffer, size_t size, void* context) { + xStreamBufferSend(context, buffer, size, 0); +} + void cli_command_log(Cli* cli, string_t args, void* context) { - furi_stdglue_set_global_stdout_callback(cli_stdout_callback); - furi_log_set_puts((FuriLogPuts)printf); - printf("Press any key to stop...\r\n"); - cli_getc(cli); - furi_stdglue_set_global_stdout_callback(NULL); - furi_log_set_puts(furi_hal_console_puts); + StreamBufferHandle_t ring = xStreamBufferCreate(CLI_COMMAND_LOG_RING_SIZE, 1); + uint8_t buffer[CLI_COMMAND_LOG_BUFFER_SIZE]; + + furi_hal_console_set_tx_callback(cli_command_log_tx_callback, ring); + + printf("Press CTRL+C to stop...\r\n"); + while(!cli_cmd_interrupt_received(cli)) { + size_t ret = xStreamBufferReceive(ring, buffer, CLI_COMMAND_LOG_BUFFER_SIZE, 50); + cli_write(cli, buffer, ret); + } + + furi_hal_console_set_tx_callback(NULL, NULL); + + vStreamBufferDelete(ring); } void cli_command_vibro(Cli* cli, string_t args, void* context) { diff --git a/applications/ibutton/scene/ibutton_scene_read_success.cpp b/applications/ibutton/scene/ibutton_scene_read_success.cpp index edf7d914e..c4523904d 100644 --- a/applications/ibutton/scene/ibutton_scene_read_success.cpp +++ b/applications/ibutton/scene/ibutton_scene_read_success.cpp @@ -44,7 +44,7 @@ void iButtonSceneReadSuccess::on_enter(iButtonApp* app) { dialog_ex_set_text(dialog_ex, app->get_text_store(), 95, 30, AlignCenter, AlignCenter); dialog_ex_set_left_button_text(dialog_ex, "Retry"); dialog_ex_set_right_button_text(dialog_ex, "More"); - dialog_ex_set_icon(dialog_ex, 0, 1, &I_DolphinExcited_64x63); + dialog_ex_set_icon(dialog_ex, 0, 1, &I_DolphinReadingSuccess_59x63); dialog_ex_set_result_callback(dialog_ex, dialog_ex_callback); dialog_ex_set_context(dialog_ex, app); diff --git a/applications/rpc/rpc_app.c b/applications/rpc/rpc_app.c index c35decf03..728c20528 100644 --- a/applications/rpc/rpc_app.c +++ b/applications/rpc/rpc_app.c @@ -4,12 +4,16 @@ #include #include +#define TAG "RpcSystemApp" + static void rpc_system_app_start_process(const PB_Main* request, void* context) { furi_assert(request); furi_assert(request->which_content == PB_Main_app_start_request_tag); RpcSession* session = (RpcSession*)context; furi_assert(session); + FURI_LOG_D(TAG, "Start"); + PB_CommandStatus result = PB_CommandStatus_ERROR_APP_CANT_START; Loader* loader = furi_record_open("loader"); @@ -43,6 +47,8 @@ static void rpc_system_app_lock_status_process(const PB_Main* request, void* con RpcSession* session = (RpcSession*)context; furi_assert(session); + FURI_LOG_D(TAG, "LockStatus"); + Loader* loader = furi_record_open("loader"); PB_Main response = { diff --git a/applications/rpc/rpc_gui.c b/applications/rpc/rpc_gui.c index b67035ac2..f390d9837 100644 --- a/applications/rpc/rpc_gui.c +++ b/applications/rpc/rpc_gui.c @@ -65,8 +65,10 @@ static int32_t rpc_system_gui_screen_stream_frame_transmit_thread(void* context) static void rpc_system_gui_start_screen_stream_process(const PB_Main* request, void* context) { furi_assert(request); furi_assert(context); - RpcGuiSystem* rpc_gui = context; + FURI_LOG_D(TAG, "StartScreenStream"); + + RpcGuiSystem* rpc_gui = context; RpcSession* session = rpc_gui->session; furi_assert(session); @@ -103,6 +105,8 @@ static void rpc_system_gui_stop_screen_stream_process(const PB_Main* request, vo furi_assert(request); furi_assert(context); + FURI_LOG_D(TAG, "StopScreenStream"); + RpcGuiSystem* rpc_gui = context; RpcSession* session = rpc_gui->session; furi_assert(session); @@ -132,6 +136,8 @@ static void furi_assert(request->which_content == PB_Main_gui_send_input_event_request_tag); furi_assert(context); + FURI_LOG_D(TAG, "SendInputEvent"); + RpcGuiSystem* rpc_gui = context; RpcSession* session = rpc_gui->session; furi_assert(session); @@ -220,6 +226,8 @@ static void rpc_system_gui_start_virtual_display_process(const PB_Main* request, furi_assert(request); furi_assert(context); + FURI_LOG_D(TAG, "StartVirtualDisplay"); + RpcGuiSystem* rpc_gui = context; RpcSession* session = rpc_gui->session; furi_assert(session); @@ -259,6 +267,8 @@ static void rpc_system_gui_stop_virtual_display_process(const PB_Main* request, furi_assert(request); furi_assert(context); + FURI_LOG_D(TAG, "StopVirtualDisplay"); + RpcGuiSystem* rpc_gui = context; RpcSession* session = rpc_gui->session; furi_assert(session); @@ -282,6 +292,8 @@ static void rpc_system_gui_virtual_display_frame_process(const PB_Main* request, furi_assert(request); furi_assert(context); + FURI_LOG_D(TAG, "VirtualDisplayFrame"); + RpcGuiSystem* rpc_gui = context; RpcSession* session = rpc_gui->session; furi_assert(session); diff --git a/applications/rpc/rpc_storage.c b/applications/rpc/rpc_storage.c index 97d9ab62f..a21fec8ea 100644 --- a/applications/rpc/rpc_storage.c +++ b/applications/rpc/rpc_storage.c @@ -12,7 +12,8 @@ #include #include -#define RPC_TAG "RPC_STORAGE" +#define TAG "RpcStorage" + #define MAX_NAME_LENGTH 255 static const size_t MAX_DATA_SIZE = 512; @@ -106,6 +107,8 @@ static void rpc_system_storage_info_process(const PB_Main* request, void* contex furi_assert(context); furi_assert(request->which_content == PB_Main_storage_info_request_tag); + FURI_LOG_D(TAG, "Info"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -140,6 +143,8 @@ static void rpc_system_storage_stat_process(const PB_Main* request, void* contex furi_assert(context); furi_assert(request->which_content == PB_Main_storage_stat_request_tag); + FURI_LOG_D(TAG, "Stat"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -205,6 +210,8 @@ static void rpc_system_storage_list_process(const PB_Main* request, void* contex furi_assert(context); furi_assert(request->which_content == PB_Main_storage_list_request_tag); + FURI_LOG_D(TAG, "List"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -273,6 +280,8 @@ static void rpc_system_storage_read_process(const PB_Main* request, void* contex furi_assert(context); furi_assert(request->which_content == PB_Main_storage_read_request_tag); + FURI_LOG_D(TAG, "Read"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -330,6 +339,8 @@ static void rpc_system_storage_write_process(const PB_Main* request, void* conte furi_assert(context); furi_assert(request->which_content == PB_Main_storage_write_request_tag); + FURI_LOG_D(TAG, "Write"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -395,6 +406,9 @@ static void rpc_system_storage_delete_process(const PB_Main* request, void* cont furi_assert(request); furi_assert(request->which_content == PB_Main_storage_delete_request_tag); furi_assert(context); + + FURI_LOG_D(TAG, "Delete"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -433,6 +447,9 @@ static void rpc_system_storage_mkdir_process(const PB_Main* request, void* conte furi_assert(request); furi_assert(request->which_content == PB_Main_storage_mkdir_request_tag); furi_assert(context); + + FURI_LOG_D(TAG, "Mkdir"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -456,6 +473,9 @@ static void rpc_system_storage_md5sum_process(const PB_Main* request, void* cont furi_assert(request); furi_assert(request->which_content == PB_Main_storage_md5sum_request_tag); furi_assert(context); + + FURI_LOG_D(TAG, "Md5sum"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -521,6 +541,9 @@ static void rpc_system_storage_rename_process(const PB_Main* request, void* cont furi_assert(request); furi_assert(request->which_content == PB_Main_storage_rename_request_tag); furi_assert(context); + + FURI_LOG_D(TAG, "Rename"); + RpcStorageSystem* rpc_storage = context; RpcSession* session = rpc_storage->session; furi_assert(session); @@ -544,6 +567,8 @@ static void rpc_system_storage_backup_create_process(const PB_Main* request, voi furi_assert(request); furi_assert(request->which_content == PB_Main_storage_backup_create_request_tag); + FURI_LOG_D(TAG, "BackupCreate"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -567,6 +592,8 @@ static void rpc_system_storage_backup_restore_process(const PB_Main* request, vo furi_assert(request); furi_assert(request->which_content == PB_Main_storage_backup_restore_request_tag); + FURI_LOG_D(TAG, "BackupRestore"); + RpcSession* session = (RpcSession*)context; furi_assert(session); diff --git a/applications/rpc/rpc_system.c b/applications/rpc/rpc_system.c index 6ea3b02e4..f54bb1979 100644 --- a/applications/rpc/rpc_system.c +++ b/applications/rpc/rpc_system.c @@ -7,6 +7,8 @@ #include "rpc_i.h" +#define TAG "RpcSystem" + typedef struct { RpcSession* session; PB_Main* response; @@ -16,6 +18,8 @@ static void rpc_system_system_ping_process(const PB_Main* request, void* context furi_assert(request); furi_assert(request->which_content == PB_Main_system_ping_request_tag); + FURI_LOG_D(TAG, "Ping"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -46,6 +50,8 @@ static void rpc_system_system_reboot_process(const PB_Main* request, void* conte furi_assert(request); furi_assert(request->which_content == PB_Main_system_reboot_request_tag); + FURI_LOG_D(TAG, "Reboot"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -84,6 +90,8 @@ static void rpc_system_system_device_info_process(const PB_Main* request, void* furi_assert(request); furi_assert(request->which_content == PB_Main_system_device_info_request_tag); + FURI_LOG_D(TAG, "DeviceInfo"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -105,6 +113,8 @@ static void rpc_system_system_get_datetime_process(const PB_Main* request, void* furi_assert(request); furi_assert(request->which_content == PB_Main_system_get_datetime_request_tag); + FURI_LOG_D(TAG, "GetDatetime"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -132,6 +142,8 @@ static void rpc_system_system_set_datetime_process(const PB_Main* request, void* furi_assert(request); furi_assert(request->which_content == PB_Main_system_set_datetime_request_tag); + FURI_LOG_D(TAG, "SetDatetime"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -158,6 +170,8 @@ static void rpc_system_system_factory_reset_process(const PB_Main* request, void furi_assert(request); furi_assert(request->which_content == PB_Main_system_factory_reset_request_tag); + FURI_LOG_D(TAG, "Reset"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -172,6 +186,8 @@ static void furi_assert(request); furi_assert(request->which_content == PB_Main_system_play_audiovisual_alert_request_tag); + FURI_LOG_D(TAG, "Alert"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -186,6 +202,8 @@ static void rpc_system_system_protobuf_version_process(const PB_Main* request, v furi_assert(request); furi_assert(request->which_content == PB_Main_system_protobuf_version_request_tag); + FURI_LOG_D(TAG, "ProtobufVersion"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -226,6 +244,8 @@ static void rpc_system_system_get_power_info_process(const PB_Main* request, voi furi_assert(request); furi_assert(request->which_content == PB_Main_system_power_info_request_tag); + FURI_LOG_D(TAG, "GetPowerInfo"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -248,6 +268,8 @@ static void rpc_system_system_update_request_process(const PB_Main* request, voi furi_assert(request); furi_assert(request->which_content == PB_Main_system_update_request_tag); + FURI_LOG_D(TAG, "SystemUpdate"); + RpcSession* session = (RpcSession*)context; furi_assert(session); @@ -305,4 +327,4 @@ void* rpc_system_system_alloc(RpcSession* session) { #endif return NULL; -} \ No newline at end of file +} diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_0.png b/assets/dolphin/external/L1_Laptop_128x51/frame_0.png index 94b9e7c58..a42e97fc4 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_0.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_0.png differ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_1.png b/assets/dolphin/external/L1_Laptop_128x51/frame_1.png index 78f4f60f8..90152d2b3 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_1.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_1.png differ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_2.png b/assets/dolphin/external/L1_Laptop_128x51/frame_2.png index 2912da593..93df45f84 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_2.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_2.png differ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_3.png b/assets/dolphin/external/L1_Laptop_128x51/frame_3.png index 3445c5b95..a86b5e744 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_3.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_3.png differ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_4.png b/assets/dolphin/external/L1_Laptop_128x51/frame_4.png index 7cd9cf1bf..8ca6f6319 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_4.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_4.png differ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_5.png b/assets/dolphin/external/L1_Laptop_128x51/frame_5.png index c997a0d83..ef1a75b90 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_5.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_5.png differ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_6.png b/assets/dolphin/external/L1_Laptop_128x51/frame_6.png index 418d13997..7e148697b 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_6.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_6.png differ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_7.png b/assets/dolphin/external/L1_Laptop_128x51/frame_7.png index 6f3b22897..ca19b669f 100644 Binary files a/assets/dolphin/external/L1_Laptop_128x51/frame_7.png and b/assets/dolphin/external/L1_Laptop_128x51/frame_7.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_0.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_0.png new file mode 100644 index 000000000..c7751a1d4 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_0.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_1.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_1.png new file mode 100644 index 000000000..20b3a7104 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_1.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_10.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_10.png new file mode 100644 index 000000000..ef2ed21d6 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_10.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_11.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_11.png new file mode 100644 index 000000000..0d2610a11 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_11.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_12.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_12.png new file mode 100644 index 000000000..1edc93480 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_12.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_2.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_2.png new file mode 100644 index 000000000..5752d80e6 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_2.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_3.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_3.png new file mode 100644 index 000000000..f62078f84 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_3.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_4.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_4.png new file mode 100644 index 000000000..021e05822 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_4.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_5.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_5.png new file mode 100644 index 000000000..d7e88112a Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_5.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_6.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_6.png new file mode 100644 index 000000000..142ebbca0 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_6.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_7.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_7.png new file mode 100644 index 000000000..26af84948 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_7.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_8.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_8.png new file mode 100644 index 000000000..d307e7a27 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_8.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_9.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_9.png new file mode 100644 index 000000000..0d28a8615 Binary files /dev/null and b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_9.png differ diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/meta.txt b/assets/dolphin/external/L1_Leaving_sad_128x64/meta.txt new file mode 100644 index 000000000..876003079 --- /dev/null +++ b/assets/dolphin/external/L1_Leaving_sad_128x64/meta.txt @@ -0,0 +1,32 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 4 +Active frames: 42 +Frames order: 0 1 2 1 3 4 5 6 7 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 11 12 4 3 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 51 +Y: 49 +Text: Adios. +AlignH: Center +AlignV: Top +StartFrame: 6 +EndFrame: 9 + +Slot: 0 +X: 1 +Y: 49 +Text: Forgot something... +AlignH: Center +AlignV: Top +StartFrame: 42 +EndFrame: 45 diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_0.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_0.png new file mode 100644 index 000000000..04aa17ac0 Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_0.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_1.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_1.png new file mode 100644 index 000000000..d93b1f588 Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_1.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_10.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_10.png new file mode 100644 index 000000000..47185499d Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_10.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_11.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_11.png new file mode 100644 index 000000000..d90fd3d5b Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_11.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_12.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_12.png new file mode 100644 index 000000000..15ded2672 Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_12.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_13.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_13.png new file mode 100644 index 000000000..13ee0450e Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_13.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_2.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_2.png new file mode 100644 index 000000000..32c0a1b9b Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_2.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_3.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_3.png new file mode 100644 index 000000000..93593594e Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_3.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_4.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_4.png new file mode 100644 index 000000000..d6ca9b82d Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_4.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_5.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_5.png new file mode 100644 index 000000000..0421d8f6f Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_5.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_6.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_6.png new file mode 100644 index 000000000..17930e075 Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_6.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_7.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_7.png new file mode 100644 index 000000000..d4115d240 Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_7.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_8.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_8.png new file mode 100644 index 000000000..570c8b0c4 Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_8.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_9.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_9.png new file mode 100644 index 000000000..2b6b6e57c Binary files /dev/null and b/assets/dolphin/external/L1_Mad_fist_128x64/frame_9.png differ diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/meta.txt b/assets/dolphin/external/L1_Mad_fist_128x64/meta.txt new file mode 100644 index 000000000..93e59e49b --- /dev/null +++ b/assets/dolphin/external/L1_Mad_fist_128x64/meta.txt @@ -0,0 +1,23 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 7 +Active frames: 13 +Frames order: 0 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 12 13 12 13 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 67 +Y: 24 +Text: Am I a joke\nto you?!?! +AlignH: Left +AlignV: Center +StartFrame: 15 +EndFrame: 19 diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_0.png b/assets/dolphin/external/L2_Soldering_128x64/frame_0.png new file mode 100644 index 000000000..bd20ae843 Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_0.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_1.png b/assets/dolphin/external/L2_Soldering_128x64/frame_1.png new file mode 100644 index 000000000..b9453d056 Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_1.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_10.png b/assets/dolphin/external/L2_Soldering_128x64/frame_10.png new file mode 100644 index 000000000..0519e851d Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_10.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_2.png b/assets/dolphin/external/L2_Soldering_128x64/frame_2.png new file mode 100644 index 000000000..514241266 Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_2.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_3.png b/assets/dolphin/external/L2_Soldering_128x64/frame_3.png new file mode 100644 index 000000000..ba7ad99ae Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_3.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_4.png b/assets/dolphin/external/L2_Soldering_128x64/frame_4.png new file mode 100644 index 000000000..ca696e4cf Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_4.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_5.png b/assets/dolphin/external/L2_Soldering_128x64/frame_5.png new file mode 100644 index 000000000..aa7fc8ea0 Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_5.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_6.png b/assets/dolphin/external/L2_Soldering_128x64/frame_6.png new file mode 100644 index 000000000..85d1e30c9 Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_6.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_7.png b/assets/dolphin/external/L2_Soldering_128x64/frame_7.png new file mode 100644 index 000000000..5ef6820f9 Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_7.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_8.png b/assets/dolphin/external/L2_Soldering_128x64/frame_8.png new file mode 100644 index 000000000..12bed1b4a Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_8.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/frame_9.png b/assets/dolphin/external/L2_Soldering_128x64/frame_9.png new file mode 100644 index 000000000..46f9fd378 Binary files /dev/null and b/assets/dolphin/external/L2_Soldering_128x64/frame_9.png differ diff --git a/assets/dolphin/external/L2_Soldering_128x64/meta.txt b/assets/dolphin/external/L2_Soldering_128x64/meta.txt new file mode 100644 index 000000000..b705bf623 --- /dev/null +++ b/assets/dolphin/external/L2_Soldering_128x64/meta.txt @@ -0,0 +1,23 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 9 +Active frames: 5 +Frames order: 0 1 2 3 4 5 6 7 8 9 10 9 10 9 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 71 +Y: 28 +Text: I am busy rn +AlignH: Left +AlignV: Center +StartFrame: 10 +EndFrame: 13 diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_0.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_0.png new file mode 100644 index 000000000..6fb7de66c Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_0.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_1.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_1.png new file mode 100644 index 000000000..eaf39cff4 Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_1.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_10.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_10.png new file mode 100644 index 000000000..1e3890a7b Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_10.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_11.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_11.png new file mode 100644 index 000000000..fc8aef13a Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_11.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_12.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_12.png new file mode 100644 index 000000000..8174af0d1 Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_12.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_13.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_13.png new file mode 100644 index 000000000..b5e75921a Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_13.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_2.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_2.png new file mode 100644 index 000000000..6a239a1b6 Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_2.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_3.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_3.png new file mode 100644 index 000000000..8cec74395 Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_3.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_4.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_4.png new file mode 100644 index 000000000..d034b0a53 Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_4.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_5.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_5.png new file mode 100644 index 000000000..472241e56 Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_5.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_6.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_6.png new file mode 100644 index 000000000..db53a0bb4 Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_6.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_7.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_7.png new file mode 100644 index 000000000..f2015a77d Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_7.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_8.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_8.png new file mode 100644 index 000000000..39b8d5f8f Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_8.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_9.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_9.png new file mode 100644 index 000000000..8b5e6f5ee Binary files /dev/null and b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_9.png differ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/meta.txt b/assets/dolphin/external/L3_Hijack_radio_128x64/meta.txt new file mode 100644 index 000000000..1d415b4b8 --- /dev/null +++ b/assets/dolphin/external/L3_Hijack_radio_128x64/meta.txt @@ -0,0 +1,14 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 8 +Active frames: 8 +Frames order: 0 1 2 3 4 5 4 6 7 8 9 10 11 12 11 13 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 0 diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_0.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_0.png new file mode 100644 index 000000000..c85bb77c4 Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_0.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_1.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_1.png new file mode 100644 index 000000000..dedff6024 Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_1.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_10.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_10.png new file mode 100644 index 000000000..1a53ab75d Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_10.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_11.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_11.png new file mode 100644 index 000000000..1768d50dd Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_11.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_12.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_12.png new file mode 100644 index 000000000..2beb237d9 Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_12.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_13.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_13.png new file mode 100644 index 000000000..c46dc3bab Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_13.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_2.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_2.png new file mode 100644 index 000000000..01f07c68d Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_2.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_3.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_3.png new file mode 100644 index 000000000..148fe4640 Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_3.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_4.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_4.png new file mode 100644 index 000000000..0d402b0db Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_4.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_5.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_5.png new file mode 100644 index 000000000..6853e1d61 Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_5.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_6.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_6.png new file mode 100644 index 000000000..9a92ba8d8 Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_6.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_7.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_7.png new file mode 100644 index 000000000..910ae5852 Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_7.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_8.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_8.png new file mode 100644 index 000000000..0f681e6ab Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_8.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_9.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_9.png new file mode 100644 index 000000000..0f391b75e Binary files /dev/null and b/assets/dolphin/external/L3_Lab_research_128x54/frame_9.png differ diff --git a/assets/dolphin/external/L3_Lab_research_128x54/meta.txt b/assets/dolphin/external/L3_Lab_research_128x54/meta.txt new file mode 100644 index 000000000..e83a8b436 --- /dev/null +++ b/assets/dolphin/external/L3_Lab_research_128x54/meta.txt @@ -0,0 +1,59 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 54 +Passive frames: 6 +Active frames: 8 +Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 71 +Y: 23 +Text: 7em!g!7j!\nVyP5?T- +AlignH: Left +AlignV: Center +StartFrame: 8 +EndFrame: 8 + +Slot: 0 +X: 71 +Y: 23 +Text: aUqF7sz!\n%9.mP5H +AlignH: Left +AlignV: Center +StartFrame: 9 +EndFrame: 9 + +Slot: 0 +X: 71 +Y: 23 +Text: 2%Kx2mV\nL8EyA84 +AlignH: Left +AlignV: Center +StartFrame: 10 +EndFrame: 10 + +Slot: 0 +X: 71 +Y: 23 +Text: U7%cRXr\nvbBa!_W1 +AlignH: Left +AlignV: Center +StartFrame: 11 +EndFrame: 11 + +Slot: 0 +X: 71 +Y: 23 +Text: 5rm_[K%\n!!(U9d$tE +AlignH: Left +AlignV: Center +StartFrame: 12 +EndFrame: 12 diff --git a/assets/dolphin/external/manifest.txt b/assets/dolphin/external/manifest.txt index d6e16dd13..197060672 100644 --- a/assets/dolphin/external/manifest.txt +++ b/assets/dolphin/external/manifest.txt @@ -10,9 +10,9 @@ Weight: 3 Name: L1_Laptop_128x51 Min butthurt: 0 -Max butthurt: 9 +Max butthurt: 7 Min level: 1 -Max level: 3 +Max level: 1 Weight: 3 Name: L1_Sleep_128x64 @@ -77,3 +77,38 @@ Max butthurt: 13 Min level: 1 Max level: 3 Weight: 3 + +Name: L1_Mad_fist_128x64 +Min butthurt: 9 +Max butthurt: 13 +Min level: 1 +Max level: 3 +Weight: 3 + +Name: L3_Hijack_radio_128x64 +Min butthurt: 0 +Max butthurt: 8 +Min level: 3 +Max level: 3 +Weight: 3 + +Name: L3_Lab_research_128x54 +Min butthurt: 0 +Max butthurt: 10 +Min level: 3 +Max level: 3 +Weight: 3 + +Name: L2_Soldering_128x64 +Min butthurt: 0 +Max butthurt: 10 +Min level: 2 +Max level: 2 +Weight: 3 + +Name: L1_Leaving_sad_128x64 +Min butthurt: 14 +Max butthurt: 14 +Min level: 1 +Max level: 3 +Weight: 3 diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_0.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_0.bm index 0fd6f7b3d..5eb2bdd05 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_0.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_0.bm differ diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_1.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_1.bm index 525ba0171..210f0c918 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_1.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_1.bm differ diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_2.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_2.bm index 5b91677ea..ff2851c28 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_2.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_2.bm differ diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_3.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_3.bm index 5453468d3..360d405ab 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_3.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_3.bm differ diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_4.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_4.bm index 1c7b573f7..9dd5111f8 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_4.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_4.bm differ diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_5.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_5.bm index 322d55ea3..e56c3f1a8 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_5.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_5.bm differ diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_6.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_6.bm index f8ad58a72..e9b0c0dff 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_6.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_6.bm differ diff --git a/assets/resources/dolphin/L1_Laptop_128x51/frame_7.bm b/assets/resources/dolphin/L1_Laptop_128x51/frame_7.bm index 5fc27a008..4663c6b03 100644 Binary files a/assets/resources/dolphin/L1_Laptop_128x51/frame_7.bm and b/assets/resources/dolphin/L1_Laptop_128x51/frame_7.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_0.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_0.bm new file mode 100644 index 000000000..d4cf85bad Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_0.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_1.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_1.bm new file mode 100644 index 000000000..f1f0e89f0 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_1.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_10.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_10.bm new file mode 100644 index 000000000..b91030b12 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_10.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_11.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_11.bm new file mode 100644 index 000000000..fe93787f2 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_11.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_12.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_12.bm new file mode 100644 index 000000000..13fb8e985 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_12.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_2.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_2.bm new file mode 100644 index 000000000..3050ba38f Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_2.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_3.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_3.bm new file mode 100644 index 000000000..0c0c83238 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_3.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_4.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_4.bm new file mode 100644 index 000000000..5e74ea12a Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_4.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_5.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_5.bm new file mode 100644 index 000000000..5c556cfdf Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_5.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_6.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_6.bm new file mode 100644 index 000000000..1dc156764 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_6.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_7.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_7.bm new file mode 100644 index 000000000..e992d75c7 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_7.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_8.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_8.bm new file mode 100644 index 000000000..49266d7c2 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_8.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_9.bm b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_9.bm new file mode 100644 index 000000000..6ebc55c16 Binary files /dev/null and b/assets/resources/dolphin/L1_Leaving_sad_128x64/frame_9.bm differ diff --git a/assets/resources/dolphin/L1_Leaving_sad_128x64/meta.txt b/assets/resources/dolphin/L1_Leaving_sad_128x64/meta.txt new file mode 100644 index 000000000..876003079 --- /dev/null +++ b/assets/resources/dolphin/L1_Leaving_sad_128x64/meta.txt @@ -0,0 +1,32 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 4 +Active frames: 42 +Frames order: 0 1 2 1 3 4 5 6 7 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 11 12 4 3 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 51 +Y: 49 +Text: Adios. +AlignH: Center +AlignV: Top +StartFrame: 6 +EndFrame: 9 + +Slot: 0 +X: 1 +Y: 49 +Text: Forgot something... +AlignH: Center +AlignV: Top +StartFrame: 42 +EndFrame: 45 diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_0.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_0.bm new file mode 100644 index 000000000..d200bb2af Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_0.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_1.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_1.bm new file mode 100644 index 000000000..0ec761cbf Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_1.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_10.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_10.bm new file mode 100644 index 000000000..d4207c95d Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_10.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_11.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_11.bm new file mode 100644 index 000000000..35955bc20 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_11.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_12.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_12.bm new file mode 100644 index 000000000..80adf8671 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_12.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_13.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_13.bm new file mode 100644 index 000000000..1994c0966 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_13.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_2.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_2.bm new file mode 100644 index 000000000..d3f19290d Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_2.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_3.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_3.bm new file mode 100644 index 000000000..1fc2e2b26 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_3.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_4.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_4.bm new file mode 100644 index 000000000..6152a83f8 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_4.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_5.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_5.bm new file mode 100644 index 000000000..842600e6d Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_5.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_6.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_6.bm new file mode 100644 index 000000000..887a4b866 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_6.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_7.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_7.bm new file mode 100644 index 000000000..8e9a34e97 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_7.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_8.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_8.bm new file mode 100644 index 000000000..a430e480a Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_8.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/frame_9.bm b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_9.bm new file mode 100644 index 000000000..487f50b35 Binary files /dev/null and b/assets/resources/dolphin/L1_Mad_fist_128x64/frame_9.bm differ diff --git a/assets/resources/dolphin/L1_Mad_fist_128x64/meta.txt b/assets/resources/dolphin/L1_Mad_fist_128x64/meta.txt new file mode 100644 index 000000000..93e59e49b --- /dev/null +++ b/assets/resources/dolphin/L1_Mad_fist_128x64/meta.txt @@ -0,0 +1,23 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 7 +Active frames: 13 +Frames order: 0 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 12 13 12 13 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 67 +Y: 24 +Text: Am I a joke\nto you?!?! +AlignH: Left +AlignV: Center +StartFrame: 15 +EndFrame: 19 diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_0.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_0.bm new file mode 100644 index 000000000..3fc364406 Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_0.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_1.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_1.bm new file mode 100644 index 000000000..60a2e700a Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_1.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_10.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_10.bm new file mode 100644 index 000000000..f80819358 Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_10.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_2.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_2.bm new file mode 100644 index 000000000..1d981e7d5 Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_2.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_3.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_3.bm new file mode 100644 index 000000000..48d0aa85d Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_3.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_4.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_4.bm new file mode 100644 index 000000000..a961f4c0a Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_4.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_5.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_5.bm new file mode 100644 index 000000000..81b569339 Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_5.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_6.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_6.bm new file mode 100644 index 000000000..2f030833a Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_6.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_7.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_7.bm new file mode 100644 index 000000000..4519819ea Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_7.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_8.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_8.bm new file mode 100644 index 000000000..4bb3b7983 Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_8.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/frame_9.bm b/assets/resources/dolphin/L2_Soldering_128x64/frame_9.bm new file mode 100644 index 000000000..1339c607e Binary files /dev/null and b/assets/resources/dolphin/L2_Soldering_128x64/frame_9.bm differ diff --git a/assets/resources/dolphin/L2_Soldering_128x64/meta.txt b/assets/resources/dolphin/L2_Soldering_128x64/meta.txt new file mode 100644 index 000000000..b705bf623 --- /dev/null +++ b/assets/resources/dolphin/L2_Soldering_128x64/meta.txt @@ -0,0 +1,23 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 9 +Active frames: 5 +Frames order: 0 1 2 3 4 5 6 7 8 9 10 9 10 9 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 71 +Y: 28 +Text: I am busy rn +AlignH: Left +AlignV: Center +StartFrame: 10 +EndFrame: 13 diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_0.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_0.bm new file mode 100644 index 000000000..cf2120ff4 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_0.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_1.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_1.bm new file mode 100644 index 000000000..24a492132 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_1.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_10.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_10.bm new file mode 100644 index 000000000..1354c78f2 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_10.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_11.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_11.bm new file mode 100644 index 000000000..c15289b5e Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_11.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_12.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_12.bm new file mode 100644 index 000000000..ac9f08334 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_12.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_13.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_13.bm new file mode 100644 index 000000000..9ad7b9cf3 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_13.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_2.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_2.bm new file mode 100644 index 000000000..30c4bedcd Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_2.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_3.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_3.bm new file mode 100644 index 000000000..dc0fb9b79 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_3.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_4.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_4.bm new file mode 100644 index 000000000..025477a7a Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_4.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_5.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_5.bm new file mode 100644 index 000000000..89a4cd6ac Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_5.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_6.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_6.bm new file mode 100644 index 000000000..c93ff6acd Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_6.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_7.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_7.bm new file mode 100644 index 000000000..fb6d9bd29 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_7.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_8.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_8.bm new file mode 100644 index 000000000..a0377f635 Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_8.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_9.bm b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_9.bm new file mode 100644 index 000000000..06f66ab3a Binary files /dev/null and b/assets/resources/dolphin/L3_Hijack_radio_128x64/frame_9.bm differ diff --git a/assets/resources/dolphin/L3_Hijack_radio_128x64/meta.txt b/assets/resources/dolphin/L3_Hijack_radio_128x64/meta.txt new file mode 100644 index 000000000..1d415b4b8 --- /dev/null +++ b/assets/resources/dolphin/L3_Hijack_radio_128x64/meta.txt @@ -0,0 +1,14 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 64 +Passive frames: 8 +Active frames: 8 +Frames order: 0 1 2 3 4 5 4 6 7 8 9 10 11 12 11 13 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 0 diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_0.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_0.bm new file mode 100644 index 000000000..db283e81f Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_0.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_1.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_1.bm new file mode 100644 index 000000000..c60074370 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_1.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_10.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_10.bm new file mode 100644 index 000000000..694302a9d Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_10.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_11.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_11.bm new file mode 100644 index 000000000..246b955cf Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_11.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_12.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_12.bm new file mode 100644 index 000000000..b6fb1130b Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_12.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_13.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_13.bm new file mode 100644 index 000000000..561335413 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_13.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_2.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_2.bm new file mode 100644 index 000000000..1025137e4 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_2.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_3.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_3.bm new file mode 100644 index 000000000..e623a1c0f Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_3.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_4.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_4.bm new file mode 100644 index 000000000..654a68e87 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_4.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_5.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_5.bm new file mode 100644 index 000000000..14eae4c1c Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_5.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_6.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_6.bm new file mode 100644 index 000000000..561335413 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_6.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_7.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_7.bm new file mode 100644 index 000000000..c9b99a014 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_7.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_8.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_8.bm new file mode 100644 index 000000000..812db0d46 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_8.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/frame_9.bm b/assets/resources/dolphin/L3_Lab_research_128x54/frame_9.bm new file mode 100644 index 000000000..0cad9cc26 Binary files /dev/null and b/assets/resources/dolphin/L3_Lab_research_128x54/frame_9.bm differ diff --git a/assets/resources/dolphin/L3_Lab_research_128x54/meta.txt b/assets/resources/dolphin/L3_Lab_research_128x54/meta.txt new file mode 100644 index 000000000..e83a8b436 --- /dev/null +++ b/assets/resources/dolphin/L3_Lab_research_128x54/meta.txt @@ -0,0 +1,59 @@ +Filetype: Flipper Animation +Version: 1 + +Width: 128 +Height: 54 +Passive frames: 6 +Active frames: 8 +Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 +Active cycles: 1 +Frame rate: 2 +Duration: 3600 +Active cooldown: 7 + +Bubble slots: 1 + +Slot: 0 +X: 71 +Y: 23 +Text: 7em!g!7j!\nVyP5?T- +AlignH: Left +AlignV: Center +StartFrame: 8 +EndFrame: 8 + +Slot: 0 +X: 71 +Y: 23 +Text: aUqF7sz!\n%9.mP5H +AlignH: Left +AlignV: Center +StartFrame: 9 +EndFrame: 9 + +Slot: 0 +X: 71 +Y: 23 +Text: 2%Kx2mV\nL8EyA84 +AlignH: Left +AlignV: Center +StartFrame: 10 +EndFrame: 10 + +Slot: 0 +X: 71 +Y: 23 +Text: U7%cRXr\nvbBa!_W1 +AlignH: Left +AlignV: Center +StartFrame: 11 +EndFrame: 11 + +Slot: 0 +X: 71 +Y: 23 +Text: 5rm_[K%\n!!(U9d$tE +AlignH: Left +AlignV: Center +StartFrame: 12 +EndFrame: 12 diff --git a/assets/resources/dolphin/manifest.txt b/assets/resources/dolphin/manifest.txt index d6e16dd13..197060672 100644 --- a/assets/resources/dolphin/manifest.txt +++ b/assets/resources/dolphin/manifest.txt @@ -10,9 +10,9 @@ Weight: 3 Name: L1_Laptop_128x51 Min butthurt: 0 -Max butthurt: 9 +Max butthurt: 7 Min level: 1 -Max level: 3 +Max level: 1 Weight: 3 Name: L1_Sleep_128x64 @@ -77,3 +77,38 @@ Max butthurt: 13 Min level: 1 Max level: 3 Weight: 3 + +Name: L1_Mad_fist_128x64 +Min butthurt: 9 +Max butthurt: 13 +Min level: 1 +Max level: 3 +Weight: 3 + +Name: L3_Hijack_radio_128x64 +Min butthurt: 0 +Max butthurt: 8 +Min level: 3 +Max level: 3 +Weight: 3 + +Name: L3_Lab_research_128x54 +Min butthurt: 0 +Max butthurt: 10 +Min level: 3 +Max level: 3 +Weight: 3 + +Name: L2_Soldering_128x64 +Min butthurt: 0 +Max butthurt: 10 +Min level: 2 +Max level: 2 +Weight: 3 + +Name: L1_Leaving_sad_128x64 +Min butthurt: 14 +Max butthurt: 14 +Min level: 1 +Max level: 3 +Weight: 3 diff --git a/core/furi/stdglue.c b/core/furi/stdglue.c index 52fb3fd9a..4e7272023 100644 --- a/core/furi/stdglue.c +++ b/core/furi/stdglue.c @@ -17,7 +17,6 @@ DICT_DEF2( typedef struct { osMutexId_t mutex; - FuriStdglueCallbackDict_t global_outputs; FuriStdglueCallbackDict_t thread_outputs; } FuriStdglue; @@ -31,17 +30,6 @@ static ssize_t stdout_write(void* _cookie, const char* data, size_t size) { if(state == osKernelRunning && thread_id && osMutexAcquire(furi_stdglue->mutex, osWaitForever) == osOK) { // We are in the thread context - // Handle global callbacks - FuriStdglueCallbackDict_it_t it; - for(FuriStdglueCallbackDict_it(it, furi_stdglue->global_outputs); - !FuriStdglueCallbackDict_end_p(it); - FuriStdglueCallbackDict_next(it)) { - osThreadId_t it_thread = (osThreadId_t)FuriStdglueCallbackDict_ref(it)->key; - FuriStdglueWriteCallback it_callback = FuriStdglueCallbackDict_ref(it)->value; - if(thread_id != it_thread) { - it_callback(_cookie, data, size); - } - } // Handle thread callbacks FuriStdglueWriteCallback* callback_ptr = FuriStdglueCallbackDict_get(furi_stdglue->thread_outputs, (uint32_t)thread_id); @@ -71,7 +59,6 @@ void furi_stdglue_init() { // Init outputs structures furi_stdglue->mutex = osMutexNew(NULL); furi_check(furi_stdglue->mutex); - FuriStdglueCallbackDict_init(furi_stdglue->global_outputs); FuriStdglueCallbackDict_init(furi_stdglue->thread_outputs); // Prepare and set stdout descriptor FILE* fp = fopencookie( @@ -87,24 +74,6 @@ void furi_stdglue_init() { stdout = fp; } -bool furi_stdglue_set_global_stdout_callback(FuriStdglueWriteCallback callback) { - furi_assert(furi_stdglue); - osThreadId_t thread_id = osThreadGetId(); - if(thread_id) { - furi_check(osMutexAcquire(furi_stdglue->mutex, osWaitForever) == osOK); - if(callback) { - FuriStdglueCallbackDict_set_at( - furi_stdglue->global_outputs, (uint32_t)thread_id, callback); - } else { - FuriStdglueCallbackDict_erase(furi_stdglue->global_outputs, (uint32_t)thread_id); - } - furi_check(osMutexRelease(furi_stdglue->mutex) == osOK); - return true; - } else { - return false; - } -} - bool furi_stdglue_set_thread_stdout_callback(FuriStdglueWriteCallback callback) { furi_assert(furi_stdglue); osThreadId_t thread_id = osThreadGetId(); diff --git a/core/furi/stdglue.h b/core/furi/stdglue.h index c83a443ee..800fcf928 100644 --- a/core/furi/stdglue.h +++ b/core/furi/stdglue.h @@ -22,15 +22,6 @@ typedef void (*FuriStdglueWriteCallback)(void* _cookie, const char* data, size_t /** Initialized std library glue code */ void furi_stdglue_init(); -/** Set global STDOUT callback - * - * @param callback callback or NULL to clear - * - * @return true on success, otherwise fail - * @warning function is thread aware, use this API from the same thread - */ -bool furi_stdglue_set_global_stdout_callback(FuriStdglueWriteCallback callback); - /** Set STDOUT callback for your thread * * @param callback callback or NULL to clear diff --git a/firmware/targets/f7/furi_hal/furi_hal_console.c b/firmware/targets/f7/furi_hal/furi_hal_console.c index f3cf06da5..e5db927bf 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_console.c +++ b/firmware/targets/f7/furi_hal/furi_hal_console.c @@ -18,11 +18,21 @@ #define CONSOLE_BAUDRATE 230400 #endif -volatile bool furi_hal_console_alive = false; +typedef struct { + bool alive; + FuriHalConsoleTxCallback tx_callback; + void* tx_callback_context; +} FuriHalConsole; + +FuriHalConsole furi_hal_console = { + .alive = false, + .tx_callback = NULL, + .tx_callback_context = NULL, +}; void furi_hal_console_init() { furi_hal_uart_init(FuriHalUartIdUSART1, CONSOLE_BAUDRATE); - furi_hal_console_alive = true; + furi_hal_console.alive = true; } void furi_hal_console_enable() { @@ -30,20 +40,32 @@ void furi_hal_console_enable() { while(!LL_USART_IsActiveFlag_TC(USART1)) ; furi_hal_uart_set_br(FuriHalUartIdUSART1, CONSOLE_BAUDRATE); - furi_hal_console_alive = true; + furi_hal_console.alive = true; } void furi_hal_console_disable() { while(!LL_USART_IsActiveFlag_TC(USART1)) ; - furi_hal_console_alive = false; + furi_hal_console.alive = false; +} + +void furi_hal_console_set_tx_callback(FuriHalConsoleTxCallback callback, void* context) { + FURI_CRITICAL_ENTER(); + furi_hal_console.tx_callback = callback; + furi_hal_console.tx_callback_context = context; + FURI_CRITICAL_EXIT(); } void furi_hal_console_tx(const uint8_t* buffer, size_t buffer_size) { - if(!furi_hal_console_alive) return; + if(!furi_hal_console.alive) return; FURI_CRITICAL_ENTER(); // Transmit data + + if(furi_hal_console.tx_callback) { + furi_hal_console.tx_callback(buffer, buffer_size, furi_hal_console.tx_callback_context); + } + furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t*)buffer, buffer_size); // Wait for TC flag to be raised for last char while(!LL_USART_IsActiveFlag_TC(USART1)) @@ -52,7 +74,7 @@ void furi_hal_console_tx(const uint8_t* buffer, size_t buffer_size) { } void furi_hal_console_tx_with_new_line(const uint8_t* buffer, size_t buffer_size) { - if(!furi_hal_console_alive) return; + if(!furi_hal_console.alive) return; FURI_CRITICAL_ENTER(); // Transmit data diff --git a/firmware/targets/f7/furi_hal/furi_hal_console.h b/firmware/targets/f7/furi_hal/furi_hal_console.h index 637c17f6a..104515ce9 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_console.h +++ b/firmware/targets/f7/furi_hal/furi_hal_console.h @@ -7,12 +7,16 @@ extern "C" { #endif +typedef void (*FuriHalConsoleTxCallback)(const uint8_t* buffer, size_t size, void* context); + void furi_hal_console_init(); void furi_hal_console_enable(); void furi_hal_console_disable(); +void furi_hal_console_set_tx_callback(FuriHalConsoleTxCallback callback, void* context); + void furi_hal_console_tx(const uint8_t* buffer, size_t buffer_size); void furi_hal_console_tx_with_new_line(const uint8_t* buffer, size_t buffer_size); diff --git a/firmware/targets/f7/furi_hal/furi_hal_version.c b/firmware/targets/f7/furi_hal/furi_hal_version.c index fdc4d2030..e580c978c 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_version.c +++ b/firmware/targets/f7/furi_hal/furi_hal_version.c @@ -255,15 +255,15 @@ const FuriHalVersionRegion furi_hal_version_get_hw_region() { const char* furi_hal_version_get_hw_region_name() { switch(furi_hal_version_get_hw_region()) { case FuriHalVersionRegionUnknown: - return "D"; - case FuriHalVersionRegionJp: - return "Jp"; + return "R00"; case FuriHalVersionRegionEuRu: - return "Eu"; + return "R01"; case FuriHalVersionRegionUsCaAu: - return "Us"; + return "R02"; + case FuriHalVersionRegionJp: + return "R03"; } - return "U"; + return "R??"; } const FuriHalVersionDisplay furi_hal_version_get_hw_display() {