Просмотр исходного кода

more manifestos, xbox controller and videopoker ufbt fixes

MX 2 лет назад
Родитель
Сommit
5514e7cad0
81 измененных файлов с 305 добавлено и 693 удалено
  1. 6 8
      ReadMe.md
  2. BIN
      apps/Games_Extra/rm_dice.fap
  3. BIN
      apps/Tools_Extra/xbox_controller.fap
  4. 1 1
      apps_source_code/4inrow_game/application.fam
  5. 5 2
      apps_source_code/FlipperNightStand_clock/application.fam
  6. 6 2
      apps_source_code/ServoTesterApp/application.fam
  7. 1 1
      apps_source_code/SimonSays/application.fam
  8. 5 1
      apps_source_code/Snake_2/application.fam
  9. 0 0
      apps_source_code/Snake_2/img/1.png
  10. 0 0
      apps_source_code/Snake_2/img/2.png
  11. 0 0
      apps_source_code/Snake_2/img/3.png
  12. 4 0
      apps_source_code/barcode_gen/application.fam
  13. 1 1
      apps_source_code/bc_scanner_emulator/application.fam
  14. 7 5
      apps_source_code/bluetooth-trigger/application.fam
  15. 4 0
      apps_source_code/bpmtapper/application.fam
  16. 4 0
      apps_source_code/brainfuck/application.fam
  17. 4 0
      apps_source_code/caesarcipher/application.fam
  18. 4 0
      apps_source_code/calculator/application.fam
  19. 2 1
      apps_source_code/color_guess/application.fam
  20. 5 1
      apps_source_code/counter/application.fam
  21. 6 2
      apps_source_code/dice/application.fam
  22. 5 1
      apps_source_code/etch-a-sketch/application.fam
  23. 4 0
      apps_source_code/flipp_pomodoro/application.fam
  24. 5 1
      apps_source_code/flipper-asteroids/application.fam
  25. 4 0
      apps_source_code/flipper-dcf77/application.fam
  26. 5 1
      apps_source_code/flipper-flashlight/application.fam
  27. 5 1
      apps_source_code/flipper-tictactoe-multi/application.fam
  28. 6 6
      apps_source_code/flipper-xbox-controller/application.fam
  29. 0 1
      apps_source_code/flipper-xbox-controller/views/xbox_controller_view.h
  30. 4 4
      apps_source_code/flipper_analog_clock/application.fam
  31. 4 0
      apps_source_code/flipper_geiger/application.fam
  32. 4 0
      apps_source_code/flipper_pong/application.fam
  33. 6 2
      apps_source_code/flipper_radsens/application.fam
  34. 4 0
      apps_source_code/flipperzero-slots/application.fam
  35. 4 0
      apps_source_code/flipperzero-text2sam/application.fam
  36. 4 0
      apps_source_code/flipperzero-tuning-fork/application.fam
  37. 4 1
      apps_source_code/flipperzero-yatzee-main/application.fam
  38. 5 1
      apps_source_code/flipperzero_GPIO_read-main/application.fam
  39. 4 0
      apps_source_code/fpz_cntdown_timer-main/application.fam
  40. 4 0
      apps_source_code/fz-em4100-generator/application.fam
  41. 4 0
      apps_source_code/fz-reaction-game/application.fam
  42. 4 0
      apps_source_code/game_of_life/application.fam
  43. 4 0
      apps_source_code/gpio_7segment/application.fam
  44. 4 0
      apps_source_code/hex_editor/application.fam
  45. 4 0
      apps_source_code/ir_remote/application.fam
  46. 5 1
      apps_source_code/logic_analyzer/application.fam
  47. 4 0
      apps_source_code/mandelbrot/application.fam
  48. 4 0
      apps_source_code/mifare_fuzzer/application.fam
  49. 3 0
      apps_source_code/montyhall/application.fam
  50. 0 8
      apps_source_code/music_beeper/application.fam
  51. 4 0
      apps_source_code/musictracker/application.fam
  52. 6 2
      apps_source_code/nupogodi_game/application.fam
  53. 4 0
      apps_source_code/ocarina/application.fam
  54. 5 1
      apps_source_code/paint/application.fam
  55. 4 0
      apps_source_code/pomodoro/application.fam
  56. 5 1
      apps_source_code/racegame/application.fam
  57. 4 0
      apps_source_code/reversi/application.fam
  58. 0 12
      apps_source_code/rmdice/application.fam
  59. 0 575
      apps_source_code/rmdice/dice.c
  60. BIN
      apps_source_code/rmdice/dice.png
  61. 4 0
      apps_source_code/rootoflife/application.fam
  62. BIN
      apps_source_code/rootoflife/p/featured_image.png
  63. BIN
      apps_source_code/rootoflife/p/screenshots/s1_start.png
  64. BIN
      apps_source_code/rootoflife/p/screenshots/s2_grow.png
  65. BIN
      apps_source_code/rootoflife/p/screenshots/s3_grow.png
  66. BIN
      apps_source_code/rootoflife/p/screenshots/s4_end.png
  67. BIN
      apps_source_code/rootoflife/p/screenshots/s4_grow.png
  68. 5 1
      apps_source_code/rubiks_cube_scrambler/application.fam
  69. 5 1
      apps_source_code/schip/application.fam
  70. 4 0
      apps_source_code/scorched_tanks/application.fam
  71. 6 3
      apps_source_code/servotester/application.fam
  72. 4 0
      apps_source_code/sony-intervalometer/application.fam
  73. 5 1
      apps_source_code/t-rex-runner/application.fam
  74. 6 10
      apps_source_code/timelapse/application.fam
  75. 4 0
      apps_source_code/usb_hid_autofire/application.fam
  76. 4 1
      apps_source_code/usb_midi/application.fam
  77. 4 0
      apps_source_code/usping/application.fam
  78. 4 0
      apps_source_code/videopoker/application.fam
  79. 4 0
      apps_source_code/wiegand/application.fam
  80. 4 0
      apps_source_code/wifi_deauther/application.fam
  81. 28 32
      apps_source_code/wii_ec_anal/application.fam

+ 6 - 8
ReadMe.md

@@ -1,19 +1,17 @@
 # Flipper Application Files (FAPs) for Any Firmware with API v31.x
 ## Apps from this pack should be compatible with OFW with API v31.x (dev branch) or any other firmware build with API 31.x
 
-## [Download all files by using this link, and copy them onto your microSD](https://download-directory.github.io/?url=https://github.com/xMasterX/all-the-plugins/tree/main/apps) (does not include [bundled apps](https://github.com/DarkFlippers/unleashed-firmware#community-apps-included))
-
----
-
-#### [Visit UberGuidoZ original applications page](https://github.com/UberGuidoZ/Flipper/tree/main/Applications)
+## [Download all files by using this link, and copy only apps folder onto your microSD](https://download-directory.github.io/?url=https://github.com/xMasterX/all-the-plugins/tree/main/apps) (does not include [bundled apps](https://github.com/DarkFlippers/unleashed-firmware#community-apps-included))
 
 
 ---
 
-Apps contains changes needed to compile them on latest firmware, some fixes has been done by @xMasterX
+Apps contains changes needed to compile them on latest firmware, fixes has been done by @xMasterX
 
 I have decided to not include the "integrated/bundled" FAP files that come with a fresh install of Unleashed. If you need to grab a copy of them for whatever reason, you can do so right from the Unleashed repo.
 
+Sources of "integrated/bundled" apps are added now in this repo too, to allow publishing them in the official catalog :)
+
 * Visit the [Releases page](https://github.com/DarkFlippers/unleashed-firmware) of the Unleashed repo.
 * Scroll down and download the linked ZIP file from the Assets drop down, under the big install from web link.
 * Within that ZIP, you'll find `resources.tar` - open/extract that too and look in the `apps` folder.
@@ -22,7 +20,7 @@ I have decided to not include the "integrated/bundled" FAP files that come with
 
 The Flipper and its community wouldn't be as rich as it is without your contributions and support. Thank you for all you have done.
 
-### Apps checked & updated at `29 Jun 06:28 GMT +3`
+### Apps checked & updated at `1 Jul 16:09 GMT +3`
 
 ## Games
 - [Pong (By nmrr)](https://github.com/nmrr/flipperzero-pong) - Modified by [SimplyMinimal](https://github.com/SimplyMinimal/FlipperZero-Pong)
@@ -32,7 +30,6 @@ The Flipper and its community wouldn't be as rich as it is without your contribu
 - [Video Poker (By PixlEmly)](https://github.com/PixlEmly/flipperzero-firmware-testing/blob/420/applications/VideoPoker/poker.c)
 - [Asteroids (By antirez & SimplyMinimal)](https://github.com/antirez/flipper-asteroids) - Modified by [SimplyMinimal](https://github.com/SimplyMinimal/FlipperZero-Asteroids) all changes can be found by clicking on [this link](https://github.com/SimplyMinimal/FlipperZero-Asteroids)
 - [Monty Hall (By DevMilanIan)](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/pull/203)
-- [Dice Roller Including SEX/WAR/8BALL/WEED DICE (By RogueMaster)](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/applications/dice/dice.c)
 - [Game of Life (Updated to work by tgxn) (By itsyourbedtime)](https://github.com/tgxn/flipperzero-firmware/blob/dev/applications/game_of_life/game_of_life.c)
 - [Mandelbrot Set (By Possibly-Matt)](https://github.com/Possibly-Matt/flipperzero-firmware-wPlugins)
 - [TAMA P1 (By GMMan & DroomOne)](https://github.com/GMMan/flipperzero-tamagotch-p1) requires [this rom](https://tinyurl.com/tamap1) IN `tama_p1` folder on SD renamed as `rom.bin` to make it work. - Modified to allow saving game state by [DroomOne](https://github.com/DroomOne/flipperzero-tamagotch-p1) - Mute mode & settings by [Round-Pi](https://github.com/Round-Pi/flipperzero-tamagotch-p1)
@@ -134,4 +131,5 @@ The Flipper and its community wouldn't be as rich as it is without your contribu
 
 --- 
 
+Useful source of files for flipper, also has apps pack:
 ## [UberGuidoZ Playground - Large collection of files - Github](https://github.com/UberGuidoZ/Flipper)

BIN
apps/Games_Extra/rm_dice.fap


BIN
apps/Tools_Extra/xbox_controller.fap


+ 1 - 1
apps_source_code/4inrow_game/application.fam

@@ -12,6 +12,6 @@ App(
     fap_category="Games_Extra",
     fap_author="leo-need-more-coffee",
     fap_weburl="https://github.com/leo-need-more-coffee/flipperzero-4inrow",
-    fap_version="1.0.0",
+    fap_version="1.0",
     fap_description="4 in row Game",
 )

+ 5 - 2
apps_source_code/FlipperNightStand_clock/application.fam

@@ -7,7 +7,10 @@ App(
     icon="A_Clock_14",
     stack_size=2 * 1024,
     fap_icon="clock.png",
-	fap_category="Misc_Extra",
+    fap_category="Misc_Extra",
     order=81,
+    fap_author="@nymda & @Willy-JL",
+    fap_weburl="https://github.com/nymda/FlipperNightStand",
+    fap_version="1.0",
+    fap_description="Clock with screen brightness controls",
 )
-

+ 6 - 2
apps_source_code/ServoTesterApp/application.fam

@@ -4,8 +4,12 @@ App(
     apptype=FlipperAppType.EXTERNAL,
     entry_point="servotester_app_entry",
     requires=["gui"],
-    stack_size=8*1024,
+    stack_size=8 * 1024,
     order=50,
     fap_icon="appicon.png",
     fap_category="GPIO_Extra",
-)
+    fap_author="@mhasbini",
+    fap_weburl="https://github.com/mhasbini/ServoTesterApp/tree/master",
+    fap_version="1.0",
+    fap_description="App uses A7 pin for servo PWM output.",
+)

+ 1 - 1
apps_source_code/SimonSays/application.fam

@@ -9,7 +9,7 @@ App(
     # fap_version=(0, 1),  # (major, minor)
     fap_icon="simon_says.png",  # 10x10 1-bit PNG
     fap_description="A Simon Says Game",
-    fap_author="SimplyMinimal,ShehabAttia96",
+    fap_author="@SimplyMinimal & @ShehabAttia96",
     fap_weburl="https://github.com/SimplyMinimal/FlipperZero-SimonSays",
     fap_icon_assets="images",  # Image assets to compile for this application
 )

+ 5 - 1
apps_source_code/Snake_2/application.fam

@@ -9,4 +9,8 @@ App(
     order=30,
     fap_icon="snake_10px.png",
     fap_category="Games_Extra",
-)
+    fap_author="@Willzvul",
+    fap_weburl="https://github.com/Willzvul/Snake_2.0",
+    fap_version="2.0",
+    fap_description="Advanced Snake Game (Remake of original Snake)",
+)

+ 0 - 0
apps_source_code/Snake_2/1.png → apps_source_code/Snake_2/img/1.png


+ 0 - 0
apps_source_code/Snake_2/2.png → apps_source_code/Snake_2/img/2.png


+ 0 - 0
apps_source_code/Snake_2/3.png → apps_source_code/Snake_2/img/3.png


+ 4 - 0
apps_source_code/barcode_gen/application.fam

@@ -9,4 +9,8 @@ App(
     fap_icon="images/barcode_10.png",
     fap_icon_assets="images",
     fap_icon_assets_symbol="barcode_app",
+    fap_author="@Kingal1337",
+    fap_weburl="https://github.com/Kingal1337/flipper-barcode-generator",
+    fap_version="1.0",
+    fap_description="App allows you to display various barcodes on flipper screen",
 )

+ 1 - 1
apps_source_code/bc_scanner_emulator/application.fam

@@ -12,9 +12,9 @@ App(
     fap_icon="logo_bc.png",
     fap_description="Bar Code Emulator app for Evotor",
     fap_author="Igor Danilov",
+    fap_weburl="https://github.com/polarikus/flipper-zero_bc_scanner_emulator",
     fap_version=(0, 5),
     order=70,
     fap_category="GPIO_Extra",
     fap_icon_assets="icons",
 )
-

+ 7 - 5
apps_source_code/bluetooth-trigger/application.fam

@@ -4,11 +4,13 @@ App(
     name="BT Trigger",
     entry_point="bt_trigger_app",
     cdefines=["APP_BT_TRIGGER"],
-    requires=[
-        "gui"
-    ],
+    requires=["gui"],
     stack_size=1 * 1024,
-	fap_icon="bt_trigger_logo.png",
+    fap_icon="bt_trigger_logo.png",
     fap_category="Tools_Extra",
-    fap_icon_assets="assets"
+    fap_icon_assets="assets",
+    fap_author="@Nem0oo",
+    fap_weburl="https://github.com/Nem0oo/flipper-zero-bluetooth-trigger",
+    fap_version="1.0",
+    fap_description="App allows you to control your smartphone camera via flipper",
 )

+ 4 - 0
apps_source_code/bpmtapper/application.fam

@@ -10,4 +10,8 @@ App(
     fap_category="Media_Extra",
     fap_icon_assets="icons",
     order=15,
+    fap_author="@panki27",
+    fap_weburl="https://github.com/panki27/bpm-tapper",
+    fap_version="1.0",
+    fap_description="Tap center button to measure BPM",
 )

+ 4 - 0
apps_source_code/brainfuck/application.fam

@@ -11,4 +11,8 @@ App(
     fap_icon="bfico.png",
     fap_category="Misc_Extra",
     fap_icon_assets="icons",
+    fap_author="@nymda",
+    fap_weburl="https://github.com/nymda/FlipperZeroBrainfuck",
+    fap_version="1.0",
+    fap_description="Brainfuck language interpreter",
 )

+ 4 - 0
apps_source_code/caesarcipher/application.fam

@@ -11,4 +11,8 @@ App(
     fap_icon="caesar_cipher_icon.png",
     fap_category="Misc_Extra",
     order=20,
+    fap_author="@panki27",
+    fap_weburl="https://github.com/panki27/caesar-cipher",
+    fap_version="1.0",
+    fap_description="Encrypt and decrypt text using Caesar Cipher",
 )

+ 4 - 0
apps_source_code/calculator/application.fam

@@ -9,4 +9,8 @@ App(
     order=45,
     fap_icon="calcIcon.png",
     fap_category="Misc_Extra",
+    fap_author="@n-o-T-I-n-s-a-n-e",
+    fap_weburl="https://github.com/n-o-T-I-n-s-a-n-e",
+    fap_version="1.0",
+    fap_description="Calculator, that can calculate simple expressions",
 )

+ 2 - 1
apps_source_code/color_guess/application.fam

@@ -13,5 +13,6 @@ App(
     fap_icon_assets="icons",
     fap_category="Games_Extra",
     fap_author="Leed",
+    fap_version="1.0",
     fap_weburl="https://github.com/leedave/Leeds-Flipper-Zero-Applications",
-)
+)

+ 5 - 1
apps_source_code/counter/application.fam

@@ -9,4 +9,8 @@ App(
     fap_category="Misc_Extra",
     fap_icon="icons/counter_icon.png",
     fap_icon_assets="icons",
-)
+    fap_author="@Krulknul",
+    fap_weburl="https://github.com/Krulknul/dolphin-counter",
+    fap_version="1.0",
+    fap_description="Simple counter",
+)

+ 6 - 2
apps_source_code/dice/application.fam

@@ -7,7 +7,11 @@ App(
     requires=["gui"],
     stack_size=1 * 1024,
     order=90,
-	fap_icon="icon.png",
+    fap_icon="icon.png",
     fap_category="Games_Extra",
     fap_icon_assets="assets",
-)
+    fap_author="@Ka3u6y6a",
+    fap_weburl="https://github.com/Ka3u6y6a/flipper-zero-dice",
+    fap_version="1.0",
+    fap_description="Dice rolling, types: Coin, d4, d6, d8, d10, d12, d20, d100",
+)

+ 5 - 1
apps_source_code/etch-a-sketch/application.fam

@@ -10,4 +10,8 @@ App(
     fap_icon="etch-a-sketch-icon.png",
     fap_category="Misc_Extra",
     fap_icon_assets="assets",
-)
+    fap_author="@SimplyMinimal",
+    fap_weburl="https://github.com/SimplyMinimal/FlipperZero-Etch-A-Sketch",
+    fap_version="1.0",
+    fap_description="Turn the Flipper Zero into an Etch A Sketch",
+)

+ 4 - 0
apps_source_code/flipp_pomodoro/application.fam

@@ -8,4 +8,8 @@ App(
     fap_category="Misc_Extra",
     fap_icon_assets="images",
     fap_icon="flipp_pomodoro_10.png",
+    fap_author="@Th3Un1q3",
+    fap_weburl="https://github.com/Th3Un1q3/flipp_pomodoro",
+    fap_version="1.0",
+    fap_description="Boost Your Productivity with the Pomodoro Timer",
 )

+ 5 - 1
apps_source_code/flipper-asteroids/application.fam

@@ -5,9 +5,13 @@ App(
     entry_point="asteroids_app_entry",
     cdefines=["APP_ASTEROIDS"],
     requires=["gui"],
-    stack_size=8*1024,
+    stack_size=8 * 1024,
     order=50,
     fap_icon="appicon.png",
     fap_icon_assets="assets",
     fap_category="Games_Extra",
+    fap_author="@antirez & @SimplyMinimal",
+    fap_weburl="https://github.com/antirez/flipper-asteroids",
+    fap_version="1.0",
+    fap_description="Asteroids game",
 )

+ 4 - 0
apps_source_code/flipper-dcf77/application.fam

@@ -9,4 +9,8 @@ App(
     order=10,
     fap_icon="icons/app.png",
     fap_category="Tools_Extra",
+    fap_author="@arha & @xMasterX",
+    fap_weburl="https://github.com/arha/flipper-dcf77",
+    fap_version="1.0",
+    fap_description="Sends the DCF77 time signal (badly) on the 125khz LFRFID antenna and on GPIO C3 pin",
 )

+ 5 - 1
apps_source_code/flipper-flashlight/application.fam

@@ -11,4 +11,8 @@ App(
     order=20,
     fap_icon="flash10px.png",
     fap_category="GPIO_Extra",
-)
+    fap_author="@xMasterX",
+    fap_weburl="https://github.com/xMasterX/flipper-flashlight",
+    fap_version="1.0",
+    fap_description="Enables 3.3v on pin 7/C3 when you press Ok and leaves it on when you exit app",
+)

+ 5 - 1
apps_source_code/flipper-tictactoe-multi/application.fam

@@ -8,5 +8,9 @@ App(
     order=40,
     fap_icon="assets/tictactoe_10px.png",
     fap_category="Games_Extra",
-    fap_icon_assets="assets"
+    fap_icon_assets="assets",
+    fap_author="@RouNNdeL",
+    fap_weburl="https://github.com/RouNNdeL/flipper-tictactoe-multi",
+    fap_version="1.0",
+    fap_description="Multiplayer Tic-Tac-Toe game",
 )

+ 6 - 6
apps_source_code/flipper-xbox-controller/application.fam

@@ -4,15 +4,15 @@ App(
     apptype=FlipperAppType.EXTERNAL,
     entry_point="xbox_controller_app",
     cdefines=["APP_XBOX_CONTROLLER"],
-    requires=[
-        "gui",
-        "dialogs",
-        "infrared"
-    ],
+    requires=["gui", "dialogs", "infrared"],
     stack_size=1 * 1024,
     order=1,
-	fap_icon="xbox_controller.png",
+    fap_icon="xbox_controller.png",
     fap_category="Tools_Extra",
     fap_icon_assets="assets",
     fap_icon_assets_symbol="xc",
+    fap_author="@gebeto",
+    fap_weburl="https://github.com/gebeto/flipper-xbox-controller",
+    fap_version="1.0",
+    fap_description="Infrared remote control for Xbox One",
 )

+ 0 - 1
apps_source_code/flipper-xbox-controller/views/xbox_controller_view.h

@@ -2,7 +2,6 @@
 
 #include <gui/view.h>
 #include <furi.h>
-#include <gui/canvas_i.h>
 #include <gui/elements.h>
 #include <xc_icons.h>
 #include <notification/notification.h>

+ 4 - 4
apps_source_code/flipper_analog_clock/application.fam

@@ -10,8 +10,8 @@ App(
     # Optional values
     # fap_version=(0, 1),  # (major, minor)
     fap_icon="analog_clock.png",  # 10x10 1-bit PNG
-    # fap_description="A simple app",
-    # fap_author="J. Doe",
-    # fap_weburl="https://github.com/user/analog_clock",
-    # fap_icon_assets="images",  # Image assets to compile for this application
+    fap_author="@scrolltex",
+    fap_weburl="https://github.com/scrolltex/flipper_analog_clock",
+    fap_version="1.0",
+    fap_description="Shows analog clock on Flipper screen",
 )

+ 4 - 0
apps_source_code/flipper_geiger/application.fam

@@ -10,4 +10,8 @@ App(
     stack_size=1 * 1024,
     fap_icon="geiger.png",
     fap_category="GPIO_Extra",
+    fap_author="@nmrr",
+    fap_weburl="https://github.com/nmrr/flipperzero-geigercounter",
+    fap_version="1.0",
+    fap_description="Works with J305 Geiger tube on external board",
 )

+ 4 - 0
apps_source_code/flipper_pong/application.fam

@@ -10,4 +10,8 @@ App(
     stack_size=1 * 1024,
     fap_icon="pong.png",
     fap_category="Games_Extra",
+    fap_author="@nmrr & @SimplyMinimal",
+    fap_weburl="https://github.com/nmrr/flipperzero-pong",
+    fap_version="1.0",
+    fap_description="Simple pong game",
 )

+ 6 - 2
apps_source_code/flipper_radsens/application.fam

@@ -10,7 +10,11 @@ App(
     ],
     stack_size=1 * 1024,
     order=90,
-	fap_icon="rad_sens.png",
+    fap_icon="rad_sens.png",
     fap_category="GPIO_Extra",
     fap_icon_assets="icons",
-)
+    fap_author="@sionyx",
+    fap_weburl="https://github.com/sionyx/flipper_radsens",
+    fap_version="1.0",
+    fap_description="Works with RadSens external module",
+)

+ 4 - 0
apps_source_code/flipperzero-slots/application.fam

@@ -10,4 +10,8 @@ App(
     order=30,
     fap_category="Games_Extra",
     fap_icon_assets="assets",
+    fap_author="@Daniel-dev-s",
+    fap_weburl="https://github.com/Daniel-dev-s/flipperzero-slots",
+    fap_version="1.0",
+    fap_description="Simple Slots simulator game",
 )

+ 4 - 0
apps_source_code/flipperzero-text2sam/application.fam

@@ -14,4 +14,8 @@ App(
     fap_icon="icon.png",
     fap_category="Media_Extra",
     order=20,
+    fap_author="@Round-Pi & (Fixes by @Willy-JL)",
+    fap_weburl="https://github.com/Round-Pi/flipperzero-text2sam",
+    fap_version="1.0",
+    fap_description="Enter text and hear it spoken by SAM (Software Automatic Mouth)",
 )

+ 4 - 0
apps_source_code/flipperzero-tuning-fork/application.fam

@@ -11,4 +11,8 @@ App(
     fap_category="Media_Extra",
     stack_size=2 * 1024,
     order=20,
+    fap_author="@besya & (Fixes by @Willy-JL)",
+    fap_weburl="https://github.com/besya/flipperzero-tuning-fork",
+    fap_version="1.0",
+    fap_description="Tuning fork for tuning musical instruments",
 )

+ 4 - 1
apps_source_code/flipperzero-yatzee-main/application.fam

@@ -9,5 +9,8 @@ App(
     fap_icon="images/yatzee_icon_10px.png",
     fap_category="Games_Extra",
     fap_icon_assets="images",
-
+    fap_author="@emfleak",
+    fap_weburl="https://github.com/emfleak/flipperzero-yatzee",
+    fap_version="1.0",
+    fap_description="Yahtzee game",
 )

+ 5 - 1
apps_source_code/flipperzero_GPIO_read-main/application.fam

@@ -7,4 +7,8 @@ App(
     stack_size=1 * 1024,
     fap_category="GPIO_Extra",
     fap_icon="icon.png",
-)
+    fap_author="@aureli1c",
+    fap_weburl="https://github.com/aureli1c/flipperzero_GPIO_read",
+    fap_version="1.0",
+    fap_description="Read GPIO pins states, and display them on the screen",
+)

+ 4 - 0
apps_source_code/fpz_cntdown_timer-main/application.fam

@@ -13,4 +13,8 @@ App(
     order=20,
     fap_icon="cntdown_timer.png",
     fap_category="Misc_Extra",
+    fap_author="@0w0mewo",
+    fap_weburl="https://github.com/0w0mewo/fpz_cntdown_timer",
+    fap_version="1.0",
+    fap_description="Simple count down timer",
 )

+ 4 - 0
apps_source_code/fz-em4100-generator/application.fam

@@ -8,4 +8,8 @@ App(
     fap_category="Tools_Extra",
     fap_icon_assets="images",
     fap_icon="icon.png",
+    fap_author="@Milk-Cool",
+    fap_weburl="https://github.com/Milk-Cool/fz-em4100-generator",
+    fap_version="1.0",
+    fap_description="Generates EM4100 key lists from selected rfid key file for RFID fuzzer app",
 )

+ 4 - 0
apps_source_code/fz-reaction-game/application.fam

@@ -7,4 +7,8 @@ App(
     stack_size=1 * 1024,
     fap_category="Games_Extra",
     fap_icon="icon.png",
+    fap_author="@Milk-Cool",
+    fap_weburl="https://github.com/Milk-Cool/fz-reaction-game",
+    fap_version="1.0",
+    fap_description="A simple reaction test game",
 )

+ 4 - 0
apps_source_code/game_of_life/application.fam

@@ -9,4 +9,8 @@ App(
     order=110,
     fap_icon="golIcon.png",
     fap_category="Games_Extra",
+    fap_author="@tgxn (original by @itsyourbedtime)",
+    fap_weburl="https://github.com/tgxn/flipperzero-firmware/blob/dev/applications/game_of_life/game_of_life.c",
+    fap_version="1.0",
+    fap_description="Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970.",
 )

+ 4 - 0
apps_source_code/gpio_7segment/application.fam

@@ -7,4 +7,8 @@ App(
     stack_size=2 * 1024,
     fap_icon="gpio_7segment.png",
     fap_category="GPIO_Extra",
+    fap_author="@jamisonderek",
+    fap_weburl="https://github.com/jamisonderek/flipper-zero-tutorials/tree/main/gpio",
+    fap_version="1.0",
+    fap_description="Control a 7-segment display with GPIO pins",
 )

+ 4 - 0
apps_source_code/hex_editor/application.fam

@@ -13,4 +13,8 @@ App(
     fap_icon="icons/edit_10px.png",
     fap_category="Tools_Extra",
     fap_icon_assets="icons",
+    fap_author="@dunaevai135",
+    fap_weburl="https://github.com/dunaevai135/flipper-zero-hex_editor",
+    fap_version="1.0",
+    fap_description="Read any file line by line, and use Ok to edit char. Useful for NFC file - Edit Dump feature without PC/Phone.",
 )

+ 4 - 0
apps_source_code/ir_remote/application.fam

@@ -11,4 +11,8 @@ App(
     fap_category="Tools_Extra",
     fap_icon="ir_10px.png",
     fap_icon_assets="images",
+    fap_author="@Hong5489 & @friebel & @d4ve10",
+    fap_weburl="https://github.com/Hong5489/ir_remote",
+    fap_version="1.0",
+    fap_description="Bind any IR remote button to each button on flipper d-pad, provides another way to use flipper as IR remote.",
 )

+ 5 - 1
apps_source_code/logic_analyzer/application.fam

@@ -9,5 +9,9 @@ App(
     order=10,
     fap_icon="icons/app.png",
     fap_category="GPIO_Extra",
-    fap_icon_assets="icons"
+    fap_icon_assets="icons",
+    fap_author="@g3gg0",
+    fap_weburl="https://github.com/g3gg0/flipper-logic_analyzer",
+    fap_version="1.0",
+    fap_description="Use flipper as Openbench Logic Sniffer (ols) logic analyzer in PulseView",
 )

+ 4 - 0
apps_source_code/mandelbrot/application.fam

@@ -9,4 +9,8 @@ App(
     order=130,
     fap_icon="Mandelbrot.png",
     fap_category="Games_Extra",
+    fap_author="@Possibly-Matt",
+    fap_weburl="https://github.com/Possibly-Matt",
+    fap_version="1.0",
+    fap_description="The Mandelbrot set is the set of all so-called (complex) numbers that meet Mandelbrots simple arithmetic criterion.",
 )

+ 4 - 0
apps_source_code/mifare_fuzzer/application.fam

@@ -12,4 +12,8 @@ App(
     fap_icon="images/mifare_fuzzer_10px.png",
     fap_category="Tools_Extra",
     fap_icon_assets="images",
+    fap_author="@spheeere98",
+    fap_weburl="https://github.com/spheeere98/mifare_fuzzer",
+    fap_version="1.0",
+    fap_description="App emulates Mifare Classic cards with various UIDs to check how reader reacts on them",
 )

+ 3 - 0
apps_source_code/montyhall/application.fam

@@ -9,4 +9,7 @@ App(
     order=185,
     fap_icon="Monty.png",
     fap_category="Games_Extra",
+    fap_author="@DevMilanIan",
+    fap_version="1.0",
+    fap_description="Monty Hall asks you to guess which closed door a prize is behind.",
 )

+ 0 - 8
apps_source_code/music_beeper/application.fam

@@ -15,11 +15,3 @@ App(
     fap_icon_assets="icons",
     fap_category="Media_Extra",
 )
-
-App(
-    appid="music_beeper_start",
-    apptype=FlipperAppType.STARTUP,
-    entry_point="music_beeper_on_system_start",
-    requires=["music_beeper"],
-    order=30,
-)

+ 4 - 0
apps_source_code/musictracker/application.fam

@@ -11,4 +11,8 @@ App(
     fap_icon="zero_tracker.png",
     fap_category="Media_Extra",
     fap_icon_assets="icons",
+    fap_author="@DrZlo13",
+    fap_weburl="https://github.com/DrZlo13/flipper-zero-music-tracker",
+    fap_version="1.0",
+    fap_description="App plays hardcoded tracker song",
 )

+ 6 - 2
apps_source_code/nupogodi_game/application.fam

@@ -8,7 +8,11 @@ App(
     ],
     stack_size=1 * 1024,
     order=90,
-	fap_icon="nupogodi.png",
+    fap_icon="nupogodi.png",
     fap_category="Games_Extra",
     fap_icon_assets="icons",
-)
+    fap_author="@sionyx",
+    fap_weburl="https://github.com/sionyx/flipper_nupogodi",
+    fap_version="1.0",
+    fap_description="Elektronika IM-02 - Nu, Pogodi! / (Game & Watch - Egg) - Soviet retro game",
+)

+ 4 - 0
apps_source_code/ocarina/application.fam

@@ -10,4 +10,8 @@ App(
     fap_icon="icons/music_10px.png",
     fap_category="Media_Extra",
     fap_icon_assets="icons",
+    fap_author="@invalidna-me",
+    fap_weburl="https://github.com/invalidna-me/flipperzero-ocarina",
+    fap_version="1.0",
+    fap_description="A basic Ocarina (of Time), Controls are the same as the N64 version of the Ocarina of Time",
 )

+ 5 - 1
apps_source_code/paint/application.fam

@@ -9,4 +9,8 @@ App(
     order=175,
     fap_icon="paintIcon.png",
     fap_category="Misc_Extra",
-)
+    fap_author="@n-o-T-I-n-s-a-n-e",
+    fap_weburl="https://github.com/n-o-T-I-n-s-a-n-e",
+    fap_version="1.0",
+    fap_description="A basic Paint app, Click Ok to draw dot, hold Ok to enable drawing continuously, hold Back to clear the screen",
+)

+ 4 - 0
apps_source_code/pomodoro/application.fam

@@ -12,4 +12,8 @@ App(
     fap_icon="pomodoro_timer.png",
     fap_category="Misc_Extra",
     fap_icon_assets="icons",
+    fap_author="@sbrin",
+    fap_weburl="https://github.com/sbrin/flipperzero_pomodoro",
+    fap_version="1.0",
+    fap_description="Simple Pomodoro Timer app for Flipper Zero",
 )

+ 5 - 1
apps_source_code/racegame/application.fam

@@ -10,4 +10,8 @@ App(
     order=90,
     fap_icon="icon.png",
     fap_category="Games_Extra",
-)
+    fap_author="@zyuhel",
+    fap_weburl="https://github.com/zyuhel/flipperzero-racegame",
+    fap_version="1.0",
+    fap_description="Race game inspired by Race game in BrickGame 9999 in 1.",
+)

+ 4 - 0
apps_source_code/reversi/application.fam

@@ -12,4 +12,8 @@ App(
     fap_icon="game_reversi.png",
     fap_category="Games_Extra",
     fap_icon_assets_symbol="game_reversi",
+    fap_author="@dimat",
+    fap_weburl="https://github.com/zyuhel/flipperzero-racegame",
+    fap_version="1.0",
+    fap_description="Reversi game, the game controls should be intuitive. Longs press on OK opens the menu to start a new game.",
 )

+ 0 - 12
apps_source_code/rmdice/application.fam

@@ -1,12 +0,0 @@
-App(
-    appid="rm_dice",
-    name="RM Dice",
-    apptype=FlipperAppType.EXTERNAL,
-    entry_point="dice_app",
-    cdefines=["APP_DICE"],
-    requires=["gui"],
-    stack_size=2 * 1024,
-    order=70,
-    fap_icon="dice.png",
-    fap_category="Games_Extra",
-)

+ 0 - 575
apps_source_code/rmdice/dice.c

@@ -1,575 +0,0 @@
-#include <furi.h>
-#include <furi_hal.h>
-#include "furi_hal_random.h"
-#include <gui/elements.h>
-#include <gui/gui.h>
-#include <input/input.h>
-
-#define TAG "Dice Roller"
-
-typedef enum {
-    EventTypeTick,
-    EventTypeKey,
-} EventType;
-
-typedef struct {
-    EventType type;
-    InputEvent input;
-} PluginEvent;
-
-typedef struct {
-    FuriMutex* mutex;
-    FuriMessageQueue* event_queue;
-    //DesktopSettings* desktop_settings;
-    FuriHalRtcDateTime datetime;
-    uint8_t diceSelect;
-    uint8_t diceQty;
-    uint8_t diceRoll;
-    uint8_t playerOneScore;
-    uint8_t playerTwoScore;
-    char rollTime[1][15];
-    char diceType[1][11];
-    char strings[5][45];
-    char theScores[1][45];
-    bool letsRoll;
-} DiceState;
-
-static void dice_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
-    PluginEvent event = {.type = EventTypeKey, .input = *input_event};
-    furi_message_queue_put(event_queue, &event, FuriWaitForever);
-}
-
-static void dice_render_callback(Canvas* const canvas, void* ctx) {
-    DiceState* state = ctx;
-    if(furi_mutex_acquire(state->mutex, 200) != FuriStatusOk) {
-        // Can't obtain mutex, requeue render
-        PluginEvent event = {.type = EventTypeTick};
-        furi_message_queue_put(state->event_queue, &event, 0);
-        return;
-    }
-
-    canvas_set_font(canvas, FontSecondary);
-    if(state->diceSelect < 220) {
-        if(state->diceQty == 1) {
-            elements_button_left(canvas, "x1");
-        } else if(state->diceQty == 2) {
-            elements_button_left(canvas, "x2");
-        } else if(state->diceQty == 3) {
-            elements_button_left(canvas, "x3");
-        } else if(state->diceQty == 4) {
-            elements_button_left(canvas, "x4");
-        } else if(state->diceQty == 5) {
-            elements_button_left(canvas, "x5");
-        } else if(state->diceQty == 6) {
-            elements_button_left(canvas, "x6");
-        }
-    }
-    if(state->letsRoll) {
-        furi_hal_rtc_get_datetime(&state->datetime);
-        uint8_t hour = state->datetime.hour;
-        char strAMPM[3];
-        snprintf(strAMPM, sizeof(strAMPM), "%s", "AM");
-        if(hour > 12) {
-            hour -= 12;
-            snprintf(strAMPM, sizeof(strAMPM), "%s", "PM");
-        }
-        snprintf(
-            state->rollTime[0],
-            sizeof(state->rollTime[0]),
-            "%.2d:%.2d:%.2d %s",
-            hour,
-            state->datetime.minute,
-            state->datetime.second,
-            strAMPM);
-        if(state->diceSelect == 229) {
-            const char* eightBall[] = {
-                "It is certain",
-                "Without a doubt",
-                "You may rely on it",
-                "Yes definitely",
-                "It is decidedly so",
-                "As I see it, yes",
-                "Most likely",
-                "Yes",
-                "Outlook good",
-                "Signs point to yes",
-                "Reply hazy try again",
-                "Better not tell you now",
-                "Ask again later",
-                "Cannot predict now",
-                "Concentrate and ask again",
-                "Don't count on it",
-                "Outlook not so good",
-                "My sources say no",
-                "Very doubtful",
-                "My reply is no"};
-            state->diceRoll =
-                ((rand() % state->diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
-            snprintf(state->diceType[0], sizeof(state->diceType[0]), "%s", "8BALL");
-            snprintf(
-                state->strings[0],
-                sizeof(state->strings[0]),
-                "%s at %s",
-                state->diceType[0],
-                state->rollTime[0]);
-            uint8_t d1_i = rand() % COUNT_OF(eightBall);
-            snprintf(state->strings[1], sizeof(state->strings[1]), "%s", eightBall[d1_i]);
-        } else if(state->diceSelect == 228) {
-            const char* eightBall[] = {
-                "I'd do it.",
-                "Hell, yeah!",
-                "You bet your life!",
-                "What are you waiting for?",
-                "You could do worse things.",
-                "Sure, I won't tell.",
-                "Yeah, you got this. Would I lie to you?",
-                "Looks like fun to me. ",
-                "Yeah, sure, why not?",
-                "DO IT!!!",
-                "Who's it gonna hurt?",
-                "Can you blame someone else?",
-                "Ask me again later.",
-                "Maybe, maybe not, I can't tell right now. ",
-                "Are you the betting type? ",
-                "Don't blame me if you get caught.",
-                "What have you got to lose?",
-                "I wouldn't if I were you.",
-                "My money's on the snowball.",
-                "Oh Hell no!"};
-            state->diceRoll =
-                ((rand() % state->diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
-            snprintf(state->diceType[0], sizeof(state->diceType[0]), "%s", "Devil Ball");
-            snprintf(
-                state->strings[0],
-                sizeof(state->strings[0]),
-                "%s at %s",
-                state->diceType[0],
-                state->rollTime[0]);
-            uint8_t d1_i = rand() % COUNT_OF(eightBall);
-            snprintf(state->strings[1], sizeof(state->strings[1]), "%s", eightBall[d1_i]);
-        } else if(state->diceSelect == 230) {
-            const char* diceOne[] = {
-                "Nibble",
-                "Massage",
-                "Touch",
-                "Caress",
-                "Pet",
-                "Fondle",
-                "Suck",
-                "Lick",
-                "Blow",
-                "Kiss",
-                "???"};
-            const char* diceTwo[] = {
-                "Navel",
-                "Ears",
-                "Lips",
-                "Neck",
-                "Hand",
-                "Thigh",
-                "Nipple",
-                "Breasts",
-                "???",
-                "Genitals"};
-            state->diceRoll =
-                ((rand() % state->diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
-            snprintf(state->diceType[0], sizeof(state->diceType[0]), "%s", "SEX?");
-            snprintf(
-                state->strings[0],
-                sizeof(state->strings[0]),
-                "%s at %s",
-                state->diceType[0],
-                state->rollTime[0]);
-            uint8_t d1_i = rand() % COUNT_OF(diceOne);
-            uint8_t d2_i = rand() % COUNT_OF(diceTwo);
-            snprintf(
-                state->strings[1],
-                sizeof(state->strings[1]),
-                "%s %s",
-                diceOne[d1_i],
-                diceTwo[d2_i]);
-        } else if(state->diceSelect == 231) {
-            const char* deckOne[] = {"2H", "2C", "2D", "2S", "3H", "3C",  "3D",  "3S",  "4H",
-                                     "4C", "4D", "4S", "5H", "5C", "5D",  "5S",  "6H",  "6C",
-                                     "6D", "6S", "7H", "7C", "7D", "7S",  "8H",  "8C",  "8D",
-                                     "8S", "9H", "9C", "9D", "9S", "10H", "10C", "10D", "10S",
-                                     "JH", "JC", "JD", "JS", "QH", "QC",  "QD",  "QS",  "KH",
-                                     "KC", "KD", "KS", "AH", "AC", "AD",  "AS"};
-            char* deckTwo[] = {"2H", "2C", "2D", "2S", "3H", "3C",  "3D",  "3S",  "4H",
-                               "4C", "4D", "4S", "5H", "5C", "5D",  "5S",  "6H",  "6C",
-                               "6D", "6S", "7H", "7C", "7D", "7S",  "8H",  "8C",  "8D",
-                               "8S", "9H", "9C", "9D", "9S", "10H", "10C", "10D", "10S",
-                               "JH", "JC", "JD", "JS", "QH", "QC",  "QD",  "QS",  "KH",
-                               "KC", "KD", "KS", "AH", "AC", "AD"}; // ONE LESS SINCE ONE WILL BE REMOVED
-            state->diceRoll =
-                ((rand() % state->diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
-            snprintf(state->diceType[0], sizeof(state->diceType[0]), "%s", "WAR!");
-            snprintf(
-                state->strings[0],
-                sizeof(state->strings[0]),
-                "%s at %s",
-                state->diceType[0],
-                state->rollTime[0]);
-            uint8_t d1_i = rand() % COUNT_OF(deckOne);
-            // INITIALIZE WITH PLACEHOLDERS TO AVOID MAYBE UNINITIALIZED ERROR
-            for(uint8_t i = 0; i < COUNT_OF(deckOne); i++) {
-                if(i < d1_i) {
-                    snprintf(deckTwo[i], 8, "%s", deckOne[i]);
-                } else if(i > d1_i) {
-                    snprintf(deckTwo[i - 1], 8, "%s", deckOne[i]);
-                }
-            }
-            uint8_t d2_i = rand() % COUNT_OF(deckTwo);
-            if(d1_i > d2_i) {
-                state->playerOneScore++;
-                snprintf(
-                    state->strings[1],
-                    sizeof(state->strings[1]),
-                    "%s > %s",
-                    deckOne[d1_i],
-                    deckTwo[d2_i]);
-            } else {
-                state->playerTwoScore++;
-                snprintf(
-                    state->strings[1],
-                    sizeof(state->strings[1]),
-                    "%s < %s",
-                    deckOne[d1_i],
-                    deckTwo[d2_i]);
-            }
-        } else if(state->diceSelect == 232) {
-            const char* diceOne[] = {
-                "You", "You choose", "Nobody", "Everyone", "Nose goes", "Player to your right"};
-            const char* diceTwo[] = {
-                "take a tiny toke",
-                "just chill",
-                "take 2 tokes",
-                "take a huge hit",
-                "bogart it",
-                "take a puff"};
-            const char* diceThree[] = {
-                "while humming a tune",
-                "with your eyes closed",
-                "on your knees",
-                "while holding your nose",
-                "while spinning in a circle",
-                "in slow motion"};
-            const char* diceFour[] = {
-                "twice",
-                "then tell a joke",
-                "then laugh as hard as you can",
-                "with the player to your left",
-                "then sing a song",
-                "then do a dance"};
-            state->diceRoll =
-                ((rand() % state->diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
-            snprintf(state->diceType[0], sizeof(state->diceType[0]), "%s", "WEED!");
-            snprintf(
-                state->strings[0],
-                sizeof(state->strings[0]),
-                "%s at %s",
-                state->diceType[0],
-                state->rollTime[0]);
-            uint8_t d1_i = rand() % COUNT_OF(diceOne);
-            uint8_t d2_i = rand() % COUNT_OF(diceTwo);
-            uint8_t d3_i = rand() % COUNT_OF(diceThree);
-            uint8_t d4_i = rand() % COUNT_OF(diceFour);
-            snprintf(state->strings[1], sizeof(state->strings[1]), "%s", diceOne[d1_i]);
-            snprintf(state->strings[2], sizeof(state->strings[2]), "%s", diceTwo[d2_i]);
-            snprintf(state->strings[3], sizeof(state->strings[3]), "%s", diceThree[d3_i]);
-            snprintf(state->strings[4], sizeof(state->strings[4]), "%s", diceFour[d4_i]);
-        } else {
-            state->diceRoll = ((rand() % state->diceSelect) + 1);
-            snprintf(
-                state->diceType[0], sizeof(state->diceType[0]), "%s%d", "d", state->diceSelect);
-            snprintf(
-                state->strings[0],
-                sizeof(state->strings[0]),
-                "%d%s at %s",
-                state->diceQty,
-                state->diceType[0],
-                state->rollTime[0]);
-            /*if(state->diceSelect >= 20 && state->diceRoll == state->diceSelect)
-                dolphin_deed(getRandomDeed());
-            if(state->diceSelect >= 20 && state->diceRoll == state->diceSelect - 1)
-                dolphin_deed(getRandomDeed());*/
-            if(state->diceQty == 1) {
-                snprintf(state->strings[1], sizeof(state->strings[1]), "%d", state->diceRoll);
-            } else if(state->diceQty == 2) {
-                snprintf(
-                    state->strings[1],
-                    sizeof(state->strings[1]),
-                    "%d %d",
-                    state->diceRoll,
-                    ((rand() % state->diceSelect) + 1));
-            } else if(state->diceQty == 3) {
-                snprintf(
-                    state->strings[1],
-                    sizeof(state->strings[1]),
-                    "%d %d %d",
-                    state->diceRoll,
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1));
-            } else if(state->diceQty == 4) {
-                snprintf(
-                    state->strings[1],
-                    sizeof(state->strings[1]),
-                    "%d %d %d %d",
-                    state->diceRoll,
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1));
-            } else if(state->diceQty == 5) {
-                snprintf(
-                    state->strings[1],
-                    sizeof(state->strings[1]),
-                    "%d %d %d %d %d",
-                    state->diceRoll,
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1));
-            } else if(state->diceQty == 6) {
-                snprintf(
-                    state->strings[1],
-                    sizeof(state->strings[1]),
-                    "%d %d %d %d %d %d",
-                    state->diceRoll,
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1),
-                    ((rand() % state->diceSelect) + 1));
-            }
-        }
-        state->letsRoll = false;
-    }
-    furi_mutex_release(state->mutex);
-    if(state->diceRoll != 0) {
-        if(state->diceSelect == 232) {
-            canvas_set_font(canvas, FontSecondary);
-            canvas_draw_str_aligned(canvas, 64, 8, AlignCenter, AlignCenter, state->strings[0]);
-            canvas_draw_str_aligned(canvas, 64, 18, AlignCenter, AlignCenter, state->strings[1]);
-            canvas_draw_str_aligned(canvas, 64, 26, AlignCenter, AlignCenter, state->strings[2]);
-            canvas_draw_str_aligned(canvas, 64, 34, AlignCenter, AlignCenter, state->strings[3]);
-            canvas_draw_str_aligned(canvas, 64, 42, AlignCenter, AlignCenter, state->strings[4]);
-        } else if(state->diceSelect == 228 || state->diceSelect == 229) {
-            canvas_set_font(canvas, FontBatteryPercent);
-            canvas_draw_str_aligned(canvas, 64, 20, AlignCenter, AlignCenter, state->strings[1]);
-            canvas_set_font(canvas, FontSecondary);
-            canvas_draw_str_aligned(canvas, 64, 8, AlignCenter, AlignCenter, state->strings[0]);
-        } else {
-            canvas_set_font(canvas, FontPrimary);
-            canvas_draw_str_aligned(canvas, 64, 20, AlignCenter, AlignCenter, state->strings[1]);
-            canvas_set_font(canvas, FontSecondary);
-            canvas_draw_str_aligned(canvas, 64, 8, AlignCenter, AlignCenter, state->strings[0]);
-        }
-        if(state->diceSelect == 231 &&
-           !(state->playerOneScore == 0 && state->playerTwoScore == 0)) {
-            canvas_set_font(canvas, FontSecondary);
-            snprintf(
-                state->theScores[0],
-                sizeof(state->theScores[0]),
-                "%d                                   %d",
-                state->playerOneScore,
-                state->playerTwoScore);
-            canvas_draw_str_aligned(canvas, 64, 34, AlignCenter, AlignCenter, state->theScores[0]);
-        }
-    }
-    if(state->diceSelect == 229 || state->diceSelect == 228) {
-        elements_button_center(canvas, "Shake");
-    } else if(state->diceSelect == 231) {
-        elements_button_center(canvas, "Draw");
-    } else {
-        elements_button_center(canvas, "Roll");
-    }
-    if(state->diceSelect == 2) {
-        elements_button_right(canvas, "d2");
-    } else if(state->diceSelect == 3) {
-        elements_button_right(canvas, "d3");
-    } else if(state->diceSelect == 4) {
-        elements_button_right(canvas, "d4");
-    } else if(state->diceSelect == 6) {
-        elements_button_right(canvas, "d6");
-    } else if(state->diceSelect == 8) {
-        elements_button_right(canvas, "d8");
-    } else if(state->diceSelect == 10) {
-        elements_button_right(canvas, "d10");
-    } else if(state->diceSelect == 12) {
-        elements_button_right(canvas, "d12");
-    } else if(state->diceSelect == 20) {
-        elements_button_right(canvas, "d20");
-    } else if(state->diceSelect == 59) {
-        elements_button_right(canvas, "d59");
-    } else if(state->diceSelect == 69) {
-        elements_button_right(canvas, "d69");
-    } else if(state->diceSelect == 100) {
-        elements_button_right(canvas, "d100");
-    } else if(state->diceSelect == 229) {
-        elements_button_right(canvas, "8BALL");
-    } else if(state->diceSelect == 228) {
-        elements_button_right(canvas, "DBALL");
-    } else if(state->diceSelect == 230) {
-        elements_button_right(canvas, "SEX");
-    } else if(state->diceSelect == 231) {
-        elements_button_right(canvas, "WAR");
-    } else if(state->diceSelect == 232) {
-        elements_button_right(canvas, "WEED");
-    }
-}
-
-static void dice_state_init(DiceState* const state) {
-    memset(state, 0, sizeof(DiceState));
-    furi_hal_rtc_get_datetime(&state->datetime);
-    state->diceSelect = 20;
-    state->diceQty = 1;
-    state->diceRoll = 0;
-    state->playerOneScore = 0;
-    state->playerTwoScore = 0;
-    state->letsRoll = false;
-    //state->desktop_settings = malloc(sizeof(DesktopSettings));
-}
-
-static void dice_tick(void* ctx) {
-    furi_assert(ctx);
-    FuriMessageQueue* event_queue = ctx;
-    PluginEvent event = {.type = EventTypeTick};
-    // It's OK to lose this event if system overloaded
-    furi_message_queue_put(event_queue, &event, 0);
-}
-
-int32_t dice_app(void* p) {
-    UNUSED(p);
-    DiceState* plugin_state = malloc(sizeof(DiceState));
-    dice_state_init(plugin_state);
-    plugin_state->event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent));
-    if(plugin_state->event_queue == NULL) {
-        FURI_LOG_E(TAG, "cannot create event queue\n");
-        free(plugin_state);
-        return 255;
-    }
-
-    plugin_state->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
-    if(plugin_state->mutex == NULL) {
-        FURI_LOG_E(TAG, "cannot create mutex\n");
-        furi_message_queue_free(plugin_state->event_queue);
-        free(plugin_state);
-        return 255;
-    }
-
-    FuriTimer* timer =
-        furi_timer_alloc(dice_tick, FuriTimerTypePeriodic, plugin_state->event_queue);
-    if(timer == NULL) {
-        FURI_LOG_E(TAG, "cannot create timer\n");
-        furi_mutex_free(plugin_state->mutex);
-        furi_message_queue_free(plugin_state->event_queue);
-        free(plugin_state);
-        return 255;
-    }
-
-    //DESKTOP_SETTINGS_LOAD(plugin_state->desktop_settings);
-
-    ViewPort* view_port = view_port_alloc();
-    view_port_draw_callback_set(view_port, dice_render_callback, plugin_state);
-    view_port_input_callback_set(view_port, dice_input_callback, plugin_state->event_queue);
-
-    Gui* gui = furi_record_open(RECORD_GUI);
-    gui_add_view_port(gui, view_port, GuiLayerFullscreen);
-    furi_timer_start(timer, furi_kernel_get_tick_frequency());
-
-    // Main loop
-    PluginEvent event;
-    for(bool processing = true; processing;) {
-        FuriStatus event_status = furi_message_queue_get(plugin_state->event_queue, &event, 100);
-        if(event_status == FuriStatusOk) {
-            if(event.type == EventTypeKey) {
-                if(event.input.type == InputTypeShort || event.input.type == InputTypeRepeat) {
-                    switch(event.input.key) {
-                    case InputKeyUp:
-                        break;
-                    case InputKeyDown:
-                        break;
-                    case InputKeyRight:
-                        if(plugin_state->diceSelect == 2) {
-                            plugin_state->diceSelect = 3;
-                        } else if(plugin_state->diceSelect == 3) {
-                            plugin_state->diceSelect = 4;
-                        } else if(plugin_state->diceSelect == 4) {
-                            plugin_state->diceSelect = 6;
-                        } else if(plugin_state->diceSelect == 6) {
-                            plugin_state->diceSelect = 8;
-                        } else if(plugin_state->diceSelect == 8) {
-                            plugin_state->diceSelect = 10;
-                        } else if(plugin_state->diceSelect == 10) {
-                            plugin_state->diceSelect = 12;
-                        } else if(plugin_state->diceSelect == 12) {
-                            plugin_state->diceSelect = 20;
-                        } else if(plugin_state->diceSelect == 20) {
-                            plugin_state->diceSelect = 100;
-                        } else if(plugin_state->diceSelect == 100) {
-                            /*if(plugin_state->desktop_settings->is_dumbmode) {
-                                plugin_state->diceSelect = 231;
-                            } else {*/
-                            plugin_state->diceSelect = 230;
-                            //}
-                        } else if(plugin_state->diceSelect == 230) {
-                            plugin_state->playerOneScore = 0;
-                            plugin_state->playerTwoScore = 0;
-                            plugin_state->diceSelect = 231;
-                        } else if(plugin_state->diceSelect == 231) {
-                            plugin_state->diceSelect = 229;
-                        } else if(plugin_state->diceSelect == 229) {
-                            plugin_state->diceSelect = 228;
-                        } else if(plugin_state->diceSelect == 228) {
-                            /*if(plugin_state->desktop_settings->is_dumbmode) {
-                                plugin_state->diceSelect = 59;
-                            } else {*/
-                            plugin_state->diceSelect = 232;
-                            //}
-                        } else if(plugin_state->diceSelect == 232) {
-                            plugin_state->diceSelect = 59;
-                        } else if(plugin_state->diceSelect == 59) {
-                            plugin_state->diceSelect = 69;
-                        } else {
-                            plugin_state->diceSelect = 2;
-                        }
-                        break;
-                    case InputKeyLeft:
-                        if(plugin_state->diceQty <= 5) {
-                            plugin_state->diceQty = plugin_state->diceQty + 1;
-                        } else {
-                            plugin_state->diceQty = 1;
-                        }
-                        break;
-                    case InputKeyOk:
-                        plugin_state->letsRoll = true;
-                        break;
-                    case InputKeyBack:
-                        processing = false;
-                        break;
-                    default:
-                        break;
-                    }
-                }
-            } else if(event.type == EventTypeTick) {
-                // furi_hal_rtc_get_datetime(&plugin_state->datetime);
-            }
-            view_port_update(view_port);
-            furi_mutex_release(plugin_state->mutex);
-        } else {
-            // FURI_LOG_D(TAG, "osMessageQueue: event timeout");
-        }
-    }
-    // Cleanup
-    furi_timer_free(timer);
-    view_port_enabled_set(view_port, false);
-    gui_remove_view_port(gui, view_port);
-    furi_record_close(RECORD_GUI);
-    view_port_free(view_port);
-    furi_message_queue_free(plugin_state->event_queue);
-    furi_mutex_free(plugin_state->mutex);
-    //free(plugin_state->desktop_settings);
-    free(plugin_state);
-    return 0;
-}

BIN
apps_source_code/rmdice/dice.png


+ 4 - 0
apps_source_code/rootoflife/application.fam

@@ -11,4 +11,8 @@ App(
     fap_category="Games_Extra",
     fap_icon_assets="images",
     fap_icon_assets_symbol="roots_of_life_game",
+    fap_author="@Xorboo",
+    fap_weburl="https://github.com/Xorboo/root-of-life",
+    fap_version="1.0",
+    fap_description="A zen-puzzle game for FlipperZero, puzzle made on GlobalGameJam23 (theme: Roots)",
 )

BIN
apps_source_code/rootoflife/p/featured_image.png


BIN
apps_source_code/rootoflife/p/screenshots/s1_start.png


BIN
apps_source_code/rootoflife/p/screenshots/s2_grow.png


BIN
apps_source_code/rootoflife/p/screenshots/s3_grow.png


BIN
apps_source_code/rootoflife/p/screenshots/s4_end.png


BIN
apps_source_code/rootoflife/p/screenshots/s4_grow.png


+ 5 - 1
apps_source_code/rubiks_cube_scrambler/application.fam

@@ -1,6 +1,6 @@
 # COMPILE ISTRUCTIONS:
 
-# Clean the code and remove old binaries/compilation artefact 
+# Clean the code and remove old binaries/compilation artefact
 # ./fbt -c fap_rubiks_cube_scrambler
 
 # Compile FAP
@@ -17,4 +17,8 @@ App(
     stack_size=1 * 1024,
     fap_category="Misc_Extra",
     fap_icon="cube.png",
+    fap_author="@RaZeSloth",
+    fap_weburl="https://github.com/RaZeSloth/flipperzero-rubiks-cube-scrambler",
+    fap_version="1.0",
+    fap_description="App generates random moves to scramble a Rubik's cube.",
 )

+ 5 - 1
apps_source_code/schip/application.fam

@@ -7,4 +7,8 @@ App(
     stack_size=1 * 1024,
     fap_category="Games_Extra",
     fap_icon="icon.png",
-)
+    fap_author="@Milk-Cool",
+    fap_weburl="https://github.com/Milk-Cool/fz-schip",
+    fap_version="1.0",
+    fap_description="SUPER-CHIP (Chip8) emulator for the Flipper Zero",
+)

+ 4 - 0
apps_source_code/scorched_tanks/application.fam

@@ -9,4 +9,8 @@ App(
     order=100,
     fap_icon="scorchedTanks_10px.png",
     fap_category="Games_Extra",
+    fap_author="@jasniec",
+    fap_weburl="https://github.com/jasniec/flipper-scorched-tanks-game",
+    fap_version="1.0",
+    fap_description="A flipper zero game inspired by scorched earth.",
 )

+ 6 - 3
apps_source_code/servotester/application.fam

@@ -8,7 +8,10 @@ App(
     ],
     stack_size=1 * 1024,
     order=90,
-	fap_icon="servotester.png",
+    fap_icon="servotester.png",
     fap_category="GPIO_Extra",
-    fap_author="Alexander Semion"
-)
+    fap_author="Alexander Semion",
+    fap_weburl="https://github.com/spin7ion/flipper-servotester",
+    fap_version="1.0",
+    fap_description="Application uses A7 pin for servo PWM output. Has different modes: Manual, Center, Auto.",
+)

+ 4 - 0
apps_source_code/sony-intervalometer/application.fam

@@ -9,4 +9,8 @@ App(
     fap_icon="intervalometer_10x.png",
     fap_icon_assets="icons",
     fap_category="Tools_Extra",
+    fap_author="@Nitepone",
+    fap_weburl="https://github.com/Nitepone/flipper-intervalometer",
+    fap_version="1.0",
+    fap_description="This is a simple configurable valometer app for Sony cameras. Works via Infrared port.",
 )

+ 5 - 1
apps_source_code/t-rex-runner/application.fam

@@ -8,6 +8,10 @@ App(
     stack_size=8 * 1024,
     fap_category="Games_Extra",
     fap_icon="trexrunner_icon.png",
-    fap_icon_assets="assets",  
+    fap_icon_assets="assets",
     order=36,
+    fap_author="@Rrycbarm",
+    fap_weburl="https://github.com/Rrycbarm/t-rex-runner",
+    fap_version="1.0",
+    fap_description="Port of Chrome browser running T-rex game",
 )

+ 6 - 10
apps_source_code/timelapse/application.fam

@@ -4,18 +4,14 @@ App(
     apptype=FlipperAppType.EXTERNAL,
     entry_point="zeitraffer_app",
     cdefines=["APP_ZEITRAFFER"],
-    requires=[
-        "gui",
-		"input", 
-        "notification",
-		"gpio"
-    ],
+    requires=["gui", "input", "notification", "gpio"],
     stack_size=2 * 1024,
     order=90,
     fap_icon_assets="icons",
-	fap_icon="zeitraffer.png",
+    fap_icon="zeitraffer.png",
     fap_category="GPIO_Extra",
-    fap_description="Simple intervalometer app",
+    fap_version="1.0",
+    fap_description="Simple intervalometer app, works via GPIO pins.",
     fap_author="Aurelius Rosenbaum",
-	fap_weburl="https://github.com/theageoflove/flipperzero-zeitraffer",
-)
+    fap_weburl="https://github.com/theageoflove/flipperzero-zeitraffer",
+)

+ 4 - 0
apps_source_code/usb_hid_autofire/application.fam

@@ -10,4 +10,8 @@ App(
     stack_size=1 * 1024,
     fap_icon="usb_hid_autofire.png",
     fap_category="Tools_Extra",
+    fap_author="@pbek",
+    fap_weburl="https://github.com/pbek/usb_hid_autofire",
+    fap_version="1.0",
+    fap_description="This is a simple Flipper Zero application to send left-clicks as a USB HID device.",
 )

+ 4 - 1
apps_source_code/usb_midi/application.fam

@@ -10,5 +10,8 @@ App(
     order=20,
     fap_icon="usb_midi.png",
     fap_category="Media_Extra",
-    # fap_icon_assets="icons",
+    fap_author="@DrZlo13",
+    fap_weburl="https://github.com/DrZlo13/flipper-zero-usb-midi",
+    fap_version="1.0",
+    fap_description="This app makes Flipper Zero a USB MIDI device, plays notes via Flippers speaker.",
 )

+ 4 - 0
apps_source_code/usping/application.fam

@@ -11,4 +11,8 @@ App(
     order=20,
     fap_icon="dist_sensor10px.png",
     fap_category="GPIO_Extra",
+    fap_author="@privet971",
+    fap_weburl="https://github.com/privet971/FlipperZeroApps/tree/main/usping",
+    fap_version="1.0",
+    fap_description="Ultrasound measurments with PING))) Parallax sensor SKU 28015 (3 wires)",
 )

+ 4 - 0
apps_source_code/videopoker/application.fam

@@ -9,4 +9,8 @@ App(
     order=270,
     fap_icon="pokerIcon.png",
     fap_category="Games_Extra",
+    fap_author="@PixlEmly",
+    fap_weburl="https://github.com/PixlEmly",
+    fap_version="1.0",
+    fap_description="Video poker is a casino game based on five-card draw poker",
 )

+ 4 - 0
apps_source_code/wiegand/application.fam

@@ -7,4 +7,8 @@ App(
     stack_size=2 * 1024,
     fap_icon="wiegand.png",
     fap_category="GPIO_Extra",
+    fap_author="@jamisonderek",
+    fap_weburl="https://github.com/jamisonderek/flipper-zero-tutorials/tree/main/gpio",
+    fap_version="1.0",
+    fap_description="This application can be used to test Wiegand readers and keypads",
 )

+ 4 - 0
apps_source_code/wifi_deauther/application.fam

@@ -9,4 +9,8 @@ App(
     order=30,
     fap_icon="wifi_10px.png",
     fap_category="GPIO_Extra",
+    fap_author="@Timmotools & @xMasterX",
+    fap_weburl="https://github.com/Timmotools/flipperzero_esp8266_deautherv2",
+    fap_version="1.0",
+    fap_description="Works with ESP8266 Deauther v2 by @SpacehuhnTech (github)",
 )

+ 28 - 32
apps_source_code/wii_ec_anal/application.fam

@@ -1,36 +1,32 @@
 # qv. https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/AppManifests.md
 
 App(
-	# --- App Info
-	appid="wii_ec_anal",
-	name="Wii EC Analyser",
-
-	# --- Entry point
-	apptype=FlipperAppType.EXTERNAL,
-	entry_point="wii_ec_anal",
-
-	# --- Interaction
-	cdefines=["APP_WII_EC_ANAL"],
-	requires=[
-		"gui",
-	],
-
-#	conflicts="",
-#	sdk_headers="",
-
-	# --- Run-time info
-	stack_size=2 * 1024,
-	order=20,
-
-	# --- FAP details
-	sources=["wii_*.c", "gfx/*.c"],
-
-#	fap_weburl="https://github.com/csBlueChip/FlipperZero_plugin_WiiChuck/",
-#	fap_author="BlueChip",
-
-#	fap_description="Wii Extension Controller Protocol Analyser",
-#	fap_version=(1,0),
-
-	fap_icon="WiiEC.png",
-	fap_category="GPIO_Extra",
+    # --- App Info
+    appid="wii_ec_anal",
+    name="Wii EC Analyser",
+    # --- Entry point
+    apptype=FlipperAppType.EXTERNAL,
+    entry_point="wii_ec_anal",
+    # --- Interaction
+    cdefines=["APP_WII_EC_ANAL"],
+    requires=[
+        "gui",
+    ],
+    # 	conflicts="",
+    # 	sdk_headers="",
+    # --- Run-time info
+    stack_size=2 * 1024,
+    order=20,
+    # --- FAP details
+    sources=["wii_*.c", "gfx/*.c"],
+    # 	fap_weburl="https://github.com/csBlueChip/FlipperZero_plugin_WiiChuck/",
+    # 	fap_author="BlueChip",
+    # 	fap_description="Wii Extension Controller Protocol Analyser",
+    # 	fap_version=(1,0),
+    fap_icon="WiiEC.png",
+    fap_category="GPIO_Extra",
+    fap_author="@csBlueChip",
+    fap_weburl="https://github.com/csBlueChip/FlipperZero_WiiEC",
+    fap_version="1.0",
+    fap_description="Application to test Wii Extension Controllers.",
 )